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 fu...@apache.org on 2004/11/12 08:39:28 UTC

svn commit: rev 57503 - in incubator/derby/code/trunk: . frameworks frameworks/NetworkServer frameworks/NetworkServer/bin frameworks/embedded frameworks/embedded/bin java/demo java/demo/nserverdemo java/demo/simple java/drda/org/apache/derby/loc/drda java/engine java/engine/org/apache/derby/loc java/testing java/testing/org java/testing/org/apache java/testing/org/apache/derbyTesting java/testing/org/apache/derbyTesting/functionTests java/testing/org/apache/derbyTesting/functionTests/harness java/testing/org/apache/derbyTesting/functionTests/master java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet java/testing/org/apache/derbyTesting/functionTests/master/j9_13 java/testing/org/apache/derbyTesting/functionTests/suites java/testing/org/apache/derbyTesting/functionTests/testData java/testing/org/apache/derbyTesting/functionTests/testData/v1 java/testing/org/apache/derbyTesting/functionTests/testData/v2 java/testing/org/apache/derbyTesting/functionTests/tests java/testing/org/apache/derbyTesting/functionTests/tests/derbynet java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi java/testing/org/apache/derbyTesting/functionTests/tests/lang java/testing/org/apache/derbyTesting/functionTests/tests/tools java/testing/org/apache/derbyTesting/functionTests/util java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses java/tools/org/apache/derby/iapi/tools java/tools/org/apache/derby/impl/tools java/tools/org/apache/derby/loc java/tools/org/apache/derby/tools tools/ant/properties

Author: fuzzylogic
Date: Thu Nov 11 23:39:22 2004
New Revision: 57503

Added:
   incubator/derby/code/trunk/frameworks/
   incubator/derby/code/trunk/frameworks/NetworkServer/
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/NetworkServerControl.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/NetworkServerControl.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/dblook.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/dblook.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/ij.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/ij.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkClientCP.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkClientCP.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkServerCP.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkServerCP.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/startNetworkServer.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/startNetworkServer.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/stopNetworkServer.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/stopNetworkServer.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/sysinfo.bat
   incubator/derby/code/trunk/frameworks/NetworkServer/bin/sysinfo.ksh
   incubator/derby/code/trunk/frameworks/NetworkServer/readme.html
   incubator/derby/code/trunk/frameworks/embedded/
   incubator/derby/code/trunk/frameworks/embedded/bin/
   incubator/derby/code/trunk/frameworks/embedded/bin/dblook.bat
   incubator/derby/code/trunk/frameworks/embedded/bin/dblook.ksh
   incubator/derby/code/trunk/frameworks/embedded/bin/ij.bat
   incubator/derby/code/trunk/frameworks/embedded/bin/ij.ksh
   incubator/derby/code/trunk/frameworks/embedded/bin/setEmbeddedCP.bat
   incubator/derby/code/trunk/frameworks/embedded/bin/setEmbeddedCP.ksh
   incubator/derby/code/trunk/frameworks/embedded/bin/sysinfo.bat
   incubator/derby/code/trunk/frameworks/embedded/bin/sysinfo.ksh
   incubator/derby/code/trunk/frameworks/embedded/readme.html
   incubator/derby/code/trunk/frameworks/readme.html
   incubator/derby/code/trunk/java/demo/
   incubator/derby/code/trunk/java/demo/build.xml
   incubator/derby/code/trunk/java/demo/csfull.css
   incubator/derby/code/trunk/java/demo/demo.html
   incubator/derby/code/trunk/java/demo/navbar.html
   incubator/derby/code/trunk/java/demo/nserverdemo/
   incubator/derby/code/trunk/java/demo/nserverdemo/NetworkServerUtil.java
   incubator/derby/code/trunk/java/demo/nserverdemo/NsSample.java
   incubator/derby/code/trunk/java/demo/nserverdemo/NsSampleClientThread.java
   incubator/derby/code/trunk/java/demo/nserverdemo/SimpleNetworkClientSample.java
   incubator/derby/code/trunk/java/demo/nserverdemo/SimpleNetworkServerSample.java
   incubator/derby/code/trunk/java/demo/nserverdemo/nserverdemo.html
   incubator/derby/code/trunk/java/demo/nserverdemo/readme.html
   incubator/derby/code/trunk/java/demo/nserverdemo/simpleserversample.html
   incubator/derby/code/trunk/java/demo/readme.html
   incubator/derby/code/trunk/java/demo/simple/
   incubator/derby/code/trunk/java/demo/simple/SimpleApp.java
   incubator/derby/code/trunk/java/demo/simple/derby.properties
   incubator/derby/code/trunk/java/demo/simple/example.html
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_de_DE.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_es.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_fr.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_it.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_ja_JP.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_ko_KR.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_pt_BR.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_zh_CN.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_zh_TW.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_de_DE.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_es.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_fr.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_it.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_ja_JP.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_ko_KR.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_pt_BR.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_zh_CN.properties
   incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_zh_TW.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_de_DE.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_es.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_fr.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_it.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_ja_JP.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_ko_KR.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_pt_BR.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_qq_PP_testOnly.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_zh_CN.properties
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_zh_TW.properties
   incubator/derby/code/trunk/java/testing/
   incubator/derby/code/trunk/java/testing/README.htm
   incubator/derby/code/trunk/java/testing/build.xml
   incubator/derby/code/trunk/java/testing/org/
   incubator/derby/code/trunk/java/testing/org/apache/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/NSinSameJVM.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/big.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/callable.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dataSourcePermissions_net.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/forupdate.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/holdCursorIJ.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/metadata.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/parameterMetaDataJdbc30.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/procedure.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/savepointJdbc30.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/supersimple.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/sysinfo.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/wisconsin.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOB.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOBDB2compatibility.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggbuiltin.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregate.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregateOptimization.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/altertable.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/arithmetic.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/authorize.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/autoincrement.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/badConnection.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit2.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug4356.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5052rts.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5054.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/case.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/casting.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkConstraint.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkSecMgr.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/closed.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/coalesceTests.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/comparisons.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/compressTable.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/concateTests.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/consistencyChecker.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/constantExpression.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/csPrepStmt.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentSchema.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentof.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursor.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursorerrors.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/datetime.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/db2Compatibility.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dbManagerLimits.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ddlTableLockMode.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/deadlockMode.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJava.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJavaJDBC30.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/delete.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/depend.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/derived.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/desc_index.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinct.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctElimination.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctFiltering.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dropTable.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dynamicLikeOptimization.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql_nonSPS.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/errorCode.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/executeUpdate.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/fk_nonSPS.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/floattypes.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forbitdata.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forupdate.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/functions.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/getCurrentProperties.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/groupBy.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorIJ.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorJavaReflection.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/identifier.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/implicitConversions.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/inbetween.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/infostreams.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/innerjoin.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/insert.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/isolationLevels.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/arithmetic.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/distinct.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/ejbql.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/errorCode.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/groupBy.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/outparams.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joinDeadlock.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joins.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/langUnitTests.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lockTable.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logStream.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logop.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/longStringColumn.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxMemPerTab.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxthreads.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadataMultiConn.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/miscerrors.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/modifyColumn.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nestedCommit.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nonreserved.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nulls.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/openScans.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderby.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderbyElimination.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outparams.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/paramij.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/partdml.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/positionedDelUpd.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/precedence.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/predicatesIntoViews.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/primarykey.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/procedure.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions2.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions3.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/releaseCompileLocks.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameIndex.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameTable.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/reopenScan.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/repeat.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/runtimeinfo.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/schemas.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/select.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleScroll.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleThreadWrapper.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/specjPlans.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/staleplans.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache0.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache1.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache3.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/streams.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stringtypes.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery2.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subqueryFlattening.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/supersimple.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/syscat.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/tempRestrictions.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProperties.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testconnection.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testij.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/timeslice.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerBeforeTrig.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRecursion.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRefClause.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerStream.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ungroupedAggregatesNegative.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/union.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/unlimited.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/update.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/updateCursor.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/valuesclause.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/views.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/j9derbynetmats.runall
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noDerbyNet.runall
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noembedded.runall
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/f1.txt
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/j1v1.jar   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/f1.txt
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/j1v2.jar   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/callable.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/checkSecMgr.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/csPrepStmt.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/executeUpdate.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/getCurrentProperties.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/maxthreads.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testconnection.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/timeslice.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/dataSourcePermissions.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadataMultiConn.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AIjdbc.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DB2IsolationLevels.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOB.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LockTableQuery.subsql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WISCInsert.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscMetaData.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscVTI.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregate.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/arithmetic.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/autoincrement.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit2.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug4356.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5052rts.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5054.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/case.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cast.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/casting.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/checkConstraint.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/closed.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/coalesceTests.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/concateTests.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/consistencyChecker.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/constantExpression.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/createTestProcedures.subsql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentSchema.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursor.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/datetime.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/db2Compatibility.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/delete.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/depend.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/derived.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.minisql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.subsql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctFiltering.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dropTable.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_nonSPS.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forbitdata.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forupdate.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/functions.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/groupBy.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/identifier.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/innerjoin.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/isolationLevels.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql1
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql2
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logStream.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logop.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lojreorder.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/miscerrors.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/modifyColumn.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nestedCommit.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nonreserved.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nulls.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderby.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outerjoin.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outparams.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/paramij.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/positionedDelUpd.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/precedence.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/primarykey.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions2.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions3.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/reopenScan.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/schemas.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/select.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleScroll.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThread.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThreadWrapper.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCacheAliases.subsql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCacheAliasesRemove.subsql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/streams.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stringtypes.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/syscat.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/tempRestrictions.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerBeforeTrig.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRefClause.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ungroupedAggregatesNegative.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited2.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/update.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/userDefMethods.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/valuesclause.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_sed.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/copyfiles.ant
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.jar   (contents, props changed)
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_app.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_derby.properties
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ConsistencyChecker.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/DbFile.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ExtendingInterface.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Formatters.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBCTestDisplayUtil.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ManyMethods.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/NoMethodInterface.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/PropertyUtil.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ShortHolder.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StatParser.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/DMLInStaticInitializer.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/InsertInStaticInitializer.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/README.txt
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StreamUtil.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubClass.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubInterfaceClass.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubSubClass.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Access.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Authorize.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_ConsistencyChecker.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestPropertyInfo.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Triggers.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/AbstractAllNegativeNoStatic.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ECTResult.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ExternalTable.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/PositiveInteger_VTICosting_SI.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ResultSetMetaDataPositive.java
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/build.xml
   incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/nwsvr.policy
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_de_DE.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_es.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_fr.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_it.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_ja_JP.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_ko_KR.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_pt_BR.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_zh_CN.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_zh_TW.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_de_DE.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_es.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_fr.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_it.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_ja_JP.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_ko_KR.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_pt_BR.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_zh_CN.properties
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_zh_TW.properties
Modified:
   incubator/derby/code/trunk/build.xml
   incubator/derby/code/trunk/java/engine/build.xml
   incubator/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml
   incubator/derby/code/trunk/java/tools/org/apache/derby/iapi/tools/build.xml
   incubator/derby/code/trunk/java/tools/org/apache/derby/impl/tools/build.xml
   incubator/derby/code/trunk/java/tools/org/apache/derby/loc/build.xml
   incubator/derby/code/trunk/java/tools/org/apache/derby/tools/build.xml
   incubator/derby/code/trunk/tools/ant/properties/dirs.properties
   incubator/derby/code/trunk/tools/ant/properties/extrapath.properties
Log:
Contribute first set of Cloudscape tests, framework scripts, basic network
server and embedded demos, and translated message files to Derby.



Modified: incubator/derby/code/trunk/build.xml
==============================================================================
--- incubator/derby/code/trunk/build.xml	(original)
+++ incubator/derby/code/trunk/build.xml	Thu Nov 11 23:39:22 2004
@@ -21,7 +21,8 @@
 
 <!-- Targets -->
 
-  <target name="buildsource" depends="init,engine,tools,drda,build,versioninfo"/>
+  <target name="buildsource" depends="init,engine,tools,drda,build,versioninfo,localeinfo"/>
+  <target name="all" depends="buildsource,demo,testing"/>
 
 <!-- ==================================================================== -->
 <!--                       Initialize targets                             -->
@@ -130,6 +131,124 @@
 
 
 <!-- ==================================================================== -->
+<!--                   Locale info writer build target                    -->
+<!-- ==================================================================== -->
+
+  <target name="buildlocaleinfo">
+    <antcall target="localeinfowriter">
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.iname" value="_${locale.iname}"/>
+      <param name="info.ename" value="${locale.ename}"/>
+      <param name="info.file" value="${out.dir}/org/apache/derby/info/locale_${locale.iname}.properties"/>
+    </antcall>
+  </target>
+
+  <target name="localeinfowriter">
+    <propertyfile file="${info.file}" comment="${copyright.comment}">
+      <entry key="derby.locale.version.major" value="${major}"/>
+      <entry key="derby.locale.version.minor" value="${minor}"/>
+      <entry key="derby.locale.version.maint" value="${maint}"/>
+      <entry key="derby.locale.build.number" value="${info.buildnumber}"/>
+      <entry key="derby.locale.technology.name" value="${info.iname}"/>
+      <entry key="derby.locale.external.name" value="${info.ename}"/>
+      <entry key="derby.version.beta" value="${beta}"/>
+      <entry key="derby.locale.vendor" value="${vendor}"/>
+      <entry key="derby.product.file" value="${info.productfile}"/>
+    </propertyfile>
+  </target>
+
+ 
+<!-- ==================================================================== -->
+<!--                           Build Locale info                          -->
+<!-- ==================================================================== -->
+
+  <target name="localeinfo" depends="checklocaleinfo" unless="localeinfo.available">
+
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="de_DE"/>
+      <param name="locale.ename" value="German/Germany [de_DE]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="es"/>
+      <param name="locale.ename" value="Spanish/International [es]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="fr"/>
+      <param name="locale.ename" value="French/International [fr]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="it"/>
+      <param name="locale.ename" value="Italian/International [it]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="ja_JP"/>
+      <param name="locale.ename" value="Japanese/Japan [ja_JP]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="ko_KR"/>
+      <param name="locale.ename" value="Korean/Korea [ko_KR]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="pt_BR"/>
+      <param name="locale.ename" value="Portuguese/Brazil [pt_BR]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="zh_CN"/>
+      <param name="locale.ename" value="Simplified_Chinese/PR_China [zh_CN]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+    <antcall target="buildlocaleinfo">
+      <param name="locale.iname" value="zh_TW"/>
+      <param name="locale.ename" value="Chinese/Taiwan_Traditional [zh_TW]"/>
+      <param name="info.buildnumber" value="1"/>
+      <param name="info.productfile" value="codeline"/>
+    </antcall>
+  </target>
+
+  <target name="checklocaleinfo">
+    <condition property="localeinfo.available">
+      <and>
+        <available file="${out.dir}/org/apache/derby/info/locale_de_DE.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_es.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_fr.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_it.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_ja_JP.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_ko_KR.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_pt_BR.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_zh_CN.properties"/>
+        <available file="${out.dir}/org/apache/derby/info/locale_zh_TW.properties"/>
+      </and>
+    </condition>
+  </target>
+
+  <target name="cleanlocale">
+    <delete file="${out.dir}/org/apache/derby/info/locale_de_DE.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_es.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_fr.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_it.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_ja_JP.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_ko_KR.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_pt_BR.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_zh_CN.properties"/>
+    <delete file="${out.dir}/org/apache/derby/info/locale_zh_TW.properties"/>
+  </target>
+
+<!-- ==================================================================== -->
 <!--                   Derby Engine build target                     -->
 <!-- ==================================================================== -->
 
@@ -148,10 +267,18 @@
     <ant dir="${derby.drda.src.dir}"/>
   </target>
 
-  <target name="build" >
+  <target name="build">
     <ant dir="${derby.build.src.dir}"/>
   </target>
 
+  <target name="demo">
+    <ant dir="${derby.demo.src.dir}"/>
+  </target>
+
+  <target name="testing">
+    <ant dir="${derby.testing.src.dir}"/>
+  </target>
+
 <!-- ==================================================================== -->
 <!--                     Build SanityState.java                           -->
 <!-- ==================================================================== -->
@@ -310,17 +437,17 @@
   <target name="cscuptodate">
     <condition property="csc.uptodate">
       <and>
-        <uptodate srcfile="${osengsrc.dir}/org/apache/derby/iapi/types/DataValueDescriptor.java"
+        <uptodate srcfile="${derby.engine.dir}/iapi/types/DataValueDescriptor.java"
                   targetfile="${out.dir}/org/apache/derby/iapi/types/DataValueDescriptor.class"/>
-        <uptodate srcfile="${osengsrc.dir}/org/apache/derby/impl/services/cache/CachedItem.java"
+        <uptodate srcfile="${derby.engine.dir}/impl/services/cache/CachedItem.java"
                   targetfile="${out.dir}/org/apache/derby/impl/services/cache/CachedItem.class"/>
-        <uptodate srcfile="${osengsrc.dir}/org/apache/derby/impl/store/raw/data/RecordId.java"
+        <uptodate srcfile="${derby.engine.dir}/impl/store/raw/data/RecordId.java"
                   targetfile="${out.dir}/org/apache/derby/impl/store/raw/data/RecordId.class"/>
-        <uptodate srcfile="${osengsrc.dir}/org/apache/derby/iapi/store/raw/ContainerKey.java"
+        <uptodate srcfile="${derby.engine.dir}/iapi/store/raw/ContainerKey.java"
                   targetfile="${out.dir}/org/apache/derby/iapi/store/raw/ContainerKey.class"/>
-        <uptodate srcfile="${osengsrc.dir}/org/apache/derby/iapi/services/cache/SizedCacheable.java"
+        <uptodate srcfile="${derby.engine.dir}/iapi/services/cache/SizedCacheable.java"
                   targetfile="${out.dir}/org/apache/derby/iapi/services/cache/SizedCacheable.class"/>
-        <available file="${osengsrc.dir}/org/apache/derby/iapi/services/cache/ClassSizeCatalog.java"/>
+        <available file="${derby.engine.dir}/iapi/services/cache/ClassSizeCatalog.java"/>
       </and>
     </condition>
   </target>
@@ -467,8 +594,8 @@
 <!--                               Jar targets                           -->
 <!-- =================================================================== -->
 
-  <target name="buildjarsclean" depends="cleanjars,initjars,derbyjar,derbytoolsjar,derbynetjar,derbywar"/>
-  <target name="buildjars" depends="initjars,derbyjar,derbytoolsjar,derbynetjar,derbywar"/>
+  <target name="buildjarsclean" depends="cleanjars,initjars,derbyjar,derbytoolsjar,derbynetjar,derbywar,derbylocalejars,derbytestingjar"/>
+  <target name="buildjars" depends="initjars,derbyjar,derbytoolsjar,derbynetjar,derbywar,derbylocalejars,derbytestingjar"/>
 
   <target name="initjars" depends="setsanityname,getsvnversion">
     <property name="derby.jar.dir" value="${basedir}/jars/${sanity.name}"/>
@@ -721,6 +848,7 @@
   </target>
 
 <!-- - - - - - - - - - - - - - derby.war target - - - - - - - - - - - -->
+
  <target name="derbywar" depends="initjars">
 
     <echo message="Beginning derby.war  build"/>
@@ -728,6 +856,85 @@
     <zip zipfile="${derby.jar.dir}/derby.war" compress="true" basedir="tools/j2ee/derby"/>
   </target>
 
+<!-- - - - - - - - - - - - - - locale jar targets - - - - - - - - - - - -->
+
+  <target name="derbylocalejars" depends="initjars">
+
+    <!-- call localejar for each locale -->
+
+    <antcall target="localejar">
+      <param name="locale.iname" value="de_DE"/>
+      <param name="locale.ename" value="German/Germany [de_DE]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="es"/>
+      <param name="locale.ename" value="Spanish/International [es]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="fr"/>
+      <param name="locale.ename" value="French/International [fr]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="it"/>
+      <param name="locale.ename" value="Italian/International [it]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="ja_JP"/>
+      <param name="locale.ename" value="Japanese/Japan [ja_JP]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="ko_KR"/>
+      <param name="locale.ename" value="Korean/Korea [ko_KR]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="pt_BR"/>
+      <param name="locale.ename" value="Portuguese/Brazil [pt_BR]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="zh_CN"/>
+      <param name="locale.ename" value="Simplified_Chinese/PR_China [zh_CN]"/>
+    </antcall>
+    <antcall target="localejar">
+      <param name="locale.iname" value="zh_TW"/>
+      <param name="locale.ename" value="Chinese/Taiwan_Traditional [zh_TW]"/>
+    </antcall>
+  </target>
+
+  <target name="localejar">
+ 
+    <echo message="Building derbyLocale_${locale.iname}.jar"/>
+
+    <!-- generate new locale property file -->
+    <antcall target="localeinfowriter">
+      <param name="info.buildnumber" value="${changenumber}"/>
+      <param name="info.iname" value="_${locale.iname}"/>
+      <param name="info.ename" value="${locale.ename}"/>
+      <param name="info.productfile" value="derbyLocale_${locale.iname}.jar"/>
+      <param name="info.file" value="${out.dir}/org/apache/derby/info/locale_${locale.iname}.properties"/>
+    </antcall>   
+    <jar destfile="${derby.jar.dir}/derbyLocale_${locale.iname}.jar"
+         compress="true"
+	 filesonly="true">
+      <fileset dir="${out.dir}"
+	       includes="org/apache/derby/info/*_${locale.iname}.properties,
+	                 org/apache/derby/loc/*_${locale.iname}.properties,
+	                 org/apache/derby/loc/drda/*_${locale.iname}.properties"/>
+    </jar>
+  </target>
+    
+<!-- - - - - - - - - - - - derby testing jar target - - - - - - - - - - -->
+
+  <target name="derbytestingjar" depends="initjars,ckderbytesting" if="derbyTesting.available">
+    <zip destfile="${derby.jar.dir}/derbyTesting.jar" filesonly="true" compress="true">
+      <fileset dir="${out.dir}" includes="org/apache/derbyTesting/functionTests/**"/>
+    </zip>
+  </target>
+
+  <target name="ckderbytesting">
+    <available file="${out.dir}/org/apache/derbyTesting"
+               property="derbyTesting.available"/>
+  </target>
+
 <!-- - - - - - - - - - - -  jar build helper targets  - - - - - - - - - -->
 
   <target name="setsanityname" depends="init,setissane,sanitynamesane,sanitynameinsane"/>
@@ -778,16 +985,13 @@
     <!-- Build insane product jars -->
     <antcall target="clobber"/>
     <antcall target="insane"/>
-    <antcall target="buildsource"/>
-    <antcall target="buildsource"/>
+    <antcall target="all"/>
     <antcall target="jars"/>
 
-
     <!-- Build sane product jars -->
     <antcall target="clobber"/>
     <antcall target="sane"/>
-    <antcall target="buildsource"/>
-    <antcall target="buildsource"/>
+    <antcall target="all"/>
     <antcall target="jars"/>
 
     <!-- Build everything else -->

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/NetworkServerControl.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/NetworkServerControl.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to run commands 
+@REM -- in the Network Server framework
+@REM --
+@REM -- REQUIREMENTS: 
+@REM --	 You must have the derby jar files as well as the 
+@REM --   derby network server class files in your classpath.
+@REM --
+@REM --  Check the setNetworkServerCP.bat file for an example of
+@REM --   what to set.
+@REM -- 
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start Derby as a Network server
+@REM ---------------------------------------------------------
+java org.apache.derby.drda.NetworkServerControl %*
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/NetworkServerControl.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/NetworkServerControl.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,31 @@
+## ---------------------------------------------------------
+# -- This simple script is an example of how to run commands
+# -- for the Network Server framework
+# --
+# -- REQUIREMENTS: 
+# --	  You must have the derby and Network Server jar files in your CLASSPATH
+# --
+# --  Check the setNetworkServerCP.ksh file for an example of
+# --   what to set.
+# -- 
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/NetworkServer/bin/setNetworkServerCP.ksh
+}
+
+# ---------------------------------------------------------
+# -- start Derby Network Server
+# ---------------------------------------------------------
+
+java org.apache.derby.drda.NetworkServerControl $*
+
+
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/dblook.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/dblook.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to start dblook in 
+@REM -- an NetworkServer environment.
+@REM --
+@REM -- REQUIREMENTS: 
+@REM -- You must have the Derby libraries in your classpath
+@REM -- 
+@REM -- See the setNetworkClientCP.bat for an example of
+@REM -- how to do this.
+@REM --
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkClientCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkClientCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start dblook
+@REM ---------------------------------------------------------
+java org.apache.derby.tools.dblook %*
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/dblook.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/dblook.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+# ---------------------------------------------------------
+# -- This simple script is an example of how to start dblook in 
+# -- a NetworkServer environment.
+# --
+#-- REQUIREMENTS: 
+# -- You must have the Derby libraries in your classpath
+# -- 
+# -- See the setEmbeddedCP.ksh for an example of
+# -- how to do this.
+# --
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/NetworkServer/bin/setNetworkClientCP.ksh
+}
+
+# ---------------------------------------------------------
+# -- start dblook
+# ---------------------------------------------------------
+java org.apache.derby.tools.dblook $@
+
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/ij.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/ij.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,37 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to start ij in 
+@REM -- an NetworkServer environment.
+@REM --
+@REM -- REQUIREMENTS: 
+@REM -- You must have the Derby and DB2 JCC libraries in your classpath
+@REM -- 
+@REM -- See the setNetworkClientCP.bat for an example of
+@REM -- how to do this.
+@REM --
+@REM -- You may need to modify the values below for a different
+@REM -- host, port, user, or password
+@REM --
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkClientCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkClientCP.bat
+
+set IJ_HOST=localhost
+set IJ_PORT=1527
+set IJ_USER=APP
+set IJ_PASSWORD=APP
+
+@REM ---------------------------------------------------------
+@REM -- start ij
+@REM -- host, port, user and password may need to be changed
+@REM ---------------------------------------------------------
+java -Dij.driver=com.ibm.db2.jcc.DB2Driver -Dij.protocol=jdbc:derby:net://%IJ_HOST%:%IJ_PORT%/ -Dij.user=%IJ_USER% -Dij.password=%IJ_PASSWORD%  org.apache.derby.tools.ij
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/ij.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/ij.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,33 @@
+# ---------------------------------------------------------
+# -- This simple script is an example of how to start ij in 
+# -- the Derby Network Server environment.
+# --
+#-- REQUIREMENTS: 
+# -- You must have the Derby and DB2 JCC libraries in your classpath
+# -- 
+# -- See the setNetworkClientCP.ksh for an example of
+# -- how to do this.
+# --
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/NetworkServer/bin/setNetworkClientCP.ksh
+}
+ 
+export IJ_HOST=localhost
+export IJ_PORT=1527
+export IJ_USER=APP
+export IJ_PASSWORD=APP
+
+# ---------------------------------------------------------
+# -- start ij
+# ---------------------------------------------------------
+java -Dij.driver=com.ibm.db2.jcc.DB2Driver -Dij.protocol=jdbc:derby:net://$IJ_HOST:$IJ_PORT/ -Dij.user=$IJ_USER -Dij.password=$IJ_PASSWORD  org.apache.derby.tools.ij
+
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkClientCP.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkClientCP.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file sets the CLASSPATH environment variable
+@REM -- for use with Derby products in Network Server mode
+@REM --
+@REM -- To use this script from other locations, change the 
+@REM -- value assigned to CLOUDSCAPE_INSTALL to be an absolute path 
+@REM -- (set CLOUDSCAPE_INSTALL=C:\derby) instead of the current relative path
+@REM --
+@REM -- This file for use on Windows systems
+@REM -- 
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+
+FOR %%X in ("%CLOUDSCAPE_INSTALL%") DO SET CLOUDSCAPE_INSTALL=%%~sX
+
+set CLASSPATH=%CLOUDSCAPE_INSTALL%\lib\derby.jar;%CLOUDSCAPE_INSTALL%\lib\derbytools.jar;%CLOUDSCAPE_INSTALL%\lib\db2jcc.jar;%CLOUDSCAPE_INSTALL%\lib\db2jcc_license_c.jar;%CLASSPATH%

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkClientCP.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkClientCP.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,14 @@
+# ---------------------------------------------------------
+# -- This script file sets the CLASSPATH environment variable
+# -- for use with Derby products in Network Server mode
+# --
+# -- To use this script from other locations, change the 
+# -- value assigned to CLOUDSCAPE_INSTALL to be an absolute path 
+# -- (export CLOUDSCAPE_INSTALL=/opt/derby) instead of the current relative path
+# --
+# -- This file for use on Unix ksh systems
+# -- 
+# ---------------------------------------------------------
+# CLOUDSCAPE_INSTALL=
+
+export CLASSPATH="${CLOUDSCAPE_INSTALL}/lib/derby.jar:${CLOUDSCAPE_INSTALL}/lib/derbytools.jar:${CLOUDSCAPE_INSTALL}/lib/db2jcc.jar:${CLOUDSCAPE_INSTALL}/lib/db2jcc_license_c.jar:${CLASSPATH}"

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkServerCP.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkServerCP.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file sets the CLASSPATH environment variable
+@REM -- for use with Derby products in NetworkServer mode
+@REM --
+@REM -- To use this script from other locations, change the 
+@REM -- value assigned to CLOUDSCAPE_INSTALL to be an absolute path 
+@REM -- (set CLOUDSCAPE_INSTALL=C:\derby) instead of the current relative path
+@REM --
+@REM -- This file for use on Windows systems
+@REM -- 
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+
+FOR %%X in ("%CLOUDSCAPE_INSTALL%") DO SET CLOUDSCAPE_INSTALL=%%~sX
+
+set CLASSPATH=%CLOUDSCAPE_INSTALL%\lib\derby.jar;%CLOUDSCAPE_INSTALL%\lib\derbytools.jar;%CLOUDSCAPE_INSTALL%\lib\derbynet.jar;%CLASSPATH%

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkServerCP.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/setNetworkServerCP.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,14 @@
+# ---------------------------------------------------------
+# -- This script file sets the CLASSPATH environment variable
+# -- for use with Derby products in NetworkServer mode
+# --
+# -- To use this script from other locations, change the 
+# -- value assigned to CLOUDSCAPE_INSTALL to be an absolute path 
+# -- (export CLOUDSCAPE_INSTALL=/opt/derby) instead of the current relative path
+# --
+# -- This file for use on Unix ksh systems
+# -- 
+# ---------------------------------------------------------
+# CLOUDSCAPE_INSTALL=
+
+export CLASSPATH="${CLOUDSCAPE_INSTALL}/lib/derby.jar:${CLOUDSCAPE_INSTALL}/lib/derbytools.jar:${CLOUDSCAPE_INSTALL}/lib/derbynet.jar:${CLASSPATH}"

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/startNetworkServer.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/startNetworkServer.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to start the
+@REM -- Derby server in the Network Server framework
+@REM --
+@REM -- REQUIREMENTS: 
+@REM --	 You must have the derby jar files as well as the 
+@REM --   derby network server class files in your classpath.
+@REM --
+@REM --  Check the setNetworkServerCP.bat file for an example of
+@REM --   what to set.
+@REM -- 
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start Derby as a Network server
+@REM ---------------------------------------------------------
+java org.apache.derby.drda.NetworkServerControl start
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/startNetworkServer.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/startNetworkServer.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+## ---------------------------------------------------------
+# -- This simple script is an example of how to start Derby 
+# -- as a server inside the Network Server framework
+# --
+# -- REQUIREMENTS: 
+# --	  You must have the derby and Network Server jar files in your CLASSPATH
+# --
+# --  Check the setNetworkServerCP.ksh file for an example of
+# --   what to set.
+# -- 
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+# ---------------------------------------------------------
+# -- start Derby Network Server
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/NetworkServer/bin/setNetworkServerCP.ksh
+}
+
+java org.apache.derby.drda.NetworkServerControl start
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/stopNetworkServer.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/stopNetworkServer.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,26 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to shutdown the
+@REM -- Derby server in the Network Server framework
+@REM --
+@REM -- REQUIREMENTS: 
+@REM --	 You must have the derby jar files as well as the 
+@REM --   Network Server class files in your classpath.
+@REM --
+@REM --  Check the setNetworkServerCP.bat file for an example of
+@REM --   what to set.
+@REM -- 
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+
+java org.apache.derby.drda.NetworkServerControl shutdown
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/stopNetworkServer.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/stopNetworkServer.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,25 @@
+# ---------------------------------------------------------
+# -- This simple script is an example of how to shutdown Derby 
+# -- running as a server inside the Network Server framework
+# --
+# -- REQUIREMENTS: 
+# --	 You must have the derby jar files as well as the 
+# --   derby network server class files in your classpath.
+# --
+# --  Check the setNetworkServerCP.ksh file for an example of
+# --   what to set.
+# -- 
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/NetworkServer/bin/setNetworkServerCP.ksh
+}
+
+java org.apache.derby.drda.NetworkServerControl shutdown
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/sysinfo.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/sysinfo.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,32 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to use sysinfo to get
+@REM -- important system information
+@REM --
+@REM -- REQUIREMENTS:
+@REM --
+@REM --  This utility will report important system info about 
+@REM --  jar files which are in your classpath. Jar files which are not
+@REM --  if your classpath will not be reported. 
+@REM --
+@REM -- Check the setNetworkServerCP.bat to see an example of adding the
+@REM -- the Derby jars to your classpath.
+@REM -- 
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/NetworkServer/bin/setNetworkServerCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start sysinfo
+@REM ---------------------------------------------------------
+java org.apache.derby.drda.NetworkServerControl sysinfo %*
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/frameworks/NetworkServer/bin/sysinfo.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/bin/sysinfo.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,33 @@
+# ---------------------------------------------------------
+# -- This script file is an example of how to use sysinfo to get
+# -- important system information
+# --
+# -- REQUIREMENTS:
+# --
+# --  This utility will report important system info about 
+# --  jar files which are in your classpath and the current setting of
+# --  Derby Network Server parameters. Jar files which are not
+# --  if your classpath will not be reported. 
+# --  The Derby Network Server must be running for this utility to work.
+# --
+# -- Check the setNetworkServerCP.ksh to see an example of adding the
+# -- the Derby jars to your classpath.
+# -- 
+# --
+# -- This file for use on Unix korn shell systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/NetworkServer/bin/setNetworkServerCP.ksh
+}
+
+# ---------------------------------------------------------
+# -- start sysinfo
+# ---------------------------------------------------------
+java org.apache.derby.drda.NetworkServerControl sysinfo $*
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------

Added: incubator/derby/code/trunk/frameworks/NetworkServer/readme.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/NetworkServer/readme.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<SCRIPT language="JavaScript">
+<!--
+function loadOuterPage(){
+        location.href = "../readme.html#network";
+		}
+//-->
+
+</SCRIPT>
+
+<title>IBM Cloudscape's Network Server framework
+</title>
+</head>
+<body onload="loadOuterPage()">
+<p><a href="../readme.html#network">IBM Cloudscape's Network Server framework</a></p>
+</body>
+</html>
+

Added: incubator/derby/code/trunk/frameworks/embedded/bin/dblook.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/dblook.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to start dblook in 
+@REM -- an embedded environment.
+@REM --
+@REM -- REQUIREMENTS: 
+@REM -- You must have the Cloudscape libraries in your classpath
+@REM -- 
+@REM -- See the setEmbeddedCP.bat for an example of
+@REM -- how to do this.
+@REM --
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start dblook
+@REM ---------------------------------------------------------
+java org.apache.derby.tools.dblook %*
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/embedded/bin/dblook.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/dblook.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+# ---------------------------------------------------------
+# -- This simple script is an example of how to start dblook in 
+# -- an embedded environment.
+# --
+#-- REQUIREMENTS: 
+# -- You must have the Cloudscape libraries in your classpath
+# -- 
+# -- See the setEmbeddedCP.ksh for an example of
+# -- how to do this.
+# --
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/embedded/bin/setEmbeddedCP.ksh
+}
+ 
+# ---------------------------------------------------------
+# -- start dblook
+# ---------------------------------------------------------
+java org.apache.derby.tools.dblook $@
+
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/embedded/bin/ij.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/ij.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to start ij in 
+@REM -- an embedded environment.
+@REM --
+@REM -- REQUIREMENTS: 
+@REM -- You must have the Cloudscape libraries in your classpath
+@REM -- 
+@REM -- See the setEmbeddedCP.bat for an example of
+@REM -- how to do this.
+@REM --
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start ij
+@REM ---------------------------------------------------------
+java -Dij.protocol=jdbc:derby: org.apache.derby.tools.ij
+
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/embedded/bin/ij.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/ij.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+# ---------------------------------------------------------
+# -- This simple script is an example of how to start ij in 
+# -- and embedded environment.
+# --
+#-- REQUIREMENTS: 
+# -- You must have the Cloudscape libraries in your classpath
+# -- 
+# -- See the setEmbeddedCP.ksh for an example of
+# -- how to do this.
+# --
+# -- This file for use on Unix ksh systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/embedded/bin/setEmbeddedCP.ksh
+}
+ 
+# ---------------------------------------------------------
+# -- start ij
+# ---------------------------------------------------------
+java -Dij.protocol=jdbc:derby: org.apache.derby.tools.ij
+
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------
+

Added: incubator/derby/code/trunk/frameworks/embedded/bin/setEmbeddedCP.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/setEmbeddedCP.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file sets the CLASSPATH environment variable
+@REM -- for use with Cloudscape products in embedded mode
+@REM --
+@REM -- To use this script from other locations, change the 
+@REM -- value assigned to CLOUDSCAPE_INSTALL to be an absolute path 
+@REM -- (set CLOUDSCAPE_INSTALL=C:\derby) instead of the current relative path
+@REM --
+@REM -- This file for use on Windows systems
+@REM -- 
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+
+FOR %%X in ("%CLOUDSCAPE_INSTALL%") DO SET CLOUDSCAPE_INSTALL=%%~sX
+
+set CLASSPATH=%CLOUDSCAPE_INSTALL%\lib\derby.jar;%CLOUDSCAPE_INSTALL%\lib\derbytools.jar;%CLASSPATH%

Added: incubator/derby/code/trunk/frameworks/embedded/bin/setEmbeddedCP.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/setEmbeddedCP.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,15 @@
+# ---------------------------------------------------------
+# -- This script file sets the CLASSPATH environment variable
+# -- for use with Cloudscape products in embedded mode
+# --
+# -- To use this script from other locations, change the 
+# -- value assigned to CLOUDSCAPE_INSTALL to be an absolute path 
+# -- (export CLOUDSCAPE_INSTALL=/opt/derby) instead of the current relative path
+# --
+# -- This file for use on Unix ksh systems
+# -- 
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+export CLASSPATH="${CLOUDSCAPE_INSTALL}/lib/derby.jar:${CLOUDSCAPE_INSTALL}/lib/derbytools.jar:${CLASSPATH}"

Added: incubator/derby/code/trunk/frameworks/embedded/bin/sysinfo.bat
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/sysinfo.bat	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,37 @@
+@REM ---------------------------------------------------------
+@REM -- This batch file is an example of how to use sysinfo to get
+@REM -- important system information
+@REM --
+@REM -- REQUIREMENTS:
+@REM --
+@REM --  This utility will report important system info about 
+@REM --  jar files which are in your classpath. Jar files which are not
+@REM --  if your classpath will not be reported. 
+@REM --
+@REM -- Check the setCP.bat to see an example of adding the
+@REM -- the Cloudscape jars to your classpath.
+@REM -- 
+@REM -- This file for use on Windows systems
+@REM ---------------------------------------------------------
+
+rem set CLOUDSCAPE_INSTALL=
+ 
+@if !"%CLASSPATH%"==! call "%CLOUDSCAPE_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
+@if "%CLASSPATH%" == "" call "%CLOUDSCAPE_INSTALL%"/frameworks/embedded/bin/setEmbeddedCP.bat
+
+@REM ---------------------------------------------------------
+@REM -- start sysinfo
+@REM ---------------------------------------------------------
+java org.apache.derby.tools.sysinfo
+
+@REM ---------------------------------------------------------
+@REM -- To use Microsoft's JView JVM, use the following command
+@REM ---------------------------------------------------------
+@REM -- jview org.apache.derby.tools.sysinfo
+
+@REM ---------------------------------------------------------
+@REM -- To use a different JVM with a different syntax, simply edit
+@REM -- this file
+@REM ---------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/frameworks/embedded/bin/sysinfo.ksh
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/bin/sysinfo.ksh	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,34 @@
+# ---------------------------------------------------------
+# -- This script file is an example of how to use sysinfo to get
+# -- important system information
+# --
+# -- REQUIREMENTS:
+# --
+# --  This utility will report important system info about 
+# --  jar files which are in your classpath. Jar files which are not
+# --  if your classpath will not be reported. 
+# --
+# -- Check the setCP.ksh to see an example of adding the
+# -- the Cloudscape jars to your classpath.
+# -- 
+# --
+# -- This file for use on Unix korn shell systems
+# ---------------------------------------------------------
+
+# CLOUDSCAPE_INSTALL=
+
+[ -z "$CLASSPATH" ] && {
+  . "$CLOUDSCAPE_INSTALL"/frameworks/embedded/bin/setEmbeddedCP.ksh
+}
+ 
+# ---------------------------------------------------------
+# -- start sysinfo
+# ---------------------------------------------------------
+java org.apache.derby.tools.sysinfo
+
+# ---------------------------------------------------------
+# -- To use a different JVM with a different syntax, simply edit
+# -- this file
+# ---------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/frameworks/embedded/readme.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/embedded/readme.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<SCRIPT language="JavaScript">
+<!--
+function loadOuterPage(){
+        location.href = "../readme.html#embed";
+		}
+//-->
+
+</SCRIPT>
+
+<title>IBM Cloudscape's Embedded Framework
+</title>
+</head>
+<body onload="loadOuterPage()">
+<p><a href="../readme.html#embed">IBM Cloudscape's embedded framework</a></p>
+</body>
+</html>
+

Added: incubator/derby/code/trunk/frameworks/readme.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/frameworks/readme.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,34 @@
+<!doctype html public "-//W3C//DTD HTML 3.2//EN">
+<html>
+<head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>About IBM Cloudscape's Frameworks
+</title>
+<link rel="StyleSheet" href="../demo/csfull.css" type="text/css" media="screen">
+</head>
+<body class="SmallFile">
+<h1>About IBM Cloudscape's Frameworks</h1>
+<p><a name="framework"></a>A <em> framework</em> is the environment in which Cloudscape runs. The framework in which you run Cloudscape affects how you run applications against Cloudscape.</p>
+<p>The <em>frameworks</em> directory contains subdirectories for each framework with supporting files. Depending on the framework, the subdirectory includes:
+<ul>
+	<li><p><em>bin</em> Subdirectory<br>
+	All subdirectories in this directory contain a <em>bin</em> subdirectory that has scripts that serve as examples of how to run some of the basic Cloudscape tools and utilities tailored for the particular framework. For server frameworks, start and stop scripts are also provided.
+<br>To use the scripts for a particular framework, modify the scripts as necessary and put that framework's <em>bin</em> subdirectory first in your path.</p></li>
+</ul>
+<p>For an easy-to-follow example of how to run an application in the two frameworks, see the <a href="../demo/programs/simple/example.html">simple example</a>.</p>
+<p>For more information about frameworks, see <a href="../doc/pdf/getstart.pdf"><em>Getting Started with IBM Cloudscape</em></a>.</p>
+<h2><a name="embed">Embedded Framework</a></h2>
+<p>An <em>embedded</em> <a href="#framework">framework</a> is the most basic framework. Cloudscape runs embedded in a Java application. When the application loads the local JDBC driver, it starts up the Cloudscape engine. When the application shuts down, it shuts down the Cloudscape engine. Only a single application can access a database at one time.
+<p>The <em>bin</em> subdirectory in <em>frameworks/embedded</em> contains scripts for running some of the Cloudscape tools in an embedded environment. For working in an embedded environment, put the <em>frameworks/embedded/bin</em> subdirectory first in your path.</p>
+<h2><a name="server">Server Framework</a></h2>
+<p>A server <a href="#framework">framework</a> is a continuously running Java application that allows multiple, remote JDBC applications to connect to Cloudscape.
+<ul>
+<li><a href="#network">The IBM Cloudscape Network Server framework</a>
+</ul>
+<h3><a name="network">IBM Cloudscape Network Server</a></h3>
+<p>The Cloudscape Network Server is a <a href="#server">server framework</a> that comes with Cloudscape. The Cloudscape Network Server works with the DB2 JCC JDBC driver; please read the Cloudscape documentation on the differences between this driver and the embedded driver.
+<ul>
+	<li>The subdirectories in this directory contain scripts that serve as examples for how to run Cloudscape tools and utilities as client applications to Cloudscape running inside the Cloudscape Network Server framework. It also contains scripts for starting up the framework.</li>
+</ul>
+
+</body>
+</html>

Added: incubator/derby/code/trunk/java/demo/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+
+<project default="demo" basedir="../..">
+
+<!-- Set Properties -->
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="${ant.home}/properties"/>
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+<!-- Targets -->
+  <target name="demo" depends="compile"/>
+
+  <target name="compile">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="nserverdemo"
+      destdir="${out.dir}"
+      includes="Simple*">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+        <pathelement location="${jcc}"/>
+      </classpath>
+    </javac>
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="."
+      destdir="${out.dir}"
+      includes="nserverdemo/**"
+      excludes="nserverdemo/Simple*">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+        <pathelement location="${jcc}"/>
+      </classpath>
+    </javac>
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${javasrc.dir}/demo/simple"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement location="${javasrc.dir};${jcc};${jta1_2}"/>
+        <pathelement path="${java13compile.classpath};${jcc};${jta1_2}"/>
+      </classpath>
+    </javac>
+  </target>
+
+</project>
+

Added: incubator/derby/code/trunk/java/demo/csfull.css
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/csfull.css	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,751 @@
+BODY {
+	font-size : 12pt;
+	font-family : "Times New Roman";
+	background-color : White;
+}
+
+A:LINK {
+	color : #3300FF;
+	background-color : transparent;
+}
+
+A:HOVER {
+	color : Fuchsia;
+	text-decoration : underline;
+	background-color : transparent;
+}
+
+	
+A:VISITED {
+	color : #330099;
+	background-color : transparent;
+}
+
+A:ACTIVE {
+	color : Purple;
+	text-decoration : none;
+	background-color : transparent;
+}
+
+A.TOC:LINK {
+	color : #3300FF;
+	text-decoration : none;
+	background-color : transparent;
+}
+
+A.TOC:HOVER {
+	color : Fuchsia;
+	font-weight : bold;
+	background-color : transparent;
+}
+
+	
+A.TOC:VISITED {
+	color : #330099;
+	text-decoration : none;
+	background-color : transparent;
+}
+
+A.TOC:ACTIVE {
+	color : Purple;
+	text-decoration : none;
+	background-color : transparent;
+}
+
+.BadFormatting{
+	background-color : transparent;
+	font-size : 24pt;
+	color : Red;
+}
+
+.CommandLine{
+	background-color : transparent;
+	color : Black;
+	font-weight : bold;
+	font-family : monospace;
+	font-size : 9pt;
+}
+
+
+.Output {
+	color : Gray;
+	background-color : transparent;
+	font-family : monospace;
+	font-size : 10pt;
+}
+
+.OutputVeryWide {
+	color : Gray;
+	background-color : transparent;
+	font-size :8pt;
+}
+
+.SmallFile {
+	background-color : #B0C4DE;
+}
+
+.Thin{
+	font-size : 2pt;
+	margin-top: 3px;
+	margin-bottom :3px;
+}
+
+ADDRESS {
+	font-size : 10pt;
+}
+
+ADDRESS.Footer {
+	font-size : 10pt;
+	font-style : normal;
+}
+
+
+
+Caption.TableTitle {
+	background-color : transparent;
+	font-style : normal;
+	text-align : center;
+	font-weight : bold;
+}
+
+DL.Index {
+	font-size : 9pt;
+}
+
+DL.Glossary {
+	font-size : 10pt;
+	margin-left : 0;
+	background-color : transparent;
+}
+
+DT.GlossaryTerm {
+	background-color : transparent;
+	font-style : normal;
+	font-weight : bold;
+	margin-top : 22px;
+}
+
+DD.GlossaryDefinition {
+	background-color : transparent;
+}
+
+H1 {
+	color : #004080;
+	background-color : transparent;
+	margin-top : 0px;
+	font-size : 24pt;
+}
+H1.ExtraSpace {
+	color : #004080;
+	background-color : transparent;
+	margin-top : 48px;
+	font-size : 20pt;
+}
+
+H1.BookTitle {
+	color : White;
+	background-color : #D3D3D3;
+	margin-top : 0px;
+	padding-bottom : 28px;
+	padding-left : 8px;
+	padding-right : 8px;
+	padding-top : 28px;
+	font-size : 28pt;
+	margin-bottom : 34px;
+	border : 2px solid Silver;
+}
+
+H1.Title {
+	color : Black;
+	background-color : transparent;
+	margin-top : 0px;
+	margin-bottom : 28px;
+}
+
+H1.PartTitle {
+	color : Black;
+	background-color : #D3D3D3;
+	margin-top : 0px;
+	padding-bottom : 8px;
+	padding-left : 8px;
+	padding-right : 8px;
+	padding-top : 8px;
+	font-size : 28pt;
+	border : 2px solid Silver;
+}
+
+H2 {
+	color : #0000ff;
+	background-color : transparent;
+	margin-top : 40px;
+	font-size : 18pt;
+}
+
+H2.ManPage{
+	color : #0000ff;
+	background-color : transparent;
+	margin-top : 0px;
+}
+
+H3 {
+	color : #0000A0;
+	background-color : transparent;
+	margin-top : 40px;
+	font-size : 14pt;
+}
+
+H3.BoxHead {
+	margin-top : 1px;
+	margin-bottom : 6px;
+	color : Black;
+	background-color : transparent;
+}
+
+H3.GroupTitlesIX {
+	margin-top : 12px;
+	color : Black;
+	margin-bottom : 2px;
+	background-color : transparent;
+}
+H3.GroupTitlesIXGlobal {
+	margin-top : 0px;
+	color : Black;
+	margin-bottom : 2px;
+	background-color : transparent;
+}
+
+H3.ManPageSubHead {
+	background-color : transparent;
+	color : #33532F;
+	margin-top : 32px;
+}
+
+H3.Heading4 {
+	color : #33532F;
+	background-color : transparent;
+	margin-top : 32px;
+}
+
+H3.TaskHead{
+	color : #0000A0;
+	background-color : White;
+	padding-bottom : 4px;
+	padding-left : 10px;
+	padding-right : 10px;
+	padding-top : 10px;
+	margin-bottom : 10px;
+	margin-left : 0px;
+	margin-right : 10px;
+	margin-top : 20px;
+	font-weight : bold;
+	font-size : 16pt;
+}
+
+H3.TOC {
+	background-color : transparent;
+	font-size : 14pt;
+	margin-bottom : 1px;
+	margin-left : 0px;
+	margin-right : 0px;
+	margin-top : 14px;
+	font-weight : bold;
+	padding-bottom : 6px;
+	padding-left : 6px;
+	padding-right : 6px;
+	padding-top : 6px;
+}
+
+H3.TOCPartTitle {
+	background-color : #D3D3D3;
+	margin-bottom : 12px;
+	font-weight : bold;
+	color : Black;
+	padding-bottom : 8px;
+	padding-left : 12px;
+	padding-right : 12px;
+	padding-top : 12px;
+	margin-left : 0px;
+	margin-right : 0px;
+	margin-top : 24px;
+	width : 4in;
+	font-size : 18pt;
+	border : 1px solid White;
+}
+
+H4.SyntaxSubHead {
+	background-color : White;
+}
+
+H5 {
+	color : #8000FF;
+	background-color : transparent;
+}
+
+H5.SyntaxSubhead {
+	color : #538055;
+	background-color : transparent;
+	margin-left : 2em;
+}
+
+
+
+LI{
+	margin-top : 12px;
+}
+
+LI .CellBodyBulleted{
+	margin-top : 1px;
+}
+
+LI .SubList{
+	margin-top : 4px;
+	list-style-type : square;
+	background-color : transparent;
+}
+
+LI.BulletEmphasis {
+	font-style : normal;
+	margin-top : 12px;
+	background-color : transparent;
+}
+
+OL {
+	background-color : transparent;
+}
+
+P {
+	text-align : left;
+	font-style : normal;
+	background-color : transparent;
+}
+
+P.BodyRelative {
+	margin-top : 6px;
+	margin-bottom : 6px;
+	background-color : transparent;
+}
+
+P.BugNumber {
+	margin-top : -10px;
+	margin-bottom :-10px;
+	background-color : transparent;
+	color : Black;
+	font-size : 9pt;
+}
+
+
+P.CellBody {
+	font-size : 10pt;
+	margin-top : 3px;
+	margin-bottom : 3px;
+}
+
+P.CellBodySmall {
+	font-size : 9pt;
+	margin-top : 3px;
+	margin-bottom : 3px;
+}
+
+P.CellBodyCommandLine {
+	font-size :9pt;
+	font-family : monospace;
+}
+
+P.CellBodyJava {
+	font-size : 9pt;
+	font-family : monospace;
+}
+
+P.CellBodySQLExample {
+	font-size : 9pt;
+	margin-top : 2px;
+	color : #000066;
+	font-family : monospace;
+	background-color : transparent;
+}
+
+P.CellBodySQLSyntax {
+	color : #538055;
+	font-family : monospace;
+	font-size : 9pt;
+	margin-top : 2px;
+	background-color : transparent;
+}
+
+P.CellBodyIndented {
+	font-size : 10pt;
+	margin-left : 1em;
+	margin-top : 3px;
+	margin-bottom : 3px;
+}
+
+P.CellHeading {
+	font-size : 10pt;
+	font-weight : bold;
+	text-align : center;
+}
+
+P.CopyrightInfo {
+	font-size : 9pt;
+	margin-top : 6px;
+	margin-left : 12px;
+	margin-right: 12px;
+	margin-bottom : 0px;
+	padding-bottom : 1px;
+	padding-left : 1px;
+	padding-right : 1px;
+	padding-top : 1px;
+	background-color : transparent;
+}
+
+P.FigureCaption {
+	background-color : transparent;
+	font-style : italic;
+}
+
+P.IJ {
+	background-color : White;
+	color : #7a7d7d;
+}
+P.IndexKey {
+	background-color : #D3D3D3;
+	font-size : 10pt;
+	padding-bottom : 6px;
+	padding-left : 6px;
+	padding-right : 6px;
+	padding-top : 6px;
+	text-align : center;
+	width : 350px;
+	font-weight : bold;
+	border : 2px solid #D3D3D3;
+}
+
+P.Java {
+	color : #004080;
+	background-color : Purple;
+	font-size : 30pt;
+	font-family : monospace;
+}
+
+P.JavaRelative{
+	color : #004080;
+	margin-top : 2px;
+	margin-bottom : 2px;
+	background-color : transparent;
+	font-size : 10pt;
+	font-family : monospace;
+}
+
+P.Indented {
+	margin : 1em;
+}
+
+P.NavBar {
+	font-size : 9pt;
+	margin-top:6px;
+	margin-bottom :6px;
+	padding-top : 2px;
+	padding-right : 2px;
+	padding-left : 2px;
+	padding-bottom : 2px;
+	background-color : transparent;
+}
+
+P.NavBar1 {
+	font-size : 9pt;
+	margin-top: 1px;
+	margin-bottom : 8px;
+	padding-top : 2px;
+	padding-right : 2px;
+	padding-left : 2px;
+	padding-bottom : 2px;
+}
+
+P.NavBar2 {
+	font-size :9pt;
+	margin-top : 8px;
+	margin-bottom : 8px;
+	margin-left : 2em;
+	padding-top : 2px;
+	padding-right : 2px;
+	padding-left : 2px;
+	padding-bottom : 2px;
+}
+
+P.NavBar3 {
+	font-size : 9pt;
+	margin-top : 8px;
+	margin-bottom : 1px;
+	margin-left : 4em;
+	padding-top : 2px;
+	padding-right : 2px;
+	padding-left : 2px;
+	padding-bottom : 2px;
+}
+P.NavBarIndentHang {
+	font-size : 9pt;
+	margin-top:6px;
+	margin-bottom :6px;
+	padding-top : 2px;
+	padding-right : 2px;
+	padding-left : 2px;
+	padding-bottom : 2px;
+	background-color : transparent;
+	text-indent : -2em;
+	margin-left : 2em;
+}
+
+
+P.NavBarVersion {
+	font-size : 9pt;
+	margin-top: 3px;
+	margin-bottom :3px;
+}
+
+P.PageCounter {
+	font-size : 9pt;
+	text-align : right;
+	background-color : #D3D3D3;
+	border : 2px;
+	padding-bottom : 4px;
+	padding-left : 4px;
+	padding-right : 4px;
+	padding-top : 4px;
+}
+
+P.PartNum {
+	background-color : Silver;
+	padding-bottom : 8px;
+	padding-left : 8px;
+	padding-right : 8px;
+	padding-top : 8px;
+	color : White;
+	font-weight : bold;
+	font-size : 18pt;
+	margin-bottom : 0px;
+}
+
+P.OutputRelative {
+	margin-top :3px;
+	font-family : monospace;
+	color : Gray;
+	font-size : 10pt;
+	margin-bottom : 2px;
+	background-color : transparent;
+}
+
+P.Special {
+	background-color : #FFFAFA;
+	padding : 6px 6px 6px 6px;
+	border : 4px solid White;
+	color : Maroon;
+}
+
+P.SQLSyntax {
+	color : #538055;
+	margin-left : 2em;
+	background-color : White;
+	font-family : monospace;
+	font-size : 10pt;
+}
+
+P.SQLExample {
+	color : #000066;
+	margin-left : 2em;
+	background-color : transparent;
+	font-family : monospace;
+	font-size : 10pt;
+}
+
+P.TOC1 {
+	margin-top : 4px;
+	margin-bottom : 4px;
+	margin-left : 3em;
+	font-weight : bold;
+	background-color : transparent;
+}
+
+P.TOC2 {
+	margin-left : 5em;
+	margin-top : 4px;
+	margin-bottom : 4px;
+}
+
+P.TOCTaskHead {
+	margin-left : 5em;
+	margin-top : 6px;
+	margin-bottom : 6px;
+	background-color : White;
+}
+
+P.TOC3 {
+	margin-top : 4px;
+	margin-bottom : 4px;
+	margin-left : 7em;
+}
+
+P.TOC4 {
+	margin-top : 4px;
+	margin-bottom : 4px;
+	margin-left : 9em;
+}
+
+P.TutorialQuiz {
+	font-style : normal;
+	background-color : transparent;
+	margin-bottom : 0px;
+	margin-top : 0px;
+}
+
+PRE {
+	font-size : 10pt;
+	background-color : White;
+	font-family : monospace;
+
+}
+
+PRE.Java {
+	color : #004080;
+	background-color : transparent;
+	font-family : monospace;
+}
+
+PRE.JavaSmall{
+	color : #004080;
+	background-color : transparent;
+	margin-left : 2em;
+	font-family : monospace;
+}
+
+PRE.ECIJ {
+	color : #7a7d7d;
+	font-size : 9pt;
+	background-color : transparent;
+	font-family : monospace;
+
+}
+
+TABLE.Sample {
+	background-color : #FAF0E6;
+}
+
+TD.BoxTable {
+	background-color : Silver;
+	padding : 10px;
+}
+
+UL {
+	background-color : transparent;
+}
+UL.Normal {
+	background-color : transparent;
+}
+
+
+UL.CellBodyBulleted {
+	font-size : 10pt;
+	margin-top : 3px;
+	margin-bottom : 3px;
+	background-color : transparent;
+}
+
+UL.ChapterTOC {
+	background-color : Silver;
+	border : medium Black;
+	padding-bottom : 10px;
+	padding-left : 10px;
+	padding-right : 10px;
+	padding-top : 10px;
+	margin-bottom : 10px;
+	margin-left : 10px;
+	margin-right : 10px;
+	margin-top : 10px;
+	list-style-type : none;
+}
+
+UL.SubList {
+	background-color : transparent;
+}
+EM {
+	font-style : italic;
+}
+
+EM.Biblio {
+	color : Black;
+	background-color : transparent;
+}
+
+EM.FileName {
+	background-color : transparent;
+}
+
+EM.NoLink {
+	color : Gray;
+	font-style : normal;
+	background-color : transparent;
+}
+
+EM.URL {
+	background-color : White;
+}
+
+EM.JavaItem {
+	background-color : White;
+}
+
+EM.DatabaseObject {
+	background-color : White;
+}
+
+EM.MenuItem {
+	font-style : normal;
+	font-weight : bold;
+}
+
+EM.Button {
+	font-style : normal;
+	font-weight : bold;
+}
+
+EM.QuizItem {
+	font-style : normal;
+}
+
+EM.UserVariable {
+	background-color : transparent;
+}
+
+STRONG.ijUI {
+	background-color : transparent;
+	color : #004080;
+	font-family : monospace;
+}
+
+STRONG.ChapterNum {
+	background-color : transparent;
+	color : Gray;
+}
+
+STRONG.Comment {
+	font-weight : normal;
+	color : #A4A9C1;
+	background-color : transparent;
+}
+
+STRONG.GlossaryTerm{
+	font-weight : bold;
+	color : Black;
+	background-color : transparent;
+}
+
+STRONG.Special {
+	font-weight : bold;
+	font-style : normal;
+}
+
+STRONG.PartNum {
+	color : #3300FF;
+	font-size : small;
+	background-color : transparent;
+}
+

Added: incubator/derby/code/trunk/java/demo/demo.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/demo.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<TITLE>Example Programs</TITLE>
+<link rel="stylesheet" type="text/css" href="../csfull.css" title="sample">
+</HEAD>
+<BODY>
+
+<H1>Example IBM Cloudscape Programs</H1>
+<p>This directory contains example programs. For a complete description, see <A href="../../doc/pdf/getstart.pdf">Getting Started with IBM Cloudscape</A> and the <A href="../../doc/pdf/server.pdf">IBM Cloudscape Server and Administration Guide</A>.</p>
+<UL>
+	<LI><A href="simple/example.html">Simple</A>
+        <p class="BodyRelative">A very simple JDBC application that boots the driver,
+                                creates a database, and loads some data.</p></LI>
+</LI>
+<LI><A href="nserverdemo/readme.html">Network Server Sample Programs</A>
+	<p class="BodyRelative">Two examples are provided to demonstrate how to obtain an <em class="Emphasis">embedded connection</em> and <em class="Emphasis">client connections</em> using the Network Server to connect to the same database. An embedded connection is a connection to a database that is booted in the same JVM as the application. Client applications that require a database connection across the network use the network server protocol (DRDA) to connect to the Network Server. This type of connection is referred to as a client connection.</p></LI></LI>
+
+</UL>
+
+</BODY>
+</HTML>

Added: incubator/derby/code/trunk/java/demo/navbar.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/navbar.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<TITLE>Example Programs</TITLE>
+<link rel="stylesheet" type="text/css" href="../csfull.css" title="sample">
+</HEAD>
+<BODY class="SmallFile">
+
+<p class="NavBar"><a href="demo.html" target="mainPage">Demo home</a></li></p>
+<p class="NavBar1"><a href="simple/example.html" target="mainPage">Simple</a></p>
+<p class="NavBar1"><a href="nserverdemo/readme.html" target="mainPage">Network Server Sample Programs</a></p>
+<p class="NavBar"><a href="../../index.html" target="_top">Documentation Home</a></p>
+<p class="NavBar"><a href="../../releasenotes.html" target="_top">Release Notes</a></p>
+
+</BODY>
+</HTML>

Added: incubator/derby/code/trunk/java/demo/nserverdemo/NetworkServerUtil.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/NetworkServerUtil.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,103 @@
+/*
+ * (C) Copyright IBM Corp. 2003, 2004.
+ *
+ * The source code for this program is not published or otherwise divested
+ * of its trade secrets, irrespective of what has been deposited with the
+ * U.S. Copyright Office.
+ */
+
+package nserverdemo;
+
+import java.util.Properties;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+import java.io.IOException;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.io.PrintWriter;
+import java.net.InetAddress;
+
+import org.apache.derby.drda.NetworkServerControl; //derby network server
+import java.io.FileOutputStream;
+
+/**
+ * Class for starting the Derby NetworkServer on a separate Thread.
+ * This class provides methods to start, and shutdown the server
+ *
+ * <P>
+ * <I>IBM Corp. reserves the right to change, rename, or
+ * remove this interface at any time.</I>
+ */
+
+public class NetworkServerUtil  {
+
+    private int portNum;
+    private NetworkServerControl serverControl;
+	private PrintWriter pw;
+
+    public NetworkServerUtil(int port, PrintWriter pw) {
+
+        this.portNum = port;
+		this.pw = pw;
+        try {
+          serverControl = new
+			  NetworkServerControl(InetAddress.getByName("localhost"), port);
+          pw.println("Derby Network Server created");
+        } catch (Exception e) {
+            e.printStackTrace();
+          }
+    }
+
+    /**
+     * trace utility of server
+     */
+    public void trace(boolean onoff) {
+      try {
+        serverControl.trace(onoff);
+      } catch (Exception e) {
+          e.printStackTrace();
+        }
+    }
+
+
+	/**
+	 * Try to test for a connection
+	 * Throws exception if unable to get a connection
+	 */
+	public void testForConnection()
+	throws Exception {
+		serverControl.ping();
+	}
+
+
+    /**
+     * Shutdown the NetworkServer
+     */
+    public void shutdown() {
+        try {
+            serverControl.shutdown();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+	/**
+	 * Start Derby Network server
+	 * 
+	 */
+    public void start() {
+        try {
+			serverControl.start(pw);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}
+
+
+

Added: incubator/derby/code/trunk/java/demo/nserverdemo/NsSample.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/NsSample.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,206 @@
+/*
+ * (C) Copyright IBM Corp. 2003.
+ *
+ * The source code for this program is not published or otherwise divested
+ * of its trade secrets, irrespective of what has been deposited with the
+ * U.S. Copyright Office.
+ */
+package nserverdemo;
+
+
+import java.util.Properties;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+import java.io.IOException;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.io.PrintWriter;
+
+
+/**
+
+ The Network Server sample demo program is a
+ simple JDBC application that interacts with the Derby Network Server.
+ The program:
+
+ 1.	starts the Derby Network Server
+ 2.	loads the IBM DB2 JDBC Universal driver
+ 3. creates the database if not already created
+ 4. checks to see if the schema is already created, and if not,
+ 5. creates the schema which includes the table SAMPLETBL and corresponding indexes.
+ 6. connects to the database
+ 7. loads the schema by inserting data
+ 8. starts client threads to perform database related operations
+ 9. has each of the clients perform DML operations (select, insert, delete, update) using JDBC calls,
+    i)	 one client opens an embedded connection to perform database operations
+         You can open an embedded connection in the same JVM that starts the Derby Network
+         Server.
+    ii)  one client opens a client connection to the Derby Network Server to perform database operations.
+ 10.waits for the client threads to finish the tasks
+ 11.shuts down the Derby Network Server at the end of the demo
+
+ <P>
+ Usage: java nserverdemo.NsSample
+ <P>
+ Please note, a file derby.log is created in the directory you run this program.
+ This file contains the logging of connections made with the derby network server
+
+ <P>
+ <I>IBM Corp. reserves the right to change, rename, or
+ remove this interface at any time.</I>
+
+ */
+
+public class NsSample {
+
+	public static final String DB2_JDBC_UNIVERSAL_DRIVER = new String("com.ibm.db2.jcc.DB2Driver");
+	public static int NUM_ROWS = 50; /* Number of rows to load initially */
+	public static int ITERATIONS = 10;  //Each client does these many iterations
+	public static int NUM_CLIENT_THREADS = 2;
+
+
+	// network server control specific
+	private static int NETWORKSERVER_PORT=1621;
+
+	// Derby database connection URL for embedded environment
+	public static final String CS_EMBED_DBURL="jdbc:derby:NSSampledb;";
+
+	// To connect to Derby Network Server
+	// This URL describes the target database for type 4 connectivity
+	// Notice that the properties may be established via the URL syntax
+	private static final String CS_NS_DBURL= "jdbc:derby:net://localhost:"+NETWORKSERVER_PORT+"/NSSampledb;create=true:retrieveMessagesFromServerOnGetMessage=true;deferPrepares=true;";
+
+	public static void main(String[] args) throws Exception {
+
+	  NetworkServerUtil nwServer;
+
+	  // DB2Connection provides additional functionality than java.sql.Connection
+	  // One can use either depending on the requirements
+	  com.ibm.db2.jcc.DB2Connection conn = null;
+
+	  PrintWriter pw = null;
+
+	  try  {
+		pw = new PrintWriter(System.out,true);	// to print messages
+
+		/* Start - In order to start the network server do the following
+		   In case you want to start the server as a script or another program
+		   comment out the next block of code (i.e. until the comment line 'End - network server started')
+		   Also, comment out the 'Shutdown Derby Network Server' line of code at the bottom
+		   In case you decide to comment out the starting of the network server, make sure that the
+		   client thread is not making an embedded connection but instead making only a client connection.
+		   Also note, the server logs messages to the file derby.log in the
+		   directory you run this program
+		 */
+
+		 	{
+				nwServer = new NetworkServerUtil(NETWORKSERVER_PORT,pw);
+				nwServer.start();
+
+				boolean knowIfServerUp = false; //do we know if server is ready to accept connections
+				int numTimes = 5;
+
+				// Test to see if server is ready for connections, for 15 seconds.
+				while(!knowIfServerUp && (numTimes >0)) {
+					try {
+						// testing for connection to see if the network server is up and running
+						// if server is not ready yet, this method will throw an exception
+						numTimes--;
+						nwServer.testForConnection();
+						knowIfServerUp = true;
+					}
+					catch(Exception e) {
+						System.out.println("[NsSample] Unable to obtain a connection to network server, trying again after 3000 ms.");
+						Thread.currentThread().sleep(3000);
+					}
+				}
+				if(!knowIfServerUp) {
+					pw.println("[NsSample] Exiting, since unable to connect to Derby Network Server.");
+					pw.println("[NsSample] Please try to increase the amount of time to keep trying to connect to the Server.");
+					System.exit(1);
+				}
+
+				pw.println("[NsSample] Derby Network Server started.");
+			}
+		/*End - network server started*/
+
+		pw.println("[NsSample] Sample Derby Network Server program demo starting. ");
+		pw.println("Please wait .....................");
+
+		// Load the JCC Driver
+		try	{
+			Class.forName(DB2_JDBC_UNIVERSAL_DRIVER).newInstance();
+		} catch (Exception e) {
+			pw.println("[NsSample] Unable to load JCC driver. Following exception was thrown");
+			e.printStackTrace();
+			System.exit(1);  //critical error, so exit
+		  }
+
+
+		// See Derby documentation for description of properties that may be set
+		//  in the context of the network server.
+		Properties properties = new java.util.Properties();
+
+		// The user and password properties are a must, required by JCC
+		properties.setProperty("user","cloud");
+		properties.setProperty("password","scape");
+
+		// Get database connection using the JCC client via DriverManager api
+		try	{
+			conn =  (com.ibm.db2.jcc.DB2Connection) DriverManager.getConnection(CS_NS_DBURL, properties);
+		} catch(Exception e) {
+			pw.println("[NsSample] Connection request unsuccessful, exception thrown was: ");
+			pw.println("[NsSample] Please check if all the jar files are in the classpath and the dbUrl is set correctly.");
+			e.printStackTrace();
+			System.exit(1);  //critical error, so exit
+		  }
+
+		NsSampleWork.checkAndCreateSchema(conn,pw); // Check and create the necessary schema if not already created
+		NsSampleWork.loadSchema(conn,NUM_ROWS,pw); // Insert rows into the table
+		conn.close();
+
+		// Start client threads to perform database related sql operations
+		NsSampleClientThread clientThreads[] = new NsSampleClientThread[NUM_CLIENT_THREADS];
+
+
+		/* Only the JVM that starts the Derby Network Server can obtain an embedded connection
+		   Please pay attention to the database URL
+		   Also, you need not load the org.apache.derby.jdbc.EmbeddedDriver since it is already loaded when
+		   the network server starts up.
+		   1. Derby embedded database url - jdbc:derby:databasename
+		*/
+		clientThreads[0] = new NsSampleClientThread(1,CS_EMBED_DBURL,properties,pw);
+		clientThreads[0].start();
+
+
+		/*
+		   2. The below client threads obtain a client connection to Derby Network Server
+		   One can also get a client connection from another JVM
+		   Please be aware of the database URL for obtaining a client connection
+		 */
+		for (int i=1; i<NUM_CLIENT_THREADS; i++) {
+			clientThreads[i] = new NsSampleClientThread(i+1,CS_NS_DBURL,properties,pw);
+			clientThreads[i].start();
+
+		}
+
+		// Wait for the client threads to complete all the work
+		for (int i = 0; i < NUM_CLIENT_THREADS; i++)
+		   clientThreads[i].join();
+
+		 // Shutdown Derby network server
+		 pw.println("[NsSample] Shutting down network server.");
+		 nwServer.shutdown();
+		 pw.println("[NsSample] End of Network server demo.");
+
+   	  } catch (Exception e) {
+		  e.printStackTrace();
+		}
+   	  finally
+   	  {
+		if(pw != null) pw.close();
+      }
+	 }
+}

Added: incubator/derby/code/trunk/java/demo/nserverdemo/NsSampleClientThread.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/NsSampleClientThread.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,478 @@
+/*
+ * (C) Copyright IBM Corp. 2003.
+ *
+ * The source code for this program is not published or otherwise divested
+ * of its trade secrets, irrespective of what has been deposited with the
+ * U.S. Copyright Office.
+ */
+
+package nserverdemo;
+
+import java.util.Properties;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+import java.io.IOException;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.io.PrintWriter;
+import java.util.Properties;
+import java.sql.PreparedStatement;
+import java.sql.Connection;
+import java.util.Random;
+import java.lang.Math;
+/**
+ * NsSampleClientThread thread to perform the NsSampleWork
+ */
+public class NsSampleClientThread extends Thread {
+
+	protected int thread_id;
+	protected Properties properties;
+	protected PrintWriter pw;
+	protected String dbUrl;
+
+  NsSampleClientThread(int id,String dbUrl, Properties properties,PrintWriter pw) {
+		this.thread_id=id;
+		this.dbUrl = dbUrl;
+		this.properties = properties;
+		this.pw = pw;
+	}
+
+   public void run() {
+	 System.out.println("[NsSampleClientThread] Thread id - "+this.thread_id + "; started.");
+	 NsSampleWork w = new NsSampleWork(this.thread_id,dbUrl,properties,pw);
+	 w.doWork();  // do all the NsSampleWork
+	 pw.println("[NsSampleClientThread] Thread id - "+this.thread_id+"; finished all tasks.");
+   }
+}
+
+
+
+/**
+ * NsSampleWork class represents all the work done in the sample demo program.
+ * It includes
+ * getting a connection to the database, creating and loading of schema,
+ * preparing and execution of SQL statements (insert, select, update, delete )
+ * <P>
+ * <I>IBM Corp. reserves the right to change, rename, or
+ * remove this interface at any time.</I>
+ */
+class NsSampleWork {
+
+	protected int thread_id;
+	protected String dbUrl;
+	protected Properties properties;
+	PrintWriter pw;
+	PreparedStatement select = null;
+	PreparedStatement insert = null;
+	PreparedStatement delete = null;
+	PreparedStatement update = null;
+	PreparedStatement getMaxKey = null;
+
+
+
+	public static int counter=0;
+	static Integer lock = new Integer(0);
+	 /**
+	  * dbUrl is the database url to connect to
+	  */
+	 NsSampleWork(int id, String dbURL,Properties properties,PrintWriter pw) {
+		this.thread_id = id;
+		this.dbUrl = dbURL;
+		this.pw = pw;
+		this.properties = properties;
+	 }
+
+
+	 /**
+	  *	gets a database connection
+	  * If the dbUrl is trying to connect to the Derby NetNsSampleWork server using JCC
+	  * then the jcc driver must be already loaded before calling this method,
+	  * else there will be an error
+	  * return jcc connection if no error, else null
+	  */
+	 public Connection getConnection(String dbUrl, Properties properties) {
+		 Connection conn = null;
+		 try {
+			pw.println("[NsSampleWork] Thread id - "+thread_id + "; requests database connection, dbUrl ="+dbUrl);
+			conn = DriverManager.getConnection(dbUrl, properties);
+		  } catch (Exception e) {
+			 System.out.println("[NsSampleWork] Thread id - "+ thread_id + "; failed to get database connection. Exception thrown:");
+			 e.printStackTrace();
+		    }
+		  return conn;
+	 }
+
+
+	 /**
+	  * set the connection to this isolation level
+	  */
+	 public void setIsolationLevel(Connection conn, int level) {
+		 try {
+			conn.setTransactionIsolation(level);
+		 } catch (Exception e) {
+			 pw.println("[NsSampleWork] Thread id - "+ thread_id +"; setIsolationLevel failed. Exception thrown: ");
+			 e.printStackTrace();
+		   }
+	 }
+
+
+	 /**
+	  * close connection
+	  */
+	 public void closeConnection(Connection conn) {
+		 try {
+			if(conn != null)
+			 	conn.close();
+			pw.println("[NsSampleWork] Thread id - "+thread_id + "; closed connection to the database.");
+		 } catch (Exception e) {
+			 pw.println("[NsSampleWork] Thread id - "+thread_id + "; error when closing connection;"+ e);
+			 e.printStackTrace();
+		   }
+	 }
+
+
+	 /**
+	  * prepare required sql statements
+	  */
+	 public void prepareStmts(Connection conn) {
+		 try {
+		 	select = conn.prepareStatement("select t_int,  t_char, t_float,t_key from SAMPLETBL where t_key = ?");
+		 	insert = conn.prepareStatement("insert into SAMPLETBL (t_int, t_char,t_float,t_key) values (?,?,?,?)");
+		 	update = conn.prepareStatement(" update SAMPLETBL set t_int = ? where t_key = ?");
+		 	delete = conn.prepareStatement("delete from SAMPLETBL where t_key = ?");
+		 	getMaxKey = conn.prepareStatement("select max(t_key) from SAMPLETBL");
+	 	} catch (Exception e) {
+			e.printStackTrace();
+		  }
+	 }
+
+
+	 /**
+	  * executing a select and retrieving the results
+	  * select the row with t_key value as 'selectWhat'
+	  */
+	 public int doSelectOperation(long selectWhat) {
+		 int numRowsSelected = 0;
+		 ResultSet rs = null;
+
+		 try {
+			 select.setLong(1,selectWhat);
+			 rs = select.executeQuery();
+
+			 while (rs.next()) {
+				 numRowsSelected++;
+
+				 int intVal = rs.getInt(1);
+				 String strVal = rs.getString(2);
+				 float floatVal = rs.getFloat(3);
+				 long longVal = rs.getLong(4); 	//t_key column
+
+				 pw.println("[NsSampleWork] Thread id - "+ thread_id +" selected "+numRowsSelected +" row ["+ intVal + ","
+				 			+ strVal +","+ floatVal +","+ longVal +"]");
+			 }
+		 } catch (Exception e) {
+			e.printStackTrace();
+		   } finally {
+			   try {
+			 	if(rs != null)
+					rs.close();
+			   } catch (Exception e) {
+				   e.printStackTrace();
+			     }
+		     }
+		 return numRowsSelected;
+	 }
+
+
+	 /**
+	  *  Opens a connection and executes DML (insert, select, update, delete) operations
+	  */
+	 public void doWork() {
+
+	   Connection conn = null;
+	   ResultSet rs = null;
+	   try {
+		 conn = getConnection(dbUrl,properties);
+
+		 if(conn == null)
+		 	throw new Exception("Failed to obtain connection!");
+
+		 conn.setAutoCommit(true);
+
+		 // Setting isolation level to read uncommitted, since this is a sample application.
+		 // Please set the isolation level depending on the requirements of your application
+		 setIsolationLevel(conn,Connection.TRANSACTION_READ_UNCOMMITTED);
+
+		 prepareStmts(conn);
+
+		 // Perform the DML operations
+		 for (int i=0; i<NsSample.ITERATIONS; i++) {
+			 // Choose between either a select or any one of (insert or update or delete ) operation
+			 int choice = (int) (Math.random() * 100) % 2;
+			 switch (choice) {
+				 case 0: { //select a row
+					rs = getMaxKey.executeQuery(); //gets max t_key value
+					long selectWhere = 0;
+					if(rs.next()) {
+						selectWhere = rs.getLong(1);
+					}
+					int numSelected = doSelectOperation(selectWhere);
+					break;
+				 }
+
+				 case 1: { //do an insert, update or delete
+					doIUDOperation();
+					break;
+				 }
+			 } //end of switch()
+		 }//enf of for()
+
+	   } catch(Exception e) {
+		   pw.println("[NsSampleWork] Thread id - "+ thread_id + "; error when performing dml operations; ");
+		   e.printStackTrace();
+	     } finally {
+		   	try {
+				if(rs != null)
+					rs.close();
+
+				closeConnection(conn);
+				cleanup();
+		    } catch(Exception ee) {
+			   pw.println("[NsSampleWork] Thread id - " + thread_id+"; error when cleaning up connection, resultset; exception is ");
+			   ee.printStackTrace();
+		      }
+	       }
+	 }//end of method doNsSampleWork()
+
+
+	/**
+	 * close resources
+	 */
+	public void cleanup() {
+	  try{
+		if(select != null)
+			select.close();
+		if(insert != null)
+			insert.close();
+		if(delete != null)
+			delete.close();
+		if(update != null)
+			update.close();
+		if(getMaxKey != null)
+			getMaxKey.close();
+  	  } catch (Exception e) {
+		  e.printStackTrace();
+	    }
+	}
+
+
+	 /**
+	  * Perform an insert or an update or delete operation
+	  */
+	 public void doIUDOperation() {
+		 int decide = (int) (Math.random() * 100) % 3;
+		 ResultSet rs = null;
+
+		 try {
+			switch (decide) {
+				 case 0: { //insert
+						int numInsert = insertRow(insert);
+						pw.println("[NsSampleWork] Thread id - "+thread_id+"; inserted "+numInsert+" row.");
+						break;
+				 }
+
+				 case 1: { //update
+						rs = getMaxKey.executeQuery();
+						long updateRow=0;
+						if(rs.next())
+							updateRow = rs.getLong(1);
+						int numUpdate = updateRow(update,updateRow);
+						System.out.println("[NsSampleWork] Thread id - "+thread_id+"; updated "+numUpdate+" row with t_key = " + updateRow);
+						break;
+				 }
+
+				 case 2: { //delete
+						rs = getMaxKey.executeQuery();
+						long deleteRow =0;
+						if(rs.next())
+							deleteRow = rs.getLong(1);
+						int numDelete = deleteRow(delete,deleteRow);
+						System.out.println("[NsSampleWork] Thread id - "+thread_id+"; deleted "+numDelete+" row with t_key = " + deleteRow);
+						break;
+				 }
+		 	}//end of switch()
+	 	} catch (Exception e) {
+			e.printStackTrace();
+		  } finally {
+			  try {
+			  	if(rs != null)
+				  rs.close();
+			  } catch (Exception e) {
+				  e.printStackTrace();
+			    }
+		    }
+	 }//end of method doIUDOperation()
+
+
+	 /**
+	  * Create necessary schema if schema not already created
+	  */
+	 public static void checkAndCreateSchema(com.ibm.db2.jcc.DB2Connection conn,PrintWriter pw) {
+		Statement stmt = null;
+		ResultSet rs = null;
+
+		try	{
+			conn.setAutoCommit(true);
+		} catch (SQLException  se) {
+			pw.println("[NsSampleWork] Error when setting autocommit on connection; exception thrown: ");
+			se.printStackTrace();
+		  }
+
+		// Check for existence of schema by quering the catalog systables
+		try {
+			stmt = conn.createStatement();
+			rs = stmt.executeQuery("select tablename from sys.systables " +
+								" where tablename = 'SAMPLETBL'");
+			if (rs.next()) {
+				pw.println("[NsSampleWork] Table 'SAMPLETBL' already exists; no need to create schema again.");
+				return;
+			}
+		} catch (SQLException  se) {
+			pw.println("[NsSampleWork] Unable to query the metadata for existence of table SAMPLETBL; exception is "+se);
+			pw.println("[NsSampleWork] Exiting the application.");
+			se.printStackTrace();
+			System.exit(1);
+		  }
+
+		// Create the necessary table and indexes
+		try {
+			pw.println("[NsSampleWork] Begin creating table - SAMPLETBL and necessary indexes. ");
+			stmt.execute("create table SAMPLETBL (" +
+						  "t_int int," +
+						  "t_char char(15),"+
+						  "t_float float," +
+						  "t_key bigint )");
+			stmt.execute("create index t_char_idx on SAMPLETBL ( t_char)");
+			stmt.execute("create index t_float_idx on SAMPLETBL ( t_float)");
+			stmt.execute("create index t_key_idx on SAMPLETBL ( t_key )" );
+		} catch (Exception  e) {
+			pw.println("[NsSampleWork] Error when creating schema; exception is " + e.toString());
+			pw.println("[NsSampleWork] Exiting the application.");
+			e.printStackTrace();
+			System.exit(1);
+		  } finally {
+			  try {
+			  	if(rs != null)
+				  rs.close();
+			  	if(stmt != null)
+				  stmt.close();
+			  } catch (Exception e) {
+				  e.printStackTrace();
+			    }
+			}
+	 }//end of method checkAndCreateSchema()
+
+
+	 /**
+	  * Loads schema , inserts 'rowsToInsert' number of rows into the table
+	  */
+	 public static void loadSchema(com.ibm.db2.jcc.DB2Connection conn,int rowsToInsert,PrintWriter pw)	 {
+		 int insertsRemaining = rowsToInsert;
+		 PreparedStatement ps=null;
+
+		 try {
+			ps = conn.prepareStatement("insert into SAMPLETBL (t_int, t_char,t_float,t_key) values (?,?,?,?)");
+			// Insert one row at a time
+			while (insertsRemaining-- >= 0)	{
+				 int numInserts = insertRow(ps);
+				 if (numInserts != 1)
+					pw.println("[NsSampleWork] Failed to insert row.");
+			 }
+		 } catch (Exception e) {
+			 pw.println("[NsSampleWork] Error when loading schema; exception is "+ e);
+			 e.printStackTrace();
+		   } finally {
+			  try {
+			   	if(ps != null)
+				  ps.close();
+			  } catch (Exception e) {
+				  e.printStackTrace();
+			    }
+		     }
+	 }//end of method loadSchema()
+
+
+
+	/**
+	 *	Generates random values and performs the inserts into the database
+	 */
+	public static int insertRow(PreparedStatement ps) {
+
+		int rowsAdded = 0;
+		try	{
+			// Generate random values for the datatypes in the sample table
+			Random rand = new Random();
+			int intVal = Math.abs(rand.nextInt()%1000);
+
+			String charVal = "Derby";
+
+			synchronized(lock) {
+				charVal += counter;
+				counter++;
+			}
+
+			// Set parameter values
+			ps.setInt(1, intVal);
+			ps.setString(2,charVal);
+			ps.setFloat(3, rand.nextFloat()*(float)Math.pow(10,Math.abs(rand.nextInt()%30)));
+			ps.setLong(4,rand.nextLong()%10000);
+			rowsAdded = ps.executeUpdate();
+			return rowsAdded;
+		} catch (Exception e) {
+			e.printStackTrace();
+			return 0;
+		  }
+	}
+
+
+	/**
+	 * update a row in the table
+	 * updateWhere	is the value of the t_key row which needs to be updated
+	 * return  number of rows updated
+	 */
+	public static int updateRow (PreparedStatement ps,long updateWhere) {
+		try	{
+		  int val=0;
+		  synchronized(lock) {
+			val = counter++;
+		  }
+		  ps.setInt(1,val);
+		  ps.setLong(2,updateWhere);
+		  return(ps.executeUpdate());
+		} catch (SQLException se) {
+			se.printStackTrace();
+			return 0;
+		  }
+	}
+
+
+	/**
+	 * Delete row from table
+	 * deleteRow is the value of the t_key of the row to be deleted
+	 * return number of rows deleted
+	 */
+	public static int deleteRow(PreparedStatement ps,long deleteRow) {
+		int rowsDeleted = 0;
+		try	{
+			ps.setLong(1, deleteRow);
+			rowsDeleted = ps.executeUpdate();
+			return rowsDeleted;
+		} catch(Exception e) {
+			e.printStackTrace();
+			return 0;
+		  }
+	}
+
+}//end of class NsSampleWork

Added: incubator/derby/code/trunk/java/demo/nserverdemo/SimpleNetworkClientSample.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/SimpleNetworkClientSample.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,241 @@
+/* 
+ * (C) Copyright IBM Corp. 2003.
+ *
+ * The source code for this program is not published or otherwise divested
+ * of its trade secrets, irrespective of what has been deposited with the
+ * U.S. Copyright Office.
+ */
+
+import java.sql.*;
+import javax.sql.DataSource;
+import java.util.Properties;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+/**
+ * The primary purpose of this program is to demonstrate how to obtain
+ * client connections using DriverManager or a DataSource
+ * and interact with Derby Network Server
+ *
+ * In particular,this sample program
+ * 1)   loads the DB2 Universal JDBC Driver
+ * 2)	obtains a client connection using the Driver Manager
+ * 3)	obtains a client connection using a DataSource
+ * 4)	tests the database connections by executing a sample query
+ * and then exits the program
+ *
+ * Before running this program, please make sure that Clouscape Network Server is up
+ * and running.
+ *  <P>
+ *  Usage: java SimpleNetworkClientSample
+ *
+ *  <P>
+ *  <I>IBM Corp. reserves the right to change, rename, or
+ * 	remove this interface at any time.</I>
+ *
+ */
+public class SimpleNetworkClientSample
+{
+
+	/*
+	 * The database is located in the same directory where this program is being
+	 * run. Alternately one can specify the absolute path of the database location
+	 */
+	private static String DBNAME="NSSimpleDB";
+
+	/**
+	 * Derby network server port ; default is 1527
+	 */
+	private static int NETWORKSERVER_PORT=1527;
+
+	/**
+	 * DB2 JDBC UNIVERSAL DRIVER class name
+	 */
+	private static final String DB2_JDBC_UNIVERSAL_DRIVER = "com.ibm.db2.jcc.DB2Driver";
+
+	/**
+	 * This URL is used to connect to Derby Network Server using the DriverManager.
+	 * Also, this url describes the target database for type 4 connectivity
+	 * Notice that the properties may be established via the URL syntax
+	 */
+	private static final String CS_NS_DBURL= "jdbc:derby:net://localhost:"+NETWORKSERVER_PORT+"/"+DBNAME+";retrieveMessagesFromServerOnGetMessage=true;deferPrepares=true;";
+
+
+	public static void main (String[] args)
+		throws Exception
+	{
+		DataSource clientDataSource = null;
+		Connection clientConn1 = null;
+		Connection clientConn2 = null;
+
+
+		try
+		{
+			System.out.println("Starting Sample client program ");
+
+			// load DB2 JDBC UNIVERSAL DRIVER to enable client connections to
+			// Derby Network Server
+			loadJCCDriver();
+
+			// get a client connection using DriverManager
+			clientConn1 = getClientDriverManagerConnection();
+			System.out.println("Got a client connection via the DriverManager.");
+
+			// create a datasource with the necessary information
+			javax.sql.DataSource myDataSource = getClientDataSource(DBNAME, null, null);
+
+			// get a client connection using DataSource
+			clientConn2 = getClientDataSourceConn(myDataSource);
+			System.out.println("Got a client connection via a DataSource.");
+
+			// test connections by doing some work
+			System.out.println("Testing the connection obtained via DriverManager by executing a sample query ");
+			test(clientConn1);
+			System.out.println("Testing the connection obtained via a DataSource by executing a sample query ");
+			test(clientConn2);
+
+			System.out.println("Goodbye!");
+		}
+		catch (SQLException sqle)
+		{
+			System.out.println("Failure making connection: " + sqle);
+			sqle.printStackTrace();
+		}
+		finally
+		{
+
+			if(clientConn1 != null)
+				clientConn1.close();
+			if(clientConn2 != null)
+				clientConn2.close();
+		}
+	}
+
+	/**
+	 * Get a database connection from DataSource
+	 * @pre Derby Network Server is started
+	 * @param	ds	data source
+	 * @return	returns database connection
+	 * @throws Exception if there is any error
+	 */
+	public static Connection getClientDataSourceConn(javax.sql.DataSource ds)
+		throws Exception
+	{
+		Connection conn = ds.getConnection("usr2", "pass2");
+		System.out.print("connection from datasource; getDriverName = ");
+		System.out.println(conn.getMetaData().getDriverName());
+		return conn;
+	}
+
+	/**
+	 * Creates a client data source and sets all the necessary properties in order to
+	 * connect to Derby Network Server
+	 * The server is assumed to be running on 1527 and on the localhost
+	 * @param	database	database name; can include Derby URL attributes
+	 * @param	user		database user
+	 * @param	password
+	 * @return	returns DataSource
+	 * @throws Exception if there is any error
+	 */
+	public static javax.sql.DataSource getClientDataSource(String database, String user, String
+									  password) throws SQLException
+	{
+
+		com.ibm.db2.jcc.DB2SimpleDataSource ds = new com.ibm.db2.jcc.DB2SimpleDataSource();
+
+		// can also include Derby URL attributes along with the database name
+		ds.setDatabaseName(database);
+
+		if (user != null)
+			ds.setUser(user);
+		if (password != null)
+			ds.setPassword(password);
+
+		// host on which network server is running
+		ds.setServerName("localhost");
+
+		// port on which Network Server is listening
+		ds.setPortNumber(1527);
+
+		// driver type must be 4 to access Derby Network Server
+		ds.setDriverType(4);
+
+		return ds;
+
+	}
+
+
+	/**
+	 * Load DB2 JDBC UNIVERSAL DRIVER
+	 */
+	public static void loadJCCDriver()
+		throws Exception
+	{
+		// Load the JCC Driver
+		Class.forName(DB2_JDBC_UNIVERSAL_DRIVER).newInstance();
+	}
+
+	/**
+	 * Get a client connection using the DriverManager
+	 * @pre DB2 JDBC Universal driver must have been loaded before calling this method
+	 * @return Connection	client database connection
+	 */
+	public static Connection getClientDriverManagerConnection()
+		throws Exception
+	{
+
+		// See Derby documentation for description of properties that may be set
+		//  in the context of the network server.
+		Properties properties = new java.util.Properties();
+
+		// The user and password properties are a must, required by JCC
+		properties.setProperty("user","cloud");
+		properties.setProperty("password","scape");
+
+		// Get database connection using the JCC client via DriverManager api
+		Connection conn =  (com.ibm.db2.jcc.DB2Connection) DriverManager.getConnection(CS_NS_DBURL, properties);
+
+		return conn;
+	}
+
+
+	/**
+	 * Test a connection by executing a sample query
+	 * @param	conn 	database connection
+	 * @throws Exception if there is any error
+	 */
+	public static void test(Connection conn)
+		throws Exception
+	{
+
+	  Statement stmt = null;
+	  ResultSet rs = null;
+	  try
+	  {
+		// To test our connection, we will try to do a select from the system catalog tables
+		stmt = conn.createStatement();
+		rs = stmt.executeQuery("select count(*) from sys.systables");
+		while(rs.next())
+			System.out.println("number of rows in sys.systables = "+ rs.getInt(1));
+
+	  }
+	  catch(SQLException sqle)
+	  {
+		  System.out.println("SQLException when querying on the database connection; "+ sqle);
+		  throw sqle;
+  	  }
+  	  finally
+  	  {
+		  if(rs != null)
+		  	rs.close();
+		  if(stmt != null)
+		  	stmt.close();
+ 	  }
+	}
+}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/demo/nserverdemo/SimpleNetworkServerSample.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/SimpleNetworkServerSample.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,316 @@
+/* 
+ * (C) Copyright IBM Corp. 2003, 2004.
+ *
+ * The source code for this program is not published or otherwise divested
+ * of its trade secrets, irrespective of what has been deposited with the
+ * U.S. Copyright Office.
+ */
+
+import java.sql.*;
+import javax.sql.DataSource;
+import org.apache.derby.drda.NetworkServerControl;
+import java.util.Properties;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+/**
+ * In order for a database to be consistent, only one JVM is allowed
+ * to access it at a time. The embedded driver is loaded when the Network Server
+ * is started. Hence, the JVM that starts the Network Server can get an
+ * embedded connection to the same database that Network Server is accessing
+ * to serve the clients from other JVMs. This solution allows you to take
+ * advantage of the performance benefits of embedded driver as well as allow
+ * for client connections from other JVMs to connect to the same database.
+ *
+ *
+ * In particular,this sample program
+ * 1) 	starts the Derby Network Server using a property and
+ *		also loads the embedded driver
+ * 2)	checks if the Derby Network Server is up and running
+ * 3)	creates the database 'NSSimpleDB' if not already created
+ * 4)	obtains an embedded database connection
+ * 5)	tests the database connection by executing a sample query
+ * 6)	allows for client connections to connect to the server until
+ *      the user decides to stop the server and exit the program
+ * 7)	closes the connections
+ * 8)	shuts down the Derby Network Server before exiting the program.
+ *
+ * Note, on running this program, there will be a NSSimpleDB database directory
+ * created if not present already and there will be a derby.log file which
+ * contains messages from Derby
+ *
+ *  <P>
+ *  Usage: java SimpleNetworkServerSample
+ *
+ *  <P>
+ *  <I>IBM Corp. reserves the right to change, rename, or
+ * 	remove this interface at any time.</I>
+ *
+ */
+public class SimpleNetworkServerSample
+{
+
+	/*
+	 * The database is located in the same directory where this program is being
+	 * run. Alternately one can specify the absolute path of the database location
+	 */
+	private static String DBNAME="NSSimpleDB";
+
+
+	public static void main (String[] args)
+		throws Exception
+	{
+		Connection embeddedConn = null;
+
+		try
+		{
+			startNetworkServer();
+
+			/*
+			  Can now spawn threads to do many wonderous things with
+			  embedded connections but allow others to connect via
+			  Network Server. But for sample purposes, an embedded connection
+			  will be obtained and a sample query executed before waiting for
+			  the user to give input to shutdown the server.
+			*/
+
+		}
+		catch (Exception e)
+		{
+			System.out.println("Failed to start NetworkServer: " + e);
+			System.exit(1);
+		}
+
+		try
+		{
+			// get an embedded connection
+			// Since Network Server was started in this jvm,  this JVM can get an embedded
+			// connection to the same database that Network Server
+			// is accessing to serve clients from other JVM's.
+			// The embedded connection will be faster than going across the
+			// network
+			embeddedConn = getEmbeddedConnection(DBNAME,"create=true;");
+			System.out.println("Got an embedded connection.");
+
+
+			System.out.println("Testing embedded connection by executing a sample query ");
+			// test connections by doing some work
+			test(embeddedConn);
+
+			// print how to connect to the network server using ij
+			String howToConnect = ijUsage();
+			System.out.println(howToConnect);
+
+			waitForExit();
+
+		}
+		catch (SQLException sqle)
+		{
+			System.out.println("Failure making connection: " + sqle);
+			sqle.printStackTrace();
+		}
+		finally
+		{
+
+			if(embeddedConn != null)
+				embeddedConn.close();
+			try
+			{
+				// shutdown Derby Network Server
+				DriverManager.getConnection("jdbc:derby:;shutdown=true");
+			}
+			catch(SQLException se)
+			{
+				//ignore se
+			}
+
+		}
+
+	}
+
+	/**
+	 *  Setting the derby.drda.startNetworkServer property to true,
+	 *  either in the System properties as we do here or in
+	 *  the derby.properties file will cause Network Server to
+	 *  start as soon as Derby is loaded.
+	 *
+	 *  To load Derby we just need to load the embedded
+	 *  Driver with:
+	 *  Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
+	 *
+	 *  Then we will test for a while and make sure it is up, before
+	 *  we give up.
+  	 *
+	 *  Alternately Network Server might be started from the command
+	 *  line or from some other program. Note: only the JVM that starts
+	 *  Network Server can make an embedded connection.
+	 */
+
+	public static void startNetworkServer() throws Exception
+	{
+		// Start network server using the property
+		// and then wait for the server to start by testing a connection
+		startWithProperty();
+		waitForStart();
+	}
+
+	/**
+	 * Start Derby Network Server using the property
+	 * derby.drda.startNetworkServer. This property can be set as a system property or
+	 * or by setting in derby.properties file.
+	 * Setting this property to true , starts the Network Server when
+	 * Derby boots up.
+	 * The port at which the Derby Network Server listens to can be changed
+	 * by setting the derby.drda.portNumber property. By default, the server starts
+	 * at port 1527
+	 * Server output goes to derby.log
+	 */
+
+	private static void startWithProperty() throws Exception
+	{
+		System.out.println("Starting Network Server");
+		System.setProperty("derby.drda.startNetworkServer","true");
+
+		// Booting derby
+		Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
+	}
+
+
+
+	/**
+	 * Tries to check if the Network Server is up and running by calling ping
+	 * If successful, then it returns else tries for 50 seconds before giving up and throwing
+	 * an exception.
+	 * @throws Exception when there is a problem with testing if the Network Server is up
+	 * and running
+	 */
+	private static void waitForStart() throws Exception
+	{
+
+		// Server instance for testing connection
+		org.apache.derby.drda.NetworkServerControl server = null;
+
+		// Use NetworkServerControl.ping() to wait for
+		// NetworkServer to come up.  We could have used
+		// NetworkServerControl to start the server but the property is
+		// easier.
+		server = new NetworkServerControl();
+
+		System.out.println("Testing if Network Server is up and running!");
+		for (int i = 0; i < 10 ; i ++)
+		{
+			try {
+
+				Thread.currentThread().sleep(5000);
+				server.ping();
+			}
+			catch (Exception e)
+			{
+				System.out.println("Try #" + i + " " +e.toString());
+				if (i == 9 )
+				{
+					System.out.println("Giving up trying to connect to Network Server!");
+					throw e;
+				}
+			}
+		}
+		System.out.println("Derby Network Server now running");
+
+	}
+
+	/**
+	 * Used to return an embedded Derby connection
+	 * The protocol used is "jdbc:derby:dbName" where dbName is the database name
+	 * @pre the derby embedded jdbc driver must be loaded before calling this method
+	 * Alternately, if the derby network server is started in this jvm, then the embedded driver
+	 * org.apache.derby.jdbc.EmbeddedDriver is already loaded and it need not be loaded again.
+	 * @param	dbName	database name (ie location of the database)
+	 * @param 	attributes attributes for the database connection
+	 *			example, create=true;
+	 *					 upgrade=true;
+	 * @return	returns embedded database connection
+	 * @throws Exception if there is any error
+	 */
+	public static Connection getEmbeddedConnection(String database,String attributes)
+		throws Exception
+	{
+		String dbUrl = "jdbc:derby:"+database +";"+attributes;
+		Connection conn = DriverManager.getConnection(dbUrl);
+		return conn;
+	}
+
+
+
+	/**
+	 * Test a connection by executing a sample query
+	 * @param	conn 	database connection
+	 * @throws Exception if there is any error
+	 */
+	public static void test(Connection conn)
+		throws Exception
+	{
+
+	  Statement stmt = null;
+	  ResultSet rs = null;
+	  try
+	  {
+		// To test our connection, we will try to do a select from the system catalog tables
+		stmt = conn.createStatement();
+		rs = stmt.executeQuery("select count(*) from sys.systables");
+		while(rs.next())
+			System.out.println("number of rows in sys.systables = "+ rs.getInt(1));
+
+	  }
+	  catch(SQLException sqle)
+	  {
+		  System.out.println("SQLException when querying on the database connection; "+ sqle);
+		  throw sqle;
+  	  }
+  	  finally
+  	  {
+		  if(rs != null)
+		  	rs.close();
+		  if(stmt != null)
+		  	stmt.close();
+ 	  }
+
+	}
+
+
+	/**
+	 * This method waits until the user hits enter to stop the server
+	 * and eventually exit this program
+	 * Allows clients to continue to connect using client connections from other
+	 * jvms to Derby Network Server that was started in this program
+	 */
+ 	private static void waitForExit() throws Exception
+ 	{
+		System.out.println("Clients can continue to connect: ");
+ 		BufferedReader in =
+ 			new BufferedReader(new InputStreamReader(System.in));
+ 		System.out.println("Press [Enter] to stop Server");
+ 		in.readLine();
+	}
+
+	/**
+	 * Returns a string with information as to how to connect to Derby Network Server
+	 */
+	private static String ijUsage()
+	{
+
+		String ijUsage = "\nWhile my app is busy with embedded work, ";
+		ijUsage += "ij might connect like this:\n\n";
+		ijUsage +=  "\t$ java -Dij.user=me -Dij.password=pw -Dij.protocol=jdbc:derby:net://localhost:1527/ org.apache.derby.tools.ij\n";
+		ijUsage += "\tij> connect '" + DBNAME + ":retrieveMessagesFromServerOnGetMessage=true;';\n";
+		ijUsage += "Watch that punctuation.  Put a ':' before the jcc\n";
+		ijUsage += "attributes and a ';' after each one (even the last).\n\n";
+
+		return ijUsage;
+	}
+}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/demo/nserverdemo/nserverdemo.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/nserverdemo.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+<TITLE>Cloudscape Network Server sample program</TITLE>
+<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H2><A name=Top_Of_Page></A><A name=nsrun></A><A name=nssample></A>Cloudscape 
+Network Server sample program</H2>
+<P>The Network Server sample demo program (NsSample) is a simple JDBC application that 
+interacts with the Cloudscape Network Server. The program:</P>
+<UL>
+  <LI>starts the Cloudscape Network Server 
+  <LI>checks if the Cloudscape Network Server is running 
+  <LI>loads the DB2 JDBC Universal Driver 
+  <LI>creates the database '<tt>NsSampledb</tt>' if not already created 
+  <LI>checks to see if the schema is already created, and if not, 
+  creates the schema which includes the <tt>SAMPLETBL</tt> table and corresponding 
+  indexes. 
+  <LI>connects to the database 
+  <LI>loads the schema by inserting data 
+  <LI>starts client threads to perform database related operations 
+  <LI>has each of the clients perform DML operations (select, insert, delete, update) 
+  using JDBC calls, in particular one client opens an embedded connection to 
+  perform database operations while the other client opens a client connection 
+  to the Cloudscape Network Server to perform database operations. 
+  <LI>waits for the client threads to finish the tasks 
+  <LI>shuts down the Cloudscape Network Server at the end of the demo </LI></UL>
+<P>The following files should be installed in the <SPAN 
+class=italic>%CLOUDSCAPE_INSTALL%</SPAN><TT>\demo\programs\nserverdemo\</TT> directory in 
+order to run the sample program:</P>
+<UL>
+  <LI><TT>NsSample.java</tt><br>
+This is the entry point into the demo application. The program starts up two clients. One client opens an embedded 
+connection to perform database operations while the other client opens a client 
+connection to the Cloudscape Network Server to perform database operations.  This program provides the following constants that 
+can be changed to modify the sample demo:
+<UL>
+
+    <LI><tt>NUM_ROWS</tt> - The number of rows that must be initially loaded into the schema.</li>
+    <LI><tt>ITERATIONS</tt> - The number of iterations for which each client thread does database related work.</LI>
+<LI><tt>NUM_CLIENT_THREADS</tt> - The number of clients that you want to run the program against.</li> 
+    <LI><tt>NETWORKSERVER_PORT</tt> - The port on which the network server is running.</LI>
+</UL>
+
+You can also modify the program to exclude starting the Network Server as part of the sample program. 
+Make sure to recompile the java files before running the program if you make any 
+changes to the source code.
+
+</li>
+
+<li><tt>NsSampleClientThread.java</tt></br>
+This file contains two Java classes:
+  <UL>
+    <LI>The <tt>NsSampleClientThread</tt> class extends Thread and does all the 
+necessary work by instantiating a <tt>NsSampleWork</tt> instance.</li>
+    <LI>The <tt>NsSampleWork</tt> class contains everything required to perform 
+DML operations using JDBC calls. The <tt>doWork</tt> method in 
+the <tt>NsSampleWork</tt> class represents all the work done as 
+part of this sample program.</LI>
+</UL>
+</li>
+  <LI><tt>NetworkServerUtil.java</tt><br>
+This file contains helper methods to start the Cloudscape Network Server and to shutdown the server.
+</li>
+  <LI>Compiled class files:
+<UL>
+    <LI><tt>NsSample.class</tt></li> 
+    <LI><tt>NsSampleClientThread.class</tt></li> 
+    <LI><tt>NsSampleWork.class</tt></li> 
+    <LI><tt>NetworkServerUtil.class</tt></li> 
+</UL>
+</li>
+</ul>
+
+
+<H2>Running the Network Server demo program</H2>
+<P>To run the Cloudscape Network Server demonstration program:</P>
+<OL>
+  <LI>Open a command prompt and change directories to the <SPAN 
+  class=italic>%CLOUDSCAPE_INSTALL%</SPAN><tt>\demo\programs\</tt> directory, where <SPAN 
+  class=italic>%CLOUDSCAPE_INSTALL%</SPAN> is the directory where you installed Cloudscape. 
+  <LI>Set the CLASSPATH to the current directory (".") and also include the following 
+  jar files in order to use the Cloudscape Network Server and the DB2 JDBC Universal Driver.
+<ul>
+<li><tt>derbynet.jar</tt><br>The Network Server jar file. It must be in your CLASSPATH to use any of the Cloudscape Network 
+Server functions.</li>
+<li><tt>db2jcc.jar</tt><br>This jar file must be in your CLASSPATH to use the 
+DB2 JDBC Universal Driver.</li>
+<li><tt>db2jcc_license_c.jar</tt><br>This jar file is the license file for the Universal 
+Driver.</li>
+<li><tt>derby.jar</tt><br>The Cloudscape database engine jar file.</li>
+</ul>
+</LI>
+<li>Test the CLASSPATH settings by running the following java command:<pre>java org.apache.derby.tools.sysinfo</pre>This command will show the Cloudscape jar files that are in the CLASSPATH as well as 
+the DB2 JDBC Universal Driver along with their respective versions.</li>
+<li>Once you have set up your environment correctly, execute the application from the <br> <SPAN 
+  class=italic>%CLOUDSCAPE_INSTALL%</SPAN><tt>\demo\programs\</tt> directory:<br>
+<pre>java nserverdemo.NsSample</pre>
+</li>
+</OL>
+You should receive output similar to the following if the 
+program runs successfully:<br><br>
+
+<tt>Derby Network Server created<br>
+[NsSample] Unable to obtain a connection to network server, trying again after 3000 ms.<br>
+Server is ready to accept connections on port 1621.<br>
+Connection number: 1.<br>
+[NsSample] Derby Network Server started.<br>
+[NsSample] Sample Derby Network Server program demo starting. <br>
+Please wait .....................<br>
+Connection number: 2.<br>
+[NsSampleWork] Table 'SAMPLETBL' already exists; no need to create schema again.<br>
+[NsSampleClientThread] Thread id - 1; started.<br>
+[NsSampleWork] Thread id - 1; requests database connection, dbUrl =jdbc:derby:NSSampledb;<br>
+[NsSampleClientThread] Thread id - 2; started.<br>
+[NsSampleWork] Thread id - 2; requests database connection, dbUrl <br>=jdbc:derby:net://localhost:1621/NSSampledb;create=true:retrieveMessagesFromServerOnGetMessage=true;deferPrepares=true;<br>
+Connection number: 3.<br>
+[NsSampleWork] Thread id - 1 selected 1 row [61,Derby28        ,3.20918E21,9854]<br>
+[NsSampleWork] Thread id - 1; inserted 1 row.<br>
+[NsSampleWork] Thread id - 1; deleted 1 row with t_key = 9854<br>
+[NsSampleWork] Thread id - 1; inserted 1 row.<br>
+[NsSampleWork] Thread id - 1; deleted 1 row with t_key = 9818<br>
+[NsSampleWork] Thread id - 2; deleted 0 row with t_key = 9854<br>
+[NsSampleWork] Thread id - 1; updated 1 row with t_key = 9481<br>
+[NsSampleWork] Thread id - 1; updated 1 row with t_key = 9481<br>
+[NsSampleWork] Thread id - 1; updated 0 row with t_key = 9481<br>
+[NsSampleWork] Thread id - 2; deleted 1 row with t_key = 9481<br>
+[NsSampleWork] Thread id - 1; inserted 1 row.<br>
+[NsSampleWork] Thread id - 1; updated 1 row with t_key = 9150<br>
+[NsSampleWork] Thread id - 1; closed connection to the database.<br>
+[NsSampleClientThread] Thread id - 1; finished all tasks.<br>
+[NsSampleWork] Thread id - 2 selected 1 row [57,Derby18        ,7.873628,9150]<br>
+[NsSampleWork] Thread id - 2; updated 1 row with t_key = 9150<br>
+[NsSampleWork] Thread id - 2 selected 1 row [58,Derby18        ,7.873628,9150]<br>
+[NsSampleWork] Thread id - 2; inserted 1 row.<br>
+[NsSampleWork] Thread id - 2 selected 1 row [58,Derby18        ,7.873628,9150]<br>
+[NsSampleWork] Thread id - 2; inserted 1 row.<br>
+[NsSampleWork] Thread id - 2; updated 1 row with t_key = 9150<br>
+[NsSampleWork] Thread id - 2 selected 1 row [61,Derby18        ,7.873628,9150]<br>
+[NsSampleWork] Thread id - 2; closed connection to the database.<br>
+[NsSampleClientThread] Thread id - 2; finished all tasks.<br>
+[NsSample] Shutting down network server.<br>
+Connection number: 4.<br>
+Shutdown successful.<br>
+[NsSample] End of Network server demo.</tt>
+
+<P>Running the demo program will also create new directories and files:</P>
+<UL>
+  <LI><A name=Bot_Of_Page></A><tt>NSSampledb</tt><br>This directory makes up the 
+NSSampledb database.</li>
+  <LI><tt>derby.log</tt><br>This log file contains Cloudscape progress and error messages.</li>
+</ul>
+
+
+</BODY>
+</HTML>

Added: incubator/derby/code/trunk/java/demo/nserverdemo/readme.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/readme.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<TITLE>Example Programs</TITLE>
+<link rel="stylesheet" type="text/css" href="../csfull.css" title="sample">
+</HEAD>
+<BODY>
+
+<H1>Overview</H1>
+<p>The following example scenarios show you how to obtain an <em class="Emphasis">embedded connection</em> and <em class="Emphasis">client connections</em> using the Network Server to connect to the same database.</p>
+
+<p>An embedded connection is a connection to a database that is booted in the same JVM as the application. This connection can be obtained after the Cloudscape Embedded driver is booted. The URL prefix is jdbc:derby:</p>
+
+<p>Client applications that require a database connection across the network use the network server protocol (DRDA) to connect to the Network Server. This type of connection is referred to as a client connection. The URL prefix is jdbc:derby:net:</p>
+<UL>
+</LI>
+<LI><p class="BodyRelative">First scenario: <A href="simpleserversample.html">Simple Network Server Sample</A></p>
+	<p class="BodyRelative">This example uses two programs to illustrate how a typical client program that starts up in its own JVM can connect to the Network Server that the server program starts. The client program (SimpleNetworkClientSample) and the server program (SimpleNetworkServerSample) each run in their own (different) JVMs. The example shows the Cloudscape jar files that are needed at the client side and server side to use the Network Server. The SimpleNetworkClientSample program also shows how to use the DriverManger or a DataSource to obtain client connections.</p></LI></LI>
+</LI>
+<LI><p class="BodyRelative">Second scenario: <A href="nserverdemo.html">Network Server Demo </A></p>
+	<p class="BodyRelative">This example program (NsSample) starts the network server and shows how to obtain client and embedded connections using the Network Server to connect to the same database, all in one JVM.</p></LI></LI>
+</LI>
+</UL>
+
+</BODY>
+</HTML>

Added: incubator/derby/code/trunk/java/demo/nserverdemo/simpleserversample.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/nserverdemo/simpleserversample.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,153 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Cloudscape Network Server Simple sample program</title>
+</head>
+
+<body>
+
+<h2>Simple Cloudscape Network Server Example</h2>
+
+<h2>Overview</h2>
+
+<p>The primary purpose of this example is to demonstrate how to obtain an embedded
+connection and client connections using the Network Server to the same
+database. This program shows how to use either the DriverManager or a
+DataSource to obtain client connections. </p>
+
+<p>In order for a database to be consistent, only one JVM is allowed to access
+it at a time. The embedded driver is loaded when the Network Server is started.
+Hence, the JVM that starts the Network Server can get an embedded connection to
+the same database that Network Server is accessing to serve the clients from
+other JVMs. This solution allows you to take advantage of the performance
+benefits of the embedded driver as well as allow for client connections from other
+JVMs to connect to the same database.</p>
+
+<p>In this example, the following two programs show how to setup the server and
+client programs when interacting with the Network Server.</p>
+
+<p>SimpleNetworkServerSample.java:
+This program starts the Cloudscape Network Server as well as the embedded
+driver and waits for clients to connect.</p>
+
+<p>SimpleNetworkClientSample.java:
+This is the client program that interacts with the Cloudscape Network Server
+from another JVM.</p>
+
+<h3>SimpleNetworkServerSample program</h3>
+
+<p>In particular, this program:</p>
+
+<ul>
+ <li>starts the Cloudscape Network Server using a property and also loads the embedded driver</li>
+ <li>checks if the Cloudscape Network Server is up and running</li>
+ <li>creates the database 'NSSimpleDB' if not already created </li>
+ <li>obtains an embedded database connection</li>
+ <li>tests the database connection by executing a sample query</li>
+ <li>allows for client connections to connect to the server until the user decides to stop the server and exit the program</li>
+ <li>closes the connection</li>
+ <li>shuts down the Cloudscape
+     Network Server before exiting the program.</li>
+</ul>
+
+<p>The following files should be installed in the <font style=italic>%CLOUDSCAPE_INSTALL%</font><tt><span>\demo\programs\nserverdemo\</span></tt> directory in
+order to run this sample program:</p>
+
+<ul>
+ <li> Source file:</li>
+ <ul>
+  <li><tt>SimpleNetworkServerSample.java</tt></li>
+ </ul>
+ <li>Compiled class file:</li>
+ <ul>
+  <li><tt>SimpleNetworkServerSample.class</tt></li>
+ </ul>
+</ul>
+
+<h2>How to run the SimpleNetworkServerSample program</h2>
+
+<p>To run this simple Cloudscape Network Server sample program:</p>
+
+<ol>
+ <li>Open a command prompt and change directories to the <span class=italic>%CLOUDSCAPE_INSTALL%</span>\demo\programs\nserverdemo
+     directory, where <span class=italic>%CLOUDSCAPE_INSTALL%</span> is the directory
+     where you installed Cloudscape.</li>
+ <li>Set the CLASSPATH to include the following jar files in order to run this
+     program.</li>
+<ul><li>the current directory (".")</li>
+<li><tt>derbynet.jar</tt>: <BR>The Network Server jar file. It must be in your CLASSPATH since we start the Network Server in this program.</li>
+<li><tt>derby.jar</tt>: <BR>The Cloudscape database engine jar file.</li>
+</ul>
+
+<li>Test the CLASSPATH settings by running the following java command:
+
+<pre>java org.apache.derby.tools.sysinfo</pre>
+
+<p>This command will show the Cloudscape jar files that are in the CLASSPATH. </p></li>
+
+<li>Once you have set up your environment correctly, execute the application from the <br><span class=italic>%CLOUDSCAPE_INSTALL%</span>\demo\programs\nserverdemo directory:
+
+<pre>java SimpleNetworkServerSample</pre>
+</li></ol>
+<p>You should receive output similar to the following if the program runs successfully:</p>
+<tt>Starting Network Server<br>Testing if Network Server is up and running!<br>Derby Network Server now running<br><span>Got an embedded connection.</span><br>Testing embedded connection by executing a sample query<br><span>number</span> of rows in <span>sys.systables</span> = 16<br><br>While my app is busy with embedded work, <span>ij</span> might connect like this:<br><br><span>  </span>$ <span>java</span> -<span>Dij.user</span>=me -<span>Dij.password</span>=<span>pw</span> -<span>Dij.protocol</span>=jdbc:derby:net://localhost:1527/ <span>org.apache.derby.tools.ij</span><br><span>     </span><span><span >ij</span></span>&gt; connect '<span>NSSimpleDB:retrieveMessagesFromServerOnGetMessage</span>=true;';<br>Watch that punctuation. Put a ':' before the <span>jcc</span><br><span >attributes</span> and a ';' after each one (even the last).<br><br><br>Clients can continue to connect:<br>Press [Enter] to stop Server</tt>
+
+<p>Running this program will also create new directories and files:</p>
+
+<ul>
+ <li><span>NSSimpleDB</span><br>
+This directory makes up the <span>NSSimpleDB</span> database.
+</li>
+<li><tt>derby.log</tt><br>
+This log file contains Cloudscape progress and error messages.
+</li></ul>
+
+
+<h2>Example of a Client connecting to the Network Server</h2>
+
+<h3>SimpleNetworkClientSample program</h3>
+
+<p>This program:</p>
+
+<ul>
+ <li>loads the DB2 JDBC Universal Driver</li>
+ <li>obtains a client connection using the Driver Manager</li>
+ <li>obtains a client connection using a DataSource</li>
+ <li>tests the database connections by executing a sample query</li>
+ <li>closes the connections and then exits the program.</li>
+</ul>
+
+<p>The following files should be installed in the <span class=italic>%CLOUDSCAPE_INSTALL%</span><tt>\demo\programs\nserverdemo\</tt> directory in order to run this sample program:</p>
+<ul>
+ <li>Source file: <br><tt>SimpleNetworkClientSample.java</tt></li>
+ <li>Compiled class file: <br><tt>SimpleNetworkClientSample.class</tt></li>
+</ul>
+
+<h2>How to run the SimpleNetworkClientSample program</h2>
+
+<p>To connect to the Network Server that has been started as part of the SimpleNetworkServerSample program:</p>
+
+<ol>
+ <li>Open a command prompt and change directories to the <span class=italic>%CLOUDSCAPE_INSTALL%</span><tt>\demo\programs\nserverdemo</tt> directory, where <span class=italic>%CLOUDSCAPE_INSTALL%</span> is the directory where you installed Cloudscape.</li>
+ <li>Clients of Cloudscape Network Server only need the following jar files in the CLASSPATH in order to connect to the Network Server.<span>  </span>Set the CLASSPATH to include the following jar files:
+ <ul>
+  <li>the current directory (".")</li>
+  <li><tt>db2jcc.jar</tt><br>This jar file must be in your CLASSPATH to use the DB2 JDBC Universal Driver.</li>
+  <li><tt>db2jcc_license_c.jar</tt><br>This jar file is the license file for the Universal Driver for Cloudscape.</li>
+ </ul></li>
+<li>Once you have set up your environment correctly, execute the
+application from the <br><span class=italic>%CLOUDSCAPE_INSTALL%</span><tt>\demo\programs\nserverdemo\</tt> directory:
+<pre><tt>java SimpleNetworkClientSample</tt></pre>
+</li>
+</ol>
+
+<p>You should receive output similar to the following if the program runs
+successfully:</p>
+
+<tt>Starting Sample client program<br><span>Got a client connection via the <span>DriverManager</span>.</span><br><span>connection</span> from <span>datasource</span>; <span>getDriverName</span> = IBM DB2 JDBC Universal Driver Architecture<br><span>Got a client connection via a <span>DataSource</span>.</span><br>Testing the connection obtained via <span>DriverManager</span> by executing a sample query<br><span>number</span> of rows in <span>sys.systables</span> = 16<br>Testing the connection obtained via a <span>DataSource</span> by executing a sample query<br><span>number</span> of rows in <span>sys.systables</span> = 16<br>Goodbye!</tt>
+
+</body>
+
+</html>

Added: incubator/derby/code/trunk/java/demo/readme.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/readme.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+<frameset cols="170, *">
+    <frame src="navbar.html" name="navbar" scrolling="Auto" noresize>	   
+    <frame src="demo.html" name="mainPage" scrolling="Auto">
+</frameset>
+<body>
+
+
+
+</body>
+</html>

Added: incubator/derby/code/trunk/java/demo/simple/SimpleApp.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/simple/SimpleApp.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,232 @@
+import java.sql.Connection;
+
+/*
+ * (C) Copyright IBM Corp. 2001, 2004.
+ *
+ * The source code for this program is not published or otherwise divested
+ * of its trade secrets, irrespective of what has been deposited with the
+ * U.S. Copyright Office.
+ */
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import java.util.Properties;
+
+
+/**
+ * This sample program is a minimal JDBC application showing
+ * JDBC access to Derby.
+ *
+ * Instructions for how to run this program are
+ * given in <A HREF=example.html>example.html</A>.
+ *
+ * Derby applications can run against Derby running in an embedded
+ * or a client/server framework. When Derby runs in an embedded framework,
+ * the Derby application and Derby run in the same JVM. The application
+ * starts up the Derby engine. When Derby runs in a client/server framework,
+ * the application runs in a different JVM from Derby. The application only needs
+ * to start the client driver, and the connectivity framework provides network connections.
+ * (The server must already be running.)
+ *
+ * <p>When you run this application, give one of the following arguments:
+ *    * embedded (default, if none specified)
+ *    * jccjdbcclient (if Derby is running embedded in the JCC Server framework)
+ *
+ * @author janet
+ */
+public class SimpleApp
+{
+    /* the default framework is embedded*/
+    public String framework = "embedded";
+    public String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+    public String protocol = "jdbc:derby:";
+
+    public static void main(String[] args)
+    {
+        new SimpleApp().go(args);
+    }
+
+    void go(String[] args)
+    {
+        /* parse the arguments to determine which framework is desired*/
+        parseArguments(args);
+
+        System.out.println("SimpleApp starting in " + framework + " mode.");
+
+        try
+        {
+            /*
+               The driver is installed by loading its class.
+               In an embedded environment, this will start up Derby, since it is not already running.
+             */
+            Class.forName(driver).newInstance();
+            System.out.println("Loaded the appropriate driver.");
+
+            Connection conn = null;
+            Properties props = new Properties();
+            props.put("user", "user1");
+            props.put("password", "user1");
+
+            /*
+               The connection specifies create=true to cause
+               the database to be created. To remove the database,
+               remove the directory derbyDB and its contents.
+               The directory derbyDB will be created under
+               the directory that the system property
+               derby.system.home points to, or the current
+               directory if derby.system.home is not set.
+             */
+            conn = DriverManager.getConnection(protocol +
+                    "derbyDB;create=true", props);
+
+            System.out.println("Connected to and created database derbyDB");
+
+            conn.setAutoCommit(false);
+
+            /*
+               Creating a statement lets us issue commands against
+               the connection.
+             */
+            Statement s = conn.createStatement();
+
+            /*
+               We create a table, add a few rows, and update one.
+             */
+            s.execute("create table derbyDB(num int, addr varchar(40))");
+            System.out.println("Created table derbyDB");
+            s.execute("insert into derbyDB values (1956,'Webster St.')");
+            System.out.println("Inserted 1956 Webster");
+            s.execute("insert into derbyDB values (1910,'Union St.')");
+            System.out.println("Inserted 1910 Union");
+            s.execute(
+                "update derbyDB set num=180, addr='Grand Ave.' where num=1956");
+            System.out.println("Updated 1956 Webster to 180 Grand");
+
+            s.execute(
+                "update derbyDB set num=300, addr='Lakeshore Ave.' where num=180");
+            System.out.println("Updated 180 Grand to 300 Lakeshore");
+
+            /*
+               We select the rows and verify the results.
+             */
+            ResultSet rs = s.executeQuery(
+                    "SELECT num, addr FROM derbyDB ORDER BY num");
+
+            if (!rs.next())
+            {
+                throw new Exception("Wrong number of rows");
+            }
+
+            if (rs.getInt(1) != 300)
+            {
+                throw new Exception("Wrong row returned");
+            }
+
+            if (!rs.next())
+            {
+                throw new Exception("Wrong number of rows");
+            }
+
+            if (rs.getInt(1) != 1910)
+            {
+                throw new Exception("Wrong row returned");
+            }
+
+            if (rs.next())
+            {
+                throw new Exception("Wrong number of rows");
+            }
+
+            System.out.println("Verified the rows");
+
+            s.execute("drop table derbyDB");
+            System.out.println("Dropped table derbyDB");
+
+            /*
+               We release the result and statement resources.
+             */
+            rs.close();
+            s.close();
+            System.out.println("Closed result set and statement");
+
+            /*
+               We end the transaction and the connection.
+             */
+            conn.commit();
+            conn.close();
+            System.out.println("Committed transaction and closed connection");
+
+            /*
+               In embedded mode, an application should shut down Derby.
+               If the application fails to shut down Derby explicitly,
+               the Derby does not perform a checkpoint when the JVM shuts down, which means
+               that the next connection will be slower.
+               Explicitly shutting down Derby with the URL is preferred.
+               This style of shutdown will always throw an "exception".
+             */
+            boolean gotSQLExc = false;
+
+            if (framework.equals("embedded"))
+            {
+                try
+                {
+                    DriverManager.getConnection("jdbc:derby:;shutdown=true");
+                }
+                catch (SQLException se)
+                {
+                    gotSQLExc = true;
+                }
+
+                if (!gotSQLExc)
+                {
+                    System.out.println("Database did not shut down normally");
+                }
+                else
+                {
+                    System.out.println("Database shut down normally");
+                }
+            }
+        }
+        catch (Throwable e)
+        {
+            System.out.println("exception thrown:");
+
+            if (e instanceof SQLException)
+            {
+                printSQLError((SQLException) e);
+            }
+            else
+            {
+                e.printStackTrace();
+            }
+        }
+
+        System.out.println("SimpleApp finished");
+    }
+
+    static void printSQLError(SQLException e)
+    {
+        while (e != null)
+        {
+            System.out.println(e.toString());
+            e = e.getNextException();
+        }
+    }
+
+    private void parseArguments(String[] args)
+    {
+        int length = args.length;
+
+        for (int index = 0; index < length; index++)
+        {
+            if (args[index].equalsIgnoreCase("jccjdbcclient"))
+            {
+                framework = "jccjdbc";
+                driver = "com.ibm.db2.jcc.DB2Driver";
+                protocol = "jdbc:derby:net://localhost:1527/";
+            }
+        }
+    }
+}

Added: incubator/derby/code/trunk/java/demo/simple/derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/simple/derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4 @@
+# derby.properties
+#
+# we are using the default properties values for this demo
+#

Added: incubator/derby/code/trunk/java/demo/simple/example.html
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/demo/simple/example.html	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,265 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<meta name="GENERATOR" content="Quadralay WebWorks Publisher 5.0.4">
+<meta name="TEMPLATEBASE" content="Dynamic HTML">
+<meta name="LASTUPDATED" content="06/25/02 12:10:42">
+<link rel="StyleSheet" href="../../csfull.css" type="text/css" media="screen">
+<title>Simple JDBC Application</title>
+
+<script language="JavaScript">
+<!--
+var isNav, isIE, inFrame;
+
+if (parseInt(navigator.appVersion) >= 4) {
+    if (navigator.appName == "Netscape") {
+	isNav = true
+	} else {
+	isIE = true
+	}
+}
+if (parent.frames.length > 0)
+    inFrame = true;
+else
+	inFrame = false;
+
+
+
+
+//-->
+</script>
+
+
+
+</head>
+<body>
+
+
+
+
+
+<h1 class="Title">
+  <a name="811209"> </a>Simple JDBC Application
+</h1>
+ 
+
+<ul class="ChapterTOC">  <li class="ChapterTOC"><a name="820053"> </a>  <a href="#820067">Overview</a>
+  <li class="ChapterTOC"><a name="820061"> </a>  <a href="#816689">What's Included?</a>
+  <li class="ChapterTOC"><a name="820065"> </a>  <a href="#816722">How to Run This Sample Application in an Embedded Environment</a>
+</ul>
+<h2 class="Heading2"><a name="820067"> </a>Overview
+</h2>
+ <p class="Body">
+  <a name="820012"> </a>This example program is a very minimal JDBC application. JDBC is the primary API for interacting with IBM Cloudscape. This program accomplishes the following tasks:
+</p><ul class="Normal">  <li class="Normal"><a name="817266"> </a>starts up the  Cloudscape engine, if necessary
+  <li class="Normal"><a name="817275"> </a>creates and connects to a database
+  <li class="Normal"><a name="817276"> </a>creates a table
+  <li class="Normal"><a name="817277"> </a>inserts data
+  <li class="Normal"><a name="817278"> </a>updates data
+  <li class="Normal"><a name="817279"> </a>selects data
+  <li class="Normal"><a name="817280"> </a>drops a table
+  <li class="Normal"><a name="817281"> </a>disconnects
+  <li class="Normal"><a name="817282"> </a>shuts down Cloudscape, if necessary
+</ul>
+<p class="Body">
+  <a name="817267"> </a>The application runs in an embedded environment. This is the simplest Cloudscape environment. The application starts up an instance of Cloudscape within the current JVM and shuts down the instance before it completes. No network access is involved. In an embedded environment, only one application at a time can access a database.
+</p><h2 class="Heading2"><a name="816689"> </a>What's Included?
+</h2>
+ <p class="Body">
+  <a name="816691"> </a>Before running this demo, you should see the following files and directories in the <em class="fileName">/demo/programs/simple</em> directory:
+</p><ul class="Normal">  <li class="Normal"><a name="816694"> </a><em class="fileName">example.html</em>
+
+ 
+
+<p class="BodyRelative">
+  <a name="816695"> </a>This file.
+</p>
+  <li class="Normal"><a name="816696"> </a><em class="fileName">
+<a href="SimpleApp.java" target="_top">SimpleApp.java</a></em>
+
+ 
+
+<p class="BodyRelative">
+  <a name="816697"> </a>Source code for the example program that starts up Cloudscape, creates a database, does some inserts and updates, and then shuts down Cloudscape. <em class="Emphasis">Examine this file to see how the application behaves in the various environments</em>.
+</p>
+  <li class="Normal"><a name="816699"> </a><em class="fileName">
+<a href="derby.properties" target="_top">derby.properties</a></em>
+
+ 
+
+<p class="BodyRelative">
+  <a name="816700"> </a>Properties file for the Cloudscape system.
+</p>
+  <li class="Normal"><a name="816701"> </a><em class="fileName">SimpleApp.class</em>
+
+ 
+
+<p class="BodyRelative">
+  <a name="816702"> </a>The compiled class file.
+</p>
+</ul>
+<p class="Body">
+  <a name="816704"> </a>After running the demo, you will see some new files and directories:
+</p><ul class="Normal">  <li class="Normal"><a name="816706"> </a><em class="fileName">derbyDB</em> (directory)
+
+ 
+
+<p class="BodyRelative">
+  <a name="816707"> </a>The directory that makes up the <em class="fileName">derbyDB</em> database. You must not modify anything in this directory, or you will corrupt the database. The directory was created when the application connected with Cloudscape, using the attribute <em class="Emphasis">create=true</em> in the database connection URL. The database name, <em class="Emphasis">derbyDB</em>, was also set in the database connection URL. 
+</p>
+  <li class="Normal"><a name="816712"> </a><em class="fileName">derbyDB\log</em> (directory)
+
+ 
+
+<p class="BodyRelative">
+  <a name="816713"> </a>The directory that holds the database log for the <em class="fileName">derbyDB</em> database. 
+</p>
+  <li class="Normal"><a name="816714"> </a><em class="fileName">derbyDB\seg0</em> (directory)
+
+ 
+
+<p class="BodyRelative">
+  <a name="816715"> </a>The directory that holds the data for the <em class="fileName">derbyDB</em> database.
+</p>
+  <li class="Normal"><a name="816716"> </a><em class="fileName">derbyDB\service.properties</em>
+
+ 
+
+<p class="BodyRelative">
+  <a name="816717"> </a>An internal file that holds boot-time configuration parameters for the <em class="fileName">derbyDB</em> database; do not edit.
+</p>
+  <li class="Normal"><a name="816719"> </a><em class="fileName">derby.LOG</em>
+
+ 
+
+<p class="BodyRelative">
+  <a name="816720"> </a>The log file with Cloudscape progress and error messages.
+</p>
+</ul>
+<h2 class="Heading2"><a name="816722"> </a>How to Run This Sample Application in an Embedded Environment
+</h2>
+ <ol type="1">  <li class="Normal" value="1"><a name="816724"> </a>Open a command window and change directories to the <em class="fileName">/demo/programs/simple</em> directory.
+  <li class="Normal" value="2"><a name="816726"> </a>If you haven't set it already on a system-wide basis, set the CLOUDSCAPE_INSTALL environment variable to the location of the directory where you installed the Cloudscape software in the current command window.
+  <li class="Normal" value="3"><a name="819207"> </a>In the command window, set CLASSPATH as follows:<p><table border="4" cellspacing="0" cellpadding="5" bgcolor="#FAF0E6">
+  <caption class="TableTitle"></caption>
+  <tr valign="bottom">
+    <th><a name="819182"> </a><p class="CellHeading">Library or Directory</p></th>
+    <th><a name="819184"> </a><p class="CellHeading">Path to Library or Directory</p></th>
+  </tr>
+  <tr valign="top">
+    <td class="DefaultTable"><a name="821049"> </a><p class="CellBody">main Cloudscape library for the product:</p>
+<a name="819190"> </a><p class="CellBody"><em class="fileName">derby.jar</em></p>
+</td>
+    <td class="DefaultTable"><a name="819195"> </a><p class="CellBody"><em class="fileName">%CLOUDSCAPE_INSTALL%/lib/derby.jar</em></p>
+</td>
+  </tr>
+  <tr valign="top">
+    <td class="DefaultTable"><a name="819204"> </a><p class="CellBody">current directory</p>
+</td>
+    <td class="DefaultTable"><a name="819206"> </a><p class="CellBody">.</p>
+</td>
+  </tr>
+</table>
+
+
+</p>
+
+
+ 
+
+<p class="BodyRelative">
+  <a name="819218"> </a><p><table border="0" cellpadding="3" cellspacing="2" bgcolor="Silver">
+  <tr valign="top">
+    <td class="BoxTable"><h3 class="BoxHead">
+  <a name="819210"> </a>A Note on Setting Class Path for an Embedded Environment
+</h3>
+<a name="819214"> </a><p class="CellBody">Cloudscape provides a script to help you get started setting class path in <br> <em class="fileName">%CLOUDSCAPE_INSTALL%/frameworks/embedded/bin</em>. This script is called<em class="fileName"> setEmbeddedCP </em>and comes in two flavors: one for Windows environment (this file ends with <em class="fileName">.bat</em>) and one for UNIX environments (this file ends with <em class="fileName">.ksh</em>). For users working in those environments, copying the commands in this file will help you get started setting the class path. </p>
+</td>
+  </tr>
+</table>
+</p>
+
+</p>
+  <li class="Normal" value="4"><a name="819222"> </a>Run Cloudscape's utility for testing the class path for an embedded environment. You will provide the arguments <em class="Emphasis">embedded</em> to indicate an embedded environment and <em class="Emphasis">SimpleApp.class</em> to test for the presence of the <em class="javaObject">SimpleApp</em> class.
+
+ 
+
+<p class="BodyRelative">
+  <a name="818908"> </a>You run the utility like this:
+</p>
+<p class="CommandLine"><a name="818909">java org.apache.derby.tools.sysinfo -cp <em class="Emphasis">arguments</em></a></p>
+ 
+
+<p class="BodyRelative">
+  <a name="818907"> </a>So for the arguments you need here, run it like this (all on one line):
+</p>
+<p class="CommandLine"><a name="818910">java org.apache.derby.tools.sysinfo -cp embedded SimpleApp.class</a></p>
+ 
+
+<p class="BodyRelative">
+  <a name="820871"> </a>If your environment is set up correctly, the utility shows output indicating success. It looks like this:
+</p>
+<p class="OutputRelative"><a name="820884"> </a>FOUND IN CLASS PATH:</p>
+<p class="OutputRelative"><a name="820886"> </a>  Cloudscape embedded engine library (derby.jar)</p>
+<p class="OutputRelative"><a name="820887"> </a></p>
+<p class="OutputRelative"><a name="820893"> </a>   user-specified class (SimpleApp)</p>
+<p class="OutputRelative"><a name="820896"> </a>SUCCESS: All Cloudscape-Related classes for embedded environment found in class path.</p>
+
+ 
+
+<p class="BodyRelative">
+  <a name="820878"> </a>If something is missing from your class path environment, the utility indicates what is missing. For example, if you neglected to add the directory containing the SimpleApp class to your class path, the utility would indicate as such:
+</p>
+<p class="OutputRelative"><a name="820925"> </a>Testing for presence of Cloudscape-related libraries for embedded environment.</p>
+<p class="OutputRelative"><a name="820927"> </a>FOUND IN CLASS PATH:</p>
+<p class="OutputRelative"><a name="820956"> </a></p>
+<p class="OutputRelative"><a name="820929"> </a>   Cloudscape embedded engine library (derby.jar)</p>
+<p class="OutputRelative"><a name="820934"> </a></p>
+<p class="OutputRelative"><a name="820937"> </a>NOT FOUND IN CLASS PATH:</p>
+<p class="OutputRelative"><a name="820958"> </a>   user-specified class (SimpleApp)</p>
+<p class="OutputRelative"><a name="820940"> </a>    (SimpleApp not found.)</p>
+  <li class="Normal" value="5"><a name="818903"> </a>Once you have your environment set up correctly, execute the application from the same directory (<em class="fileName">/demo/programs/simple</em>): 
+<p class="CommandLine"><a name="816737">java SimpleApp</a></p></ol>
+<p class="Body">
+  <a name="818687"> </a>A successful run produces the following output: 
+</p><p class="Output"><a name="820970"> </a>SimpleApp starting in embedded mode.
+<br>
+<a name="820971"> </a>Loaded the appropriate driver.
+<br>
+<a name="820972"> </a>Connected to and created database derbyDB
+<br>
+<a name="820973"> </a>Created table derbyDB
+<br>
+<a name="820974"> </a>Inserted 1956 Webster
+<br>
+<a name="820975"> </a>Inserted 1910 Union
+<br>
+<a name="820976"> </a>Updated 1956 Webster to 180 Grand
+<br>
+<a name="820977"> </a>Updated 180 Grand to 300 Lakeshore
+<br>
+<a name="820978"> </a>Verified the rows
+<br>
+<a name="820979"> </a>Dropped table derbyDB
+<br>
+<a name="820980"> </a>Closed result set and statement
+<br>
+<a name="820981"> </a>Committed transaction and closed connection
+<br>
+<a name="820982"> </a>Database shut down normally
+<br>
+<a name="818289"> </a>SimpleApp finished
+<br>
+</p>
+<a href="http://www.ibm.com" target="_top"><img src="../../images/IBMLOGO.gif" border="0" width="180" vspace="12"></a><br>
+
+
+<p class="NavBarVersion">IBM Cloudscape Version 10</p>
+
+<address class="Footer"><br>
+Copyright(c) INTERNATIONAL BUSINESS MACHINES CORPORATION, 1999, 2004 ALL RIGHTS RESERVED.
+</address>
+
+</body>
+</html>

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_de_DE.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_de_DE.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Unerwartete Ausnahme beim Laden des Cloudscape-JDBC-Treibers:\n {0}
+DRDA_PropertyException.S=Unerwartete Ausnahme beim Lesen von cloudscape.properties:\n {0}
+DRDA_UnexpectedException.S=Unerwartete Ausnahme:\n {0}
+DRDA_ListenPort.S=Am Port {0} auf dem Host {1} war kein Empfang m\u00f6glich.
+DRDA_NoInputStream.S=F\u00fcr den Client-Socket konnte kein Eingabedatenstrom angefordert werden.
+DRDA_Ready.I=Der Server ist bereit, am Port {0} Verbindungen zu akzeptieren.
+DRDA_UnableToAccept.S=Es k\u00f6nnen keine Verbindungen akzeptiert werden.
+DRDA_ConnNumber.I=Verbindungsnummer: {0}.
+DRDA_ClientSocketError.S=Fehler beim Client-Socket:\n {0}
+DRDA_ListenerClose.S=Der Listener-Thread kann nicht geschlossen werden.
+DRDA_ShutdownSuccess.I=Erfolgreich heruntergefahren.
+DRDA_ShutdownWarning.I=Warnung zum Shutdown von Cloudscape:\n {0}
+DRDA_ShutdownError.S=Der Server am Port {0} auf dem Host {1} konnte nicht heruntergefahren werden.
+DRDA_BootSuccess.I=Die Datenbank {0} wurde erfolgreich gebootet.
+DRDA_DBShutdownSuccess.I=Die Datenbank {0} wurde erfolgreich heruntergefahren.
+DRDA_CommandError.S=Bei der Verarbeitung des Befehls {0} ist ein Fehler aufgetreten.
+DRDA_NotImplemented.S={0} ist nicht implementiert.
+DRDA_NoArgs.U=Es sind keine Argumente angegeben.
+DRDA_UnknownArgument.U=Das Argument {0} ist unbekannt.
+DRDA_UnknownCommand.U=Der Befehl {0} ist unbekannt.
+DRDA_InvalidValue.U=Ung\u00fcltiger Wert {0} f\u00fcr {1}.
+DRDA_OnOffValue.U=Ung\u00fcltiger Wert {0}. Der Wert muss 'on' oder 'off' lauten.
+DRDA_PortNumber.I=Port-Nummer
+DRDA_Host.I=Host
+DRDA_DatabaseDirectory.I=Datenbankverzeichnis
+DRDA_Password.I=Kennwort
+DRDA_User.I=Benutzer
+DRDA_EncryptionAlgorithm.I=Verschl\u00fcsselungsalgorithmus
+DRDA_EncryptionProvider.I=Verschl\u00fcsselungsprovider
+DRDA_Session.I=Sitzung
+DRDA_TraceDirectoryChange.I=Das Trace-Verzeichnis wurde in {0} ge\u00e4ndert.
+DRDA_InvalidNoArgs.U=Ung\u00fcltige Anzahl von Argumenten f\u00fcr den Befehl {0}.
+DRDA_LogConnectionsChange.I=Die Verbindungsprotokollierung wurde in {0} ge\u00e4ndert.
+DRDA_TraceChangeAll.I=Der Trace wurde f\u00fcr alle Sitzungen auf {0} gesetzt.
+DRDA_TraceChangeOne.I=Der Trace wurde f\u00fcr die Sitzung {1} auf {0} gesetzt.
+DRDA_ON.I=on
+DRDA_OFF.I=off
+DRDA_UnknownHost.S=Der folgende Host kann nicht gefunden werden: {0}.
+DRDA_UnknownHostWarning.I=Warnung: UnknkownHostException: {0}.
+DRDA_NeedLocalHost.S=Der Host {0} ist f\u00fcr den auf {1} ausgef\u00fchrten Server nicht lokal und kann deshalb nicht f\u00fcr NetworkServerControl-Befehle verwendet werden. 
+DRDA_NoIO.S=Es konnte keine Verbindung zu Cloudscape Network Server auf dem Host {0}, Port {1}, hergestellt werden.
+DRDA_InvalidReplyHeader1.S=Ung\u00fcltiger Antwort-Header von Network Server: Die L\u00e4nge {0} ist zu kurz.
+DRDA_InvalidReplyHeader2.S=Ung\u00fcltiger Antwort-Header von Network Server: Ung\u00fcltige Zeichenfolge {0}.
+DRDA_InvalidReplyTooShort.S=Ung\u00fcltige Antwort von Network Server: Keine ausreichenden Daten.
+DRDA_SysInfoError.S=Fehler beim Abrufen von SysInfo-Daten.
+DRDA_SysInfoWriteError.S=Fehler beim Schreiben von SysInfo-Daten:\n {0}
+DRDA_RuntimeInfoError.S=Fehler beim Abrufen von RuntimeInfo-Informationen.
+DRDA_PropInfoError.S=Fehler beim Abrufen von Merkmaldaten.
+DRDA_PropInfoWriteError.S=Fehler beim Schreiben von Merkmaldaten:\n {0}
+DRDA_ProductVersionReadError.S=Fehler beim Lesen der Produktversion von der Cloudscape-Installation. {0}.
+DRDA_ConnectionTested.I=Verbindung aufgebaut f\u00fcr Host: {0}, Port-Nummer {1}.
+DRDA_ConnectionTested2.I=Verbindung aufgebaut f\u00fcr Host: {0}, Port {1}, Datenbank {2}.
+DRDA_ConnectionTested3.I=Verbindung aufgebaut f\u00fcr Host: {0}, Port {1}, Datenbank {2}, Benutzer {3}.
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U=F\u00fcr {0} fehlt ein erforderlicher Wert.
+DRDA_InvalidPropVal.S=Ung\u00fcltiger Wert f\u00fcr das Merkmal {0}. Wert: {1}.
+DRDA_SessionNotFound.U=Die Sitzung {0} wurde nicht gefunden.
+DRDA_MaxThreadsChange.I=Die maximale Anzahl Threads wurde in {0} ge\u00e4ndert.
+DRDA_TimeSliceChange.I=Die Zeitscheibe wurde in {0} ge\u00e4ndert.
+DRDA_InvalidValue.U=Ung\u00fcltiger Wert {0} f\u00fcr {1}.
+DRDA_IOException.S=IOException: {0}.
+DRDA_UnknownProtocol=Unbekannte Befehlsprotokollversion: {0}.
+DRDA_MissingLocale.I=F\u00fcr die aktuelle L\u00e4ndereinstellung wurden keine Ressourcen gefunden. Es wird auf {0} umgeschaltet.
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Cloudscape Network Server Information --------
+DRDA_SysInfoVersion.I=Version:
+DRDA_SysInfoBuild.I=Build:
+DRDA_SysInfoDrdaPRDID.I=DRDA-Produkt-ID:
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Laufzeitinformationen zu Cloudscape Network Server ---
+DRDA_RuntimeInfoSessionBanner.I=---------- Sitzungsinformationen ---------------
+DRDA_RuntimeInfoNumThreads.I=Anzahl der Verbindungs-Threads: 
+DRDA_RuntimeInfoNumActiveSessions.I=Anzahl der aktiven Sitzungen: 
+DRDA_RuntimeInfoNumWaitingSessions.I=Anzahl der wartenden Sitzungen: 
+DRDA_RuntimeInfoSessionNumber.I=Sitzungsnummer:
+DRDA_RuntimeInfoDatabase.I=Datenbank:
+DRDA_RuntimeInfoUser.I=Benutzer:
+DRDA_RuntimeInfoNumStatements.I=Anzahl der Anweisungen:
+DRDA_RuntimeInfoPreparedStatementHeader.I=Informationen zur vorbereiteten Anweisung: \n\tAnwsg-ID\t\tSQL-Text\n\t--------------\t------------\n
+
+DRDA_RuntimeInfoTotalMemory.I=Gesamtspeicher: 
+DRDA_RuntimeInfoFreeMemory.I=Freier Speicher: 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=Syntax: NetworkServerControl <Befehle> 
+DRDA_Usage2.I=Befehle:
+DRDA_Usage3.I=start [-h <Host>] [-p <Port-Nummer>]
+DRDA_Usage4.I=shutdown [-h <Host>][-p <Port-Nummer>]
+DRDA_Usage5.I=ping [-h <Host>][-p <Port-Nummer>]
+DRDA_Usage6.I=sysinfo [-h <Host>][-p <Port-Nummer>]
+DRDA_Usage7.I=runtimeinfo [-h <Host>][-p <Port-Nummer>]
+DRDA_Usage8.I=logconnections {on|off}[-h <Host>][-p <Port-Nummer>]
+DRDA_Usage9.I=maxthreads <max>[-h <Host>][-p <Port-Nummer>]
+DRDA_Usage10.I=timeslice <Millisekunden>[-h <Host>][-p <Port-Nummer>]
+DRDA_Usage11.I=trace {on|off} [-s <Sitzungs-ID>][-h <Host>][-p <Port-Nummer>]
+DRDA_Usage12.I=tracedirectory <Trace-Verzeichnis>[-h <Host>][-p <Port-Nummer>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_es.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_es.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Se produjo una excepci\u00f3n no esperada al cargar el controlador JDBC de Cloudscape:\n {0}
+DRDA_PropertyException.S=Excepci\u00f3n inesperada al leer cloudscape.properties:\n {0}
+DRDA_UnexpectedException.S=Excepci\u00f3n no esperada:\n {0}
+DRDA_ListenPort.S=No se pudo escuchar en el puerto {0} en el sistema principal {1}.
+DRDA_NoInputStream.S=No se pudo obtener una corriente de datos de entrada para el socket de cliente.
+DRDA_Ready.I=El servidor est\u00e1 listo para aceptar conexiones en el puerto {0}.
+DRDA_UnableToAccept.S=No se pueden aceptar conexiones.
+DRDA_ConnNumber.I=N\u00famero de conexi\u00f3n: {0}.
+DRDA_ClientSocketError.S=Error en el socket de cliente: \n {0}
+DRDA_ListenerClose.S=No se pudo cerrar la hebra de escucha.
+DRDA_ShutdownSuccess.I=Conclusi\u00f3n satisfactoria.
+DRDA_ShutdownWarning.I=Aviso de conclusi\u00f3n de Cloudscape:\n {0}
+DRDA_ShutdownError.S=No se puede cerrar el servidor en el puerto {0} en el sistema principal {1}.
+DRDA_BootSuccess.I=La iniciaci\u00f3n de la base de datos {0} ha sido satisfactoria.
+DRDA_DBShutdownSuccess.I=La conclusi\u00f3n de la base de datos {0} ha sido satisfactoria.
+DRDA_CommandError.S=Error procesando el mandato {0}.
+DRDA_NotImplemented.S={0} no est\u00e1 implementado.
+DRDA_NoArgs.U=No se proporcionaron argumentos.
+DRDA_UnknownArgument.U=Se desconoce el argumento {0}.
+DRDA_UnknownCommand.U=Se desconoce el mandato {0}.
+DRDA_InvalidValue.U=Valor no v\u00e1lido, {0}, para {1}.
+DRDA_OnOffValue.U=Valor no v\u00e1lido, {0}. El valor debe ser 'on' u 'off'.
+DRDA_PortNumber.I=n\u00famero de puerto
+DRDA_Host.I=sistema principal
+DRDA_DatabaseDirectory.I=directorio de base de datos
+DRDA_Password.I=contrase\u00f1a
+DRDA_User.I=usuario
+DRDA_EncryptionAlgorithm.I=algoritmo de cifrado
+DRDA_EncryptionProvider.I=proveedor de cifrado
+DRDA_Session.I=sesi\u00f3n
+DRDA_TraceDirectoryChange.I=Se ha cambiado el directorio de rastreo a {0}.
+DRDA_InvalidNoArgs.U=N\u00famero no v\u00e1lido de argumentos para el mandato {0}.
+DRDA_LogConnectionsChange.I=Se han cambiado las conexiones para anotaci\u00f3n a {0}.
+DRDA_TraceChangeAll.I=Rastreo {0} para todas las sesiones.
+DRDA_TraceChangeOne.I=Rastreo {0} para la sesi\u00f3n {1}.
+DRDA_ON.I=activado
+DRDA_OFF.I=desactivado
+DRDA_UnknownHost.S=No se pudo encontrar el sistema principal: {0}.
+DRDA_UnknownHostWarning.I=Aviso: UnknkownHostException: {0}.
+DRDA_NeedLocalHost.S=sistema principal: {0} no es local para el servidor que se ejecuta en {1}, as\u00ed que no se puede utilizar para mandatos NetworkServerControl 
+DRDA_NoIO.S=No se pudo conectar con Cloudscape Network Server en el sistema principal {0}, puerto {1}.
+DRDA_InvalidReplyHeader1.S=Cabecera de respuesta no v\u00e1lida del servidor de red. Longitud demasiado corta con {0}.
+DRDA_InvalidReplyHeader2.S=Cabecera de respuesta no v\u00e1lida del servidor de red. Serie no v\u00e1lida con {0}.
+DRDA_InvalidReplyTooShort.S=Respuesta no v\u00e1lida del servidor de red: No hay suficientes datos.
+DRDA_SysInfoError.S=Error obteniendo la informaci\u00f3n SysInfo.
+DRDA_SysInfoWriteError.S=Error grabando la informaci\u00f3n SysInfo: \n {0}
+DRDA_RuntimeInfoError.S=Error al obtener informaci\u00f3n RuntimeInfo.
+DRDA_PropInfoError.S=Error obteniendo informaci\u00f3n de propiedades.
+DRDA_PropInfoWriteError.S=Error grabando informaci\u00f3n de propiedades: \n {0}
+DRDA_ProductVersionReadError.S=Error al leer la informaci\u00f3n de versi\u00f3n del producto desde la instalaci\u00f3n de Cloudscape. {0}.
+DRDA_ConnectionTested.I=Se obtuvo la conexi\u00f3n con el sistema principal: {0}, n\u00famero de puerto {1}.
+DRDA_ConnectionTested2.I=Se obtuvo la conexi\u00f3n con el sistema principal: {0}, puerto {1}, base de datos {2}.
+DRDA_ConnectionTested3.I=Se obtuvo la conexi\u00f3n con el sistema principal: {0}, puerto {1}, base de datos {2}, usuario {3}.
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U=Falta un valor obligatorio para {0}.
+DRDA_InvalidPropVal.S=Valor no v\u00e1lido para la propiedad {0}, valor: {1}.
+DRDA_SessionNotFound.U=No se encontr\u00f3 la sesi\u00f3n {0}.
+DRDA_MaxThreadsChange.I=Se ha cambiado el n\u00famero m\u00e1ximo de hebras a {0}.
+DRDA_TimeSliceChange.I=Se ha cambiado el intervalo de tiempo de hebra a {0}.
+DRDA_InvalidValue.U=Valor no v\u00e1lido, {0}, para {1}.
+DRDA_IOException.S=Excepci\u00f3n de E/S: {0}.
+DRDA_UnknownProtocol=Versi\u00f3n de protocolo de mandatos desconocida: {0}.
+DRDA_MissingLocale.I=No se han encontrado recursos para el entorno local actual, cambiando a {0}.
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Informaci\u00f3n sobre Cloudscape Network Server --------
+DRDA_SysInfoVersion.I=Versi\u00f3n:
+DRDA_SysInfoBuild.I=Build:
+DRDA_SysInfoDrdaPRDID.I=ID del producto DRDA:
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Informaci\u00f3n de Cloudscape Network Server Runtime ---
+DRDA_RuntimeInfoSessionBanner.I=---------- Informaci\u00f3n de sesi\u00f3n -------------
+DRDA_RuntimeInfoNumThreads.I=N\u00fam. hebras conexi\u00f3n : 
+DRDA_RuntimeInfoNumActiveSessions.I=N\u00fam. sesiones activas : 
+DRDA_RuntimeInfoNumWaitingSessions.I=N\u00fam. sesiones en espera : 
+DRDA_RuntimeInfoSessionNumber.I=N\u00fam. sesi\u00f3n :
+DRDA_RuntimeInfoDatabase.I=Base de datos :
+DRDA_RuntimeInfoUser.I=Usuario :
+DRDA_RuntimeInfoNumStatements.I=N\u00fam. sentencias :
+DRDA_RuntimeInfoPreparedStatementHeader.I=Informaci\u00f3n de sentencia preparada: \n\tID sent.\t\tTextoSQL\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=Memoria total : 
+DRDA_RuntimeInfoFreeMemory.I=Memoria libre : 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=Uso: NetworkServerControl <mandatos> 
+DRDA_Usage2.I=Mandatos:
+DRDA_Usage3.I=start [-h <sistprincipal>] [-p <n\u00fampuerto>]
+DRDA_Usage4.I=shutdown [-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage5.I=ping [-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage6.I=sysinfo [-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage7.I=runtimeinfo [-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage8.I=logconnections {on|off}[-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage9.I=maxthreads <m\u00e1x>[-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage10.I=timeslice <milisegundos>[-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage11.I=trace {on|off} [-s <idsesi\u00f3n>][-h <sistprincipal>][-p <n\u00fampuerto>]
+DRDA_Usage12.I=tracedirectory <dirrastreo>[-h <sistprincipal>][-p <n\u00fampuerto>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_fr.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_fr.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Exception inattendue lors du chargement du pilote JBDC Cloudscape :\n{0}
+DRDA_PropertyException.S=Exception inattendue lors de la lecture du fichier cloudscape.properties :\n {0}
+DRDA_UnexpectedException.S=Exception inattendue :\n {0}
+DRDA_ListenPort.S=Ecoute impossible sur le port {0} sur l''h\u00f4te {1}.
+DRDA_NoInputStream.S=Impossible d'obtenir le flux de donn\u00e9es en entr\u00e9e pour le socket client.
+DRDA_Ready.I=Le serveur est pr\u00eat \u00e0 accepter les connexions au port {0}.
+DRDA_UnableToAccept.S=Impossible d'accepter les connexions.
+DRDA_ConnNumber.I=Num\u00e9ro de connexion : {0}.
+DRDA_ClientSocketError.S=Erreur sur le socket client :\n {0}
+DRDA_ListenerClose.S=Impossible de fermer l'unit\u00e9 d'ex\u00e9cution du programme d'\u00e9coute.
+DRDA_ShutdownSuccess.I=Arr\u00eat r\u00e9ussi.
+DRDA_ShutdownWarning.I=Avertissement d'arr\u00eat de Cloudscape :\n {0}
+DRDA_ShutdownError.S=Arr\u00eat du serveur impossible sur le port {0} sur l''h\u00f4te {1}.
+DRDA_BootSuccess.I=La base de donn\u00e9es {0} a \u00e9t\u00e9 amorc\u00e9e.
+DRDA_DBShutdownSuccess.I=La base de donn\u00e9es {0} est arr\u00eat\u00e9e.
+DRDA_CommandError.S=Erreur lors du traitement de la commande {0}.
+DRDA_NotImplemented.S={0} n''est pas impl\u00e9ment\u00e9.
+DRDA_NoArgs.U=Aucun argument fourni.
+DRDA_UnknownArgument.U=L''argument {0} est inconnu.
+DRDA_UnknownCommand.U=La commande {0} est inconnue.
+DRDA_InvalidValue.U=La valeur {0} n''est pas valide pour {1}.
+DRDA_OnOffValue.U=Valeur {0} non valide. La valeur doit \u00eatre 'on' ou 'off'.
+DRDA_PortNumber.I=num\u00e9ro de port
+DRDA_Host.I=h\u00f4te
+DRDA_DatabaseDirectory.I=r\u00e9pertoire de base de donn\u00e9es
+DRDA_Password.I=mot de passe
+DRDA_User.I=utilisateur
+DRDA_EncryptionAlgorithm.I=algorithme de chiffrement
+DRDA_EncryptionProvider.I=fournisseur de chiffrement
+DRDA_Session.I=session
+DRDA_TraceDirectoryChange.I=Nouveau r\u00e9pertoire de trace : {0}.
+DRDA_InvalidNoArgs.U=Le nombre d''arguments pour la commande {0} est incorrect.
+DRDA_LogConnectionsChange.I=Nouvelles connexions au journal : {0}.
+DRDA_TraceChangeAll.I=Le processus de trace a renvoy\u00e9 {0} pour toutes les sessions.
+DRDA_TraceChangeOne.I=Le processus de trace a renvoy\u00e9 {0} pour la session {1}.
+DRDA_ON.I=on
+DRDA_OFF.I=off
+DRDA_UnknownHost.S=H\u00f4te introuvable : {0}.
+DRDA_UnknownHostWarning.I=Avertissement : Exception d''h\u00f4te inconnu (UnknkownHostException) : {0}.
+DRDA_NeedLocalHost.S=L''h\u00f4te {0} n''est pas local pour le serveur en cours d''ex\u00e9cution sur {1} et par cons\u00e9quent, ne peut pas \u00eatre utilis\u00e9 pour les commandes NetworkServerControl.  
+DRDA_NoIO.S=Connexion impossible \u00e0 Cloudscape Network Server sur l''h\u00f4te {0}, port {1}.
+DRDA_InvalidReplyHeader1.S=En-t\u00eate de r\u00e9ponse non valide du serveur de r\u00e9seau : la longueur {0} est insuffisante.
+DRDA_InvalidReplyHeader2.S=En-t\u00eate de r\u00e9ponse non valide du serveur de r\u00e9seau : cha\u00eene {0} non valide.
+DRDA_InvalidReplyTooShort.S=En-t\u00eate de r\u00e9ponse non valide du serveur de r\u00e9seau : donn\u00e9es insuffisantes.
+DRDA_SysInfoError.S=Erreur d'obtention des informations syst\u00e8me SysInfo.
+DRDA_SysInfoWriteError.S=Erreur d''\u00e9criture des informations syst\u00e8me SysInfo :\n{0}
+DRDA_RuntimeInfoError.S=Erreur lors de l'extraction des informations d'ex\u00e9cution RuntimeInfo.
+DRDA_PropInfoError.S=Erreur d'obtention des informations de propri\u00e9t\u00e9s.
+DRDA_PropInfoWriteError.S=Erreur d''\u00e9criture des informations de propri\u00e9t\u00e9s :\n{0}
+DRDA_ProductVersionReadError.S=Erreur de lecture de la version du produit \u00e0 partir de l''installation Cloudscape. {0}.
+DRDA_ConnectionTested.I=Connexion obtenue pour l''h\u00f4te : {0}, num\u00e9ro de port {1}.
+DRDA_ConnectionTested2.I=Connexion obtenue pour l''h\u00f4te : {0}, port {1}, base de donn\u00e9es {2}.
+DRDA_ConnectionTested3.I=Connexion obtenue pour l''h\u00f4te : {0}, port {1}, base de donn\u00e9es {2}, utilisateur {3}.
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U=La valeur requise pour {0} est manquante.
+DRDA_InvalidPropVal.S=Valeur incorrecte pour la propri\u00e9t\u00e9 {0}, valeur : {1}.
+DRDA_SessionNotFound.U=Session {0} non trouv\u00e9e.
+DRDA_MaxThreadsChange.I=Nouveau nombre maximal d''unit\u00e9s d''ex\u00e9cution : {0}.
+DRDA_TimeSliceChange.I=Nouvel intervalle d''activation : {0}.
+DRDA_InvalidValue.U=La valeur {0} n''est pas valide pour {1}.
+DRDA_IOException.S=Exception d''E/S : {0}.
+DRDA_UnknownProtocol=Version du protocole de commande inconnue : {0}.
+DRDA_MissingLocale.I=Ressources introuvables pour l''environnement local actuel. Passage \u00e0 {0}.
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Informations sur Cloudscape Network Server --------
+DRDA_SysInfoVersion.I=Version :
+DRDA_SysInfoBuild.I=Compilation :
+DRDA_SysInfoDrdaPRDID.I=ID produit DRDA :
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Informations d'ex\u00e9cution de Cloudscape Network Server ---
+DRDA_RuntimeInfoSessionBanner.I=---------- Informations sur les sessions ---------------
+DRDA_RuntimeInfoNumThreads.I=Nombre d'unit\u00e9s d'ex\u00e9cution de connexion : 
+DRDA_RuntimeInfoNumActiveSessions.I=Nombre de sessions actives : 
+DRDA_RuntimeInfoNumWaitingSessions.I=Nombre de sessions en attente : 
+DRDA_RuntimeInfoSessionNumber.I=Nombre de sessions :
+DRDA_RuntimeInfoDatabase.I=Base de donn\u00e9es :
+DRDA_RuntimeInfoUser.I=Utilisateur :
+DRDA_RuntimeInfoNumStatements.I=Nombre d'instructions :
+DRDA_RuntimeInfoPreparedStatementHeader.I=Informations sur les instructions pr\u00e9par\u00e9es : \n\tID instruction\t\tTexte SQL\n\t--------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=M\u00e9moire totale : 
+DRDA_RuntimeInfoFreeMemory.I=M\u00e9moire disponible : 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=Syntaxe : NetworkServerControl <commandes> 
+DRDA_Usage2.I=Commandes :
+DRDA_Usage3.I=start [-h <h\u00f4te>] [-p <num\u00e9ro_port>]
+DRDA_Usage4.I=shutdown [-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage5.I=ping [-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage6.I=sysinfo [-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage7.I=runtimeinfo [-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage8.I=logconnections {on|off}[-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage9.I=maxthreads <max>[-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage10.I=timeslice <millisecondes>[-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage11.I=trace {on|off} [-s <id_session>][-h <h\u00f4te>][-p <num\u00e9ro_port>]
+DRDA_Usage12.I=tracedirectory <r\u00e9pertoire_trace>[-h <h\u00f4te>][-p <num\u00e9ro_port>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_it.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_it.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Eccezione imprevista durante il caricamento del driver JDBC di Cloudscape:\n {0}
+DRDA_PropertyException.S=Eccezione imprevista durante la lettura di cloudscape.properties:\n {0}
+DRDA_UnexpectedException.S=Eccezione imprevista:\n {0}
+DRDA_ListenPort.S=Impossibile ascoltare la porta {0} sull''host {1}.
+DRDA_NoInputStream.S=Impossibile richiamare il flusso di input per il socket client.
+DRDA_Ready.I=Il server \u00e8 pronto ad accettare i collegamenti sulla porta {0}.
+DRDA_UnableToAccept.S=Impossibile accettare i collegamenti.
+DRDA_ConnNumber.I=Numero di collegamenti: {0}.
+DRDA_ClientSocketError.S=Errore sul socket client:\n {0}
+DRDA_ListenerClose.S=Impossibile chiudere il thread listener.
+DRDA_ShutdownSuccess.I=Arresto corretto.
+DRDA_ShutdownWarning.I=Avvertenza chiusura Cloudscape:\n {0}
+DRDA_ShutdownError.S=Impossibile chiudere il server sulla porta {0} sull''host {1}.
+DRDA_BootSuccess.I=Avvio database, {0}, corretto.
+DRDA_DBShutdownSuccess.I=Arresto database, {0}, corretto.
+DRDA_CommandError.S=Si \u00e8 verificato un errore durante l''elaborazione del comando {0}.
+DRDA_NotImplemented.S={0} non \u00e8 implementato.
+DRDA_NoArgs.U=Nessun argomento specificato.
+DRDA_UnknownArgument.U=L''argomento {0} \u00e8 sconosciuto.
+DRDA_UnknownCommand.U=Il comando {0} \u00e8 sconosciuto.
+DRDA_InvalidValue.U=Valore non valido, {0}, per {1}.
+DRDA_OnOffValue.U=Valore non valido, {0}. Il valore deve essere ''on'' oppure ''off''.
+DRDA_PortNumber.I=numero porta
+DRDA_Host.I=host
+DRDA_DatabaseDirectory.I=directory del database
+DRDA_Password.I=password
+DRDA_User.I=utente
+DRDA_EncryptionAlgorithm.I=algoritmo di codifica
+DRDA_EncryptionProvider.I=provider di codifica
+DRDA_Session.I=sessione
+DRDA_TraceDirectoryChange.I=Directory di traccia modificata in {0}.
+DRDA_InvalidNoArgs.U=Numero non valido di argomenti per il comando {0}.
+DRDA_LogConnectionsChange.I=Connessioni log modificate in {0}.
+DRDA_TraceChangeAll.I=Traccia impostata su {0} per tutte le sessioni.
+DRDA_TraceChangeOne.I=Traccia impostata su {0} per la sessione {1}.
+DRDA_ON.I=on
+DRDA_OFF.I=off
+DRDA_UnknownHost.S=Impossibile trovare l''host: {0}.
+DRDA_UnknownHostWarning.I=Avviso: UnknkownHostException: {0}.
+DRDA_NeedLocalHost.S=host: {0} non \u00e8 locale sul server eseguito su {1}, quindi non pu\u00f2 essere utilizzato per i comandi NetworkServerControl  
+DRDA_NoIO.S=Impossibile collegarsi al server di rete Cloudscape sull''host {0}, porta {1}.
+DRDA_InvalidReplyHeader1.S=Intestazione della risposta non valida dal server di rete: lunghezza {0} troppo breve.
+DRDA_InvalidReplyHeader2.S=Intestazione della risposta non valida dal server di rete: stringa {0} non valida.
+DRDA_InvalidReplyTooShort.S=Risposta non valida dal server di rete: dati non sufficienti.
+DRDA_SysInfoError.S=Errore durante il richiamo delle informazioni SysInfo.
+DRDA_SysInfoWriteError.S=Errore durante la scrittura delle informazioni SysInfo:\n {0}
+DRDA_RuntimeInfoError.S=Errore durante il richiamo delle informazioni RuntimeInfo.
+DRDA_PropInfoError.S=Errore durante il richiamo delle informazioni sulle propriet\u00e0.
+DRDA_PropInfoWriteError.S=Errore durante la scrittura delle informazioni sulle propriet\u00e0:\n {0}
+DRDA_ProductVersionReadError.S=Errore durante la lettura delle informazioni di versione del prodotto dall'installazione Cloudscape. {0}.
+DRDA_ConnectionTested.I=Connessione ottenuta per l''host: {0}, numero porta {1}.
+DRDA_ConnectionTested2.I=Connessione ottenuta per l''host: {0}, la porta {1}, il database {2}.
+DRDA_ConnectionTested3.I=Connessione ottenuta per l''host: {0}, la porta {1}, il database {2}, l''utente {3}.
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U=Valore richiesto per {0} non valido.
+DRDA_InvalidPropVal.S=Valore non valido per propriet\u00e0, {0}, valore: {1}.
+DRDA_SessionNotFound.U=Sessione, {0}, non individuata.
+DRDA_MaxThreadsChange.I=Numero massimo di thread modificati in {0}.
+DRDA_TimeSliceChange.I=L''intervallo di tempo \u00e8 modificato a {0}.
+DRDA_InvalidValue.U=Valore non valido, {0}, per {1}.
+DRDA_IOException.S=IOException: {0}.
+DRDA_UnknownProtocol=Versione del protocollo di comando: {0} sconosciuto.
+DRDA_MissingLocale.I=Risorse non trovate per la locale corrente, verr\u00e0 utilizzato {0}.
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Informazioni sul server di rete Cloudscape --------
+DRDA_SysInfoVersion.I=Versione:
+DRDA_SysInfoBuild.I=Build:
+DRDA_SysInfoDrdaPRDID.I=ID prodotto DRDA:
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Informazioni di runtime del server di rete Cloudscape ---
+DRDA_RuntimeInfoSessionBanner.I=---------- Informazioni sulla sessione ---------------
+DRDA_RuntimeInfoNumThreads.I=# Thread di connessione : 
+DRDA_RuntimeInfoNumActiveSessions.I=# Sessioni attive : 
+DRDA_RuntimeInfoNumWaitingSessions.I=# Sessioni in attesa : 
+DRDA_RuntimeInfoSessionNumber.I=Sessione # :
+DRDA_RuntimeInfoDatabase.I=Database :
+DRDA_RuntimeInfoUser.I=Utente :
+DRDA_RuntimeInfoNumStatements.I=# Istruzioni:
+DRDA_RuntimeInfoPreparedStatementHeader.I=Informazioni di istruzione preparata: \n\tStmt ID\t\tSQLText\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=Memoria totale : 
+DRDA_RuntimeInfoFreeMemory.I=Memoria disponibile : 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=Utilizzo: NetworkServerControl <comandi> 
+DRDA_Usage2.I=Comandi:
+DRDA_Usage3.I=start [-h <host>] [-p <numeroporta>]
+DRDA_Usage4.I=shutdown [-h <host>][-p <numeroporta>]
+DRDA_Usage5.I=ping [-h <host>][-p <numeroporta>]
+DRDA_Usage6.I=sysinfo [-h <host>][-p <numeroporta>]
+DRDA_Usage7.I=runtimeinfo [-h <host>][-p <numeroporta>]
+DRDA_Usage8.I=logconnections {on|off}[-h <host>][-p <numeroporta>]
+DRDA_Usage9.I=maxthreads <max>[-h <host>][-p <numeroporta>]
+DRDA_Usage10.I=timeslice <millisecondi>[-h <host>][-p <numeroporta>]
+DRDA_Usage11.I=trace {on|off} [-s <id sessione>][-h <host>][-p <numeroporta>]
+DRDA_Usage12.I=tracedirectory <Directorytraccia>[-h <host>][-p <numeroporta>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_ja_JP.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_ja_JP.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Cloudscape JDBC \u30c9\u30e9\u30a4\u30d0\u30fc\u306e\u30ed\u30fc\u30c9\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\n {0}
+DRDA_PropertyException.S=cloudscape.properties \u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\n {0}
+DRDA_UnexpectedException.S=\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916:\n {0}
+DRDA_ListenPort.S=\u30db\u30b9\u30c8 {1} \u306e\u30dd\u30fc\u30c8 {0} \u3092 listen \u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+DRDA_NoInputStream.S=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30fb\u30bd\u30b1\u30c3\u30c8\u306e\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+DRDA_Ready.I=\u30b5\u30fc\u30d0\u30fc\u306f\u3001\u30dd\u30fc\u30c8 {0} \u3067\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u308b\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002
+DRDA_UnableToAccept.S=\u63a5\u7d9a\u3092\u53d7\u3051\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+DRDA_ConnNumber.I=\u63a5\u7d9a\u756a\u53f7: {0}\u3002
+DRDA_ClientSocketError.S=\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30fb\u30bd\u30b1\u30c3\u30c8\u3067\u30a8\u30e9\u30fc\u3067\u3059:\n {0}
+DRDA_ListenerClose.S=\u30ea\u30b9\u30ca\u30fc\u30fb\u30b9\u30ec\u30c3\u30c9\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+DRDA_ShutdownSuccess.I=\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u304c\u6b63\u5e38\u306b\u884c\u308f\u308c\u307e\u3057\u305f\u3002
+DRDA_ShutdownWarning.I=Cloudscape \u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u306e\u8b66\u544a:\n {0}
+DRDA_ShutdownError.S=\u30db\u30b9\u30c8 {1} \u306e\u30dd\u30fc\u30c8 {0} \u306e\u30b5\u30fc\u30d0\u30fc\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+DRDA_BootSuccess.I=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {0} \u306e\u30d6\u30fc\u30c8\u304c\u6b63\u5e38\u306b\u884c\u308f\u308c\u307e\u3057\u305f\u3002
+DRDA_DBShutdownSuccess.I=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {0} \u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u304c\u6b63\u5e38\u306b\u884c\u308f\u308c\u307e\u3057\u305f\u3002
+DRDA_CommandError.S=\u30b3\u30de\u30f3\u30c9 {0} \u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+DRDA_NotImplemented.S={0} \u306f\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+DRDA_NoArgs.U=\u5f15\u304d\u6570\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+DRDA_UnknownArgument.U=\u5f15\u304d\u6570 {0} \u304c\u4e0d\u660e\u3067\u3059\u3002
+DRDA_UnknownCommand.U=\u30b3\u30de\u30f3\u30c9 {0} \u304c\u4e0d\u660e\u3067\u3059\u3002
+DRDA_InvalidValue.U={0} \u306f\u3001{1} \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5024\u3067\u3059\u3002
+DRDA_OnOffValue.U={0} \u306f\u7121\u52b9\u306a\u5024\u3067\u3059\u3002 \u5024\u306f\u3001'on' \u307e\u305f\u306f 'off' \u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+DRDA_PortNumber.I=\u30dd\u30fc\u30c8\u756a\u53f7
+DRDA_Host.I=\u30db\u30b9\u30c8
+DRDA_DatabaseDirectory.I=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc
+DRDA_Password.I=\u30d1\u30b9\u30ef\u30fc\u30c9
+DRDA_User.I=\u30e6\u30fc\u30b6\u30fc
+DRDA_EncryptionAlgorithm.I=\u6697\u53f7\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0
+DRDA_EncryptionProvider.I=\u6697\u53f7\u5316\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc
+DRDA_Session.I=\u30bb\u30c3\u30b7\u30e7\u30f3
+DRDA_TraceDirectoryChange.I=\u30c8\u30ec\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306f {0} \u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002
+DRDA_InvalidNoArgs.U=\u30b3\u30de\u30f3\u30c9 {0} \u306e\u5f15\u304d\u6570\u304c\u7121\u52b9\u3067\u3059\u3002
+DRDA_LogConnectionsChange.I=\u30ed\u30b0\u63a5\u7d9a\u304c {0} \u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002
+DRDA_TraceChangeAll.I=\u3059\u3079\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30c8\u30ec\u30fc\u30b9\u304c {0} \u306b\u5207\u308a\u66ff\u308f\u308a\u307e\u3057\u305f\u3002
+DRDA_TraceChangeOne.I=\u30bb\u30c3\u30b7\u30e7\u30f3 {1} \u306e\u30c8\u30ec\u30fc\u30b9\u304c {0} \u306b\u5207\u308a\u66ff\u308f\u308a\u307e\u3057\u305f\u3002
+DRDA_ON.I=\u30aa\u30f3
+DRDA_OFF.I=\u30aa\u30d5
+DRDA_UnknownHost.S=\u30db\u30b9\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}\u3002
+DRDA_UnknownHostWarning.I=\u8b66\u544a: UnknkownHostException: {0}\u3002
+DRDA_NeedLocalHost.S=\u30db\u30b9\u30c8: {0} \u304c {1} \u3067\u7a3c\u50cd\u4e2d\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u3067\u306f\u306a\u3044\u305f\u3081\u3001NetworkServerControl \u30b3\u30de\u30f3\u30c9\u306b\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
+DRDA_NoIO.S=\u30db\u30b9\u30c8 {0}\u3001\u30dd\u30fc\u30c8 {1} \u306e Cloudscape Network Server \u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+DRDA_InvalidReplyHeader1.S=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u306e\u5fdc\u7b54\u30d8\u30c3\u30c0\u30fc\u304c\u7121\u52b9\u3067\u3059: \u9577\u3055 {0} \u306f\u77ed\u3059\u304e\u307e\u3059\u3002
+DRDA_InvalidReplyHeader2.S=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u306e\u5fdc\u7b54\u30d8\u30c3\u30c0\u30fc\u304c\u7121\u52b9\u3067\u3059: \u30b9\u30c8\u30ea\u30f3\u30b0 {0} \u306f\u7121\u52b9\u3067\u3059\u3002
+DRDA_InvalidReplyTooShort.S=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u306e\u5fdc\u7b54\u304c\u7121\u52b9\u3067\u3059: \u30c7\u30fc\u30bf\u304c\u4e0d\u5341\u5206\u3067\u3059\u3002
+DRDA_SysInfoError.S=SysInfo \u60c5\u5831\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u3067\u3059\u3002
+DRDA_SysInfoWriteError.S=SysInfo \u60c5\u5831\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u3067\u3059:\n {0}
+DRDA_RuntimeInfoError.S=RuntimeInfo \u60c5\u5831\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u3067\u3059\u3002
+DRDA_PropInfoError.S=\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u60c5\u5831\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u3067\u3059\u3002
+DRDA_PropInfoWriteError.S=\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u60c5\u5831\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u3067\u3059:\n {0}
+DRDA_ProductVersionReadError.S=Cloudscape \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304b\u3089\u306e\u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u306e\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u3067\u3059\u3002 {0}\u3002
+DRDA_ConnectionTested.I=\u6b21\u306e\u30db\u30b9\u30c8\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3057\u307e\u3057\u305f: {0}\u3001\u30dd\u30fc\u30c8\u756a\u53f7 {1}\u3002
+DRDA_ConnectionTested2.I=\u6b21\u306e\u30db\u30b9\u30c8\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3057\u307e\u3057\u305f: {0}\u3001\u30dd\u30fc\u30c8 {1}\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {2}\u3002
+DRDA_ConnectionTested3.I=\u6b21\u306e\u30db\u30b9\u30c8\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3057\u307e\u3057\u305f: {0}\u3001\u30dd\u30fc\u30c8 {1}\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {2}\u3001\u30e6\u30fc\u30b6\u30fc {3}\u3002
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U={0} \u306b\u5bfe\u3057\u3066\u5fc5\u8981\u306a\u5024\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+DRDA_InvalidPropVal.S=\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc {0} \u306e\u5024\u304c\u7121\u52b9\u3067\u3059\u3002\u5024: {1}\u3002
+DRDA_SessionNotFound.U=\u30bb\u30c3\u30b7\u30e7\u30f3 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+DRDA_MaxThreadsChange.I=\u6700\u5927\u30b9\u30ec\u30c3\u30c9\u6570\u304c {0} \u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002
+DRDA_TimeSliceChange.I=\u30bf\u30a4\u30e0\u30fb\u30b9\u30e9\u30a4\u30b9\u304c {0} \u30df\u30ea\u79d2\u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002
+DRDA_InvalidValue.U={0} \u306f\u3001{1} \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5024\u3067\u3059\u3002
+DRDA_IOException.S=IOException: {0}\u3002
+DRDA_UnknownProtocol=\u7121\u52b9\u306a\u30b3\u30de\u30f3\u30c9\u30fb\u30d7\u30ed\u30c8\u30b3\u30eb\u7248\u756a\u53f7: {0}\u3002
+DRDA_MissingLocale.I=\u73fe\u884c\u30ed\u30b1\u30fc\u30eb\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002{0} \u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u3002
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Cloudscape Network Server \u60c5\u5831 --------
+DRDA_SysInfoVersion.I=\u30d0\u30fc\u30b8\u30e7\u30f3:
+DRDA_SysInfoBuild.I=\u30d3\u30eb\u30c9:
+DRDA_SysInfoDrdaPRDID.I=DRDA \u88fd\u54c1 ID:
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Cloudscape Network Server \u30e9\u30f3\u30bf\u30a4\u30e0\u60c5\u5831 ---
+DRDA_RuntimeInfoSessionBanner.I=---------- \u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831 ---------------
+DRDA_RuntimeInfoNumThreads.I=# \u63a5\u7d9a\u30b9\u30ec\u30c3\u30c9: 
+DRDA_RuntimeInfoNumActiveSessions.I=# \u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30bb\u30c3\u30b7\u30e7\u30f3: 
+DRDA_RuntimeInfoNumWaitingSessions.I=# \u5f85\u3061\u30bb\u30c3\u30b7\u30e7\u30f3: 
+DRDA_RuntimeInfoSessionNumber.I=\u30bb\u30c3\u30b7\u30e7\u30f3 # :
+DRDA_RuntimeInfoDatabase.I=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9:
+DRDA_RuntimeInfoUser.I=\u30e6\u30fc\u30b6\u30fc:
+DRDA_RuntimeInfoNumStatements.I=# \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8:
+DRDA_RuntimeInfoPreparedStatementHeader.I=\u6e96\u5099\u6e08\u307f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u60c5\u5831: \n\tStmt ID\t\tSQLText\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=\u5408\u8a08\u30e1\u30e2\u30ea\u30fc: 
+DRDA_RuntimeInfoFreeMemory.I=\u7a7a\u304d\u30e1\u30e2\u30ea\u30fc: 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=\u4f7f\u7528\u6cd5: NetworkServerControl <\u30b3\u30de\u30f3\u30c9> 
+DRDA_Usage2.I=\u30b3\u30de\u30f3\u30c9:
+DRDA_Usage3.I=start [-h <\u30db\u30b9\u30c8>] [-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage4.I=shutdown [-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage5.I=ping [-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage6.I=sysinfo [-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage7.I=runtimeinfo [-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage8.I=logconnections {on|off}[-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage9.I=maxthreads <\u6700\u5927\u6570>[-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage10.I=timeslice <\u30df\u30ea\u79d2>[-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage11.I=trace {on|off} [-s <\u30bb\u30c3\u30b7\u30e7\u30f3 ID>][-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+DRDA_Usage12.I=tracedirectory <\u30c8\u30ec\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc>[-h <\u30db\u30b9\u30c8>][-p <\u30dd\u30fc\u30c8\u756a\u53f7>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_ko_KR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_ko_KR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+\ufeff# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Cloudscape JDBC \ub4dc\ub77c\uc774\ubc84 \ub85c\ub4dc \uc911\uc5d0 \uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.\n {0}
+DRDA_PropertyException.S=cloudscape.properties\ub97c \uc77d\ub294 \uc911\uc5d0 \uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.\n {0}
+DRDA_UnexpectedException.S=\uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678:\n{0}
+DRDA_ListenPort.S={1} \ud638\uc2a4\ud2b8\uc5d0\uc11c {0} \ud3ec\ud2b8\ub97c \ub300\uae30\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_NoInputStream.S=\ud074\ub77c\uc774\uc5b8\ud2b8 \uc18c\ucf13\uc5d0 \ub300\ud55c \uc785\ub825 \uc2a4\ud2b8\ub9bc\uc744 \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_Ready.I=\uc11c\ubc84\uac00 {0} \ud3ec\ud2b8\uc5d0\uc11c\uc758 \uc5f0\uacb0\uc744 \uc2b9\uc778\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_UnableToAccept.S=\uc5f0\uacb0\uc744 \uc2b9\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_ConnNumber.I=\uc5f0\uacb0 \ubc88\ud638: {0}.
+DRDA_ClientSocketError.S=\ud074\ub77c\uc774\uc5b8\ud2b8 \uc18c\ucf13 \uc624\ub958:\n{0}
+DRDA_ListenerClose.S=\ub9ac\uc2a4\ub108 \uc2a4\ub808\ub4dc\ub97c \ub2eb\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_ShutdownSuccess.I=\uc2dc\uc2a4\ud15c\uc774 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_ShutdownWarning.I=Cloudscape \uc2dc\uc2a4\ud15c \uc885\ub8cc \uacbd\uace0:\n {0}
+DRDA_ShutdownError.S={1} \ud638\uc2a4\ud2b8\uc5d0\uc11c {0} \ud3ec\ud2b8\uc758 \uc2dc\uc2a4\ud15c \uc885\ub8cc\ub97c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_BootSuccess.I={0} \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubd80\ud305\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_DBShutdownSuccess.I={0} \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc2dc\uc2a4\ud15c\uc774 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_CommandError.S={0} \uba85\ub839 \ucc98\ub9ac \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+DRDA_NotImplemented.S={0}\uc774(\uac00) \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+DRDA_NoArgs.U=\uc778\uc218\ub97c \uc81c\uacf5\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+DRDA_UnknownArgument.U={0} \uc778\uc218\ub97c \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_UnknownCommand.U={0} \uba85\ub839\uc744 \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_InvalidValue.U={1}\uc5d0 \ub300\ud574 {0} \uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+DRDA_OnOffValue.U={0} \uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uac12\uc740 'on' \ub610\ub294 'off'\uc785\ub2c8\ub2e4.
+DRDA_PortNumber.I=\ud3ec\ud2b8 \ubc88\ud638
+DRDA_Host.I=\ud638\uc2a4\ud2b8
+DRDA_DatabaseDirectory.I=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub514\ub809\ud1a0\ub9ac
+DRDA_Password.I=\uc554\ud638
+DRDA_User.I=\uc0ac\uc6a9\uc790
+DRDA_EncryptionAlgorithm.I=\uc554\ud638\ud654 \uc54c\uace0\ub9ac\uc998
+DRDA_EncryptionProvider.I=\uc554\ud638\ud654 \uc81c\uacf5\uc790
+DRDA_Session.I=\uc138\uc158
+DRDA_TraceDirectoryChange.I=\ucd94\uc801 \ub514\ub809\ud1a0\ub9ac\uac00 {0}(\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_InvalidNoArgs.U={0} \uba85\ub839\uc5d0 \ub300\ud55c \uc778\uc218\uc758 \uc218\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+DRDA_LogConnectionsChange.I=\ub85c\uadf8 \uc5f0\uacb0\uc774 {0}(\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_TraceChangeAll.I=\ubaa8\ub4e0 \uc138\uc158\uc5d0 \ub300\ud574 \ucd94\uc801\uc774 {0}(\uc73c)\ub85c \uc804\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_TraceChangeOne.I={1} \uc138\uc158\uc5d0 \ub300\ud574 \ucd94\uc801\uc774 {0}(\uc73c)\ub85c \uc804\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_ON.I=On
+DRDA_OFF.I=Off
+DRDA_UnknownHost.S={0} \ud638\uc2a4\ud2b8\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_UnknownHostWarning.I=\uacbd\uace0: UnknkownHostException: {0}.
+DRDA_NeedLocalHost.S=\ud638\uc2a4\ud2b8: {0}\uc774(\uac00) {1}\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\uc5d0 \ub300\ud55c \ub85c\uceec\uc774 \uc544\ub2c8\ubbc0\ub85c, NetworkServerControl \uba85\ub839\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_NoIO.S={0} \ud638\uc2a4\ud2b8, {1} \ud3ec\ud2b8\uc5d0\uc11c Cloudscape Network Server\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_InvalidReplyHeader1.S=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84\uc5d0\uc11c\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc751\ub2f5 \uba38\ub9ac\uae00: \uae38\uc774({0})\uac00 \ub108\ubb34 \uc9e7\uc2b5\ub2c8\ub2e4.
+DRDA_InvalidReplyHeader2.S=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84\uc5d0\uc11c\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc751\ub2f5 \uba38\ub9ac\uae00: \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ubb38\uc790\uc5f4 {0}.
+DRDA_InvalidReplyTooShort.S=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84\uc5d0\uc11c\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc751\ub2f5: \ucda9\ubd84\ud558\uc9c0 \uc54a\uc740 \ub370\uc774\ud130.
+DRDA_SysInfoError.S=SysInfo \uc815\ubcf4 \uac00\uc838\uc624\uae30 \uc624\ub958.
+DRDA_SysInfoWriteError.S=SysInfo \uc815\ubcf4 \uc4f0\uae30 \uc624\ub958:\n {0}
+DRDA_RuntimeInfoError.S=RuntimeInfo \uc815\ubcf4 \uac00\uc838\uc624\uae30 \uc624\ub958.
+DRDA_PropInfoError.S=\ub4f1\ub85d \uc815\ubcf4 \uac00\uc838\uc624\uae30 \uc624\ub958.
+DRDA_PropInfoWriteError.S=\ub4f1\ub85d \uc815\ubcf4 \uc4f0\uae30 \uc624\ub958:\n {0}
+DRDA_ProductVersionReadError.S=Cloudscape \uc124\uce58 \uc911\uc5d0 \uc81c\ud488 \ubc84\uc804 \uc815\ubcf4\ub97c \uc77d\ub294 \uc911 \uc624\ub958. {0}.
+DRDA_ConnectionTested.I=\ud638\uc2a4\ud2b8: {0}, \ud3ec\ud2b8 \ubc88\ud638: {1}\uc5d0 \ub300\ud574 \uac00\uc838\uc628 \uc5f0\uacb0.
+DRDA_ConnectionTested2.I=\ud638\uc2a4\ud2b8: {0}, \ud3ec\ud2b8: {1}, \ub370\uc774\ud130\ubca0\uc774\uc2a4: {2}\uc5d0 \ub300\ud574 \uac00\uc838\uc628 \uc5f0\uacb0.
+DRDA_ConnectionTested3.I=\ud638\uc2a4\ud2b8: {0}, \ud3ec\ud2b8: {1}, \ub370\uc774\ud130\ubca0\uc774\uc2a4: {2}, \uc0ac\uc6a9\uc790: {3}\uc5d0 \ub300\ud574 \uac00\uc838\uc628 \uc5f0\uacb0.
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U={0}\uc5d0 \ub300\ud55c \ud544\uc218 \uac12\uc774 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_InvalidPropVal.S={0} \ub4f1\ub85d \uc815\ubcf4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12: {1}.
+DRDA_SessionNotFound.U={0} \uc138\uc158\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+DRDA_MaxThreadsChange.I=\ucd5c\ub300 \uc2a4\ub808\ub4dc\uac00 {0}(\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_TimeSliceChange.I=\uc2dc\uac04 \uc2ac\ub77c\uc774\uc2a4\uac00 {0}(\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+DRDA_InvalidValue.U={1}\uc5d0 \ub300\ud574 {0} \uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+DRDA_IOException.S=IOException: {0}.
+DRDA_UnknownProtocol=\uc54c \uc218 \uc5c6\ub294 \uba85\ub839 \ud504\ub85c\ud1a0\ucf5c \ubc84\uc804: {0}.
+DRDA_MissingLocale.I=\ud604\uc7ac \ub85c\ucf00\uc77c\uc758 \uc790\uc6d0\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}(\uc73c)\ub85c \uc804\ud658\ud569\ub2c8\ub2e4.
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Cloudscape \ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84 \uc815\ubcf4 --------
+DRDA_SysInfoVersion.I=\ubc84\uc804:
+DRDA_SysInfoBuild.I=\ube4c\ub4dc:
+DRDA_SysInfoDrdaPRDID.I=DRDA \uc81c\ud488 ID:
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Cloudscape Network Server \ub7f0\ud0c0\uc784 \uc815\ubcf4 ---
+DRDA_RuntimeInfoSessionBanner.I=---------- \uc138\uc158 \uc815\ubcf4 ---------------
+DRDA_RuntimeInfoNumThreads.I=# \uc5f0\uacb0 \uc2a4\ub808\ub4dc : 
+DRDA_RuntimeInfoNumActiveSessions.I=# \ud65c\uc131 \uc138\uc158 \uc218 : 
+DRDA_RuntimeInfoNumWaitingSessions.I=# \ub300\uae30 \uc138\uc158 \uc218 : 
+DRDA_RuntimeInfoSessionNumber.I=\uc138\uc158 # :
+DRDA_RuntimeInfoDatabase.I=\ub370\uc774\ud130\ubca0\uc774\uc2a4 :
+DRDA_RuntimeInfoUser.I=\uc0ac\uc6a9\uc790 :
+DRDA_RuntimeInfoNumStatements.I=# \uba85\ub839\ubb38:
+DRDA_RuntimeInfoPreparedStatementHeader.I=\uc900\ube44\ub41c \uba85\ub839\ubb38 \uc815\ubcf4: \n\tStmt ID\t\tSQLText\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=\ucd1d \uba54\ubaa8\ub9ac : 
+DRDA_RuntimeInfoFreeMemory.I=\uc5ec\uc720 \uba54\ubaa8\ub9ac : 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=\uc0ac\uc6a9\ubc95: NetworkServerControl <commands> 
+DRDA_Usage2.I=\uba85\ub839:
+DRDA_Usage3.I=start [-h <host>] [-p <portnumber>]
+DRDA_Usage4.I=shutdown [-h <host>][-p <portnumber>]
+DRDA_Usage5.I=ping [-h <host>][-p <portnumber>]
+DRDA_Usage6.I=sysinfo [-h <host>][-p <portnumber>]
+DRDA_Usage7.I=runtimeinfo [-h <host>][-p <portnumber>]
+DRDA_Usage8.I=logconnections {on|off}[-h <host>][-p <portnumber>]
+DRDA_Usage9.I=maxthreads <max>[-h <host>][-p <portnumber>]
+DRDA_Usage10.I=timeslice <milliseconds>[-h <host>][-p <portnumber>]
+DRDA_Usage11.I=trace {on|off} [-s <session id>][-h <host>][-p <portnumber>]
+DRDA_Usage12.I=tracedirectory <traceDirectory>[-h <host>][-p <portnumber>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_pt_BR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_pt_BR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=Exce\u00e7\u00e3o inesperada ao carregar o Cloudscape JDBC Driver:\n {0}
+DRDA_PropertyException.S=Exce\u00e7\u00e3o inesperada ao ler cloudscape.properties:\n {0}
+DRDA_UnexpectedException.S=Exce\u00e7\u00e3o inesperada:\n {0}
+DRDA_ListenPort.S=N\u00e3o foi poss\u00edvel atender na porta {0} do host {1}.
+DRDA_NoInputStream.S=N\u00e3o foi poss\u00edvel obter fluxo de entrada para o soquete do cliente.
+DRDA_Ready.I=O servidor est\u00e1 pronto para aceitar conex\u00f5es na porta {0}.
+DRDA_UnableToAccept.S=N\u00e3o \u00e9 poss\u00edvel aceitar conex\u00f5es.
+DRDA_ConnNumber.I=N\u00famero da conex\u00e3o: {0}.
+DRDA_ClientSocketError.S=Erro no soquete do cliente:\n {0}
+DRDA_ListenerClose.S=N\u00e3o \u00e9 poss\u00edvel fechar o encadeamento do atendente.
+DRDA_ShutdownSuccess.I=Encerramento bem-sucedido.
+DRDA_ShutdownWarning.I=Aviso de encerramento do Cloudscape:\n {0}
+DRDA_ShutdownError.S=N\u00e3o foi poss\u00edvel encerrar servidor na porta {0} do host {1}.
+DRDA_BootSuccess.I=Reinicializa\u00e7\u00e3o do banco de dados, {0}, bem-sucedida.
+DRDA_DBShutdownSuccess.I=Encerramento do banco de dados, {0}, bem-sucedido.
+DRDA_CommandError.S=Ocorreu um erro ao processar o comando {0}.
+DRDA_NotImplemented.S={0} n\u00e3o est\u00e1 implementado.
+DRDA_NoArgs.U=Nenhum argumento fornecido.
+DRDA_UnknownArgument.U=O argumento {0} \u00e9 desconhecido.
+DRDA_UnknownCommand.U=O comando {0} \u00e9 desconhecido.
+DRDA_InvalidValue.U=Valor {0} inv\u00e1lido para {1}.
+DRDA_OnOffValue.U=Valor inv\u00e1lido, {0}. O valor deve ser 'on' ou 'off'.
+DRDA_PortNumber.I=n\u00famero da porta
+DRDA_Host.I=host
+DRDA_DatabaseDirectory.I=diret\u00f3rio do banco de dados
+DRDA_Password.I=senha
+DRDA_User.I=usu\u00e1rio
+DRDA_EncryptionAlgorithm.I=algoritmo de criptografia
+DRDA_EncryptionProvider.I=provedor de criptografia
+DRDA_Session.I=sess\u00e3o
+DRDA_TraceDirectoryChange.I=Diret\u00f3rio de rastreio alterado para {0}.
+DRDA_InvalidNoArgs.U=N\u00famero inv\u00e1lido de argumentos para o comando {0}.
+DRDA_LogConnectionsChange.I=Conex\u00f5es de log alteradas para {0}.
+DRDA_TraceChangeAll.I=O rastreio se tornou {0} para todas as sess\u00f5es.
+DRDA_TraceChangeOne.I=O rastreio se tornou {0} para a sess\u00e3o {1}.
+DRDA_ON.I=em
+DRDA_OFF.I=desativado
+DRDA_UnknownHost.S=N\u00e3o \u00e9 poss\u00edvel localizar o host: {0}.
+DRDA_UnknownHostWarning.I=Aviso: UnknkownHostException: {0}.
+DRDA_NeedLocalHost.S=host: {0} n\u00e3o \u00e9 local para o servidor em execu\u00e7\u00e3o em {1}; dessa forma ele n\u00e3o pode ser utilizado para comandos NetworkServerControl  
+DRDA_NoIO.S=N\u00e3o foi poss\u00edvel conectar-se ao Cloudscape Network Server no host {0}, porta {1}.
+DRDA_InvalidReplyHeader1.S=Cabe\u00e7alho de resposta inv\u00e1lido do servidor de rede: Comprimento {0} insuficiente.
+DRDA_InvalidReplyHeader2.S=Cabe\u00e7alho de resposta inv\u00e1lido do servidor de rede: Cadeia {0} inv\u00e1lida.
+DRDA_InvalidReplyTooShort.S=Resposta inv\u00e1lida do servidor de rede: Dados insuficientes.
+DRDA_SysInfoError.S=Erro ao obter informa\u00e7\u00f5es de SysInfo.
+DRDA_SysInfoWriteError.S=Erro ao gravar informa\u00e7\u00f5es de SysInfo:\n {0}
+DRDA_RuntimeInfoError.S=Erro ao obter informa\u00e7\u00f5es sobre RuntimeInfo.
+DRDA_PropInfoError.S=Erro ao obter informa\u00e7\u00f5es de propriedades.
+DRDA_PropInfoWriteError.S=Erro ao gravar informa\u00e7\u00f5es de propriedades:\n {0}
+DRDA_ProductVersionReadError.S=Erro ao verificar a informa\u00e7\u00e3o vers\u00e3o do produto da instala\u00e7\u00e3o Cloudscape. {0}.
+DRDA_ConnectionTested.I=Conex\u00e3o obtida para o host: {0}, n\u00famero da porta {1}.
+DRDA_ConnectionTested2.I=Conex\u00e3o obtida para o host: {0}, porta {1}, banco de dados {2}.
+DRDA_ConnectionTested3.I=Conex\u00e3o obtida para o host: {0}, porta {1}, banco de dados {2}, usu\u00e1rio {3}.
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U=Valor requerido faltando para {0}.
+DRDA_InvalidPropVal.S=Valor inv\u00e1lido para propriedade, {0}, valor: {1}.
+DRDA_SessionNotFound.U=Sess\u00e3o, {0}, n\u00e3o localizada.
+DRDA_MaxThreadsChange.I=M\u00e1ximo de encadeamentos alterado para {0}.
+DRDA_TimeSliceChange.I=Per\u00edodo de tempo alterado para {0}.
+DRDA_InvalidValue.U=Valor {0} inv\u00e1lido para {1}.
+DRDA_IOException.S=IOException: {0}.
+DRDA_UnknownProtocol=Vers\u00e3o de Protocolo de Comando Desconhecida: {0}.
+DRDA_MissingLocale.I=Recursos n\u00e3o localizados para o locale atual; alternando para {0}.
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Informa\u00e7\u00f5es sobre o Cloudscape Network Server --------
+DRDA_SysInfoVersion.I=Vers\u00e3o:
+DRDA_SysInfoBuild.I=Compila\u00e7\u00e3o:
+DRDA_SysInfoDrdaPRDID.I=ID do Produto DRDA:
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Informa\u00e7\u00f5es sobre Tempo de Execu\u00e7\u00e3o do Cloudscape Network Server ---
+DRDA_RuntimeInfoSessionBanner.I=---------- Informa\u00e7\u00f5es sobre a Sess\u00e3o ---------------
+DRDA_RuntimeInfoNumThreads.I=N\u00ba de Encadeamentos de Conex\u00e3o : 
+DRDA_RuntimeInfoNumActiveSessions.I=N\u00ba de Sess\u00f5es Ativas : 
+DRDA_RuntimeInfoNumWaitingSessions.I=N\u00ba de Sess\u00f5es Em Espera : 
+DRDA_RuntimeInfoSessionNumber.I=N\u00ba da Sess\u00e3o :
+DRDA_RuntimeInfoDatabase.I=Banco de Dados :
+DRDA_RuntimeInfoUser.I=Usu\u00e1rio :
+DRDA_RuntimeInfoNumStatements.I=N\u00ba de Instru\u00e7\u00f5es:
+DRDA_RuntimeInfoPreparedStatementHeader.I=Informa\u00e7\u00f5es sobre a Instru\u00e7\u00e3o Preparada: \n \tStmt ID\t\tSQLText\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=Mem\u00f3ria Total : 
+DRDA_RuntimeInfoFreeMemory.I=Mem\u00f3ria Livre : 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=Utiliza\u00e7\u00e3o: NetworkServerControl <comandos> 
+DRDA_Usage2.I=Comandos:
+DRDA_Usage3.I=start [-h <host>] [-p <n\u00famero_da_porta>]
+DRDA_Usage4.I=shutdown [-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage5.I=ping [-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage6.I=sysinfo [-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage7.I=runtimeinfo [-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage8.I=logconnections {on|off}[-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage9.I=maxthreads <max>[-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage10.I=timeslice <milissegundos>[-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage11.I=trace {on|off} [-s <id_da_sess\u00e3o>][-h <host>][-p <n\u00famero_da_porta>]
+DRDA_Usage12.I=tracedirectory <diret\u00f3rio_de_rastreio>[-h <host>][-p <n\u00famero_da_porta>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_zh_CN.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_zh_CN.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=\u5f53\u88c5\u5165 Cloudscape JDBC \u9a71\u52a8\u7a0b\u5e8f\u65f6\uff0c\u53d1\u751f\u610f\u5916\u5f02\u5e38\uff1a\n {0}
+DRDA_PropertyException.S=\u5f53\u8bfb\u53d6 cloudscape.properties \u65f6\uff0c\u53d1\u751f\u610f\u5916\u5f02\u5e38\uff1a\n {0}
+DRDA_UnexpectedException.S=\u610f\u5916\u5f02\u5e38\uff1a\n {0}
+DRDA_ListenPort.S=\u65e0\u6cd5\u4fa6\u542c\u4e3b\u673a {1} \u4e0a\u7684\u7aef\u53e3 {0}\u3002
+DRDA_NoInputStream.S=\u65e0\u6cd5\u83b7\u53d6\u5ba2\u6237\u673a\u5957\u63a5\u5b57\u7684\u8f93\u5165\u6d41\u3002
+DRDA_Ready.I=\u670d\u52a1\u5668\u51c6\u5907\u5728\u7aef\u53e3 {0} \u4e0a\u63a5\u53d7\u8fde\u63a5\u3002
+DRDA_UnableToAccept.S=\u65e0\u6cd5\u63a5\u53d7\u8fde\u63a5\u3002
+DRDA_ConnNumber.I=\u8fde\u63a5\u6570\uff1a{0}\u3002
+DRDA_ClientSocketError.S=\u5ba2\u6237\u673a\u5957\u63a5\u5b57\u4e0a\u51fa\u9519\uff1a\n {0}
+DRDA_ListenerClose.S=\u65e0\u6cd5\u7ed3\u675f\u4fa6\u542c\u5668\u7ebf\u7a0b\u3002
+DRDA_ShutdownSuccess.I=\u5173\u95ed\u6210\u529f\u3002
+DRDA_ShutdownWarning.I=Cloudscape \u5173\u95ed\u65f6\u53d1\u51fa\u8b66\u544a\uff1a\n {0}
+DRDA_ShutdownError.S=\u65e0\u6cd5\u5173\u95ed\u4f4d\u4e8e\u4e3b\u673a {1} \u7684\u7aef\u53e3 {0} \u4e0a\u7684\u670d\u52a1\u5668\u3002
+DRDA_BootSuccess.I=\u5f15\u5bfc\u6570\u636e\u5e93 {0} \u6210\u529f\u3002
+DRDA_DBShutdownSuccess.I=\u5173\u95ed\u6570\u636e\u5e93 {0} \u6210\u529f\u3002
+DRDA_CommandError.S=\u5904\u7406\u547d\u4ee4 {0} \u65f6\u53d1\u751f\u9519\u8bef\u3002
+DRDA_NotImplemented.S={0} \u672a\u5b9e\u73b0\u3002
+DRDA_NoArgs.U=\u672a\u7ed9\u5b9a\u81ea\u53d8\u91cf\u3002
+DRDA_UnknownArgument.U=\u81ea\u53d8\u91cf {0} \u662f\u672a\u77e5\u7684\u3002
+DRDA_UnknownCommand.U=\u547d\u4ee4 {0} \u662f\u672a\u77e5\u7684\u3002
+DRDA_InvalidValue.U={1} \u7684\u503c {0} \u65e0\u6548\u3002
+DRDA_OnOffValue.U=\u503c {0} \u65e0\u6548\u3002\u503c\u5fc5\u987b\u4e3a\u201con\u201d\u6216\u201coff\u201d\u3002
+DRDA_PortNumber.I=\u7aef\u53e3\u53f7
+DRDA_Host.I=\u4e3b\u673a
+DRDA_DatabaseDirectory.I=\u6570\u636e\u5e93\u76ee\u5f55
+DRDA_Password.I=\u5bc6\u7801
+DRDA_User.I=\u7528\u6237
+DRDA_EncryptionAlgorithm.I=\u52a0\u5bc6\u7b97\u6cd5
+DRDA_EncryptionProvider.I=\u52a0\u5bc6\u63d0\u4f9b\u7a0b\u5e8f
+DRDA_Session.I=\u4f1a\u8bdd
+DRDA_TraceDirectoryChange.I=\u8ddf\u8e2a\u76ee\u5f55\u66f4\u6539\u4e3a {0}\u3002
+DRDA_InvalidNoArgs.U=\u547d\u4ee4 {0} \u7684\u81ea\u53d8\u91cf\u6570\u65e0\u6548\u3002
+DRDA_LogConnectionsChange.I=\u65e5\u5fd7\u8fde\u63a5\u66f4\u6539\u4e3a {0}\u3002
+DRDA_TraceChangeAll.I=\u8ddf\u8e2a\u4e3a\u6240\u6709\u4f1a\u8bdd\u8f6c\u6362\u4e3a {0}\u3002
+DRDA_TraceChangeOne.I=\u8ddf\u8e2a\u4e3a\u4f1a\u8bdd {1} \u8f6c\u6362\u4e3a {0}\u3002
+DRDA_ON.I=on
+DRDA_OFF.I=off
+DRDA_UnknownHost.S=\u627e\u4e0d\u5230\u4e3b\u673a\uff1a{0}\u3002
+DRDA_UnknownHostWarning.I=\u8b66\u544a\uff1aUnknkownHostException\uff1a{0}\u3002
+DRDA_NeedLocalHost.S=\u4e3b\u673a\uff1a{0} \u5bf9\u4e8e\u8fd0\u884c\u4e8e {1} \u4e0a\u7684\u670d\u52a1\u5668\u800c\u8a00\u4e0d\u662f\u672c\u5730\u7684\uff0c\u56e0\u6b64\u65e0\u6cd5\u7528\u4e8e NetworkServerControl \u547d\u4ee4  
+DRDA_NoIO.S=\u65e0\u6cd5\u8fde\u63a5\u5230\u4e3b\u673a {0} \u7684\u7aef\u53e3 {1} \u4e0a\u7684 Cloudscape \u7f51\u7edc\u670d\u52a1\u5668\u3002
+DRDA_InvalidReplyHeader1.S=\u6765\u81ea\u7f51\u7edc\u670d\u52a1\u5668\u7684\u65e0\u6548\u5e94\u7b54\u62a5\u5934\uff1a\u957f\u5ea6 {0} \u592a\u77ed\u3002
+DRDA_InvalidReplyHeader2.S=\u6765\u81ea\u7f51\u7edc\u670d\u52a1\u5668\u7684\u65e0\u6548\u5e94\u7b54\u62a5\u5934\uff1a\u65e0\u6548\u5b57\u7b26\u4e32 {0}\u3002
+DRDA_InvalidReplyTooShort.S=\u6765\u81ea\u7f51\u7edc\u670d\u52a1\u5668\u7684\u65e0\u6548\u5e94\u7b54\uff1a\u6570\u636e\u4e0d\u8db3\u3002
+DRDA_SysInfoError.S=\u83b7\u53d6 SysInfo \u4fe1\u606f\u65f6\u51fa\u9519\u3002
+DRDA_SysInfoWriteError.S=\u5199 SysInfo \u4fe1\u606f\u65f6\u51fa\u9519\uff1a\n {0}
+DRDA_RuntimeInfoError.S=\u83b7\u53d6 RuntimeInfo \u4fe1\u606f\u65f6\u51fa\u9519\u3002
+DRDA_PropInfoError.S=\u83b7\u53d6\u5c5e\u6027\u4fe1\u606f\u65f6\u51fa\u9519\u3002
+DRDA_PropInfoWriteError.S=\u5199\u5c5e\u6027\u4fe1\u606f\u65f6\u51fa\u9519\uff1a\n {0}
+DRDA_ProductVersionReadError.S=\u4ece Cloudscape \u5b89\u88c5\u8bfb\u53d6\u4ea7\u54c1\u7248\u672c\u4fe1\u606f\u65f6\u51fa\u9519\u3002{0}\u3002
+DRDA_ConnectionTested.I=\u4e3a\u4e3b\u673a\uff1a{0}\uff0c\u7aef\u53e3\u53f7 {1} \u83b7\u53d6\u8fde\u63a5\u3002
+DRDA_ConnectionTested2.I=\u4e3a\u4e3b\u673a\uff1a{0}\uff0c\u7aef\u53e3 {1}\uff0c\u6570\u636e\u5e93 {2} \u83b7\u53d6\u8fde\u63a5\u3002
+DRDA_ConnectionTested3.I=\u4e3a\u4e3b\u673a\uff1a{0}\uff0c\u7aef\u53e3 {1}\uff0c\u6570\u636e\u5e93 {2}\uff0c\u7528\u6237 {3} \u83b7\u53d6\u8fde\u63a5\u3002
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U={0} \u7f3a\u5c11\u5fc5\u9700\u7684\u503c\u3002
+DRDA_InvalidPropVal.S=\u5c5e\u6027 {0} \u7684\u503c\u65e0\u6548\uff0c\u503c\uff1a{1}\u3002
+DRDA_SessionNotFound.U=\u4f1a\u8bdd {0} \u672a\u627e\u5230\u3002
+DRDA_MaxThreadsChange.I=\u6700\u5927\u7ebf\u7a0b\u6570\u66f4\u6539\u4e3a {0}\u3002
+DRDA_TimeSliceChange.I=\u65f6\u95f4\u7247\u66f4\u6539\u4e3a {0}\u3002
+DRDA_InvalidValue.U={1} \u7684\u503c {0} \u65e0\u6548\u3002
+DRDA_IOException.S=IOException\uff1a{0}\u3002
+DRDA_UnknownProtocol=\u672a\u77e5\u547d\u4ee4\u534f\u8bae\u7248\u672c\uff1a{0}\u3002
+DRDA_MissingLocale.I=\u672a\u627e\u5230\u5f53\u524d\u8bed\u8a00\u73af\u5883\u7684\u8d44\u6e90\uff1b\u5207\u6362\u5230 {0}\u3002
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Cloudscape \u7f51\u7edc\u670d\u52a1\u5668\u4fe1\u606f --------
+DRDA_SysInfoVersion.I=\u7248\u672c\uff1a
+DRDA_SysInfoBuild.I=\u6784\u5efa\uff1a
+DRDA_SysInfoDrdaPRDID.I=DRDA \u4ea7\u54c1\u6807\u8bc6\uff1a
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Cloudscape \u7f51\u7edc\u670d\u52a1\u5668\u8fd0\u884c\u65f6\u4fe1\u606f ---
+DRDA_RuntimeInfoSessionBanner.I=---------- \u4f1a\u8bdd\u4fe1\u606f ---------------
+DRDA_RuntimeInfoNumThreads.I=# \u8fde\u63a5\u7ebf\u7a0b\u6570\uff1a
+DRDA_RuntimeInfoNumActiveSessions.I=# \u6d3b\u52a8\u4f1a\u8bdd\u6570\uff1a
+DRDA_RuntimeInfoNumWaitingSessions.I=# \u7b49\u5f85\u4f1a\u8bdd\u6570\uff1a
+DRDA_RuntimeInfoSessionNumber.I=\u4f1a\u8bdd #\uff1a
+DRDA_RuntimeInfoDatabase.I=\u6570\u636e\u5e93\uff1a
+DRDA_RuntimeInfoUser.I=\u7528\u6237\uff1a
+DRDA_RuntimeInfoNumStatements.I=# \u4e2a\u8bed\u53e5\uff1a
+DRDA_RuntimeInfoPreparedStatementHeader.I=\u9884\u7f16\u8bd1\u8bed\u53e5\u4fe1\u606f\uff1a\n\tStmt ID\t\tSQLText\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=\u603b\u8ba1\u5185\u5b58\uff1a
+DRDA_RuntimeInfoFreeMemory.I=\u53ef\u7528\u5185\u5b58\uff1a
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=\u7528\u6cd5\uff1aNetworkServerControl <commands> 
+DRDA_Usage2.I=\u547d\u4ee4\uff1a
+DRDA_Usage3.I=start [-h <host>] [-p <portnumber>]
+DRDA_Usage4.I=shutdown [-h <host>][-p <portnumber>]
+DRDA_Usage5.I=ping [-h <host>][-p <portnumber>]
+DRDA_Usage6.I=sysinfo [-h <host>][-p <portnumber>]
+DRDA_Usage7.I=runtimeinfo [-h <host>][-p <portnumber>]
+DRDA_Usage8.I=logconnections {on|off}[-h <host>][-p <portnumber>]
+DRDA_Usage9.I=maxthreads <max>[-h <host>][-p <portnumber>]
+DRDA_Usage10.I=timeslice <milliseconds>[-h <host>][-p <portnumber>]
+DRDA_Usage11.I=trace {on|off} [-s <session id>][-h <host>][-p <portnumber>]
+DRDA_Usage12.I=tracedirectory <traceDirectory>[-h <host>][-p <portnumber>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_zh_TW.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/messages_zh_TW.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+# This file contains messages for NetworkServerControl
+# The format is DRDA_X[xxxxx].Y where X[xxxxx] is the message id and Y is the severity
+# Severity values are I - information, S - severe, U - user
+
+DRDA_LoadException.S=\u5728\u8f09\u5165 Cloudscape JDBC \u9a45\u52d5\u7a0b\u5f0f\u6642\uff1a\u767c\u751f\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1\n {0}
+DRDA_PropertyException.S=\u5728\u8b80\u53d6 cloudscape.properties \u6642\uff1a\u767c\u751f\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1\uff1a\n {0}
+DRDA_UnexpectedException.S=\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1\uff1a\n {0}
+DRDA_ListenPort.S=\u7121\u6cd5\u63a5\u807d\u57e0 {0}\u3001\u4e3b\u6a5f {1}\u3002
+DRDA_NoInputStream.S=\u7121\u6cd5\u5f9e\u7528\u6236\u7aef Socket \u53d6\u5f97\u8f38\u5165\u4e32\u6d41\u3002
+DRDA_Ready.I=\u4f3a\u670d\u5668\u5df2\u5099\u59a5\uff0c\u53ef\u63a5\u53d7\u57e0 {0} \u7684\u9023\u7dda\u3002
+DRDA_UnableToAccept.S=\u7121\u6cd5\u63a5\u53d7\u9023\u7dda\u3002
+DRDA_ConnNumber.I=\u9023\u7dda\u865f\u78bc\uff1a{0}\u3002
+DRDA_ClientSocketError.S=\u5728\u7528\u6236\u7aef Socket \u4e0a\u767c\u751f\u932f\u8aa4\uff1a\n {0}
+DRDA_ListenerClose.S=\u7121\u6cd5\u95dc\u9589\u63a5\u807d\u5668\u57f7\u884c\u7dd2\u3002
+DRDA_ShutdownSuccess.I=\u5df2\u9806\u5229\u5b8c\u6210\u95dc\u6a5f\u3002
+DRDA_ShutdownWarning.I=Cloudscape Cloudscape \u8b66\u544a\uff1a\n {0}
+DRDA_ShutdownError.S=\u7121\u6cd5\u95dc\u9589\u5728\u57e0 {0}\u3001\u4e3b\u6a5f {1} \u4e0a\u7684\u4f3a\u670d\u5668\u3002
+DRDA_BootSuccess.I=\u5df2\u9806\u5229\u5b8c\u6210\u555f\u52d5\u8cc7\u6599\u5eab {0}\u3002
+DRDA_DBShutdownSuccess.I=\u5df2\u9806\u5229\u5b8c\u6210\u95dc\u9589\u8cc7\u6599\u5eab {0}\u3002
+DRDA_CommandError.S=\u5728\u8655\u7406\u6307\u4ee4 {0} \u6642\u767c\u751f\u932f\u8aa4\u3002
+DRDA_NotImplemented.S=\u672a\u5be6\u4f5c {0}\u3002
+DRDA_NoArgs.U=\u672a\u7d66\u5b9a\u5f15\u6578\u3002
+DRDA_UnknownArgument.U=\u5f15\u6578 {0} \u4e0d\u660e\u3002
+DRDA_UnknownCommand.U=\u6307\u4ee4 {0} \u4e0d\u660e\u3002
+DRDA_InvalidValue.U={1} \u7684\u503c {0} \u7121\u6548\u3002
+DRDA_OnOffValue.U={0} \u70ba\u7121\u6548\u7684\u503c\u3002\u503c\u5fc5\u9808\u70ba 'on' \u6216 'off'\u3002
+DRDA_PortNumber.I=\u57e0\u865f
+DRDA_Host.I=\u4e3b\u6a5f
+DRDA_DatabaseDirectory.I=\u8cc7\u6599\u5eab\u76ee\u9304
+DRDA_Password.I=\u5bc6\u78bc
+DRDA_User.I=\u4f7f\u7528\u8005
+DRDA_EncryptionAlgorithm.I=\u52a0\u5bc6\u6f14\u7b97\u6cd5
+DRDA_EncryptionProvider.I=\u52a0\u5bc6\u63d0\u4f9b\u8005
+DRDA_Session.I=\u968e\u6bb5\u4f5c\u696d
+DRDA_TraceDirectoryChange.I=\u8ffd\u8e64\u76ee\u9304\u5df2\u8b8a\u66f4\u70ba {0}\u3002
+DRDA_InvalidNoArgs.U=\u6307\u4ee4 {0} \u7684\u5f15\u6578\u6578\u76ee\u7121\u6548\u3002
+DRDA_LogConnectionsChange.I=\u300c\u65e5\u8a8c\u9023\u7dda\u300d\u5df2\u8b8a\u66f4\u70ba {0}\u3002
+DRDA_TraceChangeAll.I=\u6240\u6709\u968e\u6bb5\u4f5c\u696d\u7684\u8ffd\u8e64\u8b8a\u6210 {0}\u3002
+DRDA_TraceChangeOne.I=\u968e\u6bb5\u4f5c\u696d {1} \u7684\u8ffd\u8e64\u8b8a\u6210 {0}\u3002
+DRDA_ON.I=\u958b\u555f
+DRDA_OFF.I=\u95dc\u9589
+DRDA_UnknownHost.S=\u627e\u4e0d\u5230\u4e3b\u6a5f\uff1a{0}\u3002
+DRDA_UnknownHostWarning.I=\u8b66\u544a\uff1aUnknkownHostException\uff1a{0}\u3002
+DRDA_NeedLocalHost.S=\u4e3b\u6a5f\uff1a{0} \u4e0d\u5728\u65bc {1} \u4e0a\u57f7\u884c\u4e4b\u4f3a\u670d\u5668\u7684\u672c\u7aef\uff0c\u56e0\u6b64\u7121\u6cd5\u7528\u65bc NetworkServerControl \u6307\u4ee4  
+DRDA_NoIO.S=\u7121\u6cd5\u9023\u63a5\u81f3\u4e3b\u6a5f {0}\u3001\u57e0 {1} \u4e0a\u7684 Cloudscape Network Server\u3002
+DRDA_InvalidReplyHeader1.S=\u4f86\u81ea\u7db2\u8def\u4f3a\u670d\u5668\u7684\u56de\u8986\u6a19\u982d\u7121\u6548\uff1a\u9577\u5ea6 {0} \u592a\u77ed\u3002
+DRDA_InvalidReplyHeader2.S=\u4f86\u81ea\u7db2\u8def\u4f3a\u670d\u5668\u7684\u56de\u8986\u6a19\u982d\u7121\u6548\uff1a\u5b57\u4e32 {0} \u7121\u6548\u3002
+DRDA_InvalidReplyTooShort.S=\u4f86\u81ea\u7db2\u8def\u4f3a\u670d\u5668\u7684\u56de\u8986\u7121\u6548\uff1a\u8cc7\u6599\u4e0d\u8db3\u3002
+DRDA_SysInfoError.S=\u5728\u53d6\u5f97 SysInfo \u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\u3002
+DRDA_SysInfoWriteError.S=\u5728\u5beb\u5165 SysInfo \u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\uff1a\n {0}
+DRDA_RuntimeInfoError.S=\u5728\u53d6\u5f97 RuntimeInfo \u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\u3002
+DRDA_PropInfoError.S=\u5728\u53d6\u5f97\u5167\u5bb9\u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\u3002
+DRDA_PropInfoWriteError.S=\u5728\u5beb\u5165\u5167\u5bb9\u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\uff1a\n {0}
+DRDA_ProductVersionReadError.S=\u5f9e Cloudscape \u5b89\u88dd\u8b80\u53d6\u7522\u54c1\u7248\u672c\u8cc7\u8a0a\u6642\u767c\u751f\u932f\u8aa4\u3002{0}\u3002
+DRDA_ConnectionTested.I=\u5df2\u53d6\u5f97\u4e3b\u6a5f {0} \u7684\u9023\u7dda\uff0c\u57e0\u865f {1} \u3002
+DRDA_ConnectionTested2.I=\u5df2\u53d6\u5f97\u4e3b\u6a5f {0} \u7684\u9023\u7dda\uff0c\u57e0\u865f {1} \u8cc7\u6599\u5eab {2}\u3002
+DRDA_ConnectionTested3.I=\u5df2\u53d6\u5f97\u4e3b\u6a5f {0} \u7684\u9023\u7dda\uff0c\u57e0\u865f {1}\uff0c\u8cc7\u6599\u5eab {2}\uff0c\u4f7f\u7528\u8005 {3}\u3002
+DRDA_SQLException.S={0}
+DRDA_SQLWarning.I={0}
+DRDA_MissingValue.U={0} \u7f3a\u5c11\u5fc5\u8981\u7684\u503c\u3002
+DRDA_InvalidPropVal.S=\u5167\u5bb9 {0} \u7684\u503c\u7121\u6548\uff0c\u503c\uff1a{1}\u3002
+DRDA_SessionNotFound.U=\u627e\u4e0d\u5230\u968e\u6bb5\u4f5c\u696d {0}\u3002
+DRDA_MaxThreadsChange.I=\u57f7\u884c\u7dd2\u6700\u5927\u503c\u5df2\u8b8a\u66f4\u70ba {0}\u3002
+DRDA_TimeSliceChange.I=\u6642\u9593\u7247\u6bb5\u5df2\u8b8a\u66f4\u70ba {0}\u3002
+DRDA_InvalidValue.U={1} \u7684\u503c {0} \u7121\u6548\u3002
+DRDA_IOException.S=IOException\uff1a{0}\u3002
+DRDA_UnknownProtocol=\u300c\u6307\u4ee4\u901a\u8a0a\u5354\u5b9a\u300d\u7248\u672c\u4e0d\u660e\uff1a{0}\u3002
+DRDA_MissingLocale.I=\u627e\u4e0d\u5230\u73fe\u884c\u8a9e\u8a00\u74b0\u5883\u7684\u8cc7\u6e90\uff1b\u5207\u63db\u70ba {0}\u3002
+
+# Cloudscape Network Server SYSINFO stuff
+#
+DRDA_SysInfoBanner.I=--------- Cloudscape Network Server \u8cc7\u8a0a --------
+DRDA_SysInfoVersion.I=\u7248\u672c\uff1a
+DRDA_SysInfoBuild.I=\u5efa\u7f6e\uff1a
+DRDA_SysInfoDrdaPRDID.I=DRDA \u7522\u54c1 Id\uff1a
+#
+# Cloudscape Network Server RUNTIMEINFO stuff
+DRDA_RuntimeInfoBanner.I=--- Cloudscape Network Server \u57f7\u884c\u6642\u671f\u8cc7\u8a0a ---
+DRDA_RuntimeInfoSessionBanner.I=---------- \u968e\u6bb5\u4f5c\u696d\u8cc7\u8a0a ---------------
+DRDA_RuntimeInfoNumThreads.I=# \u9023\u7dda\u57f7\u884c\u7dd2 \uff1a 
+DRDA_RuntimeInfoNumActiveSessions.I=# \u4f5c\u7528\u4e2d\u968e\u6bb5\u4f5c\u696d\u6578\u76ee \uff1a 
+DRDA_RuntimeInfoNumWaitingSessions.I=# \u7b49\u5f85\u4e2d\u7684\u968e\u6bb5\u4f5c\u696d\u6578\u76ee \uff1a 
+DRDA_RuntimeInfoSessionNumber.I=\u968e\u6bb5\u4f5c\u696d #\uff1a
+DRDA_RuntimeInfoDatabase.I=\u8cc7\u6599\u5eab\uff1a
+DRDA_RuntimeInfoUser.I=\u4f7f\u7528\u8005\uff1a
+DRDA_RuntimeInfoNumStatements.I=# \u9673\u8ff0\u5f0f\uff1a
+DRDA_RuntimeInfoPreparedStatementHeader.I=\u5099\u59a5\u9673\u8ff0\u5f0f\u8cc7\u8a0a\uff1a\n\tStmt ID\t\tSQLText\n\t-------------\t-----------\n
+
+DRDA_RuntimeInfoTotalMemory.I=\u7e3d\u8a18\u61b6\u9ad4 \uff1a 
+DRDA_RuntimeInfoFreeMemory.I=\u53ef\u7528\u8a18\u61b6\u9ad4 \uff1a 
+
+DRDA_RuntimeInfo
+# Usage message
+#
+DRDA_Usage1.I=\u7528\u6cd5\uff1aNetworkServerControl <\u6307\u4ee4> 
+DRDA_Usage2.I=\u6307\u4ee4\uff1a
+DRDA_Usage3.I=start [-h <\u4e3b\u6a5f>] [-p <\u57e0\u865f>]
+DRDA_Usage4.I=shutdown [-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage5.I=ping [-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage6.I=sysinfo [-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage7.I=runtimeinfo [-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage8.I=logconnections {on|off}[-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage9.I=maxthreads <\u6700\u5927\u503c>[-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage10.I=timeslice <\u6beb\u79d2>[-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage11.I=trace {on|off} [-s <\u968e\u6bb5\u4f5c\u696d ID>][-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+DRDA_Usage12.I=tracedirectory <traceDirectory>[-h <\u4e3b\u6a5f>][-p <\u57e0\u865f>]
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_de_DE.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_de_DE.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,54 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= Cloudscape Network Server wurde gestartet.
+SRV_StopButton=Klicken Sie auf den Knopf, um Network Server zu stoppen.
+SRV_NotStarted=Cloudscape Network Server wurde nicht gestartet.
+SRV_LogOnButton=Klicken Sie auf den Knopf, um die Protokollierung beim Start des Servers einzuschalten.
+SRV_LogOffButton=Klicken Sie auf den Knopf, um die Protokollierung beim Start des Servers auszuschalten.
+SRV_TraceOnButton=Klicken Sie auf den Knopf, um den Trace f\u00fcr alle Sitzungen beim Start des Servers einzuschalten.
+SRV_TraceOffButton=Klicken Sie auf den Knopf, um den Trace f\u00fcr alle Sitzungen beim Start des Servers auszuschalten.
+SRV_StartButton=Klicken Sie auf den Knopf, um den Server zu starten.
+SRV_Start=Starten
+SRV_Stop=Stoppen
+SRV_LogOn=Protokollierung ein
+SRV_LogOff=Protokollierung aus
+SRV_TraceOn=Trace ein
+SRV_TraceOff=Trace aus
+SRV_TraceOnOff=Trace ein/aus
+SRV_StatusLogOn=Die Protokollierung ist derzeit eingeschaltet.
+SRV_StatusLogOff=Die Protokollierung ist derzeit ausgeschaltet.
+SRV_StatusTraceOn=Der Trace ist derzeit f\u00fcr alle Sitzungen eingeschaltet.
+SRV_StatusTraceOff=Der Trace ist derzeit f\u00fcr alle Sitzungen ausgeschaltet.
+SRV_StatusTraceNoOn=Der Trace ist derzeit f\u00fcr die Sitzung {0} eingeschaltet.
+SRV_StatusTraceNoOff=Der Trace ist derzeit f\u00fcr die Sitzung {0} ausgeschaltet.
+SRV_LogButton2=Klicken Sie auf den Knopf, um die Protokollierung zu starten oder zu stoppen.
+SRV_TraceButton2=Klicken Sie auf den Knopf, um den Trace f\u00fcr alle Sitzungen zu starten oder zu stoppen.
+SRV_TraceSession=Klicken Sie auf den Knopf, um die Sitzung f\u00fcr den Trace anzugeben.
+SRV_TraceSessButton=Trace f\u00fcr Sitzung
+SRV_TraceDirButton=Klicken Sie auf den Knopf, um das Trace-Verzeichnis zu \u00e4ndern.
+SRV_ThreadButton=Klicken Sie auf den Knopf, um Threading-Parameter f\u00fcr Network Server anzugeben.
+SRV_StopButton= Klicken Sie auf den Knopf, um Network Server zu stoppen.
+SRV_Return=Zur\u00fcck zur Hauptseite f\u00fcr Servlets
+SRV_SessionID=Sitzungs-ID:
+SRV_TraceDir=Trace-Verzeichnis
+SRV_TraceDirDone=Das Trace-Verzeichnis {0} wurde definiert.
+SRV_Continue=Weiter
+SRV_SetParam=Parameter definieren
+SRV_SetParam2=Werte definieren
+SRV_InvalidVal=Ung\u00fcltiger Wert {0} f\u00fcr {1}.
+
+SRV_NetParam=Parameter f\u00fcr Network Server definieren
+SRV_MaxThreads=Aktuelle maximale Anzahl Threads: {0}
+SRV_TimeSlice=Aktuelle Thread-Zeitscheibe: {0}
+SRV_NewMaxThreads=Neue maximale Anzahl Threads:
+SRV_NewTimeSlice=Neue Thread-Zeitscheibe:
+SRV_Interupt=Verbindung unterbrochen.
+SRV_MaxTrys=Nach {0} Versuchen konnte keine Verbindung zum Server hergestellt werden.
+SRV_NetworkServerError=Network-Server-Fehler
+SRV_Message=Nachricht:{0}
+SRV_MissingParam=Ein erforderlicher Parameter ist nicht gesetzt ("{0}")
+SRV_BackToMain=Zur\u00fcck zur Hauptseite
+SRV_SkipToContent=Weiter zum Inhalt
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_es.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_es.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,53 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= Cloudscape Network Server se ha iniciado.
+SRV_StopButton=Pulse el bot\u00f3n para detener Network Server.
+SRV_NotStarted=Cloudscape Network Server no se ha iniciado.
+SRV_LogOnButton=Pulse el bot\u00f3n para activar la anotaci\u00f3n de mensajes cuando se inicie el servidor.
+SRV_LogOffButton=Pulse el bot\u00f3n para detener la anotaci\u00f3n de mensajes cuando se inicie el servidor.
+SRV_TraceOnButton=Pulse el bot\u00f3n para activar el rastreo en todas las sesiones cuando se inicie el servidor.
+SRV_TraceOffButton=Pulse el bot\u00f3n para desactivar el rastreo en todas las sesiones cuando se inicie el servidor.
+SRV_StartButton=Pulse el bot\u00f3n para iniciar el servidor.
+SRV_Start=Iniciar
+SRV_Stop=Detener
+SRV_LogOn=Activar anotaci\u00f3n
+SRV_LogOff=Desactivar anotaci\u00f3n
+SRV_TraceOn=Activar rastreo
+SRV_TraceOff=Desactivar rastreo
+SRV_TraceOnOff=Activar/Desactivar rastreo
+SRV_StatusLogOn=Anotaciones cronol\u00f3gicas actualmente habilitadas.
+SRV_StatusLogOff=Anotaciones cronol\u00f3gicas actualmente inhabilitadas.
+SRV_StatusTraceOn=Rastreo actualmente habilitado para todas las sesiones.
+SRV_StatusTraceOff=Rastreo actualmente inhabilitado para todas las sesiones.
+SRV_StatusTraceNoOn=Rastreo actualmente habilitado para la sesi\u00f3n {0}.
+SRV_StatusTraceNoOff=Rastreo actualmente inhabilitado para la sesi\u00f3n {0}.
+SRV_LogButton2=Pulse el bot\u00f3n para iniciar o detener la anotaci\u00f3n cronol\u00f3gica.
+SRV_TraceButton2=Pulse el bot\u00f3n para iniciar o detener el rastreo de todas las sesiones.
+SRV_TraceSession=Pulse el bot\u00f3n para especificar la sesi\u00f3n a rastrear.
+SRV_TraceSessButton=Sesi\u00f3n de rastreo
+SRV_TraceDirButton=Pulse el bot\u00f3n para cambiar el directorio de rastreo.
+SRV_ThreadButton=Pulse el bot\u00f3n para especificar los par\u00e1metros relacionados con las hebras para Network Server.
+SRV_StopButton= Pulse el bot\u00f3n para detener Network Server.
+SRV_Return=Volver a la p\u00e1gina principal del servlet
+SRV_SessionID=ID de sesi\u00f3n:
+SRV_TraceDir=Directorio de rastreo
+SRV_TraceDirDone=Se ha establecido el directorio de rastreo {0}.
+SRV_Continue=Continuar
+SRV_SetParam=Establecer par\u00e1metros
+SRV_SetParam2=Establecer valores
+SRV_InvalidVal=Valor no v\u00e1lido, {0}, para {1}.  
+SRV_NetParam=Establecer par\u00e1metros de Network Server
+SRV_MaxThreads=Actualmente el n\u00famero m\u00e1ximo de hebras es: {0}
+SRV_TimeSlice=Actualmente el intervalo de tiempo de hebra es: {0}
+SRV_NewMaxThreads=Nuevo n\u00famero m\u00e1ximo de hebras:
+SRV_NewTimeSlice=Nuevo intervalo de tiempo de hebra:
+SRV_Interupt=Conexi\u00f3n interrumpida.
+SRV_MaxTrys=No se pudo conectar con el servidor despu\u00e9s de {0} intentos.
+SRV_NetworkServerError=Error de Network Server
+SRV_Message=Mensaje: {0}
+SRV_MissingParam=No se ha establecido un par\u00e1metro obligatorio ("{0}")
+SRV_BackToMain=Volver a la p\u00e1gina principal
+SRV_SkipToContent=Ir al contenido
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_fr.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_fr.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,53 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= Cloudscape Network Server a \u00e9t\u00e9 d\u00e9marr\u00e9.
+SRV_StopButton=Appuyez sur le bouton pour arr\u00eater Network Server.
+SRV_NotStarted=Cloudscape Network Server n'a pas \u00e9t\u00e9 d\u00e9marr\u00e9.
+SRV_LogOnButton=Cliquez sur ce bouton pour activer la journalisation lors du d\u00e9marrage du serveur.
+SRV_LogOffButton=Cliquez sur ce bouton pour d\u00e9sactiver la journalisation lors du d\u00e9marrage du serveur.
+SRV_TraceOnButton=Cliquez sur ce bouton afin d'activer le tra\u00e7age pour toutes les sessions lors du d\u00e9marrage du serveur.
+SRV_TraceOffButton=Cliquez sur ce bouton afin de d\u00e9sactiver le tra\u00e7age pour toutes les sessions lors du d\u00e9marrage du serveur.
+SRV_StartButton=Cliquez sur ce bouton pour d\u00e9marrer le serveur.
+SRV_Start=D\u00e9marrer
+SRV_Stop=Arr\u00eater
+SRV_LogOn=Activer la journalisation
+SRV_LogOff=D\u00e9sactiver la journalisation
+SRV_TraceOn=Tra\u00e7age activ\u00e9
+SRV_TraceOff=Tra\u00e7age d\u00e9sactiv\u00e9
+SRV_TraceOnOff=Trace activ\u00e9e/d\u00e9sactiv\u00e9e
+SRV_StatusLogOn=La journalisation est activ\u00e9e.
+SRV_StatusLogOff=La journalisation est d\u00e9sactiv\u00e9e.
+SRV_StatusTraceOn=Le tra\u00e7age est activ\u00e9 pour toutes les sessions.
+SRV_StatusTraceOff=Le tra\u00e7age est d\u00e9sactiv\u00e9 pour toutes les sessions.
+SRV_StatusTraceNoOn=Le tra\u00e7age est actuellement activ\u00e9 pour la session {0}.
+SRV_StatusTraceNoOff=Le tra\u00e7age est actuellement d\u00e9sactiv\u00e9 pour la session {0}.
+SRV_LogButton2=Cliquez sur ce bouton pour lancer ou arr\u00eater la journalisation.
+SRV_TraceButton2=Cliquez sur ce bouton pour lancer ou arr\u00eater le tra\u00e7age de toutes les sessions.
+SRV_TraceSession=Cliquez sur ce bouton pour indiquer les sessions \u00e0 tracer.
+SRV_TraceSessButton=Tracer la session
+SRV_TraceDirButton=Cliquez sur ce bouton pour changer le r\u00e9pertoire de trace.
+SRV_ThreadButton=Cliquez sur ce bouton pour indiquer les param\u00e8tres de cr\u00e9ation d'unit\u00e9s d'ex\u00e9cution pour Network Server.
+SRV_StopButton= Cliquez sur ce bouton pour arr\u00eater Network Server.
+SRV_Return=Retour \u00e0 la page principale du servlet
+SRV_SessionID=ID de session :
+SRV_TraceDir=R\u00e9pertoire de trace
+SRV_TraceDirDone=Le r\u00e9pertoire de trace {0} est d\u00e9fini.
+SRV_Continue=Continuer
+SRV_SetParam=D\u00e9finir les param\u00e8tres
+SRV_SetParam2=D\u00e9finir les valeurs
+SRV_InvalidVal=Valeur {0} incorrecte pour {1}.  
+SRV_NetParam=D\u00e9finir les param\u00e8tres Network Server
+SRV_MaxThreads=Nombre maximal d''unit\u00e9s d''ex\u00e9cution en cours : {0}
+SRV_TimeSlice=Intervalle d''activation des unit\u00e9s d''ex\u00e9cution en cours : {0}
+SRV_NewMaxThreads=Nouveau nombre maximal d'unit\u00e9s d'ex\u00e9cution :
+SRV_NewTimeSlice=Nouvel intervalle d'activation des unit\u00e9s d'ex\u00e9cution :
+SRV_Interupt=Connexion interrompue.
+SRV_MaxTrys=Impossible de se connecter au serveur apr\u00e8s {0} tentatives.
+SRV_NetworkServerError=Erreur Network Server
+SRV_Message=Message : {0}
+SRV_MissingParam=Param\u00e8tre requis non d\u00e9fini ("{0}")
+SRV_BackToMain=Retour \u00e0 la page principale
+SRV_SkipToContent=Passer au contenu
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_it.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_it.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,53 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Server di rete Cloudscape 
+SRV_Started= Il server di rete Cloudscape \u00e8 stato avviato.
+SRV_StopButton=Premere il pulsante per arrestare Network Server.
+SRV_NotStarted=Il server di rete Cloudscape non \u00e8 stato avviato.
+SRV_LogOnButton=Premere il pulsante per attivare la registrazione all'avvio del server.
+SRV_LogOffButton=Premere il pulsante per disattivare la registrazione all'avvio del server.
+SRV_TraceOnButton=Premere il pulsante per attivare la traccia per tutte le sessioni all'avvio del server.
+SRV_TraceOffButton=Premere il pulsante per disattivare la traccia per tutte le sessioni all'avvio del server.
+SRV_StartButton=Premere il pulsante per avviare il server.
+SRV_Start=Avvia
+SRV_Stop=Arresta
+SRV_LogOn=Collegamento
+SRV_LogOff=Disconnessione
+SRV_TraceOn=Traccia attivata
+SRV_TraceOff=Traccia disattivata
+SRV_TraceOnOff=Traccia attivata/disattivata
+SRV_StatusLogOn=La registrazione \u00e8 attualmente attivata.
+SRV_StatusLogOff=La registrazione \u00e8 attualmente disattivata.
+SRV_StatusTraceOn=La traccia \u00e8 attualmente attivata per tutte le sessioni.
+SRV_StatusTraceOff=La traccia \u00e8 attualmente disattivata per tutte le sessioni.
+SRV_StatusTraceNoOn=La traccia \u00e8 attualmente attivata per la sessione {0}.
+SRV_StatusTraceNoOff=La traccia \u00e8 attualmente disattivata per la sessione {0}.
+SRV_LogButton2=Premere il pulsante per avviare o arrestare la registrazione.
+SRV_TraceButton2=Premere il pulsante per avviare o arrestare la traccia per tutte le sessioni.
+SRV_TraceSession=Premere il pulsante per specificare la sessione da tracciare.
+SRV_TraceSessButton=Traccia sessione
+SRV_TraceDirButton=Premere il pulsante per modificare la directory di traccia.
+SRV_ThreadButton=Premere il pulsante per specificare i parametri di thread per il Network Server.
+SRV_StopButton= Premere il pulsante per arrestare il Network server.
+SRV_Return=Tornare alla pagina servlet principale
+SRV_SessionID=ID sessione:
+SRV_TraceDir=Traccia directory
+SRV_TraceDirDone=La directory di traccia, {0}, \u00e8 stata impostata.
+SRV_Continue=Continua
+SRV_SetParam=Imposta parametri
+SRV_SetParam2=Imposta valori
+SRV_InvalidVal=Valore non valido, {0}, per {1}.  
+SRV_NetParam=Imposta i parametri di Network Server
+SRV_MaxThreads=Il numero massimo corrente di thread \u00e8: {0}
+SRV_TimeSlice=L''intervallo di tempo corrente del thread \u00e8: {0}
+SRV_NewMaxThreads=Nuovo numero massimo di thread:
+SRV_NewTimeSlice=Nuovo intervallo di tempo del thread:
+SRV_Interupt=Connessione interrotta.
+SRV_MaxTrys=Impossibile collegarsi al server dopo {0} tentativi.
+SRV_NetworkServerError=Errore Network Server
+SRV_Message=Il messaggio \u00e8:{0}
+SRV_MissingParam=Parametro obbligatorio non impostato ("{0}")
+SRV_BackToMain=Torna a Pagina principale
+SRV_SkipToContent=Passa a Indice
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_ja_JP.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_ja_JP.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,53 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= Cloudscape Network Server \u304c\u958b\u59cb\u3055\u308c\u307e\u3057\u305f\u3002
+SRV_StopButton=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_NotStarted=Cloudscape Network Server \u304c\u958b\u59cb\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+SRV_LogOnButton=\u30b5\u30fc\u30d0\u30fc\u304c\u958b\u59cb\u3055\u308c\u305f\u6642\u306b\u30ed\u30ae\u30f3\u30b0\u3092\u30aa\u30f3\u306b\u5207\u308a\u66ff\u3048\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_LogOffButton=\u30b5\u30fc\u30d0\u30fc\u304c\u958b\u59cb\u3055\u308c\u305f\u6642\u306b\u30ed\u30ae\u30f3\u30b0\u3092\u30aa\u30d5\u306b\u5207\u308a\u66ff\u3048\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_TraceOnButton=\u30b5\u30fc\u30d0\u30fc\u304c\u958b\u59cb\u3055\u308c\u305f\u6642\u306b\u3059\u3079\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30c8\u30ec\u30fc\u30b9\u3092\u30aa\u30f3\u306b\u5207\u308a\u66ff\u3048\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_TraceOffButton=\u30b5\u30fc\u30d0\u30fc\u304c\u958b\u59cb\u3055\u308c\u305f\u6642\u306b\u3059\u3079\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30c8\u30ec\u30fc\u30b9\u3092\u30aa\u30d5\u306b\u5207\u308a\u66ff\u3048\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_StartButton=\u30b5\u30fc\u30d0\u30fc\u3092\u958b\u59cb\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_Start=\u958b\u59cb
+SRV_Stop=\u505c\u6b62
+SRV_LogOn=\u30ed\u30ae\u30f3\u30b0\u3092\u30aa\u30f3
+SRV_LogOff=\u30ed\u30ae\u30f3\u30b0\u3092\u30aa\u30d5
+SRV_TraceOn=\u30c8\u30ec\u30fc\u30b9\u3092\u30aa\u30f3
+SRV_TraceOff=\u30c8\u30ec\u30fc\u30b9\u3092\u30aa\u30d5
+SRV_TraceOnOff=\u30c8\u30ec\u30fc\u30b9\u3092\u30aa\u30f3/\u30aa\u30d5
+SRV_StatusLogOn=\u30ed\u30ae\u30f3\u30b0\u306f\u73fe\u5728\u30aa\u30f3\u3067\u3059\u3002
+SRV_StatusLogOff=\u30ed\u30ae\u30f3\u30b0\u306f\u73fe\u5728\u30aa\u30d5\u3067\u3059\u3002
+SRV_StatusTraceOn=\u30c8\u30ec\u30fc\u30b9\u306f\u73fe\u5728\u3059\u3079\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u30aa\u30f3\u3067\u3059\u3002
+SRV_StatusTraceOff=\u30c8\u30ec\u30fc\u30b9\u306f\u73fe\u5728\u3059\u3079\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u30aa\u30d5\u3067\u3059\u3002
+SRV_StatusTraceNoOn=\u30c8\u30ec\u30fc\u30b9\u306f\u3001\u73fe\u5728\u30bb\u30c3\u30b7\u30e7\u30f3 {0} \u306b\u3064\u3044\u3066\u30aa\u30f3\u3067\u3059\u3002
+SRV_StatusTraceNoOff=\u30c8\u30ec\u30fc\u30b9\u306f\u3001\u73fe\u5728\u30bb\u30c3\u30b7\u30e7\u30f3 {0} \u306b\u3064\u3044\u3066\u30aa\u30d5\u3067\u3059\u3002
+SRV_LogButton2=\u30ed\u30ae\u30f3\u30b0\u3092\u958b\u59cb\u307e\u305f\u306f\u505c\u6b62\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_TraceButton2=\u3059\u3079\u3066\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30c8\u30ec\u30fc\u30b9\u3092\u958b\u59cb\u307e\u305f\u306f\u505c\u6b62\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_TraceSession=\u30c8\u30ec\u30fc\u30b9\u3059\u308b\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u6307\u5b9a\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_TraceSessButton=\u30c8\u30ec\u30fc\u30b9\u30fb\u30bb\u30c3\u30b7\u30e7\u30f3
+SRV_TraceDirButton=\u30c8\u30ec\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_ThreadButton=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u306e\u30b9\u30ec\u30c3\u30c9\u5316\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6307\u5b9a\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_StopButton= \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u3092\u505c\u6b62\u3059\u308b\u306b\u306f\u3001\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SRV_Return=\u30e1\u30a4\u30f3\u30fb\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u30fb\u30da\u30fc\u30b8\u306b\u623b\u308b
+SRV_SessionID=\u30bb\u30c3\u30b7\u30e7\u30f3 ID:
+SRV_TraceDir=\u30c8\u30ec\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc
+SRV_TraceDirDone=\u30c8\u30ec\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u304c\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002
+SRV_Continue=\u7d99\u7d9a
+SRV_SetParam=\u8a2d\u5b9a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc
+SRV_SetParam2=\u5024\u306e\u8a2d\u5b9a
+SRV_InvalidVal={0} \u306f\u3001{1} \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5024\u3067\u3059\u3002 
+SRV_NetParam=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u30fb\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u8a2d\u5b9a
+SRV_MaxThreads=\u73fe\u884c\u306e\u6700\u5927\u30b9\u30ec\u30c3\u30c9\u6570: {0}
+SRV_TimeSlice=\u73fe\u884c\u306e\u30b9\u30ec\u30c3\u30c9\u30fb\u30bf\u30a4\u30e0\u30fb\u30b9\u30e9\u30a4\u30b9: {0}
+SRV_NewMaxThreads=\u65b0\u898f\u306e\u6700\u5927\u30b9\u30ec\u30c3\u30c9\u6570:
+SRV_NewTimeSlice=\u65b0\u898f\u306e\u30b9\u30ec\u30c3\u30c9\u30fb\u30bf\u30a4\u30e0\u30fb\u30b9\u30e9\u30a4\u30b9:
+SRV_Interupt=\u63a5\u7d9a\u304c\u5272\u308a\u8fbc\u307e\u308c\u307e\u3057\u305f\u3002
+SRV_MaxTrys={0} \u56de\u8a66\u884c\u3057\u307e\u3057\u305f\u304c\u3001\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+SRV_NetworkServerError=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u30fb\u30a8\u30e9\u30fc
+SRV_Message=\u30e1\u30c3\u30bb\u30fc\u30b8 :{0}
+SRV_MissingParam=\u5fc5\u8981\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 ("{0}")
+SRV_BackToMain=\u30e1\u30a4\u30f3\u30da\u30fc\u30b8\u306b\u623b\u308b
+SRV_SkipToContent=\u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u30b9\u30ad\u30c3\u30d7
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_ko_KR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_ko_KR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,53 @@
+\ufeff# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= Cloudscape Network Server\uac00 \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+SRV_StopButton=Network Server\ub97c \uc2dc\uc791\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_NotStarted=Cloudscape Network Server\uac00 \uc2dc\uc791\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+SRV_LogOnButton=\uc11c\ubc84\uac00 \uc2dc\uc791\ub420 \ub54c \ub85c\uae45\uc744 \uc2dc\uc791\uc73c\ub85c \uc804\ud658\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_LogOffButton=\uc11c\ubc84\uac00 \uc2dc\uc791\ub420 \ub54c \ub85c\uae45\uc744 \uc885\ub8cc\ub85c \uc804\ud658\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_TraceOnButton=\uc11c\ubc84\uac00 \uc2dc\uc791\ub420 \ub54c \ubaa8\ub4e0 \uc138\uc158\uc5d0 \ub300\ud55c \ucd94\uc801\uc744 \uc2dc\uc791\uc73c\ub85c \uc804\ud658\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_TraceOffButton=\uc11c\ubc84\uac00 \uc2dc\uc791\ub420 \ub54c \ubaa8\ub4e0 \uc138\uc158\uc5d0 \ub300\ud55c \ucd94\uc801\uc744 \uc885\ub8cc\ub85c \uc804\ud658\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_StartButton=\uc11c\ubc84\ub97c \uc2dc\uc791\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_Start=\uc2dc\uc791
+SRV_Stop=\uc911\uc9c0
+SRV_LogOn=\ub85c\uae45 \uc2dc\uc791
+SRV_LogOff=\ub85c\uae45 \uc885\ub8cc
+SRV_TraceOn=\ucd94\uc801 \uc2dc\uc791
+SRV_TraceOff=\ucd94\uc801 \uc885\ub8cc
+SRV_TraceOnOff=\ucd94\uc801 \uc2dc\uc791/\uc885\ub8cc
+SRV_StatusLogOn=\ub85c\uae45\uc774 \ud604\uc7ac \uc2dc\uc791\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+SRV_StatusLogOff=\ub85c\uae45\uc774 \ud604\uc7ac \uc885\ub8cc\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+SRV_StatusTraceOn=\ubaa8\ub4e0 \uc138\uc158\uc5d0 \ub300\ud574 \ucd94\uc801\uc774 \ud604\uc7ac \uc2dc\uc791\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+SRV_StatusTraceOff=\ubaa8\ub4e0 \uc138\uc158\uc5d0 \ub300\ud574 \ucd94\uc801\uc774 \ud604\uc7ac \uc885\ub8cc\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+SRV_StatusTraceNoOn={0} \uc138\uc158\uc5d0 \ub300\ud574 \ucd94\uc801\uc774 \ud604\uc7ac \uc2dc\uc791\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+SRV_StatusTraceNoOff={0} \uc138\uc158\uc5d0 \ub300\ud574 \ucd94\uc801\uc774 \ud604\uc7ac \uc885\ub8cc\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+SRV_LogButton2=\ub85c\uae45\uc744 \uc2dc\uc791\ud558\uac70\ub098 \uc911\uc9c0\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_TraceButton2=\ubaa8\ub4e0 \uc138\uc158\uc744 \uc2dc\uc791\ud558\uac70\ub098 \uc911\uc9c0\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_TraceSession=\ucd94\uc801\ud560 \uc138\uc158\uc744 \uc9c0\uc815\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_TraceSessButton=\ucd94\uc801 \uc138\uc158
+SRV_TraceDirButton=\ucd94\uc801 \ub514\ub809\ud1a0\ub9ac\ub97c \ubcc0\uacbd\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_ThreadButton=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84\uc758 \uc2a4\ub808\ub4dc \ub9e4\uac1c\ubcc0\uc218\ub97c \uc9c0\uc815\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_StopButton= Network Server\ub97c \uc911\uc9c0\ud558\ub824\uba74 \ub2e8\ucd94\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.
+SRV_Return=\uae30\ubcf8 Servlet \ud398\uc774\uc9c0\ub85c \ub9ac\ud134
+SRV_SessionID=\uc138\uc158 ID:
+SRV_TraceDir=\ucd94\uc801 \ub514\ub809\ud1a0\ub9ac
+SRV_TraceDirDone={0} \ucd94\uc801 \ub514\ub809\ud1a0\ub9ac\uac00 \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+SRV_Continue=\uacc4\uc18d
+SRV_SetParam=\uc124\uc815 \ub9e4\uac1c\ubcc0\uc218
+SRV_SetParam2=\uc124\uc815 \uac12
+SRV_InvalidVal={1}\uc5d0 \ub300\ud574 {0} \uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  
+SRV_NetParam=Network Server \ub9e4\uac1c\ubcc0\uc218 \uc124\uc815
+SRV_MaxThreads=\ud604\uc7ac \ucd5c\ub300 \uc2a4\ub808\ub4dc \uc218\ub294 {0}\uc785\ub2c8\ub2e4.
+SRV_TimeSlice=\ud604\uc7ac \uc2a4\ub808\ub4dc \uc2dc\uac04 \uc2ac\ub77c\uc774\uc2a4\ub294 {0}\uc785\ub2c8\ub2e4.
+SRV_NewMaxThreads=\uc0c8 \ucd5c\ub300 \uc2a4\ub808\ub4dc \uc218:
+SRV_NewTimeSlice=\uc0c8 \uc2a4\ub808\ub4dc \uc2dc\uac04 \uc2ac\ub77c\uc774\uc2a4:
+SRV_Interupt=\uc5f0\uacb0\uc774 \uc778\ud130\ub7fd\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+SRV_MaxTrys={0} \ubc88\uc744 \uc2dc\ub3c4\ud55c \ud6c4\uc5d0\ub3c4 \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+SRV_NetworkServerError=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84 \uc624\ub958
+SRV_Message=\uba54\uc2dc\uc9c0:{0}
+SRV_MissingParam=\ud544\uc218 \ub9e4\uac1c\ubcc0\uc218\uac00 \uc124\uc815\ub418\uc9c0 \uc54a\uc74c("{0}")
+SRV_BackToMain=\uae30\ubcf8 \ud398\uc774\uc9c0\ub85c \ub3cc\uc544\uac00\uae30
+SRV_SkipToContent=\ubaa9\ucc28\ub85c \uac74\ub108\ub6f0\uae30
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_pt_BR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_pt_BR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,54 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= O Cloudscape Network Server foi iniciado.
+SRV_StopButton=Pressione o bot\u00e3o abaixo para parar o Network Server.
+SRV_NotStarted=O Cloudscape Network Server n\u00e3o foi iniciado.
+SRV_LogOnButton=Pressione o bot\u00e3o abaixo para ativar o registro quando o servidor for iniciado.
+SRV_LogOffButton=Pressione o bot\u00e3o abaixo para desativar o registro quando o servidor for iniciado.
+SRV_TraceOnButton=Pressione o bot\u00e3o abaixo para ativar o rastreio para todas as sess\u00f5es quando o servidor for iniciado.
+SRV_TraceOffButton=Pressione o bot\u00e3o abaixo para desativar o rastreio para todas as sess\u00f5es quando o servidor for iniciado.
+SRV_StartButton=Pressione o bot\u00e3o abaixo para iniciar o servidor.
+SRV_Start=Iniciar
+SRV_Stop=Parar
+SRV_LogOn=Registro Ativado
+SRV_LogOff=Registro Desativado
+SRV_TraceOn=Rastreio Ativado
+SRV_TraceOff=Rastreio Desativado
+SRV_TraceOnOff=Rastreio Ativado/Desativado
+SRV_StatusLogOn=O registro est\u00e1 ativado no momento.
+SRV_StatusLogOff=O registro est\u00e1 desativado no momento.
+SRV_StatusTraceOn=O rastreio est\u00e1 ativado para todas as sess\u00f5es no momento.
+SRV_StatusTraceOff=O rastreio est\u00e1 desativado para todas as sess\u00f5es no momento.
+SRV_StatusTraceNoOn=O rastreio est\u00e1 ativado para a sess\u00e3o {0} no momento.
+SRV_StatusTraceNoOff=O rastreio est\u00e1 desativado para a sess\u00e3o {0} no momento.
+SRV_LogButton2=Pressione o bot\u00e3o abaixo para iniciar ou parar o registro.
+SRV_TraceButton2=Pressione o bot\u00e3o abaixo para iniciar ou parar o rastreio de todas as sess\u00f5es.
+SRV_TraceSession=Pressione o bot\u00e3o abaixo para especificar a sess\u00e3o a ser rastreada.
+SRV_TraceSessButton=Rastrear Sess\u00e3o
+SRV_TraceDirButton=Pressione o bot\u00e3o abaixo para alterar o diret\u00f3rio de rastreio.
+SRV_ThreadButton=Pressione o bot\u00e3o abaixo para especificar os par\u00e2metros de encadeamento para o Network Server.
+SRV_StopButton= Pressione o bot\u00e3o abaixo para parar o Network Server.
+SRV_Return=Retornar para a P\u00e1gina Principal do Servlet
+SRV_SessionID=ID da Sess\u00e3o:
+SRV_TraceDir=Diret\u00f3rio de Rastreio
+SRV_TraceDirDone=O diret\u00f3rio de rastreio {0} foi definido.
+SRV_Continue=Continuar
+SRV_SetParam=Definir Par\u00e2metros
+SRV_SetParam2=Definir Valores
+SRV_InvalidVal=Valor {0} inv\u00e1lido para {1}.
+
+SRV_NetParam=Definir Par\u00e2metros do Network Server
+SRV_MaxThreads=O n\u00famero m\u00e1ximo atual de encadeamentos \u00e9: {0}
+SRV_TimeSlice=O per\u00edodo de tempo atual para encadeamento \u00e9: {0}
+SRV_NewMaxThreads=Novo n\u00famero m\u00e1ximo de encadeamentos:
+SRV_NewTimeSlice=Novo per\u00edodo de tempo para encadeamento:
+SRV_Interupt=Conex\u00e3o interrompida.
+SRV_MaxTrys=N\u00e3o foi poss\u00edvel conectar ao servidor ap\u00f3s {0} tentativas.
+SRV_NetworkServerError=Erro do Network Server
+SRV_Message=Mensagem: {0}
+SRV_MissingParam=Par\u00e2metro requerido n\u00e3o definido ("{0}")
+SRV_BackToMain=Voltar para a P\u00e1gina Principal
+SRV_SkipToContent=Ir Direto para o Conte\u00fado
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_zh_CN.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_zh_CN.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,53 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape \u7f51\u7edc\u670d\u52a1\u5668
+SRV_Started= Cloudscape \u7f51\u7edc\u670d\u52a1\u5668\u5df2\u7ecf\u542f\u52a8\u3002
+SRV_StopButton=\u6309\u6b64\u6309\u94ae\u505c\u6b62\u7f51\u7edc\u670d\u52a1\u5668\u3002
+SRV_NotStarted=Cloudscape \u7f51\u7edc\u670d\u52a1\u5668\u5c1a\u672a\u542f\u52a8\u3002
+SRV_LogOnButton=\u5f53\u670d\u52a1\u5668\u542f\u52a8\u65f6\uff0c\u6309\u6b64\u6309\u94ae\u6253\u5f00\u8bb0\u5f55\u3002
+SRV_LogOffButton=\u5f53\u670d\u52a1\u5668\u542f\u52a8\u65f6\uff0c\u6309\u6b64\u6309\u94ae\u5173\u95ed\u8bb0\u5f55\u3002
+SRV_TraceOnButton=\u5f53\u670d\u52a1\u5668\u542f\u52a8\u65f6\uff0c\u6309\u6b64\u6309\u94ae\u4e3a\u6240\u6709\u4f1a\u8bdd\u6253\u5f00\u8ddf\u8e2a\u3002
+SRV_TraceOffButton=\u5f53\u670d\u52a1\u5668\u542f\u52a8\u65f6\uff0c\u6309\u6b64\u6309\u94ae\u4e3a\u6240\u6709\u4f1a\u8bdd\u5173\u95ed\u8ddf\u8e2a\u3002
+SRV_StartButton=\u6309\u6b64\u6309\u94ae\u542f\u52a8\u670d\u52a1\u5668\u3002
+SRV_Start=\u542f\u52a8
+SRV_Stop=\u505c\u6b62
+SRV_LogOn=\u8bb0\u5f55\u6253\u5f00
+SRV_LogOff=\u8bb0\u5f55\u5173\u95ed
+SRV_TraceOn=\u8ddf\u8e2a\u6253\u5f00
+SRV_TraceOff=\u8ddf\u8e2a\u5173\u95ed
+SRV_TraceOnOff=\u8ddf\u8e2a\u6253\u5f00\uff0f\u5173\u95ed
+SRV_StatusLogOn=\u8bb0\u5f55\u5f53\u524d\u6253\u5f00\u3002
+SRV_StatusLogOff=\u8bb0\u5f55\u5f53\u524d\u5173\u95ed\u3002
+SRV_StatusTraceOn=\u8ddf\u8e2a\u5f53\u524d\u4e3a\u6240\u6709\u4f1a\u8bdd\u6253\u5f00\u3002
+SRV_StatusTraceOff=\u8ddf\u8e2a\u5f53\u524d\u4e3a\u6240\u6709\u4f1a\u8bdd\u5173\u95ed\u3002
+SRV_StatusTraceNoOn=\u8ddf\u8e2a\u5f53\u524d\u4e3a\u4f1a\u8bdd {0} \u6253\u5f00\u3002
+SRV_StatusTraceNoOff=\u8ddf\u8e2a\u5f53\u524d\u4e3a\u4f1a\u8bdd {0} \u5173\u95ed\u3002
+SRV_LogButton2=\u6309\u6b64\u6309\u94ae\u542f\u52a8\u6216\u505c\u6b62\u8bb0\u5f55\u3002
+SRV_TraceButton2=\u6309\u6b64\u6309\u94ae\u542f\u52a8\u6216\u505c\u6b62\u8ddf\u8e2a\u6240\u6709\u4f1a\u8bdd\u3002
+SRV_TraceSession=\u6309\u6b64\u6309\u94ae\u6307\u5b9a\u8981\u8ddf\u8e2a\u7684\u4f1a\u8bdd\u3002
+SRV_TraceSessButton=\u8ddf\u8e2a\u4f1a\u8bdd
+SRV_TraceDirButton=\u6309\u6b64\u6309\u94ae\u66f4\u6539\u8ddf\u8e2a\u76ee\u5f55\u3002
+SRV_ThreadButton=\u6309\u6b64\u6309\u94ae\u6307\u5b9a\u7f51\u7edc\u670d\u52a1\u5668\u7684\u7ebf\u7a0b\u53c2\u6570\u3002
+SRV_StopButton= \u6309\u6b64\u6309\u94ae\u505c\u6b62\u7f51\u7edc\u670d\u52a1\u5668\u3002
+SRV_Return=\u8fd4\u56de\u5230\u4e3b Servlet \u9875
+SRV_SessionID=\u4f1a\u8bdd\u6807\u8bc6\uff1a
+SRV_TraceDir=\u8ddf\u8e2a\u76ee\u5f55
+SRV_TraceDirDone=\u8ddf\u8e2a\u76ee\u5f55 {0} \u5df2\u8bbe\u7f6e\u3002
+SRV_Continue=\u7ee7\u7eed
+SRV_SetParam=\u8bbe\u7f6e\u53c2\u6570
+SRV_SetParam2=\u8bbe\u7f6e\u503c
+SRV_InvalidVal={1} \u7684\u503c {0} \u65e0\u6548\u3002
+SRV_NetParam=\u8bbe\u7f6e\u7f51\u7edc\u670d\u52a1\u5668\u53c2\u6570
+SRV_MaxThreads=\u5f53\u524d\u6700\u5927\u7ebf\u7a0b\u6570\u4e3a\uff1a{0}
+SRV_TimeSlice=\u5f53\u524d\u7ebf\u7a0b\u65f6\u95f4\u7247\u4e3a\uff1a{0}
+SRV_NewMaxThreads=\u65b0\u7684\u6700\u5927\u7ebf\u7a0b\u6570\uff1a
+SRV_NewTimeSlice=\u65b0\u7684\u7ebf\u7a0b\u65f6\u95f4\u7247\uff1a
+SRV_Interupt=\u8fde\u63a5\u4e2d\u65ad\u3002
+SRV_MaxTrys={0} \u5c1d\u8bd5\u540e\u65e0\u6cd5\u8fde\u63a5\u5230\u670d\u52a1\u5668\u3002
+SRV_NetworkServerError=\u7f51\u7edc\u670d\u52a1\u5668\u9519\u8bef
+SRV_Message=\u6d88\u606f\u662f\uff1a{0}
+SRV_MissingParam=\u672a\u8bbe\u7f6e\u5fc5\u9700\u53c2\u6570\uff08\u201c{0}\u201d\uff09
+SRV_BackToMain=\u8fd4\u56de\u5230\u4e3b\u9875
+SRV_SkipToContent=\u8df3\u81f3\u76ee\u5f55
+

Added: incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_zh_TW.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/drda/org/apache/derby/loc/drda/servlet_zh_TW.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,54 @@
+# This file contains the text for Net Server servlet
+# The format is SRV_<short desc>
+
+SRV_Banner= Cloudscape Network Server 
+SRV_Started= Cloudscape Network Server \u5df2\u555f\u52d5\u3002
+SRV_StopButton=\u6309\u6b64\u6309\u9215\u53ef\u505c\u6b62 Network Server\u3002
+SRV_NotStarted=Cloudscape Network Server \u672a\u555f\u52d5\u3002
+SRV_LogOnButton=\u7576\u4f3a\u670d\u5668\u555f\u52d5\u6642\uff0c\u6309\u6b64\u6309\u9215\u53ef\u958b\u555f\u8a18\u8f09\u3002
+SRV_LogOffButton=\u7576\u4f3a\u670d\u5668\u555f\u52d5\u6642\uff0c\u6309\u6b64\u6309\u9215\u53ef\u95dc\u9589\u8a18\u8f09\u3002
+SRV_TraceOnButton=\u7576\u4f3a\u670d\u5668\u555f\u52d5\u6642\uff0c\u6309\u6b64\u6309\u9215\u53ef\u958b\u555f\u6240\u6709\u968e\u6bb5\u4f5c\u696d\u7684\u8ffd\u8e64\u3002
+SRV_TraceOffButton=\u7576\u4f3a\u670d\u5668\u555f\u52d5\u6642\uff0c\u6309\u6b64\u6309\u9215\u53ef\u95dc\u9589\u6240\u6709\u968e\u6bb5\u4f5c\u696d\u7684\u8ffd\u8e64\u3002
+SRV_StartButton=\u6309\u6b64\u6309\u9215\u53ef\u555f\u52d5\u4f3a\u670d\u5668\u3002
+SRV_Start=\u555f\u52d5
+SRV_Stop=\u505c\u6b62
+SRV_LogOn=\u958b\u555f\u8a18\u8f09
+SRV_LogOff=\u95dc\u9589\u8a18\u8f09
+SRV_TraceOn=\u958b\u555f\u8ffd\u8e64
+SRV_TraceOff=\u95dc\u9589\u8ffd\u8e64
+SRV_TraceOnOff=\u958b\u555f/\u95dc\u9589\u8ffd\u8e64
+SRV_StatusLogOn=\u76ee\u524d\u5df2\u958b\u555f\u8a18\u8f09\u3002
+SRV_StatusLogOff=\u76ee\u524d\u5df2\u95dc\u9589\u8a18\u8f09\u3002
+SRV_StatusTraceOn=\u76ee\u524d\u5df2\u958b\u555f\u6240\u6709\u968e\u6bb5\u4f5c\u696d\u7684\u8ffd\u8e64\u3002
+SRV_StatusTraceOff=\u76ee\u524d\u5df2\u95dc\u9589\u6240\u6709\u968e\u6bb5\u4f5c\u696d\u7684\u8ffd\u8e64\u3002
+SRV_StatusTraceNoOn=\u76ee\u524d\u5df2\u958b\u555f\u968e\u6bb5\u4f5c\u696d {0} \u7684\u8ffd\u8e64\u3002
+SRV_StatusTraceNoOff=\u76ee\u524d\u5df2\u95dc\u9589\u968e\u6bb5\u4f5c\u696d {0} \u7684\u8ffd\u8e64\u3002
+SRV_LogButton2=\u6309\u6b64\u6309\u9215\u53ef\u555f\u52d5\u6216\u505c\u6b62\u8a18\u8f09\u3002
+SRV_TraceButton2=\u6309\u6b64\u6309\u9215\u53ef\u555f\u52d5\u6216\u505c\u6b62\u8ffd\u8e64\u6240\u6709\u7684\u968e\u6bb5\u4f5c\u696d\u3002
+SRV_TraceSession=\u6309\u6b64\u6309\u9215\u53ef\u6307\u5b9a\u8981\u8ffd\u8e64\u7684\u968e\u6bb5\u4f5c\u696d\u3002
+SRV_TraceSessButton=\u8ffd\u8e64\u968e\u6bb5\u4f5c\u696d
+SRV_TraceDirButton=\u6309\u6b64\u6309\u9215\u53ef\u8b8a\u66f4\u8ffd\u8e64\u76ee\u9304\u3002
+SRV_ThreadButton=\u6309\u6b64\u6309\u9215\u53ef\u6307\u5b9a\u7db2\u8def\u4f3a\u670d\u5668\u7684\u57f7\u884c\u7dd2\u4f5c\u696d\u53c3\u6578\u3002
+SRV_StopButton= \u6309\u6b64\u6309\u9215\u53ef\u505c\u6b62\u7db2\u8def\u4f3a\u670d\u5668\u3002
+SRV_Return=\u56de\u5230\u300c\u4e3b\u8981 Servlet \u7db2\u9801\u300d
+SRV_SessionID=\u968e\u6bb5\u4f5c\u696d ID\uff1a
+SRV_TraceDir=\u8ffd\u8e64\u76ee\u9304
+SRV_TraceDirDone=\u5df2\u8a2d\u5b9a\u8ffd\u8e64\u76ee\u9304 {0}\u3002
+SRV_Continue=\u7e7c\u7e8c
+SRV_SetParam=\u8a2d\u5b9a\u53c3\u6578
+SRV_SetParam2=\u8a2d\u5b9a\u503c
+SRV_InvalidVal={1} \u7684\u503c {0} \u7121\u6548\u3002
+
+SRV_NetParam=\u8a2d\u5b9a Network Server \u53c3\u6578
+SRV_MaxThreads=\u73fe\u884c\u57f7\u884c\u7dd2\u6578\u76ee\u4e0a\u9650\u70ba\uff1a{0}
+SRV_TimeSlice=\u73fe\u884c\u57f7\u884c\u7dd2\u6642\u9593\u7247\u6bb5\u70ba\uff1a{0}
+SRV_NewMaxThreads=\u65b0\u7684\u57f7\u884c\u7dd2\u6578\u76ee\u4e0a\u9650\uff1a
+SRV_NewTimeSlice=\u65b0\u7684\u57f7\u884c\u7dd2\u6642\u9593\u7247\u6bb5\uff1a
+SRV_Interupt=\u9023\u7dda\u5df2\u5c94\u65b7\u3002
+SRV_MaxTrys=\u5728\u5617\u8a66\u904e {0} \u6b21\u4e4b\u5f8c\uff0c\u7121\u6cd5\u9023\u63a5\u5230\u4f3a\u670d\u5668\u3002
+SRV_NetworkServerError=Network Server \u932f\u8aa4
+SRV_Message=\u8a0a\u606f\u70ba\uff1a{0}
+SRV_MissingParam=\u5c1a\u672a\u8a2d\u5b9a\u5fc5\u8981\u7684\u53c3\u6578 ("{0}")
+SRV_BackToMain=\u56de\u5230\u4e3b\u9801
+SRV_SkipToContent=\u8df3\u81f3\u5167\u5bb9
+

Modified: incubator/derby/code/trunk/java/engine/build.xml
==============================================================================
--- incubator/derby/code/trunk/java/engine/build.xml	(original)
+++ incubator/derby/code/trunk/java/engine/build.xml	Thu Nov 11 23:39:22 2004
@@ -47,6 +47,7 @@
     <ant dir="${derby.engine.dir}/osgi"/>
     <ant dir="${derby.engine.dir}/catalog"/>
     <ant dir="${derby.engine.dir}/diag"/>
+    <ant dir="${derby.engine.dir}/vti"/>
 
     <copy todir="${out.dir}/${derby.dir}">
       <fileset dir="${derby.engine.dir}">

Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml	(original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/build.xml	Thu Nov 11 23:39:22 2004
@@ -20,6 +20,46 @@
       <param name="msgdir" value="${derby.locales.dir}"/>
       <param name="msgfile" value="messages_en"/>
     </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_de_DE"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_es"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_ja_JP"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_ko_KR"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_qq_PP_testOnly"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_pt_BR"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_zh_CN"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_zh_TW"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_it"/>
+    </antcall>
+    <antcall target="doSplit">
+      <param name="msgdir" value="${derby.locales.dir}"/>
+      <param name="msgfile" value="messages_fr"/>
+    </antcall>
   </target>
 
   <target name="doSplit" depends="splitprops,verifysplit,noSplit,chksplit" unless="split.done">

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_de_DE.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_de_DE.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1250 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=Der Systemstart ist aufgrund einer Ausnahme gescheitert. Details enth\u00e4lt die n\u00e4chste Ausnahme.
+XBM02.D=Der Systemstart ist aufgrund fehlender Funktionalit\u00e4t f\u00fcr {0} gescheitert. Stellen Sie sicher, dass der Klassenpfad die richtige Derby-Software enth\u00e4lt.
+XBM05.D=Der Systemstart ist aufgrund der fehlenden Produktversionsnummer f\u00fcr {0} gescheitert.
+XBM06.D=Der Systemstart ist gescheitert. Auf eine verschl\u00fcsselte Datenbank kann nur mit dem richtigen Boot-Kennwort zugegriffen werden.
+XBM07.D=Der Systemstart ist gescheitert. Das Boot-Passwort muss eine Mindestl\u00e4nge von 8 Bytes haben.
+XBM08.D=Die StorageFactory-Klasse {1} unter {0} konnte nicht instanziiert werden.
+
+XBM0G.D=Die Verschl\u00fcsselungssteuerkomponente konnte nicht gestartet werden. Vergewissern Sie sich, dass Sie Java 2 ausf\u00fchren und einen Verschl\u00fcsselungsprovider wie JCE heruntergeladen und in den Klassenpfad aufgenommen haben.
+XBM0H.D=Das Verzeichnis {0} kann nicht erstellt werden.
+XBM0I.D=Das Verzeichnis {0} kann nicht entfernt werden.
+XBM0J.D=Das Verzeichnis {0} ist bereits vorhanden.
+XBM0K.D=Unbekanntes Unterprotokoll f\u00fcr den Datenbanknamen {0}.
+XBM0L.D=Die angegebene Authentifizierungsschemaklasse {0} implementiert nicht die Authentifizierungsschnittstelle {1}.
+XBM0M.D=Fehler beim Erstellen einer Instanz der Authentifizierungsschemaklasse {0}.
+XBM0N.D=Die JDBC-Treiberregistrierung mit java.sql.DriverManager ist gescheitert. Details enth\u00e4lt die n\u00e4chste Ausnahme.
+XBM0P.D=Der Serviceprovider ist nur im Lesezugriff verf\u00fcgbar. F\u00fcr die Operation liegt keine Berechtigung vor.
+XBM0S.D=Die Datei ''{0}'' kann nicht in ''{1}'' umbenannt werden.
+XBM0T.D=Mehrdeutiges Unterprotokoll f\u00fcr den Datenbanknamen {0}.
+XBM0U.S=F\u00fcr die ID {0} wurde keine Klasse registriert.
+XBM0V.S=Beim Laden der f\u00fcr die ID {0} registrierten Klasse {1} wurde eine Ausnahme ausgel\u00f6st.
+XBM0W.S=Beim Erstellen einer Instanz der f\u00fcr die ID {0} registrierten Klasse {1} wurde eine Ausnahme ausgel\u00f6st.
+XBM0X.D=Das angegebene Gebietsschema ''{0}'' ist ung\u00fcltig. Erwartet wurde ln[_CO[_variant]]\nln = zwei Kleinbuchstaben des ISO-639-Sprachencodes, CO = zwei Gro\u00dfbuchstaben der ISO-3166-Sprachencodes. Siehe java.util.Locale.
+XBM0Y.D=Das Sicherungsdatenbankverzeichnis {0} wurde nicht gefunden. Vergewissern Sie sich, dass der angegebene Sicherungspfad stimmt.
+XBM0Z.D=Die Datei ''{0}'' kann nicht nach ''{1}'' kopiert werden. Vergewissern Sie sich, dass genug Speicherplatz verf\u00fcgbar ist und dass die notwendigen Berechtigungen vorliegen. 
+XBM0Q.D=Die Datei {0} wurde nicht gefunden. Vergewissern Sie sich, dass es sich um die richtige Sicherungskopie handelt und dass diese nicht besch\u00e4digt ist.
+XBM0R.D=Die Datei {0} kann nicht entfernt werden.
+
+# Upgrade
+XCW00.D=Ein Upgrade von ''{0}'' auf ''{1}'' wird nicht unterst\u00fctzt.
+
+# Feature not supported
+
+
+# COntext service
+08000=Die Verbindung wurde von einer unbekannten Unterbrechung aufgehoben.
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=Eine Sperre konnte aufgrund einer Verklemmung nicht angefordert werden. Zyklus der Sperren und beantragten Sperren:\n{0} Die ausgew\u00e4hlte Opfertransaktion ist XID : {1}
+
+40XL1=Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden.
+40XL2=Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden. Speicherauszug der Sperrentabelle: {0}
+
+# ClassManager
+XBCM1.S=Beim Laden der generierten Klasse {0} wurde ein Java-Verbindungsfehler ausgel\u00f6st.
+XBCM2.S=Es kann keine Instanz der generierten Klasse {0} erstellt werden.
+XBCM3.S=Die Methode {1}() ist in der generierten Klasse {0} nicht vorhanden.
+
+# Properties
+
+XCY00.S=Ung\u00fcltiger Wert f\u00fcr das Merkmal ''{0}''=''{1}''.
+XCY02.S=Die angeforderte Merkmal\u00e4nderung wird nicht unterst\u00fctzt; ''{0}''=''{1}''.
+XCY03.S=Das erforderliche Merkmal ''{0}'' wurde nicht definiert.
+
+# Cryptography
+XBCX0.S=Ausnahme vom Verschl\u00fcsselungsprovider. Details enth\u00e4lt die n\u00e4chste Ausnahme.
+XBCX1.S=Sie initialisieren das Verschl\u00fcsselungsverfahren mit einem ung\u00fcltigen Modus. Der Modus muss ENCRYPT oder DECRYPT sein.
+XBCX2.S=Sie initialisieren das Verschl\u00fcsselungsverfahren mit einem zu kurzen Boot-Kennwort. Das Kennwort muss aus mindestens {0} Zeichen bestehen.
+XBCX5.S=Das Boot-Kennwort kann nicht in eine Nullzeichenfolge ge\u00e4ndert werden.
+XBCX6.S=Das Boot-Kennwort kann nicht in einen serialisierbaren Typ, der keine Zeichenfolge ist, ge\u00e4ndert werden.
+XBCX7.S=Falsches Format f\u00fcr das \u00c4ndern des Boot-Kennworts. G\u00fcltiges Format: altes_Boot-Kennwort, neues_Boot-Kennwort.
+XBCX8.S=Das Boot-Kennwort f\u00fcr eine nicht verschl\u00fcsselte Datenbank kann nicht ge\u00e4ndert werden.
+XBCX9.S=Das Boot-Kennwort f\u00fcr eine Datenbank mit Lesezugriff kann nicht ge\u00e4ndert werden.
+XBCXA.S=Falsches Boot-Kennwort.
+XBCXB.S=Die Verschl\u00fcsselungsauff\u00fcllung ''{0}'' ist fehlerhaft oder es wurde keine Auff\u00fcllung angegeben. Es muss ''Keine Auff\u00fcllung'' verwendet werden.
+XBCXC.S=Der Verschl\u00fcsselungsalgorithmus ''{0}'' ist nicht vorhanden. \u00dcberpr\u00fcfen Sie, ob der ausgew\u00e4hlte Provider ''{1}'' diesen Algorithmus unterst\u00fctzt.
+XBCXD.S=Der Verschl\u00fcsselungsalgorithmus kann nach dem Erstellen der Datenbank nicht ge\u00e4ndert werden.
+XBCXE.S=Der Verschl\u00fcsselungsprovider kann nach dem Erstellen der Datenbank nicht ge\u00e4ndert werden.
+XBCXF.S=Die Klasse ''{0}'', die den Verschl\u00fcsselungsprovider repr\u00e4sentiert, wurde nicht gefunden.
+XBCXG.S=Der Verschl\u00fcsselungsprovider ''{0}'' ist nicht vorhanden.
+XBCXH.S=Der Verschl\u00fcsselungsalgorithmus ''{0}'' hat nicht das richtige Format. Korrektes Format: Algorithmus/Feedbackmodus/Keine Auff\u00fcllung.
+XBCXI.S=Der Feedbackmodus ''{0}'' wird nicht unterst\u00fctzt. Unterst\u00fctzte Feedbackmodi sind CBC, CFB, OFB und ECB.
+XBCXJ.S=Die Anwendung verwendet eine \u00e4ltere JCE-Version (Java Cryptography Extension) als 1.2.1. F\u00fchren Sie ein Upgrade auf JCE 1.2.1 durch und wiederholen Sie die Operation.
+XBCXK.S=Der angegebene Chiffrierschl\u00fcssel stimmt nicht mit dem bei der Erstellung der Datenbank verwendeten Chiffrierschl\u00fcssel \u00fcberein. Vergewissern Sie sich, dass Sie den richtigen Chiffrierschl\u00fcssel verwenden, und versuchen Sie es erneut. 
+XBCXL.S=Der Pr\u00fcfprozess f\u00fcr den Chiffrierschl\u00fcssel war nicht erfolgreich. Die folgende Ausnahme enth\u00e4lt weitere Details. Als Ursache kommt ein Fehler beim Zugriff auf die Datei f\u00fcr die Ausf\u00fchrung des Pr\u00fcfprozesses in Frage.
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=Im {0}-Cache kann kein neues Objekt mit dem Schl\u00fcssel {1} erstellt werden, da es bereits im Cache vorhanden ist.
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=Das angeforderte Konglomerat ({0}) ist nicht vorhanden.
+XSAI3.S=Ein Feature ist nicht implementiert.
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=Suchtyp
+XSAJ1.U=Anzahl der besuchten Seiten
+XSAJ2.U=Anzahl der besuchten Zeilen
+XSAJ3.U=Anzahl der gel\u00f6schten besuchten Zeilen
+XSAJ4.U=Anzahl der qualifizierten Zeilen
+XSAJ5.U=Anzahl der abgerufenen Spalten
+XSAJ6.U=Bits der abgerufenen Spalten
+XSAJ7.U=Tiefe der Baumstruktur
+XSAJ8.U=Sortiertyp
+XSAJA.U=Anzahl der eingegebenen Zeilen
+XSAJB.U=Anzahl der ausgegebenen Zeilen
+XSAJC.U=Anzahl der Mischvorg\u00e4nge
+XSAJD.U=Umfang der Mischvorg\u00e4nge
+XSAJE.U=Alle
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=B-Baumstruktur
+XSAJG.U=Heap-Speicher
+XSAJH.U=Sortierung
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=\u00e4u\u00dfere
+XSAJJ.U=innere
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=Fehlerhaftes XA-Protokoll.
+XSAX1.S=Es wurde versucht, eine globale Transaktion mit der XID einer vorhandenen globalen Transaktion zu starten.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=Bei dem Versuch, ein Modul f\u00fcr ''{0}'' zu booten, ist eine Ausnahme eingetreten.
+XSAM2.S=Es ist kein Index oder Konglomerat mit der Konglomerat-ID ''{0}'' zum Freigeben vorhanden.
+XSAM3.S=Es ist kein Index oder Konglomerat mit der Konglomerat-ID ''{0}'' vorhanden.
+XSAM4.S=Es gibt keine Sortierung mit der Bezeichnung ''{0}''.
+XSAM5.S=Sie m\u00fcssen die Suche \u00f6ffnen und positionieren, indem Sie vor allen anderen Methoden next() aufrufen.
+XSAM6.S=Der Datensatz {2} auf Seite {1} im Container {0} wurde nicht gefunden.
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=Eine Schablone konnte nicht erstellt werden.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=Das Feature ist nicht implementiert.
+XSCH7.S=Die Suche ist nicht positioniert.
+XSCH6.S=Der Heap-Container mit der Container-ID {0} ist geschlossen.
+XSCH5.S=In einer Basistabelle wich die Anzahl der angeforderten Spalten ({0}) von der maximalen Spaltenanzahl ({1}) ab.
+XSCH4.S=Ein Konglomerat konnte nicht erstellt werden.
+XSCH1.S=Der Container {0} wurde nicht gefunden.
+XSCH0.S=Ein Container konnte nicht erstellt werden.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=F\u00fcr Testzwecke reserviert.
+XSCB8.S=Das B-Baum-Konglomerat {0} ist geschlossen.
+XSCB7.S=Beim Durchsuchen einer B-Baumstruktur ist ein interner Fehler aufgetreten; current_rh ist null = {0}; der Positionsschl\u00fcssel ist null = {1}.
+XSCB6.S=Einschr\u00e4nkung: Der Datensatz f\u00fcr den Sekund\u00e4rindex einer B-Baumstruktur kann wegen unzureichenden Speicherbereichs auf der Seite nicht aktualisiert oder eingef\u00fcgt werden. Verwenden Sie den Parameter derby.storage.pageSize und/oder derby.storage.pageReservedSpace, um diese Einschr\u00e4nkung zu umgehen.
+XSCB5.S=W\u00e4hrend des logischen Widerrufs einer Einf\u00fcge- oder L\u00f6schoperation f\u00fcr eine B-Baumstruktur kann die Zeile in der Baumstruktur nicht gefunden werden.
+XSCB4.S=F\u00fcr eine begonnene Suche in einer B-Baumstruktur wurde eine Methode aufgerufen, bevor die Suche in der ersten Zeile positioniert wurde (d. h. next() wurde noch nicht aufgerufen). Der aktuelle Status der Suche ist ({0}).
+XSCB3.S=Nicht implementiertes Feature.
+XSCB2.S=In der f\u00fcr createConglomerate() f\u00fcr den Sekund\u00e4rindex einer Baumstruktur bereitgestellten Merkmalliste wurde das erforderliche Merkmal {0} nicht gefunden.
+XSCB1.S=Der Container {0} wurde nicht gefunden.
+XSCB0.S=Ein Container konnte nicht erstellt werden.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=Es konnten keine Ressourcen f\u00fcr die Sortierung angefordert werden.
+XSAS3.S=Der Typ einer in eine Suche eingef\u00fcgten Zeile stimmt nicht mit der Suchschablone \u00fcberein.
+XSAS1.S=Es wurde versucht, eine Zeile vor Beginn oder nach Beendigung einer Suche abzurufen.
+XSAS0.S=Es wurde eine Schnittstellenmethode des Suchcontrollers aufgerufen, die f\u00fcr das Durchsuchen einer Sortierung nicht geeignet ist.
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=Die Datenbank kann nicht eingefroren werden, da sie bereits eingefroren ist.
+XSRS1.S=Die Datenbank kann nicht in {0} gesichert werden, da es sich nicht um ein Verzeichnis handelt.
+XSRS4.S=W\u00e4hrend der Sicherung ist ein Fehler beim Umbenennen der Datei von {0} in {1} aufgetreten.
+XSRS5.S=W\u00e4hrend der Sicherung ist ein Fehler beim Kopieren der Datei von {0} in {1} aufgetreten.
+XSRS6.S=Das Sicherungsverzeichnis {0} kann nicht erstellt werden.
+XSRS7.S=Die Sicherung hat eine unerwartete Ausnahme abgefangen.
+XSRS8.S=Die Protokolleinheit kann nur beim Erstellen der Datenbank definiert und w\u00e4hrend der Verarbeitung nicht ge\u00e4ndert werden.
+XSRS9.S=Der Datensatz {0} ist nicht mehr vorhanden.
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=Es k\u00f6nnen keine weiteren \u00c4nderungen ausgegeben werden. Die Protokoll-Factory wurde gestoppt.
+XSLB8.S=Es wurde versucht, eine Suche auf {0} zur\u00fcckzusetzen. Dieser Wert liegt au\u00dferhalb der Begrenzung {1}.
+XSLB6.S=Es wurde versucht, einen Protokollsatz mit der L\u00e4nge 0 oder -ve zu protokollieren.
+XSLB5.S=Unzul\u00e4ssiger truncationLWM-Zeitpunkt {1} f\u00fcr Abschneidepunkt {0}. Der g\u00fcltige Bereich liegt zwischen {2} und {3}.
+XSLB4.S=truncationLWM {0} wurde nicht gefunden.
+XSLB2.S=Die Protokolloperation {0} protokolliert zu viele Daten. Sie hat den internen Protokollpuffer gef\u00fcllt.
+XSLB1.S=Die Protokolloperation {0} hat beim Schreiben ihrer Daten in den Protokolldatenstrom einen Fehler festgestellt. Die Ursache kann eine falsche Protokolloperation oder die Ersch\u00f6pfung der Kapazit\u00e4t des internen Protokollpuffers durch eine zu umfangreiche Protokolloperation sein.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=Das Protokollverzeichnis {0} ist bereits vorhanden. Vergewissern Sie sich, dass die angegebene Position der Protokolleinheit stimmt. 
+XSLAS.D=Bei der Wiederherstellung wurde das Protokollverzeichnis {0} nicht in der Sicherung gefunden. Vergewissern Sie sich, dass es sich um die richtige Sicherungskopie handelt und dass diese nicht besch\u00e4digt ist.
+XSLAR.D=Die Protokolldatei ''{0}'' kann beim Wiederherstellen nicht nach ''{1}'' kopiert werden. Vergewissern Sie sich, dass genug Speicherplatz verf\u00fcgbar ist und dass die notwendigen Berechtigungen vorliegen. 
+XSLAQ.D=Im Verzeichnis {0} kann keine Protokolldatei erstellt werden.
+XSLAP.D=Die Datenbank in {0} hat die Version {1}. F\u00fcr Betadatenbanken ist kein Upgrade m\u00f6glich.
+XSLAO.D=Die Wiederherstellung ist aufgrund des unerwarteten Fehlers {0} gescheitert.
+XSLAN.D=Das Format der Datenbank in {0} ist nicht mit der aktuellen Version der Software kompatibel. Die Datenbank wurde mit der Version {1} erstellt oder erweitert.
+XSLAM.D=Das Format der Datenbank in {1} kann aufgrund einer E/A-Ausnahme nicht gepr\u00fcft werden.
+XSLAL.D=Die Protokollsatzgr\u00f6\u00dfe {2} \u00fcberschreitet die maximal zul\u00e4ssige Gr\u00f6\u00dfe der Protokolldatei von {3}. In der Protokolldatei {0} wurde an der Position {1} ein Fehler festgestellt.
+XSLAK.D=Die Datenbank hat die h\u00f6chste Protokolldateinummer {0} \u00fcberschritten.
+XSLAJ.D=Das Protokollierungssystem wurde wegen eines fr\u00fcheren Fehlers zum Herunterfahren vorgemerkt und l\u00e4sst weitere Operationen erst nach einem Systemabschluss und einem Neustart des Systems zu.
+XSLAI.D=Der Pr\u00fcfpunktprotokollsatz kann nicht protokolliert werden.
+XSLAH.D=Sie aktualisieren eine Datenbank mit Lesezugriff.
+XSLAF.D=Eine Datenbank mit Lesezugriff wurde mit benutzten Datenpuffern erstellt.
+XSLAE.D=Die Steuerdatei in {0} kann nicht geschrieben oder aktualisiert werden.
+XSLAD.D=Der Protokollsatz an der Adresse {2} in der Protokolldatei {3} ist besch\u00e4digt. Erwartete Protokollsatzl\u00e4nge: {0}; tats\u00e4chliche L\u00e4nge: {1}.
+XSLAC.D=Das Format der Datenbank in {0} ist nicht mit der aktuellen Version der Software kompatibel. Sie wurde m\u00f6glicherweise mit einer neueren Version erstellt oder erweitert.
+XSLAB.D=Die Protokolldatei {0} wurde nicht gefunden. Vergewissern Sie sich, dass das Merkmal logDevice ordnungsgem\u00e4\u00df und mit dem richtigen Pfadtrennzeichen f\u00fcr Ihre Plattform angegeben ist.
+XSLAA.D=Der Speicher wurde von einer fr\u00fcheren Ausnahme zum Herunterfahren vorgemerkt.
+XSLA8.D=Die Transaktion {0} kann nicht zur\u00fcckgesetzt werden. Es wird versucht, die Operation {1} durch {2} zu kompensieren.
+XSLA7.D=Die Operation {0} im Protokoll kann nicht wiederholt werden.
+XSLA6.D=Die Datenbank kann nicht wiederhergestellt werden.
+XSLA5.D=Der Protokolldatenstrom f\u00fcr das Zur\u00fccksetzen der Transaktion {0} kann nicht gelesen werden.
+XSLA4.D=Es kann nicht in das Protokoll geschrieben werden. Wahrscheinlich ist das Protokoll voll. L\u00f6schen Sei nicht ben\u00f6tigte Dateien. Es kann auch sein, dass nur Lesezugriff auf das Dateisystem m\u00f6glich ist oder ein Datentr\u00e4gerfehler vorliegt.
+XSLA3.D=Das Protokoll ist besch\u00e4digt. Der Protokolldatenstrom enth\u00e4lt ung\u00fcltige Daten.
+XSLA2.D=Das System wird heruntergefahren. Beim Zugriff auf die Protokolldatei wurde eine E/A-Ausnahme empfangen.
+XSLA1.D=Der Protokollsatz wurde an den Datenstrom gesendet, kann jedoch nicht in den Speicher (Objekt {0}) gestellt werden. Dies kann zu Fehlern bei der Wiederherstellung f\u00fchren.
+XSLA0.D=Die freigegebene Protokolldatei kann nicht auf den Datentr\u00e4ger {0} geschrieben werden.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=In der aktuellen Transaktion ist bereits ein Sicherungspunkt mit dem \u00fcbergebenen Namen vorhanden.
+3B502.S=Es wurde RELEASE oder ROLLBACK TO SAVEPOINT angegeben. Der Sicherungspunkt ist jedoch nicht vorhanden.
+3B001.S=Der Sicherungspunkt {0} ist nicht vorhanden oder in der aktuellen Transaktion nicht aktiv.
+3B002.S=Die maximale Anzahl von Sicherungspunkten ist erreicht. 
+XSTA2.S=Es wurde versucht, eine Transaktion zu aktivieren, obwohl bereits eine andere Transaktion aktiv war.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=Das Modul RawStore hat einen internen Fehler festgestellt.
+40XT1=Beim Festschreiben der Transaktion wurde eine Ausnahme ausgel\u00f6st.
+40XT2=Beim Zur\u00fccksetzen eines Sicherungspunktes wurde eine Ausnahme ausgel\u00f6st.
+40XT4=Es wurde versucht, eine noch aktive Transaktion zu schlie\u00dfen. Die Transaktion wurde abgebrochen.
+40XT5=W\u00e4hrend einer internen Transaktion wurde eine Ausnahme ausgel\u00f6st.
+40XT6=Die Datenbank ist stillgelegt, so dass die Transaktion nicht aktiviert werden kann. Warten Sie, bis die Datenbank vom Stilllegungsstatus in einen anderen Status wechselt.
+40XT7=Die Operation wird in einer internen Transaktion nicht unterst\u00fctzt.
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=Ung\u00fcltige Kennung.
+XCXB0.S=Ung\u00fcltiger Datenbankklassenpfad: ''{0}''.
+XCXC0.S=Ung\u00fcltige ID-Liste.
+XCXE0.S=Sie versuchen, eine Operation auszuf\u00fchren, die das Gebietsschema der Datenbank verwendet. F\u00fcr die Datenbank ist jedoch kein Gebietsschema festgelegt.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=Beim Abbrechen der Transaktion wurde eine Ausnahme ausgel\u00f6st.
+XSTB2.M=Die Transaktions\u00e4nderungen k\u00f6nnen nicht protokolliert werden. M\u00f6glicherweise versuchen Sie, in eine Datenbank mit Lesezugriff zu schreiben.
+XSTB3.M=Die Transaktion kann nicht abgebrochen werden, weil der Protokollmanager - wahrscheinlich aufgrund eines fr\u00fcheren Fehlers - nicht angegeben ist.
+XSTB5.M=Beim Erstellen einer Datenbank mit inaktivierter Protokollierung ist ein unerwarteter Fehler aufgetreten.
+XSTB6.M=Eine Transaktionstabelle kann nicht durch eine andere ersetzt werden, solange eine der beiden Tabellen verwendet wird.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=Der Container wurde geschlossen.
+40XD1=Der Container wurde im Schreibschutzmodus ge\u00f6ffnet.
+40XD2=Der Container {0} kann nicht ge\u00f6ffnet werden. Er wurde gel\u00f6scht oder ist nicht vorhanden.
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=Es wurde versucht, auf einer Seite auf eine Stelle au\u00dferhalb des Bereiches zuzugreifen.
+XSDA2.S=Es wurde versucht, einen gel\u00f6schten Datensatz zu aktualisieren.
+XSDA3.S=Einschr\u00e4nkung: Der Datensatz wegen unzureichenden Speicherbereichs auf der Seite nicht aktualisiert oder eingef\u00fcgt werden. Verwenden Sie den Parameter derby.storage.pageSize und/oder derby.storage.pageReservedSpace, um diese Einschr\u00e4nkung zu umgehen.
+XSDA4.S=Es wurde eine unerwartete Ausnahme ausgel\u00f6st.
+XSDA5.S=Es wurde versucht, das L\u00f6schen eines nicht gel\u00f6schten Datensatzes zu widerrufen.
+XSDA6.S=Die Spalte {0} der Zeile ist gleich null. Sie muss so konfiguriert werden, dass sie auf ein Objekt zeigt.
+XSDA7.S=Beim Wiederherstellen eines serialisierbaren oder SQLData-Objekts der Klasse {0} wurde versucht, mehr Daten zu lesen, als urspr\u00fcnglich gespeichert wurden.
+XSDA8.S=Ausnahme beim Wiederherstellen eines serialisierbaren oder SQLData-Objekts der Klasse {0}.
+XSDA9.S=Beim Wiederherstellen eines serialisierbaren oder SQLData-Objekts der Klasse {0} wurde die Klasse nicht gefunden.
+XSDAA.S=Ung\u00fcltige Zeitmarke {0}. Die Zeitmarke stammt von einer anderen Seite oder von einer inkompatiblen Implementierung.
+XSDAB.S=Eine Nullzeitmarke kann nicht gesetzt werden.
+XSDAC.S=Es wurde versucht, Zeilen oder Seiten von einem Container in einen anderen zu verschieben.
+XSDAD.S=Es wurde versucht, Nullzeilen von einer Seite auf eine andere zu verschieben.
+XSDAE.S=Eine interne Datensatzkennung kann nur f\u00fcr eine spezifische Kennungs-ID erstellt werden.
+XSDAF.S=Eine spezifische interne Datensatzkennung wird wie eine normale interne Kennung verwendet.
+XSDAG.S=Der Container kann nicht w\u00e4hrend der Zuordnung durch die erste verschachtelte Transaktion ge\u00f6ffnet werden.
+XSDAI.S=Die Seite {0}, die gerade entfernt wird, ist bereits gesperrt, um freigegeben zu werden.
+XSDAJ.S=Ausnahme beim Schreiben eines serialisierbaren oder SQLData-Objekts.
+XSDAK.S=F\u00fcr die interne Datensatzkennung {0} wurde die falsche Seite abgerufen.
+XSDAL.S=Die interne Datensatzkennung {0} zeigt unerwartet auf die \u00dcberlaufseite.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=Unerwartete Ausnahme auf der speicherinternen Seite {0}
+XSDB1.D=Unbekanntes Seitenformat auf der Seite {0}
+XSDB2.D=Unbekanntes Containerformat im Container {0}: {1}
+XSDB3.D=Einmal geschriebene Containerinformationen k\u00f6nnen nicht ge\u00e4ndert werden. Vorheriger Stand: {0}; aktueller Stand: {1}
+XSDB4.D=Die Seite {0} hat den Versionsstand {1}. Die Protokolldatei enth\u00e4lt die \u00c4nderungsversion {2}. Es fehlen Protokolls\u00e4tze dieser Seite oder die Seite wurde nicht ordnungsgem\u00e4\u00df auf den Datentr\u00e4ger geschrieben.
+XSDB5.D=Der \u00c4nderungssatz befindet sich auf Seite {0} des Protokolls, die sich au\u00dferhalb des Containerendes befindet.
+XSDB6.D=Die Datenbank {0} wurde m\u00f6glicherweise bereits von einer anderen Derby-Instanz gebootet.
+XSDB7.D=WARNUNG: Derby (Instanz {0}) versucht, die Datenbank {1} zu booten, obwohl Derby (Instanz {2}) noch aktiv sein k\u00f6nnte. Eine Datenbank sollte immer nur von jeweils einer Derby-Instanz gebootet werden. Es k\u00f6nnen schwerwiegende und irreparable Sch\u00e4den eingetreten sein oder noch eintreten.
+XSDB8.D=WARNUNG: Derby (Instanz {0}) versucht, die Datenbank {1} zu booten, obwohl Derby (Instanz {2}) noch aktiv sein k\u00f6nnte. Eine Datenbank sollte immer nur von jeweils einer Derby-Instanz gebootet werden. Es k\u00f6nnen schwerwiegende und irreparable Sch\u00e4den eintreten, wenn zwei Instanzen von Derby gleichzeitig dieselbe Datenbank booten. Das Merkmal db2j.database.forceDatabaseLock=true wurde gesetzt, so dass die Datenbank erst gebootet wird, wenn db.lck nicht mehr vorhanden ist. Diese Datei wird normalerweise entfernt, wenn die erste Derby-Instanz zum Booten der Datenbank vorhanden ist. Es kann jedoch vorkommen, dass sie beim Herunterfahren nicht gel\u00f6scht wird. In diesem Fall muss die Datei manuell entfernt werden. Vergewissern Sie sich vor dem manuellen L\u00f6schen der Datei db.lck unbedingt, dass keine andere VM auf die Datenbank zugreift.
+XSDB9.D=Der Datenstromcontainer {0} ist besch\u00e4digt.
+XSDBA.D=Der Versuch, das Objekt {0} zuzuordnen, ist gescheitert.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=Die Datei {0} konnte nicht erstellt werden, da sie bereits vorhanden ist.
+XSDF1.S=Beim Erstellen der Datei {0} f\u00fcr den Container ist eine Ausnahme eingetreten.
+XSDF2.S=Beim Erstellen der Datei {0} f\u00fcr den Container ist eine Ausnahme eingetreten. Die Datei konnte nicht entfernt werden. Ausnahme: {1}.
+XSDF3.S=Das Segment {0} kann nicht erstellt werden.
+XSDF4.S=Beim Entfernen der Datei {0} f\u00fcr den gel\u00f6schten Container ist eine Ausnahme eingetreten. Die Datei konnte nicht entfernt werden. {1}.
+XSDF6.S=Die Zuordnungsseite {0} wurde nicht gefunden.
+XSDF7.S=Die neu erstellte Seite {0} konnte nicht gesperrt werden.
+XSDF8.S=Die wiederzuverwendende Seite {0} wurde nicht gefunden.
+XSDFB.S=Die Operation wird von einer Datenbank mit Lesezugriff nicht unterst\u00fctzt.
+XSDFD.S=Auf Seite {0} wurde in zwei Ein-/Ausgaben verschiedene Seitenimages gelesen. Das erste Image hat die falsche Kontrollsumme und das zweite die richtige. Seitenimages: {1} {2}
+XSDFF.S=Die angeforderte Operation ist durch eine unerwartete Ausnahme gescheitert.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=Die Seite {0} konnte nicht vom Datentr\u00e4ger gelesen werden.
+XSDG1.D=Die Seite {0} konnte nicht auf den Datentr\u00e4ger geschrieben werden. Pr\u00fcfen Sie, ob der Datentr\u00e4ger voll ist.
+XSDG2.D=Ung\u00fcltige Kontrollsumme auf der Seite {0}. Erwartet: {1}, Version auf Datentr\u00e4ger: {2}. Seitenspeicherauszug: {3}
+XSDG3.D=Auf die Metadaten f\u00fcr den Container {0} konnte nicht zugegriffen werden.
+XSDG5.D=Die Datenbank befand sich nicht im Erstellungsmodus, als createFinished aufgerufen wurde.
+XSDG6.D=Bei der Wiederherstellung wurde das Datensegmentverzeichnis nicht in der Sicherung {0} gefunden. Vergewissern Sie sich, dass es sich um die richtige Sicherungskopie handelt und dass diese nicht besch\u00e4digt ist.
+XSDG7.D=Bei der Wiederherstellung konnte das Verzeichnis {0} nicht entfernt werden. Vergewissern Sie sich, dass die notwendigen Berechtigungen vorliegen.
+XSDG8.D=Das Verzeichnis ''{0}'' kann beim Wiederherstellen nicht nach ''{1}'' kopiert werden. Vergewissern Sie sich, dass genug Speicherplatz verf\u00fcgbar ist und dass die notwendigen Berechtigungen vorliegen. 
+
+# language
+01500=Die Integrit\u00e4tsbedingung {0} in Tabelle {1} wurde gel\u00f6scht.
+01501=Die Ansicht {0} wurde gel\u00f6scht.
+01502=Der Ausl\u00f6ser {0} in Tabelle {1} wurde gel\u00f6scht.
+01503=Die Spalte {0} in Tabelle {1} wurde durch das Hinzuf\u00fcgen einer Integrit\u00e4tsbedingung ungleich null ge\u00e4ndert.
+01504=Der neue Index ist ein Duplikat eines vorhandenen Indexes: {0}.
+01505=Der Wert {0} ist m\u00f6glicherweise abgeschnitten.
+01003=Aus dem Argument einer Spaltenfunktion wurden Nullwerte eliminiert.
+0100E=XX Es wurde versucht, zu viele Ergebnislisten zur\u00fcckzugeben.
+02000=F\u00fcr FETCH, UPDATE oder DELETE wurde keine Zeile gefunden oder das Ergebnis einer Abfrage ist eine leere Tabelle.
+21000=Eine skalare Unterabfrage darf nur eine Zeile zur\u00fcckgeben.
+22001=Bei dem Versuch, {0} ''{1}'' auf die L\u00e4nge {2} zu k\u00fcrzen, ist ein Abschneidefehler aufgetreten.
+54006=Die aus der Operation {0} resultierende L\u00e4nge ist gr\u00f6\u00dfer als {1}.
+22003=Der resultierende Wert liegt au\u00dferhalb des Bereichs f\u00fcr den Datentyp {0}.
+22005=Es wurde versucht, einen Datenwert des Typs ''{0}'' aus einem Datenwert des Typs ''{1}'' abzurufen.
+22007.S.180=Die Zeichenfolgendarstellung eines datetime-Wertes liegt au\u00dferhalb des Bereichs.
+22007.S.181=Die Syntax der Zeichenfolgendarstellung eines datetime-Wertes ist fehlerhaft.
+22011=Das zweite oder dritte Argument der Funktion SUBSTR liegt au\u00dferhalb des Bereichs.
+22012=Es wurde eine Division durch null versucht.
+22013=Es wurde versucht, die Quadratwurzel einer negativen Zahl (''{0}'') zu ziehen.
+22014=Die Anfangsposition f\u00fcr LOCATE ist ung\u00fcltig. Sie muss eine positive ganze Zahl sein. Der Index, bei dem die Suche beginnen soll, ist ''{2}''. Zu suchende Zeichenfolge: ''{0}''. Die Zeichenfolge, bei der die Suche beginnen soll, ist ''{1}''.
+
+22015=Die Funktion ''{0}'' ist f\u00fcr die folgenden Typen unzul\u00e4ssig. Der erste Operand ist vom Typ ''{1}''. Der zweite Operand ist vom Typ ''{2}''. Der dritte Operand (Anfangsposition) ist vom Typ ''{3}''.
+22018=Ung\u00fcltiges Zeichenfolgenformat f\u00fcr den Typ {0}
+22019=Die Escape-Zeichenfolge ''{0}'' ist ung\u00fcltig. Die Escape-Zeichenfolge muss aus genau einem Zeichen bestehen. Sie muss ungleich null sein und darf nicht mehr als ein Zeichen enthalten.
+22025=Auf das Escape-Zeichen muss ein Escape-Zeichen '_' oder '%' folgen. Ein anderes Folgezeichen ist unzul\u00e4ssig. Das Escape-Zeichen darf auch nicht das letzte Zeichen des Musters sein.
+22027=Die integrierte Funktion TRIM() unterst\u00fctzt nur das Entfernen eines Zeichens. Die integrierten Funktionen LTRIM() und RTRIM() unterst\u00fctzen das Entfernen mehrerer Zeichen.
+22500=Der Parameter ? kann nicht sowohl im LIKE-Muster als auch in der ESCAPE-Klausel verwendet werden.
+22501=Eine ESCAPE-Klausel NULL gibt nicht definierte Ergebnisse zur\u00fcck und ist unzul\u00e4ssig.
+23502=Die Spalte ''{0}''  akzeptiert keinen Nullwert.
+23505=Die Anweisung wurde abgebrochen, weil sie in einer f\u00fcr ''{1}'' definierten Vorgabe f\u00fcr einen eindeutigen oder Prim\u00e4rschl\u00fcssel bzw. f\u00fcr einen von ''{0}'' bezeichneten eindeutigen Index zu einem duplizierten Schl\u00fcsselwert gef\u00fchrt h\u00e4tte.
+23503={2} in Tabelle ''{1}'' hat f\u00fcr Schl\u00fcssel {3} die Integrit\u00e4tsbedingung "{0}" f\u00fcr Fremdschl\u00fcssel verletzt. Die Anweisung wurde zur\u00fcckgesetzt.
+23513=Die Bedingung ''{1}'' f\u00fcr die Integrit\u00e4tspr\u00fcfung wurde beim Ausf\u00fchren von INSERT oder UPDATE f\u00fcr Tabelle ''{0}'' verletzt.
+38000=Bei der Auswertung eines Ausdrucks wurde die Ausnahme ''{0}'' ausgel\u00f6st.
+38001=Die externe Routine ist nicht berechtigt, SQL-Anweisungen auszuf\u00fchren.
+38002=Die Routine hat versucht, Daten zu modifizieren, wurde jedoch nicht als MODIFIES SQL DATA definiert.
+38004=Die Routine hat versucht, Daten zu lesen, wurde jedoch nicht als READS SQL DATA definiert.
+39004=An eine Methode mit einem Parameter des primitiven Typs ''{0}'' kann kein Nullwert \u00fcbergeben werden.
+40XC0=Nicht mehr verwendbare Anweisung. Die Ursache kann das Abfangen eines Transaktionsfehlers bestimmter Wertigkeit innerhalb dieser Anweisung sein.
+# this error is retired in 1.3
+42000=Syntaxfehler oder Verletzung einer Zugriffsregel. Details k\u00f6nnen Sie den zus\u00e4tzlichen Fehlernachrichten entnehmen.
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=Die Spalte ''{0}'' wurde in einer Anweisung ALTER TABLE als NOT NULL angegeben und die Klausel DEFAULT wurde nicht oder als DEFAULT NULL angegeben.
+42601.S.372=Die Anweisung ALTER TABLE kann keine Spalte IDENTITY zu einer Tabelle hinzuf\u00fcgen. 
+42606=Es wurde eine ung\u00fcltige Hexadezimalkonstante gefunden, die mit ''{0}'' beginnt.
+54002=Eine mit ''{0}'' beginnende Zeichenfolgekonstante ist zu lang.
+42611=Das L\u00e4ngen-, Genauigkeits- oder Skalenattribut f\u00fcr die Spalte oder Typzuordnung ''{0}'' ist ung\u00fcltig. 
+
+42605=Die Anzahl der Argumente f\u00fcr die Funktion ''{0}'' ist falsch.
+42610=Es k\u00f6nnen nicht alle Argumente f\u00fcr die Funktion COALESC/VALUE Parameter sein. Mindestens eines der Argumente muss kein Parameter sein.
+
+42613=Es liegen mehrere oder in Konflikt stehende Schl\u00fcsselw\u00f6rter mit der Klausel ''{0}'' vor.
+42621=Eine mit ''{0}'' definierte Bedingung f\u00fcr die Integrit\u00e4tspr\u00fcfung oder generierte Spalte ist ung\u00fcltig.
+42734=Der im Kontext ''{1}'' angegebene Name ''{0}'' ist nicht eindeutig.
+# DB2 error for invalid set schema
+42802=Die Anzahl der zugeordneten Werte stimmt nicht mit der Anzahl der angegebenen oder impliziten Spalten \u00fcberein.
+42815.S.713=Der Ersatzwert f\u00fcr ''{0}'' ist ung\u00fcltig.
+42815.S.171=Die Argumente ''{0}'' und ''{1}'' sind nach Datentyp, L\u00e4nge oder Argumentwerten inkompatibel.
+42820=Das Gleitkommaliteral ''{0}'' enth\u00e4lt mehr als 30 Zeichen.
+42824=Ein Operand von LIKE ist keine Zeichenfolge, oder der erste Operand ist keine Spalte.
+42831=''{0}'' kann Nullwerte enthalten und daher keine Spalte eines Prim\u00e4rschl\u00fcssels oder eines eindeutigen Schl\u00fcssels sein.
+42834=SET NULL kann nicht angegeben werden, weil der Fremdschl\u00fcssel ''{0}''  keine Nullwerte enthalten darf.
+
+42884=Es wurde keine autorisierte Routine ''{0}'' des Typs ''{1}'' mit kompatiblen Argumenten gefunden.
+42886=Der ''{0}''-Parameter  ''{1}'' erfordert eine Parametermarke ''?''.
+42894=Der DEFAULT-Wert oder der Wert des Attributs IDENTITY ist f\u00fcr die Spalte ''{0}'' ung\u00fcltig.
+428C1=Pro Tabelle ist nur eine Identit\u00e4tsspalte zul\u00e4ssig.
+42903=Ung\u00fcltige Verwendung einer Aggregatfunktion.
+42908=Die Anweisung CREATE VIEW enth\u00e4lt keine Spaltenliste.
+42915=Der Fremdschl\u00fcssel ''{0}'' ist wegen ''{1}'' ung\u00fcltig.
+
+42972=Eine einem JOIN-Operator zugeordnete ON-Klausel ist ung\u00fcltig.
+42X01=Syntaxfehler: {0}.
+42X02={0}.
+42X03=Der Spaltenname ''{0}'' findet sich in mehr als einer Tabelle der FROM-Liste.
+42X04=Die Spalte ''{0}'' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verkn\u00fcpfungsspezifikation und befindet sich au\u00dferhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist ''{0}'' keine Spalte in der Zieltabelle.
+42X05=Die Tabelle ''{0}'' ist nicht vorhanden.
+42X06=F\u00fcr die Tabelle ''{0}'' wurden zu viele Ergebnisspalten angegeben.
+42X07=Null ist nur in einer VALUES-Klausel innerhalb einer INSERT-Anweisung zul\u00e4ssig.
+42X08=Der Konstruktor f\u00fcr die Klasse ''{0}'' kann nicht als \u00e4u\u00dfere virtuelle Tabelle verwendet werden, da die Klasse ''{1}'' nicht implementiert.
+42X09=Die Tabelle oder der Aliasname ''{0}'' wird in der FROM-Liste mehr als einmal verwendet.
+42X10=''{0}'' ist kein in diesem Bereich angezeigter Tabellenname.
+42622=Der Name ''{0}'' ist zu lang. Die maximale L\u00e4nge liegt bei ''{1}''.
+42X12=Der Spaltenname ''{0}'' erscheint in der Anweisung CREATE TABLE mehr als einmal.
+54011=F\u00fcr die Tabelle oder Ansicht {1} wurden zu viele Spalten ({0}) angegeben. Die Begrenzung liegt bei {2}.
+42Z9F=Zu viele Indizes ({0}) f\u00fcr die Tabelle {1}. Die Begrenzung liegt bei {2}.
+42X13=Der Spaltenname ''{0}'' erscheint in der Spaltenliste einer INSERT-Anweisung mehr als einmal.
+42X14=''{0}'' ist keine Spalte in der Tabelle oder in VTI ''{1}''.
+42X15=Der Spaltenname ''{0}'' erscheint in einer Anweisung ohne eine FROM-Liste.
+42X16=Der Spaltenname ''{0}'' erscheint mehrfach in der SET-Klausel einer UPDATE-Anweisung.
+42X17=Der Wert ''{0}'' ist in der Merkmalliste einer FROM-Klausel nicht als joinOrder-Spezifikation g\u00fcltig. Es sind nur die Werte FIXED und UNFIXED g\u00fcltig.
+42803=Ein Ausdruck mit der Spalte ''{0}'' erscheint in der SELECT-Liste und ist nicht Bestandteil einer 'GROUP BY'-Klausel.
+42818=Vergleiche von ''{0}'' und ''{1}'' werden nicht unterst\u00fctzt.
+42X19=Die WHERE- oder HAVING-Klausel oder die Definition CHECK CONSTRAINT ist ein Ausdruck des Typs ''{0}''. Es muss ein boolescher Ausdruck sein.
+42X23=Der Cursor {0} kann nicht aktualisiert werden.
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=Die Funktion ''{0}'' ist f\u00fcr den Typ ''{1}'' nicht zul\u00e4ssig.
+42X26=Die Klasse ''{0}'' f\u00fcr Spalte ''{1}'' ist nicht vorhanden oder es kann nicht auf die Klasse zugegriffen werden. Diese Situation kann eintreten, wenn die Klasse nicht \u00f6ffentlich ist.
+42X28=Die zu l\u00f6schende Tabelle ''{0}'' ist keine Zieltabelle des Cursors ''{1}''.
+42X29=Die zu aktualisierende Tabelle ''{0}'' ist keine Zieltabelle des Cursors ''{1}''.
+42X30=Der Cursor ''{0}'' wurde nicht gefunden. Pr\u00fcfen Sie, ob das automatische Festschreiben inaktiviert ist.
+42X31=Die Spalte ''{0}'' ist nicht in der Liste FOR UPDATE des Cursors ''{1}'' enthalten.
+42X32=Die Spaltenanzahl in der abgeleiteten Spaltenliste muss mit der Spaltenanzahl der Tabelle ''{0}'' \u00fcbereinstimmen.
+42X33=Die abgeleitete Spaltenliste enth\u00e4lt zweimal den Spaltennamen ''{0}''.
+42X34=Die Liste enth\u00e4lt einen ?-Parameter. Dies ist unzul\u00e4ssig.
+42X35=Es ist unzul\u00e4ssig, dass beide Operanden von ''{0}'' ?-Parameter sind.
+42X36=F\u00fcr den Operator ''{0}'' darf kein ?-Parameter als Operand angegeben werden.
+42X37=Der unit\u00e4re Operator ''{0}'' ist f\u00fcr den Typ ''{1}'' nicht zul\u00e4ssig.
+42X38=''SELECT *'' ist nur in den Unterabfragen EXISTS und NOT EXISTS zul\u00e4ssig.
+42X39=Eine Unterabfrage darf nur eine Spalte zur\u00fcckgeben.
+42X40=Ein NOT verwendet einen nicht booleschen Operanden. Das Ergebnis der Auswertung f\u00fcr den Operanden von NOT muss TRUE, FALSE oder UNKNOWN sein.
+42X41=Das Merkmal ''{0}'' ist in der Merkmalklausel einer FROM-Liste ung\u00fcltig. (Das Merkmal wurde auf ''{1}'' gesetzt.)
+42821=Spalten des Typs ''{0}'' k\u00f6nnen keine Werte des Typs ''{1}'' enthalten. 
+42X43=Die von der Klasse bzw. dem Objekt ''{0}'' zur\u00fcckgegebenen ResultSetMetaData waren Nulldaten. Die ResultSetMetaData m\u00fcssen ungleich null sein, wenn diese Klasse als \u00e4u\u00dfere virtuelle Tabelle verwendet werden soll.
+42X44=Ung\u00fcltige L\u00e4nge ''{0}'' in der Spaltenspezifikation.
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=Der Wert ''{1}'' hat eine f\u00fcr {0} nicht g\u00fcltige Genauigkeit.
+42X49=Der Wert ''{0}'' ist kein g\u00fcltiges ganzzahliges Literal.
+42X50=Es wurde keine mit dem Methodenaufruf {0}.{1}({2}) \u00fcbereinstimmende Methode gefunden, obwohl alle Kombinationen von Objekttypen und primitiven Typen und alle m\u00f6glichen Typumsetzungen f\u00fcr die zul\u00e4ssigen Parameter des Methodenaufrufs versucht wurden. M\u00f6glicherweise ist die Methode vorhanden, jedoch keine \u00f6ffentliche und/oder statische Methode. Es kann auch sein, dass die Parametertypen beim Aufruf der Methode nicht konvertierbar sind.
+42X51=Die Klasse ''{0}'' ist nicht vorhanden oder es kann nicht auf die Klasse zugegriffen werden. Diese Situation kann eintreten, wenn die Klasse nicht \u00f6ffentlich ist.
+42X52=Das Aufrufen einer Methode (''{0}'') mit dem primitiven Java-Typ ''{1}" als Empf\u00e4nger ist unzul\u00e4ssig.
+42X53=Das Pr\u00e4dikat LIKE kann nur mit dem Operand ''CHAR'' oder ''VARCHAR'' verwendet werden. Der Typ ''{0}'' ist unzul\u00e4ssig.
+42X54=Die Java-Methode ''{0}'' gibt ? als Empf\u00e4nger an. Dies ist unzul\u00e4ssig.
+42X55=Der Tabellenname ''{1}'' darf nicht mit ''{0}'' \u00fcbereinstimmen.
+42X56=Die Spaltenanzahl in der angezeigten Spaltenliste stimmt nicht mit der Spaltenanzahl im zugrundeliegen Abfrageausdruck in der Anzeigedefinition f\u00fcr ''{0}'' \u00fcberein.
+42X57=getColumnCount() f\u00fcr die \u00e4u\u00dfere virtuelle Tabelle ''{0}'' hat den ung\u00fcltigen Wert ''{1}'' zur\u00fcckgegeben. G\u00fcltig sind Werte >= 1.
+42X58=Die Spaltenanzahl auf der linken Seite der Verkn\u00fcpfung (UNION) muss mit der auf der rechten Seite \u00fcbereinstimmen.
+42X59=Die Spaltenanzahl muss in allen VALUES-Konstruktoren identisch sein.
+42X60=F\u00fcr die Tabelle ''{1}'' wurde f\u00fcr das Merkmal insertMode der ung\u00fcltige Wert ''{0}'' angegeben.
+42X61=Die Typen ''{0}'' und ''{1}'' sind inkompatibel mit einer Verkn\u00fcpfung (UNION).
+42X62=''{0}'' ist im Schema ''{1}'' nicht zul\u00e4ssig.
+42X63=Die USING-Klausel hat keine Ergebnisse geliefert. Es k\u00f6nnen keine Parameter gesetzt werden.
+42X64=In der Merkmalliste wurde f\u00fcr das Merkmal useStatistics der ung\u00fcltige Wert ''{0}'' angegeben. G\u00fcltig sind nur die Werte TRUE und FALSE.
+42X65=Der Index ''{0}'' ist nicht vorhanden.
+42X66=Der Spaltenname ''{0}'' erscheint in der Anweisung CREATE INDEX mehr als einmal.
+42X68=Es wurde kein Feld ''{0}'' gefunden, das zur Klasse ''{1}'' geh\u00f6rt. M\u00f6glicherweise ist das Feld vorhanden, jedoch nicht \u00f6ffentlich. Es kann auch sein, dass die Klasse nicht vorhanden oder nicht \u00f6ffentlich ist.
+42X69=Es ist unzul\u00e4ssig, mit einem Verweisausdruck des primitiven Java-Typs ''{1}'' auf ein Feld (''{0}'') zu verweisen.
+42X72=Es wurde kein statisches Feld ''{0}'' gefunden, das zur Klasse ''{1}'' geh\u00f6rt. M\u00f6glicherweise ist das Feld vorhanden, jedoch nicht \u00f6ffentlich und/oder statisch. Es kann auch sein, dass die Klasse nicht vorhanden oder nicht \u00f6ffentlich ist.
+42X73=Die Methodenaufl\u00f6sung f\u00fcr die Signatur {0}.{1}({2}) war mehrdeutig. (Es gibt keine Methode mit maximaler Spezifik.)
+42X74=Ung\u00fcltige Syntax f\u00fcr Anweisung CALL.
+42X75=Es wurde kein Konstruktor mit der Signatur {0}({1}) gefunden. M\u00f6glicherweise sind die Parametertypen beim Aufruf der Methode nicht konvertierbar.
+42X76=F\u00fcr mindestens eine Spalte (''{0}'') des hinzuzuf\u00fcgenden prim\u00e4ren Schl\u00fcssels besteht keine Eintragspflicht. F\u00fcr alle Spalten eines Prim\u00e4rschl\u00fcssels muss Eintragspflicht gelten.
+42X77=Die Spaltenposition ''{0}'' befindet sich au\u00dferhalb des Bereichs f\u00fcr den Abfrageausdruck.
+42X78=Die Spalte ''{0}'' ist nicht im Ergebnis des Abfrageausdrucks enthalten.
+42X79=Der Spaltenname ''{0}'' erscheint mehr als einmal im Ergebnis des Abfrageausdrucks.
+42877=Der qualifizierte Spaltenname ''{0}'' ist in der 'ORDER BY'-Klausel nicht zul\u00e4ssig.
+42X80=Die VALUES-Klausel muss mindestens einen Eintrag enthalten und keiner der Eintr\u00e4ge darf leer sein.
+42X82=Die USING-Klausel hat mehr als eine Zeile zur\u00fcckgegeben. Es sind nur aus einer Zeile bestehende ResultSets zul\u00e4ssig.
+42X83=Die Integrit\u00e4tsbedingungen f\u00fcr die Spalte ''{0}'' erfordern, dass f\u00fcr die Spalte sowohl Eintragspflicht als auch keine Eintragspflicht gilt.
+42X84=Der Index ''{0}'' wurde erstellt, um die Integrit\u00e4tsbedingung ''{1}'' zu erzwingen. Der Index kann nur gel\u00f6scht werden, wenn die Integrit\u00e4tsbedingung gel\u00f6scht wird.
+42X85=Die Integrit\u00e4tsbedingung ''{0}'' muss sich in demselben Schema wie die Tabelle ''{1}'' befinden.
+42X86=ALTER f\u00fcr die Tabelle ist gescheitert. Es gibt keine Integrit\u00e4tsbedingung ''{0}'' f\u00fcr die Tabelle ''{1}''.
+42X87=Mindestens ein Ergebnisausdruck (then oder else) des Ausdrucks ''{0}'' muss ''?'' sein.
+42X88=Ein Bedingungsausdruck enth\u00e4lt einen nicht booleschen Operanden. Das Ergebnis der Auswertung f\u00fcr den Operanden eines Bedingungsausdrucks muss TRUE, FALSE oder UNKNOWN sein.
+42X89=Die Typen ''{0}'' und ''{1}'' sind untereinander nicht kompatibel. (Keiner der Typen kann dem jeweils anderen zugeordnet werden.)
+42X90=F\u00fcr die Tabelle ''{0}'' wurde mehr als eine Integrit\u00e4tsbedingung f\u00fcr Prim\u00e4rschl\u00fcssel angegeben.
+42X91=Der Integrit\u00e4tsbedingungsname ''{0}'' erscheint in der Anweisung CREATE TABLE mehr als einmal.
+42X92=Der Spaltenname ''{0}'' erscheint mehr als einmal in der Spaltenliste einer Integrit\u00e4tsbedingung.
+42X93=Die Tabelle ''{0}'' enth\u00e4lt die Definition einer Integrit\u00e4tsbedingung mit der Spalte ''{1}'', die nicht in der Tabelle ist.
+42Z93=Die Integrit\u00e4tsbedingungen ''{0}'' und ''{1}'' haben dieselben Spaltengruppen. Dies ist unzul\u00e4ssig.
+42Z96=Read-Write-VTIs werden in den Umgebungen JDK 1.1/JDBC 1.2 nicht unterst\u00fctzt: ''{0}''
+42Z9B=Die externe virtuelle Tabellenschnittstelle unterst\u00fctzt keine BLOB- oder CLOB-Spalten. ''{0}''-Spalte ''{1}''.
+42Z9D=''{0}''-Anweisungen sind in ''{1}''-Ausl\u00f6sern nicht zul\u00e4ssig.
+42Z9E=Die Integrit\u00e4tsbedingung ''{0}'' ist keine ''{1}''-Integrit\u00e4tsbedingung.
+42X94={0} ''{1}'' ist nicht vorhanden.
+42X96=Der Datenbankklassenpfad enth\u00e4lt die unbekannte JAR-Datei ''{0}''.
+42X98=In einer VIEW-Definition sind Parameter nicht zul\u00e4ssig.
+42Y00=Die Klasse ''{0}'' implementiert nicht org.apache.derby.iapi.db.AggregateDefinition und kann deshalb nicht als Aggregatausdruck verwendet werden.
+42Y01=Die Integrit\u00e4tsbedingung ''{0}'' ist ung\u00fcltig.
+42Y03=''{0}'' wurde nicht als Funktion oder Prozedur erkannt.
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=F\u00fcr die Funktion mit EXTERNAL NAME ''{0}'' kann kein Prozedur oder Funktion erstellt werden, weil keine Liste in Schreibweise mit Trennzeichen vorliegt. Das erwartete Format ist <vollst\u00e4ndiger Java-Pfad>.<Methodenname>.
+
+42Y05=Es gibt keinen Fremdschl\u00fcssel mit dem Namen ''{0}''.
+42Y07=Das Schema ''{0}'' ist nicht vorhanden.
+42Y08=F\u00fcr Systemtabellen sind Integrit\u00e4tsbedingungen f\u00fcr Fremdschl\u00fcssel unzul\u00e4ssig.
+42Y09=Void-Methoden sind nur in einer CALL-Anweisung erlaubt.
+42Y10=Bei einem Tabellenkonstruktor, der nicht in einer INSERT-Anweisung enthalten ist, befinden sich alle ?-Parameter in einer der Spalten. F\u00fcr jede Spalte muss mindestens eine der Zeilen einen nichtparametrischen Wert enthalten.
+42Y11=F\u00fcr die Klausel ''{0}'' ist eine Verkn\u00fcpfungsspezifikation erforderlich.
+42Y12=Die ON-Klausel f\u00fcr ein JOIN ist ein Ausdruck vom Typ ''{0}''. Es muss ein boolescher Ausdruck sein.
+42Y13=Der Spaltenname ''{0}'' erscheint in der Anweisung CREATE VIEW mehr als einmal.
+42Z97=Wenn die Spalte ''{0}'' umbenannt wird, ist die Bedingung ''{1}'' f\u00fcr Integrit\u00e4tspr\u00fcfung nicht mehr erf\u00fcllt.
+42Z99=Ein Zeichenfolgen- oder Hexadezimalliteral darf 64 K nicht \u00fcberschreiten.
+42Y16=In der Klasse ''{1}'' wurde keine \u00f6ffentliche statische Methode ''{0}'' gefunden. M\u00f6glicherweise ist die Methode vorhanden, jedoch keine \u00f6ffentliche oder statische Methode.
+42846=Die Typen ''{0}'' k\u00f6nnen nicht in ''{1}'' konvertiert werden.
+42Y19=''{0}'' erscheint mehrfach in der 'GROUP BY'-Liste. Die Spalten der 'GROUP BY'-Liste m\u00fcssen eindeutig sein.
+42Y22=Das Aggregat {0} kann nicht f\u00fcr den Typ {1} verwendet werden.
+42Y23=F\u00fcr Spalte {0} wurde eine falsche JDBC-Typangabe zur\u00fcckgegeben.
+42Y24=Die Ansicht ''{0}'' kann nicht aktualisiert werden. (Es ist derzeit nicht m\u00f6glich, Ansichten zu aktualisieren.)
+42Y25=''{0}'' ist eine Systemtabelle. Benutzer d\u00fcrfen den Inhalt dieser Tabelle nicht \u00e4ndern.
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=Parameter sind in der Ausl\u00f6seaktion unzul\u00e4ssig.
+42Y29=Die SELECT-Liste einer nicht gruppierten Abfrage enth\u00e4lt mindestens einen ung\u00fcltigen Ausdruck. Wenn die SELECT-Liste mindestens ein Aggregat enth\u00e4lt, m\u00fcssen alle Eintr\u00e4ge g\u00fcltige Aggregatausdr\u00fccke sein.
+42Y30=Die SELECT-Liste einer gruppierten Abfrage enth\u00e4lt mindestens einen ung\u00fcltigen Ausdruck. F\u00fcr ein SELECT mit GROUP BY darf die SELECT-Liste nur Gruppierungsspalten und g\u00fcltige Aggregatausdr\u00fccke enthalten.
+42Y32=Die Aggregator-Klasse ''{0}'' f\u00fcr das Aggregat ''{1}'' f\u00fcr den Typ {2} implementiert nicht com.ibm.db2j.aggregates.Aggregator.
+
+42Y33=Das Aggregat {0} enth\u00e4lt ein oder mehrere Aggregat(e).
+42Y34=Der Spaltenname ''{0}'' stimmt mit mehr als einer Ergebnisspalte in der Tabelle ''{1}'' \u00fcberein.
+42Y35=Der Spaltenverweis ''{0}'' ist ung\u00fcltig. Wenn die SELECT-Liste mindestens ein Aggregat enth\u00e4lt, m\u00fcssen alle Eintr\u00e4ge g\u00fcltige Aggregatausdr\u00fccke sein.
+42Y36=Der Spaltenverweis ''{0}'' ist ung\u00fcltig. F\u00fcr ein SELECT mit GROUP BY darf die SELECT-Liste nur Gruppierungsspalten und g\u00fcltige Aggregatausdr\u00fccke enthalten.
+42Y37=''{0}'' ist ein primitiver Java-Typ und kann nicht mit diesem Operator verwendet werden.
+42Y38=insertMode = replace ist f\u00fcr eine Einf\u00fcgung unzul\u00e4ssig, bei der sich SELECT auf die Zieltabelle ''{0}'' bezieht.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' darf nicht in einer 'CHECK CONSTRAINT'-Definition erscheinen, da dies zu unvorhersehbaren Ergebnissen f\u00fchren k\u00f6nnte.
+42Y40=''{0}'' erscheint mehrfach in der Spalte UPDATE OF des Ausl\u00f6sers ''{1}''.
+42Y41=''{0}'' kann nicht direkt mit EXECUTE STATEMENT aufgerufen werden, da dieses Objekt Teil eines Ausl\u00f6sers ist.
+42Y42=Die Skala ''{1}'' ist keine g\u00fcltige Skala f\u00fcr {0}.
+42Y43=Die Skala ''{0}'' ist keine g\u00fcltige Skala mit einer Genauigkeit von ''{1}''.
+42Y44=In der Merkmalliste der FROM-Liste wurde der ung\u00fcltige Schl\u00fcssel ''{0}'' angegeben. Derzeit werden folgende Schl\u00fcssel unterst\u00fctzt: ''{1}''. Es ist die Gro\u00df-/Kleinschreibung zu beachten.
+42Y45=Der VTI ''{0}'' kann nicht gebunden werden, weil es sich um einen spezifischen Ausl\u00f6ser-VTI handelt und diese Anweisung nicht zu einer Ausl\u00f6seaktion oder WHEN-Klausel geh\u00f6rt.
+42Y46=Ung\u00fcltige Merkmalliste in FROM-Liste. In Tabelle ''{1}'' gibt es keinen Index ''{0}''.
+42Y48=Ung\u00fcltige Merkmalliste in FROM-Liste. Entweder gibt es f\u00fcr Tabelle ''{1}'' keine benannte Integrit\u00e4tsbedingung ''{0}'' oder es gibt keinen Sicherungsindex f\u00fcr die Integrit\u00e4tsbedingung.
+42Y49=F\u00fcr den Merkmalschl\u00fcssel ''{0}'' wurden mehrere Werte angegeben.
+
+42Y50=Die Merkmalliste f\u00fcr die Tabelle ''{0}'' darf Indexwerte oder Werte f\u00fcr Integrit\u00e4tsbedingungen enthalten, jedoch nicht beide zusammen.
+42Y55=''{0}'' kann nicht f\u00fcr ''{1}'' ausgef\u00fchrt werden, da dieses Objekt nicht vorhanden ist.
+42Y56=In der Merkmalliste f\u00fcr Tabelle ''{1}'' wurde die ung\u00fcltige joinStrategy ''{0}'' angegeben. Derzeit werden f\u00fcr joinStrategy die Werte ''hash'' und ''nestedloop'' unterst\u00fctzt.
+42Y58=Beim Konvertieren des Wertes ''{0}'' f\u00fcr den Parameter override ''{1}'' des Optimizer ist eine NumberFormatException eingetreten.
+42Y59=F\u00fcr das \u00dcberschreiben von hashInititalCapacity wurde der ung\u00fcltige Wert ''{0}'' angegeben. Der Wert muss > 0 sein.
+42Y60=F\u00fcr das \u00dcberschreiben von hashLoadFactor wurde der ung\u00fcltige Wert ''{0}'' angegeben. Der Wert muss > 0,0 und <= 1,0 sein.
+42Y61=F\u00fcr das \u00dcberschreiben von hashMaxCapacity wurde der ung\u00fcltige Wert ''{0}'' angegeben. Der Wert muss > 0 sein.
+42Y62=''{0}'' ist f\u00fcr ''{1}'' nicht zul\u00e4ssig, weil es sich um eine Ansicht handelt.
+42Y63=Eine Hash-Verkn\u00fcpfung erfordert ein optimierbares equijoin-Pr\u00e4dikat f\u00fcr eine Spalte im ausgew\u00e4hlten Index oder Heap-Speicher. Die Tabelle bzw. der Index ''{0}'' enth\u00e4lt f\u00fcr keine Spalte ein optimierbares equijoin-Pr\u00e4dikat. Verwenden Sie den override-Parameter ''index'' des Optimizer, um einen Index oder Heap-Speicher f\u00fcr die Tabelle ''{1}'' anzugeben.
+42Y64=Der bulkFetch-Wert ''{0}'' ist ung\u00fcltig: der Mindestwert f\u00fcr bulkFetch ist 1.
+42Y65=bulkFetch ist f\u00fcr ''{0}''-Verkn\u00fcpfungen nicht zul\u00e4ssig.
+42Y66=bulkFetch ist f\u00fcr aktualisierbare Cursor nicht zul\u00e4ssig.
+42Y67=Das Schema ''{0}'' kann nicht gel\u00f6scht werden.
+42Y69=F\u00fcr diese Anweisung wurde kein g\u00fcltiger Ausf\u00fchrungsplan gefunden. Dies kann eine der beiden folgenden Ursachen haben: Sie haben eine Hash-Verkn\u00fcpfungsstrategie angegeben, obwohl keine Hash-Verkn\u00fcpfung erlaubt ist (kein optimierbares equijoin) oder Sie versuchen, zwei ExternalVirtualTables zu verkn\u00fcpfen, die jeweils aufeinander verweisen, so dass die Anweisung nicht ausgewertet werden kann.
+42Y70=Die vom Benutzer angegebene Verkn\u00fcpfungsfolge ist keine zul\u00e4ssige Verkn\u00fcpfungsfolge. Dies kann daran liegen, dass eine zu verkn\u00fcpfende Spalte einer inneren Tabelle als Parameter an eine \u00e4u\u00dfere virtuelle Tabelle \u00fcbergeben wird.
+42Y71=Die Systemfunktion oder Prozedur ''{0}'' kann nicht gel\u00f6scht werden.
+42Y82=Die vom System generierte gespeicherte vorbereitete Anweisung ''{0}'' kann mit DROP STATEMENT nicht gel\u00f6scht werden. Sie geh\u00f6rt zu einem Ausl\u00f6ser.
+42Y83=Eine Nullangabe ohne Typ ist kein zul\u00e4ssiges Argument f\u00fcr das Aggregat {0}. Setzen Sie die Nullangabe in einen geeigneten Typ um.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' darf in einer DEFAULT-Definition nicht erscheinen.
+42Y85=Das Schl\u00fcsselwort DEFAULT ist in einer VALUES-Klausel nur zul\u00e4ssig, wenn die VALUES-Klausel in einer INSERT-Anweisung erscheint.
+42Y90=FOR UPDATE ist f\u00fcr diesen Anweisungstyp unzul\u00e4ssig.
+42Y91=Die USING-Klausel ist in EXECUTE STATEMENT f\u00fcr eine Ausl\u00f6seaktion nicht zul\u00e4ssig.
+42Y92={0}-Ausl\u00f6ser k\u00f6nnen nur auf \u00dcbergangsvariablen/Tabellen des Typs {1} Bezug nehmen.
+42Y93=Ung\u00fcltige REFERENCING-Klausel: F\u00fcr jede Art von \u00dcbergangsvariable/-tabelle ist nur ein Name zul\u00e4ssig.
+42Y94=Ein AND oder OR verwendet einen nicht booleschen Operanden. Das Ergebnis der Auswertung f\u00fcr die Operanden von AND und OR muss TRUE, FALSE oder UNKNOWN sein.
+42Y95=Der Operator ''{0}'' mit dem linken Operanden vom Typ ''{1}'' und dem rechten Operanden vom Typ ''{2}'' wird nicht unterst\u00fctzt.
+42Y96.U=UNKNOWN
+42Y97=Ung\u00fcltiges Escape-Zeichen in Zeile ''{0}'', Spalte ''{1}''.
+42Y98.U=In Zeile {1}, Spalte {2}, wurde "{0}" gefunden
+42Y99.U=Lexikalischer Fehler in Zeile {0}, Spalte {1}. Festgestellt wurde: {2}
+42Z00.U=Java-Methodenaufruf oder Feldverweis
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=Mehrere DISTINCT-Aggregate werden zur Zeit nicht unterst\u00fctzt.
+42Z07=Aggregate sind in der ON-Klausel nicht erlaubt.
+42Z08=F\u00fcr ''{0}'' gibt es einen aktivierten Ausl\u00f6ser ({1}). Eine Ersetzung durch Masseneinf\u00fcgung ist deshalb unzul\u00e4ssig.
+42Z09.U=COLUMN DEFAULT f\u00fcr
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=Datenstrom
+
+# alter table modify column error messages.
+#####
+42Z15=F\u00fcr die Spalte ''{0}'' wurde ein ung\u00fcltiger Typ angegeben. Der Typ einer Spalte kann nicht ge\u00e4ndert werden.
+42Z16=Die L\u00e4nge kann nur f\u00fcr Spalten des Typs VARCHAR ge\u00e4ndert werden. 
+42Z17=F\u00fcr die Spalte ''{0}'' wurde eine ung\u00fcltige L\u00e4nge angegeben. Der L\u00e4ngenwert muss gr\u00f6\u00dfer als die aktuelle Spaltenl\u00e4nge sein.
+42Z18=Die Spalte ''{0}'' geh\u00f6rt zur Integrit\u00e4tsbedingung ''{1}'' f\u00fcr Fremdschl\u00fcssel. Wenn Sie die L\u00e4nge dieser Spalte \u00e4ndern m\u00f6chten, sollten Sie zun\u00e4chst die Integrit\u00e4tsbedingung l\u00f6schen. F\u00fchren Sie dann ALTER aus und erstellen Sie die Integrit\u00e4tsbedingung neu.
+42Z19=Auf die Spalte ''{0}'' wird von mindestens einer Integrit\u00e4tsbedingung ''{1}'' f\u00fcr Fremdschl\u00fcssel verwiesen. Wenn Sie die L\u00e4nge dieser Spalte \u00e4ndern m\u00f6chten, sollten Sie zun\u00e4chst die verweisenden Integrit\u00e4tsbedingungen l\u00f6schen. F\u00fchren Sie dann ALTER aus und erstellen Sie die Integrit\u00e4tsbedingungen neu.
+42Z20=Die Eintragspflicht f\u00fcr die Spalte ''{0}'' kann nicht aufgehoben werden. Sie geh\u00f6rt zu einem Prim\u00e4rschl\u00fcssel, der keine Spalten ohne Eintragspflicht enthalten darf.
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE ''{0}'' gibt Attribute f\u00fcr die Spalte ''{1}'' an, die nicht mit der vorhandenen Spalte kompatibel sind.
+42Z21=F\u00fcr die Identit\u00e4t der Spalte ''{0}'' wurde ein ung\u00fcltiges Inkrement angegeben. Das Inkrement muss ungleich null sein.
+42Z22=F\u00fcr die Identit\u00e4tsspalte ''{0}'' wurde ein ung\u00fcltiger Typ angegeben. F\u00fcr Identit\u00e4tsspalten sind nur die Typen BIGINT, INT und SMALLINT g\u00fcltig.
+42Z23=Es wurde versucht, die Identit\u00e4tsspalte ''{0}'' zu \u00e4ndern. 
+42Z24=Beim Identit\u00e4tswert f\u00fcr die Spalte ''{1}'' in der Tabelle ''{0}'' ist es zu einem \u00dcberlauf gekommen.
+42Z25=INTERNER FEHLER: Identit\u00e4tsz\u00e4hler: UPDATE wurde ohne Argumente mit dem aktuellen Wert = NULL aufgerufen.
+42Z26=F\u00fcr die Spalte ''{0}'' mit einer Standardidentit\u00e4t kann die Eintragspflicht nicht aufgehoben werden.
+42Z27=F\u00fcr die Spalte ''{0}'' ohne Eintragspflicht kann keine Standardidentit\u00e4t festgelegt werden.
+
+#####
+# end of identity error messages.
+
+42Z30.U=Zeit f\u00fcr dieses ResultSet =
+42Z31.U=Zeit f\u00fcr dieses ResultSet und folgende =
+42Z32.U=Aufschl\u00fcsselung der Gesamtzeit:
+
+42Z33.U=Konstruktorzeit (Millisekunden) =
+42Z34.U=Zeit f\u00fcr \u00d6ffnen (Millisekunden) =
+42Z35.U=Zeit f\u00fcr next (Millisekunden) =
+42Z36.U=Zeit f\u00fcr Schlie\u00dfen (Millisekunden) =
+42Z37.U=Keine
+42Z38.U=Es ist keine Positionierungsangabe verf\u00fcgbar, weil dieses ResultSet nie ge\u00f6ffnet wurde.
+42Z39.U=Unerwartete Ausnahme {0} beim Anfordern des Positionierers.
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U={0} f\u00fcr die ersten {1} Spalten.
+42Z41.U=Semantik mit Nullsortierung in den folgenden Spalten:
+
+42Z42.U=Spalten-ID
+42Z43.U=Operator
+42Z44.U=Nullsortierung
+42Z45.U=Unbekannter R\u00fcckgabewert
+42Z46.U=Vergleichsergebnis negieren
+42Z47.U=Das Abrufen des Abfrageplans als Zeichenfolge wird derzeit f\u00fcr {0} nicht unterst\u00fctzt
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=ID f\u00fcr Spalte [{0}][{1}]
+
+# matches DB2
+42939=Mit dem Schemanamen ''{0}'' kann kein Objekt erstellt werden.
+
+
+
+
+42Z50=INTERNER FEHLER: F\u00fcr {0} kann kein Code generiert werden.
+42Z53=INTERNER FEHLER: Es ist nicht bekannt, welcher Aktivierungstyp f\u00fcr die Knotenauswahl {0} generiert werden soll.
+42Z54.U=Diese Ausnahme stoppt die Anweisung nach der Syntaxanalyse. Es ist keine weitere Verarbeitung erforderlich.
+42Z55.U=Die Ausf\u00fchrung wurde nach der Syntaxanalyse von der Debug-Markierung StopAfterParsing gestoppt.
+42Z56.U=Die Ausf\u00fchrung wurde nach der Bindung von der Debug-Markierung StopAfterBinding gestoppt.
+42Z57.U=Die Ausf\u00fchrung wurde nach der Optimierung von der Debug-Markierung StopAfterOptimizing gestoppt.
+42Z58.U=Die Ausf\u00fchrung wurde nach der Generierung von der Debug-Markierung StopAfterGenerating gestoppt.
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=SERIALIZABLE
+42Z81.U=READ COMMITED
+42Z82.U=EXCLUSIVE
+42Z83.U=INSTANTANEOUS SHARE
+42Z84.U=SHARE
+42Z85.U=TABLE
+42Z86.U=ROW
+42Z87.U=SHARE TABLE
+42Z88.U=SHARE ROW
+
+# More generic language stuff
+42Z90=Die Klasse ''{0}'' gibt kein aktualisierbares ResultSet zur\u00fcck.
+42Z91=Unterabfrage
+42Z92=wiederholbares Lesen
+42Z9A=unbest\u00e4tigtes Lesen
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=Die angeforderte Funktion kann keine Tabellen im Schema SESSION referenzieren.
+# Declare global temporary table language stuff. Matches DB2
+428EK=Das Qualifikationsmerkmal f\u00fcr eine deklarierte globale tempor\u00e4re Tabelle muss SESSION sein.
+42995=Die angeforderte Funktion ist nicht auf globale tempor\u00e4re Tabellen anwendbar.
+42962=Die LOB-Spalte oder der Parameter ''{0}'' ist in deklarierten globalen tempor\u00e4ren Tabellen oder Prozedurdefinitionen nicht zul\u00e4ssig. 
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=Zugeordnet zu
+43X01.U=Nummer der ersten Unterabfrage
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=ANY-ResultSet
+43X03.U=Anzahl der \u00d6ffnungsvorg\u00e4nge
+43X04.U=Gesehene Zeilen
+43X05.U=Quellenergebnismenge
+43X06.U=Nummer der letzten Unterabfrage
+43X07.U=Vom Optimizer gesch\u00e4tzte Zeilenzahl
+43X08.U=Vom Optimizer gesch\u00e4tzte Kosten
+43X09.U=Sekunden
+43X10.U=Summe
+43X11.U=Knoten
+43X12.U={0} ist derzeit nicht f\u00fcr {1} implementiert.
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=DELETE-ResultSet mit
+43X14.U=Tabelle wird gesperrt
+43X15.U=Zeile wird gesperrt
+43X16.U=verz\u00f6gert
+43X17.U=Gel\u00f6schte Zeilen
+43X18.U=Aktualisierte Indizes
+43X19.U=L\u00f6schen
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=ResultSet f\u00fcr spezifisches skalares Aggregat
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=Eingegebene Zeilen
+43X22.U=Spezifisches skalares Aggregat
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U=ResultSet der spezifischen Suche f\u00fcr {0} unter Verwendung von {1} {2}
+43X24.U=Integrit\u00e4tsbedingung
+43X25.U=Index
+43X26.U=ResultSet der spezifischen Suche f\u00fcr {0}
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=auf der Isolationsstufe {0} unter Verwendung einer Sperre des Typs {1}
+43X28.U=Suchinformationen
+43X29.U=Die spezifische Spalte hat die Nummer
+43X30.U=Die spezifischen Spalten haben die Nummern
+43X31.U=Gr\u00f6\u00dfe der Hash-Tabelle
+43X32.U=Gefilterte Zeilen
+43X33.U=Zeit f\u00fcr next in Millisekunden/Zeile
+43X34.U=Anfangspunkt
+43X35.U=Endpunkt
+43X36.U=Qualifikationsmerkmale f\u00fcr Suche
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=Qualifikationsmerkmale f\u00fcr next
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=f\u00fcr {0} mit {1}
+43X39.U=Spezifische Suche
+43X40.U=Sortierungsinformationen
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=ResultSet f\u00fcr gruppiertes Aggregat
+43X42.U=mit spezifischem Aggregat
+43X43.U=In sortierter Reihenfolge
+43X44.U=Gruppiertes Aggregat
+43X45.U=EXISTS-Verkn\u00fcpfung f\u00fcr Hash-Eintr\u00e4ge
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=ResultSet f\u00fcr EXISTS-Verkn\u00fcpfung von Hash-Eintr\u00e4gen
+43X47.U=Verkn\u00fcpfung von Hash-Eintr\u00e4gen
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=ResultSet f\u00fcr Verkn\u00fcpfung von Hash-Eintr\u00e4gen
+43X49.U=Nach links erweiterte Verkn\u00fcpfung von Hash-Eintr\u00e4gen
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=ResultSet f\u00fcr nach links erweiterte Verkn\u00fcpfung von Hash-Eintr\u00e4gen
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U=ResultSet der Hash-Suche f\u00fcr {0} unter Verwendung von {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U=ResultSet der Hash-Suche f\u00fcr {0}
+43X53.U=Der Hash-Schl\u00fcssel ist die Spaltennummer
+43X54.U=Die Hash-Schl\u00fcssel sind die Spaltennummern
+43X55.U=Hash-Suche
+43X56.U=Zugeordnete Unterabfragen
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=ResultSet f\u00fcr Hash-Tabelle
+43X58.U=Hash-Tabelle
+43X59.U=alle
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U=ResultSet Indexzeile zu Basiszeile f\u00fcr {0}
+43X61.U=Heap-Spalten, auf die zugegriffen wurde
+#NOTE: {0} is a table name
+43X62.U=f\u00fcr {0}
+43X63.U=Indexzeile zu Basiszeile
+43X64.U=Einf\u00fcgemodus: Einf\u00fcgen von Massendaten
+43X65.U=Einf\u00fcgemodus: normal (das Einf\u00fcgen von Massendaten ist nicht m\u00f6glich, da die Tabelle nicht leer ist)
+43X66.U=Einf\u00fcgemodus: normal
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=INSERT-ResultSet mit
+43X68.U=Eingef\u00fcgte Zeilen
+43X69.U=Einf\u00fcgen
+43X70.U=Verkn\u00fcpfung
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=ResultSet der letzten Schl\u00fcsselindexsuche f\u00fcr {0} unter Verwendung von Index {1}
+43X72.U=bei Isolationsstufe {0} mit {1}-Sperrung wurde vom Optimizer ausgew\u00e4hlt
+43X73.U=Tabellensuche
+43X74.U=Indexsuche
+#NOTE: {0} is a table name or class name
+43X75.U=f\u00fcr {0}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=Gespeichertes ResultSet
+43X77.U=Erstellungszeit f\u00fcr tempor\u00e4res Konglomerat (Millisekunden)
+43X78.U=Abrufzeit f\u00fcr tempor\u00e4res Konglomerat (Millisekunden)
+43X79.U=Gesehene Zeilen von links
+43X80.U=Gesehene Zeilen von rechts
+43X81.U=Zur\u00fcckgegebene Zeilen
+43X82.U=Linke Ergebnismenge
+43X83.U=Rechte Ergebnismenge
+43X84.U=Verkn\u00fcpfung \u00fcber vorhandene verschachtelte Schleife
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=ResultSet f\u00fcr Verkn\u00fcpfung \u00fcber vorhandene verschachtelte Schleife
+43X86.U=Verkn\u00fcpfung \u00fcber verschachtelte Schleife
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=ResultSet f\u00fcr Verkn\u00fcpfung \u00fcber verschachtelte Schleife
+43X88.U=Zur\u00fcckgegebene leere rechte Zeilen
+43X89.U=Nach links erweiterte Verkn\u00fcpfung \u00fcber verschachtelte Schleife
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=ResultSet f\u00fcr nach links erweiterte Verkn\u00fcpfung \u00fcber verschachtelte Schleife
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=ResultSet normalisieren
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=Einzelwert-ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=ResultSet f\u00fcr eingeschr\u00e4nkte Projektion
+43X94.U=Einschr\u00e4nkung
+43X95.U=Projektion
+43X96.U=Einschr\u00e4nkungszeit (Millisekunden)
+43X97.U=Projektionszeit (Millisekunden)
+43X98.U=Eingeschr\u00e4nkte Projektion
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=Zeilen-ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=ResultSet f\u00fcr skalares Aggregat
+43Y01.U=Optimierung f\u00fcr Indexschl\u00fcssel
+43Y02.U=Skalares Aggregat
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=Scroll-unabh\u00e4ngiges ResultSet
+43Y04.U=Anzahl der Lesevorg\u00e4nge in der Hash-Tabelle
+43Y05.U=Anzahl der Schreibvorg\u00e4nge in der Hash-Tabelle
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=ResultSet f\u00fcr Sortierung
+43Y07.U=Duplikate eliminieren
+43Y08.U=Sortieren
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U=ResultSet der Indexsuche f\u00fcr {0} unter Verwendung von {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U=ResultSet der Tabellensuche f\u00fcr {0}
+43Y11.U=Tats\u00e4chlich verwendete Sperrung: Sperrung auf Tabellenebene.
+43Y12.U=Abrufgr\u00f6\u00dfe
+43Y13.U=Qualifikationsmerkmale
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=ResultSet f\u00fcr Gesamtverkn\u00fcpfung
+43Y15.U=Gesamtverkn\u00fcpfung
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=ResultSet mit {0}-Sperrung aktualisieren
+43Y17.U=Aktualisierte Zeilen
+43Y18.U=Aktualisieren
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U=VTI-ResultSet f\u00fcr {0}
+43Y20.U=VTI
+43Y21.U=Einbezogene Unterabfragen
+43Y22.U=Name der Anweisung
+43Y23.U=Text der Anweisung
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=Zeit f\u00fcr Syntaxanalyse
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=Bindezeit
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=Optimierungszeit
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=Generierungszeit
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=Kompilierzeit
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=Ausf\u00fchrungszeit
+43Y30.U=Anfangszeitmarke der Kompilierung
+43Y31.U=Endzeitmarke der Kompilierung
+43Y32.U=Anfangszeitmarke der Ausf\u00fchrung
+43Y33.U=Endzeitmarke der Ausf\u00fchrung
+43Y44.U=Text des Plans f\u00fcr die Anweisungsausf\u00fchrung
+43Y45.U=Laufzeit 100 %, {0} Sekunden
+43Y46.U=ResultSet f\u00fcr VTI einf\u00fcgen
+43Y47.U=ResultSet f\u00fcr VTI l\u00f6schen
+43Y49.U=VTI einf\u00fcgen
+43Y50.U=VTI l\u00f6schen
+43Y51.U=ResultSet f\u00fcr mehrstufiges L\u00f6schen
+43Y52.U=ResultSet f\u00fcr mehrstufiges L\u00f6schen mit
+43Y53.U=Referenzielle Aktionen f\u00fcr abh\u00e4ngige Tabellen
+43Y54.U=Referenzielle Aktion f\u00fcr abh\u00e4ngige Tabelle beginnen
+43Y55.U=Referenzielle Aktion f\u00fcr abh\u00e4ngige Tabelle beenden
+
+54004=Die Anweisung SELECT enth\u00e4lt zu viele Elemente in GROUP BY, ORDER BY oder in der Auswahlliste.
+54008=Die Anweisung CREATE INDEX gibt zu viele Spalten an. (Das Maximum liegt bei 16.)
+54023=Die maximale Anzahl von Parametern f\u00fcr eine Prozedur wurde \u00fcberschritten. Die Begrenzung liegt bei {0} und die Anzahl der Parameter f\u00fcr die Prozedur {1} ist {2}.
+54038=Die maximale Verschachtelungstiefe f\u00fcr Ausl\u00f6ser wurde \u00fcberschritten.
+
+## all other org.apache.derby.catalog.types
+44X00.U=Name des SQL-Typs
+44X05.U=n\u00e4chster Fehler
+
+X0X02.S=Die Tabelle ''{0}'' kann nicht im Modus ''{1}'' gesperrt werden.
+X0X03.S=Ung\u00fcltiger Transaktionsstatus. Der gehaltene Cursor erfordert dieselbe Isolationsstufe.
+X0X05.S=Die Tabelle ''{0}'' ist nicht vorhanden.
+X0X0E.S=Die in der automatisch generierten Feldgruppe f\u00fcr Spaltenauswahl aufgelistete Spaltenposition ''{0}'' wurde in der Einf\u00fcgetabelle nicht gefunden.
+X0X0F.S=Die in der automatisch generierten Feldgruppe f\u00fcr Spaltenauswahl aufgelistete Spaltenname ''{0}'' wurde in der Einf\u00fcgetabelle nicht gefunden.
+X0X07.S=Die JAR-Datei ''{0}'' kann nicht gel\u00f6scht werden, weil sie im db2j.database.classpath ''{0}'' enthalten ist.
+X0X10.S=Die USING-Klausel hat mehr als eine Zeile zur\u00fcckgegeben. Es sind nur aus einer Zeile bestehende ResultSets zul\u00e4ssig.
+X0X11.S=Die USING-Klausel hat keine Ergebnisse geliefert. Es k\u00f6nnen keine Parameter gesetzt werden.
+X0X13.S=Die JAR-Datei ''{0}'' ist nicht im Schema ''{1}'' vorhanden.
+X0X57.S=Es wurde versucht, einen Java-Wert vom Typ ''{0}'' in einen SQL-Wert aufzunehmen. Es ist jedoch kein entsprechender SQL-Typ vorhanden. Der Java-Wert ist wahrscheinlich das Ergebnis eines Methodenaufrufs oder Feldzugriffs.
+X0X60.S=Ein Cursor mit dem Namen ''{0}'' ist bereits vorhanden.
+X0X61.S=Die Werte f\u00fcr die Spalte ''{4}'' im Index ''{0}'' und in der Tabelle ''{1}.{2}'' stimmen f\u00fcr die Zeilenposition {3} nicht \u00fcberein. Der Wert im Index ist ''{5}'', der Wert in der Basistabelle dagegen ''{6}''. Der vollst\u00e4ndige Indexschl\u00fcssel mit der Zeilenposition ist ''{7}''. Zur Fehlerberichtigung wird empfohlen, den Index erneut zu erstellen.
+X0X62.S=Es wurde eine Inkonsistenz der Tabelle ''{0}'' und des Index ''{1}'' festgestellt. Bei dem Versuch, die Zeilenposition ''{2}'' aus der Tabelle abzurufen, ist ein Fehler aufgetreten. Der vollst\u00e4ndige Indexschl\u00fcssel mit der Zeilenposition ist ''{3}''. Zur Fehlerberichtigung wird empfohlen, den Index erneut zu erstellen.
+X0X63.S=IOException ''{0}'' empfangen.
+X0X67.S=Spalten des Typs ''{0}'' k\u00f6nnen in CREATE INDEX, ORDER BY, GROUP BY, UNION oder DISTINCT nicht verwendet werden, da f\u00fcr diesen Typ keine Vergleiche unterst\u00fctzt werden.
+X0X81.S={0} ''{1}'' ist nicht vorhanden.
+X0X85.S=Der Index ''{0}'' wurde nicht erstellt, weil ''{1}'' kein g\u00fcltiger Indextyp ist.
+X0X86.S=0 ist ein ung\u00fcltiger Parameterwert f\u00fcr ResultSet.absolute(int row).
+X0X87.S=ResultSet.relative(int row) kann nicht aufgerufen werden, wenn sich der Cursor nicht in einer Zeile befindet.
+X0X95.S=Die Operation ''{0}'' kann f\u00fcr das Objekt ''{1}'' nicht ausgef\u00fchrt werden, weil es ein offenes ResultSet gibt, das von diesem Objekt abh\u00e4ngig ist.
+X0X99.S=Der Index ''{0}'' ist nicht vorhanden.
+X0Y16.S=''{0}'' ist keine Ansicht. Falls es sich um eine Tabelle handelt, verwenden Sie DROP TABLE.
+X0Y23.S=Die Operation ''{0}'' kann nicht f\u00fcr ein Objekt ''{1}'' ausgef\u00fchrt werden, weil die Ansicht ''{2}'' von diesem Objekt abh\u00e4ngt.
+X0Y24.S=Die Operation ''{0}'' kann nicht f\u00fcr ein Objekt ''{1}'' ausgef\u00fchrt werden, weil die Anweisung ''{2}'' von diesem Objekt abh\u00e4ngt.
+X0Y25.S=Die Operation ''{0}'' kann nicht f\u00fcr ein Objekt ''{1}'' ausgef\u00fchrt werden, weil die {2} ''{3}'' von diesem Objekt abh\u00e4ngt.
+X0Y26.S=Der Index ''{0}'' muss sich in demselben Schema wie die Tabelle ''{1}'' befinden.
+X0Y28.S=Der Index ''{0}'' kann f\u00fcr die Systemtabelle ''{1}'' nicht erstellt werden. Benutzer k\u00f6nnen keine Indizes f\u00fcr Systemtabellen erstellen.
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' ist bereits in {2} ''{3}'' vorhanden.
+X0Y38.S=Der Index ''{0}'' kann nicht erstellt werden, weil die Tabelle ''{1}'' nicht vorhanden ist.
+X0Y41.S=Die Integrit\u00e4tsbedingung ''{0}'' ist ung\u00fcltig: die referenzierte Tabelle {1} hat keinen Prim\u00e4rschl\u00fcssel. F\u00fcgen Sie zu {1} einen Prim\u00e4rschl\u00fcssel hinzu oder geben Sie explizit die Spalten einer eindeutigen Integrit\u00e4tsbedingung an, auf die dieser Fremdschl\u00fcssel verweist.
+X0Y42.S=Die Integrit\u00e4tsbedingung ''{0}'' ist ung\u00fcltig: die Spalten des Fremdschl\u00fcssels stimmen vom Typ her nicht mit den referenzierten Spalten \u00fcberein.
+X0Y43.S=Die Integrit\u00e4tsbedingung ''{0}'' ist ung\u00fcltig: die Anzahl der Spalten in {0} ({1}) stimmt nicht mit der Anzahl der Spalten im referenzierten Schl\u00fcssel ({2}) \u00fcberein.
+X0Y44.S=Die Integrit\u00e4tsbedingung ''{0}'' ist ung\u00fcltig: in der Tabelle ''{1}'' gibt es keine Integrit\u00e4tsbedingung f\u00fcr eindeutige oder Prim\u00e4rschl\u00fcssel, die nach Anzahl und Typ der Spalten mit dem Fremdschl\u00fcssel \u00fcbereinstimmt.
+X0Y45.S=Die Integrit\u00e4tsbedingung ''{0}'' f\u00fcr Fremdschl\u00fcssel kann nicht zur Tabelle {1} hinzugef\u00fcgt oder f\u00fcr die Tabelle aktiviert werden, weil es f\u00fcr einen oder mehrere Fremdschl\u00fcssel keine \u00fcbereinstimmenden referenzierten Schl\u00fcssel gibt.
+X0Y46.S=Die Integrit\u00e4tsbedingung ''{0}'' ist ung\u00fcltig: die referenzierte Tabelle {1} ist nicht vorhanden.
+X0Y54.S=Das Schema ''{0}'' kann nicht gel\u00f6scht werden, weil es nicht leer ist.
+X0Y55.S=Die Zeilenanzahl in der Basistabelle stimmt nicht mit der Zeilenanzahl in mindestens einem der Indizes f\u00fcr die Tabelle \u00fcberein. Der Index ''{0}'' f\u00fcr Tabelle ''{1}.{2}'' hat {3} Zeilen, die Basistabelle jedoch {4} Zeilen. Zur Fehlerberichtigung wird empfohlen, den Index erneut zu erstellen.
+X0Y56.S=''{0}'' ist f\u00fcr die Systemtabelle ''{1}'' unzul\u00e4ssig.
+X0Y57.S=Eine Spalte mit nicht aufhebbarer Eintragspflicht kann nicht zur Tabelle ''{0}'' hinzugef\u00fcgt werden, weil die Tabelle mindestens eine Zeile enth\u00e4lt. Spalten mit nicht aufhebbarer Eintragspflicht k\u00f6nnen nur zu leeren Tabellen hinzugef\u00fcgt werden.
+X0Y58.S=Der Versuch, zur Tabelle ''{0}'' eine Integrit\u00e4tsbedingung f\u00fcr Prim\u00e4rschl\u00fcssel hinzuzuf\u00fcgen, ist gescheitert, weil es f\u00fcr die Tabelle bereits eine Integrit\u00e4tsbedingung dieses Typs gibt. F\u00fcr eine Tabelle kann es nur eine Integrit\u00e4tsbedingung f\u00fcr Prim\u00e4rschl\u00fcssel geben.
+X0Y59.S=Der Versuch, Integrit\u00e4tsbedingungen zur Tabelle ''{1}'' hinzuzuf\u00fcgen bzw. f\u00fcr die Tabelle zu aktivieren, ist gescheitert, weil die Tabelle {2} Zeile(n) enth\u00e4lt, die die folgende(n) zu pr\u00fcfende(n) Integrit\u00e4tsbedingung(en) verletzt bzw. verletzen: {0}.
+X0Y63.S=Der Befehl f\u00fcr die Tabelle ''{0}'' ist gescheitert. Im Prim\u00e4rschl\u00fcssel oder den Spalten der eindeutigen Integrit\u00e4tsbedingung bzw. des Index wurden Nulldaten gefunden. Alle Spalten eines prim\u00e4ren oder eindeutigen Indexschl\u00fcssels m\u00fcssen ungleich null sein.
+X0Y66.S=In einer verschachtelten Verbindung kann keine COMMIT-Operation abgesetzt werden, solange es eine anstehende Operation in der \u00fcbergeordneten Verbindung gibt.
+X0Y67.S=In einer verschachtelten Verbindung kann keine ROLLBACK-Operation abgesetzt werden, solange es eine anstehende Operation in der \u00fcbergeordneten Verbindung gibt.
+X0Y68.S={0} ''{1}'' ist bereits vorhanden.
+X0Y69.S={1} ist unzul\u00e4ssig, weil der Ausl\u00f6ser {0} f\u00fcr {2} aktiv ist.
+X0Y70.S=INSERT, UPDATE und DELETE sind f\u00fcr die Tabelle {1} unzul\u00e4ssig, weil der Ausl\u00f6ser {0} aktiv ist.
+X0Y71.S=Eine Transaktionsbearbeitung wie SET ISOLATION ist unzul\u00e4ssig, weil der Ausl\u00f6ser {0} aktiv ist.
+X0Y72.S=F\u00fcr ''{0}'' gibt es einen aktivierten Ausl\u00f6ser ({1}). Eine Ersetzung durch Masseneinf\u00fcgung ist deshalb unzul\u00e4ssig.
+X0Y77.S=Die Anweisung set transaction isolation kann nicht f\u00fcr eine laufende globale Transaktion abgesetzt werden, weil die globale Transaktion damit implizit festgeschrieben werden w\u00fcrde. 
+X0Y78.S=Statement.executeQuery() kann nicht mit einer Anweisung ausgef\u00fchrt werden, die eine Zeilenanzahl zur\u00fcckgibt.
+X0Y79.S=Statement.executeUpdate() kann nicht mit einer Anweisung ausgef\u00fchrt werden, die ein ResultSet zur\u00fcckgibt.
+X0Y80.S=ALTER ist f\u00fcr die Tabelle ''{0}'' gescheitert. In der Spalte ''{1}'' wurden Nulldaten gefunden.
+X0Y83.S=WARNUNG: Beim L\u00f6schen einer Zeile aus einer Tabelle wurde die Indexzeile f\u00fcr die Zeile {0} der Basistabelle im Index mit der Konglomerat-ID {1} nicht gefunden. Dieser Fehler wurde automatisch im Rahmen der L\u00f6schoperation behoben.
+XCL01.S=Die Ergebnismenge gibt keine Zeilen zur\u00fcck. Die Operation {0} ist unzul\u00e4ssig.
+XCL05.S=Die Aktivierung wurde geschlossen. Die Operation {0} ist unzul\u00e4ssig.
+XCL07.S=Der Cursor ''{0}'' wurde geschlossen. Pr\u00fcfen Sie, ob das automatische Festschreiben inaktiviert ist.
+XCL08.S=Der Cursor ''{0}'' befindet sich nicht in einer Zeile.
+XCL09.S=An die Methode ''{0}'' wurde eine Aktivierung \u00fcbergeben, die nicht mit dem PreparedStatement \u00fcbereinstimmt.
+XCL10.S=Ein PreparedStatement wurde kompiliert, und die Parameter wurden ge\u00e4ndert. Wenn Sie JDBC verwenden, m\u00fcssen Sie die Anweisung erneut vorbereiten.
+XCL12.S=Es wurde versucht, einen Datenwert des Typs ''{0}'' in einen Datenwert des Typs ''{1}'' aufzunehmen.
+XCL13.S=Die Parameterposition ''{0}'' liegt au\u00dferhalb des Bereichs. Die Parameteranzahl f\u00fcr diese vorbereitete Anweisung ist ''{1}''.
+XCL15.S=Beim Aufrufen der Methode compareTo() f\u00fcr ein Objekt ''{0}'' ist eine ClassCastException eingetreten. Der Parameter f\u00fcr compareTo() geh\u00f6rt zur Klasse ''{1}''.
+XCL16.S=ResultSet nicht ge\u00f6ffnet. Die Operation ''{0}'' ist unzul\u00e4ssig. Pr\u00fcfen Sie, ob das automatische Festschreiben inaktiviert ist.
+XCL17.S=Die Anweisung ist in dieser Datenbank nicht zul\u00e4ssig.
+XCL19.S=In der Tabelle ''{0}'' f\u00fcr den Schl\u00fcssel ''{1}'' fehlt eine Zeile.
+XCL20.S=F\u00fcr Kataloge mit dem Versionsstand ''{0}'' kann kein Upgrade auf den Versionsstand ''{1}'' durchgef\u00fchrt werden.
+XCL21.S=Sie versuchen, eine Datendefinitionsanweisung (CREATE, DROP oder ALTER) auszuf\u00fchren, w\u00e4hrend Sie eine andere Anweisung vorbereiten. Dies ist unzul\u00e4ssig. Dies kann geschehen, wenn Sie eine Definitionsanweisung aus einem statischen Initialisierungsoperator f\u00fcr eine Java-Klasse heraus ausf\u00fchren, der innerhalb einer SQL-Anweisung verwendet wird.
+XCL22.S=Der Parameter {0} kann nicht als OUT-Parameter registriert werden, da er ein IN-Parameter ist.
+XCL23.S=Die SQL-Typnummer ''{0}'' ist kein Typ, der von registerOutParameter() unterst\u00fctzt wird.
+XCL24.S=Der Parameter {0} scheint ein Ausgabeparameter zu sein, wurde jedoch von registerOutParameter() nicht als solcher angegeben. Wenn der Parameter kein Ausgabeparameter ist, muss er auf den Typ {1} gesetzt werden.
+XCL25.S=Der Parameter {0} kann nicht als Parameter des Typs {1} registriert werden, weil er dem Typ {2} zugeordnet wird und beide Typen inkompatibel sind.
+XCL26.S=Der Parameter {0} ist kein Ausgabeparameter.
+XCL27.S=Zur\u00fcckzugebende Ausgabeparameter k\u00f6nnen nicht festgelegt werden.
+XCL30.S=Beim Lesen eines ''{0}'' von einem InputStream wurde eine IOException ausgel\u00f6st.
+XCL31.S=Die Anweisung wurde geschlossen.
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=Aufgrund von L\u00f6schregeleinschr\u00e4nkungen kann die Tabelle nicht als abh\u00e4ngig von der Tabelle {0} definiert werden. (Die Beziehung ist selbstreferenzierend. Eine solche Beziehung besteht bereits zur L\u00f6schregel SET NULL.)
+
+XCL34.S=Aufgrund von L\u00f6schregeleinschr\u00e4nkungen kann die Tabelle nicht als abh\u00e4ngig von der Tabelle {0} definiert werden. (Die Beziehung umfasst zwei oder mehr Tabellen, so dass die Tabelle f\u00fcr das mehrstufige L\u00f6schen auf sich selbst verweist. F\u00fcr alle \u00fcbrigen Tabellen gilt die L\u00f6schregel CASCADE.)
+
+XCL35.S=Aufgrund von L\u00f6schregeleinschr\u00e4nkungen kann die Tabelle nicht als abh\u00e4ngig von der Tabelle {0} definiert werden. (Die Beziehung f\u00fchrt dazu, dass die Tabelle \u00fcber mehrere Beziehungen f\u00fcr das mehrstufige L\u00f6schen auf die angegebene Tabelle verweist. Die L\u00f6schregel der bestehenden Beziehung ist SET NULL.)
+
+
+XCL36.S=Die L\u00f6schregel f\u00fcr den Fremdschl\u00fcssel muss {0} sein. (Die referenzielle Integrit\u00e4tsbedingung verweist auf sich selbst. Eine vorhandene auf sich selbst verweisende referenzielle Integrit\u00e4tsbedingung hat die L\u00f6schregel NO ACTION, RESTRICT oder CASCADE.)
+
+XCL37.S=Die L\u00f6schregel f\u00fcr den Fremdschl\u00fcssel muss {0} sein. (Die referenzielle Integrit\u00e4tsbedingung verweist auf sich selbst, und die Tabelle befindet sich in einer Abh\u00e4ngigkeitsbeziehung mit der L\u00f6schregel CASCADE.)
+XCL38.S=Die L\u00f6schregel f\u00fcr den Fremdschl\u00fcssel muss {0} sein. (Die Beziehung w\u00fcrde dazu f\u00fchren, dass die Tabelle \u00fcber mehrere Beziehungen f\u00fcr das mehrstufige L\u00f6schen auf dieselbe Tabelle verweist. Diese Beziehungen m\u00fcssen dieselbe L\u00f6schregel NO ACTION, RESTRICT oder CASCADE haben.)
+
+
+XCL39.S=Die L\u00f6schregel f\u00fcr den Fremdschl\u00fcssel darf nicht CASCADE lauten. (Es liegt eine auf sich selbst verweisende Integrit\u00e4tsbedingung mit der L\u00f6schregel SET NULL, NO ACTION oder RESTRICT vor.)
+
+XCL40.S=Die L\u00f6schregel f\u00fcr den Fremdschl\u00fcssel darf nicht CASCADE lauten. (Es w\u00fcrde eine Kreisbeziehung entstehen, in der eine Tabelle f\u00fcr das mehrstufige L\u00f6schen auf sich selbst verweisen w\u00fcrde.) Eine der vorhandenen L\u00f6schregeln in der Beziehung ist nicht CASCADE. Die Beziehung kann demzufolge definiert werden, wenn die L\u00f6schregel nicht CASCADE lautet.)
+
+XCL41.S=Die L\u00f6schregel f\u00fcr den Fremdschl\u00fcssel darf nicht CASCADE lauten. (Die Beziehung w\u00fcrde dazu f\u00fchren, dass eine andere Tabelle \u00fcber mehrere Pfade mit verschiedenen L\u00f6schregeln oder der einheitlichen L\u00f6schregel SET NULL f\u00fcr das mehrstufige L\u00f6schen auf dieselbe Tabelle verweisen w\u00fcrde.)
+
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=Die Verwendung von ''{0}'' setzt voraus, dass Sie ein Upgrade der Datenbank von Version {1} auf Version {2} oder eine aktuellere Version durchf\u00fchren.
+
+XCL48.S= F\u00fcr ''{0}'' ist TRUNCATE TABLE nicht zul\u00e4ssig, weil aktivierte Integrit\u00e4tsbedingungen f\u00fcr Fremdschl\u00fcssel in anderen Tabellen auf Integrit\u00e4tsbedingungen f\u00fcr eindeutige oder Prim\u00e4rschl\u00fcssel in dieser Tabelle verweisen. 
+XCL49.S= F\u00fcr ''{0}'' ist TRUNCATE TABLE nicht zul\u00e4ssig, weil ein aktivierter DELETE-Ausl\u00f6ser vorliegt ({1}).
+XCL50.S=Ein Upgrade f\u00fcr eine fr\u00fchere Version der Datenbank wird nicht unterst\u00fctzt. Die Datenbank, auf die zugegriffen wird, hat den Versionsstand ''{0}'' und diese Software den Versionsstand ''{1}''.
+
+
+# Transaction states, matches DB2
+25000=Ung\u00fcltiger Transaktionsstatus
+
+# Authorization
+25501=Das Verbindungsmerkmal f\u00fcr Lesezugriff kann nicht in einer aktiven Transaktion gesetzt werden.
+25502=F\u00fcr eine Verbindung, einen Benutzer oder eine Datenbank mit Lesezugriff sind \u00c4nderungen von SQL-Daten unzul\u00e4ssig.
+25503=F\u00fcr eine Verbindung, einen Benutzer oder eine Datenbank mit Lesezugriff ist die DDL unzul\u00e4ssig.
+25505=Ein Benutzer mit Lesezugriff oder der Benutzer einer Datenbank mit Lesezugriff ist nicht berechtigt, den Nurlesezugriff f\u00fcr eine Verbindung zu inaktivieren.
+28501=Ung\u00fcltiges Datenbankberechtigungsmerkmal ''{0}={1}''.
+28502.C=Der Benutzername ''{0}'' ist ung\u00fcltig.
+
+28503=Benutzer ''{0}'' d\u00fcrfen nicht gleichzeitig in Berechtigungslisten f\u00fcr Lesezugriff und Vollzugriff enthalten sein.
+28504=Mehrfach genannte(r) Benutzer ''{1}'' in der Zugriffsliste ''{0}'';
+04501.C=Die Datenbankverbindung wurde verweigert.
+
+
+# Dependency Manager
+XD003.S=Die Abh\u00e4ngigkeit kann nicht vom Datentr\u00e4ger zur\u00fcckgeschrieben werden. DependableFinder = ''{0}''. Weitere Informationen: ''{1}''.
+XD004.S=Es k\u00f6nnen keine Abh\u00e4ngigkeiten gespeichert werden.
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=Ung\u00fcltiger Cursorstatus; keine aktuelle Zeile.
+
+07000=Mindestens ein Parameter der aktuellen Anweisung wurde nicht initialisiert.
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=Der Parameter {0} ist ein {1}-Prozedurparameter und muss vor der Ausf\u00fchrung mit CallableStatement.registerOutParameter registriert werden.
+
+07009=Keine Eingabeparameter.
+
+S0022=Die Spalte ''{0}'' wurde nicht gefunden.
+XJ009.S=F\u00fcr das Aufrufen einer gespeicherten Prozedur ist die Verwendung von CallableStatement oder von Ausgabeparametern erforderlich: {0}
+XJ010.S=SAVEPOINT kann nicht abgesetzt werden, wenn autoCommit aktiviert ist.
+XJ011.S=Null kann nicht als Name f\u00fcr den Sicherungspunkt \u00fcbergeben werden.
+XJ012.S=''{0}'' ist bereits geschlossen.
+XJ013.S=Keine ID f\u00fcr benannte Sicherungspunkte.
+XJ014.S=Kein Name f\u00fcr nicht benannte Sicherungspunkte.
+XJ016.S=Die Methode ''{0}'' ist in einer vorbereiteten Anweisung nicht zul\u00e4ssig.
+XJ017.S=Innerhalb des Ausl\u00f6secodes ist ein Sicherungspunktbefehl unzul\u00e4ssig.
+XJ018.S=Der Spaltenname muss ungleich null sein.
+XJ020.S=Der Objekttyp kann nicht in TYPE ''{0}'' konvertiert werden. Der Wert f\u00fcr java.sql.Types ist ung\u00fcltig oder der Objektzeiger ist ein Nullzeiger.
+XJ022.S=Der folgende Datenstrom kann nicht definiert werden: ''{0}''.
+XJ023.S=Der Eingabedatenstrom enthielt f\u00fcr die erforderliche L\u00e4nge zu weinig Daten.
+XJ025.S=Ein Eingabedatenstrom kann keine negative L\u00e4nge haben.
+XJ030.S=In einer verschachtelten Verbindung kann AUTOCOMMIT ON nicht gesetzt werden.
+XJ042.S=''{0}'' ist kein g\u00fcltiger Wert f\u00fcr das Merkmal ''{1}''.
+XJ044.S=''{0}'' ist eine ung\u00fcltige Skala.
+XJ045.S=An Connection.setTransactionIsolationLevel() wurde die ung\u00fcltige oder (derzeit) nicht unterst\u00fctzte Isolationsstufe ''{0}'' \u00fcbergeben. Derzeit unterst\u00fctzte Werte sind java.sql.Connection.TRANSACTION_SERIALIZABLE, java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED und java.sql.Connection.TRANSACTION_READ_UNCOMMITTED.
+XJ04B.S=Der Stapel darf keinen Befehl enthalten, der versucht, eine Ergebnismenge zur\u00fcckzugeben.
+XJ04C.S=Der CallableStatement-Stapel darf keine Ausgabeparameter enthalten.
+XJ056.S=In einer XA-Verbindung kann AUTOCOMMIT ON nicht gesetzt werden.
+XJ057.S=Eine globale Transaktion kann nicht \u00fcber die Verbindung festgeschrieben werden. Die Verarbeitung der COMMIT-Verarbeitung muss \u00fcber die Schnittstelle XAResource erfolgen.
+XJ058.S=Eine globale Transaktion kann nicht \u00fcber die Verbindung zur\u00fcckgesetzt werden. Die Verarbeitung der COMMIT-Verarbeitung muss \u00fcber die Schnittstelle XAResource erfolgen.
+XJ059.S=Eine Verbindung kann nicht beendet werden, solange noch eine globale Transaktion aktiv ist.
+XJ05C.S=Die Konstante ResultSet.HOLD_CURSORS_OVER_COMMIT f\u00fcr das Offenhalten kann f\u00fcr eine globale Transaktion nicht definiert werden.
+XJ061.S=Die Methode ''{0}'' ist nur f\u00fcr Scroll-Cursor zul\u00e4ssig.
+XJ062.S=Ung\u00fcltiger Parameterwert ''{0}'' f\u00fcr ResultSet.setFetchSize(int rows).
+XJ063.S=Ung\u00fcltiger Parameterwert ''{0}'' f\u00fcr Statement.setMaxRows(int maxRows). Der Parameterwert muss >= 0 sein.
+XJ064.S=Ung\u00fcltiger Parameterwert ''{0}'' f\u00fcr setFetchDirection(int direction).
+XJ065.S=Ung\u00fcltiger Parameterwert ''{0}'' f\u00fcr Statement.setFetchSize(int rows).
+XJ066.S=Ung\u00fcltiger Parameterwert ''{0}'' f\u00fcr Statement.setMaxFieldSize(int max).
+XJ067.S=Der SQL-Textzeiger ist null.
+XJ068.S=In der Mitte eines Stapels sind nur executeBatch und clearBatch zul\u00e4ssig.
+XJ069.S=Wenn Sie mit EXECUTE STATEMENT USING arbeiten, sind SetXXX-Methoden unzul\u00e4ssig.
+XJ080.S=EXECUTE STATEMENT USING hat nicht {1} Parameter, sondern {0} Parameter \u00fcbergeben.
+XJ070.S=In einer BLOB- oder CLOB-Methode wurde das Argument ''{0}'' mit negativer oder Nullposition \u00fcbergeben.
+XJ071.S=In einer BLOB- oder CLOB-Methode wurde das Argument ''{0}'' mit Nulll\u00e4nge oder negativer L\u00e4nge \u00fcbergeben.
+XJ072.S=An eine BLOB- oder CLOB-Methode wurde ein Nullmuster oder eine Nullsuchzeichenfolge \u00fcbergeben.
+XJ073.S=Die Daten in diesem BLOB oder CLOB sind nicht mehr verf\u00fcgbar. Dies kann daran liegen, dass die zugeh\u00f6rige Transaktion festgeschrieben oder die zugeh\u00f6rige Verbindung beendet wurde.
+XJ076.S=Das Positionsargument ''{0}'' \u00fcberschreitet die Gr\u00f6\u00dfe des BLOB/CLOB.
+XJ077.S=Bei dem Versuch, mit getBytes/getSubString das erste Byte/Zeichen des BLOB/CLOB-Musters zu lesen, wurde eine Ausnahme empfangen.
+XJ082.U=BLOB/CLOB-Werte sind als Methodenparameter oder Empf\u00e4nger nicht zul\u00e4ssig.
+
+0A000.S=Nicht implementiertes Feature: {0}.
+
+XJ004.C=Die Datenbank ''{0}'' wurde nicht gefunden.
+08004=Zur\u00fcckgewiesene Verbindung: {0}
+A020=Ung\u00fcltige Authentifizierung.
+08003=Keine aktuelle Verbindung.
+XJ028.C=Der URL ''{0}'' hat nicht das richtige Format.
+XJ040.C=Die Datenbank ''{0}'' konnte nicht gestartet werden. Details k\u00f6nnen Sie der n\u00e4chsten Ausnahme entnehmen.
+XJ041.C=Die Datenbank ''{0}'' konnte nicht erstellt werden. Details k\u00f6nnen Sie der n\u00e4chsten Ausnahme entnehmen.
+XJ049.C=Es wurde in Konflikt stehende Erstellungsattribute angegeben.
+XJ081.C=Es wurde in Konflikt stehende Erstellungs-/Wiederherstellungsattribute angegeben.
+XJ05B.C=Das JDBC-Attribut ''{0}'' hat den ung\u00fcltigen Wert ''{1}''. G\u00fcltige Werte sind ''{2}''.
+
+XXXXX.C.6=Normale Beendigung der Datenbanksitzung.
+
+08006.D=Die Datenbank ''{0}'' wird heruntergefahren.
+
+XJ015.M=Das Derby-System wird heruntergefahren.
+
+01J01=Die Datenbank ''{0}'' wurde nicht erstellt. Stattdessen wurde eine Verbindung zu einer vorhandenen Datenbank hergestellt.
+01J02=Scroll-Cursor sind derzeit nicht implementiert.
+01J03=Aktualisierbare ResultSets sind derzeit nicht implementiert.
+01J04=Die Klasse ''{0}'' f\u00fcr die Spalte ''{1}'' implementiert weder java.io.Serializable noch java.sql.SQLData. Eine dieser Schnittstellen muss von Instanzen implementiert werden, damit sie gespeichert werden k\u00f6nnen.
+01J05=Der Upgrade f\u00fcr die Datenbank wurde fehlerfrei durchgef\u00fchrt. Die erweiterte Datenbank steht zur Verwendung bereit. Die gespeicherten vorbereiteten Anweisungen konnten nicht erneut ausgewertet werden. Details zu diesem Fehler enth\u00e4lt die n\u00e4chste Ausnahme. 
+XJ001.U=Java-Ausnahme: ''{1}: {0}''.
+XJ050.U=F\u00fcr die Datenbankversion {0} ist ein Upgrade erforderlich. Setzen Sie f\u00fcr den JDBC-Verbindungs-URL das Attribut ''upgrade=true'', um ein Upgrade auf Version {1} zu erm\u00f6glichen.
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=Unbekannte Berechtigung ''{0}''.
+XCZ01.S=Unbekannter Benutzer ''{0}''.
+XCZ02.S=Ung\u00fcltiger Parameter ''{0}''=''{1}''.
+
+# SQL J Jar support
+46001=Ausnahme beim Zugriff auf die JAR-Datei mit dem URL ''{0}''.
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  ANFANG DER FEHLERNACHRICHT -------------\n
+L002=------------  ENDE DER FEHLERNACHRICHT -------------\n
+L003=\n------------  ANFANG DES FEHLERBEREICHS F\u00dcR SHUTDOWN -------------\n
+L004=\n------------  ENDE DES FEHLERBEREICHS F\u00dcR SHUTDOWN -------------\n
+L005=\n------------  ANFANG DES FEHLERBEREICHS -------------\n
+L006=\n------------  ENDE DES FEHLERBEREICHS -------------\n
+L007=WARNUNG: Die Protokolldatei wurde nicht gefunden. Es wird ein neues Protokoll erstellt. M\u00f6glicherweise ist die Datenbank inkonsistent.
+L008=Die inkompatible alte Protokolldatei {0} wird gel\u00f6scht
+L009=Die alte Protokolldatei {0} wird gel\u00f6scht
+L010=In der Datei {0} wurde ein unvollst\u00e4ndiger Protokollsatz gefunden. Der Inhalt der Protokolldatei wird von der Position {1} bis zum Dateiende bei {2} gel\u00f6scht.
+L011=Der Pr\u00fcfpunktd\u00e4mon hat eine Standardausnahme abgefangen.
+L012=Der Protokollsatz ist nicht als erster Satz der Transaktion markiert. Die Transaktion wurde jedoch nicht in der Transaktionstabelle gefunden. {0}
+L013=Der Protokollsatz ist als erster Satz der Transaktion markiert. Die Transaktion ist jedoch bereits in der Transaktionstabelle enthalten. {0}
+L014=Falsche Anfangsadresse
+L015=Es ist bereits eine neue Protokolldatei vorhanden, die nicht gel\u00f6scht werden kann. {0}
+L016=Die neue Protokolldatei {0} kann nicht erstellt werden.
+L017=Die neue Protokolldatei {0} kann nicht erstellt werden. Grund: {1}.
+L018=Das System hat m\u00f6glicherweise einen inkonsistenten Status. Fehlende Datei: {0}
+
+# Class Manager
+C000=Die Klasse {0} wurde in die Datei {1} geschrieben. Stellen Sie Unterst\u00fctzung f\u00fcr die Datei und die folgende Ausnahme bereit: {2}
+C001=Die Klasse {0} enth\u00e4lt in der JAR-Datei {1} einen unbekannten Zertifikattyp. Es wurde ein X509-Zertifikat erwartet.
+C002=Beim Zugriff auf die Klasse {0} in der JAR-Datei {1} wurde die folgende Sicherheitsausnahme ausgel\u00f6st: {2}
+C003=Ausnahme beim Laden der Datenbank-JAR-Datei {0} - {1}
+C004=Veraltetes Klassenladeprogramm f\u00fcr die Klasse {0}
+C005=Das Ladeprogramm f\u00fcr Datenbankklassen wurde gestartet - derby.database.classpath=''{0}''
+C006={0} wurde aus der Datenbank-JAR-Datei {1} geladen.
+C007=Beim Laden der Klasse {0} aus der JAR-Datei {1} eingetretene Ausnahme: {2}
+
+# RawStore Data
+
+D001=:\n Booten von Derby Version {0}: Instanz {1}\nf\u00fcr das Datenbankverzeichnis {2} \n
+D002=:\nDie Instanz {0} wird heruntergefahren.
+D004=Die Sicherung f\u00fcr die Datenbank mit der Adresse {0} wurde gestartet.
+D005=Die alte Sicherungskopie wurde von {0} nach {1} verschoben.
+D006=Das Datenbankverzeichnis wurde von {0} nach {1} kopiert.
+D007=F\u00fcr die Datenbank wurde service.properties editiert, um den Standardprotokollservice verwenden zu k\u00f6nnen.
+D008=Fehler beim Editieren von service.properties f\u00fcr die Datenbank. Abgebrochene Sicherung: {0}
+D009=Das Protokollverzeichnis wurde von {0} nach {1} kopiert.
+D010=Die Sicherung wurde wegen eines Fehlers abgebrochen.
+D011=Die alte Sicherungskopie mit der Adresse {0} wurde gel\u00f6scht.
+D012=Die Sicherung ist abgeschlossen. Protokolladresse: {0} \n
+
+# Connectivity 
+J004=Datenbankidentit\u00e4t
+J005=Derby herunterfahren
+J007=Datenbank erstellen
+J008=keine Details
+J010=Datenbank auf Datentr\u00e4ger verschl\u00fcsseln
+J013=Datenbank erweitern
+J016=Verschl\u00fcsselungsserviceprovider
+J017=Verschl\u00fcsselungsalgorithmus
+J018=L\u00e4nge des Chiffrierschl\u00fcssels
+J019=Externer Chiffrierschl\u00fcssel
+J020=Geheimer Chiffrierschl\u00fcssel
+J021=Gebietsschema der Datenbank
+J022=Benutzername
+J023=Benutzerkennwort
+J025=Verzeichnispfad protokollieren
+J028=Sicherungspfad f\u00fcr aktualisierende Wiederherstellung
+J100=Die Netzserverklasse {0} wurde nicht gefunden. Ihr Klassenpfad sollte csnet.jar enthalten.
+J101=Die Netzserverklasse {0} konnte nicht geladen werden. {1} \u00dcberpr\u00fcfen Sie die Integrit\u00e4t Ihrer Datei csnet.jar.
+J102=Beim Starten des Netzservers wurde eine Ausnahme ausgel\u00f6st. {0}
+J103=Beim Herunterfahren des Netzservers wurde eine Ausnahme ausgel\u00f6st. {0}
+
+# Authentication
+A001=SCHWERWIEGENDER FEHLER: Es gibt keinen Authentifizierungsservice f\u00fcr das System
+A002=SCHWERWIEGENDER FEHLER: Es gibt keinen Authentifizierungsservice f\u00fcr die Datenbank
+A011=WARNUNG: Im Merkmal {0} ist kein LDAP-Server-/Hostname angegeben. Es wird localhost:389 verwendet.
+
+I015=org.apache.derby.jdbc.EmbeddedDriver wurde nicht im JDBC-Treibermanager registriert.
+I024=Die Datenbank ist nicht verf\u00fcgbar.
+I025=Der JDBC-Treiber ist nicht verf\u00fcgbar.
+
+# Import/Export
+XIE01.S=Es ist keine Verbindung vorhanden.
+XIE03.S=In Zeile {0} f\u00fcr Spalte {1} wurden nach dem Endbegrenzer Daten gefunden.
+XIE04.S=Nicht gefundene Datendatei: {0}
+XIE05.S=Es muss eine Datendatei angegeben werden.
+XIE06.S=Der Name der Definitionseinheit wurde nicht angegeben.
+XIE07.S=Feld- und Satztrennzeichen k\u00f6nnen nicht als Unterzeichenfolge des jeweils anderen Trennzeichens verwendet werden.
+XIE08.S=Es gibt keine Spalte mit dem Namen {0}.
+XIE09.S=Summe der Spalten in der Zeile: {0}
+XIE0B.S=Die Spalte ''{0}'' der Tabelle ist vom Typ {1}, der vom Import/Export nicht unterst\u00fctzt wird.
+XIE0D.S=In Zeile {0} wurde kein Satztrennzeichen gefunden.
+XIE0E.S=In Zeile {0} wurde an unerwarteter Stelle ein Dateiende gelesen.
+XIE0I.S=Beim Schreiben von Daten in die Datei wurde eine E/A-Ausnahme empfangen.
+XIE0J.S=Ein Begrenzer ist ung\u00fcltig oder wird mehrfach verwendet.
+XIE0K.S=Als Zeichenfolgenbegrenzer wurde ein Punkt angegeben.
+XIE0M.S=Die Tabelle ''{0}'' ist nicht vorhanden.
+
+# Monitor
+M001=\n# ********************************************************************\n# ***           Diese Datei darf NICHT bearbeitet werden.          ***\n# *** BEIM \u00c4NDERN DES DATEIINHALTS K\u00d6NNEN DATEN BESCH\u00c4DIGT WERDEN. ***\n# ********************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_es.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_es.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1233 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=Error de arranque debido a una excepci\u00f3n, consulte la excepci\u00f3n siguiente para obtener detalles.
+XBM02.D=Error de arranque debido a una falta de funcionalidad para {0}. Aseg\u00farese de que la classpath incluya el software Derby correcto.
+XBM05.D=Error de arranque debido a la falta de informaci\u00f3n sobre la versi\u00f3n del producto para {0}.
+XBM06.D=Error de arranque, no se puede acceder a una base de datos cifrada sin la contrase\u00f1a de arranque correcta.
+XBM07.D=Error de arranque, la contrase\u00f1a de arranque debe tener al menos 8 bytes de longitud.
+XBM08.D=No se ha podido instanciar la clase StorageFactory {1} de {0}.
+
+XBM0G.D=No se ha podido iniciar el motor de cifrado. Aseg\u00farese de que est\u00e1 ejecutando Java 2 y que ha bajado un suministrador de cifrado como jce y lo ha situado en la classpath.
+XBM0H.D=No se puede crear el directorio {0}.
+XBM0I.D=No se puede eliminar el directorio {0}.
+XBM0J.D=El directorio {0} ya existe.
+XBM0K.D=Subprotocolo desconocido para el nombre de base de datos {0}.
+XBM0L.D=La clase de esquema de autenticaci\u00f3n especificada {0} implementa la interfaz de autenticaci\u00f3n {1}.
+XBM0M.D=Error al crear la instancia de la clase de esquema de autenticaci\u00f3n {0}.
+XBM0N.D=No se ha podido registrar el controlador JDBC con java.sql.DriverManager, consulte la excepci\u00f3n siguiente para obtener detalles.
+XBM0P.D=El suministrador de servicio es de s\u00f3lo lectura, operaci\u00f3n no permitida.
+XBM0S.D=No se puede renombrar el archivo ''{0}'' como ''{1}''
+XBM0T.D=Subprotocolo ambiguo para el nombre de base de datos {0}.
+XBM0U.S=No se han registrado clases para el identificador {0}
+XBM0V.S=Se ha generado una excepci\u00f3n al cargar la clase {1} registrada para el identificador {0}
+XBM0W.S=Se ha generado una excepci\u00f3n al crear una instancia de la clase {1} registrada para el identificador {0}
+XBM0X.D=La descripci\u00f3n de territorio suministrada ''{0}'' no es v\u00e1lida, se esperaba ln[_CO[_variante]]\nln=c\u00f3digo de idioma ISO-639 de dos letras en min\u00fasculas, CO=c\u00f3digo de pa\u00eds ISO-3166 de dos letras en may\u00fasculas, consulte java.util.Locale.
+XBM0Y.D=No se encontr\u00f3 el directorio de copia de seguridad de base de datos {0}. Aseg\u00farese de que la v\u00eda de acceso para las copias de seguridad que se ha especificado sea la correcta.
+XBM0Z.D=No se puede copiar el archivo ''{0}'' en ''{1}''. Aseg\u00farese de que haya suficiente espacio y que los permisos sean los adecuados. 
+XBM0Q.D=No se encontr\u00f3 el archivo {0}. Aseg\u00farese de que la copia de seguridad es la correcta y que no est\u00e1 corrompida.
+XBM0R.D=No se pudo eliminar el archivo {0}.
+
+# Upgrade
+XCW00.D=Actualizaci\u00f3n no soportada de ''{0}'' a ''{1}''.
+
+# Feature not supported
+
+
+# COntext service
+08000=Conexi\u00f3n cerrada por una interrupci\u00f3n desconocida.
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=No se ha podido obtener un bloqueo debido a un punto muerto, el ciclo de bloqueos y esperas es:\n{0}La v\u00edctima seleccionada es XID : {1}
+
+40XL1=No se ha podido obtener un bloqueo dentro del tiempo solicitado
+40XL2=No se ha podido obtener un bloqueo dentro del tiempo solicitado.  El vuelco de lockTable es: {0}
+
+# ClassManager
+XBCM1.S=Error de enlace Java generado durante la carga de la clase generada {0}.
+XBCM2.S=No se puede crear una instancia de la clase generada {0}.
+XBCM3.S=El m\u00e9todo {1}() no existe en la clase generada {0}.
+
+# Properties
+
+XCY00.S=Valor no v\u00e1lido para la propiedad ''{0}''=''{1}''.
+XCY02.S=El cambio de propiedad solicitado no est\u00e1 soportado ''{0}''=''{1}''.
+XCY03.S=La propiedad necesaria ''{0}'' no se ha establecido.
+
+# Cryptography
+XBCX0.S=Excepci\u00f3n del suministrador de cifrado, consulte la excepci\u00f3n siguiente para obtener detalles.
+XBCX1.S=Inicializando cifrado con modalidad no permitida, debe ser ENCRYPT o DECRYPT.
+XBCX2.S=Inicializando cifrado con una contrase\u00f1a de arranque demasiado corta, debe tener al menos {0} caracteres de longitud
+XBCX5.S=No se puede cambiar la contrase\u00f1a de arranque a nulo.
+XBCX6.S=No se puede cambiar la contrase\u00f1a de arranque a un tipo serializable distinto de serie.
+XBCX7.S=Formato incorrecto para cambiar la contrase\u00f1a de arranque.  El formato debe ser: contrase\u00f1a_arranque_anterior, contrase\u00f1a_arranque_nueva.
+XBCX8.S=No se puede cambiar la contrase\u00f1a de arranque de una base de datos no cifrada.
+XBCX9.S=No se puede cambiar la contrase\u00f1a de arranque de una base de datos de s\u00f3lo lectura.
+XBCXA.S=Contrase\u00f1a de arranque incorrecta.
+XBCXB.S=Relleno de cifrado ''{0}'' incorrecto o no se ha especificado relleno. Debe utilizar ''NoPadding''.
+XBCXC.S=El algoritmo de cifrado ''{0}'' no existe. Compruebe que el suministrador ''{1}'' seleccionado ofrece soporte de este algoritmo.
+XBCXD.S=El algoritmo de cifrado no se puede cambiar despu\u00e9s de crear la base de datos.
+XBCXE.S=El suministrador de cifrado no se puede cambiar despu\u00e9s de crear la base de datos.
+XBCXF.S=No se puede encontrar la clase ''{0}'' que representa el suministrador de cifrado.
+XBCXG.S=El suministrador de cifrado ''{0}'' no existe.
+XBCXH.S=El algoritmo de cifrado ''{0}'' no est\u00e1 en el formato correcto. El formato correcto es algoritmo/modalidadRetroalimentaci\u00f3n/NoPadding.
+XBCXI.S=La modalidad de retroalimentaci\u00f3n ''{0}'' no est\u00e1 soportada. Las modalidades de retroalimentaci\u00f3n soportadas son CBC, CFB, OFB y ECB.
+XBCXJ.S=La aplicaci\u00f3n est\u00e1 utilizando una versi\u00f3n de JCE (Java Cryptography Extension) anterior a la 1.2.1.  Actualice a JCE 1.2.1 y reintente la operaci\u00f3n.
+XBCXK.S=La clave de cifrado proporcionada no coincide con la clave de cifrado utilizada al crear la base de datos. Aseg\u00farese de utilizar la clave de cifrado correcta y vuelva a intentarlo. 
+XBCXL.S=El proceso de verificaci\u00f3n para la clave de cifrado no ha sido satisfactorio. Consulte la siguiente excepci\u00f3n para obtener m\u00e1s detalles. Las causas posibles pueden ser un error al acceder al archivo apropiado para llevar a cabo el proceso de verificaci\u00f3n.
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=No se puede crear un nuevo objeto con la clave {1} en antememoria {0}, ya existe en antememoria.
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=El conglomerado ({0}) solicitado no existe.
+XSAI3.S=Caracter\u00edstica no implementada.
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=Tipo de exploraci\u00f3n
+XSAJ1.U=N\u00famero de p\u00e1ginas visitadas
+XSAJ2.U=N\u00famero de filas visitadas
+XSAJ3.U=N\u00famero de filas suprimidas visitadas
+XSAJ4.U=N\u00famero de filas cualificadas
+XSAJ5.U=N\u00famero de columnas extra\u00eddas
+XSAJ6.U=Bit establecido de columnas extra\u00eddas
+XSAJ7.U=Altura del \u00e1rbol
+XSAJ8.U=Tipo de ordenaci\u00f3n
+XSAJA.U=N\u00famero de filas de entrada
+XSAJB.U=N\u00famero de filas de salida
+XSAJC.U=N\u00famero de fusiones realizadas
+XSAJD.U=Tama\u00f1o de fusiones realizadas
+XSAJE.U=Todo
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=heap
+XSAJH.U=sort
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=externa
+XSAJJ.U=interna
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=Violaci\u00f3n de protocolo XA.
+XSAX1.S=Se ha intentado iniciar una transacci\u00f3n global con un Xid de una transacci\u00f3n global existente.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=Se he encontrado una excepci\u00f3n al intentar arrancar el m\u00f3dulo de ''{0}''.
+XSAM2.S=No existe un \u00edndice o conglomerado con id de conglomerado ''{0}'' para eliminar.
+XSAM3.S=No existe un \u00edndice o conglomerado con id de conglomerado ''{0}''.
+XSAM4.S=No existe una clasificaci\u00f3n llamada ''{0}''.
+XSAM5.S=La exploraci\u00f3n debe abrirse y colocarse llamando a next() antes de realizar otras llamadas.
+XSAM6.S=Registro {2} de la p\u00e1gina {1} del contenedor {0} no encontrado.
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=No se ha podido crear una plantilla.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=La caracter\u00edstica no est\u00e1 implementada.
+XSCH7.S=La exploraci\u00f3n no est\u00e1 posicionada.
+XSCH6.S=El contenedor heap con id de contenedor {0} est\u00e1 cerrado.
+XSCH5.S=Existe una discrepancia en la tabla base entre el n\u00famero de columna solicitado {0} y el n\u00famero m\u00e1ximo de columnas {1}.
+XSCH4.S=No se puede crear el conglomerado.
+XSCH1.S=Contenedor {0} no encontrado.
+XSCH0.S=No se ha podido crear el contenedor.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=Reservado para pruebas.
+XSCB8.S=El conglomerado btree {0} est\u00e1 cerrado.
+XSCB7.S=Se ha producido un error interno durante una exploraci\u00f3n btree - current_rh es nulo = {0}, clave de posici\u00f3n es nula = {1}.
+XSCB6.S=Limitaci\u00f3n: no se puede actualizar o insertar el registro de un \u00edndice secundario btree debido a la falta de espacio en la p\u00e1gina. Utilice los par\u00e1metros derby.storage.pageSize y/o derby.storage.pageReservedSpace para solucionar esta limitaci\u00f3n.
+XSCB5.S=No se ha podido encontrar la fila en el \u00e1rbol durante una operaci\u00f3n deshacer l\u00f3gica de una inserci\u00f3n o supresi\u00f3n de btree.
+XSCB4.S=Se ha llamado a un m\u00e9todo de una exploraci\u00f3n abierta btree antes de posicionar la exploraci\u00f3n en la primera fila (esto es, no se realizado a\u00fan una llamada next()).  El estado actual de la exploraci\u00f3n es ({0}).
+XSCB3.S=Caracter\u00edstica no implementada.
+XSCB2.S=No se ha encontrado la propiedad necesaria {0} en la lista de propiedades dada para createConglomerate() de un \u00edndice secundario btree.
+XSCB1.S=Contenedor {0} no encontrado.
+XSCB0.S=No se ha podido crear el contenedor.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=No se han podido adquirir los recursos para la clasificaci\u00f3n.
+XSAS3.S=El tipo de fila insertada en la clasificaci\u00f3n no coincide con la plantilla de clasificaci\u00f3n.
+XSAS1.S=Se ha intentado extraer una fila antes de iniciar la clasificaci\u00f3n o despu\u00e9s de finalizarla.
+XSAS0.S=Se ha llamado a un m\u00e9todo de interfaz de controlador de exploraci\u00f3n que no es apropiado para una exploraci\u00f3n sobre una clasificaci\u00f3n.
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=No se puede inmovilizar la base de datos despu\u00e9s de que ya ha sido inmovilizada.
+XSRS1.S=No se puede realizar copia de seguridad de la base de datos en {0}, ya que no es un directorio.
+XSRS4.S=Error al renombrar el archivo (durante la copia de seguridad) de {0} en {1}.
+XSRS5.S=Error al copiar el archivo (durante la copia de seguridad) de {0} en {1}.
+XSRS6.S=No se puede crear el directorio de copia de seguridad {0}.
+XSRS7.S=Se ha producido una excepci\u00f3n inesperada durante la copia de seguridad.
+XSRS8.S=El dispositivo de anotaci\u00f3n cronol\u00f3gica s\u00f3lo puede establecerse en el momento de creaci\u00f3n de la base de datos y no puede cambiarse sobre la marcha.
+XSRS9.S=El registro {0} ya no existe
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=No se pueden emitir m\u00e1s cambios, la f\u00e1brica de anotaci\u00f3n cronol\u00f3gica se ha detenido.
+XSLB8.S=Intentando restablecer la exploraci\u00f3n en {0}, m\u00e1s all\u00e1 de su l\u00edmite de {1}.
+XSLB6.S=Intentado anotar un 0 o registro de anotaci\u00f3n cronol\u00f3gica de longitud -ve.
+XSLB5.S=Instante de truncationLWM {1} no permitido para el punto de truncamiento {0}. El rango permitido es de {2} a {3}.
+XSLB4.S=No se puede encontrar truncationLWM {0}.
+XSLB2.S=La operaci\u00f3n de anotaci\u00f3n cronol\u00f3gica {0} est\u00e1 registrando demasiados datos, ha llenado el almacenamiento intermedio interno para anotaciones.
+XSLB1.S=La operaci\u00f3n de anotaci\u00f3n cronol\u00f3gica {0} ha encontrado un error al grabarse en la corriente de anotaciones, que podr\u00eda deberse a una operaci\u00f3n de anotaci\u00f3n errante o al llenado del almacenamiento intermedio interno para anotaciones debido a un exceso de operaciones de anotaci\u00f3n de gran tama\u00f1o.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=Existe el directorio de anotaciones cronol\u00f3gicas {0}. Aseg\u00farese de que la ubicaci\u00f3n logDevice especificada sea la correcta.  
+XSLAS.D=No se encontr\u00f3 el directorio de anotaciones cronol\u00f3gicas {0} al restaurar la copia de seguridad. Aseg\u00farese de que la copia de seguridad es la correcta y que no est\u00e1 corrompida.
+XSLAR.D=No se pudo copiar el archivo de anotaciones cronol\u00f3gicas ''{0}'' en ''{1}'' al realizar la restauraci\u00f3n. Aseg\u00farese de que haya suficiente espacio y que los permisos sean los adecuados. 
+XSLAQ.D=No se puede crear una archivo de anotaciones cronol\u00f3gicas en el directorio {0}.
+XSLAP.D=La base de datos {0} est\u00e1 en la versi\u00f3n {1}. No es posible actualizar bases de datos Beta,
+XSLAO.D=Error de recuperaci\u00f3n, problema inesperado {0}.
+XSLAN.D=La base de datos en {0} tiene un formato incompatible con la versi\u00f3n actual del software.  La base de datos se ha creado o actualizado con la versi\u00f3n {1}.
+XSLAM.D=No se puede verificar el formato de la base de datos en {1} debido a una excepci\u00f3n de E/S.
+XSLAL.D=El tama\u00f1o del registro de anotaci\u00f3n cronol\u00f3gica {2} supera el tama\u00f1o m\u00e1ximo del archivo de anotaciones cronol\u00f3gicas permitido {3}. Se ha encontrado un error en el archivo de anotaciones cronol\u00f3gicas {0}, posici\u00f3n {1}
+XSLAK.D=La base de datos ha superado el n\u00famero de archivo de anotaciones cronol\u00f3gicas m\u00e1s grande {0}.
+XSLAJ.D=Se ha se\u00f1alado al sistema de anotaciones para que concluya debido a un problema anterior y que no permitir\u00e1 m\u00e1s operaciones hasta que concluya y vuelva iniciar el sistema.
+XSLAI.D=No se puede anotar el registro de anotaci\u00f3n cronol\u00f3gica de punto de control
+XSLAH.D=Se va a actualizar una base de datos de s\u00f3lo lectura.
+XSLAF.D=Se ha creado una base de datos de s\u00f3lo lectura con almacenamientos intermedios de datos dirty.
+XSLAE.D=El archivo de control en {0} no se puede grabar o actualizar.
+XSLAD.D=Registro de anotaci\u00f3n cronol\u00f3gica en instante {2} en archivo de anotaciones cronol\u00f3gicas {3} da\u00f1ado. Se esperaba una longitud de registro de anotaci\u00f3n cronol\u00f3gica de {0}, longitud real {1}.
+XSLAC.D=La base de datos en {0} tiene un formato incompatible con la versi\u00f3n actual del software, puede haber sido creada o actualizada por una versi\u00f3n posterior.
+XSLAB.D=No se puede encontrar el archivo de anotaciones cronol\u00f3gicas {0}, aseg\u00farese de que la propiedad logDevice se ha establecido con el separador de v\u00eda de acceso correcto para la plataforma.
+XSLAA.D=Una excepci\u00f3n anterior ha marcado el almac\u00e9n para concluirlo.
+XSLA8.D=No se puede retrotraer la transacci\u00f3n {0}, intentando compensar la operaci\u00f3n {1} con {2}
+XSLA7.D=No se puede rehacer la operaci\u00f3n {0} en el archivo de anotaciones cronol\u00f3gicas.
+XSLA6.D=No se puede recuperar la base de datos.
+XSLA5.D=No se puede leer la corriente de datos para las anotaciones cronol\u00f3gicas por alguna raz\u00f3n para retrotraer la transacci\u00f3n {0}.
+XSLA4.D=No se puede grabar en las anotaciones cronol\u00f3gicas, puede que est\u00e9n llenas.  Suprima archivos innecesarios.  Tambi\u00e9n es posible que el sistema de archivos sea de s\u00f3lo lectura, que el disco tenga error o alg\u00fan otro problema con el soporte.
+XSLA3.D=Anotaciones cronol\u00f3gicas da\u00f1adas, datos no v\u00e1lidos en la corriente de anotaciones.
+XSLA2.D=Se concluir\u00e1 el sistema, se obtuvo una excepci\u00f3n de E/S al acceder al archivo de anotaciones cronol\u00f3gicas.
+XSLA1.D=Se ha enviado el registro de anotaciones cronol\u00f3gicas a la corriente, pero no puede aplicarse al almac\u00e9n (Objeto {0}).  Esto tambi\u00e9n puede producir problemas de recuperaci\u00f3n.
+XSLA0.D=No se puede enviar el archivo de anotaciones cronol\u00f3gicas al disco {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=Ya existe un SAVEPOINT con el nombre que se ha pasado en la transacci\u00f3n actual.
+3B502.S=Se ha especificado RELEASE o ROLLBACK TO SAVEPOINT, pero no existe ning\u00fan SAVEPOINT.
+3B001.S=SAVEPOINT, {0} no existe o no est\u00e1 activo en la transacci\u00f3n actual.
+3B002.S=Se alcanz\u00f3 el n\u00famero m\u00e1ximo de SAVEPOINT. 
+XSTA2.S=Ya estaba activa una transacci\u00f3n cuando se intent\u00f3 activar otra transacci\u00f3n.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=El m\u00f3dulo RawSotre ha identificado un error interno.
+40XT1=Se ha generado una excepci\u00f3n al comprometer la transacci\u00f3n.
+40XT2=Se ha generado una excepci\u00f3n al retrotraer un SAVEPOINT.
+40XT4=Se ha intentado cerrar una transacci\u00f3n que segu\u00eda activa, la transacci\u00f3n ha terminado anormalmente.
+40XT5=Se he generado una excepci\u00f3n durante una transacci\u00f3n interna.
+40XT6=La base de datos est\u00e1 en estado de reposo, no se puede activar la transacci\u00f3n.  Espere un momento a que salga del estado de reposo.
+40XT7=La operaci\u00f3n no est\u00e1 soportada en una transacci\u00f3n interna.
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=Identificador no v\u00e1lido.
+XCXB0.S=Classpath de base de datos no v\u00e1lida: ''{0}''.
+XCXC0.S=Lista de id no v\u00e1lida.
+XCXE0.S=Est\u00e1 intentando realizar una operaci\u00f3n que utiliza el territorio de la base de datos, pero la base de datos no dispone de un territorio.
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=Se ha generado una excepci\u00f3n al terminar anormalmente la transacci\u00f3n.
+XSTB2.M=No se pueden anotar los cambios de transacci\u00f3n, es posible que est\u00e9 intentando grabar en una base de datos de s\u00f3lo lectura.
+XSTB3.M=No se puede terminar anormalmente la transacci\u00f3n porque el gesto de anotaciones cronol\u00f3gicas es nulo, probablemente debido a un error anterior.
+XSTB5.M=Se ha encontrado un problema inesperado al crear la base de datos con la anotaci\u00f3n cronol\u00f3gica inhabilitada.
+XSTB6.M=No se puede sustituir una tabla de transacci\u00f3n por otra mientras una est\u00e9 en uso.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=Se ha cerrado el contenedor
+40XD1=El contenedor se ha abierto en modalidad de s\u00f3lo lectura
+40XD2=No se puede abrir el contenedor {0}, o ha sido eliminado o no existe
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=Se ha intentado acceder a una ranura fuera de rango de una p\u00e1gina
+XSDA2.S=Se ha intentado actualizar un registro suprimido
+XSDA3.S=Limitaci\u00f3n: no se puede actualizar o insertar el registro debido a la falta de espacio en la p\u00e1gina. Utilice los par\u00e1metros derby.storage.pageSize y/o derby.storage.pageReservedSpace para solucionar esta limitaci\u00f3n.
+XSDA4.S=Se ha generado una excepci\u00f3n inesperada
+XSDA5.S=Se ha intentado recuperar un registro que no ha sido suprimido
+XSDA6.S=La columna {0} de la fila es nula, debe asignarse un valor para que apunte a un objeto.
+XSDA7.S=La restauraci\u00f3n de un objeto serializable o SQLData de clase {0} ha intentado leer m\u00e1s datos que los almacenados originalmente
+XSDA8.S=Excepci\u00f3n durante la restauraci\u00f3n de un objeto serializable o SQLData de clase {0}
+XSDA9.S=Clase no encontrada durante la restauraci\u00f3n de un objeto serializable o SQLData de clase {0}
+XSDAA.S=Indicaci\u00f3n de la hora {0} no permitida, bien procede de una p\u00e1gina diferente o de una implementaci\u00f3n incompatible
+XSDAB.S=no se puede establecer una indicaci\u00f3n de la hora nula
+XSDAC.S=Se intentan mover p\u00e1ginas o filas de un contenedor a otro.
+XSDAD.S=Se intentan mover cero filas de una p\u00e1gina a otra.
+XSDAE.S=S\u00f3lo se puede crear un descriptor de contexto de registro para un id de descriptor de contexto de registro especial.
+XSDAF.S=Utilizando un descriptor de contexto de registro especial como si fuese uno normal.
+XSDAG.S=La transacci\u00f3n superior anidada de asignaci\u00f3n no puede abrir el contenedor.
+XSDAI.S=La p\u00e1gina {0} que se est\u00e1 eliminando ya ha sido bloqueada para suprimir su asignaci\u00f3n.
+XSDAJ.S=Excepci\u00f3n durante la grabaci\u00f3n de un objeto serializable o SQLData
+XSDAK.S=Se ha obtenido una p\u00e1gina incorrecta para el descriptor de contexto de registro {0}.
+XSDAL.S=El descriptor de contexto de registro {0} se\u00f1ala inesperadamente a una p\u00e1gina de desbordamiento.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=Excepci\u00f3n inesperada en la p\u00e1gina en memoria {0}
+XSDB1.D=Formato de p\u00e1gina desconocido en la p\u00e1gina {0}
+XSDB2.D=Formato de contenedor desconocido en el contenedor {0} : {1}
+XSDB3.D=La informaci\u00f3n del contenedor no se puede cambiar una vez grabada: era {0}, ahora {1}
+XSDB4.D=La p\u00e1gina {0} es de la versi\u00f3n {1}, el archivo de anotaciones cronol\u00f3gicas contiene un cambio versi\u00f3n {2}, o faltan registros de anotaci\u00f3n cronol\u00f3gica de esta p\u00e1gina o esta p\u00e1gina no se ha grabado correctamente en el disco.
+XSDB5.D=Las anotaciones cronol\u00f3gicas tienen un registro de cambio en la p\u00e1gina {0} que est\u00e1 m\u00e1s all\u00e1 del final del contenedor.
+XSDB6.D=Es posible que otra instancia de Derby haya iniciado ya la base de datos {0}.
+XSDB7.D=AVISO: Derby (instancia {0}) est\u00e1 intentando arrancar la base datos {1} a pesar de que Derby (instancia {2}) pueda seguir activo. S\u00f3lo una instancia de Derby debe arrancar una base de datos al mismo tiempo. Pueden producirse da\u00f1os graves y no recuperables aunque podr\u00edan haberse producido ya.
+XSDB8.D=AVISO: Derby (instancia {0}) est\u00e1 intentando arrancar la base datos {1} a pesar de que Derby (instancia {2}) pueda seguir activo. S\u00f3lo una instancia de Derby debe arrancar una base de datos al mismo tiempo. Pueden producirse da\u00f1os graves y no recuperables si 2 instancias de Derby se arrancan en la misma base de datos al mismo tiempo. Se ha establecido la propiedad db2j.database.forceDatabaseLock=true para que no arranque la base de datos mientras est\u00e9 presente db.lck. Normalmente este archivo se elimina cuando termina la primera instancia de Derby que se arranca en la base de datos, pero puede dejarse a veces al concluir. En este caso ser\u00e1 necesario eliminar el archivo a mano.  Es importante comprobar que no hay ninguna otra VM accediendo a la base de datos antes de suprimir el archivo db.lck a mano.
+XSDB9.D=El contenedor de corriente {0} est\u00e1 da\u00f1ado.
+XSDBA.D=Anomal\u00eda al intentar asignar el objeto {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=No se ha podido crear el archivo {0} porque ya existe.
+XSDF1.S=Excepci\u00f3n durante la creaci\u00f3n del archivo {0} del contenedor
+XSDF2.S=Excepci\u00f3n durante la creaci\u00f3n del archivo {0} del contenedor, no se pudo eliminar el archivo.  Excepci\u00f3n: {1}.
+XSDF3.S=No se puede crear el segmento {0}.
+XSDF4.S=Excepci\u00f3n durante la eliminaci\u00f3n del archivo {0} del contenedor eliminado, no se ha podido eliminar el archivo {1}.
+XSDF6.S=No se puede encontrar la p\u00e1gina de asignaci\u00f3n {0}.
+XSDF7.S=No se ha podido enclavar la p\u00e1gina que  se acaba de crear {0}
+XSDF8.S=No se puede encontrar la p\u00e1gina {0} para reutilizar.
+XSDFB.S=Operaci\u00f3n no soportada por una base de datos de s\u00f3lo lectura
+XSDFD.S=Se ha le\u00eddo una imagen de p\u00e1gina diferente en 2 E/S de la p\u00e1gina {0}, la primera imagen tiene una suma de comprobaci\u00f3n incorrecta, la segunda imagen tiene una suma de comprobaci\u00f3n correcta. Im\u00e1genes de p\u00e1gina: {1} {2}
+XSDFF.S=Anomal\u00eda en la operaci\u00f3n solicitada debido a una excepci\u00f3n inesperada.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=No se ha podido leer la p\u00e1gina {0} del disco.
+XSDG1.D=No se ha podido grabar la p\u00e1gina {0} en el disco, compruebe si el disco est\u00e1 lleno.
+XSDG2.D=Suma de comprobaci\u00f3n no v\u00e1lida en la p\u00e1gina {0}, se esperaba {1}, versi\u00f3n en disco {2}, vuelco de p\u00e1gina: {3}
+XSDG3.D=No se ha podido acceder a los metadatos del contenedor {0}
+XSDG5.D=La base de datos no estaba en modalidad de creaci\u00f3n cuando se ha llamado a createFinished.
+XSDG6.D=No se encontr\u00f3 el directorio de segmentos de datos al restaurar la copia de seguridad {0}. Aseg\u00farese de que la copia de seguridad es la correcta y que no est\u00e1 corrompida.
+XSDG7.D=No ha sido posible eliminar el directorio {0} durante la restauraci\u00f3n. Aseg\u00farese de que los permisos son los adecuados.
+XSDG8.D=No se pudo copiar el directorio ''{0}'' en ''{1}'' al realizar la restauraci\u00f3n. Aseg\u00farese de que haya suficiente espacio y que los permisos sean los adecuados. 
+
+# language
+01500=Se ha eliminado la restricci\u00f3n {0} de la tabla {1}.
+01501=Se ha eliminado la vista {0}.
+01502=Se ha eliminado el desencadenante {0} de la tabla {1}.
+01503=Se ha modificado la columna {0} de la tabla {1} a\u00f1adiendo una restricci\u00f3n no nula.
+01504=El nuevo \u00edndice es un duplicado de un \u00edndice existente: {0}.
+01505=Es posible que el valor {0} est\u00e9 truncado.
+01003=Se han eliminado valores nulos del argumento de una funci\u00f3n de columna.
+0100E=XX Intent\u00f3 devolver demasiados conjuntos de resultados
+02000=No se ha encontrado ninguna fila para FETCH, UPDATE o DELETE; o el resultado de una consulta es una tabla vac\u00eda.
+21000=La subconsulta escalar tiene permitido devolver una sola fila.
+22001=Se ha producido un error de truncamiento al intentar recortar {0} ''{1}'' a una longitud {2}.
+54006=La longitud resultante de la operaci\u00f3n {0} es mayor que {1}.
+22003=El valor resultante queda fuera del rango para el tipo de datos {0}.
+22005=Se ha intentado obtener un valor de datos de tipo ''{0}'' de un valor de datos de tipo ''{1}''.
+22007.S.180=La representaci\u00f3n de serie de un valor de fecha y hora queda fuera de rango.
+22007.S.181=La sintaxis de la representaci\u00f3n de serie de un valor de fecha y hora es incorrecta.
+22011=El segundo o tercer argumento de la funci\u00f3n SUBSTR queda fuera de rango.
+22012=Intento de divisi\u00f3n por cero.
+22013=Intento de calcular la ra\u00edz cuadrada de un n\u00famero negativo, ''{0}''.
+22014=La posici\u00f3n inicial de LOCATE no es v\u00e1lida; debe ser un entero positivo.  El \u00edndice desde el que comenzar la b\u00fasqueda es ''{2}''.  La serie que se busca es ''{0}''.  La serie en que se busca es ''{1}''. 
+22015=La funci\u00f3n ''{0}'' no est\u00e1 permitida en el siguiente conjunto de tipos.  El primer operando es de tipo ''{1}''.  El segundo operando es de tipo ''{2}''.  El tercer operando (posici\u00f3n inicial) es de tipo ''{3}''.
+22018=Formato de serie de caracteres no v\u00e1lido para tipo {0}.
+22019=Secuencia de escape no v\u00e1lida, ''{0}''. La serie de escape debe contener exactamente un car\u00e1cter. No puede ser nula o contener m\u00e1s de un car\u00e1cter.
+22025=El car\u00e1cter de escape debe ir seguido del car\u00e1cter de escape, '_' o '%'. No puede ir seguido de ning\u00fan otro car\u00e1cter o ir al final del patr\u00f3n.
+22027=La funci\u00f3n incorporada TRIM() soporta un solo car\u00e1cter de ajuste.  Las funciones incorporadas LTRIM() y RTRIM() soportan varios caracteres de ajuste.
+22500=No se pueden utilizar par\u00e1metros ? para el patr\u00f3n LIKE y la cl\u00e1usula ESCAPE.
+22501=Una cl\u00e1usula ESCAPE de NULL devuelve resultados no definidos y no est\u00e1 permitida.
+23502=La columna ''{0}'' no puede aceptar un valor NULL.
+23505=La sentencia ha terminado anormalmente porque habr\u00eda provocado un valor de clave duplicado en una restricci\u00f3n de clave \u00fanica o primaria o en un \u00edndice \u00fanico identificado por ''{0}' definido en ''{1}''.
+23503={2} en la tabla ''{1}'' ha causado una violaci\u00f3n de restricci\u00f3n de clave for\u00e1nea ''{0}'' de la clave {3}.  La sentencia se ha retrotra\u00eddo.
+23513=La restricci\u00f3n de comprobaci\u00f3n ''{1}'' se ha violado al realizar un INSERT o UPDATE en la tabla ''{0}''.
+38000=Se he generado la excepci\u00f3n ''{0}'' al evaluar una expresi\u00f3n.
+38001=No se permite a la rutina externa que ejecute sentencias SQL.
+38002=La rutina intent\u00f3 modificar datos, cuando \u00e9sta no estaba definida como MODIFIES SQL DATA.
+38004=La rutina intent\u00f3 leer datos, cuando \u00e9sta no estaba definida como READS SQL DATA.
+39004=No se puede pasar un valor NULL a un m\u00e9todo que toma un par\u00e1metro de tipo primitivo ''{0}''.
+40XC0=Sentencia muerta. Esto puede haber sido provocado por un error grave de transacci\u00f3n dentro de esta sentencia.
+# this error is retired in 1.3
+42000=Error de sintaxis o violaci\u00f3n de norma de acceso; consulte los errores adicionales para obtener detalles.
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=En una sentencia ALTER, la columna ''{0}'' se ha especificado como NOT NULL y no se ha especificado la cl\u00e1usula DEFAULT o se ha especificado como DEFAULT NULL.
+42601.S.372=La sentencia ALTER TABLE no puede a\u00f1adir una columna IDENTITY a una tabla. 
+42606=Se ha detectado una constante hexadecimal no v\u00e1lida que comienza por ''{0}''.
+54002=Una constante de serie que comienza por ''{0}'' es demasiado larga.
+42611=El atributo de longitud, precisi\u00f3n o escala para columna o correlaci\u00f3n de tipo ''{0}'' no es v\u00e1lido.
+
+42605=El n\u00famero de argumentos para la funci\u00f3n ''{0}'' es incorrecto.
+42610=Todos los argumentos de la funci\u00f3n COALESC/VALUE no pueden ser par\u00e1metros. Al menos debe haber un argumento que no sea un par\u00e1metro.
+
+42613=Hay una o m\u00e1s palabras claves conflictivas en relaci\u00f3n a la cl\u00e1usula ''{0}''.
+42621=Una restricci\u00f3n de comprobaci\u00f3n o columna generada definida con ''{0}'' no es v\u00e1lida.
+42734=El nombre ''{0}'' que se especific\u00f3 en el contexto ''{1}'' no es exclusivo.
+# DB2 error for invalid set schema
+42802=El n\u00famero de valores asignado no coincide con el n\u00famero de columnas especificadas o impl\u00edcitas.
+42815.S.713=El valor de sustituci\u00f3n para ''{0}'' no es v\u00e1lido.
+42815.S.171=El tipo de datos, longitud o valor de argumentos ''{0}'' y ''{1}'' es incompatible.
+42820=El literal de coma flotante ''{0}'' contiene m\u00e1s de 30 caracteres.
+42824=Un operando de LIKE no es una serie, o el primer operando no es una columna.
+42831=''{0}'' no puede ser una columna de clave primaria o clave \u00fanica porque puede contener valores nulos.
+42834=No se puede especificar SET NULL porque FOREIGN KEY ''{0}'' no puede contener valores nulos.  
+42884=No se encontr\u00f3 ninguna rutina autorizada con el nombre ''{0}'' del tipo ''{1}'' que tuviese argumentos compatibles.
+42886=''{0}'' par\u00e1metro ''{1}'' precisa de un marcador de par\u00e1metros ''?''.
+42894=El valor DEFAULT o el valor del atributo IDENTITY no es v\u00e1lido para la columna ''{0}''.
+428C1=S\u00f3lo se permite una columna de identidad en una tabla.
+42903=Uso no v\u00e1lido de una funci\u00f3n de agregaci\u00f3n.
+42908=La sentencia CREATE VIEW no incluye una lista de columnas.
+42915=La clave for\u00e1nea ''{0}'' no es v\u00e1lida por la raz\u00f3n siguiente: ''{1}''. 
+42972=Una cl\u00e1usula ON asociada a un operador JOIN no es v\u00e1lida.
+42X01=Error de sintaxis: {0}.
+42X02={0}.
+42X03=El nombre de columna ''{0}'' est\u00e1 en m\u00e1s de una tabla de la lista FROM.
+42X04=La columna ''{0}'' no est\u00e1 en ninguna tabla de la lista FROM o aparece en una especificaci\u00f3n de uni\u00f3n y est\u00e1 fuera del \u00e1mbito de la especificaci\u00f3n de uni\u00f3n o aparece en una cl\u00e1usula HAVING y no est\u00e1 en la lista GROUP BY.  Si se trata de una sentencia CREATE o ALTER TABLE entonces ''{0}'' no es una columna de la tabla destino.
+42X05=La tabla ''{0}'' no existe.
+42X06=Se han especificado demasiadas columnas de resultados para la tabla ''{0}''.
+42X07=NULL s\u00f3lo est\u00e1 permitido en una cl\u00e1usula VALUES dentro de una sentencia INSERT.
+42X08=El constructor de la clase ''{0}'' no se puede utilizar como tabla virtual externa porque la clase no implementa ''{1}''
+42X09=La tabla o nombre de alias ''{0}'' se utiliza m\u00e1s de una vez en la lista FROM.
+42X10=''{0}'' no es un nombre de tabla expuesto en el \u00e1mbito en que aparece.
+42622=El nombre ''{0}'' es demasiado largo. La longitud m\u00e1xima es ''{1}''.
+42X12=El nombre de columna ''{0}'' aparece m\u00e1s de una vez en la sentencia de creaci\u00f3n de la tabla.
+54011=Se han especificado demasiadas columnas ({0}) para la tabla o vista {1}. El l\u00edmite es {2}.
+42Z9F=Demasiados \u00edndices ({0}) en la tabla {1}. El l\u00edmite es {2}.
+42X13=El nombre de columna ''{0}'' aparece m\u00e1s de una vez en la lista de columnas de la sentencia de inserci\u00f3n.
+42X14=''{0}'' no es una columna en la tabla o VTI ''{1}''.
+42X15=El nombre de columna ''{0}'' aparece en una sentencia sin una lista FROM.
+42X16=El nombre de columna ''{0}'' aparece varias veces en la cl\u00e1usula SET de una sentencia de actualizaci\u00f3n.
+42X17=El valor ''{0}'' no es v\u00e1lido como especificaci\u00f3n joinOrder en la lista Properties de una cl\u00e1usula FROM. S\u00f3lo son v\u00e1lidos los valores FIXED y UNFIXED.
+42803=Una expresi\u00f3n que contiene la columna ''{0}'' aparece en la lista SELECT y no forma parte de una cl\u00e1usula GROUP BY.
+42818=Las comparaciones entre ''{0}'' y ''{1}'' no est\u00e1n soportadas.
+42X19=La cl\u00e1usula WHERE o HAVING o definici\u00f3n CHECK CONSTRAINT es una expresi\u00f3n ''{0}''.  Debe ser una expresi\u00f3n BOOLEAN.
+42X23=El cursor {0} no es actualizable.
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=No se permite la funci\u00f3n ''{0}'' sobre el tipo ''{1}''.
+42X26=La clase ''{0}'' de la columna ''{1}'' no existe o es inaccesible. Esto puede ocurrir si la clase no es p\u00fablica.
+42X28=La tabla a suprimir ''{0}'' no es destino del cursor ''{1}''.
+42X29=La tabla a actualizar ''{0}'' no es destino del cursor ''{1}''.
+42X30=Cursor ''{0}'' no encontrado. Verifique que AutoCommit es OFF.
+42X31=La columna ''{0}'' no est\u00e1 en la lista FOR UPDATE del cursor ''{1}''.
+42X32=El n\u00famero de columnas en la lista de columnas derivadas debe coincidir con el n\u00famero de columnas de la tabla ''{0}''.
+42X33=La lista de columnas derivadas contiene un nombre de columna duplicado ''{0}''.
+42X34=Hay un par\u00e1metro ? en la lista de selecci\u00f3n.  No est\u00e1 permitido.
+42X35=No est\u00e1 permitido que ambos operandos de ''{0}'' sean par\u00e1metros ?.
+42X36=No est\u00e1 permitido que el operador ''{0}'' tome un par\u00e1metro ? como operando.
+42X37=El operador unitario ''{0}'' no est\u00e1 permitido sobre el tipo ''{1}''.
+42X38=''SELECT *'' s\u00f3lo est\u00e1 permitido en subconsultas EXISTS y NOT EXISTS.
+42X39=La consulta s\u00f3lo tiene permitido devolver una sola columna.
+42X40=Un NOT tiene un operando no booleano. El operando de NOT debe dar como resultado TRUE, FALSE o UNKNOWN.
+42X41=La propiedad ''{0}'' no es v\u00e1lida en la cl\u00e1usula Properties de una lista FROM (la propiedad se establec\u00eda como ''{1}'').
+42821=Las columnas de tipo ''{0}'' no pueden contener valores de tipo ''{1}''. 
+42X43=El ResultSetMetaData devuelto para la clase/objeto ''{0}'' era nulo. El ResultSetMetaData no debe ser nulo para poder utilizar esta clase como tabla virtual externa.
+42X44=Longitud ''{0}'' no v\u00e1lida en la especificaci\u00f3n de columna.
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=El valor ''{1}'' no es una precisi\u00f3n v\u00e1lida para {0}.
+42X49=El valor ''{0}'' no es un literal entero v\u00e1lido.
+42X50=No se ha encontrado ning\u00fan m\u00e9todo que pueda coincidir con la llamada de m\u00e9todo {0}.{1}({2}) despu\u00e9s de probar todas las combinaciones de los tipos de objeto y primitivo y todas las conversiones de tipos posibles de todos los par\u00e1metros que pudiera tener la llamada de m\u00e9todo.  Es posible que el m\u00e9todo exista, pero no es p\u00fablico y/o est\u00e1tico, o que los tipos de par\u00e1metro no sean convertibles por la invocaci\u00f3n del m\u00e9todo.
+42X51=La clase ''{0}'' no existe o es inaccesible. Esto puede ocurrir si la clase no es p\u00fablica.
+42X52=No est\u00e1 permitido que el m\u00e9todo de llamada (''{0}'') utilice un receptor del tipo primitivo Java ''{1}''.
+42X53=El predicado LIKE s\u00f3lo puede tener los operandos ''CHAR'' o ''VARCHAR'. El tipo ''{0}'' no est\u00e1 permitido.
+42X54=El m\u00e9todo Java ''{0}'' tiene un ? como receptor.  No est\u00e1 permitido.
+42X55=El nombre de tabla ''{1}'' debe ser el mismo que ''{0}''.
+42X56=El n\u00famero de columnas de la lista de columnas de la vista no coincide con el n\u00famero de columnas de la expresi\u00f3n de consulta subyacente en la definici\u00f3n de la vista para ''{0}''.
+42X57=getColumnCount() de la tabla virtual externa ''{0}'' ha devuelto un valor no v\u00e1lido ''{1}''.  Los valores v\u00e1lidos son >= 1.
+42X58=El n\u00famero de columnas a la izquierda y derecha de UNION debe ser el mismo.
+42X59=El n\u00famero de columnas en cada constructor VALUES debe ser el mismo.
+42X60=Se ha especificado un valor no v\u00e1lido ''{0}'' para la propiedad insertMode de la tabla ''{1}''.
+42X61=Los tipos ''{0}'' y ''{1}'' no son compatibles con UNION.
+42X62=''{0}'' no se permite en el esquema ''{1}''.
+42X63=La cl\u00e1usula USING no ha devuelto ning\u00fan resultado, no se pueden establecer par\u00e1metros.
+42X64=Se ha especificado un valor no v\u00e1lido ''{0}'' para la propiedad useStatistics en la lista Properties. TRUE o FALSE son los \u00fanicos valores v\u00e1lidos.
+42X65=El \u00edndice ''{0}'' no existe.
+42X66=El nombre de columna ''{0}'' aparece m\u00e1s de una vez en la sentencia de creaci\u00f3n del \u00edndice.
+42X68=No se ha encontrado ning\u00fan campo ''{0}'' que pertenezca a la clase ''{1}''.  Es posible que el campo exista pero que no sea p\u00fablico, o que la clase no exista o no sea p\u00fablica.
+42X69=No est\u00e1 permitido hacer referencia a un campo (''{0}'') utilizando una expresi\u00f3n de referencia del tipo primitivo Java ''{1}''.
+42X72=No se ha encontrado ning\u00fan campo est\u00e1tico ''{0}'' que pertenezca a la clase ''{1}''.  Es posible que el campo exista pero que no sea p\u00fablico y/o est\u00e1tico, o que la clase no exista o no sea p\u00fablica.
+42X73=Resoluci\u00f3n ambigua del m\u00e9todo para la firma {0}.{1}({2}). (No hay un m\u00e9todo espec\u00edfico que sea m\u00e1s importante).
+42X74=Sintaxis de la sentencia CALL no v\u00e1lida.
+42X75=No se ha encontrado ning\u00fan constructor con la firma {0}({1}).  Es posible que los tipos de par\u00e1metro no sean convertibles por la invocaci\u00f3n del m\u00e9todo.
+42X76=Al menos una columna, ''{0}'', en la clave primaria que se va a a\u00f1adir acepta nulos. Todas las columnas de una clave primaria no deben aceptar nulos.
+42X77=La posici\u00f3n de la columna ''{0}'' est\u00e1 fuera del rango de la expresi\u00f3n de consulta.
+42X78=La columna ''{0}'' no est\u00e1 en el resultado de la expresi\u00f3n de consulta.
+42X79=El nombre de columna ''{0}'' aparece m\u00e1s de una vez en el resultad de la expresi\u00f3n de consulta.
+42877=No se permite un nombre de columna calificado ''{0}'' en la cl\u00e1usula ORDER BY.
+42X80=La cl\u00e1usula VALUES debe contener al menos 1 elemento y todos los elementos no deben estar vac\u00edos.
+42X82=La cl\u00e1usula USING ha devuelto m\u00e1s de una fila y s\u00f3lo est\u00e1n permitidos ResultSets de una sola fila.
+42X83=Las restricciones sobre la columna ''{0}'' requieren que acepte nulos y que no los acepte.
+42X84=Se ha creado el \u00edndice ''{0}'' para imponer la restricci\u00f3n ''{1}''.  S\u00f3lo puede eliminarse eliminando la restricci\u00f3n.
+42X85=Es necesario que la restricci\u00f3n ''{0}'' est\u00e9 en el mismo esquema que la tabla '{1}''.
+42X86=No se ha podido realizar ALTER en la tabla. No hay restricci\u00f3n ''{0}'' sobre la tabla ''{1}''.
+42X87=Al menos una expresi\u00f3n de resultado (then o else) de la expresi\u00f3n ''{0}'' no debe ser un ''?''.
+42X88=Un Conditional tiene un operando no booleano. El operando de Conditional debe dar como resultado TRUE, FALSE o UNKNOWN.
+42X89=Los tipos ''{0}'' y ''{1}'' no son tipos compatibles. (Ninguno de los tipos es asignable al otro).
+42X90=Se ha especificado m\u00e1s de 1 restricci\u00f3n de clave primaria para la tabla ''{0}''.
+42X91=El nombre de restricci\u00f3n ''{0}'' aparece m\u00e1s de una vez en la sentencia de creaci\u00f3n de la tabla.
+42X92=El nombre de columna ''{0}'' aparece m\u00e1s de una vez en una lista de columnas de restricci\u00f3n.
+42X93=La tabla ''{0}'' contiene una definici\u00f3n de restricci\u00f3n con la columna ''{1}'' que no est\u00e1 en la tabla.
+42Z93=Las restricciones ''{0}'' y ''{1}'' tiene el mismo conjunto de columnas y no est\u00e1 permitido.
+42Z96=No se da soporte a la lectura-grabaci\u00f3n de VTI en los entornos JDK 1.1/JDBC 1.2: ''{0}''
+42Z9B=La interfaz de tabla virtual externa no da soporte a columnas blob o clob. ''{0}'' columna ''{1}''.
+42Z9D=''{0}'' sentencias no se permiten en ''{1}'' desencadenantes.
+42Z9E=La restricci\u00f3n ''{0}'' no es una restricci\u00f3n {1}.
+42X94={0} ''{1}'' no existe.
+42X96=La classpath de la base de datos contiene un archivo jar desconocido ''{0}''.
+42X98=No est\u00e1n permitidos par\u00e1metros en una definici\u00f3n VIEW.
+42Y00=La clase ''{0}'' no implementa org.apache.derby.iapi.db.AggregateDefinition y por tanto no puede utilizarse como una expresi\u00f3n de agregado.
+42Y01=La restricci\u00f3n ''{0}'' no es v\u00e1lida.
+42Y03=''{0}'' no se reconoce como una funci\u00f3n o procedimiento.
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=No se puede crear un procedimiento o funci\u00f3n con EXTERNAL NAME ''{0}'' porque no es una lista separada por puntos. El formato esperado es <v\u00eda de acceso java completa>.<nombre de m\u00e9todo> .
+
+42Y05=No existe una clave for\u00e1nea llamada ''{0}''.
+42Y07=El esquema ''{0}'' no existe
+42Y08=Las restricciones de clave for\u00e1nea no est\u00e1n permitidas en tablas del sistema.
+42Y09=Los m\u00e9todos void s\u00f3lo est\u00e1n permitidos dentro de una sentencia CALL.
+42Y10=Un constructor de tabla que no est\u00e1 en una sentencia INSERT tiene todos los par\u00e1metros ? en una de sus columnas. En cada columna, al menos una de las filas debe tener un no-par\u00e1metro.
+42Y11=Se necesita una especificaci\u00f3n de uni\u00f3n con la cl\u00e1usula ''{0}''.
+42Y12=La cl\u00e1usula ON de JOIN es una expresi\u00f3n ''{0}''. Debe ser una expresi\u00f3n BOOLEAN.
+42Y13=El nombre de columna ''{0}'' aparece m\u00e1s de una vez en la sentencia de creaci\u00f3n de la vista.
+42Z97=Renombrar la columna ''{0}'' romper\u00e1 la restricci\u00f3n de comprobaci\u00f3n ''{1}''.
+42Z99=El literal String o Hex no puede superar 64K.
+42Y16=No se ha encontrado ning\u00fan m\u00e9todo est\u00e1tico p\u00fablico ''{0}'' en la clase ''{1}''. Es posible que el m\u00e9todo exista pero que no sea p\u00fablico o est\u00e1tico.
+42846=No se pueden convertir los tipos ''{0}'' en ''{1}''.
+42Y19=''{0}'' aparece varias veces en la lista GROUP BY. Las columnas de la lista GROUP BY no deben ser ambiguas.
+42Y22=El agregado {0} no puede operar sobre el tipo {1}.
+42Y23=Se ha devuelto una informaci\u00f3n de tipo JDBC incorrecta para la columna {0}.
+42Y24=La vista ''{0}'' no es actualizable.(Actualmente las vistas no son actualizables).
+42Y25=''{0}'' es una tabla del sistema. Los usuarios no tienen permitido modificar el contenido de esta tabla.
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=No est\u00e1n permitidos par\u00e1metros en la acci\u00f3n del desencadenante.
+42Y29=La lista SELECT de una consulta no agrupada contiene al menos 1 expresi\u00f3n no v\u00e1lida. Cuando la lista SELECT contiene al menos 1 agregado entonces todas las entradas deben ser expresiones de agregado v\u00e1lidas.
+42Y30=La lista SELECT de una consulta agrupada contiene al menos 1 expresi\u00f3n no v\u00e1lida. Para SELECT con GROUP BY, la lista SELECT s\u00f3lo puede contener columnas de agrupaci\u00f3n y expresiones de agregado v\u00e1lidas.
+42Y32=La clase Aggregator ''{0}'' del agregado ''{1}'' sobre el tipo {2} no implementa com.ibm.db2j.aggregates.Aggregator. 
+42Y33=El agregado {0} contiene uno o m\u00e1s agregados.
+42Y34=El nombre de columna ''{0}'' coincide con m\u00e1s de una columna de resultado de la tabla ''{1}''.
+42Y35=La referencia de columna ''{0}'' no es v\u00e1lida. Cuando la lista SELECT contiene al menos 1 agregado entonces todas las entradas deben ser expresiones de agregado v\u00e1lidas.
+42Y36=La referencia de columna ''{0}'' no es v\u00e1lida. Para SELECT con GROUP BY, la lista SELECT s\u00f3lo puede contener columnas de agrupaci\u00f3n y expresiones de agregado v\u00e1lidas.
+42Y37=''{0}'' es un primitivo Java y no puede utilizarse con este operador.
+42Y38=insertMode = replace no est\u00e1 permitido en una inserci\u00f3n donde se hace referencia a la tabla destino, ''{0}'', en SELECT.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' puede no aparecer en una definici\u00f3n CHECK CONSTRAINT porque puede devolver resultados no determinantes.
+42Y40=''{0}'' aparece varias veces en la lista de columnas UPDATE OF para el desencadenante ''{1}''.
+42Y41=''{0}'' no puede invocarse directamente mediante EXECUTE STATEMENT porque es parte de un desencadenante.
+42Y42=La escala ''{1}'' no es una escala v\u00e1lida para {0}.
+42Y43=La escala ''{0}'' no es una escala v\u00e1lida con precisi\u00f3n de ''{1}''.
+42Y44=Clave no v\u00e1lida, ''{0}'', especificada en lista Properties en lista FROM. Las claves sensibles a may\u00fasculas y min\u00fasculas soportadas actualmente son ''{1}''.
+42Y45=No se puede encontrar la VTI ''{0}'' porque es una VTI de desencadenante especial y esta sentencia no forma parte de una acci\u00f3n de desencadenante o cl\u00e1usula WHEN.
+42Y46=Lista Properties no v\u00e1lida en lista FROM.  No hay \u00edndice ''{0}'' sobre la tabla ''{1}''.
+42Y48=Lista Properties no v\u00e1lida en lista FROM.  No hay restricci\u00f3n con nombre ''{0}'' sobre la tabla ''{1}'' o la restricci\u00f3n no tiene un \u00edndice de respaldo.
+42Y49=Se han especificado varios valores para la clave de propiedad ''{0}''. 
+42Y50=La lista Properties de la tabla ''{0}'' puede contener valores de \u00edndice o de restricci\u00f3n pero no ambos.
+42Y55=No se puede realizar ''{0}'' sobre ''{1}'' porque no existe.
+42Y56=joinStrategy no v\u00e1lida, ''{0}'', especificada en lista Properties de la tabla ''{1}''. Los valores soportados actualmente para joinStrategy son ''hash'', ''nestedloop''.
+42Y58=Se ha producido NumberFormatException al convertir el valor ''{0}'' para el modificador del optimizador ''{1}''.
+42Y59=Valor no v\u00e1lido, ''{0}'', especificado para el modificador de hashInitialCapacity. El valor debe ser > 0.
+42Y60=Valor no v\u00e1lido, ''{0}'', especificado para el modificador de hashLoadFactor. El valor debe ser > 0,0 y <= 1,0.
+42Y61=Valor no v\u00e1lido, ''{0}'', especificado para el modificador de hashMaxCapacity. El valor debe ser > 0.
+42Y62=''{0}'' no est\u00e1 permitido sobre ''{1}'' porque es una vista.
+42Y63=La uni\u00f3n hash requiere un predicado equijoin optimizable sobre una columna del \u00edndice o heap seleccionado.  No existe un predicado equijoin optimizable sobre ninguna columna de la tabla o \u00edndice ''{0}''. Utilice el modificador del optimizador ''index'' para especificar dicho \u00edndice o heap sobre la tabla ''{1}''.
+42Y64=El valor de bulkFetch de ''{0}'' no es v\u00e1lido: el valor m\u00ednimo de bulkFetch es 1.
+42Y65=bulkFetch no se permite en uniones ''{0}''.
+42Y66=bulkFetch no se permite en cursores actualizables.
+42Y67=El esquema ''{0}'' no se puede eliminar.
+42Y69=No se ha encontrado un plan de ejecuci\u00f3n v\u00e1lido para esta sentencia. Puede deberse a una de estas dos causas: ha especificado una estrategia de uni\u00f3n hash cuando la uni\u00f3n hash no est\u00e1 permitida (equijoin no optimizable) o est\u00e1 intentando unir dos ExternalVirtualTables, que se referencian entre ellas, y por tanto no se puede evaluar la sentencia.
+42Y70=El orden de uni\u00f3n especificado por el usuario no es un orden de uni\u00f3n permitido. Puede ocurrir porque se est\u00e1 pasando como par\u00e1metro una columna de uni\u00f3n desde una tabla interior a una tabla virtual externa.
+42Y71=La funci\u00f3n del sistema o procedimiento ''{0}'' no se puede eliminar.
+42Y82=La sentencia preparada almacenada generada por el sistema ''{0}'' no se puede eliminar mediante DROP STATEMENT.  Es parte de un desencadenante.
+42Y83=No se permite un nulo sin tipo como argumento del agregado {0}.  Convierta el nulo a un tipo adecuado.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' no puede aparecer en una definici\u00f3n DEFAULT.
+42Y85=La palabra clave DEFAULT s\u00f3lo est\u00e1 permitida en una cl\u00e1usula VALUES cuando la cl\u00e1usula VALUES aparece dentro de una sentencia INSERT.
+42Y90=No se permite FOR UPDATE en este tipo de sentencia.
+42Y91=La cl\u00e1usula USING no se permite en EXECUTE STATEMENT de una acci\u00f3n de desencadenante.
+42Y92=Los desencadenantes {0} s\u00f3lo pueden hacer referencia a variables/tablas de transici\u00f3n {1}.
+42Y93=Cl\u00e1usula REFERENCING no permitida: s\u00f3lo se permite un nombre para cada tipo de variable/tabla de transici\u00f3n.
+42Y94=Un AND u OR tienen un operando no booleano. Los operandos de AND y OR deben dar como resultado TRUE, FALSE o UNKNOWN.
+42Y95=El operador ''{0}'' con un tipo de operando izquierdo de ''{1}'' y un tipo de operando derecho de ''{2}'' no est\u00e1 soportado.
+42Y96.U=DESCONOCIDO
+42Y97=Car\u00e1cter de escape no v\u00e1lido en la l\u00ednea ''{0}'', columna ''{1}''.
+42Y98.U=Se ha encontrado "{0}" en la l\u00ednea {1}, columna {2}
+42Y99.U=Error l\u00e9xico en la l\u00ednea {0}, columna {1}.  Encontrado: {2}
+42Z00.U=Llamada de m\u00e9todo Java o referencia de campo
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=SIN TIPO
+42Z02=En este momento no se soportan agregados DISTINCT m\u00faltiples.
+42Z07=No se permiten agregados en la cl\u00e1usula ON.
+42Z08=La sustituci\u00f3n mediante inserci\u00f3n general no est\u00e1 permitida en ''{0}'' porque tiene un desencadenante habilitado ({1}).
+42Z09.U=COLUMN DEFAULT para
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=corriente
+
+# alter table modify column error messages.
+#####
+42Z15=Se ha especificado un tipo no v\u00e1lido para la columna ''{0}''. No se puede cambiar el tipo de una columna.
+42Z16=S\u00f3lo puede alterarse la longitud de las columnas VARCHAR. 
+42Z17=Se ha especificado una longitud no v\u00e1lida para la columna ''{0}''. La longitud debe ser mayor que la longitud de columna actual.
+42Z18=La columna ''{0}'' forma parte de una restricci\u00f3n de clave for\u00e1nea ''{1}''. Para alterar la longitud de esta columna, primero debe eliminar la restricci\u00f3n, realizar ALTER TABLE y despu\u00e9s volver a crear la restricci\u00f3n.
+42Z19=La columna ''{0}'' est\u00e1 siendo referenciada por al menos una restricci\u00f3n de clave for\u00e1nea ''{1}''. Para alterar la longitud de esta columna, debe eliminar las restricciones de referencia, realizar ALTER TABLE y despu\u00e9s volver a crear las restricciones.
+42Z20=La columna ''{0}'' no puede aceptar nulos. Forma parte de una clave primaria, que no puede tener columnas con valores nulos.
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE ''{0}'' especific\u00f3 atributos para la columna ''{1}'' que no son compatibles con la columna existente.
+42Z21=Se ha especificado un incremento no v\u00e1lido para la identidad de la columna ''{0}''. El incremento no debe ser cero.
+42Z22=Se ha especificado un tipo no v\u00e1lido para la columna de identidad ''{0}''. Los \u00fanicos tipos v\u00e1lidos para columnas de identidad son BIGINT, INT y SMALLINT.
+42Z23=Se ha intentado modificar una columna de identidad ''{0}''. 
+42Z24=Se ha producido un desbordamiento en el valor de identidad de la columna ''{1}'' de la tabla ''{0}''.
+42Z25=ERROR INTERNO del contador de identidad: se ha solicitado actualizar sin argumentos con el valor actual = NULL.
+42Z26=Una columna, ''{0}'', con un valor por omisi\u00f3n de identidad no puede aceptar nulos.
+42Z27=Una columna que acepta nulos, ''{0}'', no puede modificarse para que tenga un valor por omisi\u00f3n de identidad.
+
+#####
+# end of identity error messages.
+
+42Z30.U=tiempo transcurrido en este ResultSet =
+42Z31.U=tiempo transcurrido en este ResultSet y posteriormente =
+42Z32.U=tiempo total de ruptura: 
+42Z33.U=tiempo del constructor (milisegundos) =
+42Z34.U=tiempo de apertura (milisegundos) =
+42Z35.U=tiempo de siguiente (milisegundos) =
+42Z36.U=tiempo de cierre (milisegundos) =
+42Z37.U=Ninguno
+42Z38.U=Informaci\u00f3n de posicionamiento no disponible porque este ResultSet nunca se ha abierto.
+42Z39.U=Excepci\u00f3n inesperada {0} obteniendo posicionador.
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U={0} en primera(s) {1} columna(s).
+42Z41.U=Sem\u00e1ntica de nulos ordenados en las siguientes columnas: 
+42Z42.U=ID de columna
+42Z43.U=Operador
+42Z44.U=Nulos ordenados
+42Z45.U=Valor devuelto desconocido
+42Z46.U=Invalidar resultado de comparaci\u00f3n
+42Z47.U=Obtener un plan de consulta como String no est\u00e1 soportado actualmente para {0}
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=ID de columna[{0}][{1}]
+
+# matches DB2
+42939=No se puede crear un objeto con el nombre de esquema ''{0}''.
+
+
+
+
+42Z50=ERROR INTERNO: imposible generar c\u00f3digo para {0}.
+42Z53=ERROR INTERNO: se desconoce el tipo de activaci\u00f3n a generar para la elecci\u00f3n del nodo {0}.
+42Z54.U=Esta excepci\u00f3n detiene la sentencia despu\u00e9s de analizar; no se necesitan m\u00e1s procesos.
+42Z55.U=Ejecuci\u00f3n detenida despu\u00e9s de analizar mediante el distintivo de depuraci\u00f3n StopAfterParsing.
+42Z56.U=Ejecuci\u00f3n detenida despu\u00e9s de enlazar mediante el distintivo de depuraci\u00f3n StopAfterBinding.
+42Z57.U=Ejecuci\u00f3n detenida despu\u00e9s de optimizar mediante el distintivo de depuraci\u00f3n StopAfterOptimizing.
+42Z58.U=Ejecuci\u00f3n detenida despu\u00e9s de generar mediante el distintivo de depuraci\u00f3n StopAfterGenerating.
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=serializable
+42Z81.U=lectura comprometida
+42Z82.U=exclusivo
+42Z83.U=compartici\u00f3n instant\u00e1nea
+42Z84.U=compartir
+42Z85.U=tabla
+42Z86.U=fila
+42Z87.U=compartir tabla
+42Z88.U=compartir fila
+
+# More generic language stuff
+42Z90=La clase ''{0}'' no devuelve un ResultSet actualizable.
+42Z91=subconsulta
+42Z92=lectura repetible
+42Z9A=lectura no comprometida
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=La funci\u00f3n solicitada no puede hacer referencia a tablas en el esquema SESSION.
+# Declare global temporary table language stuff. Matches DB2
+428EK=El calificador para un nombre de tabla temporal global declarada debe ser SESSION.
+42995=La funci\u00f3n solicitada no se aplica a tablas temporales globales.
+42962=En las definiciones de procedimientos o tablas temporales globales declaradas no se permite el par\u00e1metro ''{0}'' o columnas del tipo long. 
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=Conectado a
+43X01.U=Inicio de subconsulta n\u00famero
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=Cualquier ResultSet
+43X03.U=N\u00famero de aperturas
+43X04.U=Filas vistas
+43X05.U=Juego de resultados origen
+43X06.U=Fin de subconsulta n\u00famero
+43X07.U=n\u00famero de filas estimado por el optimizador
+43X08.U=coste estimado por el optimizador
+43X09.U=segundos
+43X10.U=Total
+43X11.U=Nodo
+43X12.U={0} no se ha implementado actualmente para {1}
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=Suprimir ResultSet mediante
+43X14.U=bloqueo de tabla
+43X15.U=bloqueo de fila
+43X16.U=diferido
+43X17.U=Filas suprimidas
+43X18.U=\u00cdndices actualizados
+43X19.U=Suprimir
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=ResultSet de agregado escalar distinct
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=Filas introducidas
+43X22.U=Agregado escalar distinct
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U=ResultSet de exploraci\u00f3n distinct para {0} mediante {1} {2}
+43X24.U=restricci\u00f3n
+43X25.U=\u00edndice
+43X26.U=ResultSet de exploraci\u00f3n distinct para {0}
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=a nivel de aislamiento {0} mediante bloqueo {1}
+43X28.U=informaci\u00f3n de exploraci\u00f3n
+43X29.U=Columna distinct es el n\u00famero de columna
+43X30.U=Columnas distinct son los n\u00fameros de columna
+43X31.U=Tama\u00f1o de tabla hash
+43X32.U=Filas filtradas
+43X33.U=tiempo de siguiente en milisegundos/fila
+43X34.U=posici\u00f3n de inicio
+43X35.U=posici\u00f3n de parada
+43X36.U=cualificadores de exploraci\u00f3n
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=cualificadores next
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=sobre {0} mediante {1}
+43X39.U=Exploraci\u00f3n distinct
+43X40.U=Informaci\u00f3n de ordenaci\u00f3n
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=ResultSet de agregado agrupado
+43X42.U=Tiene agregado distinct
+43X43.U=Clasificado
+43X44.U=Agregado agrupado
+43X45.U=Uni\u00f3n EXISTS hash
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=ResultSet de uni\u00f3n EXISTS hash
+43X47.U=Uni\u00f3n hash
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=ResultSet de uni\u00f3n hash
+43X49.U=Uni\u00f3n externa izquierda hash
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=ResultSet de uni\u00f3n externa izquierda hash
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U=ResultSet de exploraci\u00f3n hash para {0} mediante {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U=ResultSet de exploraci\u00f3n hash para {0}
+43X53.U=Clave hash es el n\u00famero de columna
+43X54.U=Claves hash son los n\u00famero de columna
+43X55.U=Exploraci\u00f3n hash
+43X56.U=Subconsultas conectadas
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=ResultSet de tabla hash
+43X58.U=Tabla hash
+43X59.U=todo
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U=Fila \u00edndice para ResultSet de fila base para {0}
+43X61.U=Columnas accedidas desde heap
+#NOTE: {0} is a table name
+43X62.U=para {0}
+43X63.U=Fila \u00edndice para fila base
+43X64.U=modalidad de inserci\u00f3n: inserci\u00f3n general
+43X65.U=modalidad de inserci\u00f3n: normal (imposible realizar inserci\u00f3n general debido a que la tabla no est\u00e1 vac\u00eda)
+43X66.U=modalidad de inserci\u00f3n: normal
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=Insertar ResultSet mediante
+43X68.U=Filas insertadas
+43X69.U=Insertar
+43X70.U=Unir
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=ResultSet de exploraci\u00f3n en \u00edndice de \u00faltima clave para {0} mediante \u00edndice {1}
+43X72.U=a nivel de aislamiento {0} mediante bloqueo {1} elegido por el optimizador
+43X73.U=Exploraci\u00f3n de tabla
+43X74.U=Exploraci\u00f3n de \u00edndice
+#NOTE: {0} is a table name or class name
+43X75.U=sobre {0}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=ResultSet materializado
+43X77.U=tiempo de creaci\u00f3n de conglomerado temporal (milisegundos)
+43X78.U=tiempo de extracci\u00f3n de conglomerado temporal (milisegundos)
+43X79.U=Filas vistas desde la izquierda
+43X80.U=Filas vistas desde la derecha
+43X81.U=Filas devueltas
+43X82.U=Juego de resultados izquierdo
+43X83.U=Juego de resultados derecho
+43X84.U=Uni\u00f3n EXISTS de bucle anidado
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=ResultSet de uni\u00f3n EXISTS de bucle anidado
+43X86.U=Uni\u00f3n de bucle anidado
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=ResultSet de uni\u00f3n de bucle anidado
+43X88.U=Filas derechas devueltas vac\u00edas
+43X89.U=Uni\u00f3n externa izquierda de bucle anidado
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=ResultSet de uni\u00f3n externa izquierda de bucle anidado
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=Normalizar ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=ResultSet una vez
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=ResultSet de proyecci\u00f3n-restricci\u00f3n
+43X94.U=restricci\u00f3n
+43X95.U=proyecci\u00f3n
+43X96.U=tiempo de restricci\u00f3n (milisegundos)
+43X97.U=tiempo de proyecci\u00f3n (milisegundos)
+43X98.U=Proyecto restricci\u00f3n
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=ResultSet de fila
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=ResultSet de agregado escalar
+43Y01.U=Optimizaci\u00f3n de clave de \u00edndice
+43Y02.U=Agregado escalar
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=ResultSet insensible a desplazamiento
+43Y04.U=N\u00famero de lecturas de la tabla hash
+43Y05.U=N\u00famero de grabaciones en la tabla hash
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=Ordenar ResultSet
+43Y07.U=Eliminar duplicados
+43Y08.U=Ordenar
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U=ResultSet de exploraci\u00f3n index para {0} mediante {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U=ResultSet de exploraci\u00f3n table para {0}
+43Y11.U=Bloqueo real utilizado: nivel de bloqueo de tabla.
+43Y12.U=Tama\u00f1o de extracci\u00f3n
+43Y13.U=cualificadores
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=ResultSet de uni\u00f3n
+43Y15.U=Uni\u00f3n
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=ResultSet de actualizaci\u00f3n mediante bloqueo {0}
+43Y17.U=filas actualizadas
+43Y18.U=Actualizar
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U=ResultSet de VTI para {0}
+43Y20.U=VTI
+43Y21.U=Subconsultas materializadas
+43Y22.U=Nombre de sentencia
+43Y23.U=Texto de sentencia
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=Tiempo de an\u00e1lisis
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=Tiempo de enlace
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=Tiempo de optimizaci\u00f3n
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=Tiempo de generaci\u00f3n
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=Tiempo de compilaci\u00f3n
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=Tiempo de ejecuci\u00f3n
+43Y30.U=Indicaci\u00f3n de la hora de inicio de compilaci\u00f3n
+43Y31.U=Indicaci\u00f3n de la hora de fin de compilaci\u00f3n
+43Y32.U=Indicaci\u00f3n de la hora de inicio de ejecuci\u00f3n
+43Y33.U=Indicaci\u00f3n de la hora de fin de ejecuci\u00f3n
+43Y44.U=Texto del plan de ejecuci\u00f3n de sentencia
+43Y45.U=Tiempo de ejecuci\u00f3n 100%, {0} segundos
+43Y46.U=Insertar ResultSet de VTI
+43Y47.U=Suprimir ResultSet de VTI
+43Y49.U=Insertar VTI
+43Y50.U=Suprimir VTI
+43Y51.U=Suprimr Cascade ResultSet
+43Y52.U=Suprimir Cascade ResultSet using
+43Y53.U=Acciones de referencia en tablas dependientes
+43Y54.U=Iniciar acci\u00f3n de referencia en n\u00famero de tabla dependiente
+43Y55.U=Finalizar acci\u00f3n de referencia en n\u00famero de tabla dependiente
+
+54004=La sentencia SELECT tiene demasiados elementos en GROUP BY, ORDER BY o lista de selecci\u00f3n.
+54008=La sentencia CREATE INDEX especifica demasiadas columnas (16 es el n\u00famero m\u00e1ximo).
+54023=Se ha excedido el l\u00edmite del n\u00famero de par\u00e1metros para un procedimiento. El l\u00edmite es {0} y el n\u00famero de par\u00e1metros del procedimiento {1} es {2}.
+54038=Se ha excedido la profundidad m\u00e1xima de desencadenantes anidados.
+
+## all other org.apache.derby.catalog.types
+44X00.U=Nombre de tipo SQL
+44X05.U=error siguiente
+
+X0X02.S=La tabla ''{0}'' no puede bloquearse en modalidad ''{1}''.
+X0X03.S=Estado de transacci\u00f3n no v\u00e1lido - el cursor retenido necesita el mismo nivel de aislamiento
+X0X05.S=La tabla ''{0}'' no existe.
+X0X0E.S=La posici\u00f3n de columna ''{0}'' que aparece en la matriz de selecci\u00f3n de columnas autogeneradas no se encontr\u00f3 en la tabla de inserci\u00f3n.
+X0X0F.S=El nombre de columna ''{0}'' que aparece en la matriz de selecci\u00f3n de columnas autogeneradas no se encontr\u00f3 en la tabla de inserci\u00f3n.
+X0X07.S=No se puede eliminar el archivo jar ''{0}'' porque est\u00e1 en db2j.database.classpath ''{0}''.
+X0X10.S=La cl\u00e1usula USING ha devuelto m\u00e1s de una fila y s\u00f3lo est\u00e1n permitidos ResultSets de una sola fila.
+X0X11.S=La cl\u00e1usula USING no ha devuelto ning\u00fan resultado, no se pueden establecer par\u00e1metros.
+X0X13.S=El archivo jar ''{0}'' no existe en el esquema ''{1}''.
+X0X57.S=Se ha intentado situar un valor Java de tipo ''{0}'' en un valor SQL, pero no existe el tipo SQL correspondiente.  El valor Java es probablemente el resultado de una llamada de m\u00e9todo o acceso de campo.
+X0X60.S=Ya existe un cursor con el nombre ''{0}''.
+X0X61.S=Los valores de la columna ''{4}'' del \u00edndice ''{0}'' y tabla ''{1}.{2}'' no coinciden en la ubicaci\u00f3n de la fila {3}.  El valor del \u00edndice es ''{5}'', mientras que el valor de la tabla base es ''{6}''.  La clave de \u00edndice completa, incluida la ubicaci\u00f3n de la fila, es ''{7}''.  La acci\u00f3n correctiva sugerida es volver a crear el \u00edndice.
+X0X62.S=Se ha encontrado una inconsistencia entre la tabla ''{0}'' y el \u00edndice ''{1}''.  Error al intentar recuperar la ubicaci\u00f3n de la fila ''{2}'' de la tabla.  La clave de \u00edndice completa, incluida la ubicaci\u00f3n de la fila, es ''{3}''. La acci\u00f3n correctiva sugerida es volver a crear el \u00edndice.
+X0X63.S=Se ha obtenido una excepci\u00f3n de E/S ''{0}''.
+X0X67.S=Las columnas de tipo ''{0}'' no se pueden utilizar en CREATE INDEX, ORDER BY, GROUP BY, UNION o DISTINCT, porque no se soportan las comparaciones de ese tipo.
+X0X81.S={0} ''{1}'' no existe.
+X0X85.S=No se ha creado el \u00edndice ''{0}'' porque ''{1}'' no es un tipo de \u00edndice v\u00e1lido.
+X0X86.S=0 es un valor de par\u00e1metro no v\u00e1lido para ResultSet.absolute(int row).
+X0X87.S=No se puede llamar a ResultSet.relative(int row) si el cursor no est\u00e1 situado sobre una fila.
+X0X95.S=No se puede realizar la operaci\u00f3n ''{0}'' sobre el objeto ''{1}'' porque existe un ResultSet abierto que depende de ese objeto.
+X0X99.S=El \u00edndice ''{0}'' no existe.
+X0Y16.S=''{0}'' no es una vista.  Si es una tabla utilice en su lugar DROP TABLE.
+X0Y23.S=No se puede realizar la operaci\u00f3n ''{0}'' sobre el objeto ''{1}'' porque VIEW ''{2}'' depende de ese objeto.
+X0Y24.S=No se puede realizar la operaci\u00f3n ''{0}'' sobre el objeto ''{1}'' porque STATEMENT ''{2}'' depende de ese objeto.
+X0Y25.S=No se puede realizar la operaci\u00f3n ''{0}'' sobre el objeto ''{1}'' porque {2} ''{3}'' depende de ese objeto.
+X0Y26.S=Es necesario que el \u00edndice ''{0}'' est\u00e9 en el mismo esquema que la tabla ''{1}''.
+X0Y28.S=No puede crearse el \u00edndice ''{0}'' en la tabla del sistema ''{1}''.  Los usuarios no pueden crear \u00edndices en tablas del sistema.
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' ya existe en {2} ''{3}''.
+X0Y38.S=No se puede crear el \u00edndice ''{0}'' porque la tabla ''{1}'' no existe.
+X0Y41.S=La restricci\u00f3n ''{0}'' no es v\u00e1lida: la tabla referenciada {1} no tiene clave primaria.  A\u00f1ada una clave primaria a {1} o especifique expl\u00edcitamente las columnas de una restricci\u00f3n \u00fanica a las que hace referencia esta clave for\u00e1nea.
+X0Y42.S=La restricci\u00f3n ''{0}'' no es v\u00e1lida: los tipos de las columnas de la clave for\u00e1nea no coinciden con los tipos de las columnas referenciadas.
+X0Y43.S=La restricci\u00f3n ''{0}'' no es v\u00e1lida: el n\u00famero de columnas de {0} ({1}) no coincide con el n\u00famero de columnas de la clave referenciada ({2}).
+X0Y44.S=La restricci\u00f3n ''{0}'' no es v\u00e1lida: no existe una restricci\u00f3n de clave \u00fanica o primaria sobre la tabla ''{1}'' que coincida con el n\u00famero y tipos de las columnas de la clave primaria.
+X0Y45.S=La restricci\u00f3n de clave for\u00e1nea ''{0}'' no se puede a\u00f1adir o habilitar sobre la tabla {1} porque 1 o m\u00e1s claves for\u00e1neas no tienen claves referenciadas coincidentes.
+X0Y46.S=La restricci\u00f3n ''{0}'' no es v\u00e1lida: la tabla referenciada {1} no existe.
+X0Y54.S=El esquema ''{0}'' no se puede eliminar porque no est\u00e1 vac\u00edo.
+X0Y55.S=El n\u00famero de filas de la tabla base no coincide con el n\u00famero de filas de al menos 1 de los \u00edndices de la tabla. El \u00edndice ''{0}'' de la tabla ''{1}.{2}'' tiene {3} filas, pero la tabla base tiene {4} filas.  La acci\u00f3n correctiva sugerida es volver a crear el \u00edndice.
+X0Y56.S=''{0}'' no se permite en la tabla del sistema ''{1}''.
+X0Y57.S=No se puede a\u00f1adir una columna que no acepta nulos a la tabla ''{0}'' porque la tabla contiene al menos 1 fila.  Las columnas que no aceptan nulos s\u00f3lo pueden a\u00f1adirse en tablas vac\u00edas.
+X0Y58.S=Se ha intentado a\u00f1adir una restricci\u00f3n de clave primaria en la tabla ''{0}'' y no se ha podido porque la tabla ya tiene una restricci\u00f3n de ese tipo.  Una tabla puede tener una sola restricci\u00f3n de clave primaria.
+X0Y59.S=Se ha intentado a\u00f1adir o habilitar la(s) restricci\u00f3n(es) sobre la tabla ''{1}'' y no se ha podido porque la tabla contiene {2} fila(s) que viola(n) la(s) restricci\u00f3n(es) de comprobaci\u00f3n siguiente(s): {0}.
+X0Y63.S=Error del mandato sobre la tabla ''{0}''. Se han encontrado datos nulos en la(s) columna(s) de clave primaria o restricci\u00f3n/\u00edndice \u00fanico. Todas las columnas de una clave primaria o de \u00edndice \u00fanico no deben ser nulas.
+X0Y66.S=No se puede emitir comprometer en una conexi\u00f3n anidada si existe una operaci\u00f3n pendiente en la conexi\u00f3n padre.
+X0Y67.S=No se puede emitir retrotraer en una conexi\u00f3n anidada si existe una operaci\u00f3n pendiente en la conexi\u00f3n padre.
+X0Y68.S={0} ''{1}'' ya existe.
+X0Y69.S={1} no se permite porque el desencadenante {0} est\u00e1 activo en {2}.
+X0Y70.S=No se permite INSERT, UPDATE y DELETE sobre la tabla {1} porque el desencadenante {0} est\u00e1 activo.
+X0Y71.S=No se permite la manipulaci\u00f3n de transacciones como SET ISOLATION porque el desencadenante {0} est\u00e1 activo.
+X0Y72.S=La sustituci\u00f3n mediante inserci\u00f3n general no est\u00e1 permitida en ''{0}'' porque tiene un desencadenante habilitado ({1}).
+X0Y77.S=No se puede emitir establecer el nivel de aislamiento de la transacci\u00f3n sobre una transacci\u00f3n global que est\u00e9 en proceso porque podr\u00eda haber comprometido impl\u00edcitamente la transacci\u00f3n global. 
+X0Y78.S=No se puede llamar Statement.executeQuery() con una sentencia que devuelve una cuenta de columnas.
+X0Y79.S=No se puede llamar Statement.executeUpdate() con una sentencia que devuelve un ResultSet.
+X0Y80.S=Error de ALTER tabla ''{0}''. Se han encontrado datos nulos en la columna ''{1}''.
+X0Y83.S=AVISO: al suprimir una fila de la tabla no se ha encontrado la fila de \u00edndice de la fila de la tabla base {0} en el \u00edndice con el id de conglomerado {1}.  Este problema se ha corregido autom\u00e1ticamente como parte de la operaci\u00f3n de supresi\u00f3n.
+XCL01.S=El ResultSet no devuelve filas; operaci\u00f3n {0} no permitida.
+XCL05.S=Activaci\u00f3n cerrada, operaci\u00f3n {0} no permitida.
+XCL07.S=El cursor ''{0}'' est\u00e1 cerrado. Verifique que AutoCommit es OFF.
+XCL08.S=El cursor ''{0}'' no est\u00e1 sobre una fila.
+XCL09.S=Se ha pasado una activaci\u00f3n al m\u00e9todo ''{0}'' que no coincide con el PreparedStatement.
+XCL10.S=Se ha recompilado un PreparedStatement y los par\u00e1metros han cambiado.  Si utiliza JDBC, debe volver a preparar la sentencia.
+XCL12.S=Se ha intentado situar un valor de datos de tipo ''{0}'' en un valor de datos de tipo ''{1}''.
+XCL13.S=La posici\u00f3n del par\u00e1metro ''{0}'' est\u00e1 fuera de rango.  El n\u00famero de par\u00e1metros de esta sentencia preparada es ''{1}''.
+XCL15.S=Se ha producido una ClassCastException al llamar al m\u00e9todo compareTo() sobre un objeto ''{0}''.  El par\u00e1metro para compareTo() es de clase ''{1}''.
+XCL16.S=ResultSet no abierto, operaci\u00f3n ''{0}'' no permitida. Verifique que AutoCommit es OFF.
+XCL17.S=Sentencia no permitida en esta base de datos.
+XCL19.S=Falta una fila en la tabla ''{0}'' de la clave ''{1}''.
+XCL20.S=Los cat\u00e1logos del nivel de versi\u00f3n ''{0}'' no pueden actualizarse al nivel de versi\u00f3n ''{1}''.
+XCL21.S=Est\u00e1 intentando ejecutar una sentencia de definici\u00f3n de datos (CREATE, DROP o ALTER) mientras prepara una sentencia diferente. No est\u00e1 permitido. Puede suceder si ejecuta una sentencia de definici\u00f3n de datos desde un inicializador est\u00e1tico de una clase Java que se est\u00e1 utilizando desde una sentencia SQL.
+XCL22.S=No es posible registrar el par\u00e1metro {0} como un par\u00e1metro OUT puesto que es un par\u00e1metro IN.
+XCL23.S=El n\u00famero de tipo SQL ''{0}'' no es un tipo soportado por registerOutParameter().
+XCL24.S=El par\u00e1metro {0} parece ser un par\u00e1metro de salida, pero no ha sido designado de esa forma por registerOutParameter().  Si no es un par\u00e1metro de salida, entonces debe establecerse como del tipo {1}.
+XCL25.S=El par\u00e1metro {0} no puede registrarse como del tipo {1} porque se correlaciona con el tipo {2} y son incompatibles.
+XCL26.S=El par\u00e1metro {0} no es un par\u00e1metro de salida.
+XCL27.S=No se puede establecer devolver par\u00e1metros de salida.
+XCL30.S=Se ha generado una excepci\u00f3n de E/S al leer ''{0}'' de InputStream.
+XCL31.S=Sentencia cerrada.
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=No se puede definir la tabla como dependiente de la tabla {0} debido a restricciones de normas de supresi\u00f3n. (La relaci\u00f3n es de autoreferencia y ya existe una relaci\u00f3n de autoreferencia con la norma de supresi\u00f3n SET NULL). 
+XCL34.S=No se puede definir la tabla como dependiente de la tabla {0} debido a restricciones de normas de supresi\u00f3n. (La relaci\u00f3n forma un ciclo de dos o m\u00e1s tablas que hacen que la tabla est\u00e9 conectada para suprimirse a s\u00ed misma (todas las otras normas de supresi\u00f3n en el ciclo deber\u00edan ser CASCADE)).  
+XCL35.S=No se puede definir la tabla como dependiente de la tabla {0} debido a restricciones de normas de supresi\u00f3n. (La relaci\u00f3n hace que la tabla sea conectada para sumprimir con la tabla indicada a trav\u00e9s de varias relaciones y la norma de supresi\u00f3n de la relaci\u00f3n existente es  SET NULL.).  
+
+XCL36.S=La norma de supresi\u00f3n de la clave for\u00e1nea debe ser {0}. (La restricci\u00f3n de referencia es de autoreferencia y una restricci\u00f3n de autoreferencia tiene la norma de supresi\u00f3n indicada (NO ACTION, RESTRICT o CASCADE)). 
+XCL37.S=La norma de supresi\u00f3n de la clave for\u00e1nea debe ser {0}. (La restricci\u00f3n de referencia es de autoreferencia y la tabla es dependiente en una relaci\u00f3n con una norma de supresi\u00f3n de CASCADE).
+XCL38.S=La norma de supresi\u00f3n de la clave for\u00e1nea debe ser {0}. (La relaci\u00f3n har\u00eda que la tabla estuviera conectada para supresi\u00f3n a la misma tabla a trav\u00e9s de distintas relaciones y dichas relaciones deben tener la misma norma de supresi\u00f3n (NO ACTION, RESTRICT o CASCADE)). 
+
+XCL39.S=La norma de supresi\u00f3n de la clave for\u00e1nea no puede ser CASCADE. (Existe una restricci\u00f3n de autoreferencia con una norma de supresi\u00f3n de SET NULL, NO ACTION o RESTRICT). 
+XCL40.S=La norma de supresi\u00f3n de la clave for\u00e1nea no puede ser CASCADE. (La relaci\u00f3n formar\u00eda un ciclo que har\u00eda que una tabla pudiera estar conectada para supresi\u00f3n consigo misma. Una de las normas de supresi\u00f3n existentes en el ciclo no es CASCADE, de forma que se puede definir esta relaci\u00f3n si la norma de supresi\u00f3n no es CASCADE). 
+XCL41.S=La norma de supresi\u00f3n de la clave for\u00e1nea no puede ser CASCADE. (La relaci\u00f3n har\u00eda que otra tabla estuviera conectada para suprimir con la misma tabla a trav\u00e9s de distintas v\u00edas con disitntas normas de supresi\u00f3n o con normas de supresi\u00f3n iguales a SET NULL). 
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=Utilizar ''{0}'' obliga a actualizar la base de datos desde la versi\u00f3n {1} a la versi\u00f3n {2} o posterior.
+
+XCL48.S= No se permite TRUNCATE TABLE en ''{0}'' porque restricciones de clave for\u00e1neas de otras tablas hacen referencia a las restricciones de clave primaria/exclusiva de esta tabla. 
+XCL49.S= No se permite TRUNCATE TABLE en ''{0}'' porque tiene habilitado un desencadenante DELETE ({1}).
+XCL50.S=No se ha soporte a una actualizaci\u00f3n de base de datos de una versi\u00f3n anterior. La base de datos a la que se accede est\u00e1 al nivel de versi\u00f3n ''{0}'', este software est\u00e1 al nivel de versi\u00f3n ''{1}''.
+
+
+# Transaction states, matches DB2
+25000=Estado de transacci\u00f3n no v\u00e1lido.
+
+# Authorization
+25501=Imposible establecer la propiedad de conexi\u00f3n de s\u00f3lo lectura en una transacci\u00f3n activa.
+25502=No se permite un cambio de datos SQL en una conexi\u00f3n, usuario o base de datos de s\u00f3lo lectura.
+25503=No se permite DDL en una conexi\u00f3n, usuario o base de datos de s\u00f3lo lectura.
+25505=Un usuario de s\u00f3lo lectura o un usuario de una base de datos de s\u00f3lo lectura no tiene permitido inhabilitar la modalidad de s\u00f3lo lectura de una conexi\u00f3n.
+28501=Propiedad de autorizaci\u00f3n de base de datos no v\u00e1lida ''{0}={1}''.
+28502.C=El nombre de usuario ''{0}'' no es v\u00e1lido. 
+28503=Los usuarios ''{0}'' no pueden estar a la vez en listas de autorizaci\u00f3n de s\u00f3lo lectura y acceso total.
+28504=Usuario(s) repetido(s) ''{1}'' en la lista de acceso ''{0}'';
+04501.C=Conexi\u00f3n de base de datos rechazada.
+
+
+# Dependency Manager
+XD003.S=Imposible restaurar dependencia del disco. DependableFinder = ''{0}''. M\u00e1s informaci\u00f3n: ''{1}''.
+XD004.S=Imposible almacenar dependencias.
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=Estado del cursor no v\u00e1lido - sin fila actual.
+
+07000=Al menos un par\u00e1metro de la sentencia actual no est\u00e1 inicializado.
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=El par\u00e1metro {0} es un par\u00e1metro de procedimiento {1} y por tanto debe registrarse con CallableStatement.registerOutParameter antes de la ejecuci\u00f3n.
+
+07009=Sin par\u00e1metros de entrada.
+
+S0022=Columna ''{0}'' no encontrada.
+XJ009.S=Es necesario utilizar CallableStatement con llamadas de procedimientos almacenados o utilizar par\u00e1metros de salida: {0}
+XJ010.S=No se puede emitir un SAVEPOINT cuando autoCommit est\u00e1 activado.
+XJ011.S=No se puede pasar null como nombre de SAVEPOINT.
+XJ012.S=''{0}'' ya se ha cerrado.
+XJ013.S=No hay ID para SAVEPOINT con nombre.
+XJ014.S=No hay nombre para SAVEPOINT sin nombre.
+XJ016.S=El m\u00e9todo ''{0}'' no est\u00e1 permitido en una sentencia preparada.
+XJ017.S=No se permite el mandato SAVEPOINT dentro de un c\u00f3digo de desencadenates.
+XJ018.S=El nombre de columna no puede ser nulo.
+XJ020.S=El tipo de objeto no es convertible a TYPE ''{0}'', valor java.sql.Types no v\u00e1lido o el objeto es nulo.
+XJ022.S=Imposible establecer la corriente: ''{0}''.
+XJ023.S=La corriente de entrada contiene menos datos que la longitud solicitada.
+XJ025.S=La corriente de entrada no puede tener una longitud negativa.
+XJ030.S=No se puede establecer AUTOCOMMIT ON si est\u00e1 en una conexi\u00f3n anidada.
+XJ042.S=''{0}'' no es un valor v\u00e1lido para la propiedad ''{1}''.
+XJ044.S=''{0}'' no es una escala v\u00e1lida.
+XJ045.S=Se ha pasador un nivel de aislamiento no v\u00e1lido o no soportado (actualmente), ''{0}'', a Connection.setTransactionIsolationLevel(). Los valores a los que actualmente se da soporte son java.sql.Connection.TRANSACTION_SERIALIZABLE, java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED y java.sql.Connection.TRANSACTION_READ_UNCOMMITTED.
+XJ04B.S=El proceso por lotes no puede contener un mandatos que intente devolver un juego de resultados.
+XJ04C.S=El proceso por lotes CallableStatement no puede contener par\u00e1metros de salida.
+XJ056.S=No se puede establecer AUTOCOMMIT ON si est\u00e1 en una conexi\u00f3n XA.
+XJ057.S=No se puede comprometer una transacci\u00f3n global mediante la conexi\u00f3n, el proceso de comprometer debe ir a trav\u00e9s de la interfaz XAResource.
+XJ058.S=No se puede retrotraer una transacci\u00f3n global mediante la conexi\u00f3n, el proceso de comprometer debe ir a trav\u00e9s de la interfaz XAResource.
+XJ059.S=No se puede cerrar una conexi\u00f3n mientras siga activa una transacci\u00f3n global.
+XJ05C.S=No se puede establecer la constante de retenci\u00f3n ResultSet.HOLD_CURSORS_OVER_COMMIT para una transacci\u00f3n global.
+XJ061.S=El m\u00e9todo ''{0}'' s\u00f3lo est\u00e1 permitido sobre cursores de desplazamiento.
+XJ062.S=Valor del par\u00e1metro no v\u00e1lido ''{0}'' para ResultSet.setFetchSize(int rows).
+XJ063.S=Valor del par\u00e1metro no v\u00e1lido ''{0}'' para Statement.setMaxRows(int maxRows).  El valor del par\u00e1metro debe ser >= 0.
+XJ064.S=Valor del par\u00e1metro no v\u00e1lido ''{0}'' para setFetchDirection(int direction).
+XJ065.S=Valor del par\u00e1metro no v\u00e1lido ''{0}'' para Statement.setFetchSize(int rows).
+XJ066.S=Valor del par\u00e1metro no v\u00e1lido ''{0}'' para Statement.setMaxFieldSize(int max).
+XJ067.S=El puntero de texto SQL es nulo.
+XJ068.S=S\u00f3lo est\u00e1n permitidos executeBatch y clearBatch en mitad de un proceso por lotes.
+XJ069.S=No se permiten m\u00e9todos SetXXX en el caso de Execute Statement Using.
+XJ080.S=Execute Statement Using pas\u00f3 {0} par\u00e1metros en lugar de {1}.
+XJ070.S=Se ha pasado un argumento de posici\u00f3n negativo o cero ''{0}'' en un m\u00e9todo Blob o Clob.
+XJ071.S=Se ha pasado un argumento de longitud negativo o cero ''{0}'' en un m\u00e9todo Blob o Clob.
+XJ072.S=Se ha pasado un patr\u00f3n o searchStr nulo a un m\u00e9todo de posici\u00f3n Blob o Clob.
+XJ073.S=Los datos de este Blob o Clob ya no est\u00e1n disponibles. Las razones posibles son que su transacci\u00f3n se ha comprometido o su conexi\u00f3n se ha cerrado.
+XJ076.S=El argumento de posici\u00f3n ''{0}'' supera el tama\u00f1o del Blob/Clob.
+XJ077.S=Se ha obtenido una excepci\u00f3n al intentar leer el primer byte/car\u00e1cter del patr\u00f3n Blob/Clob mediante getBytes/getSubString.
+XJ082.U=No se permiten los valores BLOB/CLOB como receptor o par\u00e1metros de m\u00e9todo.
+
+0A000.S=Caracter\u00edstica no implementada: {0}.
+
+XJ004.C=Base de datos ''{0}'' no encontrada.
+08004=Conexi\u00f3n rechazada: {0}
+A020=Autenticaci\u00f3n no v\u00e1lida.
+08003=Sin conexi\u00f3n actual.
+XJ028.C=El URL ''{0}'' no est\u00e1 formado correctamente.
+XJ040.C=No se ha podido iniciar la base de datos ''{0}'', consulte la excepci\u00f3n siguiente para obtener detalles.
+XJ041.C=No se ha podido crear la base de datos ''{0}'', consulte la excepci\u00f3n siguiente para obtener detalles.
+XJ049.C=Se han especificado atributos de creaci\u00f3n que entran en conflicto.
+XJ081.C=Se han especificado atributos de creaci\u00f3n/restauraci\u00f3n/recuperaci\u00f3n que entran en conflicto.
+XJ05B.C=El atributo JDBC ''{0}'' tiene un valor no v\u00e1lido ''{1}'', los valores v\u00e1lidos son ''{2}''.
+
+XXXXX.C.6=Cierre de sesi\u00f3n de base de datos normal.
+
+08006.D=Conclusi\u00f3n de la base de datos ''{0}''.
+
+XJ015.M=Conclusi\u00f3n del sistema Derby.
+
+01J01=Base de datos ''{0}'' no creada, en su lugar se ha realizado una conexi\u00f3n con una base de datos existente.
+01J02=Los cursores sensibles al desplazamiento no est\u00e1n implementandos actualmente.
+01J03=Los ResultSets actualizables no est\u00e1n implementados actualmente.
+01J04=La clase ''{0}'' de la columna ''{1}'' no implementa java.io.Serializable ni java.sql.SQLData. Las instancias deben implementar una de estas interfaces para permitir poder ser almacenadas.
+01J05=Actualizaci\u00f3n de base de datos correcta. La base de datos actualizada est\u00e1 preparada ahora para su uso. No se han podido revalidar las sentencias preparadas almacenadas. Consulte la excepci\u00f3n siguiente para obtener detalles sobre la anomal\u00eda. 
+XJ001.U=Excepci\u00f3n Java: ''{1}: {0}''.
+XJ050.U=La base de datos necesita actualizarse desde la versi\u00f3n {0}, establezca el atributo ''upgrade=true'' en el URL de conexi\u00f3n JDBC para permitir la actualizaci\u00f3n a la versi\u00f3n {1}.
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=Permiso desconocido ''{0}''.
+XCZ01.S=Usuario desconocido ''{0}''.
+XCZ02.S=Par\u00e1metro no v\u00e1lido ''{0}''=''{1}''.
+
+# SQL J Jar support
+46001=Excepci\u00f3n al acceder al archivo jar mediante el URL ''{0}''.
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  PRINCIPIO DE MENSAJE DE ERROR -------------\n
+L002=------------  FIN DE MENSAJE DE ERROR -------------\n
+L003=\n-------  COMENZANDO PILA DE ERROR DE CONCLUSI\u00d3N ----\n
+L004=\n------------  FIN DE PILA DE ERROR DE CONCLUSI\u00d3N ----\n
+L005=\n------------  PRINCIPIO DE PILA DE ERRORES -------------\n
+L006=\n------------  FIN DE PILA DE ERRORES -------------\n
+L007=AVISO: archivo de anotaciones cronol\u00f3gicas no encontrado, creando uno nuevo. Posible inconsistencia en la base de datos
+L008=Suprimiendo Logfile antiguo incompatible {0}
+L009=Suprimiendo Logfile antiguo {0}
+L010=Se ha detectado un registro de anotaci\u00f3n cronol\u00f3gica incompleto en el archivo {0}, borrando el archivo de anotaciones cronol\u00f3gicas desde la posici\u00f3n {1} hasta el fin de archivo en {2}.
+L011=El daemon de punto de control ha capturado una excepci\u00f3n est\u00e1ndar
+L012=El registro de anotaci\u00f3n cronol\u00f3gica no es el primero pero la transacci\u00f3n no est\u00e1 en una tabla de transacci\u00f3n: {0}
+L013=El registro de anotaci\u00f3n cronol\u00f3gica es el primero pero la transacci\u00f3n ya est\u00e1 en la tabla de transacci\u00f3n: {0}
+L014=Instante de inicio incorrecto
+L015=existe un nuevo archivo de anotaciones cronol\u00f3gicas y no puede suprimirse {0}
+L016=no se puede crear un nuevo archivo de anotaciones cronol\u00f3gicas {0}
+L017=no se puede crear un nuevo archivo de anotaciones cronol\u00f3gicas {0} debido a {1}
+L018=El sistema puede estar en un estado inconsistente, falta el archivo {0}
+
+# Class Manager
+C000=Se ha grabado la clase {0} en el archivo {1}. Proporcione a soporte el archivo y la informaci\u00f3n de excepci\u00f3n siguiente: {2}
+C001=La clase {0} tiene un tipo de certificado desconocido en el jar {1}, se esperaba un certificado X509.
+C002=Se ha generado una excepci\u00f3n de seguridad al acceder a la clase {0} del jar {1} : {2}
+C003=Excepci\u00f3n al cargar el jar de base de datos {0} - {1}
+C004=Cargador de clases obsoleto para la clase {0}
+C005=Cargador de clases de base de datos iniciado - derby.database.classpath=''{0}''
+C006=Se ha cargado {0} desde el jar de base de datos {1}
+C007=Excepci\u00f3n al cargar la clase {0} desde el jar {1} - {2}
+
+# RawStore Data
+
+D001=:\n Arrancando Derby versi\u00f3n {0}: instancia {1}\nen el directorio de base de datos {2} \n
+D002=:\nConcluyendo instancia {0}
+D004=Copia de seguridad iniciada de la base de datos situada en {0}
+D005=se ha movido la copia de seguridad antigua de {0} a {1}
+D006=se ha copiado el directorio de base de datos de {0} a {1}
+D007=se ha editado service.properties de la base de datos para utilizar el dispositivo de anotaci\u00f3n cronol\u00f3gica por omisi\u00f3n
+D008=error editando service.properties de la base de datos, copia de seguridad terminada anormalmente: {0}
+D009=se ha copiado el directorio de anotaci\u00f3n cronol\u00f3gica de {0} a {1}
+D010=Copia de seguridad terminada anormalmente debido a un error
+D011=se ha eliminado la copia de seguridad antigua de {0}
+D012=Copia de seguridad completada, instancia de anotaci\u00f3n cronol\u00f3gica en {0} \n
+
+# Connectivity 
+J004=identidad de base de datos
+J005=concluir Derby
+J007=crear base de datos
+J008=sin detalles
+J010=cifrar base de datos en disco
+J013=actualizar base de datos
+J016=suministrador de servicio criptogr\u00e1fico
+J017=algoritmo criptogr\u00e1fico
+J018=longitud de clave criptogr\u00e1fica
+J019=clave criptogr\u00e1fica externa
+J020=clave criptogr\u00e1fica secreta
+J021=territorio de la base de datos
+J022=nombre usuario
+J023=contrase\u00f1a de usuario
+J025=v\u00eda de acceso del directorio de anotaci\u00f3n cronol\u00f3gica
+J028=v\u00eda de acceso de seguridad para la recuperaci\u00f3n en avance
+J100=No se puede encontrar la clase del servidor de red, {0}. La v\u00eda de acceso a la clase deber\u00eda tener csnet.jar.
+J101=No se puede cargar la clase del servidor de red, {0}. {1} - Compruebe la integridad del archivo csnet.jar.
+J102=Se ha generado una excepci\u00f3n al iniciar el servidor de red. {0}
+J103=Se ha generado una excepci\u00f3n al cerrar el servidor de red. {0}
+
+# Authentication
+A001=MUY GRAVE: no existe servicio de autenticaci\u00f3n para el sistema
+A002=MUY GRAVE: no existe servicio de autenticaci\u00f3n para la base de datos
+A011=AVISO: no se ha mencionado ning\u00fan nombre de servidor/sistema principal LDAP en la propiedad {0}; se asume localhost:389
+
+I015=org.apache.derby.jdbc.EmbeddedDriver no se ha registrado con el gestor de controladores JDBC
+I024=Base de datos no disponible
+I025=Controlador JDBC no disponible
+
+# Import/Export
+XIE01.S=Conexi\u00f3n nula.
+XIE03.S=Se han encontrado datos en la l\u00ednea {0} de la columna {1} despu\u00e9s del delimitador de parada
+XIE04.S=Archivo de datos no encontrado: {0}
+XIE05.S=El archivo de datos no puede ser nulo.
+XIE06.S=Nombre de entidad nulo.
+XIE07.S=Los separadores de campo y registro no pueden ser una subserie uno de otro.
+XIE08.S=No hay ninguna columna de nombre: {0}
+XIE09.S=El n\u00famero total de columnas en la fila es: {0}
+XIE0B.S=La columna ''{0}'' de la tabla de tipo {1} no recibe soporte de import/export.
+XIE0D.S=No se puede encontrar el separador de registro en la l\u00ednea {0}
+XIE0E.S=Se ha le\u00eddo el fin de archivo en un lugar inesperado de la l\u00ednea {0}
+XIE0I.S=Se ha obtenido una excepci\u00f3n de E/S al grabar datos en el archivo
+XIE0J.S=Un delimitador no es v\u00e1lido o se ha utilizado m\u00e1s de una vez.
+XIE0K.S=El punto se ha especificado como un delimitador de serie de caracteres.
+XIE0M.S=La tabla ''{0}'' no existe.
+
+# Monitor
+M001=\n# ********************************************************************\n# ***                   NO edite este archivo.                 ***\n# ***   SI CAMBIA SU CONTENIDO PODR\u00cdA CAUSAR DA\u00d1OS EN LOS DATOS. ***\n# ********************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_fr.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_fr.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1236 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=Echec du d\u00e9marrage en raison d'une exception ; pour plus de d\u00e9tails, voir l'exception suivante.
+XBM02.D=Echec du d\u00e9marrage en raison d''une fonctionnalit\u00e9 manquante pour {0}.  Assurez-vous que votre chemin de classes contient les logiciels Derby appropri\u00e9s.
+XBM05.D=Echec du d\u00e9marrage en raison d''informations manquantes sur la version du produit pour {0}.
+XBM06.D=Echec du d\u00e9marrage ; il est impossible d'acc\u00e9der \u00e0 une base de donn\u00e9es chiffr\u00e9e sans le mot de passe d'amor\u00e7age appropri\u00e9.
+XBM07.D=Echec du d\u00e9marrage ; le mot de passe d'amor\u00e7age doit avoir une longueur minimale de 8 octets.
+XBM08.D=Impossible d''instancier la classe {0} StorageFactory {1}.
+
+XBM0G.D=Echec du d\u00e9marrage du moteur de chiffrement. Assurez-vous que vous ex\u00e9cutez Java 2 et que vous avez t\u00e9l\u00e9charg\u00e9 un fournisseur de chiffrement tel que jce et que vous l'avez plac\u00e9 dans votre chemin de classes.
+XBM0H.D=Impossible de cr\u00e9er le r\u00e9pertoire {0}.
+XBM0I.D=Impossible de supprimer le r\u00e9pertoire {0}.
+XBM0J.D=Le r\u00e9pertoire {0} existe d\u00e9j\u00e0.
+XBM0K.D=Sous-protocole inconnu pour le nom de la base de donn\u00e9es {0}.
+XBM0L.D=La classe de m\u00e9thode d''authentification sp\u00e9cifi\u00e9e {0} n''impl\u00e9mente pas l''interface d''authentification {1}.
+XBM0M.D=Une erreur s''est produite lors de la cr\u00e9ation d''une instance de la classe de m\u00e9thode d''authentification {0}.
+XBM0N.D=Echec de l'enregistrement du pilote JDBC dans java.sql.DriverManager ; pour plus de d\u00e9tails, voir l'exception suivante.
+XBM0P.D=Le fournisseur de services est en lecture seule, l'op\u00e9ration n'est pas autoris\u00e9e.
+XBM0S.D=Impossible de renommer le fichier ''{0}'' en ''{1}''
+XBM0T.D=Sous-protocole ambigu pour le nom de la base de donn\u00e9es {0}.
+XBM0U.S=Aucune classe n''a \u00e9t\u00e9 enregistr\u00e9e pour l''identificateur {0}
+XBM0V.S=Une exception a \u00e9t\u00e9 \u00e9mise pendant le chargement de la classe {1} enregistr\u00e9e pour l''identificateur {0}
+XBM0W.S=Une exception a \u00e9t\u00e9 \u00e9mise pendant la cr\u00e9ation d''une instance de la classe {1} enregistr\u00e9e pour l''identificateur {0}
+XBM0X.D=La description d''environnement du territoire fournie ''{0}'' n''est pas valide ; ln[_CO[_variant]] doit \u00eatre sp\u00e9cifi\u00e9\nln=code de langue ISO-639 en minuscules et en deux lettres, CO=codes pays ISO-3166 en majuscules et en deux lettres, voir java.util.Locale.
+XBM0Y.D=Le r\u00e9pertoire de sauvegarde de la base de donn\u00e9es {0} est introuvable. Assurez-vous que le chemin de sauvegarde indiqu\u00e9 est correct.
+XBM0Z.D=Impossible de copier le fichier ''{0}'' dans ''{1}''. Assurez-vous que l''espace est suffisant et que les droits d''acc\u00e8s sont corrects. 
+XBM0Q.D=Fichier {0} introuvable. Assurez-vous que la copie de sauvegarde est la bonne et qu''elle n''est pas alt\u00e9r\u00e9e.
+XBM0R.D=Impossible de supprimer le fichier {0}.
+
+# Upgrade
+XCW00.D=Mise \u00e0 niveau de ''{0}'' vers ''{1}'' non prise en charge.
+
+# Feature not supported
+
+
+# COntext service
+08000=Connexion ferm\u00e9e par une interruption inconnue.
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=Aucun verrou n''a pu \u00eatre obtenu en raison d''un interblocage ; le cycle de verrous et d''unit\u00e9s en attente est :\n {0}La victime s\u00e9lectionn\u00e9e est XID : {1}
+
+40XL1=Aucun verrou n'a pu \u00eatre obtenu dans le d\u00e9lai demand\u00e9
+40XL2=Aucun verrou n''a pu \u00eatre obtenu dans le d\u00e9lai demand\u00e9.  La liste lockTable est : {0}
+
+# ClassManager
+XBCM1.S=Erreur de liaison Java \u00e9mise au cours du chargement de la classe g\u00e9n\u00e9r\u00e9e {0}.
+XBCM2.S=Impossible de cr\u00e9er une instance de la classe g\u00e9n\u00e9r\u00e9e {0}.
+XBCM3.S=La m\u00e9thode {1}() n''existe pas dans la classe g\u00e9n\u00e9r\u00e9e {0}.
+
+# Properties
+
+XCY00.S=Valeur non admise pour la propri\u00e9t\u00e9 ''{0}''=''{1}''.
+XCY02.S=La modification de propri\u00e9t\u00e9 demand\u00e9e n''est pas prise en charge ''{0}''=''{1}''.
+XCY03.S=La propri\u00e9t\u00e9 requise ''{0}'' n''a pas \u00e9t\u00e9 d\u00e9finie.
+
+# Cryptography
+XBCX0.S=Exception du fournisseur de chiffrement ; pour plus de d\u00e9tails, voir l'exception suivante.
+XBCX1.S=Initialisation du code de chiffrement dans un mode non admis ; ce mode doit \u00eatre soit ENCRYPT, soit DECRYPT.
+XBCX2.S=Initialisation du code de chiffrement avec un mot de passe d''amor\u00e7age trop court ; il doit contenir au minimum {0} caract\u00e8res
+XBCX5.S=Impossible de modifier le mot de passe d'amor\u00e7age pour lui affecter la valeur null.
+XBCX6.S=Impossible de modifier le mot de passe d'amor\u00e7age en un type s\u00e9rialisable qui ne soit pas de type cha\u00eene.
+XBCX7.S=Format incorrect pour modifier le mot de passe d'amor\u00e7age.  Le format suivant doit \u00eatre utilis\u00e9 : ancien_motdepasse_amor\u00e7age, nouveau_motdepasse_amor\u00e7age.
+XBCX8.S=Impossible de modifier le mot de passe d'amor\u00e7age pour une base de donn\u00e9es non chiffr\u00e9e.
+XBCX9.S=Impossible de modifier le mot de passe d'amor\u00e7age pour une base de donn\u00e9es en lecture seule.
+XBCXA.S=Mot de passe d'amor\u00e7age incorrect.
+XBCXB.S=Remplissage de chiffrement incorrect ''{0}'' ou remplissage non sp\u00e9cifi\u00e9. Vous devez utiliser ''NoPadding'' (pas de remplissage).
+XBCXC.S=L''algorithme de chiffrement ''{0}'' n''existe pas. V\u00e9rifiez que le fournisseur choisi ''{1}'' prend en charge cet algorithme.
+XBCXD.S=L'algorithme de chiffrement ne peut pas \u00eatre modifi\u00e9 une fois que la base de donn\u00e9es est cr\u00e9\u00e9e.
+XBCXE.S=Le fournisseur de chiffrement ne peut pas \u00eatre modifi\u00e9 une fois que la base de donn\u00e9es est cr\u00e9\u00e9e.
+XBCXF.S=La classe ''{0}'' qui repr\u00e9sente le fournisseur de chiffrement est introuvable.
+XBCXG.S=Le fournisseur de chiffrement ''{0}'' n''existe pas.
+XBCXH.S=L''algorithme de chiffrement ''{0}'' n''est pas dans le format correct. Le format correct est algorithme/modeCommentaires/PasdeRemplissage.
+XBCXI.S=Le mode commentaires ''{0}'' n''est pas pris en charge. Les modes commentaires pris en charge sont CBC, CFB, OFB et ECB.
+XBCXJ.S=L'application utilise une version de Java Cryptography Extension (JCE) ant\u00e9rieure \u00e0 1.2.1.  Effectuez la mise \u00e0 niveau vers JCE 1.2.1, puis recommencez l'op\u00e9ration.
+XBCXK.S=La cl\u00e9 de chiffrement donn\u00e9e ne concorde pas avec celle qui est utilis\u00e9e lors de la cr\u00e9ation de la base de donn\u00e9es. V\u00e9rifiez que vous utilisez la cl\u00e9 de chiffrement correcte et recommencez.
+
+XBCXL.S=La proc\u00e9dure de v\u00e9rification de la cl\u00e9 de chiffrement n'a pas abouti. Pour plus de d\u00e9tails, reportez-vous \u00e0 l'exception suivante. Une erreur s'est peut-\u00eatre produite lors de l'acc\u00e8s au fichier appropri\u00e9 pour la proc\u00e9dure de v\u00e9rification.
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=Impossible de cr\u00e9er un nouvel objet avec la cl\u00e9 {1} dans la cache {0} ; il existe d\u00e9j\u00e0 dans la cache.
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=Le conglom\u00e9rat ({0}) demand\u00e9 n''existe pas.
+XSAI3.S=Fonction non impl\u00e9ment\u00e9e.
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=Type d'analyse
+XSAJ1.U=Nombre de pages visit\u00e9es.
+XSAJ2.U=Nombre de lignes visit\u00e9es.
+XSAJ3.U=Nombre de lignes supprim\u00e9es visit\u00e9es.
+XSAJ4.U=Nombre de lignes qualifi\u00e9es.
+XSAJ5.U=Nombre de colonnes extraites.
+XSAJ6.U=Ensemble binaire de colonnes extrait
+XSAJ7.U=Hauteur de l'arborescence
+XSAJ8.U=Type de tri
+XSAJA.U=Nombre de lignes en entr\u00e9e
+XSAJB.U=Nombre de lignes en sortie
+XSAJC.U=Nombre d'ex\u00e9cutions de fusion
+XSAJD.U=Taille des ex\u00e9cutions de fusion
+XSAJE.U=Toutes
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=heap
+XSAJH.U=sort
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=externe
+XSAJJ.U=interne
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=Violation du protocole XA
+XSAX1.S=Une tentative de lancement d'une transaction globale avec le Xid d'une transaction globale existante a \u00e9t\u00e9 effectu\u00e9e.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=Exception d\u00e9tect\u00e9e lors de la tentative d''amor\u00e7age du module pour ''{0}''.
+XSAM2.S=Aucun index ni conglom\u00e9rat ayant pour ID de conglom ''{0}'' n''est \u00e0 supprimer.
+XSAM3.S=Il n''existe aucun index ni conglom\u00e9rat ayant pour ID de conglom ''{0}''.
+XSAM4.S=Il n''existe aucun tri ayant pour nom ''{0}''.
+XSAM5.S=L'analyse doit \u00eatre ouverte et positionn\u00e9e par un appel de la m\u00e9thode next() avant la lancement d'autres appels.
+XSAM6.S=L''enregistrement {2} de la page {1} du conteneur {0} n''a pas \u00e9t\u00e9 trouv\u00e9.
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=Impossible de cr\u00e9er un mod\u00e8le.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=Fonction non impl\u00e9ment\u00e9e.
+XSCH7.S=L'analyse n'est pas positionn\u00e9e.
+XSCH6.S=Le conteneur de segments de m\u00e9moire ayant l''ID de conteneur {0} est ferm\u00e9.
+XSCH5.S=Dans une table de base, le num\u00e9ro de colonne demand\u00e9 {0} et le nombre maximum de colonnes {1} ne concordaient pas.
+XSCH4.S=Impossible de cr\u00e9er de conglom\u00e9rat.
+XSCH1.S=Impossible de trouver le conteneur {0}.
+XSCH0.S=Impossible de cr\u00e9er un conteneur.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=R\u00e9serv\u00e9 pour les tests.
+XSCB8.S=Le conglom\u00e9rat btree {0} est ferm\u00e9.
+XSCB7.S=Une erreur interne a \u00e9t\u00e9 d\u00e9tect\u00e9e au cours d''une analyse - current_rh est null = {0}, la cl\u00e9 de position est null = {1}.
+XSCB6.S=Restriction : L'enregistrement d'un index secondaire btree ne peut pas \u00eatre mis \u00e0 jour ou ins\u00e9r\u00e9 en raison du manque d'espace sur la page.   Utilisez les param\u00e8tres derby.storage.pageSize et/ou derby.storage.pageReservedSpace pour contourner cette restriction.
+XSCB5.S=Au cours de l'annulation logique d'une insertion ou d'une suppression btree, la ligne n'a pas pu \u00eatre trouv\u00e9e dans l'arborescence.
+XSCB4.S=Une m\u00e9thode sur une analyse d''ouverture btree a \u00e9t\u00e9 appel\u00e9e avant que l''analyse ne soit positionn\u00e9e sur la premi\u00e8re ligne (c'est-\u00e0-dire qu''aucun appel de next() n''a encore \u00e9t\u00e9 effectu\u00e9).  L''\u00e9tat actuel de l''analyse est ({0}).
+XSCB3.S=Fonction non impl\u00e9ment\u00e9e.
+XSCB2.S=La propri\u00e9t\u00e9 requise {0} n''a pas \u00e9t\u00e9 trouv\u00e9e dans la liste de propri\u00e9t\u00e9s fournie \u00e0 createConglomerate() pour un index secondaire btree.
+XSCB1.S=Impossible de trouver le conteneur {0}.
+XSCB0.S=Impossible de cr\u00e9er un conteneur.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=Impossible d'acqu\u00e9rir des ressources pour le tri.
+XSAS3.S=Le type d'une ligne ins\u00e9r\u00e9e dans un tri ne correspond pas au mod\u00e8le du tri.
+XSAS1.S=Une tentative d'extraction d'une ligne avant le d\u00e9but d'un tri ou apr\u00e8s la fin d'un tri a \u00e9t\u00e9 effectu\u00e9e.
+XSAS0.S=Une m\u00e9thode de l'interface de contr\u00f4leur d'analyse inad\u00e9quate pour une analyse de tri a \u00e9t\u00e9 appel\u00e9e.
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=Impossible de geler la base de donn\u00e9es lorsqu'elle a d\u00e9j\u00e0 \u00e9t\u00e9 gel\u00e9e.
+XSRS1.S=Impossible de sauvegarder la base de donn\u00e9es dans {0} car il ne s''agit pas d''un r\u00e9pertoire.
+XSRS4.S=Erreur lors du changement de nom du fichier (au cours de la sauvegarde) de {0} en {1}.
+XSRS5.S=Erreur lors de la copie du fichier (au cours de la sauvegarde) de {0} vers {1}.
+XSRS6.S=Impossible de cr\u00e9er le r\u00e9pertoire de sauvegarde {0}.
+XSRS7.S=La sauvegarde a intercept\u00e9 une exception inattendue.
+XSRS8.S=L'unit\u00e9 de journalisation peut uniquement \u00eatre d\u00e9finie au cours du processus de cr\u00e9ation de la base de donn\u00e9es ; elle ne peut pas \u00eatre modifi\u00e9e \u00e0 la vol\u00e9e.
+XSRS9.S=L''enregistrement {0} n''existe plus
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=Impossible d'\u00e9mettre d'autres modifications ; la fabrique de fichier journal a \u00e9t\u00e9 arr\u00eat\u00e9e.
+XSLB8.S=Tentative de r\u00e9initialisation d''une analyse \u00e0 {0}, au-del\u00e0 de sa limite de {1}.
+XSLB6.S=Tentative de consignation d'un enregistrement de longueur 0 ou -ve.
+XSLB5.S=Instant de truncationLWM {1} incorrect pour le point de troncature {0}. La plage autoris\u00e9e est comprise entre {2} et {3}.
+XSLB4.S=Impossible de trouver truncationLWM {0}.
+XSLB2.S=L''op\u00e9ration de journalisation {0} enregistre trop de donn\u00e9es ; elle a satur\u00e9 la m\u00e9moire tampon du journal interne.
+XSLB1.S=L''op\u00e9ration de journalisation {0} rencontre une erreur lors de son enregistrement dans le flux de donn\u00e9es de journalisation ; cela peut \u00eatre d\u00fb \u00e0 une op\u00e9ration de journalisation errante ou \u00e0 la saturation de la m\u00e9moire tampon du journal interne suite \u00e0 une op\u00e9ration de journalisation trop volumineuse.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=Le r\u00e9pertoire du journal {0} existe d\u00e9j\u00e0. Assurez-vous que l''emplacement sp\u00e9cifi\u00e9 pour la propri\u00e9t\u00e9 logDevice est correct.  
+XSLAS.D=Le r\u00e9pertoire du journal {0} n''a pas \u00e9t\u00e9 trouv\u00e9 dans la sauvegarde au cours de la restauration. Assurez-vous que la copie de sauvegarde est la bonne et qu''elle n''est pas alt\u00e9r\u00e9e.
+XSLAR.D=Impossible de copier le fichier journal ''{0}'' dans ''{1}'' pendant la restauration. Assurez-vous que l''espace est suffisant et que les droits d''acc\u00e8s sont corrects. 
+XSLAQ.D=impossible de cr\u00e9er un fichier journal dans le r\u00e9pertoire {0}.
+XSLAP.D=La base de donn\u00e9es {0} est en version {1}. Les bases de donn\u00e9es B\u00eata ne peuvent pas \u00eatre mises \u00e0 niveau.
+XSLAO.D=Echec de la reprise, incident inattendu {0}.
+XSLAN.D=La base de donn\u00e9es situ\u00e9e dans {0} utilise un format incompatible avec la version actuelle du logiciel.  La base de donn\u00e9es a \u00e9t\u00e9 cr\u00e9\u00e9e ou mise \u00e0 niveau par la version {1}.
+XSLAM.D=Impossible de v\u00e9rifier le format de la base de donn\u00e9es situ\u00e9e dans {1} en raison d''une exception d'E/S.
+XSLAL.D=La taille de l''enregistrement de journal {2} d\u00e9passe la taille de fichier journal maximale autoris\u00e9e {3}. Erreur d\u00e9tect\u00e9e dans le fichier journal {0}, \u00e0 la position {1}
+XSLAK.D=La base de donn\u00e9es a d\u00e9pass\u00e9 le num\u00e9ro de fichier journal le plus grand {0}.
+XSLAJ.D=A la suite d'un incident, le syst\u00e8me de journalisation est marqu\u00e9 comme devant \u00eatre arr\u00eat\u00e9 et aucune op\u00e9ration ne peut \u00eatre ex\u00e9cut\u00e9e jusqu'\u00e0 l'arr\u00eat et le red\u00e9marrage du syst\u00e8me.
+XSLAI.D=Impossible de consigner l'enregistrement de journal des points de contr\u00f4le.
+XSLAH.D=Une base de donn\u00e9es en lecture seule est en cours de mise \u00e0 jour.
+XSLAF.D=Une base de donn\u00e9es en lecture seule a \u00e9t\u00e9 cr\u00e9\u00e9e avec des m\u00e9moires tampon de donn\u00e9es non valides.
+XSLAE.D=Aucune \u00e9criture dans le fichier de contr\u00f4le situ\u00e9 dans {0}, ni aucune mise \u00e0 jour de ce fichier ne peuvent \u00eatre effectu\u00e9es.
+XSLAD.D=L''enregistrement de journal \u00e0 l''instant {2} dans le fichier journal {3} est corrompu. La longueur pr\u00e9vue de l''enregistrement de journal est {0}, la longueur r\u00e9elle est {1}.
+XSLAC.D=La base de donn\u00e9es situ\u00e9e dans {0} utilise un format incompatible avec la version actuelle du logiciel ; elle a peut-\u00eatre \u00e9t\u00e9 cr\u00e9\u00e9e ou mise \u00e0 niveau par une version ult\u00e9rieure.
+XSLAB.D=Le fichier journal {0} est introuvable ; assurez-vous que votre propri\u00e9t\u00e9 logDevice est d\u00e9finie correctement avec le s\u00e9parateur de chemin d''acc\u00e8s appropri\u00e9 pour votre plateforme.
+XSLAA.D=Une exception ant\u00e9rieure a marqu\u00e9 le stockage comme devant \u00eatre arr\u00eat\u00e9.
+XSLA8.D=Impossible d''annuler la transaction {0} ; tentative de compensation de l''op\u00e9ration {1} par {2}
+XSLA7.D=Impossible de r\u00e9p\u00e9ter l''op\u00e9ration {0} dans le fichier journal.
+XSLA6.D=Impossible de r\u00e9cup\u00e9rer la base de donn\u00e9es.
+XSLA5.D=Impossible de lire le flux de donn\u00e9es de journalisation dans le but d''annuler la transaction {0}.
+XSLA4.D=Impossible d'\u00e9crire dans le journal, ce dernier est probablement satur\u00e9.  Supprimez les fichiers inutiles.  Il est \u00e9galement possible que le syst\u00e8me de fichiers soit en lecture seule, que le disque soit tomb\u00e9 en panne ou qu'un autre incident soit survenu avec le support.
+XSLA3.D=Fichier journal alt\u00e9r\u00e9 ; des donn\u00e9es non valides se trouvent dans le flux de donn\u00e9es de journalisation.
+XSLA2.D=Le syst\u00e8me va s'arr\u00eater ; une exception d'E-S a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e lors de l'acc\u00e8s au fichier journal.
+XSLA1.D=L''enregistrement de journal a \u00e9t\u00e9 envoy\u00e9 au flux de donn\u00e9es de journalisation, mais il ne peut pas \u00eatre appliqu\u00e9 au stockage (Objet {0}).  Des probl\u00e8mes de reprise peuvent \u00e9galement en d\u00e9couler.
+XSLA0.D=Impossible de vider le fichier journal sur le disque {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=Un POINT DE SAUVEGARDE portant le nom transmis existe d\u00e9j\u00e0 dans la transaction en cours.
+3B502.S=Une LIBERATION ou ANNULATION JUSQU'AU POINT DE SAUVEGARDE a \u00e9t\u00e9 indiqu\u00e9e mais le point de sauvegarde n'existe pas.
+3B001.S=Le POINT DE SAUVEGARDE {0} n''existe pas ou n''est pas actif dans la transaction en cours.
+3B002.S=Le nombre maximal de points de sauvegarde a \u00e9t\u00e9 atteint. 
+XSTA2.S=Une transaction \u00e9tait d\u00e9j\u00e0 active lorsqu'une tentative d'activation d'une autre transaction a \u00e9t\u00e9 effectu\u00e9e.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=Une erreur interne a \u00e9t\u00e9 identifi\u00e9e par le module RawStore.
+40XT1=Une exception a \u00e9t\u00e9 \u00e9mise au cours de la validation de la transaction.
+40XT2=Une exception a \u00e9t\u00e9 \u00e9mise au cours de l'annulation d'un POINT DE SAUVEGARDE.
+40XT4=Une tentative de fermeture d'une transaction toujours active a \u00e9t\u00e9 effectu\u00e9e ; la transaction a \u00e9t\u00e9 abandonn\u00e9e.
+40XT5=Une exception a \u00e9t\u00e9 \u00e9mise au cours d'une transaction interne.
+40XT6=La base de donn\u00e9es est en \u00e9tat de repos ; impossible d'activer la transaction.  Attendez un moment qu'elle quitte cet \u00e9tat.
+40XT7=Op\u00e9ration non prise en charge dans une transaction interne.
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=Identificateur non valide.
+XCXB0.S=Chemin de classes de base de donn\u00e9es non valide : ''{0}''.
+XCXC0.S=Liste d'ID non valide.
+XCXE0.S=Vous essayez d'effectuer une op\u00e9ration qui utilise le territoire de la base de donn\u00e9es, mais cette derni\u00e8re ne poss\u00e8de pas encore de territoire.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=Une exception a \u00e9t\u00e9 \u00e9mise au cours de l'abandon de la transaction.
+XSTB2.M=Impossible de consigner les modifications de transaction ; il s'agit peut-\u00eatre d'une tentative d'\u00e9criture dans une base de donn\u00e9es en lecture seule.
+XSTB3.M=Impossible d'abandonner la transaction parce que le gestionnaire des journaux est nul, probablement en raison d'une erreur ant\u00e9rieure.
+XSTB5.M=Un incident inattendu s'est produit lors la cr\u00e9ation d'une base de donn\u00e9es pour laquelle la journalisation est d\u00e9sactiv\u00e9e.
+XSTB6.M=Impossible de remplacer une table de transactions par une autre tant qu'une table est d\u00e9j\u00e0 en cours d'utilisation.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=Le conteneur a \u00e9t\u00e9 ferm\u00e9
+40XD1=Le conteneur \u00e9tait ouvert en mode lecture seule
+40XD2=Impossible d''ouvrir le conteneur {0} ; soit il a \u00e9t\u00e9 supprim\u00e9, soit il est inexistant
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=Une tentative d'acc\u00e8s \u00e0 un emplacement situ\u00e9 en dehors des limites d'une page a \u00e9t\u00e9 effectu\u00e9e
+XSDA2.S=Une tentative de mise \u00e0 jour d'un enregistrement supprim\u00e9 a \u00e9t\u00e9 effectu\u00e9e
+XSDA3.S=Restriction : L'enregistrement ne peut pas \u00eatre mis \u00e0 jour ou ins\u00e9r\u00e9 en raison du manque d'espace sur la page. Utilisez les param\u00e8tres derby.storage.pageSize et/ou derby.storage.pageReservedSpace pour contourner cette restriction.
+XSDA4.S=Une exception impr\u00e9vue a \u00e9t\u00e9 \u00e9mise
+XSDA5.S=Une tentative d'annulation de la suppression d'un enregistrement non supprim\u00e9 a \u00e9t\u00e9 effectu\u00e9e.
+XSDA6.S=La colonne {0} de la ligne a la valeur null alors qu''elle doit d\u00e9signer un objet.
+XSDA7.S=La restauration d''un objet s\u00e9rialisable ou SQLData de classe {0} a tent\u00e9 de lire plus de donn\u00e9es que la quantit\u00e9 initialement enregistr\u00e9e
+XSDA8.S=Exception au cours de la restauration d'un objet s\u00e9rialisable ou SQLData de classe {0}
+XSDA9.S=Classe introuvable au cours de la restauration d''un objet s\u00e9rialisable ou SQLData de classe {0}
+XSDAA.S=Horodatage {0} non valide ; il provient soit d''une page diff\u00e9rente, soit d''une impl\u00e9mentation incompatible
+XSDAB.S=Impossible de d\u00e9finir un horodatage NULL
+XSDAC.S=Tentative de d\u00e9placement de lignes ou de pages d'un conteneur \u00e0 un autre.
+XSDAD.S=Tentative de d\u00e9placement de z\u00e9ro ligne d'une page vers une autre.
+XSDAE.S=Il est uniquement possible de cr\u00e9er un descripteur d'enregistrement pour un ID de descripteur d'enregistrement sp\u00e9cial.
+XSDAF.S=Utilisation d'un descripteur d'enregistrement sp\u00e9cial comme s'il s'agissait d'un descripteur d'enregistrement ordinaire.
+XSDAG.S=La transaction sup\u00e9rieure imbriqu\u00e9e dans l'allocation ne peut pas ouvrir le conteneur.
+XSDAI.S=La page {0} en cours de suppression est d\u00e9j\u00e0 verrouill\u00e9e pour une suppression d''affectation.
+XSDAJ.S=Exception au cours de l'\u00e9criture d'un objet s\u00e9rialisable ou SQLData
+XSDAK.S=La mauvaise page a \u00e9t\u00e9 extraite pour le descripteur d''enregistrement {0}.
+XSDAL.S=Le descripteur d'enregistrement {0} pointe de fa\u00e7on inattendue vers la page de d\u00e9passement.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=Exception inattendue sur la page en m\u00e9moire {0}
+XSDB1.D=Format de page inconnu \u00e0 la page {0}
+XSDB2.D=Format de conteneur inconnu au niveau du conteneur {0} : {1}
+XSDB3.D=Les informations relatives au conteneur ne peuvent pas \u00eatre modifi\u00e9es une fois enregistr\u00e9es :  pr\u00e9c\u00e9demment {0}, d\u00e9sormais {1}
+XSDB4.D=La page {0} est en version {1}, le fichier journal contient des modifications en version {2} ; soit des enregistrements de journal de cette page sont manquants, soit cette page n''a pas \u00e9t\u00e9 enregistr\u00e9e sur le disque correctement.
+XSDB5.D=Le fichier journal comprend un enregistrement de modification \u00e0 la page {0}, c''est-\u00e0-dire au-del\u00e0 de la fin du conteneur.
+XSDB6.D=Il est possible qu''une autre instance de Derby ait d\u00e9j\u00e0 amorc\u00e9 la base de donn\u00e9es {0}.
+XSDB7.D=AVERTISSEMENT : Derby (instance {0}) tente d''amorcer la base de donn\u00e9es {1} bien que Derby (instance {2}) soit peut-\u00eatre encore actif.   Une seule instance de Derby peut amorcer une base de donn\u00e9es \u00e0 la fois. Une alt\u00e9ration grave et irr\u00e9m\u00e9diable peut r\u00e9sulter de cette situation et s''est peut-\u00eatre d\u00e9j\u00e0 produite.
+XSDB8.D=AVERTISSEMENT : Derby (instance {0}) tente d''amorcer la base de donn\u00e9es {1} bien que Derby (instance {2}) soit peut-\u00eatre encore actif.   Une seule instance de Derby peut amorcer une base de donn\u00e9es \u00e0 la fois.  Une alt\u00e9ration grave et irr\u00e9m\u00e9diable peut r\u00e9sulter si 2 instances de Derby amorcent la m\u00eame base de donn\u00e9es en m\u00eame temps. La propri\u00e9t\u00e9 db2j.database.forceDatabaseLock=true a \u00e9t\u00e9 d\u00e9finie, de sorte que la base de donn\u00e9es ne s''amorcera pas tant que le fichier db.lck sera pr\u00e9sent.  Normalement, ce fichier est supprim\u00e9 lorsque la premi\u00e8re instance de Derby devant amorcer la base de donn\u00e9es est ferm\u00e9e, mais il est possible qu''il reste pr\u00e9sent suite \u00e0 certaines proc\u00e9dures d''arr\u00eat. Dans ce cas, il est n\u00e9cessaire de supprimer le fichier manuellement.  Il est important de v\u00e9rifier qu''aucune autre machine VM n''acc\u00e8de \u00e0 la base de donn\u00e9es tant que le fichier db.lck n''a pas \u00e9t\u00e9 supprim\u00e9 manuellement.
+XSDB9.D=Le conteneur de flux {0} est alt\u00e9r\u00e9.
+XSDBA.D=Echec de la tentative d''affectation de l'objet {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=Impossible de cr\u00e9er le fichier {0} car il existe d\u00e9j\u00e0.
+XSDF1.S=Exception au cours de la cr\u00e9ation du fichier {0} pour le conteneur
+XSDF2.S=Exception au cours de la cr\u00e9ation du fichier {0} pour le conteneur ; le fichier n''a pas pu \u00eatre supprim\u00e9.  Exception : {1}.
+XSDF3.S=Impossible de cr\u00e9er le segment {0}.
+XSDF4.S=Exception au cours de la suppression du fichier {0} pour le conteneur supprim\u00e9 ; le fichier n''a pas pu \u00eatre supprim\u00e9 {1}.
+XSDF6.S=Impossible de trouver la page d''allocation {0}.
+XSDF7.S=Echec de l''acc\u00e8s \u00e0 la page nouvellement cr\u00e9\u00e9e {0}
+XSDF8.S=Impossible de trouver la page {0} \u00e0 r\u00e9utiliser.
+XSDFB.S=Op\u00e9ration non prise en charge par une base de donn\u00e9es en lecture seule
+XSDFD.S=Diff\u00e9rentes lectures d''image de page lors de 2 E/S \u00e0 la page {0} ; la premi\u00e8re image pr\u00e9sente un total de contr\u00f4le incorrect, la deuxi\u00e8me image pr\u00e9sente un total de contr\u00f4le correct. Les images de page sont les suivantes : {1} {2}
+XSDFF.S=L'op\u00e9ration demand\u00e9e a \u00e9chou\u00e9 en raison d'une exception inattendue.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=Impossible de lire la page {0} \u00e0 partir du disque.
+XSDG1.D=Impossible d''enregistrer la page {0} sur le disque. V\u00e9rifiez si le disque est satur\u00e9.
+XSDG2.D=Total de contr\u00f4le non valide dans la page {0}, valeur pr\u00e9vue={1}, version sur disque={2}, vidage de la page : {3}
+XSDG3.D=Impossible d''acc\u00e9der aux m\u00e9tadonn\u00e9es pour le conteneur {0}
+XSDG5.D=La base de donn\u00e9es n'est pas en mode cr\u00e9ation lorsque createFinished est appel\u00e9.
+XSDG6.D=Le r\u00e9pertoire du segment de donn\u00e9es n''a pas \u00e9t\u00e9 trouv\u00e9 dans la sauvegarde {0} pendant la restauration. Assurez-vous que la copie de sauvegarde est la bonne et qu''elle n''est pas alt\u00e9r\u00e9e.
+XSDG7.D=Le r\u00e9pertoire {0} n''a pas pu \u00eatre supprim\u00e9 pendant la restauration. Assurez-vous que les droits d''acc\u00e8s sont corrects.
+XSDG8.D=Impossible de copier le r\u00e9pertoire ''{0}'' dans ''{1}'' pendant la restauration. Assurez-vous que l''espace est suffisant et que les droits d''acc\u00e8s sont corrects. 
+
+# language
+01500=La contrainte {0} sur la table {1} a \u00e9t\u00e9 supprim\u00e9e.
+01501=La vue {0} a \u00e9t\u00e9 supprim\u00e9e.
+01502=Le d\u00e9clencheur {0} sur la table {1} a \u00e9t\u00e9 supprim\u00e9.
+01503=La colonne {0} de la table {1} a \u00e9t\u00e9 modifi\u00e9e par ajout d''une contrainte non nulle.
+01504=Le nouvel index est un double d''un index existant : {0}.
+01505=La valeur {0} est peut-\u00eatre tronqu\u00e9e.
+01003=Les valeurs null ont \u00e9t\u00e9 \u00e9limin\u00e9es de l'argument d'une fonction de colonne.
+0100E=XX a tent\u00e9 de renvoyer un trop grand nombre d'ensembles de r\u00e9sultats.
+02000=Aucune ligne n'a \u00e9t\u00e9 trouv\u00e9e pour FETCH, UPDATE ou DELETE ou le r\u00e9sultat d'une requ\u00eate est une table vide.
+21000=Une sous-requ\u00eate scalaire n'est autoris\u00e9e que pour renvoyer une seule ligne.
+22001=Une erreur de troncature a \u00e9t\u00e9 d\u00e9tect\u00e9e lors de la tentative de r\u00e9duction de {0} ''{1}'' \u00e0 une longueur de {2}.
+54006=La longueur r\u00e9sultant de l''op\u00e9ration {0} est sup\u00e9rieure \u00e0 {1}.
+22003=La valeur r\u00e9sultante se situe hors de la fourchette admise pour le type de donn\u00e9es {0}.
+22005=Une tentative d''extraction d''une valeur de donn\u00e9es de type ''{0}'' \u00e0 partir d''une valeur de donn\u00e9es de type ''{1}'' a \u00e9t\u00e9 effectu\u00e9e.
+22007.S.180=La repr\u00e9sentation de la cha\u00eene d'une valeur date/heure se situe hors de la fourchette admise.
+22007.S.181=La syntaxe de la repr\u00e9sentation de la cha\u00eene d'une valeur date/heure n'est pas correcte.
+22011=Le deuxi\u00e8me ou troisi\u00e8me argument de la fonction SUBSTR se situe hors de la fourchette admise.
+22012=Tentative de division par z\u00e9ro.
+22013=Tentative d''extraction de la racine carr\u00e9e d''un nombre n\u00e9gatif, ''{0}''.
+22014=La position de d\u00e9but pour LOCATE est incorrecte ; cette valeur doit \u00eatre un entier positif.  L''index \u00e0 partir duquel la recherche doit commencer est ''{2}''.  La cha\u00eene \u00e0 rechercher est ''{0}''.  La cha\u00eene \u00e0 partir de laquelle la recherche doit commencer est ''{1}''. 
+22015=La fonction ''{0}'' n''est pas autoris\u00e9e sur l''ensemble de types suivant.  Le premier op\u00e9rande est de type ''{1}''.  Le deuxi\u00e8me op\u00e9rande est de type ''{2}''.  Le troisi\u00e8me op\u00e9rande (position de d\u00e9but) est de type ''{3}''.
+22018=Le format de la cha\u00eene de caract\u00e8res n''est pas valide pour le type {0}.
+22019=La s\u00e9quence d''\u00e9chappement ''{0}'' n''est pas valide. Cette cha\u00eene doit comporter un seul caract\u00e8re. Elle ne doit pas avoir la valeur null ni comporter plusieurs caract\u00e8res.
+22025=Le caract\u00e8re d'\u00e9chappement doit \u00eatre suivi d'un caract\u00e8re d'\u00e9chappement, '_' ou '%'. Il ne peut \u00eatre suivi d'aucun autre caract\u00e8re, ni se trouver \u00e0 la fin du masque.
+22027=La fonction TRIM() int\u00e9gr\u00e9e ne prend en charge qu'un seul caract\u00e8re d'enl\u00e8vement des espaces de d\u00e9but et de fin.  Les fonctions int\u00e9gr\u00e9es LTRIM() et RTRIM() prennent en charge plusieurs caract\u00e8res d'enl\u00e8vement des espaces de d\u00e9but et de fin.
+22500=Impossible d'utiliser des param\u00e8tres ? \u00e0 la fois pour le masque LIKE et pour la clause ESCAPE.
+22501=Une clause ESCAPE ayant pour valeur NULL renvoie des r\u00e9sultats non d\u00e9finis et n'est pas autoris\u00e9e.
+23502=La colonne ''{0}''  ne peut pas accepter de valeur NULL.
+23505=L''instruction a \u00e9t\u00e9 abandonn\u00e9e parce qu''elle aurait entra\u00een\u00e9 la duplication d''une valeur de cl\u00e9 dans une contrainte de cl\u00e9 ou d''index unique identifi\u00e9 par ''{0}'' d\u00e9finie sur ''{1}''.
+23503={2} sur la table ''{1}'' a entra\u00een\u00e9 la violation de la contrainte de cl\u00e9 externe ''{0}'' pour la cl\u00e9 {3}.  L''instruction a \u00e9t\u00e9 annul\u00e9e.
+23513=La contrainte de v\u00e9rification ''{1}'' a \u00e9t\u00e9 viol\u00e9e au cours de l''ex\u00e9cution d''une op\u00e9ration INSERT ou UPDATE sur la table ''{0}''.
+38000=L''exception ''{0}'' a \u00e9t\u00e9 \u00e9mise au cours de l''\u00e9valuation d''une expression.
+38001=La routine externe n'est pas autoris\u00e9e \u00e0 ex\u00e9cuter des instructions SQL.
+38002=La routine a tent\u00e9 de modifier des donn\u00e9es, cependant elle n'a pas \u00e9t\u00e9 d\u00e9finie en ce sens (MODIFIES SQL DATA).
+38004=La routine a tent\u00e9 de lire des donn\u00e9es, cependant elle n'a pas \u00e9t\u00e9 d\u00e9finie en ce sens (READS SQL DATA).
+39004=Une valeur NULL ne peut pas \u00eatre transmise \u00e0 une m\u00e9thode qui accepte un param\u00e8tre de type primitif ''{0}''.
+40XC0=Instruction supprim\u00e9e. Cela peut r\u00e9sulter de l'interception d'une erreur de gravit\u00e9 concernant la transaction dans cette instruction.
+# this error is retired in 1.3
+42000=Erreur de syntaxe ou violation des r\u00e8gles d'acc\u00e8s ; pour plus de d\u00e9tails, voir les autres erreurs.
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=Dans une instruction ALTER TABLE, la colonne ''{0}'' a \u00e9t\u00e9 d\u00e9finie par la valeur NOT NULL et la clause DEFAULT n''a pas \u00e9t\u00e9 sp\u00e9cifi\u00e9e ou a \u00e9t\u00e9 sp\u00e9cifi\u00e9e comme DEFAULT NULL.
+42601.S.372=L''instruction ALTER TABLE ne peut pas ajouter de colonne d''identit\u00e9 (IDENTITY) \u00e0 la table. 
+42606=Une constante hexad\u00e9cimale non valide commen\u00e7ant par ''{0}'' a \u00e9t\u00e9 d\u00e9tect\u00e9e.
+54002=Une constante de cha\u00eene commen\u00e7ant par ''{0}'' est trop longue.
+42611=L''attribut de longueur, de pr\u00e9cision ou d''\u00e9chelle de la colonne, ou le mappage de type ''{0}'' n''est pas valide. 
+
+42605=Le nombre d''arguments pour la fonction ''{0}'' est incorrect.
+42610=Les arguments de la fonction COALESC/VALUE ne peuvent pas tous \u00eatre des param\u00e8tres. Vous devez sp\u00e9cifier au moins un argument autre qu'un param\u00e8tre.
+
+42613=Pr\u00e9sence de mots cl\u00e9s multiples ou incompatibles impliquant la clause ''{0}''.
+42621=Une contrainte de v\u00e9rification ou une colonne g\u00e9n\u00e9r\u00e9e d\u00e9finie par ''{0}'' n''est pas valide.
+42734=Le nom ''{0}'' sp\u00e9cifi\u00e9 dans le contexte ''{1}'' n''est pas unique.
+# DB2 error for invalid set schema
+42802=Le nombre de valeurs attribu\u00e9es n'est pas le m\u00eame que le nombre de colonnes sp\u00e9cifi\u00e9es ou implicites.
+42815.S.713=La valeur de remplacement d\u00e9finie pour ''{0}'' n''est pas valide.
+42815.S.171=Les types de donn\u00e9es, les longueurs ou les valeurs des arguments ''{0}'' et ''{1}'' sont incompatibles.
+42820=Le litt\u00e9ral \u00e0 virgule flottante ''{0}'' contient plus de 30 caract\u00e8res.
+42824=Un op\u00e9rande de LIKE n'est pas une cha\u00eene ou le premier op\u00e9rande n'est pas une colonne.
+42831=''{0}'' ne peut pas \u00eatre une colonne de cl\u00e9 primaire ou unique car elle peut contenir des valeurs ''null''.
+42834=SET NULL ne peut \u00eatre indiqu\u00e9 car la CLE EXTERNE ''{0}'' ne peut pas contenir de valeurs nulles.  
+42884=Une routine non autoris\u00e9e, nomm\u00e9e ''{0}'', de type ''{1}'' et comportant des arguments compatibles a \u00e9t\u00e9 trouv\u00e9e.
+42886=''{0}'' param\u00e8tre ''{1}'' requiert un marqueur de param\u00e8tre ''?''.
+42894=La valeur DEFAULT ou l''attribut IDENTITY n''est pas valide pour la colonne ''{0}''.
+428C1=Seule une colonne d''identit\u00e9 est admise dans une table.
+42903=Utilisation non valide d'une fonction d'agr\u00e9gat.
+42908=L'instruction CREATE VIEW n'inclut pas de liste de colonnes.
+42915=La cl\u00e9 externe ''{0}'' n''est pas valide car ''{1}''. 
+42972=Une clause ON associ\u00e9e \u00e0 un op\u00e9rateur JOIN n'est pas valide.
+42X01=Erreur de syntaxe : {0}.
+42X02={0}.
+42X03=Le nom de colonne ''{0}'' se trouve dans plusieurs tables de la liste FROM.
+42X04=La colonne ''{0}'' ne se trouve dans aucune table de la liste FROM ou elle figure dans une sp\u00e9cification de jointure et se trouve en dehors de la port\u00e9e de cette sp\u00e9cification ou elle figure dans une clause HAVING mais ne se trouve pas dans la liste GROUP BY.  S''il s''agit d''une instruction CREATE ou ALTER TABLE, alors ''{0}'' n''est pas une colonne de la table cible.
+42X05=La table ''{0}'' n''existe pas.
+42X06=Trop grand nombre de colonnes de r\u00e9sultats sp\u00e9cifi\u00e9 pour la table ''{0}''.
+42X07=La valeur NULL est uniquement autoris\u00e9e dans une clause VALUES \u00e0 l'int\u00e9rieur d'une instruction INSERT.
+42X08=Le constructeur de la classe ''{0}'' ne peut pas \u00eatre utilis\u00e9 en tant que table virtuelle externe \u00e9tant donn\u00e9 que la classe n''impl\u00e9mente pas ''{1}''
+42X09=Le nom de table ou d''alias ''{0}'' est utilis\u00e9 plusieurs fois dans la liste FROM.
+42X10=''{0}'' n''est pas un nom de table expos\u00e9 dans la port\u00e9e o\u00f9 il figure.
+42622=Le nom ''{0}'' est trop long. La longueur maximale admise est ''{1}''.
+42X12=Le nom de colonne ''{0}'' figure plusieurs fois dans l''instruction de cr\u00e9ation de table.
+54011=Trop de colonnes ({0}) ont \u00e9t\u00e9 sp\u00e9cifi\u00e9es pour la table ou la vue {1}. La limite est {2}.
+42Z9F=Trop d'index ({0}) pour la table {1}. La limite est {2}.
+42X13=Le nom de colonne ''{0}'' figure plusieurs fois dans la liste des colonnes d''une instruction d''insertion.
+42X14=''{0}'' n''est pas une colonne de la table ou du VTI ''{1}''.
+42X15=Le nom de colonne ''{0}'' figure dans une instruction ne contenant pas de liste FROM.
+42X16=Le nom de colonne ''{0}'' figure plusieurs fois dans la clause SET d''une instruction de mise \u00e0 jour.
+42X17=La valeur ''{0}'' n''est pas valide en tant que sp\u00e9cification joinOrder dans la liste Propri\u00e9t\u00e9s d'une clause FROM. Seules les valeurs FIXED et UNFIXED sont valides.
+42803=Une expression contenant la colonne ''{0}'' appara\u00eet dans la liste SELECT et ne fait pas partie d''une clause GROUP BY.
+42818=Les comparaisons entre ''{0}'' et ''{1}'' ne sont pas prises en charge.
+42X19=La clause WHERE ou HAVING ou la d\u00e9finition CHECK CONSTRAINT est une expression ''{0}''.  Il faut que ce soit une expression BOOLEENNE.
+42X23=Le curseur {0} ne peut pas \u00eatre mis \u00e0 jour.
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=La fonction ''{0}'' n''est pas autoris\u00e9e sur le type ''{1}''.
+42X26=La classe ''{0}'' pour la colonne ''{1}'' n''existe pas ou n''est pas accessible. Cela peut se produire si la classe n''est pas publique.
+42X28=La table de suppression ''{0}'' n''est pas la cible du curseur ''{1}''.
+42X29=La table de mise \u00e0 jour ''{0}'' n''est pas la cible du curseur ''{1}''.
+42X30=Le curseur ''{0}'' est introuvable. V\u00e9rifiez que la fonction de validation automatique est d\u00e9sactiv\u00e9e (OFF).
+42X31=La colonne ''{0}'' ne figure pas dans la liste FOR UPDATE du curseur ''{1}''.
+42X32=Le nombre de colonnes de la liste de colonnes d\u00e9riv\u00e9es doit correspondre au nombre de colonnes de la table ''{0}''.
+42X33=La liste de colonnes d\u00e9riv\u00e9es contient un nom de colonne en double ''{0}''.
+42X34=La liste de s\u00e9lection contient un param\u00e8tre ?.  Ce param\u00e8tre n'est pas admis.
+42X35=Il n''est pas admis que les deux op\u00e9randes de ''{0}'' soient des param\u00e8tres ?.
+42X36=L''op\u00e9rateur ''{0}'' ne peut pas utiliser un param\u00e8tre ? en tant qu''op\u00e9rande.
+42X37=L''op\u00e9rateur unaire ''{0}'' n''est pas autoris\u00e9 sur le type ''{1}''.
+42X38=''SELECT *'' est uniquement autoris\u00e9 dans les sous-requ\u00eates EXISTS et NOT EXISTS.
+42X39=La sous-requ\u00eate est uniquement autoris\u00e9e \u00e0 renvoyer une seule colonne.
+42X40=Un NOT poss\u00e8de un op\u00e9rande non bool\u00e9en. L'op\u00e9rande de NOT doit avoir pour r\u00e9sultat TRUE, FALSE ou UNKNOWN.
+42X41=La propri\u00e9t\u00e9 ''{0}'' n''est pas valide dans la clause Propri\u00e9t\u00e9s d'une liste FROM (la propri\u00e9t\u00e9 \u00e9tait d\u00e9finie \u00e0 ''{1}'').
+42821=Les colonnes de type ''{0}'' ne peuvent pas contenir de valeurs de type ''{1}''. 
+42X43=Le ResultSetMetaData renvoy\u00e9 pour la classe/objet ''{0}'' \u00e9tait NULL. Le ResultSetMetaData doit \u00eatre non nul pour que cette classe puisse \u00eatre utilis\u00e9e en tant que table virtuelle externe.
+42X44=Longueur incorrecte ''{0}'' dans la sp\u00e9cification de colonne.
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=La valeur ''{1}'' n''est pas une pr\u00e9cision correcte pour {0}.
+42X49=La valeur ''{0}'' n''est pas un litt\u00e9ral entier valide.
+42X50=Aucune m\u00e9thode pouvant correspondre \u00e0 l''appel de m\u00e9thode{0}.{1}({2}) n''a \u00e9t\u00e9 trouv\u00e9e ; toutes les combinaisons de types d''objet et de types primitifs, ainsi que toute conversion de type possible pour tous les param\u00e8tres que l''appel de m\u00e9thode pourrait contenir ont m\u00eame \u00e9t\u00e9 essay\u00e9s.  Il est possible que la m\u00e9thode existe, mais qu''elle ne soit pas publique et/ou pas statique, ou que les types de param\u00e8tres ne puissent pas \u00eatre convertis en appel de m\u00e9thode.
+42X51=La classe ''{0}'' n''existe pas ou est inaccessible. Cela peut se produire si la classe n''est pas publique.
+42X52=L'appel de la m\u00e9thode (''{0}'') \u00e0 l'aide d''un r\u00e9cepteur de type primitif Java ''{1}'' n''est pas autoris\u00e9.
+42X53=Le pr\u00e9dicat LIKE peut uniquement avoir les op\u00e9randes ''CHAR'' ou ''VARCHAR''. Le type ''{0}'' n''est pas admis.
+42X54=La m\u00e9thode Java ''{0}'' utilise un ? en tant que r\u00e9cepteur.  Ce caract\u00e8re n''est pas admis.
+42X55=Le nom de table ''{1}'' doit \u00eatre le m\u00eame que ''{0}''.
+42X56=Le nombre de colonnes de la liste des colonnes de vue doit correspondre au nombre de colonnes de l''expression de requ\u00eate sous-jacente dans la d\u00e9finition de vue pour ''{0}''.
+42X57=La m\u00e9thode getColumnCount() pour la table virtuelle externe ''{0}'' a renvoy\u00e9 une valeur non valide ''{1}''.  Les valeurs valides sont >= 1.
+42X58=Le nombre de colonnes situ\u00e9es \u00e0 gauche et \u00e0 droite de l'UNION doit \u00eatre le m\u00eame.
+42X59=Le nombre de colonnes de chaque constructeur VALUES doit \u00eatre le m\u00eame.
+42X60=Valeur non valide ''{0}'' pour la propri\u00e9t\u00e9 insertMode sp\u00e9cifi\u00e9e pour la table ''{1}''.
+42X61=Les types ''{0}'' et ''{1}'' ne sont pas compatibles avec l''op\u00e9ration UNION.
+42X62=''{0}'' n''est pas autoris\u00e9 dans le sch\u00e9ma ''{1}''.
+42X63=La clause USING n'a pas renvoy\u00e9 de r\u00e9sultats ; aucun param\u00e8tre ne peut \u00eatre d\u00e9fini.
+42X64=Valeur non valide ''{0}'' sp\u00e9cifi\u00e9e pour la propri\u00e9t\u00e9 useStatistics dans la liste Propri\u00e9t\u00e9s. TRUE ou FALSE sont les seules valeurs admises.
+42X65=L''index ''{0}'' n''existe pas.
+42X66=Le nom de colonne ''{0}'' figure plusieurs fois dans l''instruction de cr\u00e9ation d''index.
+42X68=Aucune zone ''{0}'' appartenant \u00e0 la classe ''{1}'' n''a \u00e9t\u00e9 trouv\u00e9e.  Il est possible que cette zone existe, mais qu''elle ne soit pas publique, ou que la classe n''existe pas ou qu''elle ne soit pas publique.
+42X69=Il n''est pas permis de r\u00e9f\u00e9rencer une zone (''{0}'') \u00e0 l''aide d''une expression de r\u00e9f\u00e9rencement du type primitif Java ''{1}''.
+42X72=Aucune zone statique ''{0}'' appartenant \u00e0 la classe ''{1}'' n''a \u00e9t\u00e9 trouv\u00e9e.  Il est possible que cette zone existe, mais qu''elle ne soit pas publique et/ou pas statique, ou que la classe n''existe pas ou qu''elle ne soit pas publique.
+42X73=La r\u00e9solution de m\u00e9thode pour la signature {0}.{1}({2}) \u00e9tait ambigu\u00eb. (Plus d''une m\u00e9thode correspondait \u00e0 la requ\u00eate.)
+42X74=Syntaxe de l'instruction CALL incorrecte.
+42X75=Aucun constructeur ayant la signature {0}({1}) n''a \u00e9t\u00e9 trouv\u00e9.  Il est possible que les types de param\u00e8tres ne puissent pas \u00eatre convertis en appel de m\u00e9thode.
+42X76=Une colonne au moins, ''{0}'', de la cl\u00e9 primaire ajout\u00e9e peut avoir une valeur null. Aucune colonne d''une cl\u00e9 primaire ne peut avoir une valeur nulle.
+42X77=La position de la colonne ''{0}'' est en dehors des limites pour l''expression de requ\u00eate.
+42X78=La colonne ''{0}'' ne figure pas dans le r\u00e9sultat de l''expression de requ\u00eate.
+42X79=Le nom de colonne ''{0}'' figure plusieurs fois dans le r\u00e9sultat de l''expression de requ\u00eate.
+42877=Un nom de colonne complet ''{0}'' n''est pas admis dans la clause ORDER BY.
+42X80=La clause VALUES doit contenir au moins 1 \u00e9l\u00e9ment et tous les \u00e9l\u00e9ments doivent \u00eatre non vides.
+42X82=La clause USING a renvoy\u00e9 plusieurs lignes ; seuls les ResultSets d''une seule ligne sont autoris\u00e9s.
+42X83=Les contraintes s''appliquant \u00e0 la colonne ''{0}'' n\u00e9cessitent que celle-ci soit \u00e0 la fois autoris\u00e9e et non autoris\u00e9e \u00e0 contenir des valeurs nulles.
+42X84=L''index ''{0}'' a \u00e9t\u00e9 cr\u00e9\u00e9 pour appliquer la contrainte ''{1}''.  Il ne peut \u00eatre supprim\u00e9 que par la suppression de la contrainte.
+42X85=La contrainte ''{0}'' doit obligatoirement se trouver dans le m\u00eame sch\u00e9ma que la table ''{1}''.
+42X86=Echec de l''op\u00e9ration ALTER sur la table. Aucune contrainte ''{0}'' ne s''applique \u00e0 la table ''{1}''.
+42X87=Au moins une expression de r\u00e9sultat (then ou else) de l''expression ''{0}'' ne doit pas \u00eatre un ''?''.
+42X88=Un Conditional poss\u00e8de un op\u00e9rande non bool\u00e9en. L'op\u00e9rande de Conditional doit avoir pour r\u00e9sultat TRUE, FALSE ou UNKNOWN.
+42X89=Les types ''{0}'' et ''{1}'' ne sont pas compatibles. (Aucun de ces deux types ne peut \u00eatre affect\u00e9 \u00e0 l''autre.)
+42X90=Plus d''1 contrainte de cl\u00e9 primaire est sp\u00e9cifi\u00e9e pour la table ''{0}''.
+42X91=Le nom de contrainte ''{0}'' figure plusieurs fois dans l''instruction de cr\u00e9ation de table.
+42X92=Le nom de colonne ''{0}'' figure plusieurs fois dans la liste de colonnes d''une contrainte.
+42X93=La table ''{0}'' contient une d\u00e9finition de contrainte avec la colonne ''{1}'', laquelle ne se trouve pas dans la table.
+42Z93=Les contraintes ''{0}'' et ''{1}'' poss\u00e8dent le m\u00eame ensemble de colonnes, ce qui n''est pas autoris\u00e9.
+42Z96=Les VTI en lecture-\u00e9criture ne sont pas pris en charge dans les environnements JDK 1.1/JDBC 1.2 : ''{0}''
+42Z9B=L''interface VTI (Virtual Table Interface) externe ne prend pas en charge les colonnes Blob ou Clob. ''{0}'' colonne ''{1}''.
+42Z9D=Les instructions ''{0}'' ne sont pas admises dans les d\u00e9clencheurs ''{1}''.
+42Z9E=La contrainte ''{0}'' n''est pas une contrainte {1}.
+42X94={0} ''{1}'' n''existe pas.
+42X96=Le chemin d''acc\u00e8s aux classes de la base de donn\u00e9es contient un fichier jar inconnu ''{0}''.
+42X98=Les param\u00e8tres ne sont pas autoris\u00e9s dans une d\u00e9finition VIEW.
+42Y00=La classe ''{0}'' n''impl\u00e9mente pas org.apache.derby.iapi.db.AggregateDefinition et par cons\u00e9quent ne peut pas \u00eatre utilis\u00e9e en tant qu''expression d''agr\u00e9gat.
+42Y01=La contrainte ''{0}'' n''est pas valide.
+42Y03=''{0}'' n''est pas reconnu en tant que fonction ou proc\u00e9dure.
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=Impossible de cr\u00e9er une proc\u00e9dure ou une fonction dont le NOM EXTERNE est ''{0}'' car il ne s''agit pas d''une liste dont les \u00e9l\u00e9ments sont s\u00e9par\u00e9s par un point. Le format attendu est <chemin d''acc\u00e8s java complet>.<nom de m\u00e9thode> .
+
+42Y05=Aucune cl\u00e9 externe n''a pour nom ''{0}''.
+42Y07=Le sch\u00e9ma ''{0}'' n''existe pas.
+42Y08=Les contraintes de cl\u00e9 externe ne sont pas autoris\u00e9es sur les tables syst\u00e8me.
+42Y09=Les m\u00e9thodes void sont uniquement autoris\u00e9es dans une instruction CALL.
+42Y10=Un constructeur de table qui ne se trouve pas dans une instruction INSERT contient tous les param\u00e8tres ? dans l'une de ses colonnes.  Pour chaque colonne, au moins l'une des lignes doit contenir un non-param\u00e8tre.
+42Y11=Une sp\u00e9cification de jointure est requise avec la clause ''{0}''.
+42Y12=La clause ON d''un JOIN est une expression ''{0}''.  Il faut que ce soit une expression BOOLEENNE.
+42Y13=Le nom de colonne ''{0}'' figure plusieurs fois dans l''instruction de cr\u00e9ation de vue.
+42Z97=Le changement de nom de la colonne ''{0}'' entra\u00eenera la rupture de la contrainte de v\u00e9rification ''{1}''.
+42Z99=Une cha\u00eene ou un litt\u00e9ral hex ne peut pas d\u00e9passer 64 Ko.
+42Y16=Aucune m\u00e9thode statique publique ''{0}'' n''a \u00e9t\u00e9 trouv\u00e9e dans la classe ''{1}''.  Il est possible que la m\u00e9thode existe, mais qu''elle ne soit pas publique, ou qu''elle ne soit pas statique.
+42846=Impossible de convertir les types ''{0}'' en ''{1}''.
+42Y19=''{0}'' figure plusieurs fois dans la liste GROUP BY. Les colonnes de la liste GROUP BY doivent \u00eatre non ambigu\u00ebs.
+42Y22=L''agr\u00e9gat {0} ne peut pas fonctionner sur le type {1}.
+42Y23=Informations sur le type JDBC incorrectes renvoy\u00e9es pour la colonne {0}.
+42Y24=La vue ''{0}'' ne peut pas \u00eatre mise \u00e0  jour. (Les vues ne peuvent pas \u00eatre mises \u00e0 jour actuellement.)
+42Y25=''{0}'' est une table syst\u00e8me.  Les utilisateurs ne sont pas autoris\u00e9s \u00e0 modifier le contenu de cette table.
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=Les param\u00e8tres ne sont pas autoris\u00e9s dans l'action du d\u00e9clencheur.
+42Y29=La liste SELECT d'une requ\u00eate non group\u00e9e contient au moins 1 expression non valide.   Lorsque la liste SELECT contient au moins 1 agr\u00e9gat, toutes les entr\u00e9es doivent \u00eatre des expressions d'agr\u00e9gat valides.
+42Y30=La liste SELECT d'une requ\u00eate group\u00e9e contient au moins 1 expression non valide.   Pour un SELECT associ\u00e9 \u00e0 un GROUP BY, la liste SELECT ne peut contenir que des colonnes de regroupement et des expressions d'agr\u00e9gat valides.
+42Y32=La classe d''agr\u00e9gateur ''{0}'' pour l''agr\u00e9gat ''{1}'' sur le type {2} n''impl\u00e9mente pas com.ibm.db2j.aggregates.Aggregator. 
+42Y33=L''agr\u00e9gat {0} contient un ou plusieurs agr\u00e9gats.
+42Y34=Le nom de colonne ''{0}'' correspond \u00e0 plusieurs colonnes de r\u00e9sultats dans la table ''{1}''.
+42Y35=La r\u00e9f\u00e9rence de colonne ''{0}'' est incorrecte. Lorsque la liste SELECT contient au moins 1 agr\u00e9gat, toutes les entr\u00e9es doivent \u00eatre des expressions d''agr\u00e9gat valides.
+42Y36=La r\u00e9f\u00e9rence de colonne ''{0}'' est incorrecte.  Pour un SELECT associ\u00e9 \u00e0 un GROUP BY, la liste SELECT ne peut contenir que des colonnes de regroupement et des expressions d''agr\u00e9gat valides.
+42Y37=''{0}'' est de type Java primitif et ne peut pas \u00eatre utilis\u00e9 avec cet op\u00e9rateur.
+42Y38=insertMode = replace n''est pas autoris\u00e9 sur une insertion lorsque la table cible, ''{0}'', est r\u00e9f\u00e9renc\u00e9e dans le SELECT.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' ne peut pas figurer dans une d\u00e9finition CHECK CONSTRAINT car il pourrait renvoyer des r\u00e9sultats non d\u00e9terministes.
+42Y40=''{0}'' figure plusieurs fois dans la liste de colonnes UPDATE OF pour le d\u00e9clencheur ''{1}''.
+42Y41=''{0}'' ne peut pas \u00eatre appel\u00e9 directement via EXECUTE STATEMENT parce qu''il fait partie d''un d\u00e9clencheur.
+42Y42=L'\u00e9chelle ''{1}'' n''est pas une \u00e9chelle admise pour un {0}.
+42Y43=L'\u00e9chelle ''{1}'' n''est pas une \u00e9chelle valide avec une pr\u00e9cision de {0}.
+42Y44=Une cl\u00e9 non valide, ''{0}'', est sp\u00e9cifi\u00e9e dans la liste Propri\u00e9t\u00e9s de la liste FROM. Les cl\u00e9s ne prenant pas en compte la diff\u00e9rence majuscules/minuscules prises en charge actuellement sont ''{1}''.
+42Y45=Le VTI ''{0}'' ne peut pas \u00eatre li\u00e9 parce qu''il s''agit d''un VTI de d\u00e9clencheur sp\u00e9cial et que cette instruction ne fait pas partie d''une action de d\u00e9clencheur ou d''une clause WHEN.
+42Y46=Liste Propri\u00e9t\u00e9s non valide dans la liste FROM.  Aucun index ''{0}'' dans la table ''{1}''.
+42Y48=Liste Propri\u00e9t\u00e9s non valide dans la liste FROM.  Soit aucune contrainte nomm\u00e9e ''{0}'' ne s''applique \u00e0 la table ''{1}'', soit la contrainte ne poss\u00e8de pas d''index de secours.
+42Y49=Plusieurs valeurs sont sp\u00e9cifi\u00e9es pour la cl\u00e9 de propri\u00e9t\u00e9 ''{0}''. 
+42Y50=La liste Propri\u00e9t\u00e9s pour la table ''{0}'' peut contenir des valeurs pour l''index ou pour la contrainte, mais pas pour les deux.
+42Y55=''{0}'' ne peut pas \u00eatre ex\u00e9cut\u00e9 sur ''{1}'' parce qu''il n''existe pas.
+42Y56=joinStrategy non valide, ''{0}'', sp\u00e9cifi\u00e9e dans la liste Propri\u00e9t\u00e9s de la table ''{1}''. Les valeurs actuellement prises en charge pour joinStrategy sont ''hash'', ''nestedloop''.
+42Y58=L''exception NumberFormatException s''est produite lors de la conversion de la valeur ''{0}'' pour l''\u00e9l\u00e9ment de substitution d''optimiseur ''{1}''.
+42Y59=Valeur non valide, ''{0}'', sp\u00e9cifi\u00e9e pour l''\u00e9l\u00e9ment de substitution de hashInitialCapacity. La valeur doit \u00eatre > 0.
+42Y60=Valeur non valide, ''{0}'', sp\u00e9cifi\u00e9e pour l''\u00e9l\u00e9ment de substitution de hashLoadFactor. La valeur doit \u00eatre > 0.0 et <= 1.0.
+42Y61=Valeur non valide, ''{0}'', sp\u00e9cifi\u00e9e pour l''\u00e9l\u00e9ment de substitution de hashMaxCapacity. La valeur doit \u00eatre > 0.
+42Y62=''{0}'' n''est pas autoris\u00e9 sur ''{1}'' parce qu''il s''agit d''une vue.
+42Y63=Une jointure par hachage n\u00e9cessite un pr\u00e9dicat equijoin optimisable sur une colonne dans l''index ou le segment de m\u00e9moire s\u00e9lectionn\u00e9.  Un pr\u00e9dicat equijoin optimisable n''existe dans aucune colonne de la table ou de l''index ''{0}''. Utilisez l''\u00e9l\u00e9ment de substitution d''optimiseur ''index'' pour sp\u00e9cifier cet index ou ce segment de m\u00e9moire sur la table ''{1}''.
+42Y64=La valeur bulkFetch de ''{0}'' n''est pas valide : la valeur minimale pour bulkFetch est 1.
+42Y65=bulkFetch n''est pas autoris\u00e9 sur les jointures ''{0}''.
+42Y66=bulkFetch n'est pas autoris\u00e9 sur les curseurs pouvant \u00eatre mis \u00e0 jour.
+42Y67=Le sch\u00e9ma ''{0}'' ne peut pas \u00eatre supprim\u00e9.
+42Y69=Aucun plan d'ex\u00e9cution valide n'a \u00e9t\u00e9 trouv\u00e9 pour cette instruction. Cela peut s'expliquer de l'une des deux fa\u00e7ons suivantes : soit vous avez sp\u00e9cifi\u00e9 une strat\u00e9gie de jointure par hachage alors que les jointures par hachage ne sont pas autoris\u00e9es (pas d'equijoin optimisable), soit vous essayez de joindre deux ExternalVirtualTables dont chacune fait r\u00e9f\u00e9rence \u00e0 l'autre, de sorte que l'instruction ne peut pas \u00eatre \u00e9valu\u00e9e.
+42Y70=L'ordre de jointure sp\u00e9cifi\u00e9 par l'utilisateur n'est pas valide. Cela peut \u00eatre d\u00fb au fait qu'une colonne de jointure d'une table interne est transmise en tant que param\u00e8tre \u00e0 une table virtuelle externe.
+42Y71=La proc\u00e9dure ou la fonction syst\u00e8me ''{0}'' ne peut pas \u00eatre supprim\u00e9e.
+42Y82=L''instruction pr\u00e9par\u00e9e stock\u00e9e g\u00e9n\u00e9r\u00e9e par le syst\u00e8me ''{0}'' ne peut pas \u00eatre supprim\u00e9e \u00e0 l''aide de DROP STATEMENT.  Elle fait partie d''un d\u00e9clencheur.
+42Y83=Une valeur NULL non typ\u00e9e n''est pas autoris\u00e9e en tant qu''argument pour l''agr\u00e9gat {0}.  Affectez la valeur NULL \u00e0 un type appropri\u00e9.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' ne peut pas figurer dans une d\u00e9finition DEFAULT.
+42Y85=Le mot cl\u00e9 DEFAULT n'est pas autoris\u00e9 dans une clause VALUES lorsque cette clause figure dans une instruction INSERT.
+42Y90=FOR UPDATE n'est pas autoris\u00e9 sur ce type d'instruction.
+42Y91=La clause USING n'est pas autoris\u00e9e dans un EXECUTE STATEMENT pour une action de d\u00e9clencheur.
+42Y92=Les d\u00e9clencheurs {0} peuvent uniquement faire r\u00e9f\u00e9rence aux variables/tables de transition {1}.
+42Y93=Clause REFERENCING incorrecte : un seul nom est autoris\u00e9 pour chaque type de variable/table de transition.
+42Y94=Un AND ou OR poss\u00e8de un op\u00e9rande non bool\u00e9en. Les op\u00e9randes de AND et OR doivent avoir pour r\u00e9sultat TRUE, FALSE ou UNKNOWN.
+42Y95=L''op\u00e9rateur ''{0}'' ayant comme type d''op\u00e9rande de gauche ''{1}'' et comme type d''op\u00e9rande de droite ''{2}'' n''est pas pris en charge.
+42Y96.U=UNKNOWN
+42Y97=Caract\u00e8re d''\u00e9chappement non valide \u00e0 la ligne ''{0}'', colonne ''{1}''.
+42Y98.U="{0}" d\u00e9tect\u00e9 \u00e0 la ligne {1}, colonne {2}
+42Y99.U=Erreur lexicale \u00e0 la ligne {0}, colonne {1}. Exception rencontr\u00e9e : {2}
+42Z00.U=Appel de m\u00e9thode Java ou r\u00e9f\u00e9rence de zone
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=Plusieurs agr\u00e9gats DISTINCT ne sont pas pris en charge \u00e0 ce stade.
+42Z07=Les agr\u00e9gats ne sont pas autoris\u00e9s dans la clause ON.
+42Z08=Une op\u00e9ration d''insertion/remplacement globale n''est pas autoris\u00e9e  sur ''{0}'' parce qu''il contient un d\u00e9clencheur activ\u00e9 ({1}).
+42Z09.U=le COLUMN DEFAULT pour
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=flux
+
+# alter table modify column error messages.
+#####
+42Z15=Type non valide sp\u00e9cifi\u00e9 pour la colonne ''{0}''. Le type d''une colonne ne peut pas \u00eatre modifi\u00e9.
+42Z16=Seule la longueur des colonnes de type VARCHAR peut \u00eatre modifi\u00e9e. 
+42Z17=Longueur incorrecte sp\u00e9cifi\u00e9e pour la colonne ''{0}''. La longueur doit \u00eatre sup\u00e9rieure \u00e0 la longueur de colonne actuelle.
+42Z18=La colonne ''{0}'' fait partie d''une contrainte de cl\u00e9 externe ''{1}''. Pour modifier la longueur de cette colonne, vous devez d''abord supprimer la contrainte, ex\u00e9cuter ALTER TABLE, puis recr\u00e9er la contrainte.
+42Z19=La colonne ''{0}'' est r\u00e9f\u00e9renc\u00e9e par au moins une contrainte de cl\u00e9 externe ''{1}''. Pour modifier la longueur de cette colonne, vous devez d''abord supprimer les contraintes faisant r\u00e9f\u00e9rence, ex\u00e9cuter ALTER TABLE, puis recr\u00e9er la contrainte.
+42Z20=La colonne ''{0}'' ne peut pas accepter de valeur NULL. Elle fait partie d''une cl\u00e9 primaire qui ne peut pas contenir de colonnes ayant une valeur nulle.
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE ''{0}'' a sp\u00e9cifi\u00e9 des attributs pour la colonne ''{1}'' qui ne sont pas compatibles avec la colonne existante.
+42Z21=Incr\u00e9ment non valide sp\u00e9cifi\u00e9 pour l''identit\u00e9 de la colonne ''{0}''. L''incr\u00e9ment doit \u00eatre une valeur autre que z\u00e9ro.
+42Z22=Type non valide sp\u00e9cifi\u00e9 pour la colonne d''identit\u00e9 ''{0}''. Les seuls types valides pour les colonnes d''identit\u00e9 sont BIGINT, INT et SMALLINT.
+42Z23=Tentative de modification d''une colonne d''identit\u00e9 ''{0}''. 
+42Z24=Un d\u00e9passement de la valeur d''identit\u00e9 est survenu pour la colonne ''{1}'' dans la table ''{0}''.
+42Z25=ERREUR INTERNE - Compteur d'identit\u00e9 : Une mise \u00e0 jour a \u00e9t\u00e9 appel\u00e9e sans argument avec la valeur en cours = NULL.
+42Z26=Une colonne ''{0}'' associ\u00e9e \u00e0 une valeur d''identit\u00e9 par d\u00e9faut ne peut pas prendre la valeur ''null''.
+42Z27=Une colonne pouvant prendre la valeur ''null'' ''{0}'' ne peut pas \u00eatre modifi\u00e9e pour prendre une valeur d''identit\u00e9 par d\u00e9faut.
+
+#####
+# end of identity error messages.
+
+42Z30.U=temps pass\u00e9 dans ce ResultSet =
+42Z31.U=temps pass\u00e9 dans ce ResultSet et plus bas =
+42Z32.U=r\u00e9partition de la dur\u00e9e totale : 
+42Z33.U=dur\u00e9e du constructeur (millisecondes) =
+42Z34.U=dur\u00e9e d'ouverture (millisecondes) =
+42Z35.U=dur\u00e9e next (millisecondes) =
+42Z36.U=dur\u00e9e de fermeture (millisecondes) =
+42Z37.U=Aucun
+42Z38.U=Aucune information de positionnement n'est disponible parce que ce ResultSet n'a jamais \u00e9t\u00e9 ouvert.
+42Z39.U=Exception impr\u00e9vue {0} lors de l''extraction du positionneur.
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U={0} sur les premi\u00e8res {1} colonne(s).
+42Z41.U=S\u00e9mantique des valeurs NULL ordonn\u00e9es dans les colonnes suivantes : 
+42Z42.U=ID de colonne
+42Z43.U=Op\u00e9rateur
+42Z44.U=Valeurs NULL ordonn\u00e9es
+42Z45.U=Valeur de retour inconnue
+42Z46.U=Inverser la fen\u00eatre des r\u00e9sultats de la comparaison
+42Z47.U=L''extraction du plan de requ\u00eate sous forme de cha\u00eene n''est pas prise en charge actuellement pour {0}
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=Id de colonne[{0}][{1}]
+
+# matches DB2
+42939=Un objet ne peut pas \u00eatre cr\u00e9\u00e9 avec le nom du sch\u00e9ma ''{0}''.
+
+
+
+
+42Z50=ERREUR INTERNE : Impossible de g\u00e9n\u00e9rer du code pour {0}.
+42Z53=ERREUR INTERNE : Ne sait pas quel type d''activation g\u00e9n\u00e9rer pour la s\u00e9lection du noeud {0}.
+42Z54.U=Cette exception arr\u00eate l'instruction apr\u00e8s l'analyse syntaxique - aucun autre traitement n'est requis.
+42Z55.U=L'ex\u00e9cution a \u00e9t\u00e9 arr\u00eat\u00e9e apr\u00e8s l'analyse syntaxique par l'indicateur de d\u00e9bogage StopAfterParsing.
+42Z56.U=L'ex\u00e9cution a \u00e9t\u00e9 arr\u00eat\u00e9e apr\u00e8s la liaison par l'indicateur de d\u00e9bogage StopAfterBinding.
+42Z57.U=L'ex\u00e9cution a \u00e9t\u00e9 arr\u00eat\u00e9e apr\u00e8s l'optimisation par l'indicateur de d\u00e9bogage StopAfterOptimizing.
+42Z58.U=L'ex\u00e9cution a \u00e9t\u00e9 arr\u00eat\u00e9e apr\u00e8s la g\u00e9n\u00e9ration par l'indicateur de d\u00e9bogage StopAfterGenerating.
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=s\u00e9rialisable
+42Z81.U=lecture valid\u00e9e
+42Z82.U=exclusif
+42Z83.U=partage instantan\u00e9
+42Z84.U=partager
+42Z85.U=table
+42Z86.U=ligne
+42Z87.U=partager la table
+42Z88.U=partager la ligne
+
+# More generic language stuff
+42Z90=La classe ''{0}'' ne renvoie pas de ResultSet pouvant \u00eatre mis \u00e0 jour.
+42Z91=sous-requ\u00eate
+42Z92=lecture reproductible
+42Z9A=lecture non valid\u00e9e
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=La fonction demand\u00e9e ne peut pas faire r\u00e9f\u00e9rence \u00e0 des tables du sch\u00e9ma SESSION.
+# Declare global temporary table language stuff. Matches DB2
+428EK=Le qualifiant d'une table temporaire globale d\u00e9clar\u00e9e doit obligatoirement \u00eatre SESSION.
+42995=La fonction demand\u00e9e ne s'applique pas aux tables temporaires globales.
+42962=Une colonne de type Long ou un param\u00e8tre ''{0}'' n''est pas autoris\u00e9 dans des tables temporaires globales d\u00e9clar\u00e9es, ni des d\u00e9finitions de proc\u00e9dure. 
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=Connect\u00e9 \u00e0
+43X01.U=Num\u00e9ro de sous-requ\u00eate de d\u00e9but
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=Tout ResultSet
+43X03.U=Nombre d'ouvertures
+43X04.U=Lignes affich\u00e9es
+43X05.U=Ensemble de r\u00e9sultats source
+43X06.U=Num\u00e9ro de sous-requ\u00eate de fin
+43X07.U=nombre de lignes estim\u00e9 par l'optimiseur
+43X08.U=co\u00fbt estim\u00e9 par l'optimiseur
+43X09.U=secondes
+43X10.U=Total
+43X11.U=Noeud
+43X12.U={0} non impl\u00e9ment\u00e9 actuellement pour {1}
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=Supprimer ResultSet \u00e0 l'aide de
+43X14.U=verrouillage des tables
+43X15.U=verrouillage des lignes
+43X16.U=mise en diff\u00e9r\u00e9
+43X17.U=Lignes supprim\u00e9es
+43X18.U=Index mis \u00e0 jour
+43X19.U=Supprimer
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=ResultSet d'agr\u00e9gat scalaire distinct
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=Lignes entr\u00e9es
+43X22.U=Agr\u00e9gat scalaire distinct
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U=ResultSet d''analyse distincte pour {0} en utilisant {1} {2}
+43X24.U=contrainte
+43X25.U=index
+43X26.U=ResultSet d''analyse distincte pour {0}
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=au niveau d''isolement {0} \u00e0 l''aide du verrouillage {1}
+43X28.U=informations d'analyse
+43X29.U=La colonne distincte est le num\u00e9ro de colonne
+43X30.U=Les colonnes distinctes sont les num\u00e9ros de colonne
+43X31.U=Taille de la table de hachage
+43X32.U=Lignes filtr\u00e9es
+43X33.U=dur\u00e9e next en millisecondes/ligne
+43X34.U=position de d\u00e9but
+43X35.U=position d'arr\u00eat
+43X36.U=qualifiants d'analyse
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=qualifiants next
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=sur {0} \u00e0 l''aide de {1}
+43X39.U=Analyse distincte
+43X40.U=Informations de tri
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=ResultSet d'agr\u00e9gat regroup\u00e9
+43X42.U=Poss\u00e8de un agr\u00e9gat distinct
+43X43.U=Par ordre de tri
+43X44.U=Agr\u00e9gat regroup\u00e9
+43X45.U=Jointure Exists par hachage
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=ResultSet de jointure Exists par hachage
+43X47.U=Jointure par hachage
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=ResultSet de jointure par hachage
+43X49.U=Jointure externe gauche par hachage
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=ResultSet de jointure externe gauche par hachage
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U=ResultSet d''analyse du hachage pour {0} en utilisant {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U=ResultSet d''analyse du hachage pour {0}
+43X53.U=La cl\u00e9 de hachage est le num\u00e9ro de colonne
+43X54.U=Les cl\u00e9s de hachage sont les num\u00e9ros de colonne
+43X55.U=Analyse du hachage
+43X56.U=Sous-requ\u00eates associ\u00e9es
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=ResultSet de table de hachage
+43X58.U=Table de hachage
+43X59.U=tous
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U=ResultSet de la ligne de base vers la ligne d''index pour {0}
+43X61.U=Colonnes accessible \u00e0 partir du segment de m\u00e9moire
+#NOTE: {0} is a table name
+43X62.U=pour {0}
+43X63.U=Ligne de base vers ligne d'index
+43X64.U=mode d'insertion : insertion globale
+43X65.U=mode d'insertion : normal (impossible d'effectuer une insertion globale car la table est non vide)
+43X66.U=mode d'insertion : normal
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=Ins\u00e9rer ResultSet \u00e0 l'aide de
+43X68.U=Lignes ins\u00e9r\u00e9es
+43X69.U=Ins\u00e9rer
+43X70.U=Joindre
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=ResultSet de derni\u00e8re analyse de l''index des cl\u00e9s pour {0} en utilisant l''index {1}
+43X72.U=au niveau d''isolement {0} \u00e0 l''aide du verrouillage {1} choisi par l''optimiseur
+43X73.U=Analyse de table
+43X74.U=Analyse d'index
+#NOTE: {0} is a table name or class name
+43X75.U=sur {0}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=ResultSet mat\u00e9rialis\u00e9
+43X77.U=dur\u00e9e de cr\u00e9ation du conglom\u00e9rat temporaire (millisecondes)
+43X78.U=dur\u00e9e d'extraction du conglom\u00e9rat temporaire (millisecondes)
+43X79.U=Lignes vues de la gauche
+43X80.U=Lignes vues de la droite
+43X81.U=Lignes renvoy\u00e9es
+43X82.U=Ensemble de r\u00e9sultats de gauche
+43X83.U=Ensemble de r\u00e9sultats de droite
+43X84.U=Jointure Exists en boucle imbriqu\u00e9e
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=ResultSet de jointure Exists en boucle imbriqu\u00e9e
+43X86.U=Jointure en boucle imbriqu\u00e9e
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=ResultSet de jointure en boucle imbriqu\u00e9e
+43X88.U=Lignes de droite vides renvoy\u00e9es
+43X89.U=Jointure externe gauche en boucle imbriqu\u00e9e
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=ResultSet de jointure externe gauche en boucle imbriqu\u00e9e
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=ResultSet normalis\u00e9
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=ResultSet \u00e0 valeur unique
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=ResultSet de projection-limitation
+43X94.U=limitation
+43X95.U=projection
+43X96.U=dur\u00e9e de limitation (millisecondes)
+43X97.U=dur\u00e9e de projection (millisecondes)
+43X98.U=Limitation-projection
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=ResultSet de ligne
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=ResultSet d'agr\u00e9gat scalaire
+43Y01.U=Optimisation de cl\u00e9 d'index
+43Y02.U=Agr\u00e9gat scalaire
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=ResultSet insensible au d\u00e9filement
+43Y04.U=Nombre de lectures \u00e0 partir de la table de hachage
+43Y05.U=Nombre d'\u00e9critures dans la table de hachage
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=ResultSet de tri
+43Y07.U=Eliminer les \u00e9l\u00e9ments en double
+43Y08.U=Tri
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U=ResultSet d''analyse d''index pour {0} en utilisant {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U=ResultSet d''analyse de table pour {0}
+43Y11.U=Verrouillage effectif utilis\u00e9 : verrouillage au niveau de la table
+43Y12.U=Taille d'extraction
+43Y13.U=qualifiants
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=ResultSet d'union
+43Y15.U=Union
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=ResultSet de mise \u00e0 jour utilisant le verrouillage {0}
+43Y17.U=Lignes mises \u00e0 jour
+43Y18.U=Mettre \u00e0 jour
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U=ResultSet de VTI pour {0}
+43Y20.U=VTI
+43Y21.U=Sous-requ\u00eates mat\u00e9rialis\u00e9es
+43Y22.U=Nom de l'instruction
+43Y23.U=Texte de l'instruction
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=Dur\u00e9e de l'analyse
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=Dur\u00e9e de la liaison
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=Dur\u00e9e de l'optimisation
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=Dur\u00e9e de la g\u00e9n\u00e9ration
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=Dur\u00e9e de la compilation
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=Dur\u00e9e de l'ex\u00e9cution
+43Y30.U=Horodatage du d\u00e9but de la compilation
+43Y31.U=Horodatage de la fin de la compilation
+43Y32.U=Horodatage du d\u00e9but de l'ex\u00e9cution
+43Y33.U=Horodatage de la fin de l'ex\u00e9cution
+43Y44.U=Texte du plan d'ex\u00e9cution de l'instruction
+43Y45.U=Phase d''ex\u00e9cution 100%, {0} secondes
+43Y46.U=Ins\u00e9rer le ResultSet du VTI
+43Y47.U=Supprimer le ResultSet du VTI
+43Y49.U=Ins\u00e9rer le VTI
+43Y50.U=Supprimer le VTI
+43Y51.U=Supprimer le ResultSet en cascade
+43Y52.U=Supprimer le ResultSet en cascade \u00e0 l'aide de
+43Y53.U=Actions de r\u00e9f\u00e9rentiel dans des tables d\u00e9pendantes
+43Y54.U=D\u00e9but de l'action de r\u00e9f\u00e9rentiel dans un num\u00e9ro de table d\u00e9pendante
+43Y55.U=Fin de l'action de r\u00e9f\u00e9rentiel dans un num\u00e9ro de table d\u00e9pendante
+
+54004=L'instruction SELECT contient trop d'\u00e9l\u00e9ments dans la liste select, ORDER BY ou GROUP BY.
+54008=L'instruction CREATE INDEX sp\u00e9cifie un trop grand nombre de colonnes (le maximum est 16).
+54023=Le nombre de param\u00e8tres maximal admis pour une proc\u00e9dure a \u00e9t\u00e9 d\u00e9pass\u00e9. La limite est de {0} et le nombre de param\u00e8tres pour la proc\u00e9dure {1} est {2}.
+54038=La profondeur maximale de d\u00e9clencheurs imbriqu\u00e9s a \u00e9t\u00e9 d\u00e9pass\u00e9e.
+
+## all other org.apache.derby.catalog.types
+44X00.U=Nom du type SQL
+44X05.U=erreur suivante
+
+X0X02.S=La table ''{0}'' ne peut pas \u00eatre verrouill\u00e9e en mode ''{1}''.
+X0X03.S=Etat de transaction non valide - la conservation du curseur requiert le m\u00eame niveau d'isolement
+X0X05.S=La table ''{0}'' n''existe pas.
+X0X0E.S=L''emplacement de la colonne ''{0}'' r\u00e9pertori\u00e9 dans le tableau de s\u00e9lection des colonnes \u00e0 g\u00e9n\u00e9ration automatique n''a pas \u00e9t\u00e9 trouv\u00e9 dans la table d''insertion.
+X0X0F.S=Le nom de colonne ''{0}'' r\u00e9pertori\u00e9 dans le tableau de s\u00e9lection des colonnes \u00e0 g\u00e9n\u00e9ration automatique n''a pas \u00e9t\u00e9 trouv\u00e9 dans la table d''insertion.
+X0X07.S=Impossible de supprimer le fichier JAR ''{0}'' parce qu''il se trouve dans votre db2j.database.classpath ''{0}''.
+X0X10.S=La clause USING a renvoy\u00e9 plusieurs lignes ; seuls les ResultSets d'une seule ligne sont autoris\u00e9s.
+X0X11.S=La clause USING n'a pas renvoy\u00e9 de r\u00e9sultats ; aucun param\u00e8tre ne peut \u00eatre d\u00e9fini.
+X0X13.S=Le fichier JAR ''{0}'' n''existe pas dans le sch\u00e9ma ''{1}''.
+X0X57.S=Une tentative de placement d''une valeur Java de type ''{0}'' dans une valeur SQL a \u00e9t\u00e9 effectu\u00e9e alors qu''il n''existe pas de type SQL correspondant.  La valeur Java est probablement le r\u00e9sultat d''un appel de m\u00e9thode ou de l''acc\u00e8s \u00e0 une zone.
+X0X60.S=Un curseur ayant pour nom ''{0}'' existe d\u00e9j\u00e0.
+X0X61.S=Les valeurs pour la colonne ''{4}'' dans l''index ''{0}'' et la table ''{1}.{2}'' ne correspondent pas \u00e0 l''emplacement de ligne {3}.  La valeur dans l''index est ''{5}'', tandis que la valeur dans la table de base est ''{6}''.  La cl\u00e9 d''index compl\u00e8te, qui comprend l''emplacement de ligne, est ''{7}''.  L''intervention sugg\u00e9r\u00e9e consiste \u00e0 recr\u00e9er l''index.
+X0X62.S=Incoh\u00e9rence d\u00e9tect\u00e9e entre la table ''{0}'' et l''index ''{1}''.  Erreur lors de la tentative d''extraction de l''emplacement de ligne ''{2}'' \u00e0 partir de la table.  La cl\u00e9 d''index compl\u00e8te, qui comprend l''emplacement de ligne, est ''{3}''. L''intervention sugg\u00e9r\u00e9e consiste \u00e0 recr\u00e9er l''index.
+X0X63.S=Exception d''E/S ''{0}'' intercept\u00e9e.
+X0X67.S=Les colonnes de type ''{0}'' ne peuvent pas \u00eatre utilis\u00e9es dans CREATE INDEX, ORDER BY, GROUP BY, UNION ou DISTINCT, parce que les comparaisons ne sont pas prises en charge pour ce type.
+X0X81.S={0} ''{1}'' n''existe pas.
+X0X85.S=L''index ''{0}'' n'a pas \u00e9t\u00e9 cr\u00e9\u00e9 parce que ''{1}'' n''est pas un type d''index valide.
+X0X86.S=0 est une valeur de param\u00e8tre incorrecte pour ResultSet.absolute(int row).
+X0X87.S=ResultSet.relative(int row) ne peut pas \u00eatre appel\u00e9e lorsque le curseur n'est pas positionn\u00e9 sur une ligne.
+X0X95.S=L'op\u00e9ration ''{0}'' ne peut pas \u00eatre ex\u00e9cut\u00e9e sur l''objet ''{1}'' parce qu''il existe un ResultSet ouvert d\u00e9pendant de cet objet.
+X0X99.S=L''index ''{0}'' n''existe pas.
+X0Y16.S=''{0}'' n''est pas une vue.  S''il s'agit d''une table, utilisez plut\u00f4t DROP TABLE.
+X0Y23.S=L''op\u00e9ration ''{0}'' ne peut pas \u00eatre ex\u00e9cut\u00e9e sur l''objet ''{1}'' parce que la VUE ''{2}'' est d\u00e9pendante de cet objet.
+X0Y24.S=L''op\u00e9ration ''{0}'' ne peut pas \u00eatre ex\u00e9cut\u00e9e sur l''objet ''{1}'' parce que l''INSTRUCTION ''{2}'' est d\u00e9pendante de cet objet.
+X0Y25.S=L''op\u00e9ration ''{0}'' ne peut pas \u00eatre ex\u00e9cut\u00e9e sur l''objet ''{1}'' parce que {2} ''{3}'' est d\u00e9pendant de cet objet.
+X0Y26.S=L''index ''{0}'' doit obligatoirement se trouver dans le m\u00eame sch\u00e9ma que la table ''{1}''.
+X0Y28.S=L''index ''{0}'' ne peut pas \u00eatre cr\u00e9\u00e9 sur une table syst\u00e8me ''{1}''.  Les utilisateurs ne peuvent pas cr\u00e9er d''index sur les tables syst\u00e8me.
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' existe d\u00e9j\u00e0 dans {2} ''{3}''.
+X0Y38.S=Impossible de cr\u00e9er l''index ''{0}'' parce que la table ''{1}'' n''existe pas.
+X0Y41.S=La contrainte ''{0}'' n''est pas valide : la table r\u00e9f\u00e9renc\u00e9e {1} ne poss\u00e8de pas de cl\u00e9 primaire.  Vous pouvez soit ajouter une cl\u00e9 primaire \u00e0 {1}, soit sp\u00e9cifier explicitement les colonnes d''une contrainte unique \u00e0 laquelle cette cl\u00e9 externe fait r\u00e9f\u00e9rence.
+X0Y42.S=La contrainte ''{0}'' n''est pas valide : les types des colonnes de cl\u00e9s externes ne correspondent pas aux types des colonnes r\u00e9f\u00e9renc\u00e9es.
+X0Y43.S=La contrainte ''{0}'' n''est pas valide : le nombre de colonnes de {0} ({1}) ne correspond pas au nombre de colonnes de la cl\u00e9 r\u00e9f\u00e9renc\u00e9e ({2}).
+X0Y44.S=La contrainte ''{0}'' n''est pas valide : aucune contrainte de cl\u00e9 unique ou primaire de la table ''{1}'' ne correspond au nombre et aux types des colonnes de la cl\u00e9 externe.
+X0Y45.S=La contrainte de cl\u00e9 externe ''{0}'' ne peut pas \u00eatre ajout\u00e9e ni activ\u00e9e dans la table {1} parce que 1 ou plusieurs cl\u00e9s externes ne poss\u00e8dent pas de cl\u00e9s r\u00e9f\u00e9renc\u00e9es correspondantes.
+X0Y46.S=La contrainte ''{0}'' n''est pas valide : la table r\u00e9f\u00e9renc\u00e9e {1} n''existe pas.
+X0Y54.S=Le sch\u00e9ma ''{0}'' ne peut pas \u00eatre supprim\u00e9 parce qu''il n''est pas vide.
+X0Y55.S=Le nombre de lignes de la table de base ne correspond pas au nombre de lignes d''au moins 1 des index de la table. L''index ''{0}'' de la table ''{1}.{2}'' comprend {3} lignes, mais la table de base en comprend {4}.  L''intervention sugg\u00e9r\u00e9e consiste \u00e0 recr\u00e9er l''index.
+X0Y56.S=''{0}'' n''est pas autoris\u00e9 sur la table syst\u00e8me ''{1}''.
+X0Y57.S=Une colonne n''acceptant pas de valeurs NULL ne peut pas \u00eatre ajout\u00e9e \u00e0 la table ''{0}'' \u00e9tant donn\u00e9 que la table contient au moins 1 ligne.  Les colonnes n''acceptant pas de valeurs NULL peuvent uniquement \u00eatre ajout\u00e9es \u00e0 des tables vides.
+X0Y58.S=La tentative d''ajout d''une contrainte de cl\u00e9 primaire \u00e0 la table ''{0}'' a \u00e9chou\u00e9 parce que la table contient d\u00e9j\u00e0 une contrainte de ce type.  Une table ne peut avoir qu''une seule contrainte de cl\u00e9 primaire.
+X0Y59.S=La tentative d''ajout ou d''activation d''une ou plusieurs contraintes sur la table ''{1}'' a \u00e9chou\u00e9 parce que la table contient {2} ligne(s) qui violent la ou les contraintes de v\u00e9rification suivantes : {0}.
+X0Y63.S=La commande sur la table ''{0}'' a \u00e9chou\u00e9. Des donn\u00e9es NULL ont \u00e9t\u00e9 trouv\u00e9es dans une ou plusieurs colonnes d''index/de contrainte de cl\u00e9 primaire ou unique. Toutes les colonnes d''une cl\u00e9 d''index primaire ou unique doivent comporter de valeurs non nulles.
+X0Y66.S=Impossible d'\u00e9mettre une validation dans une connexion imbriqu\u00e9e dont la connexion parent contient une op\u00e9ration en attente.
+X0Y67.S=Impossible d'\u00e9mettre une annulation dans une connexion imbriqu\u00e9e dont la connexion parent contient une op\u00e9ration en attente.
+X0Y68.S={0} ''{1}'' existe d\u00e9j\u00e0.
+X0Y69.S={1} n''est pas autoris\u00e9 parce que le d\u00e9clencheur {0} est actif sur {2}.
+X0Y70.S=INSERT, UPDATE et DELETE ne sont pas autoris\u00e9s sur la table {1} parce que le d\u00e9clencheur {0} est actif.
+X0Y71.S=La manipulation de transaction, telle que SET ISOLATION, n''est pas autoris\u00e9e parce que le d\u00e9clencheur {0} est actif.
+X0Y72.S=Une op\u00e9ration d''insertion/remplacement globale n''est pas autoris\u00e9e  sur ''{0}'' parce qu''il contient un d\u00e9clencheur activ\u00e9 ({1}).
+X0Y77.S=Impossible d'\u00e9mettre une instruction de d\u00e9finition de l'isolement d'une transaction sur une transaction globale qui est en cours car cela entra\u00eenerait implicitement la validation de la transaction globale. 
+X0Y78.S=Statement.executeQuery() ne peut pas \u00eatre appel\u00e9e avec une instruction qui renvoie un nombre de lignes.
+X0Y79.S=Statement.executeUpdate() ne peut pas \u00eatre appel\u00e9e avec une instruction qui renvoie un ResultSet.
+X0Y80.S=Echec de l''op\u00e9ration ALTER sur la table ''{0}''. Des donn\u00e9es NULL ont \u00e9t\u00e9 trouv\u00e9es dans la colonne ''{1}''.
+X0Y83.S=AVERTISSEMENT : Lors de la suppression d''une ligne d''une table, la ligne d''index correspondant \u00e0 la ligne de la table de base {0} n''a pas \u00e9t\u00e9 trouv\u00e9e dans l''index avec l''ID de conglom\u00e9rat {1}.  Ce probl\u00e8me a \u00e9t\u00e9 corrig\u00e9 automatiquement dans le cadre de l''op\u00e9ration de suppression.
+XCL01.S=L''ensemble de r\u00e9sultats ne renvoie pas de lignes ; l''op\u00e9ration {0} n'est pas autoris\u00e9e.
+XCL05.S=L''activation est ferm\u00e9e, l''op\u00e9ration {0} n''est pas autoris\u00e9e.
+XCL07.S=Le curseur ''{0}'' est ferm\u00e9. V\u00e9rifiez que la fonction de validation automatique est d\u00e9sactiv\u00e9e (OFF).
+XCL08.S=Le curseur ''{0}'' ne se trouve pas sur une ligne.
+XCL09.S=Une activation qui ne correspond pas \u00e0 l''instruction pr\u00e9par\u00e9e (PreparedStatement) a \u00e9t\u00e9 transmise \u00e0 la m\u00e9thode ''{0}''.
+XCL10.S=Une instruction pr\u00e9par\u00e9e (PreparedStatement) a \u00e9t\u00e9 recompil\u00e9e et les param\u00e8tres ont chang\u00e9.  Si vous utilisez JDBC, vous devez de nouveau pr\u00e9parer l'instruction.
+XCL12.S=Une tentative de placement d''une valeur de donn\u00e9es de type ''{0}'' dans une valeur de donn\u00e9es de type ''{1}'' a \u00e9t\u00e9 effectu\u00e9e.
+XCL13.S=La position de param\u00e8tre ''{0}'' est en dehors des limites.  Le nombre de param\u00e8tres pour cette instruction pr\u00e9par\u00e9e est ''{1}''.
+XCL15.S=Une exception ClassCastException s''est produite lors de l''appel de la m\u00e9thode compareTo() sur un objet ''{0}''.  Le param\u00e8tre pour compareTo() est de classe ''{1}''.
+XCL16.S=Le ResultSet n''est pas ouvert, l''op\u00e9ration ''{0}'' n''est pas autoris\u00e9e. V\u00e9rifiez que la fonction de validation automatique est d\u00e9sactiv\u00e9e (OFF).
+XCL17.S=Instruction non autoris\u00e9e dans cette base de donn\u00e9es.
+XCL19.S=Ligne manquante dans la table ''{0}'' pour la cl\u00e9 ''{1}''.
+XCL20.S=Les catalogues dont le niveau de version est ''{0}'' ne peuvent pas \u00eatre mis \u00e0 niveau vers le niveau de version ''{1}''.
+XCL21.S=Vous essayez d'ex\u00e9cuter une instruction de d\u00e9finition de donn\u00e9es (CREATE, DROP ou ALTER) tandis que vous pr\u00e9parez une instruction diff\u00e9rente.  Cette op\u00e9ration n'est pas autoris\u00e9e. Cette situation peut se produire si vous ex\u00e9cutez une instruction de d\u00e9finition de donn\u00e9es \u00e0 partir d'un initialiseur statique d'une classe Java qui est en cours d'utilisation depuis une instruction SQL.
+XCL22.S=Le param\u00e8tre {0} ne peut pas \u00eatre enregistr\u00e9 en tant que param\u00e8tre OUT car il s''agit d''un param\u00e8tre IN.
+XCL23.S=Le type SQL num\u00e9ro ''{0}'' n''est pas un type pris en charge par registerOutParameter().
+XCL24.S=Le param\u00e8tre {0} semble \u00eatre un param\u00e8tre de sortie, mais il n''a pas \u00e9t\u00e9 d\u00e9sign\u00e9 ainsi par registerOutParameter().  S''il ne s''agit pas d''un param\u00e8tre de sortie, alors il doit \u00eatre d\u00e9fini sur le type {1}.
+XCL25.S=Le param\u00e8tre {0} ne peut pas \u00eatre enregistr\u00e9 pour \u00eatre de type {1} parce qu''il est mapp\u00e9 vers le type {2} et qu''ils sont incompatibles.
+XCL26.S=Le param\u00e8tre {0} n''est pas un param\u00e8tre de sortie.
+XCL27.S=Les param\u00e8tres de sortie en renvoi ne peuvent pas \u00eatre d\u00e9finis.
+XCL30.S=Une exception d''E/S a \u00e9t\u00e9 \u00e9mise lors de la lecture d''un ''{0}'' \u00e0 partir d''un flux d''entr\u00e9e (InputStream).
+XCL31.S=Instruction ferm\u00e9e.
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=La table ne peut pas \u00eatre d\u00e9finie comme \u00e9tant d\u00e9pendante de la table {0} en raison des limitations de la r\u00e8gle de suppression. (La relation est auto-r\u00e9f\u00e9renc\u00e9e et ce type de relation est d\u00e9j\u00e0 associ\u00e9 \u00e0 la r\u00e8gle de suppression SET NULL.) 
+XCL34.S=La table ne peut pas \u00eatre d\u00e9finie comme \u00e9tant d\u00e9pendante de la table {0} en raison des limitations de la r\u00e8gle de suppression. La relation engendre un cycle de deux ou plusieurs tables qui \u00e9tablit une d\u00e9pendance en cas de suppression entre chaque table (toutes les autres r\u00e8gles de suppression du cycle sont en CASCADE).  
+XCL35.S=La table ne peut pas \u00eatre d\u00e9finie comme \u00e9tant d\u00e9pendante de la table {0} en raison des limitations de la r\u00e8gle de suppression. Dans le cadre de la relation, une d\u00e9pendance en cas de suppression s''\u00e9tablit entre cette table et la table indiqu\u00e9e en vertu de plusieurs relations et la r\u00e8gle de suppression de la relation existante est SET NULL.  
+
+XCL36.S=la r\u00e8gle de suppression de la cl\u00e9 externe doit \u00eatre {0}. La contrainte r\u00e9f\u00e9rentielle est auto-r\u00e9f\u00e9renc\u00e9e et une contrainte de ce type est d\u00e9j\u00e0 associ\u00e9e \u00e0 la r\u00e8gle de suppression indiqu\u00e9e (NO ACTION, RESTRICT ou CASCADE). 
+XCL37.S=la r\u00e8gle de suppression de la cl\u00e9 externe doit \u00eatre {0}. La contrainte r\u00e9f\u00e9rentielle est auto-r\u00e9f\u00e9renc\u00e9e et la table est d\u00e9pendante dans le cadre d''une relation avec la r\u00e8gle de suppression CASCADE.
+XCL38.S=la r\u00e8gle de suppression de la cl\u00e9 externe doit \u00eatre {0}. Dans le cadre de la relation, une d\u00e9pendance en cas de suppression est \u00e9tablie entre cette table et une table identique en vertu de plusieurs relations qui doivent \u00eatre associ\u00e9es \u00e0 la m\u00eame r\u00e8gle de suppression (NO ACTION, RESTRICT ou CASCADE). 
+
+XCL39.S=la r\u00e8gle de suppression de la cl\u00e9 primaire ne peut pas \u00eatre CASCADE. Une contrainte auto-r\u00e9f\u00e9renc\u00e9e associ\u00e9e \u00e0 une r\u00e8gle de suppression SET NULL, NO ACTION ou RESTRICT existe d\u00e9j\u00e0. 
+XCL40.S=la r\u00e8gle de suppression de la cl\u00e9 primaire ne peut pas \u00eatre CASCADE. La relation engendre un cycle \u00e9tablissant une d\u00e9pendance en cas de suppression de la table avec elle-m\u00eame. Etant donn\u00e9 que l'une des r\u00e8gles de suppression du cycle n'est pas CASCADE, cette relation peut \u00eatre d\u00e9finie. 
+XCL41.S=la r\u00e8gle de suppression de la cl\u00e9 primaire ne peut pas \u00eatre CASCADE. Dans le cadre de la relation, une d\u00e9pendance en cas de suppression est \u00e9tablie entre une autre table et la m\u00eame table par le biais de plusieurs chemins associ\u00e9s \u00e0 des r\u00e8gles de suppression diff\u00e9rentes ou \u00e0 une r\u00e8gle de suppression SET NULL.) 
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=L''utilisation de ''{0}'' requiert que la base de donn\u00e9es soit mise \u00e0 niveau de la version {1} en version {2} ou ult\u00e9rieure.
+
+XCL48.S= L''instruction TRUNCATE TABLE n''est pas autoris\u00e9e sur ''{0}'' parce que sur cette table, des contraintes de cl\u00e9s uniques/primaires sont r\u00e9f\u00e9renc\u00e9s par des contraintes de cl\u00e9s externes activ\u00e9es \u00e0 partir d''autres tables. 
+XCL49.S= L''instruction TRUNCATE TABLE n''est pas autoris\u00e9e sur ''{0}'' parce qu''elle contient un d\u00e9clencheur DELETE activ\u00e9 ({1}).
+XCL50.S=La mise \u00e0 niveau de la base de donn\u00e9es \u00e0 partir d''une version ant\u00e9rieure n''est pas prise en charge.  Le niveau de version de la base de donn\u00e9es est ''{0}'' et celui de ce logiciel est ''{1}''.
+
+
+# Transaction states, matches DB2
+25000=Etat de transaction non valide.
+
+# Authorization
+25501=Impossible de d\u00e9finir la propri\u00e9t\u00e9 en lecture seule de la connexion dans une transaction active.
+25502=Une modification des donn\u00e9es SQL n'est pas autoris\u00e9e pour une connexion, un utilisateur ou une base de donn\u00e9es en lecture seule.
+25503=Une DDL n'est pas autoris\u00e9e pour une connexion, un utilisateur ou une base de donn\u00e9es en lecture seule.
+25505=Un utilisateur en lecture seule ou un utilisateur dans une base de donn\u00e9es en lecture seule n'est pas autoris\u00e9 \u00e0 d\u00e9sactiver le mode lecture seule sur une connexion.
+28501=Propri\u00e9t\u00e9 d''autorisation de la base de donn\u00e9es incorrecte ''{0}={1}''.
+28502.C=Le nom d''utilisateur ''{0}'' n''est pas valide. 
+28503=Le ou les utilisateurs ''{0}'' ne doivent pas figurer \u00e0 la fois dans les listes d''autorisation d''acc\u00e8s en lecture seule et d''acc\u00e8s int\u00e9gral.
+28504=Le ou les utilisateurs ''{1}'' sont r\u00e9p\u00e9t\u00e9s dans la liste d''acc\u00e8s ''{0}'' ;
+04501.C=Connexion \u00e0 la base de donn\u00e9es refus\u00e9.
+
+
+# Dependency Manager
+XD003.S=Impossible de restaurer la d\u00e9pendance \u00e0 partir du disque. DependableFinder = ''{0}''. Informations suppl\u00e9mentaires : ''{1}''.
+XD004.S=Impossible de stocker les d\u00e9pendances.
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=Etat du curseur non valide - pas de ligne en cours.
+
+07000=Au moins un param\u00e8tre de l'instruction en cours n'est pas initialis\u00e9.
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=Le param\u00e8tre {0} est un param\u00e8tre de proc\u00e9dure {1} et doit \u00eatre enregistr\u00e9 avec CallableStatement.registerOutParameter avant son ex\u00e9cution.
+
+07009=Aucun param\u00e8tre d'entr\u00e9e.
+
+S0022=La colonne ''{0}'' est introuvable.
+XJ009.S=Utilisation de CallableStatement requise pour un appel de proc\u00e9dure stock\u00e9e ou l''utilisation de param\u00e8tres de sortie : {0}
+XJ010.S=Impossible de g\u00e9n\u00e9rer un point de sauvegarde lorsque autoCommit est activ\u00e9.
+XJ011.S=Impossible de transmettre une valeur null comme nom du point de sauvegarde.
+XJ012.S=''{0}'' est d\u00e9j\u00e0 ferm\u00e9.
+XJ013.S=Aucun ID pour les points de sauvegarde nomm\u00e9s.
+XJ014.S=Aucun nom pour les points de sauvegarde dont le nom n'est pas indiqu\u00e9.
+XJ016.S=La m\u00e9thode ''{0}'' n''est pas autoris\u00e9e sur une instruction pr\u00e9par\u00e9e.
+XJ017.S=Aucune commande savepoint autoris\u00e9e dans le code de d\u00e9clenchement.
+XJ018.S=Le nom de colonne ne peut pas \u00eatre nul.
+XJ020.S=Le type d''objet n''est pas convertible en TYPE ''{0}'', la valeur java.sql.Types est incorrecte ou l''objet \u00e9tait NULL.
+XJ022.S=Impossible de d\u00e9finir le flux : ''{0}''.
+XJ023.S=Le flux en entr\u00e9e contenait moins de donn\u00e9es que la longueur demand\u00e9e.
+XJ025.S=La longueur du flux en entr\u00e9e ne peut pas \u00eatre n\u00e9gative.
+XJ030.S=Impossible de d\u00e9finir AUTOCOMMIT sur ON dans une connexion imbriqu\u00e9e.
+XJ042.S=''{0}'' n''est pas une valeur admise pour la propri\u00e9t\u00e9 ''{1}''.
+XJ044.S=''{0}'' est une \u00e9chelle non valide.
+XJ045.S=Un niveau d''isolement non valide ou non pris en charge (actuellement), ''{0}'', a \u00e9t\u00e9 transmis \u00e0 Connection.setTransactionIsolationLevel(). Les valeurs actuellement prises ne charge sont java.sql.Connection.TRANSACTION_SERIALIZABLE, java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED et java.sql.Connection.TRANSACTION_READ_UNCOMMITTED.
+XJ04B.S=Le fichier de commandes ne peut pas contenir de commande qui essaye de renvoyer un ensemble de r\u00e9sultats.
+XJ04C.S=Le fichier de commandes CallableStatement ne peut pas contenir de param\u00e8tres de sortie.
+XJ056.S=Impossible de d\u00e9finir AUTOCOMMIT sur ON dans une connexion XA.
+XJ057.S=Impossible de valider une transaction globale qui utilise la connexion ; le traitement de la validation doit passer par l'interface XAResource.
+XJ058.S=Impossible d''annuler une transaction globale qui utilise la connexion ; le traitement de la validation doit passer par l'interface XAResource.
+XJ059.S=Impossible de fermer une connexion tandis qu'une transaction globale est toujours active.
+XJ05C.S=Impossible de d\u00e9finir la conservation de ResultSet.HOLD_CURSORS_OVER_COMMIT pour une transaction globale.
+XJ061.S=La m\u00e9thode ''{0}'' est uniquement autoris\u00e9e sur les curseurs de d\u00e9filement.
+XJ062.S=Valeur de param\u00e8tre non admise ''{0}'' pour ResultSet.setFetchSize(int rows).
+XJ063.S=Valeur de param\u00e8tre non admise ''{0}'' pour Statement.setMaxRows(int maxRows).  La valeur du param\u00e8tre doit \u00eatre >= 0.
+XJ064.S=Valeur de param\u00e8tre non admise ''{0}'' pour setFetchDirection(int direction).
+XJ065.S=Valeur de param\u00e8tre non admise ''{0}'' pour Statement.setFetchSize(int rows).
+XJ066.S=Valeur de param\u00e8tre non admise ''{0}'' pour Statement.setMaxFieldSize(int max).
+XJ067.S=Le pointeur de text SQL est nul.
+XJ068.S=Seuls executeBatch et clearBatch sont autoris\u00e9s au milieu d'un fichier de commandes.
+XJ069.S=Aucune m\u00e9thode SetXXX autoris\u00e9e avec Execute Statement Using.
+XJ080.S=Execute Statement Using a transmis {0} param\u00e8tres au lieu de {1}.
+XJ070.S=Un argument de position n\u00e9gatif ou \u00e9gal \u00e0 z\u00e9ro ''{0}'' a \u00e9t\u00e9 transmis dans une m\u00e9thode Blob ou Clob.
+XJ071.S=Un argument de longueur n\u00e9gatif ou \u00e9gal \u00e0 z\u00e9ro ''{0}'' a \u00e9t\u00e9 transmis dans une m\u00e9thode Blob ou Clob.
+XJ072.S=Un sch\u00e9ma ou un searchStr nul a \u00e9t\u00e9 transmis dans une m\u00e9thode de position Blob ou Clob.
+XJ073.S=Les donn\u00e9es de data de ce Blob ou Clob ne sont plus disponibles. Cela peut r\u00e9sulter du fait que sa transaction a \u00e9t\u00e9 valid\u00e9e ou que sa connexion a \u00e9t\u00e9 arr\u00eat\u00e9e.
+XJ076.S=L''argument de position ''{0}'' d\u00e9passe la taille du Blob/Clob.
+XJ077.S=Une exception s'est produite lors de la tentative de lecture du premier octet/caract\u00e8re du sch\u00e9ma Blob/Clob en utilisant getBytes/getSubString.
+XJ082.U=Les valeurs BLOB/CLOB ne sont pas autoris\u00e9es en tant que param\u00e8tres de m\u00e9thode ou r\u00e9cepteur.
+
+0A000.S=Fonction non impl\u00e9ment\u00e9e : {0}.
+
+XJ004.C=La base de donn\u00e9es ''{0}'' est introuvable.
+08004=Connexion refus\u00e9e : {0}
+A020=Authentification non valide.
+08003=Aucune connexion en cours.
+XJ028.C=L''URL ''{0}'' n'est pas dans un format appropri\u00e9.
+XJ040.C=Echec du d\u00e9marrage de la base de donn\u00e9es ''{0}'' ; pour plus de d\u00e9tails, voir l''exception suivante.
+XJ041.C=Echec de la cr\u00e9ation de la base de donn\u00e9es ''{0}'' ; pour plus de d\u00e9tails, voir l''exception suivante.
+XJ049.C=Des attributs de cr\u00e9ation incompatibles ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s.
+XJ081.C=Des attributs de cr\u00e9ation/restauration/r\u00e9cup\u00e9ration incompatibles ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s.
+XJ05B.C=L''attribut JDBC ''{0}'' a une valeur incorrecte ''{1}'' ; les valeurs admises sont ''{2}''.
+
+XXXXX.C.6=La session de base de donn\u00e9es normale est ferm\u00e9e.
+
+08006.D=Arr\u00eat de la base de donn\u00e9es ''{0}''.
+
+XJ015.M=Arr\u00eat du syst\u00e8me Derby.
+
+01J01=La base de donn\u00e9es ''{0}'' n''est pas cr\u00e9\u00e9e ; la connexion a donc \u00e9t\u00e9 \u00e9tablie avec un base de donn\u00e9es existante.
+01J02=Les curseurs sensibles au d\u00e9filement ne sont pas impl\u00e9ment\u00e9s actuellement.
+01J03=Les ResultSets pouvant \u00eatre mis \u00e0 jour ne sont pas impl\u00e9ment\u00e9s actuellement.
+01J04=La classe ''{0}'' pour la colonne ''{1}'' n''impl\u00e9mente pas java.io.Serializable ou java.sql.SQLData. Des instances doivent impl\u00e9menter l''une de ces interfaces pour permettre leur enregistrement.
+01J05=La mise \u00e0 niveau de la base de donn\u00e9es a abouti. La base de donn\u00e9es mise \u00e0 niveau est d\u00e9sormais pr\u00eate \u00e0 \u00eatre utilis\u00e9e. Echec de la revalidation des instructions pr\u00e9par\u00e9es stock\u00e9es. Pour plus de d\u00e9tails sur cet \u00e9chec, reportez-vous \u00e0 l'exception suivante.
+
+XJ001.U=Exception Java : ''{1}: {0}''.
+XJ050.U=La base de donn\u00e9es n\u00e9cessite une mise \u00e0 niveau de la version {0}. D\u00e9finissez l''attribut ''upgrade=true'' sur l''URL de connexion JDBC pour permettre une mise \u00e0 niveau en version {1}.
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=Droit d''acc\u00e8s ''{0}'' inconnu.
+XCZ01.S=Utilisateur ''{0}'' inconnu.
+XCZ02.S=Param\u00e8tre ''{0}''=''{1}'' non valide.
+
+# SQL J Jar support
+46001=Exception au cours de l''acc\u00e8s \u00e0 un fichier JAR en utilisant l''URL ''{0}''.
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=----------- DEBUT MESSAGE D'ERREUR ------------\n
+L002=----------  FIN MESSAGE D'ERREUR -------------\n
+L003=\n------------  DEBUT PILE D'ERREURS D'ARRET -----------\n
+L004=\n------------  FIN PILE D'ERREURS D'ARRET -----------\n
+L005=\n------------  DEBUT PILE D'ERREURS ----------\n
+L006=\n------------  FIN PILE D'ERREURS ----------\n
+L007=AVERTISSEMENT : Fichier journal introuvable, cr\u00e9ation d'un nouveau fichier journal. Possibilit\u00e9 d'incoh\u00e9rences dans la base de donn\u00e9es.
+L008=Suppression d''un ancien fichier journal incompatible {0}
+L009=Suppression d''un ancien fichier journal {0}
+L010=Enregistrement de journal incomplet d\u00e9tect\u00e9 dans le fichier {0} ; effacement du fichier journal de la position {1} jusqu''au signal eof \u00e0 la position {2}.
+L011=Le d\u00e9mon des points de contr\u00f4le a intercept\u00e9 une exception standard.
+L012=l''enregistrement de journal n''est pas premier, mais la transaction n''est pas dans la table de transaction : {0}
+L013=l''enregistrement de journal est premier, mais la transaction est d\u00e9j\u00e0 dans la table de transaction : {0}
+L014=Instant du d\u00e9part incorrect
+L015=le nouveau fichier journal existe et ne peut pas \u00eatre supprim\u00e9 {0}
+L016=impossible de cr\u00e9er de nouveau fichier journal {0}
+L017=impossible de cr\u00e9er de nouveau fichier journal {0} en raison de {1}
+L018=Le syst\u00e8me peut se trouver dans un \u00e9tat incoh\u00e9rent ; fichier manquant {0}
+
+# Class Manager
+C000=La classe {0} a \u00e9t\u00e9 enregistr\u00e9e dans le fichier {1}. Indiquez le fichier et les informations suivantes relatives \u00e0 l''exception au support technique : {2}
+C001=La classe {0} a un type de certificat inconnu dans le fichier JAR {1} ; le certificat X509 est escompt\u00e9.
+C002=Exception de s\u00e9curit\u00e9 \u00e9mise lors de l''acc\u00e8s \u00e0 la classe {0} dans le fichier JAR {1} : {2}
+C003=Exception lors du chargement du fichier JAR de la base de donn\u00e9es {0} - {1}
+C004=Chargeur de classe p\u00e9rim\u00e9 pour la classe {0}
+C005=Chargeur de classe de la base de donn\u00e9es d\u00e9marr\u00e9 - derby.database.classpath=''{0}''
+C006={0} a \u00e9t\u00e9 charg\u00e9 \u00e0 partir du fichier JAR de la base de donn\u00e9es {1}
+C007=Exception lors du chargement de la classe {0} \u00e0 partir du fichier JAR {1} - {2}
+
+# RawStore Data
+
+D001=:\n Amor\u00e7age de Derby version {0} : instance {1}\nsur le r\u00e9pertoire de la base de donn\u00e9es {2} \n
+D002=:\nArr\u00eat de l''instance {0}
+D004=La sauvegarde de la base de donn\u00e9es situ\u00e9e \u00e0 {0} a commenc\u00e9
+D005=l''ancienne copie de sauvegarde a \u00e9t\u00e9 d\u00e9plac\u00e9e de {0} vers {1}
+D006=le r\u00e9pertoire de la base de donn\u00e9es a \u00e9t\u00e9 copi\u00e9 de {0} dans {1}
+D007=la base de donn\u00e9es service.properties a \u00e9t\u00e9 \u00e9dit\u00e9e pour utiliser l'unit\u00e9 de journalisation par d\u00e9faut
+D008=erreur lors de l''\u00e9dition de la base de donn\u00e9es service.properties, abandon de la sauvegarde : {0}
+D009=le r\u00e9pertoire de journalisation a \u00e9t\u00e9 copi\u00e9 de {0} dans {1}
+D010=Sauvegarde abandonn\u00e9e en raison d'une erreur
+D011=l''ancienne copie de sauvegarde situ\u00e9e \u00e0 {0} a \u00e9t\u00e9 supprim\u00e9e
+D012=Sauvegarde termin\u00e9e, l''instant de journalisation est situ\u00e9 \u00e0 {0} \n
+
+# Connectivity 
+J004=identit\u00e9 de la base de donn\u00e9es
+J005=arr\u00eater Derby
+J007=cr\u00e9er une base de donn\u00e9es
+J008=aucun d\u00e9tail
+J010=chiffrer la base de donn\u00e9es sur disque
+J013=mettre la base de donn\u00e9es \u00e0 niveau
+J016=fournisseur de service cryptographique
+J017=algorithme de cryptographie
+J018=longueur de la cl\u00e9 de cryptographie
+J019=cl\u00e9 de cryptographie externe
+J020=cl\u00e9 de cryptographie secr\u00e8te
+J021=territoire de la base de donn\u00e9es
+J022=nom d'utilisateur
+J023=mot de passe de l'utilisateur
+J025=chemin d'acc\u00e8s du r\u00e9pertoire du fichier journal
+J028=chemin de sauvegarde pour r\u00e9cup\u00e9ration aval
+J100=Impossible de trouver la classe de serveur de r\u00e9seau, {0}. Votre chemin d''acc\u00e8s aux classes doit contenir le fichier csnet.jar.
+J101=Impossible de charger la classe du serveur de r\u00e9seau, {0}. {1}  V\u00e9rifiez l''int\u00e9grit\u00e9 de votre fichier csnet.jar.
+J102=Une exception a \u00e9t\u00e9 \u00e9mise au cours du d\u00e9marrage du serveur de r\u00e9seau. {0}
+J103=Une exception a \u00e9t\u00e9 \u00e9mise lors de l''arr\u00eat du serveur de r\u00e9seau. {0}
+
+# Authentication
+A001=FATAL : Aucun service d'authentification n'existe pour le syst\u00e8me
+A002=FATAL : Aucun service d'authentification n'existe pour la base de donn\u00e9es
+A011=AVERTISSEMENT : Aucun nom de serveur LDAP/d''h\u00f4te n''est mentionn\u00e9 dans la propri\u00e9t\u00e9 {0} ; adoption par d\u00e9faut du syst\u00e8me h\u00f4te local:389
+
+I015=org.apache.derby.jdbc.EmbeddedDriver n'est pas enregistr\u00e9 aupr\u00e8s du gestionnaire de pilotes JDBC.
+I024=La base de donn\u00e9es n'est pas disponible.
+I025=Pilote JDBC non disponible
+
+# Import/Export
+XIE01.S=La connexion \u00e9tait nulle.
+XIE03.S=Donn\u00e9es trouv\u00e9es sur la ligne {0} pour la colonne {1} apr\u00e8s le d\u00e9limiteur d''arr\u00eat
+XIE04.S=Fichier de donn\u00e9es introuvable : {0}
+XIE05.S=Le fichier de donn\u00e9es ne peut pas \u00eatre nul.
+XIE06.S=Le nom de l'entit\u00e9 \u00e9tait nul.
+XIE07.S=Les s\u00e9parateurs de zone et d'enregistrements ne peuvent pas \u00eatre des sous-cha\u00eenes les uns des autres.
+XIE08.S=Aucune colonne n''a pour nom : {0}
+XIE09.S=Nombre total de colonnes de la ligne : {0}
+XIE0B.S=La colonne ''{0}'' de la table est de type {1} et n''est pas prise en charge par les fonctions d''importation et d''exportation.
+XIE0D.S=Impossible de trouver de s\u00e9parateur d''enregistrements sur la ligne {0}
+XIE0E.S=Fin de fichier lue en un point inattendu de la ligne {0}
+XIE0I.S=Exception d'E/S obtenue lors de l'\u00e9criture des donn\u00e9es dans le fichier
+XIE0J.S=Un d\u00e9limiteur n'est pas valide ou est utilis\u00e9 plusieurs fois.
+XIE0K.S=Le point a \u00e9t\u00e9 sp\u00e9cifi\u00e9 comme d\u00e9limiteur de cha\u00eene de caract\u00e8res.
+XIE0M.S=La table ''{0}'' n''existe pas.
+
+# Monitor
+M001=\n# *********************************************************************************\n# ***                Veuillez ne PAS \u00e9diter ce fichier.                 ***\n# *** LA MODIFICATION DE SON CONTENU PEUT ENTRAINER UNE ALTERATION DES DONNEES. ***\n# *********************************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_it.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_it.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1235 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=Avvio non riuscito a causa di un'eccezione; per ulteriori dettagli consultare l'eccezione successiva.
+XBM02.D=Avvio non riuscito a causa della mancata funzionalit\u00e0 di {0}. Assicurarsi che il percorso classe comprenda il software Derby corretto.
+XBM05.D=Avvio non riuscito a causa della non disponibilit\u00e0 delle informazioni della versione del prodotto per {0}.
+XBM06.D=Avvio non riuscito, impossibile accedere al database codificato senza la password di avvio corretta.
+XBM07.D=Avvio non riuscito, la password di avvio deve avere una lunghezza di almeno 8 byte.
+XBM08.D=Impossibile avviare {0} classe StorageFactory {1}.
+
+XBM0G.D=Impossibile avviare il motore di codifica. Assicurarsi di eseguire Java 2, di aver scaricato un provider di codifica, ad esempio jce, e di averlo inserito nel percorso classe.
+XBM0H.D=Impossibile creare la directory {0}.
+XBM0I.D=Impossibile eliminare la directory {0}.
+XBM0J.D=Directory {0} gi\u00e0 esistente.
+XBM0K.D=Sotto protocollo per il nome database {0} sconosciuto.
+XBM0L.D=La classe {0} specificata dello schema di autenticazione non implementa l''interfaccia di autenticazione {1}.
+XBM0M.D=Errore durante la creazione dell''istanza della classe dello schema di autenticazione {0}.
+XBM0N.D=Registrazione driver JDBC con java.sql.DriverManager non riuscita, per i dettagli consultare l'eccezione successiva.
+XBM0P.D=Operazione non consentita, il provider di servizi \u00e8 di sola lettura.
+XBM0S.D=Impossibile rinominare il file ''{0}'' in ''{1}''
+XBM0T.D=Sotto protocollo ambiguo per il nome database {0}.
+XBM0U.S=Nessuna classe registrata per l''identificatore {0}
+XBM0V.S=\u00c8 stata generata un''eccezione durante il caricamento della classe {1}, registrata per l''identificatore {0}
+XBM0W.S=\u00c8 stata generata un''eccezione durante la creazione di un''istanza della classe {1}, registrata per l''identificatore {0}
+XBM0X.D=La descrizione delle impostazioni internazionali fornita ''{0}'' non \u00e8 valida; previsto ln[_CO[_variant]]\n ln=codice lingua ISO-639 di due lettere minuscole, CO=codici nazione ISO-3166 di due lettere maiuscole, consultare java.util.Locale.
+XBM0Y.D=Directory del database di backup {0} non trovata. Verificare che il percorso del database di backup specificato sia corretto.
+XBM0Z.D=Impossibile copiare il file ''{0}'' in ''{1}''. Verificare di disporre dello spazio necessario e delle autorizzazioni richieste. 
+XBM0Q.D=File {0} non trovato. Verificare che la copia di backup sia corretta e che non sia danneggiata.
+XBM0R.D=Impossibile eliminare il file {0}.
+
+# Upgrade
+XCW00.D=Aggiornamento non supportato da ''{0}'' a ''{1}''.
+
+# Feature not supported
+
+
+# COntext service
+08000=Connessione chiusa a causa di un'interruzione sconosciuta.
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=Impossibile ottenere un blocco a causa di un altro blocco, ciclo di blocchi e programmi di attesa \u00e8:\n {0}La vittima selezionata \u00e8 XID : {1}
+
+40XL1=Impossibile ottenere un blocco nel tempo richiesto
+40XL2=Impossibile ottenere un blocco nel tempo richiesto.  Il dump lockTable \u00e8: {0}
+
+# ClassManager
+XBCM1.S=Errore di collegamento Java rilevato durante il caricamento della classe {0} generata.
+XBCM2.S=Impossibile creare un''istanza della classe {0} generata.
+XBCM3.S=Il metodo {1}() non esiste nella classe {0} generata.
+
+# Properties
+
+XCY00.S=Valore non valido per la propriet\u00e0 ''{0}''=''{1}''.
+XCY02.S=La modifica della propriet\u00e0 richiesta non \u00e8 supportata ''{0}''=''{1}''.
+XCY03.S=Propriet\u00e0 richiesta ''{0}'' non impostata.
+
+# Cryptography
+XBCX0.S=Eccezione generata dal provider Crittografia; per i dettagli consultare l'eccezione successiva.
+XBCX1.S=Inizializzazione della crittografia con modalit\u00e0 non valida, \u00e8 necessario utilizzare la modalit\u00e0 ENCRYPT o DECRYPT.
+XBCX2.S=Inizializzazione della crittografia con una password di avvio troppo breve, la password deve avere almeno {0} caratteri
+XBCX5.S=Impossibile modificare la password di avvio in un carattere nullo.
+XBCX6.S=Impossibile modificare la password di avvio in un tipo serializzabile non-string.
+XBCX7.S=Formato errato per la modifica della password di avvio.  Il formato corretto \u00e8: vecchia_password_avvio, nuova_password_avvio.
+XBCX8.S=Impossibile modificare la password di avvio di un database non codificato.
+XBCX9.S=Impossibile modificare la password di avvio di un database di sola lettura.
+XBCXA.S=Password di avvio errata.
+XBCXB.S=Spaziatura interna della codifica ''{0}'' errata o non specificata. \u00c8 necessario utilizzare 'NoPadding'.
+XBCXC.S=L''algoritmo di codifica ''{0}'' non esiste. Verificare che il provider ''{1}'' scelto supporti quest''algoritmo.
+XBCXD.S=Impossibile modificare l'algoritmo di codifica dopo la creazione del database.
+XBCXE.S=Impossibile modificare il provider di codifica dopo la creazione del database.
+XBCXF.S=Impossibile trovare la classe ''{0}'' che rappresenta il provider di codifica.
+XBCXG.S=Il provider di codifica ''{0}'' non esiste.
+XBCXH.S=Il formato di encryptionAlgorithm ''{0}'' non \u00e8 corretto. Il formato corretto \u00e8 algorithm/feedbackMode/NoPadding.
+XBCXI.S=La modalit\u00e0 commenti ''{0}'' non \u00e8 supportata. Le modalit\u00e0 commenti supportate sono CBC, CFB, OFB e ECB.
+XBCXJ.S=L'applicazione sta utilizzando una versione di JCE (Java Cryptography Extension) precedente alla 1.2.1.  Aggiornare JCE 1.2.1 e ripetere l'operazione.
+XBCXK.S=La chiave di cifratura fornita non corrisponde alla chiave di cifratura durante la creazione del database. Accertarsi di utilizare la chiave di cifratura appropriata e riprovare. 
+XBCXL.S=Il processo di verifica per la chiave di cifratura non \u00e8 corretto, consultare l'eccezione successiva per dettagli. Le cause possibili potrebbero indicare un errore durante l'accesso al file appropriato per eseguire il processo di verifica.
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=Impossibile creare un nuovo oggetto con la chiave {1} nella cache {0}; \u00e8 gi\u00e0 esistente.
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=Il conglomerato ({0}) richiesto non esiste.
+XSAI3.S=Funzione non implementata.
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=Tipo di scansione
+XSAJ1.U=Numero di pagine visitate
+XSAJ2.U=Numero di righe visitate
+XSAJ3.U=Numero di righe eliminate visitate
+XSAJ4.U=Numero di righe completate
+XSAJ5.U=Numero di colonne lette in sequenza
+XSAJ6.U=Bit impostato di colonne lette in sequenza
+XSAJ7.U=Altezza albero
+XSAJ8.U=Tipo di ordinamento
+XSAJA.U=Numero di righe in input
+XSAJB.U=Numero di righe in output
+XSAJC.U=Numero di esecuzioni unione
+XSAJD.U=Dimensione delle esecuzioni unione
+XSAJE.U=All
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=heap
+XSAJH.U=sort
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=esterno
+XSAJJ.U=interno
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=Violazione protocollo XA.
+XSAX1.S=\u00c8 stato effettuato un tentativo di avvio di una transazione globale con un Xid di una transazione globale esistente.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=Eccezione riscontrata durante il tentativo di avviare il modulo per ''{0}''.
+XSAM2.S=Non esistono indici o conglomerati con ID conglom ''{0}'' da eliminare.
+XSAM3.S=Non esistono indici o conglomerati con ID conglom ''{0}''.
+XSAM4.S=Non esiste alcun ordinamento denominato ''{0}''.
+XSAM5.S=\u00c8 necessario aprire e posizionare una scansione chiamando next() prima di eseguire altre chiamate.
+XSAM6.S=Il record {2} sulla pagina {1} nel contenitore {0}, non \u00e8 stato trovato.
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=Impossibile creare una maschera.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=Funzione non implementata.
+XSCH7.S=Scansione non posizionata.
+XSCH6.S=Contenitore heap con ID contenitore {0} chiuso.
+XSCH5.S=In una tabella di base si \u00e8 verificata una mancata corrispondenza tra il numero di colonne richiesto, {0}, e il numero massimo di colonne, {1}.
+XSCH4.S=Impossibile creare il conglomerato.
+XSCH1.S=Il contenitore {0} non \u00e8 stato trovato.
+XSCH0.S=Impossibile creare il contenitore.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=Riservato per scopi di test.
+XSCB8.S=Il conglomerato btree {0} \u00e8 chiuso.
+XSCB7.S=\u00c8 stato riscontrato un errore interno durante una scansione btree - current_rh \u00e8 null = {0}, la chiave posizione \u00e8 null = {1}.
+XSCB6.S=Limitazione: impossibile aggiornare o inserire il record di un indice secondario btree a causa della mancanza di spazio sulla pagina.  Utilizzare i parametri derby.storage.pageSize e/o derby.storage.pageReservedSpace per evitare questa limitazione.
+XSCB5.S=Durante l'annullamento logico di un'operazione di inserimento o eliminazione di btree, \u00e8 impossibile trovare la riga nell'albero.
+XSCB4.S=\u00c8 stato chiamato un metodo su una scansione aperta btree prima di posizionare la scansione sulla prima riga (ad esempio, non \u00e8 ancora stata effettuata alcuna chiamata next()).  Lo stato corrente della scansione \u00e8 ({0}).
+XSCB3.S=Funzione non implementata.
+XSCB2.S=La propriet\u00e0 richiesta {0} non \u00e8 stata trovata nell''elenco propriet\u00e0 fornito a createConglomerate() per un indice secondario btree.
+XSCB1.S=Il contenitore {0} non \u00e8 stato trovato.
+XSCB0.S=Impossibile creare il contenitore.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=Impossibile acquisire le risorse per l'ordinamento.
+XSAS3.S=Il tipo di riga inserita in un ordinamento non corrisponde all relativo modello.
+XSAS1.S=\u00c8 stato effettuato un tentativo di lettura in sequenza di una riga prima dell'avvio o al termine di un ordinamento.
+XSAS0.S=\u00c8 stato chiamato un metodo interfaccia controller di scansione non appropriato per una scansione su un ordinamento.
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=Impossibile bloccare il database dopo che \u00e8 gi\u00e0 stato bloccato.
+XSRS1.S=Impossibile eseguire il backup del database su {0}, poich\u00e9 non \u00e8 una directory.
+XSRS4.S=Errore durante la ridenominazione del file (durante il backup) da {0} a {1}.
+XSRS5.S=Errore durante la copia del file (durante il backup) da {0} a {1}.
+XSRS6.S=Impossibile creare la directory di backup {0}.
+XSRS7.S=Il backup ha determinato un'eccezione imprevista.
+XSRS8.S=L'Unit\u00e0 di log pu\u00f2 essere impostata solo durante il periodo di creazione del database e non pu\u00f2 essere modificata durante l'esecuzione.
+XSRS9.S=Il record {0} non esiste pi\u00f9
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=Impossibile immettere ulteriori modifiche, la produzione di log \u00e8 stata arrestata.
+XSLB8.S=Tentativo di ripristinare una scansione su {0}, oltre il limite di {1}.
+XSLB6.S=Tentativo di registrare un Record di log di lunghezza 0 o -ve.
+XSLB5.S=Classe instant truncationLWM {1} non valida per il punto di interruzione {0}. L''intervallo valido \u00e8 compreso tra  {2} e {3}.
+XSLB4.S=Impossibile trovare truncationLWM {0}.
+XSLB2.S=Operazione di log {0} con registrazione di dati in eccesso; buffer interno del log saturo.
+XSLB1.S=L''operazione di log {0} riscontra degli errori durante la scrittura al di fuori del flusso di log; ci\u00f2 pu\u00f2 essere determinato da un''operazione di log errata o dal buffer log interno saturo a causa di un''operazione di log di dimensioni eccessive.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=La directory di log {0} esiste. Verificare che il percorso di logDevice specificato sia corretto.  
+XSLAS.D=Directory di log {0} non trovata nella copia di backup durante il ripristino. Verificare che la copia di backup sia corretta e che non sia danneggiata.
+XSLAR.D=Impossibile copiare il file di log ''{0}'' in ''{1}'' durante il ripristino. Verificare di disporre dello spazio necessario e delle autorizzazioni richieste. 
+XSLAQ.D=Impossibile creare il file di log sulla directory {0}.
+XSLAP.D=La versione del database su {0} \u00e8 {1}. Le versioni beta dei database non possono essere aggiornate.
+XSLAO.D=Ripristino del problema imprevisto {0} non riuscito.
+XSLAN.D=Il database su {0} dispone di un formato non compatibile con la versione corrente del software.  Il database \u00e8 stato creato o aggiornato tramite la versione {1}.
+XSLAM.D=Impossibile verificare il formato del database su {1} a causa di IOException.
+XSLAL.D=La dimensione del record di log {2} ha superato la dimensione massima consentita {3}. Errore riscontrato nel file di log {0}, posizione {1}
+XSLAK.D=Il database ha superato il numero massimo di file di log {0}.
+XSLAJ.D=Il sistema di registrazione \u00e8 stato contrassegnato per l'arresto a causa di un problema precedente e non consentir\u00e0 di eseguire altre operazioni fino a quando il sistema non verr\u00e0 arrestato e riavviato.
+XSLAI.D=Impossibile registrare il record di log dei controlli
+XSLAH.D=Database di sola lettura in fase di aggiornamento.
+XSLAF.D=Database di sola lettura creato con buffer dati danneggiati.
+XSLAE.D=Impossibile scrivere o aggiornare il file di controllo su {0}.
+XSLAD.D=Record di log nella classe instant {2} nel file di log {3} corrotto. Lunghezza prevista record di log {0}, lunghezza effettiva {1}.
+XSLAC.D=Il database su {0} dispone di un formato non compatibile con la versione corrente del software; \u00e8 possibile che sia stato creato o aggiornato con una versione successiva.
+XSLAB.D=Impossibile trovare il file di log {0}, assicurarsi che la propriet\u00e0 logDevice sia impostata correttamente con l''adeguato separatore di percorso compatibile con la piattaforma utilizzata.
+XSLAA.D=La memoria \u00e8 stata contrassegnata per l'arresto da un'eccezione precedente.
+XSLA8.D=Impossibile eseguire il rollback della transazione {0}; tentativo di compensare l''operazione {1} con {2}
+XSLA7.D=Impossibile ripetere l''operazione {0} nel log.
+XSLA6.D=Impossibile ripristinare il database.
+XSLA5.D=Impossibile leggere il flusso di log per eseguire il rollback della transazione {0}.
+XSLA4.D=Impossibile scrivere sul log, probabilmente il log \u00e8 pieno.  Eliminare i file inutili.  Inoltre, \u00e8 possibile che il  file system sia di sola lettura, che il disco presenti degli errori o che si siano verificati dei problemi con i supporti.
+XSLA3.D=Log corrotto, dati non validi presenti nel flusso di log.
+XSLA2.D=Il sistema verr\u00e0 arrestato, rilevata eccezione I/O durante l'accesso al file di log.
+XSLA1.D=Record di log inviato al flusso ma non applicabile alla memoria (Oggetto {0}).  Ci\u00f2 pu\u00f2 causare dei problemi di ripristino.
+XSLA0.D=Impossibile scaricare il file di log sul disco {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=SAVEPOINT con il nome inoltrato gi\u00e0 esistente nella transazione corrente.
+3B502.S=\u00c8 stato specificato RELEASE or ROLLBACK TO SAVEPOINT, ma il savepoint non esiste.
+3B001.S=SAVEPOINT, {0} non esistente o non attivo nella transazione corrente.
+3B002.S=E' stato raggiunto il numero massimo di savepoint. 
+XSTA2.S=Una transazione era gi\u00e0 attiva, durante il tentativo di attivarne un'altra.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=\u00c8 stato identificato un errore interno dal modulo RawStore.
+40XT1=Si \u00e8 verificata un'eccezione durante l'operazione di commit della transazione.
+40XT2=Si \u00e8 verificata un'eccezione durante l'operazione di rollback di SAVEPOINT.
+40XT4=\u00c8 stato effettuato un tentativo di chiudere una transazione ancora attiva, la transazione \u00e8 stata interrotta.
+40XT5=Si \u00e8 verificata un'eccezione durante una transazione interna.
+40XT6=Il database si trova in stato inattivo, impossibile attivare la transazione.  Attendere uscita dallo stato inattivo.
+40XT7=Operazione non supportata in una transazione interna.
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=Identificatore non valido.
+XCXB0.S=Percorso classe database non valido: ''{0}''.
+XCXC0.S=Elenco ID non valido.
+XCXE0.S=Si sta tentando di eseguire un'operazione che utilizza le impostazioni internazionali del database, che non sono ancora state impostate.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=Si \u00e8 verificata un'eccezione durante l'interruzione della transazione.
+XSTB2.M=Impossibile registrare le modifiche della transazione, probabilmente si \u00e8 tentato di effettuare la scrittura su un database di sola lettura.
+XSTB3.M=Impossibile interrompere la transazione poich\u00e9 il gestore log \u00e8 nullo, probabilmente a causa di un errore precedente.
+XSTB5.M=\u00c8 stato riscontrato un errore imprevisto durante il tentativo di creare un database con la registrazione disattivata.
+XSTB6.M=Impossibile sostituire una tabella transazioni con un'altra quando una \u00e8 gi\u00e0 in uso.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=Il contenitore \u00e8 stato chiuso
+40XD1=Il contenitore \u00e8 stato aperto in modalit\u00e0 sola lettura
+40XD2=Impossibile aprire il contenitore {0}, \u00e8 stato eliminato oppure non esiste
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=\u00c8 stato effettuato un tentativo di accedere ad uno slot fuori intervallo su una pagina
+XSDA2.S=\u00c8 stato effettuato un tentativo di aggiornare un record eliminato
+XSDA3.S=Limitazione: impossibile aggiornare o inserire un record a causa della mancanza di spazio sulla pagina. Utilizzare i parametri derby.storage.pageSize e/o derby.storage.pageReservedSpace per evitare questa limitazione.
+XSDA4.S=Si \u00e8 verificata un'eccezione imprevista
+XSDA5.S=\u00c8 stato effettuato un tentativo di annullare l'eliminazione di un record non eliminato.
+XSDA6.S=La colonna {0} della riga \u00e8 nulla, \u00e8 necessario impostarla per puntare a un oggetto.
+XSDA7.S=Ripristino di un oggetto serializzabile o SQLData della classe {0}; tentativo di leggere una quantit\u00e0 di dati maggiore di quelli memorizzati
+XSDA8.S=Eccezione durante il ripristino di un oggetto serializzabile o SQLData della classe {0}
+XSDA9.S=Classe non trovata durante il ripristino di un oggetto serializzabile o SQLData della classe {0}
+XSDAA.S=Data/ora {0} non valida, \u00e8 possibile che provenga da una pagina differente o da un''implementazione non compatibile
+XSDAB.S=impossibile impostare una data/ora nulla
+XSDAC.S=Tentativo di spostare le righe o le pagine da un contenitore ad un altro.
+XSDAD.S=Tentativo di spostare zero righe da una pagina all'altra.
+XSDAE.S=\u00c8 possibile eseguire un handle di record solo per un ID handle di record speciale
+XSDAF.S=Uso di un handle di record speciale come se fosse normale.
+XSDAG.S=Impossibile aprire il contenitore durante l'esecuzione di una transazione interna nidificata che alloca ulteriore spazio a una tabella.
+XSDAI.S=La pagina {0} da eliminare \u00e8 gi\u00e0 bloccata per il rilascio.
+XSDAJ.S=Eccezione durante la scrittura di un oggetto serializzabile o SQLData
+XSDAK.S=Pagina errata richiamata per l''handle di record {0}.
+XSDAL.S=L''handle di record {0} punta inaspettatamente alla pagina di overflow.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=Eccezione imprevista sulla pagina in-memoria {0}
+XSDB1.D=Formato pagina sconosciuto alla pagina {0}
+XSDB2.D=Formato contenitore sconosciuto nel contenitore {0} : {1}
+XSDB3.D=Impossibile modificare le informazioni sul contenitore una volta scritte: erano {0}, ora sono {1}
+XSDB4.D=La pagina {0} si trova sulla versione {1}, il file di log contiene la versione modificata {2}, oppure esistono dei record di log mancanti di questa pagina, o questa pagina non \u00e8 stata scritta in modo corretto sul disco.
+XSDB5.D=Il log contiene record modifiche sulla pagina {0}, oltre il limite del contenitore.
+XSDB6.D=Un''altra istanza di Derby potrebbe avere avviato il database {0}.
+XSDB7.D=AVVERTENZA: Derby (istanza {0}) sta tentando di avviare il database {1} anche se Derby (istanza {2}) potrebbe essere ancora attivo.  Solo un'istanza alla volta di Derby deve avviare un database. Ci\u00f2 pu\u00f2 determinare un errore grave o irreversibile, oppure tale errore potrebbe essersi gi\u00e0 verificato.
+XSDB8.D=AVVERTENZA: Derby (istanza {0}) sta tentando di avviare il database {1} anche se Derby (istanza {2}) potrebbe essere ancora attivo.  Solo un'istanza alla volta di Derby deve avviare un database. Ci\u00f2 pu\u00f2 determinare un errore grave o irreversibile se due istanze di Derby avviano lo stesso database contemporaneamente.  La propriet\u00e0 db2j.database.forceDatabaseLock=true \u00e8 stata impostata, quindi il database non verr\u00e0 avviato finch\u00e9 db.lck non \u00e8 presente.  Solitamente questo file viene eliminato alla chiusura della prima istanza di Derby che avvia il database, ma in alcune occasioni la chiusura non elimina tale file.  Quindi, dovr\u00e0 essere eliminato manualmente.  \u00c8 importante verificare che nessun altro VM acceda al database prima di eliminare il file db.lck manualmente.
+XSDB9.D=Il contenitore di flusso {0} \u00e8 corrotto.
+XSDBA.D=Tentativo di assegnare l''oggetto {0} non riuscito.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=Impossibile creare il file {0} poich\u00e9 gi\u00e0 esistente.
+XSDF1.S=Eccezione durante la creazione del file {0} per il contenitore
+XSDF2.S=Eccezione durante la creazione del file {0} per il contenitore, impossibile eliminare il file.  L''eccezione era: {1}.
+XSDF3.S=Impossibile creare il segmento {0}.
+XSDF4.S=Eccezione durante la rimozione del file {0} per il contenitore rilasciato; impossibile eliminare il file {1}.
+XSDF6.S=Impossibile trovare la pagina di allocazione {0}.
+XSDF7.S=Non \u00e8 stato possibile bloccare la pagina appena creata {0}
+XSDF8.S=Impossibile trovare la pagina {0} da riutilizzare.
+XSDFB.S=Operazione non supportata da un database di sola lettura
+XSDFD.S=Lettura immagini pagine differenti su 2 I/Os sulla Pagina {0}, la prima immagine ha un checksum errato, la seconda ha un checksum corretto. Di seguito vengono riportate le immagini delle pagine: {1} {2}
+XSDFF.S=Operazione richiesta non riuscita a causa di un'eccezione imprevista.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=Impossibile leggere la pagina {0} dal disco.
+XSDG1.D=Impossibile scrivere la pagina {0} sul disco, controllare se il disco \u00e8 pieno.
+XSDG2.D=Checksum non valido sulla Pagina {0}, previsto={1}, versione su disco={2}, segue dump di pagina: {3}
+XSDG3.D=Impossibile accedere ai metadati per il Contenitore {0}
+XSDG5.D=Il database non si trova in modalit\u00e0 di creazione quando viene chiamato createFinished.
+XSDG6.D=Directory di segmenti di dati non trovata nella copia di backup {0} durante il ripristino. Verificare che la copia di backup sia corretta e che non sia danneggiata.
+XSDG7.D=Impossibile eliminare la directory {0} durante il ripristino. Verificare di disporre delle autorizzazioni richieste per la directory.
+XSDG8.D=Impossibile copiare la directory ''{0}'' in ''{1}'' durante il ripristino. Verificare di disporre dello spazio necessario e delle autorizzazioni richieste. 
+
+# language
+01500=La restrizione {0} sulla tabella {1} \u00e8 stata eliminata.
+01501=La vista {0} \u00e8 stata eliminata.
+01502=Il trigger {0} sulla tabella {1} \u00e8 stato eliminato.
+01503=La colonna {0} sulla tabella {1} \u00e8 stata modificata aggiungendo una restrizione non nulla.
+01504=Il nuovo indice \u00e8 un duplicato di uno esistente: {0}.
+01505=Il valore {0} potr\u00e0 essere interrotto.
+01003=I valori nulli sono stati eliminati dall'argomento di una funzione della colonna.
+0100E=XX Tentativo di restituire un numero eccessivo di insiemi di risultati
+02000=Nessuna riga \u00e8 stata trovata per FETCH, UPDATE o DELETE; o il risultato di una query \u00e8 una tabella vuota.
+21000=La query secondaria scalare pu\u00f2 restituire solo una riga singola.
+22001=\u00c8 stato riscontrato un errore di interruzione durante il tentativo di abbassare {0} ''{1}'' alla lunghezza di {2}.
+54006=La lunghezza proveniente dall'operazione {0} \u00e8 superiore a {1}.
+22003=Il valore derivante \u00e8 esterno all'intervallo per il tipo di dati {0}.
+22005=\u00c8 stato effettuato un tentativo di ottenere un valore dati di tipo ''{0}'' da uno di tipo ''{1}''.
+22007.S.180=La rappresentazione della stringa di un valore datetime \u00e8 esterno all'intervallo.
+22007.S.181=La sintassi della rappresentazione della stringa di un valore datetime non \u00e8 corretto.
+22011=Il secondo o il terzo argomento della funzione SUBSTR \u00e8 esterno all'intervallo.
+22012=Tentativo di dividere per zero.
+22013=Tentativo di ottenere la radice quadrata di un numero negativo, ''{0}''.
+22014=La posizione iniziale di LOCATE non \u00e8 valida; \u00e8 necessario che sia un numero intero positivo.  L''indice da cui iniziare la ricerca \u00e8 ''{2}''.  La stringa da ricercare \u00e8 ''{0}''.  La stringa da cui effettuare la ricerca \u00e8 ''{1}''. 
+22015=La funzione ''{0}'' non \u00e8 consentita sul seguente insieme di tipi.  Il primo operando \u00e8 di tipo ''{1}''.  Il secondo \u00e8 di tipo ''{2}''.  Il terzo operando (posizione iniziale) \u00e8 di tipo ''{3}''.
+22018=Formato stringa del carattere errato per il tipo {0}.
+22019=Sequenza escape non valida, ''{0}''. La stringa escape deve essere esattamente un carattere. Non pu\u00f2 essere vuota o contenere pi\u00f9 di un carattere.
+22025=Il carattere escape deve essere seguito da un carattere escape, '_', o '%'. Non pu\u00f2 essere seguito da altri caratteri o trovarsi alla fine del modello.
+22027=La funzione integrata TRIM() consente di eliminare un solo carattere.  Le funzioni integrate LTRIM() e RTRIM() consentono di eliminare pi\u00f9 caratteri.
+22500=Impossibile utilizzare i parametri ? per il modello LIKE e la clausola ESCAPE.
+22501=Una clausola ESCAPE di NULL restituisce risultati non definiti e non \u00e8 consentita.
+23502=La colonna ''{0}'' non pu\u00f2 accettare un valore NULL.
+23505=L''isruzione \u00e8 stata interrotta poich\u00e9 potrebbe aver causato un valore di chiave duplicata in una restrizione di chiave univoca o primaria i indice univoco or identificato da ''{0}'' definito su ''{1}''.
+23503={2} sulla tabella ''{1}'' ha causato una violazione della restrizione di chiave esterna ''{0}'' per la chiave {3}.  L'istruzione \u00e8 stata sottoposta a rollback.
+23513=La restrizione di controllo ''{1}'' \u00e8 stata violata durante l''esecuzione di INSERT o UPDATE sulla tabella ''{0}''.
+38000=\u00c8 stata riscontrata l''eccezione ''{0}'' durante la valutazione di un''espressione.
+38001=La routine esterna non pu\u00f2 eseguire le istruzioni SQL.
+38002=La routine ha tentato di modificare i dati, ma non era definita come MODIFIES SQL DATA.
+38004=La routine ha tentato di leggere i dati, ma non era definita come READS SQL DATA.
+39004=Un valore NULL non pu\u00f2 essere inoltrato ad un metodo che utilizza un parametro di tipo primitivo ''{0}''.
+40XC0=Istruzione inattiva. Pu\u00f2 essere causato dal rilevamento di un errore di gravit\u00e0 della transazione all'interno di tale istruzione.
+# this error is retired in 1.3
+42000=Errore di sintassi o violazione della regola di accesso; per i dettagli, vedere ulteriori errori.
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=Nell''istruzione ALTER TABLE, la colonna ''{0}'' \u00e8 stata specificata come NOT NULL e la clausola DEFAULT non \u00e8 stata specificata o \u00e8 stata specificata come DEFAULT NULL.
+42601.S.372=L'istruzione ALTER TABLE non pu\u00f2 aggiungere una colonna IDENTITY ad una tabella. 
+42606=Una costante esadecimale errata che inizia con ''{0}'' \u00e8 stata rilevata.
+54002=Una costante di stringa che inizia con ''{0}'' \u00e8 troppo lunga.
+42611=L''attributo di lunghezza, precisione o di scala per la colonna o il mapping del tipo ''{0}'' non \u00e8 valido. 
+
+42605=Il numero di argomenti per la funzione ''{0}'' non \u00e8 corretto.
+42610=Tutti gli argomenti alla funzione COALESC/VALUE non possono essere parametri. E' necessario disporre almeno di un argomento diverso dal parametro.
+
+42613=La clausola ''{0}'' contiene molte parole chiave o parole chiave in conflitto.
+42621=Una restrizione di verifica o una colonna generata definita con ''{0}'' non \u00e8 valida.
+42734=Il nome ''{0}'' specificato nel contesto ''{1}'' non \u00e8 univoco.
+# DB2 error for invalid set schema
+42802=Il numero di valori assegnato non coincide con il numero delle colonne specificate.
+42815.S.713=Il valore di sostituzione per ''{0}'' non \u00e8 valido.
+42815.S.171=La lunghezza, il tipo di dati o il valore di argomenti ''{0}'' e ''{1}'' non \u00e8 compatibile.
+42820=Il valore letterale mobile ''{0}'' contiene pi\u00f9 di 30 caratteri.
+42824=Un operando di LIKE non \u00e8 una stringa oppure il primo operando non \u00e8 una colonna.
+42831=''{0}'' non pu\u00f2 essere una colonna di una chiave univoca o primaria poich\u00e9 non pu\u00f2 contenere valori nulli.
+42834=Impossibile specificare SET NULL poich\u00e9 FOREIGN KEY ''{0}'' non pu\u00f2 contenere valori nulli.  
+42884=Non \u00e8 stata trovata nessuna routine autorizzata denominata ''{0}'' di tipo ''{1}'' contenente argomenti compatibili.
+42886=''{0}'' parametro ''{1}'' richiede un indicatore di parametro ''?''.
+42894=Il valore DEFAULT o il valore di attributo IDENTITY non \u00e8 valido per la colonna ''{0}''.
+428C1=In una tabella \u00e8 consentita solo una colonna di identit\u00e0.
+42903=Utilizzo errato di una funzione aggregata.
+42908=L'istruzione CREATE VIEW non include un elenco di colonna.
+42915=La chiave esterna ''{0}'' non \u00e8 valida a causa di ''{1}''. 
+42972=Una clausola ON associata ad un operatore JOIN non \u00e8 valida.
+42X01=Errore di sintassi: {0}.
+42X02={0}.
+42X03=Il nome colonna ''{0}'' si trova in pi\u00f9 di una tabella presente nell''elenco FROM.
+42X04=La colonna ''{0}'' non si trova in una tabella nell''elenco FROM, oppure compare in una specifica di collegamento ed \u00e8 esterna all''ambito di tale specifica, oppure compare in una clausola HAVING e non nell''elenco GROUP BY.  Se si tratta di un''istruzione CREATE o ALTER TABLE, ''{0}'' non \u00e8 una colonna della tabella di destinazione.
+42X05=La tabella ''{0}'' non esiste.
+42X06=Sono state specificate troppe colonne di risultati per la tabella ''{0}''.
+42X07=Il carattere nullo \u00e8 consentito solo in una clausola VALUES all'interno di un'istruzione INSERT.
+42X08=Il costruttore della classe ''{0}'' non pu\u00f2 essere utilizzato come una tabella virtuale esterna se la classe non implementa ''{1}''.
+42X09=Il nome tabella o alias ''{0}'' \u00e8 stato utilizzato pi\u00f9 di una volta nell''elenco FROM.
+42X10=''{0}'' non \u00e8 un nome tabella esposto nell''ambito in cui viene visualizzato.
+42622=Il nome ''{0}'' \u00e8 troppo lungo. La lunghezza massima \u00e8 ''{1}''.
+42X12=Il nome colonna ''{0}'' compare pi\u00f9 di una volta nell''istruzione di creazione tabella.
+54011=Sono state specificate molte colonne ({0}) per la tabella o vista {1}. Il limite \u00e8 {2}.
+42Z9F=Molti indici ({0}) nella tabella {1}. Il limite \u00e8 {2}.
+42X13=Il nome colonna ''{0}'' compare pi\u00f9 di una volta nell''elenco di colonne di un''istruzione di inserimento.
+42X14=''{0}'' non \u00e8 una colonna nella tabella o VTI ''{1}''.
+42X15=Il nome colonna ''{0}'' compare in un''istruzione senza un elenco FROM.
+42X16=Il nome colonna ''{0}'' compare pi\u00f9 volte nella clausola SET di un''istruzione di aggiornamento.
+42X17=Il valore ''{0}'' non \u00e8 valido come specifica joinOrder nell''elenco Propriet\u00e0 di una clausola FROM. Solo i valori  FIXED e UNFIXED sono validi.
+42803=Un''espressione che contiene la colonna ''{0}'' viene visualizzata nell''elenco SELECT e non \u00e8 parte di una clausola GROUP BY.
+42818=I paragoni tra ''{0}'' e ''{1}'' non sono supportati.
+42X19=La clausola WHERE o HAVING, o la definizione CHECK CONSTRAINT \u00e8 un''espressione ''{0}''.  Deve essere un'espressione BOOLEAN.
+42X23=Il cursore {0} non \u00e8 aggiornabile.
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=La funzione ''{0}'' non \u00e8 consentita sul tipo ''{1}''.
+42X26=La classe ''{0}'' della colonna ''{1}'' non esiste o non \u00e8 possibile accedervi. Ci\u00f2 pu\u00f2 verificarsi se la classe non \u00e8 pubblica.
+42X28=Elimina tabella ''{0}'' non \u00e8 la destinazione del cursore ''{1}''.
+42X29=Aggiorna tabella ''{0}'' non \u00e8 la destinazione del cursore ''{1}''.
+42X30=Cursore ''{0}'' non trovato. Verificare che l'autocommit sia in modalit\u00e0 OFF.
+42X31=La colonna ''{0}'' non si trova nell''elenco FOR UPDATE del cursore ''{1}''.
+42X32=Il numero di colonne presenti nell''elenco di colonne derivate deve corrispondere al numero di colonne presenti nella tabella ''{0}''.
+42X33=L''elenco di colonne derivate contiene un nome colonne duplicato ''{0}''.
+42X34=Esiste un parametro ? nell'elenco di selezione.  Ci\u00f2 non \u00e8 consentito.
+42X35=Non \u00e8 consentito che entrambi gli operandi di ''{0}'' siano parametri ?.
+42X36=L''operatore ''{0}'' non pu\u00f2 assumere un parametro ? come operando.
+42X37=Operatore unario ''{0}'' non consentito sul tipo ''{1}''.
+42X38='SELECT *' \u00e8 consentito solo nelle query secondarie EXISTS e NOT EXISTS.
+42X39=La query secondaria non pu\u00f2 restituire una colonna singola.
+42X40=NOT possiede un operando diverso dal valore booleano. L'operando di NOT deve essere valutato su TRUE, FALSE o UNKNOWN.
+42X41=La propriet\u00e0 ''{0}'' non \u00e8 valida nella clausola Properties di un elenco FROM (la propriet\u00e0 era stata impostata su ''{1}'').
+42821=Le colonne di tipo ''{0}'' non possono contenere valori di tipo ''{1}''. 
+42X43=ResultSetMetaData restituito per classe/oggetto ''{0}'' era nullo. Per utilizzare questa classe come una tabella virtuale esterna, \u00e8 necessario che ResultSetMetaData non sia un valore nullo.
+42X44=Lunghezza ''{0}'' non valida come specifica di colonna.
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=Il valore ''{1}'' non rappresenta una precisione valida per {0}.
+42X49=Il valore ''{0}'' non \u00e8 un valore letterale intero valido.
+42X50=Non \u00e8 stato trovato nessun metodo corrispondente alla chiamata del metodo {0}.{1}({2}), sono state tentate tutte le combinazioni di tipi oggetti e di primitive e qualsiasi conversione di tipo possibile per tutti i parametri che la chiamata al metodo pu\u00f2 assumere.  \u00c8 possibile che il metodo esista ma che non sia public e/o static, oppure che i tipi di parametri non siano convertibili in chiamate a metodi.
+42X51=La classe ''{0}'' non esiste o non \u00e8 accessibile. Ci\u00f2 pu\u00f2 verificarsi se la classe non \u00e8 pubblica.
+42X52=La chiamata al metodo (''{0}'') tramite un destinatario di tipo primitiva Java ''{1}" non \u00e8 consentita.
+42X53=Il predicato LIKE pu\u00f2 avere solo operandi 'CHAR' o 'VARCHAR'. Il tipo ''{0}'' non \u00e8 consentito.
+42X54=Il metodo Java ''{0}'' ha un ? come destinatario.  Ci\u00f2 non \u00e8 consentito.
+42X55=Il nome tabella ''{1}'' deve essere ''{0}''.
+42X56=Il numero di colonne presenti nell''elenco colonne vista non corrisponde al numero di colonne presenti nell''espressione query sottostante, nella definizione della vista per ''{0}''.
+42X57=getColumnCount() per la tabella virtuale esterna ''{0}'' ha restituito un valore ''{1}'' non valido.  I valori validi sono >= 1.
+42X58=Il numero di colonne presenti sul lato destro e sinistro di UNION deve essere uguale.
+42X59=Il numero di colonne presenti in ogni costruttore VALUES deve essere uguale.
+42X60=Valore ''{0}'' non valido per la propriet\u00e0 insertMode specificata per la tabella ''{1}''.
+42X61=I tipi ''{0}'' e ''{1}'' non sono compatibili con UNION.
+42X62=''{0}'' non consentito nello schema ''{1}''.
+42X63=La clausola USING non ha restituito alcun risultato, impossibile impostare alcun parametro.
+42X64=Valore ''{0}'' non valido specificato per la propriet\u00e0 useStatistics nell''elenco Propriet\u00e0. TRUE o FALSE sono gli unici valori validi.
+42X65=L''indice ''{0}'' non esiste.
+42X66=Il nome colonna ''{0}'' compare pi\u00f9 di una volta nell''istruzione di creazione indice.
+42X68=Non \u00e8 stato trovato nessun campo ''{0}'' che appartiene alla classe ''{1}''.  \u00c8 possibile che il campo esista ma che la classe non esista o non sia pubblica.
+42X69=Non \u00e8 consentito fare riferimento ad un campo (''{0}'') tramite un''espressione di riferimento del tipo primitivo  Java ''{1}''.
+42X72=Non \u00e8 stato trovato nessun campo statico ''{0}'' che appartiene alla classe ''{1}''.  \u00c8 possibile che il campo esista ma non sia pubblico e/o statico, oppure che la classe non esista o non sia pubblica.
+42X73=Risoluzione del metodo per la firma {0}.{1}({2}) era ambigua. (Il metodo specifico esistente non \u00e8 unico.)
+42X74=Sintassi dell'istruzione CALL non valida.
+42X75=Non \u00e8 stato trovato nessun costruttore con firma {0}({1}).  \u00c8 possibile che i tipi di parametri non siano convertibili in chiamate a metodi.
+42X76=Almeno una colonna, ''{0}'', nella chiave primaria aggiunta \u00e8 annullabile. Tutte le colonne presenti in una chiave primaria non devono essere annullabili.
+42X77=La posizione della colonna ''{0}'' non \u00e8 compresa nell''intervallo per l''espressione query.
+42X78=La colonna ''{0}'' non \u00e8 presente nel risultato dell''espressione della query.
+42X79=Il nome colonna ''{0}'' compare pi\u00f9 di una volta nel risultato dell''espressione della query.
+42877=Un nome colonna qualificato ''{0}'' non \u00e8 consentito nella clausola ORDER BY.
+42X80=La clausola VALUES deve contenere almeno un elemento e tutti gli elementi non devono essere vuoti.
+42X82=La clausola USING ha restituito pi\u00f9 di una riga, sono consentite solo ResultSet di righe singole.
+42X83=Le restrizioni sulla colonna ''{0}'' richiedono che sia contemporaneamente annullabile e non  annullabile.
+42X84=\u00c8 stato creato l''indice ''{0}'' per applicare la restrizione ''{1}''.  \u00c8 possibile eliminarlo solo annullando la restrizione.
+42X85=Il vincolo ''{0}''deve essere contenuto nello stesso schema della tabella ''{1}''.
+42X86=Tabella ALTER non riuscita. La restrizione ''{0}'' non esiste sulla tabella ''{1}''.
+42X87=Almeno un''espressione di risultato (then o else) dell''espressione ''{0}''  deve essere diversa da ''?''.
+42X88=Un'espressione Conditional ha un operando non booleano. L'operando di Conditional deve essere valutato come TRUE, FALSE o UNKNOWN.
+42X89=I tipi ''{0}'' e ''{1}'' non sono tipi compatibili. (Nessun tipo \u00e8 assegnabile all'altro tipo).
+42X90=Pi\u00f9 di una restrizione della chiava primaria specificata per la tabella ''{0}''.
+42X91=Il nome restrizione ''{0}'' compare pi\u00f9 di una volta nell''istruzione di creazione della tabella.
+42X92=Il nome colonna ''{0}'' compare pi\u00f9 di una volta nell''elenco colonne della restrizione.
+42X93=La tabella ''{0}'' contiene una definizione restrizione con la colonna ''{1}'', che non \u00e8 presente nella tabella.
+42Z93=Le restrizioni ''{0}'' e ''{1}'' possiedono lo stesso insieme di colonne e ci\u00f2 non \u00e8 consentito.
+42Z96=VTI in lettura-scrittura non sono supportati in ambienti JDK 1.1/JDBC 1.2: ''{0}''
+42Z9B=L''interfaccia della tabella virtuale esterna non supporta le colonne blob o clob. ''{0}'' colonna ''{1}''.
+42Z9D=Le istruzioni ''{0}'' non sono consentite nei trigger ''{1}''.
+42Z9E=La restrizione ''{0}'' non \u00e8 una restrizione {1}.
+42X94={0} ''{1}'' non esiste.
+42X96=Il percorso classe database contiene un file jar sconosciuto ''{0}''.
+42X98=I parametri non sono consentiti in una definizione VIEW.
+42Y00=La classe ''{0}'' non implementa org.apache.derby.iapi.db.AggregateDefinition e quindi non pu\u00f2 essere utilizzata come un''espressione di aggregazione.
+42Y01=La restrizione ''{0}'' non \u00e8 valida.
+42Y03=''{0}'' non \u00e8 riconosciuto come funzione o procedura.
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=Impossibile creare una procedura o funzione con EXTERNAL NAME ''{0}'' poich\u00e9 non \u00e8 un elenco separato. Il formato previsto \u00e8 <percorso java completo>.<nome metodo> .
+
+42Y05=Non esiste alcuna Chiave esterna denominata ''{0}''.
+42Y07=Lo schema ''{0}'' non esiste
+42Y08=Le restrizioni della chiave esterna non sono consentite sulle tabelle di sistema.
+42Y09=I metodi Void sono i soli consentiti all'interno di un'istruzione CALL.
+42Y10=Un costruttore tabelle, che non \u00e8 presente in un'istruzione INSERT, possiede tutti i parametri? in una delle relative colonne.  Almeno una riga per ogni colonna deve possedere un non-parametro.
+42Y11=Con la clausola ''{0}'' \u00e8 necessaria una specifica di collegamento.
+42Y12=La clausola ON di una specifica JOIN \u00e8 un''espressione ''{0}''.  Deve essere un'espressione BOOLEAN.
+42Y13=Il nome colonna ''{0}'' compare pi\u00f9 di una volta nell''istruzione di creazione vista.
+42Z97=La ridenominazione della colonna ''{0}'' causer\u00e0 l''interruzione della restrizione di controllo ''{1}''.
+42Z99=I valori letterali di stringa o esadecimali, non possono superare i 64K.
+42Y16=Non \u00e8 stato trovato nessun metodo statico pubblico ''{0}'' nella classe ''{1}''.  \u00c8 possibile che il metodo esista ma non sia public, oppure non sia static.
+42846=Impossibile convertire i tipi ''{0}'' in ''{1}''.
+42Y19=''{0}'' compare pi\u00f9 volte nell''elenco GROUP BY. Le colonne nell''elenco GROUP BY non devono essere ambigue.
+42Y22=L''aggregazione {0} non pu\u00f2 funzionare sul tipo {1}.
+42Y23=Informazioni sul tipo JDBC restituite per la colonna {0} non corrette.
+42Y24=La vista ''{0}'' non \u00e8 aggiornabile. (Le viste non sono aggiornabili.)
+42Y25=''{0}'' \u00e8 una tabella di sistema.  Gli utenti non possono modificare i contenuti di tale tabella.
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=I parametri non sono consentiti nell'azione del trigger.
+42Y29=L'elenco SELECT di una query non raggruppata contiene almeno 1 espressione non valida.  Quando un elenco SELECT contiene almeno 1 aggregazione, tutte le voci devono essere espressioni di aggregazioni valide.
+42Y30=L'elenco SELECT di una query raggruppata contiene almeno 1 espressione non valida.  Per un elenco SELECT con GROUP BY, l'elenco SELECT pu\u00f2 contenere solo colonne di raggruppamento ed espressioni di aggregazioni valide.
+42Y32=La classe aggregatore ''{0}'' per l''aggregazione ''{1}'' sul tipo {2} non implementa com.ibm.db2j.aggregates.Aggregator. 
+42Y33=L''aggregazione {0} contiene una o pi\u00f9 aggregazioni.
+42Y34=Il nome colonna ''{0}'' corrisponde a pi\u00f9 di una colonna di risultati presenti nella tabella ''{1}''.
+42Y35=Il riferimento colonna ''{0}'' non \u00e8 valido. Quando un elenco SELECT contiene almeno 1 aggregazione, tutte le voci devono essere espressioni di aggregazioni valide.
+42Y36=Il riferimento colonna ''{0}'' non \u00e8 valido.  Per un elenco SELECT con GROUP BY, l'elenco SELECT pu\u00f2 contenere solo colonne di raggruppamento ed espressioni di aggregazioni valide.
+42Y37=''{0}'' \u00e8 un tipo di primitiva Java e non pu\u00f2 essere utilizzata con questo operatore.
+42Y38=insertMode = la sostituzione non \u00e8 consentita su un inserimento dove la tabella di destinazione, ''{0}'', viene presa come riferimento in SELECT.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' non compare in una definizione CHECK CONSTRAINT poich\u00e9 potrebbe restituire dei risultati non deterministici.
+42Y40=''{0}'' compare pi\u00f9 volte nell''elenco colonne UPDATE OF per il trigger ''{1}''.
+42Y41=Impossibile richiamare direttamente ''{0}'' tramite EXECUTE STATEMENT poich\u00e9 fa parte di un trigger.
+42Y42=La scala ''{1}'' non \u00e8 valida per {0}.
+42Y43=La scala ''{0}'' non \u00e8 valida con precisione di ''{1}''.
+42Y44=Chiave, ''{0}'', non valida specificata nell''elenco Propriet\u00e0 nell''elenco FROM. Le chiavi con distinzione tra maiuscole e minuscole supportate attualmente sono ''{1}''.
+42Y45=Impossibile collegare VTI ''{0}'' poich\u00e9 \u00e8 un VTI trigger speciale e questa istruzione non fa parte di un''azione del trigger o della clausola WHEN.
+42Y46=Elenco Propriet\u00e0 non valido nell'elenco FROM.  Non esiste alcun indice ''{0}'' sulla tabella ''{1}''.
+42Y48=Elenco Propriet\u00e0 non valido nell'elenco FROM.  Non esiste alcuna restrizione denominata ''{0}'' sulla tabella ''{1}'' oppure la restrizione non possiede un indice di copia.
+42Y49=Pi\u00f9 valori specificati per la chiave propriet\u00e0 ''{0}''. 
+42Y50=L''elenco Propriet\u00e0 per la tabella ''{0}'' pu\u00f2 contenere i valori per l''indice o per la restrizione ma non per entrambi.
+42Y55=Impossibile eseguire ''{0}'' su ''{1}'' poich\u00e9 inesistente.
+42Y56=joinStrategy non valida, ''{0}'', specificata nell''elenco Propriet\u00e0 sulla tabella ''{1}''. I valori supportati per  joinStrategy sono 'hash', 'nestedloop'.
+42Y58=NumberFormatException verificatasi durante la conversione del valore ''{0}'' per la sovrascrittura del programma di ottimizzazione ''{1}''.
+42Y59=Valore non valido, ''{0}'', specificato per la sovrascrittura hashInitialCapacity. Il valore deve essere > 0.
+42Y60=Valore non valido, ''{0}'', specificato per la sovrascrittura hashLoadFactor. Il valore deve essere > 0.0 e <= 1.0.
+42Y61=Valore non valido, ''{0}'', specificato per la sovrascrittura hashMaxCapacity. Il valore deve essere > 0.
+42Y62=''{0}'' non consentito su ''{1}'' poich\u00e9 \u00e8 una vista.
+42Y63=Il collegamento hash richiede il predicato equijoin ottimizzabile su una colonna nell'indice o nella guida selezionata.  Un predicato equijoin ottimizzabile non esiste su qualsiasi colonna presente nella tabella o nell''indice ''{0}''. Utilizzare la sovrascrittura del programma di ottimizzazione ''indice'', per specificare un indice o un heap sulla tabella ''{1}''.
+42Y64=Valore bulkFetch di ''{0}'' non valido: il valore minimo per bulkFetch \u00e8 1.
+42Y65=bulkFetch non consentito sui collegamenti ''{0}''.
+42Y66=bulkFetch non consentito sui cursori aggiornabili.
+42Y67=Impossibile eliminare lo schema ''{0}''.
+42Y69=Nessun piano di esecuzione valido trovato per questa istruzione. Ci\u00f2 potrebbe dipendere da uno dei due fattori: \u00e8 stata specificata una strategia di collegamento hash quando questo non \u00e8 consentito (nessun collegamento equijoin ottimizzabile) oppure si sta tentando di collegare dueExternalVirtualTables, ognuno dei quali rappresenta il riferimento dell'altro e, quindi, non \u00e8 possibile calcolare l'istruzione.
+42Y70=L'ordine di collegamento specificato dall'utente non \u00e8 un ordine di collegamento legale. Ci\u00f2 potrebbe essere dovuto al fatto che una colonna di collegamento \u00e8 stata inviata, da una tabella interna ad una virtuale esterna, come parametro.
+42Y71=Impossibile eliminare la procedura o la funzione di sistema ''{0}''.
+42Y82=Impossibile eliminare l''istruzione preparata e memorizzata, generata dal sistema, ''{0}'' tramite DROP STATEMENT.  Fa parte di un trigger.
+42Y83=Un valore nullo senza tipo non \u00e8 consentito come argomento sull''aggregazione {0}.  Associare il valore nullo ad un tipo adeguato.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' potrebbe non comparire in una definizione DEFAULT.
+42Y85=La parola chiave DEFAULT non \u00e8 consentita in una clausola VALUES che compare all'interno di un'istruzione INSERT.
+42Y90=FOR UPDATE non consentito su questo tipo di istruzione.
+42Y91=La clausola USING non \u00e8 consentita in una EXECUTE STATEMENT per un'azione del trigger.
+42Y92=I trigger {0} possono fare riferimento solo alle variabili/tabelle della transazione {1}.
+42Y93=Clausola REFERENCING non valida: \u00e8 consentito solo un nome per ogni tipo di variabile/tabella della transazione.
+42Y94=AND o OR possiedono un operando diverso dal valore booleano. Gli operandi di AND e OR devono essere calcolati come TRUE, FALSE o UNKNOWN.
+42Y95=L''operatore ''{0}'', con un tipo di operando di sinistra di ''{1}'' e di destra di ''{2}'', non \u00e8 supportato.
+42Y96.U=UNKNOWN
+42Y97=Carattere escape non valido sulla riga ''{0}'', colonna ''{1}''.
+42Y98.U=Riscontrato "{0}" sulla riga {1}, colonna {2}
+42Y99.U=Errore lessicale alla riga {0}, colonna {1}. Riscontrato: {2}
+42Z00.U=Chiamata metodo Java o riferimento campo
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=Non sono supportate pi\u00f9 aggregazioni DISTINCT alla volta.
+42Z07=Le aggregazioni non sono consentite nella clausola ON.
+42Z08=Sostituzione contenuto esistente con nuova serie di righe non consentita su ''{0}'' poich\u00e9 possiede un trigger ({1}) abilitato.
+42Z09.U=la COLONNA PREDEFINITA per
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=flusso
+
+# alter table modify column error messages.
+#####
+42Z15=Tipo non valido specificato per la colonna ''{0}''. Non \u00e8 possibile modificare il tipo di una colonna.
+42Z16=\u00c8 possibile modificare la lunghezza solo per i tipi VARCHAR. 
+42Z17=Lunghezza non valida specificata per la colonna ''{0}''. La lunghezza deve essere maggiore della lunghezza della colonna corrente.
+42Z18=La colonna ''{0}'' fa parte della restrizione della chiave esterna ''{1}''. Per modificare la lunghezza di questa colonna, \u00e8 necessario, innanzitutto, eliminare la restrizione, eseguire ALTER TABLE e, successivamente, ricreare la restrizione.
+42Z19=La colonna ''{0}'' viene assunta come riferimento almeno per una restrizione della chiave esterna ''{1}''. Per modificare la lunghezza di questa colonna, \u00e8 necessario eliminare le restrizioni di riferimento, eseguire ALTER TABLE e, successivamente, ricreare le restrizioni.
+42Z20=Impossibile rendere annullabile la colonna ''{0}''. Fa parte di una chiave primaria, che non pu\u00f2 avere colonne annullabili.
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE ''{0}'' ha specificato degli attributi per la colonna ''{1}'' che non sono compatibili con la colonna esistente.
+42Z21=Incremento non valido specificato come identit\u00e0 della colonna ''{0}''. L'incremento deve essere diverso da zero.
+42Z22=Tipo non valido specificato per la colonna di identit\u00e0 ''{0}''. Gli unici tipi validi per le colonne di identit\u00e0 sono BIGINT, INT e SMALLINT.
+42Z23=Tentativo di modificare una colonna di identit\u00e0 ''{0}''. 
+42Z24=Overflow verificatosi in un valore di identit\u00e0 per la colonna ''{1}'' nella tabella ''{0}''.
+42Z25=Contatore di identit\u00e0 ERRORI INTERNI: l'aggiornamento \u00e8 stato chiamato senza argomenti con valore corrente = NULL.
+42Z26=Impossibile rendere annullabile una colonna, ''{0}'', con un valore predefinito di identit\u00e0.
+42Z27=Impossibile modificare una colonna annullabile, ''{0}'', in modo che assuma un valore predefinito di identit\u00e0.
+
+#####
+# end of identity error messages.
+
+42Z30.U=tempo impiegato in ResultSet =
+42Z31.U=tempo impiegato in ResultSet e in quelle successive =
+42Z32.U=Suddivisione tempo totale: 
+42Z33.U=tempo di costruzione (millisecondi) =
+42Z34.U=tempo di apertura (millisecondi) =
+42Z35.U=tempo successivo (millisecondi) =
+42Z36.U=tempo di chiusura (millisecondi) =
+42Z37.U=Nessuno
+42Z38.U=posizionamento delle informazioni non disponibile poich\u00e9 ResultSet non \u00e8 stato mai aperto.
+42Z39.U=Eccezione imprevista {0} durante il richiamo del programma di posizionamento.
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U={0} sulle prime {1} colonne.
+42Z41.U=Righe consecutive con valori nulli sulle seguenti colonne: 
+42Z42.U=ID colonna
+42Z43.U=Operatore
+42Z44.U=Valori nulli ordinati
+42Z45.U=Valore di ritorno sconosciuto
+42Z46.U=Annulla risultato confronto
+42Z47.U=Il richiamo del piano query come una Stringa non \u00e8 supportato per {0}
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=ID colonna [{0}][{1}]
+
+# matches DB2
+42939=Non \u00e8 possibile creare un oggetto con il nome dello schema ''{0}''.
+
+
+
+
+42Z50=ERRORE INTERNO: impossibile generare il codice per {0}.
+42Z53=ERRORE INTERNO: tipo di attivazione sconosciuto per generare la scelta del nodo {0}.
+42Z54.U=Questa eccezione arresta l'istruzione in seguito all'analisi - non \u00e8 necessaria un'ulteriore elaborazione.
+42Z55.U=Esecuzione arrestata in seguito all'analisi tramite l'indicatore di debug StopAfterParsing.
+42Z56.U=Esecuzione arrestata in seguito al collegamento tramite l'indicatore di debug StopAfterBinding.
+42Z57.U=Esecuzione arrestata in seguito all'ottimizzazione tramite l'indicatore di debug StopAfterOptimizing.
+42Z58.U=Esecuzione arrestata in seguito alla generazione tramite l'indicatore di debug StopAfterGenerating.
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=serializzabile
+42Z81.U=lettura sincronizzata
+42Z82.U=esclusivo
+42Z83.U=condivisione istantanea
+42Z84.U=condivisione
+42Z85.U=tabella
+42Z86.U=riga
+42Z87.U=condividi tabella
+42Z88.U=condividi riga
+
+# More generic language stuff
+42Z90=La classe ''{0}'' non restituisce una ResultSet aggiornabile.
+42Z91=query secondaria
+42Z92=lettura ripetibile
+42Z9A=lettura non sincronizzata
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=La funzione richiesta non pu\u00f2 fare riferimento alle tabelle nello schema SESSION.
+# Declare global temporary table language stuff. Matches DB2
+428EK=Il qualificatore per un nome di tabella temporanea globale dichiarata deve essere SESSION.
+42995=La funzione richiesta non si applica alle tabelle temporanee globali.
+42962=Tipo di colonna lungo o parametro ''{0}'' non consentito nelle tabelle temporanee globali dichiarate o nelle definizioni di procedura. 
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=Collegato a
+43X01.U=Numero iniziale query secondaria
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=Any ResultSet
+43X03.U=Numero di aperture
+43X04.U=Righe visualizzate
+43X05.U=Insieme dei risultati di origine
+43X06.U=Numero finale query secondaria
+43X07.U=conteggio righe calcolate dal programma di ottimizzazione
+43X08.U=costo calcolato dal programma di ottimizzazione
+43X09.U=secondi
+43X10.U=Totale
+43X11.U=Nodo
+43X12.U={0} non supportato per {1}
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=Elimina ResultSet tramite
+43X14.U=blocco tabella
+43X15.U=blocco righe
+43X16.U=rinviato
+43X17.U=Righe eliminate
+43X18.U=Indici aggiornati
+43X19.U=Elimina
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=Distinct Scalar Aggregate ResultSet
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=Righe immesse
+43X22.U=Distinct Scalar Aggregate
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U=Distinct Scan ResultSet per {0} che utilizza {1} {2}
+43X24.U=restrizione
+43X25.U=indice
+43X26.U=Distinct Scan ResultSet per {0}
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=al livello di isolamento {0} utilizzando il blocco {1}
+43X28.U=informazioni scansione
+43X29.U=La colonna Distinct \u00e8 il numero della colonna
+43X30.U=Le colonne Distinct sono il numero di colonne
+43X31.U=Dimensione tabella hash
+43X32.U=Righe filtrate
+43X33.U=tempo successivo in millisecondi/riga
+43X34.U=posizione iniziale
+43X35.U=posizione finale
+43X36.U=qualificatori scansione
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=qualificatori dell'operazione successiva
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=nella tabella {0} tramite {1}
+43X39.U=Distinct Scan
+43X40.U=Ordina informazioni
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=Grouped Aggregate ResultSet
+43X42.U=Aggregazione distinta
+43X43.U=Per ordine
+43X44.U=Grouped Aggregate
+43X45.U=Hash Exists Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=Hash Exists Join ResultSet
+43X47.U=Hash Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=Hash Join ResultSet
+43X49.U=Hash Left Outer Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=Hash Left Outer Join ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U=Hash Scan ResultSet per {0} che utilizza {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U=Hash Scan ResultSet per {0}
+43X53.U=La chiave hash \u00e8 il numero della colonna
+43X54.U=Le chiavi hash sono i numeri della colonna
+43X55.U=Hash Scan
+43X56.U=Query secondarie collegate
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=Hash Table ResultSet
+43X58.U=Hash Table
+43X59.U=tutto
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U=Index Row to Base Row ResultSet per {0}
+43X61.U=Colonne a cui si accede dallo heap
+#NOTE: {0} is a table name
+43X62.U=per {0}
+43X63.U=Index Row to Base Row
+43X64.U=modalit\u00e0 di inserimento: inserimento di massa
+43X65.U=modalit\u00e0 di inserimento: normale (impossibile eseguire l'inserimento di una nuova serie di righe a causa della mancanza di una tabella vuota)
+43X66.U=modalit\u00e0 di inserimento: normale
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=Insert ResultSet che utilizza
+43X68.U=Righe inserite
+43X69.U=Inserisci
+43X70.U=Collega
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=Last Key Index Scan ResultSet per {0} che utilizza l''indice {1}
+43X72.U=al livello di isolamento {0} utilizzando il blocco {1} scelto dal programma di ottimizzazione
+43X73.U=Table Scan
+43X74.U=Index Scan
+#NOTE: {0} is a table name or class name
+43X75.U=su {0}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=ResultSet materializzata
+43X77.U=tempo di creazione conglomerato temporaneo (millisecondi)
+43X78.U=tempo di lettura in sequenza conglomerato temporaneo (millisecondi)
+43X79.U=Righe visualizzate da sinistra
+43X80.U=Righe visualizzate da destra
+43X81.U=Righe restituite
+43X82.U=Insieme di risultati di sinistra
+43X83.U=Insieme di risultati di destra
+43X84.U=Nested Loop Exists Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=Nested Loop Exists Join ResultSet
+43X86.U=Nested Loop Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=Nested Loop Join ResultSet
+43X88.U=Righe di destra vuote restituite
+43X89.U=Nested Loop Left Outer Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=Nested Loop Left Outer Join ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=Normalize ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=ResultSet con valore singolo
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=Project-Restrict ResultSet
+43X94.U=restrizione
+43X95.U=proiezione
+43X96.U=tempo di restrizione (millisecondi)
+43X97.U=tempo di proiezione (millisecondi)
+43X98.U=Project Restrict
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=Row ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=Scalar Aggregate ResultSet
+43Y01.U=Ottimizzazione chiave indice
+43Y02.U=Scalar Aggregate
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=Scroll Insensitive ResultSet
+43Y04.U=Numero di letture dalla tabella hash
+43Y05.U=Numero di scritture su tabella hash
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=Sort ResultSet
+43Y07.U=Elimina duplicati
+43Y08.U=Ordina
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U=Index Scan ResultSet per {0} che utilizza {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U=Table Scan ResultSet per {0}
+43Y11.U=Blocco attuale utilizzato: blocco livello tabella.
+43Y12.U=Dimensione lettura in sequenza
+43Y13.U=qualificatori
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=Union ResultSet
+43Y15.U=Union
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=Update ResultSet che utilizza il blocco {0}
+43Y17.U=Righe aggiornate
+43Y18.U=Aggiorna
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U=VTI ResultSet per {0}
+43Y20.U=VTI
+43Y21.U=Query secondarie materializzate
+43Y22.U=Nome istruzione
+43Y23.U=Test istruzione
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=Tempo di analisi
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=Tempo di collegamento
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=Tempo di ottimizzazione
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=Tempo di creazione
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=Tempo di compilazione
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=Tempo di esecuzione
+43Y30.U=Data/ora iniziale di compilazione
+43Y31.U=Data/ora finale di compilazione
+43Y32.U=Data/ora iniziale di esecuzione
+43Y33.U=Data/ora finale di compilazione
+43Y44.U=Testo normale di esecuzione istruzione
+43Y45.U=Runtime 100%, {0} secondi
+43Y46.U=Inserisci VTI ResultSet
+43Y47.U=Elimina VTI ResultSet
+43Y49.U=Inserisci VTI
+43Y50.U=Elimina VTI
+43Y51.U=Elimina Cascade ResultSet
+43Y52.U=Elimina Cascade ResultSet tramite
+43Y53.U=Azioni di riferimento su tabelle dipendenti
+43Y54.U=Inizio azione di riferimento sul numero di tabella dipendente
+43Y55.U=Fine azione di riferimento sul numero di tabella dipendente
+
+54004=L'istruzione SELECT contiene molte voci in GROUP BY, ORDER BY o nell'elenco di selezione.
+54008=L'istruzione CREATE INDEX specifica un numero eccessivo di colonne (16 \u00e8 il numero massimo consentito).
+54023=Il limite per il numero dei parametri di una procedura \u00e8 stato superato. Il limite \u00e8 {0} ed il numero dei parametri per la procedura {1} \u00e8 {2}.
+54038=La profondit\u00e0 massima dei trigger inattivi \u00e8 stata superata.
+
+## all other org.apache.derby.catalog.types
+44X00.U=Nome tipo SQL
+44X05.U=errore successivo
+
+X0X02.S=Impossibile bloccare la tabella ''{0}'' in modalit\u00e0 ''{1}''.
+X0X03.S=Stato transazione non valido - il cursore attivo richiede lo stesso livello di isolamento
+X0X05.S=La tabella ''{0}'' non esiste.
+X0X0E.S=La posizione della colonna ''{0}'' elencata nella matrice di selezione delle colonne generata automaticamente non \u00e8 stata individuata nella tabella di inserimento.
+X0X0F.S=Il nome della colonna ''{0}'' elencata nella matrice di selezione delle colonne generata automaticamente non \u00e8 stata individuata nella tabella di inserimento.
+X0X07.S=Impossibile eliminare il file jar ''{0}'' poich\u00e9 si trova su db2j.database.classpath ''{0}''.
+X0X10.S=La clausola USING ha restituito pi\u00f9 di una riga, sono consentite solo ResultSet di righe singole.
+X0X11.S=La clausola USING non ha restituito alcun risultato, impossibile impostare alcun parametro.
+X0X13.S=File jar ''{0}'' non presente nello schema ''{1}''.
+X0X57.S=\u00c8 stato effettuato un tentativo di inserire un valore Java di tipo ''{0}'', in un valore SQL ma non esiste un tipo SQL corrispondente.  Il valore Java probabilmente \u00e8 il risultato della chiamata a un metodo o dell'accesso a un campo.
+X0X60.S=Cursore con nome ''{0}'' gi\u00e0 esistente.
+X0X61.S=I valori della colonna ''{4}'' nell''indice ''{0}'' e nella tabella ''{1}.{2}'', non corrispondono per la posizione della riga {3}.  Il valore presente nell''indice \u00e8 ''{5}'', mentre il valore presente nella tabella di base \u00e8 ''{6}''.  La chiave completa dell''indice, che comprende la posizione della riga, \u00e8 ''{7}''.  L'azione di correzione suggerita \u00e8 quella di ricreare l'indice.
+X0X62.S=Incoerenza trovata tra la tabella ''{0}'' e l''indice ''{1}''.  Errore durante il tentativo di richiamare la posizione della riga ''{2}'' dalla tabella.  La chiave completa dell''indice, che comprende la posizione della riga, \u00e8  ''{3}''. L'azione di correzione suggerita \u00e8 quella di ricreare l'indice.
+X0X63.S=\u00c8 stata riscontrata IOException ''{0}''.
+X0X67.S=Le colonne di tipo ''{0}'' non possono essere utilizzate in CREATE INDEX, ORDER BY, GROUP BY, UNION o DISTINCT, poich\u00e9 i confronti per tale tipo non sono supportati.
+X0X81.S={0} ''{1}'' non esiste.
+X0X85.S=L''indice ''{0}'' non \u00e8 stato creato poich\u00e9 ''{1}'' non \u00e8 un tipo di indice valido.
+X0X86.S=0 \u00e8 un valore di parametro non valido per ResultSet.absolute(int row).
+X0X87.S=Impossibile chiamare ResultSet.relative(int row) quando il cursore non \u00e8 posizionato su una riga.
+X0X95.S=Impossibile eseguire l''operazione ''{0}'' sull''oggetto ''{1}'' poich\u00e9 esiste una dipendenza di ResultSet aperta su tale oggetto.
+X0X99.S=L''indice ''{0}'' non esiste.
+X0Y16.S=''{0}'' non \u00e8 una vista.  Se si tratta di una tabella, utilizzare DROP TABLE.
+X0Y23.S=Impossibile eseguire l''operazione ''{0}'' sull''oggetto ''{1}'' poich\u00e9 VIEW ''{2}'' \u00e8 una dipendenza di tale oggetto.
+X0Y24.S=Impossibile eseguire l''operazione ''{0}'' sull''oggetto ''{1}'' poich\u00e9 STATEMENT ''{2}'' \u00e8 una dipendenza di tale oggetto.
+X0Y25.S=Impossibile eseguire l''operazione ''{0}'' sull''oggetto ''{1}'' poich\u00e9 {2} ''{3}'' \u00e8 una dipendenza di tale oggetto.
+X0Y26.S=\u00c8 necessario che l''indice ''{0}'' si trovi nello stesso schema della tabella ''{1}''.
+X0Y28.S=Impossibile creare l''indice ''{0}'' sulla tabella di sistema ''{1}''.  Gli utenti non possono creare gli indici sulle tabelle di sistema.
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' gi\u00e0 esistente in {2} ''{3}''.
+X0Y38.S=Impossibile creare l''indice ''{0}'' poich\u00e9 la tabella ''{1}'' non esiste.
+X0Y41.S=Restrizione ''{0}'' non valida: la tabella di riferimento {1} non possiede chiavi primarie.  Aggiungere una chiave primaria a {1}, oppure specificare esplicitamente le colonne di una restrizione univoca, a cui fa riferimento questa chiave esterna.
+X0Y42.S=Restrizione ''{0}'' non valida: i tipi di colonne della chiave esterna non corrispondono ai tipi delle colonne di riferimento.
+X0Y43.S=Restrizione ''{0}'' non valida: il numero di colonne presenti in {0} ({1}) non corrisponde al numero di colonne presenti nella chiave di riferimento ({2}).
+X0Y44.S=Restrizione ''{0}'' non valida: nessuna restrizione di chiave univoca o primaria sulla tabella ''{1}'' corrisponde al numero e ai tipi di colonne presenti nella chiave esterna.
+X0Y45.S=Impossibile aggiungere o attivare la restrizione della chiave esterna ''{0}'' sulla tabella {1} poich\u00e9 1 o pi\u00f9 chiavi esterne non dispongono di chiavi di riferimento corrispondenti.
+X0Y46.S=Restrizione ''{0}'' non valida: la tabella di riferimento {1} non esiste.
+X0Y54.S=Impossibile eliminare lo schema ''{0}'' poich\u00e9 non \u00e8 vuoto.
+X0Y55.S=Il numero di righe presenti nella tabella di base non corrisponde al numero di righe presenti in almeno 1 degli indici sulla tabella. L''indice ''{0}'' nella tabella ''{1}.{2}'' ha {3} righe mentre la tabella di base ne ha {4}.  L'azione di correzione suggerita \u00e8 quella di ricreare l'indice.
+X0Y56.S=''{0}'' non consentito nella tabella di sistema ''{1}''.
+X0Y57.S=Impossibile aggiungere una colonna non annullabile alla tabella ''{0}'' poich\u00e9 tale tabella contiene almeno 1 riga.  Le colonne non annullabili possono essere aggiunte solo alle tabelle vuote.
+X0Y58.S=Tentativo di aggiungere una restrizione di chiave primaria ''{0}'' non riuscito poich\u00e9 la tabella possiede gi\u00e0 una restrizione di quel tipo.  Una tabella pu\u00f2 disporre solo di una singola restrizione di chiave primaria.
+X0Y59.S=Tentativo di aggiungere o attivare una o pi\u00f9 restrizioni sulla tabella ''{1}'' non riuscito, poich\u00e9 la tabella contiene {2} righe che violano le seguenti restrizioni di controllo: {0}.
+X0Y63.S=Comando sulla tabella ''{0}'' non riuscito. Dati nulli trovati nelle colonne indice/restrizione univoca o chiave primaria. Tutte le colonne presenti in una chiave indice primaria o univoca non devono essere nulle.
+X0Y66.S=Impossibile eseguire il commit in una connessione nidificata quando esiste un'operazione in sospeso nella connessione parent.
+X0Y67.S=Impossibile eseguire il rollback in una connessione nidificata quando esiste un'operazione in sospeso nella connessione parent.
+X0Y68.S={0} ''{1}'' gi\u00e0 esistente.
+X0Y69.S={1} non consentito poich\u00e9 il trigger {0} \u00e8 attivo su {2}.
+X0Y70.S=INSERT, UPDATE e DELETE non sono consentiti sulla tabella {1} poich\u00e9 il trigger {0} \u00e8 attivo.
+X0Y71.S=La manipolazione della transazione, ad esempio SET ISOLATION non \u00e8 consentita poich\u00e9 il trigger {0} \u00e8 attivo.
+X0Y72.S=Sostituzione contenuto esistente con nuova serie di righe non consentita su ''{0}'' poich\u00e9 possiede un trigger ({1}) abilitato.
+X0Y77.S=Impossibile emettere l'istruzione di impostazione isolamento transazione, su una transazione globale in corso, poich\u00e9 eseguirebbe implicitamente l'operazione di commit di tale transazione. 
+X0Y78.S=Impossibile chiamare Statement.executeQuery() tramite un'istruzione che restituisce un conteggio righe.
+X0Y79.S=Impossibile chiamare Statement.executeUpdate() tramite un'istruzione che restituisce ResultSet.
+X0Y80.S=Tabella ALTER ''{0}'' non riuscita. Dati nulli trovati nella colonna ''{1}''.
+X0Y83.S=AVVERTENZA: durante la cancellazione di una riga da una tabella, la riga dell''indice della riga della tabella di base {0} non \u00e8 stata trovata nell''indice con ID conglomerato {1}.  Questo problema \u00e8 stato corretto automaticamente come parte dell'operazione di cancellazione.
+XCL01.S=L''insieme di risultati non restituisce righe; operazione {0} non consentita.
+XCL05.S=Attivazione chiusa, operazione {0} non consentita.
+XCL07.S=Cursore ''{0}'' chiuso. Verificare che l'autocommit sia in modalit\u00e0 OFF.
+XCL08.S=Il cursore ''{0}'' non si trova su una riga.
+XCL09.S=\u00c8 stata inoltrata un''Attivazione al metodo ''{0}'' che non corrisponde a PreparedStatement.
+XCL10.S=\u00c8 stata compilata una PreparedStatement e i parametri sono stati modificati.  Se si sta utilizzando JDBC, \u00e8 necessario preparare nuovamente l'istruzione.
+XCL12.S=\u00c8 stato effettuato un tentativo di inserire una valore dati di tipo ''{0}'' in un valore dati di tipo ''{1}''.
+XCL13.S=La posizione del parametro ''{0}'' non \u00e8 compresa nell''intervallo.  Il numero dei parametri per questa istruzione preparata \u00e8 ''{1}''.
+XCL15.S=Si \u00e8 verificata una ClassCastException durante la chiamata del metodo compareTo() su un oggetto ''{0}''.  Il parametro sul metodo compareTo() \u00e8 di classe ''{1}''.
+XCL16.S=ResultSet non aperta, operazione ''{0}'' non consentita. Verificare che l'autocommit sia in modalit\u00e0 OFF.
+XCL17.S=Istruzione non consentita in questo database.
+XCL19.S=Riga mancante nella tabella ''{0}'' per la chiave ''{1}''.
+XCL20.S=Impossibile aggiornare i cataloghi a livello della versione ''{0}'' al livello della versione ''{1}''.
+XCL21.S=Si sta tentando di eseguire un'istruzione di definizione dati (CREATE, DROP, o ALTER) durante la  preparazione di un'istruzione differente. Ci\u00f2 non \u00e8 consentito. Si pu\u00f2 verificare se si esegue un'istruzione di definizione dati da un inizializzatore statico di una classe Java, utilizzata da un'istruzione SQL.
+XCL22.S=Il parametro {0} non pu\u00f2 essere registrato come parametro OUT perch\u00e9 \u00e8 un parametro IN.
+XCL23.S=Numero tipo SQL ''{0}'' non supportato da registerOutParameter().
+XCL24.S=Il parametro {0} compare come un parametro di output ma non \u00e8 stato definito in questo modo da registerOutParameter().  Se non \u00e8 un parametro di output, deve essere impostato sul tipo {1}.
+XCL25.S=Il parametro {0} non pu\u00f2 essere registrato come di tipo {1} poich\u00e9 \u00e8 mappato sul tipo {2} e questi non sono compatibili.
+XCL26.S=Il parametro {0} non \u00e8 un parametro di output.
+XCL27.S=Impossibile impostare i parametri output di ritorno.
+XCL30.S=\u00c8 stata riscontrata una IOException durante la lettura di ''{0}'' da InputStream.
+XCL31.S=Istruzione chiusa.
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=Impossibile definire la tabella come dipendente della tabella {0} a causa delle limitazioni imposte dalle regole di eliminazione. (La relazione \u00e8 a riferimento automatico e una relazione a riferimento automatico esiste gi\u00e0 con la regola di eliminazione SET NULL). 
+XCL34.S=Impossibile definire la tabella come dipendente della tabella {0} a causa delle limitazioni imposte dalle regole di eliminazione. (La relazione forma un ciclo di due o pi\u00f9 tabelle che eliminano la tabella o la collegano con s\u00e9 stessa (tutte le altre regole di eliminazione nel ciclo dovrebbero essere CASCADE).  
+XCL35.S=Impossibile definire la tabella come dipendente della tabella {0} a causa delle limitazioni imposte dalle regole di eliminazione. (La relazione elimina la tabella o la collega alla tabella indicata tramite relazioni multiple e la regola di eliminazione della relazione esistente \u00e8 SET NULL).  
+
+XCL36.S=la regola di eliminazione della chiave esterna deve essere {0}. La restrizione referenziale \u00e8 a riferimento automatico e una restrizione a riferimento automatico gi\u00e0 esistente ha la regola di eliminazione indicata (NO ACTION, RESTRICT o CASCADE).) 
+XCL37.S=la regola di eliminazione della chiave esterna deve essere {0}. (La restrizione referenziale \u00e8 a riferimento automatico e la tabella \u00e8 dipendente in una relazione con una regola di eliminazione CASCADE).
+XCL38.S=la regola di eliminazione della chiave esterna deve essere {0}. La relazione potrebbe eliminare la tabella o collegarla alla stessa tabella tramite relazioni multiple e tali relazioni devono avere la stessa regola di eliminazione (NO ACTION, RESTRICT o CASCADE).) 
+
+XCL39.S=la regola di eliminazione della chiave esterna non pu\u00f2 essere CASCADE. (Una restrizione di riferimento automatico esiste con una regola di eliminazione SET NULL, NO ACTION o RESTRICT.) 
+XCL40.S=la regola di eliminazione della chiave esterna non pu\u00f2 essere CASCADE. (La relazione potrebbe formare un ciclo che elimina la tabella o la collega a s\u00e9 stessa. Una delle regole di eliminazione esistenti non \u00e8 CASCADE; questa relazione pu\u00f2 essere definibile se la regola di eliminazione non \u00e8 CASCADE). 
+XCL41.S=la regola di eliminazione della chiave esterna non pu\u00f2 essere CASCADE. (La relazione potrebbe eliminare un'altra tabella o collegarla alla stessa tabella tramite percorsi multipli con diverse regole di eliminazione o con la regola di eliminazione uguale a SET NULL). 
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="CASCADE"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=Per utilizzare ''{0}'', aggiornare il database passando dalla versione {1} alla versione {2} o successiva.
+
+XCL48.S= TRUNCATE TABLE non \u00e8 consentito in ''{0}'' perch\u00e9 le restrizioni di chiave univoca/primaria in questa tabella vengono indicate abilitando le restrizioni di chiave esterne da altre tabelle. 
+XCL49.S= TRUNCATE TABLE non \u00e8 consentito in ''{0}'' perch\u00e9 il trigger DELETE \u00e8 stato abilitato ({1}).
+XCL50.S=L'aggiornamento del database da una versione precedente non \u00e8 supportato.  La versione del database di accesso \u00e8 ''{0}'', la versione di questo software \u00e8 ''{1}''.
+
+
+# Transaction states, matches DB2
+25000=Stato di transazione errato.
+
+# Authorization
+25501=Impossibile impostare la propriet\u00e0 di sola lettura della connessione in una transazione attiva.
+25502=Modifica dati SQL non consentita per una connessione, un utente o un database di sola lettura.
+25503=DDL non consentito per una connessione, un utente o un database di sola lettura.
+25505=Un utente con autorizzazione di sola lettura, o un utente in un database di sola lettura, non pu\u00f2 disattivare la modalit\u00e0 di sola lettura su una connessione.
+28501=Propriet\u00e0 di autorizzazione database ''{0}={1}'' non valida.
+28502.C=Il nome utente ''{0}'' non \u00e8 valido. 
+28503=L''utente (utenti) ''{0}'' deve essere incluso sia nell''elenco di autorizzazioni  di sola lettura sia in quello di accesso completo.
+28504=Utente (utenti) ''{1}'' ripetuto nell''elenco di accesso ''{0}'';
+04501.C=Connessione al database rifiutata.
+
+
+# Dependency Manager
+XD003.S=Impossibile ripristinare la dipendenza dal disco. DependableFinder = ''{0}''. Ulteriori informazioni: ''{1}''.
+XD004.S=Impossibile memorizzare le dipendenze.
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=Stato cursore non valido - nessuna riga corrente.
+
+07000=Almeno un parametro sull'istruzione corrente non \u00e8 inizializzato.
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=Il parametro {0} \u00e8 un parametro della procedura {1} e deve essere registrato con CallableStatement.registerOutParameter prima dell''esecuzione.
+
+07009=Nessun parametro di input.
+
+S0022=Colonna ''{0}'' non trovata.
+XJ009.S=Utilizzo di CallableStatement richiesto per la chiamata della procedura memorizzata o utilizzo dei parametri di output: {0}
+XJ010.S=Impossibile generare savepoint quando autoCommit \u00e8 attivo.
+XJ011.S=Impossibile inviare un valore nullo per il nome savepoint.
+XJ012.S=''{0}'' gi\u00e0 chiuso.
+XJ013.S=Nessun ID per i savepoint denominati.
+XJ014.S=Nessun nome per i savepoint che non sono denominati.
+XJ016.S=Metodo ''{0}'' non consentito sull''istruzione preparata.
+XJ017.S=Nessun comando savepoint consentito all'interno del codice trigger.
+XJ018.S=Il nome colonna non pu\u00f2 essere nullo.
+XJ020.S=Tipo di oggetto non convertibile in TYPE ''{0}'', valore java.sql.Types non valido o puntatore nullo all''oggetto.
+XJ022.S=Impossibile impostare il flusso: ''{0}''.
+XJ023.S=Il flusso di input contiene un minor numero di dati rispetto alla lunghezza richiesta.
+XJ025.S=Il flusso di input non pu\u00f2 contenere una lunghezza negativa.
+XJ030.S=Impossibile impostare AUTOCOMMIT ON in una connessione nidificata.
+XJ042.S=''{0}'' non \u00e8 un valore valido per la propriet\u00e0 ''{1}''.
+XJ044.S=''{0}'' non \u00e8 una scala valida.
+XJ045.S=Livello di isolamento non valido o non supportato, ''{0}'', inviato a Connection.setTransactionIsolationLevel(). I valori supportati sono java.sql.Connection.TRANSACTION_SERIALIZABLE, java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED e java.sql.Connection.TRANSACTION_READ_UNCOMMITTED.
+XJ04B.S=Il batch non pu\u00f2 contenere un comando che tenti di restituire un insieme di risultati.
+XJ04C.S=Il batch CallableStatement non pu\u00f2 contenere i parametri di output.
+XJ056.S=Impossibile impostare AUTOCOMMIT ON in una connessione XA.
+XJ057.S=Impossibile eseguire l'operazione di commit di una transazione globale utilizzando la Connessione, l'elaborazione del commit deve essere eseguita attraverso l'interfaccia XAResource.
+XJ058.S=Impossibile eseguire l'operazione di rollback di una transazione globale utilizzando la Connessione, l'elaborazione del commit deve essere eseguita attraverso l'interfaccia XAResource.
+XJ059.S=Impossibile chiudere una connessione mentre una transazione globale \u00e8 ancora attiva.
+XJ05C.S=Impossibile impostare holdability ResultSet.HOLD_CURSORS_OVER_COMMIT per una transazione globale.
+XJ061.S=Il metodo ''{0}'' \u00e8 consentito solo sui cursori di scorrimento.
+XJ062.S=Valore parametro ''{0}'' non valido per ResultSet.setFetchSize(int rows).
+XJ063.S=Valore parametro ''{0}'' non valido per Statement.setMaxRows(int maxRows).  Il valore del parametro deve essere >= 0.
+XJ064.S=Valore parametro ''{0}'' non valido per setFetchDirection(int direction).
+XJ065.S=Valore parametro ''{0}'' non valido per Statement.setFetchSize(int rows).
+XJ066.S=Valore parametro ''{0}'' non valido per Statement.setMaxFieldSize(int max).
+XJ067.S=Il puntatore di testo SQL \u00e8 nullo.
+XJ068.S=executeBatch e clearBatch sono consentiti solo durante un batch.
+XJ069.S=Nessun metodo SetXXX consentito in caso di Execute Statement Using.
+XJ080.S=Execute Statement Using ha inviato {0} parametri invece di {1}.
+XJ070.S=Argomento posizione negativo o nullo ''{0}'' inviato in un metodo Blob o Clob.
+XJ071.S=Argomento lunghezza nullo o negativo ''{0}'' inviato in un metodo Blob o Clob.
+XJ072.S=Modello nullo o searchStr inviato in un metodo di posizione Blob o Clob.
+XJ073.S=I dati presenti nel metodo Blob o Clob non sono pi\u00f9 disponibili. Le ragioni possibili possono essere che la transazione \u00e8 stata sottoposta a commit o che la connessione \u00e8 chiusa.
+XJ076.S=L''argomento posizione ''{0}'' supera la dimensione di Blob/Clob.
+XJ077.S=\u00c8 stata riscontrata un'eccezione durante il tentativo di leggere il primo byte/carattere del modello Blob/Clob, utilizzando getBytes/getSubString.
+XJ082.U=I valori BLOB/CLOB non sono consentiti come parametri di metodo o destinatari.
+
+0A000.S=Funzione non implementata: {0}.
+
+XJ004.C=Database ''{0}'' non trovato.
+08004=Connessione rifiutata : {0}
+A020=Autenticazione non valida.
+08003=Nessuna connessione corrente.
+XJ028.C=URL ''{0}'' non formato correttamente.
+XJ040.C=Impossibile avviare il database ''{0}''; per i dettagli consultare l''eccezione successiva.
+XJ041.C=Impossibile creare il database ''{0}''; per i dettagli consultare l''eccezione successiva.
+XJ049.C=Conflitto durante la creazione degli attributi specificati.
+XJ081.C=Sono stati specificati degli attributi di creazione/ripristino/recupero in conflitto.
+XJ05B.C=L''attributo JDBC ''{0}'' possiede un valore non valido ''{1}'', i valori validi sono ''{2}''.
+
+XXXXX.C.6=Chiusura sessione database normale.
+
+08006.D=Arresto database ''{0}''.
+
+XJ015.M=Arresto del sistema Derby.
+
+01J01=Database ''{0}'' non creato, connessione eseguita al database esistente.
+01J02=I cursori di scorrimento sensibili non sono implementati.
+01J03=Le ResultSet aggiornabili non sono implementate.
+01J04=La classe ''{0}'' della colonna ''{1}'' non implementa java.io.Serializable o java.sql.SQLData. Le istanze devono implementare una di queste interfacce per essere memorizzate.
+01J05=Aggiornamento database riuscito. Il database aggiornato \u00e8 pronto per l'uso. Nuova convalida delle istruzioni preparate memorizzate non riuscita. Per i dettagli relativi a questo errore, consultare l'eccezione successiva.
+
+XJ001.U=Eccezione Java: ''{1}: {0}''.
+XJ050.U=\u00c8 necessario aggiornare il database dalla versione {0}, impostare l''attributo ''upgrade=true'' sull''URL della connessione JDBC per consentire l''aggiornamento alla versione {1}.
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=Autorizzazione ''{0}'' sconosciuta.
+XCZ01.S=Utente ''{0}'' sconosciuto.
+XCZ02.S=Parametro ''{0}''=''{1}'' non valido.
+
+# SQL J Jar support
+46001=Eccezione durante l''accesso al file jar tramite l''URL ''{0}''.
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  INIZIO MESSAGGIO DI ERRORE -------------\n
+L002=------------  FINE MESSAGGIO DI ERRORE -------------\n
+L003=\n------------  INIZIO ARRESTO STACK ERRORI -------------\n
+L004=\n------------  FINE ARRESTO STACK ERRORI -------------\n
+L005=\n------------  INIZIO STACK ERRORI-------------\n
+L006=\n------------  FINE STACK ERRORI-------------\n
+L007=AVVERTENZA: file di log non trovato, creazione nuovo log. Possibile incoerenza nel database
+L008=Cancellazione vecchio Logfile {0} non compatibile
+L009=Cancellazione vecchio Logfile {0}
+L010=\u00c8 stato rilevato un record di log incompleto nel file {0}, durante l''eliminazione del file di log dalla posizione {1} alla fine del file {2}.
+L011=Il Daemon di controllo ha riscontrato l'eccezione standard
+L012=Il record di log non \u00e8 il primo ma la transazione non si trova nella tabella transazioni : {0}
+L013=Il record di log \u00e8 il primo ma la transazione si trova gi\u00e0 nella tabella transazioni : {0}
+L014=Classe instant di avvio errata
+L015=Il nuovo file di log esiste e non pu\u00f2 essere cancellato {0}
+L016=impossibile creare un nuovo file di log {0}
+L017=impossibile creare un nuovo file di log {0} a causa di {1}
+L018=Il sistema potrebbe trovarsi in uno stato incoerente, file {0} mancante
+
+# Class Manager
+C000=Classe {0} scritta sul file {1}. Fornire il supporto tramite il file e le seguenti informazioni relative all''eccezione: {2}
+C001=La classe {0} dispone di un tipo di certificato sconosciuto in jar {1}, previsto certificato X509.
+C002=Eccezione di sicurezza riscontrata durante l''accesso alla classe {0} in jar {1} : {2}
+C003=Eccezione durante il caricamento del database jar {0} - {1}
+C004=Programma di caricamento classi obsoleto per la classe {0}
+C005=Programma di caricamento classe database avviato - derby.database.classpath=''{0}''
+C006={0} \u00e8 stato caricato dal database jar {1}
+C007=Eccezione durante il caricamento della classe {0} da jar {1} - {2}
+
+# RawStore Data
+
+D001=:\n Avvio Derby versione {0}: istanza {1}\nsu directory database {2} \n
+D002=:\nArresto istanza {0}
+D004=Backup avviato per il database situato in {0}
+D005=vecchia copia di backup spostata da {0} a {1}
+D006=directory database spostata da {0} a {1}
+D007=database service.properties modificato per utilizzare il dispositivo di log predefinito
+D008=errore durante la modifica del database service.properties, backup interrotto: {0}
+D009=directory di log copiata da {0} a {1}
+D010=Backup interrotto a causa di un errore
+D011=vecchia copia di backup eliminata su {0}
+D012=Backup completato, classe instant di log su {0} \n
+
+# Connectivity 
+J004=identit\u00e0 database
+J005=arresta Derby
+J007=crea database
+J008=nessun dettaglio
+J010=codifica database su disco
+J013=aggiorna database
+J016=provider servizio crittografico
+J017=algoritmo crittografico
+J018=lunghezza chiave crittografica
+J019=chiave crittografica esterna
+J020=chiave crittografica segreta
+J021=impostazioni internazionali per il database
+J022=nome utente
+J023=password utente
+J025=percorso directory di log
+J028=percorso di backup per il ripristino rollforward
+J100=Impossibile trovare la classe del server di rete, {0}. Il percorso di classi deve contenere csnet.jar.
+J101=Impossibile caricare la classe del server di rete, {0}. {1} Verificare l'integrit\u00e0 del file csnet.jar.
+J102=Si \u00e8 verificata un'eccezione durante l'avvio del server di rete. {0}
+J103=Si \u00e8 verificata un'eccezione durante la chiusura del server di rete. {0}
+
+# Authentication
+A001=IRREVERSIBILE: non esiste alcun Servizio di autenticazione per il sistema
+A002=IRREVERSIBILE: non esiste alcun Servizio di autenticazione per il database
+A011=AVVERTENZA: nessun nome Server/Host LDAP menzionato nella propriet\u00e0 {0}; utilizzo di localhost:389
+
+I015=org.apache.derby.jdbc.EmbeddedDriver non \u00e8 registrato con il gestore driver JDBC
+I024=Database non disponibile
+I025=Driver JDBC non disponibile
+
+# Import/Export
+XIE01.S=Connessione nulla.
+XIE03.S=Dati trovati sulla riga {0} della colonna {1} dopo il delimitatore di arresto
+XIE04.S=File dati non trovato: {0}
+XIE05.S=Il file dati non pu\u00f2 essere nullo.
+XIE06.S=Nome entit\u00e0 nullo.
+XIE07.S=I separatori di campo e record non possono essere stringhe secondarie tra loro.
+XIE08.S=Non esiste alcuna colonna per nome: {0}
+XIE09.S=Il numero totale delle colonne presenti nella riga \u00e8: {0}
+XIE0B.S=La colonna ''{0}'' nella tabella \u00e8 di tipo {1}, non \u00e8 supportata da import/export.
+XIE0D.S=Impossibile trovare il separatore di record sulla riga {0}
+XIE0E.S=Carattere di fine file riscontrato in una posizione non prevista nella riga {0}
+XIE0I.S=Riscontrata IOException durante la scrittura dei dati sul file
+XIE0J.S=Un delimitatore non \u00e8 valido o viene utilizzato pi\u00f9 volte.
+XIE0K.S=Il punto \u00e8 stato specificato come delimitatore della stringa di carattere.
+XIE0M.S=La tabella ''{0}'' non esiste.
+
+# Monitor
+M001=\n# ****************************************************************************************\n# ***                NON modificare questo file.                 ***\n# *** LA MODIFICA DEL CONTENUTO DI QUESTO FILE POTREBBE CAUSARE LA CORRUZIONE DEI DATI. ***\n# ****************************************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_ja_JP.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_ja_JP.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1235 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=\u4f8b\u5916\u306e\u305f\u3081\u3001\u59cb\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u8a73\u3057\u304f\u306f\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBM02.D={0} \u306e\u6a5f\u80fd\u304c\u306a\u3044\u305f\u3081\u3001\u59cb\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 \u30af\u30e9\u30b9\u30d1\u30b9\u306b\u6b63\u3057\u3044 Derby \u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBM05.D={0} \u306e\u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u304c\u306a\u3044\u305f\u3081\u3001\u59cb\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+XBM06.D=\u59cb\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u6697\u53f7\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u3001\u6b63\u3057\u3044\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u306a\u3044\u3068\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002
+XBM07.D=\u59cb\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u9577\u3055\u306f 8 \u30d0\u30a4\u30c8\u4ee5\u4e0a\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XBM08.D={0} StorageFactory \u30af\u30e9\u30b9 {1} \u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+
+XBM0G.D=\u6697\u53f7\u5316\u30a8\u30f3\u30b8\u30f3\u306e\u59cb\u52d5\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 Java 2 \u3092\u5b9f\u884c\u3057\u3066\u304a\u308a\u3001JCE \u306a\u3069\u306e\u6697\u53f7\u5316\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u6307\u5b9a\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBM0H.D=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+XBM0I.D=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u3092\u9664\u53bb\u3067\u304d\u307e\u305b\u3093\u3002
+XBM0J.D=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002
+XBM0K.D=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d {0} \u306e\u30b5\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u304c\u4e0d\u660e\u3067\u3059\u3002
+XBM0L.D=\u6307\u5b9a\u3055\u308c\u305f\u8a8d\u8a3c\u30b9\u30ad\u30fc\u30e0\u30fb\u30af\u30e9\u30b9 {0} \u306f\u3001\u8a8d\u8a3c\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9 {1} \u3092\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002
+XBM0M.D=\u8a8d\u8a3c\u30b9\u30ad\u30fc\u30e0\u30fb\u30af\u30e9\u30b9 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\u3067\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XBM0N.D=java.sql.DriverManager \u3078\u306e JDBC \u30c9\u30e9\u30a4\u30d0\u30fc\u306e\u767b\u9332\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u8a73\u3057\u304f\u306f\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBM0P.D=\u30b5\u30fc\u30d3\u30b9\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059\u3002\u3053\u306e\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XBM0S.D=\u30d5\u30a1\u30a4\u30eb ''{0}'' \u3092 ''{1}'' \u306b\u540d\u524d\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002
+XBM0T.D=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d {0} \u306e\u30b5\u30d6\u30d7\u30ed\u30c8\u30b3\u30eb\u304c\u672a\u78ba\u5b9a\u3067\u3059\u3002
+XBM0U.S=ID {0} \u306b\u5bfe\u3057\u3066\u30af\u30e9\u30b9\u304c\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+XBM0V.S=ID {0} \u306b\u5bfe\u3057\u3066\u767b\u9332\u3055\u308c\u305f\u30af\u30e9\u30b9 {1} \u306e\u30ed\u30fc\u30c9\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f
+XBM0W.S=ID {0} \u306b\u5bfe\u3057\u3066\u767b\u9332\u3055\u308c\u305f\u30af\u30e9\u30b9 {1} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f
+XBM0X.D=\u63d0\u4f9b\u3055\u308c\u305f\u30c6\u30ea\u30c8\u30ea\u30fc\u8a18\u8ff0 ''{0}'' \u306f\u7121\u52b9\u3067\u3059\u3002\u4e88\u671f\u3055\u308c\u3066\u3044\u308b\u30c6\u30ea\u30c8\u30ea\u30fc\u8a18\u8ff0: ln[_CO[_variant]]\nln= \u5c0f\u6587\u5b57 2 \u6587\u5b57\u304b\u3089\u6210\u308b ISO-639 \u8a00\u8a9e\u30b3\u30fc\u30c9\u3001CO= \u5927\u6587\u5b57 2 \u6587\u5b57\u304b\u3089\u6210\u308b ISO-3166 \u56fd\u5225\u30b3\u30fc\u30c9\u3002java.util.Locale \u3092\u53c2\u7167\u3002
+XBM0Y.D=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u6307\u5b9a\u3057\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30d1\u30b9\u304c\u6b63\u3057\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBM0Z.D=\u30d5\u30a1\u30a4\u30eb ''{0}'' \u3092 ''{1}'' \u306b\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 \u5341\u5206\u306a\u30b9\u30da\u30fc\u30b9\u304c\u3042\u308a\u3001\u8a31\u53ef\u304c\u6b63\u3057\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 
+XBM0Q.D=\u30d5\u30a1\u30a4\u30eb {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30b3\u30d4\u30fc\u304c\u6b63\u3057\u3044\u3082\u306e\u3067\u3042\u308a\u3001\u305d\u308c\u304c\u7834\u58ca\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBM0R.D=\u30d5\u30a1\u30a4\u30eb {0} \u3092\u9664\u53bb\u3067\u304d\u307e\u305b\u3093\u3002
+
+# Upgrade
+XCW00.D=''{0}'' \u304b\u3089 ''{1}'' \u3078\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+
+# Feature not supported
+
+
+# COntext service
+08000=\u4e0d\u660e\u306e\u5272\u308a\u8fbc\u307f\u306b\u3088\u308a\u3001\u63a5\u7d9a\u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u307e\u3057\u305f\u3002
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u539f\u56e0\u3067\u30ed\u30c3\u30af\u3092\u7372\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30ed\u30c3\u30af\u3068\u5f85\u3061\u306e\u30b5\u30a4\u30af\u30eb:\n {0}\u9078\u629e\u3055\u308c\u305f victim \u306f XID : {1}
+
+40XL1=\u8981\u6c42\u6642\u9593\u5185\u306b\u30ed\u30c3\u30af\u3092\u7372\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
+40XL2=\u8981\u6c42\u6642\u9593\u5185\u306b\u30ed\u30c3\u30af\u3092\u7372\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002  lockTable \u30c0\u30f3\u30d7: {0}
+
+# ClassManager
+XBCM1.S=\u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9 {0} \u306e\u30ed\u30fc\u30c9\u4e2d\u306b Java \u30ea\u30f3\u30b1\u30fc\u30b8\u30fb\u30a8\u30e9\u30fc\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+XBCM2.S=\u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+XBCM3.S=\u30e1\u30bd\u30c3\u30c9 {1}() \u306f\u3001\u751f\u6210\u3055\u308c\u305f\u30af\u30e9\u30b9 {0} \u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+
+# Properties
+
+XCY00.S=\u7121\u52b9\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u5024 ''{0}''=''{1}''\u3002
+XCY02.S=\u8981\u6c42\u3055\u308c\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306e\u5909\u66f4\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002''{0}''=''{1}''\u3002
+XCY03.S=\u5fc5\u8981\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc ''{0}'' \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+
+# Cryptography
+XBCX0.S=\u6697\u53f7\u65b9\u5f0f\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304b\u3089\u306e\u4f8b\u5916\u3002\u8a73\u3057\u304f\u306f\u3001\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBCX1.S=\u8aa4\u3063\u305f\u30e2\u30fc\u30c9\u3067\u6697\u53f7\u3092\u521d\u671f\u5316\u3057\u3066\u3044\u307e\u3059\u3002ENCRYPT \u304b DECRYPT \u306e\u3044\u305a\u308c\u304b\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBCX2.S=\u6697\u53f7\u306e\u521d\u671f\u5316\u306b\u4f7f\u3063\u3066\u3044\u308b\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u77ed\u904e\u304e\u307e\u3059\u3002\u5c11\u306a\u304f\u3068\u3082 {0} \u6587\u5b57\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XBCX5.S=\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u3092 NULL \u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XBCX6.S=\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u3001\u975e\u30b9\u30c8\u30ea\u30f3\u30b0\u306e\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u53ef\u80fd\u306a\u30bf\u30a4\u30d7\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XBCX7.S=\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u304c\u8aa4\u308a\u3067\u3059\u3002  \u6b63\u3057\u3044\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u6b21\u306e\u901a\u308a\u3067\u3059: old_boot_password, new_boot_password\u3002
+XBCX8.S=\u6697\u53f7\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002
+XBCX9.S=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u306f\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002
+XBCXA.S=\u30d6\u30fc\u30c8\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u8aa4\u308a\u3067\u3059\u3002
+XBCXB.S=\u8aa4\u3063\u305f\u6697\u53f7\u5316\u57cb\u3081\u8fbc\u307f ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u305f\u304b\u3001\u57cb\u3081\u8fbc\u307f\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 ''NoPadding'' \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBCXC.S=\u6697\u53f7\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 \u9078\u629e\u3057\u305f\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc ''{1}'' \u304c\u3053\u306e\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u304b\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBCXD.S=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u5f8c\u306b\u6697\u53f7\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XBCXE.S=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u5f8c\u306b\u6697\u53f7\u5316\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XBCXF.S=\u6697\u53f7\u5316\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u793a\u3059\u30af\u30e9\u30b9 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XBCXG.S=\u6697\u53f7\u5316\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+XBCXH.S=encryptionAlgorithm ''{0}'' \u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u304c\u8aa4\u308a\u3067\u3059\u3002 \u6b63\u3057\u3044\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u3001algorithm/feedbackMode/NoPadding \u3067\u3059\u3002
+XBCXI.S=\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u30fb\u30e2\u30fc\u30c9 ''{0}'' \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u30fb\u30e2\u30fc\u30c9\u306f CBC\u3001CFB\u3001OFB\u3001\u304a\u3088\u3073 ECB \u3067\u3059\u3002
+XBCXJ.S=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u30011.2.1 \u3088\u308a\u524d\u306e Java Cryptography Extension (JCE) \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002  JCE 1.2.1 \u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u305f\u4e0a\u3067\u3001\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBCXK.S=\u4e0e\u3048\u3089\u308c\u305f\u6697\u53f7\u9375\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u6642\u306b\u4f7f\u7528\u3055\u308c\u305f\u6697\u53f7\u9375\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\u6b63\u3057\u3044\u6697\u53f7\u9375\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u3001\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XBCXL.S=\u6697\u53f7\u9375\u306e\u691c\u67fb\u30d7\u30ed\u30bb\u30b9\u306f\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u8a73\u3057\u304f\u306f\u3001\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u539f\u56e0\u3068\u3057\u3066\u306f\u3001\u691c\u67fb\u30d7\u30ed\u30bb\u30b9\u3092\u884c\u3046\u305f\u3081\u306e\u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u4e2d\u306e\u30a8\u30e9\u30fc\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=\u30ad\u30fc {1} \u3092\u4f7f\u3063\u3066 {0} \u30ad\u30e3\u30c3\u30b7\u30e5\u5185\u306b\u65b0\u898f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3053\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3059\u3067\u306b\u3053\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u5b58\u5728\u3057\u307e\u3059\u3002
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=\u8981\u6c42\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 ({0}) \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+XSAI3.S=\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306f\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=\u30b9\u30ad\u30e3\u30f3\u30fb\u30bf\u30a4\u30d7
+XSAJ1.U=\u8a2a\u554f\u3057\u305f\u30da\u30fc\u30b8\u6570
+XSAJ2.U=\u8a2a\u554f\u3057\u305f\u884c\u6570
+XSAJ3.U=\u8a2a\u554f\u3057\u305f\u524a\u9664\u6e08\u307f\u884c\u6570
+XSAJ4.U=\u4fee\u98fe\u3055\u308c\u305f\u884c\u6570
+XSAJ5.U=\u30d5\u30a7\u30c3\u30c1\u3055\u308c\u305f\u5217\u6570
+XSAJ6.U=\u30d5\u30a7\u30c3\u30c1\u3055\u308c\u305f\u30d3\u30c3\u30c8\u5217\u30bb\u30c3\u30c8
+XSAJ7.U=\u30c4\u30ea\u30fc\u306e\u9ad8\u3055
+XSAJ8.U=\u30bd\u30fc\u30c8\u30fb\u30bf\u30a4\u30d7
+XSAJA.U=\u5165\u529b\u884c\u6570
+XSAJB.U=\u51fa\u529b\u884c\u6570
+XSAJC.U=\u30de\u30fc\u30b8\u5b9f\u884c\u6570
+XSAJD.U=\u30de\u30fc\u30b8\u5b9f\u884c\u30b5\u30a4\u30ba
+XSAJE.U=\u3059\u3079\u3066
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=\u30d2\u30fc\u30d7
+XSAJH.U=\u30bd\u30fc\u30c8
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=\u5916\u90e8
+XSAJJ.U=\u5185\u90e8
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=XA \u30d7\u30ed\u30c8\u30b3\u30eb\u9055\u53cd\u3002
+XSAX1.S=\u65e2\u5b58\u3059\u308b\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e Xid \u3092\u4f7f\u3063\u3066\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u958b\u59cb\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=''{0}'' \u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30d6\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u4f8b\u5916\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002
+XSAM2.S=\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u3001conglom id ''{0}'' \u3092\u6301\u3064\u7d22\u5f15\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XSAM3.S=conglom id ''{0}'' \u3092\u6301\u3064\u7d22\u5f15\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XSAM4.S=''{0}'' \u3068\u3044\u3046\u540d\u524d\u306e\u30bd\u30fc\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XSAM5.S=\u30b9\u30ad\u30e3\u30f3\u3092\u30aa\u30fc\u30d7\u30f3\u3057\u3001next() \u3092\u547c\u3073\u51fa\u3057\u3066\u4f4d\u7f6e\u3092\u79fb\u52d5\u3057\u3066\u304b\u3089\u4ed6\u306e\u547c\u3073\u51fa\u3057\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XSAM6.S=\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u5185\u306e\u30da\u30fc\u30b8 {1} \u4e0a\u306e\u30ec\u30b3\u30fc\u30c9 {2} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306f\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+XSCH7.S=\u30b9\u30ad\u30e3\u30f3\u304c\u4f4d\u7f6e\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+XSCH6.S=\u30d2\u30fc\u30d7\u30fb\u30b3\u30f3\u30c6\u30ca\u30fc (\u30b3\u30f3\u30c6\u30ca\u30fc ID {0}) \u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u307e\u3057\u305f\u3002
+XSCH5.S=\u57fa\u672c\u8868\u306b\u304a\u3044\u3066\u3001\u8981\u6c42\u3055\u308c\u305f\u5217\u6570 {0} \u3068\u6700\u5927\u5217\u6570 {1} \u3068\u306e\u9593\u306b\u30df\u30b9\u30de\u30c3\u30c1\u304c\u3042\u308a\u307e\u3057\u305f\u3002
+XSCH4.S=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSCH1.S=\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XSCH0.S=\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=\u30c6\u30b9\u30c8\u7528\u306b\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSCB8.S=btree \u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 {0} \u306f\u30af\u30ed\u30fc\u30ba\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSCB7.S=btree \u306e\u30b9\u30ad\u30e3\u30f3\u4e2d\u306b\u5185\u90e8\u30a8\u30e9\u30fc\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002current_rh \u306f NULL = {0}\u3002\u4f4d\u7f6e\u30ad\u30fc\u306f NULL = {1}\u3002
+XSCB6.S=\u5236\u9650: \u30da\u30fc\u30b8\u4e0a\u306e\u30b9\u30da\u30fc\u30b9\u4e0d\u8db3\u306e\u305f\u3081\u3001btree \u306e 2 \u6b21\u7d22\u5f15\u3092\u66f4\u65b0\u307e\u305f\u306f\u633f\u5165\u3067\u304d\u307e\u305b\u3093\u3002  \u3053\u306e\u5236\u9650\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc derby.storage.pageSize \u304a\u3088\u3073/\u307e\u305f\u306f derby.storage.pageReservedSpace \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSCB5.S=btree \u633f\u5165\u307e\u305f\u306f\u524a\u9664\u306e\u8ad6\u7406 UNDO \u4e2d\u3001\u30c4\u30ea\u30fc\u3067\u3053\u306e\u884c\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSCB4.S=\u30b9\u30ad\u30e3\u30f3\u3092\u6700\u521d\u306e\u884c\u306b\u4f4d\u7f6e\u4ed8\u3051\u308b\u524d (\u3064\u307e\u308a\u3001next() \u547c\u3073\u51fa\u3057\u304c\u884c\u308f\u308c\u308b\u524d) \u306b\u3001btree \u30aa\u30fc\u30d7\u30f3\u30fb\u30b9\u30ad\u30e3\u30f3\u4e0a\u306e\u30e1\u30bd\u30c3\u30c9\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002  \u30b9\u30ad\u30e3\u30f3\u306e\u73fe\u5728\u306e\u72b6\u614b\u306f ({0}) \u3067\u3059\u3002
+XSCB3.S=\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u3002
+XSCB2.S=\u5fc5\u8981\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc {0} \u304c\u3001btree \u306e 2 \u6b21\u7d22\u5f15\u306e createConglomerate() \u306b\u4e0e\u3048\u3089\u308c\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u3067\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSCB1.S=\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XSCB0.S=\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=\u30bd\u30fc\u30c8\u3059\u308b\u305f\u3081\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u7372\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSAS3.S=\u30bd\u30fc\u30c8\u306b\u633f\u5165\u3055\u308c\u305f\u884c\u306e\u30bf\u30a4\u30d7\u304c\u3001\u30bd\u30fc\u30c8\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
+XSAS1.S=\u30bd\u30fc\u30c8\u306e\u958b\u59cb\u524d\u307e\u305f\u306f\u30bd\u30fc\u30c8\u306e\u7d42\u4e86\u5f8c\u306b\u884c\u3092\u30d5\u30a7\u30c3\u30c1\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
+XSAS0.S=\u30bd\u30fc\u30c8\u306e\u30b9\u30ad\u30e3\u30f3\u306b\u4e0d\u9069\u5207\u306a\u30b9\u30ad\u30e3\u30f3\u30fb\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u30fb\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u30fb\u30e1\u30bd\u30c3\u30c9\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=\u3059\u3067\u306b\u30d5\u30ea\u30fc\u30ba\u3057\u305f\u5f8c\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d5\u30ea\u30fc\u30ba\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XSRS1.S=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092 {0} \u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3067\u3059\u3002
+XSRS4.S=\u30d5\u30a1\u30a4\u30eb\u3092 (\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b) {0} \u304b\u3089 {1} \u306b\u540d\u524d\u5909\u66f4\u3057\u3088\u3046\u3068\u3057\u3066\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XSRS5.S=\u30d5\u30a1\u30a4\u30eb\u3092 (\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b) {0} \u304b\u3089 {1} \u306b\u30b3\u30d4\u30fc\u3057\u3088\u3046\u3068\u3057\u3066\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XSRS6.S=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+XSRS7.S=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3067\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916\u304c\u30ad\u30e3\u30c3\u30c1\u3055\u308c\u307e\u3057\u305f\u3002
+XSRS8.S=\u30ed\u30ae\u30f3\u30b0\u7528\u88c5\u7f6e\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u6642\u306b\u3057\u304b\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u3053\u3067\u3059\u3050\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XSRS9.S=\u30ec\u30b3\u30fc\u30c9 {0} \u306f\u3001\u3082\u306f\u3084\u5b58\u5728\u3057\u307e\u305b\u3093
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=\u3053\u308c\u4ee5\u4e0a\u5909\u66f4\u3092\u767a\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u30ed\u30b0\u30fb\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u304c\u505c\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
+XSLB8.S={1} \u306e\u9650\u5ea6\u3092\u8d85\u3048\u3066\u3001\u30b9\u30ad\u30e3\u30f3\u3092 {0} \u306b\u30ea\u30bb\u30c3\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002
+XSLB6.S=0 \u307e\u305f\u306f -ve \u306e\u9577\u3055\u306e\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002
+XSLB5.S=\u5207\u308a\u6368\u3066\u30dd\u30a4\u30f3\u30c8 {0} \u306b\u8aa4\u3063\u305f truncationLWM \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {1}\u3002 \u6b63\u3057\u3044\u7bc4\u56f2\u306f {2} \u304b\u3089 {3} \u3067\u3059\u3002
+XSLB4.S=truncationLWM {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XSLB2.S=\u30ed\u30b0\u30fb\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 {0} \u304c\u8d85\u904e\u30c7\u30fc\u30bf\u3092\u30ed\u30ae\u30f3\u30b0\u3057\u3066\u3044\u307e\u3059\u3002\u5185\u90e8\u30ed\u30b0\u30fb\u30d0\u30c3\u30d5\u30a1\u30fc\u304c\u6e80\u676f\u3067\u3059\u3002
+XSLB1.S=\u30ed\u30b0\u30fb\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 {0} \u306f\u3001\u30ed\u30b0\u30fb\u30b9\u30c8\u30ea\u30fc\u30e0\u3078\u306e\u66f8\u304d\u51fa\u3057\u4e2d\u306b\u30a8\u30e9\u30fc\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002\u8aa4\u3063\u305f\u30ed\u30b0\u30fb\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u5b9f\u884c\u3055\u308c\u305f\u304b\u3001\u6975\u7aef\u306b\u5927\u304d\u306a\u30ed\u30b0\u30fb\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u308a\u5185\u90e8\u30d0\u30c3\u30d5\u30a1\u30fc\u304c\u6e80\u676f\u306b\u306a\u3063\u305f\u3053\u3068\u304c\u539f\u56e0\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=\u30ed\u30b0\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u304c\u5b58\u5728\u3057\u307e\u3059\u3002 \u6307\u5b9a\u3055\u308c\u305f logDevice \u306e\u5834\u6240\u304c\u6b63\u3057\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002  
+XSLAS.D=\u30ea\u30b9\u30c8\u30a2\u306e\u9593\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4e2d\u306b\u30ed\u30b0\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30b3\u30d4\u30fc\u304c\u6b63\u3057\u3044\u3082\u306e\u3067\u3042\u308a\u3001\u305d\u308c\u304c\u7834\u58ca\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSLAR.D=\u30ea\u30b9\u30c8\u30a2\u306e\u9593\u306b\u3001\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb ''{0}'' \u3092 ''{1}'' \u306b\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 \u5341\u5206\u306a\u30b9\u30da\u30fc\u30b9\u304c\u3042\u308a\u3001\u8a31\u53ef\u304c\u6b63\u3057\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 
+XSLAQ.D=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u306b\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+XSLAP.D=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ({0}) \u306f\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u3067\u3059\u3002 \u30d9\u30fc\u30bf\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3002
+XSLAO.D=\u4e88\u671f\u3057\u306a\u3044\u554f\u984c {0} \u304c\u539f\u56e0\u3067\u3001\u30ea\u30ab\u30d0\u30ea\u30fc\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+XSLAN.D={0} \u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u3001\u3053\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u73fe\u884c\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u975e\u4e92\u63db\u3067\u3059\u3002  \u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u3001\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u306b\u3088\u3063\u3066\u4f5c\u6210\u307e\u305f\u306f\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3055\u308c\u307e\u3057\u305f\u3002
+XSLAM.D=IOException \u306e\u305f\u3081\u3001{1} \u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3002
+XSLAL.D=\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u30fb\u30b5\u30a4\u30ba {2} \u304c\u3001\u6700\u5927\u8a31\u5bb9\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u30fb\u30b5\u30a4\u30ba {3} \u3092\u8d85\u3048\u307e\u3057\u305f\u3002 \u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {0} (\u4f4d\u7f6e {1}) \u3067\u30a8\u30e9\u30fc\u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002
+XSLAK.D=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u3001\u6700\u5927\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u6570 {0} \u3092\u8d85\u3048\u307e\u3057\u305f\u3002
+XSLAJ.D=\u30ed\u30ae\u30f3\u30b0\u30fb\u30b7\u30b9\u30c6\u30e0\u306f\u3001\u4ee5\u524d\u306b\u767a\u751f\u3057\u305f\u554f\u984c\u306e\u305f\u3081\u306b\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3059\u308b\u3068\u30de\u30fc\u30af\u3055\u308c\u3066\u304a\u308a\u3001\u30b7\u30b9\u30c6\u30e0\u304c\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3057\u3066\u518d\u59cb\u52d5\u3055\u308c\u308b\u307e\u3067\u3001\u3053\u308c\u4ee5\u4e0a\u4f55\u3082\u64cd\u4f5c\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XSLAI.D=\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u30fb\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3067\u304d\u307e\u305b\u3093
+XSLAH.D=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u66f4\u65b0\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSLAF.D=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u30c0\u30fc\u30c6\u30a3\u30fc\u30fb\u30c7\u30fc\u30bf\u30fb\u30d0\u30c3\u30d5\u30a1\u30fc\u3092\u4f7f\u3063\u3066\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002
+XSLAE.D={0} \u306e\u5236\u5fa1\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u66f8\u304d\u8fbc\u307f\u307e\u305f\u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002
+XSLAD.D=\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {3} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {2} \u306b\u3042\u308b\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u304c\u7834\u58ca\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u4e88\u671f\u3055\u308c\u3066\u3044\u305f\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u9577\u306f {0} \u3067\u3057\u305f\u304c\u3001\u5b9f\u969b\u306e\u9577\u3055\u306f {1} \u3067\u3057\u305f\u3002
+XSLAC.D={0} \u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u3053\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u73fe\u884c\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u975e\u4e92\u63db\u3067\u3059\u3002\u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u3001\u305d\u308c\u3088\u308a\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u4f5c\u6210\u307e\u305f\u306f\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3055\u308c\u305f\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+XSLAB.D=\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002logDevice \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u304c\u3001\u4f7f\u7528\u3059\u308b\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9069\u5207\u306a\u30d1\u30b9\u533a\u5207\u308a\u8a18\u53f7\u3067\u6b63\u3057\u304f\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSLAA.D=\u3053\u306e\u30b9\u30c8\u30a2\u306f\u3001\u4ee5\u524d\u306b\u767a\u751f\u3057\u305f\u4f8b\u5916\u306b\u3088\u308a\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3068\u30de\u30fc\u30af\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSLA8.D=\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 {0} \u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3067\u304d\u307e\u305b\u3093\u3002{2} \u3067 {1} \u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u88dc\u6b63\u3092\u8a66\u884c\u3057\u307e\u3059\u3002
+XSLA7.D=\u30ed\u30b0\u306b\u3042\u308b\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 {0} \u3092\u518d\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002
+XSLA6.D=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30ea\u30ab\u30d0\u30ea\u30fc\u3067\u304d\u307e\u305b\u3093\u3002
+XSLA5.D=\u4f55\u3089\u304b\u306e\u7406\u7531\u306b\u3088\u308a\u30ed\u30b0\u30fb\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8aad\u307f\u53d6\u3063\u3066\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 {0} \u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+XSLA4.D=\u30ed\u30b0\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3002\u30ed\u30b0\u304c\u6e80\u676f\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002  \u4e0d\u5fc5\u8981\u306a\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002  \u30d5\u30a1\u30a4\u30eb\u30fb\u30b7\u30b9\u30c6\u30e0\u304c\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3042\u308b\u3001\u30c7\u30a3\u30b9\u30af\u306b\u969c\u5bb3\u304c\u3042\u308b\u3001\u307e\u305f\u306f\u30e1\u30c7\u30a3\u30a2\u306b\u4f55\u3089\u304b\u306e\u554f\u984c\u304c\u3042\u308b\u3068\u3044\u3063\u305f\u3053\u3068\u3082\u539f\u56e0\u3068\u3057\u3066\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+XSLA3.D=\u30ed\u30b0\u304c\u7834\u58ca\u3055\u308c\u3066\u304a\u308a\u3001\u30ed\u30b0\u30fb\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u3059\u3002
+XSLA2.D=\u30b7\u30b9\u30c6\u30e0\u306f\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3057\u307e\u3059\u3002\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XSLA1.D=\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u304c\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u9001\u4fe1\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30b9\u30c8\u30a2 (\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 {0}) \u306b\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002  \u3053\u306e\u3053\u3068\u304c\u539f\u56e0\u3067\u30ea\u30ab\u30d0\u30ea\u30fc\u554f\u984c\u3082\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+XSLA0.D=\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30a3\u30b9\u30af {0} \u306b\u30d5\u30e9\u30c3\u30b7\u30e5\u3067\u304d\u307e\u305b\u3093\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=\u30d1\u30b9\u3055\u308c\u305f\u540d\u524d\u306e SAVEPOINT \u306f\u3059\u3067\u306b\u73fe\u884c\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306b\u5b58\u5728\u3057\u307e\u3059\u3002
+3B502.S=RELEASE \u307e\u305f\u306f ROLLBACK TO SAVEPOINT \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30bb\u30fc\u30d6\u30dd\u30a4\u30f3\u30c8\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+3B001.S=SAVEPOINT\u3001{0} \u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u307e\u305f\u306f\u3001\u73fe\u884c\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3067\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3042\u308a\u307e\u305b\u3093\u3002
+3B002.S=\u30bb\u30fc\u30d6\u30dd\u30a4\u30f3\u30c8\u306e\u6700\u5927\u6570\u306b\u5230\u9054\u3057\u307e\u3057\u305f\u3002 
+XSTA2.S=\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3057\u3088\u3046\u3068\u3057\u305f\u3068\u304d\u3001\u5225\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u3059\u3067\u306b\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3057\u305f\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=RawStore \u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u5185\u90e8\u30a8\u30e9\u30fc\u304c\u78ba\u8a8d\u3055\u308c\u307e\u3057\u305f\u3002
+40XT1=\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u30b3\u30df\u30c3\u30c8\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+40XT2=SAVEPOINT \u306e\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+40XT4=\u307e\u3060\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30af\u30ed\u30fc\u30ba\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306f\u30a2\u30dc\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\u3002
+40XT5=\u5185\u90e8\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+40XT6=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u9759\u6b62\u72b6\u614b\u3067\u3059\u3002\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u6d3b\u52d5\u5316\u3067\u304d\u307e\u305b\u3093\u3002  \u9759\u6b62\u72b6\u614b\u304c\u7d42\u308f\u308b\u307e\u3067\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002
+40XT7=\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306f\u5185\u90e8\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=\u7121\u52b9\u306a ID\u3002
+XCXB0.S=\u7121\u52b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30af\u30e9\u30b9\u30d1\u30b9: ''{0}''\u3002
+XCXC0.S=\u7121\u52b9\u306a ID \u30ea\u30b9\u30c8\u3002
+XCXE0.S=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30c6\u30ea\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u305d\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u30c6\u30ea\u30c8\u30ea\u30fc\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u30a2\u30dc\u30fc\u30c8\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+XSTB2.M=\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u5909\u66f4\u3092\u30ed\u30b0\u306b\u8a18\u9332\u3067\u304d\u307e\u305b\u3093\u3002\u304a\u305d\u3089\u304f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u66f8\u304d\u8fbc\u3082\u3046\u3068\u3057\u3066\u3044\u308b\u3068\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+XSTB3.M=(\u304a\u305d\u3089\u304f\u4ee5\u524d\u306e\u30a8\u30e9\u30fc\u304c\u539f\u56e0\u3067) \u30ed\u30b0\u30fb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u304c NULL \u306e\u305f\u3081\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30a2\u30dc\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3002
+XSTB5.M=\u30ed\u30b0\u3092\u4f7f\u7528\u3057\u306a\u3044\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u4e2d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XSTB6.M=1 \u3064\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u8868\u304c\u3059\u3067\u306b\u4f7f\u7528\u4e2d\u306e\u5834\u5408\u3001\u305d\u308c\u3092\u5225\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u8868\u306b\u7f6e\u63db\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=\u30b3\u30f3\u30c6\u30ca\u30fc\u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u307e\u3057\u305f
+40XD1=\u30b3\u30f3\u30c6\u30ca\u30fc\u304c\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30e2\u30fc\u30c9\u3067\u30aa\u30fc\u30d7\u30f3\u3055\u308c\u307e\u3057\u305f
+40XD2=\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u306f\u30c9\u30ed\u30c3\u30d7\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=\u30da\u30fc\u30b8\u4e0a\u306e\u7bc4\u56f2\u5916\u306e\u30b9\u30ed\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f
+XSDA2.S=\u524a\u9664\u6e08\u307f\u30ec\u30b3\u30fc\u30c9\u3092\u66f4\u65b0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f
+XSDA3.S=\u5236\u9650: \u30da\u30fc\u30b8\u4e0a\u306e\u30b9\u30da\u30fc\u30b9\u4e0d\u8db3\u306e\u305f\u3081\u3001\u30ec\u30b3\u30fc\u30c9\u3092\u66f4\u65b0\u307e\u305f\u306f\u633f\u5165\u3067\u304d\u307e\u305b\u3093\u3002 \u3053\u306e\u5236\u9650\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc derby.storage.pageSize \u304a\u3088\u3073/\u307e\u305f\u306f derby.storage.pageReservedSpace \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSDA4.S=\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f
+XSDA5.S=\u524a\u9664\u3055\u308c\u3066\u3044\u306a\u3044\u30ec\u30b3\u30fc\u30c9\u306e\u524a\u9664\u3092\u53d6\u308a\u6d88\u305d\u3046\u3068\u3057\u307e\u3057\u305f
+XSDA6.S=\u884c\u306e\u5217 {0} \u304c NULL \u3067\u3059\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6307\u3059\u3088\u3046\u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XSDA7.S=\u30af\u30e9\u30b9 {0} \u306e\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u53ef\u80fd\u307e\u305f\u306f SQLData \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u30a2\u3067\u3001\u6700\u521d\u306b\u4fdd\u7ba1\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3088\u308a\u3082\u591a\u304f\u306e\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u53d6\u308a\u304c\u8a66\u884c\u3055\u308c\u307e\u3057\u305f
+XSDA8.S=\u30af\u30e9\u30b9 {0} \u306e\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u53ef\u80fd\u307e\u305f\u306f SQLData \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u30a2\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f
+XSDA9.S=\u30af\u30e9\u30b9 {0} \u306e\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u53ef\u80fd\u307e\u305f\u306f SQLData \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u30a2\u4e2d\u3001\u30af\u30e9\u30b9\u304c\u691c\u51fa\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f
+XSDAA.S=\u4e0d\u6b63\u306a\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7 {0}\u3002\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7\u306f\u5225\u306e\u30da\u30fc\u30b8\u306e\u3082\u306e\u304b\u3001\u307e\u305f\u306f\u975e\u4e92\u63db\u306e\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u3082\u306e\u3067\u3059
+XSDAB.S=NULL \u306e\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7\u306f\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093
+XSDAC.S=\u884c\u307e\u305f\u306f\u30da\u30fc\u30b8\u306e\u3044\u305a\u308c\u304b\u3092\u30b3\u30f3\u30c6\u30ca\u30fc\u304b\u3089\u5225\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u306b\u79fb\u52d5\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002
+XSDAD.S=1 \u3064\u306e\u30da\u30fc\u30b8\u304b\u3089\u5225\u306e\u30da\u30fc\u30b8\u306b\u30bc\u30ed\u884c\u3092\u79fb\u52d5\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002
+XSDAE.S=\u7279\u6b8a\u30ec\u30b3\u30fc\u30c9\u30fb\u30cf\u30f3\u30c9\u30eb ID \u306e\u30ec\u30b3\u30fc\u30c9\u30fb\u30cf\u30f3\u30c9\u30eb\u3057\u304b\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+XSDAF.S=\u901a\u5e38\u306e\u30ec\u30b3\u30fc\u30c9\u30fb\u30cf\u30f3\u30c9\u30eb\u306e\u3088\u3046\u306b\u3001\u7279\u6b8a\u30ec\u30b3\u30fc\u30c9\u30fb\u30cf\u30f3\u30c9\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002
+XSDAG.S=\u5272\u308a\u632f\u308a\u306e\u30cd\u30b9\u30c8\u3055\u308c\u305f\u6700\u4e0a\u4f4d\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306f\u3001\u30b3\u30f3\u30c6\u30ca\u30fc\u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSDAI.S=\u9664\u53bb\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u30da\u30fc\u30b8 {0} \u306f\u3001\u3059\u3067\u306b\u5272\u308a\u632f\u308a\u89e3\u9664\u306e\u305f\u3081\u306b\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSDAJ.S=\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u53ef\u80fd\u307e\u305f\u306f SQLData \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XSDAK.S=\u30ec\u30b3\u30fc\u30c9\u30fb\u30cf\u30f3\u30c9\u30eb {0} \u306b\u5bfe\u3057\u3066\u8aa4\u3063\u305f\u30da\u30fc\u30b8\u304c\u53d6\u5f97\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSDAL.S=\u30ec\u30b3\u30fc\u30c9\u30fb\u30cf\u30f3\u30c9\u30eb {0} \u306f\u3001\u4e88\u671f\u305b\u305a\u3001\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u30fb\u30da\u30fc\u30b8\u3092\u6307\u3057\u3066\u3044\u307e\u3059\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=\u30e1\u30e2\u30ea\u30fc\u5185\u306e\u30da\u30fc\u30b8 {0} \u3067\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f
+XSDB1.D=\u30da\u30fc\u30b8 {0} \u306b\u4e0d\u660e\u306e\u30da\u30fc\u30b8\u30fb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059
+XSDB2.D=\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u306b\u4e0d\u660e\u306e\u30b3\u30f3\u30c6\u30ca\u30fc\u30fb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u304c\u3042\u308a\u307e\u3059: {1}
+XSDB3.D=\u30b3\u30f3\u30c6\u30ca\u30fc\u60c5\u5831\u306f\u3001\u66f8\u304d\u8fbc\u307f\u5f8c\u306b\u306f\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002{0} \u3067\u3057\u305f\u304c\u3001\u73fe\u5728\u306f {1} \u3067\u3059\u3002
+XSDB4.D=\u30da\u30fc\u30b8 {0} \u306f\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u3067\u3001\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u5909\u66f4\u30d0\u30fc\u30b8\u30e7\u30f3 {2} \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30da\u30fc\u30b8\u306e\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u304c\u6b20\u843d\u3057\u3066\u3044\u308b\u304b\u3001\u3053\u306e\u30da\u30fc\u30b8\u304c\u6b63\u3057\u304f\u30c7\u30a3\u30b9\u30af\u306b\u66f8\u304d\u8fbc\u307e\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSDB5.D=\u30ed\u30b0\u306f\u30da\u30fc\u30b8 {0} \u306b\u5909\u66f4\u30ec\u30b3\u30fc\u30c9\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u30b3\u30f3\u30c6\u30ca\u30fc\u306e\u7d42\u308f\u308a\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002
+XSDB6.D=Derby \u306e\u5225\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u3059\u3067\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {0} \u3092\u30d6\u30fc\u30c8\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+XSDB7.D=\u8b66\u544a: Derby (\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {2}) \u304c\u307e\u3060\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001Derby ( \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {0}) \u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {1} \u3092\u30d6\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002  \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d6\u30fc\u30c8\u3067\u304d\u308b Derby \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u30011 \u5ea6\u306b 1 \u3064\u3060\u3051\u3067\u3059\u3002 \u3053\u308c\u306b\u3088\u308a\u91cd\u5927\u306a\u3001\u30ea\u30ab\u30d0\u30ea\u30fc\u4e0d\u80fd\u306e\u7834\u58ca\u304c\u767a\u751f\u3059\u308b\u304b\u3001\u307e\u305f\u306f\u3059\u3067\u306b\u7834\u58ca\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+XSDB8.D=\u8b66\u544a: Derby (\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {2}) \u304c\u307e\u3060\u30a2\u30af\u30c6\u30a3\u30d6\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u3001Derby ( \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {0}) \u304c\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 {1} \u3092\u30d6\u30fc\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002  \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d6\u30fc\u30c8\u3067\u304d\u308b Derby \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u30011 \u5ea6\u306b 1 \u3064\u3060\u3051\u3067\u3059\u3002 Derby \u306e 2 \u3064\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u540c\u6642\u306b\u540c\u3058\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d6\u30fc\u30c8\u3057\u305f\u5834\u5408\u3001\u91cd\u5927\u306a\u3001\u30ea\u30ab\u30d0\u30ea\u30fc\u4e0d\u80fd\u306a\u7834\u58ca\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002  db2j.database.forceDatabaseLock=true \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001db.lck \u304c\u5b58\u5728\u3057\u306a\u304f\u306a\u308b\u307e\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u30d6\u30fc\u30c8\u3057\u307e\u305b\u3093\u3002  \u901a\u5e38\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d6\u30fc\u30c8\u3059\u308b Derby \u306e\u6700\u521d\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u7d42\u4e86\u3057\u305f\u6642\u70b9\u3067\u9664\u53bb\u3055\u308c\u307e\u3059\u304c\u3001\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u65b9\u6cd5\u306b\u3088\u3063\u3066\u306f\u5f8c\u306b\u6b8b\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002  \u305d\u306e\u5834\u5408\u306f\u3001\u624b\u64cd\u4f5c\u3067\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u53bb\u3059\u308b\u3053\u3068\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002  db.lck \u30d5\u30a1\u30a4\u30eb\u3092\u624b\u64cd\u4f5c\u3067\u524a\u9664\u3059\u308b\u524d\u306b\u3001\u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3044\u308b VM \u304c\u307b\u304b\u306b\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XSDB9.D=\u30b9\u30c8\u30ea\u30fc\u30e0\u30fb\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u306f\u7834\u58ca\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XSDBA.D=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 {0} \u306e\u5272\u308a\u632f\u308a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=\u30d5\u30a1\u30a4\u30eb {0} \u306f\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u305f\u3081\u3001\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSDF1.S=\u30b3\u30f3\u30c6\u30ca\u30fc\u306e\u30d5\u30a1\u30a4\u30eb {0} \u306e\u4f5c\u6210\u4e2d\u306b\u4f8b\u5916
+XSDF2.S=\u30b3\u30f3\u30c6\u30ca\u30fc\u306e\u30d5\u30a1\u30a4\u30eb {0} \u306e\u4f5c\u6210\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u53bb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002  \u4f8b\u5916: {1}\u3002
+XSDF3.S=\u30bb\u30b0\u30e1\u30f3\u30c8 {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+XSDF4.S=\u30c9\u30ed\u30c3\u30d7\u6e08\u307f\u30b3\u30f3\u30c6\u30ca\u30fc\u306e\u30d5\u30a1\u30a4\u30eb {0} \u306e\u9664\u53bb\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u9664\u53bb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {1}\u3002
+XSDF6.S=\u5272\u308a\u632f\u308a\u30da\u30fc\u30b8 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XSDF7.S=\u65b0\u3057\u304f\u4f5c\u6210\u3055\u308c\u305f\u30da\u30fc\u30b8\u3092\u30e9\u30c3\u30c1\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0}
+XSDF8.S=\u518d\u4f7f\u7528\u3059\u308b\u30da\u30fc\u30b8 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XSDFB.S=\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
+XSDFD.S=\u30da\u30fc\u30b8 {0} \u306e 2 \u3064\u306e\u5165\u51fa\u529b\u3067\u7570\u306a\u308b\u30da\u30fc\u30b8\u30fb\u30a4\u30e1\u30fc\u30b8\u304c\u8aad\u307f\u53d6\u3089\u308c\u307e\u3057\u305f\u30021 \u3064\u76ee\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u8aa4\u3063\u305f\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u3092\u6301\u3063\u3066\u304a\u308a\u30012 \u3064\u76ee\u306e\u30a4\u30e1\u30fc\u30b8\u306f\u6b63\u3057\u3044\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002 \u30da\u30fc\u30b8\u30fb\u30a4\u30e1\u30fc\u30b8\u306f\u6b21\u306e\u901a\u308a\u3067\u3059: {1} {2}
+XSDFF.S=\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916\u306e\u305f\u3081\u3001\u8981\u6c42\u3055\u308c\u305f\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306f\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=\u30da\u30fc\u30b8 {0} \u3092\u30c7\u30a3\u30b9\u30af\u304b\u3089\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+XSDG1.D=\u30da\u30fc\u30b8 {0} \u3092\u30c7\u30a3\u30b9\u30af\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30c7\u30a3\u30b9\u30af\u304c\u6e80\u676f\u3067\u306a\u3044\u304b\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSDG2.D=\u30da\u30fc\u30b8 {0} \u306b\u7121\u52b9\u306a\u30c1\u30a7\u30c3\u30af\u30b5\u30e0\u3002\u4e88\u671f\u3055\u308c\u3066\u3044\u305f\u30c1\u30a7\u30c3\u30af\u30b5\u30e0={1}\u3001\u30c7\u30a3\u30b9\u30af\u4e0a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3={2}\u3001\u30da\u30fc\u30b8\u30fb\u30c0\u30f3\u30d7: {3}
+XSDG3.D=\u30b3\u30f3\u30c6\u30ca\u30fc {0} \u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f
+XSDG5.D=createFinished \u306e\u547c\u3073\u51fa\u3057\u6642\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4f5c\u6210\u30e2\u30fc\u30c9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XSDG6.D=\u30ea\u30b9\u30c8\u30a2\u306e\u9593\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u4e2d\u306b\u30c7\u30fc\u30bf\u30fb\u30bb\u30b0\u30e1\u30f3\u30c8\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30b3\u30d4\u30fc\u304c\u6b63\u3057\u3044\u3082\u306e\u3067\u3042\u308a\u3001\u305d\u308c\u304c\u7834\u58ca\u3055\u308c\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSDG7.D=\u30ea\u30b9\u30c8\u30a2\u306e\u9593\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {0} \u3092\u9664\u53bb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 \u8a31\u53ef\u304c\u6b63\u3057\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XSDG8.D=\u30ea\u30b9\u30c8\u30a2\u306e\u9593\u306b\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc ''{0}'' \u3092 ''{1}'' \u306b\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093\u3002 \u5341\u5206\u306a\u30b9\u30da\u30fc\u30b9\u304c\u3042\u308a\u3001\u8a31\u53ef\u304c\u6b63\u3057\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 
+
+# language
+01500=\u8868 {1} \u306e\u5236\u7d04 {0} \u304c\u30c9\u30ed\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002
+01501=\u30d3\u30e5\u30fc {0} \u304c\u30c9\u30ed\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002
+01502=\u8868 {1} \u306e\u30c8\u30ea\u30ac\u30fc {0} \u304c\u30c9\u30ed\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002
+01503=\u8868 {1} \u306e\u5217 {0} \u306f\u3001\u975e\u30cc\u30eb\u5236\u7d04\u306e\u8ffd\u52a0\u306b\u3088\u308a\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002
+01504=\u65b0\u898f\u7d22\u5f15\u306f\u65e2\u5b58\u7d22\u5f15 {0} \u3068\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002
+01505=\u5024 {0} \u306f\u5207\u308a\u6368\u3066\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+01003=\u5217\u95a2\u6570\u306e\u5f15\u304d\u6570\u304b\u3089 NULL \u5024\u304c\u9664\u53bb\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+0100E=XX \u304c\u623b\u305d\u3046\u3068\u3057\u3066\u3044\u308b\u7d50\u679c\u30bb\u30c3\u30c8\u304c\u591a\u3059\u304e\u307e\u3059
+02000=FETCH\u3001UPDATE \u307e\u305f\u306f DELETE; \u306e\u884c\u304c\u691c\u51fa\u3055\u308c\u306a\u304b\u3063\u305f\u304b\u3001\u307e\u305f\u306f\u3001\u7167\u4f1a\u7d50\u679c\u304c\u7a7a\u306e\u8868\u3067\u3059\u3002
+21000=\u30b9\u30ab\u30e9\u30fc\u526f\u7167\u4f1a\u306f\u3001\u5358\u4e00\u884c\u3057\u304b\u623b\u305b\u307e\u305b\u3093\u3002
+22001={0} ''{1}'' \u3092\u9577\u3055 {2} \u306b\u7e2e\u5c0f\u3057\u3088\u3046\u3068\u3057\u3066\u3001\u5207\u308a\u6368\u3066\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+54006={0} \u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u7d50\u679c\u306e\u9577\u3055\u306f {1} \u3088\u308a\u3082\u9577\u3044\u3067\u3059\u3002
+22003=\u7d50\u679c\u5024\u306f\u3001\u30c7\u30fc\u30bf\u578b {0} \u306e\u7bc4\u56f2\u5916\u3067\u3059\u3002
+22005=\u578b ''{1}'' \u306e\u30c7\u30fc\u30bf\u5024\u304b\u3089\u578b ''{0}'' \u306e\u30c7\u30fc\u30bf\u5024\u3092\u53d6\u5f97\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
+22007.S.180=\u65e5\u6642\u5024\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u8868\u8a18\u304c\u7bc4\u56f2\u5916\u3067\u3059\u3002
+22007.S.181=\u65e5\u6642\u5024\u306e\u30b9\u30c8\u30ea\u30f3\u30b0\u8868\u8a18\u306e\u69cb\u6587\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002
+22011=SUBSTR \u95a2\u6570\u306e 2 \u756a\u76ee\u307e\u305f\u306f 3 \u756a\u76ee\u306e\u5f15\u304d\u6570\u304c\u7bc4\u56f2\u5916\u3067\u3059\u3002
+22012=0 \u9664\u7b97\u3092\u8a66\u884c\u3057\u3066\u3044\u307e\u3059\u3002
+22013=\u8ca0\u306e\u6570\u5024 ''{0}'' \u306e\u5e73\u65b9\u6839\u3092\u53d6\u308d\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002
+22014=LOCATE \u306e\u958b\u59cb\u4f4d\u7f6e\u304c\u7121\u52b9\u3067\u3059\u3002\u3053\u306e\u4f4d\u7f6e\u306f\u6b63\u306e\u6574\u6570\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002  \u691c\u7d22\u3092\u958b\u59cb\u3059\u308b\u7d22\u5f15\u306f ''{2}'' \u3067\u3059\u3002  \u691c\u7d22\u3059\u308b\u30b9\u30c8\u30ea\u30f3\u30b0\u306f ''{0}'' \u3067\u3059\u3002  \u30b9\u30c8\u30ea\u30f3\u30b0\u306e\u691c\u7d22\u5143\u306f ''{1}'' \u3067\u3059\u3002 
+22015=''{0}'' \u95a2\u6570\u306f\u3001\u6b21\u306e\u578b\u306e\u30bb\u30c3\u30c8\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002  \u7b2c 1 \u30aa\u30da\u30e9\u30f3\u30c9\u306f\u578b ''{1}'' \u3067\u3059\u3002  \u7b2c 2 \u30aa\u30da\u30e9\u30f3\u30c9\u306f\u578b ''{2}'' \u3067\u3059\u3002  \u7b2c 3 \u30aa\u30da\u30e9\u30f3\u30c9 (\u958b\u59cb\u4f4d\u7f6e) \u306f\u578b ''{3}'' \u3067\u3059\u3002
+22018=\u578b {0} \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u6587\u5b57\u30b9\u30c8\u30ea\u30f3\u30b0\u30fb\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3067\u3059\u3002
+22019=\u7121\u52b9\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u30fb\u30b7\u30fc\u30b1\u30f3\u30b9\u3067\u3059: ''{0}''\u3002 \u30a8\u30b9\u30b1\u30fc\u30d7\u30fb\u30b9\u30c8\u30ea\u30f3\u30b0\u306f\u30011 \u6587\u5b57\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 NULL \u3067\u3082 2 \u6587\u5b57\u4ee5\u4e0a\u3067\u3082\u3044\u3051\u307e\u305b\u3093\u3002
+22025=\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u306e\u5f8c\u306b\u306f\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57 '_' \u307e\u305f\u306f '%' \u304c\u5fc5\u8981\u3067\u3059\u3002 \u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u306e\u5f8c\u306b\u3053\u308c\u4ee5\u5916\u306e\u6587\u5b57\u3092\u7d9a\u3051\u305f\u308a\u3001\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u3092\u30d1\u30bf\u30fc\u30f3\u306e\u7d42\u308f\u308a\u306b\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+22027=\u7d44\u307f\u8fbc\u307f TRIM() \u95a2\u6570\u306f\u3001\u5358\u4e00\u30c8\u30ea\u30e0\u6587\u5b57\u306e\u307f\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002  LTRIM() \u304a\u3088\u3073 RTRIM() \u7d44\u307f\u8fbc\u307f\u95a2\u6570\u306f\u8907\u6570\u306e\u30c8\u30ea\u30e0\u6587\u5b57\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002
+22500=LIKE \u30d1\u30bf\u30fc\u30f3\u3068 ESCAPE \u6587\u7bc0\u306e\u4e21\u65b9\u306b ? \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+22501=NULL \u306e ESCAPE \u6587\u7bc0\u306f\u672a\u5b9a\u7fa9\u306e\u7d50\u679c\u3092\u623b\u3059\u305f\u3081\u3001\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+23502=\u5217 ''{0}'' \u306f NULL \u5024\u3092\u53d7\u3051\u5165\u308c\u3089\u308c\u307e\u305b\u3093\u3002
+23505=\u3053\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001\u30e6\u30cb\u30fc\u30af\u307e\u305f\u306f\u4e3b\u30ad\u30fc\u5236\u7d04\u3001\u307e\u305f\u306f ''{1}'' \u4e0a\u3067\u5b9a\u7fa9\u3055\u308c\u305f ''{0}'' \u306b\u3088\u3063\u3066\u8b58\u5225\u3055\u308c\u308b\u30e6\u30cb\u30fc\u30af\u7d22\u5f15\u306b\u304a\u3044\u3066\u91cd\u8907\u30ad\u30fc\u5024\u306e\u539f\u56e0\u3068\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u3063\u305f\u305f\u3081\u3001\u6253\u3061\u5207\u3089\u308c\u307e\u3057\u305f\u3002
+23503=\u8868 ''{1}'' \u4e0a\u306e {2} \u304c\u539f\u56e0\u3067\u3001\u30ad\u30fc {3} \u306e\u5916\u90e8\u30ad\u30fc\u5236\u7d04 ''{0}'' \u9055\u53cd\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3055\u308c\u307e\u3057\u305f\u3002
+23513=\u8868 ''{0}'' \u3067 INSERT \u307e\u305f\u306f UPDATE \u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u3068\u304d\u306b\u30c1\u30a7\u30c3\u30af\u5236\u7d04 ''{1}'' \u306e\u9055\u53cd\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+38000=\u5f0f\u3092\u8a55\u4fa1\u3057\u3066\u3044\u308b\u9593\u306b\u4f8b\u5916 ''{0}'' \u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+38001=\u5916\u90e8\u30eb\u30fc\u30c1\u30f3\u306f SQL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002
+38002=\u30eb\u30fc\u30c1\u30f3\u304c\u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u30eb\u30fc\u30c1\u30f3\u306f MODIFIES SQL DATA \u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+38004=\u30eb\u30fc\u30c1\u30f3\u304c\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u53d6\u308d\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u30eb\u30fc\u30c1\u30f3\u306f READS SQL DATA \u3068\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+39004=\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b ''{0}'' \u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u53d6\u308b\u30e1\u30bd\u30c3\u30c9\u306b NULL \u5024\u3092\u6e21\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+40XC0=\u975e\u6d3b\u52d5\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3002 \u539f\u56e0\u3068\u3057\u3066\u3001\u3053\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u5185\u3067\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u91cd\u5927\u5ea6\u30a8\u30e9\u30fc\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u305f\u3053\u3068\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+# this error is retired in 1.3
+42000=\u69cb\u6587\u30a8\u30e9\u30fc\u307e\u305f\u306f\u30a2\u30af\u30bb\u30b9\u898f\u5247\u9055\u53cd\u3002\u8a73\u3057\u304f\u306f\u8ffd\u52a0\u30a8\u30e9\u30fc\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=ALTER TABLE \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u306f\u3001\u5217 ''{0}'' \u306f NOT NULL \u3068\u3057\u3066\u6307\u5b9a\u3055\u308c\u3001DEFAULT \u6587\u7bc0\u306f\u3001\u6307\u5b9a\u3055\u308c\u306a\u304b\u3063\u305f\u304b\u3001DEFAULT NULL \u3068\u3057\u3066\u6307\u5b9a\u3055\u308c\u305f\u304b\u306e\u3044\u305a\u308c\u304b\u3067\u3059\u3002
+42601.S.372=ALTER TABLE \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001\u8868\u306b IDENTITY \u5217\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002
+42606=''{0}'' \u3067\u59cb\u307e\u308b\u7121\u52b9\u306a 16 \u9032\u5b9a\u6570\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
+54002=''{0}'' \u3067\u59cb\u307e\u308b\u30b9\u30c8\u30ea\u30f3\u30b0\u5b9a\u6570\u304c\u9577\u3059\u304e\u307e\u3059\u3002
+42611=\u5217\u306e\u9577\u3055\u3001\u7cbe\u5ea6\u3001\u307e\u305f\u306f\u6841\u6570\u306e\u5c5e\u6027\u3001\u307e\u305f\u306f\u3001\u578b\u306e\u30de\u30c3\u30d4\u30f3\u30b0 ''{0}'' \u304c\u7121\u52b9\u3067\u3059\u3002
+
+42605=\u95a2\u6570 ''{0}'' \u306e\u5f15\u304d\u6570\u306e\u6570\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002
+42610=COALESC/VALUE \u95a2\u6570\u306b\u5bfe\u3059\u308b\u5f15\u304d\u6570\u306e\u3059\u3079\u3066\u3092\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u5f15\u304d\u6570\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u306a\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+
+42613=''{0}'' \u6587\u7bc0\u3092\u542b\u3093\u3060\u3001\u8907\u6570\u306e\u3001\u3042\u308b\u3044\u306f\u7af6\u5408\u3059\u308b\u30ad\u30fc\u30ef\u30fc\u30c9\u304c\u5b58\u5728\u3057\u307e\u3059\u3002
+42621=''{0}'' \u3067\u5b9a\u7fa9\u3055\u308c\u305f\u30c1\u30a7\u30c3\u30af\u5236\u7d04\u307e\u305f\u306f\u751f\u6210\u5217\u306f\u7121\u52b9\u3067\u3059\u3002
+42734=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8 ''{1}'' \u306b\u6307\u5b9a\u3055\u308c\u305f\u540d\u524d ''{0}'' \u304c\u56fa\u6709\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+# DB2 error for invalid set schema
+42802=\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u5024\u306e\u6570\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u5217\u307e\u305f\u306f\u6697\u9ed9\u306e\u5217\u306e\u6570\u3068\u540c\u3058\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42815.S.713=''{0}'' \u306e\u7f6e\u304d\u63db\u3048\u5024\u304c\u7121\u52b9\u3067\u3059\u3002
+42815.S.171=\u5f15\u304d\u6570 ''{0}'' \u304a\u3088\u3073 ''{1}'' \u306e\u30c7\u30fc\u30bf\u578b\u3001\u9577\u3055\u3001\u307e\u305f\u306f\u5024\u306b\u306f\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+42820=\u6d6e\u52d5\u5c0f\u6570\u70b9\u30ea\u30c6\u30e9\u30eb ''{0}'' \u306f 30 \u6587\u5b57\u4ee5\u4e0a\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002
+42824=LIKE \u306e\u30aa\u30da\u30e9\u30f3\u30c9\u304c\u30b9\u30c8\u30ea\u30f3\u30b0\u3067\u306a\u3044\u304b\u3001\u7b2c 1 \u30aa\u30da\u30e9\u30f3\u30c9\u304c\u5217\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42831=NULL \u5024 \u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u305f\u3081\u3001''{0}'' \u3092\u4e3b\u30ad\u30fc\u307e\u305f\u306f\u30e6\u30cb\u30fc\u30af\u30fb\u30ad\u30fc\u306e\u5217\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42834=FOREIGN KEY ''{0}'' \u306b NULL \u5024\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u305f\u3081\u3001SET NULL \u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42884=\u4e92\u63db\u6027\u306e\u3042\u308b\u5f15\u304d\u6570\u3092\u6301\u3064\u3001\u578b ''{1}'' \u306e ''{0}'' \u3068\u3044\u3046\u540d\u524d\u306e\u8a31\u53ef\u30eb\u30fc\u30c1\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002
+42886=''{0}'' \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc ''{1}'' \u306f\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u30fb\u30de\u30fc\u30ab\u30fc ''?'' \u304c\u5fc5\u8981\u3067\u3059\u3002
+42894=DEFAULT \u5024\u307e\u305f\u306f IDENTITY \u5c5e\u6027\u5024\u306f\u5217 ''{0}'' \u306b\u5bfe\u3057\u3066\u7121\u52b9\u3067\u3059\u3002
+428C1=1 \u3064\u306e\u8868\u306b\u5bfe\u3057\u3001ID \u5217\u306f 1 \u5217\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+42903=\u96c6\u7d04\u95a2\u6570\u306e\u4f7f\u7528\u306f\u7121\u52b9\u3067\u3059\u3002
+42908=CREATE VIEW \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u5217\u30ea\u30b9\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+42915=\u5916\u90e8\u30ad\u30fc ''{0}'' \u306f\u3001''{1}'' \u306e\u305f\u3081\u7121\u52b9\u3067\u3059\u3002 
+42972=JOIN \u6f14\u7b97\u5b50\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f ON \u6587\u7bc0\u304c\u7121\u52b9\u3067\u3059\u3002
+42X01=\u69cb\u6587\u30a8\u30e9\u30fc: {0}\u3002
+42X02={0}\u3002
+42X03=\u5217\u540d ''{0}'' \u306f\u3001FROM \u30ea\u30b9\u30c8\u5185\u306e\u8907\u6570\u306e\u8868\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X04=\u5217 ''{0}'' \u306f\u3001FROM \u30ea\u30b9\u30c8\u5185\u306e\u3069\u306e\u8868\u306b\u3082\u306a\u3044\u304b\u3001\u7d50\u5408\u4ed5\u69d8\u5185\u306b\u3042\u308b\u306e\u306b\u305d\u306e\u7d50\u5408\u4ed5\u69d8\u306e\u7bc4\u56f2\u5916\u3067\u3042\u308b\u304b\u3001\u307e\u305f\u306f HAVING \u6587\u7bc0\u5185\u306b\u3042\u308b\u306e\u306b GROUP BY \u30ea\u30b9\u30c8\u306b\u5165\u3063\u3066\u3044\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002  \u3053\u308c\u304c CREATE \u307e\u305f\u306f ALTER TABLE \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5834\u5408\u3001''{0}'' \u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u8868\u5185\u306e\u5217\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X05=\u8868 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+42X06=\u8868 ''{0}'' \u306b\u5bfe\u3057\u3066\u6307\u5b9a\u3055\u308c\u305f\u7d50\u679c\u5217\u306e\u6570\u304c\u591a\u904e\u304e\u307e\u3059\u3002
+42X07=NULL \u306f\u3001INSERT \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u4e2d\u306e VALUES \u6587\u7bc0\u3067\u3057\u304b\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X08=\u30af\u30e9\u30b9 ''{0}'' \u306f''{1}'' \u3092\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u3053\u306e\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u3092\u5916\u90e8\u4eee\u60f3\u8868\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42X09=\u8868\u30a8\u30a4\u30ea\u30a2\u30b9\u540d ''{0}'' \u304c FROM \u30ea\u30b9\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X10=''{0}'' \u306f\u3001\u305d\u308c\u304c\u4f7f\u7528\u3055\u308c\u308b\u30b9\u30b3\u30fc\u30d7\u5185\u3067\u3001\u516c\u958b\u3055\u308c\u305f\u8868\u540d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42622=\u540d\u524d ''{0}'' \u306f\u9577\u3059\u304e\u307e\u3059\u3002\u6700\u5927\u9577\u306f ''{1}'' \u3067\u3059\u3002
+42X12=\u5217\u540d ''{0}'' \u306f\u3001CREATE TABLE \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+54011=\u8868\u307e\u305f\u306f\u30d3\u30e5\u30fc {1} \u306b\u6307\u5b9a\u3055\u308c\u305f\u5217 ({0}) \u304c\u591a\u3059\u304e\u307e\u3059\u3002\u5236\u9650\u306f {2} \u3067\u3059\u3002
+42Z9F=\u8868 {1} \u306b\u6307\u5b9a\u3055\u308c\u305f\u7d22\u5f15 ({0}) \u304c\u591a\u3059\u304e\u307e\u3059\u3002\u5236\u9650\u306f {2} \u3067\u3059\u3002
+42X13=\u5217\u540d ''{0}'' \u306f\u3001INSERT \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5217\u30ea\u30b9\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X14=''{0}'' \u306f\u8868\u306e\u5217\u307e\u305f\u306f VTI ''{1}'' \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X15=\u5217\u540d ''{0}'' \u306f\u3001FROM \u30ea\u30b9\u30c8\u306a\u3057\u3067\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X16=\u5217\u540d ''{0}'' \u306f\u3001UPDATE \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e SET \u6587\u7bc0\u306b\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X17=\u5024 ''{0}'' \u306f\u3001FROM \u6587\u7bc0\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u5185\u306e joinOrder \u4ed5\u69d8\u3068\u3057\u3066\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 FIXED \u304a\u3088\u3073 UNFIXED \u306e\u5024\u306e\u307f\u304c\u6709\u52b9\u3067\u3059\u3002
+42803=\u5217 ''{0}'' \u3092\u542b\u3080\u5f0f\u304c SELECT \u30ea\u30b9\u30c8\u306b\u51fa\u3066\u304d\u307e\u3059\u304c\u3001\u3053\u308c\u306f GROUP BY \u6587\u7bc0\u306e\u4e00\u90e8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42818=''{0}'' \u3068 ''{1}'' \u306e\u6bd4\u8f03\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42X19=WHERE \u307e\u305f\u306f HAVING \u6587\u7bc0\u3001\u3042\u308b\u3044\u306f CHECK CONSTRAINT \u5b9a\u7fa9\u306f ''{0}'' \u5f0f\u3067\u3059\u3002  \u3053\u308c\u306f\u30d6\u30fc\u30eb\u5f0f\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X23=\u30ab\u30fc\u30bd\u30eb {0} \u306f\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3002
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=''{0}'' \u95a2\u6570\u306f\u3001''{1}'' \u578b\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X26=\u5217 ''{1}'' \u306e\u30af\u30e9\u30b9 ''{0}'' \u306f\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u30a2\u30af\u30bb\u30b9\u4e0d\u80fd\u3067\u3059\u3002 \u3053\u308c\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u304c public \u3067\u306a\u3044\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
+42X28=\u524a\u9664\u8868 ''{0}'' \u306f\u3001\u30ab\u30fc\u30bd\u30eb ''{1}'' \u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X29=\u66f4\u65b0\u8868 ''{0}'' \u306f\u3001\u30ab\u30fc\u30bd\u30eb ''{1}'' \u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X30=\u30ab\u30fc\u30bd\u30eb ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u304c\u30aa\u30d5\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+42X31=\u5217 ''{0}'' \u306f\u30ab\u30fc\u30bd\u30eb ''{1}'' \u306e FOR UPDATE \u30ea\u30b9\u30c8\u306b\u5165\u3063\u3066\u3044\u307e\u305b\u3093\u3002
+42X32=\u6d3e\u751f\u5217\u30ea\u30b9\u30c8\u306e\u5217\u6570\u306f\u3001\u8868 ''{0}'' \u306e\u5217\u6570\u3068\u4e00\u81f4\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X33=\u6d3e\u751f\u5217\u30ea\u30b9\u30c8\u306b\u3001\u91cd\u8907\u3059\u308b\u5217\u540d ''{0}'' \u304c\u3042\u308a\u307e\u3059\u3002
+42X34=\u9078\u629e\u30ea\u30b9\u30c8\u306b ? \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X35=''{0}'' \u306e\u4e21\u65b9\u306e\u30aa\u30da\u30e9\u30f3\u30c9\u3092 ? \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42X36=''{0}'' \u6f14\u7b97\u5b50\u306f\u3001? \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u30aa\u30da\u30e9\u30f3\u30c9\u3068\u3057\u3066\u53d6\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42X37=\u5358\u9805 ''{0}'' \u6f14\u7b97\u5b50\u306f\u3001''{1}'' \u578b\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X38=''SELECT *'' \u306f\u3001EXISTS \u304a\u3088\u3073 NOT EXISTS \u526f\u7167\u4f1a\u3067\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+42X39=\u526f\u7167\u4f1a\u306f\u3001\u5358\u4e00\u5217\u3092\u623b\u3059\u3053\u3068\u3057\u304b\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X40=NOT \u306f\u975e\u30d6\u30fc\u30eb\u30fb\u30aa\u30da\u30e9\u30f3\u30c9\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002 NOT \u306e\u30aa\u30da\u30e9\u30f3\u30c9\u306f\u3001TRUE\u3001FALSE\u3001\u307e\u305f\u306f UNKNOWN \u306b\u8a55\u4fa1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X41=\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc ''{0}'' \u306f\u3001FROM \u30ea\u30b9\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u6587\u7bc0\u3067\u306f\u7121\u52b9\u3067\u3059 (\u3053\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306f ''{1}'' \u306b\u8a2d\u5b9a\u3055\u308c\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3057\u305f)\u3002
+42821=\u578b ''{0}'' \u306e\u5217\u306f\u3001\u578b ''{1}'' \u306e\u5024\u3092\u4fdd\u6301\u3067\u304d\u307e\u305b\u3093\u3002 
+42X43=\u30af\u30e9\u30b9/\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 ''{0}'' \u306b\u5bfe\u3057\u3066\u623b\u3055\u308c\u305f ResultSetMetaData \u304c NULL \u3067\u3057\u305f\u3002 \u3053\u306e\u30af\u30e9\u30b9\u3092\u5916\u90e8\u4eee\u60f3\u8868\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001ResultSetMetaData \u3092\u975e NULL \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X44=\u5217\u4ed5\u69d8\u306b\u7121\u52b9\u306a\u9577\u3055 ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=\u5024 ''{1}'' \u306f {0} \u306e\u6709\u52b9\u306a\u7cbe\u5ea6\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X49=\u5024 ''{0}'' \u306f\u6709\u52b9\u306a\u6574\u6570\u30ea\u30c6\u30e9\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X50=\u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057 {0}.{1}({2}) \u306b\u4e00\u81f4\u3067\u304d\u308b\u30e1\u30bd\u30c3\u30c9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u578b\u3068\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b\u306e\u3059\u3079\u3066\u306e\u7d44\u307f\u5408\u308f\u305b\u3068\u3001\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u304c\u6301\u3064\u53ef\u80fd\u6027\u306e\u3042\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u53ef\u80fd\u306a\u578b\u5909\u63db\u3092\u3059\u3079\u3066\u8a66\u3057\u307e\u3057\u305f\u304c\u3001\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002  \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u5b58\u5728\u3059\u308b\u304c\u3001public \u307e\u305f\u306f\u9759\u7684\u3067\u306a\u3044 (\u3042\u308b\u3044\u306f\u305d\u306e\u4e21\u65b9) \u304b\u3001\u307e\u305f\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u578b\u304c\u30e1\u30bd\u30c3\u30c9\u8d77\u52d5\u5909\u63db\u53ef\u80fd\u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42X51=\u30af\u30e9\u30b9 ''{0}'' \u306f\u5b58\u5728\u3057\u306a\u3044\u304b\u3001\u30a2\u30af\u30bb\u30b9\u4e0d\u80fd\u3067\u3059\u3002 \u3053\u308c\u306f\u3001\u3053\u306e\u30af\u30e9\u30b9\u304c public \u3067\u306a\u3044\u5834\u5408\u306b\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
+42X52=Java \u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b ''{1}" \u306e\u53d7\u4fe1\u5074\u3092\u4f7f\u3063\u3066\u30e1\u30bd\u30c3\u30c9 (''{0}'') \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42X53=LIKE \u8ff0\u90e8\u306f\u3001''CHAR'' \u307e\u305f\u306f ''VARCHAR'' \u30aa\u30da\u30e9\u30f3\u30c9\u3057\u304b\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 \u578b ''{0}'' \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X54=Java \u30e1\u30bd\u30c3\u30c9 ''{0}'' \u306f\u53d7\u4fe1\u5074\u3068\u3057\u3066 ? \u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X55=\u8868\u540d ''{1}'' \u306f\u3001''{0}'' \u3068\u540c\u3058\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X56=\u30d3\u30e5\u30fc\u5217\u30ea\u30b9\u30c8\u5185\u306e\u5217\u6570\u304c\u3001''{0}'' \u306e\u30d3\u30e5\u30fc\u5b9a\u7fa9\u306b\u3042\u308b\u3001\u57fa\u672c\u3068\u306a\u308b\u7167\u4f1a\u5f0f\u306e\u5217\u6570\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
+42X57=\u5916\u90e8\u4eee\u60f3\u8868 ''{0}'' \u306e getColumnCount() \u304c\u7121\u52b9\u306a\u5024 ''{1}'' \u3092\u623b\u3057\u307e\u3057\u305f\u3002  \u6709\u52b9\u5024\u306f >= 1\u3002
+42X58=UNION \u306e\u5de6\u5074\u306e\u5217\u3068\u53f3\u5074\u306e\u5217\u306e\u6570\u306f\u540c\u3058\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X59=\u5404 VALUES \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u306e\u5217\u306e\u6570\u306f\u540c\u3058\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X60=\u8868 ''{1}'' \u306e insertMode \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306b\u7121\u52b9\u5024 ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002
+42X61=\u578b ''{0}'' \u3068 ''{1}'' \u306f UNION \u4e92\u63db\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X62=''{0}'' \u306f\u3001''{1}'' \u30b9\u30ad\u30fc\u30de\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42X63=USING \u6587\u7bc0\u304c\u7d50\u679c\u3092\u623b\u3055\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+42X64=\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u306e useStatistics \u306b\u7121\u52b9\u5024 ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u6709\u52b9\u5024\u306f\u3001TRUE \u307e\u305f\u306f FALSE \u306e\u307f\u3067\u3059\u3002
+42X65=\u7d22\u5f15 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+42X66=\u5217\u540d ''{0}'' \u306f\u3001create index \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X68=\u30af\u30e9\u30b9 ''{1}'' \u306b\u5c5e\u3059\u30d5\u30a3\u30fc\u30eb\u30c9 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002  \u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5b58\u5728\u3059\u308b\u3051\u308c\u3069\u3082 public \u3067\u306a\u3044\u304b\u3001\u307e\u305f\u306f\u30af\u30e9\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3001public \u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42X69=Java \u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u578b ''{1}'' \u306e\u53c2\u7167\u5f0f\u3092\u4f7f\u3063\u3066\u30d5\u30a3\u30fc\u30eb\u30c9 (''{0}'') \u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42X72=\u30af\u30e9\u30b9 ''{1}'' \u306b\u5c5e\u3059\u9759\u7684\u30d5\u30a3\u30fc\u30eb\u30c9 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002  \u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u5b58\u5728\u3059\u308b\u3051\u308c\u3069\u3082 public \u307e\u305f\u306f\u9759\u7684\u3067\u306a\u3044 (\u3042\u308b\u3044\u306f\u305d\u306e\u4e21\u65b9) \u304b\u3001\u307e\u305f\u306f\u30af\u30e9\u30b9\u304c\u5b58\u5728\u3057\u306a\u3044\u304b\u3001public \u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42X73=\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc {0}.{1}({2}) \u306e\u30e1\u30bd\u30c3\u30c9\u89e3\u6c7a\u304c\u672a\u78ba\u5b9a\u3067\u3057\u305f\u3002 (\u6700\u5927\u9650\u306b\u7279\u5b9a\u306e\u5358\u4e00\u30e1\u30bd\u30c3\u30c9\u306f\u3042\u308a\u307e\u305b\u3093\u3002)
+42X74=\u7121\u52b9\u306a CALL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u69cb\u6587\u3002
+42X75=\u30b7\u30b0\u30cb\u30c1\u30e3\u30fc {0}({1}) \u3092\u6301\u3064\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002  \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u578b\u304c\u30e1\u30bd\u30c3\u30c9\u8d77\u52d5\u5909\u63db\u53ef\u80fd\u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42X76=\u8ffd\u52a0\u3055\u308c\u3066\u3044\u308b\u4e3b\u30ad\u30fc\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u5217 ''{0}'' \u304c NULL \u53ef\u80fd\u3067\u3059\u3002 \u4e3b\u30ad\u30fc\u5217\u306f\u3069\u308c\u3082 NULL \u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42X77=\u5217\u4f4d\u7f6e ''{0}'' \u306f\u7167\u4f1a\u5f0f\u306e\u7bc4\u56f2\u5916\u3067\u3059\u3002
+42X78=\u5217 ''{0}'' \u304c\u7167\u4f1a\u5f0f\u306e\u7d50\u679c\u306b\u3042\u308a\u307e\u305b\u3093\u3002
+42X79=\u5217\u540d ''{0}'' \u306f\u3001\u7167\u4f1a\u5f0f\u306e\u7d50\u679c\u306b\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42877=\u5217\u306e\u4fee\u98fe\u540d ''{0}'' \u306f\u3001ORDER BY \u6587\u7bc0\u306b\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42X80=VALUES \u6587\u7bc0\u306b\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u30a8\u30ec\u30e1\u30f3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u307e\u305f\u3069\u306e\u30a8\u30ec\u30e1\u30f3\u30c8\u3082\u7a7a\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42X82=USING \u6587\u7bc0\u304c\u8907\u6570\u306e\u884c\u3092\u623b\u3057\u307e\u3057\u305f\u304c\u3001\u5358\u4e00\u884c\u306e ResultSet \u306e\u307f\u304c\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+42X83=\u5217 ''{0}'' \u4e0a\u306e\u5236\u7d04\u306f\u3001NULL \u53ef\u80fd\u3067\u3042\u308a\u3001\u306a\u304a\u304b\u3064 NULL \u53ef\u80fd\u3067\u306a\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X84=\u5236\u7d04 ''{1}'' \u3092\u5f37\u5236\u3059\u308b\u305f\u3081\u306e\u7d22\u5f15 ''{0}'' \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002  \u3053\u306e\u7d22\u5f15\u3092\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u552f\u4e00\u306e\u65b9\u6cd5\u306f\u3001\u3053\u306e\u5236\u7d04\u3092\u30c9\u30ed\u30c3\u30d7\u3059\u308b\u3053\u3068\u3067\u3059\u3002
+42X85=\u5236\u7d04 ''{0}'' \u306f\u3001\u8868 ''{1}'' \u3068\u540c\u3058\u30b9\u30ad\u30fc\u30de\u306b\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X86=ALTER \u8868\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 \u8868 ''{1}'' \u306b\u5bfe\u3059\u308b\u5236\u7d04 ''{0}'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
+42X87=''{0}'' \u5f0f\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u7d50\u679c\u5f0f (then \u307e\u305f\u306f else) \u306f\u3001''?'' \u306b\u3067\u304d\u307e\u305b\u3093\u3002
+42X88=Conditional \u306f\u975e\u30d6\u30fc\u30eb\u30fb\u30aa\u30da\u30e9\u30f3\u30c9\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002 Conditional \u306e\u30aa\u30da\u30e9\u30f3\u30c9\u306f\u3001TRUE\u3001FALSE\u3001\u307e\u305f\u306f UNKNOWN \u306b\u8a55\u4fa1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42X89=\u578b ''{0}'' \u3068 ''{1}'' \u306f\u3001\u4e92\u63db\u6027\u306e\u3042\u308b\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 (\u3069\u3061\u3089\u306e\u578b\u3082\u3082\u3046\u4e00\u65b9\u306e\u578b\u306b\u5272\u308a\u5f53\u3066\u3067\u304d\u307e\u305b\u3093\u3002)
+42X90=\u8868 ''{0}'' \u306b\u5bfe\u3057\u3066\u8907\u6570\u306e\u4e3b\u30ad\u30fc\u5236\u7d04\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X91=\u5236\u7d04\u540d ''{0}'' \u306f\u3001create table \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X92=\u5217\u540d ''{0}'' \u306f\u3001\u5236\u7d04\u306e\u5217\u30ea\u30b9\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42X93=\u8868 ''{0}'' \u306b\u306f\u3001\u3053\u306e\u8868\u306b\u306a\u3044\u5217 ''{1}'' \u3092\u6301\u3064\u5236\u7d04\u5b9a\u7fa9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
+42Z93=\u5236\u7d04 ''{0}'' \u3068 ''{1}'' \u306f\u540c\u3058\u5217\u30bb\u30c3\u30c8\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u3053\u308c\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Z96=\u8aad\u307f\u53d6\u308a/\u66f8\u304d\u8fbc\u307f VTI \u306f\u3001JDK 1.1/JDBC 1.2 \u74b0\u5883\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: ''{0}''
+42Z9B=\u5916\u90e8\u4eee\u60f3\u8868\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u3001BLOB \u307e\u305f\u306f CLOB \u5217\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u305b\u3093\u3002 ''{0}'' \u5217 ''{1}''\u3002
+42Z9D=''{0}'' \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3001''{1}'' \u30c8\u30ea\u30ac\u30fc\u306b\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Z9E=\u5236\u7d04 ''{0}'' \u306f\u3001{1} \u5236\u7d04\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42X94={0} ''{1}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+42X96=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u4e0d\u660e\u306a jar \u30d5\u30a1\u30a4\u30eb ''{0}'' \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
+42X98=\u30d3\u30e5\u30fc\u5b9a\u7fa9\u3067\u306f\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y00=\u30af\u30e9\u30b9 ''{0}'' \u306f\u3001org.apache.derby.iapi.db.AggregateDefinition \u3092\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u96c6\u5408\u4f53\u5f0f\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
+42Y01=\u5236\u7d04 ''{0}'' \u306f\u7121\u52b9\u3067\u3059\u3002
+42Y03=''{0}'' \u306f\u95a2\u6570\u307e\u305f\u306f\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u3068\u3057\u3066\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3002
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=\u30c9\u30c3\u30c8\u5206\u96e2\u30ea\u30b9\u30c8\u3067\u306a\u3044\u305f\u3081\u3001EXTERNAL NAME ''{0}'' \u3067\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u307e\u305f\u306f\u95a2\u6570\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\u4e88\u671f\u3055\u308c\u3066\u3044\u308b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f <full java path>.<method name> \u3067\u3059\u3002
+
+42Y05=''{0}'' \u3068\u3044\u3046\u540d\u524d\u306e\u5916\u90e8\u30ad\u30fc\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42Y07=\u30b9\u30ad\u30fc\u30de ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093
+42Y08=\u5916\u90e8\u30ad\u30fc\u5236\u7d04\u306f\u3001\u30b7\u30b9\u30c6\u30e0\u8868\u3067\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42Y09=void \u30e1\u30bd\u30c3\u30c9\u306f\u3001CALL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u5185\u3067\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+42Y10=INSERT \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u306a\u3044\u8868\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u304c\u3001\u5217\u306e 1 \u3064\u306b\u3059\u3079\u3066 ? \u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002  \u5404\u5217\u3054\u3068\u306b\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u884c\u304c\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u4ee5\u5916\u306e\u5024\u3092\u6301\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Y11=''{0}'' \u6587\u7bc0\u306b\u306f\u3001\u7d50\u5408\u4ed5\u69d8\u304c\u5fc5\u8981\u3067\u3059\u3002
+42Y12=JOIN \u306e ON \u6587\u7bc0\u304c ''{0}'' \u5f0f\u3067\u3059\u3002  \u3053\u308c\u306f\u30d6\u30fc\u30eb\u5f0f\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Y13=\u5217\u540d ''{0}'' \u306f\u3001create view \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+42Z97=\u5217 ''{0}'' \u306e\u540d\u524d\u3092\u5909\u66f4\u3059\u308b\u3068\u3001\u30c1\u30a7\u30c3\u30af\u5236\u7d04 ''{1}'' \u304c\u4e2d\u65ad\u3057\u307e\u3059\u3002
+42Z99=\u30b9\u30c8\u30ea\u30f3\u30b0\u307e\u305f\u306f 16 \u9032\u6570\u30ea\u30c6\u30e9\u30eb\u306f\u300164K \u3092\u8d85\u3048\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y16=\u30af\u30e9\u30b9 ''{1}'' \u3067 public \u9759\u7684\u30e1\u30bd\u30c3\u30c9 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002  \u3053\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u5b58\u5728\u3059\u308b\u3051\u308c\u3069\u3082\u3001public \u3067\u306a\u3044\u304b\u3001\u9759\u7684\u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42846=\u578b ''{0}'' \u3092 ''{1}'' \u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002
+42Y19=''{0}'' \u306f\u3001GROUP BY \u30ea\u30b9\u30c8\u3067\u8907\u6570\u56de\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002 GROUP BY \u30ea\u30b9\u30c8\u5185\u306e\u5217\u306f\u3001\u672a\u78ba\u5b9a\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y22=\u96c6\u5408\u4f53 {0} \u306f\u3001\u578b {1} \u306b\u5bfe\u3057\u3066\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\u3002
+42Y23=\u5217 {0} \u306b\u5bfe\u3057\u3066\u8aa4\u3063\u305f JDBC \u578b\u60c5\u5831\u304c\u623b\u3055\u308c\u307e\u3057\u305f\u3002
+42Y24=\u8868\u793a ''{0}'' \u306f\u3001\u66f4\u65b0\u4e0d\u80fd\u3067\u3059\u3002 (\u30d3\u30e5\u30fc\u306f\u73fe\u5728\u66f4\u65b0\u4e0d\u80fd\u3067\u3059\u3002)
+42Y25=''{0}'' \u306f\u30b7\u30b9\u30c6\u30e0\u8868\u3067\u3059\u3002  \u30e6\u30fc\u30b6\u30fc\u304c\u3053\u306e\u8868\u306e\u5185\u5bb9\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u30c8\u30ea\u30ac\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y29=\u30b0\u30eb\u30fc\u30d7\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u7167\u4f1a\u306e SELECT \u30ea\u30b9\u30c8\u306b\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u7121\u52b9\u306a\u5f0f\u304c\u3042\u308a\u307e\u3059\u3002  SELECT \u30ea\u30b9\u30c8\u306b\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u96c6\u5408\u4f53\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u304c\u6709\u52b9\u306a\u96c6\u5408\u4f53\u5f0f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
+42Y30=\u30b0\u30eb\u30fc\u30d7\u5316\u3055\u308c\u305f\u7167\u4f1a\u306e SELECT \u30ea\u30b9\u30c8\u306b\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u7121\u52b9\u306a\u5f0f\u304c\u3042\u308a\u307e\u3059\u3002  GROUP BY \u3092\u6301\u3064 SELECT \u306e\u5834\u5408\u3001SELECT \u30ea\u30b9\u30c8\u306b\u306f\u30b0\u30eb\u30fc\u30d7\u5217\u3068\u6709\u52b9\u306a\u96c6\u5408\u4f53\u5f0f\u3057\u304b\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+42Y32=\u578b {2} \u306e\u96c6\u5408\u4f53 ''{1}'' \u306e\u96c6\u5408\u4f53\u30af\u30e9\u30b9 ''{0}'' \u306f com.ibm.db2j.aggregates.Aggregator \u3092\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 
+42Y33=\u96c6\u5408\u4f53 {0} \u306b\u306f\u30011 \u3064\u4ee5\u4e0a\u306e\u96c6\u5408\u4f53\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002
+42Y34=\u5217\u540d ''{0}'' \u306f\u3001\u8868 ''{1}'' \u5185\u306e\u8907\u6570\u306e\u7d50\u679c\u5217\u306b\u4e00\u81f4\u3057\u307e\u3059\u3002
+42Y35=\u5217\u53c2\u7167 ''{0}'' \u306f\u7121\u52b9\u3067\u3059\u3002 SELECT \u30ea\u30b9\u30c8\u306b\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u96c6\u5408\u4f53\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3059\u3079\u3066\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u304c\u6709\u52b9\u306a\u96c6\u5408\u4f53\u5f0f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002
+42Y36=\u5217\u53c2\u7167 ''{0}'' \u306f\u7121\u52b9\u3067\u3059\u3002  GROUP BY \u3092\u6301\u3064 SELECT \u306e\u5834\u5408\u3001SELECT \u30ea\u30b9\u30c8\u306b\u306f\u30b0\u30eb\u30fc\u30d7\u5217\u3068\u6709\u52b9\u306a\u96c6\u5408\u4f53\u5f0f\u3057\u304b\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+42Y37=''{0}'' \u306f Java \u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u3067\u3042\u308a\u3001\u3053\u306e\u6f14\u7b97\u5b50\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y38=insertMode = replace \u306f\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u8868 ''{0}'' \u304c SELECT \u3067\u53c2\u7167\u3055\u308c\u3066\u3044\u308b\u5834\u6240\u3067\u306e\u633f\u5165\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' \u306f\u3001\u975e deterministic \u7d50\u679c\u3092\u623b\u3059\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u3067\u3001CHECK CONSTRAINT \u5b9a\u7fa9\u306b\u73fe\u308c\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42Y40=''{0}'' \u306f\u3001\u30c8\u30ea\u30ac\u30fc  ''{1}'' \u306e UPDATE OF \u5217\u30ea\u30b9\u30c8\u306b\u8907\u6570\u56de\u73fe\u308c\u307e\u3059\u3002
+42Y41=''{0}'' \u306f\u30c8\u30ea\u30ac\u30fc\u306e\u4e00\u90e8\u306a\u306e\u3067\u3001EXECUTE STATEMENT \u3092\u4f7f\u3063\u3066\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y42=\u76ee\u76db\u308a ''{1}'' \u306f\u3001{0} \u306b\u6709\u52b9\u306a\u76ee\u76db\u308a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42Y43=\u76ee\u76db\u308a ''{0}'' \u306f\u3001''{1}'' \u306e\u7cbe\u5ea6\u306b\u6709\u52b9\u306a\u76ee\u76db\u308a\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42Y44=\u7121\u52b9\u306a\u30ad\u30fc ''{0}'' \u304c\u3001FROM \u30ea\u30b9\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u306b\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 \u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30ad\u30fc\u3067\u3001\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u306e\u533a\u5225\u304c\u3042\u308b\u3082\u306e\u306f ''{1}'' \u3067\u3059\u3002
+42Y45=VTI ''{0}'' \u306f\u7279\u6b8a\u30c8\u30ea\u30ac\u30fc VTI \u3067\u3042\u308a\u3001\u3053\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u30c8\u30ea\u30ac\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u307e\u305f\u306f WHEN \u6587\u7bc0\u306e\u4e00\u90e8\u3067\u306a\u3044\u305f\u3081\u3001\u30d0\u30a4\u30f3\u30c9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y46=FROM \u30ea\u30b9\u30c8\u306b\u7121\u52b9\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u3002  \u8868 ''{1}'' \u4e0a\u306b\u7d22\u5f15 ''{0}'' \u304c\u3042\u308a\u307e\u305b\u3093\u3002
+42Y48=FROM \u30ea\u30b9\u30c8\u306b\u7121\u52b9\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u3002  \u540d\u524d\u4ed8\u304d\u5236\u7d04 ''{0}'' \u304c\u8868 ''{1}'' \u4e0a\u306b\u306a\u3044\u304b\u3001\u307e\u305f\u306f\u5236\u7d04\u304c\u30d0\u30c3\u30ad\u30f3\u30b0\u7d22\u5f15\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002
+42Y49=\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ad\u30fc ''{0}'' \u306b\u8907\u6570\u306e\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 
+42Y50=\u8868 ''{0}'' \u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u306b\u306f\u3001\u7d22\u5f15\u306e\u5024\u307e\u305f\u306f\u5236\u7d04\u306e\u5024\u3092\u5165\u308c\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u304c\u3001\u305d\u306e\u4e21\u65b9\u3092\u5165\u308c\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y55=''{1}'' \u306f\u5b58\u5728\u3057\u306a\u3044\u305f\u3081\u3001\u3053\u308c\u306b\u5bfe\u3057\u3066 ''{0}'' \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+42Y56=\u7121\u52b9\u306a joinStrategy ''{0}'' \u304c\u3001\u8868 ''{1}'' \u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u30fb\u30ea\u30b9\u30c8\u306b\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 joinStrategy \u306b\u5bfe\u3057\u3066\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5024\u306f\u3001''hash''\u3001''nestedloop'' \u3067\u3059\u3002
+42Y58=\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u30fb\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9 ''{1}'' \u306e\u5024 ''{0}'' \u3092\u5909\u63db\u4e2d\u3001NumberFormatException \u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+42Y59=hashInitialCapacity \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5024 ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 \u5024\u306f > 0 \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Y60=hashLoadFactor \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5024 ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 \u5024\u306f\u3001> 0.0 \u306a\u304a\u304b\u3064 <= 1.0 \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Y61=hashMaxCapacity \u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5024 ''{0}'' \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 \u5024\u306f > 0 \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Y62=''{1}'' \u306f\u30d3\u30e5\u30fc\u306e\u305f\u3081\u3001\u3053\u308c\u306b\u5bfe\u3059\u308b ''{0}'' \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y63=\u30cf\u30c3\u30b7\u30e5\u7d50\u5408\u306b\u306f\u3001\u9078\u629e\u3055\u308c\u305f\u7d22\u5f15\u307e\u305f\u306f\u30d2\u30fc\u30d7\u5185\u306e\u5217\u306b\u6700\u9069\u5316\u53ef\u80fd\u306a\u7b49\u4fa1\u7d50\u5408\u8ff0\u90e8\u304c\u5fc5\u8981\u3067\u3059\u3002  \u8868\u307e\u305f\u306f\u7d22\u5f15 ''{0}'' \u5185\u306e\u3069\u306e\u5217\u306b\u3082\u3001\u6700\u9069\u5316\u53ef\u80fd\u306a\u7b49\u4fa1\u7d50\u5408\u8ff0\u90e8\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 ''index'' \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u30fb\u30aa\u30fc\u30d0\u30fc\u30e9\u30a4\u30c9\u3092\u4f7f\u3063\u3066\u3001\u8868 ''{1}'' \u306b\u305d\u306e\u3088\u3046\u306a\u7d22\u5f15\u307e\u305f\u306f\u30d2\u30fc\u30d7\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+42Y64=bulkFetch \u5024 ''{0}'' \u306f\u7121\u52b9\u3067\u3059\u3002bulkFetch \u306e\u6700\u5c0f\u5024\u306f 1 \u3067\u3059\u3002
+42Y65=bulkFetch \u306f\u3001''{0}'' \u7d50\u5408\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y66=bulkFetch \u306f\u66f4\u65b0\u53ef\u80fd\u306a\u30ab\u30fc\u30bd\u30eb\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y67=\u30b9\u30ad\u30fc\u30de ''{0}'' \u306f\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002
+42Y69=\u3053\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u5bfe\u3059\u308b\u6709\u52b9\u306a\u5b9f\u884c\u30d7\u30e9\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 \u3053\u306e\u539f\u56e0\u3068\u3057\u3066\u6b21\u306e 2 \u3064\u306e\u3046\u3061\u306e 1 \u3064\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002\u30cf\u30c3\u30b7\u30e5\u7d50\u5408\u304c\u8a31\u53ef\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u304d\u306b\u30cf\u30c3\u30b7\u30e5\u7d50\u5408\u30b9\u30c8\u30e9\u30c6\u30b8\u30fc\u3092\u6307\u5b9a\u3057\u305f (\u6700\u9069\u5316\u53ef\u80fd\u306a\u7b49\u4fa1\u7d50\u5408\u304c\u306a\u3044)\u3002\u307e\u305f\u306f\u3001\u305d\u308c\u305e\u308c\u304c\u304a\u4e92\u3044\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u305f\u3081\u306b\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u8a55\u4fa1\u3059\u308b\u3053\u3068\u306e\u3067\u304d\u306a\u3044\u30012 \u3064\u306e ExternalVirtualTables \u3092\u7d50\u5408\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308b\u3002
+42Y70=\u30e6\u30fc\u30b6\u30fc\u304c\u6307\u5b9a\u3057\u305f\u7d50\u5408\u9806\u5e8f\u306f\u3001\u6b63\u3057\u3044\u7d50\u5408\u9806\u5e8f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 \u3053\u306e\u539f\u56e0\u3068\u3057\u3066\u3001\u5185\u90e8\u8868\u304b\u3089\u306e\u7d50\u5408\u5217\u304c\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u5916\u90e8\u4eee\u60f3\u8868\u306b\u6e21\u3055\u308c\u305f\u3053\u3068\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+42Y71=\u30b7\u30b9\u30c6\u30e0\u95a2\u6570\u304a\u3088\u3073\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc ''{0}'' \u3092\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002
+42Y82=\u30b7\u30b9\u30c6\u30e0\u751f\u6210\u306e\u4fdd\u7ba1\u3055\u308c\u305f\u6e96\u5099\u6e08\u307f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8 ''{0}'' \u306f\u3001DROP STATEMENT \u3092\u4f7f\u3063\u3066\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30c8\u30ea\u30ac\u30fc\u306e\u4e00\u90e8\u3067\u3059\u3002
+42Y83=\u578b\u306e\u306a\u3044 NULL \u306f\u3001\u96c6\u5408\u4f53 {0} \u306e\u5f15\u304d\u6570\u3068\u3057\u3066\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002  NULL \u3092\u9069\u5207\u306a\u578b\u306b\u30ad\u30e3\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' \u306f DEFAULT \u5b9a\u7fa9\u306b\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+42Y85=DEFAULT \u30ad\u30fc\u30ef\u30fc\u30c9\u306f\u3001VALUES \u6587\u7bc0\u304c INSERT \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u5185\u306b\u3042\u308b\u3068\u304d\u306b\u305d\u306e VALUES \u6587\u7bc0\u3067\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+42Y90=FOR UPDATE \u306f\u3001\u3053\u306e\u578b\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y91=USING \u6587\u7bc0\u306f\u3001\u30c8\u30ea\u30ac\u30fc\u30fb\u30a2\u30af\u30b7\u30e7\u30f3\u306e EXECUTE STATEMENT \u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y92={0} \u30c8\u30ea\u30ac\u30fc\u306f\u3001{1} \u9077\u79fb\u5909\u6570/\u8868\u3057\u304b\u53c2\u7167\u3067\u304d\u307e\u305b\u3093\u3002
+42Y93=\u8aa4\u3063\u305f REFERENCING \u6587\u7bc0: \u9077\u79fb\u5909\u6570/\u8868\u306e\u5404\u30bf\u30a4\u30d7\u3054\u3068\u306b 1 \u3064\u306e\u540d\u524d\u3057\u304b\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Y94=AND \u307e\u305f\u306f OR \u304c\u975e\u30d6\u30fc\u30eb\u30fb\u30aa\u30da\u30e9\u30f3\u30c9\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002 AND \u304a\u3088\u3073 OR \u306e\u30aa\u30da\u30e9\u30f3\u30c9\u306f\u3001TRUE\u3001FALSE\u3001\u307e\u305f\u306f UNKNOWN \u306b\u8a55\u4fa1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Y95=''{1}'' \u306e\u5de6\u306e\u30aa\u30da\u30e9\u30f3\u30c9\u578b\u3068 ''{2}'' \u306e\u53f3\u306e\u30aa\u30da\u30e9\u30f3\u30c9\u578b\u3092\u6301\u3064 ''{0}'' \u6f14\u7b97\u5b50\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42Y96.U=UNKNOWN
+42Y97=\u7121\u52b9\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u304c\u3042\u308a\u307e\u3059\u3002\u884c ''{0}''\u3001\u5217 ''{1}''\u3002
+42Y98.U="{0}" \u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002\u884c {1}\u3001\u5217 {2}\u3002
+42Y99.U=\u5b57\u53e5\u30a8\u30e9\u30fc\u3002\u884c {0}\u3001\u5217 {1}\u3002 \u691c\u51fa: {2}
+42Z00.U=Java \u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057\u307e\u305f\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u53c2\u7167
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=\u3053\u3053\u3067\u306f\u3001\u8907\u6570\u306e DISTINCT \u96c6\u5408\u4f53\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+42Z07=\u96c6\u5408\u4f53\u306f ON \u6587\u7bc0\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Z08=''{0}'' \u306f\u4f7f\u7528\u53ef\u80fd\u306a\u30c8\u30ea\u30ac\u30fc ({1}) \u3092\u6301\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u308c\u306b\u5bfe\u3059\u308b\u30d0\u30eb\u30af\u633f\u5165\u7f6e\u63db\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+42Z09.U=\u6b21\u306e COLUMN DEFAULT:
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=\u30b9\u30c8\u30ea\u30fc\u30e0
+
+# alter table modify column error messages.
+#####
+42Z15=\u5217 ''{0}'' \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u578b\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u5217\u306e\u578b\u306f\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002
+42Z16=\u578b VARCHAR \u306e\u5217\u306e\u307f\u5909\u66f4\u3055\u308c\u305f\u9577\u3055\u3092\u6301\u3064\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+42Z17=\u5217 ''{0}'' \u306b\u7121\u52b9\u306a\u9577\u3055\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 \u9577\u3055\u306f\u3001\u73fe\u884c\u306e\u5217\u306e\u9577\u3055\u3088\u308a\u3082\u9577\u304f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Z18=\u5217 ''{0}'' \u306f\u3001\u5916\u90e8\u30ad\u30fc\u5236\u7d04 ''{1}'' \u306e\u4e00\u90e8\u3067\u3059\u3002 \u3053\u306e\u5217\u306e\u9577\u3055\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u5236\u7d04\u3092\u30c9\u30ed\u30c3\u30d7\u3057\u3001ALTER TABLE \u3092\u5b9f\u884c\u3057\u3066\u304b\u3089\u3001\u5236\u7d04\u3092\u4f5c\u6210\u3057\u76f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+42Z19=\u5217 ''{0}'' \u306f\u3001\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u5916\u90e8\u30ad\u30fc\u5236\u7d04 ''{1}'' \u306b\u3088\u3063\u3066\u53c2\u7167\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u3053\u306e\u5217\u306e\u9577\u3055\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001\u307e\u305a\u53c2\u7167\u5236\u7d04\u3092\u30c9\u30ed\u30c3\u30d7\u3057\u3001ALTER TABLE \u3092\u5b9f\u884c\u3057\u3066\u304b\u3089\u3001\u5236\u7d04\u3092\u4f5c\u6210\u3057\u76f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+42Z20=\u5217 ''{0}'' \u3092 NULL \u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 \u3053\u308c\u306f\u4e3b\u30ad\u30fc\u306e\u4e00\u90e8\u3067\u3042\u308a\u3001NULL \u53ef\u80fd\u306a\u5217\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=\u5217 ''{1}'' \u306b\u6307\u5b9a\u3055\u308c\u305f ALTER TABLE ''{0}'' \u5c5e\u6027\u306f\u3001\u65e2\u5b58\u306e\u5217\u3068\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+42Z21=\u5217 ''{0}'' \u306e ID \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u5897\u5206\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002\u5897\u5206\u306f\u975e\u30bc\u30ed\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42Z22=ID \u5217 ''{0}'' \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u578b\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002ID \u5217\u306b\u6709\u52b9\u306a\u578b\u306f\u3001BIGINT\u3001INT \u304a\u3088\u3073 SMALLINT \u306e\u307f\u3067\u3059\u3002
+42Z23=ID \u5217 ''{0}'' \u3092\u5909\u66f4\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
+42Z24=\u8868 ''{0}'' \u306e\u5217 ''{1}'' \u306b\u5bfe\u3059\u308b IDENTITY \u5024 \u306b\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+42Z25=INTERNAL ERROR ID \u30ab\u30a6\u30f3\u30bf\u30fc: \u73fe\u884c\u5024 = NULL \u306e\u72b6\u614b\u3067\u3001\u5f15\u304d\u6570\u306a\u3057\u3067\u66f4\u65b0\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
+42Z26=ID \u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u6301\u3064\u5217 ''{0}'' \u306f NULL \u53ef\u80fd \u306b\u3067\u304d\u307e\u305b\u3093\u3002
+42Z27=NULL \u53ef\u80fd\u5217 ''{0}'' \u3092\u3001ID \u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u6301\u3064\u3088\u3046\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+
+#####
+# end of identity error messages.
+
+42Z30.U=\u3053\u306e ResultSet \u306b\u8cbb\u3084\u3055\u308c\u305f\u6642\u9593 =
+42Z31.U=\u3053\u306e ResultSet \u306b\u8cbb\u3084\u3055\u308c\u305f\u6642\u9593\u4ee5\u4e0b =
+42Z32.U=\u5408\u8a08\u6642\u9593\u306e\u660e\u7d30: 
+42Z33.U=\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u30fc\u6642\u9593 (\u30df\u30ea\u79d2) =
+42Z34.U=\u30aa\u30fc\u30d7\u30f3\u6642\u9593 (\u30df\u30ea\u79d2) =
+42Z35.U=\u6b21\u306e\u6642\u9593 (\u30df\u30ea\u79d2) =
+42Z36.U=\u30af\u30ed\u30fc\u30ba\u6642\u9593 (\u30df\u30ea\u79d2) =
+42Z37.U=\u306a\u3057
+42Z38.U=\u3053\u306e ResultSet \u306f\u30aa\u30fc\u30d7\u30f3\u3055\u308c\u305f\u3053\u3068\u304c\u306a\u3044\u305f\u3081\u3001\u4f4d\u7f6e\u60c5\u5831\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+42Z39.U=positioner \u306e\u53d6\u5f97\u4e2d\u306b\u4e88\u671f\u3057\u306a\u3044\u4f8b\u5916 {0} \u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U=\u6700\u521d\u306e {1} \u5217\u3067 {0}\u3002
+42Z41.U=\u6b21\u306e\u5217\u4e0a\u306e\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u305f NULL \u30bb\u30de\u30f3\u30c6\u30a3\u30af\u30b9: 
+42Z42.U=\u5217 ID
+42Z43.U=\u6f14\u7b97\u5b50
+42Z44.U=\u9806\u5e8f\u4ed8\u3051\u3055\u308c\u305f NULL
+42Z45.U=\u4e0d\u660e\u306a\u623b\u308a\u5024
+42Z46.U=\u6bd4\u8f03\u7d50\u679c\u306e\u5426\u5b9a
+42Z47.U=\u7167\u4f1a\u30d7\u30e9\u30f3\u3092 String \u3068\u3057\u3066\u53d6\u5f97\u3059\u308b\u3053\u3068\u306f\u3001{0} \u3067\u306f\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=\u5217[{0}][{1}] ID
+
+# matches DB2
+42939=\u30b9\u30ad\u30fc\u30de\u540d ''{0}'' \u3067\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+
+
+
+
+42Z50=\u5185\u90e8\u30a8\u30e9\u30fc: {0} \u306e\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002
+42Z53=\u5185\u90e8\u30a8\u30e9\u30fc: \u30ce\u30fc\u30c9\u9078\u629e {0} \u306b\u5bfe\u3057\u3066\u3069\u306e\u3088\u3046\u306a\u30bf\u30a4\u30d7\u306e Activation \u3092\u751f\u6210\u3059\u308b\u306e\u304b\u4e0d\u660e\u3067\u3059\u3002
+42Z54.U=\u3053\u306e\u4f8b\u5916\u306f\u3001\u69cb\u6587\u89e3\u6790\u5f8c\u306b\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u505c\u6b62\u3057\u307e\u3059\u3002\u3053\u308c\u4ee5\u964d\u306e\u51e6\u7406\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002
+42Z55.U=StopAfterParsing \u30c7\u30d0\u30c3\u30b0\u30fb\u30d5\u30e9\u30b0\u306b\u3088\u308b\u69cb\u6587\u89e3\u6790\u5f8c\u3001\u5b9f\u884c\u304c\u505c\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
+42Z56.U=StopAfterBinding \u30c7\u30d0\u30c3\u30b0\u30fb\u30d5\u30e9\u30b0\u306b\u3088\u308b\u30d0\u30a4\u30f3\u30c9\u5f8c\u3001\u5b9f\u884c\u304c\u505c\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
+42Z57.U=StopAfterOptimizing \u30c7\u30d0\u30c3\u30b0\u30fb\u30d5\u30e9\u30b0\u306b\u3088\u308b\u6700\u9069\u5316\u5f8c\u3001\u5b9f\u884c\u304c\u505c\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
+42Z58.U=StopAfterGenerating \u30c7\u30d0\u30c3\u30b0\u30fb\u30d5\u30e9\u30b0\u306b\u3088\u308b\u751f\u6210\u5f8c\u3001\u5b9f\u884c\u304c\u505c\u6b62\u3055\u308c\u307e\u3057\u305f\u3002
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u53ef\u80fd
+42Z81.U=\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f\u8aad\u307f\u53d6\u308a
+42Z82.U=\u6392\u4ed6\u7684
+42Z83.U=\u77ac\u9593\u5171\u7528
+42Z84.U=\u5171\u7528
+42Z85.U=\u8868
+42Z86.U=\u884c
+42Z87.U=\u5171\u7528\u8868
+42Z88.U=\u5171\u7528\u884c
+
+# More generic language stuff
+42Z90=\u30af\u30e9\u30b9 ''{0}'' \u306f\u3001\u66f4\u65b0\u53ef\u80fd\u306a ResultSet \u3092\u623b\u3057\u307e\u305b\u3093\u3002
+42Z91=\u526f\u7167\u4f1a
+42Z92=\u53cd\u5fa9\u53ef\u80fd\u8aad\u307f\u53d6\u308a
+42Z9A=\u30b3\u30df\u30c3\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u8aad\u307f\u53d6\u308a
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=\u8981\u6c42\u3055\u308c\u305f\u6a5f\u80fd\u306f\u3001SESSION \u30b9\u30ad\u30fc\u30de\u306e\u8868\u3092\u53c2\u7167\u3067\u304d\u307e\u305b\u3093\u3002
+# Declare global temporary table language stuff. Matches DB2
+428EK=\u5ba3\u8a00\u6e08\u307f\u30b0\u30ed\u30fc\u30d0\u30eb\u4e00\u6642\u8868\u540d\u306e\u4fee\u98fe\u5b50\u306f\u3001SESSION \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+42995=\u8981\u6c42\u3055\u308c\u305f\u6a5f\u80fd\u306f\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u4e00\u6642\u8868\u306b\u9069\u7528\u3055\u308c\u307e\u305b\u3093\u3002
+42962=long \u5217\u578b\u306e\u5217\u307e\u305f\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc ''{0}'' \u306f\u3001\u5ba3\u8a00\u6e08\u307f\u30b0\u30ed\u30fc\u30d0\u30eb\u4e00\u6642\u8868\u307e\u305f\u306f\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u5b9a\u7fa9\u3067\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=\u30a2\u30bf\u30c3\u30c1\u5148
+43X01.U=\u526f\u7167\u4f1a\u306e\u958b\u59cb\u756a\u53f7
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=\u4efb\u610f\u306e ResultSet
+43X03.U=\u30aa\u30fc\u30d7\u30f3\u306e\u6570
+43X04.U=\u8868\u793a\u6e08\u307f\u884c
+43X05.U=\u30bd\u30fc\u30b9\u7d50\u679c\u30bb\u30c3\u30c8
+43X06.U=\u526f\u7167\u4f1a\u306e\u7d42\u4e86\u756a\u53f7
+43X07.U=\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u898b\u7a4d\u884c\u6570
+43X08.U=\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u898b\u7a4d\u30b3\u30b9\u30c8
+43X09.U=\u79d2
+43X10.U=\u5408\u8a08
+43X11.U=\u30ce\u30fc\u30c9
+43X12.U={0} \u306f\u3001{1} \u306b\u5bfe\u3057\u3066\u73fe\u5728\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=\u6b21\u3092\u4f7f\u3063\u305f\u524a\u9664 ResultSet:
+43X14.U=\u8868\u30ed\u30c3\u30af
+43X15.U=\u884c\u30ed\u30c3\u30af
+43X16.U=\u636e\u3048\u7f6e\u304d
+43X17.U=\u524a\u9664\u3055\u308c\u305f\u884c
+43X18.U=\u66f4\u65b0\u3055\u308c\u305f\u7d22\u5f15
+43X19.U=\u524a\u9664
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=\u7279\u6b8a\u30b9\u30ab\u30e9\u30fc\u96c6\u5408\u4f53 ResultSet
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=\u5165\u529b\u3055\u308c\u305f\u884c
+43X22.U=\u7279\u6b8a\u30b9\u30ab\u30e9\u30fc\u96c6\u5408\u4f53
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U={1} {2} \u3092\u4f7f\u3063\u305f {0} \u306e\u7279\u6b8a\u30b9\u30ad\u30e3\u30f3 ResultSet
+43X24.U=\u5236\u7d04
+43X25.U=\u7d22\u5f15
+43X26.U={0} \u306e\u7279\u6b8a\u30b9\u30ad\u30e3\u30f3 ResultSet
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U={1} \u30ed\u30c3\u30af\u3092\u4f7f\u7528\u3057\u305f {0} \u5206\u96e2\u30ec\u30d9\u30eb\u3067
+43X28.U=\u30b9\u30ad\u30e3\u30f3\u60c5\u5831
+43X29.U=\u7279\u6b8a\u5217\u306f\u5217\u756a\u53f7
+43X30.U=\u7279\u6b8a\u5217\u306f\u5217\u756a\u53f7
+43X31.U=\u30cf\u30c3\u30b7\u30e5\u8868\u30b5\u30a4\u30ba
+43X32.U=\u30d5\u30a3\u30eb\u30bf\u30fc\u3055\u308c\u305f\u884c
+43X33.U=\u6b21\u306e\u6642\u9593 (\u30df\u30ea\u79d2/\u884c)
+43X34.U=\u958b\u59cb\u4f4d\u7f6e
+43X35.U=\u505c\u6b62\u4f4d\u7f6e
+43X36.U=\u30b9\u30ad\u30e3\u30f3\u4fee\u98fe\u5b50
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=\u6b21\u306e\u4fee\u98fe\u5b50
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U={1} \u3092\u4f7f\u7528\u3057\u3066 {0} \u4e0a\u3067
+43X39.U=\u7279\u6b8a\u30b9\u30ad\u30e3\u30f3
+43X40.U=\u30bd\u30fc\u30c8\u60c5\u5831
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=\u30b0\u30eb\u30fc\u30d7\u5316\u3055\u308c\u305f\u96c6\u5408\u4f53 ResultSet
+43X42.U=\u7279\u6b8a\u96c6\u5408\u4f53\u3092\u6301\u3064
+43X43.U=\u30bd\u30fc\u30c8\u9806
+43X44.U=\u30b0\u30eb\u30fc\u30d7\u5316\u3055\u308c\u305f\u96c6\u5408\u4f53
+43X45.U=Hash Exists Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=Hash Exists Join ResultSet
+43X47.U=\u30cf\u30c3\u30b7\u30e5\u7d50\u5408
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=\u30cf\u30c3\u30b7\u30e5\u7d50\u5408 ResultSet
+43X49.U=\u30cf\u30c3\u30b7\u30e5\u5de6\u5916\u90e8\u7d50\u5408
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=\u30cf\u30c3\u30b7\u30e5\u5de6\u5916\u90e8\u7d50\u5408 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U={1} {2} \u3092\u4f7f\u3063\u305f {0} \u306e\u30cf\u30c3\u30b7\u30e5\u30fb\u30b9\u30ad\u30e3\u30f3 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U={0} \u306e\u30cf\u30c3\u30b7\u30e5\u30fb\u30b9\u30ad\u30e3\u30f3 ResultSet
+43X53.U=\u30cf\u30c3\u30b7\u30e5\u30fb\u30ad\u30fc\u306f\u5217\u756a\u53f7\u3067\u3059
+43X54.U=\u30cf\u30c3\u30b7\u30e5\u30fb\u30ad\u30fc\u306f\u5217\u756a\u53f7\u3067\u3059
+43X55.U=\u30cf\u30c3\u30b7\u30e5\u30fb\u30b9\u30ad\u30e3\u30f3
+43X56.U=\u30a2\u30bf\u30c3\u30c1\u3055\u308c\u305f\u526f\u7167\u4f1a
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=\u30cf\u30c3\u30b7\u30e5\u8868 ResultSet
+43X58.U=\u30cf\u30c3\u30b7\u30e5\u8868
+43X59.U=\u3059\u3079\u3066
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U={0} \u306e\u57fa\u672c\u884c\u306b\u5bfe\u3059\u308b\u7d22\u5f15\u884c ResultSet
+43X61.U=\u30d2\u30fc\u30d7\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3055\u308c\u308b\u5217
+#NOTE: {0} is a table name
+43X62.U={0} \u306e\u305f\u3081\u306e
+43X63.U=\u57fa\u672c\u884c\u306b\u5bfe\u3059\u308b\u7d22\u5f15\u884c
+43X64.U=\u633f\u5165\u30e2\u30fc\u30c9: \u30d0\u30eb\u30af\u633f\u5165
+43X65.U=\u633f\u5165\u30e2\u30fc\u30c9: \u901a\u5e38 (\u7a7a\u3067\u306a\u3044\u8868\u306e\u305f\u3081\u3001\u30d0\u30eb\u30af\u633f\u5165\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093)
+43X66.U=\u633f\u5165\u30e2\u30fc\u30c9: \u901a\u5e38
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=\u6b21\u3092\u4f7f\u3063\u305f\u633f\u5165 ResultSet
+43X68.U=\u633f\u5165\u3055\u308c\u305f\u884c
+43X69.U=\u633f\u5165
+43X70.U=\u7d50\u5408
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=index {1} \u3092\u4f7f\u7528\u3057\u305f {0} \u306e\u6700\u7d42\u30ad\u30fc\u7d22\u5f15\u30b9\u30ad\u30e3\u30f3 ResultSet
+43X72.U=\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306b\u3088\u3063\u3066\u9078\u629e\u3055\u308c\u305f {1} \u30ed\u30c3\u30af\u3092\u4f7f\u7528\u3059\u308b {0} \u5206\u96e2\u30ec\u30d9\u30eb\u3067
+43X73.U=\u8868\u30b9\u30ad\u30e3\u30f3
+43X74.U=\u7d22\u5f15\u30b9\u30ad\u30e3\u30f3
+#NOTE: {0} is a table name or class name
+43X75.U={0} \u4e0a
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=\u30de\u30c6\u30ea\u30a2\u30e9\u30a4\u30ba ResultSet
+43X77.U=\u4e00\u6642\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210\u6642\u9593 (\u30df\u30ea\u79d2)
+43X78.U=\u4e00\u6642\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30fb\u30d5\u30a7\u30c3\u30c1\u6642\u9593 (\u30df\u30ea\u79d2)
+43X79.U=\u5de6\u65b9\u304b\u3089\u8868\u793a\u3055\u308c\u305f\u884c
+43X80.U=\u53f3\u65b9\u304b\u3089\u8868\u793a\u3055\u308c\u305f\u884c
+43X81.U=\u623b\u3055\u308c\u305f\u884c
+43X82.U=\u5de6\u65b9\u7d50\u679c\u30bb\u30c3\u30c8
+43X83.U=\u53f3\u65b9\u7d50\u679c\u30bb\u30c3\u30c8
+43X84.U=Nested Loop Exists Join
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=Nested Loop Exists Join ResultSet
+43X86.U=\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30d7\u7d50\u5408
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30d7\u7d50\u5408 ResultSet
+43X88.U=\u7a7a\u306e\u53f3\u306e\u884c\u304c\u623b\u3055\u308c\u307e\u3057\u305f
+43X89.U=\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30d7\u306e\u5de6\u5916\u90e8\u7d50\u5408
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30d7\u306e\u5de6\u5916\u90e8\u7d50\u5408 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=\u6b63\u898f\u5316 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=\u4e00\u56de ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5236\u7d04 ResultSet
+43X94.U=\u5236\u9650
+43X95.U=\u5c55\u958b
+43X96.U=\u5236\u9650\u6642\u9593 (\u30df\u30ea\u79d2)
+43X97.U=\u5c55\u958b\u6642\u9593 (\u30df\u30ea\u79d2)
+43X98.U=\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5236\u7d04
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=\u884c ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=\u30b9\u30ab\u30e9\u30fc\u96c6\u5408\u4f53 ResultSet
+43Y01.U=\u7d22\u5f15\u30ad\u30fc\u306e\u6700\u9069\u5316
+43Y02.U=\u30b9\u30ab\u30e9\u30fc\u96c6\u5408\u4f53
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30bb\u30f3\u30b7\u30c6\u30a3\u30d6\u3067\u306a\u3044 ResultSet
+43Y04.U=\u30cf\u30c3\u30b7\u30e5\u8868\u304b\u3089\u306e\u8aad\u307f\u53d6\u308a\u6570
+43Y05.U=\u30cf\u30c3\u30b7\u30e5\u8868\u3078\u306e\u66f8\u304d\u8fbc\u307f\u6570
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=\u30bd\u30fc\u30c8 ResultSet
+43Y07.U=\u91cd\u8907\u306e\u9664\u53bb
+43Y08.U=\u30bd\u30fc\u30c8
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U={1} {2}\u3092\u4f7f\u7528\u3059\u308b\u3001{0} \u306e\u305f\u3081\u306e\u7d22\u5f15\u30b9\u30ad\u30e3\u30f3 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U={0} \u306e\u8868\u30b9\u30ad\u30e3\u30f3 ResultSet
+43Y11.U=\u5b9f\u969b\u306b\u4f7f\u7528\u3055\u308c\u305f\u30ed\u30c3\u30ad\u30f3\u30b0: \u8868\u30ec\u30d9\u30eb\u30fb\u30ed\u30c3\u30ad\u30f3\u30b0
+43Y12.U=\u30d5\u30a7\u30c3\u30c1\u30fb\u30b5\u30a4\u30ba
+43Y13.U=\u4fee\u98fe\u5b50
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=\u5171\u7528\u4f53 ResultSet
+43Y15.U=\u5171\u7528\u4f53
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U={0} \u30ed\u30c3\u30af\u3092\u4f7f\u7528\u3059\u308b\u66f4\u65b0 ResultSet
+43Y17.U=\u66f4\u65b0\u3055\u308c\u305f\u884c
+43Y18.U=\u66f4\u65b0
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U={0} \u306e\u305f\u3081\u306e VTI ResultSet
+43Y20.U=VTI
+43Y21.U=\u30de\u30c6\u30ea\u30a2\u30e9\u30a4\u30ba\u526f\u7167\u4f1a
+43Y22.U=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u540d
+43Y23.U=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u30fb\u30c6\u30ad\u30b9\u30c8
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=\u89e3\u6790\u6642\u9593
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=\u30d0\u30a4\u30f3\u30c9\u6642\u9593
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=\u6700\u9069\u5316\u6642\u9593
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=\u751f\u6210\u6642\u9593
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u9593
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=\u5b9f\u884c\u6642\u9593
+43Y30.U=\u30b3\u30f3\u30d1\u30a4\u30eb\u958b\u59cb\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7
+43Y31.U=\u30b3\u30f3\u30d1\u30a4\u30eb\u7d42\u4e86\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7
+43Y32.U=\u5b9f\u884c\u958b\u59cb\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7
+43Y33.U=\u5b9f\u884c\u7d42\u4e86\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7
+43Y44.U=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u5b9f\u884c\u30d7\u30e9\u30f3\u30fb\u30c6\u30ad\u30b9\u30c8
+43Y45.U=\u5b9f\u884c\u6642\u9593 100%\u3001{0} \u79d2
+43Y46.U=\u633f\u5165 VTI ResultSet
+43Y47.U=\u524a\u9664 VTI ResultSet
+43Y49.U=\u633f\u5165 VTI
+43Y50.U=\u524a\u9664 VTI
+43Y51.U=\u30ab\u30b9\u30b1\u30fc\u30c9\u7d50\u679c\u30bb\u30c3\u30c8\u306e\u524a\u9664
+43Y52.U=\u6b21\u3092\u4f7f\u7528\u3057\u305f\u30ab\u30b9\u30b1\u30fc\u30c9\u7d50\u679c\u30bb\u30c3\u30c8\u306e\u524a\u9664
+43Y53.U=\u5f93\u5c5e\u8868\u306b\u5bfe\u3059\u308b\u53c2\u7167\u30a2\u30af\u30b7\u30e7\u30f3
+43Y54.U=\u5f93\u5c5e\u8868\u756a\u53f7\u306b\u5bfe\u3059\u308b\u53c2\u7167\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u958b\u59cb
+43Y55.U=\u5f93\u5c5e\u8868\u756a\u53f7\u306b\u5bfe\u3059\u308b\u53c2\u7167\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u7d42\u4e86
+
+54004=SELECT \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c GROUP BY\u3001ORDER BY \u307e\u305f\u306f\u9078\u629e\u30ea\u30b9\u30c8\u306b\u6301\u3064\u9805\u76ee\u304c\u591a\u3059\u304e\u307e\u3059\u3002
+54008=CREATE INDEX \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c\u6307\u5b9a\u3059\u308b\u5217\u304c\u591a\u3059\u304e\u307e\u3059 (16 \u304c\u6700\u5927\u3067\u3059)\u3002
+54023=\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u306b\u5bfe\u3059\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6570\u304c\u5236\u9650\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002\u5236\u9650\u306f {0} \u3067\u3001\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc {1} \u306b\u5bfe\u3059\u308b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6570\u306f {2} \u3067\u3059\u3002
+54038=\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30c8\u30ea\u30ac\u30fc\u306e\u6df1\u3055\u304c\u6700\u5927\u5024\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002
+
+## all other org.apache.derby.catalog.types
+44X00.U=SQL \u578b\u540d
+44X05.U=\u6b21\u306e\u30a8\u30e9\u30fc
+
+X0X02.S=\u8868 ''{0}'' \u306f\u3001''{1}'' \u30e2\u30fc\u30c9\u306b\u30ed\u30c3\u30af\u3067\u304d\u307e\u305b\u3093\u3002
+X0X03.S=\u7121\u52b9\u306a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u72b6\u614b\u3067\u3059\u3002\u4fdd\u7559\u30ab\u30fc\u30bd\u30eb\u306b\u306f\u540c\u3058\u5206\u96e2\u30ec\u30d9\u30eb\u304c\u5fc5\u8981\u3067\u3059\u3002
+X0X05.S=\u8868 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+X0X0E.S=\u81ea\u52d5\u751f\u6210\u5217\u306e\u9078\u629e\u914d\u5217\u306b\u30ea\u30b9\u30c8\u3055\u308c\u305f\u5217\u4f4d\u7f6e ''{0}'' \u304c\u633f\u5165\u8868\u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+X0X0F.S=\u81ea\u52d5\u751f\u6210\u5217\u306e\u9078\u629e\u914d\u5217\u306b\u30ea\u30b9\u30c8\u3055\u308c\u305f\u5217\u540d ''{0}'' \u304c\u633f\u5165\u8868\u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+X0X07.S=JAR \u30d5\u30a1\u30a4\u30eb ''{0}'' \u306f db2j.database.classpath ''{0}'' \u306b\u3042\u308b\u305f\u3081\u3001\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002
+X0X10.S=USING \u6587\u7bc0\u304c\u8907\u6570\u306e\u884c\u3092\u623b\u3057\u307e\u3057\u305f\u304c\u3001\u5358\u4e00\u884c\u306e ResultSet \u306e\u307f\u304c\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+X0X11.S=USING \u6587\u7bc0\u304c\u7d50\u679c\u3092\u623b\u3055\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+X0X13.S=JAR \u30d5\u30a1\u30a4\u30eb ''{0}'' \u306f\u3001\u30b9\u30ad\u30fc\u30de ''{1}'' \u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+X0X57.S=\u578b ''{0}'' \u306e Java \u5024\u3092 SQL \u5024\u306b\u5165\u308c\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\u3001\u5bfe\u5fdc\u3059\u308b SQL \u578b\u304c\u3042\u308a\u307e\u305b\u3093\u3002  \u3053\u306e Java \u5024\u306f\u3001\u304a\u305d\u3089\u304f\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u307e\u305f\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u30fb\u30a2\u30af\u30bb\u30b9\u306e\u7d50\u679c\u3067\u3059\u3002
+X0X60.S=''{0}'' \u3068\u3044\u3046\u540d\u524d\u306e\u30ab\u30fc\u30bd\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002
+X0X61.S=\u7d22\u5f15 ''{0}'' \u3068\u8868 ''{1}.{2}'' \u5185\u306e\u5217 ''{4}'' \u306e\u5024\u304c\u3001\u884c\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3 {3} \u3067\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002  \u7d22\u5f15\u306e\u5024\u306f ''{5}'' \u3067\u3059\u304c\u3001\u57fa\u672c\u8868\u306e\u5024\u306f ''{6}'' \u3067\u3059\u3002  \u884c\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u542b\u3080\u3001\u5b8c\u5168\u7d22\u5f15\u30ad\u30fc\u306f ''{7}'' \u3067\u3059\u3002  \u8a02\u6b63\u51e6\u7f6e\u3068\u3057\u3066\u3001\u7d22\u5f15\u306e\u518d\u4f5c\u6210\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
+X0X62.S=\u8868 ''{0}'' \u3068\u7d22\u5f15 ''{1}'' \u306e\u9593\u3067\u77db\u76fe\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002  \u8868\u304b\u3089\u884c\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3 ''{2}'' \u3092\u691c\u7d22\u3057\u3088\u3046\u3068\u3057\u305f\u3068\u304d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002  \u884c\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u542b\u3080\u3001\u5b8c\u5168\u7d22\u5f15\u30ad\u30fc\u306f ''{3}'' \u3067\u3059\u3002 \u8a02\u6b63\u51e6\u7f6e\u3068\u3057\u3066\u3001\u7d22\u5f15\u306e\u518d\u4f5c\u6210\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
+X0X63.S=IOException ''{0}'' \u3092\u53d7\u3051\u53d6\u308a\u307e\u3057\u305f\u3002
+X0X67.S=\u578b ''{0}'' \u306e\u5217\u304c CREATE INDEX\u3001ORDER BY\u3001GROUP BY\u3001UNION\u3001\u307e\u305f\u306f DISTINCT \u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u578b\u3067\u306f\u3001\u6bd4\u8f03\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+X0X81.S={0} ''{1}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+X0X85.S=\u7d22\u5f15 ''{0}'' \u304c\u4f5c\u6210\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002''{1}'' \u306f\u6709\u52b9\u306a\u7d22\u5f15\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+X0X86.S=0 \u306f\u3001ResultSet.absolute(int row) \u306b\u5bfe\u3057\u3066\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u3059\u3002
+X0X87.S=\u30ab\u30fc\u30bd\u30eb\u304c\u884c\u306b\u4f4d\u7f6e\u4ed8\u3051\u3089\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001ResultSet.relative(int row) \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+X0X95.S=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 ''{1}'' \u306b\u5bfe\u3057\u3066\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 ''{0}'' \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u306f\u30aa\u30fc\u30d7\u30f3\u306e ResultSet \u5f93\u5c5e\u304c\u3042\u308a\u307e\u3059\u3002
+X0X99.S=\u7d22\u5f15 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+X0Y16.S=''{0}'' \u306f\u30d3\u30e5\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002  \u8868\u306e\u5834\u5408\u306f\u3001\u4ee3\u308f\u308a\u306b DROP TABLE \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+X0Y23.S=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 ''{1}'' \u306b\u5bfe\u3057\u3066\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 ''{0}'' \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002VIEW ''{2}'' \u304c\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5f93\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002
+X0Y24.S=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 ''{1}'' \u306b\u5bfe\u3057\u3066\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 ''{0}'' \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002STATEMENT ''{2}'' \u304c\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5f93\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002
+X0Y25.S=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 ''{1}'' \u306b\u5bfe\u3057\u3066\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 ''{0}'' \u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002{2} ''{3}'' \u304c\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5f93\u5c5e\u3057\u3066\u3044\u307e\u3059\u3002
+X0Y26.S=\u7d22\u5f15 ''{0}'' \u306f\u3001\u8868 ''{1}'' \u3068\u540c\u3058\u30b9\u30ad\u30fc\u30de\u306b\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+X0Y28.S=\u7d22\u5f15 ''{0}'' \u3092\u3001\u30b7\u30b9\u30c6\u30e0\u8868 ''{1}'' \u4e0a\u306b\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002  \u30e6\u30fc\u30b6\u30fc\u304c\u30b7\u30b9\u30c6\u30e0\u8868\u4e0a\u306b\u7d22\u5f15\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' \u306f\u3059\u3067\u306b {2} ''{3}'' \u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002
+X0Y38.S=\u7d22\u5f15 ''{0}'' \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002\u8868 ''{1}'' \u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+X0Y41.S=\u5236\u7d04 ''{0}'' \u306f\u7121\u52b9\u3067\u3059: \u53c2\u7167\u8868 {1} \u306f\u4e3b\u30ad\u30fc\u3092\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002  \u4e3b\u30ad\u30fc\u3092 {1} \u306b\u8ffd\u52a0\u3059\u308b\u304b\u3001\u3053\u306e\u5916\u90e8\u30ad\u30fc\u304c\u53c2\u7167\u3059\u308b\u30e6\u30cb\u30fc\u30af\u5236\u7d04\u306e\u5217\u3092\u660e\u793a\u7684\u306b\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+X0Y42.S=\u5236\u7d04 ''{0}'' \u306f\u7121\u52b9\u3067\u3059: \u5916\u90e8\u30ad\u30fc\u5217\u306e\u578b\u304c\u53c2\u7167\u5217\u306e\u578b\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
+X0Y43.S=\u5236\u7d04 ''{0}'' \u306f\u7121\u52b9\u3067\u3059: {0} ({1}) \u306e\u5217\u6570\u304c\u53c2\u7167\u30ad\u30fc ({2}) \u306e\u5217\u6570\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002
+X0Y44.S=\u5236\u7d04 ''{0}'' \u306f\u7121\u52b9\u3067\u3059: \u8868 ''{1}'' \u306b\u3001\u5916\u90e8\u30ad\u30fc\u306e\u5217\u306e\u6570\u304a\u3088\u3073\u578b\u3068\u4e00\u81f4\u3059\u308b\u30e6\u30cb\u30fc\u30af\u307e\u305f\u306f\u4e3b\u30ad\u30fc\u5236\u7d04\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+X0Y45.S=1 \u3064\u4ee5\u4e0a\u306e\u5916\u90e8\u30ad\u30fc\u304c\u4e00\u81f4\u3059\u308b\u53c2\u7167\u30ad\u30fc\u3092\u6301\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u5916\u90e8\u30ad\u30fc\u5236\u7d04 ''{0}'' \u3092\u8868 {1} \u306b\u8ffd\u52a0\u3057\u305f\u308a\u3001\u305d\u3053\u3067\u4f7f\u7528\u53ef\u80fd\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+X0Y46.S=\u5236\u7d04 ''{0}'' \u306f\u7121\u52b9\u3067\u3059: \u53c2\u7167\u8868 {1} \u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+X0Y54.S=\u30b9\u30ad\u30fc\u30de ''{0}'' \u306f\u7a7a\u3067\u306a\u3044\u305f\u3081\u3001\u30c9\u30ed\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093\u3002
+X0Y55.S=\u57fa\u672c\u8868\u306e\u884c\u6570\u304c\u3001\u8868\u4e0a\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u7d22\u5f15\u306e\u884c\u6570\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 \u8868 ''{1}.{2}'' \u4e0a\u306e\u7d22\u5f15 ''{0}'' \u306f {3} \u884c\u3067\u3059\u304c\u3001\u57fa\u672c\u8868\u306f {4} \u884c\u3067\u3059\u3002  \u8a02\u6b63\u51e6\u7f6e\u3068\u3057\u3066\u3001\u7d22\u5f15\u306e\u518d\u4f5c\u6210\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002
+X0Y56.S=''{0}'' \u306f\u3001\u30b7\u30b9\u30c6\u30e0\u8868 ''{1}'' \u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+X0Y57.S=NULL \u53ef\u80fd\u3067\u306a\u3044\u5217\u3092\u8868 ''{0}'' \u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u8868\u306b\u306f\u5c11\u306a\u304f\u3068\u3082 1 \u884c\u304c\u5165\u3063\u3066\u3044\u307e\u3059\u3002  NULL \u53ef\u80fd\u3067\u306a\u3044\u5217\u306f\u3001\u7a7a\u306e\u8868\u306b\u3057\u304b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002
+X0Y58.S=\u4e3b\u30ad\u30fc\u5236\u7d04\u3092\u8868 ''{0}'' \u306b\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u3066\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u8868\u306f\u3059\u3067\u306b\u3053\u306e\u578b\u306e\u5236\u7d04\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002  \u8868\u306f\u30011 \u3064\u306e\u4e3b\u30ad\u30fc\u5236\u7d04\u3057\u304b\u6301\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002
+X0Y59.S=\u8868 ''{1}'' \u306b\u5236\u7d04\u3092\u8ffd\u52a0\u3001\u307e\u305f\u306f\u305d\u3053\u3067\u4f7f\u7528\u53ef\u80fd\u306b\u3057\u3088\u3046\u3068\u3057\u3066\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u8868\u5236\u7d04 {2} \u884c\u304c\u6b21\u306e\u30c1\u30a7\u30c3\u30af\u5236\u7d04\u306b\u9055\u53cd\u3057\u3066\u3044\u307e\u3059: {0}\u3002
+X0Y63.S=\u30b3\u30de\u30f3\u30c9\u8868 ''{0}'' \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 \u4e3b\u30ad\u30fc\u307e\u305f\u306f\u30e6\u30cb\u30fc\u30af\u5236\u7d04/\u7d22\u5f15\u5217\u3067 NULL \u30c7\u30fc\u30bf\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002 \u4e3b\u30ad\u30fc\u307e\u305f\u306f\u30e6\u30cb\u30fc\u30af\u7d22\u5f15\u30ad\u30fc\u5185\u306e\u3059\u3079\u3066\u306e\u5217\u306f\u975e NULL \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+X0Y66.S=\u89aa\u63a5\u7d9a\u306b\u4fdd\u7559\u4e2d\u306e\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u3042\u308b\u3068\u304d\u306f\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u63a5\u7d9a\u3067\u30b3\u30df\u30c3\u30c8\u306f\u767a\u884c\u3067\u304d\u307e\u305b\u3093\u3002
+X0Y67.S=\u89aa\u63a5\u7d9a\u306b\u4fdd\u7559\u4e2d\u306e\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u304c\u3042\u308b\u3068\u304d\u306f\u3001\u30cd\u30b9\u30c8\u3055\u308c\u305f\u63a5\u7d9a\u3067\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u306f\u767a\u884c\u3067\u304d\u307e\u305b\u3093\u3002
+X0Y68.S={0} ''{1}'' \u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002
+X0Y69.S=\u30c8\u30ea\u30ac\u30fc {0} \u304c {2} \u4e0a\u3067\u30a2\u30af\u30c6\u30a3\u30d6\u306e\u305f\u3081\u3001{1} \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+X0Y70.S=\u30c8\u30ea\u30ac\u30fc {0} \u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306e\u305f\u3081\u3001\u8868 {1} \u3067\u306e INSERT\u3001UPDATE \u304a\u3088\u3073 DELETE \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+X0Y71.S=SET ISOLATION \u306e\u3088\u3046\u306a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u64cd\u4f5c\u306f\u3001\u30c8\u30ea\u30ac\u30fc {0} \u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306e\u305f\u3081\u3001\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+X0Y72.S=''{0}'' \u306f\u4f7f\u7528\u53ef\u80fd\u306a\u30c8\u30ea\u30ac\u30fc ({1}) \u3092\u6301\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u3053\u308c\u306b\u5bfe\u3059\u308b\u30d0\u30eb\u30af\u633f\u5165\u7f6e\u63db\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+X0Y77.S=\u6697\u9ed9\u7684\u306b\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u30b3\u30df\u30c3\u30c8\u3055\u308c\u308b\u305f\u3081\u3001\u5b9f\u884c\u4e2d\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306b\u5bfe\u3057\u3066 set transaction isolation \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u767a\u884c\u3067\u304d\u307e\u305b\u3093\u3002 
+X0Y78.S=Statement.executeQuery() \u306f\u3001\u884c\u30ab\u30a6\u30f3\u30c8\u3092\u623b\u3059\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u3063\u3066\u547c\u3073\u51fa\u305b\u307e\u305b\u3093\u3002
+X0Y79.S=Statement.executeUpdate() \u306f\u3001ResultSet \u3092\u623b\u3059\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u4f7f\u3063\u3066\u547c\u3073\u51fa\u305b\u307e\u305b\u3093\u3002
+X0Y80.S=ALTER \u8868''{0}'' \u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 \u5217 ''{1}'' \u3067 NULL \u30c7\u30fc\u30bf\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
+X0Y83.S=\u8b66\u544a: \u8868\u304b\u3089\u884c\u3092\u524a\u9664\u3057\u3066\u3044\u308b\u9593\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304a\u3088\u3073\u95a2\u9023\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 ID {1} \u306e\u7d22\u5f15\u3067\u3001\u57fa\u672c\u8868\u884c {0} \u306e\u7d22\u5f15\u884c\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002  \u3053\u306e\u554f\u984c\u306f\u3001\u524a\u9664\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u4e00\u90e8\u3068\u3057\u3066\u81ea\u52d5\u7684\u306b\u8a02\u6b63\u3055\u308c\u307e\u3057\u305f\u3002
+XCL01.S=\u7d50\u679c\u30bb\u30c3\u30c8\u304c\u884c\u3092\u623b\u3057\u307e\u305b\u3093\u3002\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 {0} \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XCL05.S=Activation \u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u307e\u3057\u305f\u3002\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 {0} \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XCL07.S=\u30ab\u30fc\u30bd\u30eb ''{0}'' \u306f\u30af\u30ed\u30fc\u30ba\u3055\u308c\u3066\u3044\u307e\u3059\u3002 \u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u304c\u30aa\u30d5\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XCL08.S=\u30ab\u30fc\u30bd\u30eb ''{0}'' \u304c\u884c\u306e\u4e0a\u306b\u3042\u308a\u307e\u305b\u3093\u3002
+XCL09.S=Activation \u304c PreparedStatement \u306b\u4e00\u81f4\u3057\u306a\u3044 ''{0}'' \u30e1\u30bd\u30c3\u30c9\u306b\u6e21\u3055\u308c\u307e\u3057\u305f\u3002
+XCL10.S=PreparedStatement \u304c\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002JDBC \u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u518d\u6e96\u5099\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XCL12.S=\u578b ''{0}'' \u306e\u30c7\u30fc\u30bf\u5024\u3092\u578b ''{1}'' \u306e\u30c7\u30fc\u30bf\u5024\u306b\u5165\u308c\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002
+XCL13.S=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u4f4d\u7f6e ''{0}'' \u306f\u7bc4\u56f2\u5916\u3067\u3059\u3002  \u3053\u306e\u6e96\u5099\u6e08\u307f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6570\u306f ''{1}'' \u3067\u3059\u3002
+XCL15.S=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 ''{0}''\u306b\u5bfe\u3057\u3066 compareTo() \u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3057\u3066\u3044\u308b\u3068\u304d\u306b ClassCastException \u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002  compareTo() \u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30af\u30e9\u30b9 ''{1}'' \u3067\u3059\u3002
+XCL16.S=ResultSet \u304c\u30aa\u30fc\u30d7\u30f3\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3 ''{0}'' \u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002 \u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u304c\u30aa\u30d5\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XCL17.S=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u3053\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XCL19.S=\u8868 ''{0}'' \u306b\u3001\u30ad\u30fc ''{1}'' \u306b\u5bfe\u3059\u308b\u884c\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+XCL20.S=\u30ab\u30bf\u30ed\u30b0\u30fb\u30d0\u30fc\u30b8\u30e7\u30f3\u30fb\u30ec\u30d9\u30eb ''{0}'' \u3092\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u30fb\u30ec\u30d9\u30eb ''{1}'' \u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XCL21.S=\u5225\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u6e96\u5099\u3057\u306a\u304c\u3089\u3001\u30c7\u30fc\u30bf\u5b9a\u7fa9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8 (CREATE\u3001DROP\u3001\u307e\u305f\u306f ALTER) \u3092\u5b9f\u884c\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059\u3002 \u3053\u308c\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002 \u3053\u308c\u306f\u3001SQL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u5185\u304b\u3089\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b Java \u30af\u30e9\u30b9\u306e\u9759\u7684\u30a4\u30cb\u30b7\u30e3\u30e9\u30a4\u30b6\u30fc\u5185\u304b\u3089\u30c7\u30fc\u30bf\u5b9a\u7fa9\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u5b9f\u884c\u3057\u305f\u5834\u5408\u306b\u8d77\u3053\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002
+XCL22.S=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc {0} \u306f IN \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u3042\u308b\u305f\u3081\u3001OUT \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u3057\u3066\u767b\u9332\u3067\u304d\u307e\u305b\u3093\u3002
+XCL23.S=SQL \u578b\u756a\u53f7 ''{0}'' \u306f\u3001registerOutParameter() \u306b\u3088\u3063\u3066\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u305f\u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XCL24.S=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc {0} \u306f\u51fa\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u3088\u3046\u3067\u3059\u304c\u3001registerOutParameter() \u306b\u3088\u3063\u3066\u305d\u306e\u3088\u3046\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002  \u3053\u308c\u304c\u51fa\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u578b {1} \u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XCL25.S=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc {0} \u306f\u578b {1} \u3068\u3057\u3066\u767b\u9332\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u578b {2} \u3092\u30de\u30c3\u30d7\u3057\u3066\u304a\u308a\u3001\u3053\u306e 2 \u3064\u306f\u975e\u4e92\u63db\u3067\u3059\u3002
+XCL26.S=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc {0} \u306f\u51fa\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XCL27.S=\u623b\u308a\u51fa\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+XCL30.S=InputStream \u304b\u3089 ''{0}'' \u3092\u8aad\u307f\u53d6\u3063\u3066\u3044\u308b\u3068\u304d\u306b\u3001IOException \u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002
+XCL31.S=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u30af\u30ed\u30fc\u30ba\u3055\u308c\u307e\u3057\u305f\u3002
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=\u524a\u9664\u898f\u5247\u306e\u5236\u7d04\u4e8b\u9805\u306e\u305f\u3081\u3001\u8868 {0} \u306b\u5f93\u5c5e\u3059\u308b\u8868\u3068\u3057\u3066\u305d\u306e\u8868\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 (\u305d\u306e\u95a2\u4fc2\u306f\u3001\u81ea\u5df1\u53c2\u7167\u306b\u306a\u3063\u3066\u304a\u308a\u3001\u81ea\u5df1\u53c2\u7167\u95a2\u4fc2\u306f SET NULL \u306e\u524a\u9664\u898f\u5247\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002) 
+XCL34.S=\u524a\u9664\u898f\u5247\u306e\u5236\u7d04\u4e8b\u9805\u306e\u305f\u3081\u3001\u8868 {0} \u306b\u5f93\u5c5e\u3059\u308b\u8868\u3068\u3057\u3066\u305d\u306e\u8868\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 (\u305d\u306e\u95a2\u4fc2\u306b\u3088\u308a\u3001\u8907\u6570\u8868\u306e\u5faa\u74b0\u304c\u69cb\u6210\u3055\u308c\u3001\u7d50\u679c\u3068\u3057\u3066\u305d\u306e\u8868\u306f\u5faa\u74b0\u3068\u9023\u7d50\u524a\u9664\u3055\u308c\u308b\u3082\u306e\u306b\u306a\u308a\u307e\u3059 (\u5faa\u74b0\u306e\u4ed6\u306e\u3059\u3079\u3066\u306e\u524a\u9664\u898f\u5247\u306f\u3001CASCADE \u306b\u306a\u308a\u307e\u3059))\u3002  
+XCL35.S=\u524a\u9664\u898f\u5247\u306e\u5236\u7d04\u4e8b\u9805\u306e\u305f\u3081\u3001\u8868 {0} \u306b\u5f93\u5c5e\u3059\u308b\u8868\u3068\u3057\u3066\u305d\u306e\u8868\u3092\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 (\u305d\u306e\u95a2\u4fc2\u306b\u3088\u308a\u3001\u305d\u306e\u8868\u306f\u8907\u6570\u306e\u95a2\u4fc2\u3092\u4ecb\u3057\u3066\u6307\u5b9a\u306e\u8868\u3068\u9023\u7d50\u524a\u9664\u3055\u308c\u308b\u8868\u306b\u306a\u308a\u3001\u65e2\u5b58\u306e\u95a2\u4fc2\u306e\u524a\u9664\u898f\u5247\u306f SET NULL \u3067\u3059\u3002)\u3002  
+
+XCL36.S=\u5916\u90e8\u30ad\u30fc\u306e\u524a\u9664\u898f\u5247\u306f {0} \u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 (\u53c2\u7167\u5236\u7d04\u306f\u3001\u81ea\u5df1\u53c2\u7167\u306b\u306a\u3063\u3066\u304a\u308a\u3001\u65e2\u5b58\u306e\u81ea\u5df1\u53c2\u7167\u5236\u7d04\u306b\u6307\u5b9a\u306e\u524a\u9664\u898f\u5247\u304c\u3042\u308a\u307e\u3059 (NO ACTION\u3001RESTRICT \u307e\u305f\u306f CASCADE)\u3002) 
+XCL37.S=\u5916\u90e8\u30ad\u30fc\u306e\u524a\u9664\u898f\u5247\u306f {0} \u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 (\u53c2\u7167\u5236\u7d04\u306f\u3001\u81ea\u5df1\u53c2\u7167\u306b\u306a\u3063\u3066\u304a\u308a\u3001\u305d\u306e\u8868\u306f CASCADE \u306e\u524a\u9664\u898f\u5247\u3068\u306e\u95a2\u4fc2\u306b\u4f9d\u5b58\u3057\u3066\u3044\u307e\u3059\u3002)
+XCL38.S=\u5916\u90e8\u30ad\u30fc\u306e\u524a\u9664\u898f\u5247\u306f {0} \u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 (\u305d\u306e\u95a2\u4fc2\u306b\u3088\u308a\u3001\u305d\u306e\u8868\u306f\u3001\u8907\u6570\u306e\u95a2\u4fc2\u3092\u4ecb\u3057\u3066\u540c\u3058\u8868\u3068\u9023\u7d50\u524a\u9664\u3055\u308c\u308b\u8868\u306b\u306a\u308a\u3001\u305d\u306e\u3088\u3046\u306a\u95a2\u4fc2\u306f\u540c\u3058\u524a\u9664\u898f\u5247\u3092\u6301\u3064\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 (NO ACTION\u3001RESTRICT \u307e\u305f\u306f CASCADE)\u3002) 
+
+XCL39.S=\u5916\u90e8\u30ad\u30fc\u306e\u524a\u9664\u898f\u5247\u306f CASCADE \u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 (\u81ea\u5df1\u53c2\u7167\u5236\u7d04\u304c\u3001SET NULL\u3001NO ACTION \u307e\u305f\u306f RESTRICT \u306e\u524a\u9664\u898f\u5247\u306b\u5b58\u5728\u3057\u307e\u3059\u3002) 
+XCL40.S=\u5916\u90e8\u30ad\u30fc\u306e\u524a\u9664\u898f\u5247\u306f CASCADE \u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 (\u305d\u306e\u95a2\u4fc2\u306b\u3088\u308a\u3001\u5faa\u74b0\u304c\u69cb\u6210\u3055\u308c\u3001\u305d\u306e\u7d50\u679c\u3068\u3057\u3066\u305d\u306e\u8868\u306f\u5faa\u74b0\u3068\u9023\u7d50\u524a\u9664\u3055\u308c\u308b\u3082\u306e\u306b\u306a\u308a\u307e\u3059\u3002 \u305d\u306e\u5faa\u74b0\u306b\u3042\u308b\u65e2\u5b58\u306e\u524a\u9664\u898f\u5247\u306e 1 \u3064\u306f CASCADE \u3067\u306f\u306a\u3044\u306e\u3067\u3001\u524a\u9664\u898f\u5247\u304c CASCADE \u3067\u306a\u3044\u5834\u5408\u306f\u3053\u306e\u95a2\u4fc2\u304c\u5b9a\u7fa9\u53ef\u80fd\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002)
+XCL41.S=\u5916\u90e8\u30ad\u30fc\u306e\u524a\u9664\u898f\u5247\u306f CASCADE \u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 (\u305d\u306e\u95a2\u4fc2\u306b\u3088\u308a\u3001\u5225\u306e\u8868\u304c\u3001\u7570\u306a\u308b\u524a\u9664\u898f\u5247\u3092\u6301\u3064\u8907\u6570\u306e\u30d1\u30b9\u3042\u308b\u3044\u306f\u3001SET NULL \u3068\u7b49\u3057\u3044\u524a\u9664\u898f\u5247\u3092\u6301\u3064\u8907\u6570\u306e\u30d1\u30b9\u3092\u4ecb\u3057\u3066\u540c\u3058\u8868\u3068\u9023\u7d50\u524a\u9664\u3055\u308c\u308b\u3082\u306e\u306b\u306a\u308a\u307e\u3059\u3002) 
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=''{0}'' \u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u304b\u3089\u30d0\u30fc\u30b8\u30e7\u30f3 {2} \u4ee5\u964d\u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+
+XCL48.S= TRUNCATE TABLE \u306f ''{0}'' \u3067\u306f\u8a31\u3055\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u8868\u306e\u30e6\u30cb\u30fc\u30af/\u4e3b\u30ad\u30fc\u5236\u7d04\u304c\u4ed6\u306e\u8868\u304b\u3089\u306e\u4f7f\u7528\u53ef\u80fd\u306b\u3055\u308c\u305f\u5916\u90e8\u30ad\u30fc\u5236\u7d04\u306b\u3088\u3063\u3066\u53c2\u7167\u3055\u308c\u308b\u304b\u3089\u3067\u3059\u3002 
+XCL49.S= TRUNCATE TABLE \u306f\u4f7f\u7528\u53ef\u80fd\u306b\u3055\u308c\u305f DELETE \u30c8\u30ea\u30ac\u30fc ({1}) \u3092\u6301\u3063\u3066\u3044\u308b\u305f\u3081\u3001''{0}'' \u3067\u306f\u8a31\u3055\u308c\u307e\u305b\u3093\u3002
+XCL50.S=\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304b\u3089\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30fb\u30ec\u30d9\u30eb\u306f ''{0}'' \u3067\u3001\u3053\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30fb\u30ec\u30d9\u30eb\u306f ''{1}'' \u3067\u3059\u3002
+
+
+# Transaction states, matches DB2
+25000=\u7121\u52b9\u306a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u72b6\u614b\u3067\u3059\u3002
+
+# Authorization
+25501=\u30a2\u30af\u30c6\u30a3\u30d6\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306b\u63a5\u7d9a\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+25502=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u63a5\u7d9a\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3059\u308b\u3001SQL \u30c7\u30fc\u30bf\u5909\u66f4\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+25503=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u63a5\u7d9a\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u307e\u305f\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u5bfe\u3059\u308b DDL \u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+25505=\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30e6\u30fc\u30b6\u30fc\u307e\u305f\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u63a5\u7d9a\u306b\u5bfe\u3059\u308b\u8aad\u307f\u53d6\u308a\u5c02\u7528\u30e2\u30fc\u30c9\u3092\u4f7f\u7528\u4e0d\u53ef\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+28501=\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u8a31\u53ef\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc ''{0}={1}''\u3002
+28502.C=\u30e6\u30fc\u30b6\u30fc\u540d ''{0}'' \u306f\u7121\u52b9\u3067\u3059\u3002 
+28503=\u30e6\u30fc\u30b6\u30fc ''{0}'' \u3092\u3001\u8aad\u307f\u53d6\u308a\u5c02\u7528\u8a31\u53ef\u30ea\u30b9\u30c8\u3068\u30d5\u30eb\u30fb\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u30ea\u30b9\u30c8\u306e\u4e21\u65b9\u306b\u5165\u308c\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+28504=\u30a2\u30af\u30bb\u30b9\u30fb\u30ea\u30b9\u30c8 ''{0}'' \u3067\u30e6\u30fc\u30b6\u30fc ''{1}'' \u304c\u7e70\u308a\u8fd4\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+04501.C=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\u3002
+
+
+# Dependency Manager
+XD003.S=\u30c7\u30a3\u30b9\u30af\u304b\u3089\u5f93\u5c5e\u95a2\u4fc2\u3092\u30ea\u30b9\u30c8\u30a2\u3067\u304d\u307e\u305b\u3093\u3002 DependableFinder = ''{0}''\u3002 \u8a73\u7d30\u60c5\u5831: ''{1}''\u3002
+XD004.S=\u5f93\u5c5e\u95a2\u4fc2\u3092\u4fdd\u7ba1\u3067\u304d\u307e\u305b\u3093\u3002
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=\u7121\u52b9\u306a\u30ab\u30fc\u30bd\u30eb\u72b6\u614b - \u73fe\u5728\u884c\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+
+07000=\u73fe\u884c\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc {0} \u306f {1} \u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u30fb\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u3042\u308a\u3001\u5b9f\u884c\u306e\u524d\u306b CallableStatement.registerOutParameter \u306b\u767b\u9332\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+
+07009=\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+
+S0022=\u5217 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+XJ009.S=CallableStatement \u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u30b9\u30c8\u30a2\u30fc\u30c9\u30fb\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u547c\u3073\u51fa\u3057\u304b\u3001\u51fa\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u4f7f\u7528\u304c\u5fc5\u8981\u3067\u3059\u3002{0}
+XJ010.S=autoCommit \u304c\u30aa\u30f3\u306b\u306a\u3063\u3066\u3044\u308b\u3068\u304d\u306b\u306f\u3001savepoint \u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002
+XJ011.S=\u30bb\u30fc\u30d6\u30dd\u30a4\u30f3\u30c8\u540d\u306b NULL \u3092\u6e21\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XJ012.S=''{0}'' \u306f\u3059\u3067\u306b\u30af\u30ed\u30fc\u30ba\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XJ013.S=\u540d\u524d\u4ed8\u304d\u306e\u30bb\u30fc\u30d6\u30dd\u30a4\u30f3\u30c8\u306b ID \u304c\u3042\u308a\u307e\u305b\u3093\u3002
+XJ014.S=\u4e0d\u7279\u5b9a\u306e\u30bb\u30fc\u30d6\u30dd\u30a4\u30f3\u30c8\u306b\u540d\u524d\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+XJ016.S=\u30e1\u30bd\u30c3\u30c9 ''{0}'' \u306f\u3001\u6e96\u5099\u6e08\u307f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XJ017.S=savepoint \u30b3\u30de\u30f3\u30c9\u306f\u3001\u30c8\u30ea\u30ac\u30fc\u30fb\u30b3\u30fc\u30c9\u5185\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XJ018.S=\u5217\u540d\u3092 NULL \u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XJ020.S=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u578b\u304c TYPE ''{0}'' \u306b\u5909\u63db\u53ef\u80fd\u3067\u306a\u3044\u304b\u3001java.sql.Types \u5024\u304c\u7121\u52b9\u3067\u3042\u308b\u304b\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c NULL \u3067\u3057\u305f\u3002
+XJ022.S=\u30b9\u30c8\u30ea\u30fc\u30e0\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093: ''{0}''\u3002
+XJ023.S=\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u304c\u8981\u6c42\u3055\u308c\u305f\u9577\u3055\u3088\u308a\u3082\u77ed\u3044\u30c7\u30fc\u30bf\u3092\u4fdd\u6301\u3057\u307e\u3057\u305f\u3002
+XJ025.S=\u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u306f\u8ca0\u306e\u9577\u3055\u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XJ030.S=\u30cd\u30b9\u30c8\u3055\u308c\u305f\u63a5\u7d9a\u3067\u306f\u3001\u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u3092\u30aa\u30f3\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+XJ042.S=''{0}'' \u306f\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u30fc ''{1}'' \u306b\u6709\u52b9\u306a\u5024\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+XJ044.S=''{0}'' \u306f\u7121\u52b9\u306a\u76ee\u76db\u308a\u3067\u3059\u3002
+XJ045.S=\u7121\u52b9\u3001\u307e\u305f\u306f (\u73fe\u5728) \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u5206\u96e2\u30ec\u30d9\u30eb ''{0}'' \u304c Connection.setTransactionIsolationLevel() \u306b\u6e21\u3055\u308c\u307e\u3057\u305f\u3002 \u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5024\u306f\u3001java.sql.Connection.TRANSACTION_SERIALIZABLE\u3001java.sql.Connection.TRANSACTION_REPEATABLE_READ\u3001java.sql.Connection.TRANSACTION_READ_COMMITTED\u3001\u304a\u3088\u3073 java.sql.Connection.TRANSACTION_READ_UNCOMMITTED \u3067\u3059\u3002
+XJ04B.S=\u30d0\u30c3\u30c1\u306b\u306f\u3001\u7d50\u679c\u30bb\u30c3\u30c8\u3092\u623b\u305d\u3046\u3068\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u5165\u308c\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XJ04C.S=CallableStatement \u30d0\u30c3\u30c1\u306b\u306f\u3001\u51fa\u529b\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5165\u308c\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XJ056.S=XA \u63a5\u7d9a\u306e\u5834\u5408\u3001AUTOCOMMIT ON \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+XJ057.S=Connection \u3092\u4f7f\u3063\u3066\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30b3\u30df\u30c3\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30df\u30c3\u30c8\u30fb\u30d7\u30ed\u30bb\u30b9\u306f\u3001XAResource \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XJ058.S=Connection \u3092\u4f7f\u3063\u3066\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u30b3\u30df\u30c3\u30c8\u30fb\u30d7\u30ed\u30bb\u30b9\u306f\u3001XAResource \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XJ059.S=\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u307e\u3060\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u3068\u304d\u306b\u63a5\u7d9a\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XJ05C.S=\u30b0\u30ed\u30fc\u30d0\u30eb\u30fb\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u4fdd\u7559\u6a5f\u80fd ResultSet.HOLD_CURSORS_OVER_COMMIT \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3002
+XJ061.S=''{0}'' \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u3067\u306e\u307f\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002
+XJ062.S=ResultSet.setFetchSize(int rows) \u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5024 ''{0}''\u3002
+XJ063.S=Statement.setMaxRows(int maxRows) \u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5024 ''{0}''\u3002  \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f >= 0 \u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+XJ064.S=setFetchDirection(int direction) \u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5024 ''{0}''\u3002
+XJ065.S=Statement.setFetchSize(int rows) \u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5024 ''{0}''\u3002
+XJ066.S=Statement.setMaxFieldSize(int max) \u306b\u5bfe\u3059\u308b\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5024 ''{0}''\u3002
+XJ067.S=SQL \u30c6\u30ad\u30b9\u30c8\u30fb\u30dd\u30a4\u30f3\u30bf\u30fc\u304c NULL \u3067\u3059\u3002
+XJ068.S=\u30d0\u30c3\u30c1\u51e6\u7406\u4e2d\u306b\u306f\u3001executeBatch \u3068 clearBatch \u3057\u304b\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XJ069.S=SetXXX \u30e1\u30bd\u30c3\u30c9\u306f\u3001Execute Statement Using \u306e\u5834\u5408\u306b\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+XJ080.S=Execute Statement Using \u304c {1} \u3067\u306f\u306a\u304f {0} \u500b\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6e21\u3057\u307e\u3057\u305f\u3002
+XJ070.S=\u8ca0\u307e\u305f\u306f\u30bc\u30ed\u306e\u4f4d\u7f6e\u5f15\u304d\u6570 ''{0}'' \u304c Blob \u307e\u305f\u306f Clob \u30e1\u30bd\u30c3\u30c9\u3067\u6e21\u3055\u308c\u307e\u3057\u305f\u3002
+XJ071.S=\u30bc\u30ed\u307e\u305f\u306f\u8ca0\u306e\u9577\u3055\u5f15\u304d\u6570 ''{0}'' \u304c Blob \u307e\u305f\u306f Clob \u30e1\u30bd\u30c3\u30c9\u3067\u6e21\u3055\u308c\u307e\u3057\u305f\u3002
+XJ072.S=NULL \u30d1\u30bf\u30fc\u30f3\u307e\u305f\u306f searchStr \u304c Blob \u307e\u305f\u306f Clob \u4f4d\u7f6e\u30e1\u30bd\u30c3\u30c9\u3067\u6e21\u3055\u308c\u307e\u3057\u305f\u3002
+XJ073.S=\u3053\u306e Blob \u307e\u305f\u306f Clob \u306e\u30c7\u30fc\u30bf\u306f\u6700\u65e9\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002 \u7406\u7531\u3068\u3057\u3066\u306f\u3001\u305d\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u30b3\u30df\u30c3\u30c8\u3055\u308c\u305f\u3053\u3068\u3001\u307e\u305f\u306f\u305d\u306e\u63a5\u7d9a\u304c\u30af\u30ed\u30fc\u30ba\u3055\u308c\u305f\u3053\u3068\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002
+XJ076.S=\u4f4d\u7f6e\u5f15\u304d\u6570 ''{0}'' \u304c Blob/Clob \u306e\u30b5\u30a4\u30ba\u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002
+XJ077.S=getBytes/getSubString \u3092\u4f7f\u3063\u3066 Blob/Clob \u30d1\u30bf\u30fc\u30f3\u306e\u6700\u521d\u306e\u30d0\u30a4\u30c8/\u6587\u5b57\u3092\u8aad\u307f\u53d6\u308d\u3046\u3068\u3057\u3066\u3001\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+XJ082.U=BLOB/CLOB \u5024\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u30fb\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u307e\u305f\u306f\u53d7\u4fe1\u5074\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002
+
+0A000.S=\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306f\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0}\u3002
+
+XJ004.C=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ''{0}'' \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002
+08004=\u63a5\u7d9a\u304c\u62d2\u5426\u3055\u308c\u307e\u3057\u305f: {0}
+A020=\u7121\u52b9\u306a\u8a8d\u8a3c\u3002
+08003=\u73fe\u884c\u63a5\u7d9a\u306a\u3057\u3002
+XJ028.C=URL ''{0}'' \u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002
+XJ040.C=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ''{0}'' \u3092\u59cb\u52d5\u3067\u304d\u307e\u305b\u3093\u3002\u8a73\u3057\u304f\u306f\u3001\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XJ041.C=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ''{0}'' \u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u8a73\u3057\u304f\u306f\u3001\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+XJ049.C=\u6307\u5b9a\u3055\u308c\u305f\u5c5e\u6027\u306e\u4f5c\u6210\u3067\u7af6\u5408\u304c\u3042\u308a\u307e\u3059\u3002
+XJ081.C=\u6307\u5b9a\u3055\u308c\u305f create/restore/recovery \u5c5e\u6027\u306b\u77db\u76fe\u304c\u3042\u308a\u307e\u3059\u3002
+XJ05B.C=JDBC \u5c5e\u6027 ''{0}'' \u306f\u7121\u52b9\u306a\u5024 ''{1}'' \u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u6709\u52b9\u5024\u306f ''{2}'' \u3067\u3059\u3002
+
+XXXXX.C.6=\u901a\u5e38\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30bb\u30c3\u30b7\u30e7\u30f3\u30fb\u30af\u30ed\u30fc\u30ba\u3002
+
+08006.D=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ''{0}'' \u304c\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3055\u308c\u307e\u3057\u305f\u3002
+
+XJ015.M=Derby \u30b7\u30b9\u30c6\u30e0\u304c\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3055\u308c\u307e\u3057\u305f\u3002
+
+01J01=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ''{0}'' \u306f\u4f5c\u6210\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4ee3\u308f\u308a\u306b\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002
+01J02=\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30bb\u30f3\u30b7\u30c6\u30a3\u30d6\u30fb\u30ab\u30fc\u30bd\u30eb\u306f\u3001\u73fe\u5728\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+01J03=\u66f4\u65b0\u53ef\u80fd\u306a ResultSet \u306f\u73fe\u5728\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+01J04=\u5217 ''{1}'' \u306e\u30af\u30e9\u30b9 ''{0}'' \u306f\u3001java.io.Serializable \u307e\u305f\u306f java.sql.SQLData \u3092\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4fdd\u7ba1\u3059\u308b\u305f\u3081\u306b\u306f\u3001\u3053\u308c\u3089\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u3046\u3061\u306e 1 \u3064\u3092\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+01J05=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u304c\u6210\u529f\u3057\u307e\u3057\u305f\u3002 \u4eca\u304b\u3089\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 \u4fdd\u7ba1\u3055\u308c\u305f\u6e96\u5099\u6e08\u307f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u518d\u59a5\u5f53\u6027\u691c\u67fb\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u6b21\u306e\u4f8b\u5916\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
+XJ001.U=Java \u4f8b\u5916: ''{1}: {0}''\u3002
+XJ050.U=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u3001\u30d0\u30fc\u30b8\u30e7\u30f3 {0} \u304b\u3089\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30d0\u30fc\u30b8\u30e7\u30f3 {1} \u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3067\u304d\u308b\u3088\u3046\u306b\u3001JDBC \u63a5\u7d9a URL \u306b\u5c5e\u6027 ''upgrade=true'' \u3092\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=\u4e0d\u660e\u306a\u8a31\u53ef ''{0}''\u3002
+XCZ01.S=\u4e0d\u660e\u306a\u30e6\u30fc\u30b6\u30fc ''{0}''\u3002
+XCZ02.S=\u7121\u52b9\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc ''{0}''=''{1}''\u3002
+
+# SQL J Jar support
+46001=URL ''{0}'' \u3092\u4f7f\u3063\u3066 JAR \u30d5\u30a1\u30a4\u30eb\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  \u30a8\u30e9\u30fc\u30fb\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u958b\u59cb -------------\n
+L002=------------  \u30a8\u30e9\u30fc\u30fb\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u7d42\u308f\u308a -------------\n
+L003=\n------------  \u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u30fb\u30a8\u30e9\u30fc\u30fb\u30b9\u30bf\u30c3\u30af\u306e\u958b\u59cb -------------\n
+L004=\n------------  \u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u30fb\u30a8\u30e9\u30fc\u30fb\u30b9\u30bf\u30c3\u30af\u306e\u7d42\u308f\u308a -------------\n
+L005=\n ------------  \u30a8\u30e9\u30fc\u30fb\u30b9\u30bf\u30c3\u30af\u306e\u958b\u59cb -------------\n
+L006=\n ------------  \u30a8\u30e9\u30fc\u30fb\u30b9\u30bf\u30c3\u30af\u306e\u7d42\u308f\u308a -------------\n
+L007=\u8b66\u544a: \u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u65b0\u898f\u30ed\u30b0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4e0d\u6574\u5408\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
+L008=\u975e\u4e92\u63db\u306e\u53e4\u3044\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {0} \u3092\u524a\u9664\u3057\u307e\u3059
+L009=\u53e4\u3044\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {0} \u3092\u524a\u9664\u3057\u307e\u3059
+L010=\u4f4d\u7f6e {1} \u304b\u3089 {2} \u306e EOF \u307e\u3067\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u3092\u6d88\u53bb\u3057\u3066\u3044\u308b\u3068\u304d\u306b\u3001\u30d5\u30a1\u30a4\u30eb {0} \u3067\u4e0d\u5b8c\u5168\u306a\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f\u3002
+L011=\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u30fb\u30c7\u30fc\u30e2\u30f3\u304c\u6a19\u6e96\u4f8b\u5916\u3092\u30ad\u30e3\u30c3\u30c1\u3057\u307e\u3057\u305f\u3002
+L012=\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u306f\u6700\u521d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u8868\u306b\u3042\u308a\u307e\u305b\u3093: {0}
+L013=\u30ed\u30b0\u30fb\u30ec\u30b3\u30fc\u30c9\u306f\u6700\u521d\u3067\u3059\u304c\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306f\u3059\u3067\u306b\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u8868\u306b\u3042\u308a\u307e\u3059: {0}
+L014=\u8aa4\u3063\u305f\u958b\u59cb\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9
+L015=\u65b0\u898f\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u3066\u304a\u308a\u3001\u524a\u9664\u3067\u304d\u307e\u305b\u3093 {0}
+L016=\u65b0\u898f\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093
+L017={1} \u304c\u539f\u56e0\u3067\u3001\u65b0\u898f\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093
+L018=\u30b7\u30b9\u30c6\u30e0\u306f\u4e0d\u6574\u5408\u306a\u72b6\u614b\u306b\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb {0} \u304c\u6b20\u843d\u3057\u3066\u3044\u307e\u3059\u3002
+
+# Class Manager
+C000=\u30af\u30e9\u30b9 {0} \u3092\u30d5\u30a1\u30a4\u30eb {1} \u306b\u66f8\u304d\u8fbc\u307f\u307e\u3057\u305f\u3002 \u30b5\u30dd\u30fc\u30c8\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u6b21\u306e\u4f8b\u5916\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u3066\u304f\u3060\u3055\u3044: {2}
+C001=\u30af\u30e9\u30b9 {0} \u306f JAR {1} \u306b\u4e0d\u660e\u306e\u8a3c\u660e\u66f8\u30bf\u30a4\u30d7\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002X509 \u8a3c\u660e\u66f8\u304c\u4e88\u671f\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+C002=JAR {1} \u306e\u30af\u30e9\u30b9 {0} \u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f : {2}
+C003=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 JAR {0} \u306e\u30ed\u30fc\u30c9\u4e2d\u306b\u4f8b\u5916 - {1}
+C004=\u30af\u30e9\u30b9 {0} \u306b\u5bfe\u3059\u308b\u5931\u52b9\u3057\u305f\u30af\u30e9\u30b9\u30fb\u30ed\u30fc\u30c0\u30fc
+C005=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30af\u30e9\u30b9\u30fb\u30ed\u30fc\u30c0\u30fc\u304c\u958b\u59cb\u3055\u308c\u307e\u3057\u305f - derby.database.classpath=''{0}''
+C006=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 JAR {1} \u304b\u3089 {0} \u3092\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f
+C007=JAR {1} \u304b\u3089\u30af\u30e9\u30b9 {0} \u3092\u30ed\u30fc\u30c9\u4e2d\u306b\u4f8b\u5916  - {2}
+
+# RawStore Data
+
+D001=:\n Derby \u30d0\u30fc\u30b8\u30e7\u30f3 {0}: \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {1} \u3092\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc {2} \u4e0a\u3067\u30d6\u30fc\u30c8\u4e2d\n
+D002=:\n\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 {0} \u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u4e2d
+D004={0} \u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u958b\u59cb\u3055\u308c\u307e\u3057\u305f
+D005=\u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30b3\u30d4\u30fc\u3092 {0} \u304b\u3089 {1} \u306b\u79fb\u52d5\u3057\u307e\u3057\u305f
+D006=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092 {0} \u304b\u3089 {1} \u306b\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f
+D007=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ed\u30ae\u30f3\u30b0\u7528\u88c5\u7f6e\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e service.properties \u3092\u7de8\u96c6\u3057\u307e\u3057\u305f
+D008=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e service.properties \u306e\u7de8\u96c6\u30a8\u30e9\u30fc\u3002\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306f\u30a2\u30dc\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f: {0}
+D009=\u30ed\u30b0\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092 {0} \u304b\u3089 {1} \u306b\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f
+D010=\u30a8\u30e9\u30fc\u306e\u305f\u3081\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u30a2\u30dc\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f
+D011={0} \u306b\u3042\u308b\u53e4\u3044\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30b3\u30d4\u30fc\u3092\u9664\u53bb\u3057\u307e\u3057\u305f
+D012=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\u30ed\u30b0\u30fb\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f {0} \u306b\u3042\u308a\u307e\u3059\n
+
+# Connectivity 
+J004=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 ID
+J005=Derby \u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3
+J007=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210
+J008=\u8a73\u7d30\u306a\u3057
+J010=\u30c7\u30a3\u30b9\u30af\u4e0a\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u6697\u53f7\u5316
+J013=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9
+J016=\u6697\u53f7\u30b5\u30fc\u30d3\u30b9\u30fb\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc
+J017=\u6697\u53f7\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0
+J018=\u6697\u53f7\u9375\u306e\u9577\u3055
+J019=\u5916\u90e8\u6697\u53f7\u9375
+J020=\u79d8\u5bc6\u6697\u53f7\u9375
+J021=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u7528\u306e\u30c6\u30ea\u30c8\u30ea\u30fc
+J022=\u30e6\u30fc\u30b6\u30fc\u540d
+J023=\u30e6\u30fc\u30b6\u30fc\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9
+J025=\u30ed\u30b0\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u30fb\u30d1\u30b9
+J028=\u30ed\u30fc\u30eb\u30d5\u30a9\u30ef\u30fc\u30c9\u30fb\u30ea\u30ab\u30d0\u30ea\u30fc\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30d1\u30b9
+J100=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u30fb\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u306f csnet.jar \u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
+J101=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u30fb\u30af\u30e9\u30b9 {0} \u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3002 {1} csnet.jar \u30d5\u30a1\u30a4\u30eb\u306e\u6574\u5408\u6027\u3092\u691c\u67fb\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+J102=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u306e\u59cb\u52d5\u306e\u9593\u306b\u3001\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002 {0}
+J103=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30b5\u30fc\u30d0\u30fc\u306e\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f\u3002 {0}
+
+# Authentication
+A001=\u81f4\u547d\u7684: \u30b7\u30b9\u30c6\u30e0\u306e\u8a8d\u8a3c\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308a\u307e\u305b\u3093
+A002=\u81f4\u547d\u7684: \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u8a8d\u8a3c\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308a\u307e\u305b\u3093
+A011=\u8b66\u544a: {0} \u30d7\u30ed\u30d1\u30c6\u30a3\u30fc\u306b LDAP \u30b5\u30fc\u30d0\u30fc/\u30db\u30b9\u30c8\u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002localhost:389 \u3092\u60f3\u5b9a\u3057\u307e\u3059
+
+I015=org.apache.derby.jdbc.EmbeddedDriver \u306f\u3001JDBC \u30c9\u30e9\u30a4\u30d0\u30fc\u30fb\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093
+I024=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u5229\u7528\u4e0d\u80fd\u3067\u3059
+I025=JDBC \u30c9\u30e9\u30a4\u30d0\u30fc\u306f\u5229\u7528\u4e0d\u80fd\u3067\u3059
+
+# Import/Export
+XIE01.S=\u63a5\u7d9a\u304c NULL \u3067\u3057\u305f\u3002
+XIE03.S=\u505c\u6b62\u533a\u5207\u308a\u6587\u5b57\u306e\u5f8c\u306e\u3001\u5217 {1} \u306e\u884c {0} \u3067\u30c7\u30fc\u30bf\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f
+XIE04.S=\u30c7\u30fc\u30bf\u30fb\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}
+XIE05.S=\u30c7\u30fc\u30bf\u30fb\u30d5\u30a1\u30a4\u30eb\u3092 NULL \u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XIE06.S=\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30fc\u540d\u304c NULL \u3067\u3057\u305f\u3002
+XIE07.S=\u30d5\u30a3\u30fc\u30eb\u30c9\u533a\u5207\u308a\u6587\u5b57\u3068\u30ec\u30b3\u30fc\u30c9\u533a\u5207\u308a\u6587\u5b57\u3092\u304a\u4e92\u3044\u306e\u30b5\u30d6\u30b9\u30c8\u30ea\u30f3\u30b0\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+XIE08.S=\u6b21\u306e\u540d\u524d\u306e\u5217\u306f\u3042\u308a\u307e\u305b\u3093: {0}
+XIE09.S=\u3053\u306e\u884c\u306e\u5408\u8a08\u5217\u6570: {0}
+XIE0B.S=\u8868\u306e\u5217 ''{0}'' \u306e\u578b\u306f {1} \u3067\u3001\u30a4\u30f3\u30dd\u30fc\u30c8/\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306b\u3088\u3063\u3066\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
+XIE0D.S=\u884c {0} \u306b\u30ec\u30b3\u30fc\u30c9\u533a\u5207\u308a\u6587\u5b57\u304c\u3042\u308a\u307e\u305b\u3093
+XIE0E.S=\u884c {0} \u306e\u4e88\u671f\u3057\u306a\u3044\u5834\u6240\u3067 endOfFile \u3092\u8aad\u307f\u53d6\u308a\u307e\u3057\u305f
+XIE0I.S=\u30c7\u30fc\u30bf\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u307f\u4e2d\u3001\u5165\u51fa\u529b\u30a8\u30e9\u30fc\u3092\u691c\u51fa\u3057\u307e\u3057\u305f
+XIE0J.S=\u533a\u5207\u308a\u6587\u5b57\u304c\u7121\u52b9\u304b\u30011 \u56de\u4ee5\u4e0a\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+XIE0K.S=\u30d4\u30ea\u30aa\u30c9\u304c\u6587\u5b57\u30b9\u30c8\u30ea\u30f3\u30b0\u533a\u5207\u308a\u6587\u5b57\u3068\u3057\u3066\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002
+XIE0M.S=\u8868 ''{0}'' \u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002
+
+# Monitor
+M001=\n# *****************************************************************************\n# ***          \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002                 ***\n# *** \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u3092\u5909\u66f4\u3057\u305f\u5834\u5408\u3001\u30c7\u30fc\u30bf\u304c\u7834\u58ca\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 ***\n# ********************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_ko_KR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_ko_KR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1234 @@
+\ufeff
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=\uc608\uc678\ub85c \uc778\ud574 \uc2dc\uc791\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uc138\ubd80\uc0ac\ud56d\uc740 \ub2e4\uc74c \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+XBM02.D={0}\uc5d0 \ub300\ud55c \uae30\ub2a5 \ub204\ub77d\uc73c\ub85c \uc778\ud574 \uc2dc\uc791\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0 \uc62c\ubc14\ub978 Derby \uc18c\ud504\ud2b8\uc6e8\uc5b4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XBM05.D={0}\uc5d0 \ub300\ud55c \uc81c\ud488 \ubc84\uc804 \uc815\ubcf4 \ub204\ub77d\uc73c\ub85c \uc778\ud574 \uc2dc\uc791\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+XBM06.D=\uc2dc\uc791\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uc62c\ubc14\ub978 \ubd80\ud305 \uc554\ud638\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc73c\uba74 \uc554\ud638\ud654\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBM07.D=\uc2dc\uc791\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ubd80\ud305 \uc554\ud638\uc758 \uae38\uc774\ub294 \ucd5c\uc18c\ud55c 8\ubc14\uc774\ud2b8\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+XBM08.D={0} StorageFactory \ud074\ub798\uc2a4 {1}\uc744(\ub97c) \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+XBM0G.D=\uc554\ud638\ud654 \uc5d4\uc9c4\uc744 \uc2dc\uc791\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. Java 2\ub97c \uc2e4\ud589\ud558\uace0 \uc788\uc73c\uba70 jce\uc640 \uac19\uc740 \uc554\ud638\ud654 \uc81c\uacf5\uc790\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0 \ub123\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XBM0H.D={0} \ub514\ub809\ud1a0\ub9ac\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBM0I.D={0} \ub514\ub809\ud1a0\ub9ac\ub97c \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBM0J.D={0} \ub514\ub809\ud1a0\ub9ac\uac00 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4.
+XBM0K.D=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc774\ub984 {0}\uc5d0 \ub300\ud55c \uc54c \uc218 \uc5c6\ub294 \ud558\uc704 \ud504\ub85c\ud1a0\ucf5c.
+XBM0L.D=\uc9c0\uc815\ub41c \uc778\uc99d \uc124\uacc4 \ud074\ub798\uc2a4 {0}\uc740(\ub294) \uc778\uc99d \uc778\ud130\ud398\uc774\uc2a4 {1}\uc744(\ub97c) \uad6c\ud604\ud569\ub2c8\ub2e4.
+XBM0M.D=\uc778\uc99d \uc124\uacc4 \ud074\ub798\uc2a4 {0}\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc791\uc131\ud558\ub294 \uc911\uc5d0 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XBM0N.D=java.sql.DriverManager\ub97c \uc0ac\uc6a9\ud55c JDBC \ub4dc\ub77c\uc774\ubc84 \ub4f1\ub85d\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uc138\ubd80\uc0ac\ud56d\uc740 \ub2e4\uc74c \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+XBM0P.D=\uc11c\ube44\uc2a4 \uc81c\uacf5\uc790\ub294 \uc77d\uae30 \uc804\uc6a9\uc785\ub2c8\ub2e4. \uc870\uc791\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XBM0S.D=''{0}'' \ud30c\uc77c\uc758 \uc774\ub984\uc744 ''{1}''(\uc73c)\ub85c \ubc14\uafc0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBM0T.D=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc774\ub984 {0}\uc5d0 \ub300\ud55c \ud558\uc704 \ud504\ub85c\ud1a0\ucf5c\uc774 \ubaa8\ud638\ud569\ub2c8\ub2e4.
+XBM0U.S=ID {0}\uc5d0 \ub300\ud574 \ud074\ub798\uc2a4\uac00 \ub4f1\ub85d\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+XBM0V.S=ID {0}\uc5d0 \ub300\ud574 \ub4f1\ub85d\ub41c {1} \ud074\ub798\uc2a4\ub97c \ub85c\ub4dc\ud558\ub294 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XBM0W.S=ID {0}\uc5d0 \ub300\ud574 \ub4f1\ub85d\ub41c \ud074\ub798\uc2a4 {1}\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc791\uc131\ud558\ub294 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XBM0X.D=\uc81c\uacf5\ub41c \uc9c0\uc5ed \uc124\uba85 ''{0}''\uc774(\uac00) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. ln[_CO[_variant]]\nln=\uc18c\ubb38\uc790 \ub450 \uc790\ub85c \uc774\ub8e8\uc5b4\uc9c4 ISO-639 \uc5b8\uc5b4 \ucf54\ub4dc, CO=\ub300\ubb38\uc790 \ub450 \uc790\ub85c \uc774\ub8e8\uc5b4\uc9c4 ISO-3166 \uad6d\uac00 \ucf54\ub4dc\ub97c \uc608\uc0c1\ud569\ub2c8\ub2e4. java.util.Locale\uc744 \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+XBM0Y.D=\ubc31\uc5c5 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub514\ub809\ud1a0\ub9ac {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c0\uc815\ud55c \ubc31\uc5c5 \uacbd\ub85c\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XBM0Z.D=''{0}'' \ud30c\uc77c\uc744 ''{1}''(\uc73c)\ub85c \ubcf5\uc0ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uacf5\uac04\uc774 \ucda9\ubd84\ud55c\uc9c0\uc640 \uc0ac\uc6a9 \uad8c\ud55c\uc774 \uc62c\ubc14\ub978\uc9c0\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624. 
+XBM0Q.D={0} \ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \ubc31\uc5c5 \uc0ac\ubcf8\uc774 \uc62c\ubc14\ub974\uba70 \uc190\uc0c1\ub418\uc9c0 \uc54a\uc558\ub294\uc9c0\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XBM0R.D={0} \ud30c\uc77c\uc744 \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+# Upgrade
+XCW00.D=''{0}''\uc5d0\uc11c ''{1}''(\uc73c)\ub85c\uc758 \uc5c5\uadf8\ub808\uc774\ub4dc\ub294 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+
+# Feature not supported
+
+
+# COntext service
+08000=\uc54c \uc218 \uc5c6\ub294 \uc778\ud130\ub7fd\ud2b8\uc5d0 \uc758\ud574 \uc5f0\uacb0\uc774 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=\uad50\ucc29 \uc0c1\ud0dc\ub85c \uc778\ud574 \uc7a0\uae08\uc744 \ud655\ubcf4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc7a0\uae08 \ubc0f \ub300\uae30 \uc8fc\uae30\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n{0}\uc120\ud0dd\ub41c \ud76c\uc0dd\uc790\ub294 XID\uac00 {1}\uc785\ub2c8\ub2e4.
+
+40XL1=\uc694\uccad\ub41c \uc2dc\uac04 \ub0b4\uc5d0 \uc7a0\uae08\uc744 \ud655\ubcf4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+40XL2=\uc694\uccad\ub41c \uc2dc\uac04 \ub0b4\uc5d0 \uc7a0\uae08\uc744 \ud655\ubcf4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. lockTable \ub364\ud504\ub294 {0}\uc785\ub2c8\ub2e4.
+
+# ClassManager
+XBCM1.S=\uc0dd\uc131\ub41c \ud074\ub798\uc2a4 {0}\uc758 \ub85c\ub4dc \uc911 Java \uc5f0\uacc4 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XBCM2.S=\uc0dd\uc131\ub41c \ud074\ub798\uc2a4 {0}\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCM3.S={1}() \uba54\uc18c\ub4dc\uac00 \uc0dd\uc131\ub41c \ud074\ub798\uc2a4 {0}\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+# Properties
+
+XCY00.S=\ub4f1\ub85d \uc815\ubcf4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{0}''=''{1}''.
+XCY02.S=\uc694\uccad\ub41c \ub4f1\ub85d \uc815\ubcf4 \ubcc0\uacbd\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 ''{0}''=''{1}''.
+XCY03.S=\ud544\uc218 \ub4f1\ub85d \uc815\ubcf4 ''{0}''\uc774(\uac00) \uc124\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+
+# Cryptography
+XBCX0.S=\uc554\ud638\ud654 \uc81c\uacf5\uc790\ub85c\ubd80\ud130\uc758 \uc608\uc678. \uc138\ubd80\uc0ac\ud56d\uc740 \ub2e4\uc74c \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+XBCX1.S=\uc798\ubabb\ub41c \ubaa8\ub4dc\ub85c \uc554\ud638 \ucd08\uae30\ud654 \uc911. ENCRYPT \ub610\ub294 DECRYPT\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+XBCX2.S=\ub108\ubb34 \uc9e7\uc740 \ubd80\ud305 \uc554\ud638\ub85c \uc554\ud638 \ucd08\uae30\ud654 \uc911. \uae38\uc774\ub294 \ucd5c\uc18c\ud55c {0}\uc790\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+XBCX5.S=\ubd80\ud305 \uc554\ud638\ub97c \ub110\ub85c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCX6.S=\ubd80\ud305 \uc554\ud638\ub97c \ube44\ubb38\uc790\uc5f4 \uc5f0\uc18d \uac00\ub2a5 \uc720\ud615\uc73c\ub85c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCX7.S=\ubd80\ud305 \uc554\ud638 \ubcc0\uacbd\uc758 \ud615\uc2dd\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud615\uc2dd\uc740 old_boot_password, new_boot_password\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+XBCX8.S=\ube44\uc554\ud638\ud654 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubd80\ud305 \uc554\ud638\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCX9.S=\uc77d\uae30 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c \ubd80\ud305 \uc554\ud638\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCXA.S=\uc798\ubabb\ub41c \ubd80\ud305 \uc554\ud638.
+XBCXB.S=\uc554\ud638\ud654 \ucc44\uc6b0\uae30 ''{0}''\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uac70\ub098 \ucc44\uc6b0\uae30\uac00 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. ''NoPadding''\uc744 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.
+XBCXC.S=\uc554\ud638\ud654 \uc54c\uace0\ub9ac\uc998 ''{0}''\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4. \uc120\ud0dd\ub41c \uc81c\uacf5\uc790 ''{1}''\uc774(\uac00) \uc774 \uc54c\uace0\ub9ac\uc998\uc744 \uc9c0\uc6d0\ud558\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XBCXD.S=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc791\uc131\ub41c \ud6c4\uc5d0 \uc554\ud638\ud654 \uc54c\uace0\ub9ac\uc998\uc744 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCXE.S=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc791\uc131\ub41c \ud6c4\uc5d0 \uc554\ud638\ud654 \uc81c\uacf5\uc790\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCXF.S=\uc554\ud638\ud654 \uc81c\uacf5\uc790\ub97c \ub098\ud0c0\ub0b4\ub294 \ud074\ub798\uc2a4 ''{0}''\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCXG.S=\uc554\ud638\ud654 \uc81c\uacf5\uc790 ''{0}''\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
+XBCXH.S=encryptionAlgorithm ''{0}''\uc758 \ud615\uc2dd\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc62c\ubc14\ub978 \ud615\uc2dd\uc740 algorithm/feedbackMode/NoPadding\uc785\ub2c8\ub2e4.
+XBCXI.S=\ud53c\ub4dc\ubc31 \ubaa8\ub4dc ''{0}''\uc740(\ub294) \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc9c0\uc6d0\ub418\ub294 \ud53c\ub4dc\ubc31 \ubaa8\ub4dc\ub294 CBC, CFB, OFB \ubc0f ECB\uc785\ub2c8\ub2e4.
+XBCXJ.S=\uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\uc774 1.2.1 \uc774\uc804 JCE(Java Cryptography Extension) \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. JCE 1.2.1\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ud558\uace0 \uc870\uc791\uc744 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624.
+XBCXK.S=\uc8fc\uc5b4\uc9c4 \uc554\ud638\ud654 \ud0a4\uac00 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc791\uc131\ud560 \ub54c \uc0ac\uc6a9\ub41c \uc554\ud638\ud654 \ud0a4\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc62c\ubc14\ub978 \uc554\ud638\ud654 \ud0a4\ub97c \uc0ac\uc6a9\ud558\uc600\ub294\uc9c0 \ud655\uc778\ud55c \ud6c4 \ub2e4\uc2dc \ub3c4\ud558\uc2ed\uc2dc\uc624. 
+XBCXL.S=\uc554\ud638\ud654 \ud0a4\uc5d0 \ub300\ud55c \uac80\uc99d\uc774 \uc131\uacf5\uc801\uc774\uc9c0 \ubabb\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. \uc801\uc808\ud55c \ud30c\uc77c\uc5d0 \uc561\uc138\uc2a4\ud558\uc5ec \uac80\uc99d \ud504\ub85c\uc138\uc2a4\ub97c \uc2e4\ud589 \uc2dc\uc5d0 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \uc624\ub958\uc785\ub2c8\ub2e4.
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S={0} \uce90\uc2dc\uc5d0\uc11c {1} \ud0a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0c8 \uc624\ube0c\uc81d\ud2b8\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774\ubbf8 \uce90\uc2dc\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=\uc694\uccad\ub41c \uc9d1\ud569({0})\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSAI3.S=\uae30\ub2a5\uc774 \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=\uc2a4\uce94 \uc720\ud615
+XSAJ1.U=\ubc29\ubb38\ud55c \ud398\uc774\uc9c0 \uc218
+XSAJ2.U=\ubc29\ubb38\ud55c \ud589 \uc218
+XSAJ3.U=\ubc29\ubb38\ud55c \uc0ad\uc81c \ud589 \uc218
+XSAJ4.U=\uaddc\uc815\ub41c \ud589 \uc218
+XSAJ5.U=\ud398\uce58\ub41c \uc5f4 \uc218
+XSAJ6.U=\ud398\uce58\ub41c \uc5f4\uc758 \ube44\ud2b8 \uc138\ud2b8
+XSAJ7.U=\ud2b8\ub9ac \ub192\uc774
+XSAJ8.U=\uc815\ub82c \uc720\ud615
+XSAJA.U=\uc785\ub825 \ud589 \uc218
+XSAJB.U=\ucd9c\ub825 \ud589 \uc218
+XSAJC.U=\ubcd1\ud569 \uc2e4\ud589 \uc218
+XSAJD.U=\ubcd1\ud569 \uc2e4\ud589 \ud06c\uae30
+XSAJE.U=\ubaa8\ub450
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=\ud799
+XSAJH.U=\uc815\ub82c
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=\uc678\ubd80
+XSAJJ.U=\ub0b4\ubd80
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=XA \ud504\ub85c\ud1a0\ucf5c \uc704\ubc18.
+XSAX1.S=\uae30\uc874 \uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc758 Xid\ub97c \uc0ac\uc6a9\ud558\uc5ec \uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc744 \uc2dc\uc791\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=''{0}''\uc5d0 \ub300\ud55c \ubaa8\ub4c8\uc744 \ubd80\ud305\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSAM2.S=\uc0ad\uc81c\ud560 conglom id\uc5d0 ''{0}''\uc778 \uc0c9\uc778 \ub610\ub294 \uc9d1\ud569\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSAM3.S=conglom id\uc5d0 ''{0}''\uc778 \uc0c9\uc778 \ub610\ub294 \uc9d1\ud569\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSAM4.S=''{0}''(\uc774)\ub77c\uace0 \ud558\ub294 \uc815\ub82c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSAM5.S=\ub2e4\ub978 \ud638\ucd9c\uc744 \uc791\uc131\ud558\uae30 \uc804\uc5d0 next()\ub97c \ud638\ucd9c\ud558\uc5ec \uc2a4\uce94\uc744 \uc5f4\uace0 \uc704\uce58\uc2dc\ucf1c\uc57c \ud569\ub2c8\ub2e4.
+XSAM6.S={0} \ucee8\ud14c\uc774\ub108\uc758 {1}\ud398\uc774\uc9c0\uc5d0\uc11c {2} \ub808\ucf54\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=\ud15c\ud50c\ub9ac\ud2b8\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=\uae30\ub2a5\uc774 \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+XSCH7.S=\uc2a4\uce94\uc758 \uc704\uce58\uac00 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+XSCH6.S=\ucee8\ud14c\uc774\ub108 ID\uac00 {0}\uc778 \ud799 \ucee8\ud14c\uc774\ub108\uac00 \uc885\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSCH5.S=\uae30\ubcf8 \ud14c\uc774\ube14\uc5d0\uc11c \uc694\uccad\ub41c \uc5f4 \ubc88\ud638 {0}\uc640(\uacfc) \ucd5c\ub300 \uc5f4 \uc218 {1}\uc774(\uac00) \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XSCH4.S=\uc9d1\ud569\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSCH1.S={0} \ucee8\ud14c\uc774\ub108\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSCH0.S=\ucee8\ud14c\uc774\ub108\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=\ud14c\uc2a4\ud2b8\ub97c \uc704\ud574 \uc608\uc57d\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+XSCB8.S=btree \uc9d1\ud569 {0}\uc774(\uac00) \ub2eb\ud614\uc2b5\ub2c8\ub2e4.
+XSCB7.S=btree \uc2a4\uce94 \uc911 \ub0b4\ubd80 \uc624\ub958\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4. current_rh\ub294 \ub110 = {0}\uc774\uace0 \uc704\uce58 \ud0a4\ub294 \ub110 = {1}\uc785\ub2c8\ub2e4.
+XSCB6.S=\uc81c\ud55c\uc0ac\ud56d: \ud398\uc774\uc9c0\uc758 \uacf5\uac04 \ubd80\uc871\uc73c\ub85c \uc778\ud574 btree 2\ucc28 \uc0c9\uc778\uc744 \uac31\uc2e0\ud558\uac70\ub098 \uc0bd\uc785\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \uc81c\ud55c\uc0ac\ud56d\uc744 \ud574\uacb0\ud558\ub824\uba74 \ub9e4\uac1c\ubcc0\uc218 derby.storage.pageSize \ubc0f/\ub610\ub294 derby.storage.pageReservedSpace\ub97c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
+XSCB5.S=btree \uc0bd\uc785 \ub610\ub294 \uc0ad\uc81c\uc758 \ub17c\ub9ac \uc2e4\ud589 \ucde8\uc18c \uc911 \ud2b8\ub9ac\uc5d0\uc11c \ud589\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSCB4.S=\uc2a4\uce94\uc744 \uccab \ubc88\uc9f8 \ud589\uc5d0 \ubc30\uce58\ud558\uae30 \uc804\uc5d0 btree \uac1c\ubc29 \uc2a4\uce94\uc758 \uba54\uc18c\ub4dc\uac00 \ud638\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4. (\uc989, next() \ud638\ucd9c\uc774 \uc544\uc9c1 \uc791\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.) \uc2a4\uce94\uc758 \ud604\uc7ac \uc0c1\ud0dc\ub294 ({0})\uc785\ub2c8\ub2e4.
+XSCB3.S=\uad6c\ud604\ub418\uc9c0 \uc54a\uc740 \uae30\ub2a5.
+XSCB2.S=btree 2\ucc28 \uc0c9\uc778\uc5d0 \ub300\ud55c createConglomerate()\uc5d0 \uc81c\uacf5\ub41c \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d\uc5d0\uc11c \ud544\uc218 \ub4f1\ub85d \uc815\ubcf4 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSCB1.S={0} \ucee8\ud14c\uc774\ub108\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSCB0.S=\ucee8\ud14c\uc774\ub108\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=\uc815\ub82c\ud560 \uc790\uc6d0\uc744 \ud655\ubcf4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSAS3.S=\uc815\ub82c\uc5d0 \uc0bd\uc785\ub41c \ud589\uc758 \uc720\ud615\uc774 \uc815\ub82c\uc758 \ud15c\ud50c\ub9ac\ud2b8\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XSAS1.S=\uc815\ub82c\uc758 \uc2dc\uc791 \uc804\uc774\ub098 \uc815\ub82c\uc758 \uc885\ub8cc \uc774\ud6c4\uc5d0 \ud589\uc744 \ud398\uce58\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+XSAS0.S=\uc815\ub82c\uc758 \uc2a4\uce94\uc5d0 \uc801\ud569\ud558\uc9c0 \uc54a\uc740 \uc2a4\uce94 \uc81c\uc5b4\uae30 \uc778\ud130\ud398\uc774\uc2a4 \uba54\uc18c\ub4dc\uac00 \ud638\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc774\ubbf8 \uace0\uc815\ub41c \ud6c4\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uace0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSRS1.S=\ub514\ub809\ud1a0\ub9ac\uac00 \uc544\ub2cc {0}\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubc31\uc5c5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSRS4.S={0}\uc5d0\uc11c {1}(\uc73c)\ub85c \ud30c\uc77c\uc758 \uc774\ub984\uc744 \ubc14\uafb8\ub294 \uc911\uc5d0(\ubc31\uc5c5 \uc911) \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSRS5.S={0}\uc5d0\uc11c {1}(\uc73c)\ub85c \ud30c\uc77c\uc744 \ubcf5\uc0ac\ud558\ub294 \uc911\uc5d0(\ubc31\uc5c5 \uc911) \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSRS6.S=\ubc31\uc5c5 \ub514\ub809\ud1a0\ub9ac {0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSRS7.S=\ubc31\uc5c5 \uc2dc \uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678\uac00 \ud3ec\ucc29\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSRS8.S=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc131 \uc2dc\uc5d0\ub9cc \ub85c\uadf8 \uc7a5\uce58\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uae09\ud558\uac8c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSRS9.S={0} \ub808\ucf54\ub4dc\ub294 \ub354 \uc774\uc0c1 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=\ub354 \uc774\uc0c1 \ubcc0\uacbd\uc744 \ubc1c\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub85c\uadf8 \ud329\ud1a0\ub9ac\uac00 \uc911\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSLB8.S={1}\uc758 \ud55c\uacc4 \uc774\uc0c1\uc73c\ub85c {0}(\uc73c)\ub85c \uc2a4\uce94\uc744 \uc7ac\uc124\uc815\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.
+XSLB6.S=0 \ub610\ub294 -ve \uae38\uc774 \ub85c\uadf8 \ub808\ucf54\ub4dc\ub97c \ub85c\uadf8\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.
+XSLB5.S=\uc790\ub974\uae30 \uc9c0\uc810 {0}\uc5d0 \ub300\ud55c \uc798\ubabb\ub41c truncationLWM \uc778\uc2a4\ud134\ud2b8 {1}. \uc801\ud569\ud55c \ubc94\uc704\ub294 {2} - {3}\uc785\ub2c8\ub2e4.
+XSLB4.S=truncationLWM {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLB2.S=\ucd08\uacfc \ub370\uc774\ud130\ub97c \ub85c\uae45\ud558\ub294 \uc911 \ub85c\uadf8 \uc870\uc791 {0}. \ub0b4\ubd80 \ub85c\uadf8 \ubc84\ud37c\ub97c \ucc44\uc6e0\uc2b5\ub2c8\ub2e4.
+XSLB1.S=\ub85c\uadf8 \uc870\uc791 {0}\uc774(\uac00) \ub85c\uadf8 \uc2a4\ud2b8\ub9bc\uc5d0 \uc790\uccb4 \uae30\ub85d \uc911\uc5d0 \uc624\ub958\ub97c \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4. \uc798\ubabb\ub41c \ub85c\uadf8 \uc870\uc791\uc774\ub098 \ub108\ubb34 \ud070 \ub85c\uadf8 \uc870\uc791\uc73c\ub85c \uc778\ud574 \ub0b4\ubd80 \ub85c\uadf8 \ubc84\ud37c\uac00 \uac00\ub4dd \ucc3c\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D={0} \ub85c\uadf8 \ub514\ub809\ud1a0\ub9ac\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc9c0\uc815\ud55c logDevice \uc704\uce58\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.  
+XSLAS.D=\ubcf5\uc6d0 \uc911 \ubc31\uc5c5\uc5d0\uc11c {0} \ub85c\uadf8 \ub514\ub809\ud1a0\ub9ac\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ubc31\uc5c5 \uc0ac\ubcf8\uc774 \uc62c\ubc14\ub974\uba70 \uc190\uc0c1\ub418\uc9c0 \uc54a\uc558\ub294\uc9c0\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XSLAR.D=\ubcf5\uc6d0 \uc911 ''{0}'' \ub85c\uadf8 \ud30c\uc77c\uc744 ''{1}''(\uc73c)\ub85c \ubcf5\uc0ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uacf5\uac04\uc774 \ucda9\ubd84\ud55c\uc9c0\uc640 \uc0ac\uc6a9 \uad8c\ud55c\uc774 \uc62c\ubc14\ub978\uc9c0\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624. 
+XSLAQ.D={0} \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \ub85c\uadf8 \ud30c\uc77c\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLAP.D={0}\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 {1} \ubc84\uc804\uc785\ub2c8\ub2e4. \ubca0\ud0c0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5c5\uadf8\ub808\uc774\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLAO.D=\uc608\uae30\uce58 \uc54a\uc740 \ubb38\uc81c\uc810 {0}(\uc73c)\ub85c \uc778\ud574 \ubcf5\uad6c\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+XSLAN.D={0}\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ud604\uc7ac \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ubc84\uc804\uacfc \ud638\ud658\ub418\uc9c0 \uc54a\ub294 \ud615\uc2dd\uc785\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ubc84\uc804 {1}\uc5d0 \uc758\ud574 \uc791\uc131 \ub610\ub294 \uc5c5\uadf8\ub808\uc774\ub4dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSLAM.D=IOException\uc73c\ub85c \uc778\ud574 {1}\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud615\uc2dd\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLAL.D=\ub85c\uadf8 \ub808\ucf54\ub4dc \ud06c\uae30 {2}\uc774(\uac00) \ud5c8\uc6a9 \uac00\ub2a5\ud55c \ucd5c\ub300 \ub85c\uadf8 \ud30c\uc77c \ud06c\uae30 {3}\uc744(\ub97c) \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4. \ub85c\uadf8 \ud30c\uc77c {0}, \uc704\uce58 {1}\uc5d0\uc11c \uc624\ub958\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSLAK.D=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ucd5c\ub300 \ub85c\uadf8 \ud30c\uc77c \uc218 {0}\uc744(\ub97c) \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4.
+XSLAJ.D=\uc774\uc804 \ubb38\uc81c\uc810\uc73c\ub85c \uc778\ud574 \ub85c\uae45 \uc2dc\uc2a4\ud15c\uc774 \uc2dc\uc2a4\ud15c \uc885\ub8cc\ub85c \ud45c\uc2dc\ub418\uc5c8\uae30 \ub54c\ubb38\uc5d0 \uc2dc\uc2a4\ud15c\uc744 \uc885\ub8cc\ud55c \ub2e4\uc74c \ub2e4\uc2dc \uc2dc\uc791\ud560 \ub54c\uae4c\uc9c0 \ub2e4\ub978 \uc870\uc791\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XSLAI.D=\uccb4\ud06c\ud3ec\uc778\ud2b8 \ub85c\uadf8 \ub808\ucf54\ub4dc\ub97c \ub85c\uadf8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLAH.D=\uc77d\uae30 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uac31\uc2e0 \uc911\uc785\ub2c8\ub2e4.
+XSLAF.D=\ud6fc\uc190\ub41c \ub370\uc774\ud130 \ubc84\ud37c\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc77d\uae30 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSLAE.D={0}\uc758 \uc81c\uc5b4 \ud30c\uc77c\uc5d0 \uae30\ub85d\ud560 \uc218 \uc5c6\uac70\ub098 \uac31\uc2e0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLAD.D=\ub85c\uadf8 \ud30c\uc77c {3}\uc758 \uc778\uc2a4\ud134\ud2b8 {2}\uc5d0 \uc788\ub294 \ub85c\uadf8 \ub808\ucf54\ub4dc\uac00 \uc190\uc0c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub85c\uadf8 \ub808\ucf54\ub4dc \uae38\uc774 {0}\uc744(\ub97c) \uc608\uc0c1\ud588\uc9c0\ub9cc \uc2e4\uc81c \uae38\uc774\ub294 {1}\uc785\ub2c8\ub2e4.
+XSLAC.D={0}\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ud604\uc7ac \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ubc84\uc804\uacfc \ud638\ud658\ub418\uc9c0 \uc54a\ub294 \ud615\uc2dd\uc785\ub2c8\ub2e4. \uc774\ud6c4 \ubc84\uc804\uc5d0 \uc758\ud574 \uc791\uc131\ub418\uc5c8\uac70\ub098 \uc5c5\uadf8\ub808\uc774\ub4dc\ub418\uc5c8\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+XSLAB.D=\ub85c\uadf8 \ud30c\uc77c {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud50c\ub7ab\ud3fc\uc5d0 \uc62c\ubc14\ub978 \uacbd\ub85c \ubd84\ub9ac\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec logDevice \ub4f1\ub85d \uc815\ubcf4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc124\uc815\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XSLAA.D=\uc800\uc7a5\uc18c\uac00 \uc774\uc804 \uc608\uc678\ub85c \uc778\ud574 \uc2dc\uc2a4\ud15c \uc885\ub8cc\ub85c \ud45c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSLA8.D={0} \ud2b8\ub79c\uc7ad\uc158\uc744 \ub864\ubc31\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {1} \uc870\uc791\uc744 {2}(\uc73c)\ub85c \ubcf4\ucda9\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.
+XSLA7.D=\ub85c\uadf8\uc5d0\uc11c {0} \uc870\uc791\uc744 \ub2e4\uc2dc \uc2e4\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLA6.D=\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubcf5\uad6c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLA5.D=\uba87 \uac00\uc9c0 \uc774\uc720\ub85c {0} \ud2b8\ub79c\uc7ad\uc158\uc744 \ub864\ubc31\ud558\uae30 \uc704\ud55c \ub85c\uadf8 \uc2a4\ud2b8\ub9bc\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSLA4.D=\ub85c\uadf8\uc5d0 \uae30\ub85d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub85c\uadf8\uac00 \uac00\ub4dd \ucc3c\uc744 \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4. \ud544\uc694\ud558\uc9c0 \uc54a\uc740 \ud30c\uc77c\uc744 \uc0ad\uc81c\ud558\uc2ed\uc2dc\uc624. \ub610\ud55c \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc774 \uc77d\uae30 \uc804\uc6a9\uc774\uac70\ub098 \ub514\uc2a4\ud06c\uac00 \uc2e4\ud328\ud588\uac70\ub098 \ub9e4\uccb4\uc5d0 \ub2e4\ub978 \ubb38\uc81c\uac00 \uc788\uc744 \uac00\ub2a5\uc131\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
+XSLA3.D=\ub85c\uadf8\uac00 \uc190\uc0c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub85c\uadf8 \uc2a4\ud2b8\ub9bc\uc5d0 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub370\uc774\ud130\uac00 \uc788\uc2b5\ub2c8\ub2e4.
+XSLA2.D=\uc2dc\uc2a4\ud15c\uc774 \uc885\ub8cc\ub418\uba70 \ub85c\uadf8 \ud30c\uc77c\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \uc911\uc5d0 I/O \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSLA1.D=\ub85c\uadf8 \ub808\ucf54\ub4dc\uac00 \uc2a4\ud2b8\ub9bc\uc73c\ub85c \uc804\uc1a1\ub418\uc5c8\uc9c0\ub9cc \uc800\uc7a5\uc18c\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4(\uc624\ube0c\uc81d\ud2b8 {0}). \uc774\ub85c \uc778\ud574 \ubcf5\uad6c \ubb38\uc81c\uc810\uc774 \ubc1c\uc0dd\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
+XSLA0.D=\ub85c\uadf8 \ud30c\uc77c\uc744 {0} \ub514\uc2a4\ud06c\ub85c \ube44\uc6b8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=\uc804\ub2ec\ub41c \uc774\ub984\uc744 \uac00\uc9c4 SAVEPOINT\uac00 \uc774\ubbf8 \ud604\uc7ac \ud2b8\ub79c\uc7ad\uc158\uc5d0 \uc874\uc7ac\ud569\ub2c8\ub2e4.
+3B502.S=RELEASE \ub610\ub294 ROLLBACK TO SAVEPOINT\uac00 \uc9c0\uc815\ub418\uc5c8\uc73c\ub098 savepoint\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+3B001.S=SAVEPOINT({0})\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uac70\ub098 \ud604\uc7ac \ud2b8\ub79c\uc7ad\uc158\uc5d0\uc11c \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+3B002.S=\ucd5c\ub300 savepoint \uc218\uc5d0 \ub3c4\ub2ec\ud588\uc2b5\ub2c8\ub2e4. 
+XSTA2.S=\ub2e4\ub978 \ud2b8\ub79c\uc7ad\uc158\uc744 \ud65c\uc131\ud654\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc744 \ub54c \ud2b8\ub79c\uc7ad\uc158\uc774 \uc774\ubbf8 \ud65c\uc131 \uc0c1\ud0dc\uc600\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=RawStore \ubaa8\ub4c8\uc5d0 \uc758\ud574 \ub0b4\ubd80 \uc624\ub958\uac00 \uc2dd\ubcc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+40XT1=\ud2b8\ub79c\uc7ad\uc158 \ud655\uc57d \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+40XT2=SAVEPOINT\uc758 \ub864\ubc31 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+40XT4=\uc544\uc9c1 \ud65c\uc131 \uc0c1\ud0dc\uc778 \ud2b8\ub79c\uc7ad\uc158\uc744 \ub2eb\uc73c\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4. \ud2b8\ub79c\uc7ad\uc158\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+40XT5=\ub0b4\ubd80 \ud2b8\ub79c\uc7ad\uc158 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+40XT6=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc815\uc9c0 \uc0c1\ud0dc\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. \ud2b8\ub79c\uc7ad\uc158\uc744 \ud65c\uc131\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc815\uc9c0 \uc0c1\ud0dc\uac00 \uc885\ub8cc\ub420 \ub54c\uae4c\uc9c0 \uc7a0\uc2dc \uae30\ub2e4\ub9ac\uc2ed\uc2dc\uc624.
+40XT7=\ub0b4\ubd80 \ud2b8\ub79c\uc7ad\uc158\uc5d0\uc11c \uc870\uc791\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 ID.
+XCXB0.S=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud074\ub798\uc2a4 \uacbd\ub85c: ''{0}''.
+XCXC0.S=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 ID \ubaa9\ub85d.
+XCXE0.S=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc9c0\uc5ed\uc744 \uc0ac\uc6a9\ud558\ub294 \uc870\uc791\uc744 \uc218\ud589\ud558\ub824\uace0 \ud558\uc9c0\ub9cc \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc9c0\uc5ed\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=\ud2b8\ub79c\uc7ad\uc158 \uc911\ub2e8 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSTB2.M=\ud2b8\ub79c\uc7ad\uc158 \ubcc0\uacbd\uc0ac\ud56d\uc744 \ub85c\uadf8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc77d\uae30 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uae30\ub85d\ud558\ub824\uace0 \uc2dc\ub3c4 \uc911\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+XSTB3.M=\ub85c\uadf8 \uad00\ub9ac\uc790\uac00 \ub110\uc774\uae30 \ub54c\ubb38\uc5d0 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc911\ub2e8\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774\uc804 \uc624\ub958\ub85c \uc778\ud55c \uac83\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+XSTB5.M=\ub85c\uae45\uc774 \uc0ac\uc6a9 \ubd88\uac00\ub2a5\ud55c \uc0c1\ud0dc\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc791\uc131\ud558\uc5ec \uc608\uae30\uce58 \uc54a\uc740 \ubb38\uc81c\uc810\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSTB6.M=\uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc778 \ud2b8\ub79c\uc7ad\uc158 \ud14c\uc774\ube14\uc744 \ub2e4\ub978 \uac83\uc73c\ub85c \ub300\uccb4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=\ucee8\ud14c\uc774\ub108\uac00 \ub2eb\ud614\uc2b5\ub2c8\ub2e4.
+40XD1=\ucee8\ud14c\uc774\ub108\uac00 \uc77d\uae30 \uc804\uc6a9 \ubaa8\ub4dc\uc5d0\uc11c \uc5f4\ub838\uc2b5\ub2c8\ub2e4.
+40XD2={0} \ucee8\ud14c\uc774\ub108\ub97c \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc0ad\uc81c\ub418\uc5c8\uac70\ub098 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=\ud398\uc774\uc9c0\uc5d0\uc11c \ubc94\uc704 \ubc16\uc758 \uc2ac\ub86f\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+XSDA2.S=\uc0ad\uc81c\ub41c \ub808\ucf54\ub4dc\ub97c \uac31\uc2e0\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+XSDA3.S=\uc81c\ud55c\uc0ac\ud56d: \ud398\uc774\uc9c0\uc758 \uacf5\uac04 \ubd80\uc871\uc73c\ub85c \uc778\ud574 \ub808\ucf54\ub4dc\ub97c \uac31\uc2e0\ud558\uac70\ub098 \uc0bd\uc785\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \uc81c\ud55c\uc0ac\ud56d\uc744 \ud574\uacb0\ud558\ub824\uba74 \ub9e4\uac1c\ubcc0\uc218 derby.storage.pageSize \ubc0f/\ub610\ub294 derby.storage.pageReservedSpace\ub97c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
+XSDA4.S=\uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSDA5.S=\uc0ad\uc81c\ub418\uc9c0 \uc54a\uc740 \ub808\ucf54\ub4dc\ub97c \uc0ad\uc81c \ucde8\uc18c\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+XSDA6.S=\ud589\uc758 {0} \uc5f4\uc774 \ub110\uc785\ub2c8\ub2e4. \uc5f4\uc774 \uc624\ube0c\uc81d\ud2b8\ub97c \uc9c0\uc815\ud558\ub3c4\ub85d \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.
+XSDA7.S=\ud074\ub798\uc2a4 {0}\uc758 \uc5f0\uc18d \uac00\ub2a5 \ub610\ub294 SQLData \uc624\ube0c\uc81d\ud2b8 \ubcf5\uc6d0. \ucc98\uc74c\uc5d0 \uc800\uc7a5\ub41c \uac83\ubcf4\ub2e4 \ub9ce\uc740 \ub370\uc774\ud130\ub97c \uc77d\uc73c\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+XSDA8.S={0}\uc758 \uc5f0\uc18d \uac00\ub2a5 \ub610\ub294 SQLData \uc624\ube0c\uc81d\ud2b8 \ubcf5\uc6d0 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XSDA9.S={0}\uc758 \uc5f0\uc18d \uac00\ub2a5 \ub610\ub294 SQLData \uc624\ube0c\uc81d\ud2b8 \ubcf5\uc6d0 \uc911\uc5d0 \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDAA.S=\uc798\ubabb\ub41c \uc2dc\uac04 \uc18c\uc778 {0}. \uc2dc\uac04 \uc18c\uc778\uc774 \ub2e4\ub978 \ud398\uc774\uc9c0\uc758 \uac83\uc774\uac70\ub098 \ud638\ud658 \ubd88\uac00\ub2a5\ud55c \uad6c\ud604\uc785\ub2c8\ub2e4.
+XSDAB.S=\ub110 \uc2dc\uac04 \uc18c\uc778\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDAC.S=\ud55c \ucee8\ud14c\uc774\ub108\uc5d0\uc11c \ub2e4\ub978 \ucee8\ud14c\uc774\ub108\ub85c \ud589 \ub610\ub294 \ud398\uc774\uc9c0 \uc774\ub3d9 \uc2dc\ub3c4.
+XSDAD.S=\ud55c \ud398\uc774\uc9c0\uc5d0\uc11c \ub2e4\ub978 \ud398\uc774\uc9c0\ub85c 0\ud589 \uc774\ub3d9 \uc2dc\ub3c4.
+XSDAE.S=\ud2b9\uc815 \ub808\ucf54\ub4dc \ud578\ub4e4 ID\uc5d0 \ub300\ud574\uc11c\ub9cc \ub808\ucf54\ub4dc \ud578\ub4e4\uc744 \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+XSDAF.S=\ud2b9\uc815 \ub808\ucf54\ub4dc \ud578\ub4e4\uc744 \uc815\uc0c1\uc801\uc778 \ub808\ucf54\ub4dc \ud578\ub4e4\uc778 \uac83\ucc98\ub7fc \uc0ac\uc6a9.
+XSDAG.S=\ud560\ub2f9 \ud3ec\ud568 \ucd5c\uc0c1\uc704 \ud2b8\ub79c\uc7ad\uc158\uc774 \ucee8\ud14c\uc774\ub108\ub97c \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDAI.S=\uc81c\uac70\ub418\ub294 {0}\ud398\uc774\uc9c0\ub294 \ud560\ub2f9 \ud574\uc81c\ub97c \uc704\ud574 \uc774\ubbf8 \uc7a0\uacbc\uc2b5\ub2c8\ub2e4.
+XSDAJ.S=\uc5f0\uc18d \uac00\ub2a5 \ub610\ub294 SQLData \uc624\ube0c\uc81d\ud2b8\uc758 \uc4f0\uae30 \uc911 \uc608\uc678
+XSDAK.S=\ub808\ucf54\ub4dc \ud578\ub4e4 {0}\uc5d0 \ub300\ud574 \uc798\ubabb\ub41c \ud398\uc774\uc9c0\ub97c \ud655\ubcf4\ud588\uc2b5\ub2c8\ub2e4.
+XSDAL.S=\ub808\ucf54\ub4dc \ud578\ub4e4 {0}\uc774(\uac00) \uc608\uae30\uce58 \uc54a\uac8c \uc624\ubc84\ud50c\ub85c\uc6b0 \ud398\uc774\uc9c0\ub97c \uac00\ub9ac\ud0b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=\uba54\ubaa8\ub9ac \ub0b4 \ud398\uc774\uc9c0 {0}\uc5d0\uc11c \uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678
+XSDB1.D={0}\ud398\uc774\uc9c0\uc5d0 \uc54c \uc218 \uc5c6\ub294 \ud398\uc774\uc9c0 \ud615\uc2dd
+XSDB2.D=\ucee8\ud14c\uc774\ub108 {0}\uc5d0\uc11c \uc54c \uc218 \uc5c6\ub294 \ucee8\ud14c\uc774\ub108 \ud615\uc2dd : {1}
+XSDB3.D=\ucee8\ud14c\uc774\ub108 \uc815\ubcf4\ub97c \uc791\uc131\ud55c \ud6c4\uc5d0 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}(\uc774)\uc5c8\uc9c0\ub9cc \uc9c0\uae08\uc740 {1}\uc785\ub2c8\ub2e4.
+XSDB4.D={0}\ud398\uc774\uc9c0\uc758 \ubc84\uc804\uc740 {1}\uc785\ub2c8\ub2e4. \ub85c\uadf8 \ud30c\uc77c\uc5d0 \ubcc0\uacbd \ubc84\uc804 {2}\uc774(\uac00) \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0 \ub204\ub77d\uc5d0 \ub300\ud55c \ub85c\uadf8 \ub808\ucf54\ub4dc\uac00 \uc788\uac70\ub098 \uc774 \ud398\uc774\uc9c0\uac00 \ub514\uc2a4\ud06c\uc5d0 \uc62c\ubc14\ub85c \uae30\ub85d\ub418\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4.
+XSDB5.D=\ub85c\uadf8\uac00 {0}\ud398\uc774\uc9c0\uc5d0\uc11c \ubcc0\uacbd \ub808\ucf54\ub4dc\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba70 \ucee8\ud14c\uc774\ub108\uc758 \ub05d\uc744 \ucd08\uacfc\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.
+XSDB6.D=\ub2e4\ub978 Derby \uc778\uc2a4\ud134\uc2a4\uac00 \uc774\ubbf8 {0} \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubd80\ud305\ud588\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+XSDB7.D=\uacbd\uace0: Derby(\uc778\uc2a4\ud134\uc2a4 {2})\uc774(\uac00) \ud65c\uc131 \uc0c1\ud0dc\uc778 \uc911\uc5d0 Derby(\uc778\uc2a4\ud134\uc2a4 {0})\uc774(\uac00) {1} \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubd80\ud305\ud558\ub824 \ud569\ub2c8\ub2e4. Derby\uc758 \ud55c \uc778\uc2a4\ud134\uc2a4\ub9cc\uc774 \ud55c \ubc88\uc5d0 \ud558\ub098\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubd80\ud305\ud574\uc57c \ud569\ub2c8\ub2e4. \uc2ec\uac01\ud558\uace0 \ubcf5\uad6c \ubd88\uac00\ub2a5\ud55c \uc190\uc0c1\uc774 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\uba70 \uc774\ubbf8 \ubc1c\uc0dd\ud588\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.
+XSDB8.D=\uacbd\uace0: Derby(\uc778\uc2a4\ud134\uc2a4 {2})\uc774(\uac00) \ud65c\uc131 \uc0c1\ud0dc\uc778 \uc911\uc5d0 Derby(\uc778\uc2a4\ud134\uc2a4 {0})\uc774(\uac00) {1} \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubd80\ud305\ud558\ub824 \ud569\ub2c8\ub2e4. Derby\uc758 \ud55c \uc778\uc2a4\ud134\uc2a4\ub9cc\uc774 \ud55c \ubc88\uc5d0 \ud558\ub098\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubd80\ud305\ud574\uc57c \ud569\ub2c8\ub2e4. \ub3d9\uc77c\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c Derby\uc758 \ub450 \uc778\uc2a4\ud134\uc2a4\uac00 \ub3d9\uc2dc\uc5d0 \ubd80\ud305\ud558\ub294 \uacbd\uc6b0 \uc2ec\uac01\ud558\uace0 \ubcf5\uad6c \ubd88\uac00\ub2a5\ud55c \uc190\uc0c1\uc774 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. db2j.database.forceDatabaseLock=true \ub4f1\ub85d \uc815\ubcf4\uac00 \uc124\uc815\ub418\uc5c8\uc73c\ubbc0\ub85c db.lck\uac00 \ub354 \uc774\uc0c1 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc744 \ub54c\uae4c\uc9c0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ubd80\ud305\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ubd80\ud305\ud560 Derby\uc758 \uccab \ubc88\uc9f8 \uc778\uc2a4\ud134\uc2a4\uac00 \uc885\ub8cc\ub418\uba74 \uc774 \ud30c\uc77c\uc774 \uc81c\uac70\ub418\uc9c0\ub9cc \uc77c\ubd80 \uc2dc\uc2a4\ud15c \uc885\ub8cc \uc2dc\uc5d0\ub294 \uacc4\uc18d \ub0a8\uc544 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.  \uc774 \uacbd\uc6b0 \uc218\ub3d9\uc73c\ub85c \ud30c\uc77c\uc744 \uc81c\uac70\ud574\uc57c \ud569\ub2c8\ub2e4.  db.lck \ud30c\uc77c\uc744 \uc218\ub3d9\uc73c\ub85c \uc0ad\uc81c\ud558\uae30 \uc804\uc5d0 \ub2e4\ub978 VM\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc561\uc138\uc2a4\ud558\uace0 \uc788\ub294\uc9c0 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.
+XSDB9.D=\uc2a4\ud2b8\ub9bc \ucee8\ud14c\uc774\ub108 {0}\uc774(\uac00) \uc190\uc0c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XSDBA.D={0} \uc624\ube0c\uc81d\ud2b8 \ud560\ub2f9 \uc2dc\ub3c4\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S={0} \ud30c\uc77c\uc774 \uc774\ubbf8 \uc788\uc73c\ubbc0\ub85c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDF1.S=\ucee8\ud14c\uc774\ub108\uc5d0 \ub300\ud55c {0} \ud30c\uc77c \uc791\uc131 \uc911 \uc608\uc678 \ubc1c\uc0dd
+XSDF2.S=\ucee8\ud14c\uc774\ub108\uc5d0 \ub300\ud55c {0} \ud30c\uc77c \uc791\uc131 \uc911 \uc608\uc678 \ubc1c\uc0dd. \ud30c\uc77c\uc744 \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc608\uc678: {1}.
+XSDF3.S={0} \uc138\uadf8\uba3c\ud2b8\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDF4.S=\uc0ad\uc81c\ub41c \ucee8\ud14c\uc774\ub108\uc5d0 \ub300\ud55c {0} \ud30c\uc77c \uc81c\uac70 \uc911 \uc608\uc678. \ud30c\uc77c\uc744 \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {1}.
+XSDF6.S=\ud560\ub2f9 \ud398\uc774\uc9c0 {0}\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDF7.S=\uc0c8\ub85c \uc791\uc131\ub41c \ud398\uc774\uc9c0\uac00 \ub798\uce58\ub418\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. {0}
+XSDF8.S=\uc7ac\uc0ac\uc6a9\ud560 {0}\ud398\uc774\uc9c0\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDFB.S=\uc77d\uae30 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \uc778\ud574 \uc870\uc791\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XSDFD.S={0}\ud398\uc774\uc9c0\uc758 \ub450 I/O\uc5d0\uc11c \ud398\uc774\uc9c0 \uc774\ubbf8\uc9c0\uac00 \ub2e4\ub985\ub2c8\ub2e4. \uccab \ubc88\uc9f8 \uc774\ubbf8\uc9c0\uc5d0 \uc798\ubabb\ub41c \uccb4\ud06c\uc12c\uc774 \uc788\uace0 \ub450 \ubc88\uc9f8 \uc774\ubbf8\uc9c0\uc5d0 \uc62c\ubc14\ub978 \uccb4\ud06c\uc12c\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ud398\uc774\uc9c0 \uc774\ubbf8\uc9c0\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. {1} {2}
+XSDFF.S=\uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678\ub85c \uc778\ud574 \uc694\uccad\ub41c \uc870\uc791\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D={0}\ud398\uc774\uc9c0\ub97c \ub514\uc2a4\ud06c\uc5d0\uc11c \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDG1.D={0}\ud398\uc774\uc9c0\ub97c \ub514\uc2a4\ud06c\uc5d0 \uae30\ub85d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub514\uc2a4\ud06c\uac00 \uac00\ub4dd \ucc3c\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XSDG2.D={0}\ud398\uc774\uc9c0\uc5d0 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uccb4\ud06c\uc12c. \uc608\uc0c1={1}, \ub514\uc2a4\ud06c \uc0c1 \ubc84\uc804={2}, \ud398\uc774\uc9c0 \ub364\ud504\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. {3}
+XSDG3.D={0} \ucee8\ud14c\uc774\ub108\uc5d0 \ub300\ud55c \uba54\ud0c0\ub370\uc774\ud130\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XSDG5.D=createFinished \ud638\ucd9c \uc2dc \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc791\uc131 \ubaa8\ub4dc\uc5d0 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XSDG6.D=\ubcf5\uc6d0 \uc911 {0} \ubc31\uc5c5\uc5d0\uc11c \ub370\uc774\ud130 \uc138\uadf8\uba3c\ud2b8 \ub514\ub809\ud1a0\ub9ac\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ubc31\uc5c5 \uc0ac\ubcf8\uc774 \uc62c\ubc14\ub974\uba70 \uc190\uc0c1\ub418\uc9c0 \uc54a\uc558\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XSDG7.D=\ubcf5\uc6d0 \uc911 {0} \ub514\ub809\ud1a0\ub9ac\ub97c \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9 \uad8c\ud55c\uc774 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XSDG8.D=\ubcf5\uc6d0 \uc911 ''{0}'' \ub514\ub809\ud1a0\ub9ac\ub97c ''{1}''(\uc73c)\ub85c \ubcf5\uc0ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uacf5\uac04\uc774 \ucda9\ubd84\ud55c\uc9c0\uc640 \uc0ac\uc6a9 \uad8c\ud55c\uc774 \uc62c\ubc14\ub978\uc9c0\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624. 
+
+# language
+01500={1} \ud14c\uc774\ube14\uc758 {0} \uc81c\ud55c\uc870\uac74\uc774 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+01501={0} \ubdf0\uac00 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+01502={1} \ud14c\uc774\ube14\uc758 {0} \ud2b8\ub9ac\uac70\uac00 \uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+01503=\ub110 \uc544\ub2d8 \uc81c\ud55c\uc870\uac74\uc744 \ucd94\uac00\ud558\uc5ec {1} \ud14c\uc774\ube14\uc758 {0}\uc5f4\uc774 \uc218\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+01504=\uc0c8 \uc0c9\uc778\uc740 \uae30\uc874 \uc0c9\uc778\uacfc \uc911\ubcf5\ub429\ub2c8\ub2e4. {0}.
+01505={0} \uac12\uc774 \uc798\ub838\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+01003=\uc5f4 \ud568\uc218\uc758 \uc778\uc218\uc5d0\uc11c \ub110\uac12\uc774 \uc81c\uac70\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+0100E=XX \ub108\ubb34 \ub9ce\uc740 \uacb0\uacfc \uc138\ud2b8\ub97c \ub9ac\ud134\ud558\ub3c4\ub85d \uc2dc\ub3c4.
+02000=FETCH, UPDATE \ub610\ub294 DELETE\uc5d0 \ub300\ud55c \ud589\uc744 \ubc1c\uacac\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \uc870\ud68c \uacb0\uacfc\uac00 \ube48 \ud14c\uc774\ube14\uc785\ub2c8\ub2e4.
+21000=\uc2a4\uce7c\ub77c \ubd80\uc18d \uc870\ud68c\ub294 \ud55c \ud589\ub9cc\uc744 \ub9ac\ud134\ud558\ub3c4\ub85d \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+22001={0} ''{1}''\uc744(\ub97c) {2} \uae38\uc774\ub85c \ub2e8\ucd95\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911 \uc790\ub974\uae30 \uc624\ub958\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+54006={0} \uc870\uc791\uc73c\ub85c \uc778\ud55c \uae38\uc774\uac00 {1}\ubcf4\ub2e4 \ud07d\ub2c8\ub2e4.
+22003=\uacb0\uacfc \uac12\uc774 {0} \ub370\uc774\ud130 \uc720\ud615\uc758 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.
+22005=\uc720\ud615\uc774 ''{1}''\uc778 \ub370\uc774\ud130 \uac12\uc5d0\uc11c \uc720\ud615\uc774 ''{0}''\uc778 \ub370\uc774\ud130 \uac12\uc744 \uac00\uc838\uc624\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+22007.S.180=\ub0a0\uc9dc \uc2dc\uac04 \uac12\uc758 \ubb38\uc790\uc5f4 \ud45c\uc2dc\uac00 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.
+22007.S.181=\ub0a0\uc9dc \uc2dc\uac04 \uac12\uc758 \ubb38\uc790\uc5f4 \ud45c\uc2dc \uad6c\ubb38\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+22011=SUBSTR \ud568\uc218\uc758 \ub450\ubc88\uc9f8 \ub610\ub294 \uc138\ubc88\uc9f8 \uc778\uc218\uac00 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4.
+22012=0\uc73c\ub85c \ub098\ub204\ub824\uace0 \uc2dc\ub3c4\ud569\ub2c8\ub2e4.
+22013=\uc74c\uc218\uc758 \uc81c\uacf1\uadfc ''{0}''\uc744 \uad6c\ud558\ub824\uace0 \uc2dc\ub3c4\ud569\ub2c8\ub2e4.
+22014=LOCATE\uc758 \uc2dc\uc791 \uc704\uce58\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc591\uc758 \uc815\uc218\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uac80\uc0c9\uc744 \uc2dc\uc791\ud560 \uc0c9\uc778\uc740 ''{2}''\uc785\ub2c8\ub2e4. \uac80\uc0c9 \ub300\uc0c1 \ubb38\uc790\uc5f4\uc740 ''{0}''\uc785\ub2c8\ub2e4.  \uac80\uc0c9\ud560 \ubb38\uc790\uc5f4\uc740 ''{1}''\uc785\ub2c8\ub2e4.
+22015=''{0}'' \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc77c\ub828\uc758 \uc720\ud615\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uccab \ubc88\uc9f8 \ud53c\uc5f0\uc0b0\uc790\uc758 \uc720\ud615\uc740 ''{1}''\uc785\ub2c8\ub2e4. \ub450 \ubc88\uc9f8 \ud53c\uc5f0\uc0b0\uc790\uc758 \uc720\ud615\uc740 ''{2}''\uc785\ub2c8\ub2e4. \uc138 \ubc88\uc9f8 \ud53c\uc5f0\uc0b0\uc790(\uc2dc\uc791 \uc704\uce58)\uc758 \uc720\ud615\uc740 ''{3}''\uc785\ub2c8\ub2e4.
+22018={0} \uc720\ud615\uc5d0 \ub300\ud55c \uc62c\ubc14\ub978 \ubb38\uc790\uc5f4 \ud615\uc2dd\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+22019=\uc774\ud0c8 \uc21c\uc11c''{0}''\uc774(\uac00) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ud0c8 \ubb38\uc790\uc5f4\uc740 \ud55c \ubb38\uc790\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub110 \ub610\ub294 \ud55c \ubb38\uc790 \uc774\uc0c1\uc774\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
+22025=\uc774\ud0c8 \ubb38\uc790 \ub4a4\uc5d0\ub294 \uc774\ud0c8 \ubb38\uc790 '_' \ub610\ub294 '%'\uac00 \uc640\uc57c \ud569\ub2c8\ub2e4. \uadf8\uc678 \ub2e4\ub978 \ubb38\uc790\uac00 \uc624\uac70\ub098 \ud328\ud134 \ub05d\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+22027=TRIM() \uae30\ubcf8 \uc81c\uacf5 \ud568\uc218\ub294 \ub2e8\uc77c \uc815\ub9ac \ubb38\uc790\ub9cc\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. LTRIM() \ubc0f RTRIM() \uae30\ubcf8 \uc81c\uacf5 \ud568\uc218\ub294 \uc5ec\ub7ec \uc815\ub9ac \ubb38\uc790\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.
+22500=LIKE \ud328\ud134\uacfc ESCAPE\uc808 \ubaa8\ub450\uc5d0 \ub300\ud574 ? \ub9e4\uac1c\ubcc0\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+22501=NULL\uc758 ESCAPE\uc808\uc740 \uc815\uc758\ub418\uc9c0 \uc54a\uc740 \uacb0\uacfc\ub97c \ub9ac\ud134\ud558\uba70 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+23502=''{0}''\uc5f4\uc740 \ub110\uac12\uc744 \uc2b9\uc778\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+23505=''{1}''\uc5d0 \uc815\uc758\ub41c ''{0}''\uc5d0 \uc758\ud574\uc11c \uc2dd\ubcc4\ub41c \uace0\uc720 \uc778\ub371\uc2a4 \ub610\ub294 \uace0\uc720 \ubc0f 1\ucc28 \ud0a4 \uc81c\ud55c\uc870\uac74\uc5d0\uc11c \ud0a4 \uac12\uc774 \uc911\ubcf5\ub420 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uba85\ub839\ubb38\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+23503=''{1}'' \ud14c\uc774\ube14\uc758 {2}(\uc73c)\ub85c \uc778\ud574 {3} \ud0a4\uc5d0 \ub300\ud55c \uc678\ubd80 \ud0a4 \uc81c\ud55c\uc870\uac74 ''{0}''\uc758 \uc704\ubc18\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uba85\ub839\ubb38\uc774 \ub864\ubc31\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+23513=''{0}'' \ud14c\uc774\ube14\uc5d0\uc11c INSERT \ub610\ub294 UPDATE\ub97c \uc218\ud589\ud558\ub294 \ub3d9\uc548 \ud655\uc778 \uc81c\ud55c\uc870\uac74 ''{1}''\uc774(\uac00) \uc704\ubc18\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+38000=\ud45c\ud604\uc2dd\uc744 \ud3c9\uac00\ud558\ub294 \ub3d9\uc548 \uc608\uc678 ''{0}''\uc774(\uac00) \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+38001=\uc678\ubd80 \ub8e8\ud2f4\uc744 \uc0ac\uc6a9\ud558\uc5ec SQL\ubb38\uc744 \uc2e4\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+38002=\ub8e8\ud2f4\uc774 \ub370\uc774\ud130 \uc218\uc815\uc744 \uc2dc\ub3c4\ud588\uc73c\ub098 \ub8e8\ud2f4\uc774 MODIFIES SQL DATA\ub85c \uc815\uc758\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+38004=\ub8e8\ud2f4\uc774 \ub370\uc774\ud130 \uc77d\uae30\ub97c \uc2dc\ub3c4\ud588\uc73c\ub098 \ub8e8\ud2f4\uc774 READS SQL DATA\ub85c \uc815\uc758\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+39004=\ucd08\uae30 \uc720\ud615 ''{0}''\uc744(\ub97c) \uc0ac\uc6a9\ud558\ub294 \uba54\uc18c\ub4dc\uc5d0 \ub110\uac12\uc744 \uc804\ub2ec\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+40XC0=\ube44\ud65c\uc131 \uba85\ub839\ubb38. \uc774 \uba85\ub839\ubb38 \ub0b4\uc758 \ud2b8\ub79c\uc7ad\uc158 \uc2ec\uac01\ub3c4 \uc624\ub958 \ud3ec\ucc29\uc73c\ub85c \uc778\ud55c \uac83\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+# this error is retired in 1.3
+42000=\uad6c\ubb38 \uc624\ub958 \ub610\ub294 \uc561\uc138\uc2a4 \uaddc\uce59 \uc704\ubc18. \uc138\ubd80\uc0ac\ud56d\uc740 \ucd94\uac00 \uc624\ub958\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=ALTER TABLE\ubb38\uc5d0\uc11c \uc5f4 ''{0}''\uc774(\uac00) NOT NULL\ub85c\uc11c \uc9c0\uc815\ub418\uc5c8\uace0, DEFAULT\uc808\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uac70\ub098 DEFAULT NULL\ub85c\uc11c \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42601.S.372=ALTER TABLE\ubb38\uc774 IDENTITY \uc5f4\uc744 \ud14c\uc774\ube14\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42606=''{0}''(\uc73c)\ub85c \uc2dc\uc791\ud558\ub294 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 16\uc9c4 \uc0c1\uc218\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+54002=''{0}''(\uc73c)\ub85c \uc2dc\uc791\ud558\ub294 \ubb38\uc790\uc5f4 \uc0c1\uc218\uac00 \ub108\ubb34 \uae41\ub2c8\ub2e4.
+42611=\uc5f4\uc5d0 \ub300\ud55c \uae38\uc774, \uc815\ubc00\ub3c4 \ub610\ub294 \ubc30\uc728, \ub610\ub294 \uc720\ud615 \ub9f5\ud551 ''{0}''\uc774(\uac00) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+
+42605=''{0}'' \ud568\uc218\uc5d0 \ub300\ud55c \uc778\uc218 \uc218\uac00 \ud2c0\ub9bd\ub2c8\ub2e4.
+42610=COALESC/VALUE \ud568\uc218\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \uc778\uc218\ub294 \ub9e4\uac1c\ubcc0\uc218\uac00 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud55c \uac1c \uc774\uc0c1\uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \uc544\ub2cc \uc778\uc218\ub97c \uac00\uc838\uc57c \ud569\ub2c8\ub2e4.
+
+42613=''{0}''\uacfc(\uc640) \uad00\ub828\ub41c \uc5ec\ub7ec\uac1c\uc758 \ub610\ub294 \uc0c1\ucda9\ub418\ub294 \ud0a4\uc6cc\ub4dc\uac00 \uc788\uc2b5\ub2c8\ub2e4.
+42621=''{0}''(\uc73c)\ub85c \uc815\uc758\ub41c \uc0dd\uc131\ub41c \uceec\ub7fc \ub610\ub294 \uc810\uac80 \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42734=''{1}'' \ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc9c0\uc815\ub41c ''{0}'' \uc774\ub984\uc774 \uace0\uc720\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+# DB2 error for invalid set schema
+42802=\uc9c0\uc815\ub41c \uac12\uc758 \uc218\uac00 \uc9c0\uc815\ub418\uac70\ub098 \uc554\uc2dc\ub41c \uc5f4\uc758 \uc218\uc640 \ub3d9\uc77c\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42815.S.713=''{0}''\uc758 \ub300\uccb4 \uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42815.S.171=''{0}'' \ubc0f ''{1}'' \uc778\uc218\uc758 \ub370\uc774\ud130 \uc720\ud615, \uae38\uc774 \ub610\ub294 \uac12\uc774 \ud638\ud658\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4.
+42820=\ubd80\ub3d9 \uc18c\uc218\uc810 \ub9ac\ud130\ub7f4 ''{0}''\uc5d0\ub294 30\uc790 \uc774\uc0c1\uc774 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+42824=LIKE\uc758 \ud53c\uc5f0\uc0b0\uc790\uac00 \ubb38\uc790\uc5f4\uc774 \uc544\ub2c8\uac70\ub098 \uccab\ubc88\uc9f8 \ud53c\uc5f0\uc0b0\uc790\uac00 \uc5f4\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42831=''{0}''\uc740(\ub294) \ub110 \uac12\uc744 \ud3ec\ud568\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 1\ucc28 \ud0a4 \ub610\ub294 \uace0\uc720 \ud0a4\uc758 \uc5f4\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42834=FOREIGN KEY ''{0}''\uc740(\ub294) \ub110\uac12\uc744 \ud3ec\ud568\ud560 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc5d0 SET NULL\uc744 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. 
+42884=\ud638\ud658 \uac00\ub2a5 \uc778\uc218\uac00 \uc788\ub294 ''{1}'' \uc720\ud615\uc758 ''{0}''(\uc73c)\ub85c \uc774\ub984 \uc9c0\uc815\ub41c \uad8c\ud55c \ubd80\uc5ec\ub418\uc9c0 \uc54a\uc740 \ub8e8\ud2f4\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4.
+42886=''{0}'' \ub9e4\uac1c\ubcc0\uc218 ''{1}''\uc5d0\ub294 \ub9e4\uac1c\ubcc0\uc218 \ud45c\uc2dc\ubb38\uc790 ''?''\uac00 \ud544\uc218\uc785\ub2c8\ub2e4.
+42894=DEFAULT \uac12 \ub610\ub294 IDENTITY \uc18d\uc131 \uac12\uc774 ''{0}'' \uc5f4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+428C1=\ud55c \uac1c\uc758 \uc2dd\ubcc4 \uc5f4\ub9cc\uc774 \ud14c\uc774\ube14\uc5d0\uc11c \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+42903=\uc9d1\uacc4 \ud568\uc218\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc0ac\uc6a9.
+42908=CREATE VIEW\ubb38\uc740 \uc5f4 \ubaa9\ub85d\uc744 \ud3ec\ud568\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42915=''{1}''(\uc73c)\ub85c \uc778\ud574 ''{0}'' \uc678\ubd80 \ud0a4\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 
+42972=JOIN \uc5f0\uc0b0\uc790\uc640 \uc5f0\uad00\ub41c ON\uc808\uc740 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X01=\uad6c\ubb38 \uc624\ub958: {0}.
+42X02={0}.
+42X03=\uc5f4 \uc774\ub984 ''{0}''\uc740(\ub294) FROM \ubaa9\ub85d\uc5d0\uc11c \ub458 \uc774\uc0c1\uc758 \ud14c\uc774\ube14\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.
+42X04=''{0}''\uc5f4\uc774 FROM \ubaa9\ub85d\uc758 \ud14c\uc774\ube14\uc5d0 \uc5c6\uac70\ub098 \uacb0\ud569 \uc2a4\ud399 \ub0b4\uc5d0 \ub098\ud0c0\ub098\uba70 \uacb0\ud569 \uc2a4\ud399\uc758 \ubc94\uc704\uc5d0\uc11c \ubc97\uc5b4\ub098\uac70\ub098 HAVING\uc808\uc5d0 \ub098\ud0c0\ub098\uace0 GROUP BY \ubaa9\ub85d\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. CREATE \ub610\ub294 ALTER TABLE\ubb38\uc77c \uacbd\uc6b0 ''{0}''\uc740(\ub294) \ub300\uc0c1 \ud14c\uc774\ube14\uc758 \uc5f4\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42X05=''{0}'' \ud14c\uc774\ube14\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X06=''{0}'' \ud14c\uc774\ube14\uc5d0 \ub300\ud574 \ub108\ubb34 \ub9ce\uc740 \uacb0\uacfc \uc5f4\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42X07=\ub110\uc740 INSERT\ubb38 \ub0b4\uc758 VALUES\uc808\uc5d0\uc11c\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+42X08=\ud074\ub798\uc2a4\ub294 ''{1}''\uc744(\ub97c) \uad6c\ud604\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ud074\ub798\uc2a4 ''{0}''\uc5d0 \ub300\ud55c \uad6c\uc131\uc790\ub97c \uc678\ubd80 \uac00\uc0c1 \ud14c\uc774\ube14\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X09=\ud14c\uc774\ube14 \ub610\ub294 \ubcc4\uba85 ''{0}''\uc774(\uac00) FROM \ubaa9\ub85d\uc5d0\uc11c \ub450 \ubc88 \uc774\uc0c1 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
+42X10=''{0}''\uc740(\ub294) \ub098\ud0c0\ub098\ub294 \ubc94\uc704\uc5d0\uc11c \ub178\ucd9c\ub41c \ud14c\uc774\ube14 \uc774\ub984\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42622=\uc774\ub984 ''{0}''\uc774(\uac00) \ub108\ubb34 \uae41\ub2c8\ub2e4. \ucd5c\ub300 \uae38\uc774\ub294 ''{1}''\uc785\ub2c8\ub2e4.
+42X12=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \ud14c\uc774\ube14 \uc791\uc131 \uba85\ub839\ubb38\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+54011=\ub108\ubb34 \ub9ce\uc740 \uc5f4({0})\uc774 {1} \ubdf0 \ub610\ub294 \ud14c\uc774\ube14\uc5d0 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud55c\uacc4\ub294 {2}\uc785\ub2c8\ub2e4.
+42Z9F=\ub108\ubb34 \ub9ce\uc740 \uc0c9\uc778({0})\uc774 {1} \ud14c\uc774\ube14\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. \ud55c\uacc4\ub294 {2}\uc785\ub2c8\ub2e4.
+42X13=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \uc0bd\uc785 \uba85\ub839\ubb38\uc758 \uc5f4 \ubaa9\ub85d\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42X14=''{0}''\uc740(\ub294) \ud14c\uc774\ube14 \ub610\ub294 VTI ''{1}''\uc758 \uc5f4\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42X15=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) FROM \ubaa9\ub85d \uc5c6\uc774 \uba85\ub839\ubb38\uc5d0 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42X16=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \uac31\uc2e0 \uba85\ub839\ubb38\uc758 SET\uc808\uc5d0 \uc5ec\ub7ec \ubc88 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42X17=\uac12 ''{0}''\uc740(\ub294) FROM\uc808\uc758 \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d\uc5d0\uc11c joinOrder \uc2a4\ud399\uc73c\ub85c \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. FIXED \ubc0f UNFIXED\ub9cc\uc774 \uc720\ud6a8\ud55c \uac12\uc785\ub2c8\ub2e4.
+42803=\uc5f4 ''{0}''\uc744(\ub97c) \ud3ec\ud568\ud558\ub294 \ud45c\ud604\uc2dd\uc774 SELECT \ubaa9\ub85d\uc5d0 \ub098\ud0c0\ub098\uba70, GROUP BY\uc808\uc758 \uc77c\ubd80\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+42818=''{0}''\uc640(\uacfc) ''{1}''\uc758 \ube44\uad50\ub294 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X19=WHERE \ub610\ub294 HAVING\uc808\uc774\ub098 CHECK CONSTRAINT \uc815\uc758\ub294 ''{0}'' \ud45c\ud604\uc2dd\uc785\ub2c8\ub2e4. \ubd80\uc6b8 \ud45c\ud604\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42X23={0} \ucee4\uc11c\ub294 \uac31\uc2e0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=''{0}'' \uae30\ub2a5\uc740 ''{1}'' \uc720\ud615\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X26=\uc5f4 ''{1}''\uc5d0 \ub300\ud55c \ud074\ub798\uc2a4 ''{0}''\uc774(\uac00) \uc5c6\uac70\ub098 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4\uac00 \uacf5\uc6a9\uc774 \uc544\ub2cc \uacbd\uc6b0\uc5d0 \uc774\ub7ec\ud55c \uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X28=\ud14c\uc774\ube14 ''{0}'' \uc0ad\uc81c\ub294 \ucee4\uc11c ''{1}''\uc758 \ub300\uc0c1\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42X29=\ud14c\uc774\ube14 ''{0}'' \uac31\uc2e0\uc740 \ucee4\uc11c ''{1}''\uc758 \ub300\uc0c1\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42X30=''{0}'' \ucee4\uc11c\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc790\ub3d9 \ud655\uc57d\uc774 OFF\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+42X31=''{0}'' \uc5f4\uc774 \ucee4\uc11c ''{1}''\uc758 FOR UPDATE \ubaa9\ub85d\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X32=\ud30c\uc0dd\ub41c \uc5f4 \ubaa9\ub85d\uc758 \uc5f4 \uc218\uac00 \ud14c\uc774\ube14 ''{0}''\uc5d0 \uc788\ub294 \uc5f4 \uc218\uc640 \uc77c\uce58\ud574\uc57c \ud569\ub2c8\ub2e4.
+42X33=\ud30c\uc0dd\ub41c \uc5f4 \ubaa9\ub85d\uc5d0 \uc911\ubcf5 \uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+42X34=\uc120\ud0dd \ubaa9\ub85d\uc5d0 ? \ub9e4\uac1c\ubcc0\uc218\uac00 \uc788\uc2b5\ub2c8\ub2e4.  \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  
+42X35=''{0}''\uc758 \ub450 \ud53c\uc5f0\uc0b0\uc790\uac00 \ubaa8\ub450 ? \ub9e4\uac1c\ubcc0\uc218\uac00 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X36=''{0}'' \uc5f0\uc0b0\uc790\ub294 ? \ub9e4\uac1c\ubcc0\uc218\ub97c \ud53c\uc5f0\uc0b0\uc790\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X37=\ub2e8\uc77c ''{0}'' \uc5f0\uc0b0\uc790\ub294 ''{1}'' \uc720\ud615\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X38=''SELECT *''\ub294 EXISTS \ubc0f NOT EXISTS \ubd80\uc18d \uc870\ud68c\uc5d0\uc11c\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+42X39=\ubd80\uc18d \uc870\ud68c\ub294 \ub2e8\uc77c \uc5f4\ub9cc\uc744 \ub9ac\ud134\ud574\uc57c \ud569\ub2c8\ub2e4.
+42X40=NOT\uc5d0 \ubd80\uc6b8\uc774 \uc544\ub2cc \ud53c\uc5f0\uc0b0\uc790\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ud53c\uc5f0\uc0b0\uc790 NOT\uc740 TRUE, FALSE \ub610\ub294 UNKNOWN\uc73c\ub85c \ud3c9\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.
+42X41=''{0}'' \ub4f1\ub85d \uc815\ubcf4\ub294 FROM \ubaa9\ub85d\uc758 \ub4f1\ub85d \uc815\ubcf4 \uc808\uc5d0\uc11c \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. (\ub4f1\ub85d \uc815\ubcf4\uac00 ''{1}''(\uc73c)\ub85c \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.)
+42821=\uc720\ud615\uc774 ''{0}''\uc778 \uc5f4\uc740 \uc720\ud615\uc774 ''{1}''\uc778 \uac12\uc744 \uac00\uc9c8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. 
+42X43=\ud074\ub798\uc2a4/\uc624\ube0c\uc81d\ud2b8 ''{0}''\uc5d0 \ub300\ud574 \ub9ac\ud134\ub41c ResultSetMetaData\uac00 \ub110\uc785\ub2c8\ub2e4. \uc774 \ud074\ub798\uc2a4\ub97c \uc678\ubd80 \uac00\uc0c1 \ud14c\uc774\ube14\ub85c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 ResultSetMetaData\ub294 \ub110\uc774 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42X44=\uc5f4 \uc2a4\ud399\uc5d0 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uae38\uc774 ''{0}''\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4.
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=\uac12 ''{1}''\uc740(\ub294) {0}\uc5d0 \ub300\ud55c \uc720\ud6a8\ud55c \uc815\ubc00\ub3c4\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+42X49=\uac12 ''{0}''\uc740(\ub294) \uc720\ud6a8\ud55c \uc815\uc218 \ub9ac\ud130\ub7f4\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42X50=\uba54\uc18c\ub4dc \ud638\ucd9c {0}.{1}({2})\uc640(\uacfc) \uc77c\uce58\ud560 \uc218 \uc788\ub294 \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc624\ube0c\uc81d\ud2b8 \ubc0f \ucd08\uae30 \uc720\ud615\uc758 \ubaa8\ub4e0 \uc870\ud569 \ubc0f \uba54\uc18c\ub4dc \ud638\ucd9c\uc774 \uac00\uc9c8 \uc218 \uc788\ub294 \ub9e4\uac1c\ubcc0\uc218\uc5d0 \ub300\ud574 \uac00\ub2a5\ud55c \uc720\ud615 \ubcc0\ud658\ub3c4 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4. \uba54\uc18c\ub4dc\ub294 \uc874\uc7ac\ud558\uc9c0\ub9cc \uacf5\uc6a9 \ubc0f/\ub610\ub294 \uc815\uc801\uc774 \uc544\ub2c8\uac70\ub098 \ub9e4\uac1c\ubcc0\uc218 \uc720\ud615\uc774 \uba54\uc18c\ub4dc \ud638\ucd9c \ubcc0\ud658 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X51=''{0}'' \ud074\ub798\uc2a4\uac00 \uc5c6\uac70\ub098 \uc561\uc138\uc2a4\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4\uac00 \uacf5\uc6a9\uc774 \uc544\ub2cc \uacbd\uc6b0\uc5d0 \uc774\ub7ec\ud55c \uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X52=Java \ucd08\uae30 \uc720\ud615\uc774 ''{1}"\uc778 \uc218\uc2e0\uc790\ub97c \uc0ac\uc6a9\ud55c \uba54\uc18c\ub4dc(''{0}'') \ud638\ucd9c\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X53=LIKE \uc220\uc5b4\uc5d0\ub294 ''CHAR'' \ub610\ub294 ''VARCHAR'' \ud53c\uc5f0\uc0b0\uc790\ub9cc\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ''{0}'' \uc720\ud615\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X54=Java \uba54\uc18c\ub4dc ''{0}''\uc5d0 \uc218\uc2e0\uc790\ub85c ?\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  
+42X55=\ud14c\uc774\ube14 \uc774\ub984 ''{1}''\uc740(\ub294) ''{0}''\uc640(\uacfc) \ub3d9\uc77c\ud574\uc57c \ud569\ub2c8\ub2e4.
+42X56=\ubdf0 \uc5f4 \ubaa9\ub85d\uc758 \uc5f4 \uc218\uac00 ''{0}''\uc5d0 \ub300\ud55c \ubdf0 \uc815\uc758\uc5d0 \uc788\ub294 \uae30\ubcf8 \uc870\ud68c \ud45c\ud604\uc2dd\uc758 \uc5f4 \uc218\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X57=\uc678\ubd80 \uac00\uc0c1 \ud14c\uc774\ube14 ''{0}''\uc5d0 \ub300\ud55c getColumnCount()\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{1}''\uc744(\ub97c) \ub9ac\ud134\ud588\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \uac12\uc740 >= 1\uc785\ub2c8\ub2e4.
+42X58=UNION\uc758 \uc67c\ucabd \ubc0f \uc624\ub978\ucabd\uc5d0 \uc788\ub294 \uc5f4 \uc218\uac00 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.
+42X59=\uac01 VALUES \uad6c\uc131\uc790\uc758 \uc5f4 \uc218\uac00 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.
+42X60=''{1}'' \ud14c\uc774\ube14\uc5d0 \ub300\ud574 insertMode \ub4f1\ub85d \uc815\ubcf4\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{0}''\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42X61=''{0}'' \ubc0f ''{1}'' \uc720\ud615\uc740 UNION \ud638\ud658\uc774 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X62=''{0}''\uc740(\ub294) ''{1}'' \uc2a4\ud0a4\ub9c8\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X63=USING\uc808\uc774 \uacb0\uacfc\ub97c \ub9ac\ud134\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ub9e4\uac1c\ubcc0\uc218\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X64=\ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d\uc758 useStatistics \ub4f1\ub85d \uc815\ubcf4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{0}''\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. TRUE \ub610\ub294 FALSE\ub9cc\uc774 \uc720\ud6a8\ud55c \uac12\uc785\ub2c8\ub2e4.
+42X65=''{0}'' \uc0c9\uc778\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X66=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \uc0c9\uc778 \uc791\uc131 \uba85\ub839\ubb38\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42X68=\ud544\ub4dc ''{0}''\uc744(\ub97c) \ud074\ub798\uc2a4 ''{1}''\uc5d0 \uc18d\ud558\ub294 \uac83\uc73c\ub85c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud544\ub4dc\uac00 \uc788\uc9c0\ub9cc \uacf5\uc6a9\uc774\uac70\ub098 \ud074\ub798\uc2a4\uac00 \uc5c6\uac70\ub098 \uacf5\uc6a9\uc774 \uc544\ub2c8\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X69=Java \ucd08\uae30 \uc720\ud615 ''{1}''\uc758 \ucc38\uc870 \ud45c\ud604\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud544\ub4dc(''{0}'')\ub97c \ucc38\uc870\ud558\ub294 \uac83\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X72=\uc5b4\ub5a0\ud55c \uc815\uc801 \ud544\ub4dc ''{0}''\ub3c4 ''{1}'' \ud074\ub798\uc2a4\uc5d0 \uc18d\ud558\ub294 \uac83\uc73c\ub85c \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ud544\ub4dc\uac00 \uc788\uc9c0\ub9cc \uacf5\uc6a9 \ubc0f/\ub610\ub294 \uc815\uc801\uc774\uac70\ub098 \ud074\ub798\uc2a4\uac00 \uc5c6\uac70\ub098 \uacf5\uc6a9\uc774 \uc544\ub2c8\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X73=\uc11c\uba85 {0}.{1}({2})\uc5d0 \ub300\ud55c \uba54\uc18c\ub4dc \ud574\uc11d\uc774 \ubaa8\ud638\ud569\ub2c8\ub2e4(\ub2e8\uc77c \ucd5c\ub300 \ud2b9\uc815 \uba54\uc18c\ub4dc\uac00 \uc5c6\uc74c).
+42X74=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 CALL \ubb38 \uad6c\ubb38.
+42X75={0}({1}) \uc11c\uba85\uc758 \uad6c\uc131\uc790\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub9e4\uac1c\ubcc0\uc218 \uc720\ud615\uc774 \uba54\uc18c\ub4dc \ud638\ucd9c \ubcc0\ud658 \uac00\ub2a5\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X76=\ucd94\uac00\ub418\ub294 1\ucc28 \ud0a4\uc5d0\uc11c \ucd5c\uc18c \ud558\ub098\uc758 \uc5f4 ''{0}''\uc774(\uac00) \ub110\uc774 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. 1\ucc28 \ud0a4\uc758 \ubaa8\ub4e0 \uc5f4\uc774 \ub110\uc774 \ub420 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X77=\uc5f4 \uc704\uce58 ''{0}''\uc774(\uac00) \uc870\ud68c \ud45c\ud604\uc2dd\uc758 \ubc94\uc704\ub97c \ubc97\uc5b4\ub0a9\ub2c8\ub2e4.
+42X78=''{0}''\uc5f4\uc740 \uc870\ud68c \ud45c\ud604\uc2dd\uc758 \uacb0\uacfc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X79=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \uc870\ud68c \ud45c\ud604\uc2dd\uc758 \uacb0\uacfc\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42877=\uaddc\uc815\ub41c \uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) ORDER BY\uc808\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42X80=VALUES\uc808\uc5d0\ub294 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc694\uc18c\uac00 \ud3ec\ud568\ub418\uc5b4\uc57c \ud558\uba70 \ubaa8\ub4e0 \uc694\uc18c\ub294 \ube44\uc5b4 \uc788\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42X82=USING\uc808\uc774 \ub458 \uc774\uc0c1\uc758 \ud589\uc744 \ub9ac\ud134\ud588\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \ud589 ResultSet\ub9cc\uc774 \ud5c8\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4.
+42X83=''{0}''\uc5f4\uc5d0 \ub300\ud55c \uc81c\ud55c\uc870\uac74\uc740 \ub110 \uc785\ub825\uc774 \uac00\ub2a5\ud55c \ub3d9\uc2dc\uc5d0 \ub110 \uc785\ub825\uc774 \ubd88\uac00\ub2a5\ud560 \uac83\uc744 \uc694\uad6c\ud569\ub2c8\ub2e4.
+42X84=''{1}''\uc5d0 \ub300\ud55c \uc81c\ud55c\uc870\uac74\uc744 \uc2e4\ud589\ud558\uae30 \uc704\ud574 ''{0}'' \uc0c9\uc778\uc774 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc81c\ud55c\uc870\uac74\uc744 \uc0ad\uc81c\ud574\uc57c\ub9cc \uc0ad\uc81c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42X85=''{0}'' \uc81c\ud55c \uc870\uac74\uc774 ''{1}'' \ud14c\uc774\ube14\uacfc \ub3d9\uc77c\ud55c \uc2a4\ud0a4\ub9c8\uc5d0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42X86=ALTER \ud14c\uc774\ube14\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. ''{1}'' \ud14c\uc774\ube14\uc5d0\ub294 \uc81c\ud55c\uc870\uac74 ''{0}''\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
+42X87=''{0}'' \ud45c\ud604\uc2dd\uc758 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uacb0\uacfc \ud45c\ud604\uc2dd(then \ub610\ub294 else)\uc740 ''?''\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42X88=\uc870\uac74\uc5d0 \ubd80\uc6b8\uc774 \uc544\ub2cc \ud53c\uc5f0\uc0b0\uc790\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc870\uac74\uc758 \ud53c\uc5f0\uc0b0\uc790\ub294 TRUE, FALSE \ub610\ub294 UNKNOWN\uc73c\ub85c \ud3c9\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.
+42X89=''{0}'' \ubc0f ''{1}'' \uc720\ud615\uc740 \uc720\ud615 \ud638\ud658\uc774 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4. (\uc5b4\ub290 \uc720\ud615\ub3c4 \ub2e4\ub978 \uc720\ud615\uc5d0 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.)
+42X90=''{0}'' \ud14c\uc774\ube14\uc5d0 \ub300\ud574 \ub458 \uc774\uc0c1\uc758 1\ucc28 \ud0a4 \uc81c\ud55c\uc870\uac74\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42X91=\uc81c\ud55c\uc870\uac74 \uc774\ub984 ''{0}''\uc774(\uac00) \ud14c\uc774\ube14 \uc791\uc131 \uba85\ub839\ubb38\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42X92=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \uc81c\ud55c\uc870\uac74\uc758 \uc5f4 \ubaa9\ub85d\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42X93=''{0}'' \ud14c\uc774\ube14\uc5d0 \ud14c\uc774\ube14\uc5d0 \uc5c6\ub294 ''{1}''\uc5f4\uc758 \uc81c\ud55c\uc870\uac74 \uc815\uc758\uac00 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+42Z93=''{0}'' \ubc0f ''{1}'' \uc81c\ud55c\uc870\uac74\uc5d0 \ub3d9\uc77c\ud55c \uc77c\ub828\uc758 \uc5f4\uc774 \uc788\uc9c0\ub9cc \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z96=JDK 1.1/JDBC 1.2 \ud658\uacbd\uc5d0\uc11c\ub294 \uc77d\uae30/\uc4f0\uae30 VTI\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}''
+42Z9B=\uc678\ubd80 \uac00\uc0c1 \ud14c\uc774\ube14 \uc778\ud130\ud398\uc774\uc2a4\uac00 blob \ub610\ub294 clob \uc5f4\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. ''{0}'' \uc5f4 ''{1}''.
+42Z9D=''{0}'' \uba85\ub839\ubb38\uc774 ''{1}'' \ud2b8\ub9ac\uac70\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z9E=\uc81c\ud55c\uc870\uac74 ''{0}''\uc774(\uac00) {1} \uc81c\ud55c\uc870\uac74\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42X94={0} ''{1}''\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
+42X96=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0 \uc54c \uc218 \uc5c6\ub294 jar \ud30c\uc77c ''{0}''\uc774(\uac00) \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+42X98=VIEW \uc815\uc758\uc5d0\uc11c \ub9e4\uac1c\ubcc0\uc218\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y00=''{0}'' \ud074\ub798\uc2a4\uac00 org.apache.derby.iapi.db.AggregateDefinition\uc744 \uad6c\ud604\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc9d1\ud569 \ud45c\ud604\uc2dd\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y01=''{0}'' \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y03=''{0}''\uc740(\ub294) \ud568\uc218 \ub610\ub294 \ud504\ub85c\uc2dc\uc800\ub85c \uc778\uc2dd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=\uc810 \ubd84\ub9ac \ubaa9\ub85d\uc774 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0 EXTERNAL NAME ''{0}''\uc744(\ub97c) \uc0ac\uc6a9\ud558\uc5ec \ud504\ub85c\uc2dc\uc800 \ub610\ub294 \ud568\uc218\ub97c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc608\uc0c1 \ud615\uc2dd\uc740 <\uc804\uccb4 Java \uacbd\ub85c>.<\uba54\uc18c\ub4dc \uc774\ub984>\uc785\ub2c8\ub2e4.
+
+42Y05=\uc774\ub984\uc774 ''{0}''\uc778 \uc678\ubd80 \ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y07=''{0}'' \uc2a4\ud0a4\ub9c8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y08=\uc678\ubd80 \ud0a4 \uc81c\ud55c\uc870\uac74\uc740 \uc2dc\uc2a4\ud15c \ud14c\uc774\ube14\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y09=\ubb34\ud6a8 \uba54\uc18c\ub4dc\ub294 CALL\ubb38 \ub0b4\uc5d0\uc11c\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+42Y10=INSERT\ubb38\uc5d0 \uc5c6\ub294 \ud14c\uc774\ube14 \uad6c\uc131\uc790\ub294 \ud574\ub2f9 \uc5f4 \uc911 \ud558\ub098\uac00 \ubaa8\ub450 ? \ub9e4\uac1c\ubcc0\uc218\ub85c \ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \uc5f4\uc5d0\uc11c \ucd5c\uc18c\ud55c \ud55c \ud589\uc740 \ub9e4\uac1c\ubcc0\uc218\uac00 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42Y11=\uacb0\ud569 \uc2a4\ud399\uc740 ''{0}'' \uc808\uc5d0 \ud544\uc694\ud569\ub2c8\ub2e4.
+42Y12=JOIN\uc758 ON\uc808\uc740 ''{0}'' \ud45c\ud604\uc2dd\uc785\ub2c8\ub2e4. \ubd80\uc6b8 \ud45c\ud604\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42Y13=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) \ubdf0 \uc791\uc131 \uba85\ub839\ubb38\uc5d0 \ub450 \ubc88 \uc774\uc0c1 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42Z97=''{0}''\uc5f4\uc758 \uc774\ub984\uc744 \ubc14\uafd4\uc11c \ud655\uc778 \uc81c\ud55c\uc870\uac74 ''{1}''\uc774(\uac00) \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42Z99=\ubb38\uc790\uc5f4 \ub610\ub294 16\uc9c4 \ub9ac\ud130\ub7f4\uc740 64K\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y16=\uacf5\uc6a9 \uc815\uc801 \uba54\uc18c\ub4dc ''{0}''\uc744(\ub97c) \ud074\ub798\uc2a4 ''{1}''\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uba54\uc18c\ub4dc\uac00 \uc788\uc9c0\ub9cc \uacf5\uc6a9\uc774 \uc544\ub2c8\uac70\ub098 \uc815\uc801\uc774 \uc544\ub2c8\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42846=\uc720\ud615 ''{0}''\uc5d0\uc11c ''{1}''(\uc73c)\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y19=''{0}''\uc774(\uac00) GROUP BY \ubaa9\ub85d\uc5d0 \uc5ec\ub7ec \ubc88 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. GROUP BY \ubaa9\ub85d\uc758 \uc5f4\uc740 \ubaa8\ud638\ud574\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
+42Y22={0} \uc9d1\ud569\uc740 {1} \uc720\ud615\uc5d0\uc11c \uacc4\uc0b0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y23={0}\uc5f4\uc5d0 \ub300\ud574 \uc798\ubabb\ub41c JDBC \uc720\ud615 \uc815\ubcf4\uac00 \ub9ac\ud134\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42Y24=''{0}'' \ubdf0\ub97c \uac31\uc2e0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\ubdf0\uac00 \ud604\uc7ac \uac31\uc2e0 \ubd88\uac00\ub2a5\ud569\ub2c8\ub2e4.)
+42Y25=''{0}''\uc740(\ub294) \uc2dc\uc2a4\ud15c \ud14c\uc774\ube14\uc785\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\ub294 \uc774 \ud14c\uc774\ube14\uc758 \ub0b4\uc6a9\uc744 \uc218\uc815\ud558\ub3c4\ub85d \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=\ud2b8\ub9ac\uac70 \uc870\uce58\uc5d0\uc11c \ub9e4\uac1c\ubcc0\uc218\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y29=\uadf8\ub8f9\ud654\ub418\uc9c0 \uc54a\uc740 \uc870\ud68c\uc758 SELECT \ubaa9\ub85d\uc5d0 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud45c\ud604\uc2dd\uc774 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. SELECT \ubaa9\ub85d\uc5d0 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc9d1\ud569\uc774 \ub4e4\uc5b4 \uc788\uc73c\uba74 \ubaa8\ub4e0 \ud56d\ubaa9\uc740 \uc720\ud6a8\ud55c \uc9d1\ud569 \ud45c\ud604\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42Y30=\uadf8\ub8f9\ud654\ub41c \uc870\ud68c\uc758 SELECT \ubaa9\ub85d\uc5d0 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud45c\ud604\uc2dd\uc774 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. GROUP BY\uc758 SELECT\uc758 \uacbd\uc6b0 SELECT \ubaa9\ub85d\uc5d0\ub294 \uadf8\ub8f9\ud654 \uc5f4\uacfc \uc720\ud6a8\ud55c \uc9d1\ud569 \ud45c\ud604\uc2dd\ub9cc\uc774 \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Y32=\uc720\ud615 {2}\uc758 \uc9d1\ud569 ''{1}''\uc5d0 \ub300\ud55c \uc9d1\ud569 \ud074\ub798\uc2a4 ''{0}''\uc774(\uac00) com.ibm.db2j.aggregates.Aggregator\ub97c \uad6c\ud604\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  
+42Y33=\uc9d1\ud569 {0}\uc5d0 \ud558\ub098 \uc774\uc0c1\uc758 \uc9d1\ud569\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.
+42Y34=\uc5f4 \uc774\ub984 ''{0}''\uc774(\uac00) ''{1}'' \ud14c\uc774\ube14\uc5d0 \uc788\ub294 \ub458 \uc774\uc0c1\uc758 \uacb0\uacfc \uc5f4\uacfc \uc77c\uce58\ud569\ub2c8\ub2e4.
+42Y35=\uc5f4 \ucc38\uc870 ''{0}''\uc774(\uac00) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. SELECT \ubaa9\ub85d\uc5d0 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc9d1\ud569\uc774 \ub4e4\uc5b4 \uc788\uc73c\uba74 \ubaa8\ub4e0 \ud56d\ubaa9\uc740 \uc720\ud6a8\ud55c \uc9d1\ud569 \ud45c\ud604\uc2dd\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42Y36=\uc5f4 \ucc38\uc870 ''{0}''\uc774(\uac00) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. GROUP BY\uc758 SELECT\uc758 \uacbd\uc6b0 SELECT \ubaa9\ub85d\uc5d0\ub294 \uadf8\ub8f9\ud654 \uc5f4\uacfc \uc720\ud6a8\ud55c \uc9d1\ud569 \ud45c\ud604\uc2dd\ub9cc\uc774 \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Y37=''{0}''\uc740(\ub294) Java\uc5d0 \uae30\ucd08\ud558\uba70 \uc774 \uc5f0\uc0b0\uc790\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y38=insertMode = replace\ub294 \ub300\uc0c1 \ud14c\uc774\ube14 ''{0}''\uc774(\uac00) SELECT\uc5d0\uc11c \ucc38\uc870\ub418\ub294 \uc0bd\uc785\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}''\uc740(\ub294) \ube44\uacb0\uc815\uc801 \uacb0\uacfc\ub97c \ub9ac\ud134\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 CHECK CONSTRAINT \uc815\uc758\uc5d0 \ub098\ud0c0\ub0a0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y40=''{0}''\uc774(\uac00) ''{1}'' \ud2b8\ub9ac\uac70\uc5d0 \ub300\ud55c UPDATE OF \uc5f4 \ubaa9\ub85d\uc5d0 \uc5ec\ub7ec \ubc88 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.
+42Y41=''{0}''\uc740(\ub294) \ud2b8\ub9ac\uac70\uc758 \uc77c\ubd80\uc774\uae30 \ub54c\ubb38\uc5d0 EXECUTE STATEMENT\ub97c \ud1b5\ud574 \uc9c1\uc811 \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y42=''{1}'' \ubc30\uc728\uc740 {0}\uc5d0 \ub300\ud574 \uc720\ud6a8\ud55c \ubc30\uc728\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42Y43=''{0}'' \ubc30\uc728\uc740 \uc815\ubc00\ub3c4\uac00 ''{1}''\uc778 \uc720\ud6a8\ud55c \ubc30\uc728\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+42Y44=FROM \ubaa9\ub85d\uc758 \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d\uc5d0 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud0a4 ''{0}''\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \uc9c0\uc6d0\ub418\ub294 \ub300\uc18c\ubb38\uc790 \uad6c\ubd84 \ud0a4\ub294 ''{1}''\uc785\ub2c8\ub2e4.
+42Y45=VTI ''{0}''\uc740(\ub294) \ud2b9\uc218 \ud2b8\ub9ac\uac70 VTI\uc774\ubbc0\ub85c \ubc14\uc778\ub4dc\ud560 \uc218 \uc5c6\uc73c\uba70 \uc774 \uba85\ub839\ubb38\uc740 \ud2b8\ub9ac\uac70 \uc870\uce58 \ub610\ub294 WHEN\uc808\uc758 \uc77c\ubd80\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+42Y46=FROM \ubaa9\ub85d\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d. ''{1}'' \ud14c\uc774\ube14\uc5d0 ''{0}'' \uc0c9\uc778\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y48=FROM \ubaa9\ub85d\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d. ''{1}'' \ud14c\uc774\ube14\uc5d0 \uc774\ub984 \uc9c0\uc815\ub41c \uc81c\ud55c\uc870\uac74 ''{0}''\uc774(\uac00) \uc5c6\uac70\ub098 \uc81c\ud55c\uc870\uac74\uc5d0 \uc5ed \uc0c9\uc778\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y49=\ub4f1\ub85d \uc815\ubcf4 \ud0a4 ''{0}''\uc5d0 \ub300\ud574 \uc5ec\ub7ec \uac12\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.  
+42Y50=''{0}'' \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d\uc5d0 \uc0c9\uc778 \ub610\ub294 \uc81c\ud55c\uc870\uac74 \uc911 \ud558\ub098\uc758 \uac12\uc774 \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Y55=''{0}''\uc740(\ub294) \uc874\uc7ac\ud558\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 ''{1}''\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y56=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 joinStrategy ''{0}''\uc774(\uac00) ''{1}'' \ud14c\uc774\ube14\uc758 \ub4f1\ub85d \uc815\ubcf4 \ubaa9\ub85d\uc5d0 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. joinStrategy\uc5d0 \ub300\ud574 \ud604\uc7ac \uc9c0\uc6d0\ub418\ub294 \uac12\uc740 ''hash'', ''nestedloop''\uc785\ub2c8\ub2e4.
+42Y58=\ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8 \ub300\uccb4 ''{1}''\uc5d0 \ub300\ud55c ''{0}'' \uac12\uc744 \ubcc0\ud658\ud560 \ub54c NumberFormatException\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+42Y59=hashInitialCapacity \ub300\uccb4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{0}''\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uac12\uc740 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.
+42Y60=hashLoadFactor \ub300\uccb4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{0}''\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uac12\uc740 0.0\ubcf4\ub2e4 \ud06c\uace0 1.0\ubcf4\ub2e4 \uc791\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.
+42Y61=hashMaxCapacity \ub300\uccb4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{0}''\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uac12\uc740 0\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.
+42Y62=''{0}''\uc740(\ub294) \ubdf0\uc774\uae30 \ub54c\ubb38\uc5d0 ''{1}''\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y63=\ud574\uc2dc \uacb0\ud569\uc744 \uc218\ud589\ud558\ub824\uba74 \uc120\ud0dd\ub41c \uc0c9\uc778 \ub610\ub294 \ud799\uc758 \uc5f4\uc5d0\uc11c \ucd5c\uc801\ud654 \uac00\ub2a5\ud55c equijoin \uc220\uc5b4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \ucd5c\uc801\ud654 \uac00\ub2a5\ud55c equijoin \uc220\uc5b4\uac00 \ud14c\uc774\ube14 \ub610\ub294 \uc0c9\uc778 ''{0}''\uc758 \uc5f4\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. ''index'' \ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8 \ub300\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec ''{1}'' \ud14c\uc774\ube14\uc758 \uc0c9\uc778 \ub610\ub294 \ud799 \ub4f1\uc744 \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624.
+42Y64=''{0}''\uc758 bulkFetch \uac12\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. bulkFetch\uc758 \ucd5c\uc18c\uac12\uc740 1\uc785\ub2c8\ub2e4.
+42Y65=bulkFetch\ub294 ''{0}'' \uacb0\ud569\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y66=bulkFetch\ub294 \uac31\uc2e0 \uac00\ub2a5\ud55c \ucee4\uc11c\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y67=''{0}'' \uc2a4\ud0a4\ub9c8\ub97c \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y69=\uc774 \uba85\ub839\ubb38\uc5d0 \ub300\ud574 \uc720\ud6a8\ud55c \uc2e4\ud589 \uacc4\ud68d\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \uc6d0\uc778 \uc911 \ud558\ub098\ub294 \ud574\uc2dc \uacb0\ud569\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc744 \ub54c \ud574\uc2dc \uacb0\ud569 \uacc4\ud68d\uc744 \uc9c0\uc815\ud588\uae30 \ub54c\ubb38\uc774\uace0(\ucd5c\uc801\ud654 \uac00\ub2a5\ud55c equijoin \uc5c6\uc74c) \ub610\ub2e4\ub978 \uc6d0\uc778\uc740 \uac01\uac01 \ub2e4\ub978 \uac83\uc744 \ucc38\uc870\ud558\ub294 \ub450 \uac1c\uc758 ExternalVirtualTable\uc744 \uacb0\ud569\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uc5ec \uba85\ub839\ubb38\uc744 \ud3c9\uac00\ud560 \uc218 \uc5c6\uac8c \ub418\uc5c8\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.
+42Y70=\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uacb0\ud569 \uba85\ub839\uc740 \uc801\ud569\ud55c \uacb0\ud569 \uba85\ub839\uc774 \uc544\ub2d9\ub2c8\ub2e4. \uc678\ubd80 \uac00\uc0c1 \ud14c\uc774\ube14\uc5d0 \ub9e4\uac1c\ubcc0\uc218\ub85c \uc804\ub2ec\ub418\ub294 \ub0b4\ubd80 \ud14c\uc774\ube14\uc758 \uacb0\ud569 \uc5f4\ub85c \uc778\ud574 \uc774\ub7ec\ud55c \uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Y71=\uc2dc\uc2a4\ud15c \ud568\uc218 \ub610\ub294 \ud504\ub85c\uc2dc\uc800 ''{0}''\uc744(\ub97c) \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Y82=\uc2dc\uc2a4\ud15c \uc0dd\uc131 \uc800\uc7a5 \uc900\ube44 \uba85\ub839\ubb38 ''{0}''\uc744(\ub97c) DROP STATEMENT\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud2b8\ub9ac\uac70\uc758 \uc77c\ubd80\uc785\ub2c8\ub2e4.
+42Y83=\uc785\ub825\ud558\uc9c0 \uc54a\uc740 \ub110\uc740 \uc9d1\ud569 {0}\uc5d0 \ub300\ud55c \uc778\uc218\ub85c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub110\uc744 \uc801\ud569\ud55c \uc720\ud615\uc73c\ub85c \uc608\uce21\ud558\uc2ed\uc2dc\uc624.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}''\uc774(\uac00) DEFAULT \uc815\uc758\uc5d0 \ub098\ud0c0\ub098\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Y85=VALUES\uc808\uc774 INSERT\ubb38 \ub0b4\uc5d0 \ub098\ud0c0\ub098\uba74 DEFAULT \ud0a4\uc6cc\ub4dc\ub294 VALUES\uc808\uc5d0\uc11c\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+42Y90=FOR UPDATE\ub294 \uc774 \uba85\ub839\ubb38 \uc720\ud615\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y91=USING\uc808\uc740 \ud2b8\ub9ac\uac70 \uc870\uce58\uc5d0 \ub300\ud55c EXECUTE STATEMENT\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y92={0} \ud2b8\ub9ac\uac70\ub294 {1} \uc804\ud658 \ubcc0\uc218/\ud14c\uc774\ube14\ub9cc\uc744 \ucc38\uc870\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Y93=\uc798\ubabb\ub41c REFERENCING\uc808. \uac01 \uc804\ud658 \ubcc0\uc218/\ud14c\uc774\ube14 \uc720\ud615\uc5d0 \ub300\ud574 \ud558\ub098\uc758 \uc774\ub984\ub9cc\uc774 \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+42Y94=AND \ub610\ub294 OR\uc5d0 \ubd80\uc6b8\uc774 \uc544\ub2cc \ud53c\uc5f0\uc0b0\uc790\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ud53c\uc5f0\uc0b0\uc790 AND\uc640 OR\ub294 TRUE, FALSE \ub610\ub294 UNKNOWN\uc73c\ub85c \ud3c9\uac00\ud574\uc57c \ud569\ub2c8\ub2e4.
+42Y95=\uc67c\ucabd \ud53c\uc5f0\uc0b0\uc790 \uc720\ud615\uc774 ''{1}''\uc774\uace0 \uc624\ub978\ucabd \ud53c\uc5f0\uc0b0\uc790 \uc720\ud615\uc774 ''{2}''\uc778 ''{0}'' \uc5f0\uc0b0\uc790\ub294 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Y96.U=\uc54c \uc218 \uc5c6\uc74c
+42Y97=''{0}''\ud589 ''{1}''\uc5f4\uc758 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\ud0c8 \ubb38\uc790.
+42Y98.U={1}\ud589 {2}\uc5f4\uc5d0\uc11c "{0}"\uc744(\ub97c) \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4.
+42Y99.U={0}\ud589 {1}\uc5f4\uc5d0 \uc5b4\ud718 \uc624\ub958. \ubc1c\uacac: {2}
+42Z00.U=Java \uba54\uc18c\ub4dc \ud638\ucd9c \ub610\ub294 \ud544\ub4dc \ucc38\uc870
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=\ud604\uc7ac \ubcf5\uc218 DISTINCT \uc9d1\ud569\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z07=\uc9d1\ud569\uc740 ON\uc808\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z08=''{0}''\uc740(\ub294) \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ud2b8\ub9ac\uac70({1})\uc774\uae30 \ub54c\ubb38\uc5d0 \ub300\ub7c9 \uc0bd\uc785 \ubc14\uafb8\uae30\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z09.U=\uc5d0 \ub300\ud55c COLUMN DEFAULT
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=\uc2a4\ud2b8\ub9bc
+
+# alter table modify column error messages.
+#####
+42Z15=''{0}''\uc5f4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc720\ud615\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc5f4\uc758 \uc720\ud615\uc740 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Z16=VARCHAR \uc720\ud615\uc758 \uc5f4\ub9cc\uc774 \uae38\uc774\uac00 \ubcc0\uacbd\ub418\uc5c8\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+42Z17=''{0}''\uc5f4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uae38\uc774\uac00 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uae38\uc774\ub294 \ud604\uc7ac \uc5f4 \uae38\uc774\ubcf4\ub2e4 \ucee4\uc57c \ud569\ub2c8\ub2e4.
+42Z18=''{0}''\uc5f4\uc740 \uc678\ubd80 \ud0a4 \uc81c\ud55c\uc870\uac74 ''{1}''\uc758 \uc77c\ubd80\uc785\ub2c8\ub2e4. \uc774 \uc5f4\uc758 \uae38\uc774\ub97c \ubcc0\uacbd\ud558\ub824\uba74 \uba3c\uc800 \uc81c\ud55c\uc870\uac74\uc744 \uc0ad\uc81c\ud558\uace0 ALTER TABLE\uc744 \uc218\ud589\ud55c \ud6c4\uc5d0 \uc81c\ud55c\uc870\uac74\uc744 \ub2e4\uc2dc \uc791\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.
+42Z19=''{0}''\uc5f4\uc740 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc678\ubd80 \ud0a4 \uc81c\ud55c\uc870\uac74 ''{1}''\uc5d0 \uc758\ud574 \ucc38\uc870\ub429\ub2c8\ub2e4. \uc774 \uc5f4\uc758 \uae38\uc774\ub97c \ubcc0\uacbd\ud558\ub824\uba74 \ucc38\uc870 \uc81c\ud55c\uc870\uac74\uc744 \uc0ad\uc81c\ud558\uace0 ALTER TABLE\uc744 \uc218\ud589\ud55c \ub2e4\uc74c \uc81c\ud55c\uc870\uac74\uc744 \ub2e4\uc2dc \uc791\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.
+42Z20=''{0}''\uc5f4\uc740 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \uc5f4\uc740 1\ucc28 \ud0a4\uc758 \uc77c\ubd80\uc774\ubbc0\ub85c \ub110 \uac00\ub2a5 \uc5f4\uc744 \ud3ec\ud568\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE ''{0}''\uc774(\uac00) \uae30\uc874 \uc5f4\uacfc \ud638\ud658 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc740 ''{1}''\uc5f4\uc758 \uc18d\uc131\uc744 \uc9c0\uc815\ud588\uc2b5\ub2c8\ub2e4.
+42Z21=''{0}'' \uc5f4\uc758 \uc2dd\ubcc4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc99d\ubd84\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc99d\ubd84\uc740 0\uc774 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42Z22=''{0}'' \uc2dd\ubcc4 \uc5f4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc720\ud615\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc2dd\ubcc4 \uc5f4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud55c \uc720\ud615\uc740 BIGINT, INT \ubc0f SMALLINT\ubfd0\uc785\ub2c8\ub2e4.
+42Z23=''{0}'' \uc2dd\ubcc4 \uc5f4\uc744 \uc218\uc815\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4. 
+42Z24=''{0}'' \ud14c\uc774\ube14\uc758 ''{1}'' \uc5f4\uc5d0 \ub300\ud55c \uc2dd\ubcc4 \uac12\uc5d0 \uc624\ubc84\ud50c\ub85c\uc6b0\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+42Z25=\ub0b4\ubd80 \uc624\ub958 \uc2dd\ubcc4 \uce74\uc6b4\ud130: \ud604\uc7ac \uac12\uc774 \ub110\uc774\uba70 \uc778\uc218\uc5c6\uc774 \uac31\uc2e0\uc774 \ud638\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42Z26=\uc2dd\ubcc4 \uae30\ubcf8\uac12\uc744 \uac00\uc9c4 ''{0}'' \uc5f4\uc740 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Z27=\ub110 \uc785\ub825 \uac00\ub2a5 \uc5f4 ''{0}''\uc740(\ub294) \uc2dd\ubcc4 \uae30\ubcf8\uac12\uc744 \uac16\ub3c4\ub85d \uc218\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+#####
+# end of identity error messages.
+
+42Z30.U=\uc774 ResultSet\uc5d0\uc11c \uc0ac\uc6a9\ud55c \uc2dc\uac04 =
+42Z31.U=\uc774 ResultSet\uc5d0\uc11c \uc0ac\uc6a9\ud55c \uc2dc\uac04 \uc774\ud558 =
+42Z32.U=\ucd1d \uc2dc\uac04 \uc7a5\uc560:  
+42Z33.U=\uad6c\uc131\uc790 \uc2dc\uac04(\ubc00\ub9ac\ucd08) =
+42Z34.U=\uc5ec\ub294 \uc2dc\uac04(\ubc00\ub9ac\ucd08) =
+42Z35.U=\ub2e4\uc74c \uc2dc\uac04(\ubc00\ub9ac\ucd08) =
+42Z36.U=\ub2eb\ub294 \uc2dc\uac04(\ubc00\ub9ac\ucd08) =
+42Z37.U=\uc5c6\uc74c
+42Z38.U=\uc774 ResultSet\ub97c \uc5f0 \uc801\uc774 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \uc704\uce58 \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Z39.U=\uc704\uce58 \uc9c0\uc815\uc790\ub97c \uac00\uc838\uc624\ub294 \uc911 \uc608\uae30\uce58 \uc54a\uc740 \uc608\uc678 {0}\uc774(\uac00) \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U=\ucc98\uc74c {1}\uc5f4\uc758 {0}.
+42Z41.U=\ub2e4\uc74c\uc758 \uc5f4\uc5d0\uc11c \ub110 \uc758\ubbf8 \uc9c0\uc2dc:  
+42Z42.U=\uc5f4 ID
+42Z43.U=\uc6b4\uc601\uc790
+42Z44.U=\uc9c0\uc2dc\ub41c \ub110
+42Z45.U=\uc54c \uc218 \uc5c6\ub294 \ub9ac\ud134\uac12
+42Z46.U=\ube44\uad50 \uacb0\uacfc \ubd80\uc815
+42Z47.U=\uc870\ud68c \uacc4\ud68d\uc744 \ubb38\uc790\uc5f4\ub85c \ud655\ubcf4\ud558\ub294 \uac83\uc740 {0}\uc5d0 \ub300\ud574 \ud604\uc7ac \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=\uc5f4[{0}][{1}] Id
+
+# matches DB2
+42939=''{0}'' \uc2a4\ud0a4\ub9c8 \uc774\ub984\uc73c\ub85c \uc624\ube0c\uc81d\ud2b8\uac00 \uc791\uc131\ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+
+
+
+42Z50=\ub0b4\ubd80 \uc624\ub958: {0}\uc5d0 \ub300\ud55c \ucf54\ub4dc\ub97c \uc0dd\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Z53=\ub0b4\ubd80 \uc624\ub958: \ub178\ub4dc \uc120\ud0dd\uc0ac\ud56d {0}\uc5d0 \ub300\ud574 \uc0dd\uc131\ud560 \ud65c\uc131\ud654 \uc720\ud615\uc744 \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+42Z54.U=\uad6c\ubb38 \ubd84\uc11d \uc774\ud6c4 \uc774 \uc608\uc678\uac00 \uba85\ub839\ubb38\uc744 \uc911\uc9c0\ud569\ub2c8\ub2e4. \ub354 \uc774\uc0c1 \ucc98\ub9ac\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z55.U=StopAfterParsing \ub514\ubc84\uadf8 \ud50c\ub798\uadf8\uc5d0 \uc758\ud55c \uad6c\ubb38 \ubd84\uc11d \uc774\ud6c4 \uc2e4\ud589\uc774 \uc911\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42Z56.U=StopAfterBinding \ub514\ubc84\uadf8 \ud50c\ub798\uadf8\uc5d0 \uc758\ud55c \ubc14\uc778\ub529 \uc774\ud6c4 \uc2e4\ud589\uc774 \uc911\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42Z57.U=StopAfterOptimizing \ub514\ubc84\uadf8 \ud50c\ub798\uadf8\uc5d0 \uc758\ud55c \ucd5c\uc801\ud654 \uc774\ud6c4 \uc2e4\ud589\uc774 \uc911\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+42Z58.U=StopAfterGenerating \ub514\ubc84\uadf8 \ud50c\ub798\uadf8\uc5d0 \uc758\ud55c \uc0dd\uc131 \uc774\ud6c4 \uc2e4\ud589\uc774 \uc911\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=\uc5f0\uc18d \uac00\ub2a5
+42Z81.U=\uc77d\uae30 \ud655\uc57d
+42Z82.U=\ub3c5\uc810
+42Z83.U=\ub3d9\uc2dc \uacf5\uc720
+42Z84.U=\uacf5\uc720
+42Z85.U=\ud14c\uc774\ube14
+42Z86.U=\ud589
+42Z87.U=\ud14c\uc774\ube14 \uacf5\uc720
+42Z88.U=\ud589 \uacf5\uc720
+
+# More generic language stuff
+42Z90=''{0}'' \ud074\ub798\uc2a4\ub294 \uac31\uc2e0 \uac00\ub2a5\ud55c ResultSet\ub97c \ub9ac\ud134\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42Z91=\ubd80\uc18d \uc870\ud68c
+42Z92=\ubc18\ubcf5 \uac00\ub2a5\ud55c \uc77d\uae30
+42Z9A=\ud655\uc57d\ub418\uc9c0 \uc54a\uc740 \uc77d\uae30
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=\uc694\uccad \ud568\uc218\uac00 SESSION \uc2a4\ud0a4\ub9c8\uc758 \ud14c\uc774\ube14\uc744 \ucc38\uc870\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+# Declare global temporary table language stuff. Matches DB2
+428EK=\uc120\uc5b8\ub41c \uae00\ub85c\ubc8c \uc784\uc2dc \ud14c\uc774\ube14 \uc774\ub984\uc758 \uaddc\uc815\uc790\uac00 SESSION\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+42995=\uc694\uccad \ud568\uc218\uac00 \uae00\ub85c\ubc8c \uc784\uc2dc \ud14c\uc774\ube14\uc5d0 \uc801\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+42962=\uae34 \uc5f4 \uc720\ud615 \uc5f4 \ub610\ub294 \ub9e4\uac1c\ubcc0\uc218 ''{0}''\uc774(\uac00) \uc120\uc5b8\ub41c \uae00\ub85c\ubc8c \uc784\uc2dc \ud14c\uc774\ube14 \ub610\ub294 \ud504\ub85c\uc2dc\uc800 \uc815\uc758\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=\ucca8\ubd80 \uc704\uce58
+43X01.U=\uc2dc\uc791 \ubd80\uc18d \uc870\ud68c \ubc88\ud638
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=\ubaa8\ub4e0 ResultSet
+43X03.U=\uc5f0 \ud69f\uc218
+43X04.U=\ubcf8 \ud589 \uc218
+43X05.U=\uc18c\uc2a4 \uacb0\uacfc \uc138\ud2b8
+43X06.U=\uc885\ub8cc \ubd80\uc18d \uc870\ud68c \ubc88\ud638
+43X07.U=\ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8 \uc608\uc0c1 \ud589 \uacc4\uc218
+43X08.U=\ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8 \uc608\uc0c1 \ube44\uc6a9
+43X09.U=\ucd08
+43X10.U=\ucd1d\uacc4
+43X11.U=\ub178\ub4dc
+43X12.U={0}\uc740(\ub294) {1}\uc5d0 \ub300\ud574 \ud604\uc7ac \uad6c\ud604\ub418\uc9c0 \uc54a\uc74c
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=ResultSet \uc0ad\uc81c \uc2dc \uc0ac\uc6a9
+43X14.U=\ud14c\uc774\ube14 \uc7a0\uae08
+43X15.U=\ud589 \uc7a0\uae08
+43X16.U=\uc9c0\uc5f0
+43X17.U=\uc0ad\uc81c\ub41c \ud589
+43X18.U=\uac31\uc2e0\ub41c \uc0c9\uc778
+43X19.U=\uc0ad\uc81c
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=\uad6c\ubcc4 \uc2a4\uce7c\ub77c \uc9d1\ud569 ResultSet
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=\ud589 \uc785\ub825
+43X22.U=\uad6c\ubcc4 \uc2a4\uce7c\ub77c \uc9d1\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U={1} {2}\uc744(\ub97c) \uc0ac\uc6a9\ud55c {0}\uc5d0 \ub300\ud55c \uad6c\ubcc4 \uc2a4\uce94 ResultSet
+43X24.U=\uc81c\ud55c\uc870\uac74
+43X25.U=\uc0c9\uc778
+43X26.U={0}\uc5d0 \ub300\ud55c \uad6c\ubcc4 \uc2a4\uce94 ResultSet
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U={1} \uc7a0\uae08\uc744 \uc0ac\uc6a9\ud558\uc5ec {0} \ubd84\ub9ac \ub808\ubca8\uc5d0\uc11c
+43X28.U=\uc2a4\uce94 \uc815\ubcf4
+43X29.U=\uad6c\ubcc4 \uc5f4\uc740 \uc5f4 \ubc88\ud638\uc785\ub2c8\ub2e4.
+43X30.U=\uad6c\ubcc4 \uc5f4\uc740 \uc5f4 \ubc88\ud638\uc785\ub2c8\ub2e4.
+43X31.U=\ud574\uc2dc \ud14c\uc774\ube14 \ud06c\uae30
+43X32.U=\ud544\ud130\ub41c \ud589
+43X33.U=\ub2e4\uc74c \uc2dc\uac04(\ubc00\ub9ac\ucd08/\ud589)
+43X34.U=\uc2dc\uc791 \uc704\uce58
+43X35.U=\uc911\uc9c0 \uc704\uce58
+43X36.U=\uc2a4\uce94 \uaddc\uc815\uc790
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=\ub2e4\uc74c \uaddc\uc815\uc790
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U={1}\uc744(\ub97c) \uc0ac\uc6a9\ud558\uc5ec {0}\uc5d0\uc11c
+43X39.U=\uad6c\ubcc4 \uc2a4\uce94
+43X40.U=\uc815\ubcf4 \uc815\ub82c
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=\uadf8\ub8f9\ud654\ub41c \uc9d1\ud569 ResultSet
+43X42.U=\uad6c\ubcc4 \uc9d1\ud569 \uc788\uc74c
+43X43.U=\uc815\ub82c \uc21c\uc11c\ub85c
+43X44.U=\uadf8\ub8f9\ud654\ub41c \uc9d1\ud569
+43X45.U=\ud574\uc2dc \uc874\uc7ac \uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=\ud574\uc2dc \uc874\uc7ac \uacb0\ud569 ResultSet
+43X47.U=\ud574\uc2dc \uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=\ud574\uc2dc \uacb0\ud569 ResultSet
+43X49.U=\ud574\uc2dc \uc67c\ucabd \uc678\ubd80 \uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=\ud574\uc2dc \uc67c\ucabd \uc678\ubd80 \uacb0\ud569 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U={1} {2}\uc744(\ub97c) \uc0ac\uc6a9\ud55c {0}\uc5d0 \ub300\ud55c \ud574\uc2dc \uc2a4\uce94 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U={0}\uc5d0 \ub300\ud55c \ud574\uc2dc \uc2a4\uce94 ResultSet
+43X53.U=\ud574\uc2dc \ud0a4\ub294 \uc5f4 \ubc88\ud638\uc785\ub2c8\ub2e4.
+43X54.U=\ud574\uc2dc \ud0a4\ub294 \uc5f4 \ubc88\ud638\uc785\ub2c8\ub2e4.
+43X55.U=\ud574\uc2dc \uc2a4\uce94
+43X56.U=\ucca8\ubd80\ub41c \ubd80\uc18d \uc870\ud68c
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=\ud574\uc2dc \ud14c\uc774\ube14 ResultSet
+43X58.U=\ud574\uc2dc \ud14c\uc774\ube14
+43X59.U=\ubaa8\ub450
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U={0}\uc758 \uae30\ubcf8 \ud589 ResultSet\uc5d0 \ub300\ud55c \uc0c9\uc778 \ud589
+43X61.U=\ud799\uc5d0\uc11c \uc561\uc138\uc2a4\ub41c \uc5f4
+#NOTE: {0} is a table name
+43X62.U={0}\uc5d0 \ub300\ud55c
+43X63.U=\uae30\ubcf8 \ud589\uc5d0 \ub300\ud55c \uc0c9\uc778 \ud589
+43X64.U=\uc0bd\uc785 \ubaa8\ub4dc: \ub300\ub7c9 \uc0bd\uc785
+43X65.U=\uc0bd\uc785 \ubaa8\ub4dc: \uc815\uc0c1(\ube44\uc5b4 \uc788\uc9c0 \uc54a\uc740 \ud14c\uc774\ube14\ub85c \uc778\ud574 \ub300\ub7c9 \uc0bd\uc785\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc74c)
+43X66.U=\uc0bd\uc785 \ubaa8\ub4dc: \uc815\uc0c1
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=ResultSet \uc0bd\uc785 \uc2dc \uc0ac\uc6a9
+43X68.U=\uc0bd\uc785\ub41c \ud589
+43X69.U=\uc0bd\uc785
+43X70.U=\uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U={1} \uc0c9\uc778\uc744 \uc0ac\uc6a9\ud55c {0}\uc5d0 \ub300\ud55c \ub9c8\uc9c0\ub9c9 \ud0a4 \uc0c9\uc778 \uc2a4\uce94 ResultSet
+43X72.U=\ucd5c\uc801\ud654 \ud504\ub85c\uadf8\ub7a8\uc5d0 \uc758\ud574 \uc120\ud0dd\ub41c {1} \uc7a0\uae08\uc744 \uc0ac\uc6a9\ud558\uc5ec {0} \ubd84\ub9ac \ub808\ubca8\uc5d0\uc11c
+43X73.U=\ud14c\uc774\ube14 \uc2a4\uce94
+43X74.U=\uc0c9\uc778 \uc2a4\uce94
+#NOTE: {0} is a table name or class name
+43X75.U={0}\uc5d0\uc11c
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=\uad6c\uccb4\ud654\ub41c ResultSet
+43X77.U=\uc784\uc2dc \uc9d1\ud569 \uc791\uc131 \uc2dc\uac04(\ubc00\ub9ac\ucd08)
+43X78.U=\uc784\uc2dc \uc9d1\ud569 \ud398\uce58 \uc2dc\uac04(\ubc00\ub9ac\ucd08)
+43X79.U=\uc67c\ucabd\uc5d0\uc11c \ubcf4\uc774\ub294 \ud589
+43X80.U=\uc624\ub978\ucabd\uc5d0\uc11c \ubcf4\uc774\ub294 \ud589
+43X81.U=\ub9ac\ud134\ub41c \ud589
+43X82.U=\uc67c\ucabd \uacb0\uacfc \uc138\ud2b8
+43X83.U=\uc624\ub978\ucabd \uacb0\uacfc \uc138\ud2b8
+43X84.U=\ud3ec\ud568\ub41c \ub8e8\ud504 \uc874\uc7ac \uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=\ud3ec\ud568\ub41c \ub8e8\ud504 \uc874\uc7ac \uacb0\ud569 ResultSet
+43X86.U=\ud3ec\ud568\ub41c \ub8e8\ud504 \uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=\ud3ec\ud568\ub41c \ub8e8\ud504 \uacb0\ud569 ResultSet
+43X88.U=\ube44\uc5b4 \uc788\ub294 \uc624\ub978\ucabd \ud589\uc774 \ub9ac\ud134\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+43X89.U=\ud3ec\ud568\ub41c \ub8e8\ud504 \uc67c\ucabd \uc678\ubd80 \uacb0\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=\ud3ec\ud568\ub41c \ub8e8\ud504 \uc67c\ucabd \uc678\ubd80 \uacb0\ud569 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=\uc815\uc0c1\ud654 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=Once ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=\ud504\ub85c\uc81d\ud2b8 \uc81c\ud55c ResultSet
+43X94.U=\uc81c\ud55c
+43X95.U=\ud504\ub85c\uc81d\ud2b8
+43X96.U=\uc81c\ud55c \uc2dc\uac04(\ubc00\ub9ac\ucd08)
+43X97.U=\ud504\ub85c\uc81d\ud2b8 \uc2dc\uac04(\ubc00\ub9ac\ucd08)
+43X98.U=\ud504\ub85c\uc81d\ud2b8 \uc81c\ud55c
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=\ud589 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=\uc2a4\uce7c\ub77c \uc9d1\ud569 ResultSet
+43Y01.U=\uc0c9\uc778 \ud0a4 \ucd5c\uc801\ud654
+43Y02.U=\uc2a4\uce7c\ub77c \uc9d1\ud569
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=\ud654\uba74\uc774\ub3d9 \ubbf8\uac10\uc9c0 ResultSet
+43Y04.U=\ud574\uc2dc \ud14c\uc774\ube14\uc5d0\uc11c \uc77d\uc740 \ud69f\uc218
+43Y05.U=\ud574\uc2dc \ud14c\uc774\ube14\uc5d0 \uc4f4 \ud69f\uc218
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=\uc815\ub82c ResultSet
+43Y07.U=\uc911\ubcf5 \uc81c\uac70
+43Y08.U=\uc815\ub82c
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U={1} {2}\uc744(\ub97c) \uc0ac\uc6a9\ud55c {0}\uc5d0 \ub300\ud55c \uc0c9\uc778 \uc2a4\uce94 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U={0}\uc5d0 \ub300\ud55c \ud14c\uc774\ube14 \uc2a4\uce94 ResultSet
+43Y11.U=\uc2e4\uc81c \uc7a0\uae08\uc774 \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud14c\uc774\ube14 \ub808\ubca8 \uc7a0\uae08.
+43Y12.U=\ud398\uce58 \ud06c\uae30
+43Y13.U=\uaddc\uc815\uc790
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=Union ResultSet
+43Y15.U=Union
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U={0} \uc7a0\uae08\uc744 \uc0ac\uc6a9\ud55c ResultSet \uac31\uc2e0
+43Y17.U=\uac31\uc2e0\ub41c \ud589
+43Y18.U=\uac31\uc2e0
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U={0}\uc5d0 \ub300\ud55c VTI ResultSet
+43Y20.U=VTI
+43Y21.U=\uad6c\uccb4\ud654\ub41c \ubd80\uc18d \uc870\ud68c
+43Y22.U=\uba85\ub839\ubb38 \uc774\ub984
+43Y23.U=\uba85\ub839\ubb38 \ud14d\uc2a4\ud2b8
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=\uad6c\ubb38 \ubd84\uc11d \uc2dc\uac04
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=\ubc14\uc778\ub4dc \uc2dc\uac04
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=\ucd5c\uc801\ud654 \uc2dc\uac04
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=\uc0dd\uc131 \uc2dc\uac04
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=\ucef4\ud30c\uc77c \uc2dc\uac04
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=\uc2e4\ud589 \uc2dc\uac04
+43Y30.U=\ucef4\ud30c\uc77c \uc2dc\uc791 \uc2dc\uac04 \uc18c\uc778
+43Y31.U=\ucef4\ud30c\uc77c \uc885\ub8cc \uc2dc\uac04 \uc18c\uc778
+43Y32.U=\uc2e4\ud589 \uc2dc\uc791 \uc2dc\uac04 \uc18c\uc778
+43Y33.U=\uc2e4\ud589 \uc885\ub8cc \uc2dc\uac04 \uc18c\uc778
+43Y44.U=\uba85\ub839\ubb38 \uc2e4\ud589 \uacc4\ud68d \ud14d\uc2a4\ud2b8
+43Y45.U=\uc2e4\ud589 \uc2dc\uac04 100%, {0}\ucd08
+43Y46.U=VTI \uc0bd\uc785 ResultSet
+43Y47.U=VTI \uc0ad\uc81c ResultSet
+43Y49.U=VTI \uc0bd\uc785
+43Y50.U=VTI \uc0ad\uc81c
+43Y51.U=\uacc4\ub2e8\uc2dd ResultSet \uc0ad\uc81c
+43Y52.U=\uacc4\ub2e8\uc2dd ResultSet \uc0ad\uc81c \uc0ac\uc6a9
+43Y53.U=\uc885\uc18d \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \ucc38\uc870 \uc870\uce58
+43Y54.U=\uc885\uc18d \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \ucc38\uc870 \uc870\uce58 \uc2dc\uc791 \ubc88\ud638
+43Y55.U=\uc885\uc18d \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \ucc38\uc870 \uc870\uce58 \ub05d \ubc88\ud638
+
+54004=SELECT\ubb38\uc740 GROUP BY, ORDER BY \ub610\ub294 \uc120\ud0dd\ub41c \ubaa9\ub85d\uc5d0 \ub108\ubb34 \ub9ce\uc740 \ud56d\ubaa9\uc774 \uc788\uc2b5\ub2c8\ub2e4.
+54008=CREATE INDEX\ubb38\uc774 \ub108\ubb34 \ub9ce\uc740 \uc5f4\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4(\ucd5c\ub300 16).
+54023=\ud504\ub85c\uc2dc\uc800\uc758 \ub9e4\uac1c\ubcc0\uc218 \uc218\uc5d0 \ub300\ud55c \ud55c\uacc4\ub97c \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4. \ud55c\uacc4\ub294 {0}\uc774\uace0 \ud504\ub85c\uc2dc\uc800\uc758 \ub9e4\uac1c\ubcc0\uc218 \uc218 {1}\uc740(\ub294) {2}\uc785\ub2c8\ub2e4.
+54038=\uc911\ucca9\ub41c \ud2b8\ub9ac\uac70\uc758 \ucd5c\ub300 \uae38\uc774\ub97c \ucd08\uacfc\ud588\uc2b5\ub2c8\ub2e4.
+
+## all other org.apache.derby.catalog.types
+44X00.U=SQL \uc720\ud615 \uc774\ub984
+44X05.U=\ub2e4\uc74c \uc624\ub958
+
+X0X02.S=''{0}'' \ud14c\uc774\ube14\uc740 ''{1}'' \ubaa8\ub4dc\uc5d0\uc11c \uc7a0\uae00 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X03.S=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud2b8\ub79c\uc7ad\uc158 \uc0c1\ud0dc - \ubcf4\uc720 \ucee4\uc11c\uc5d0\ub294 \ub3d9\uc77c\ud55c \ubd84\ub9ac \ub808\ubca8\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
+X0X05.S=''{0}'' \ud14c\uc774\ube14\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X0E.S=\uc0bd\uc785 \ud14c\uc774\ube14\uc5d0 \uc790\ub3d9 \uc0dd\uc131 \uc5f4 \uc120\ud0dd\uc0ac\ud56d \ubc30\uc5f4\uc5d0 \ub098\uc5f4\ub41c ''{0}'' \uc5f4 \uc704\uce58\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X0F.S=\uc0bd\uc785 \ud14c\uc774\ube14\uc5d0 \uc790\ub3d9 \uc0dd\uc131 \uc5f4 \uc120\ud0dd\uc0ac\ud56d \ubc30\uc5f4\uc5d0 \ub098\uc5f4\ub41c ''{0}'' \uc5f4 \uc774\ub984\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X07.S=Jar \ud30c\uc77c ''{0}''\uc740(\ub294) db2j.database.classpath ''{0}''\uc5d0 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X10.S=USING\uc808\uc774 \ub458 \uc774\uc0c1\uc758 \ud589\uc744 \ub9ac\ud134\ud588\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \ud589 ResultSet\ub9cc\uc774 \ud5c8\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4.
+X0X11.S=USING\uc808\uc774 \uacb0\uacfc\ub97c \ub9ac\ud134\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ub9e4\uac1c\ubcc0\uc218\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X13.S=Jar \ud30c\uc77c ''{0}''\uc774(\uac00) \uc2a4\ud0a4\ub9c8 ''{1}''\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X57.S=\uc720\ud615\uc774 ''{0}''\uc778 Java \uac12\uc744 SQL \uac12\uc5d0 \ub123\uc73c\ub824\uace0 \uc2dc\ub3c4\ud588\uc9c0\ub9cc \ud574\ub2f9 SQL \uc720\ud615\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. Java \uac12\uc774 \uba54\uc18c\ub4dc \ud638\ucd9c \ub610\ub294 \ud544\ub4dc \uc561\uc138\uc2a4\uc758 \uacb0\uacfc\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+X0X60.S=\uc774\ub984\uc774 ''{0}''\uc778 \ucee4\uc11c\uac00 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4.
+X0X61.S=''{1}.{2}'' \ud14c\uc774\ube14\uc758 ''{0}'' \uc0c9\uc778\uc5d0 \uc788\ub294 ''{4}''\uc5f4\uc5d0 \ub300\ud55c \uac12\uc774 \ud589 \uc704\uce58 {3}\uc5d0 \ub300\ud574 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc0c9\uc778\uc758 \uac12\uc740 ''{5}''\uc778 \ubc18\uba74 \uae30\ubcf8 \ud14c\uc774\ube14\uc758 \uac12\uc740 ''{6}''\uc785\ub2c8\ub2e4. \ud589 \uc704\uce58\ub97c \ud3ec\ud568\ud55c \uc804\uccb4 \uc0c9\uc778 \ud0a4\ub294 ''{7}''\uc785\ub2c8\ub2e4. \uc81c\uc548\ub41c \uc815\uc815 \uc870\uce58\ub294 \uc0c9\uc778\uc744 \uc7ac\uc791\uc131\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.
+X0X62.S=''{0}'' \ud14c\uc774\ube14\uacfc ''{1}'' \uc0c9\uc778\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud14c\uc774\ube14\uc5d0\uc11c \ud589 \uc704\uce58 ''{2}''\uc744(\ub97c) \uac80\uc0c9\ud558\ub824\uace0 \uc2dc\ub3c4\ud560 \ub54c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ud589 \uc704\uce58\ub97c \ud3ec\ud568\ud55c \uc804\uccb4 \uc0c9\uc778 \ud0a4\ub294 ''{3}''\uc785\ub2c8\ub2e4. \uc81c\uc548\ub41c \uc815\uc815 \uc870\uce58\ub294 \uc0c9\uc778\uc744 \uc7ac\uc791\uc131\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.
+X0X63.S=IOException ''{0}''\uc774(\uac00) \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+X0X67.S=\uc720\ud615\uc774 ''{0}''\uc778 \uc5f4\uc740 CREATE INDEX, ORDER BY, GROUP BY, UNION \ub610\ub294 DISTINCT\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \uc720\ud615\uc5d0 \ub300\ud574 \ube44\uad50\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0X81.S={0} ''{1}''\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X85.S=''{1}''\uc740(\ub294) \uc720\ud6a8\ud55c \uc0c9\uc778 \uc720\ud615\uc774 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0 ''{0}'' \uc0c9\uc778\uc774 \uc791\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+X0X86.S=0\uc740 ResultSet.absolute(int row)\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 \uac12\uc785\ub2c8\ub2e4.
+X0X87.S=ResultSet.relative(int row)\ub294 \ucee4\uc11c\uac00 \ud589\uc5d0 \uc704\uce58\ud558\uc9c0 \uc54a\uc744 \ub54c \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X95.S=''{1}'' \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc5f4\ub9b0 ResultSet \ud558\uc704\uac00 \uc788\uae30 \ub54c\ubb38\uc5d0 ''{0}'' \uc5f0\uc0b0\uc744 \uc774 \uc624\ube0c\uc81d\ud2b8\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0X99.S=''{0}'' \uc0c9\uc778\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y16.S=''{0}''\uc740(\ub294) \ubdf0\uac00 \uc544\ub2d9\ub2c8\ub2e4. \ud14c\uc774\ube14\uc778 \uacbd\uc6b0 \ub300\uc2e0 DROP TABLE\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.
+X0Y23.S=VIEW ''{2}''\uc740(\ub294) ''{1}'' \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc885\uc18d\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 ''{0}'' \uc5f0\uc0b0\uc744 \uc774 \uc624\ube0c\uc81d\ud2b8\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y24.S=STATEMENT ''{2}''\uc740(\ub294) ''{1}'' \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc885\uc18d\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 ''{0}'' \uc5f0\uc0b0\uc744 \uc774 \uc624\ube0c\uc81d\ud2b8\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y25.S={2} ''{3}''\uc740(\ub294) ''{1}'' \uc624\ube0c\uc81d\ud2b8\uc5d0 \uc885\uc18d\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 ''{0}'' \uc5f0\uc0b0\uc744 \uc774 \uc624\ube0c\uc81d\ud2b8\uc5d0\uc11c \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y26.S=''{0}'' \uc0c9\uc778\uc740 ''{1}'' \ud14c\uc774\ube14\uacfc \ub3d9\uc77c\ud55c \uc2a4\ud0a4\ub9c8\uc5d0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+X0Y28.S=''{0}'' \uc0c9\uc778\uc740 \uc2dc\uc2a4\ud15c \ud14c\uc774\ube14 ''{1}''\uc5d0\uc11c \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\ub294 \uc2dc\uc2a4\ud15c \ud14c\uc774\ube14\uc5d0\uc11c \uc0c9\uc778\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+# column c already exists in table t.
+X0Y32.S={0} ''{1}''\uc774(\uac00) {2} ''{3}''\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4.
+X0Y38.S=''{1}'' \ud14c\uc774\ube14\uc774 \uc5c6\uae30 \ub54c\ubb38\uc5d0 ''{0}'' \uc0c9\uc778\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y41.S=''{0}'' \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ucc38\uc870\ub41c \ud14c\uc774\ube14 {1}\uc5d0 1\ucc28 \ud0a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. {1}\uc5d0 1\ucc28 \ud0a4\ub97c \ucd94\uac00\ud558\uac70\ub098 \uc774 \uc678\ubd80 \ud0a4\uac00 \ucc38\uc870\ud558\ub294 \uace0\uc720 \uc81c\ud55c\uc870\uac74\uc758 \uc5f4\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \uc9c0\uc815\ud558\uc2ed\uc2dc\uc624.
+X0Y42.S=''{0}'' \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc678\ubd80 \ud0a4 \uc5f4\uc758 \uc720\ud615\uc774 \ucc38\uc870\ub41c \uc5f4\uc758 \uc720\ud615\uacfc \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y43.S=''{0}'' \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. {0}({1})\uc758 \uc5f4 \uc218\uac00 \ucc38\uc870\ub41c \ud0a4({2})\uc758 \uc5f4 \uc218\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y44.S=''{0}'' \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc678\ubd80 \ud0a4\uc5d0 \uc788\ub294 \uc5f4\uc758 \uc218 \ubc0f \uc720\ud615\uacfc \uc77c\uce58\ud558\ub294 \uace0\uc720 \ub610\ub294 1\ucc28 \ud0a4 \uc81c\ud55c\uc870\uac74\uc774 ''{1}'' \ud14c\uc774\ube14\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y45.S=\ud558\ub098 \uc774\uc0c1\uc758 \uc678\ubd80 \ud0a4\uc5d0 \uc77c\uce58\ud558\ub294 \ucc38\uc870\ub41c \ud0a4\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \uc678\ubd80 \ud0a4 \uc81c\ud55c\uc870\uac74 ''{0}''\uc744(\ub97c) \ud14c\uc774\ube14 {1}\uc5d0 \ucd94\uac00\ud558\uac70\ub098 \uc0ac\uc6a9 \uac00\ub2a5\ud558\uac8c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y46.S=''{0}'' \uc81c\ud55c\uc870\uac74\uc774 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ucc38\uc870\ub41c \ud14c\uc774\ube14 {1}\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y54.S=''{0}'' \uc2a4\ud0a4\ub9c8\uac00 \ube44\uc5b4 \uc788\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y55.S=\uae30\ubcf8 \ud14c\uc774\ube14\uc758 \ud589 \uc218\uac00 \ud14c\uc774\ube14\uc5d0 \uc788\ub294 \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \uc0c9\uc778\uc5d0 \uc788\ub294 \ud589 \uc218\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. ''{1}.{2}'' \ud14c\uc774\ube14\uc758 ''{0}'' \uc0c9\uc778\uc5d0\ub294 {3}\ud589\uc774 \uc788\uc9c0\ub9cc \uae30\ubcf8 \ud14c\uc774\ube14\uc5d0\ub294 {4}\ud589\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc81c\uc548\ub41c \uc815\uc815 \uc870\uce58\ub294 \uc0c9\uc778\uc744 \uc7ac\uc791\uc131\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.
+X0Y56.S=''{0}''\uc740(\ub294) \uc2dc\uc2a4\ud15c \ud14c\uc774\ube14 ''{1}''\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y57.S=\ud14c\uc774\ube14\uc5d0 \ucd5c\uc18c\ud55c \ud55c \ud589\uc774 \uc788\uae30 \ub54c\ubb38\uc5d0 \ub110 \uc785\ub825\uc774 \ubd88\uac00\ub2a5\ud55c \uc5f4\uc744 \ud14c\uc774\ube14 ''{0}''\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub110 \uc785\ub825\uc774 \ubd88\uac00\ub2a5\ud55c \uc5f4\uc740 \ube44\uc5b4 \uc788\ub294 \ud14c\uc774\ube14\uc5d0\ub9cc \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+X0Y58.S=''{0}''\uc5d0 1\ucc28 \ud0a4 \uc81c\ud55c\uc870\uac74\uc744 \ucd94\uac00\ud558\ub824\ub294 \uc2dc\ub3c4\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ud14c\uc774\ube14\uc5d0 \uc774 \uc720\ud615\uc758 \uc81c\ud55c\uc870\uac74\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4. \ud14c\uc774\ube14\uc5d0\ub294 \ub2e8\uc77c 1\ucc28 \ud0a4 \uc81c\ud55c\uc870\uac74\ub9cc\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+X0Y59.S=''{1}'' \ud14c\uc774\ube14\uc5d0\uc11c \uc81c\ud55c\uc870\uac74\uc744 \ucd94\uac00\ud558\uac70\ub098 \uc0ac\uc6a9 \uac00\ub2a5\ud558\uac8c \ud558\ub824\ub294 \uc2dc\ub3c4\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ud14c\uc774\ube14\uc5d0 \ub2e4\uc74c\uc758 \ud655\uc778 \uc81c\ud55c\uc870\uac74\uc744 \uc704\ubc18\ud558\ub294 {2}\ud589\uc774 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. {0}.
+X0Y63.S=''{0}'' \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \uba85\ub839\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. 1\ucc28 \ud0a4 \ub610\ub294 \uace0\uc720 \uc81c\ud55c\uc870\uac74/\uc0c9\uc778 \uc5f4\uc5d0\uc11c \ub110 \ub370\uc774\ud130\ub97c \ucc3e\uc558\uc2b5\ub2c8\ub2e4. 1\ucc28 \ub610\ub294 \uace0\uc720 \uc0c9\uc778 \ud0a4\uc758 \ubaa8\ub4e0 \uc5f4\uc740 \ub110\uc774 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+X0Y66.S=\uc0c1\uc704 \uc5f0\uacb0\uc5d0\uc11c \ubcf4\ub958 \uc870\uc791\uc774 \uc788\ub294 \uacbd\uc6b0 \ud3ec\ud568\ub41c \uc5f0\uacb0\uc5d0\uc11c \ud655\uc57d\uc744 \uc2e4\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y67.S=\uc0c1\uc704 \uc5f0\uacb0\uc5d0\uc11c \ubcf4\ub958 \uc870\uc791\uc774 \uc788\ub294 \uacbd\uc6b0 \ud3ec\ud568\ub41c \uc5f0\uacb0\uc5d0\uc11c \ub864\ubc31\uc744 \uc2e4\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y68.S={0} ''{1}''\uc740(\ub294) \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4.
+X0Y69.S={0} \ud2b8\ub9ac\uac70\ub294 {2}\uc5d0\uc11c \ud65c\uc131 \uc0c1\ud0dc\uc774\uae30 \ub54c\ubb38\uc5d0 {1}\uc740(\ub294) \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y70.S={0} \ud2b8\ub9ac\uac70\ub294 \ud65c\uc131 \uc0c1\ud0dc\uc774\uae30 \ub54c\ubb38\uc5d0 INSERT, UPDATE \ubc0f DELETE\ub294 \ud14c\uc774\ube14 {1}\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y71.S={0} \ud2b8\ub9ac\uac70\uac00 \ud65c\uc131 \uc0c1\ud0dc\uc774\uae30 \ub54c\ubb38\uc5d0 SET ISOLATION\uacfc \uac19\uc740 \ud2b8\ub79c\uc7ad\uc158 \uc870\uc791\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y72.S=''{0}''\uc740(\ub294) \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ud2b8\ub9ac\uac70({1})\uc774\uae30 \ub54c\ubb38\uc5d0 \ub300\ub7c9 \uc0bd\uc785 \ubc14\uafb8\uae30\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+X0Y77.S=\uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc744 \ub0b4\uc7ac\uc801\uc73c\ub85c \ud655\uc57d\ud588\uc744 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc9c4\ud589 \uc911\uc778 \uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc5d0\uc11c \ud2b8\ub79c\uc7ad\uc158 \ubd84\ub9ac \uc124\uc815 \uba85\ub839\ubb38\uc744 \ubc1c\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  
+X0Y78.S=\ud589 \uacc4\uc218\ub97c \ub9ac\ud134\ud558\ub294 \uba85\ub839\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec Statement.executeQuery()\ub97c \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y79.S=ResultSet\ub97c \ub9ac\ud134\ud558\ub294 \uba85\ub839\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec Statement.executeUpdate()\ub97c \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+X0Y80.S=ALTER \ud14c\uc774\ube14 ''{0}''\uc774(\uac00) \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. ''{1}''\uc5d0\uc11c \ub110 \ub370\uc774\ud130\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+X0Y83.S=\uacbd\uace0: \ud14c\uc774\ube14\uc5d0\uc11c \ud589\uc744 \uc0ad\uc81c\ud558\ub294 \ub3d9\uc548 \uae30\ubcf8 \ud14c\uc774\ube14 \ud589 {0}\uc5d0 \ub300\ud55c \uc0c9\uc778 \ud589\uc744 \uc9d1\ud569 ID\uac00 {1}\uc778 \uc0c9\uc778\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \ubb38\uc81c\uc810\uc740 \uc0ad\uc81c \uc870\uc791\uc758 \uc77c\ubd80\ub85c \uc790\ub3d9 \uc815\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XCL01.S=\uacb0\uacfc \uc138\ud2b8\uac00 \ud589\uc744 \ub9ac\ud134\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. {0} \uc870\uc791\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XCL05.S=\ud65c\uc131\ud654\uac00 \ub2eb\ud614\uc2b5\ub2c8\ub2e4. {0} \uc870\uc791\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XCL07.S=''{0}'' \ucee4\uc11c\uac00 \ub2eb\ud614\uc2b5\ub2c8\ub2e4. \uc790\ub3d9 \ud655\uc57d\uc774 OFF\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XCL08.S=''{0}'' \ucee4\uc11c\uac00 \ud589\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
+XCL09.S=\ud65c\uc131\ud654\uac00 PreparedStatement\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\ub294 ''{0}'' \uba54\uc18c\ub4dc\uc5d0 \uc804\ub2ec\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XCL10.S=PreparedStatement\uac00 \uc7ac\ucef4\ud30c\uc77c\ub418\uc5c8\uc73c\uba70 \ub9e4\uac1c\ubcc0\uc218\uac00 \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. JDBC\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \uba85\ub839\ubb38\uc744 \ub2e4\uc2dc \uc900\ube44\ud574\uc57c \ud569\ub2c8\ub2e4.
+XCL12.S=\uc720\ud615\uc774 ''{0}''\uc778 \ub370\uc774\ud130 \uac12\uc744 \uc720\ud615\uc774 ''{1}''\uc778 \ub370\uc774\ud130 \uac12\uc5d0 \ub123\uc73c\ub824\uace0 \uc2dc\ub3c4\ud588\uc2b5\ub2c8\ub2e4.
+XCL13.S=\ub9e4\uac1c\ubcc0\uc218 \uc704\uce58 ''{0}''\uc774(\uac00) \ubc94\uc704\uc5d0\uc11c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4. \uc774 \uc900\ube44 \uba85\ub839\ubb38\uc758 \ub9e4\uac1c\ubcc0\uc218 \uc218\ub294 ''{1}''\uc785\ub2c8\ub2e4.
+XCL15.S=''{0}'' \uc624\ube0c\uc81d\ud2b8\uc5d0\uc11c compareTo() \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud560 \ub54c ClassCastException\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. compareTo()\uc5d0 \ub300\ud55c \ub9e4\uac1c\ubcc0\uc218\uc758 \ud074\ub798\uc2a4\ub294 ''{1}''\uc785\ub2c8\ub2e4.
+XCL16.S=ResultSet\uac00 \uc5f4\ub9ac\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. ''{0}'' \uc870\uc791\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc790\ub3d9 \ud655\uc57d\uc774 OFF\uc778\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624.
+XCL17.S=\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uba85\ub839\ubb38\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XCL19.S=''{1}'' \ud0a4\uc5d0 \ub300\ud55c ''{0}'' \ud14c\uc774\ube14\uc5d0 \ud589\uc774 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XCL20.S=\ubc84\uc804 \ub808\ubca8\uc774 ''{0}''\uc778 \uce74\ud0c8\ub85c\uadf8\ub97c \ubc84\uc804 \ub808\ubca8 ''{1}''(\uc73c)\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XCL21.S=\ub2e4\ub978 \uba85\ub839\ubb38\uc744 \uc900\ube44\ud558\ub294 \ub3d9\uc548 \ub370\uc774\ud130 \uc815\uc758 \uba85\ub839\ubb38(CREATE, DROP \ub610\ub294 ALTER)\uc744 \uc2e4\ud589\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. SQL\ubb38 \ub0b4\uc5d0\uc11c \uc0ac\uc6a9\ub418\uace0 \uc788\ub294 Java \ud074\ub798\uc2a4\uc758 \uc815\uc801 \ucd08\uae30\uc790 \ub0b4\uc5d0\uc11c \ub370\uc774\ud130 \uc815\uc758 \uba85\ub839\ubb38\uc744 \uc2e4\ud589\ud558\ub294 \uacbd\uc6b0\uc5d0 \uc774\ub7ec\ud55c \uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+XCL22.S={0} \ub9e4\uac1c\ubcc0\uc218\uac00 IN \ub9e4\uac1c\ubcc0\uc218\uc774\ubbc0\ub85c OUT \ub9e4\uac1c\ubcc0\uc218\ub85c \ub4f1\ub85d\ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XCL23.S=SQL \uc720\ud615 \ubc88\ud638 ''{0}''\uc740(\ub294) registerOutParameter()\uc5d0 \uc758\ud574 \uc9c0\uc6d0\ub418\ub294 \uc720\ud615\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+XCL24.S={0} \ub9e4\uac1c\ubcc0\uc218\ub294 \ucd9c\ub825 \ub9e4\uac1c\ubcc0\uc218\ub85c \ub098\ud0c0\ub098\uc9c0\ub9cc registerOutParameter()\uc5d0 \uc758\ud574 \uc9c0\uc815\ub41c \ub300\ub85c \ub098\ud0c0\ub098\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ucd9c\ub825 \ub9e4\uac1c\ubcc0\uc218\uac00 \uc544\ub2cc \uacbd\uc6b0 {1} \uc720\ud615\uc73c\ub85c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.
+XCL25.S={0} \ub9e4\uac1c\ubcc0\uc218\ub97c {1} \uc720\ud615\uc73c\ub85c \ub4f1\ub85d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \uc720\ud615\uc740 {2} \uc720\ud615\uc5d0 \ub9f5\ud551\ub418\uace0 \uc11c\ub85c \ud638\ud658\ub418\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.
+XCL26.S={0} \ub9e4\uac1c\ubcc0\uc218\ub294 \ucd9c\ub825 \ub9e4\uac1c\ubcc0\uc218\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+XCL27.S=\ub9ac\ud134 \ucd9c\ub825 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XCL30.S=InputStream\uc5d0\uc11c ''{0}''\uc744(\ub97c) \uc77d\uc744 \ub54c IOException\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XCL31.S=\uba85\ub839\ubb38\uc774 \ub2eb\ud614\uc2b5\ub2c8\ub2e4.
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=\uc0ad\uc81c \uaddc\uce59 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ud14c\uc774\ube14\uc744 {0} \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \uc885\uc18d\uc73c\ub85c \uc815\uc758\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\uad00\uacc4\ub294 \uc790\uccb4 \ucc38\uc870\uc774\uba70 SET NULL \uc0ad\uc81c \uaddc\uce59\uacfc \ud568\uaed8 \uc790\uccb4 \ucc38\uc870 \uad00\uacc4\uac00 \uc774\ubbf8 \uc874\uc7ac\ud569\ub2c8\ub2e4.) 
+XCL34.S=\uc0ad\uc81c \uaddc\uce59 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ud14c\uc774\ube14\uc744 {0} \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \uc885\uc18d\uc73c\ub85c \uc815\uc758\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\uad00\uacc4\ub294 \ud14c\uc774\ube14\uc744 \uc790\uc2e0\uc5d0\uac8c\ub85c \uc0ad\uc81c-\uc5f0\uacb0\uc2dc\ud0a4\ub294 \ub450 \uac1c \uc774\uc0c1\uc758 \ud14c\uc774\ube14\ub85c \uad6c\uc131\ub41c \uc8fc\uae30\ub97c \ud615\uc131\ud569\ub2c8\ub2e4(\uc8fc\uae30\uc5d0\uc11c\uc758 \uae30\ud0c0 \ubaa8\ub4e0 \uc0ad\uc81c \uaddc\uce59\uc740 CASCADE\uc784).) 
+XCL35.S=\uc0ad\uc81c \uaddc\uce59 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ud14c\uc774\ube14\uc744 {0} \ud14c\uc774\ube14\uc5d0 \ub300\ud55c \uc885\uc18d\uc73c\ub85c \uc815\uc758\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\uad00\uacc4\ub294 \ub2e4\uc911 \uad00\uacc4\ub97c \ud1b5\ud574 \ud14c\uc774\ube14\uc744 \ud45c\uc2dc\ub41c \ud14c\uc774\ube14\uc5d0 \uc0ad\uc81c-\uc5f0\uacb0\uc2dc\ud0a4\uba70 \uae30\uc874 \uad00\uacc4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 SET NULL\uc785\ub2c8\ub2e4.) 
+
+XCL36.S=\uc678\ubd80 \ud0a4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 {0}\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. (\ucc38\uc870 \uc81c\ud55c\uc870\uac74\uc740 \uc790\uccb4 \ucc38\uc870\uc774\uba70 \uae30\uc874\uc758 \uc790\uccb4 \ucc38\uc870 \uc81c\ud55c\uc870\uac74\uc5d0\ub294 \uc9c0\uc815\ub41c \uc0ad\uc81c \uaddc\uce59(NO ACTION, RESTRICT \ub610\ub294 CASCADE)\uc774 \uc788\uc2b5\ub2c8\ub2e4.) 
+XCL37.S=\uc678\ubd80 \ud0a4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 {0}\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. (\ucc38\uc870 \uc81c\ud55c\uc870\uac74\uc740 \uc790\uccb4 \ucc38\uc870\uc774\uba70 \ud14c\uc774\ube14\uc740 \uc0ad\uc81c \uaddc\uce59\uc774 CASCADE\uc778 \uad00\uacc4\uc5d0\uc11c\ub294 \uc885\uc18d\uc785\ub2c8\ub2e4.)
+XCL38.S=\uc678\ubd80 \ud0a4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 {0}\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. (\uad00\uacc4\ub294 \ub2e4\uc911 \uad00\uacc4\ub97c \ud1b5\ud574 \ud14c\uc774\ube14\uc744 \ub3d9\uc77c\ud55c \ud14c\uc774\ube14\uc5d0 \uc0ad\uc81c-\uc5f0\uacb0\uc2dc\ud0a4\uba70 \uc774\ub7ec\ud55c \uad00\uacc4\ub294 \ub3d9\uc77c\ud55c \uc0ad\uc81c \uaddc\uce59(NO ACTION, RESTRICT \ub610\ub294 CASCADE)\uc744 \uac00\uc838\uc57c \ud569\ub2c8\ub2e4.) 
+
+XCL39.S=\uc678\ubd80 \ud0a4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 CASCADE\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\uc790\uccb4 \ucc38\uc870 \uc81c\ud55c\uc870\uac74\uc740 SET NULL, NO ACTION \ub610\ub294 RESTRICT \uc0ad\uc81c \uaddc\uce59\uacfc \ud568\uaed8 \uc874\uc7ac\ud569\ub2c8\ub2e4.) 
+XCL40.S=\uc678\ubd80 \ud0a4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 CASCADE\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\uad00\uacc4\ub294 \ud14c\uc774\ube14\uc744 \uc790\uccb4\ub85c \uc0ad\uc81c-\uc5f0\uacb0\uc2dc\ud0a4\ub294 \uc8fc\uae30\ub97c \ud615\uc131\ud569\ub2c8\ub2e4. \uc8fc\uae30 \ub0b4\uc5d0 \uc788\ub294 \uc0ad\uc81c \uaddc\uce59 \uc911 \ud558\ub098\uac00 CASCADE\uac00 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0, \uc0ad\uc81c \uaddc\uce59\uc774 CASCADE\uac00 \uc544\ub2c8\uba74 \uc774 \uad00\uacc4\ub97c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.) 
+XCL41.S=\uc678\ubd80 \ud0a4\uc758 \uc0ad\uc81c \uaddc\uce59\uc740 CASCADE\uc77c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. (\uad00\uacc4\ub294 \ub2e4\ub978 \uc0ad\uc81c \uaddc\uce59 \ub610\ub294 SET NULL \uc0ad\uc81c \uaddc\uce59\uc744 \uac00\uc9c4 \ub2e4\uc911 \uacbd\ub85c\ub97c \ud1b5\ud574 \ub2e4\ub978 \ud14c\uc774\ube14\uc744 \ub3d9\uc77c\ud55c \ud14c\uc774\ube14\uc5d0 \uc0ad\uc81c-\uc5f0\uacb0\uc2dc\ud0b5\ub2c8\ub2e4.) 
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=''{0}''\uc744(\ub97c) \uc0ac\uc6a9\ud558\ub824\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ubc84\uc804 {1}\uc5d0\uc11c {2} \uc774\uc0c1\uc73c\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ud574\uc57c \ud569\ub2c8\ub2e4.
+
+XCL48.S= TRUNCATE TABLE\uc740 \uc774 \ud14c\uc774\ube14\uc758 \uace0\uc720/1\ucc28 \ud0a4 \uc81c\ud55c\uc870\uac74\uc774 \ub2e4\ub978 \ud14c\uc774\ube14\uc758 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc678\ubd80 \ud0a4 \uc81c\ud55c\uc870\uac74\uc5d0 \uc758\ud574 \ucc38\uc870\ub418\ubbc0\ub85c ''{0}''\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 
+XCL49.S= TRUNCATE TABLE\uc740 \uc0ac\uc6a9 \uac00\ub2a5\ud55c DELETE \ud2b8\ub9ac\uac70({1})\uac00 \ud3ec\ud568\ub418\ubbc0\ub85c ''{0}''\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XCL50.S=\uc774\uc804 \ubc84\uc804\uc73c\ub85c\ubd80\ud130 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5c5\uadf8\ub808\uc774\ub4dc\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc561\uc138\uc2a4 \uc911\uc778 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ubc84\uc804 \ub808\ubca8 ''{0}''\uc774\uba70, \uc774 \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub294 \ubc84\uc804 \ub808\ubca8 ''{1}''\uc785\ub2c8\ub2e4.
+
+
+# Transaction states, matches DB2
+25000=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud2b8\ub79c\uc7ad\uc158 \uc0c1\ud0dc.
+
+# Authorization
+25501=\ud65c\uc131 \ud2b8\ub79c\uc7ad\uc158\uc5d0\uc11c \uc5f0\uacb0 \uc77d\uae30 \uc804\uc6a9 \ub4f1\ub85d \uc815\ubcf4\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+25502=\uc77d\uae30 \uc804\uc6a9 \uc5f0\uacb0, \uc0ac\uc6a9\uc790 \ub610\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c SQL \ub370\uc774\ud130 \ubcc0\uacbd\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+25503=DDL\uc740 \uc77d\uae30 \uc804\uc6a9 \uc5f0\uacb0, \uc0ac\uc6a9\uc790 \ub610\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud574 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+25505=\uc77d\uae30 \uc804\uc6a9 \uc0ac\uc6a9\uc790 \ub610\ub294 \uc77d\uae30 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc0ac\uc6a9\uc790\ub294 \uc5f0\uacb0\uc5d0\uc11c \uc77d\uae30 \uc804\uc6a9 \ubaa8\ub4dc\ub97c \uc0ac\uc6a9 \ubd88\uac00\ub2a5\ud558\uac8c \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+28501=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad8c\ud55c \ub4f1\ub85d \uc815\ubcf4 ''{0}={1}''.
+28502.C=\uc0ac\uc6a9\uc790 \uc774\ub984 ''{0}''\uc774(\uac00) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  
+28503=''{0}'' \uc0ac\uc6a9\uc790\ub294 \uc77d\uae30 \uc804\uc6a9 \ubc0f \uc804\uccb4 \uc561\uc138\uc2a4 \uad8c\ud55c \ubaa9\ub85d\uc5d0 \ubaa8\ub450 \uc788\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4.
+28504=''{0}'' \uc561\uc138\uc2a4 \ubaa9\ub85d\uc5d0 ''{1}'' \uc0ac\uc6a9\uc790\uac00 \ubc18\ubcf5\ub429\ub2c8\ub2e4.
+04501.C=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+
+
+# Dependency Manager
+XD003.S=\ub514\uc2a4\ud06c\uc5d0\uc11c \uc885\uc18d\uc131\uc744 \ubcf5\uc6d0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. DependableFinder = ''{0}''. \ucd94\uac00 \uc815\ubcf4: ''{1}''.
+XD004.S=\uc885\uc18d\uc131\uc744 \uc800\uc7a5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ucee4\uc11c \uc0c1\ud0dc - \ud604\uc7ac \ud589 \uc5c6\uc74c.
+
+07000=\ud604\uc7ac \uba85\ub839\ubb38\uc5d0 \ub300\ud55c \ucd5c\uc18c\ud55c \ud558\ub098\uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \ucd08\uae30\ud654\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004={0} \ub9e4\uac1c\ubcc0\uc218\ub294 {1} \ud504\ub85c\uc2dc\uc800 \ub9e4\uac1c\ubcc0\uc218\uc774\uace0 \uc2e4\ud589 \uc804\uc5d0 CallableStatement.registerOutParameter\ub85c \ub4f1\ub85d\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+
+07009=\uc785\ub825 \ub9e4\uac1c\ubcc0\uc218 \uc5c6\uc74c.
+
+S0022=''{0}''\uc5f4\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ009.S=CallableStatement\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uc800\uc7a5\ub41c \ud504\ub85c\uc2dc\uc800 \ud638\ucd9c \ub610\ub294 \ucd9c\ub825 \ub9e4\uac1c\ubcc0\uc218\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. {0}
+XJ010.S=autoCommit\uac00 \uc2dc\uc791\uc73c\ub85c \uc124\uc815\ub418\uc5b4 \uc788\uc744 \uacbd\uc6b0\uc5d0\ub294 savepoint\ub97c \ubc1c\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ011.S=savepoint \uc774\ub984\uc5d0 \ub300\ud574\uc11c\ub294 \ub110\uc744 \uc804\ub2ec\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ012.S=''{0}''\uc774(\uac00) \uc774\ubbf8 \ub2eb\ud614\uc2b5\ub2c8\ub2e4.
+XJ013.S=\uc9c0\uc815\ub41c savepoint\uc5d0 \ub300\ud55c ID\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ014.S=\uc774\ub984\uc9c0\uc815\ub418\uc9c0 \uc54a\uc740 savepoint\uc5d0 \ub300\ud55c \uc774\ub984\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ016.S=''{0}'' \uba54\uc18c\ub4dc\ub294 \uc900\ube44\ub41c \uba85\ub839\ubb38\uc5d0\uc11c \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XJ017.S=\ud2b8\ub9ac\uac70 \ucf54\ub4dc \ub0b4\uc5d0\uc11c\ub294 savepoint \uba85\ub839\uc774 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XJ018.S=\uc5f4 \uc774\ub984\uc740 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ020.S=\uc624\ube0c\uc81d\ud2b8 \uc720\ud615\uc744 TYPE ''{0}''(\uc73c)\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uac70\ub098 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 java.sql.Types \uac12\uc774\uac70\ub098 \uc624\ube0c\uc81d\ud2b8\uac00 \ub110\uc785\ub2c8\ub2e4.
+XJ022.S=\uc2a4\ud2b8\ub9bc\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. ''{0}''.
+XJ023.S=\uc785\ub825 \uc2a4\ud2b8\ub9bc\uc5d0 \uc694\uccad\ub41c \uae38\uc774\ubcf4\ub2e4 \uc791\uc740 \ub370\uc774\ud130\uac00 \uc788\uc2b5\ub2c8\ub2e4.
+XJ025.S=\uc785\ub825 \uc2a4\ud2b8\ub9bc\uc740 \uc74c\uc218 \uae38\uc774\ub97c \uac00\uc9c8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ030.S=\ud3ec\ud568\ub41c \uc5f0\uacb0\uc5d0 \uc788\uc744 \ub54c AUTOCOMMIT ON\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ042.S=''{0}''\uc740(\ub294) ''{1}'' \ub4f1\ub85d \uc815\ubcf4\uc5d0 \ub300\ud574 \uc720\ud6a8\ud55c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4.
+XJ044.S=''{0}''\uc740(\ub294) \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ubc30\uc728\uc785\ub2c8\ub2e4.
+XJ045.S=\uc720\ud6a8\ud558\uc9c0 \uc54a\uac70\ub098 \ud604\uc7ac \uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \ubd84\ub9ac \ub808\ubca8 ''{0}''\uc774(\uac00) Connection.setTransactionIsolationLevel()\uc5d0 \uc804\ub2ec\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \uc9c0\uc6d0\ub418\ub294 \uac12\uc740 java.sql.Connection.TRANSACTION_SERIALIZABLE, java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED \ubc0f java.sql.Connection.TRANSACTION_READ_UNCOMMITTED\uc785\ub2c8\ub2e4.
+XJ04B.S=\uc77c\uad04\ucc98\ub9ac\uc5d0\ub294 \uacb0\uacfc \uc138\ud2b8\ub97c \ub9ac\ud134\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uba85\ub839\uc774 \ud3ec\ud568\ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ04C.S=CallableStatement \uc77c\uad04\ucc98\ub9ac\uc5d0\ub294 \ucd9c\ub825 \ub9e4\uac1c\ubcc0\uc218\uac00 \ud3ec\ud568\ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ056.S=XA \uc5f0\uacb0\uc5d0 \uc788\uc744 \ub54c AUTOCOMMIT ON\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ057.S=Connection\uc744 \uc0ac\uc6a9\ud558\uc5ec \uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc744 \ud655\uc57d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud655\uc57d \ucc98\ub9ac\ub294 XAResource \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud1b5\uacfc\ud574\uc57c \ud569\ub2c8\ub2e4.
+XJ058.S=Connection\uc744 \uc0ac\uc6a9\ud558\uc5ec \uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc744 \ub864\ubc31\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud655\uc57d \ucc98\ub9ac\ub294 XAResource \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud1b5\uacfc\ud574\uc57c \ud569\ub2c8\ub2e4.
+XJ059.S=\uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc774 \uacc4\uc18d \ud65c\uc131 \uc0c1\ud0dc\uc77c \ub54c \uc5f0\uacb0\uc744 \uc885\ub8cc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ05C.S=\uae00\ub85c\ubc8c \ud2b8\ub79c\uc7ad\uc158\uc5d0 \ub300\ud55c ResultSet.HOLD_CURSORS_OVER_COMMIT \uc720\uc9c0\uc131\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XJ061.S=''{0}'' \uba54\uc18c\ub4dc\ub294 \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\uc5d0\uc11c\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+XJ062.S=ResultSet.setFetchSize(int rows)\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 \uac12 ''{0}''.
+XJ063.S=Statement.setMaxRows(int maxRows)\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 \uac12 ''{0}''.  \ub9e4\uac1c\ubcc0\uc218 \uac12\uc740 0\ubcf4\ub2e4 \ud06c\uac70\ub098 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.
+XJ064.S=setFetchDirection(int direction)\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 \uac12 ''{0}''.
+XJ065.S=Statement.setFetchSize(int rows)\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 \uac12 ''{0}''.
+XJ066.S=Statement.setMaxFieldSize(int max)\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 \uac12 ''{0}''.
+XJ067.S=SQL \ud14d\uc2a4\ud2b8 \ud3ec\uc778\ud130\uac00 \ub110\uc785\ub2c8\ub2e4.
+XJ068.S=executeBatch \ubc0f clearBatch\ub9cc\uc774 \uc77c\uad04\ucc98\ub9ac \uc911\uac04\uc5d0 \ud5c8\uc6a9\ub429\ub2c8\ub2e4.
+XJ069.S=Execute Statement Using\uc758 \uacbd\uc6b0\uc5d0\ub294 SetXXX \uba54\uc18c\ub4dc\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XJ080.S=Execute Statement Using\uc5d0\uc11c {1}(\uc774)\uac00 \uc544\ub2cc {0} \ub9e4\uac1c\ubcc0\uc218\ub97c \uc804\ub2ec\ud588\uc2b5\ub2c8\ub2e4.
+XJ070.S=\uc74c\uc218 \ub610\ub294 0\uc790\ub9ac \uc778\uc218 ''{0}''\uc774(\uac00) Blob \ub610\ub294 Clob \uba54\uc18c\ub4dc\uc5d0 \uc804\ub2ec\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XJ071.S=0 \ub610\ub294 \uc74c\uc218 \uae38\uc774 \uc778\uc218 ''{0}''\uc774(\uac00) Blob \ub610\ub294 Clob \uba54\uc18c\ub4dc\uc5d0 \uc804\ub2ec\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XJ072.S=\ub110 \ud328\ud134 \ub610\ub294 searchStr\uc774 Blob \ub610\ub294 Clob \uc790\ub9ac \uba54\uc18c\ub4dc\uc5d0 \uc804\ub2ec\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XJ073.S=\uc774 Blob \ub610\ub294 Clob\uc758 \ub370\uc774\ud130\ub97c \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uac00\ub2a5\ud55c \uc774\uc720\ub294 \ud2b8\ub79c\uc7ad\uc158\uc774 \ud655\uc57d\ub418\uc5c8\uac70\ub098 \uc5f0\uacb0\uc774 \uc885\ub8cc\ub418\uc5c8\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.
+XJ076.S=\uc790\ub9ac \uc778\uc218 ''{0}''\uc774(\uac00) Blob/Clob\uc758 \ud06c\uae30\ub97c \ucd08\uacfc\ud569\ub2c8\ub2e4.
+XJ077.S=getBytes/getSubString\uc744 \uc0ac\uc6a9\ud558\uc5ec Blob/Clob \ud328\ud134\uc758 \uccab \ubc88\uc9f8 \ubc14\uc774\ud2b8/\ubb38\uc790\ub97c \uc77d\uc73c\ub824\uace0 \uc2dc\ub3c4\ud560 \ub54c \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XJ082.U=BLOB/CLOB \uac12\uc740 \uba54\uc18c\ub4dc \ub9e4\uac1c\ubcc0\uc218 \ub610\ub294 \uc218\uc2e0\uc790\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+0A000.S=\uad6c\ud604\ub418\uc9c0 \uc54a\uc740 \uae30\ub2a5: {0}.
+
+XJ004.C=''{0}'' \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+08004=\uc5f0\uacb0\uc774 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4. {0}
+A020=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc778\uc99d.
+08003=\ud604\uc7ac \uc5f0\uacb0 \uc5c6\uc74c.
+XJ028.C=''{0}'' URL\uc774 \uc801\uc808\ud558\uac8c \ud615\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+XJ040.C=''{0}'' \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc2dc\uc791\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \uc138\ubd80\uc0ac\ud56d\uc740 \ub2e4\uc74c \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+XJ041.C=''{0}'' \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc791\uc131\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \uc138\ubd80\uc0ac\ud56d\uc740 \ub2e4\uc74c \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.
+XJ049.C=\ucda9\ub3cc\ud558\ub294 \uc791\uc131 \uc18d\uc131\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XJ081.C=\uc0c1\ucda9\ud558\ub294 create/restore/recovery \uc18d\uc131\uc774 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XJ05B.C=JDBC \uc18d\uc131 ''{0}''\uc5d0 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12 ''{1}''\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4. \uc720\ud6a8\ud55c \uac12\uc740 ''{2}''\uc785\ub2c8\ub2e4.
+
+XXXXX.C.6=\uc815\uc0c1 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc138\uc158\uc774 \ub2eb\ud799\ub2c8\ub2e4.
+
+08006.D=''{0}'' \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc885\ub8cc.
+
+XJ015.M=Derby \uc2dc\uc2a4\ud15c \uc885\ub8cc.
+
+01J01=''{0}'' \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc791\uc131\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ub300\uc2e0 \uae30\uc874 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c \uc5f0\uacb0\uc774 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+01J02=\ud654\uba74\uc774\ub3d9 \uac10\uc9c0 \ucee4\uc11c\uac00 \ud604\uc7ac \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+01J03=\uac31\uc2e0 \uac00\ub2a5\ud55c ResultSet\uac00 \ud604\uc7ac \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+01J04=''{1}''\uc5f4\uc5d0 \ub300\ud55c ''{0}'' \ud074\ub798\uc2a4\ub294 java.io.Serializable \ub610\ub294 java.sql.SQLData\ub97c \uad6c\ud604\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc778\uc2a4\ud134\uc2a4\ub294 \uc774\ub4e4 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\uc73c\ub824\uba74 \uc774 \uc911 \ud558\ub098\ub97c \uad6c\ud604\ud574\uc57c \ud569\ub2c8\ub2e4.
+01J05=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5c5\uadf8\ub808\uc774\ub4dc\uc5d0 \uc131\uacf5\ud588\uc2b5\ub2c8\ub2e4. \uc5c5\uadf8\ub808\uc774\ub4dc\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \uc774\uc81c \uc0ac\uc6a9\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc800\uc7a5\ub41c \uc900\ube44 \uba85\ub839\ubb38\uc758 \uc7ac\uac80\uc99d\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uc2e4\ud328\uc5d0 \ub300\ud55c \uc138\ubd80\uc0ac\ud56d\uc740 \ub2e4\uc74c\uc758 \uc608\uc678\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. 
+XJ001.U=Java \uc608\uc678: ''{1}: {0}''.
+XJ050.U=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ubc84\uc804 {0}(\uc73c)\ub85c\ubd80\ud130 \uc5c5\uadf8\ub808\uc774\ub4dc\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. JDBC \uc5f0\uacb0 URL\uc5d0\uc11c ''upgrade=true'' \uc18d\uc131\uc744 \uc124\uc815\ud558\uc5ec \ubc84\uc804 {1}(\uc73c)\ub85c \uc5c5\uadf8\ub808\uc774\ub4dc\ub97c \uac00\ub2a5\ud558\uac8c \ud558\uc2ed\uc2dc\uc624.
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=\uc54c \uc218 \uc5c6\ub294 \uad8c\ud55c ''{0}''.
+XCZ01.S=\uc54c \uc218 \uc5c6\ub294 \uc0ac\uc6a9\uc790 ''{0}''.
+XCZ02.S=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ub9e4\uac1c\ubcc0\uc218 ''{0}''=''{1}''.
+
+# SQL J Jar support
+46001=URL ''{0}''\uc744(\ub97c) \uc0ac\uc6a9\ud558\uc5ec Jar \ud30c\uc77c\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \ub3d9\uc548 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  \uc624\ub958 \uba54\uc2dc\uc9c0 \uc2dc\uc791 -------------\n
+L002=------------  \uc624\ub958 \uba54\uc2dc\uc9c0 \uc885\ub8cc -------------\n
+L003=\n------------  \uc2dc\uc2a4\ud15c \uc885\ub8cc \uc624\ub958 \uc2a4\ud0dd \uc2dc\uc791 -------------\n
+L004=\n------------  \uc2dc\uc2a4\ud15c \uc885\ub8cc \uc624\ub958 \uc2a4\ud0dd \ub05d   -------------\n
+L005=\n------------  \uc624\ub958 \uc2a4\ud0dd \uc2dc\uc791 -------------\n
+L006=\n------------  \uc624\ub958 \uc2a4\ud0dd \uc885\ub8cc -------------\n
+L007=\uacbd\uace0: \ub85c\uadf8 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc0c8 \ub85c\uadf8\ub97c \uc791\uc131 \uc911\uc785\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ubd88\uc77c\uce58\uac00 \uc788\uc744 \uac00\ub2a5\uc131\uc774 \uc788\uc2b5\ub2c8\ub2e4.
+L008=\ud638\ud658\ub418\uc9c0 \uc54a\ub294 \uc624\ub798\ub41c Logfile {0} \uc0ad\uc81c \uc911
+L009=\uc624\ub798\ub41c Logfile {0} \uc0ad\uc81c \uc911
+L010={1}\uc5d0\uc11c {2}\uc758 eof\ub85c \ub85c\uadf8 \ud30c\uc77c\uc744 \uc9c0\uc6b0\ub294 \uc911 {0} \ud30c\uc77c\uc5d0\uc11c \ubd88\uc644\uc804\ud55c \ub85c\uadf8 \ub808\ucf54\ub4dc\uac00 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+L011=\uccb4\ud06c\ud3ec\uc778\ud2b8 \ub514\uba3c\uc774 \ud45c\uc900 \uc608\uc678\ub97c \ud3ec\ucc29\ud588\uc2b5\ub2c8\ub2e4.
+L012=\ub85c\uadf8 \ub808\ucf54\ub4dc\uac00 \uccab \ubc88\uc9f8\uac00 \uc544\ub2c8\uc9c0\ub9cc \ud2b8\ub79c\uc7ad\uc158\uc774 \ud2b8\ub79c\uc7ad\uc158 \ud14c\uc774\ube14\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. {0}
+L013=\ub85c\uadf8 \ub808\ucf54\ub4dc\uac00 \uccab \ubc88\uc9f8\uc774\uc9c0\ub9cc \ud2b8\ub79c\uc7ad\uc158\uc774 \ud2b8\ub79c\uc7ad\uc158 \ud14c\uc774\ube14\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4. {0}
+L014=\uc798\ubabb\ub41c \uc2dc\uc791 \uc778\uc2a4\ud134\ud2b8
+L015=\uc0c8 \ub85c\uadf8 \ud30c\uc77c\uc774 \uc788\uc73c\uba70 \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}
+L016=\uc0c8 \ub85c\uadf8 \ud30c\uc77c {0}\uc744(\ub97c) \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+L017={1}(\uc73c)\ub85c \uc778\ud574 \uc0c8 \ub85c\uadf8 \ud30c\uc77c {0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+L018=\uc2dc\uc2a4\ud15c\uc774 \uc77c\uad00\ub418\uc9c0 \uc54a\uc740 \uc0c1\ud0dc\uc5d0 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. {0} \ud30c\uc77c\uc774 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+
+# Class Manager
+C000={0} \ud074\ub798\uc2a4\ub97c {1} \ud30c\uc77c\uc5d0 \uae30\ub85d\ud588\uc2b5\ub2c8\ub2e4. \ud30c\uc77c\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uacfc \ub2e4\uc74c\uc758 \uc608\uc678 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uc2ed\uc2dc\uc624. {2}
+C001={0} \ud074\ub798\uc2a4\ub294 jar {1}\uc5d0\uc11c \uc54c \uc218 \uc5c6\ub294 \uc778\uc99d \uc720\ud615\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. X509 \uc778\uc99d\uc774 \uc608\uc0c1\ub429\ub2c8\ub2e4.
+C002=jar {1} : {2}\uc758 {0} \ud074\ub798\uc2a4\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \uc911 \ubcf4\uc548 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+C003=\ub370\uc774\ud130\ubca0\uc774\uc2a4 jar {0} - {1} \ub85c\ub4dc \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+C004={0} \ud074\ub798\uc2a4\uc5d0 \ub300\ud55c \uc624\ub798\ub41c \ud074\ub798\uc2a4 \ub85c\ub354
+C005=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud074\ub798\uc2a4 \ub85c\ub354\uac00 \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4. - derby.database.classpath=''{0}''
+C006=\ub370\uc774\ud130\ubca0\uc774\uc2a4 jar {1}\uc5d0\uc11c {0}\uc774(\uac00) \ub85c\ub4dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+C007=jar {1} - {2}\uc5d0\uc11c {0} \ud074\ub798\uc2a4 \ub85c\ub4dc \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+
+# RawStore Data
+
+D001=:\n \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub514\ub809\ud1a0\ub9ac {2}\uc5d0\uc11c \n Derby \ubc84\uc804 {0}: \uc778\uc2a4\ud134\uc2a4 {1}  \ubd80\ud305 \uc911 \n
+D002=:\n\uc778\uc2a4\ud134\uc2a4 {0} \uc885\ub8cc \uc911
+D004={0}\uc5d0 \uc788\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud574 \ubc31\uc5c5\uc774 \uc2dc\uc791\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+D005=\uc624\ub798\ub41c \ubc31\uc5c5 \uc0ac\ubcf8\uc744 {0}\uc5d0\uc11c {1}(\uc73c)\ub85c \uc774\ub3d9\ud588\uc2b5\ub2c8\ub2e4.
+D006=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub514\ub809\ud1a0\ub9ac\ub97c {0}\uc5d0\uc11c {1}(\uc73c)\ub85c \ubcf5\uc0ac\ud588\uc2b5\ub2c8\ub2e4.
+D007=\uae30\ubcf8 \ub85c\uadf8 \uc7a5\uce58\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \ub370\uc774\ud130\ubca0\uc774\uc2a4 service.properties\ub97c \ud3b8\uc9d1\ud588\uc2b5\ub2c8\ub2e4.
+D008=\ub370\uc774\ud130\ubca0\uc774\uc2a4 service.properties \ud3b8\uc9d1 \uc911 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ubc31\uc5c5\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4. {0}
+D009=\ub85c\uadf8 \ub514\ub809\ud1a0\ub9ac\ub97c {0}\uc5d0\uc11c {1}(\uc73c)\ub85c \ubcf5\uc0ac\ud588\uc2b5\ub2c8\ub2e4.
+D010=\uc624\ub958\ub85c \uc778\ud574 \ubc31\uc5c5\uc774 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+D011={0}\uc5d0\uc11c \uc624\ub798\ub41c \ubc31\uc5c5 \uc0ac\ubcf8\uc744 \uc81c\uac70\ud588\uc2b5\ub2c8\ub2e4.
+D012=\ubc31\uc5c5\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. {0}\uc5d0 \ub85c\uadf8 \uc778\uc2a4\ud134\ud2b8\uac00 \uc788\uc2b5\ub2c8\ub2e4. \n
+
+# Connectivity 
+J004=\ub370\uc774\ud130\ubca0\uc774\uc2a4 ID
+J005=Derby \uc2dc\uc2a4\ud15c \uc885\ub8cc
+J007=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc131
+J008=\uc138\ubd80\uc0ac\ud56d \uc5c6\uc74c
+J010=\ub514\uc2a4\ud06c\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc554\ud638\ud654
+J013=\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5c5\uadf8\ub808\uc774\ub4dc
+J016=\uc554\ud638\ud654 \uc11c\ube44\uc2a4 \uc81c\uacf5\uc790
+J017=\uc554\ud638\ud654 \uc54c\uace0\ub9ac\uc998
+J018=\uc554\ud638\ud654 \ud0a4 \uae38\uc774
+J019=\uc678\ubd80 \uc554\ud638\ud654 \ud0a4
+J020=\ube44\ubc00 \uc554\ud638\ud654 \ud0a4
+J021=\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc9c0\uc5ed
+J022=\uc0ac\uc6a9\uc790 \uc774\ub984
+J023=\uc0ac\uc6a9\uc790 \uc554\ud638
+J025=\ub85c\uadf8 \ub514\ub809\ud1a0\ub9ac \uacbd\ub85c
+J028=rollforward \ubcf5\uad6c\uc758 \ubc31\uc5c5 \uacbd\ub85c
+J100=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84 \ud074\ub798\uc2a4 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0 csnet.jar\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+J101=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84 \ud074\ub798\uc2a4 {0}\uc744(\ub97c) \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {1} csnet.jar \ud30c\uc77c\uc758 \ubb34\uacb0\uc131\uc744 \uac80\uc0ac\ud558\uc2ed\uc2dc\uc624.
+J102=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84 \uc2dc\uc791 \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. {0}
+J103=\ub124\ud2b8\uc6cc\ud06c \uc11c\ubc84 \uc885\ub8cc \uc911\uc5d0 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. {0}
+
+# Authentication
+A001=\uce58\uba85\uc801: \uc2dc\uc2a4\ud15c\uc5d0 \ub300\ud55c \uc778\uc99d \uc11c\ube44\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+A002=\uce58\uba85\uc801: \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c \uc778\uc99d \uc11c\ube44\uc2a4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+A011=\uacbd\uace0: {0} \ub4f1\ub85d \uc815\ubcf4\uc5d0 LDAP \uc11c\ubc84/\ud638\uc2a4\ud2b8 \uc774\ub984\uc774 \uc5b8\uae09\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. localhost:389\ub85c \uac00\uc815\ud569\ub2c8\ub2e4.
+
+I015=org.apache.derby.jdbc.EmbeddedDriver\uac00 JDBC \ub4dc\ub77c\uc774\ubc84 \uad00\ub9ac\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub4f1\ub85d\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+I024=\ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c
+I025=JDBC \ub4dc\ub77c\uc774\ubc84\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc74c
+
+# Import/Export
+XIE01.S=\uc5f0\uacb0\uc774 \ub110\uc774\uc5c8\uc2b5\ub2c8\ub2e4.
+XIE03.S=\uc911\uc9c0 \ubd84\ub9ac\ubb38\uc790 \uc774\ud6c4 {0}\ud589\uc758 {1}\uc5f4\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ucc3e\uc558\uc2b5\ub2c8\ub2e4.
+XIE04.S=\ub370\uc774\ud130 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}
+XIE05.S=\ub370\uc774\ud130 \ud30c\uc77c\uc740 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XIE06.S=\uc5d4\ud2f0\ud2f0 \uc774\ub984\uc774 \ub110\uc785\ub2c8\ub2e4.
+XIE07.S=\ud544\ub4dc \ubc0f \ub808\ucf54\ub4dc \ubd84\ub9ac\uc790\ub294 \uc11c\ub85c \ud558\uc704 \ubb38\uc790\uc5f4\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XIE08.S=\uc774 \uc774\ub984\uc758 \uc5f4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4: {0}
+XIE09.S=\ud589\uc758 \ucd1d \uc5f4 \uc218\ub294 {0}\uc785\ub2c8\ub2e4.
+XIE0B.S=\ud14c\uc774\ube14\uc758 ''{0}'' \uc5f4\uc774 {1} \uc720\ud615\uc774\uace0, \uc784\ud3ec\ud2b8/\uac00\uc838\uc624\uae30\uc5d0 \uc758\ud574 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+XIE0D.S={0}\ud589\uc5d0\uc11c \ub808\ucf54\ub4dc \ubd84\ub9ac\uc790\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+XIE0E.S={0}\ud589\uc758 \uc608\uae30\uce58 \uc54a\uc740 \uc704\uce58\uc5d0\uc11c endOfFile\uc744 \uc77d\uc5c8\uc2b5\ub2c8\ub2e4.
+XIE0I.S=\ud30c\uc77c\uc5d0 \ub370\uc774\ud130\ub97c \uae30\ub85d\ud558\ub294 \ub3d9\uc548 IOException\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
+XIE0J.S=\ubd84\ub9ac\ubb38\uc790\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uac70\ub098 \ud55c \ubc88 \uc774\uc0c1 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
+XIE0K.S=\ub9c8\uce68\ud45c\uac00 \ubb38\uc790\uc5f4 \ubd84\ub9ac\ubb38\uc790\ub85c\uc11c \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+XIE0M.S=''{0}'' \ud14c\uc774\ube14\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+
+# Monitor
+M001=\n# ********************************************************************\n# ***                \uc774 \ud30c\uc77c\uc744 \ud3b8\uc9d1\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.                  ***\n# ***    \uc774 \ud30c\uc77c\uc758 \ub0b4\uc6a9\uc744 \ubcc0\uacbd\ud558\uba74 \ub370\uc774\ud130\uac00 \uc190\uc0c1\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.    ***\n# ********************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_pt_BR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_pt_BR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1239 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=Falha na inicializa\u00e7\u00e3o devido a uma exce\u00e7\u00e3o. Consulte a pr\u00f3xima exce\u00e7\u00e3o para obter detalhes.
+XBM02.D=Falha na inicializa\u00e7\u00e3o devido \u00e0 funcionalidade ausente para {0}. Verifique se o seu classpath inclui o Derby correto.
+XBM05.D=Falha na inicializa\u00e7\u00e3o devido a informa\u00e7\u00f5es sobre vers\u00e3o ausente para {0}.
+XBM06.D=Falha na inicializa\u00e7\u00e3o, um banco de dados criptografado n\u00e3o pode ser acessado sem a senha de reinicializa\u00e7\u00e3o correta.
+XBM07.D=Falha na inicializa\u00e7\u00e3o, a senha de reinicializa\u00e7\u00e3o deve ter pelo menos 8 bytes.
+XBM08.D=Could not instantiage {0} StorageFactory class {1}.
+
+XBM0G.D=Falha ao iniciar o mecanismo de criptografia. Certifique-se de estar executando o Java 2 e ter feito o download de um provedor de criptografia como o jce e de coloc\u00e1-lo em seu classpath.
+XBM0H.D=O diret\u00f3rio {0} n\u00e3o pode ser criado.
+XBM0I.D=O diret\u00f3rio {0} n\u00e3o pode ser removido.
+XBM0J.D=O diret\u00f3rio {0} j\u00e1 existe.
+XBM0K.D=Subprotocolo desconhecido para nome do banco de dados {0}.
+XBM0L.D=A classe do esquema de autentica\u00e7\u00e3o especificada {0} n\u00e3o implementa a interface de autentica\u00e7\u00e3o {1}.
+XBM0M.D=Erro ao criar inst\u00e2ncia da classe do esquema de autentica\u00e7\u00e3o {0}.
+XBM0N.D=Falha no registro do Driver JDBC com java.sql.DriverManager. Consulte a pr\u00f3xima exce\u00e7\u00e3o para obter detalhes.
+XBM0P.D=O provedor de servi\u00e7o \u00e9 somente leitura, opera\u00e7\u00e3o n\u00e3o permitida.
+XBM0S.D=N\u00e3o \u00e9 poss\u00edvel renomear o arquivo ''{0}'' como ''{1}''
+XBM0T.D=Subprotocolo amb\u00edguo para o nome do banco de dados {0}.
+XBM0U.S=Nenhuma classe foi registrada para o identificador {0}
+XBM0V.S=Uma exce\u00e7\u00e3o foi lan\u00e7ada ao carregar a classe {1} registrada para o identificador {0}
+XBM0W.S=Uma exce\u00e7\u00e3o foi lan\u00e7ada ao criar uma inst\u00e2ncia da classe {1} registrada para o identificador {0}
+XBM0X.D=A descri\u00e7\u00e3o de territ\u00f3rio ''{0}'' fornecida \u00e9 inv\u00e1lida, ln[_CO[_variant]] era esperado\n ln=c\u00f3digo de idioma ISO-639 com duas letras min\u00fasculas, CO=c\u00f3digo de idioma ISO-3166 com duas letras mai\u00fasculas, consulte java.util.Locale.
+XBM0Y.D=Diret\u00f3rio do banco de dados de backup {0} n\u00e3o localizado. Certifique-se de que o caminho do backup especificado esteja correto.
+XBM0Z.D=Imposs\u00edvel copiar arquivo ''{0}'' para ''{1}''. Certifique-se de que haja espa\u00e7o suficiente e que as permiss\u00f5es estejam corretas.  
+XBM0Q.D=Arquivo {0} n\u00e3o localizado. Certifique-se de que a c\u00f3pia de backup seja a correta e que n\u00e3o esteja corrompida.
+XBM0R.D=Imposs\u00edvel remover Arquivo {0}.
+
+# Upgrade
+XCW00.D=Upgrade de ''{0}'' para ''{1}'' n\u00e3o suportado.
+
+# Feature not supported
+
+
+# COntext service
+08000=Conex\u00e3o encerrada por interrup\u00e7\u00e3o desconhecida.
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=N\u00e3o foi poss\u00edvel obter um bloqueio devido a um congelamento, o ciclo de bloqueios e waiters \u00e9:\n {0}A v\u00edtima selecionada \u00e9 XID : {1}
+
+40XL1=N\u00e3o \u00e9 poss\u00edvel obter um bloqueio dentro do tempo requerido
+40XL2=N\u00e3o \u00e9 poss\u00edvel obter um bloqueio dentro do tempo requerido. O dump de lockTable \u00e9: {0}
+
+# ClassManager
+XBCM1.S=Erro de liga\u00e7\u00e3o Java lan\u00e7ado durante o carregamento da classe {0} gerada.
+XBCM2.S=N\u00e3o \u00e9 poss\u00edvel criar uma inst\u00e2ncia da classe {0} gerada.
+XBCM3.S=O m\u00e9todo {1}() n\u00e3o existe na classe {0} gerada.
+
+# Properties
+
+XCY00.S=Valor inv\u00e1lido para a propriedade ''{0}''=''{1}''.
+XCY02.S=A altera\u00e7\u00e3o da propriedade solicitada n\u00e3o \u00e9 suportada ''{0}''=''{1}''.
+XCY03.S=A propriedade solicitada ''{0}'' n\u00e3o foi definida.
+
+# Cryptography
+XBCX0.S=Exce\u00e7\u00e3o do provedor Cryptography, consulte a pr\u00f3xima exce\u00e7\u00e3o para obter detalhes.
+XBCX1.S=Inicializando cifra com modo ilegal, deve ser ENCRYPT ou DECRYPT.
+XBCX2.S=Inicializando cifra com uma senha de reinicializa\u00e7\u00e3o muito curta, deve ter pelo menos {0} caracteres
+XBCX5.S=N\u00e3o \u00e9 poss\u00edvel alterar a senha de reinicializa\u00e7\u00e3o para nula.
+XBCX6.S=N\u00e3o \u00e9 poss\u00edvel alterar a senha de reinicializa\u00e7\u00e3o para um tipo seri\u00e1vel que n\u00e3o seja em cadeia.
+XBCX7.S=Formato incorreto para altera\u00e7\u00e3o da senha de reinicializa\u00e7\u00e3o.  O formato deve ser : old_boot_password, new_boot_password.
+XBCX8.S=N\u00e3o \u00e9 poss\u00edvel alterar a senha de reinicializa\u00e7\u00e3o de um banco de dados n\u00e3o criptografado.
+XBCX9.S=N\u00e3o \u00e9 poss\u00edvel alterar a senha de reinicializa\u00e7\u00e3o de um banco de dados somente leitura.
+XBCXA.S=Senha de reinicializa\u00e7\u00e3o incorreta.
+XBCXB.S=Conte\u00fado da criptografia incorreto ''{0}'' ou conte\u00fado n\u00e3o especificado. Deve ser utilizado ''NoPadding''.
+XBCXC.S=O algoritmo da criptografia ''{0}'' n\u00e3o existe. Verifique se o provedor escolhido ''{1}'' suporta esse algoritmo.
+XBCXD.S=O algoritmo da criptografia n\u00e3o pode ser alterado ap\u00f3s a cria\u00e7\u00e3o do banco de dados.
+XBCXE.S=O provedor de criptografia n\u00e3o pode ser alterado ap\u00f3s a cria\u00e7\u00e3o do banco de dados.
+XBCXF.S=N\u00e3o \u00e9 poss\u00edvel encontrar a classe ''{0}'' que representa o provedor de criptografia.
+XBCXG.S=O provedor de criptografia ''{0}'' n\u00e3o existe.
+XBCXH.S=encryptionAlgorithm ''{0}'' n\u00e3o est\u00e1 no formato correto. O formato correto \u00e9 algorithm/feedbackMode/NoPadding.
+XBCXI.S=O modo de feedback ''{0}'' n\u00e3o \u00e9 suportado. Os modos de feedback suportados s\u00e3o CBC, CFB, OFB e ECB.
+XBCXJ.S=O aplicativo est\u00e1 utilizando uma vers\u00e3o do JCE (Java Cryptography Extension) anterior \u00e0 1.2.1.  Fa\u00e7a upgrade para o JCE 1.2.1 e tente executar a opera\u00e7\u00e3o novamente.
+XBCXK.S=A chave de criptografia fornecida n\u00e3o combina com a chave de criptografia usada na cria\u00e7\u00e3o do banco de dados. Por favor assegure-se que voc\u00ea est\u00e1 utilizando a chave de criptografia correta e tente novamente. 
+XBCXL.S=O processo de verifica\u00e7\u00e3o da chave de criptografia n\u00e3o foi bem sucedida, veja a pr\u00f3xima exce\u00e7\u00e3o para detalhes. Uma das poss\u00edveis causas pode ser devido a um erro ao acessar o arquivo apropriado para executar o processo de verifica\u00e7\u00e3o.
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=N\u00e3o \u00e9 poss\u00edvel criar um novo objeto com a chave {1} no cache {0}, ele j\u00e1 existe no cache.
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=O aglomerado ({0}) solicitado n\u00e3o existe.
+XSAI3.S=Recurso n\u00e3o implementado.
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=Tipo de varredura
+XSAJ1.U=N\u00famero de p\u00e1ginas visitadas
+XSAJ2.U=N\u00famero de linhas visitadas
+XSAJ3.U=N\u00famero de linhas visitadas exclu\u00eddas
+XSAJ4.U=N\u00famero de linhas qualificadas
+XSAJ5.U=N\u00famero de colunas buscadas
+XSAJ6.U=Conjunto de bits das colunas buscadas
+XSAJ7.U=Altura da \u00e1rvore
+XSAJ8.U=Tipo de ordena\u00e7\u00e3o
+XSAJA.U=N\u00famero de entradas das linhas
+XSAJB.U=N\u00famero de sa\u00eddas das linhas
+XSAJC.U=N\u00famero de execu\u00e7\u00f5es mescladas
+XSAJD.U=Tamanho das execu\u00e7\u00f5es mescladas
+XSAJE.U=Todos
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=heap
+XSAJH.U=sort
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=externa
+XSAJJ.U=interna
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=Viola\u00e7\u00e3o do protocolo XA.
+XSAX1.S=Houve uma tentativa de inicializar uma transa\u00e7\u00e3o global com um Xid de uma transa\u00e7\u00e3o global existente.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=Exce\u00e7\u00e3o encontrada ao tentar reinicializar o m\u00f3dulo para ''{0}''.
+XSAM2.S=N\u00e3o h\u00e1 nenhum \u00edndice ou aglomerado com conglom id ''{0}'' para eliminar.
+XSAM3.S=N\u00e3o h\u00e1 nenhum \u00edndice ou aglomerado com conglom id ''{0}''.
+XSAM4.S=N\u00e3o h\u00e1 nenhuma ordena\u00e7\u00e3o chamada ''{0}''.
+XSAM5.S=A varredura deve ser aberta e posicionada chamando next() antes de fazer outras chamadas.
+XSAM6.S=Registro {2} na p\u00e1gina {1} do cont\u00eainer {0} n\u00e3o encontrado.
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=N\u00e3o foi poss\u00edvel criar um gabarito.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=O recurso n\u00e3o est\u00e1 implementado.
+XSCH7.S=A varredura n\u00e3o est\u00e1 posicionada.
+XSCH6.S=O cont\u00eainer heap com o id do cont\u00eainer {0} est\u00e1 fechado.
+XSCH5.S=H\u00e1 uma incompatibilidade em uma tabela base entre o n\u00famero de colunas solicitadas {0} e o n\u00famero m\u00e1ximo de colunas {1}.
+XSCH4.S=N\u00e3o foi poss\u00edvel criar o aglomerado.
+XSCH1.S=Cont\u00eainer {0} n\u00e3o encontrado.
+XSCH0.S=N\u00e3o foi poss\u00edvel criar o cont\u00eainer.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=Reservado para teste.
+XSCB8.S=O aglomerado btree {0} est\u00e1 fechado.
+XSCB7.S=Foi encontrado um erro interno durante a varredura btree - current_rh \u00e9 nulo = {0}, chave de posi\u00e7\u00e3o \u00e9 nula = {1}.
+XSCB6.S=Limita\u00e7\u00e3o: O registro de um \u00edndice secund\u00e1rio btree n\u00e3o pode ser atualizado ou inserido devido \u00e0 falta de espa\u00e7o na p\u00e1gina.  Utilize os par\u00e2metros derby.storage.pageSize e/ou derby.storage.pageReservedSpace como alternativa para esta limita\u00e7\u00e3o.
+XSCB5.S=A linha n\u00e3o p\u00f4de ser encontrada na \u00e1rvore durante a a\u00e7\u00e3o l\u00f3gica de desfazer uma inser\u00e7\u00e3o ou exclus\u00e3o de btree.
+XSCB4.S=Um m\u00e9todo em uma varredura btree aberta foi chamado antes do posicionamento da varredura na primeira linha (ex. ainda n\u00e3o foi feita nenhuma chamada next()).  O estado atual da varredura \u00e9 ({0}).
+XSCB3.S=Recurso n\u00e3o implementado.
+XSCB2.S=A propriedade solicitada {0} n\u00e3o foi encontrada na lista de propriedades especificadas para createConglomerate() de um \u00edndice secund\u00e1rio btree.
+XSCB1.S=Cont\u00eainer {0} n\u00e3o encontrado.
+XSCB0.S=N\u00e3o foi poss\u00edvel criar o cont\u00eainer.
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=N\u00e3o foi poss\u00edvel adquirir recursos para ordena\u00e7\u00e3o.
+XSAS3.S=O tipo da linha inserida em uma ordena\u00e7\u00e3o n\u00e3o corresponde ao gabarito da ordena\u00e7\u00e3o.
+XSAS1.S=Houve uma tentativa de buscar uma linha antes do in\u00edcio de uma ordena\u00e7\u00e3o ou ap\u00f3s o final dela.
+XSAS0.S=Um m\u00e9todo de interface do controlador de varredura foi chamado; isso n\u00e3o \u00e9 adequado a uma varredura em uma ordena\u00e7\u00e3o.
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=N\u00e3o \u00e9 poss\u00edvel congelar o banco de dados depois que ele j\u00e1 tiver sido congelado.
+XSRS1.S=N\u00e3o \u00e9 poss\u00edvel fazer backup do banco de dados para {0}, que n\u00e3o \u00e9 um diret\u00f3rio.
+XSRS4.S=Erro ao renomear o arquivo (durante o backup) de {0} para {1}.
+XSRS5.S=Erro ao copiar o arquivo (durante o backup) de {0} para {1}.
+XSRS6.S=N\u00e3o \u00e9 poss\u00edvel criar o diret\u00f3rio de backup {0}.
+XSRS7.S=O backup encontrou uma exce\u00e7\u00e3o inesperada.
+XSRS8.S=O Dispositivo de Log s\u00f3 pode ser definido durante o tempo de cria\u00e7\u00e3o, ele n\u00e3o pode ser alterado agora.
+XSRS9.S=O registro {0} n\u00e3o existe mais
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=N\u00e3o \u00e9 poss\u00edvel fazer nenhuma altera\u00e7\u00e3o, a cria\u00e7\u00e3o de logs foi encerrada.
+XSLB8.S=Tentando redefinir uma varredura para {0} al\u00e9m dos limites de {1}.
+XSLB6.S=Tentando registrar um Registro de logs com comprimento 0 ou -ve.
+XSLB5.S=Inst\u00e2ncia truncationLWM {1} ilegal para o ponto de truncamento {0}. A faixa permitida \u00e9 de {2} a {3}.
+XSLB4.S=N\u00e3o \u00e9 poss\u00edvel encontrar truncationLWM {0}.
+XSLB2.S=Opera\u00e7\u00e3o de log {0} registrando dados excessivos, preenchendo o buffer interno de logs.
+XSLB1.S=A opera\u00e7\u00e3o de log {0} encontrou erro ao gravar a si mesma no fluxo de logs. Isso pode ter sido causado por uma opera\u00e7\u00e3o de log incorreta ou o buffer interno de logs estava cheio devido a uma opera\u00e7\u00e3o de log excessivamente grande.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=O diret\u00f3rio de log {0} existe. Certifique-se de que a localiza\u00e7\u00e3o do logDevice especificado esteja correta. 
+XSLAS.D=Diret\u00f3rio de log {0} n\u00e3o localizado no backup durante a restaura\u00e7\u00e3o. Certifique-se de que a c\u00f3pia de backup seja a correta e que n\u00e3o esteja corrompida.
+XSLAR.D=Imposs\u00edvel copiar arquivo de log ''{0}'' para ''{1}'' durante a restaura\u00e7\u00e3o. Certifique-se de que haja espa\u00e7o suficiente e que as permiss\u00f5es estejam corretas.  
+XSLAQ.D=N\u00e3o \u00e9 poss\u00edvel criar o arquivo de log no diret\u00f3rio {0}.
+XSLAP.D=O Banco de Dados em {0} \u00e9 da vers\u00e3o {1}. N\u00e3o \u00e9 poss\u00edvel fazer upgrade do bancos de dados beta,
+XSLAO.D=Falha na recupera\u00e7\u00e3o devido ao problema inesperado {0}.
+XSLAN.D=O banco de dados em {0} tinha um formato incompat\u00edvel com a vers\u00e3o atual do software.  O banco de dados foi criado ou atualizado pela vers\u00e3o {1}.
+XSLAM.D=N\u00e3o \u00e9 poss\u00edvel verificar o formato do banco de dados em {1} devido a IOException.
+XSLAL.D=O tamanho do registro de log {2} excedeu o tamanho m\u00e1ximo permitido para o arquivo de log {3}. Erro no arquivo de log {0}, posi\u00e7\u00e3o {1}
+XSLAK.D=O banco de dados excedeu o maior n\u00famero de arquivos de log {0}.
+XSLAJ.D=O sistema de registro foi marcado para encerrar devido a um problema anterior e n\u00e3o permitir\u00e1 outras opera\u00e7\u00f5es at\u00e9 que o sistema seja encerrado e iniciado novamente.
+XSLAI.D=N\u00e3o \u00e9 poss\u00edvel registrar o registro de log do ponto de verifica\u00e7\u00e3o
+XSLAH.D=Um banco de dados somente leitura est\u00e1 sendo atualizado.
+XSLAF.D=Um banco de dados somente leitura foi criado com buffers de dados sujos.
+XSLAE.D=O arquivo de controle em {0} n\u00e3o pode ser gravado ou atualizado.
+XSLAD.D=O registro de log na inst\u00e2ncia {2} do arquivo de log {3} est\u00e1 corrompido. Comprimento do registro de log esperado {0}, comprimento real {1}.
+XSLAC.D=O banco de dados em {0} possui um formato incompat\u00edvel com a vers\u00e3o atual do software, ele pode ter sido criado ou atualizado por uma vers\u00e3o posterior.
+XSLAB.D=N\u00e3o \u00e9 poss\u00edvel encontrar o arquivo de log {0}. Verifique se a propriedade logDevice est\u00e1 definida corretamente com o separador de caminho correto da sua plataforma.
+XSLAA.D=O armazenamento foi marcado para ser encerrado por uma exce\u00e7\u00e3o anterior.
+XSLA8.D=N\u00e3o \u00e9 poss\u00edvel reverter a transa\u00e7\u00e3o {0}, tentando compensar a opera\u00e7\u00e3o {1} com {2}
+XSLA7.D=N\u00e3o \u00e9 poss\u00edvel refazer a opera\u00e7\u00e3o {0} no log.
+XSLA6.D=N\u00e3o \u00e9 poss\u00edvel recuperar o banco de dados.
+XSLA5.D=N\u00e3o \u00e9 poss\u00edvel ler o fluxo de logs por alguma raz\u00e3o para reverter a transa\u00e7\u00e3o {0}.
+XSLA4.D=N\u00e3o \u00e9 poss\u00edvel gravar o log, ele est\u00e1 praticamente cheio.  Exclua os arquivos desnecess\u00e1rios.  Tamb\u00e9m \u00e9 poss\u00edvel que o sistema de arquivos seja somente leitura ou que haja falhas no disco ou algum outro problema com a m\u00eddia.
+XSLA3.D=Log Corrompido, h\u00e1 dados inv\u00e1lidos no fluxo de logs.
+XSLA2.D=O sistema ser\u00e1 encerrado, Exce\u00e7\u00e3o de E/S obtida ao acessar o arquivo de log.
+XSLA1.D=O Registro de Log foi enviado para o fluxo, mas ele n\u00e3o pode ser aplicado para o armazenamento (Objeto {0}).  Isso tamb\u00e9m pode causar problemas de recupera\u00e7\u00e3o.
+XSLA0.D=N\u00e3o \u00e9 poss\u00edvel liberar o arquivo de log para o disco {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=Um SAVEPOINT com o nome transmitido j\u00e1 existe na transa\u00e7\u00e3o atual.
+3B502.S=Um RELEASE ou ROLLBACK TO SAVEPOINT foi especificado, mas o savepoint n\u00e3o existe.
+3B001.S=SAVEPOINT, {0} n\u00e3o existe ou n\u00e3o est\u00e1 ativo na transa\u00e7\u00e3o atual.
+3B002.S=O n\u00famero m\u00e1ximo de pontos de salvamentos foi alcan\u00e7ado. 
+XSTA2.S=Uma transa\u00e7\u00e3o j\u00e1 estava ativa quando houve a tentativa de tornar outra transa\u00e7\u00e3o ativa.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=Um erro interno foi identificado pelo m\u00f3dulo RawStore.
+40XT1=Ocorreu uma exce\u00e7\u00e3o durante a transa\u00e7\u00e3o.
+40XT2=Ocorreu uma exce\u00e7\u00e3o durante a revers\u00e3o de um SAVEPOINT.
+40XT4=Houve uma tentativa de encerramento de uma transa\u00e7\u00e3o que ainda estava ativa, a transa\u00e7\u00e3o foi interrompida.
+40XT5=Exce\u00e7\u00e3o ocorrida durante uma transa\u00e7\u00e3o interna.
+40XT6=O banco de dados est\u00e1 no estado de quiesce, n\u00e3o \u00e9 poss\u00edvel ativar a transa\u00e7\u00e3o.  Aguarde um momento, at\u00e9 que ele saia do estado de quiesce.
+40XT7=A opera\u00e7\u00e3o n\u00e3o \u00e9 suportada em uma transa\u00e7\u00e3o interna.
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=Identificador inv\u00e1lido.
+XCXB0.S=Classpath do banco de dados inv\u00e1lido: ''{0}''.
+XCXC0.S=Lista de ids inv\u00e1lida.
+XCXE0.S=Voc\u00ea est\u00e1 tentando executar uma opera\u00e7\u00e3o que utiliza o territ\u00f3rio do banco de dados, mas o banco de dados ainda n\u00e3o possui um territ\u00f3rio. 
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=Ocorreu uma exce\u00e7\u00e3o durante a interrup\u00e7\u00e3o da transa\u00e7\u00e3o.
+XSTB2.M=N\u00e3o \u00e9 poss\u00edvel registrar as altera\u00e7\u00f5es da transa\u00e7\u00e3o, tente gravar em um banco de dados somente leitura.
+XSTB3.M=N\u00e3o \u00e9 poss\u00edvel interromper a transa\u00e7\u00e3o porque o gerenciador de logs \u00e9 nulo, provavelmente devido a um erro anterior.
+XSTB5.M=A cria\u00e7\u00e3o de banco de dados com o registro desativado encontrou um problema inesperado.
+XSTB6.M=N\u00e3o \u00e9 poss\u00edvel substituir uma tabela de transa\u00e7\u00e3o por outra enquanto a tabela estiver sendo utilizada.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=O cont\u00eainer foi fechado
+40XD1=O cont\u00eainer foi aberto no modo somente leitura
+40XD2=O cont\u00eainer {0} n\u00e3o pode ser aberto, ele foi eliminado ou n\u00e3o existe
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=Houve uma tentativa de acessar um slot fora de faixa em uma p\u00e1gina
+XSDA2.S=Houve uma tentativa de atualizar um registro exclu\u00eddo
+XSDA3.S=Limita\u00e7\u00e3o: O registro n\u00e3o pode ser atualizado ou inserido devido \u00e0 falta de espa\u00e7o na p\u00e1gina. Utilize os par\u00e2metros derby.storage.pageSize e/ou derby.storage.pageReservedSpace como alternativa para esta limita\u00e7\u00e3o.
+XSDA4.S=Ocorreu uma exce\u00e7\u00e3o inesperada
+XSDA5.S=Houve uma tentativa de recuperar um registro que n\u00e3o tinha sido exclu\u00eddo
+XSDA6.S=A coluna {0} da linha \u00e9 nula, precisa ser definida para apontar para um objeto.
+XSDA7.S=Restaura\u00e7\u00e3o de um objeto SQLData ou seri\u00e1vel da classe {0}, tentativa de ler mais dados do que foi originalmente armazenado
+XSDA8.S=Ocorreu uma exce\u00e7\u00e3o durante a restaura\u00e7\u00e3o de um objeto SQLData ou seri\u00e1vel da classe {0}
+XSDA9.S=Classe n\u00e3o encontrada durante a restaura\u00e7\u00e3o de um objeto SQLData ou seri\u00e1vel da classe {0}
+XSDAA.S=Data e hora {0} ilegais, a data e a hora s\u00e3o provenientes de uma p\u00e1gina diferente ou de uma implementa\u00e7\u00e3o incompat\u00edvel
+XSDAB.S=n\u00e3o \u00e9 poss\u00edvel definir uma data e hora nulas
+XSDAC.S=Tentativa de mover linhas ou p\u00e1ginas de um cont\u00eainer para outro.
+XSDAD.S=Tentativa de mover zero linhas de uma p\u00e1gina para outra.
+XSDAE.S=S\u00f3 \u00e9 poss\u00edvel criar um identificador de registros com um id do identificador especial de registros.
+XSDAF.S=Utilizando o identificador especial de registros como se fosse um identificador normal de registros.
+XSDAG.S=A principal transa\u00e7\u00e3o do aninhamento de aloca\u00e7\u00e3o n\u00e3o pode abrir o cont\u00eainer.
+XSDAI.S=A p\u00e1gina {0} que est\u00e1 sendo removida j\u00e1 est\u00e1 bloqueada para desaloca\u00e7\u00e3o.
+XSDAJ.S=Ocorreu uma exce\u00e7\u00e3o durante a grava\u00e7\u00e3o de um objeto SQLData ou seri\u00e1vel
+XSDAK.S=Uma p\u00e1gina incorreta foi obtida para o identificador de registros {0}.
+XSDAL.S=O identificador de registros {0} inesperadamente aponta para a p\u00e1gina estourada.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=Exce\u00e7\u00e3o inesperada na p\u00e1gina da mem\u00f3ria {0}
+XSDB1.D=Formato de p\u00e1gina desconhecido na p\u00e1gina {0}
+XSDB2.D=Formato de cont\u00eainer desconhecido no cont\u00eainer {0}: {1}
+XSDB3.D=As informa\u00e7\u00f5es sobre o cont\u00eainer n\u00e3o podem ser alteradas depois de gravadas: posteriormente {0}, agora {1}
+XSDB4.D=A p\u00e1gina {0} est\u00e1 na vers\u00e3o {1}, o arquivo de log cont\u00e9m altera\u00e7\u00f5es na vers\u00e3o {2}, est\u00e3o faltando registros de logs nesta p\u00e1gina ou a p\u00e1gina n\u00e3o foi gravada corretamente no disco.
+XSDB5.D=O log alterou o registro na p\u00e1gina {0}, o qual est\u00e1 al\u00e9m do final do cont\u00eainer.
+XSDB6.D=Outra inst\u00e2ncia do Derby j\u00e1 pode ter reinicializado o banco de dados {0}.
+XSDB7.D=AVISO: O Derby (inst\u00e2ncia {0}) est\u00e1 tentando reinicializar o banco de dados {1} mesmo que o Derby (inst\u00e2ncia {2}) ainda esteja ativo.  Apenas uma inst\u00e2ncia do Derby deve reinicializar um banco de dados. Pode ter ocorrido ou resultar em danos graves e irrecuper\u00e1veis.
+XSDB8.D=AVISO: O Derby (inst\u00e2ncia {0}) est\u00e1 tentando reinicializar o banco de dados {1} mesmo que o Derby (inst\u00e2ncia {2}) ainda esteja ativo.  Apenas uma inst\u00e2ncia do Derby deve reinicializar um banco de dados. A reinicializa\u00e7\u00e3o simult\u00e2nea de 2 inst\u00e2ncias do Derby no mesmo banco de dados pode resultar em danos graves e irrecuper\u00e1veis.  A propriedade db2j.database.forceDatabaseLock=true foi definida, portanto, o banco de dados n\u00e3o ser\u00e1 reinicializado at\u00e9 que db.lck n\u00e3o esteja mais presente.  Normalmente, essearquivo \u00e9 removido quando a primeira inst\u00e2ncia do Derby que ser\u00e1 reinicializada no banco de dados j\u00e1 existe, mas ele pode ser abandonado no encerramento.  Nesse caso, ser\u00e1 necess\u00e1rio remover o arquivo manualmente.  \u00c9 importante verificar se nenhuma outra VM est\u00e1 acessando o banco de dados antes de excluir manualmente o arquivo db.lck.
+XSDB9.D=O cont\u00eainer de fluxo {0} est\u00e1 corrompido.
+XSDBA.D=Falha na tentativa de alocar o objeto {0}.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=N\u00e3o foi poss\u00edvel criar o arquivo {0}, ele j\u00e1 existe.
+XSDF1.S=Ocorreu uma exce\u00e7\u00e3o durante a cria\u00e7\u00e3o do arquivo {0} no cont\u00eainer
+XSDF2.S=Exce\u00e7\u00e3o durante cria\u00e7\u00e3o do arquivo {0} para o cont\u00eainer, o arquivo n\u00e3o p\u00f4de ser removido.  A exce\u00e7\u00e3o foi: {1}.
+XSDF3.S=N\u00e3o \u00e9 poss\u00edvel criar o segmento {0}.
+XSDF4.S=Ocorreu uma exce\u00e7\u00e3o durante a remo\u00e7\u00e3o do arquivo {0} do cont\u00eainer eliminado, o arquivo n\u00e3o p\u00f4de ser removido {1}.
+XSDF6.S=N\u00e3o \u00e9 poss\u00edvel encontrar a p\u00e1gina de aloca\u00e7\u00e3o {0}.
+XSDF7.S=A p\u00e1gina criada recentemente falhou ao ser travada {0}
+XSDF8.S=N\u00e3o \u00e9 poss\u00edvel encontrar a p\u00e1gina {0} para reutiliz\u00e1-la.
+XSDFB.S=Opera\u00e7\u00e3o n\u00e3o suportada por um banco de dados somente leitura
+XSDFD.S=Imagem diferente de p\u00e1gina lida em 2 E/S na P\u00e1gina {0}, checksum estava incorreto na primeira imagem, checksum estava correto na segunda imagem. A seguir, as imagens da p\u00e1gina: {1} {2}
+XSDFF.S=A opera\u00e7\u00e3o solicitada falhou devido a uma exce\u00e7\u00e3o inesperada.
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=A p\u00e1gina {0} n\u00e3o p\u00f4de ser lida a partir do disco.
+XSDG1.D=A p\u00e1gina {0} n\u00e3o p\u00f4de ser gravada no disco. Verifique se o disco est\u00e1 cheio.
+XSDG2.D=Checksum inv\u00e1lido na p\u00e1gina {0}, esperado={1}, vers\u00e3o do disco={2}, dump da p\u00e1gina: {3}
+XSDG3.D=N\u00e3o foi poss\u00edvel acessar os metadados do cont\u00eainer {0}
+XSDG5.D=O banco de dados n\u00e3o est\u00e1 no modo de cria\u00e7\u00e3o quando createFinished \u00e9 chamado.
+XSDG6.D=Diret\u00f3rio de segmento de dados n\u00e3o localizado no backup {0} durante a restaura\u00e7\u00e3o. Certifique-se de que a c\u00f3pia de backup seja a correta e que n\u00e3o esteja corrompida.
+XSDG7.D=Imposs\u00edvel remover o diret\u00f3rio {0} durante a restaura\u00e7\u00e3o. Certifique-se de que as permiss\u00f5es estejam corretas.
+XSDG8.D=Imposs\u00edvel copiar o diret\u00f3rio ''{0}'' para ''{1}'' durante a restaura\u00e7\u00e3o. Certifique-se de que haja espa\u00e7o suficiente e que as permiss\u00f5es estejam corretas.  
+
+# language
+01500=A limita\u00e7\u00e3o {0} na tabela {1} foi eliminada.
+01501=A exibi\u00e7\u00e3o {0} foi eliminada.
+01502=O disparo {0} na tabela {1} foi eliminado.
+01503=A coluna {0} na tabela {1} foi modificada pela inclus\u00e3o de uma limita\u00e7\u00e3o que n\u00e3o era nula.
+01504=O novo \u00edndice \u00e9 uma duplica\u00e7\u00e3o de um \u00edndice existente: {0}.
+01505=O valor {0} pode estar truncado.
+01003=Os valores nulos foram eliminados do argumento de uma fun\u00e7\u00e3o de coluna.
+0100E=XX Tentativa de retornar muitos conjuntos de resultados
+02000=Nenhuma linha foi encontrada para FETCH, UPDATE ou DELETE; ou o resultado de uma consulta \u00e9 uma tabela vazia.
+21000=A subconsulta escalar \u00e9 permitida apenas para retornar uma \u00fanica linha.
+22001=Foi encontrado um erro de truncamento ao tentar reduzir {0} ''{1}'' para o comprimento {2}.
+54006=O comprimento resultante da opera\u00e7\u00e3o {0} \u00e9 maior que {1}.
+22003=O valor resultante est\u00e1 fora do intervalo para o tipo de dados {0}.
+22005=Houve uma tentativa de obter um valor de dados do tipo ''{0}'' a partir de um valor de dados do tipo ''{1}''.
+22007.S.180=A representa\u00e7\u00e3o da cadeia de um valor datetime est\u00e1 fora do intervalo.
+22007.S.181=A sintaxe da cadeia de um valor datetime est\u00e1 incorreta.
+22011=O segundo ou terceiro argumentos da fun\u00e7\u00e3o SUBSTR est\u00e1 fora do intervalo.
+22012=Tentativa de dividir por zero.
+22013=Tentativa de obter a raiz quadrada de um n\u00famero negativo, ''{0}''.
+22014=A posi\u00e7\u00e3o inicial de LOCATE \u00e9 inv\u00e1lida; ela deve ser um inteiro positivo.  O \u00edndice a partir do qual a pesquisa ser\u00e1 iniciada \u00e9 ''{2}''.  A cadeia que ser\u00e1 pesquisada \u00e9 ''{0}''.  A cadeia a partir da qual a pesquisa ser\u00e1 executada \u00e9 ''{1}''.
+
+22015=A fun\u00e7\u00e3o ''{0}'' n\u00e3o \u00e9 permitida no conjunto de tipos a seguir.  O primeiro operando \u00e9 do tipo ''{1}''.  O segundo operando \u00e9 do tipo ''{2}''.  O terceiro operando (posi\u00e7\u00e3o inicial) \u00e9 do tipo ''{3}''.
+22018=Formato de cadeia de caracteres inv\u00e1lido para o tipo {0}.
+22019=Seq\u00fc\u00eancia de escape inv\u00e1lida, ''{0}''. A cadeia de escape deve ter exatamente um caractere. Ela n\u00e3o pode ser nula ou ter mais de um caractere.
+22025=O caractere de escape deve ser seguido pelo caractere de escape, '_' ou '%'. Ele n\u00e3o pode ser seguido por outro caractere ou estar no final do padr\u00e3o.
+22027=A fun\u00e7\u00e3o interna TRIM() suporta um \u00fanico caractere de recorte.  As fun\u00e7\u00f5es internas LTRIM() e RTRIM() suportam m\u00faltiplos caracteres de recorte.
+22500=N\u00e3o \u00e9 poss\u00edvel utilizar par\u00e2metros para o padr\u00e3o LIKE e para a cl\u00e1usula ESCAPE.
+22501=Uma cl\u00e1usula ESCAPE de NULL retorna resultados indefinidos e n\u00e3o \u00e9 permitida.
+23502=A coluna ''{0}'' n\u00e3o pode aceitar um valor NULL.
+23505=A instru\u00e7\u00e3o foi abortada pois ela teria causado um valor de chave duplicado em uma limita\u00e7\u00e3o de chave exclusiva ou prim\u00e1ria ou em um \u00edndice exclusivo identificado por ''{0}'' definido em ''{1}''.
+23503={2} na tabela ''{1}'' causou uma viola\u00e7\u00e3o na limita\u00e7\u00e3o da chave externa ''{0}'' para a chave {3}.  A instru\u00e7\u00e3o foi revertida.
+23513=A limita\u00e7\u00e3o de verifica\u00e7\u00e3o ''{1}'' foi violada durante a execu\u00e7\u00e3o de INSERT ou UPDATE na tabela ''{0}''.
+38000=A execu\u00e7\u00e3o ''{0}'' ocorreu durante a avalia\u00e7\u00e3o de uma express\u00e3o.
+38001=A rotina externa n\u00e3o tem permiss\u00e3o para executar instru\u00e7\u00f5es SQL.
+38002=A rotina tentou modificar dados, mas a rotina n\u00e3o foi definida como MODIFIES SQL DATA.
+38004=A rotina tentou ler dados, mas a rotina n\u00e3o foi definida como READS SQL DATA.
+39004=Um valor NULL n\u00e3o pode ser transmitido a um m\u00e9todo que leva um par\u00e2metro do tipo primitivo ''{0}''.
+40XC0=Instru\u00e7\u00e3o inutilizada. Isso pode ter sido causado pela captura de um erro grave de transa\u00e7\u00e3o dentro dessa instru\u00e7\u00e3o.
+# this error is retired in 1.3
+42000=Erro de sintaxe ou viola\u00e7\u00e3o de regras de acesso. Consulte os erros adicionais para obter detalhes.
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=Em uma instru\u00e7\u00e3o ALTER TABLE, a coluna ''{0}'' foi especificada como NOT NULL e a cl\u00e1usula DEFAULT n\u00e3o foi especificada ou foi especificada como DEFAULT NULL.
+42601.S.372=Instru\u00e7\u00e3o ALTER TABLE n\u00e3o pode incluir uma coluna IDENTITY em uma tabela. 
+42606=Foi detectada uma constante hexadecimal iniciada com ''{0}''.
+54002=Uma constante de cadeia iniciada com ''{0}'' \u00e9 muito longa.
+42611=O comprimento, precis\u00e3o ou atributo de escala para a coluna, ou mapeamento de tipo ''{0}'' n\u00e3o \u00e9 v\u00e1lida. 
+
+42605=O n\u00famero de argumentos para a fun\u00e7\u00e3o ''{0}'' est\u00e1 incorreto.
+42610=Nem todos os argumentos para a fun\u00e7\u00e3o COALESC/VALUE podem ser par\u00e2metros. \u00c9 necess\u00e1rio ter pelo menos um par\u00e2metro que n\u00e3o seja um argumento.
+42613=V\u00e1rias palavras-chave ou palavras-chave em conflito envolvendo a cl\u00e1usula ''{0}'' est\u00e3o presentes.
+42621=Uma limita\u00e7\u00e3o de verifica\u00e7\u00e3o ou coluna gerada definida com ''{0}'' \u00e9 inv\u00e1lida.
+42734=O nome ''{0}'' especificado no contexto ''{1}'' n\u00e3o \u00e9 exclusivo.
+# DB2 error for invalid set schema
+42802=O n\u00famero de valores designados n\u00e3o \u00e9 igual ao n\u00famero de colunas especificadas ou impl\u00edcitas.
+42815.S.713=O valor de substitui\u00e7\u00e3o para ''{0}'' \u00e9 inv\u00e1lido.
+42815.S.171=O tipo dos dados, comprimento ou valor dos argumentos ''{0}'' e ''{1}'' \u00e9 incompat\u00edvel.
+42820=O literal de ponto flutuante ''{0}'' cont\u00e9m mais de 30 caracteres.
+42824=Um operando de LIKE n\u00e3o \u00e9 uma cadeia, ou o primeiro operando n\u00e3o \u00e9 uma coluna.
+42831=''{0}'' n\u00e3o pode ser uma coluna de uma chave prim\u00e1ria ou chave exclusiva, pois ela pode conter valores nulos.
+42834=SET NULL n\u00e3o pode ser especificado porque FOREIGN KEY ''{0}'' n\u00e3o pode conter valores nulos.
+
+42884=Nenhuma rotina autorizada denominada ''{0}'' do tipo ''{1}'' tendo argumentos compat\u00edveis foi localizada.
+42886=''{0}'' par\u00e2metro ''{1}'' requer um marcador de par\u00e2metro ''?''.
+42894=O valor DEFAULT ou o valor de atributo IDENTITY n\u00e3o s\u00e3o v\u00e1lidos para a coluna ''{0}''.
+428C1=Apenas uma coluna de identidade \u00e9 permitida por tabela.
+42903=Uso inv\u00e1lido de fun\u00e7\u00e3o de agrega\u00e7\u00e3o.
+42908=A instru\u00e7\u00e3o CREATE VIEW n\u00e3o inclui uma lista de colunas.
+42915=A chave externa ''{0}'' \u00e9 inv\u00e1lida devido a ''{1}''.
+
+42972=Uma cl\u00e1usula ON associada a um operador JOIN n\u00e3o \u00e9 v\u00e1lida.
+42X01=Erro de sintaxe: {0}.
+42X02={0}.
+42X03=O nome da coluna ''{0}'' est\u00e1 em mais de uma tabela na lista FROM.
+42X04=A coluna ''{0}'' n\u00e3o est\u00e1 em nenhuma tabela da lista FROM ou aparece dentro de uma especifica\u00e7\u00e3o de jun\u00e7\u00e3o e est\u00e1 fora do escopo da especifica\u00e7\u00e3o de jun\u00e7\u00e3o ou, ainda, aparece em uma cl\u00e1usula HAVING e n\u00e3o est\u00e1 na lista GROUP BY.  Se essa for uma instru\u00e7\u00e3o CREATE ou ALTER TABLE, ent\u00e3o, ''{0}'' n\u00e3o ser\u00e1 uma coluna na tabela de destino.
+42X05=A tabela ''{0}'' n\u00e3o existe.
+42X06=Muitas colunas de resultados especificadas para a tabela ''{0}''.
+42X07=O valor nulo \u00e9 permitido apenas em uma cl\u00e1usula VALUES, dentro de uma instru\u00e7\u00e3o INSERT.
+42X08=O construtor da classe ''{0}'' n\u00e3o pode ser utilizado como uma tabela virtual externa, pois a classe n\u00e3o implementa ''{1}''
+42X09=O nome da tabela ou alias ''{0}'' \u00e9 usado mais de uma vez na lista FROM.
+42X10=''{0}'' n\u00e3o \u00e9 um nome exposto de tabela no escopo em que aparece.
+42622=O nome ''{0}'' \u00e9 muito longo. O comprimento m\u00e1ximo \u00e9 ''{1}''.
+42X12=O nome da coluna ''{0}'' aparece mais de uma vez na instru\u00e7\u00e3o de cria\u00e7\u00e3o de tabela.
+54011=Um n\u00famero excessivo de colunas ({0}) foi especificado para a tabela ou visualiza\u00e7\u00e3o {1}. O limite \u00e9 {2}.
+42Z9F=N\u00famero excessivo de \u00edndices ({0}) na tabela {1}. O limite \u00e9 {2}.
+42X13=O nome da coluna ''{0}'' aparece mais de uma vez na lista de colunas de uma instru\u00e7\u00e3o de inser\u00e7\u00e3o.
+42X14=''{0}'' n\u00e3o \u00e9 uma coluna na tabela ou VTI ''{1}''.
+42X15=O nome da coluna ''{0}'' aparece em uma instru\u00e7\u00e3o sem uma lista FROM.
+42X16=O nome da coluna ''{0}'' aparece diversas vezes na cl\u00e1usula SET de uma instru\u00e7\u00e3o de atualiza\u00e7\u00e3o.
+42X17=O valor ''{0}'' n\u00e3o \u00e9 v\u00e1lido como uma especifica\u00e7\u00e3o joinOrder na lista de propriedades de uma cl\u00e1usula FROM. Somente os valores FIXED e UNFIXED s\u00e3o v\u00e1lidos.
+42803=Uma express\u00e3o contendo a coluna ''{0}'' \u00e9 exibida na lista SELECT e n\u00e3o faz parte de uma cl\u00e1usula GROUP BY.
+42818=Compara\u00e7\u00f5es entre ''{0}'' e ''{1}'' n\u00e3o s\u00e3o suportadas.
+42X19=A cl\u00e1usula WHERE ou HAVING ou a defini\u00e7\u00e3o CHECK CONSTRAINT \u00e9 uma express\u00e3o ''{0}''.  Ela deve ser uma express\u00e3o BOOLEAN.
+42X23=O cursor {0} n\u00e3o pode ser atualizado.
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=A fun\u00e7\u00e3o ''{0}'' n\u00e3o \u00e9 permitida no tipo ''{1}''.
+42X26=A classe ''{0}'' da coluna ''{1}'' n\u00e3o existe ou est\u00e1 inacess\u00edvel. Isso pode ocorrer se a classe n\u00e3o for p\u00fablica.
+42X28=Excluir a tabela ''{0}'' n\u00e3o \u00e9 o objetivo do cursor ''{1}''.
+42X29=Atualizar a tabela ''{0}'' n\u00e3o \u00e9 o objetivo do cursor ''{1}''.
+42X30=O cursor ''{0}'' n\u00e3o foi encontrado. Verifique se a execu\u00e7\u00e3o autom\u00e1tica est\u00e1 DESATIVADA.
+42X31=A coluna ''{0}'' n\u00e3o est\u00e1 na lista FOR UPDATE do cursor ''{1}''.
+42X32=O n\u00famero de colunas na lista de colunas derivadas deve corresponder ao n\u00famero de colunas na tabela ''{0}''.
+42X33=A lista de colunas derivadas cont\u00e9m um nome de coluna duplicado ''{0}''.
+42X34=H\u00e1 um ? par\u00e2metro na lista de sele\u00e7\u00e3o.  Isso n\u00e3o \u00e9 permitido.
+42X35=N\u00e3o \u00e9 permitido que operandos de ''{0}'' sejam ? par\u00e2metros.
+42X36=N\u00e3o \u00e9 permitido que o operador ''{0}'' obtenha ? um par\u00e2metro como um operando.
+42X37=O operador un\u00e1rio ''{0}'' n\u00e3o \u00e9 permitido no tipo ''{1}''.
+42X38=''SELECT *'' \u00e9 permitido apenas em subconsultas EXISTS e NOT EXISTS.
+42X39=A subconsulta \u00e9 permitida apenas para retornar uma \u00fanica coluna.
+42X40=NOT possui um operando que n\u00e3o \u00e9 booleano. O operando de NOT deve ser avaliado como TRUE, FALSE ou UNKNOWN.
+42X41=A propriedade ''{0}'' n\u00e3o \u00e9 v\u00e1lida na cl\u00e1usula Properties de uma lista FROM (a propriedade estava sendo definida como ''{1}'').
+42821=Colunas do tipo ''{0}'' n\u00e3o podem conter valores do tipo ''{1}''. 
+42X43=O ResultSetMetaData retornado para a classe/objeto ''{0}'' era nulo. ResultSetMetaData n\u00e3o deve ser nulo para utilizar essa classe como uma tabela virtual externa.
+42X44=Comprimento inv\u00e1lido ''{0}'' na especifica\u00e7\u00e3o da coluna.
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=O valor ''{1}'' n\u00e3o \u00e9 uma precis\u00e3o v\u00e1lida para {0}.
+42X49=O valor ''{0}'' n\u00e3o \u00e9 um literal inteiro v\u00e1lido.
+42X50=N\u00e3o foi encontrado nenhum m\u00e9todo que correspondesse \u00e0 chamada de m\u00e9todo {0}.{1}({2}), mesmo ap\u00f3s tentar todas as combina\u00e7\u00f5es de tipos primitivos e de objetos e todas as convers\u00f5es poss\u00edveis de tipos para qualquer par\u00e2metro que a chamada de m\u00e9todo pudesse ter.  Isso pode ocorrer porque o m\u00e9todo existe mas n\u00e3o \u00e9 p\u00fablico e/ou est\u00e1tico ou porque os tipos de par\u00e2metros n\u00e3o s\u00e3o invoca\u00e7\u00f5es de m\u00e9todos que podem ser convertidos.
+42X51=A classe ''{0}'' n\u00e3o existe ou est\u00e1 inacess\u00edvel. Isso pode ocorrer se a classe n\u00e3o for p\u00fablica.
+42X52=A chamada do m\u00e9todo (''{0}'') utilizando um receptor do tipo primitivo Java ''{1}" n\u00e3o \u00e9 permitida.
+42X53=O predicado LIKE pode ter apenas os operandos ''CHAR'' ou ''VARCHAR''. O tipo ''{0}'' n\u00e3o \u00e9 permitido.
+42X54=O m\u00e9todo Java ''{0}'' possui ? como receptor.  Isso n\u00e3o \u00e9 permitido.
+42X55=O nome da tabela ''{1}'' deve ser id\u00eantico a ''{0}''.
+42X56=O n\u00famero de colunas na lista de colunas exibidas n\u00e3o corresponde ao n\u00famero de colunas na express\u00e3o de consulta subjacente da defini\u00e7\u00e3o de exibi\u00e7\u00e3o de''{0}''.
+42X57=getColumnCount() da tabela virtual externa ''{0}'' retornou um valor inv\u00e1lido ''{1}''.  Os valores v\u00e1lidos s\u00e3o >= 1.
+42X58=O n\u00famero de colunas \u00e0 esquerda e \u00e0 direita de UNION deve ser id\u00eantico.
+42X59=O n\u00famero de colunas em cada construtor VALUES deve ser id\u00eantico.
+42X60=Valor inv\u00e1lido ''{0}'' para a propriedade insertMode especificada na tabela ''{1}''.
+42X61=Os tipos ''{0}'' e ''{1}'' n\u00e3o s\u00e3o compat\u00edveis com UNION.
+42X62=''{0}'' n\u00e3o \u00e9 permitido no esquema ''{1}''.
+42X63=A cl\u00e1usula USING n\u00e3o retornou nenhum resultado, nenhum par\u00e2metro pode ser definido.
+42X64=Valor inv\u00e1lido ''{0}'' especificado para a propriedade useStatistics na lista de propriedades. TRUE ou FALSE s\u00e3o os \u00fanicos valores v\u00e1lidos.
+42X65=O \u00edndice ''{0}'' n\u00e3o existe.
+42X66=O nome da coluna ''{0}'' aparece mais do que uma vez na instru\u00e7\u00e3o de cria\u00e7\u00e3o de \u00edndice.
+42X68=N\u00e3o foi encontrado nenhum campo ''{0}'' que pertencesse \u00e0 classe ''{1}''.  Isso pode ocorrer porque o campo existe, mas n\u00e3o \u00e9 p\u00fablico ou porque a classe n\u00e3o existe ou n\u00e3o \u00e9 p\u00fablica.
+42X69=N\u00e3o \u00e9 permitido fazer refer\u00eancia a um campo (''{0}'') utilizando uma express\u00e3o de refer\u00eancia do tipo primitivo Java ''{1}''.
+42X72=N\u00e3o foi encontrado nenhum campo est\u00e1tico ''{0}'' que pertencesse \u00e0 classe ''{1}''.  Isso pode ocorrer porque o campo existe, mas n\u00e3o \u00e9 p\u00fablico e/ou est\u00e1tico ou porque a classe n\u00e3o existe ou n\u00e3o \u00e9 p\u00fablica.
+42X73=A resolu\u00e7\u00e3o do m\u00e9todo de assinatura {0}.{1}({2}) era amb\u00edgua. (Nenhum m\u00e9todo \u00fanico especificado de forma m\u00e1xima.)
+42X74=Sintaxe inv\u00e1lida da instru\u00e7\u00e3o CALL.
+42X75=Nenhum construtor foi encontrado com a assinatura {0}({1}).  Isso pode ocorrer porque os tipos de par\u00e2metros n\u00e3o s\u00e3o invoca\u00e7\u00f5es de m\u00e9todos que podem ser convertidos.
+42X76=Pelo menos uma coluna, ''{0}'', na chave prim\u00e1ria sendo inclu\u00edda \u00e9 anul\u00e1vel. Todas as colunas em uma chave prim\u00e1ria devem ser n\u00e3o-anul\u00e1veis.
+42X77=A posi\u00e7\u00e3o da coluna ''{0}'' est\u00e1 fora do intervalo para a express\u00e3o de consulta.
+42X78=A coluna ''{0}'' n\u00e3o est\u00e1 no resultado da express\u00e3o de consulta.
+42X79=O nome da coluna ''{0}'' aparece mais de uma vez no resultado da express\u00e3o de consulta.
+42877=Um nome qualificado de coluna ''{0}'' n\u00e3o \u00e9 permitido na cl\u00e1usula ORDER BY.
+42X80=A cl\u00e1usula VALUES deve conter pelo menos 1 elemento e nenhum elemento deve estar vazio.
+42X82=A cl\u00e1usula USING retornou mais de uma linha, s\u00e3o permitidas apenas ResultSets de linhas \u00fanicas.
+42X83=As limita\u00e7\u00f5es da coluna ''{0}'' exigem que ela seja anul\u00e1vel ou n\u00e3o anul\u00e1vel.
+42X84=O \u00edndice ''{0}'' foi criado para refor\u00e7ar a limita\u00e7\u00e3o ''{1}''.  Ele s\u00f3 pode ser eliminado atrav\u00e9s da elimina\u00e7\u00e3o da limita\u00e7\u00e3o.
+42X85=Exige-se que a restri\u00e7\u00e3o ''{0}'' esteja no mesmo esquema da tabela ''{1}''.
+42X86=Falha na tabela ALTER. N\u00e3o h\u00e1 limita\u00e7\u00f5es ''{0}'' na tabela ''{1}''.
+42X87=Pelo menos uma express\u00e3o de resultado (then ou else) da express\u00e3o ''{0}'' n\u00e3o deve ser ''?''.
+42X88=A condicional possui um operando que n\u00e3o \u00e9 booleano. O operando de Condicional deve ser avaliado como TRUE, FALSE ou UNKNOWN.
+42X89=Os tipos ''{0}'' e ''{1}'' n\u00e3o s\u00e3o tipos compat\u00edveis. (Nenhum tipo pode ser atribu\u00eddo a outro tipo.)
+42X90=Mais de uma limita\u00e7\u00e3o de chave prim\u00e1ria foi especificada para a tabela ''{0}''.
+42X91=O nome da limita\u00e7\u00e3o ''{0}'' aparece mais de uma vez na instru\u00e7\u00e3o de cria\u00e7\u00e3o de tabela.
+42X92=O nome da coluna ''{0}'' aparece mais de uma vez na lista de colunas da limita\u00e7\u00e3o.
+42X93=A tabela ''{0}'' cont\u00e9m uma defini\u00e7\u00e3o de limita\u00e7\u00e3o com a coluna ''{1}'' que n\u00e3o est\u00e1 na tabela.
+42Z93=As limita\u00e7\u00f5es ''{0}'' e ''{1}'' possuem o mesmo conjunto de colunas, o que n\u00e3o \u00e9 permitido.
+42Z96=Os VTIs de leitura e grava\u00e7\u00e3o n\u00e3o s\u00e3o suportados em ambientes JDK 1.1/JDBC 1.2: ''{0}''
+42Z9B=A interface da tabela virtual externa n\u00e3o suporta colunas blob ou clob. ''{0}'' coluna ''{1}''.
+42Z9D=Instru\u00e7\u00f5es ''{0}'' n\u00e3o s\u00e3o permitidas em disparadores ''{1}''.
+42Z9E=A limita\u00e7\u00e3o ''{0}'' n\u00e3o \u00e9 uma limita\u00e7\u00e3o de {1}.
+42X94={0} ''{1}'' n\u00e3o existe.
+42X96=O caminho de classe do banco de dados cont\u00e9m um arquivo jar desconhecido ''{0}''.
+42X98=N\u00e3o s\u00e3o permitidos par\u00e2metros em uma defini\u00e7\u00e3o VIEW.
+42Y00=A classe ''{0}'' n\u00e3o implementa org.apache.derby.iapi.db.AggregateDefinition e dessa forma n\u00e3o pode ser utilizada como express\u00e3o de agrega\u00e7\u00e3o.
+42Y01=A limita\u00e7\u00e3o ''{0}'' \u00e9 inv\u00e1lida.
+42Y03=''{0}'' n\u00e3o \u00e9 reconhecido como uma fun\u00e7\u00e3o ou procedimento.
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=N\u00e3o \u00e9 poss\u00edvel criar um procedimento ou fun\u00e7\u00e3o com EXTERNAL NAME ''{0}'', pois ele n\u00e3o \u00e9 uma lista separada por pontos. O formato esperado \u00e9 <full java path>.<method name> .
+
+42Y05=N\u00e3o h\u00e1 nenhuma Chave Externa denominada ''{0}''.
+42Y07=O esquema ''{0}'' n\u00e3o existe
+42Y08=As limita\u00e7\u00f5es da chave externa n\u00e3o s\u00e3o permitidas nas tabelas do sistema.
+42Y09=M\u00e9todos inv\u00e1lidos s\u00e3o permitidos apenas em uma instru\u00e7\u00e3o CALL.
+42Y10=Um construtor de tabela que n\u00e3o esteja em uma instru\u00e7\u00e3o INSERT tem todos os par\u00e2metros? em uma de suas colunas.  Para cada coluna, pelo menos uma das linhas deve possuir um n\u00e3o par\u00e2metro.
+42Y11=Uma especifica\u00e7\u00e3o de jun\u00e7\u00e3o \u00e9 requerida com a cl\u00e1usula ''{0}''.
+42Y12=A cl\u00e1usula ON de JOIN \u00e9 uma express\u00e3o ''{0}''.  Ela deve ser uma express\u00e3o BOOLEAN.
+42Y13=O nome da coluna ''{0}'' aparece mais de uma vez na instru\u00e7\u00e3o de cria\u00e7\u00e3o de exibi\u00e7\u00e3o.
+42Z97=A renomea\u00e7\u00e3o da coluna ''{0}'' far\u00e1 com que a limita\u00e7\u00e3o de verifica\u00e7\u00e3o ''{1}'' seja interrompida.
+42Z99=O literal String ou Hex n\u00e3o pode ultrapassar 64K.
+42Y16=N\u00e3o foi encontrado nenhum m\u00e9todo p\u00fablico est\u00e1tico ''{0}'' na classe ''{1}''.  Isso pode ter ocorrido porque o m\u00e9todo existe, mas n\u00e3o \u00e9 p\u00fablico ou est\u00e1tico.
+42846=N\u00e3o \u00e9 poss\u00edvel converter os tipos ''{0}'' em ''{1}''.
+42Y19=''{0}'' aparece diversas vezes na lista GROUP BY. As colunas da lista GROUP BY devem ser amb\u00edguas.
+42Y22=A agrega\u00e7\u00e3o {0} n\u00e3o pode operar no tipo {1}.
+42Y23=Informa\u00e7\u00f5es incorretas sobre o tipo de JDBC retornado da coluna {0}.
+42Y24=A exibi\u00e7\u00e3o ''{0}'' n\u00e3o pode ser atualizada. (Atualmente, as exibi\u00e7\u00f5es n\u00e3o podem ser atualizadas.)
+42Y25=''{0}'' \u00e9 uma tabela do sistema.  Os usu\u00e1rios n\u00e3o podem modificar o conte\u00fado dessa tabela.
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=N\u00e3o s\u00e3o permitidos par\u00e2metros na a\u00e7\u00e3o de disparo.
+42Y29=A lista SELECT de uma consulta n\u00e3o agrupada cont\u00e9m pelo menos uma express\u00e3o inv\u00e1lida.  Quando a lista SELECT contiver pelo menos uma agrega\u00e7\u00e3o, todas as entradas dever\u00e3o ser express\u00f5es de agrega\u00e7\u00e3o v\u00e1lidas.
+42Y30=A lista SELECT de uma consulta agrupada cont\u00e9m pelo menos uma express\u00e3o inv\u00e1lida.  Em uma lista SELECT com uma lista GROUP BY, SELECT pode conter apenas colunas de agrupamento e express\u00f5es de agrega\u00e7\u00e3o v\u00e1lidas.
+42Y32=A classe do agregador ''{0}'' para a agrega\u00e7\u00e3o ''{1}'' no tipo {2} n\u00e3o implementa com.ibm.db2j.aggregates.Aggregator.
+
+42Y33=A agrega\u00e7\u00e3o {0} cont\u00e9m uma ou mais agrega\u00e7\u00f5es.
+42Y34=O nome da coluna ''{0}'' corresponde a mais de uma coluna de resultados na tabela ''{1}''.
+42Y35=A refer\u00eancia da coluna ''{0}'' \u00e9 inv\u00e1lida. Quando a lista SELECT contiver pelo menos uma agrega\u00e7\u00e3o, todas as entradas dever\u00e3o ser express\u00f5es de agrega\u00e7\u00e3o v\u00e1lidas.
+42Y36=A refer\u00eancia da coluna ''{0}'' \u00e9 inv\u00e1lida. Em uma lista SELECT com uma lista GROUP BY, SELECT pode conter apenas colunas de agrupamento e express\u00f5es de agrega\u00e7\u00e3o v\u00e1lidas.
+42Y37=''{0}'' \u00e9 um primitivo Java e n\u00e3o pode ser utilizado com este operador.
+42Y38=insertMode = a substitui\u00e7\u00e3o n\u00e3o \u00e9 permitida em uma inser\u00e7\u00e3o cuja tabela de destino, ''{0}'', \u00e9 referida na lista SELECT.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' pode n\u00e3o ser exibido em uma defini\u00e7\u00e3o de CHECK CONSTRAINT pois ela poder\u00e1 retornar resultados n\u00e3o-determin\u00edsticos.
+42Y40=''{0}'' aparece diversas vezes na lista da coluna UPDATE OF para o disparo ''{1}''.
+42Y41=''{0}'' n\u00e3o pode ser chamado diretamente por meio da INSTRU\u00c7\u00c3O EXECUTE, pois ele faz parte de um disparo.
+42Y42=A escala ''{1}'' n\u00e3o \u00e9 uma escala v\u00e1lida para um {0}.
+42Y43=A escala ''{0}'' n\u00e3o \u00e9 uma escala v\u00e1lida com a precis\u00e3o de ''{1}''.
+42Y44=Chave inv\u00e1lida, ''{0}'', especificada da lista de propriedades da lista FROM. As chaves suportadas atualmente que fazem distin\u00e7\u00e3o entre mai\u00fasculas e min\u00fasculas s\u00e3o ''{1}''.
+42Y45=N\u00e3o \u00e9 poss\u00edvel ligar o VTI ''{0}'', pois ele \u00e9 um VTI de disparo especial e esta instru\u00e7\u00e3o n\u00e3o faz parte de uma a\u00e7\u00e3o de disparo ou cl\u00e1usula WHEN.
+42Y46=Lista de propriedades inv\u00e1lidas na lista FROM.  N\u00e3o h\u00e1 nenhum \u00edndice ''{0}'' na tabela ''{1}''.
+42Y48=Lista de propriedades inv\u00e1lidas na lista FROM.  N\u00e3o h\u00e1 nenhuma limita\u00e7\u00e3o nomeada ''{0}'' na tabela ''{1}'' ou a limita\u00e7\u00e3o n\u00e3o cont\u00e9m um \u00edndice auxiliar.
+42Y49=M\u00faltiplos valores especificados para a chave de propriedade ''{0}''.
+
+42Y50=A lista de propriedades da tabela ''{0}'' pode conter valores de \u00edndice ou de limita\u00e7\u00e3o, mas n\u00e3o ambos.
+42Y55=''{0}'' n\u00e3o pode ser executado em ''{1}'' porque ele n\u00e3o existe.
+42Y56=joinStrategy inv\u00e1lida, ''{0}'', especificada na lista de propriedades da tabela ''{1}''. Os valores atualmente suportados para joinStrategy s\u00e3o ''hash'', ''nestedloop''.
+42Y58=NumberFormatException ocorrida ao converter o valor ''{0}'' para a substitui\u00e7\u00e3o do otimizador ''{1}''.
+42Y59=Valor inv\u00e1lido, ''{0}'', especificado para a substitui\u00e7\u00e3o de hashInitialCapacity. O valor deve ser > 0.
+42Y60=Valor inv\u00e1lido, ''{0}'', especificado para a substitui\u00e7\u00e3o de hashLoadFactor. O valor deve ser > 0.0 e <= 1.0.
+42Y61=Valor inv\u00e1lido, ''{0}'', especificado para a substitui\u00e7\u00e3o de hashMaxCapacity. O valor deve ser > 0.
+42Y62=''{0}'' n\u00e3o \u00e9 permitido em ''{1}'' porque ele \u00e9 uma exibi\u00e7\u00e3o.
+42Y63=A jun\u00e7\u00e3o de sinais num\u00e9ricos exige um predicado equijoin otimiz\u00e1vel em uma coluna do \u00edndice ou heap selecionado.  Um predicado equijoin otimiz\u00e1vel n\u00e3o existe em nenhuma coluna da tabela ou \u00edndice ''{0}''. Utilize a substitui\u00e7\u00e3o do otimizador de ''\u00edndice'' para especificar um \u00edndice ou heap na tabela ''{1}''.
+42Y64=O valor ''{0}'' de bulkFetch \u00e9 inv\u00e1lido: o valor m\u00ednimo para bulkFetch \u00e9 1.
+42Y65=bulkFetch n\u00e3o \u00e9 permitido nas jun\u00e7\u00f5es ''{0}''.
+42Y66=bulkFetch n\u00e3o \u00e9 permitido em cursores que podem ser atualizados.
+42Y67=O esquema ''{0}'' n\u00e3o pode ser eliminado.
+42Y69=N\u00e3o foi encontrado nenhum plano de execu\u00e7\u00e3o v\u00e1lido para esta instru\u00e7\u00e3o. Pode ter um dos seguintes motivos: voc\u00ea especificou uma estrat\u00e9gia de jun\u00e7\u00e3o de sinais num\u00e9ricos quando uma jun\u00e7\u00e3o de sinais num\u00e9ricos n\u00e3o era permitida (nenhum equijoin otimiz\u00e1vel) ou voc\u00ea est\u00e1 tentando juntar duas ExternalVirtualTables, uma fazendo refer\u00eancia \u00e0 outra, e, portanto, a instru\u00e7\u00e3o n\u00e3o pode ser avaliada.
+42Y70=A ordena\u00e7\u00e3o de jun\u00e7\u00e3o especificada pelo usu\u00e1rio n\u00e3o \u00e9 uma ordena\u00e7\u00e3o de jun\u00e7\u00e3o legal. Isso pode ocorrer porque uma coluna de jun\u00e7\u00e3o de uma tabela interna est\u00e1 sendo transmitida como um par\u00e2metro para uma tabela virtual externa.
+42Y71=A fun\u00e7\u00e3o de sistema ou procedimento ''{0}'' n\u00e3o pode ser eliminada.
+42Y82=A instru\u00e7\u00e3o preparada armazenada e gerada no sistema ''{0}'' n\u00e3o pode ser eliminada com a INSTRU\u00c7\u00c3O DROP.  Ela faz parte de um disparo.
+42Y83=Um nulo sem tipo n\u00e3o \u00e9 permitido como um argumento para a agrega\u00e7\u00e3o {0}.  Especifique um tipo mais adequado para o nulo.
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' pode n\u00e3o aparecer em uma defini\u00e7\u00e3o DEFAULT.
+42Y85=A palavra-chave DEFAULT \u00e9 permitida apenas em uma cl\u00e1usula VALUES quando VALUES aparece dentro de uma instru\u00e7\u00e3o INSERT.
+42Y90=FOR UPDATE n\u00e3o \u00e9 permitida neste tipo de instru\u00e7\u00e3o.
+42Y91=A cl\u00e1usula USING n\u00e3o \u00e9 permitida em uma INSTRU\u00c7\u00c3O EXECUTE para uma a\u00e7\u00e3o de disparo.
+42Y92=Os disparos {0} podem fazer refer\u00eancia apenas \u00e0s tabelas/vari\u00e1veis de transi\u00e7\u00e3o {1}.
+42Y93=Cl\u00e1usula REFERENCING ilegal: \u00e9 permitido apenas um nome para cada tipo de tabela/vari\u00e1vel de transi\u00e7\u00e3o.
+42Y94=AND ou OR possui um operando que n\u00e3o \u00e9 booleano. Os operandos de AND e OR devem ser avaliados como TRUE, FALSE ou UNKNOWN.
+42Y95=O operador ''{0}'' com um tipo de operando \u00e0 esquerda de ''{1}'' e um tipo de operando \u00e0 direita de ''{2}'' n\u00e3o \u00e9 suportado.
+42Y96.U=UNKNOWN
+42Y97=Caractere de escape inv\u00e1lido na linha ''{0}'', coluna ''{1}''.
+42Y98.U=Encontrado "{0}" na linha {1}, coluna {2}
+42Y99.U=Erro lexical na linha {0}, coluna {1}.  Encontrado: {2}
+42Z00.U=Chamada de m\u00e9todo Java ou refer\u00eancia de campo
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=M\u00faltiplas agrega\u00e7\u00f5es DISTINCT n\u00e3o s\u00e3o suportadas ao mesmo tempo.
+42Z07=As agrega\u00e7\u00f5es n\u00e3o s\u00e3o permitidas na cl\u00e1usula ON.
+42Z08=A substitui\u00e7\u00e3o em massa da inser\u00e7\u00e3o n\u00e3o \u00e9 permitida em ''{0}'' porque ela possui um disparo ativado ({1}).
+42Z09.U=COLUMN DEFAULT para
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=fluxo
+
+# alter table modify column error messages.
+#####
+42Z15=Tipo Inv\u00e1lido especificado para a coluna ''{0}''. O tipo de uma coluna pode n\u00e3o ser alterado.
+42Z16=Apenas colunas do tipo VARCHAR podem ter seus comprimentos alterados. 
+42Z17=Comprimento Inv\u00e1lido especificado para a Coluna ''{0}''. O comprimento deve ser maior do que o comprimento da coluna atual
+42Z18=A coluna ''{0}'' faz parte de uma limita\u00e7\u00e3o da chave externa ''{1}''. Para alterar o comprimento dessa coluna, \u00e9 preciso eliminar primeiramente a limita\u00e7\u00e3o, executar ALTER TABLE e, em seguida, recriar a limita\u00e7\u00e3o.
+42Z19=A coluna ''{0}'' est\u00e1 sendo referida por pelo menos uma limita\u00e7\u00e3o da chave externa ''{1}''. Para alterar o comprimento dessa coluna, \u00e9 preciso eliminar as limita\u00e7\u00f5es que est\u00e3o fazendo refer\u00eancia, executar ALTER TABLE e, em seguida, recriar a limita\u00e7\u00e3o.
+42Z20=A coluna ''{0}'' n\u00e3o pode ser anul\u00e1vel. Ela faz parte de uma chave prim\u00e1ria que n\u00e3o pode ter nenhuma coluna anul\u00e1vel.
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE ''{0}'' especificou atributos para a coluna ''{1}'' que n\u00e3o s\u00e3o compat\u00edveis com a coluna existente.
+42Z21=Incremento inv\u00e1lido especificado para a identidade da coluna ''{0}''. A incrementa\u00e7\u00e3o deve ser diferente de zero.
+42Z22=Tipo inv\u00e1lido especificado para a coluna de identidade ''{0}''. OS \u00fanicos tipos v\u00e1lidos para as colunas de identidade s\u00e3o BIGINT, INT e SMALLINT.
+42Z23=Tentativa de modificar uma coluna de identidade ''{0}''. 
+42Z24=Estouro ocorrido no valor de identidade da coluna ''{1}'' na tabela ''{0}''.
+42Z25=ERRO INTERNO Contado de Identidade: Atualiza\u00e7\u00e3o chamada sem argumentos com o valor atual = NULL.
+42Z26=Uma coluna ''{0}'' com um padr\u00e3o de identidade n\u00e3o pode ser tornada nula.
+42Z27=Uma coluna anul\u00e1vel, ''{0}'', n\u00e3o pode ser modificada para ter a identidade padr\u00e3o.
+#####
+# end of identity error messages.
+
+42Z30.U=tempo gasto nessa ResultSet =
+42Z31.U=tempo gasto nessa ResultSet e abaixo =
+42Z32.U=divis\u00e3o total do tempo:
+
+42Z33.U=hor\u00e1rio do construtor (milissegundos) =
+42Z34.U=hor\u00e1rio de abertura (milissegundos) =
+42Z35.U=pr\u00f3ximo hor\u00e1rio (milissegundos) =
+42Z36.U=hor\u00e1rio de encerramento (milissegundos) =
+42Z37.U=Nenhum
+42Z38.U=As informa\u00e7\u00f5es sobre posicionamento n\u00e3o est\u00e3o dispon\u00edveis porque essa ResultSet nunca foi aberta.
+42Z39.U=Exce\u00e7\u00e3o inesperada {0} ao obter o posicionador.
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U={0} na(s) primeira(s) {1} coluna(s).
+42Z41.U=Sem\u00e2nticas nulas ordenadas nas seguintes colunas:
+
+42Z42.U=ID da coluna
+42Z43.U=Operador
+42Z44.U=Nulos ordenados
+42Z45.U=Valor de retorno desconhecido
+42Z46.U=Resultado de compara\u00e7\u00e3o negativo
+42Z47.U=A obten\u00e7\u00e3o do plano de consulta como uma Cadeia n\u00e3o \u00e9 atualmente suportada para {0}
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=Id da coluna [{0}][{1}]
+
+# matches DB2
+42939=N\u00e3o \u00e9 poss\u00edvel criar um objeto com o nome de esquema ''{0}''.
+
+
+
+
+42Z50=ERRO INTERNO: N\u00e3o \u00e9 poss\u00edvel gerar um c\u00f3digo para {0}.
+42Z53=ERRO INTERNO: N\u00e3o \u00e9 poss\u00edvel definir o tipo de ativa\u00e7\u00e3o que ser\u00e1 gerado para a op\u00e7\u00e3o de n\u00f3 {0}.
+42Z54.U=Esta exce\u00e7\u00e3o interrompe a instru\u00e7\u00e3o ap\u00f3s a an\u00e1lise - nenhum outro processo \u00e9 necess\u00e1rio.
+42Z55.U=Exce\u00e7\u00e3o interrompida ap\u00f3s a an\u00e1lise pela flag de depura\u00e7\u00e3o StopAfterParsing.
+42Z56.U=Exce\u00e7\u00e3o interrompida ap\u00f3s a liga\u00e7\u00e3o pela flag de depura\u00e7\u00e3o StopAfterBinding.
+42Z57.U=Exce\u00e7\u00e3o interrompida ap\u00f3s a otimiza\u00e7\u00e3o pela flag de depura\u00e7\u00e3o StopAfterOptimizing.
+42Z58.U=Exce\u00e7\u00e3o interrompida ap\u00f3s a gera\u00e7\u00e3o pela flag de depura\u00e7\u00e3o StopAfterGenerating.
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=seri\u00e1vel
+42Z81.U=leitura consolidada
+42Z82.U=exclusivo
+42Z83.U=compartilhamento instant\u00e2neo
+42Z84.U=compartilhar
+42Z85.U=tabela
+42Z86.U=linha
+42Z87.U=compartilhar tabela
+42Z88.U=compartilhar linha
+
+# More generic language stuff
+42Z90=A classe ''{0}'' n\u00e3o retorna uma ResultSet atualiz\u00e1vel.
+42Z91=subconsulta
+42Z92=leitura repet\u00edvel
+42Z9A=leitura n\u00e3o consolidada
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=A fun\u00e7\u00e3o solicitada n\u00e3o pode fazer refer\u00eancia a tabelas no esquema SESSION.
+# Declare global temporary table language stuff. Matches DB2
+428EK=O qualificador do nome de uma tabela tempor\u00e1ria global declarada deve ser SESSION.
+42995=A fun\u00e7\u00e3o solicitada n\u00e3o se aplica a tabelas tempor\u00e1rias globais.
+42962=Coluna com tipo de coluna longo ou par\u00e2metro ''{0}'' n\u00e3o s\u00e3o permitidos em tabelas tempor\u00e1rias globais declaradas ou em defini\u00e7\u00f5es de procedimento.
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=Anexado a
+43X01.U=N\u00famero Inicial de Subconsultas
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=ResultSet qualquer
+43X03.U=N\u00famero de aberturas
+43X04.U=Linhas exibidas
+43X05.U=Conjunto de resultados de origem
+43X06.U=N\u00famero Final de Subconsultas
+43X07.U=contagem de linhas estimadas pelo otimizador
+43X08.U=custo estimado pelo otimizador
+43X09.U=segundos
+43X10.U=Total
+43X11.U=N\u00f3
+43X12.U={0} n\u00e3o est\u00e1 atualmente implementado para {1}
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=Excluir ResultSet utilizando o
+43X14.U=bloqueio de tabelas
+43X15.U=bloqueio de linhas
+43X16.U=Linhas exclu\u00eddas
+43X17.U=deferidas
+43X18.U=\u00cdndices atualizados
+43X19.U=Excluir
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=ResultSet de Agrega\u00e7\u00e3o Escalar Distinta
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=Entrada de linhas
+43X22.U=Agrega\u00e7\u00e3o Escalar Distinta
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U=ResultSet de Varredura distinta para {0} utilizando {1} {2}
+43X24.U=limita\u00e7\u00e3o
+43X25.U=\u00edndice
+43X26.U=ResultSet de Varredura Distinta para {0}
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=no n\u00edvel de isolamento {0} utilizando o bloqueio {1}
+43X28.U=informa\u00e7\u00f5es de varredura
+43X29.U=A coluna distinta \u00e9 o n\u00famero de colunas
+43X30.U=As colunas distintas s\u00e3o os n\u00fameros de colunas
+43X31.U=Tamanho da tabela de sinais num\u00e9ricos
+43X32.U=Linhas filtradas
+43X33.U=pr\u00f3ximo hor\u00e1rio em milissegundos/linhas
+43X34.U=posi\u00e7\u00e3o inicial
+43X35.U=posi\u00e7\u00e3o de parada
+43X36.U=qualificadores de varredura
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=pr\u00f3ximos qualificadores
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=em {0} utilizando {1}
+43X39.U=Varredura Distinta
+43X40.U=Informa\u00e7\u00f5es de Ordena\u00e7\u00e3o
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=ResultSet de Agrega\u00e7\u00e3o em Grupo
+43X42.U=Possui agrega\u00e7\u00e3o distinta
+43X43.U=Na seq\u00fc\u00eancia de ordena\u00e7\u00e3o
+43X44.U=Agrega\u00e7\u00e3o em Grupo
+43X45.U=Jun\u00e7\u00e3o Existente de Sinais Num\u00e9ricos
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=ResultSet de Jun\u00e7\u00e3o Existente de Sinais Num\u00e9ricos
+43X47.U=Jun\u00e7\u00e3o de Sinais Num\u00e9ricos
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=ResultSet de Jun\u00e7\u00e3o de Sinais Num\u00e9ricos
+43X49.U=Jun\u00e7\u00e3o Externa Esquerda de Sinais Num\u00e9ricos
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=ResultSet de Jun\u00e7\u00e3o Externa Esquerda de Sinais Num\u00e9ricos
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U=ResultSet de Varredura de Sinais Num\u00e9ricos para {0} utilizando {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U=ResultSet de Varredura de Sinais Num\u00e9ricos para {0}
+43X53.U=A chave de sinais num\u00e9ricos \u00e9 o n\u00famero de colunas
+43X54.U=As chaves de sinais num\u00e9ricos s\u00e3o os n\u00fameros de colunas
+43X55.U=Varredura de Sinais Num\u00e9ricos
+43X56.U=Subconsultas anexadas
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=ResultSet da Tabela de Sinais Num\u00e9ricos
+43X58.U=Tabela de Sinais Num\u00e9ricos
+43X59.U=todos
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U=Indexar Linha para ResultSet de Linha Base para {0}
+43X61.U=Colunas acessadas a partir de heap
+#NOTE: {0} is a table name
+43X62.U=para {0}
+43X63.U=Indexar Linha para Linha Base
+43X64.U=modo de inser\u00e7\u00e3o: inser\u00e7\u00e3o em massa
+43X65.U=modo de inser\u00e7\u00e3o: normal (n\u00e3o \u00e9 poss\u00edvel executar a inser\u00e7\u00e3o em massa devido a uma tabela cheia)
+43X66.U=modo de inser\u00e7\u00e3o: normal
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=Inserir ResultSet utilizando
+43X68.U=Linhas inseridas
+43X69.U=Inserir
+43X70.U=Jun\u00e7\u00e3o
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=ResultSet de Varredura de \u00cdndice de Chaves Mais Recente para {0} utilizando o \u00edndice {1}
+43X72.U=no n\u00edvel de isolamento {0} utilizando o bloqueio {1} escolhido pelo otimizador
+43X73.U=Varredura de Tabela
+43X74.U=Varredura de \u00cdndice
+#NOTE: {0} is a table name or class name
+43X75.U=em {0}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=ResultSet Materializado
+43X77.U=tempo de cria\u00e7\u00e3o do aglomerado tempor\u00e1rio (milissegundos)
+43X78.U=tempo de busca do aglomerado tempor\u00e1rio (milissegundos)
+43X79.U=Linhas vistas da esquerda
+43X80.U=Linhas vistas da direita
+43X81.U=Linhas retornadas
+43X82.U=Conjunto de resultados \u00e0 esquerda
+43X83.U=Conjunto de resultados \u00e0 direita
+43X84.U=Jun\u00e7\u00e3o Existente de Loops Aninhados
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=ResultSet de Jun\u00e7\u00e3o Existente de Loops Aninhados
+43X86.U=Jun\u00e7\u00e3o de Loops Aninhados
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=ResultSet de Jun\u00e7\u00e3o de Loops Aninhados
+43X88.U=Linhas vazias retornadas \u00e0 direita
+43X89.U=Jun\u00e7\u00e3o Externa Esquerda de Loops Aninhados
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=ResultSet de Jun\u00e7\u00e3o Externa Esquerda de Loops Aninhados
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=Normalizar ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=ResultSet \u00danica
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=ResultSet Restrita ao Projeto
+43X94.U=restri\u00e7\u00e3o
+43X95.U=proje\u00e7\u00e3o
+43X96.U=tempo de restri\u00e7\u00e3o (milissegundos)
+43X97.U=tempo de proje\u00e7\u00e3o (milissegundos)
+43X98.U=Restrita ao Projeto
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=ResultSet de Linhas
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=ResultSet de Agrega\u00e7\u00e3o Escalar
+43Y01.U=Otimiza\u00e7\u00e3o da Chave de \u00cdndice
+43Y02.U=Agrega\u00e7\u00e3o Escalar
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=Rolar ResultSet Sem Diferencia\u00e7\u00e3o
+43Y04.U=N\u00famero de leituras a partir da tabela de sinais num\u00e9ricos
+43Y05.U=N\u00famero de grava\u00e7\u00f5es na tabela de sinais num\u00e9ricos
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=Ordenar ResultSet
+43Y07.U=Eliminar duplica\u00e7\u00f5es
+43Y08.U=Ordenar
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U=ResultSet de Varredura de \u00cdndice para {0} utilizando {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U=ResultSet de Varredura de Tabelas para {0}
+43Y11.U=Bloqueio real utilizado: bloqueio de n\u00edvel de tabela.
+43Y12.U=Tamanho da Busca
+43Y13.U=qualificadores
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=ResultSet de Uni\u00e3o
+43Y15.U=Uni\u00e3o
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=Atualizar ResultSet utilizando o bloqueio {0}
+43Y17.U=Linhas atualizadas
+43Y18.U=Atualizar
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U=ResultSet de VTI para {0}
+43Y20.U=VTI
+43Y21.U=Subconsultas materializadas
+43Y22.U=Nome da Instru\u00e7\u00e3o
+43Y23.U=Texto da Instru\u00e7\u00e3o
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=Tempo de An\u00e1lise
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=Tempo de Liga\u00e7\u00e3o
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=Tempo de Otimiza\u00e7\u00e3o
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=Tempo de Gera\u00e7\u00e3o
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=Tempo de Compila\u00e7\u00e3o
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=Tempo de Execu\u00e7\u00e3o
+43Y30.U=Data e Hora Iniciais de Compila\u00e7\u00e3o
+43Y31.U=Data e Hora Finais de Compila\u00e7\u00e3o
+43Y32.U=Data e Hora Iniciais de Execu\u00e7\u00e3o
+43Y33.U=Data e Hora Finais de Execu\u00e7\u00e3o
+43Y44.U=Texto de Planejamento de Execu\u00e7\u00e3o de Instru\u00e7\u00e3o
+43Y45.U=Executar 100% do Tempo, {0} segundos
+43Y46.U=Inserir ResultSet de VTI
+43Y47.U=Excluir ResultSet de VTI
+43Y49.U=Inserir VTI
+43Y50.U=Excluir VTI
+43Y51.U=Excluir Cascade ResultSet
+43Y52.U=Excluir Cascade ResultSet utilizando
+43Y53.U=A\u00e7\u00f5es Referenciais em Tabelas Dependentes
+43Y54.U=Come\u00e7ar A\u00e7\u00e3o Referencial em N\u00famero de Tabela Dependente
+43Y55.U=Finalizar A\u00e7\u00e3o Referencial em N\u00famero de Tabela Dependente
+
+54004=A instru\u00e7\u00e3o SELECT possui um n\u00famero excessivo de itens em GROUP BY, ORDER BY ou na lista de sele\u00e7\u00e3o.
+54008=A instru\u00e7\u00e3o CREATE INDEX especifica muitas colunas (16 \u00e9 o m\u00e1ximo).
+54023=O limite do n\u00famero de par\u00e2metros para um procedimento foi excedido. O limite \u00e9 {0} e o n\u00famero de par\u00e2metros para o procedimento {1} \u00e9 {2}.
+54038=Profundidade m\u00e1xima excedida para os disparadores aninhados.
+
+## all other org.apache.derby.catalog.types
+44X00.U=Nome do Tipo SQL
+44X05.U=pr\u00f3ximo erro
+
+X0X02.S=A tabela ''{0}'' n\u00e3o pode ser bloqueada no modo ''{1}''.
+X0X03.S=Estado de transa\u00e7\u00e3o inv\u00e1lido - o cursor suspenso requer o mesmo n\u00edvel de isolamento
+X0X05.S=A tabela ''{0}'' n\u00e3o existe.
+X0X0E.S=Posi\u00e7\u00e3o de coluna ''{0}'' listada na matriz de sele\u00e7\u00e3o de coluna autogerada n\u00e3o encontrada na tabela de inser\u00e7\u00e3o.
+X0X0F.S=Nome de coluna ''{0}'' listado na matriz de sele\u00e7\u00e3o de coluna autogerada n\u00e3o encontrada na tabela de inser\u00e7\u00e3o.
+X0X07.S=N\u00e3o \u00e9 poss\u00edvel eliminar o arquivo jar ''{0}'' porque ele est\u00e1 no db2j.database.classpath ''{0}''.
+X0X10.S=A cl\u00e1usula USING retornou mais de uma linha, s\u00e3o permitidas apenas ResultSets de linhas \u00fanicas.
+X0X11.S=A cl\u00e1usula USING n\u00e3o retornou nenhum resultado, nenhum par\u00e2metro pode ser definido.
+X0X13.S=O arquivo jar ''{0}'' n\u00e3o existe no esquema ''{1}''.
+X0X57.S=Houve uma tentativa de colocar um valor Java do tipo ''{0}'' em um valor SQL, mas n\u00e3o h\u00e1 nenhum tipo SQL correspondente.  O valor Java provavelmente \u00e9 o resultado de uma chamada de m\u00e9todo ou acesso de campo.
+X0X60.S=J\u00e1 existe um cursor com o nome ''{0}''.
+X0X61.S=Os valores da coluna ''{4}'' no \u00edndice ''{0}'' e na tabela ''{1}.{2}'' n\u00e3o correspondem \u00e0 localiza\u00e7\u00e3o de linhas {3}.  O valor no \u00edndice \u00e9 ''{5}'', enquanto na tabela base \u00e9 ''{6}''.  A chave completa do \u00edndice, incluindo a localiza\u00e7\u00e3o da linha, \u00e9 ''{7}''.   A a\u00e7\u00e3o de corre\u00e7\u00e3o sugerida \u00e9 a recria\u00e7\u00e3o do \u00edndice.
+X0X62.S=Inconsist\u00eancia encontrada entre a tabela ''{0}'' e o \u00edndice ''{1}''.  Erro ao tentar recuperar a localiza\u00e7\u00e3o da linha ''{2}'' a partir da tabela.  A chave completa do \u00edndice, incluindo a localiza\u00e7\u00e3o da linha, \u00e9 ''{3}''. A a\u00e7\u00e3o de corre\u00e7\u00e3o sugerida \u00e9 a recria\u00e7\u00e3o do \u00edndice.
+X0X63.S=Obtida IOException ''{0}''.
+X0X67.S=As colunas do tipo ''{0}'' podem n\u00e3o ser utilizadas em CREATE INDEX, ORDER BY, GROUP BY, UNION ou DISTINCT, pois n\u00e3o s\u00e3o suportadas compara\u00e7\u00f5es para esse tipo.
+X0X81.S={0} ''{1}'' n\u00e3o existe.
+X0X85.S=O \u00edndice ''{0}'' n\u00e3o foi criado porque ''{1}'' n\u00e3o \u00e9 um tipo v\u00e1lido de \u00edndice.
+X0X86.S=0 \u00e9 um valor de par\u00e2metro inv\u00e1lido para ResultSet.absolute(int row).
+X0X87.S=ResultSet.relative(int row) n\u00e3o pode ser chamado quando o cursor n\u00e3o estiver posicionado em uma linha.
+X0X95.S=A opera\u00e7\u00e3o ''{0}'' n\u00e3o pode ser executada no objeto ''{1}'', pois h\u00e1 uma ResultSet aberta, dependente desse objeto.
+X0X99.S=O \u00edndice ''{0}'' n\u00e3o existe.
+X0Y16.S=''{0}'' n\u00e3o \u00e9 uma exibi\u00e7\u00e3o.  Se for uma tabela, utilize DROP TABLE.
+X0Y23.S=A opera\u00e7\u00e3o ''{0}'' n\u00e3o pode ser executada no objeto ''{1}'', pois VIEW ''{2}'' \u00e9 dependente desse objeto.
+X0Y24.S=A opera\u00e7\u00e3o ''{0}'' n\u00e3o pode ser executada no objeto ''{1}'', pois STATEMENT ''{2}'' \u00e9 dependente desse objeto.
+X0Y25.S=A opera\u00e7\u00e3o ''{0}'' n\u00e3o pode ser executada no objeto ''{1}'', pois {2} ''{3}'' \u00e9 dependente desse objeto.
+X0Y26.S=Exige-se que o \u00edndice ''{0}'' esteja no mesmo esquema da tabela ''{1}''.
+X0Y28.S=O \u00edndice ''{0}'' n\u00e3o pode ser criado na tabela do sistema ''{1}''.  Os usu\u00e1rios n\u00e3o podem criar \u00edndices nas tabelas do sistema.
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' j\u00e1 existe em {2} ''{3}''.
+X0Y38.S=N\u00e3o \u00e9 poss\u00edvel criar o \u00edndice ''{0}'', pois a tabela ''{1}'' n\u00e3o existe.
+X0Y41.S=A limita\u00e7\u00e3o ''{0}'' \u00e9 inv\u00e1lida: a tabela referida {1} n\u00e3o possui nenhuma chave prim\u00e1ria.  Inclua uma chave prim\u00e1ria em {1} ou especifique explicitamente as colunas de uma limita\u00e7\u00e3o exclusiva \u00e0s quais essa chave externa faz refer\u00eancia.
+X0Y42.S=A limita\u00e7\u00e3o ''{0}'' \u00e9 inv\u00e1lida: os tipos de colunas da chave externa n\u00e3o correspondem aos tipos das colunas referenciadas.
+X0Y43.S=A limita\u00e7\u00e3o ''{0}'' \u00e9 inv\u00e1lida: o n\u00famero de colunas em {0} ({1}) n\u00e3o corresponde ao n\u00famero de colunas na chave referida ({2}).
+X0Y44.S=A limita\u00e7\u00e3o ''{0}'' \u00e9 inv\u00e1lida: n\u00e3o h\u00e1 nenhuma limita\u00e7\u00e3o de chave prim\u00e1ria ou exclusiva na tabela ''{1}'' que corresponda ao n\u00famero e aos tipos de colunas na chave externa.
+X0Y45.S=A limita\u00e7\u00e3o de chave externa ''{0}'' n\u00e3o pode ser inclu\u00edda ou ativada na tabela {1},  pois uma ou mais chaves externas n\u00e3o possuem refer\u00eancias a chaves correspondentes.
+X0Y46.S=A limita\u00e7\u00e3o ''{0}'' \u00e9 inv\u00e1lida: a tabela referida {1} n\u00e3o existe.
+X0Y54.S=O esquema ''{0}'' n\u00e3o pode ser eliminado porque ele n\u00e3o est\u00e1 vazio.
+X0Y55.S=O n\u00famero de linhas da tabela base n\u00e3o corresponde ao n\u00famero de linhas em pelo menos um dos \u00edndices da tabela. O \u00edndice ''{0}'' na tabela ''{1}.{2}'' possui {3} linhas, mas a tabela base possui {4} linhas.   A a\u00e7\u00e3o de corre\u00e7\u00e3o sugerida \u00e9 a recria\u00e7\u00e3o do \u00edndice.
+X0Y56.S=''{0}'' n\u00e3o \u00e9 permitido na tabela do sistema ''{1}''.
+X0Y57.S=Uma coluna n\u00e3o anul\u00e1vel n\u00e3o pode ser inclu\u00edda na tabela ''{0}'', pois a tabela cont\u00e9m pelo menos uma linha.  Colunas n\u00e3o anul\u00e1veis s\u00f3 podem ser inclu\u00eddas em tabelas vazias.
+X0Y58.S=A tentativa de incluir uma limita\u00e7\u00e3o de chave prim\u00e1ria \u00e0 tabela ''{0}'' falhou porque a tabela j\u00e1 tem uma limita\u00e7\u00e3o desse tipo. Uma tabela pode ter uma \u00fanica limita\u00e7\u00e3o de chave prim\u00e1ria.
+X0Y59.S=A tentativa de incluir ou ativar a(s) limita\u00e7\u00e3o(\u00f5es) na tabela ''{1}'' falhou porque a tabela cont\u00e9m {2} linha(s) que violam a(s) seguinte(s) limita\u00e7\u00e3o(\u00f5es) de verifica\u00e7\u00e3o: {0}.
+X0Y63.S=O comando na tabela ''{0}'' falhou. Foram encontrados dados nulos na chave prim\u00e1ria ou na(s) coluna(s) de \u00edndice/limita\u00e7\u00f5es exclusivas. Todas as colunas em uma chave prim\u00e1ria ou exclusiva n\u00e3o devem ser anul\u00e1veis.
+X0Y66.S=N\u00e3o \u00e9 poss\u00edvel emitir a consolida\u00e7\u00e3o em uma conex\u00e3o aninhada quando houver uma opera\u00e7\u00e3o pendente na conex\u00e3o pai.
+X0Y67.S=N\u00e3o \u00e9 poss\u00edvel emitir a a\u00e7\u00e3o de revers\u00e3o em uma conex\u00e3o aninhada quando houver uma opera\u00e7\u00e3o pendente na conex\u00e3o pai.
+X0Y68.S={0} ''{1}'' j\u00e1 existe.
+X0Y69.S={1} n\u00e3o \u00e9 permitido porque o disparo {0} est\u00e1 ativo em {2}.
+X0Y70.S=INSERT, UPDATE e DELETE n\u00e3o s\u00e3o permitidos na tabela {1} porque o disparo {0} est\u00e1 ativo.
+X0Y71.S=A manipula\u00e7\u00e3o da transa\u00e7\u00e3o, como SET ISOLATION, n\u00e3o \u00e9 permitida pois o disparador {0} est\u00e1 ativo.
+X0Y72.S=A substitui\u00e7\u00e3o em massa da inser\u00e7\u00e3o n\u00e3o \u00e9 permitida em ''{0}'' porque ela possui um disparo ativado ({1}).
+X0Y77.S=N\u00e3o \u00e9 poss\u00edvel emitir a a\u00e7\u00e3o de defini\u00e7\u00e3o da instru\u00e7\u00e3o de isolamento de transa\u00e7\u00e3o em uma transa\u00e7\u00e3o global que esteja em andamento, pois ela consolidaria implicitamente a transa\u00e7\u00e3o global.
+
+X0Y78.S=Statement.executeQuery() n\u00e3o pode ser chamado com uma instru\u00e7\u00e3o que retorna uma contagem de linha.
+X0Y79.S=Statement.executeUpdate() n\u00e3o pode ser chamado com uma instru\u00e7\u00e3o que retorna uma ResultSet.
+X0Y80.S=Falha na tabela ALTER ''{0}''. Encontrados dados nulos na coluna ''{1}''.
+X0Y83.S=AVISO: Durante a exclus\u00e3o de uma linha de uma tabela, a linha de \u00edndice da linha da tabela base {0} n\u00e3o foi encontrada no \u00edndice com o id aglomerado {1}.  Esse problema foi automaticamente corrigido como parte da opera\u00e7\u00e3o de exclus\u00e3o.
+XCL01.S=O resultado n\u00e3o retorna linhas; opera\u00e7\u00e3o {0} n\u00e3o permitida.
+XCL05.S=Ativa\u00e7\u00e3o encerrada, opera\u00e7\u00e3o {0} n\u00e3o permitida.
+XCL07.S=O cursor ''{0}'' est\u00e1 fechado. Verifique se a execu\u00e7\u00e3o autom\u00e1tica est\u00e1 DESATIVADA.
+XCL08.S=O cursor ''{0}'' n\u00e3o est\u00e1 em uma linha.
+XCL09.S=Uma ativa\u00e7\u00e3o foi transmitida ao m\u00e9todo ''{0}'' que n\u00e3o corresponde a PreparedStatement.
+XCL10.S=PreparedStatement foi recompilado e os par\u00e2metros foram alterados.  Se estiver utilizando o JDBC, \u00e9 necess\u00e1rio preparar a instru\u00e7\u00e3o novamente.
+XCL12.S=Houve uma tentativa de colocar um valor de dados do tipo ''{0}'' em um valor de dados do tipo ''{1}''.
+XCL13.S=A posi\u00e7\u00e3o do par\u00e2metro ''{0}'' est\u00e1 fora da faixa.  O n\u00famero de par\u00e2metros dessa instru\u00e7\u00e3o preparada \u00e9 ''{1}''.
+XCL15.S=ClassCastException ocorrida ao chamar o m\u00e9todo compareTo() em um objeto ''{0}''.  O par\u00e2metro para compareTo() \u00e9 da classe ''{1}''.
+XCL16.S=ResultSet fechada, opera\u00e7\u00e3o ''{0}'' n\u00e3o permitida. Verifique se a execu\u00e7\u00e3o autom\u00e1tica est\u00e1 DESATIVADA.
+XCL17.S=Instru\u00e7\u00e3o n\u00e3o permitida nesse banco de dados.
+XCL19.S=Linha ausente na tabela ''{0}'' para a chave ''{1}''.
+XCL20.S=Os cat\u00e1logos no n\u00edvel da vers\u00e3o ''{0}'' n\u00e3o podem ser atualizados para o n\u00edvel da vers\u00e3o ''{1}''.
+XCL21.S=Voc\u00ea est\u00e1 tentando executar uma instru\u00e7\u00e3o de defini\u00e7\u00e3o de dados (CREATE, DROP ou ALTER) durante a prepara\u00e7\u00e3o de uma instru\u00e7\u00e3o diferente. Isso n\u00e3o \u00e9 permitido. Isso pode ocorrer se voc\u00ea executar uma instru\u00e7\u00e3o de defini\u00e7\u00e3o de dados de dentro de um inicializador est\u00e1tico de uma classe Java que est\u00e1 sendo utilizada de dentro de uma instru\u00e7\u00e3o SQL.
+XCL22.S=O par\u00e2metro {0} n\u00e3o pode ser registrado como um par\u00e2metro OUT porque ele \u00e9 um par\u00e2metro IN.
+XCL23.S=O n\u00famero do tipo SQL ''{0}'' n\u00e3o \u00e9 um tipo suportado por registerOutParameter().
+XCL24.S=O par\u00e2metro {0} parece ser um par\u00e2metro de sa\u00edda, mas ele n\u00e3o foi designado por registerOutParameter().  Se ele n\u00e3o for um par\u00e2metro de sa\u00edda, ele dever\u00e1 ser definido como tipo {1}.
+XCL25.S=O par\u00e2metro {0} n\u00e3o pode ser registrado para ser do tipo {1} porque ele faz mapeamentos para o tipo {2} e eles s\u00e3o incompat\u00edveis.
+XCL26.S=O par\u00e2metro {0} n\u00e3o \u00e9 um par\u00e2metro de sa\u00edda.
+XCL27.S=Os par\u00e2metros de sa\u00edda retornados n\u00e3o podem ser definidos.
+XCL30.S=IOException foi lan\u00e7ada ao ler um ''{0}'' de um InputStream.
+XCL31.S=Instru\u00e7\u00e3o encerrada.
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=A tabela n\u00e3o pode ser definida como dependente da tabela {0} devido a restri\u00e7\u00f5es da regra de exclus\u00e3o. (O relacionamento \u00e9 auto-referenci\u00e1vel e um relacionamento auto-referenci\u00e1vel j\u00e1 existe na regra de exclus\u00e3o SET NULL.) 
+XCL34.S=A tabela n\u00e3o pode ser definida como dependente da tabela {0} devido a restri\u00e7\u00f5es da regra de exclus\u00e3o. (O relacionamento forma um ciclo de duas ou mais tabelas que fazem com que a tabela seja exclu\u00edda-conectada a si mesma (todas as outras regras de exclus\u00e3o no ciclo seriam CASCADE)). 
+XCL35.S=A tabela n\u00e3o pode ser definida como dependente da tabela {0} devido a restri\u00e7\u00f5es da regra de exclus\u00e3o. (O relacionamento faz com que a tabela seja exclu\u00edda-conectada \u00e0 tabela indicada atrav\u00e9s de diversos relacionamentos e a regra de exclus\u00e3o do relacionamento existente seja SET NULL.). 
+
+XCL36.S=a regra de exclus\u00e3o da chave externa ser {0}. (A restri\u00e7\u00e3o referencial \u00e9 auto-referenci\u00e1vel e uma restri\u00e7\u00e3o auto-referenci\u00e1vel existente cont\u00e9m a regra de exclus\u00e3o indicada (NO ACTION, RESTRICT ou CASCADE).) 
+XCL37.S=a regra de exclus\u00e3o da chave externa ser {0}. (A restri\u00e7\u00e3o referencial \u00e9 auto-referenci\u00e1vel e a tabela depende de um relacionamento com uma regra de exclus\u00e3o de CASCADE.)
+XCL38.S=a regra de exclus\u00e3o da chave externa ser {0}. (O relacionamento faria com que a tabela fosse exclu\u00edda-conectada \u00e0 mesma tabela atrav\u00e9s de diversos relacionamentos e tais relacionamentos devem ter a mesma regra de exclus\u00e3o (NO ACTION, RESTRICT ou CASCADE).) 
+
+XCL39.S=a regra de exclus\u00e3o da chave externa n\u00e3o pode ser CASCADE. (Existe uma restri\u00e7\u00e3o auto-referenci\u00e1vel com uma regra de exclus\u00e3o SET NULL, NO ACTION ou RESTRICT.) 
+XCL40.S=a regra de exclus\u00e3o da chave externa n\u00e3o pode ser CASCADE. (O relacionamento formaria um ciclo que faria com que a tabela fosse exclu\u00edda-conectada a si mesma. Uma das regras de exclus\u00e3o existentes no ciclo n\u00e3o \u00e9 CASCADE, portanto esse relacionamento pode ser defin\u00edvel se a regra de exclus\u00e3o n\u00e3o for CASCADE.) 
+XCL41.S=a regra de exclus\u00e3o da chave externa n\u00e3o pode ser CASCADE. (O relacionamento faria com que outra tabela fosse exclu\u00edda-conectada \u00e0 mesma tabela atrav\u00e9s de diversos caminhos com diferentes regras de exclus\u00e3o ou com a regra de exclus\u00e3o igual a SET NULL.) 
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=O uso de ''{0}'' requer o upgrade do banco de dados da vers\u00e3o {1} para a vers\u00e3o {2} ou posterior.
+
+XCL48.S= TRUNCATE TABLE n\u00e3o \u00e9 permitida em ''{0}'' porque restri\u00e7\u00f5es de chave exclusiva/principal nessa tabela s\u00e3o referidas por restri\u00e7\u00f5es de chave externa ativadas de outras tabelas.
+XCL49.S= TRUNCATE TABLE n\u00e3o \u00e9 permitida em ''{0}'' porque ela possui um acionador DELETE ativado ({1}).
+XCL50.S=O upgrade do banco de dados a partir de uma vers\u00e3o anterior n\u00e3o \u00e9 suportado. O banco de dados acessado est\u00e1 no n\u00edvel de vers\u00e3o ''{0}'' - este software est\u00e1 no n\u00edvel de vers\u00e3o ''{1}''.
+
+
+# Transaction states, matches DB2
+25000=Estado inv\u00e1lido de transa\u00e7\u00e3o.
+
+# Authorization
+25501=N\u00e3o \u00e9 poss\u00edvel definir a propriedade da conex\u00e3o como somente leitura em uma transa\u00e7\u00e3o ativa.
+25502=Uma altera\u00e7\u00e3o nos dados SQL n\u00e3o \u00e9 permitida para um banco de dados, usu\u00e1rio ou conex\u00e3o somente leitura.
+25503=A DDL n\u00e3o \u00e9 permitida em um banco de dados, usu\u00e1rio ou conex\u00e3o somente leitura.
+25505=Um usu\u00e1rio somente leitura ou um usu\u00e1rio em um banco de dados somente leitura n\u00e3o pode desativar o modo somente leitura em uma conex\u00e3o.
+28501=Propriedade de autoriza\u00e7\u00e3o de banco de dados inv\u00e1lida ''{0}={1}''.
+28502.C=O nome do usu\u00e1rio ''{0}'' n\u00e3o \u00e9 v\u00e1lido. 
+28503=O(s) usu\u00e1rio(s) ''{0}'' n\u00e3o deve(m) estar nas listas de autoriza\u00e7\u00f5es de acesso completo e somente leitura.
+28504=Usu\u00e1rio(s) repetido(s) ''{1}'' na lista de acesso ''{0}'';
+04501.C=Conex\u00e3o ao banco de dados recusada.
+
+
+# Dependency Manager
+XD003.S=N\u00e3o \u00e9 poss\u00edvel restaurar a depend\u00eancia do disco. DependableFinder = ''{0}''. Informa\u00e7\u00f5es adicionais: ''{1}''.
+XD004.S=N\u00e3o \u00e9 poss\u00edvel armazenar depend\u00eancias.
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=Estado do cursor inv\u00e1lido - nenhuma linha atual.
+
+07000=Pelo menos um par\u00e2metro n\u00e3o pode ser inicializado para a instru\u00e7\u00e3o atual.
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=O par\u00e2metro {0} \u00e9 um par\u00e2metro de procedimento {1} e deve ser registrado com CallableStatement.registerOutParameter antes da execu\u00e7\u00e3o.
+
+07009=Nenhum par\u00e2metro de entrada.
+
+S0022=A coluna ''{0}'' n\u00e3o foi encontrada.
+XJ009.S=O uso do CallableStatement requerido para chamada de procedimento armazenado ou uso de par\u00e2metros de sa\u00edda: {0}
+XJ010.S=N\u00e3o \u00e9 poss\u00edvel emitir savepoint quando o autoCommit est\u00e1 ativo.
+XJ011.S=N\u00e3o \u00e9 poss\u00edvel transmitir nulo para o nome do savepoint.
+XJ012.S=''{0}'' j\u00e1 est\u00e1 fechado.
+XJ013.S=Nenhum ID para savepoints nomeados.
+XJ014.S=Nenhum nome para savepoints n\u00e3o nomeados.
+XJ016.S=O m\u00e9todo ''{0}'' n\u00e3o \u00e9 permitido na instru\u00e7\u00e3o preparada.
+XJ017.S=Nenhum comando de savepoint permitido dentro do c\u00f3digo de acionador.
+XJ018.S=O nome da coluna n\u00e3o pode ser nulo.
+XJ020.S=Tipo de objeto que n\u00e3o pode ser convertido para o TIPO ''{0}'', valor de java.sql.Types era inv\u00e1lido ou o objeto era nulo.
+XJ022.S=N\u00e3o \u00e9 poss\u00edvel definir o fluxo: ''{0}''.
+XJ023.S=Fluxo de entrada cont\u00e9m menos dados do que o comprimento solicitado.
+XJ025.S=O fluxo de entrada n\u00e3o pode ter comprimento negativo.
+XJ030.S=N\u00e3o \u00e9 poss\u00edvel definir AUTOCOMMIT ON durante uma conex\u00e3o aninhada.
+XJ042.S=''{0}'' n\u00e3o \u00e9 um valor v\u00e1lido para a propriedade ''{1}''.
+XJ044.S=''{0}'' \u00e9 uma escala inv\u00e1lida.
+XJ045.S=N\u00edvel de isolamento (atualmente) n\u00e3o suportado ou inv\u00e1lido, ''{0}'', transmitido para Connection.setTransactionIsolationLevel(). Os valores atualmente suportados s\u00e3o java.sql.Connection.TRANSACTION_SERIALIZABLE, java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED e java.sql.Connection.TRANSACTION_READ_UNCOMMITTED.
+XJ04B.S=O batch n\u00e3o pode conter um comando que tenta retornar um conjunto de resultados.
+XJ04C.S=O batch CallableStatement n\u00e3o pode conter par\u00e2metros de sa\u00edda.
+XJ056.S=N\u00e3o \u00e9 poss\u00edvel definir AUTOCOMMIT ON durante uma conex\u00e3o XA.
+XJ057.S=N\u00e3o \u00e9 poss\u00edvel executar uma transa\u00e7\u00e3o global utilizando a conex\u00e3o, o processo de execu\u00e7\u00e3o deve continuar na interface XAResource.
+XJ058.S=N\u00e3o \u00e9 poss\u00edvel reverter uma transa\u00e7\u00e3o global utilizando a conex\u00e3o, o processo de execu\u00e7\u00e3o deve continuar na interface XAResource.
+XJ059.S=N\u00e3o \u00e9 poss\u00edvel fechar uma conex\u00e3o enquanto uma transa\u00e7\u00e3o global ainda estiver ativa.
+XJ05C.S=N\u00e3o \u00e9 poss\u00edvel definir a capacidade de reten\u00e7\u00e3o do ResultSet.HOLD_CURSORS_OVER_COMMIT para uma transa\u00e7\u00e3o global.
+XJ061.S=O m\u00e9todo ''{0}'' \u00e9 permitido apenas nos cursores de rolagem.
+XJ062.S=Valor de par\u00e2metro inv\u00e1lido ''{0}'' para ResultSet.setFetchSize(int rows).
+XJ063.S=Valor de par\u00e2metro inv\u00e1lido ''{0}'' para Statement.setMaxRows(int maxRows).  O valor do par\u00e2metro deve ser >= 0.
+XJ064.S=Valor de par\u00e2metro inv\u00e1lido ''{0}'' para setFetchDirection(int direction).
+XJ065.S=Valor de par\u00e2metro inv\u00e1lido ''{0}'' para Statement.setFetchSize(int rows).
+XJ066.S=Valor de par\u00e2metro inv\u00e1lido ''{0}'' para Statement.setMaxFieldSize(int max).
+XJ067.S=O ponteiro de texto SQL \u00e9 nulo.
+XJ068.S=Somente executeBatch e clearBatch s\u00e3o permitidos no meio de um batch.
+XJ069.S=Nenhum m\u00e9todo SetXXX \u00e9 permitido em caso de Utiliza\u00e7\u00e3o de Instru\u00e7\u00e3o de Execu\u00e7\u00e3o.
+XJ080.S=A Utiliza\u00e7\u00e3o de Instru\u00e7\u00e3o de Execu\u00e7\u00e3o transmitiu {0} par\u00e2metros em vez de {1}.
+XJ070.S=Argumento com posicionamento negativo ou sem posicionamento ''{0}'' transmitido em um m\u00e9todo Blob ou Clob.
+XJ071.S=Argumento com comprimento negativo ou sem comprimento ''{0}'' transmitido em um m\u00e9todo Blob ou Clob.
+XJ072.S=Padr\u00e3o nulo ou searchStr transmitido em um m\u00e9todo Blob ou Clob com posicionamento.
+XJ073.S=Os dados nesse m\u00e9todo Blob ou Clob n\u00e3o est\u00e3o mais dispon\u00edveis. Raz\u00f5es poss\u00edveis s\u00e3o: sua transa\u00e7\u00e3o foi executada ou sua conex\u00e3o foi fechada.
+XJ076.S=O argumento de posicionamento ''{0}'' excede o tamanho de Blob/Clob.
+XJ077.S=Exce\u00e7\u00e3o obtida ao tentar ler o primeiro byte/caractere do padr\u00e3o Blob/Clob utilizando getBytes/getSubString.
+XJ082.U=Valores de BLOB/CLOB n\u00e3o s\u00e3o permitidos como par\u00e2metros ou receptores de m\u00e9todos.
+
+0A000.S=Recurso n\u00e3o implementado: {0}.
+
+XJ004.C=Banco de dados ''{0}'' n\u00e3o encontrado.
+08004=Conex\u00e3o recusada : {0}
+A020=Autentica\u00e7\u00e3o inv\u00e1lida.
+08003=Nenhuma conex\u00e3o atual.
+XJ028.C=O URL ''{0}'' n\u00e3o est\u00e1 no formato correto.
+XJ040.C=Falha ao iniciar o banco de dados ''{0}''. Consulte a pr\u00f3xima exce\u00e7\u00e3o para obter detalhes.
+XJ041.C=Falha ao criar o banco de dados ''{0}''. Consulte a pr\u00f3xima exce\u00e7\u00e3o para obter detalhes.
+XJ049.C=Conflito entre atributos de cria\u00e7\u00e3o especificados.
+XJ081.C=Atributos create/restore/recovery conflitantes foram especificados.
+XJ05B.C=O atributo JDBC ''{0}'' possui um valor inv\u00e1lido ''{1}''. Os valores v\u00e1lidos s\u00e3o ''{2}''.
+
+XXXXX.C.6=Encerramento normal da sess\u00e3o do banco de dados.
+
+08006.D=Encerramento do banco de dados ''{0}''.
+
+XJ015.M=Encerramento do sistema Derby.
+
+01J01=O banco de dados ''{0}'' n\u00e3o foi criado, foi feita a conex\u00e3o com um banco de dados existente.
+01J02=Cursores sens\u00edveis \u00e0 rolagem n\u00e3o est\u00e3o atualmente implementados.
+01J03=ResultSets atualiz\u00e1veis n\u00e3o est\u00e3o atualmente implementadas.
+01J04=A classe ''{0}'' da coluna ''{1}'' n\u00e3o implementa java.io.Serializable ou java.sql.SQLData. As inst\u00e2ncias devem implementar uma dessas interfaces para permitir que elas sejam armazenadas.
+01J05=\u00caxito no upgrade do banco de dados. O banco de dados cujo upgrade foi executado est\u00e1 pronto para ser utilizado. Falha na revalida\u00e7\u00e3o das instru\u00e7\u00f5es preparadas armazenadas. Consulte a pr\u00f3xima exce\u00e7\u00e3o para obter detalhes sobre a falha. 
+XJ001.U=Exce\u00e7\u00e3o Java: ''{1}: {0}''.
+XJ050.U=O banco de dados requer upgrade da vers\u00e3o {0}, defina o atributo ''upgrade=true'' no URL da conex\u00e3o JDBC para permitir o upgrade para a vers\u00e3o {1}.
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=Permiss\u00e3o desconhecida ''{0}''.
+XCZ01.S=Usu\u00e1rio desconhecido ''{0}''.
+XCZ02.S=Par\u00e2metro inv\u00e1lido ''{0}''=''{1}''.
+
+# SQL J Jar support
+46001=Exce\u00e7\u00e3o ocorrida ao acessar o arquivo jar utilizando a URL ''{0}''.
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  INICIAR MENSAGEM DE ERRO -------------\n
+L002=------------  FINALIZAR MENSAGEM DE ERRO -------------\n
+L003=\n------------  INICIAR PILHA DE ERROS DE ENCERRAMENTO -------------\n
+L004=\n------------  FINALIZAR PILHA DE ERROS DE ENCERRAMENTO -------------\n
+L005=\n------------  INICIAR PILHA DE ERROS -------------\n
+L006=\n------------  FINALIZAR PILHA DE ERROS -------------\n
+L007=AVISO: Arquivo de log n\u00e3o encontrado, criando novo log. Poss\u00edvel inconsist\u00eancia no banco de dados
+L008=Excluindo Logfile antigo incompat\u00edvel {0}
+L009=Excluindo Logfile antigo {0}
+L010=Registro de log incompleto detectado no arquivo {0} removendo arquivo de log da posi\u00e7\u00e3o {1} para eof em {2}.
+L011=O daemon do ponto de verifica\u00e7\u00e3o obteve uma exce\u00e7\u00e3o padr\u00e3o
+L012=o registro de log N\u00e3o \u00e9 o primeiro, mas a transa\u00e7\u00e3o n\u00e3o est\u00e1 na tabela de transa\u00e7\u00e3o : {0}
+L013=o registro de log \u00e9 o primeiro, mas a transa\u00e7\u00e3o j\u00e1 est\u00e1 na tabela de transa\u00e7\u00e3o : {0}
+L014=Inst\u00e2ncia inicial incorreta
+L015=existe um novo arquivo de log e ele n\u00e3o pode ser exclu\u00eddo {0}
+L016=n\u00e3o \u00e9 poss\u00edvel criar um novo arquivo de log {0}
+L017=n\u00e3o \u00e9 poss\u00edvel criar um novo arquivo de log {0} devido a {1}
+L018=O sistema pode estar em um estado inconsistente, arquivo {0} ausente
+
+# Class Manager
+C000=Classe {0}  gravada para o arquivo {1}. Forne\u00e7a suporte com o arquivo e com as seguintes informa\u00e7\u00f5es de exce\u00e7\u00e3o: {2}
+C001=A classe {0} tem um tipo de certificado desconhecido no jar {1}, exceto o certificado X509.
+C002=Exce\u00e7\u00e3o de seguran\u00e7a lan\u00e7ada ao acessar a classe {0} no jar {1} : {2}
+C003=Exce\u00e7\u00e3o ao carregar jar {0} - {1} do banco de dados
+C004=Carregador de classe stale para classe {0}
+C005=Carregador de Classes do Banco de Dados iniciado - derby.database.classpath=''{0}''
+C006={0} carregado a partir do jar {1} do banco de dados
+C007=Exce\u00e7\u00e3o ao carregar a classe {0} a partir do jar {1} - {2}
+
+# RawStore Data
+
+D001=:\n Reinicializando a vers\u00e3o {0} do Derby: inst\u00e2ncia {1}\nno diret\u00f3rio de banco de dados {2} \n
+D002=:\nEncerrando a inst\u00e2ncia {0}
+D004=Backup iniciado para o banco de dados localizado em {0}
+D005=backup antigo movido de {0} para {1}
+D006=diret\u00f3rio de banco de dados copiado de {0} para {1}
+D007=banco de dados service.properties editado para utilizar o dispositivo de log padr\u00e3o
+D008=erro ao editar o banco de dados service.properties, backup interrompido: {0}
+D009=diret\u00f3rio de log copiado de {0} para {1}
+D010=Backup interrompido devido a um erro
+D011=backup antigo removido em {0}
+D012=Backup conclu\u00eddo, inst\u00e2ncia de log em {0} \n
+
+# Connectivity 
+J004=identidade do banco de dados
+J005=encerrar Derby
+J007=criar banco de dados
+J008=nenhum detalhe
+J010=criptografar banco de dados no disco
+J013=fazer upgrade do banco de dados
+J016=provedor de servi\u00e7os criptografados
+J017=algoritmo criptografado
+J018=comprimento de chave criptografada
+J019=chave externa criptografada
+J020=chave secreta criptografada
+J021=territ\u00f3rio do banco de dados
+J022=nome do usu\u00e1rio
+J023=senha do usu\u00e1rio
+J025=registrar caminho do diret\u00f3rio
+J028=caminho de backup para recupera\u00e7\u00e3o de avan\u00e7o
+J100=Imposs\u00edvel localizar a classe de servidor de rede, {0}. Seu caminho de classe deve conter csnet.jar.
+J101=Imposs\u00edvel carregar a classe de servidor de rede, {0}. {1}  Verifique a integridade de seu arquivo csnet.jar.
+J102=Uma exce\u00e7\u00e3o foi lan\u00e7ada durante a inicializa\u00e7\u00e3o do servidor de rede. {0}
+J103=Uma exce\u00e7\u00e3o foi lan\u00e7ada durante o encerramento do servidor de rede. {0}
+
+# Authentication
+A001=FATAL: N\u00e3o h\u00e1 nenhum Servi\u00e7o de Autentica\u00e7\u00e3o para o sistema
+A002=FATAL: N\u00e3o h\u00e1 nenhum Servi\u00e7o de Autentica\u00e7\u00e3o para o banco de dados
+A011=AVISO: Nenhum nome de Host/Servidor LDAP mencionado na propriedade {0}; assumindo localhost:389
+
+I015=org.apache.derby.jdbc.EmbeddedDriver n\u00e3o est\u00e1 registrado com o gerenciador do driver JDBC
+I024=O banco de dados n\u00e3o est\u00e1 dispon\u00edvel
+I025=O driver JDBC n\u00e3o est\u00e1 dispon\u00edvel
+
+# Import/Export
+XIE01.S=A conex\u00e3o era nula.
+XIE03.S=Dados encontrados na linha {0} da coluna {1} ap\u00f3s o delimitador de parada
+XIE04.S=Arquivo de dados n\u00e3o encontrado: {0}
+XIE05.S=O arquivo de dados n\u00e3o pode ser nulo.
+XIE06.S=O nome da entidade era nulo.
+XIE07.S=Os separadores de registros e campos n\u00e3o podem ser subcadeias uns dos outros.
+XIE08.S=N\u00e3o existe nenhuma coluna por nome: {0}
+XIE09.S=O n\u00famero total de colunas na linha \u00e9: {0}
+XIE0B.S=A coluna ''{0}'' na tabela \u00e9 do tipo {1}, ela n\u00e3o \u00e9 suportada pela importa\u00e7\u00e3o/exporta\u00e7\u00e3o.
+XIE0D.S=N\u00e3o \u00e9 poss\u00edvel encontrar o separador de registro na linha {0}
+XIE0E.S=endOfFile lido em local inesperado na linha {0}
+XIE0I.S=IOException obtido ao gravar dados no arquivo
+XIE0J.S=Um delimitador n\u00e3o \u00e9 v\u00e1lido ou foi utilizado mais de uma vez.
+XIE0K.S=O per\u00edodo foi especificado como delimitador de cadeia de caracteres.
+XIE0M.S=A tabela ''{0}'' n\u00e3o existe.
+
+# Monitor
+M001=\n# *****************************************************************************\n# ***                N\u00c3O edite este arquivo.                                ***\n# *** A ALTERA\u00c7\u00c3O DO CONTE\u00daDO DESSE ARQUIVO PODE CAUSAR CORRUP\u00c7\u00c3O DE DADOS. ***\n# *****************************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_qq_PP_testOnly.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_qq_PP_testOnly.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+#
+# Test Only messages file where we replace the text of a couple of messages with
+# a different "language".
+#
+#
+
+# A warning - NOTE we reverse the arguments {0], {1}
+01J04=Column ''{1}'' declared as class ''{0}'' does not implement java.io.Serializable.
+
+#An error
+42X01=Error of syntax: {0}.
+#a different error...
+42831=like message in en_US locale: ''{0}'' cannot be a column of a primary key or unique key because it can contain null values.

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_zh_CN.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_zh_CN.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1251 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=\u7531\u4e8e\u5f02\u5e38\u5bfc\u81f4\u542f\u52a8\u5931\u8d25\uff0c\u67e5\u770b\u4e0b\u4e00\u4e2a\u5f02\u5e38\uff0c\u4ee5\u83b7\u5f97\u8be6\u7ec6\u4fe1\u606f\u3002
+XBM02.D=\u7531\u4e8e\u7f3a\u5c11 {0} \u7684\u529f\u80fd\u5bfc\u81f4\u542f\u52a8\u5931\u8d25\u3002\u8bf7\u786e\u4fdd\u60a8\u7684\u7c7b\u8def\u5f84\u5305\u542b\u6b63\u786e\u7684 Derby \u8f6f\u4ef6\u3002
+XBM05.D=\u7531\u4e8e\u7f3a\u5c11 {0} \u7684\u4ea7\u54c1\u7248\u672c\u4fe1\u606f\u5bfc\u81f4\u542f\u52a8\u5931\u8d25\u3002
+XBM06.D=\u542f\u52a8\u5931\u8d25\uff0c\u6ca1\u6709\u6b63\u786e\u7684\u5f15\u5bfc\u5bc6\u7801\uff0c\u65e0\u6cd5\u8bbf\u95ee\u52a0\u5bc6\u7684\u6570\u636e\u5e93\u3002
+XBM07.D=\u542f\u52a8\u5931\u8d25\uff0c\u5f15\u5bfc\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c11\u8981 8 \u4e2a\u5b57\u8282\u3002
+XBM08.D=\u65e0\u6cd5\u5b9e\u4f8b\u5316 {0} StorageFactory \u7c7b {1}\u3002
+
+XBM0G.D=\u65e0\u6cd5\u542f\u52a8\u52a0\u5bc6\u5f15\u64ce\u3002\u8bf7\u786e\u4fdd\u60a8\u6b63\u5728\u8fd0\u884c Java 2\uff0c\u800c\u4e14\u5df2\u4e0b\u8f7d\u52a0\u5bc6\u63d0\u4f9b\u7a0b\u5e8f\uff08\u5982 jce\uff09\uff0c\u5e76\u5c06\u5b83\u653e\u5165\u60a8\u7684\u7c7b\u8def\u5f84\u3002
+XBM0H.D=\u65e0\u6cd5\u521b\u5efa\u76ee\u5f55 {0}\u3002
+XBM0I.D=\u65e0\u6cd5\u9664\u53bb\u76ee\u5f55 {0}\u3002
+XBM0J.D=\u76ee\u5f55 {0} \u5df2\u5b58\u5728\u3002
+XBM0K.D=\u6570\u636e\u5e93\u540d\u79f0 {0} \u7684\u5b50\u534f\u8bae\u672a\u77e5\u3002
+XBM0L.D=\u6307\u5b9a\u7684\u8ba4\u8bc1\u65b9\u6848\u7c7b {0} \u5b9e\u73b0\u8ba4\u8bc1\u63a5\u53e3 {1}\u3002
+XBM0M.D=\u521b\u5efa\u8ba4\u8bc1\u65b9\u6848\u7c7b {0} \u7684\u5b9e\u4f8b\u65f6\u51fa\u9519\u3002
+XBM0N.D=\u5e26\u6709 java.sql.DriverManager \u7684 JDBC \u9a71\u52a8\u7a0b\u5e8f\u6ce8\u518c\u5931\u8d25\uff0c\u67e5\u770b\u4e0b\u4e00\u4e2a\u5f02\u5e38\uff0c\u4ee5\u83b7\u5f97\u8be6\u7ec6\u4fe1\u606f\u3002
+XBM0P.D=\u670d\u52a1\u63d0\u4f9b\u7a0b\u5e8f\u662f\u53ea\u8bfb\u7684\uff0c\u64cd\u4f5c\u4e0d\u5141\u8bb8\u3002
+XBM0S.D=\u65e0\u6cd5\u5c06\u6587\u4ef6\u201c{0}\u201d\u91cd\u547d\u540d\u4e3a\u201c{1}\u201d
+XBM0T.D=\u6570\u636e\u5e93\u540d {0} \u7684\u5b50\u534f\u8bae\u4e0d\u660e\u786e\u3002
+XBM0U.S=\u6ca1\u6709\u4e3a\u6807\u8bc6 {0} \u6ce8\u518c\u7c7b
+XBM0V.S=\u88c5\u5165\u4e3a\u6807\u8bc6 {0} \u6ce8\u518c\u7684\u7c7b {1} \u65f6\u629b\u51fa\u5f02\u5e38
+XBM0W.S=\u521b\u5efa\u4e3a\u6807\u8bc6 {0} \u6ce8\u518c\u7684\u7c7b {1} \u7684\u5b9e\u4f8b\u65f6\u629b\u51fa\u5f02\u5e38
+XBM0X.D=\u63d0\u4f9b\u7684\u5730\u57df\u63cf\u8ff0\u201c{0}\u201d\u65e0\u6548\uff0c\u671f\u5f85 ln[_CO[_variant]]\nln=lower-case two-letter ISO-639 language code, CO=upper-case two-letter ISO-3166 country codes\uff0c\u8bf7\u53c2\u9605 java.util.Locale\u3002
+XBM0Y.D=\u672a\u627e\u5230\u5907\u4efd\u6570\u636e\u5e93\u76ee\u5f55 {0}\u3002\u8bf7\u786e\u4fdd\u6307\u5b9a\u7684\u5907\u4efd\u8def\u5f84\u662f\u6b63\u786e\u7684\u3002
+XBM0Z.D=\u65e0\u6cd5\u5c06\u6587\u4ef6\u201c{0}\u201d\u590d\u5236\u5230\u201c{1}\u201d\u3002\u8bf7\u786e\u4fdd\u6709\u8db3\u591f\u7684\u7a7a\u95f4\uff0c\u800c\u4e14\u8bb8\u53ef\u6743\u662f\u6b63\u786e\u7684\u3002
+XBM0Q.D=\u672a\u627e\u5230\u6587\u4ef6 {0}\u3002\u8bf7\u786e\u4fdd\u5907\u4efd\u526f\u672c\u662f\u6b63\u786e\u7684\u800c\u4e14\u672a\u635f\u574f\u3002
+XBM0R.D=\u65e0\u6cd5\u9664\u53bb\u6587\u4ef6 {0}\u3002
+
+# Upgrade
+XCW00.D=\u4e0d\u652f\u6301\u4ece\u201c{0}\u201d\u5347\u7ea7\u5230\u201c{1}\u201d\u3002
+
+# Feature not supported
+
+
+# COntext service
+08000=\u672a\u77e5\u4e2d\u65ad\u5173\u95ed\u8fde\u63a5\u3002
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=\u7531\u4e8e\u6b7b\u9501\u5bfc\u81f4\u65e0\u6cd5\u83b7\u53d6\u9501\uff0c\u9501\u5b9a\u548c\u7b49\u5f85\u5668\u7684\u5468\u671f\u4e3a\uff1a\n{0}\u6240\u9009\u53d7\u5f71\u54cd\u8005\u4e3a XID\uff1a{1}
+
+40XL1=\u8bf7\u6c42\u7684\u65f6\u95f4\u5185\u65e0\u6cd5\u83b7\u53d6\u9501
+40XL2=\u8bf7\u6c42\u7684\u65f6\u95f4\u5185\u65e0\u6cd5\u83b7\u53d6\u9501\u3002lockTable \u8f6c\u50a8\u4e3a\uff1a{0}
+
+# ClassManager
+XBCM1.S=\u5df2\u751f\u6210\u7c7b {0} \u7684\u88c5\u5165\u671f\u95f4\u629b\u51fa Java \u94fe\u63a5\u9519\u8bef\u3002
+XBCM2.S=\u65e0\u6cd5\u521b\u5efa\u5df2\u751f\u6210\u7c7b {0} \u7684\u5b9e\u4f8b\u3002
+XBCM3.S=\u5df2\u751f\u6210\u7c7b {0} \u4e2d\u4e0d\u5b58\u5728\u65b9\u6cd5 {1}()\u3002
+
+# Properties
+
+XCY00.S=\u5c5e\u6027\u201c{0}\u201d=\u201c{1}\u201d\u7684\u503c\u65e0\u6548\u3002
+XCY02.S=\u4e0d\u652f\u6301\u8bf7\u6c42\u7684\u5c5e\u6027\u66f4\u6539\u201c{0}\u201d=\u201c{1}\u201d\u3002
+XCY03.S=\u672a\u8bbe\u7f6e\u8bf7\u6c42\u7684\u5c5e\u6027\u201c{0}\u201d\u3002
+
+# Cryptography
+XBCX0.S=\u5bc6\u7801\u672f\u63d0\u4f9b\u7a0b\u5e8f\u629b\u51fa\u4e86\u5f02\u5e38\uff0c\u67e5\u770b\u4e0b\u4e00\u4e2a\u5f02\u5e38\uff0c\u4ee5\u83b7\u5f97\u8be6\u7ec6\u4fe1\u606f\u3002
+XBCX1.S=\u5bc6\u7801\u662f\u4f7f\u7528\u975e\u6cd5\u65b9\u5f0f\u521d\u59cb\u5316\u7684\uff0c\u5fc5\u987b\u4e3a ENCRYPT \u6216 DECRYPT\u3002
+XBCX2.S=\u521d\u59cb\u5316\u5bc6\u7801\u65f6\u4f7f\u7528\u7684\u5f15\u5bfc\u5bc6\u7801\u592a\u77ed\uff0c\u957f\u5ea6\u5fc5\u987b\u81f3\u5c11 {0} \u4e2a\u5b57\u7b26
+XBCX5.S=\u4e0d\u80fd\u5c06\u5f15\u5bfc\u5bc6\u7801\u66f4\u6539\u4e3a\u7a7a\u3002
+XBCX6.S=\u4e0d\u80fd\u5c06\u5f15\u5bfc\u5bc6\u7801\u66f4\u6539\u4e3a\u975e\u5b57\u7b26\u4e32\u53ef\u5e8f\u5217\u5316\u7c7b\u578b\u3002
+XBCX7.S=\u66f4\u6539\u5f15\u5bfc\u5bc6\u7801\u7684\u683c\u5f0f\u9519\u8bef\u3002\u683c\u5f0f\u5fc5\u987b\u4e3a\uff1aold_boot_password, new_boot_password\u3002
+XBCX8.S=\u4e0d\u80fd\u66f4\u6539\u975e\u52a0\u5bc6\u6570\u636e\u5e93\u7684\u5f15\u5bfc\u5bc6\u7801\u3002
+XBCX9.S=\u4e0d\u80fd\u66f4\u6539\u53ea\u8bfb\u6570\u636e\u5e93\u7684\u5f15\u5bfc\u5bc6\u7801\u3002
+XBCXA.S=\u5f15\u5bfc\u5bc6\u7801\u9519\u8bef\u3002
+XBCXB.S=\u52a0\u5bc6\u586b\u5145\u201c{0}\u201d\u9519\u8bef\uff0c\u6216\u672a\u6307\u5b9a\u586b\u5145\u3002\u5fc5\u987b\u4f7f\u7528\u201cNoPadding\u201d\u3002
+XBCXC.S=\u52a0\u5bc6\u7b97\u6cd5\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002\u8bf7\u68c0\u67e5\u6240\u9009\u63d0\u4f9b\u7a0b\u5e8f\u201c{1}\u201d\u652f\u6301\u6b64\u7b97\u6cd5\u3002
+XBCXD.S=\u521b\u5efa\u6570\u636e\u5e93\u540e\uff0c\u4e0d\u80fd\u66f4\u6539\u52a0\u5bc6\u7b97\u6cd5\u3002
+XBCXE.S=\u521b\u5efa\u6570\u636e\u5e93\u540e\uff0c\u4e0d\u80fd\u66f4\u6539\u52a0\u5bc6\u63d0\u4f9b\u7a0b\u5e8f\u3002
+XBCXF.S=\u627e\u4e0d\u5230\u8868\u793a\u52a0\u5bc6\u63d0\u4f9b\u7a0b\u5e8f\u7684\u7c7b\u201c{0}\u201d\u3002
+XBCXG.S=\u52a0\u5bc6\u63d0\u4f9b\u7a0b\u5e8f\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002
+XBCXH.S=encryptionAlgorithm\u201c{0}\u201d\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\u3002\u6b63\u786e\u683c\u5f0f\u4e3a algorithm/feedbackMode/NoPadding\u3002
+XBCXI.S=\u4e0d\u652f\u6301\u53cd\u9988\u65b9\u5f0f\u201c{0}\u201d\u3002\u652f\u6301\u7684\u53cd\u9988\u65b9\u5f0f\u4e3a CBC\u3001CFB\u3001OFB \u548c ECB\u3002
+XBCXJ.S=\u5e94\u7528\u7a0b\u5e8f\u4f7f\u7528\u65e9\u4e8e 1.2.1 \u7248\u672c\u7684 Java \u5bc6\u7801\u672f\u6269\u5c55\uff08JCE\uff09\u3002\u8bf7\u5347\u7ea7\u5230 JCE 1.2.1\uff0c\u7136\u540e\u91cd\u8bd5\u64cd\u4f5c\u3002
+XBCXK.S=\u63d0\u4f9b\u7684\u52a0\u5bc6\u5bc6\u94a5\u4e0e\u521b\u5efa\u6570\u636e\u5e93\u65f6\u4f7f\u7528\u7684\u52a0\u5bc6\u5bc6\u94a5\u4e0d\u4e00\u81f4\u3002\u8bf7\u786e\u4fdd\u60a8\u4f7f\u7528\u7684\u662f\u6b63\u786e\u7684\u52a0\u5bc6\u5bc6\u94a5\uff0c\u7136\u540e\u91cd\u8bd5\u3002
+XBCXL.S=\u9a8c\u8bc1\u52a0\u5bc6\u5bc6\u94a5\u7684\u8fc7\u7a0b\u4e0d\u6210\u529f\uff0c\u53c2\u89c1\u4e0b\u4e00\u4e2a\u5f02\u5e38\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u8bbf\u95ee\u9002\u5f53\u7684\u6587\u4ef6\u4ee5\u6267\u884c\u9a8c\u8bc1\u8fc7\u7a0b\u65f6\u51fa\u9519\u3002
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=\u65e0\u6cd5\u4f7f\u7528 {0} \u9ad8\u901f\u7f13\u5b58\u4e2d\u7684\u952e {1} \u521b\u5efa\u65b0\u5bf9\u8c61\uff0c\u5b83\u5728\u9ad8\u901f\u7f13\u5b58\u4e2d\u5df2\u5b58\u5728\u3002
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=\u8bf7\u6c42\u7684 Conglomerate\uff08{0}\uff09\u4e0d\u5b58\u5728\u3002
+XSAI3.S=\u529f\u80fd\u672a\u5b9e\u73b0\u3002
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=\u626b\u63cf\u7c7b\u578b
+XSAJ1.U=\u8bbf\u95ee\u7684\u9875\u6570
+XSAJ2.U=\u8bbf\u95ee\u7684\u884c\u6570
+XSAJ3.U=\u8bbf\u95ee\u7684\u5df2\u5220\u9664\u884c\u6570
+XSAJ4.U=\u5408\u683c\u7684\u884c\u6570
+XSAJ5.U=\u53d6\u51fa\u7684\u5217\u6570
+XSAJ6.U=\u6240\u53d6\u51fa\u5217\u7684\u4f4d\u8bbe\u7f6e
+XSAJ7.U=\u6811\u9ad8\u5ea6
+XSAJ8.U=\u6392\u5e8f\u7c7b\u578b
+XSAJA.U=\u8f93\u5165\u7684\u884c\u6570
+XSAJB.U=\u8f93\u51fa\u7684\u884c\u6570
+XSAJC.U=\u8fd0\u884c\u7684\u5408\u5e76\u6570
+XSAJD.U=\u8fd0\u884c\u7684\u5408\u5e76\u5927\u5c0f
+XSAJE.U=\u6240\u6709
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=\u5806
+XSAJH.U=\u6392\u5e8f
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=\u5916\u90e8\u7684
+XSAJJ.U=\u5185\u90e8\u7684
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=XA \u534f\u8bae\u8fdd\u89c4\u3002
+XSAX1.S=\u5c1d\u8bd5\u7528\u73b0\u6709\u5168\u5c40\u4e8b\u52a1\u7684 Xid \u542f\u52a8\u5168\u5c40\u4e8b\u52a1\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=\u5c1d\u8bd5\u4e3a\u201c{0}\u201d\u5f15\u5bfc\u6a21\u5757\u65f6\u9047\u5230\u5f02\u5e38\u3002
+XSAM2.S=\u4e0d\u5b58\u5728\u8981\u5220\u9664\u7684\u805a\u96c6\u6807\u8bc6\u4e3a\u201c{0}\u201d\u7684\u7d22\u5f15\u6216 Conglomerate\u3002
+XSAM3.S=\u4e0d\u5b58\u5728\u805a\u96c6\u6807\u8bc6\u4e3a\u201c{0}\u201d\u7684\u7d22\u5f15\u6216 Conglomerate\u3002
+XSAM4.S=\u4e0d\u5b58\u5728\u79f0\u4e3a\u201c{0}\u201d\u7684\u6392\u5e8f\u3002
+XSAM5.S=\u5728\u8fdb\u884c\u5176\u5b83\u8c03\u7528\u524d\uff0c\u5fc5\u987b\u901a\u8fc7\u8c03\u7528 next() \u6253\u5f00\u5e76\u5b9a\u4f4d\u626b\u63cf\u3002
+XSAM6.S=\u5bb9\u5668 {0} \u4e2d\u9875 {1} \u4e0a\u7684\u8bb0\u5f55 {2} \u672a\u627e\u5230\u3002
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=\u65e0\u6cd5\u521b\u5efa\u6a21\u677f\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=\u529f\u80fd\u672a\u5b9e\u73b0\u3002
+XSCH7.S=\u626b\u63cf\u672a\u5b9a\u4f4d\u3002
+XSCH6.S=\u5bb9\u5668\u6807\u8bc6\u4e3a {0} \u7684\u5806\u5bb9\u5668\u5173\u95ed\u3002
+XSCH5.S=\u5728\u57fa\u672c\u8868\u4e2d\uff0c\u8bf7\u6c42\u7684\u5217\u6570 {0} \u548c\u6700\u5927\u5217\u6570 {1} \u4e4b\u95f4\u4e0d\u5339\u914d\u3002
+XSCH4.S=\u65e0\u6cd5\u521b\u5efa Conglomerate\u3002
+XSCH1.S=\u5bb9\u5668 {0} \u672a\u627e\u5230\u3002
+XSCH0.S=\u65e0\u6cd5\u521b\u5efa\u5bb9\u5668\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=\u4e13\u4f9b\u6d4b\u8bd5\u3002
+XSCB8.S=btree Conglomerate {0} \u5173\u95ed\u3002
+XSCB7.S=btree \u626b\u63cf\u671f\u95f4\u9047\u5230\u5185\u90e8\u9519\u8bef \uff0d current_rh \u4e3a\u7a7a = {0}\uff0c\u4f4d\u7f6e\u952e\u4e3a\u7a7a = {1}\u3002
+XSCB6.S=\u5c40\u9650\u6027\uff1a\u7531\u4e8e\u9875\u4e0a\u7a7a\u95f4\u7684\u7f3a\u4e4f\uff0c\u5bfc\u81f4\u65e0\u6cd5\u66f4\u65b0\u6216\u63d2\u5165 btree \u6b21\u7d22\u5f15\u7684\u8bb0\u5f55\u3002\u4f7f\u7528\u53c2\u6570 derby.storage.pageSize \u548c\uff0f\u6216 derby.storage.pageReservedSpace \u4ee5\u6d88\u9664\u8fd9\u79cd\u5c40\u9650\u6027\u3002
+XSCB5.S=btree \u63d2\u5165\u6216\u5220\u9664\u7684\u903b\u8f91\u64a4\u9500\u671f\u95f4\uff0c\u6811\u4e2d\u627e\u4e0d\u5230\u884c\u3002
+XSCB4.S=\u5728\u7b2c\u4e00\u884c\u4e0a\u5b9a\u4f4d\u626b\u63cf\u524d\uff08\u5373\uff0c\u8fd8\u672a\u8fdb\u884c next() \u8c03\u7528\uff09\uff0c\u5df2\u8c03\u7528 btree \u6253\u5f00\u626b\u63cf\u7684\u65b9\u6cd5\u3002\u626b\u63cf\u7684\u5f53\u524d\u72b6\u6001\u4e3a\uff08{0}\uff09\u3002
+XSCB3.S=\u672a\u5b9e\u73b0\u7684\u529f\u80fd\u3002
+XSCB2.S=\u4e3a btreen \u6b21\u7d22\u5f15\u7684 createConglomerate() \u7ed9\u5b9a\u7684\u5c5e\u6027\u5217\u8868\u4e2d\u672a\u627e\u5230\u5fc5\u9700\u7684\u5c5e\u6027 {0}\u3002
+XSCB1.S=\u5bb9\u5668 {0} \u672a\u627e\u5230\u3002
+XSCB0.S=\u65e0\u6cd5\u521b\u5efa\u5bb9\u5668\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=\u65e0\u6cd5\u4e3a\u6392\u5e8f\u83b7\u53d6\u8d44\u6e90\u3002
+XSAS3.S=\u63d2\u5165\u5230\u67d0\u4e2a\u6392\u5e8f\u4e2d\u7684\u884c\u7684\u7c7b\u578b\u4e0e\u8be5\u6392\u5e8f\u7684\u6a21\u677f\u4e0d\u5339\u914d\u3002
+XSAS1.S=\u5c1d\u8bd5\u5728\u6392\u5e8f\u524d\u6216\u6392\u5e8f\u7ed3\u675f\u540e\u53d6\u51fa\u884c\u3002
+XSAS0.S=\u8c03\u7528\u5bf9\u6b64\u6392\u5e8f\u4e0a\u7684\u626b\u63cf\u4e0d\u9002\u7528\u7684\u626b\u63cf\u63a7\u5236\u5668\u63a5\u53e3\u65b9\u6cd5\u3002
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=\u5728\u6570\u636e\u5e93\u5df2\u51bb\u7ed3\u540e\uff0c\u65e0\u6cd5\u51bb\u7ed3\u5b83\u3002
+XSRS1.S=\u65e0\u6cd5\u5c06\u6570\u636e\u5e93\u5907\u4efd\u5230 {0}\uff0c\u5b83\u4e0d\u662f\u4e00\u4e2a\u76ee\u5f55\u3002
+XSRS4.S=\u5c06\u6587\u4ef6\uff08\u5907\u4efd\u671f\u95f4\uff09\u4ece {0} \u91cd\u547d\u540d\u4e3a {1} \u65f6\u51fa\u9519\u3002
+XSRS5.S=\u5c06\u6587\u4ef6\uff08\u5907\u4efd\u671f\u95f4\uff09\u4ece {0} \u590d\u5236\u5230 {1} \u65f6\u51fa\u9519\u3002
+XSRS6.S=\u65e0\u6cd5\u521b\u5efa\u5907\u4efd\u76ee\u5f55 {0}\u3002
+XSRS7.S=\u5907\u4efd\u6355\u83b7\u610f\u5916\u5f02\u5e38\u3002
+XSRS8.S=\u4ec5\u80fd\u5728\u6570\u636e\u5e93\u521b\u5efa\u671f\u95f4\u8bbe\u7f6e\u201c\u65e5\u5fd7\u8bbe\u5907\u201d\uff0c\u5728\u5de5\u4f5c\u4e2d\u5b83\u65e0\u6cd5\u66f4\u6539\u3002
+XSRS9.S=\u8bb0\u5f55 {0} \u4e0d\u518d\u5b58\u5728
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=\u65e0\u6cd5\u518d\u53d1\u51fa\u4efb\u4f55\u66f4\u6539\uff0c\u65e5\u5fd7\u5de5\u5382\u5df2\u505c\u6b62\u3002
+XSLB8.S=\u5c1d\u8bd5\u5c06\u626b\u63cf\u590d\u4f4d\u5230 {0}\uff0c\u8d85\u51fa\u5176\u9650\u5236 {1}\u3002
+XSLB6.S=\u5c1d\u8bd5\u8bb0\u5f55 0 \u6216 -ve \u957f\u5ea6\u7684\u65e5\u5fd7\u8bb0\u5f55\u3002
+XSLB5.S=\u622a\u65ad\u70b9 {0} \u7684 truncationLWM \u65f6\u523b {1} \u975e\u6cd5\u3002\u5408\u6cd5\u8303\u56f4\u662f\u4ece {2} \u5230 {3}\u3002
+XSLB4.S=\u627e\u4e0d\u5230 truncationLWM {0}\u3002
+XSLB2.S=\u8bb0\u5f55\u64cd\u4f5c {0} \u8bb0\u5f55\u8fc7\u591a\u6570\u636e\uff0c\u5b83\u586b\u6ee1\u5185\u90e8\u65e5\u5fd7\u7f13\u51b2\u533a\u3002
+XSLB1.S=\u8bb0\u5f55\u64cd\u4f5c {0} \u5c06\u81ea\u8eab\u5199\u51fa\u5230\u65e5\u5fd7\u6d41\u65f6\u9047\u5230\u9519\u8bef\uff0c\u8fd9\u53ef\u80fd\u662f\u9519\u8bef\u7684\u8bb0\u5f55\u64cd\u4f5c\u5bfc\u81f4\u7684\uff0c\u6216\u8005\u7531\u4e8e\u8fc7\u5927\u7684\u8bb0\u5f55\u64cd\u4f5c\u5bfc\u81f4\u5185\u90e8\u65e5\u5fd7\u7f13\u51b2\u533a\u6ee1\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=\u65e5\u5fd7\u76ee\u5f55 {0} \u5df2\u5b58\u5728\u3002\u8bf7\u786e\u4fdd\u6307\u5b9a\u7684 logDevice \u4f4d\u7f6e\u662f\u6b63\u786e\u7684\u3002
+XSLAS.D=\u590d\u539f\u671f\u95f4\uff0c\u5907\u4efd\u4e2d\u672a\u627e\u5230\u65e5\u5fd7\u76ee\u5f55 {0}\u3002\u8bf7\u786e\u4fdd\u5907\u4efd\u526f\u672c\u662f\u6b63\u786e\u7684\u800c\u4e14\u672a\u635f\u574f\u3002
+XSLAR.D=\u590d\u539f\u671f\u95f4\uff0c\u65e0\u6cd5\u5c06\u65e5\u5fd7\u6587\u4ef6\u201c{0}\u201d\u590d\u5236\u5230\u201c{1}\u201d\u3002\u8bf7\u786e\u4fdd\u6709\u8db3\u591f\u7684\u7a7a\u95f4\uff0c\u800c\u4e14\u8bb8\u53ef\u6743\u662f\u6b63\u786e\u7684\u3002
+XSLAQ.D=\u65e0\u6cd5\u5728\u76ee\u5f55 {0} \u4e0a\u521b\u5efa\u65e5\u5fd7\u6587\u4ef6\u3002
+XSLAP.D={0} \u4e0a\u7684\u6570\u636e\u5e93\u7248\u672c\u4e3a {1}\u3002Beta \u7248\u6570\u636e\u5e93\u65e0\u6cd5\u5347\u7ea7\uff0c
+XSLAO.D=\u6062\u590d\u5931\u8d25\uff0c\u53d1\u751f\u610f\u5916\u95ee\u9898 {0}\u3002
+XSLAN.D={0} \u4e0a\u7684\u6570\u636e\u5e93\u5177\u6709\u4e0e\u5f53\u524d\u7248\u672c\u7684\u8f6f\u4ef6\u4e0d\u517c\u5bb9\u7684\u683c\u5f0f\u3002\u6570\u636e\u5e93\u7531\u7248\u672c {1} \u521b\u5efa\u6216\u5347\u7ea7\u3002
+XSLAM.D=\u7531\u4e8e IOException \u5bfc\u81f4\u65e0\u6cd5\u9a8c\u8bc1 {1} \u4e0a\u7684\u6570\u636e\u5e93\u683c\u5f0f\u3002
+XSLAL.D=\u65e5\u5fd7\u8bb0\u5f55\u5927\u5c0f {2} \u8d85\u51fa\u6240\u5141\u8bb8\u7684\u6700\u5927\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f {3}\u3002\u65e5\u5fd7\u6587\u4ef6 {0} \u4f4d\u7f6e {1} \u4e2d\u9047\u5230\u9519\u8bef
+XSLAK.D=\u6570\u636e\u5e93\u5df2\u8d85\u51fa\u6700\u5927\u65e5\u5fd7\u6587\u4ef6\u6570 {0}\u3002
+XSLAJ.D=\u7531\u4e8e\u65e9\u671f\u95ee\u9898\uff0c\u8bb0\u5f55\u7cfb\u7edf\u5df2\u6807\u8bb0\u4e3a\u5173\u95ed\uff0c\u800c\u4e14\u5c06\u4e0d\u5141\u8bb8\u4efb\u4f55\u66f4\u591a\u7684\u64cd\u4f5c\uff0c\u76f4\u5230\u7cfb\u7edf\u5173\u95ed\u548c\u91cd\u65b0\u542f\u52a8\u3002
+XSLAI.D=\u65e0\u6cd5\u8bb0\u5f55\u68c0\u67e5\u70b9\u65e5\u5fd7\u8bb0\u5f55
+XSLAH.D=\u6b63\u5728\u66f4\u65b0\u53ea\u8bfb\u6570\u636e\u5e93\u3002
+XSLAF.D=\u4f7f\u7528\u810f\u6570\u636e\u7f13\u51b2\u533a\u521b\u5efa\u4e86\u53ea\u8bfb\u6570\u636e\u5e93\u3002
+XSLAE.D=\u65e0\u6cd5\u5199\u6216\u66f4\u65b0 {0} \u4e0a\u7684\u63a7\u5236\u6587\u4ef6\u3002
+XSLAD.D=\u65e5\u5fd7\u6587\u4ef6 {3} \u4e2d\u65f6\u523b {2} \u4e0a\u7684\u65e5\u5fd7\u8bb0\u5f55\u5df2\u635f\u574f\u3002\u671f\u5f85\u7684\u65e5\u5fd7\u8bb0\u5f55\u957f\u5ea6 {0}\uff0c\u771f\u5b9e\u957f\u5ea6 {1}\u3002
+XSLAC.D={0} \u4e0a\u7684\u6570\u636e\u5e93\u5177\u6709\u4e0e\u5f53\u524d\u7248\u672c\u7684\u8f6f\u4ef6\u4e0d\u517c\u5bb9\u7684\u683c\u5f0f\uff0c\u5b83\u53ef\u80fd\u5df2\u7531\u6700\u65b0\u7248\u672c\u521b\u5efa\u6216\u5347\u7ea7\u3002
+XSLAB.D=\u627e\u4e0d\u5230\u65e5\u5fd7\u6587\u4ef6 {0}\uff0c\u8bf7\u786e\u8ba4\u60a8\u7684 logDevice \u5c5e\u6027\u8bbe\u7f6e\u6b63\u786e\uff0c\u4f7f\u7528\u4e86\u5f53\u524d\u5e73\u53f0\u7684\u6b63\u786e\u8def\u5f84\u5206\u9694\u7b26\u3002
+XSLAA.D=\u5b58\u50a8\u5df2\u88ab\u4ee5\u524d\u7684\u5f02\u5e38\u6807\u8bb0\u4e3a\u5173\u95ed\u3002
+XSLA8.D=\u65e0\u6cd5\u56de\u6eda\u4e8b\u52a1 {0}\uff0c\u5c1d\u8bd5\u4f7f\u7528 {2} \u8865\u507f {1} \u64cd\u4f5c
+XSLA7.D=\u65e0\u6cd5\u5728\u65e5\u5fd7\u4e2d\u91cd\u505a\u64cd\u4f5c {0}\u3002
+XSLA6.D=\u65e0\u6cd5\u6062\u590d\u6570\u636e\u5e93\u3002
+XSLA5.D=\u7531\u4e8e\u4e00\u4e9b\u539f\u56e0\u5bfc\u81f4\u65e0\u6cd5\u8bfb\u53d6\u65e5\u5fd7\u6d41\uff0c\u4ee5\u56de\u6eda\u4e8b\u52a1 {0}\u3002
+XSLA4.D=\u65e0\u6cd5\u5199\u5165\u65e5\u5fd7\uff0c\u5f88\u53ef\u80fd\u65e5\u5fd7\u5df2\u6ee1\u3002\u8bf7\u5220\u9664\u4e0d\u9700\u8981\u7684\u6587\u4ef6\u3002\u4e5f\u53ef\u80fd\u662f\u6587\u4ef6\u7cfb\u7edf\u4e3a\u53ea\u8bfb\uff0c\u6216\u8005\u78c1\u76d8\u53d1\u751f\u6545\u969c\uff0c\u6216\u8005\u4ecb\u8d28\u7684\u4e00\u4e9b\u5176\u5b83\u95ee\u9898\u3002
+XSLA3.D=\u65e5\u5fd7\u5df2\u635f\u574f\uff0c\u65e5\u5fd7\u6d41\u4e2d\u5177\u6709\u65e0\u6548\u6570\u636e\u3002
+XSLA2.D=\u7cfb\u7edf\u5c06\u5173\u95ed\uff0c\u5728\u8bbf\u95ee\u65e5\u5fd7\u6587\u4ef6\u65f6\u83b7\u53d6 I/O \u5f02\u5e38\u3002
+XSLA1.D=\u65e5\u5fd7\u8bb0\u5f55\u5df2\u53d1\u9001\u5230\u6d41\uff0c\u4f46\u662f\u5b83\u65e0\u6cd5\u5e94\u7528\u5230\u5b58\u50a8\uff08\u5bf9\u8c61 {0}\uff09\u3002\u8fd9\u53ef\u80fd\u4e5f\u5bfc\u81f4\u6062\u590d\u95ee\u9898\u3002
+XSLA0.D=\u65e0\u6cd5\u5c06\u65e5\u5fd7\u6587\u4ef6\u6e05\u4ed3\u5230\u78c1\u76d8 {0}\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=\u5f53\u524d\u4e8b\u52a1\u4e2d\u5df2\u5b58\u5728\u5e26\u6709\u6240\u4f20\u9012\u540d\u79f0\u7684 SAVEPOINT\u3002
+3B502.S=RELEASE \u6216 ROLLBACK TO SAVEPOINT \u5df2\u6307\u5b9a\uff0c\u4f46\u662f savepoint \u4e0d\u5b58\u5728\u3002
+3B001.S=SAVEPOINT {0} \u4e0d\u5b58\u5728\u6216\u8005\u5728\u5f53\u524d\u4e8b\u52a1\u4e2d\u672a\u6d3b\u52a8\u3002
+3B002.S=\u5df2\u8fbe\u5230\u6700\u5927\u4fdd\u5b58\u70b9\u6570\u3002
+XSTA2.S=\u5f53\u5c1d\u8bd5\u4f7f\u53e6\u4e00\u4e2a\u4e8b\u52a1\u6d3b\u52a8\u65f6\uff0c\u4e8b\u52a1\u5df2\u6d3b\u52a8\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=RawStore \u6a21\u5757\u6807\u8bc6\u5185\u90e8\u9519\u8bef\u3002
+40XT1=\u4e8b\u52a1\u843d\u5b9e\u671f\u95f4\u629b\u51fa\u5f02\u5e38\u3002
+40XT2=SAVEPOINT \u56de\u6eda\u671f\u95f4\u629b\u51fa\u5f02\u5e38\u3002
+40XT4=\u5c1d\u8bd5\u5173\u95ed\u4ecd\u7136\u6d3b\u52a8\u7684\u4e8b\u52a1\uff0c\u4e8b\u52a1\u5df2\u5f02\u5e38\u7ec8\u6b62\u3002
+40XT5=\u5185\u90e8\u4e8b\u52a1\u671f\u95f4\u629b\u51fa\u5f02\u5e38\u3002
+40XT6=\u6570\u636e\u5e93\u5904\u4e8e\u9759\u6b62\u72b6\u6001\uff0c\u65e0\u6cd5\u6fc0\u6d3b\u4e8b\u52a1\u3002\u8bf7\u7a0d\u7b49\u7247\u523b\uff0c\u76f4\u5230\u5b83\u9000\u51fa\u9759\u6b62\u72b6\u6001\u3002
+40XT7=\u5185\u90e8\u4e8b\u52a1\u4e2d\u4e0d\u652f\u6301\u64cd\u4f5c\u3002
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=\u6807\u8bc6\u65e0\u6548\u3002
+XCXB0.S=\u6570\u636e\u5e93\u7c7b\u8def\u5f84\u201c{0}\u201d\u65e0\u6548\u3002
+XCXC0.S=\u6807\u8bc6\u5217\u8868\u65e0\u6548\u3002
+XCXE0.S=\u60a8\u6b63\u5728\u5c1d\u8bd5\u6267\u884c\u7684\u64cd\u4f5c\u4f7f\u7528\u6570\u636e\u5e93\u7684\u5730\u57df\uff0c\u4f46\u8be5\u6570\u636e\u5e93\u6ca1\u6709\u5730\u57df\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=\u4e8b\u52a1\u5f02\u5e38\u7ec8\u6b62\u671f\u95f4\u629b\u51fa\u5f02\u5e38\u3002
+XSTB2.M=\u65e0\u6cd5\u8bb0\u5f55\u4e8b\u52a1\u66f4\u6539\uff0c\u53ef\u80fd\u5c1d\u8bd5\u5199\u5165\u53ea\u8bfb\u6570\u636e\u5e93\u3002
+XSTB3.M=\u65e0\u6cd5\u5f02\u5e38\u7ec8\u6b62\u4e8b\u52a1\uff0c\u56e0\u4e3a\u65e5\u5fd7\u7ba1\u7406\u5668\u4e3a\u7a7a\uff0c\u53ef\u80fd\u662f\u7531\u4e8e\u5148\u524d\u7684\u9519\u8bef\u5bfc\u81f4\u7684\u3002
+XSTB5.M=\u521b\u5efa\u6570\u636e\u5e93\u4f46\u7981\u7528\u8bb0\u5f55\u65f6\u9047\u5230\u610f\u5916\u95ee\u9898\u3002
+XSTB6.M=\u5f53\u4e00\u4e2a\u4e8b\u52a1\u8868\u5728\u4f7f\u7528\u4e2d\u65f6\uff0c\u65e0\u6cd5\u4f7f\u7528\u53e6\u4e00\u4e2a\u4e8b\u52a1\u8868\u66ff\u6362\u5b83\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=\u5bb9\u5668\u5df2\u5173\u95ed
+40XD1=\u4ee5\u53ea\u8bfb\u65b9\u5f0f\u6253\u5f00\u5bb9\u5668
+40XD2=\u65e0\u6cd5\u6253\u5f00\u5bb9\u5668 {0}\uff0c\u5b83\u5df2\u5220\u9664\u6216\u4e0d\u5b58\u5728
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=\u5c1d\u8bd5\u8bbf\u95ee\u9875\u4e0a\u8d85\u51fa\u8303\u56f4\u7684\u69fd
+XSDA2.S=\u5c1d\u8bd5\u66f4\u65b0\u5df2\u5220\u9664\u7684\u8bb0\u5f55
+XSDA3.S=\u5c40\u9650\u6027\uff1a\u7531\u4e8e\u9875\u4e0a\u7a7a\u95f4\u7684\u7f3a\u4e4f\uff0c\u5bfc\u81f4\u65e0\u6cd5\u66f4\u65b0\u6216\u63d2\u5165\u8bb0\u5f55\u3002\u4f7f\u7528\u53c2\u6570 derby.storage.pageSize \u548c\uff0f\u6216 derby.storage.pageReservedSpace \u4ee5\u6d88\u9664\u8fd9\u79cd\u5c40\u9650\u6027\u3002
+XSDA4.S=\u629b\u51fa\u610f\u5916\u5f02\u5e38
+XSDA5.S=\u5c1d\u8bd5\u53d6\u6d88\u5220\u9664\u672a\u5220\u9664\u7684\u8bb0\u5f55
+XSDA6.S=\u884c\u7684\u5217 {0} \u4e3a\u7a7a\uff0c\u5b83\u9700\u8981\u8bbe\u7f6e\u4e3a\u6307\u5411\u5bf9\u8c61\u3002
+XSDA7.S=\u7c7b {0} \u7684\u53ef\u5e8f\u5217\u5316\u6216 SQLData \u5bf9\u8c61\u7684\u590d\u539f\uff0c\u5c1d\u8bd5\u8bfb\u53d6\u6bd4\u539f\u59cb\u5b58\u50a8\u66f4\u7684\u6570\u636e
+XSDA8.S=\u7c7b {0} \u7684\u53ef\u5e8f\u5217\u5316\u6216 SQLData \u5bf9\u8c61\u7684\u590d\u539f\u671f\u95f4\u53d1\u751f\u5f02\u5e38
+XSDA9.S=\u7c7b {0} \u7684\u53ef\u5e8f\u5217\u5316\u6216 SQLData \u5bf9\u8c61\u7684\u590d\u539f\u671f\u95f4\u672a\u627e\u5230\u7c7b
+XSDAA.S=\u65f6\u95f4\u6233\u8bb0 {0} \u975e\u6cd5\uff0c\u65f6\u95f4\u6233\u8bb0\u6765\u81ea\u4e0d\u540c\u7684\u9875\u6216\u5c5e\u4e8e\u4e0d\u517c\u5bb9\u7684\u5b9e\u73b0
+XSDAB.S=\u65e0\u6cd5\u8bbe\u7f6e\u7a7a\u65f6\u95f4\u6233\u8bb0
+XSDAC.S=\u5c1d\u8bd5\u5c06\u884c\u6216\u9875\u4ece\u4e00\u4e2a\u5bb9\u5668\u79fb\u52a8\u5230\u53e6\u4e00\u4e2a\u3002
+XSDAD.S=\u5c1d\u8bd5\u5c06\u96f6\u884c\u4ece\u4e00\u4e2a\u9875\u79fb\u52a8\u5230\u53e6\u4e00\u4e2a\u3002
+XSDAE.S=\u53ea\u80fd\u4e3a\u7279\u6b8a\u8bb0\u5f55\u53e5\u67c4\u6807\u8bc6\u5236\u4f5c\u4e00\u4e2a\u8bb0\u5f55\u53e5\u67c4\u3002
+XSDAF.S=\u4f7f\u7528\u7279\u6b8a\u8bb0\u5f55\u53e5\u67c4\uff0c\u597d\u50cf\u5b83\u662f\u6b63\u5e38\u8bb0\u5f55\u53e5\u67c4\u4e00\u6837\u3002
+XSDAG.S=\u5206\u914d\u5d4c\u5957\u7684\u9876\u5c42\u4e8b\u52a1\u65e0\u6cd5\u6253\u5f00\u5bb9\u5668\u3002
+XSDAI.S=\u5df2\u9501\u5b9a\u8981\u9664\u53bb\u7684\u9875 {0} \u4ee5\u8fdb\u884c\u91ca\u653e\u3002
+XSDAJ.S=\u53ef\u5e8f\u5217\u5316\u6216 SQLData \u5bf9\u8c61\u7684\u5199\u671f\u95f4\u53d1\u751f\u5f02\u5e38
+XSDAK.S=\u4e3a\u8bb0\u5f55\u53e5\u67c4 {0} \u83b7\u53d6\u9519\u8bef\u9875\u3002
+XSDAL.S=\u8bb0\u5f55\u53e5\u67c4 {0} \u610f\u5916\u6307\u5411\u6ea2\u51fa\u9875\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=\u5185\u5b58\u9875 {0} \u53d1\u751f\u610f\u5916\u5f02\u5e38
+XSDB1.D=\u9875 {0} \u4e0a\u672a\u77e5\u9875\u683c\u5f0f
+XSDB2.D=\u5bb9\u5668 {0} \u4e0a\u672a\u77e5\u5bb9\u5668\u683c\u5f0f\uff1a{1}
+XSDB3.D=\u4e00\u65e6\u5199\u540e\uff0c\u5bb9\u5668\u4fe1\u606f\u65e0\u6cd5\u66f4\u6539\uff1a\u539f\u6765\u4e3a {0}\uff0c\u73b0\u5728 {1}
+XSDB4.D=\u9875 {0} \u5c5e\u4e8e\u7248\u672c {1}\uff0c\u65e5\u5fd7\u6587\u4ef6\u5305\u542b\u66f4\u6539\u7248\u672c {2}\uff0c\u6b64\u9875\u7684\u65e5\u5fd7\u8bb0\u5f55\u7f3a\u5c11\uff0c\u6216\u8005\u6b64\u9875\u672a\u6b63\u786e\u5199\u51fa\u5230\u78c1\u76d8\u3002
+XSDB5.D=\u65e5\u5fd7\u5177\u6709\u9875 {0} \u7684\u66f4\u6539\u8bb0\u5f55\uff0c\u5176\u8d85\u51fa\u5bb9\u5668\u7684\u7ed3\u675f\u3002
+XSDB6.D=Derby \u7684\u53e6\u4e00\u4e2a\u5b9e\u4f8b\u53ef\u80fd\u5df2\u5f15\u5bfc\u6570\u636e\u5e93 {0}\u3002
+XSDB7.D=\u8b66\u544a\uff1aDerby\uff08\u5b9e\u4f8b {0}\uff09\u5c1d\u8bd5\u5f15\u5bfc\u6570\u636e\u5e93 {1}\uff0c\u5373\u4f7f Derby\uff08\u5b9e\u4f8b {2}\uff09\u53ef\u80fd\u4ecd\u7136\u6d3b\u52a8\u3002\u6bcf\u6b21\u5e94\u8be5\u53ea\u6709\u4e00\u4e2a Derby \u5b9e\u4f8b\u5f15\u5bfc\u6570\u636e\u5e93\u3002\u53ef\u5bfc\u81f4\u4e25\u91cd\u548c\u4e0d\u53ef\u6062\u590d\u7684\u635f\u574f\uff0c\u800c\u4e14\u53ef\u80fd\u5df2\u53d1\u751f\u3002
+XSDB8.D=\u8b66\u544a\uff1aDerby\uff08\u5b9e\u4f8b {0}\uff09\u5c1d\u8bd5\u5f15\u5bfc\u6570\u636e\u5e93 {1}\uff0c\u5373\u4f7f Derby\uff08\u5b9e\u4f8b {2}\uff09\u53ef\u80fd\u4ecd\u7136\u6d3b\u52a8\u3002\u6bcf\u6b21\u5e94\u8be5\u53ea\u6709\u4e00\u4e2a Derby \u5b9e\u4f8b\u5f15\u5bfc\u6570\u636e\u5e93\u3002\u5982\u679c\u4e24\u4e2a Derby \u5b9e\u4f8b\u540c\u65f6\u5f15\u5bfc\u540c\u4e00\u6570\u636e\u5e93\uff0c\u53ef\u5bfc\u81f4\u4e25\u91cd\u548c\u4e0d\u53ef\u6062\u590d\u7684\u635f\u574f\u3002\u5df2\u8bbe\u7f6e db2j.database.forceDatabaseLock=true \u5c5e\u6027\uff0c\u6240\u4ee5\u6570\u636e\u5e93\u5c06\u4e0d\u5f15\u5bfc\uff0c\u76f4\u5230 db.lck \u4e0d\u518d\u5b58\u5728\u3002\u901a\u5e38\uff0c\u5f15\u5bfc\u6570\u636e\u5e93\u7684\u7b2c\u4e00\u4e2a Derby \u5b9e\u4f8b\u9000\u51fa\u65f6\uff0c\u9664\u53bb\u6b64\u6587\u4ef6\uff0c\u4f46\u662f\u53ef\u80fd\u5728\u4e00\u4e9b\u5173\u95ed\u540e\u5b83\u8fd8\u4fdd\u7559\u3002\u6b64\u60c5\u51b5\u4e0b\uff0c\u9700\u8981\u624b\u5de5\u9664\u53bb\u6b64\u6587\u4ef6\u3002\u91cd\u8981\u7684\u662f\u5728\u624b\u5de5\u5220\u9664 db.lck \u6587\u4ef6\u524d\uff0c\u9a8c\u8bc1\u6ca1\u6709\u5176\u5b83 VM \u8bbf\u95ee\u6570\u636e\u5e93\u3002
+XSDB9.D=\u6d41\u5bb9\u5668 {0} \u5df2\u635f\u574f\u3002
+XSDBA.D=\u5c1d\u8bd5\u5206\u914d\u5bf9\u8c61 {0} \u5931\u8d25\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6 {0}\uff0c\u5b83\u5df2\u5b58\u5728\u3002
+XSDF1.S=\u4e3a\u5bb9\u5668\u521b\u5efa\u6587\u4ef6 {0} \u671f\u95f4\u53d1\u751f\u5f02\u5e38
+XSDF2.S=\u4e3a\u5bb9\u5668\u521b\u5efa\u6587\u4ef6 {0} \u671f\u95f4\u53d1\u751f\u5f02\u5e38\uff0c\u65e0\u6cd5\u9664\u53bb\u6587\u4ef6\u3002\u5f02\u5e38\u4e3a\uff1a{1}\u3002
+XSDF3.S=\u65e0\u6cd5\u521b\u5efa\u6bb5 {0}\u3002
+XSDF4.S=\u4e3a\u5df2\u5220\u9664\u5bb9\u5668\u9664\u53bb\u6587\u4ef6 {0} \u671f\u95f4\u53d1\u751f\u5f02\u5e38\uff0c\u65e0\u6cd5\u9664\u53bb\u6587\u4ef6 {1}\u3002
+XSDF6.S=\u627e\u4e0d\u5230\u5206\u914d\u9875 {0}\u3002
+XSDF7.S=\u65e0\u6cd5\u95ed\u9501\u6700\u65b0\u521b\u5efa\u7684\u9875 {0}
+XSDF8.S=\u627e\u4e0d\u5230\u8981\u91cd\u7528\u7684\u9875 {0}\u3002
+XSDFB.S=\u53ea\u8bfb\u6570\u636e\u5e93\u4e0d\u652f\u6301\u64cd\u4f5c
+XSDFD.S=\u5728\u9875 {0} \u7684\u4e24\u4e2a I/O \u4e0a\u8bfb\u53d6\u4e0d\u540c\u7684\u9875\u56fe\u50cf\uff0c\u7b2c\u4e00\u4e2a\u56fe\u50cf\u5177\u6709\u4e0d\u6b63\u786e\u7684\u6821\u9a8c\u548c\uff0c\u7b2c\u4e8c\u4e2a\u56fe\u50cf\u5177\u6709\u6b63\u786e\u7684\u6821\u9a8c\u548c\u3002\u9875\u56fe\u50cf\u6309\u5982\u4e0b\u6240\u793a\uff1a{1} {2}
+XSDFF.S=\u7531\u4e8e\u610f\u5916\u5f02\u5e38\u5bfc\u81f4\u8bf7\u6c42\u7684\u64cd\u4f5c\u5931\u8d25\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=\u65e0\u6cd5\u4ece\u78c1\u76d8\u8bfb\u9875 {0}\u3002
+XSDG1.D=\u65e0\u6cd5\u5c06\u9875 {0} \u5199\u5165\u78c1\u76d8\uff0c\u8bf7\u68c0\u67e5\u78c1\u76d8\u662f\u5426\u5df2\u6ee1\u3002
+XSDG2.D=\u9875 {0} \u4e0a\u7684\u6821\u9a8c\u548c\u65e0\u6548\uff0c\u671f\u5f85={1}\uff0c\u78c1\u76d8\u4e0a\u7248\u672c={2}\uff0c\u9875\u8f6c\u50a8\u9075\u5faa\uff1a{3}
+XSDG3.D=\u65e0\u6cd5\u8bbf\u95ee\u5bb9\u5668 {0} \u7684\u5143\u6570\u636e
+XSDG5.D=\u5f53\u8c03\u7528 createFinished \u65f6\uff0c\u6570\u636e\u5e93\u672a\u5904\u4e8e\u521b\u5efa\u65b9\u5f0f\u3002
+XSDG6.D=\u590d\u539f\u671f\u95f4\uff0c{0} \u5907\u4efd\u4e2d\u672a\u627e\u5230\u6570\u636e\u6bb5\u76ee\u5f55\u3002\u8bf7\u786e\u4fdd\u5907\u4efd\u526f\u672c\u662f\u6b63\u786e\u7684\u800c\u4e14\u672a\u635f\u574f\u3002
+XSDG7.D=\u590d\u539f\u671f\u95f4\uff0c\u65e0\u6cd5\u9664\u53bb\u76ee\u5f55 {0}\u3002\u8bf7\u786e\u4fdd\u8bb8\u53ef\u6743\u662f\u6b63\u786e\u7684\u3002
+XSDG8.D=\u590d\u539f\u671f\u95f4\uff0c\u65e0\u6cd5\u5c06\u76ee\u5f55\u201c{0}\u201d\u590d\u5236\u5230\u201c{1}\u201d\u3002\u8bf7\u786e\u4fdd\u6709\u8db3\u591f\u7684\u7a7a\u95f4\uff0c\u800c\u4e14\u8bb8\u53ef\u6743\u662f\u6b63\u786e\u7684\u3002
+
+# language
+01500=\u5df2\u5220\u9664\u8868 {1} \u4e0a\u7684\u7ea6\u675f {0}\u3002
+01501=\u5df2\u5220\u9664\u89c6\u56fe {0}\u3002
+01502=\u5df2\u5220\u9664\u8868 {1} \u4e0a\u7684\u89e6\u53d1\u5668 {0}\u3002
+01503=\u901a\u8fc7\u6dfb\u52a0\u975e\u7a7a\u7ea6\u675f\uff0c\u5df2\u4fee\u6539\u8868 {1} \u4e0a\u7684\u5217 {0}\u3002
+01504=\u65b0\u7d22\u5f15\u662f\u73b0\u6709\u7d22\u5f15\u7684\u526f\u672c\uff1a{0}\u3002
+01505=\u503c {0} \u53ef\u80fd\u88ab\u622a\u65ad\u3002
+01003=\u4ece\u5217\u51fd\u6570\u7684\u81ea\u53d8\u91cf\u9664\u53bb\u7a7a\u503c\u3002
+0100E=XX \u5c1d\u8bd5\u8fd4\u56de\u8fc7\u591a\u7ed3\u679c\u96c6
+02000=\u672a\u627e\u5230 FETCH\u3001UPDATE \u6216 DELETE \u7684\u884c\uff1b\u6216\u67e5\u8be2\u7ed3\u679c\u662f\u7a7a\u8868\u3002
+21000=\u6807\u91cf\u5b50\u67e5\u8be2\u4ec5\u5141\u8bb8\u8fd4\u56de\u5355\u884c\u3002
+22001=\u5c1d\u8bd5\u5c06 {0}\u201c{1}\u201d\u7f29\u77ed\u4e3a\u957f\u5ea6 {2} \u65f6\u9047\u5230\u622a\u65ad\u9519\u8bef\u3002
+54006=\u7531 {0} \u64cd\u4f5c\u4ea7\u751f\u7684\u957f\u5ea6\u5927\u4e8e {1}\u3002
+22003=\u4ea7\u751f\u7684\u503c\u8d85\u51fa\u4e86\u6570\u636e\u7c7b\u578b {0} \u7684\u8303\u56f4\u3002
+22005=\u5c1d\u8bd5\u4ece\u7c7b\u578b\u201c{1}\u201d\u7684\u6570\u636e\u503c\u83b7\u53d6\u7c7b\u578b\u201c{0}\u201d\u7684\u6570\u636e\u503c\u3002
+22007.S.180=\u5b57\u7b26\u4e32\u8868\u793a\u7684\u65e5\u671f\u65f6\u95f4\u503c\u8d85\u51fa\u8303\u56f4\u3002
+22007.S.181=\u65e5\u671f\u65f6\u95f4\u503c\u7684\u5b57\u7b26\u4e32\u8868\u793a\u7684\u8bed\u6cd5\u4e0d\u6b63\u786e\u3002
+22011=SUBSTR \u51fd\u6570\u7684\u7b2c\u4e8c\u4e2a\u6216\u7b2c\u4e09\u4e2a\u81ea\u53d8\u91cf\u8d85\u51fa\u8303\u56f4\u3002
+22012=\u5c1d\u8bd5\u7528\u96f6\u9664\u3002
+22013=\u5c1d\u8bd5\u91c7\u7528\u8d1f\u6570\u7684\u5e73\u65b9\u6839\u201c{0}\u201d\u3002
+22014=LOCATE \u7684\u5f00\u59cb\u4f4d\u7f6e\u65e0\u6548\uff1b\u5b83\u5fc5\u987b\u4e3a\u6b63\u6574\u6570\u3002\u5f00\u59cb\u641c\u7d22\u7684\u7d22\u5f15\u4e3a\u201c{2}\u201d\u3002\u641c\u7d22\u7684\u5b57\u7b26\u4e32\u4e3a\u201c{0}\u201d\u3002\u4ece\u4e2d\u641c\u7d22\u7684\u5b57\u7b26\u4e32\u4e3a\u201c{1}\u201d\u3002
+
+22015=\u4e0b\u5217\u7c7b\u578b\u96c6\u4e0a\u4e0d\u5141\u8bb8\u201c{0}\u201d\u51fd\u6570\u3002\u7b2c\u4e00\u4e2a\u64cd\u4f5c\u6570\u4e3a\u7c7b\u578b\u201c{1}\u201d\u3002\u7b2c\u4e8c\u4e2a\u64cd\u4f5c\u6570\u4e3a\u7c7b\u578b\u201c{2}\u201d\u3002\u7b2c\u4e09\u4e2a\u64cd\u4f5c\u6570\u4e3a\u7c7b\u578b\u201c{3}\u201d\u3002
+22018=\u7c7b\u578b {0} \u7684\u5b57\u7b26\u4e32\u683c\u5f0f\u65e0\u6548\u3002
+22019=\u8f6c\u4e49\u5e8f\u5217\u201c{0}\u201d\u65e0\u6548\u3002\u8f6c\u4e49\u5b57\u7b26\u4e32\u5fc5\u987b\u6b63\u597d\u4e3a\u4e00\u4e2a\u5b57\u7b26\u3002\u5b83\u4e0d\u80fd\u4e3a\u7a7a\u6216\u5927\u4e8e\u4e00\u4e2a\u5b57\u7b26\u3002
+22025=\u8f6c\u4e49\u5b57\u7b26\u5fc5\u987b\u540e\u8ddf\u8f6c\u4e49\u5b57\u7b26\u201c_\u201d\u6216\u201c%\u201d\u3002\u5b83\u4e0d\u80fd\u540e\u8ddf\u4efb\u4f55\u5176\u5b83\u5b57\u7b26\uff0c\u6216\u5728\u6a21\u5f0f\u7684\u7ed3\u675f\u5904\u3002
+22027=\u5185\u7f6e TRIM() \u51fd\u6570\u4ec5\u652f\u6301\u5355\u4e2a trim \u5b57\u7b26\u3002LTRIM() \u548c RTRIM() \u5185\u7f6e\u51fd\u6570\u652f\u6301\u591a\u4e2a trim \u5b57\u7b26\u3002
+22500=\u4e0d\u80fd\u4e3a LIKE \u6a21\u5f0f\u548c ESCAPE \u5b50\u53e5\u4f7f\u7528 ? \u53c2\u6570\u3002
+22501=NULL \u7684 ESCAPE \u5b50\u53e5\u8fd4\u56de\u672a\u5b9a\u4e49\u7684\u7ed3\u679c\uff0c\u662f\u4e0d\u5141\u8bb8\u7684\u3002
+23502=\u5217\u201c{0}\u201d\u65e0\u6cd5\u63a5\u53d7\u7a7a\u503c\u3002
+23505=\u8bed\u53e5\u5f02\u5e38\u7ec8\u6b62\uff0c\u56e0\u4e3a\u5b83\u5bfc\u81f4\u201c{1}\u201d\u4e0a\u6240\u5b9a\u4e49\u7684\u201c{0}\u201d\u6807\u8bc6\u7684\u552f\u4e00\u6216\u4e3b\u952e\u7ea6\u675f\u6216\u552f\u4e00\u7d22\u5f15\u4e2d\u51fa\u73b0\u590d\u5236\u952e\u503c\u3002
+23503=\u8868\u201c{1}\u201d\u4e0a\u7684 {2} \u5bfc\u81f4\u8fdd\u53cd\u952e {3} \u7684\u5916\u952e\u7ea6\u675f\u201c{0}\u201d\u3002\u8bed\u53e5\u5df2\u56de\u6eda\u3002
+23513=\u5728\u8868\u201c{0}\u201d\u4e0a\u6267\u884c INSERT \u6216 UPDATE \u65f6\uff0c\u8fdd\u53cd\u68c0\u67e5\u7ea6\u675f\u201c{1}\u201d\u3002
+38000=\u6c42\u503c\u8868\u8fbe\u5f0f\u65f6\u629b\u51fa\u5f02\u5e38\u201c{0}\u201d\u3002
+38001=\u4e0d\u5141\u8bb8\u5916\u90e8\u4f8b\u7a0b\u6267\u884c SQL \u8bed\u53e5\u3002
+38002=\u4f8b\u7a0b\u5c1d\u8bd5\u4fee\u6539\u6570\u636e\uff0c\u4f46\u662f\u6b64\u4f8b\u7a0b\u672a\u5b9a\u4e49\u4e3a MODIFIES SQL DATA\u3002
+38004=\u4f8b\u7a0b\u5c1d\u8bd5\u8bfb\u53d6\u6570\u636e\uff0c\u4f46\u662f\u6b64\u4f8b\u7a0b\u672a\u5b9a\u4e49\u4e3a READS SQL DATA\u3002
+39004=NULL \u503c\u4e0d\u80fd\u4f20\u9012\u7ed9\u53c2\u6570\u4e3a\u57fa\u672c\u7c7b\u578b\u201c{0}\u201d\u7684\u65b9\u6cd5\u3002
+40XC0=\u6b7b\u8bed\u53e5\u3002\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u6b64\u8bed\u53e5\u4e2d\u6355\u6349\u5230\u4e8b\u52a1\u4e25\u91cd\u6027\u9519\u8bef\u3002
+# this error is retired in 1.3
+42000=\u8bed\u6cd5\u9519\u8bef\u6216\u8bbf\u95ee\u89c4\u5219\u8fdd\u89c4\uff1b\u8bf7\u53c2\u9605\u5176\u5b83\u9519\u8bef\uff0c\u4ee5\u83b7\u5f97\u8be6\u7ec6\u4fe1\u606f\u3002
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=\u5728 ALTER TABLE \u8bed\u53e5\u4e2d\uff0c\u5217\u201c{0}\u201d\u5df2\u7ecf\u88ab\u6307\u5b9a\u4e3a NOT NULL\uff0c\u5e76\u4e14 DEFAULT \u5b50\u53e5\u672a\u6307\u5b9a\u6216\u5df2\u6307\u5b9a\u4e3a DEFAULT NULL\u3002
+42601.S.372=ALTER TABLE \u8bed\u53e5\u65e0\u6cd5\u5c06 IDENTITY \u5217\u6dfb\u52a0\u5230\u8868\u4e2d\u3002
+42606=\u5df2\u7ecf\u68c0\u6d4b\u5230\u4ee5\u201c{0}\u201d\u5f00\u59cb\u7684\u65e0\u6548\u7684\u5341\u516d\u8fdb\u5236\u5e38\u6570\u3002
+54002=\u4ee5\u201c{0}\u201d\u5f00\u59cb\u7684\u5b57\u7b26\u4e32\u5e38\u91cf\u592a\u957f\u3002
+42611=\u5217\u6216\u7c7b\u578b\u6620\u5c04\u201c{0}\u201d\u7684\u957f\u5ea6\u3001\u7cbe\u5ea6\u6216\u5c0f\u6570\u4f4d\u5c5e\u6027\u65e0\u6548\u3002
+
+42605=\u51fd\u6570\u201c{0}\u201d\u7684\u81ea\u53d8\u91cf\u6570\u76ee\u4e0d\u6b63\u786e\u3002
+42610=COALESC/VALUE \u51fd\u6570\u7684\u6240\u6709\u81ea\u53d8\u91cf\u4e0d\u80fd\u662f\u53c2\u6570\u3002\u81f3\u5c11\u9700\u8981\u5177\u6709\u4e00\u4e2a\u975e\u53c2\u6570\u578b\u81ea\u53d8\u91cf\u3002
+
+42613=\u5b58\u5728\u6d89\u53ca\u201c{0}\u201d\u5b50\u53e5\u7684\u591a\u4e2a\u6216\u51b2\u7a81\u7684\u5173\u952e\u5b57\u3002
+42621=\u4f7f\u7528\u201c{0}\u201d\u5b9a\u4e49\u7684\u68c0\u67e5\u7ea6\u675f\u6216\u751f\u6210\u5217\u65e0\u6548\u3002
+42734=\u4e0a\u4e0b\u6587\u201c{1}\u201d\u4e2d\u6307\u5b9a\u7684\u540d\u79f0\u201c{0}\u201d\u4e0d\u662f\u552f\u4e00\u7684\u3002
+# DB2 error for invalid set schema
+42802=\u5df2\u5206\u914d\u503c\u7684\u6570\u76ee\u4e0e\u6307\u5b9a\u5217\u6216\u6697\u6307\u5217\u7684\u6570\u76ee\u4e0d\u540c\u3002
+42815.S.713=\u201c{0}\u201d\u7684\u66ff\u6362\u503c\u65e0\u6548\u3002
+42815.S.171=\u81ea\u53d8\u91cf\u201c{0}\u201d\u548c\u201c{1}\u201d\u7684\u6570\u636e\u7c7b\u578b\u3001\u957f\u5ea6\u6216\u503c\u4e0d\u517c\u5bb9\u3002
+42820=\u6d6e\u70b9\u6587\u5b57\u201c{0}\u201d\u5305\u542b\u7684\u5b57\u7b26\u591a\u4e8e 30 \u4e2a\u3002
+42824=LIKE \u7684\u64cd\u4f5c\u6570\u4e0d\u662f\u5b57\u7b26\u4e32\uff0c\u6216\u8005\u7b2c\u4e00\u4e2a\u64cd\u4f5c\u6570\u4e0d\u662f\u4e00\u4e2a\u5217\u3002
+42831=\u201c{0}\u201d\u4e0d\u80fd\u662f\u4e3b\u952e\u6216\u552f\u4e00\u952e\u7684\u5217\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u5305\u542b\u7a7a\u503c\u3002
+42834=\u65e0\u6cd5\u6307\u5b9a SET NULL\uff0c\u56e0\u4e3a FOREIGN KEY\u201c{0}\u201d\u4e0d\u80fd\u5305\u542b\u7a7a\u503c\u3002
+
+42884=\u672a\u627e\u5230\u5177\u6709\u517c\u5bb9\u81ea\u53d8\u91cf\u3001\u7c7b\u578b\u4e3a\u201c{1}\u201d\uff0c\u4e14\u5df2\u547d\u540d\u4e3a\u201c{0}\u201d\u7684\u6388\u6743\u4f8b\u7a0b\u3002
+42886=\u201c{0}\u201d\u53c2\u6570\u201c{1}\u201d\u9700\u8981\u53c2\u6570\u6807\u8bb0\u201c?\u201d\u3002
+42894=DEFAULT \u503c\u6216 IDENTITY \u5c5e\u6027\u503c\u5bf9\u4e8e\u5217\u201c{0}\u201d\u662f\u65e0\u6548\u7684\u3002
+428C1=\u8868\u4e2d\u4ec5\u5141\u8bb8\u6709\u4e00\u4e2a\u6807\u8bc6\u5217\u3002
+42903=\u805a\u96c6\u51fd\u6570\u7684\u65e0\u6548\u4f7f\u7528\u3002
+42908=CREATE VIEW \u8bed\u53e5\u4e0d\u5305\u62ec\u5217\u5217\u8868\u3002
+42915=\u5916\u952e\u201c{0}\u201d\u65e0\u6548\uff0c\u56e0\u4e3a\u201c{1}\u201d\u3002
+
+42972=\u4e0e JOIN \u8fd0\u7b97\u7b26\u76f8\u5173\u8054\u7684 ON \u5b50\u53e5\u65e0\u6548\u3002
+42X01=\u8bed\u6cd5\u9519\u8bef\uff1a{0}\u3002
+42X02={0}\u3002
+42X03=\u5728 FROM \u5217\u8868\u4e2d\uff0c\u591a\u4e2a\u8868\u4e2d\u5b58\u5728\u5217\u540d\u201c{0}\u201d\u3002
+42X04=\u5217\u201c{0}\u201d\u4e0d\u5728 FROM \u5217\u8868\u7684\u4efb\u4f55\u8868\u4e2d\uff0c\u6216\u8005\u5b83\u51fa\u73b0\u5728 join \u89c4\u8303\u5185\u4f46\u8d85\u51fa join \u89c4\u8303\u7684\u4f5c\u7528\u57df\uff0c\u6216\u8005\u5b83\u51fa\u73b0\u5728 HAVING \u5b50\u53e5\u4e2d\u4f46\u4e0d\u5728 GROUP BY \u5217\u8868\u4e2d\u3002\u5982\u679c\u8fd9\u662f CREATE \u6216 ALTER TABLE \u8bed\u53e5\uff0c\u5219\u201c{0}\u201d\u4e0d\u662f\u76ee\u6807\u8868\u4e2d\u7684\u5217\u3002
+42X05=\u8868\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002
+42X06=\u4e3a\u8868\u201c{0}\u201d\u6307\u5b9a\u4e86\u8fc7\u591a\u7ed3\u679c\u5217\u3002
+42X07=\u4ec5\u5728 INSERT \u8bed\u53e5\u5185 VALUES \u5b50\u53e5\u4e2d\u624d\u5141\u8bb8 Null\u3002
+42X08=\u5f53\u7c7b\u672a\u5b9e\u73b0\u201c{1}\u201d\u65f6\uff0c\u7c7b\u201c{0}\u201d\u7684\u6784\u9020\u51fd\u6570\u65e0\u6cd5\u7528\u4f5c\u5916\u90e8\u865a\u62df\u8868
+42X09=FROM \u5217\u8868\u4e2d\u591a\u6b21\u4f7f\u7528\u8868\u6216\u522b\u540d\u201c{0}\u201d\u3002
+42X10=\u201c{0}\u201d\u5728\u5b83\u51fa\u73b0\u7684\u4f5c\u7528\u57df\u4e2d\u4e0d\u662f\u9648\u5217\u7684\u8868\u540d\u3002
+42622=\u540d\u79f0\u201c{0}\u201d\u592a\u957f\u3002\u6700\u5927\u957f\u5ea6\u662f\u201c{1}\u201d\u3002
+42X12=create table \u8bed\u53e5\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+54011=\u4e3a\u8868\u6216\u89c6\u56fe {1} \u6307\u5b9a\u8fc7\u591a\u7684\u5217\uff08{0}\uff09\u3002\u9650\u5236\u4e3a {2}\u3002
+42Z9F=\u8868 {1} \u4e0a\u5b58\u5728\u8fc7\u591a\u7684\u7d22\u5f15\uff08{0}\uff09\u3002\u9650\u5236\u4e3a {2}\u3002
+42X13=insert \u8bed\u53e5\u7684\u5217\u8868\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+42X14=\u201c{0}\u201d\u4e0d\u662f\u8868\u6216 VTI\u201c{1}\u201d\u4e2d\u7684\u5217\u3002
+42X15=\u5217\u540d\u201c{0}\u201d\u51fa\u73b0\u5728\u6ca1\u6709 FROM \u5217\u8868\u7684\u8bed\u53e5\u4e2d\u3002
+42X16=update \u8bed\u53e5\u7684 SET \u5b50\u53e5\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+42X17=\u4f5c\u4e3a FROM \u5b50\u53e5\u7684\u201c\u5c5e\u6027\u201d\u5217\u8868\u4e2d joinOrder \u89c4\u8303\uff0c\u503c\u201c{0}\u201d\u65e0\u6548\u3002\u53ea\u6709\u503c FIXED \u548c UNFIXED \u6709\u6548\u3002
+42803=\u5305\u542b\u5217\u201c{0}\u201d\u7684\u8868\u8fbe\u5f0f\u51fa\u73b0\u5728 SELECT \u5217\u8868\u4e2d\uff0c\u5b83\u4e0d\u662f GROUP BY \u5b50\u53e5\u7684\u4e00\u90e8\u5206\u3002
+42818=\u4e0d\u652f\u6301\u201c{0}\u201d\u548c\u201c{1}\u201d\u95f4\u7684\u6bd4\u8f83\u3002
+42X19=WHERE \u6216 HAVING \u5b50\u53e5\uff0c\u6216\u8005 CHECK CONSTRAINT \u5b9a\u4e49\u662f\u201c{0}\u201d\u8868\u8fbe\u5f0f\u3002\u5b83\u5fc5\u987b\u662f BOOLEAN \u8868\u8fbe\u5f0f\u3002
+42X23=\u6e38\u6807 {0} \u4e0d\u53ef\u66f4\u65b0\u3002
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=\u201c{1}\u201d\u7c7b\u578b\u4e0a\u4e0d\u5141\u8bb8\u201c{0}\u201d\u51fd\u6570\u3002
+42X26=\u5217\u201c{1}\u201d\u7684\u7c7b\u201c{0}\u201d\u4e0d\u5b58\u5728\u6216\u4e0d\u53ef\u8bbf\u95ee\u3002\u5982\u679c\u7c7b\u4e0d\u662f\u516c\u5171\u7684\uff0c\u5219\u4f1a\u53d1\u751f\u6b64\u60c5\u51b5\u3002
+42X28=\u5220\u9664\u8868\u201c{0}\u201d\u4e0d\u662f\u6e38\u6807\u201c{1}\u201d\u7684\u76ee\u6807\u3002
+42X29=\u66f4\u65b0\u8868\u201c{0}\u201d\u4e0d\u662f\u6e38\u6807\u201c{1}\u201d\u7684\u76ee\u6807\u3002
+42X30=\u6e38\u6807\u201c{0}\u201d\u672a\u627e\u5230\u3002\u9a8c\u8bc1\u81ea\u52a8\u843d\u5b9e\u5df2\u5173\u95ed\u3002
+42X31=\u5217\u201c{0}\u201d\u4e0d\u5728\u6e38\u6807\u201c{1}\u201d\u7684 FOR UPDATE \u5217\u8868\u4e2d\u3002
+42X32=\u6240\u6d3e\u751f\u5217\u8868\u4e2d\u7684\u5217\u6570\u5fc5\u987b\u4e0e\u8868\u201c{0}\u201d\u4e2d\u7684\u5217\u6570\u76f8\u5339\u914d\u3002
+42X33=\u6d3e\u751f\u7684\u5217\u8868\u5305\u542b\u91cd\u590d\u7684\u5217\u540d\u201c{0}\u201d\u3002
+42X34=\u9009\u62e9\u5217\u8868\u4e2d\u5b58\u5728 ? \u53c2\u6570\u3002\u8fd9\u662f\u4e0d\u5141\u8bb8\u7684\u3002
+42X35=\u4e0d\u5141\u8bb8\u201c{0}\u201d\u7684\u4e24\u4e2a\u64cd\u4f5c\u6570\u90fd\u662f ? \u53c2\u6570\u3002
+42X36=\u201c{0}\u201d\u8fd0\u7b97\u7b26\u4e0d\u5141\u8bb8\u91c7\u7528 ? \u53c2\u6570\u4f5c\u4e3a\u64cd\u4f5c\u6570\u3002
+42X37=\u201c{1}\u201d\u7c7b\u578b\u4e0a\u4e0d\u5141\u8bb8\u4e00\u5143\u201c{0}\u201d\u8fd0\u7b97\u7b26\u3002
+42X38=\u4ec5\u5728 EXISTS \u548c NOT EXISTS \u5b50\u67e5\u8be2\u4e2d\u5141\u8bb8\u201cSELECT *\u201d\u3002
+42X39=\u5b50\u67e5\u8be2\u53ea\u5141\u8bb8\u8fd4\u56de\u5355\u5217\u3002
+42X40=NOT \u5177\u6709\u975e Boolean \u64cd\u4f5c\u6570\u3002NOT \u64cd\u4f5c\u6570\u5fc5\u987b\u8d4b\u503c\u4e3a TRUE\u3001FALSE \u6216 UNKNOWN\u3002
+42X41=FROM \u5217\u8868\u7684 Properties \u5b50\u53e5\u4e2d\uff0c\u5c5e\u6027\u201c{0}\u201d\u65e0\u6548\uff08\u5c5e\u6027\u8bbe\u7f6e\u4e3a\u201c{1}\u201d\uff09\u3002
+42821=\u7c7b\u578b\u201c{0}\u201d\u7684\u5217\u4e0d\u80fd\u5177\u6709\u7c7b\u578b\u201c{1}\u201d\u7684\u503c\u3002
+42X43=\u4e3a\u7c7b\uff0f\u5bf9\u8c61\u201c{0}\u201d\u8fd4\u56de\u7684 ResultSetMetaData \u4e3a\u7a7a\u3002ResultSetMetaData \u5fc5\u987b\u662f\u975e\u7a7a\u7684\uff0c\u4ee5\u4fbf\u4f7f\u7528\u6b64\u7c7b\u4f5c\u4e3a\u5916\u90e8\u865a\u62df\u8868\u3002
+42X44=\u5217\u89c4\u8303\u4e2d\u7684\u957f\u5ea6\u201c{0}\u201d\u65e0\u6548\u3002
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=\u503c\u201c{1}\u201d\u4e0d\u662f {0} \u7684\u6709\u6548\u7cbe\u5ea6\u3002
+42X49=\u503c\u201c{0}\u201d\u4e0d\u662f\u6709\u6548\u7684\u6574\u6570\u6587\u5b57\u3002
+42X50=\u672a\u627e\u5230\u80fd\u591f\u4e0e\u65b9\u6cd5\u8c03\u7528 {0}.{1}({2}) \u5339\u914d\u7684\u65b9\u6cd5\uff0c\u751a\u81f3\u5c1d\u8bd5\u5bf9\u8c61\u548c\u57fa\u672c\u7c7b\u578b\u7684\u6240\u6709\u7ec4\u5408\uff0c\u4ee5\u53ca\u65b9\u6cd5\u8c03\u7528\u53ef\u80fd\u5177\u6709\u7684\u4efb\u4f55\u53c2\u6570\u7684\u53ef\u80fd\u7c7b\u578b\u8f6c\u6362\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u6b64\u65b9\u6cd5\u5df2\u5b58\u5728\uff0c\u4f46\u4e0d\u662f\u516c\u5171\u548c\uff0f\u6216\u9759\u6001\u7684\uff0c\u6216\u8005\u662f\u56e0\u4e3a\u53c2\u6570\u7c7b\u578b\u4e0d\u662f\u65b9\u6cd5\u8c03\u7528\u53ef\u8f6c\u6362\u7684\u3002
+42X51=\u7c7b\u201c{0}\u201d\u4e0d\u5b58\u5728\u6216\u4e0d\u53ef\u8bbf\u95ee\u3002\u5982\u679c\u7c7b\u4e0d\u662f\u516c\u5171\u7684\uff0c\u5219\u4f1a\u53d1\u751f\u6b64\u60c5\u51b5\u3002
+42X52=\u4e0d\u5141\u8bb8\u4f7f\u7528 Java \u57fa\u672c\u7c7b\u578b\u201c{1}\u201d\u7684\u63a5\u6536\u5668\u8c03\u7528\u65b9\u6cd5\uff08\u201c{0}\u201d\uff09\u3002
+42X53=LIKE \u8c13\u8bcd\u53ea\u80fd\u5177\u6709\u201cCHAR\u201d\u6216\u201cVARCHAR\u201d\u64cd\u4f5c\u6570\u3002\u4e0d\u5141\u8bb8\u7c7b\u578b\u201c{0}\u201d\u3002
+42X54=Java \u65b9\u6cd5\u201c{0}\u201d\u5177\u6709 ? \u4f5c\u4e3a\u63a5\u6536\u5668\u3002\u8fd9\u662f\u4e0d\u5141\u8bb8\u7684\u3002
+42X55=\u8868\u540d\u201c{1}\u201d\u5e94\u8be5\u4e0e\u201c{0}\u201d\u76f8\u540c\u3002
+42X56=\u89c6\u56fe\u5217\u5217\u8868\u4e2d\u7684\u5217\u6570\u4e0e\u201c{0}\u201d\u7684\u89c6\u56fe\u5b9a\u4e49\u4e2d\u5e95\u5c42\u67e5\u8be2\u8868\u8fbe\u5f0f\u4e2d\u7684\u5217\u6570\u4e0d\u5339\u914d\u3002
+42X57=\u5916\u90e8\u865a\u62df\u8868\u201c{0}\u201d\u7684 getColumnCount() \u8fd4\u56de\u65e0\u6548\u503c\u201c{1}\u201d\u3002\u6709\u6548\u503c\u4e3a >= 1\u3002
+42X58=UNION \u5de6\u53f3\u4e24\u4fa7\u7684\u5217\u6570\u5fc5\u987b\u76f8\u540c\u3002
+42X59=\u6bcf\u4e2a VALUES \u6784\u9020\u51fd\u6570\u4e2d\u7684\u5217\u6570\u5fc5\u987b\u76f8\u540c\u3002
+42X60=\u4e3a\u8868\u201c{1}\u201d\u6307\u5b9a\u4e86 insertMode \u5c5e\u6027\u7684\u65e0\u6548\u503c\u201c{0}\u201d\u3002
+42X61=\u7c7b\u578b\u201c{0}\u201d\u548c\u201c{1}\u201d\u4e0d\u662f UNION \u6240\u517c\u5bb9\u7684\u3002
+42X62=\u201c{1}\u201d\u6a21\u5f0f\u4e2d\u4e0d\u5141\u8bb8\u201c{0}\u201d\u3002
+42X63=USING \u5b50\u53e5\u672a\u8fd4\u56de\u4efb\u4f55\u7ed3\u679c\uff0c\u65e0\u53c2\u6570\u53ef\u8bbe\u7f6e\u3002
+42X64=\u4e3a\u201c\u5c5e\u6027\u201d\u5217\u8868\u4e2d useStatistics \u5c5e\u6027\u6307\u5b9a\u4e86\u65e0\u6548\u503c\u201c{0}\u201d\u3002\u4ec5 TRUE \u6216 FALSE \u4e3a\u6709\u6548\u7684\u503c\u3002
+42X65=\u7d22\u5f15\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002
+42X66=create index \u8bed\u53e5\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+42X68=\u672a\u627e\u5230\u5c5e\u4e8e\u7c7b\u201c{1}\u201d\u7684\u5b57\u6bb5\u201c{0}\u201d\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u6b64\u5b57\u6bb5\u5df2\u5b58\u5728\uff0c\u4f46\u4e0d\u662f\u516c\u5171\u7684\uff0c\u6216\u8005\u662f\u56e0\u4e3a\u7c7b\u4e0d\u5b58\u5728\u6216\u4e0d\u662f\u516c\u5171\u7684\u3002
+42X69=\u4e0d\u5141\u8bb8\u4f7f\u7528 Java \u57fa\u672c\u7c7b\u578b\u201c{1}\u201d\u7684\u5f15\u7528\u8868\u8fbe\u5f0f\u5f15\u7528\u5b57\u6bb5\uff08\u201c{0}\u201d\uff09\u3002
+42X72=\u672a\u627e\u5230\u5c5e\u4e8e\u7c7b\u201c{1}\u201d\u7684\u9759\u6001\u5b57\u6bb5\u201c{0}\u201d\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u6b64\u5b57\u6bb5\u5df2\u5b58\u5728\uff0c\u4f46\u4e0d\u662f\u516c\u5171\u548c\uff0f\u6216\u9759\u6001\u7684\uff0c\u6216\u8005\u662f\u56e0\u4e3a\u7c7b\u4e0d\u5b58\u5728\u6216\u4e0d\u662f\u516c\u5171\u7684\u3002
+42X73=\u7279\u5f81\u7b26 {0}.{1}({2}) \u7684\u65b9\u6cd5\u89e3\u6790\u4e0d\u660e\u786e\u3002\uff08\u65e0\u5355\u4e2a\u6781\u5927\u7279\u5b9a\u65b9\u6cd5\u3002\uff09
+42X74=CALL \u8bed\u53e5\u8bed\u6cd5\u65e0\u6548\u3002
+42X75=\u672a\u627e\u5230\u7279\u5f81\u7b26\u4e3a {0}({1}) \u7684\u6784\u9020\u51fd\u6570\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u53c2\u6570\u7c7b\u578b\u4e0d\u662f\u65b9\u6cd5\u8c03\u7528\u53ef\u8f6c\u6362\u7684\u3002
+42X76=\u6dfb\u52a0\u7684\u4e3b\u952e\u4e2d\u81f3\u5c11\u6709\u4e00\u5217\u201c{0}\u201d\u662f\u53ef\u7a7a\u7684\u3002\u4e3b\u952e\u4e2d\u7684\u6240\u6709\u5217\u5fc5\u987b\u662f\u4e0d\u53ef\u7a7a\u7684\u3002
+42X77=\u5217\u4f4d\u7f6e\u201c{0}\u201d\u8d85\u51fa\u67e5\u8be2\u8868\u8fbe\u5f0f\u7684\u8303\u56f4\u3002
+42X78=\u5217\u201c{0}\u201d\u4e0d\u5728\u67e5\u8be2\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\u4e2d\u3002
+42X79=\u67e5\u8be2\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+42877=ORDER BY \u5b50\u53e5\u4e2d\u4e0d\u5141\u8bb8\u5b58\u5728\u9650\u5b9a\u7684\u5217\u540d\u201c{0}\u201d\u3002
+42X80=VALUES \u5b50\u53e5\u5fc5\u987b\u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u5143\u7d20\uff0c\u800c\u4e14\u6240\u6709\u5143\u7d20\u5fc5\u987b\u975e\u7a7a\u3002
+42X82=USING \u5b50\u53e5\u8fd4\u56de\u591a\u884c\uff0c\u53ea\u6709\u5355\u884c ResultSet \u662f\u5141\u8bb8\u7684\u3002
+42X83=\u5217\u201c{0}\u201d\u4e0a\u7684\u7ea6\u675f\u8981\u6c42\u5b83\u662f\u53ef\u7a7a\u548c\u975e\u53ef\u7a7a\u7684\u3002
+42X84=\u521b\u5efa\u7d22\u5f15\u201c{0}\u201d\uff0c\u4ee5\u6267\u884c\u7ea6\u675f\u201c{1}\u201d\u3002\u53ea\u80fd\u901a\u8fc7\u5220\u9664\u7ea6\u675f\u6765\u5220\u9664\u5b83\u3002
+42X85=\u7ea6\u675f\u201c{0}\u201d\u5fc5\u987b\u4e0e\u8868\u201c{1}\u201d\u5904\u4e8e\u540c\u4e00\u6a21\u5f0f\u4e2d\u3002
+42X86=ALTER \u8868\u5931\u8d25\u3002\u8868\u201c{1}\u201d\u4e0a\u4e0d\u5b58\u5728\u7ea6\u675f\u201c{0}\u201d\u3002
+42X87=\u201c{0}\u201d\u8868\u8fbe\u5f0f\u7684\u7ed3\u679c\u8868\u8fbe\u5f0f\u4e2d\uff0c\u81f3\u5c11\u6709\u4e00\u4e2a\uff08then \u6216 else\uff09\u5fc5\u987b\u4e0d\u662f\u201c?\u201d\u3002
+42X88=Conditional \u5177\u6709\u975e Boolean \u64cd\u4f5c\u6570\u3002Conditional \u7684\u64cd\u4f5c\u6570\u5fc5\u987b\u8d4b\u503c\u4e3a TRUE\u3001FALSE \u6216 UNKNOWN\u3002
+42X89=\u7c7b\u578b\u201c{0}\u201d\u548c\u201c{1}\u201d\u4e0d\u662f\u7c7b\u578b\u517c\u5bb9\u7684\u3002\uff08\u4e24\u79cd\u7c7b\u578b\u90fd\u4e0d\u80fd\u4e92\u76f8\u6307\u5b9a\u4e3a\u5bf9\u65b9\u7684\u7c7b\u578b\u3002\uff09
+42X90=\u4e3a\u8868\u201c{0}\u201d\u6307\u5b9a\u591a\u4e2a\u4e3b\u952e\u7ea6\u675f\u3002
+42X91=create table \u8bed\u53e5\u4e2d\u591a\u6b21\u51fa\u73b0\u7ea6\u675f\u540d\u201c{0}\u201d\u3002
+42X92=\u7ea6\u675f\u7684\u5217\u8868\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+42X93=\u8868\u201c{0}\u201d\u5305\u542b\u8868\u4e2d\u4e0d\u5b58\u5728\u7684\u5217\u201c{1}\u201d\u7684\u7ea6\u675f\u5b9a\u4e49\u3002
+42Z93=\u7ea6\u675f\u201c{0}\u201d\u548c\u201c{1}\u201d\u5177\u6709\u540c\u4e00\u7ec4\u5217\uff0c\u8fd9\u662f\u4e0d\u5141\u8bb8\u7684\u3002
+42Z96=JDK 1.1/JDBC 1.2 \u73af\u5883\u4e2d\u4e0d\u652f\u6301\u8bfb\u5199 VTI\uff1a\u201c{0}\u201d
+42Z9B=\u5916\u90e8\u865a\u62df\u8868\u63a5\u53e3\u4e0d\u652f\u6301 blob \u6216 clob \u5217\u3002\u201c{0}\u201d\u5217\u201c{1}\u201d\u3002
+42Z9D=\u201c{1}\u201d\u89e6\u53d1\u5668\u4e2d\u4e0d\u5141\u8bb8\u5b58\u5728\u201c{0}\u201d\u8bed\u53e5\u3002
+42Z9E=\u7ea6\u675f\u201c{0}\u201d\u4e0d\u662f {1} \u7ea6\u675f\u3002
+42X94={0}\u201c{1}\u201d\u4e0d\u5b58\u5728\u3002
+42X96=\u6570\u636e\u5e93\u7c7b\u8def\u5f84\u5305\u542b\u672a\u77e5\u7684 jar \u6587\u4ef6\u201c{0}\u201d\u3002
+42X98=VIEW \u5b9a\u4e49\u4e2d\u4e0d\u5141\u8bb8\u53c2\u6570\u3002
+42Y00=\u7c7b\u201c{0}\u201d\u4e0d\u5b9e\u73b0 org.apache.derby.iapi.db.AggregateDefinition\uff0c\u56e0\u800c\u4e0d\u80fd\u7528\u4f5c\u805a\u96c6\u8868\u8fbe\u5f0f\u3002
+42Y01=\u7ea6\u675f\u201c{0}\u201d\u65e0\u6548\u3002
+42Y03=\u201c{0}\u201d\u672a\u88ab\u8bc6\u522b\u4e3a\u51fd\u6570\u6216\u8fc7\u7a0b\u3002
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=\u65e0\u6cd5\u4f7f\u7528 EXTERNAL NAME\u201c{0}\u201d\u521b\u5efa\u8fc7\u7a0b\u6216\u51fd\u6570\uff0c\u56e0\u4e3a\u5b83\u4e0d\u662f\u70b9\u5206\u9694\u7684\u5217\u8868\u3002\u671f\u671b\u7684\u683c\u5f0f\u4e3a <full java path>.<method name>\u3002
+
+42Y05=\u4e0d\u5b58\u5728\u547d\u540d\u4e3a\u201c{0}\u201d\u7684\u5916\u952e\u3002
+42Y07=\u6a21\u5f0f\u201c{0}\u201d\u4e0d\u5b58\u5728
+42Y08=\u7cfb\u7edf\u8868\u4e0a\u4e0d\u5141\u8bb8\u5916\u952e\u7ea6\u675f\u3002
+42Y09=CALL \u8bed\u53e5\u5185\u4ec5\u5141\u8bb8 Void \u65b9\u6cd5\u3002
+42Y10=INSERT \u8bed\u53e5\u4e2d\u4e0d\u5b58\u5728\u7684\u8868\u6784\u9020\u51fd\u6570\u5728\u5176\u5217\u4e4b\u4e00\u4e2d\u5177\u6709\u6240\u6709 ? \u53c2\u6570\u3002\u5bf9\u4e8e\u6bcf\u4e00\u5217\uff0c\u81f3\u5c11\u4e00\u884c\u5fc5\u987b\u5177\u6709\u975e\u53c2\u6570\u3002
+42Y11=\u201c{0}\u201d\u5b50\u53e5\u9700\u8981 join \u89c4\u8303\u3002
+42Y12=JOIN \u7684 ON \u5b50\u53e5\u662f\u201c{0}\u201d\u8868\u8fbe\u5f0f\u3002\u5b83\u5fc5\u987b\u662f BOOLEAN \u8868\u8fbe\u5f0f\u3002
+42Y13=create view \u8bed\u53e5\u4e2d\u591a\u6b21\u51fa\u73b0\u5217\u540d\u201c{0}\u201d\u3002
+42Z97=\u91cd\u547d\u540d\u5217\u201c{0}\u201d\u5c06\u5bfc\u81f4\u68c0\u67e5\u7ea6\u675f\u201c{1}\u201d\u4e2d\u65ad\u3002
+42Z99=\u5b57\u7b26\u4e32\u6216\u5341\u516d\u8fdb\u5236\u6587\u5b57\u4e0d\u80fd\u8d85\u8fc7 64K\u3002
+42Y16=\u7c7b\u201c{1}\u201d\u4e2d\u672a\u627e\u5230\u516c\u5171\u9759\u6001\u65b9\u6cd5\u201c{0}\u201d\u3002\u53ef\u80fd\u662f\u56e0\u4e3a\u65b9\u6cd5\u5df2\u5b58\u5728\uff0c\u4f46\u4e0d\u662f\u516c\u5171\u6216\u9759\u6001\u7684\u3002
+42846=\u65e0\u6cd5\u5c06\u7c7b\u578b\u201c{0}\u201d\u8f6c\u6362\u4e3a\u201c{1}\u201d\u3002
+42Y19=GROUP BY \u5217\u8868\u4e2d\u591a\u6b21\u51fa\u73b0\u201c{0}\u201d\u3002GROUP BY \u5217\u8868\u4e2d\u7684\u5217\u5fc5\u987b\u662f\u660e\u786e\u7684\u3002
+42Y22=\u805a\u96c6 {0} \u65e0\u6cd5\u5bf9\u7c7b\u578b {1} \u8fdb\u884c\u64cd\u4f5c\u3002
+42Y23=\u4e3a\u5217 {0} \u8fd4\u56de\u9519\u8bef\u7684 JDBC \u7c7b\u578b\u4fe1\u606f\u3002
+42Y24=\u89c6\u56fe\u201c{0}\u201d\u4e0d\u53ef\u66f4\u65b0\u3002\uff08\u89c6\u56fe\u5f53\u524d\u4e0d\u53ef\u66f4\u65b0\u3002\uff09
+42Y25=\u201c{0}\u201d\u662f\u7cfb\u7edf\u8868\u3002\u4e0d\u5141\u8bb8\u7528\u6237\u4fee\u6539\u6b64\u8868\u7684\u5185\u5bb9\u3002
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=\u89e6\u53d1\u5668\u64cd\u4f5c\u4e2d\u4e0d\u5141\u8bb8\u53c2\u6570\u3002
+42Y29=\u975e\u5206\u7ec4\u67e5\u8be2\u7684 SELECT \u5217\u8868\u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u65e0\u6548\u8868\u8fbe\u5f0f\u3002\u5f53 SELECT \u5217\u8868\u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u805a\u96c6\u65f6\uff0c\u6240\u6709\u6761\u76ee\u5fc5\u987b\u662f\u6709\u6548\u805a\u96c6\u8868\u8fbe\u5f0f\u3002
+42Y30=\u5206\u7ec4\u67e5\u8be2\u7684 SELECT \u5217\u8868\u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u65e0\u6548\u8868\u8fbe\u5f0f\u3002\u5bf9\u4e8e\u5e26\u6709 GROUP BY \u7684 SELECT\uff0cSELECT \u5217\u8868\u53ea\u80fd\u5305\u542b\u5206\u7ec4\u5217\u548c\u6709\u6548\u805a\u96c6\u8868\u8fbe\u5f0f\u3002
+42Y32=\u7c7b\u578b\u201c{2}\u201d\u4e0a\u805a\u96c6\u201c{1}\u201d\u7684\u805a\u96c6\u5668\u7c7b\u201c{0}\u201d\u4e0d\u5b9e\u73b0 com.ibm.db2j.aggregates.Aggregator\u3002
+
+42Y33=\u805a\u96c6 {0} \u5305\u542b\u4e00\u4e2a\u6216\u591a\u4e2a\u805a\u96c6\u3002
+42Y34=\u5217\u540d\u201c{0}\u201d\u4e0e\u8868\u201c{1}\u201d\u4e2d\u591a\u4e2a\u7ed3\u679c\u5217\u76f8\u5339\u914d\u3002
+42Y35=\u5217\u5f15\u7528\u201c{0}\u201d\u65e0\u6548\u3002\u5f53 SELECT \u5217\u8868\u81f3\u5c11\u5305\u542b\u4e00\u4e2a\u805a\u96c6\u65f6\uff0c\u6240\u6709\u6761\u76ee\u5fc5\u987b\u662f\u6709\u6548\u805a\u96c6\u8868\u8fbe\u5f0f\u3002
+42Y36=\u5217\u5f15\u7528\u201c{0}\u201d\u65e0\u6548\u3002\u5bf9\u4e8e\u5e26\u6709 GROUP BY \u7684 SELECT\uff0cSELECT \u5217\u8868\u53ea\u80fd\u5305\u542b\u5206\u7ec4\u5217\u548c\u6709\u6548\u805a\u96c6\u8868\u8fbe\u5f0f\u3002
+42Y37=\u201c{0}\u201d\u662f Java \u539f\u8bed\uff0c\u4e0d\u80fd\u7531\u6b64\u8fd0\u7b97\u7b26\u4f7f\u7528\u3002
+42Y38=\u5728 insert\uff08\u5176\u4e2d\u76ee\u6807\u8868\u201c{0}\u201d\u5728 SELECT \u4e2d\u88ab\u5f15\u7528\uff09\u4e0a\u4e0d\u5141\u8bb8 insertMode = replace\u3002
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=\u201c{0}\u201d\u53ef\u80fd\u4e0d\u4f1a\u51fa\u73b0\u5728 CHECK CONSTRAINT \u5b9a\u4e49\u4e2d\uff0c\u56e0\u4e3a\u5b83\u53ef\u80fd\u4f1a\u8fd4\u56de\u975e\u786e\u5b9a\u7ed3\u679c\u3002
+42Y40=\u89e6\u53d1\u5668\u201c{1}\u201d\u7684 UPDATE OF \u5217\u8868\u4e2d\u591a\u6b21\u51fa\u73b0\u201c{0}\u201d\u3002
+42Y41=\u65e0\u6cd5\u901a\u8fc7 EXECUTE \u8bed\u53e5\u76f4\u63a5\u8c03\u7528\u201c{0}\u201d\uff0c\u56e0\u4e3a\u5b83\u662f\u89e6\u53d1\u5668\u7684\u4e00\u90e8\u5206\u3002
+42Y42=\u5c0f\u6570\u4f4d\u201c{1}\u201d\u4e0d\u662f {0} \u7684\u6709\u6548\u5c0f\u6570\u4f4d\u3002
+42Y43=\u5c0f\u6570\u4f4d\u201c{0}\u201d\u4e0d\u662f\u7cbe\u5ea6\u4e3a\u201c{1}\u201d\u7684\u6709\u6548\u5c0f\u6570\u4f4d\u3002
+42Y44=FROM \u5217\u8868\u7684\u201c\u5c5e\u6027\u201d\u5217\u8868\u4e2d\u6307\u5b9a\u4e86\u65e0\u6548\u952e\u201c{0}\u201d\u3002\u5f53\u524d\u652f\u6301\u7684\u533a\u5206\u5927\u5c0f\u5199\u952e\u4e3a\u201c{1}\u201d\u3002
+42Y45=\u65e0\u6cd5\u7ed1\u5b9a VTI\u201c{0}\u201d\uff0c\u56e0\u4e3a\u5b83\u662f\u7279\u6b8a\u89e6\u53d1\u5668 VTI\uff0c\u800c\u4e14\u6b64\u8bed\u53e5\u4e0d\u662f\u89e6\u53d1\u5668\u64cd\u4f5c\u6216 WHEN \u5b50\u53e5\u7684\u4e00\u90e8\u5206\u3002
+42Y46=FROM \u5217\u8868\u4e2d\u65e0\u6548\u201c\u5c5e\u6027\u201d\u5217\u8868\u3002\u8868\u201c{1}\u201d\u4e0a\u4e0d\u5b58\u5728\u7d22\u5f15\u201c{0}\u201d\u3002
+42Y48=FROM \u5217\u8868\u4e2d\u65e0\u6548\u201c\u5c5e\u6027\u201d\u5217\u8868\u3002\u8868\u201c{1}\u201d\u4e0a\u4e0d\u5b58\u5728\u547d\u540d\u7684\u7ea6\u675f\u201c{0}\u201d\uff0c\u6216\u8005\u7ea6\u675f\u4e0d\u5177\u6709\u53cd\u5411\u7d22\u5f15\u3002
+42Y49=\u4e3a\u5c5e\u6027\u5173\u952e\u5b57\u201c{0}\u201d\u6307\u5b9a\u4e86\u591a\u4e2a\u503c\u3002
+
+42Y50=\u8868\u201c{0}\u201d\u7684\u201c\u5c5e\u6027\u201d\u5217\u8868\u53ef\u5305\u542b\u7d22\u5f15\u6216\u7ea6\u675f\u7684\u503c\uff0c\u4f46\u4e0d\u80fd\u540c\u65f6\u5305\u542b\u4e8c\u8005\u3002
+42Y55=\u201c{0}\u201d\u65e0\u6cd5\u5728\u201c{1}\u201d\u4e0a\u6267\u884c\uff0c\u56e0\u4e3a\u5b83\u4e0d\u5b58\u5728\u3002
+42Y56=\u8868\u201c{1}\u201d\u4e0a\u201c\u5c5e\u6027\u201d\u5217\u8868\u4e2d\u6307\u5b9a\u4e86\u65e0\u6548 joinStrategy\u201c{0}\u201d\u3002joinStrategy \u5f53\u524d\u652f\u6301\u7684\u503c\u4e3a\u201chash\u201d\u3001\u201cnestedloop\u201d\u3002
+42Y58=\u4e3a\u4f18\u5316\u5668\u91cd\u8bbe\u201c{1}\u201d\u8f6c\u6362\u503c\u201c{0}\u201d\u65f6\u53d1\u751f NumberFormatException\u3002
+42Y59=\u4e3a hashInitialCapacity \u91cd\u8bbe\u6307\u5b9a\u4e86\u65e0\u6548\u503c\u201c{0}\u201d\u3002\u503c\u5fc5\u987b\u4e3a > 0\u3002
+42Y60=\u4e3a hashLoadFactor \u91cd\u8bbe\u6307\u5b9a\u4e86\u65e0\u6548\u503c\u201c{0}\u201d\u3002\u503c\u5fc5\u987b\u4e3a > 0.0 \u548c <= 1.0\u3002
+42Y61=\u4e3a hashMaxCapacity \u91cd\u8bbe\u6307\u5b9a\u4e86\u65e0\u6548\u503c\u201c{0}\u201d\u3002\u503c\u5fc5\u987b\u4e3a > 0\u3002
+42Y62=\u201c{1}\u201d\u4e0a\u4e0d\u5141\u8bb8\u201c{0}\u201d\uff0c\u56e0\u4e3a\u5b83\u662f\u89c6\u56fe\u3002
+42Y63=\u6563\u5217\u8fde\u63a5\u8981\u6c42\u6240\u9009\u7d22\u5f15\u6216\u5806\u4e2d\u5217\u4e0a\u53ef\u4f18\u5316\u7684 equijoin \u8c13\u8bcd\u3002\u5728\u8868\u6216\u7d22\u5f15\u201c{0}\u201d\u4e2d\u4efb\u4f55\u5217\u4e0a\u4e0d\u5b58\u5728\u53ef\u4f18\u5316\u7684 equijoin \u8c13\u8bcd\u3002\u4f7f\u7528\u201cindex\u201d\u4f18\u5316\u5668\u91cd\u8bbe\uff0c\u4ee5\u5728\u8868\u201c{1}\u201d\u4e0a\u6307\u5b9a\u8fd9\u6837\u7684\u7d22\u5f15\u6216\u5806\u3002
+42Y64=\u201c{0}\u201d\u7684 bulkFetch \u503c\u65e0\u6548\uff1abulkFetch \u7684\u6700\u5c0f\u503c\u4e3a 1\u3002
+42Y65=\u201c{0}\u201d\u8fde\u63a5\u4e0a\u4e0d\u5141\u8bb8 bulkFetch\u3002
+42Y66=\u53ef\u66f4\u65b0\u6e38\u6807\u4e0a\u4e0d\u5141\u8bb8 bulkFetch\u3002
+42Y67=\u65e0\u6cd5\u5220\u9664\u6a21\u5f0f\u201c{0}\u201d\u3002
+42Y69=\u672a\u627e\u5230\u6b64\u8bed\u53e5\u7684\u6709\u6548\u6267\u884c\u89c4\u5212\u3002\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u4e0b\u5217\u4e24\u4e2a\u539f\u56e0\u4e4b\u4e00\uff1a\u5f53\u4e0d\u5141\u8bb8\u6563\u5217\u8fde\u63a5\uff08\u65e0\u53ef\u4f18\u5316\u7684\u7b49\u503c\u8fde\u63a5\uff09\u65f6\uff0c\u60a8\u6307\u5b9a\u4e86\u6563\u5217\u8fde\u63a5\u7b56\u7565\uff0c\u6216\u8005\u60a8\u5c1d\u8bd5\u8fde\u63a5\u4e24\u4e2a ExternalVirtualTable\uff0c\u5b83\u4eec\u5f7c\u6b64\u4e4b\u95f4\u4e92\u76f8\u5f15\u7528\uff0c\u6240\u4ee5\u65e0\u6cd5\u6c42\u503c\u8bed\u53e5\u3002
+42Y70=\u7528\u6237\u6307\u5b9a\u7684 join order \u4e0d\u662f\u5408\u6cd5\u7684 join order\u3002\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u6765\u81ea\u5185\u90e8\u8868\u7684 join \u5217\u6b63\u88ab\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9\u5916\u90e8\u865a\u62df\u8868\u3002
+42Y71=\u65e0\u6cd5\u5220\u9664\u7cfb\u7edf\u51fd\u6570\u6216\u8fc7\u7a0b\u201c{0}\u201d\u3002
+42Y82=\u65e0\u6cd5\u4f7f\u7528 DROP \u8bed\u53e5\u5220\u9664\u7cfb\u7edf\u751f\u6210\u7684\u5b58\u50a8\u7684\u5df2\u51c6\u5907\u8bed\u53e5\u201c{0}\u201d\u3002\u5b83\u662f\u89e6\u53d1\u5668\u7684\u4e00\u90e8\u5206\u3002
+42Y83=\u65e0\u7c7b\u578b\u7684\u7a7a\u4e0d\u5141\u8bb8\u4f5c\u4e3a\u805a\u96c6 {0} \u7684\u81ea\u53d8\u91cf\u3002\u8bf7\u5c06\u7a7a\u5f3a\u5236\u8f6c\u6362\u4e3a\u5408\u9002\u7684\u7c7b\u578b\u3002
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=\u201c{0}\u201d\u672a\u663e\u793a\u5728 DEFAULT \u5b9a\u4e49\u4e2d\u3002
+42Y85=\u5f53 VALUES \u5b50\u53e5\u51fa\u73b0\u5728 INSERT \u8bed\u53e5\u4e2d\u65f6\uff0cVALUES \u5b50\u53e5\u4e2d\u4ec5\u5141\u8bb8 DEFAULT \u5173\u952e\u5b57\u3002
+42Y90=\u6b64\u7c7b\u578b\u7684\u8bed\u53e5\u4e0a\u4e0d\u5141\u8bb8 FOR UPDATE\u3002
+42Y91=\u89e6\u53d1\u5668\u64cd\u4f5c\u7684 EXECUTE \u8bed\u53e5\u4e2d\u4e0d\u5141\u8bb8 USING \u5b50\u53e5\u3002
+42Y92={0} \u89e6\u53d1\u5668\u53ea\u80fd\u5f15\u7528 {1} \u8f6c\u6362\u53d8\u91cf\uff0f\u8868\u3002
+42Y93=\u975e\u6cd5 REFERENCING \u5b50\u53e5\uff1a\u6bcf\u79cd\u7c7b\u578b\u7684\u8f6c\u6362\u53d8\u91cf\uff0f\u8868\u4ec5\u5141\u8bb8\u4e00\u4e2a\u540d\u79f0\u3002
+42Y94=AND \u6216 OR \u5177\u6709\u975e Boolean \u64cd\u4f5c\u6570\u3002AND \u548c OR \u7684\u64cd\u4f5c\u6570\u5fc5\u987b\u8d4b\u503c\u4e3a TRUE\u3001FALSE \u6216 UNKNOWN\u3002
+42Y95=\u4e0d\u652f\u6301\u5de6\u64cd\u4f5c\u6570\u7c7b\u578b\u4e3a\u201c{1}\u201d\uff0c\u53f3\u64cd\u4f5c\u6570\u7c7b\u578b\u4e3a\u201c{2}\u201d\u7684\u201c{0}\u201d\u8fd0\u7b97\u7b26\u3002
+42Y96.U=\u672a\u77e5
+42Y97=\u7b2c\u201c{0}\u201d\u884c\uff0c\u7b2c\u201c{1}\u201d\u5217\u4e0a\u65e0\u6548\u8f6c\u4e49\u5b57\u7b26\u3002
+42Y98.U=\u7b2c {1} \u884c\uff0c\u7b2c {2} \u5217\u4e0a\u9047\u5230\u201c{0}\u201d
+42Y99.U=\u7b2c {0} \u884c\uff0c\u7b2c {1} \u5217\u4e0a\u8bcd\u6cd5\u9519\u8bef\u3002\u9047\u5230\uff1a{2}
+42Z00.U=Java \u65b9\u6cd5\u8c03\u7528\u6216\u5b57\u6bb5\u5f15\u7528
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=\u65e0\u7c7b\u578b\u7684
+42Z02=\u6b64\u65f6\u4e0d\u652f\u6301\u591a\u4e2a DISTINCT \u805a\u96c6\u3002
+42Z07=ON \u5b50\u53e5\u4e2d\u4e0d\u5141\u8bb8\u805a\u96c6\u3002
+42Z08=\u201c{0}\u201d\u4e0a\u4e0d\u5141\u8bb8\u6210\u6279\u63d2\u5165\u66ff\u6362\uff0c\u56e0\u4e3a\u5b83\u5177\u6709\u5df2\u542f\u7528\u7684\u89e6\u53d1\u5668\uff08{1}\uff09\u3002
+42Z09.U=COLUMN DEFAULT \u7528\u4e8e
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=\u6d41
+
+# alter table modify column error messages.
+#####
+42Z15=\u4e3a\u5217\u201c{0}\u201d\u6307\u5b9a\u4e86\u65e0\u6548\u7c7b\u578b\u3002\u5217\u7684\u7c7b\u578b\u4e0d\u53ef\u66f4\u6539\u3002
+42Z16=\u53ea\u6709\u7c7b\u578b\u4e3a VARCHAR \u7684\u5217\u7684\u957f\u5ea6\u53ef\u6539\u53d8\u3002
+42Z17=\u4e3a\u5217\u201c{0}\u201d\u6307\u5b9a\u4e86\u65e0\u6548\u957f\u5ea6\u3002\u957f\u5ea6\u5fc5\u987b\u5927\u4e8e\u5f53\u524d\u5217\u957f\u5ea6
+42Z18=\u5217\u201c{0}\u201d\u662f\u5916\u952e\u7ea6\u675f\u201c{1}\u201d\u7684\u4e00\u90e8\u5206\u3002\u8981\u6539\u53d8\u6b64\u5217\u7684\u957f\u5ea6\uff0c\u60a8\u5e94\u8be5\u9996\u5148\u5220\u9664\u7ea6\u675f\uff0c\u6267\u884c ALTER TABLE\uff0c\u7136\u540e\u91cd\u65b0\u521b\u5efa\u7ea6\u675f\u3002
+42Z19=\u81f3\u5c11\u4e00\u4e2a\u5916\u952e\u7ea6\u675f\u201c{1}\u201d\u6b63\u5728\u5f15\u7528\u5217\u201c{0}\u201d\u3002\u8981\u6539\u53d8\u6b64\u5217\u7684\u957f\u5ea6\uff0c\u60a8\u5e94\u8be5\u9996\u5148\u5220\u9664\u6b63\u5728\u5f15\u7528\u7684\u7ea6\u675f\uff0c\u6267\u884c ALTER TABLE\uff0c\u7136\u540e\u91cd\u65b0\u521b\u5efa\u7ea6\u675f\u3002
+42Z20=\u5217\u201c{0}\u201d\u4e0d\u80fd\u662f\u53ef\u7a7a\u7684\u3002\u5b83\u662f\u4e0d\u80fd\u5177\u6709\u4efb\u4f55\u53ef\u7a7a\u5217\u7684\u4e3b\u952e\u7684\u4e00\u90e8\u5206\u3002
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=ALTER TABLE\u201c{0}\u201d\u4e3a\u4e0e\u73b0\u6709\u5217\u4e0d\u517c\u5bb9\u7684\u5217\u201c{1}\u201d\u6307\u5b9a\u5c5e\u6027\u3002
+42Z21=\u4e3a\u5217\u201c{0}\u201d\u7684\u6807\u8bc6\u6307\u5b9a\u4e86\u65e0\u6548\u589e\u91cf\u3002\u589e\u91cf\u5fc5\u987b\u662f\u975e\u96f6\u7684\u3002
+42Z22=\u4e3a\u6807\u8bc6\u5217\u201c{0}\u201d\u6307\u5b9a\u4e86\u65e0\u6548\u7c7b\u578b\u3002\u6807\u8bc6\u5217\u7684\u6709\u6548\u7c7b\u578b\u53ea\u80fd\u662f BIGINT\u3001INT \u548c SMALLINT\u3002
+42Z23=\u5c1d\u8bd5\u4fee\u6539\u6807\u8bc6\u5217\u201c{0}\u201d\u3002
+42Z24=\u8868\u201c{0}\u201d\u4e2d\u7684\u5217\u201c{1}\u201d\u7684\u6807\u8bc6\u503c\u4e2d\u53d1\u751f\u6ea2\u51fa\u3002
+42Z25=\u5185\u90e8\u9519\u8bef\u6807\u8bc6\u8ba1\u6570\u5668\uff1a\u8c03\u7528\u66f4\u65b0\uff0c\u800c\u6ca1\u6709\u5f53\u524d\u503c = NULL \u7684\u81ea\u53d8\u91cf\u3002
+42Z26=\u4e0d\u80fd\u4f7f\u5e26\u6709\u6807\u8bc6\u7f3a\u7701\u503c\u7684\u5217\u201c{0}\u201d\u6210\u4e3a\u53ef\u7a7a\u7684\u3002
+42Z27=\u4e0d\u80fd\u5c06\u53ef\u7a7a\u7684\u5217\u201c{0}\u201d\u4fee\u6539\u4e3a\u5177\u6709\u6807\u8bc6\u7f3a\u7701\u503c\u3002
+
+#####
+# end of identity error messages.
+
+42Z30.U=\u7528\u4e8e\u6b64 ResultSet \u7684\u65f6\u95f4 =
+42Z31.U=\u7528\u4e8e\u6b64 ResultSet \u548c\u4e0b\u9762\u7684\u65f6\u95f4 =
+42Z32.U=\u603b\u8ba1\u65f6\u95f4\u5206\u89e3\uff1a
+
+42Z33.U=\u6784\u9020\u51fd\u6570\u65f6\u95f4\uff08\u6beb\u79d2\uff09=
+42Z34.U=\u6253\u5f00\u65f6\u95f4\uff08\u6beb\u79d2\uff09=
+42Z35.U=\u4e0b\u4e00\u4e2a\u65f6\u95f4\uff08\u6beb\u79d2\uff09=
+42Z36.U=\u5173\u95ed\u65f6\u95f4\uff08\u6beb\u79d2\uff09=
+42Z37.U=\u65e0
+42Z38.U=\u5b9a\u4f4d\u4fe1\u606f\u4e0d\u53ef\u7528\uff0c\u56e0\u4e3a\u6b64 ResultSet \u8fd8\u672a\u6253\u5f00\u3002
+42Z39.U=\u83b7\u53d6\u5b9a\u4f4d\u5668\u65f6\uff0c\u53d1\u751f\u610f\u5916\u5f02\u5e38 {0}\u3002
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U={0} \u5728\u9996 {1} \u5217\u4e0a\u3002
+42Z41.U=\u4ee5\u4e0b\u5217\u4e2d\u7684\u5df2\u6392\u5e8f\u7684\u7a7a\u8bed\u4e49\uff1a
+
+42Z42.U=\u5217\u6807\u8bc6
+42Z43.U=\u8fd0\u7b97\u7b26
+42Z44.U=\u5df2\u6392\u5e8f\u7684\u7a7a
+42Z45.U=\u672a\u77e5\u8fd4\u56de\u503c
+42Z46.U=\u5426\u5b9a\u6bd4\u8f83\u7ed3\u679c
+42Z47.U={0} \u5f53\u524d\u4e0d\u652f\u6301\u83b7\u53d6\u4f5c\u4e3a String \u7684\u67e5\u8be2\u65b9\u6848
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=\u5217[{0}][{1}] \u6807\u8bc6
+
+# matches DB2
+42939=\u65e0\u6cd5\u4f7f\u7528\u6a21\u5f0f\u540d\u201c{0}\u201d\u521b\u5efa\u5bf9\u8c61\u3002
+
+
+
+
+42Z50=\u5185\u90e8\u9519\u8bef\uff1a\u65e0\u6cd5\u751f\u6210 {0} \u7684\u4ee3\u7801\u3002
+42Z53=\u5185\u90e8\u9519\u8bef\uff1a\u4e0d\u4e86\u89e3\u7528\u4e8e\u751f\u6210\u8282\u70b9\u9009\u9879 {0} \u7684\u6fc0\u6d3b\u7c7b\u578b\u3002
+42Z54.U=\u5728\u5206\u6790\u540e\u6b64\u5f02\u5e38\u505c\u6b62\u8bed\u53e5 \uff0d \u4e0d\u9700\u8981\u8fdb\u4e00\u6b65\u5904\u7406\u3002
+42Z55.U=\u5728\u7531 StopAfterParsing \u8c03\u8bd5\u6807\u5fd7\u5206\u6790\u540e\uff0c\u6267\u884c\u505c\u6b62\u3002
+42Z56.U=\u5728\u7531 StopAfterBinding \u8c03\u8bd5\u6807\u5fd7\u7ed1\u5b9a\u540e\uff0c\u6267\u884c\u505c\u6b62\u3002
+42Z57.U=\u5728\u7531 StopAfterOptimizing \u8c03\u8bd5\u6807\u5fd7\u4f18\u5316\u540e\uff0c\u6267\u884c\u505c\u6b62\u3002
+42Z58.U=\u5728\u7531 StopAfterGenerating \u8c03\u8bd5\u6807\u5fd7\u751f\u6210\u540e\uff0c\u6267\u884c\u505c\u6b62\u3002
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=\u53ef\u5e8f\u5217\u5316
+42Z81.U=\u8bfb\u843d\u5b9e
+42Z82.U=\u4e13\u7528
+42Z83.U=\u5373\u65f6\u5171\u4eab
+42Z84.U=\u5171\u4eab
+42Z85.U=\u8868
+42Z86.U=\u884c
+42Z87.U=\u5171\u4eab\u8868
+42Z88.U=\u5171\u4eab\u884c
+
+# More generic language stuff
+42Z90=\u7c7b\u201c{0}\u201d\u672a\u8fd4\u56de\u53ef\u66f4\u65b0\u7684 ResultSet\u3002
+42Z91=\u5b50\u67e5\u8be2
+42Z92=\u53ef\u91cd\u590d\u8bfb\u53d6
+42Z9A=\u672a\u843d\u5b9e\u8bfb\u53d6
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=\u8bf7\u6c42\u7684\u51fd\u6570\u65e0\u6cd5\u5f15\u7528 SESSION \u6a21\u5f0f\u4e2d\u7684\u8868\u3002
+# Declare global temporary table language stuff. Matches DB2
+428EK=\u5df2\u58f0\u660e\u5168\u5c40\u4e34\u65f6\u8868\u540d\u7684\u9650\u5b9a\u7b26\u5fc5\u987b\u4e3a SESSION\u3002
+42995=\u8bf7\u6c42\u7684\u51fd\u6570\u672a\u5e94\u7528\u4e8e\u5168\u5c40\u4e34\u65f6\u8868\u3002
+42962=\u5df2\u58f0\u660e\u5168\u5c40\u4e34\u65f6\u8868\u6216\u8fc7\u7a0b\u5b9a\u4e49\u4e2d\u4e0d\u5141\u8bb8\u957f\u5217\u7c7b\u578b\u5217\u6216\u53c2\u6570\u201c{0}\u201d\u3002
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=\u9644\u52a0\u5230
+43X01.U=\u5f00\u59cb\u5b50\u67e5\u8be2\u53f7
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=Any ResultSet
+43X03.U=\u6253\u5f00\u6570
+43X04.U=\u770b\u5230\u7684\u884c
+43X05.U=\u6e90\u7ed3\u679c\u96c6
+43X06.U=\u7ed3\u675f\u5b50\u67e5\u8be2\u53f7
+43X07.U=\u4f18\u5316\u5668\u4f30\u8ba1\u7684\u884c\u8ba1\u6570
+43X08.U=\u4f18\u5316\u5668\u4f30\u8ba1\u7684\u6210\u672c
+43X09.U=\u79d2
+43X10.U=\u603b\u8ba1
+43X11.U=\u8282\u70b9
+43X12.U=\u5f53\u524d\u672a\u5bf9 {1} \u5b9e\u73b0 {0}
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=\u5220\u9664 ResultSet\uff0c\u4f7f\u7528
+43X14.U=\u8868\u9501\u5b9a
+43X15.U=\u884c\u9501\u5b9a
+43X16.U=\u5df2\u5ef6\u8fdf
+43X17.U=\u5220\u9664\u7684\u884c
+43X18.U=\u66f4\u65b0\u7684\u7d22\u5f15
+43X19.U=\u5220\u9664
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=\u4e0d\u540c\u6807\u91cf\u805a\u96c6 ResultSet
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=\u884c\u8f93\u5165
+43X22.U=\u4e0d\u540c\u6807\u91cf\u805a\u96c6
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U=\u4f7f\u7528 {1} {2} \u7684 {0} \u7684\u4e0d\u540c\u626b\u63cf ResultSet
+43X24.U=\u7ea6\u675f
+43X25.U=\u7d22\u5f15
+43X26.U={0} \u7684\u4e0d\u540c\u626b\u63cf ResultSet
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=\u5728 {0} \u9694\u79bb\u7ea7\u522b\u4e0a\uff0c\u4f7f\u7528 {1} \u9501\u5b9a
+43X28.U=\u626b\u63cf\u4fe1\u606f
+43X29.U=\u4e0d\u540c\u7684\u5217\u662f\u5217\u53f7
+43X30.U=\u4e0d\u540c\u7684\u5217\u662f\u5217\u53f7
+43X31.U=\u6563\u5217\u8868\u5927\u5c0f
+43X32.U=\u8fc7\u6ee4\u7684\u884c
+43X33.U=\u4e0b\u4e00\u65f6\u95f4\uff08\u4ee5\u6beb\u79d2\uff0f\u884c\u8ba1\uff09
+43X34.U=\u5f00\u59cb\u4f4d\u7f6e
+43X35.U=\u505c\u6b62\u4f4d\u7f6e
+43X36.U=\u626b\u63cf\u9650\u5b9a\u7b26
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=next \u9650\u5b9a\u7b26
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=\u5728 {0} \u4e0a\uff0c\u4f7f\u7528 {1}
+43X39.U=\u4e0d\u540c\u7684\u626b\u63cf
+43X40.U=\u6392\u5e8f\u4fe1\u606f
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=\u5206\u7ec4\u805a\u96c6 ResultSet
+43X42.U=\u5177\u6709\u4e0d\u540c\u7684\u805a\u96c6
+43X43.U=\u6309\u6392\u5e8f\u7684\u987a\u5e8f
+43X44.U=\u5206\u7ec4\u805a\u96c6
+43X45.U=\u6563\u5217\u5b58\u5728\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=\u6563\u5217\u5b58\u5728\u8fde\u63a5 ResultSet
+43X47.U=\u6563\u5217\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=\u6563\u5217\u8fde\u63a5 ResultSet
+43X49.U=\u6563\u5217\u5de6\u5916\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=\u6563\u5217\u5de6\u5916\u8fde\u63a5 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U={0} \u7684\u6563\u5217\u626b\u63cf ResultSet\uff0c\u4f7f\u7528 {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U={0} \u7684\u6563\u5217\u626b\u63cf ResultSet
+43X53.U=\u6563\u5217\u952e\u662f\u5217\u53f7
+43X54.U=\u6563\u5217\u952e\u662f\u5217\u53f7
+43X55.U=\u6563\u5217\u626b\u63cf
+43X56.U=\u9644\u52a0\u7684\u5b50\u67e5\u8be2
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=\u6563\u5217\u8868 ResultSet
+43X58.U=\u6563\u5217\u8868
+43X59.U=\u6240\u6709
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U={0} \u7684\u7d22\u5f15\u884c\u5230\u57fa\u672c\u884c ResultSet
+43X61.U=\u4ece\u5806\u8bbf\u95ee\u7684\u5217
+#NOTE: {0} is a table name
+43X62.U=\u7528\u4e8e {0}
+43X63.U=\u7d22\u5f15\u884c\u5230\u57fa\u672c\u884c
+43X64.U=\u63d2\u5165\u65b9\u5f0f\uff1a\u6210\u6279\u63d2\u5165
+43X65.U=\u63d2\u5165\u65b9\u5f0f\uff1a\u6b63\u5e38\uff08\u7531\u4e8e\u975e\u7a7a\u8868\uff0c\u65e0\u6cd5\u6267\u884c\u6210\u6279\u63d2\u5165\uff09
+43X66.U=\u63d2\u5165\u65b9\u5f0f\uff1a\u6b63\u5e38
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=\u63d2\u5165 ResultSet\uff0c\u4f7f\u7528
+43X68.U=\u63d2\u5165\u7684\u884c
+43X69.U=\u63d2\u5165
+43X70.U=\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U=\u4f7f\u7528\u7d22\u5f15 {1} \u7684 {0} \u7684\u6700\u540e\u952e\u7d22\u5f15\u626b\u63cf ResultSet
+43X72.U=\u5728 {0} \u9694\u79bb\u7ea7\u522b\u4e0a\uff0c\u4f7f\u7528\u4f18\u5316\u5668\u9009\u62e9\u7684 {1} \u9501\u5b9a
+43X73.U=\u8868\u626b\u63cf
+43X74.U=\u7d22\u5f15\u626b\u63cf
+#NOTE: {0} is a table name or class name
+43X75.U=\u5728 {0} \u4e0a
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=\u7269\u5316 ResultSet
+43X77.U=\u4e34\u65f6 Conglomerate \u521b\u5efa\u65f6\u95f4\uff08\u6beb\u79d2\uff09
+43X78.U=\u4e34\u65f6 Conglomerate \u53d6\u51fa\u65f6\u95f4\uff08\u6beb\u79d2\uff09
+43X79.U=\u4ece\u5de6\u4fa7\u770b\u5230\u7684\u884c
+43X80.U=\u4ece\u53f3\u4fa7\u770b\u5230\u7684\u884c
+43X81.U=\u8fd4\u56de\u7684\u884c
+43X82.U=\u5de6\u4fa7\u7ed3\u679c\u96c6
+43X83.U=\u53f3\u4fa7\u7ed3\u679c\u96c6
+43X84.U=\u5d4c\u5957\u5faa\u73af\u5b58\u5728\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=\u5d4c\u5957\u5faa\u73af\u5b58\u5728\u8fde\u63a5 ResultSet
+43X86.U=\u5d4c\u5957\u5faa\u73af\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=\u5d4c\u5957\u5faa\u73af\u8fde\u63a5 ResultSet
+43X88.U=\u8fd4\u56de\u7a7a\u53f3\u4fa7\u884c
+43X89.U=\u5d4c\u5957\u5faa\u73af\u5de6\u5916\u8fde\u63a5
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=\u5d4c\u5957\u5faa\u73af\u5de6\u5916\u8fde\u63a5 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=\u6b63\u5e38 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=\u4e00\u6b21 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=\u9879\u76ee\u9650\u5236 ResultSet
+43X94.U=\u9650\u5236
+43X95.U=\u8ba1\u5212
+43X96.U=\u9650\u5236\u65f6\u95f4\uff08\u6beb\u79d2\uff09
+43X97.U=\u8ba1\u5212\u65f6\u95f4\uff08\u6beb\u79d2\uff09
+43X98.U=\u9879\u76ee\u9650\u5236
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=\u884c ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=\u6807\u91cf\u805a\u96c6 ResultSet
+43Y01.U=\u7d22\u5f15\u952e\u4f18\u5316
+43Y02.U=\u6807\u91cf\u805a\u96c6
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=\u6eda\u52a8\u4e0d\u654f\u611f ResultSet
+43Y04.U=\u4ece\u6563\u5217\u8868\u7684\u8bfb\u53d6\u6570
+43Y05.U=\u5230\u6563\u5217\u8868\u7684\u5199\u5165\u6570
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=\u6392\u5e8f ResultSet
+43Y07.U=\u6d88\u9664\u91cd\u590d
+43Y08.U=\u6392\u5e8f
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U=\u4f7f\u7528 {1} {2} \u7684 {0} \u7d22\u5f15\u626b\u63cf ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U={0} \u7684\u8868\u626b\u63cf ResultSet
+43Y11.U=\u4f7f\u7528\u7684\u5b9e\u9645\u9501\u5b9a\uff1a\u8868\u7ea7\u522b\u9501\u5b9a\u3002
+43Y12.U=\u53d6\u51fa\u5927\u5c0f
+43Y13.U=\u9650\u5b9a\u7b26
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=\u8054\u5408 ResultSet
+43Y15.U=\u8054\u5408
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=\u4f7f\u7528 {0} \u9501\u5b9a\u66f4\u65b0 ResultSet
+43Y17.U=\u5df2\u66f4\u65b0\u7684\u884c
+43Y18.U=\u66f4\u65b0
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U={0} \u7684 VTI ResultSet
+43Y20.U=VTI
+43Y21.U=\u7269\u5316\u7684\u5b50\u67e5\u8be2
+43Y22.U=\u8bed\u53e5\u540d
+43Y23.U=\u8bed\u53e5\u6587\u672c
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=\u5206\u6790\u65f6\u95f4
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=\u7ed1\u5b9a\u65f6\u95f4
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=\u4f18\u5316\u65f6\u95f4
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=\u751f\u6210\u65f6\u95f4
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=\u7f16\u8bd1\u65f6\u95f4
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=\u6267\u884c\u65f6\u95f4
+43Y30.U=\u5f00\u59cb\u7f16\u8bd1\u65f6\u95f4\u6233\u8bb0
+43Y31.U=\u7ed3\u675f\u7f16\u8bd1\u65f6\u95f4\u6233\u8bb0
+43Y32.U=\u5f00\u59cb\u6267\u884c\u65f6\u95f4\u6233\u8bb0
+43Y33.U=\u7ed3\u675f\u6267\u884c\u65f6\u95f4\u6233\u8bb0
+43Y44.U=\u8bed\u53e5\u6267\u884c\u89c4\u5212\u6587\u672c
+43Y45.U=\u8fd0\u884c\u65f6 100%\uff0c{0} \u79d2
+43Y46.U=\u63d2\u5165 VTI ResultSet
+43Y47.U=\u5220\u9664 VTI ResultSet
+43Y49.U=\u63d2\u5165 VTI
+43Y50.U=\u5220\u9664 VTI
+43Y51.U=\u7ea7\u8054\u5220\u9664 ResultSet
+43Y52.U=\u7ea7\u8054\u5220\u9664 ResultSet\uff0c\u4f7f\u7528
+43Y53.U=Referential Actions On Dependent \u8868
+43Y54.U=\u5f00\u59cb Referential Action On Dependent \u8868\u53f7
+43Y55.U=\u7ed3\u675f Referential Action On Dependent \u8868\u53f7
+
+54004=SELECT \u8bed\u53e5\u5728 GROUP BY\u3001ORDER BY \u6216\u9009\u62e9\u5217\u8868\u4e2d\u5177\u6709\u8fc7\u591a\u7684\u9879\u3002
+54008=CREATE INDEX \u8bed\u53e5\u6307\u5b9a\u4e86\u8fc7\u591a\u5217\uff0816 \u662f\u6700\u5927\u503c\uff09\u3002
+54023=\u5df2\u7ecf\u8d85\u51fa\u5bf9\u8fc7\u7a0b\u7684\u53c2\u6570\u6570\u91cf\u7684\u9650\u5236\u3002\u9650\u5236\u4e3a {0}\uff0c\u4e14\u8fc7\u7a0b {1} \u7684\u53c2\u6570\u6570\u91cf\u4e3a {2}\u3002
+54038=\u8d85\u51fa\u5d4c\u5957\u89e6\u53d1\u5668\u7684\u6700\u5927\u6df1\u5ea6\u3002
+
+## all other org.apache.derby.catalog.types
+44X00.U=SQL \u7c7b\u578b\u540d
+44X05.U=\u4e0b\u4e00\u4e2a\u9519\u8bef
+
+X0X02.S=\u65e0\u6cd5\u4ee5\u201c{1}\u201d\u65b9\u5f0f\u9501\u5b9a\u8868\u201c{0}\u201d
+X0X03.S=\u4e8b\u52a1\u72b6\u6001\u65e0\u6548 \uff0d \u4fdd\u6301\u7684\u6e38\u6807\u9700\u8981\u540c\u4e00\u9694\u79bb\u7ea7\u522b
+X0X05.S=\u8868\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002
+X0X0E.S=\u63d2\u5165\u8868\u4e2d\u672a\u627e\u5230\u81ea\u52a8\u751f\u6210\u7684\u5217\u9009\u62e9\u6570\u7ec4\u4e2d\u5217\u51fa\u7684\u5217\u4f4d\u7f6e\u201c{0}\u201d\u3002
+X0X0F.S=\u63d2\u5165\u8868\u4e2d\u672a\u627e\u5230\u81ea\u52a8\u751f\u6210\u7684\u5217\u9009\u62e9\u6570\u7ec4\u4e2d\u5217\u51fa\u7684\u5217\u540d\u201c{0}\u201d\u3002
+X0X07.S=\u65e0\u6cd5\u5220\u9664 jar \u6587\u4ef6\u201c{0}\u201d\uff0c\u56e0\u4e3a\u5b83\u5728\u60a8\u7684 db2j.database.classpath\u201c{0}\u201d\u4e0a\u3002
+X0X10.S=USING \u5b50\u53e5\u8fd4\u56de\u591a\u884c\uff0c\u53ea\u6709\u5355\u884c ResultSet \u662f\u5141\u8bb8\u7684\u3002
+X0X11.S=USING \u5b50\u53e5\u672a\u8fd4\u56de\u4efb\u4f55\u7ed3\u679c\uff0c\u65e0\u53c2\u6570\u53ef\u8bbe\u7f6e\u3002
+X0X13.S=\u6a21\u5f0f\u201c{1}\u201d\u4e2d\u4e0d\u5b58\u5728 Jar \u6587\u4ef6\u201c{0}\u201d\u3002
+X0X57.S=\u5c1d\u8bd5\u5c06\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684 Java \u503c\u653e\u5165 SQL \u503c\uff0c\u4f46\u662f\u6ca1\u6709\u76f8\u5e94\u7684 SQL \u7c7b\u578b\u3002Java \u503c\u53ef\u80fd\u662f\u65b9\u6cd5\u8c03\u7528\u6216\u5b57\u6bb5\u8bbf\u95ee\u7684\u7ed3\u679c\u3002
+X0X60.S=\u540d\u79f0\u4e3a\u201c{0}\u201d\u7684\u6e38\u6807\u5df2\u5b58\u5728\u3002
+X0X61.S=\u7d22\u5f15\u201c{0}\u201d\u548c\u8868\u201c{1}.{2}\u201d\u4e2d\u5217\u201c{4}\u201d\u7684\u503c\u4e0e\u884c\u4f4d\u7f6e {3} \u4e0d\u5339\u914d\u3002\u5f53\u57fa\u672c\u8868\u4e2d\u7684\u503c\u4e3a\u201c{6}\u201d\u65f6\uff0c\u7d22\u5f15\u4e2d\u7684\u503c\u4e3a\u201c{5}\u201d\u3002\u5305\u542b\u884c\u4f4d\u7f6e\u7684\u5b8c\u5168\u7d22\u5f15\u952e\u4e3a\u201c{7}\u201d\u3002\u5efa\u8bae\u7684\u6b63\u786e\u64cd\u4f5c\u4e3a\u91cd\u65b0\u521b\u5efa\u7d22\u5f15\u3002
+X0X62.S=\u8868\u201c{0}\u201d\u548c\u7d22\u5f15\u201c{1}\u201d\u95f4\u627e\u5230\u4e0d\u4e00\u81f4\u3002\u5c1d\u8bd5\u4ece\u8868\u68c0\u7d22\u884c\u4f4d\u7f6e\u201c{2}\u201d\u65f6\u51fa\u9519\u3002\u5305\u542b\u884c\u4f4d\u7f6e\u7684\u5168\u7d22\u5f15\u952e\u4e3a\u201c{3}\u201d\u3002\u5efa\u8bae\u7684\u6b63\u786e\u64cd\u4f5c\u4e3a\u91cd\u65b0\u521b\u5efa\u7d22\u5f15\u3002
+X0X63.S=\u83b7\u53d6 IOException\u201c{0}\u201d\u3002
+X0X67.S=CREATE INDEX\u3001ORDER BY\u3001GROUP BY\u3001UNION \u6216 DISTINCT \u4e2d\u4e0d\u80fd\u4f7f\u7528\u7c7b\u578b\u4e3a\u201c{0}\u201d\u7684\u5217\uff0c\u56e0\u4e3a\u6b64\u7c7b\u578b\u4e0d\u652f\u6301\u6bd4\u8f83\u3002
+X0X81.S={0}\u201c{1}\u201d\u4e0d\u5b58\u5728\u3002
+X0X85.S=\u65e0\u6cd5\u521b\u5efa\u7d22\u5f15\u201c{0}\u201d\uff0c\u56e0\u4e3a\u201c{1}\u201d\u4e0d\u662f\u6709\u6548\u7684\u7d22\u5f15\u7c7b\u578b\u3002
+X0X86.S=\u5bf9\u4e8e ResultSet.absolute(int row) \u6765\u8bf4\uff0c0 \u662f\u65e0\u6548\u53c2\u6570\u503c\u3002
+X0X87.S=\u5f53\u6e38\u6807\u672a\u5b9a\u4f4d\u5728\u884c\u4e0a\u65f6\uff0c\u65e0\u6cd5\u8c03\u7528 ResultSet.relative(int row)\u3002
+X0X95.S=\u65e0\u6cd5\u5728\u5bf9\u8c61\u201c{1}\u201d\u4e0a\u6267\u884c\u64cd\u4f5c\u201c{0}\u201d\uff0c\u56e0\u4e3a\u5b58\u5728\u6253\u5f00\u7684 ResultSet \u4f9d\u8d56\u4e8e\u6b64\u5bf9\u8c61\u3002
+X0X99.S=\u7d22\u5f15\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002
+X0Y16.S=\u201c{0}\u201d\u4e0d\u662f\u89c6\u56fe\u3002\u5982\u679c\u5b83\u662f\u8868\uff0c\u5219\u4f7f\u7528 DROP TABLE \u4f5c\u4e3a\u4ee3\u66ff\u3002
+X0Y23.S=\u65e0\u6cd5\u5728\u5bf9\u8c61\u201c{1}\u201d\u4e0a\u6267\u884c\u64cd\u4f5c\u201c{0}\u201d\uff0c\u56e0\u4e3a VIEW\u201c{2}\u201d\u4f9d\u8d56\u4e8e\u6b64\u5bf9\u8c61\u3002
+X0Y24.S=\u65e0\u6cd5\u5728\u5bf9\u8c61\u201c{1}\u201d\u4e0a\u6267\u884c\u64cd\u4f5c\u201c{0}\u201d\uff0c\u56e0\u4e3a STATEMENT\u201c{2}\u201d\u4f9d\u8d56\u4e8e\u6b64\u5bf9\u8c61\u3002
+X0Y25.S=\u65e0\u6cd5\u5728\u5bf9\u8c61\u201c{1}\u201d\u4e0a\u6267\u884c\u64cd\u4f5c\u201c{0}\u201d\uff0c\u56e0\u4e3a {2}\u201c{3}\u201d\u4f9d\u8d56\u4e8e\u6b64\u5bf9\u8c61\u3002
+X0Y26.S=\u7d22\u5f15\u201c{0}\u201d\u8981\u6c42\u4e0e\u8868\u201c{1}\u201d\u5728\u540c\u4e00\u6a21\u5f0f\u4e2d\u3002
+X0Y28.S=\u65e0\u6cd5\u5728\u7cfb\u7edf\u8868\u201c{1}\u201d\u4e0a\u521b\u5efa\u7d22\u5f15\u201c{0}\u201d\u3002\u7528\u6237\u65e0\u6cd5\u5728\u7cfb\u7edf\u8868\u4e0a\u521b\u5efa\u7d22\u5f15\u3002
+# column c already exists in table t.
+X0Y32.S={0}\u201c{1}\u201d\u5df2\u5728 {2}\u201c{3}\u201d\u4e0a\u5b58\u5728\u3002
+X0Y38.S=\u65e0\u6cd5\u521b\u5efa\u7d22\u5f15\u201c{0}\u201d\uff0c\u56e0\u4e3a\u8868\u201c{1}\u201d\u4e0d\u5b58\u5728\u3002
+X0Y41.S=\u7ea6\u675f\u201c{0}\u201d\u65e0\u6548\uff1a\u5f15\u7528\u7684\u8868 {1} \u6ca1\u6709\u4e3b\u952e\u3002\u6dfb\u52a0\u4e3b\u952e\u5230 {1} \u4e2d\uff0c\u6216\u8005\u660e\u786e\u6307\u5b9a\u6b64\u5916\u952e\u6240\u5f15\u7528\u7684\u552f\u4e00\u7ea6\u675f\u5217\u3002
+X0Y42.S=\u7ea6\u675f\u201c{0}\u201d\u65e0\u6548\uff1a\u5916\u952e\u5217\u7684\u7c7b\u578b\u4e0e\u6240\u5f15\u7528\u5217\u7684\u7c7b\u578b\u4e0d\u5339\u914d\u3002
+X0Y43.S=\u7ea6\u675f\u201c{0}\u201d\u65e0\u6548\uff1a{0}\uff08{1}\uff09\u4e2d\u7684\u5217\u6570\u4e0e\u6240\u5f15\u7528\u952e\uff08{2}\uff09\u4e2d\u7684\u5217\u6570\u4e0d\u5339\u914d\u3002
+X0Y44.S=\u7ea6\u675f\u201c{0}\u201d\u65e0\u6548\uff1a\u8868\u201c{1}\u201d\u4e0a\u6ca1\u6709\u4e0e\u5916\u952e\u4e2d\u5217\u7684\u6570\u76ee\u548c\u7c7b\u578b\u76f8\u5339\u914d\u7684\u552f\u4e00\u952e\u6216\u4e3b\u952e\u7ea6\u675f\u3002
+X0Y45.S=\u5916\u952e\u7ea6\u675f\u201c{0}\u201d\u65e0\u6cd5\u6dfb\u52a0\u5230\u8868 {1} \u4e2d\u6216\u5728\u8868\u4e0a\u542f\u7528\uff0c\u56e0\u4e3a\u4e00\u4e2a\u6216\u591a\u4e2a\u5916\u952e\u6ca1\u6709\u5339\u914d\u7684\u5f15\u7528\u952e\u3002
+X0Y46.S=\u7ea6\u675f\u201c{0}\u201d\u65e0\u6548\uff1a\u5f15\u7528\u7684\u8868 {1} \u4e0d\u5b58\u5728\u3002
+X0Y54.S=\u65e0\u6cd5\u5220\u9664\u6a21\u5f0f\u201c{0}\u201d\uff0c\u56e0\u4e3a\u5b83\u4e0d\u662f\u7a7a\u7684\u3002
+X0Y55.S=\u57fa\u672c\u8868\u4e2d\u7684\u884c\u6570\u4e0e\u8868\u4e0a\u81f3\u5c11\u4e00\u4e2a\u7d22\u5f15\u4e2d\u7684\u884c\u6570\u4e0d\u5339\u914d\u3002\u8868\u201c{1}.{2}\u201d\u4e0a\u7684\u7d22\u5f15\u201c{0}\u201d\u5177\u6709 {3} \u884c\uff0c\u4f46\u662f\u57fa\u672c\u8868\u5177\u6709 {4} \u884c\u3002\u5efa\u8bae\u7684\u6b63\u786e\u64cd\u4f5c\u4e3a\u91cd\u65b0\u521b\u5efa\u7d22\u5f15\u3002
+X0Y56.S=\u7cfb\u7edf\u8868\u201c{1}\u201d\u4e0a\u4e0d\u5141\u8bb8\u201c{0}\u201d\u3002
+X0Y57.S=\u975e\u53ef\u7a7a\u5217\u4e0d\u80fd\u6dfb\u52a0\u5230\u8868\u201c{0}\u201d\uff0c\u56e0\u4e3a\u8868\u81f3\u5c11\u5305\u542b\u4e00\u884c\u3002\u975e\u53ef\u7a7a\u5217\u53ea\u80fd\u6dfb\u52a0\u5230\u7a7a\u8868\u4e2d\u3002
+X0Y58.S=\u5c1d\u8bd5\u5c06\u4e3b\u952e\u7ea6\u675f\u6dfb\u52a0\u5230\u8868\u201c{0}\u201d\u5931\u8d25\uff0c\u56e0\u4e3a\u8868\u5df2\u5177\u6709\u6b64\u7c7b\u578b\u7684\u7ea6\u675f\u3002\u8868\u53ea\u80fd\u6709\u4e00\u4e2a\u4e3b\u952e\u7ea6\u675f\u3002
+X0Y59.S=\u5c1d\u8bd5\u5728\u8868\u201c{1}\u201d\u4e0a\u6dfb\u52a0\u6216\u542f\u7528\u7ea6\u675f\u5931\u8d25\uff0c\u56e0\u4e3a\u8868\u5305\u542b {2} \u884c\uff0c\u8fd9\u4e9b\u884c\u8fdd\u53cd\u4e0b\u5217\u68c0\u67e5\u7ea6\u675f\uff1a{0}\u3002
+X0Y63.S=\u8868\u201c{0}\u201d\u4e0a\u7684\u547d\u4ee4\u5931\u8d25\u3002\u4e3b\u952e\u6216\u552f\u4e00\u7ea6\u675f\uff0f\u7d22\u5f15\u5217\u4e2d\u627e\u5230 Null \u6570\u636e\u3002\u4e3b\u7d22\u5f15\u952e\u6216\u552f\u4e00\u7d22\u5f15\u952e\u4e2d\u7684\u6240\u6709\u5217\u90fd\u5fc5\u987b\u662f\u975e\u7a7a\u7684\u3002
+X0Y66.S=\u5f53\u7236\u8fde\u63a5\u4e2d\u5b58\u5728\u6682\u6302\u64cd\u4f5c\u65f6\uff0c\u5d4c\u5957\u8fde\u63a5\u4e2d\u65e0\u6cd5\u53d1\u51fa\u843d\u5b9e\u3002
+X0Y67.S=\u5f53\u7236\u8fde\u63a5\u4e2d\u5b58\u5728\u6682\u6302\u64cd\u4f5c\u65f6\uff0c\u5d4c\u5957\u8fde\u63a5\u4e2d\u65e0\u6cd5\u53d1\u51fa\u56de\u6eda\u3002
+X0Y68.S={0}\u201c{1}\u201d\u5df2\u5b58\u5728\u3002
+X0Y69.S=\u4e0d\u5141\u8bb8 {1}\uff0c\u56e0\u4e3a\u89e6\u53d1\u5668 {0} \u5728 {2} \u4e0a\u662f\u6d3b\u52a8\u7684\u3002
+X0Y70.S=\u5728\u8868 {1} \u4e0a\u4e0d\u5141\u8bb8 INSERT\u3001UPDATE \u548c DELETE\uff0c\u56e0\u4e3a\u89e6\u53d1\u5668 {0} \u662f\u6d3b\u52a8\u7684\u3002
+X0Y71.S=\u4e0d\u5141\u8bb8\u4e8b\u52a1\u64cd\u7eb5\uff08\u5982 SET ISOLATION\uff09\uff0c\u56e0\u4e3a\u89e6\u53d1\u5668 {0} \u662f\u6d3b\u52a8\u7684\u3002
+X0Y72.S=\u201c{0}\u201d\u4e0a\u4e0d\u5141\u8bb8\u6210\u6279\u63d2\u5165\u66ff\u6362\uff0c\u56e0\u4e3a\u5b83\u5177\u6709\u5df2\u542f\u7528\u7684\u89e6\u53d1\u5668\uff08{1}\uff09\u3002
+X0Y77.S=\u5728\u8fdb\u5c55\u4e2d\u7684\u5168\u5c40\u4e8b\u52a1\u4e0a\u65e0\u6cd5\u53d1\u51fa\u8bbe\u7f6e\u4e8b\u52a1\u9694\u79bb\u8bed\u53e5\uff0c\u56e0\u4e3a\u5b83\u9690\u5f0f\u5730\u843d\u5b9e\u5168\u5c40\u4e8b\u52a1\u3002
+
+X0Y78.S=\u65e0\u6cd5\u4f7f\u7528\u8fd4\u56de\u884c\u8ba1\u6570\u7684\u8bed\u53e5\u8c03\u7528 Statement.executeQuery()\u3002
+X0Y79.S=\u65e0\u6cd5\u4f7f\u7528\u8fd4\u56de ResultSet \u7684\u8bed\u53e5\u8c03\u7528 Statement.executeUpdate()\u3002
+X0Y80.S=ALTER \u8868\u201c{0}\u201d\u5931\u8d25\u3002\u5217\u201c{1}\u201d\u4e2d\u627e\u5230 Null \u6570\u636e\u3002
+X0Y83.S=\u8b66\u544a\uff1a\u5728\u4ece\u8868\u5220\u9664\u884c\u65f6\uff0c\u7528 Conglomerate \u6807\u8bc6 {1} \u672a\u5728\u7d22\u5f15\u4e2d\u627e\u5230\u57fa\u672c\u8868\u884c {0} \u7684\u7d22\u5f15\u884c\u3002\u4f5c\u4e3a\u5220\u9664\u64cd\u4f5c\u7684\u4e00\u90e8\u5206\uff0c\u6b64\u95ee\u9898\u5df2\u81ea\u52a8\u6539\u6b63\u3002
+XCL01.S=\u7ed3\u679c\u96c6\u672a\u8fd4\u56de\u884c\uff1b\u4e0d\u5141\u8bb8\u64cd\u4f5c {0}\u3002
+XCL05.S=\u6fc0\u6d3b\u5173\u95ed\uff0c\u4e0d\u5141\u8bb8\u64cd\u4f5c {0}\u3002
+XCL07.S=\u6e38\u6807\u201c{0}\u201d\u5173\u95ed\u3002\u9a8c\u8bc1\u81ea\u52a8\u843d\u5b9e\u5df2\u5173\u95ed\u3002
+XCL08.S=\u6e38\u6807\u201c{0}\u201d\u4e0d\u5728\u884c\u4e0a\u3002
+XCL09.S=\u6fc0\u6d3b\u4f20\u9012\u7ed9\u4e0d\u5339\u914d PreparedStatement \u7684\u201c{0}\u201d\u65b9\u6cd5\u3002
+XCL10.S=PreparedStatement \u5df2\u91cd\u65b0\u7f16\u8bd1\uff0c\u800c\u4e14\u53c2\u6570\u5df2\u66f4\u6539\u3002\u5982\u679c\u60a8\u4f7f\u7528 JDBC\uff0c\u60a8\u5fc5\u987b\u91cd\u65b0\u51c6\u5907\u8bed\u53e5\u3002
+XCL12.S=\u5c1d\u8bd5\u5c06\u7c7b\u578b\u201c{0}\u201d\u7684\u6570\u636e\u503c\u653e\u5165\u7c7b\u578b\u201c{1}\u201d\u7684\u6570\u636e\u503c\u3002
+XCL13.S=\u53c2\u6570\u4f4d\u7f6e\u201c{0}\u201d\u8d85\u51fa\u8303\u56f4\u3002\u6b64\u5df2\u51c6\u5907\u8bed\u53e5\u7684\u53c2\u6570\u6570\u76ee\u4e3a\u201c{1}\u201d\u3002
+XCL15.S=\u5f53\u5728\u5bf9\u8c61\u201c{0}\u201d\u4e0a\u8c03\u7528 compareTo() \u65b9\u6cd5\u65f6\uff0c\u53d1\u751f ClassCastException\u3002compareTo() \u7684\u53c2\u6570\u5c5e\u4e8e\u7c7b\u201c{1}\u201d\u3002
+XCL16.S=ResultSet \u672a\u6253\u5f00\uff0c\u4e0d\u5141\u8bb8\u64cd\u4f5c\u201c{0}\u201d\u3002\u9a8c\u8bc1\u81ea\u52a8\u843d\u5b9e\u5df2\u5173\u95ed\u3002
+XCL17.S=\u6b64\u6570\u636e\u5e93\u4e2d\u4e0d\u5141\u8bb8\u8bed\u53e5\u3002
+XCL19.S=\u952e\u201c{1}\u201d\u7684\u8868\u201c{0}\u201d\u4e2d\u7f3a\u5c11\u884c\u3002
+XCL20.S=\u7248\u672c\u7ea7\u522b\u201c{0}\u201d\u4e0a\u7684\u76ee\u5f55\u65e0\u6cd5\u5347\u7ea7\u4e3a\u7248\u672c\u7ea7\u522b\u201c{1}\u201d\u3002
+XCL21.S=\u5728\u51c6\u5907\u4e0d\u540c\u7684\u8bed\u53e5\u65f6\uff0c\u60a8\u5c1d\u8bd5\u6267\u884c\u6570\u636e\u5b9a\u4e49\u8bed\u53e5\uff08CREATE\u3001DROP \u6216 ALTER\uff09\u3002\u8fd9\u662f\u4e0d\u5141\u8bb8\u7684\u3002 \u5982\u679c\u60a8\u4ece Java \u7c7b\u7684\u9759\u6001\u521d\u59cb\u5316\u7a0b\u5e8f\uff08\u6b63\u5728\u4ece SQL \u8bed\u53e5\u5185\u4f7f\u7528\uff09\u5185\u6267\u884c\u6570\u636e\u5b9a\u4e49\u8bed\u53e5\uff0c\u5219\u5b83\u4f1a\u53d1\u751f\u3002
+XCL22.S=\u53c2\u6570 {0} \u65e0\u6cd5\u6ce8\u518c\u4e3a OUT \u53c2\u6570\uff0c\u56e0\u4e3a\u5b83\u662f\u4e00\u4e2a IN \u53c2\u6570\u3002
+XCL23.S=SQL \u7c7b\u578b\u6570\u201c{0}\u201d\u4e0d\u662f registerOutParameter() \u652f\u6301\u7684\u7c7b\u578b\u3002
+XCL24.S=\u53c2\u6570 {0} \u8868\u73b0\u4e3a\u8f93\u51fa\u53c2\u6570\uff0c\u4f46\u8fd9\u4e0d\u662f registerOutParameter() \u6240\u6307\u5b9a\u7684\u3002\u5982\u679c\u5b83\u4e0d\u662f\u8f93\u51fa\u53c2\u6570\uff0c\u5219\u5b83\u5fc5\u987b\u8bbe\u7f6e\u4e3a\u7c7b\u578b {1}\u3002
+XCL25.S=\u53c2\u6570 {0} \u65e0\u6cd5\u6ce8\u518c\u4e3a\u7c7b\u578b {1}\uff0c\u56e0\u4e3a\u5b83\u6620\u5c04\u5230\u7c7b\u578b {2}\uff0c\u4f46\u662f\u5b83\u4eec\u4e0d\u517c\u5bb9\u3002
+XCL26.S=\u53c2\u6570 {0} \u4e0d\u662f\u8f93\u51fa\u53c2\u6570\u3002
+XCL27.S=\u65e0\u6cd5\u8bbe\u7f6e\u8fd4\u56de\u8f93\u51fa\u53c2\u6570\u3002
+XCL30.S=\u4ece InputStream \u8bfb\u201c{0}\u201d\u65f6\u629b\u51fa IOException\u3002
+XCL31.S=\u8bed\u53e5\u5173\u95ed\u3002
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=\u7531\u4e8e\u5220\u9664\u89c4\u5219\u9650\u5236\uff0c\u6b64\u8868\u65e0\u6cd5\u5b9a\u4e49\u4e3a\u8868 {0} \u7684\u4ece\u5c5e\u3002\uff08\u5173\u7cfb\u4e3a\u81ea\u5f15\u7528\uff0c\u81ea\u5f15\u7528\u5173\u7cfb\u5df2\u4e0e SET NULL \u5220\u9664\u89c4\u5219\u4e00\u8d77\u5b58\u5728\u3002\uff09
+
+XCL34.S=\u7531\u4e8e\u5220\u9664\u89c4\u5219\u9650\u5236\uff0c\u6b64\u8868\u65e0\u6cd5\u5b9a\u4e49\u4e3a\u8868 {0} \u7684\u4ece\u5c5e\u3002\uff08\u5173\u7cfb\u7ec4\u6210\u4e24\u4e2a\u6216\u66f4\u591a\u8868\u7684\u5faa\u73af\uff0c\u8fd9\u5bfc\u81f4\u8868\u5220\u9664\u8fde\u63a5\u5230\u5176\u81ea\u5df1\uff08\u5faa\u73af\u4e2d\u6240\u6709\u5176\u5b83\u5220\u9664\u89c4\u5219\u5e94\u662f CASCADE\uff09\uff09\u3002
+
+XCL35.S=\u7531\u4e8e\u5220\u9664\u89c4\u5219\u9650\u5236\uff0c\u6b64\u8868\u65e0\u6cd5\u5b9a\u4e49\u4e3a\u8868 {0} \u7684\u4ece\u5c5e\u3002\uff08\u5173\u7cfb\u5bfc\u81f4\u8868\u901a\u8fc7\u591a\u4e2a\u5173\u7cfb\u5220\u9664\u8fde\u63a5\u5230\u8868\u660e\u7684\u8868\uff0c\u800c\u4e14\u73b0\u6709\u5173\u7cfb\u7684\u5220\u9664\u89c4\u5219\u662f SET NULL\u3002\uff09
+
+
+XCL36.S=\u5916\u952e\u7684\u5220\u9664\u89c4\u5219\u5fc5\u987b\u4e3a {0}\u3002\uff08\u5f15\u7528\u7ea6\u675f\u662f\u81ea\u5f15\u7528\uff0c\u800c\u73b0\u6709\u81ea\u5f15\u7528\u7ea6\u675f\u5177\u6709\u8868\u660e\u7684\u5220\u9664\u89c4\u5219\uff08NO ACTION\u3001RESTRICT \u6216 CASCADE\uff09\u3002\uff09
+
+XCL37.S=\u5916\u952e\u7684\u5220\u9664\u89c4\u5219\u5fc5\u987b\u4e3a {0}\u3002\uff08\u5f15\u7528\u7ea6\u675f\u662f\u81ea\u5f15\u7528\uff0c\u800c\u8868\u4ece\u5c5e\u4e8e\u5e26\u6709\u5220\u9664\u89c4\u5219 CASCADE \u7684\u5173\u7cfb\u3002\uff09
+XCL38.S=\u5916\u952e\u7684\u5220\u9664\u89c4\u5219\u5fc5\u987b\u4e3a {0}\u3002\uff08\u5173\u7cfb\u4f1a\u5bfc\u81f4\u8868\u901a\u8fc7\u591a\u4e2a\u5173\u7cfb\u5220\u9664\u8fde\u63a5\u5230\u540c\u4e00\u8868\uff0c\u800c\u4e14\u8fd9\u79cd\u5173\u7cfb\u5fc5\u987b\u5177\u6709\u540c\u4e00\u5220\u9664\u89c4\u5219\uff08NO ACTION\u3001RESTRICT \u6216 CASCADE\uff09\u3002\uff09
+
+
+XCL39.S=\u5916\u952e\u7684\u5220\u9664\u89c4\u5219\u4e0d\u80fd\u4e3a CASCADE\u3002\uff08\u81ea\u5f15\u7528\u7ea6\u675f\u5b58\u5728\uff0c\u5e26\u6709\u5220\u9664\u89c4\u5219 SET NULL\u3001NO ACTION \u6216 RESTRICT\u3002\uff09
+
+XCL40.S=\u5916\u952e\u7684\u5220\u9664\u89c4\u5219\u4e0d\u80fd\u4e3a CASCADE\u3002\uff08\u5173\u7cfb\u4f1a\u5f62\u6210\u5faa\u73af\uff0c\u5bfc\u81f4\u8868\u5220\u9664\u8fde\u63a5\u5230\u5b83\u81ea\u5df1\u3002\u5faa\u73af\u4e2d\u73b0\u6709\u5220\u9664\u89c4\u5219\u4e4b\u4e00\u4e0d\u662f CASCADE\uff0c\u6240\u4ee5\u5982\u679c\u5220\u9664\u89c4\u5219\u4e0d\u662f CASCADE\uff0c\u5219\u6b64\u5173\u7cfb\u53ef\u5b9a\u4e49\u3002\uff09
+
+XCL41.S=\u5916\u952e\u7684\u5220\u9664\u89c4\u5219\u4e0d\u80fd\u4e3a CASCADE\u3002\uff08\u5173\u7cfb\u4f1a\u5bfc\u81f4\u53e6\u4e00\u4e2a\u8868\u901a\u8fc7\u591a\u4e2a\u8def\u5f84\uff0c\u4f7f\u7528\u4e0d\u540c\u7684\u5220\u9664\u89c4\u5219\u6216\u4f7f\u7528\u7b49\u4e8e SET NULL \u7684\u5220\u9664\u89c4\u5219\uff0c\u5220\u9664\u8fde\u63a5\u5230\u540c\u4e00\u8868\u3002\uff09\u3002
+
+XCL42.S=\u201cCASCADE\u201d
+XCL43.S=\u201cSET NULL\u201d
+XCL44.S=\u201cRESTRICT\u201d
+XCL45.S=\u201cNO ACTION\u201d
+XCL46.S=\u201cSET DEFAULT\u201d
+
+XCL47.S=\u201c{0}\u201d\u7684\u4f7f\u7528\u9700\u8981\u6570\u636e\u5e93\u4ece\u7248\u672c {1} \u5347\u7ea7\u5230\u7248\u672c {2} \u6216\u4ee5\u540e\u7248\u672c\u3002
+
+XCL48.S= \u4e0d\u5141\u8bb8\u5173\u4e8e\u201c{0}\u201d\u6267\u884c TRUNCATE TABLE\uff0c\u56e0\u4e3a\u6b64\u8868\u4e0a\u7684\u552f\u4e00\uff0f\u4e3b\u952e\u7ea6\u675f\u88ab\u4ece\u5176\u5b83\u8868\u542f\u7528\u7684\u5916\u952e\u7ea6\u675f\u6240\u5f15\u7528\u3002
+XCL49.S= \u4e0d\u5141\u8bb8\u5173\u4e8e\u201c{0}\u201d\u6267\u884c TRUNCATE TABLE\uff0c\u56e0\u4e3a\u5b83\u5177\u6709\u5df2\u542f\u7528\u7684 DELETE \u89e6\u53d1\u5668\uff08{1}\uff09\u3002
+XCL50.S=\u4e0d\u652f\u6301\u4ece\u5148\u524d\u7248\u672c\u5347\u7ea7\u6570\u636e\u5e93\u3002\u6b63\u5728\u5b58\u53d6\u7684\u6570\u636e\u5e93\u5904\u4e8e\u7248\u672c\u7ea7\u522b\u201c{0}\u201d\uff0c\u6b64\u8f6f\u4ef6\u5904\u4e8e\u7248\u672c\u7ea7\u522b\u201c{1}\u201d\u3002
+
+
+# Transaction states, matches DB2
+25000=\u4e8b\u52a1\u72b6\u6001\u65e0\u6548\u3002
+
+# Authorization
+25501=\u65e0\u6cd5\u5728\u6d3b\u52a8\u4e8b\u52a1\u4e2d\u8bbe\u7f6e\u8fde\u63a5\u53ea\u8bfb\u5c5e\u6027\u3002
+25502=\u5bf9\u4e8e\u53ea\u8bfb\u8fde\u63a5\u3001\u7528\u6237\u6216\u6570\u636e\u5e93\uff0c\u4e0d\u5141\u8bb8 SQL \u6570\u636e\u66f4\u6539\u3002
+25503=\u5bf9\u4e8e\u53ea\u8bfb\u8fde\u63a5\u3001\u7528\u6237\u6216\u6570\u636e\u5e93\uff0c\u4e0d\u5141\u8bb8 DDL\u3002
+25505=\u53ea\u8bfb\u7528\u6237\u6216\u53ea\u8bfb\u6570\u636e\u5e93\u4e2d\u7684\u7528\u6237\u4e0d\u5141\u8bb8\u7981\u7528\u8fde\u63a5\u4e0a\u7684\u53ea\u8bfb\u65b9\u5f0f\u3002
+28501=\u6570\u636e\u5e93\u6743\u9650\u5c5e\u6027\u201c{0}={1}\u201d\u65e0\u6548\u3002
+28502.C=\u7528\u6237\u540d\u201c{0}\u201d\u65e0\u6548\u3002
+
+28503=\u7528\u6237\u201c{0}\u201d\u5fc5\u987b\u4e0d\u80fd\u540c\u65f6\u5728\u53ea\u8bfb\u548c\u5168\u8bbf\u95ee\u6743\u9650\u5217\u8868\u4e2d\u3002
+28504=\u8bbf\u95ee\u5217\u8868\u201c{0}\u201d\u4e2d\u91cd\u590d\u7684\u7528\u6237\u201c{1}\u201d\uff1b
+04501.C=\u6570\u636e\u5e93\u8fde\u63a5\u88ab\u62d2\u7edd\u3002
+
+
+# Dependency Manager
+XD003.S=\u65e0\u6cd5\u4ece\u78c1\u76d8\u590d\u539f\u76f8\u5173\u6027\u3002DependableFinder =\u201c{0}\u201d\u3002\u8fdb\u4e00\u6b65\u4fe1\u606f\uff1a\u201c{1}\u201d\u3002
+XD004.S=\u65e0\u6cd5\u5b58\u50a8\u76f8\u5173\u6027\u3002
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=\u6e38\u6807\u72b6\u6001\u65e0\u6548 \uff0d \u65e0\u5f53\u524d\u884c\u3002
+
+07000=\u5f53\u524d\u8bed\u53e5\u4e2d\u81f3\u5c11\u4e00\u4e2a\u53c2\u6570\u672a\u521d\u59cb\u5316\u3002
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=\u53c2\u6570 {0} \u662f {1} \u8fc7\u7a0b\u53c2\u6570\uff0c\u800c\u4e14\u5fc5\u987b\u5728\u6267\u884c\u524d\u4f7f\u7528 CallableStatement.registerOutParameter \u8fdb\u884c\u6ce8\u518c\u3002
+
+07009=\u65e0\u8f93\u5165\u53c2\u6570\u3002
+
+S0022=\u5217\u201c{0}\u201d\u672a\u627e\u5230\u3002
+XJ009.S=\u5bf9\u4e8e\u5b58\u50a8\u8fc7\u7a0b\u8c03\u7528\u6216\u8f93\u51fa\u53c2\u6570 {0} \u7684\u4f7f\u7528\uff0c\u4f7f\u7528 CallableStatement \u662f\u5fc5\u9700\u7684
+XJ010.S=\u4f46 autoCommit \u6253\u5f00\u65f6\u65e0\u6cd5\u53d1\u51fa savepoint\u3002
+XJ011.S=\u65e0\u6cd5\u4e3a savepoint \u540d\u4f20\u9012\u7a7a\u3002
+XJ012.S=\u201c{0}\u201d\u5df2\u5173\u95ed\u3002
+XJ013.S=\u547d\u540d\u7684 savepoint \u6ca1\u6709\u6807\u8bc6\u3002
+XJ014.S=\u672a\u547d\u540d\u7684 savepoint \u6ca1\u6709\u540d\u79f0\u3002
+XJ016.S=\u5df2\u51c6\u5907\u8bed\u53e5\u4e0a\u4e0d\u5141\u8bb8\u65b9\u6cd5\u201c{0}\u201d\u3002
+XJ017.S=\u89e6\u53d1\u4ee3\u7801\u4e2d\u4e0d\u5141\u8bb8 savepoint \u547d\u4ee4\u3002
+XJ018.S=\u5217\u540d\u4e0d\u80fd\u4e3a\u7a7a\u3002
+XJ020.S=\u5bf9\u8c61\u7c7b\u578b\u4e0d\u80fd\u8f6c\u6362\u4e3a\u7c7b\u578b\u201c{0}\u201d\uff0cjava.sql.Types \u503c\u65e0\u6548\uff0c\u6216\u5bf9\u8c61\u4e3a\u7a7a\u3002
+XJ022.S=\u65e0\u6cd5\u8bbe\u7f6e\u6d41\uff1a\u201c{0}\u201d\u3002
+XJ023.S=\u8f93\u5165\u6d41\u6301\u6709\u7684\u6570\u636e\u5c11\u4e8e\u8bf7\u6c42\u7684\u957f\u5ea6\u6240\u6301\u6709\u7684\u6570\u636e\u3002
+XJ025.S=\u8f93\u5165\u6d41\u4e0d\u80fd\u5177\u6709\u8d1f\u6570\u957f\u5ea6\u3002
+XJ030.S=\u5728\u5d4c\u5957\u7684\u8fde\u63a5\u4e2d\uff0c\u65e0\u6cd5\u8bbe\u7f6e AUTOCOMMIT ON\u3002
+XJ042.S=\u201c{0}\u201d\u4e0d\u662f\u5c5e\u6027\u201c{1}\u201d\u7684\u6709\u6548\u503c\u3002
+XJ044.S=\u201c{0}\u201d\u662f\u65e0\u6548\u5c0f\u6570\u4f4d\u3002
+XJ045.S=\u65e0\u6548\u6216\uff08\u5f53\u524d\uff09\u4e0d\u652f\u6301\u7684\u9694\u79bb\u7ea7\u522b\u201c{0}\u201d\u4f20\u9012\u7ed9 Connection.setTransactionIsolationLevel()\u3002\u5f53\u524d\u652f\u6301\u7684\u503c\u4e3a java.sql.Connection.TRANSACTION_SERIALIZABLE\u3001java.sql.Connection.TRANSACTION_REPEATABLE_READ\u3001java.sql.Connection.TRANSACTION_READ_COMMITTED \u548c java.sql.Connection.TRANSACTION_READ_UNCOMMITTED\u3002
+XJ04B.S=\u6279\u5904\u7406\u4e0d\u80fd\u5305\u542b\u5c1d\u8bd5\u8fd4\u56de\u7ed3\u679c\u96c6\u7684\u547d\u4ee4\u3002
+XJ04C.S=CallableStatement \u6279\u5904\u7406\u4e0d\u80fd\u5305\u542b\u8f93\u51fa\u53c2\u6570\u3002
+XJ056.S=\u5728 XA \u8fde\u63a5\u4e2d\u65f6\uff0c\u65e0\u6cd5\u8bbe\u7f6e AUTOCOMMIT ON\u3002
+XJ057.S=\u65e0\u6cd5\u4f7f\u7528\u8fde\u63a5\u843d\u5b9e\u5168\u5c40\u4e8b\u52a1\uff0c\u843d\u5b9e\u5904\u7406\u5fc5\u987b\u901a\u8fc7 XAResource \u63a5\u53e3\u6267\u884c\u3002
+XJ058.S=\u65e0\u6cd5\u4f7f\u7528\u8fde\u63a5\u56de\u6eda\u5168\u5c40\u4e8b\u52a1\uff0c\u843d\u5b9e\u5904\u7406\u5fc5\u987b\u901a\u8fc7 XAResource \u63a5\u53e3\u6267\u884c\u3002
+XJ059.S=\u5f53\u5168\u5c40\u4e8b\u52a1\u4ecd\u7136\u6d3b\u52a8\u65f6\uff0c\u65e0\u6cd5\u5173\u95ed\u8fde\u63a5\u3002
+XJ05C.S=\u65e0\u6cd5\u4e3a\u5168\u5c40\u4e8b\u52a1\u8bbe\u7f6e\u53ef\u4fdd\u6301\u6027 ResultSet.HOLD_CURSORS_OVER_COMMIT\u3002
+XJ061.S=\u5728\u6eda\u52a8\u6e38\u6807\u4e0a\u4ec5\u5141\u8bb8\u201c{0}\u201d\u65b9\u6cd5\u3002
+XJ062.S=ResultSet.setFetchSize(int rows) \u7684\u53c2\u6570\u503c\u201c{0}\u201d\u65e0\u6548\u3002
+XJ063.S=Statement.setMaxRows(int maxRows) \u7684\u53c2\u6570\u503c\u201c{0}\u201d\u65e0\u6548\u3002\u53c2\u6570\u503c\u5fc5\u987b\u4e3a >= 0\u3002
+XJ064.S=setFetchDirection(int direction) \u7684\u53c2\u6570\u503c\u201c{0}\u201d\u65e0\u6548\u3002
+XJ065.S=Statement.setFetchSize(int rows) \u7684\u53c2\u6570\u503c\u201c{0}\u201d\u65e0\u6548\u3002
+XJ066.S=Statement.setMaxFieldSize(int max) \u7684\u53c2\u6570\u503c\u201c{0}\u201d\u65e0\u6548\u3002
+XJ067.S=SQL \u6587\u672c\u6307\u9488\u4e3a\u7a7a\u3002
+XJ068.S=\u6279\u5904\u7406\u4e2d\u95f4\u4ec5\u5141\u8bb8 executeBatch \u548c clearBatch\u3002
+XJ069.S=Execute Statement Using \u7684\u60c5\u51b5\u4e2d\u4e0d\u5141\u8bb8 SetXXX \u65b9\u6cd5\u3002
+XJ080.S=Execute Statement Using \u4f20\u9012 {0} \u53c2\u6570\uff0c\u800c\u4e0d\u662f {1}\u3002
+XJ070.S=\u5728 Blob \u6216 Clob \u65b9\u6cd5\u4e2d\u4f20\u9012\u8d1f\u6216\u96f6\u4f4d\u7f6e\u81ea\u53d8\u91cf\u201c{0}\u201d\u3002
+XJ071.S=\u5728 Blob \u6216 Clob \u65b9\u6cd5\u4e2d\u4f20\u9012\u96f6\u6216\u8d1f\u957f\u5ea6\u81ea\u53d8\u91cf\u201c{0}\u201d\u3002
+XJ072.S=\u5728 Blob \u6216 Clob \u4f4d\u7f6e\u65b9\u6cd5\u4e2d\u4f20\u9012\u7a7a\u6a21\u5f0f\u6216 searchStr\u3002
+XJ073.S=\u6b64 Blob \u6216 Clob \u4e2d\u7684\u6570\u636e\u4e0d\u518d\u53ef\u7528\u3002\u53ef\u80fd\u7684\u539f\u56e0\u662f\u5176\u4e8b\u52a1\u5df2\u843d\u5b9e\uff0c\u6216\u5176\u8fde\u63a5\u5df2\u5173\u95ed\u3002
+XJ076.S=\u4f4d\u7f6e\u81ea\u53d8\u91cf\u201c{0}\u201d\u8d85\u51fa Blob/Clob \u7684\u5927\u5c0f\u3002
+XJ077.S=\u5c1d\u8bd5\u4f7f\u7528 getBytes/getSubString \u8bfb\u53d6 Blob/Clob \u6a21\u5f0f\u7684\u7b2c\u4e00\u4e2a\u5b57\u8282\uff0f\u5b57\u7b26\u65f6\uff0c\u83b7\u53d6\u5f02\u5e38\u3002
+XJ082.U=\u4e0d\u5141\u8bb8 BLOB/CLOB \u503c\u4f5c\u4e3a\u65b9\u6cd5\u53c2\u6570\u6216\u63a5\u6536\u5668\u3002
+
+0A000.S=\u529f\u80fd\u90e8\u4ef6\u672a\u5b9e\u73b0\uff1a{0}\u3002
+
+XJ004.C=\u6570\u636e\u5e93\u201c{0}\u201d\u672a\u627e\u5230\u3002
+08004=\u8fde\u63a5\u88ab\u62d2\u7edd\uff1a{0}
+A020=\u8ba4\u8bc1\u65e0\u6548\u3002
+08003=\u65e0\u5f53\u524d\u8fde\u63a5\u3002
+XJ028.C=URL\u201c{0}\u201d\u7684\u683c\u5f0f\u4e0d\u6b63\u786e\u3002
+XJ040.C=\u65e0\u6cd5\u542f\u52a8\u6570\u636e\u5e93\u201c{0}\u201d\uff0c\u8bf7\u53c2\u9605\u4e0b\u4e00\u4e2a\u5f02\u5e38\uff0c\u4ee5\u83b7\u5f97\u8be6\u7ec6\u4fe1\u606f\u3002
+XJ041.C=\u65e0\u6cd5\u521b\u5efa\u6570\u636e\u5e93\u201c{0}\u201d\uff0c\u8bf7\u53c2\u9605\u4e0b\u4e00\u4e2a\u5f02\u5e38\uff0c\u4ee5\u83b7\u5f97\u8be6\u7ec6\u4fe1\u606f\u3002
+XJ049.C=\u521b\u5efa\u6307\u5b9a\u7684\u5c5e\u6027\u65f6\uff0c\u53d1\u751f\u51b2\u7a81\u3002
+XJ081.C=\u6307\u5b9a\u4e86\u51b2\u7a81\u7684 create/restore/recovery \u5c5e\u6027\u3002
+XJ05B.C=JDBC \u5c5e\u6027\u201c{0}\u201d\u5177\u6709\u65e0\u6548\u503c\u201c{1}\u201d\uff0c\u6709\u6548\u503c\u4e3a\u201c{2}\u201d\u3002
+
+XXXXX.C.6=\u6b63\u5e38\u6570\u636e\u5e93\u4f1a\u8bdd\u5173\u95ed\u3002
+
+08006.D=\u6570\u636e\u5e93\u201c{0}\u201d\u5173\u95ed\u3002
+
+XJ015.M=Derby \u7cfb\u7edf\u5173\u95ed\u3002
+
+01J01=\u672a\u521b\u5efa\u6570\u636e\u5e93\u201c{0}\u201d\uff0c\u800c\u662f\u5efa\u7acb\u5230\u73b0\u6709\u6570\u636e\u5e93\u7684\u8fde\u63a5\u3002
+01J02=\u6eda\u52a8\u654f\u611f\u6e38\u6807\u5f53\u524d\u672a\u5b9e\u73b0\u3002
+01J03=\u53ef\u66f4\u65b0\u7684 ResultSet \u5f53\u524d\u672a\u5b9e\u73b0\u3002
+01J04=\u5217\u201c{1}\u201d\u7684\u7c7b\u201c{0}\u201d\u672a\u5b9e\u73b0 java.io.Serializable \u6216 java.sql.SQLData\u3002\u5b9e\u4f8b\u5fc5\u987b\u5b9e\u73b0\u8fd9\u4e9b\u63a5\u53e3\u4e4b\u4e00\uff0c\u4ee5\u5141\u8bb8\u5b58\u50a8\u5b83\u4eec\u3002
+01J05=\u6570\u636e\u5e93\u6210\u529f\u5347\u7ea7\u3002\u73b0\u5728\uff0c\u5df2\u5347\u7ea7\u7684\u6570\u636e\u5e93\u51c6\u5907\u5c31\u7eea\uff0c\u53ef\u4f9b\u4f7f\u7528\u3002\u5bf9\u5b58\u50a8\u7684\u5df2\u51c6\u5907\u8bed\u53e5\u91cd\u65b0\u9a8c\u8bc1\u5931\u8d25\u3002\u67e5\u770b\u4e0b\u4e00\u4e2a\u5f02\u5e38\uff0c\u4ee5\u83b7\u5f97\u6545\u969c\u7684\u8be6\u7ec6\u4fe1\u606f\u3002
+XJ001.U=Java \u5f02\u5e38\uff1a\u201c{1}\uff1a{0}\u201d\u3002
+XJ050.U=\u6570\u636e\u5e93\u9700\u8981\u4ece\u7248\u672c {0} \u5347\u7ea7\uff0c\u8bbe\u7f6e JDBC \u8fde\u63a5 URL \u4e0a\u7684\u5c5e\u6027\u2018upgrade=true\u2019\uff0c\u4ee5\u5141\u8bb8\u5347\u7ea7\u5230\u7248\u672c {1}\u3002
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=\u672a\u77e5\u8bb8\u53ef\u6743\u201c{0}\u201d\u3002
+XCZ01.S=\u672a\u77e5\u7528\u6237\u201c{0}\u201d\u3002
+XCZ02.S=\u53c2\u6570\u201c{0}\u201d=\u201c{1}\u201d\u65e0\u6548\u3002
+
+# SQL J Jar support
+46001=\u4f7f\u7528 URL\u201c{0}\u201d\u8bbf\u95ee jar \u6587\u4ef6\u65f6\u53d1\u751f\u5f02\u5e38\u3002
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  \u5f00\u59cb\u9519\u8bef\u6d88\u606f -------------\n
+L002=------------  \u7ed3\u675f\u9519\u8bef\u6d88\u606f -------------\n
+L003=\n------------  \u5f00\u59cb\u5173\u95ed\u9519\u8bef\u5806\u6808 -------------\n
+L004=\n------------  \u7ed3\u675f\u5173\u95ed\u9519\u8bef\u5806\u6808 -------------\n
+L005=\n------------  \u5f00\u59cb\u9519\u8bef\u5806\u6808 -------------\n
+L006=\n------------  \u7ed3\u675f\u9519\u8bef\u5806\u6808 -------------\n
+L007=\u8b66\u544a\uff1a\u65e5\u5fd7\u6587\u4ef6\u672a\u627e\u5230\uff0c\u521b\u5efa\u65b0\u7684\u65e5\u5fd7\u3002\u53ef\u80fd\u6570\u636e\u5e93\u4e2d\u4e0d\u4e00\u81f4
+L008=\u6b63\u5728\u5220\u9664\u4e0d\u517c\u5bb9\u7684\u65e7\u65e5\u5fd7\u6587\u4ef6 {0}
+L009=\u6b63\u5728\u5220\u9664\u65e7\u65e5\u5fd7\u6587\u4ef6 {0}
+L010=\u6e05\u9664\u65e5\u5fd7\u6587\u4ef6\u65f6\uff08\u4ece\u4f4d\u7f6e {1} \u5230 {2} \u7684 eof\uff09\uff0c\u5728\u6587\u4ef6 {0} \u4e2d\u68c0\u6d4b\u5230\u4e0d\u5b8c\u6574\u7684\u65e5\u5fd7\u8bb0\u5f55\u3002
+L011=\u68c0\u67e5\u70b9\u5b88\u62a4\u8fdb\u7a0b\u6355\u6349\u5230\u6807\u51c6\u5f02\u5e38
+L012=\u65e5\u5fd7\u8bb0\u5f55\u4e0d\u662f\u7b2c\u4e00\u4e2a\uff0c\u4f46\u662f\u4e8b\u52a1\u4e0d\u5728\u4e8b\u52a1\u8868\u4e2d\uff1a{0}
+L013=\u65e5\u5fd7\u8bb0\u5f55\u662f\u7b2c\u4e00\u4e2a\uff0c\u4f46\u662f\u4e8b\u52a1\u5df2\u5728\u4e8b\u52a1\u8868\u4e2d\uff1a{0}
+L014=\u9519\u8bef\u7684\u5f00\u59cb\u65f6\u523b
+L015=\u65b0\u65e5\u5fd7\u6587\u4ef6\u5b58\u5728\uff0c\u4f46\u65e0\u6cd5\u5220\u9664 {0}
+L016=\u65e0\u6cd5\u521b\u5efa\u65b0\u7684\u65e5\u5fd7\u6587\u4ef6 {0}
+L017=\u65e0\u6cd5\u521b\u5efa\u65b0\u7684\u65e5\u5fd7\u6587\u4ef6 {0}\uff0c\u7531\u4e8e {1}
+L018=\u7cfb\u7edf\u53ef\u80fd\u5904\u4e8e\u4e0d\u4e00\u81f4\u72b6\u6001\uff0c\u7f3a\u5c11\u6587\u4ef6 {0}
+
+# Class Manager
+C000=\u5c06\u7c7b {0} \u5199\u5165\u6587\u4ef6 {1}\u3002\u8bf7\u63d0\u4f9b\u6709\u5173\u6b64\u6587\u4ef6\u548c\u4e0b\u5217\u5f02\u5e38\u4fe1\u606f\u7684\u652f\u6301\uff1a{2}
+C001=jar {1} \u4e2d\u7c7b {0} \u5177\u6709\u672a\u77e5\u8bc1\u4e66\u7c7b\u578b\uff0c\u671f\u5f85 X509 \u8bc1\u4e66\u3002
+C002=\u8bbf\u95ee jar {1} \u4e2d\u7c7b {0} \u65f6\u629b\u51fa\u5b89\u5168\u6027\u5f02\u5e38\uff1a{2}
+C003=\u88c5\u5165\u6570\u636e\u5e93 jar {0} \u65f6\u53d1\u751f\u5f02\u5e38 \uff0d {1}
+C004=\u7c7b {0} \u7684\u65e7\u6587\u4ef6\u7c7b\u88c5\u5165\u7a0b\u5e8f
+C005=\u6570\u636e\u5e93\u7c7b\u88c5\u5165\u7a0b\u5e8f\u5df2\u542f\u52a8 \uff0d derby.database.classpath=\u201c{0}\u201d
+C006=\u4ece\u6570\u636e\u5e93 jar {1} \u88c5\u5165 {0}
+C007=\u4ece jar {1} \u88c5\u5165\u7c7b {0} \u65f6\u53d1\u751f\u5f02\u5e38 \uff0d {2}
+
+# RawStore Data
+
+D001=\uff1a\n\u6b63\u5728\u5f15\u5bfc Derby V{0}\uff1a\u5b9e\u4f8b {1}\n\u5728\u6570\u636e\u5e93\u76ee\u5f55 {2} \u4e0a\n
+D002=\uff1a\n\u6b63\u5728\u5173\u95ed\u5b9e\u4f8b {0}
+D004=\u4e3a\u4f4d\u4e8e {0} \u4e0a\u7684\u6570\u636e\u5e93\u5f00\u59cb\u5907\u4efd
+D005=\u5c06\u65e7\u5907\u4efd\u526f\u672c\u4ece {0} \u79fb\u52a8\u5230 {1}
+D006=\u5c06\u6570\u636e\u5e93\u76ee\u5f55\u4ece {0} \u590d\u5236\u5230 {1}
+D007=\u7f16\u8f91\u6570\u636e\u5e93 service.properties \u4ee5\u4f7f\u7528\u7f3a\u7701\u65e5\u5fd7\u8bbe\u5907
+D008=\u7f16\u8f91\u6570\u636e\u5e93 service.properties \u65f6\u51fa\u9519\uff0c\u5907\u4efd\u5f02\u5e38\u7ec8\u6b62\uff1a{0}
+D009=\u5c06\u65e5\u5fd7\u76ee\u5f55\u4ece {0} \u590d\u5236\u5230 {1}
+D010=\u7531\u4e8e\u9519\u8bef\u5bfc\u81f4\u5907\u4efd\u5f02\u5e38\u7ec8\u6b62
+D011=\u9664\u53bb {0} \u4e0a\u7684\u65e7\u5907\u4efd\u526f\u672c
+D012=\u5907\u4efd\u5b8c\u6210\uff0c\u65e5\u5fd7\u65f6\u523b\u5728 {0} \u4e0a\n
+
+# Connectivity 
+J004=\u6570\u636e\u5e93\u6807\u8bc6
+J005=\u5173\u95ed Derby
+J007=\u521b\u5efa\u6570\u636e\u5e93
+J008=\u65e0\u8be6\u7ec6\u4fe1\u606f
+J010=\u52a0\u5bc6\u78c1\u76d8\u4e0a\u7684\u6570\u636e\u5e93
+J013=\u5347\u7ea7\u6570\u636e\u5e93
+J016=\u5bc6\u7801\u670d\u52a1\u63d0\u4f9b\u8005
+J017=\u5bc6\u7801\u7b97\u6cd5
+J018=\u5bc6\u94a5\u957f\u5ea6
+J019=\u5916\u90e8\u5bc6\u94a5
+J020=\u79d8\u5bc6\u7684\u5bc6\u94a5
+J021=\u6570\u636e\u5e93\u7684\u5730\u57df
+J022=\u7528\u6237\u540d
+J023=\u7528\u6237\u5bc6\u7801
+J025=\u65e5\u5fd7\u76ee\u5f55\u8def\u5f84
+J028=\u524d\u6eda\u6062\u590d\u7684\u5907\u4efd\u8def\u5f84
+J100=\u627e\u4e0d\u5230\u7f51\u7edc\u670d\u52a1\u5668\u7c7b {0}\u3002\u60a8\u7684\u7c7b\u8def\u5f84\u5e94\u8be5\u5305\u542b csnet.jar\u3002
+J101=\u65e0\u6cd5\u88c5\u5165\u7f51\u7edc\u670d\u52a1\u5668\u7c7b {0}\u3002{1} \u68c0\u67e5\u60a8\u7684 csnet.jar \u6587\u4ef6\u7684\u5b8c\u6574\u6027\u3002
+J102=\u7f51\u7edc\u670d\u52a1\u5668\u542f\u52a8\u671f\u95f4\u629b\u51fa\u5f02\u5e38\u3002{0}
+J103=\u7f51\u7edc\u670d\u52a1\u5668\u5173\u95ed\u671f\u95f4\u629b\u51fa\u5f02\u5e38\u3002{0}
+
+# Authentication
+A001=\u81f4\u547d\uff1a\u4e0d\u5b58\u5728\u7cfb\u7edf\u7684\u201c\u8ba4\u8bc1\u670d\u52a1\u201d
+A002=\u81f4\u547d\uff1a\u4e0d\u5b58\u5728\u6570\u636e\u5e93\u7684\u201c\u8ba4\u8bc1\u670d\u52a1\u201d
+A011=\u8b66\u544a\uff1a{0} \u5c5e\u6027\u4e2d\u672a\u63d0\u53ca LDAP \u670d\u52a1\u5668\uff0f\u4e3b\u673a\u540d\uff1b\u5047\u8bbe localhost:389
+
+I015=\u672a\u5411 JDBC \u9a71\u52a8\u7a0b\u5e8f\u7ba1\u7406\u5668\u6ce8\u518c org.apache.derby.jdbc.EmbeddedDriver
+I024=\u6570\u636e\u5e93\u4e0d\u53ef\u7528
+I025=JDBC \u9a71\u52a8\u7a0b\u5e8f\u4e0d\u53ef\u7528
+
+# Import/Export
+XIE01.S=\u8fde\u63a5\u4e3a\u7a7a\u3002
+XIE03.S=\u5728\u884c {0} \u5217 {1} \u4e0a\u7684\u505c\u6b62\u5b9a\u754c\u7b26\u540e\u627e\u5230\u4e86\u6570\u636e
+XIE04.S=\u672a\u627e\u5230\u6570\u636e\u6587\u4ef6\uff1a{0}
+XIE05.S=\u6570\u636e\u6587\u4ef6\u4e0d\u80fd\u4e3a\u7a7a\u3002
+XIE06.S=\u5b9e\u4f53\u540d\u4e3a\u7a7a\u3002
+XIE07.S=\u5b57\u6bb5\u548c\u8bb0\u5f55\u5206\u9694\u7b26\u4e0d\u80fd\u662f\u5f7c\u6b64\u7684\u5b50\u4e32\u3002
+XIE08.S=\u6ca1\u6709\u540d\u4e3a {0} \u7684\u5217
+XIE09.S=\u884c\u4e2d\u7684\u603b\u5217\u6570\u4e3a\uff1a{0}
+XIE0B.S=\u8868\u4e2d\u7684\u5217\u201c{0}\u201d\u5c5e\u4e8e\u7c7b\u578b {1}\uff0c\u5b83\u4e0d\u53d7\u5bfc\u5165\uff0f\u5bfc\u51fa\u652f\u6301\u3002
+XIE0D.S=\u884c {0} \u4e0a\u672a\u627e\u5230\u8bb0\u5f55\u5206\u9694\u7b26
+XIE0E.S=\u5728\u884c {0} \u4e0a\u7684\u610f\u5916\u4f4d\u7f6e\u4e2d\u8bfb\u53d6\u5230 endOfFile
+XIE0I.S=\u5c06\u6570\u636e\u5199\u5165\u6587\u4ef6\u65f6\u5f97\u5230 IOException
+XIE0J.S=\u5b9a\u754c\u7b26\u65e0\u6548\u6216\u88ab\u591a\u6b21\u4f7f\u7528\u3002
+XIE0K.S=\u8be5\u9636\u6bb5\u88ab\u6307\u5b9a\u4e3a\u5b57\u7b26\u4e32\u5b9a\u754c\u7b26\u3002
+XIE0M.S=\u8868\u201c{0}\u201d\u4e0d\u5b58\u5728\u3002
+
+# Monitor
+M001=\n# ********************************************************************\n# ***                     \u8bf7\u4e0d\u8981\u7f16\u8f91\u6b64\u6587\u4ef6\u3002                       ***\n# ***              \u66f4\u6539\u6b64\u6587\u4ef6\u7684\u5185\u5bb9\u53ef\u80fd\u5bfc\u81f4\u6570\u636e\u635f\u574f\u3002              ***\n# ********************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_zh_TW.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/loc/messages_zh_TW.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1249 @@
+
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Monitor
+XBM01.D=\u767c\u751f\u7570\u5e38\u72c0\u6cc1\uff0c\u555f\u52d5\u5931\u6557\uff0c\u8acb\u53c3\u95b1\u4e0b\u4e00\u500b\u7570\u5e38\u72c0\u6cc1\uff0c\u4ee5\u53d6\u5f97\u8a73\u7d30\u8cc7\u6599\u3002
+XBM02.D=\u907a\u6f0f {0} \u7684\u529f\u80fd\uff0c\u555f\u52d5\u5931\u6557\u3002\u8acb\u78ba\u5b9a\u60a8\u7684\u985e\u5225\u8def\u5f91\u5305\u542b\u6b63\u78ba\u7684 Derby \u8edf\u9ad4\u3002
+XBM05.D=\u907a\u6f0f {0} \u7684\u7522\u54c1\u7248\u672c\u8cc7\u8a0a\uff0c\u555f\u52d5\u5931\u6557\u3002
+XBM06.D=\u555f\u52d5\u5931\u6557\uff0c\u6c92\u6709\u6b63\u78ba\u7684\u958b\u6a5f\u5bc6\u78bc\uff0c\u7121\u6cd5\u5b58\u53d6\u52a0\u5bc6\u8cc7\u6599\u5eab\u3002
+XBM07.D=\u555f\u52d5\u5931\u6557\uff0c\u958b\u6a5f\u5bc6\u78bc\u81f3\u5c11\u8981\u6709 8 \u500b\u4f4d\u5143\u7d44\u3002
+XBM08.D=\u7121\u6cd5\u5be6\u4f8b\u5316 {0} StorageFactory \u985e\u5225 {1}\u3002
+
+XBM0G.D=\u7121\u6cd5\u555f\u52d5\u52a0\u5bc6\u5f15\u64ce\u3002\u8acb\u78ba\u5b9a\u60a8\u6b63\u5728\u57f7\u884c Java 2\uff0c\u5df2\u4e0b\u8f09 jce \u4e4b\u985e\u7684\u52a0\u5bc6\u63d0\u4f9b\u8005\uff0c\u4e14\u5df2\u5c07\u5b83\u653e\u5728\u60a8\u7684\u985e\u5225\u8def\u5f91\u4e2d\u3002
+XBM0H.D=\u7121\u6cd5\u5efa\u7acb {0} \u76ee\u9304\u3002
+XBM0I.D=\u7121\u6cd5\u79fb\u9664 {0} \u76ee\u9304\u3002
+XBM0J.D={0} \u76ee\u9304\u5df2\u7d93\u5b58\u5728\u3002
+XBM0K.D=\u8cc7\u6599\u5eab\u540d\u7a31 {0} \u7684\u4e0d\u660e\u5b50\u901a\u8a0a\u5354\u5b9a\u3002
+XBM0L.D=\u6307\u5b9a\u7684\u9451\u5225\u65b9\u6cd5\u985e\u5225 {0} \u78ba\u5be6\u5be6\u4f5c\u9451\u5225\u4ecb\u9762 {1}\u3002
+XBM0M.D=\u5efa\u7acb\u9451\u5225\u65b9\u6cd5\u985e\u5225 {0} \u7684\u5be6\u4f8b\u6642\uff0c\u767c\u751f\u932f\u8aa4\u3002
+XBM0N.D=java.sql.DriverManager \u7684 JDBC \u9a45\u52d5\u7a0b\u5f0f\u767b\u9304\u5931\u6557\uff0c\u8acb\u53c3\u95b1\u4e0b\u4e00\u500b\u7570\u5e38\u72c0\u6cc1\uff0c\u4ee5\u53d6\u5f97\u8a73\u7d30\u8cc7\u6599\u3002
+XBM0P.D=\u670d\u52d9\u63d0\u4f9b\u8005\u662f\u552f\u8b80\u7684\uff0c\u4e0d\u5141\u8a31\u57f7\u884c\u4f5c\u696d\u3002
+XBM0S.D=\u7121\u6cd5\u5c07 ''{0}'' \u6a94\u91cd\u65b0\u547d\u540d\u70ba ''{1}''
+XBM0T.D=\u8cc7\u6599\u5eab\u540d\u7a31 {0} \u7684\u8a9e\u610f\u4e0d\u660e\u7684\u5b50\u901a\u8a0a\u5354\u5b9a\u3002
+XBM0U.S=\u6c92\u6709\u767b\u9304 {0} \u8b58\u5225\u78bc\u7684\u985e\u5225
+XBM0V.S=\u5728\u8f09\u5165\u8b58\u5225\u78bc {0} \u7684\u767b\u9304\u985e\u5225 {1} \u6642\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1
+XBM0W.S=\u5728\u5efa\u7acb\u8b58\u5225\u78bc {0} \u7684\u767b\u9304\u985e\u5225 {1} \u7684\u5be6\u4f8b\u6642\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1
+XBM0X.D=\u63d0\u4f9b\u7684\u5340\u57df\u8aaa\u660e ''{0}'' \u7121\u6548\uff0c\u539f\u9810\u671f\u70ba ln[_CO[_variant]]\nln=\u5c0f\u5beb\u5169\u5b57\u6bcd ISO-639 \u8a9e\u8a00\u4ee3\u78bc\uff0cCO=\u5927\u5beb\u5169\u5b57\u6bcd ISO-3166 \u570b\u78bc\uff0c\u8acb\u53c3\u95b1 java.util.Locale\u3002
+XBM0Y.D=\u627e\u4e0d\u5230\u5099\u4efd\u8cc7\u6599\u5eab\u76ee\u9304 {0}\u3002\u8acb\u78ba\u5b9a\u6240\u6307\u5b9a\u7684\u5099\u4efd\u8def\u5f91\u662f\u6b63\u78ba\u7684\u3002
+XBM0Z.D=\u7121\u6cd5\u5c07\u6a94\u6848 ''{0}'' \u8907\u88fd\u5230 ''{1}''\u3002\u8acb\u78ba\u5b9a\u6709\u8db3\u5920\u7684\u7a7a\u9593\uff0c\u4e14\u8a31\u53ef\u6b0a\u662f\u6b63\u78ba\u7684\u3002
+XBM0Q.D=\u627e\u4e0d\u5230\u6a94\u6848 {0}\u3002\u8acb\u78ba\u5b9a\u5099\u4efd\u7248\u672c\u662f\u6b63\u78ba\u7684\uff0c\u4e14\u6c92\u6709\u6bc0\u640d\u3002
+XBM0R.D=\u7121\u6cd5\u79fb\u9664\u6a94\u6848 {0}\u3002
+
+# Upgrade
+XCW00.D=\u4e0d\u652f\u63f4\u5f9e ''{0}'' \u5347\u7d1a\u81f3 ''{1}''\u3002
+
+# Feature not supported
+
+
+# COntext service
+08000=\u4e0d\u660e\u5c94\u65b7\u5df2\u95dc\u9589\u9023\u7dda\u3002
+
+#../java/com/ibm/db2j/protocol/BasicServices/LockManager/messages.properties
+40001=\u56e0\u6b7b\u9396\u800c\u7121\u6cd5\u53d6\u5f97\u9396\u5b9a\uff0c\u9396\u5b9a\u548c\u7b49\u5f85\u8005\u7684\u5faa\u74b0\u662f\uff1a\n{0}\u9078\u53d6\u7684\u53d7\u5bb3\u8005\u662f XID\uff1a{1}
+
+40XL1=\u7121\u6cd5\u5728\u8981\u6c42\u7684\u6642\u9593\u5167\u53d6\u5f97\u9396\u5b9a
+40XL2=\u7121\u6cd5\u5728\u8981\u6c42\u7684\u6642\u9593\u5167\u53d6\u5f97\u9396\u5b9a\u3002lockTable \u50be\u51fa\u5982\u4e0b\uff1a{0}
+
+# ClassManager
+XBCM1.S=\u5728\u8f09\u5165\u7522\u751f\u7684\u985e\u5225 {0} \u671f\u9593\uff0c\u64f2\u51fa Java \u93c8\u7d50\u932f\u8aa4\u3002
+XBCM2.S=\u7121\u6cd5\u5efa\u7acb\u6240\u7522\u751f\u985e\u5225 {0} \u7684\u5be6\u4f8b\u3002
+XBCM3.S=\u5728\u7522\u751f\u7684\u985e\u5225 {0} \u4e2d\uff0c\u6c92\u6709\u65b9\u6cd5 {1}()\u3002
+
+# Properties
+
+XCY00.S=''{0}''=''{1}'' \u5167\u5bb9\u7684\u503c\u7121\u6548\u3002
+XCY02.S=\u4e0d\u652f\u63f4\u8981\u6c42\u7684\u5167\u5bb9\u8b8a\u66f4\uff0c''{0}''=''{1}''\u3002
+XCY03.S=\u9084\u6c92\u6709\u8a2d\u5b9a\u5fc5\u8981\u7684\u5167\u5bb9 ''{0}''\u3002
+
+# Cryptography
+XBCX0.S=\u52a0\u5bc6\u63d0\u4f9b\u8005\u767c\u751f\u7570\u5e38\u72c0\u6cc1\uff0c\u8acb\u53c3\u8003\u4e0b\u4e00\u500b\u7570\u5e38\u72c0\u6cc1\u4ee5\u53d6\u5f97\u8a73\u7d30\u8cc7\u6599\u3002
+XBCX1.S=\u5229\u7528\u4e0d\u5408\u6cd5\u7684\u6a21\u5f0f\u4f86\u8d77\u59cb\u8a2d\u5b9a\u5bc6\u78bc\uff0c\u5fc5\u9808\u662f ENCRYPT \u6216 DECRYPT\u3002
+XBCX2.S=\u5229\u7528\u592a\u77ed\u7684\u958b\u6a5f\u5bc6\u78bc\u4f86\u8d77\u59cb\u8a2d\u5b9a\u5bc6\u78bc\uff0c\u9577\u5ea6\u81f3\u5c11\u8981\u6709 {0} \u500b\u5b57\u5143
+XBCX5.S=\u7121\u6cd5\u5c07\u958b\u6a5f\u5bc6\u78bc\u6539\u6210 null\u3002
+XBCX6.S=\u7121\u6cd5\u5c07\u958b\u6a5f\u5bc6\u78bc\u6539\u6210\u975e\u5b57\u4e32\u7684\u53ef\u5e8f\u5217\u5316\u985e\u578b\u3002
+XBCX7.S=\u8b8a\u66f4\u958b\u6a5f\u5bc6\u78bc\u7684\u683c\u5f0f\u932f\u8aa4\u3002\u683c\u5f0f\u5fc5\u9808\u662f\uff1aold_boot_password\u3001new_boot_password\u3002
+XBCX8.S=\u7121\u6cd5\u8b8a\u66f4\u975e\u52a0\u5bc6\u8cc7\u6599\u5eab\u7684\u958b\u6a5f\u5bc6\u78bc\u3002
+XBCX9.S=\u7121\u6cd5\u8b8a\u66f4\u552f\u8b80\u8cc7\u6599\u5eab\u7684\u958b\u6a5f\u5bc6\u78bc\u3002
+XBCXA.S=\u958b\u6a5f\u5bc6\u78bc\u932f\u8aa4\u3002
+XBCXB.S=\u586b\u88dc ''{0}'' \u7684\u52a0\u5bc6\u4e0d\u7576\uff0c\u6216\u6c92\u6709\u6307\u5b9a\u586b\u88dc\u3002\u5fc5\u9808\u4f7f\u7528 ''NoPadding''\u3002
+XBCXC.S=\u52a0\u5bc6\u6f14\u7b97\u6cd5 ''{0}'' \u4e0d\u5b58\u5728\u3002\u8acb\u78ba\u8a8d\u9078\u64c7\u7684\u63d0\u4f9b\u8005 ''{1}'' \u652f\u63f4\u9019\u500b\u6f14\u7b97\u6cd5\u3002
+XBCXD.S=\u5efa\u7acb\u597d\u8cc7\u6599\u5eab\u4e4b\u5f8c\uff0c\u4e0d\u80fd\u6539\u8b8a\u52a0\u5bc6\u6f14\u7b97\u6cd5\u3002
+XBCXE.S=\u5efa\u7acb\u597d\u8cc7\u6599\u5eab\u4e4b\u5f8c\uff0c\u4e0d\u80fd\u6539\u8b8a\u52a0\u5bc6\u6cd5\u63d0\u4f9b\u8005\u3002
+XBCXF.S=\u627e\u4e0d\u5230\u4ee3\u8868\u52a0\u5bc6\u6cd5\u63d0\u4f9b\u8005\u7684 ''{0}'' \u985e\u5225\u3002
+XBCXG.S=\u52a0\u5bc6\u6cd5\u63d0\u4f9b\u8005 ''{0}'' \u4e0d\u5b58\u5728\u3002
+XBCXH.S=encryptionAlgorithm ''{0}'' \u7684\u683c\u5f0f\u4e0d\u6b63\u78ba\u3002\u6b63\u78ba\u7684\u683c\u5f0f\u662f algorithm/feedbackMode/NoPadding\u3002
+XBCXI.S=\u4e0d\u652f\u63f4\u56de\u994b\u6a21\u5f0f ''{0}''\u3002\u652f\u63f4\u7684\u56de\u994b\u6a21\u5f0f\u6709 CBC\u3001CFB\u3001OFB \u548c ECB\u3002
+XBCXJ.S=\u61c9\u7528\u7a0b\u5f0f\u6b63\u5728\u4f7f\u7528\u65e9\u65bc 1.2.1 \u7684 Java Cryptography Extension (JCE)\u3002\u8acb\u5347\u7d1a\u81f3 JCE 1.2.1\uff0c\u518d\u91cd\u8a66\u4f5c\u696d\u3002
+XBCXK.S=\u6307\u5b9a\u7684\u52a0\u5bc6\u91d1\u9470\u4e0d\u7b26\u5408\u5efa\u7acb\u8cc7\u6599\u5eab\u6642\u6240\u7528\u7684\u52a0\u5bc6\u91d1\u9470\u3002\u8acb\u78ba\u5b9a\u60a8\u4f7f\u7528\u6b63\u78ba\u7684\u52a0\u5bc6\u91d1\u9470\uff0c\u518d\u91cd\u8a66\u4e00\u6b21\u3002
+XBCXL.S=\u52a0\u5bc6\u91d1\u9470\u9a57\u8b49\u7a0b\u5e8f\u5931\u6557\uff0c\u8a73\u7d30\u8cc7\u6599\u8acb\u53c3\u95b1\u4e0b\u4e00\u500b\u7570\u5e38\u72c0\u6cc1\u3002\u53ef\u80fd\u662f\u5b58\u53d6\u9069\u7576\u7684\u6a94\u6848\u4f86\u57f7\u884c\u9a57\u8b49\u7a0b\u5e8f\u6642\u767c\u751f\u932f\u8aa4\u3002
+
+#../java/com/ibm/db2j/impl/BasicServices/CacheService/Generic/messages.properties
+
+# CacheStatementException messages
+# sqlstate range: XBCA0 to XBCAZ
+
+XBCA0.S=\u7121\u6cd5\u5728 {0} \u5feb\u53d6\u8a18\u61b6\u9ad4\u4e2d\u5efa\u7acb\u542b {1} \u7d22\u5f15\u9375\u7684\u65b0\u7269\u4ef6\uff0c\u5b83\u5df2\u5728\u5feb\u53d6\u8a18\u61b6\u9ad4\u4e2d\u3002
+
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface.
+# sqlstate range: XSAI0 to XSAIZ
+XSAI2.S=\u8981\u6c42\u7684\u805a\u96c6\u7269 ({0}) \u4e0d\u5b58\u5728\u3002
+XSAI3.S=\u6c92\u6709\u5be6\u4f5c\u7279\u6027\u3002
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/Interface
+# RunTimeStatistics properties messages.
+# sqlstate range: XSAJ0 to XSAJZ
+XSAJ0.U=\u6383\u63cf\u985e\u578b
+XSAJ1.U=\u9020\u8a2a\u7684\u9801\u6578
+XSAJ2.U=\u9020\u8a2a\u7684\u5217\u6578
+XSAJ3.U=\u5df2\u9020\u8a2a\u7684\u522a\u9664\u5217\u6578
+XSAJ4.U=\u5df2\u5b9a\u7fa9\u7684\u5217\u6578
+XSAJ5.U=\u5df2\u63d0\u53d6\u7684\u6b04\u6578
+XSAJ6.U=\u5df2\u63d0\u53d6\u7684\u6b04\u4f4d\u5143\u96c6
+XSAJ7.U=\u6a39\u72c0\u7d50\u69cb\u9ad8\u5ea6
+XSAJ8.U=\u6392\u5e8f\u985e\u578b
+XSAJA.U=\u8f38\u5165\u5217\u6578
+XSAJB.U=\u8f38\u51fa\u5217\u6578
+XSAJC.U=\u57f7\u884c\u7684\u5408\u4f75\u6b21\u6578
+XSAJD.U=\u57f7\u884c\u7684\u5408\u4f75\u5927\u5c0f
+XSAJE.U=\u5168\u90e8
+
+#NOTE: The next three messages are the names of types of scans.
+XSAJF.U=btree
+XSAJG.U=\u8cc7\u6599\u5806
+XSAJH.U=\u6392\u5e8f
+
+#NOTE: The next two messages are types of sorts
+XSAJI.U=\u5916\u90e8
+XSAJJ.U=\u5167\u90e8
+
+# java/com/ibm/db2j/protocol/Database/Storage/Access/XA.
+# sqlstate range: XSAX0 to XSAXZ
+XSAX0.S=XA \u901a\u8a0a\u5354\u5b9a\u9055\u898f\u3002
+XSAX1.S=\u8a66\u5716\u5229\u7528\u73fe\u6709\u5ee3\u57df\u4ea4\u6613\u7684 Xid \u4f86\u555f\u52d5\u5ee3\u57df\u4ea4\u6613\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/AccessManager/Generic
+# sqlstate range: XSAM0 to XSAMZ
+XSAM0.S=\u8a66\u5716\u555f\u52d5 ''{0}'' \u7684\u958b\u6a5f\u6a21\u7d44\u6642\uff0c\u767c\u73fe\u7570\u5e38\u72c0\u6cc1\u3002
+XSAM2.S=\u6c92\u6709\u7d22\u5f15\u6216 conglom ID \u70ba ''{0}'' \u7684\u805a\u96c6\u7269\u8981\u9664\u53bb\u3002
+XSAM3.S=\u6c92\u6709\u7d22\u5f15\u6216 conglom ID \u70ba ''{0}'' \u7684\u805a\u96c6\u7269\u3002
+XSAM4.S=\u6c92\u6709\u7a31\u70ba ''{0}'' \u7684\u6392\u5e8f\u3002
+XSAM5.S=\u5728\u505a\u5176\u4ed6\u547c\u53eb\u4e4b\u524d\uff0c\u60a8\u5fc5\u9808\u5148\u547c\u53eb next() \u4f86\u958b\u555f\u53ca\u5b9a\u4f4d\u6383\u63cf\u3002
+XSAM6.S=\u627e\u4e0d\u5230\u5728 {0} \u5132\u5b58\u5668\u7b2c {1} \u9801\u4e2d\u7684 {2} \u8a18\u9304\u3002
+
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Generic
+# sqlstate range: XSCG0 to XSCGZ
+XSCG0.S=\u7121\u6cd5\u5efa\u7acb\u7bc4\u672c\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/Heap
+# sqlstate range: XSCH0 to XSCHZ
+
+XSCH8.S=\u6c92\u6709\u5be6\u4f5c\u9019\u9805\u7279\u6027\u3002
+XSCH7.S=\u6383\u63cf\u6c92\u6709\u5b9a\u4f4d\u3002
+XSCH6.S=\u5df2\u95dc\u9589\u5132\u5b58\u5668 ID \u70ba {0} \u7684\u8cc7\u6599\u5806\u5132\u5b58\u5668\u3002
+XSCH5.S=\u5728\u57fa\u672c\u8868\u683c\u4e2d\uff0c\u8981\u6c42\u7684\u6b04\u6578 {0} \u548c\u6b04\u6578\u4e0a\u9650 {1} \u4e0d\u7b26\u3002
+XSCH4.S=\u7121\u6cd5\u5efa\u7acb\u805a\u96c6\u7269 (Conglomerate)\u3002
+XSCH1.S=\u627e\u4e0d\u5230\u5132\u5b58\u5668 {0}\u3002
+XSCH0.S=\u7121\u6cd5\u5efa\u7acb\u5132\u5b58\u5668\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Conglomerate/BTree/Generic
+# sqlstate range: XSCB0 to XSCBZ
+XSCB9.S=\u4fdd\u7559\u4f9b\u6e2c\u8a66\u4f7f\u7528\u3002
+XSCB8.S=\u5df2\u95dc\u9589 btree \u805a\u96c6\u7269 {0}\u3002
+XSCB7.S=\u5728 btree \u6383\u63cf\u671f\u9593\uff0c\u767c\u751f\u5167\u90e8\u932f\u8aa4 - current_rh \u662f null = {0}\uff0c\u5b9a\u4f4d\u7d22\u5f15\u9375\u662f null = {1}\u3002
+XSCB6.S=\u9650\u5236\uff1a\u9801\u9762\u7a7a\u9593\u4e0d\u8db3\uff0c\u7121\u6cd5\u66f4\u65b0\u6216\u63d2\u5165 btree \u6b21\u8981\u7d22\u5f15\u7684\u8a18\u9304\u3002\u8acb\u5229\u7528\u53c3\u6578 derby.storage.pageSize \u53ca\uff08\u6216\uff09derby.storage.pageReservedSpace \u4f86\u7834\u9664\u9019\u9805\u9650\u5236\u3002
+XSCB5.S=\u5728 btree \u63d2\u5165\u6216\u522a\u9664\u7684\u908f\u8f2f\u5fa9\u539f\u671f\u9593\uff0c\u7121\u6cd5\u5728\u6a39\u72c0\u7d50\u69cb\u4e2d\u627e\u5230\u8a72\u5217\u3002
+XSCB4.S=\u5c07\u6383\u63cf\u5b9a\u4f4d\u5728\u7b2c\u4e00\u5217\u4e4b\u524d\uff08\u4e5f\u5c31\u662f\u9084\u6c92\u6709\u767c\u51fa next() \u547c\u53eb\uff09\uff0c\u5df2\u547c\u53eb btree \u958b\u555f\u6383\u63cf\u4e2d\u7684\u65b9\u6cd5\u3002\u6383\u63cf\u7684\u73fe\u884c\u72c0\u614b\u662f ({0})\u3002
+XSCB3.S=\u672a\u5be6\u4f5c\u7684\u7279\u6027\u3002
+XSCB2.S=\u5728\u63d0\u4f9b\u7d66 btree \u6b21\u8981\u7d22\u5f15\u7684 createConglomerate() \u4e4b\u5167\u5bb9\u6e05\u55ae\u4e2d\uff0c\u627e\u4e0d\u5230\u5fc5\u8981\u7684\u5167\u5bb9 {0}\u3002
+XSCB1.S=\u627e\u4e0d\u5230\u5132\u5b58\u5668 {0}\u3002
+XSCB0.S=\u7121\u6cd5\u5efa\u7acb\u5132\u5b58\u5668\u3002
+
+#../java/com/ibm/db2j/impl/Database/Storage/Access/Raw/Sort/External
+# sqlstate range: XSAS0 to XSASZ
+
+XSAS6.S=\u7121\u6cd5\u53d6\u5f97\u6392\u5e8f\u8cc7\u6e90\u3002
+XSAS3.S=\u63d2\u5165\u6392\u5e8f\u7684\u5217\u985e\u578b\u4e0d\u7b26\u5408\u6392\u5e8f\u7684\u7bc4\u672c\u3002
+XSAS1.S=\u8a66\u5716\u5728\u6392\u5e8f\u958b\u982d\u4e4b\u524d\u6216\u5728\u6392\u5e8f\u7d50\u675f\u4e4b\u5f8c\u63d0\u53d6\u5217\u3002
+XSAS0.S=\u547c\u53eb\u4e0d\u9069\u5408\u6392\u5e8f\u6383\u63cf\u7684\u6383\u63cf\u63a7\u5236\u5668\u4ecb\u9762\u65b9\u6cd5\u3002
+
+# java/com/ibm/db2j/protocol/Database/Storage/RawStore/Interface.
+# statement errors.
+# sqlstate range: XSRS0 to XSRSZ
+XSRS0.S=\u7121\u6cd5\u51cd\u7d50\u5df2\u51cd\u7d50\u7684\u8cc7\u6599\u5eab\u3002
+XSRS1.S=\u7121\u6cd5\u5c07\u8cc7\u6599\u5eab\u5099\u4efd\u5728\u4e0d\u662f\u76ee\u9304\u7684 {0} \u4e2d\u3002
+XSRS4.S=\u5c07\u6a94\u6848\u540d\u7a31 {0} \u6539\u70ba {1} \u6642\uff08\u5728\u5099\u4efd\u671f\u9593\uff09\uff0c\u767c\u751f\u932f\u8aa4\u3002
+XSRS5.S=\u5c07\u6a94\u6848\u5f9e {0} \u8907\u88fd\u5230 {1} \u6642\uff08\u5728\u5099\u4efd\u671f\u9593\uff09\uff0c\u767c\u751f\u932f\u8aa4\u3002
+XSRS6.S=\u7121\u6cd5\u5efa\u7acb\u5099\u4efd\u76ee\u9304 {0}\u3002
+XSRS7.S=\u5099\u4efd\u6355\u6349\u5230\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1\u3002
+XSRS8.S=\u53ea\u80fd\u5728\u5efa\u7acb\u8cc7\u6599\u5eab\u671f\u9593\u8a2d\u5b9a\u65e5\u8a8c\u88dd\u7f6e\uff0c\u7121\u6cd5\u540c\u6642\u52a0\u4ee5\u6539\u8b8a\u3002
+XSRS9.S={0} \u8a18\u9304\u5df2\u4e0d\u5b58\u5728\u3002
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# statement errors.
+# sqlstate range: XSLB0 to XSLBZ
+XSLB9.S=\u7121\u6cd5\u767c\u51fa\u4efb\u4f55\u5176\u4ed6\u8b8a\u66f4\uff0c\u65e5\u8a8c Factory \u5df2\u7d93\u505c\u6b62\u3002
+XSLB8.S=\u8a66\u5716\u5c07\u6383\u63cf\u91cd\u8a2d\u70ba {0}\uff0c\u8d85\u51fa\u5b83\u7684\u9650\u5236 {1}\u3002
+XSLB6.S=\u8a66\u5716\u8a18\u8f09 0 \u6216 -ve \u9577\u5ea6\u7684\u65e5\u8a8c\u8a18\u9304\u3002
+XSLB5.S=\u622a\u65b7\u9ede {0} \u7684 truncationLWM \u77ac\u6642 {1} \u4e0d\u5408\u6cd5\u3002\u5408\u6cd5\u7bc4\u570d\u662f {2} \u81f3 {3}\u3002
+XSLB4.S=\u627e\u4e0d\u5230 truncationLWM {0}\u3002
+XSLB2.S=\u65e5\u8a8c\u4f5c\u696d {0} \u8a18\u8f09\u904e\u591a\u8cc7\u6599\uff0c\u5b83\u586b\u6eff\u4e86\u5167\u90e8\u65e5\u8a8c\u7de9\u885d\u5340\u3002
+XSLB1.S=\u65e5\u8a8c\u4f5c\u696d {0} \u5c07\u672c\u8eab\u5beb\u51fa\u81f3\u65e5\u8a8c\u4e32\u6d41\u6642\uff0c\u767c\u751f\u932f\u8aa4\uff0c\u9019\u53ef\u80fd\u662f\u932f\u8aa4\u65e5\u8a8c\u4f5c\u696d\u6240\u9020\u6210\uff0c\u6216\u662f\u592a\u5927\u7684\u65e5\u8a8c\u4f5c\u696d\u586b\u6eff\u5167\u90e8\u65e5\u8a8c\u7de9\u885d\u5340\u6240\u9020\u6210\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Log/Generic
+# database errors.
+# sqlstate range: XSLA0 to XSLAZ
+XSLAT.D=\u65e5\u8a8c\u76ee\u9304 {0} \u5b58\u5728\u3002\u8acb\u78ba\u5b9a\u6240\u6307\u5b9a\u7684 logDevice \u4f4d\u7f6e\u662f\u6b63\u78ba\u7684\u3002
+XSLAS.D=\u9084\u539f\u6642\uff0c\u5728\u5099\u4efd\u4e2d\u627e\u4e0d\u5230\u65e5\u8a8c\u76ee\u9304 {0}\u3002\u8acb\u78ba\u5b9a\u5099\u4efd\u7248\u672c\u662f\u6b63\u78ba\u7684\uff0c\u4e14\u6c92\u6709\u6bc0\u640d\u3002
+XSLAR.D=\u7121\u6cd5\u5728\u9084\u539f\u671f\u9593\u5c07\u65e5\u8a8c\u6a94 ''{0}'' \u8907\u88fd\u5230 ''{1}''\u3002\u8acb\u78ba\u5b9a\u6709\u8db3\u5920\u7684\u7a7a\u9593\uff0c\u4e14\u8a31\u53ef\u6b0a\u662f\u6b63\u78ba\u7684\u3002
+XSLAQ.D=\u7121\u6cd5\u5efa\u7acb\u5728 {0} \u76ee\u9304\u7684\u65e5\u8a8c\u6a94\u3002
+XSLAP.D={0} \u7684\u8cc7\u6599\u5eab\u7248\u672c\u70ba {1}\u3002\u6e2c\u8a66\u7248\u8cc7\u6599\u5eab\u7121\u6cd5\u5347\u7d1a\u3002
+XSLAO.D=\u5fa9\u539f\u5931\u6557\uff0c\u767c\u751f\u975e\u9810\u671f\u7684\u554f\u984c {0}\u3002
+XSLAN.D=\u5728 {0} \u7684\u8cc7\u6599\u5eab\uff0c\u5b83\u7684\u683c\u5f0f\u8207\u8edf\u9ad4\u73fe\u884c\u7248\u672c\u4e0d\u76f8\u5bb9\u3002\u8cc7\u6599\u5eab\u662f\u7531\u7b2c {1} \u7248\u6240\u5efa\u7acb\u6216\u5347\u7d1a\u3002
+XSLAM.D=\u767c\u751f IOException\uff0c\u7121\u6cd5\u9a57\u8b49\u5728 {1} \u7684\u8cc7\u6599\u5eab\u683c\u5f0f\u3002
+XSLAL.D=\u65e5\u8a8c\u8a18\u9304\u5927\u5c0f {2} \u8d85\u51fa\u5141\u8a31\u7684\u65e5\u8a8c\u6a94\u6848\u5927\u5c0f\u4e0a\u9650 {3}\u3002\u5728 {0} \u65e5\u8a8c\u6a94 {1} \u4f4d\u7f6e\u4e2d\uff0c\u767c\u73fe\u932f\u8aa4
+XSLAK.D=\u8cc7\u6599\u5eab\u5df2\u8d85\u51fa\u6700\u5927\u7684\u65e5\u8a8c\u6a94\u6578\u76ee {0}\u3002
+XSLAJ.D=\u8a18\u8f09\u7cfb\u7d71\u5df2\u56e0\u4e4b\u524d\u767c\u751f\u7684\u554f\u984c\u800c\u6a19\u793a\u70ba\u95dc\u9589\uff0c\u5728\u95dc\u9589\u7cfb\u7d71\u4e26\u91cd\u65b0\u555f\u52d5\u4e4b\u524d\uff0c\u5c07\u7121\u6cd5\u9032\u884c\u5176\u4ed6\u4efb\u4f55\u4f5c\u696d\u3002
+XSLAI.D=\u7121\u6cd5\u8a18\u8f09\u6838\u5c0d\u9ede\u65e5\u8a8c\u8a18\u9304
+XSLAH.D=\u6b63\u5728\u66f4\u65b0\u552f\u8b80\u8cc7\u6599\u5eab\u3002
+XSLAF.D=\u5229\u7528\u7528\u904e\u7684\u8cc7\u6599\u7de9\u885d\u5340\u5efa\u7acb\u552f\u8b80\u8cc7\u6599\u5eab\u3002
+XSLAE.D=\u7121\u6cd5\u5beb\u5165\u6216\u66f4\u65b0\u5728 {0} \u7684\u63a7\u5236\u6a94\u3002
+XSLAD.D=\u5728 {3} \u65e5\u8a8c\u6a94\u7684\u77ac\u6642 {2} \u7684\u65e5\u8a8c\u8a18\u9304\u5df2\u6bc0\u640d\u3002\u539f\u9810\u671f\u7684\u65e5\u8a8c\u8a18\u9304\u9577\u5ea6\u662f {0}\uff0c\u5be6\u969b\u7684\u9577\u5ea6\u662f {1}\u3002
+XSLAC.D=\u5728 {0} \u7684\u8cc7\u6599\u5eab\uff0c\u5176\u683c\u5f0f\u8207\u8edf\u9ad4\u73fe\u884c\u7248\u672c\u4e0d\u76f8\u5bb9\uff0c\u5b83\u53ef\u80fd\u5df2\u7d93\u7531\u8f03\u65b0\u7684\u7248\u672c\u5efa\u7acb\u6216\u66f4\u65b0\u3002
+XSLAB.D=\u627e\u4e0d\u5230\u65e5\u8a8c\u6a94 {0}\uff0c\u8acb\u78ba\u5b9a\u5df2\u5229\u7528\u60a8\u5e73\u53f0\u7684\u6b63\u78ba\u8def\u5f91\u5206\u9694\u5b57\u5143\u4f86\u9069\u7576\u5730\u8a2d\u5b9a logDevice \u5167\u5bb9\u3002
+XSLAA.D=\u5132\u5b58\u5eab\u5df2\u56e0\u4e4b\u524d\u7684\u7570\u5e38\u72c0\u6cc1\u800c\u6a19\u793a\u70ba\u95dc\u9589\u3002
+XSLA8.D=\u7121\u6cd5\u56de\u5fa9 {0} \u4ea4\u6613\uff0c\u8a66\u5716\u4ee5 {2} \u4f86\u88dc\u511f {1} \u4f5c\u696d\u3002
+XSLA7.D=\u7121\u6cd5\u91cd\u505a\u65e5\u8a8c\u4e2d\u7684 {0} \u4f5c\u696d\u3002
+XSLA6.D=\u7121\u6cd5\u56de\u5fa9\u8cc7\u6599\u5eab\u3002
+XSLA5.D=\u56e0\u67d0\u4e9b\u539f\u56e0\u7121\u6cd5\u8b80\u53d6\u65e5\u8a8c\u4e32\u6d41\u4f86\u56de\u5fa9\u4ea4\u6613 {0}\u3002
+XSLA4.D=\u7121\u6cd5\u5beb\u5165\u65e5\u8a8c\uff0c\u6700\u53ef\u80fd\u7684\u539f\u56e0\u662f\u65e5\u8a8c\u5df2\u6eff\u3002\u8acb\u522a\u9664\u4e0d\u5fc5\u8981\u7684\u6a94\u6848\u3002\u53e6\u5916\uff0c\u4e5f\u53ef\u80fd\u662f\u6a94\u6848\u7cfb\u7d71\u662f\u552f\u8b80\u7684\uff0c\u6216\u78c1\u789f\u5931\u6548\uff0c\u6216\u5a92\u9ad4\u767c\u751f\u5176\u4ed6\u554f\u984c\u3002
+XSLA3.D=\u65e5\u8a8c\u5df2\u6bc0\u640d\uff0c\u65e5\u8a8c\u4e32\u6d41\u4e2d\u6709\u7121\u6548\u7684\u8cc7\u6599\u3002
+XSLA2.D=\u7cfb\u7d71\u5c07\u95dc\u9589\uff0c\u5728\u5b58\u53d6\u65e5\u8a8c\u6a94\u6642\u767c\u751f I/O \u7570\u5e38\u72c0\u6cc1\u3002
+XSLA1.D=\u5df2\u5c07\u65e5\u8a8c\u8a18\u9304\u50b3\u9001\u81f3\u4e32\u6d41\uff0c\u4f46\u5b83\u7121\u6cd5\u5957\u7528\u5728\u5132\u5b58\u5eab\uff08\u7269\u4ef6 {0}\uff09\u4e0a\u3002\u9019\u4e5f\u53ef\u80fd\u6703\u9020\u6210\u5fa9\u539f\u554f\u984c\u3002
+XSLA0.D=\u7121\u6cd5\u5c07\u65e5\u8a8c\u6a94\u6c96\u5beb\u81f3\u78c1\u789f {0} \u4e2d\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# statement errors.
+# sqlstate range: XSTA0 to XSTAZ
+# changed XSTA0 and XSTA1 to match DB2 sqlstates - bug 4466
+3B501.S=\u5728\u73fe\u884c\u4ea4\u6613\u4e2d\uff0c\u5177\u6709\u50b3\u905e\u4e4b\u540d\u7a31\u7684 SAVEPOINT \u5df2\u5b58\u5728\u3002
+3B502.S=\u5df2\u6307\u5b9a RELEASE \u6216 ROLLBACK TO SAVEPOINT\uff0c\u4f46\u5132\u5b58\u9ede\u4e0d\u5b58\u5728\u3002
+3B001.S=SAVEPOINT {0} \u4e0d\u5b58\u5728\u6216\u672a\u4f5c\u7528\u65bc\u73fe\u884c\u4ea4\u6613\u4e2d\u3002
+3B002.S=\u5df2\u9054\u5230 savepoints \u7684\u4e0a\u9650\u3002
+XSTA2.S=\u7576\u8a66\u5716\u4f7f\u4ea4\u6613\u6210\u70ba\u4f5c\u7528\u4e2d\uff0c\u5df2\u6709\u53e6\u4e00\u500b\u4ea4\u6613\u5728\u4f5c\u7528\u4e2d\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# transaction errors.
+# sqlstate range: 40XT0 to 40XTZ
+40XT0=RawStore \u6a21\u7d44\u6307\u51fa\u4e86\u5167\u90e8\u932f\u8aa4\u3002
+40XT1=\u5728\u4ea4\u6613\u78ba\u5b9a\u671f\u9593\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1\u3002
+40XT2=\u5728 SAVEPOINT \u56de\u5fa9\u671f\u9593\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1\u3002
+40XT4=\u8a66\u5716\u95dc\u9589\u4ecd\u5728\u4f5c\u7528\u4e2d\u7684\u4ea4\u6613\uff0c\u4ea4\u6613\u5df2\u4e2d\u6b62\u3002
+40XT5=\u5728\u5167\u90e8\u4ea4\u6613\u671f\u9593\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1\u3002
+40XT6=\u8cc7\u6599\u5eab\u5728\u975c\u6b62\u72c0\u614b\uff0c\u7121\u6cd5\u555f\u52d5\u4ea4\u6613\u3002\u8acb\u7b49\u4e00\u6703\u5152\uff0c\u76f4\u5230\u975c\u6b62\u72c0\u614b\u7d50\u675f\u70ba\u6b62\u3002
+40XT7=\u5167\u90e8\u4ea4\u6613\u4e0d\u652f\u63f4\u4f5c\u696d\u3002
+
+#
+#java/com/ibm/db2j/internalUtil
+#	Id Parse Errors       			XCXA0-XCXAZ
+#  	Db Class Path Parse Errors 	 	XCXB0-XCXBZ
+# 	Id List Parse Errors			XCXC0-XCXCZ
+#  	IO Errors						XCXD0-XCXDZ
+#	LocaleFinder Errors				XCXE0-XCXEZ
+XCXA0.S=\u8b58\u5225\u78bc\u7121\u6548\u3002
+XCXB0.S=\u7121\u6548\u7684\u8cc7\u6599\u5eab\u985e\u5225\u8def\u5f91\uff1a''{0}''\u3002
+XCXC0.S=\u7121\u6548\u7684 ID \u6e05\u55ae\u3002
+XCXE0.S=\u60a8\u8a66\u5716\u57f7\u884c\u4f7f\u7528\u8cc7\u6599\u5eab\u5340\u57df\u7684\u4f5c\u696d\uff0c\u4f46\u8cc7\u6599\u5eab\u4e26\u6c92\u6709\u5340\u57df\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Transactions/Basic
+# system errors.
+# sqlstate range: XSTB0 to XSTBZ
+XSTB0.M=\u5728\u4ea4\u6613\u4e2d\u6b62\u671f\u9593\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1\u3002
+XSTB2.M=\u7121\u6cd5\u8a18\u8f09\u4ea4\u6613\u8b8a\u66f4\uff0c\u53ef\u80fd\u662f\u6b63\u5728\u5617\u8a66\u5beb\u5165\u552f\u8b80\u8cc7\u6599\u5eab\u3002
+XSTB3.M=\u7121\u6cd5\u4e2d\u6b62\u4ea4\u6613\uff0c\u56e0\u70ba\u65e5\u8a8c\u7ba1\u7406\u7a0b\u5f0f\u662f null\uff0c\u53ef\u80fd\u662f\u5148\u524d\u7684\u932f\u8aa4\u6240\u9020\u6210\u7684\u3002
+XSTB5.M=\u5728\u5efa\u7acb\u505c\u7528\u8a18\u8f09\u529f\u80fd\u7684\u8cc7\u6599\u5eab\u6642\uff0c\u767c\u73fe\u975e\u9810\u671f\u7684\u554f\u984c\u3002
+XSTB6.M=\u7576\u4ea4\u6613\u8868\u683c\u5728\u4f7f\u7528\u4e2d\uff0c\u7121\u6cd5\u7528\u67d0\u4efd\u4ea4\u6613\u8868\u683c\u4f86\u66ff\u63db\u53e6\u4e00\u4efd\u4ea4\u6613\u8868\u683c\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# transaction errors.
+# sqlstate range: 40XD0 to 40XDZ
+40XD0=\u5132\u5b58\u5668\u5df2\u95dc\u9589
+40XD1=\u5df2\u5728\u552f\u8b80\u6a21\u5f0f\u4e2d\u958b\u555f\u5132\u5b58\u5668
+40XD2=\u7121\u6cd5\u958b\u555f\u5132\u5b58\u5668 {0}\uff0c\u53ef\u80fd\u662f\u5b83\u5df2\u7d93\u9664\u53bb\u6216\u4e0d\u5b58\u5728
+
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# statement errors.
+# sqlstate range: XSDA0 to XSDAZ
+XSDA1.S=\u8a66\u5716\u5728\u9801\u9762\u4e2d\u5b58\u53d6\u8d85\u51fa\u7bc4\u570d\u7684\u8a18\u9304
+XSDA2.S=\u8a66\u5716\u66f4\u65b0\u5df2\u522a\u9664\u7684\u8a18\u9304
+XSDA3.S=\u9650\u5236\uff1a\u9801\u9762\u7a7a\u9593\u4e0d\u8db3\uff0c\u7121\u6cd5\u66f4\u65b0\u6216\u63d2\u5165\u8a18\u9304\u3002\u8acb\u5229\u7528\u53c3\u6578 derby.storage.pageSize \u53ca\uff08\u6216\uff09derby.storage.pageReservedSpace \u4f86\u7834\u9664\u9019\u9805\u9650\u5236\u3002
+XSDA4.S=\u64f2\u51fa\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1
+XSDA5.S=\u8a66\u5716\u53d6\u6d88\u522a\u9664\u6c92\u6709\u522a\u9664\u7684\u8a18\u9304
+XSDA6.S=\u5217\u7684 {0} \u76f4\u6b04\u662f null\uff0c\u5b83\u9700\u8981\u8a2d\u6210\u6307\u5411\u7269\u4ef6\u3002
+XSDA7.S=\u9084\u539f {0} \u985e\u5225\u7684\u53ef\u5e8f\u5217\u5316\u7269\u4ef6\u6216 SQLData \u7269\u4ef6\u6642\uff0c\u8a66\u5716\u8b80\u53d6\u8d85\u51fa\u539f\u4f86\u6240\u5132\u5b58\u7684\u8cc7\u6599
+XSDA8.S=\u5728\u9084\u539f {0} \u985e\u5225\u7684\u53ef\u5e8f\u5217\u5316\u7269\u4ef6\u6216 SQLData \u7269\u4ef6\u671f\u9593\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1
+XSDA9.S=\u5728\u9084\u539f {0} \u985e\u5225\u7684\u53ef\u5e8f\u5217\u5316\u7269\u4ef6\u6216 SQLData \u7269\u4ef6\u671f\u9593\uff0c\u627e\u4e0d\u5230\u985e\u5225
+XSDAA.S=\u6642\u9593\u6233\u8a18 {0} \u4e0d\u5408\u6cd5\uff0c\u53ef\u80fd\u662f\u6642\u9593\u6233\u8a18\u4f86\u81ea\u4e0d\u540c\u7684\u9801\u9762\uff0c\u6216\u5c6c\u65bc\u4e0d\u76f8\u5bb9\u7684\u5be6\u4f5c
+XSDAB.S=\u7121\u6cd5\u8a2d\u5b9a null \u6642\u9593\u6233\u8a18
+XSDAC.S=\u5617\u8a66\u5c07\u5217\u6216\u9801\u9762\u5f9e\u67d0\u500b\u5132\u5b58\u5668\u79fb\u81f3\u53e6\u4e00\u500b\u5132\u5b58\u5668\u3002
+XSDAD.S=\u5617\u8a66\u5c07\u6578\u500b\u96f6\u5217\u5f9e\u67d0\u500b\u9801\u9762\u79fb\u81f3\u53e6\u4e00\u500b\u9801\u9762\u3002
+XSDAE.S=\u53ea\u80fd\u5efa\u7acb\u7279\u6b8a\u8a18\u9304\u63a7\u9ede ID \u7684\u8a18\u9304\u63a7\u9ede\u3002
+XSDAF.S=\u5982\u540c\u4e00\u822c\u8a18\u9304\u63a7\u9ede\u4f86\u4f7f\u7528\u7279\u6b8a\u8a18\u9304\u63a7\u9ede\u3002
+XSDAG.S=\u914d\u7f6e\u5de2\u5957\u4e0a\u5c64\u4ea4\u6613\u7121\u6cd5\u958b\u555f\u5132\u5b58\u5668\u3002
+XSDAI.S=\u8981\u79fb\u9664\u7684 {0} \u9801\u9762\u5df2\u9396\u5b9a\u8981\u53d6\u6d88\u914d\u7f6e\u3002
+XSDAJ.S=\u5728\u5beb\u5165\u53ef\u5e8f\u5217\u5316\u7269\u4ef6\u6216 SQLData \u7269\u4ef6\u671f\u9593\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1
+XSDAK.S=\u53d6\u5f97\u8a18\u9304\u63a7\u9ede {0} \u7684\u932f\u8aa4\u9801\u9762\u3002
+XSDAL.S=\u8a18\u9304\u63a7\u9ede {0} \u975e\u9810\u671f\u5730\u6307\u5411\u6ea2\u4f4d\u9801\u9762\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/Generic
+# database errors.
+# sqlstate range: XSDB0 to XSDBZ
+XSDB0.D=\u5728\u8a18\u61b6\u9ad4\u5167\u9801\u9762 {0} \u4e2d\uff0c\u767c\u751f\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1
+XSDB1.D={0} \u9801\u9762\u51fa\u73fe\u4e0d\u660e\u7684\u9801\u9762\u683c\u5f0f
+XSDB2.D={0} \u5132\u5b58\u5668\u7684\u5132\u5b58\u5668\u683c\u5f0f\u4e0d\u660e\uff1a{1}
+XSDB3.D=\u5132\u5b58\u5668\u8cc7\u8a0a\u5728\u5beb\u5165\u4e4b\u5f8c\uff0c\u5c31\u7121\u6cd5\u8b8a\u66f4\uff1a\u5148\u524d\u662f {0}\uff0c\u73fe\u5728\u662f {1}
+XSDB4.D={0} \u9801\u9762\u7684\u7248\u672c\u662f {1}\uff0c\u65e5\u8a8c\u6a94\u5305\u542b\u8b8a\u66f4\u7248\u672c {2}\uff0c\u53ef\u80fd\u662f\u907a\u6f0f\u4e86\u9019\u500b\u9801\u9762\u7684\u65e5\u8a8c\u8a18\u9304\uff0c\u4e5f\u53ef\u80fd\u662f\u9019\u500b\u9801\u9762\u6c92\u6709\u9069\u7576\u5beb\u51fa\u5230\u78c1\u789f\u4e2d\u3002
+XSDB5.D=\u65e5\u8a8c\u7684 {0} \u9801\u9762\u6709\u8b8a\u66f4\u8a18\u9304\uff0c\u5b83\u5728\u5132\u5b58\u5668\u7684\u7d50\u5c3e\u4e4b\u5916\u3002
+XSDB6.D=Derby \u53ef\u80fd\u6709\u53e6\u4e00\u500b\u5be6\u4f8b\u5df2\u7d93\u555f\u52d5\u8cc7\u6599\u5eab {0}\u3002
+XSDB7.D=\u8b66\u544a\uff1a\u5373\u4f7f Derby\uff08\u5be6\u4f8b {2}\uff09\u4ecd\u53ef\u80fd\u5728\u4f5c\u7528\u4e2d\uff0cDerby\uff08\u5be6\u4f8b {0}\uff09\u4ecd\u7136\u8a66\u5716\u555f\u52d5\u8cc7\u6599\u5eab {1}\u3002\u4e00\u6b21\u53ea\u80fd\u6709\u4e00\u500b Derby \u5be6\u4f8b\u53ef\u4ee5\u555f\u52d5\u4e00\u500b\u8cc7\u6599\u5eab\u3002\u53ef\u80fd\u6703\u9020\u6210\u56b4\u91cd\u4e14\u4e0d\u53ef\u56de\u5fa9\u7684\u6bc0\u640d\uff0c\u4e14\u53ef\u80fd\u5df2\u7d93\u767c\u751f\u3002
+XSDB8.D=\u8b66\u544a\uff1a\u5373\u4f7f Derby\uff08\u5be6\u4f8b {2}\uff09\u4ecd\u53ef\u80fd\u5728\u4f5c\u7528\u4e2d\uff0cDerby\uff08\u5be6\u4f8b {0}\uff09\u4ecd\u7136\u8a66\u5716\u555f\u52d5\u8cc7\u6599\u5eab {1}\u3002\u4e00\u6b21\u53ea\u80fd\u6709\u4e00\u500b Derby \u5be6\u4f8b\u53ef\u4ee5\u555f\u52d5\u4e00\u500b\u8cc7\u6599\u5eab\u3002\u5982\u679c\u540c\u6642\u5728\u76f8\u540c\u7684\u8cc7\u6599\u5eab\u555f\u52d5\u5169\u500b Derby \u5be6\u4f8b\uff0c\u53ef\u80fd\u6703\u9020\u6210\u56b4\u91cd\u4e14\u7121\u6cd5\u56de\u5fa9\u7684\u6bc0\u640d\u3002\u5df2\u8a2d\u5b9a db2j.database.forceDatabaseLock=true \u5167\u5bb9\uff0c\u56e0\u6b64\uff0c\u8cc7\u6599\u5eab\u4e0d\u6703\u555f\u52d5\uff0c\u76f4\u5230\u4e0d\u518d\u6709 db.lck \u70ba\u6b62\u3002\u7576\u8cc7\u6599\u5eab\u555f\u52d5\u7684\u7b2c\u4e00\u500b Derby \u5be6\u4f8b\u7d50\u675f\u6642\uff0c\u901a\u5e38\u6703\u79fb\u9664\u9019\u500b\u6a94\u6848\uff0c\u4f46\u4e5f\u6709\u53ef\u80fd\u56e0\u70ba\u5176\u4ed6\u95dc\u6a5f\u65b9\u5f0f\u800c\u907a\u7559\u4e0b\u4f86\u3002\u5728\u9019\u500b\u60c5\u6cc1\u4e0b\uff0c\u5fc5\u9808\u624b\u52d5\u79fb\u9664\u6a94\u6848\u3002\u8acb\u52d9\u5fc5\u78ba\u8a8d\u6c92\u6709\u5176\u4ed6 VM \u5728\u5b58\u53d6\u8cc7\u6599\u5eab\uff0c\u518d\u624b\u52d5\u522a\u9664 db.lck\u3002
+XSDB9.D=\u4e32\u6d41\u5132\u5b58\u5668 {0} \u5df2\u6bc0\u640d\u3002
+XSDBA.D=\u8a66\u5716\u914d\u7f6e {0} \u7269\u4ef6\u5931\u6557\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# statment errors.
+# sqlstate range: XSDF0 to XSDFZ
+XSDF0.S=\u7121\u6cd5\u5efa\u7acb {0} \u6a94\uff0c\u56e0\u70ba\u5b83\u5df2\u7d93\u5b58\u5728\u3002
+XSDF1.S=\u5728\u5efa\u7acb\u5132\u5b58\u5668\u7684 {0} \u6a94\u671f\u9593\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1
+XSDF2.S=\u5728\u5efa\u7acb\u5132\u5b58\u5668\u6a94\u6848 {0} \u7684\u671f\u9593\u767c\u751f\u7570\u5e38\u72c0\u6cc1\uff0c\u7121\u6cd5\u79fb\u9664\u6a94\u6848\u3002\u7570\u5e38\u72c0\u6cc1\u70ba\uff1a{1}\u3002
+XSDF3.S=\u7121\u6cd5\u5efa\u7acb {0} \u5340\u6bb5\u3002
+XSDF4.S=\u5728\u79fb\u9664\u5df2\u9664\u53bb\u7684\u5132\u5b58\u5668\u7684 {0} \u6a94\u671f\u9593\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1\uff0c\u7121\u6cd5\u79fb\u9664\u6a94\u6848 {1}\u3002
+XSDF6.S=\u627e\u4e0d\u5230\u914d\u7f6e\u9801\u9762 {0}\u3002
+XSDF7.S=\u7121\u6cd5\u9396\u5b9a\u65b0\u5efa\u7acb\u7684\u9801\u9762 {0}
+XSDF8.S=\u627e\u4e0d\u5230\u8981\u91cd\u8907\u4f7f\u7528\u7684 {0} \u9801\u3002
+XSDFB.S=\u552f\u8b80\u8cc7\u6599\u5eab\u4e0d\u652f\u63f4\u4f5c\u696d
+XSDFD.S=\u5728 {0} \u9801\u7684\u5169\u6b21\u8f38\u5165\u8f38\u51fa\u4e2d\uff0c\u8b80\u53d6\u4e86\u4e0d\u540c\u7684\u9801\u9762\u5f71\u50cf\uff0c\u7b2c\u4e00\u500b\u5f71\u50cf\u7684\u7e3d\u548c\u6aa2\u67e5\u4e0d\u6b63\u78ba\uff0c\u7b2c\u4e8c\u500b\u5f71\u50cf\u7684\u7e3d\u548c\u6aa2\u67e5\u6b63\u78ba\u3002\u9801\u9762\u5f71\u50cf\u5982\u4e0b\uff1a{1} {2}
+XSDFF.S=\u767c\u751f\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1\uff0c\u8981\u6c42\u7684\u4f5c\u696d\u5931\u6557\u3002
+
+# java/com/ibm/db2j/impl/Database/Storage/RawStore/Data/FileSystem
+# database errors.
+# sqlstate range: XSDG0 to XSDGZ
+XSDG0.D=\u7121\u6cd5\u5f9e\u78c1\u789f\u8b80\u53d6 {0} \u9801\u3002
+XSDG1.D=\u7121\u6cd5\u5c07 {0} \u9801\u5beb\u5165\u78c1\u789f\u4e2d\uff0c\u8acb\u6aa2\u67e5\u78c1\u789f\u662f\u5426\u5df2\u6eff\u3002
+XSDG2.D={0} \u9801\u7684\u7e3d\u548c\u6aa2\u67e5\u7121\u6548\uff0c\u539f\u9810\u671f={1}\uff0c\u78c1\u789f\u5167\u5b58\u7248\u672c={2}\uff0c\u9801\u9762\u50be\u51fa\u5982\u4e0b\uff1a{3}
+XSDG3.D=\u7121\u6cd5\u5b58\u53d6 {0} \u5132\u5b58\u5668\u7684 Meta \u8cc7\u6599
+XSDG5.D=\u7576\u547c\u53eb createFinished \u6642\uff0c\u8cc7\u6599\u5eab\u4e0d\u5728\u5efa\u7acb\u6a21\u5f0f\u4e2d\u3002
+XSDG6.D=\u9084\u539f\u6642\uff0c\u5728 {0} \u5099\u4efd\u4e2d\u627e\u4e0d\u5230\u8cc7\u6599\u5340\u6bb5\u76ee\u9304\u3002\u8acb\u78ba\u5b9a\u5099\u4efd\u7248\u672c\u662f\u6b63\u78ba\u7684\uff0c\u4e14\u6c92\u6709\u6bc0\u640d\u3002
+XSDG7.D=\u9084\u539f\u6642\uff0c\u7121\u6cd5\u79fb\u9664\u76ee\u9304 {0}\u3002\u8acb\u78ba\u5b9a\u8a31\u53ef\u6b0a\u662f\u6b63\u78ba\u7684\u3002
+XSDG8.D=\u9084\u539f\u6642\uff0c\u7121\u6cd5\u5c07\u76ee\u9304 ''{0}'' \u8907\u88fd\u5230 ''{1}''\u3002\u8acb\u78ba\u5b9a\u6709\u8db3\u5920\u7684\u7a7a\u9593\uff0c\u4e14\u8a31\u53ef\u6b0a\u662f\u6b63\u78ba\u7684\u3002
+
+# language
+01500=\u5df2\u9664\u53bb {1} \u8868\u683c\u4e2d\u7684 {0} \u9650\u5236\u3002
+01501=\u5df2\u9664\u53bb {0} \u6982\u7565\u8868\u3002
+01502=\u5df2\u9664\u53bb {1} \u8868\u683c\u4e2d\u7684 {0} \u89f8\u767c\u3002
+01503=\u5df2\u65b0\u589e\u4e0d\u662f null \u7684\u9650\u5236\u4f86\u4fee\u6539 {1} \u8868\u683c\u4e2d\u7684 {0} \u76f4\u6b04\u3002
+01504=\u65b0\u7d22\u5f15\u662f\u73fe\u6709\u7d22\u5f15 {0} \u7684\u8907\u672c\u3002
+01505={0} \u7684\u503c\u53ef\u80fd\u5df2\u622a\u65b7\u3002
+01003=\u5df2\u6d88\u9664\u76f4\u6b04\u51fd\u6578\u5f15\u6578\u4e2d\u7684 Null \u503c\u3002
+0100E=XX \u5617\u8a66\u50b3\u56de\u592a\u591a\u7d50\u679c\u96c6
+02000=\u627e\u4e0d\u5230 FETCH\u3001UPDATE \u6216 DELETE \u7684\u5217\uff1b\u6216\u662f\u67e5\u8a62\u7684\u7d50\u679c\u662f\u7a7a\u8868\u683c\u3002
+21000=\u7d14\u91cf\u5b50\u67e5\u8a62\u53ea\u80fd\u50b3\u56de\u55ae\u5217\u3002
+22001=\u8a66\u5716\u5c07 {0} ''{1}'' \u7e2e\u6e1b\u6210\u9577\u5ea6\u70ba {2} \u6642\uff0c\u767c\u73fe\u622a\u65b7\u932f\u8aa4\u3002
+54006={0} \u4f5c\u696d\u6240\u7522\u751f\u7684\u9577\u5ea6\u5927\u65bc {1}\u3002
+22003=\u7522\u751f\u7684\u503c\u8d85\u51fa\u8cc7\u6599\u985e\u578b {0} \u7684\u7bc4\u570d\u3002
+22005=\u8a66\u5716\u5f9e ''{1}'' \u985e\u578b\u7684\u8cc7\u6599\u503c\u4e2d\uff0c\u53d6\u5f97 ''{0}'' \u985e\u578b\u7684\u8cc7\u6599\u503c\u3002
+22007.S.180=\u65e5\u671f\u6642\u9593\u503c\u7684\u5b57\u4e32\u8868\u793a\u6cd5\u8d85\u51fa\u7bc4\u570d\u3002
+22007.S.181=\u65e5\u671f\u6642\u9593\u503c\u4e4b\u5b57\u4e32\u8868\u793a\u6cd5\u7684\u8a9e\u6cd5\u4e0d\u6b63\u78ba\u3002
+22011=SUBSTR \u51fd\u6578\u7684\u7b2c\u4e8c\u500b\u6216\u7b2c\u4e09\u500b\u5f15\u6578\u8d85\u51fa\u7bc4\u570d\u3002
+22012=\u8a66\u5716\u9664\u4ee5\u96f6\u3002
+22013=\u8a66\u5716\u53d6\u5f97\u8ca0\u6578 ''{0}'' \u7684\u5e73\u65b9\u6839\u3002
+22014=LOCATE \u7684\u8d77\u59cb\u4f4d\u7f6e\u7121\u6548\uff1b\u5b83\u5fc5\u9808\u662f\u6b63\u6574\u6578\u3002\u641c\u5c0b\u7684\u8d77\u59cb\u7d22\u5f15\u662f ''{2}''\u3002\u8981\u641c\u5c0b\u7684\u5b57\u4e32\u662f ''{0}''\u3002\u8981\u5f9e\u4e2d\u9032\u884c\u641c\u5c0b\u7684\u5b57\u4e32\u662f ''{1}''\u3002
+
+22015=\u5728\u4e0b\u9762\u9019\u7d44\u985e\u578b\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}'' \u51fd\u6578\u3002\u7b2c\u4e00\u500b\u904b\u7b97\u5143\u662f ''{1}'' \u985e\u578b\u3002\u7b2c\u4e8c\u500b\u904b\u7b97\u5143\u662f ''{2}'' \u985e\u578b\u3002\u7b2c\u4e09\u500b\u904b\u7b97\u5143\uff08\u8d77\u59cb\u4f4d\u7f6e\uff09\u662f ''{3}'' \u985e\u578b\u3002
+22018=\u985e\u578b {0} \u7684\u5b57\u5143\u5b57\u4e32\u683c\u5f0f\u7121\u6548\u3002
+22019=\u7121\u6548\u7684 ESC \u5e8f\u5217 ''{0}''\u3002\u8df3\u51fa\u5b57\u4e32\u5fc5\u9808\u53ea\u6709\u4e00\u500b\u5b57\u5143\u3002\u5b83\u4e0d\u80fd\u662f null \u6216 1 \u500b\u4ee5\u4e0a\u7684\u5b57\u5143\u3002
+22025=\u8df3\u96e2\u5b57\u5143\u5f8c\u9762\u5fc5\u9808\u63a5\u8457 '_' \u6216 '%' \u8df3\u96e2\u5b57\u5143\u3002\u5b83\u5f8c\u9762\u4e0d\u80fd\u662f\u4efb\u4f55\u5176\u4ed6\u5b57\u5143\uff0c\u4e5f\u4e0d\u80fd\u5728\u578b\u6a23\u7684\u5c3e\u7aef\u3002
+22027=\u5167\u5efa TRIM() \u51fd\u6578\u53ea\u652f\u63f4\u55ae\u4e00\u4fee\u526a\u5b57\u5143\u3002LTRIM() \u548c RTRIM() \u5167\u5efa\u51fd\u6578\u652f\u63f4\u591a\u91cd\u4fee\u526a\u5b57\u5143\u3002
+22500=LIKE \u578b\u6a23\u548c ESCAPE \u5b50\u53e5\u4e0d\u80fd\u540c\u6642\u4f7f\u7528 ? \u53c3\u6578\u3002
+22501=NULL \u7684 ESCAPE \u5b50\u53e5\u6703\u50b3\u56de\u672a\u5b9a\u7fa9\u7684\u7d50\u679c\uff0c\u9019\u662f\u4e0d\u5141\u8a31\u7684\u3002
+23502=''{0}'' \u76f4\u6b04\u7121\u6cd5\u63a5\u53d7 NULL \u503c\u3002
+23505=\u9673\u8ff0\u5f0f\u5df2\u4e2d\u6b62\uff0c\u56e0\u70ba\u5b83\u5728\u5b9a\u7fa9\u65bc ''{1}'' \u7684 ''{0}'' \u6240\u8b58\u5225\u7684\u552f\u4e00\u6216\u4e3b\u8981\u7d22\u5f15\u9375\u9650\u5236\u6216\u552f\u4e00\u7684\u7d22\u5f15\u4e2d\uff0c\u9020\u6210\u91cd\u8907\u7684\u7d22\u5f15\u9375\u503c\u3002
+23503=''{1}'' \u8868\u683c\u4e2d\u7684 {2} \u6703\u9020\u6210 {3} \u7d22\u5f15\u9375\u7684\u5916\u90e8\u7d22\u5f15\u9375\u9650\u5236 ''{0}'' \u9055\u898f\u3002\u9673\u8ff0\u5f0f\u5df2\u56de\u5fa9\u3002
+23513=\u57f7\u884c ''{0}'' \u8868\u683c\u7684 INSERT \u6216 UPDATE \u6642\uff0c\u9055\u53cd\u6aa2\u67e5\u9650\u5236 ''{1}''\u3002
+38000=\u5728\u6c42\u503c\u8868\u793a\u5f0f\u6642\uff0c\u64f2\u51fa ''{0}'' \u7570\u5e38\u72c0\u6cc1\u3002
+38001=\u5916\u90e8\u5e38\u5f0f\u4e0d\u80fd\u57f7\u884c SQL \u9673\u8ff0\u5f0f\u3002
+38002=\u5e38\u5f0f\u8a66\u5716\u4fee\u6539\u8cc7\u6599\uff0c\u4f46\u8a72\u5e38\u5f0f\u4e26\u6c92\u6709\u5b9a\u7fa9\u6210 MODIFIES SQL DATA\u3002
+38004=\u5e38\u5f0f\u8a66\u5716\u8b80\u53d6\u8cc7\u6599\uff0c\u4f46\u8a72\u5e38\u5f0f\u4e26\u6c92\u6709\u5b9a\u7fa9\u6210 READS SQL DATA\u3002
+39004=\u4e0d\u80fd\u5c07 NULL \u503c\u50b3\u7d66\u6240\u7528\u53c3\u6578\u70ba\u521d\u59cb\u985e\u5225 ''{0}'' \u7684\u65b9\u6cd5\u3002
+40XC0=\u9673\u8ff0\u5f0f\u505c\u64fa\u3002\u539f\u56e0\u53ef\u80fd\u662f\u5728\u9019\u500b\u9673\u8ff0\u5f0f\u5167\u6355\u6349\u5230\u4ea4\u6613\u56b4\u91cd\u932f\u8aa4\u3002
+# this error is retired in 1.3
+42000=\u8a9e\u6cd5\u932f\u8aa4\u6216\u5b58\u53d6\u898f\u5247\u9055\u898f\uff1b\u8acb\u53c3\u95b1\u5176\u4ed6\u932f\u8aa4\uff0c\u4ee5\u53d6\u5f97\u8a73\u7d30\u8cc7\u6599\u3002
+
+# DB2 error for max length violation by char, varchar and long varchar. In future, this error message will be used for other purposes too
+42601=\u5728 ALTER TABLE \u9673\u8ff0\u5f0f\u4e2d\uff0c\u76f4\u6b04 ''{0}'' \u88ab\u6307\u5b9a\u70ba NOT NULL\uff0c\u4e14 DEFAULT \u5b50\u53e5\u672a\u88ab\u6307\u5b9a\u70ba\u6216\u88ab\u6307\u5b9a\u70ba DEFAULT NULL\u3002
+42601.S.372=ALTER TABLE \u9673\u8ff0\u5f0f\u7121\u6cd5\u5c07 IDENTITY \u76f4\u6b04\u65b0\u589e\u81f3\u8868\u683c\u3002
+42606=\u5075\u6e2c\u5230\u5176\u958b\u982d\u70ba ''{0}'' \u7684\u7121\u6548\u5341\u516d\u9032\u4f4d\u5e38\u6578\u3002
+54002=\u958b\u982d\u70ba ''{0}'' \u7684\u5b57\u4e32\u5e38\u6578\u592a\u9577\u3002
+42611=\u76f4\u6b04\u7684\u9577\u5ea6\u3001\u7cbe\u6e96\u5ea6\u6216\u7b49\u7d1a\u5c6c\u6027\uff0c\u6216\u985e\u578b\u5c0d\u6620 ''{0}'' \u7121\u6548\u3002
+
+42605=\u51fd\u6578 ''{0}'' \u7684\u5f15\u6578\u6578\u76ee\u4e0d\u6b63\u78ba\u3002
+42610=COALESC/VALUE \u51fd\u6578\u7684\u6240\u6709\u5f15\u6578\u4e0d\u53ef\u70ba\u53c3\u6578\u3002\u81f3\u5c11\u5fc5\u9808\u6709\u4e00\u500b\u975e\u53c3\u6578\u7684\u5f15\u6578\u3002
+
+42613=\u6709\u591a\u91cd\u6216\u885d\u7a81\u7684\u95dc\u9375\u5b57\u727d\u6d89\u5230 ''{0}'' \u5b50\u53e5\u3002
+42621=\u5b9a\u7fa9\u70ba ''{0}'' \u7684\u6aa2\u67e5\u9650\u5236\u6216\u7522\u751f\u7684\u76f4\u6b04\u7121\u6548\u3002
+42734=\u6307\u5b9a\u5728\u74b0\u5883\u5b9a\u7fa9 ''{1}'' \u4e2d\u7684 ''{0}'' \u4e26\u975e\u552f\u4e00\u540d\u7a31\u3002
+# DB2 error for invalid set schema
+42802=\u6307\u6d3e\u7684\u503c\u6578\u76ee\u8207\u6307\u5b9a\u7684\u6216\u96b1\u542b\u7684\u76f4\u6b04\u6578\u4e0d\u76f8\u540c\u3002
+42815.S.713=''{0}'' \u7684\u7f6e\u63db\u503c\u7121\u6548\u3002
+42815.S.171=\u5f15\u6578 ''{0}'' \u548c ''{1}'' \u7684\u8cc7\u6599\u985e\u578b\u3001\u9577\u5ea6\u6216\u503c\u4e0d\u76f8\u5bb9\u3002
+42820=\u6d6e\u9ede\u6587\u5b57 ''{0}'' \u5305\u542b 30 \u500b\u4ee5\u4e0a\u7684\u5b57\u5143\u3002
+42824=LIKE \u7684\u904b\u7b97\u5143\u4e0d\u662f\u5b57\u4e32\uff0c\u6216\u8005\u7b2c\u4e00\u500b\u904b\u7b97\u5143\u4e0d\u662f\u76f4\u6b04\u3002
+42831=''{0}'' \u4e0d\u53ef\u70ba\u4e3b\u9375\u6216\u552f\u4e00\u9375\u7684\u76f4\u6b04\uff0c\u56e0\u70ba\u5b83\u4e0d\u53ef\u5305\u542b\u7a7a\u503c\u3002
+42834=\u4e0d\u80fd\u6307\u5b9a SET NULL\uff0c\u539f\u56e0\u662f\u5916\u90e8\u7d22\u5f15\u9375 ''{0}'' \u4e0d\u80fd\u5305\u542b null \u503c\u3002
+
+42884=\u627e\u4e0d\u5230\u5177\u6709\u76f8\u5bb9\u5f15\u6578\u4e4b ''{1}'' \u985e\u578b\u7684\u6388\u6b0a\u5e38\u5f0f ''{0}''\u3002
+42886=''{0}'' \u53c3\u6578 ''{1}'' \u9700\u8981\u53c3\u6578\u8a18\u865f ''?''\u3002
+42894=DEFAULT \u503c\u6216 IDENTITY \u5c6c\u6027\u503c\u5c0d\u76f4\u6b04 ''{0}'' \u7121\u6548\u3002
+428C1=\u4e00\u500b\u8868\u683c\u4e2d\u50c5\u5141\u8a31\u4e00\u500b\u8eab\u5206\u76f4\u6b04\u3002
+42903=\u805a\u96c6\u51fd\u6578\u7684\u7528\u6cd5\u7121\u6548\u3002
+42908=CREATE VIEW \u9673\u8ff0\u5f0f\u4e0d\u5305\u62ec\u76f4\u6b04\u6e05\u55ae\u3002
+42915=\u5916\u90e8\u7d22\u5f15\u9375 ''{0}'' \u7121\u6548\uff0c\u56e0\u70ba ''{1}''\u3002
+42972=\u8207 JOIN \u904b\u7b97\u5b50\u76f8\u95dc\u806f\u7684 ON \u5b50\u53e5\u7121\u6548\u3002
+42X01=\u8a9e\u6cd5\u932f\u8aa4\uff1a{0}\u3002
+42X02={0}\u3002
+42X03=\u76f4\u6b04\u540d\u7a31 ''{0}'' \u5728 FROM \u6e05\u55ae\u5167\u7684\u591a\u4efd\u8868\u683c\u4e2d\u3002
+42X04=''{0}'' \u76f4\u6b04\u4e0d\u5728 FROM \u6e05\u55ae\u5167\u7684\u4efb\u4f55\u8868\u683c\u4e2d\uff0c\u6216\u5b83\u51fa\u73fe\u5728\u5408\u4f75\u898f\u683c\u5167\u4e14\u5728\u5408\u4f75\u898f\u683c\u7684\u7bc4\u570d\u4e4b\u5916\uff0c\u6216\u5b83\u51fa\u73fe\u5728 HAVING \u5b50\u53e5\u4e2d\uff0c\u4e14\u4e0d\u5728 GROUP BY \u6e05\u55ae\u5167\u3002\u5982\u679c\u9019\u662f CREATE \u6216 ALTER TABLE \u9673\u8ff0\u5f0f\uff0c''{0}'' \u5c31\u4e0d\u662f\u76ee\u6a19\u8868\u683c\u4e2d\u7684\u76f4\u6b04\u3002
+42X05=''{0}'' \u8868\u683c\u4e0d\u5b58\u5728\u3002
+42X06=\u6307\u5b9a\u592a\u591a\u7d50\u679c\u76f4\u6b04\u7d66 ''{0}'' \u8868\u683c\u3002
+42X07=\u53ea\u6709 INSERT \u9673\u8ff0\u5f0f\u5167\u7684 VALUE \u5b50\u53e5\u53ef\u4ee5\u4f7f\u7528 null\u3002
+42X08=''{0}'' \u985e\u5225\u7684\u5efa\u69cb\u5b50\u7121\u6cd5\u7528\u4f86\u4f5c\u70ba\u5916\u90e8\u865b\u64ec\u8868\u683c\uff0c\u56e0\u70ba\u985e\u5225\u4e0d\u5be6\u4f5c ''{1}''
+42X09=\u5728 FROM \u6e05\u55ae\u4e2d\u91cd\u8907\u4f7f\u7528\u8868\u683c\u6216\u5225\u540d ''{0}''\u3002
+42X10=''{0}'' \u4e0d\u662f\u5b83\u51fa\u73fe\u5176\u4e2d\u7684\u7bc4\u570d\u6240\u986f\u9732\u7684\u8868\u683c\u540d\u7a31\u3002
+42622=\u540d\u7a31 ''{0}'' \u592a\u9577\u3002\u9577\u5ea6\u4e0a\u9650\u70ba ''{1}''\u3002
+42X12=\u5728 CREATE TABLE \u9673\u8ff0\u5f0f\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u4e0d\u53ea\u4e00\u6b21\u3002
+54011=\u5c0d\u8868\u683c\u6216\u6982\u7565\u8868 {1} \u6307\u5b9a\u4e86\u904e\u591a\u7684\u76f4\u6b04 ({0})\u3002\u9650\u5236\u70ba {2}\u3002
+42Z9F=\u8868\u683c {1} \u4e0a\u7684\u7d22\u5f15 ({0}) \u592a\u591a\u3002\u9650\u5236\u70ba {2}\u3002
+42X13=\u5728 INSERT \u9673\u8ff0\u5f0f\u7684\u76f4\u6b04\u6e05\u55ae\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u4e0d\u53ea\u4e00\u6b21\u3002
+42X14=''{0}'' \u4e0d\u662f\u8868\u683c\u6216 VTI ''{1}'' \u4e2d\u7684\u76f4\u6b04\u3002
+42X15=\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u5728\u4e0d\u542b FROM \u6e05\u55ae\u7684\u9673\u8ff0\u5f0f\u4e2d\u3002
+42X16=\u5728 UPDATE \u9673\u8ff0\u5f0f\u7684 SET \u5b50\u53e5\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u8a31\u591a\u6b21\u3002
+42X17=''{0}'' \u503c\u4f5c\u70ba FROM \u5b50\u53e5\u5167\u5bb9\u6e05\u55ae\u4e2d\u7684 joinOrder \u898f\u683c\u7121\u6548\u3002\u53ea\u6709 FIXED \u548c UNFIXED \u503c\u6709\u6548\u3002
+42803=\u5305\u542b\u76f4\u6b04 ''{0}'' \u7684\u8868\u793a\u5f0f\u51fa\u73fe\u5728 SELECT \u6e05\u55ae\u4e2d\uff0c\u4e14\u4e0d\u662f GROUP BY \u5b50\u53e5\u7684\u4e00\u90e8\u5206\u3002
+42818=\u4e0d\u652f\u63f4\u6bd4\u8f03 ''{0}'' \u548c ''{1}''\u3002
+42X19=WHERE \u6216 HAVING \u5b50\u53e5\u6216 CHECK CONSTRAINT \u5b9a\u7fa9\u662f\u4e00\u500b ''{0}'' \u8868\u793a\u5f0f\u3002\u5b83\u5fc5\u9808\u662f BOOLEAN \u8868\u793a\u5f0f\u3002
+42X23={0} \u6e38\u6a19\u662f\u4e0d\u53ef\u66f4\u65b0\u7684\u3002
+#42X24=The unary ''-'' operator is not allowed on the ''{0}'' type.
+42X25=\u5728 ''{1}'' \u985e\u578b\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}'' \u51fd\u6578\u3002
+42X26=''{1}'' \u76f4\u6b04\u7684 ''{0} \u985e\u5225\u4e0d\u5b58\u5728\u6216\u7121\u6cd5\u5b58\u53d6\u3002\u5982\u679c\u985e\u5225\u4e0d\u662f public\uff0c\u5c31\u53ef\u80fd\u767c\u751f\u9019\u500b\u60c5\u6cc1\u3002
+42X28=\u522a\u9664\u8868\u683c ''{0}'' \u4e0d\u662f ''{1}'' \u6e38\u6a19\u7684\u76ee\u6a19\u3002
+42X29=\u66f4\u65b0\u8868\u683c ''{0}'' \u4e0d\u662f ''{1}'' \u6e38\u6a19\u7684\u76ee\u6a19\u3002
+42X30=\u627e\u4e0d\u5230 ''{0}'' \u6e38\u6a19\u3002\u8acb\u78ba\u8a8d\u81ea\u52d5\u78ba\u5b9a\u662f OFF\u3002
+42X31=''{0}'' \u76f4\u6b04\u4e0d\u5728 ''{1}'' \u6e38\u6a19\u7684 FOR UPDATE \u6e05\u55ae\u4e2d\u3002
+42X32=\u884d\u751f\u7684\u76f4\u6b04\u6e05\u55ae\u4e2d\u7684\u76f4\u6b04\u6578\u5fc5\u9808\u7b26\u5408 ''{0}''\u8868\u683c\u4e2d\u7684\u76f4\u6b04\u6578\u3002
+42X33=\u884d\u751f\u7684\u76f4\u6b04\u6e05\u55ae\u542b\u6709\u91cd\u8907\u7684\u76f4\u6b04\u540d\u7a31 ''{0}''\u3002
+42X34=SELECT \u6e05\u55ae\u4e2d\u6709 ? \u53c3\u6578\u3002\u9019\u662f\u4e0d\u5141\u8a31\u7684\u3002
+42X35=''{0}'' \u7684\u5169\u500b\u904b\u7b97\u5143\u4e0d\u80fd\u540c\u6642\u70ba ? \u53c3\u6578\u3002
+42X36=''{0}'' \u904b\u7b97\u5b50\u4e0d\u80fd\u4ee5 ? \u53c3\u6578\u70ba\u904b\u7b97\u5143\u3002
+42X37=\u5728 ''{1}'' \u985e\u578b\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528\u55ae\u5143\u904b\u7b97\u5b50 ''{0}''\u3002
+42X38=''SELECT *'' \u53ea\u80fd\u5728 EXISTS \u548c NOT EXISTS \u5b50\u67e5\u8a62\u4e2d\u4f7f\u7528\u3002
+42X39=\u5b50\u67e5\u8a62\u53ea\u80fd\u50b3\u56de\u55ae\u4e00\u76f4\u6b04\u3002
+42X40=NOT \u6709\u4e0d\u662f Boolean \u7684\u904b\u7b97\u5143\u3002NOT \u7684\u904b\u7b97\u5143\u5fc5\u9808\u5f97\u51fa TRUE\u3001FALSE \u6216 UNKNOWN\u3002
+42X41=\u5728 FROM \u6e05\u55ae\u7684 Properties \u5b50\u53e5\u4e2d\uff0c''{0}'' \u5167\u5bb9\u7121\u6548\uff08\u5167\u5bb9\u8a2d\u70ba ''{1}''\uff09\u3002
+42821=''{0}'' \u985e\u578b\u7684\u76f4\u6b04\u7121\u6cd5\u4fdd\u7559 ''{1}'' \u985e\u578b\u7684\u503c\u3002
+42X43=\u50b3\u56de\u7684 ''{0}'' \u985e\u5225/\u7269\u4ef6\u4e4b ResultSetMetaData \u662f null\u3002ResultSetMetaData \u5fc5\u9808\u4e0d\u662f null\uff0c\u624d\u80fd\u5c07\u9019\u500b\u985e\u5225\u7576\u4f5c\u5916\u90e8\u865b\u64ec\u8868\u683c\u4f86\u4f7f\u7528\u3002
+42X44=\u76f4\u6b04\u898f\u683c\u4e2d\u7684\u9577\u5ea6 ''{0}'' \u7121\u6548\u3002
+# 42X45=
+# 42X46=
+# 42X47=
+42X48=''{1}'' \u503c\u4e0d\u662f {0} \u7684\u6709\u6548\u7cbe\u78ba\u5ea6\u3002
+42X49=''{0}'' \u503c\u4e0d\u662f\u6709\u6548\u7684\u6574\u6578\u6587\u5b57\u3002
+42X50=\u627e\u4e0d\u5230\u4efb\u4f55\u65b9\u6cd5\u80fd\u5920\u7b26\u5408\u65b9\u6cd5\u547c\u53eb {0}.{1}({2})\uff0c\u5373\u4f7f\u7269\u4ef6\u548c\u521d\u59cb\u985e\u578b\u53ca\u65b9\u6cd5\u547c\u53eb\u6240\u53ef\u80fd\u6709\u7684\u4efb\u4f55\u53c3\u6578\u4e4b\u4efb\u4f55\u53ef\u80fd\u7684\u985e\u578b\u8f49\u63db\uff0c\u5176\u6240\u6709\u7d44\u5408\u90fd\u8a66\u904e\u4e5f\u662f\u5982\u6b64\u3002\u53ef\u80fd\u662f\u65b9\u6cd5\u5b58\u5728\uff0c\u4f46\u5b83\u4e0d\u662f public \u548c/\u6216 static \u65b9\u6cd5\uff0c\u6216\u53c3\u6578\u985e\u578b\u7121\u6cd5\u9032\u884c\u53c3\u6578\u547c\u53eb\u8f49\u63db\u3002
+42X51=''{0}'' \u985e\u5225\u4e0d\u5b58\u5728\uff0c\u6216\u7121\u6cd5\u5b58\u53d6\u3002\u5982\u679c\u985e\u5225\u4e0d\u662f public\uff0c\u5c31\u53ef\u80fd\u767c\u751f\u9019\u500b\u60c5\u6cc1\u3002
+42X52=\u4e0d\u5141\u8a31\u5229\u7528 Java \u521d\u59cb\u985e\u578b ''{1}" \u7684\u63a5\u6536\u8005\u4f86\u547c\u53eb\u65b9\u6cd5 (''{0}'')\u3002
+42X53=LIKE \u8ff0\u8a5e\u53ea\u80fd\u6709 ''CHAR'' \u6216 ''VARCHAR'' \u904b\u7b97\u5143\u3002\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}'' \u985e\u578b\u3002
+42X54=Java \u65b9\u6cd5 ''{0}'' \u4ee5 ? \u70ba\u63a5\u6536\u8005\u3002\u9019\u662f\u4e0d\u5141\u8a31\u7684\u3002
+42X55=\u8868\u683c\u540d\u7a31 ''{1}'' \u61c9\u8a72\u8207 ''{0}'' \u76f8\u540c\u3002
+42X56=\u6982\u7565\u8868\u76f4\u6b04\u6e05\u55ae\u4e2d\u7684\u76f4\u6b04\u6578\u4e0d\u7b26\u5408 ''{0}''\u7684\u6982\u7565\u8868\u5b9a\u7fa9\u4e2d\u4e4b\u57fa\u790e\u67e5\u8a62\u8868\u793a\u5f0f\u7684\u76f4\u6b04\u6578\u3002
+42X57=\u5916\u90e8\u865b\u64ec\u8868\u683c ''{0}'' \u7684 getColumnCount() \u50b3\u56de\u7121\u6548\u7684\u503c ''{1}''\u3002\u6709\u6548\u503c >= 1\u3002
+42X58=UNION \u5de6\u53f3\u5074\u7684\u76f4\u6b04\u6578\u5fc5\u9808\u76f8\u540c\u3002
+42X59=\u6bcf\u500b VALUES \u5efa\u69cb\u5b50\u4e2d\u7684\u76f4\u6b04\u6578\u90fd\u5fc5\u9808\u76f8\u540c\u3002
+42X60=\u5c07 insertMode \u5167\u5bb9\u7684\u7121\u6548\u503c ''{0}'' \u6307\u5b9a\u7d66 ''{1}'' \u8868\u683c\u3002
+42X61=''{0}'' \u548c ''{1}'' \u985e\u578b\u8207 UNION \u4e0d\u76f8\u5bb9\u3002
+42X62=\u5728 ''{1}'' \u7db1\u76ee\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}''\u3002
+42X63=USING \u5b50\u53e5\u6c92\u6709\u50b3\u56de\u4efb\u4f55\u7d50\u679c\uff0c\u4e0d\u80fd\u8a2d\u5b9a\u4efb\u4f55\u53c3\u6578\u3002
+42X64=\u5c07\u7121\u6548\u7684\u503c ''{0}'' \u6307\u5b9a\u7d66\u5167\u5bb9\u6e05\u55ae\u4e2d\u7684 useStatistics \u5167\u5bb9\u3002\u6709\u6548\u503c\u53ea\u6709 TRUE \u6216 FALSE\u3002
+42X65=''{0}'' \u7d22\u5f15\u4e0d\u5b58\u5728\u3002
+42X66=\u5728 CREATE INDEX \u9673\u8ff0\u5f0f\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u4e0d\u53ea\u4e00\u6b21\u3002
+42X68=\u627e\u4e0d\u5230\u5c6c\u65bc ''{1}'' \u985e\u5225\u7684 ''{0}'' \u6b04\u4f4d\u3002\u53ef\u80fd\u662f\u6b04\u4f4d\u5b58\u5728\uff0c\u4f46\u5b83\u4e0d\u662f public\uff0c\u6216\u985e\u5225\u4e0d\u5b58\u5728\u6216\u4e0d\u662f public\u3002
+42X69=\u4e0d\u5141\u8a31\u5229\u7528 Java \u521d\u59cb\u985e\u578b ''{1}'' \u7684\u53c3\u7167\u8868\u793a\u5f0f\u4f86\u53c3\u7167\u6b04\u4f4d (''{0}'')\u3002
+42X72=\u627e\u4e0d\u5230\u5c6c\u65bc ''{1}'' \u985e\u5225\u7684 static \u6b04\u4f4d ''{0}''\u3002\u53ef\u80fd\u662f\u6b04\u4f4d\u5b58\u5728\uff0c\u4f46\u5b83\u4e0d\u662f public \u548c/\u6216 static\uff0c\u6216\u985e\u5225\u4e0d\u5b58\u5728\u6216\u4e0d\u662f public\u3002
+42X73=\u7c3d\u7ae0\u70ba {0}.{1}({2}) \u7684\u65b9\u6cd5\u89e3\u6790\u8a9e\u610f\u4e0d\u660e\u3002\uff08\u6c92\u6709\u55ae\u4e00\u6700\u5927\u7279\u5b9a\u65b9\u6cd5\u3002\uff09
+42X74=CALL \u9673\u8ff0\u5f0f\u8a9e\u6cd5\u7121\u6548\u3002
+42X75=\u627e\u4e0d\u5230\u542b {0}({1}) \u9019\u500b\u7c3d\u7ae0\u7684\u4efb\u4f55\u5efa\u69cb\u5b50\u3002\u53ef\u80fd\u662f\u53c3\u6578\u985e\u578b\u7121\u6cd5\u9032\u884c\u65b9\u6cd5\u547c\u53eb\u8f49\u63db\u3002
+42X76=\u65b0\u589e\u7684\u4e3b\u8981\u7d22\u5f15\u9375\u4e2d\uff0c\u81f3\u5c11\u6709\u4e00\u500b\u76f4\u6b04 ''{0}'' \u53ef\u4ee5\u662f null\u3002\u4e3b\u8981\u7d22\u5f15\u9375\u4e2d\u7684\u6240\u6709\u76f4\u6b04\uff0c\u90fd\u4e0d\u53ef\u4ee5\u662f null\u3002
+42X77=\u76f4\u6b04\u4f4d\u7f6e ''{0}'' \u8d85\u51fa\u67e5\u8a62\u8868\u793a\u5f0f\u7684\u7bc4\u570d\u3002
+42X78=''{0}'' \u76f4\u6b04\u4e0d\u5728\u67e5\u8a62\u8868\u793a\u5f0f\u7684\u7d50\u679c\u4e2d\u3002
+42X79=\u5728\u67e5\u8a62\u8868\u793a\u5f0f\u7684\u7d50\u679c\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u91cd\u8907\u51fa\u73fe\u3002
+42877=ORDER BY \u5b50\u53e5\u4e2d\u4e0d\u5bb9\u8a31\u6709\u5b8c\u6574\u7684\u76f4\u6b04\u540d\u7a31 ''{0}''\u3002
+42X80=VALUES \u5b50\u53e5\u5fc5\u9808\u5305\u542b\u81f3\u5c11\u4e00\u500b\u5143\u7d20\uff0c\u4e14\u6240\u6709\u5143\u7d20\u90fd\u4e0d\u80fd\u7a7a\u767d\u3002
+42X82=USING \u5b50\u53e5\u50b3\u56de\u4e0d\u53ea\u4e00\u5217\uff0c\u4f46\u53ea\u5141\u8a31\u6709\u55ae\u5217\u7684 ResultSet\u3002
+42X83=''{0}'' \u76f4\u6b04\u7684\u9650\u5236\u8981\u6c42\u5b83\u5fc5\u9808\u53ef\u70ba null\uff0c\u53c8\u4e0d\u53ef\u70ba null\u3002
+42X84=\u5df2\u5efa\u7acb ''{0}'' \u7d22\u5f15\u4f86\u5f37\u5236\u57f7\u884c ''{1}'' \u9650\u5236\u3002\u53ea\u80fd\u85c9\u7531\u9664\u53bb\u9650\u5236\u4f86\u9664\u53bb\u5b83\u3002
+42X85=\u9650\u5236 ''{0}'' \u5fc5\u9808\u5728\u8207\u8868\u683c ''{1}'' \u76f8\u540c\u7684\u7db1\u76ee\u4e2d\u3002
+42X86=ALTER \u8868\u683c\u5931\u6557\u3002''{1}'' \u8868\u683c\u4e2d\u6c92\u6709 ''{0}'' \u9650\u5236\u3002
+42X87=''{0}'' \u8868\u793a\u5f0f\u7684\u81f3\u5c11\u4e00\u500b\u7d50\u679c\u8868\u793a\u5f0f\uff08THEN \u6216 ELSE\uff09\u4e0d\u80fd\u662f ''?''\u3002
+42X88=\u689d\u4ef6\u5f0f\u8868\u793a\u5f0f\u6709\u4e0d\u662f Boolean \u7684\u904b\u7b97\u5143\u3002\u689d\u4ef6\u5f0f\u8868\u793a\u5f0f\u7684\u904b\u7b97\u5143\u5fc5\u9808\u5f97\u51fa TRUE\u3001FALSE \u6216 UNKNOWN\u3002
+42X89=''{0}'' \u548c ''{1}'' \u4e0d\u662f\u76f8\u5bb9\u7684\u985e\u578b\u3002\uff08\u4efb\u4f55\u4e00\u500b\u985e\u578b\u90fd\u7121\u6cd5\u6307\u6d3e\u7d66\u5176\u4ed6\u985e\u578b\u3002\uff09
+42X90=\u5c07\u4e0d\u53ea\u4e00\u500b\u4e3b\u8981\u7d22\u5f15\u9375\u9650\u5236\u6307\u5b9a\u7d66 ''{0}'' \u8868\u683c\u3002
+42X91=\u5728 CREATE TABLE \u9673\u8ff0\u5f0f\u4e2d\uff0c\u9650\u5236\u540d\u7a31 ''{0}'' \u51fa\u73fe\u4e0d\u53ea\u4e00\u6b21\u3002
+42X92=\u5728\u9650\u5236\u7684\u76f4\u6b04\u6e05\u55ae\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u4e0d\u53ea\u4e00\u6b21\u3002
+42X93=''{0}'' \u8868\u683c\u5305\u542b\u5177\u6709 ''{1}'' \u76f4\u6b04\u7684\u9650\u5236\u5b9a\u7fa9\uff0c\u4f46\u9019\u500b\u76f4\u6b04\u4e0d\u5728\u9019\u500b\u8868\u683c\u4e2d\u3002
+42Z93=''{0}'' \u548c ''{1}'' \u9650\u5236\u6709\u540c\u4e00\u7d44\u76f4\u6b04\uff0c\u4f46\u9019\u662f\u4e0d\u5141\u8a31\u7684\u3002
+42Z96=\u5728 JDK 1.1/JDBC 1.2 \u74b0\u5883\u4e2d\uff0c\u4e0d\u652f\u63f4\u8b80\u5beb VTI\uff1a''{0}''
+42Z9B=\u5916\u90e8\u865b\u64ec\u8868\u683c\u4ecb\u9762\u4e0d\u652f\u63f4 blob \u6216 clob \u76f4\u6b04\u3002''{0}'' \u76f4\u6b04 ''{1}''\u3002
+42Z9D=\u5728 ''{1}'' \u89f8\u767c\u7a0b\u5f0f\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}'' \u9673\u8ff0\u5f0f\u3002
+42Z9E=\u9650\u5236 ''{0}'' \u4e0d\u662f {1} \u9650\u5236\u3002
+42X94={0} ''{1}'' \u4e0d\u5b58\u5728\u3002
+42X96=\u8cc7\u6599\u5eab\u985e\u5225\u8def\u5f91\u5305\u542b\u4e0d\u660e\u7684 Jar \u6a94 ''{0}''\u3002
+42X98=\u5728 VIEW \u5b9a\u7fa9\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528\u53c3\u6578\u3002
+42Y00=''{0}'' \u985e\u5225\u4e26\u672a\u5be6\u4f5c org.apache.derby.iapi.db.AggregateDefinition\uff0c\u56e0\u6b64\u4e0d\u80fd\u4f5c\u70ba\u805a\u96c6\u8868\u793a\u5f0f\u3002
+42Y01=''{0}'' \u9650\u5236\u7121\u6548\u3002
+42Y03=\u6c92\u6709\u5c07 ''{0}'' \u8fa8\u8b58\u70ba\u51fd\u6578\u6216\u7a0b\u5e8f\u3002
+
+# EXTERNAL NAME is SQL keyword - do not translate
+42Y04=\u7121\u6cd5\u5efa\u7acb\u5177\u6709 EXTERNAL NAME ''{0}'' \u7684\u7a0b\u5e8f\u6216\u51fd\u6578\uff0c\u56e0\u70ba\u5b83\u4e0d\u662f\u7528\u9ede\u5206\u9694\u7684\u6e05\u55ae\u3002\u539f\u9810\u671f\u7684\u683c\u5f0f\u662f <\u5b8c\u6574 Java \u8def\u5f91>.<\u65b9\u6cd5\u540d\u7a31>\u3002
+
+42Y05=\u6c92\u6709\u540d\u7a31\u70ba ''{0}'' \u7684\u5916\u90e8\u7d22\u5f15\u9375\u3002
+42Y07=''{0}'' \u7db1\u76ee\u4e0d\u5b58\u5728
+42Y08=\u5728\u7cfb\u7d71\u8868\u683c\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528\u5916\u90e8\u7d22\u5f15\u9375\u9650\u5236\u3002
+42Y09=\u53ea\u6709\u5728 CALL \u9673\u8ff0\u5f0f\u4e2d\uff0c\u624d\u80fd\u4f7f\u7528 void \u65b9\u6cd5\u3002
+42Y10=\u4e0d\u5728 INSERT \u9673\u8ff0\u5f0f\u4e2d\u7684\u8868\u683c\u5efa\u69cb\u5b50\uff0c\u5176\u4e2d\u4e00\u500b\u76f4\u6b04\u5168\u70ba ? \u53c3\u6578\u3002\u6bcf\u500b\u76f4\u6b04\u81f3\u5c11\u8981\u6709\u4e00\u5217\u542b\u6709\u975e\u53c3\u6578\u3002
+42Y11=\u4f7f\u7528 ''{0}'' \u5b50\u53e5\u6642\u6240\u9700\u8981\u7684\u5408\u4f75\u898f\u683c\u3002
+42Y12=JOIN \u7684 ON \u5b50\u53e5\u662f ''{0}'' \u8868\u793a\u5f0f\u3002\u5b83\u5fc5\u9808\u662f BOOLEAN \u8868\u793a\u5f0f\u3002
+42Y13=\u5728 CREATE VIEW \u9673\u8ff0\u5f0f\u4e2d\uff0c\u76f4\u6b04\u540d\u7a31 ''{0}'' \u51fa\u73fe\u4e0d\u53ea\u4e00\u6b21\u3002
+42Z97=\u91cd\u65b0\u547d\u540d ''{0}'' \u76f4\u6b04\u6703\u4e2d\u65b7\u6aa2\u67e5\u9650\u5236 ''{1}''\u3002
+42Z99=\u5b57\u4e32\u6216\u5341\u516d\u9032\u4f4d\u6587\u5b57\u4e0d\u53ef\u8d85\u904e 64K\u3002
+42Y16=\u5728 ''{1}'' \u985e\u5225\u4e2d\uff0c\u627e\u4e0d\u5230 public static \u65b9\u6cd5 ''{0}''\u3002\u53ef\u80fd\u662f\u65b9\u6cd5\u5b58\u5728\uff0c\u4f46\u5b83\u4e0d\u662f public \u6216\u4e0d\u662f static\u3002
+42846=\u7121\u6cd5\u5c07 ''{0}'' \u985e\u578b\u8f49\u63db\u6210 ''{1}''\u3002
+42Y19=\u5728 GROUP BY \u6e05\u55ae\u4e2d\uff0c''{0}'' \u51fa\u73fe\u8a31\u591a\u6b21\u3002GROUP BY \u6e05\u55ae\u4e2d\u7684\u76f4\u6b04\u4e0d\u80fd\u8a9e\u610f\u4e0d\u660e\u3002
+42Y22={0} \u805a\u96c6\u7121\u6cd5\u64cd\u4f5c ''{1}'' \u985e\u578b\u3002
+42Y23=\u50b3\u56de\u4e0d\u6b63\u78ba\u7684 {0} \u76f4\u6b04 JDBC \u985e\u578b\u8cc7\u8a0a\u3002
+42Y24=''{0}'' \u6982\u7565\u8868\u4e0d\u53ef\u66f4\u65b0\u3002\uff08\u6982\u7565\u8868\u76ee\u524d\u4e0d\u53ef\u66f4\u65b0\u3002\uff09
+42Y25=''{0}'' \u662f\u7cfb\u7d71\u8868\u683c\u3002\u4f7f\u7528\u8005\u4e0d\u80fd\u4fee\u6539\u9019\u500b\u8868\u683c\u7684\u5167\u5bb9\u3002
+#42Y26=Parameters are not allowed in the WHEN clause of a trigger.
+42Y27=\u5728\u89f8\u767c\u52d5\u4f5c\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528\u53c3\u6578\u3002
+42Y29=\u975e\u5206\u7d44\u67e5\u8a62\u7684 SELECT \u6e05\u55ae\u5305\u542b\u81f3\u5c11\u4e00\u500b\u7121\u6548\u7684\u8868\u793a\u5f0f\u3002\u7576 SELECT \u6e05\u55ae\u5305\u542b\u81f3\u5c11\u4e00\u500b\u805a\u96c6\u6642\uff0c\u6240\u6709\u9805\u76ee\u90fd\u5fc5\u9808\u662f\u6709\u6548\u7684\u805a\u96c6\u8868\u793a\u5f0f\u3002
+42Y30=\u5206\u7d44\u67e5\u8a62\u7684 SELECT \u6e05\u55ae\u5305\u542b\u81f3\u5c11\u4e00\u500b\u7121\u6548\u7684\u8868\u793a\u5f0f\u3002\u5982\u679c\u662f\u542b GROUP BY \u7684 SELECT\uff0cSELECT \u6e05\u55ae\u53ef\u80fd\u53ea\u542b\u6709\u5206\u7d44\u76f4\u6b04\u548c\u6709\u6548\u7684\u805a\u96c6\u8868\u793a\u5f0f\u3002
+42Y32=\u5728 {2} \u985e\u578b\u7684 ''{1}'' \u805a\u96c6\u4e4b\u805a\u96c6\u7a0b\u5f0f\u985e\u5225 ''{0}'' \u6c92\u6709\u5be6\u4f5c com.ibm.db2j.aggregates.Aggregator\u3002
+
+42Y33={0} \u805a\u96c6\u5305\u542b\u4e00\u6216\u591a\u500b\u805a\u96c6\u3002
+42Y34=\u76f4\u6b04\u540d\u7a31 ''{0}'' \u7b26\u5408 ''{1}'' \u8868\u683c\u4e2d\u7684\u591a\u500b\u7d50\u679c\u76f4\u6b04\u3002
+42Y35=\u76f4\u6b04\u53c3\u7167 ''{0}'' \u7121\u6548\u3002\u7576 SELECT \u6e05\u55ae\u5305\u542b\u81f3\u5c11\u4e00\u500b\u805a\u96c6\u6642\uff0c\u6240\u6709\u9805\u76ee\u90fd\u5fc5\u9808\u662f\u6709\u6548\u7684\u805a\u96c6\u8868\u793a\u5f0f\u3002
+42Y36=\u76f4\u6b04\u53c3\u7167 ''{0}'' \u7121\u6548\u3002\u5982\u679c\u662f\u542b GROUP BY \u7684 SELECT\uff0cSELECT \u6e05\u55ae\u53ef\u80fd\u53ea\u542b\u6709\u5206\u7d44\u76f4\u6b04\u548c\u6709\u6548\u7684\u805a\u96c6\u8868\u793a\u5f0f\u3002
+42Y37=''{0}'' \u662f Java \u57fa\u672c\u5143\u7d20\uff0c\u7121\u6cd5\u642d\u914d\u9019\u500b\u904b\u7b97\u5b50\u4f7f\u7528\u3002
+42Y38=\u5728 SELECT \u6703\u53c3\u7167\u5176\u76ee\u6a19\u8868\u683c ''{0}'' \u7684\u63d2\u5165\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 insertMode = replace\u3002
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y39=''{0}'' \u4e0d\u80fd\u51fa\u73fe\u5728 CHECK CONSTRAINT \u5b9a\u7fa9\u4e2d\uff0c\u56e0\u70ba\u5b83\u53ef\u80fd\u6703\u50b3\u56de\u4e0d\u78ba\u5b9a\u7684\u7d50\u679c\u3002
+42Y40=\u5728 ''{1}'' \u89f8\u767c\u7684 UPDATE OF \u76f4\u6b04\u6e05\u55ae\u4e2d\uff0c''{0}'' \u51fa\u73fe\u8a31\u591a\u6b21\u3002
+42Y41=''{0}'' \u4e0d\u80fd\u76f4\u63a5\u900f\u904e EXECUTE STATEMENT \u4f86\u547c\u53eb\uff0c\u56e0\u70ba\u5b83\u662f\u89f8\u767c\u7684\u4e00\u90e8\u5206\u3002
+42Y42=\u5c0f\u6578\u4f4d\u6578 ''{1}'' \u4e0d\u662f {0} \u7684\u6709\u6548\u5c0f\u6578\u4f4d\u6578\u3002
+42Y43=\u5c0f\u6578\u4f4d\u6578 ''{0}'' \u4e0d\u662f\u7cbe\u78ba\u5ea6\u70ba ''{1}'' \u7684\u6709\u6548\u5c0f\u6578\u4f4d\u6578\u3002
+42Y44=FROM \u6e05\u55ae\u4e2d\u7684\u5167\u5bb9\u6e05\u55ae\u6240\u6307\u5b9a\u7684\u7d22\u5f15\u9375 ''{0}'' \u7121\u6548\u3002\u76ee\u524d\u6240\u652f\u63f4\u6703\u5340\u5206\u5927\u5c0f\u5beb\u7684\u7d22\u5f15\u9375\u662f ''{1}''\u3002
+42Y45=\u7121\u6cd5\u9023\u7d50 VTI ''{0}''\uff0c\u56e0\u70ba\u5b83\u662f\u7279\u6b8a\u89f8\u767c VTI\uff0c\u4e14\u9019\u500b\u9673\u8ff0\u5f0f\u4e0d\u662f\u89f8\u767c\u52d5\u4f5c\u6216 WHEN \u5b50\u53e5\u7684\u4e00\u90e8\u5206\u3002
+42Y46=FROM \u6e05\u55ae\u4e2d\u7684\u5167\u5bb9\u6e05\u55ae\u7121\u6548\u3002\u6c92\u6709 ''{1}'' \u8868\u683c\u7684 ''{0}'' \u7d22\u5f15\u3002
+42Y48=FROM \u6e05\u55ae\u4e2d\u7684\u5167\u5bb9\u6e05\u55ae\u7121\u6548\u3002''{1}'' \u8868\u683c\u6c92\u6709\u5177\u540d\u9650\u5236 ''{0}''\uff0c\u6216\u9650\u5236\u6c92\u6709\u652f\u6301\u7684\u7d22\u5f15\u3002
+42Y49=\u6307\u5b9a\u591a\u500b\u503c\u7d66\u5167\u5bb9\u7d22\u5f15\u9375 ''{0}''\u3002
+
+42Y50=''{0}'' \u8868\u683c\u7684\u5167\u5bb9\u6e05\u55ae\u53ef\u5305\u542b\u7d22\u5f15\u6216\u9650\u5236\u7684\u503c\uff0c\u4f46\u4e0d\u80fd\u540c\u6642\u5305\u542b\u9019\u5169\u8005\u3002
+42Y55=\u7121\u6cd5\u5728 ''{1}'' \u57f7\u884c ''{0}''\uff0c\u56e0\u70ba\u5b83\u4e0d\u5b58\u5728\u3002
+42Y56=''{1}''\u8868\u683c\u4e2d\u7684\u5167\u5bb9\u6e05\u55ae\u6240\u6307\u5b9a\u7684 joinStrategy ''{0}'' \u7121\u6548\u3002\u76ee\u524d\u652f\u63f4\u7684 joinStrategy \u503c\u6709 ''hash''\u3001''nestedloop''\u3002
+42Y58=\u7576\u6700\u4f73\u5316\u7a0b\u5f0f\u7528\u4f86\u8f49\u63db\u7684 ''{0}'' \u503c\u7f6e\u63db ''{1}'' \u6642\uff0c\u767c\u751f NumberFormatException\u3002
+42Y59=\u6307\u5b9a\u7d66 hashInitialCapacity \u7f6e\u63db\u7684 ''{0}'' \u503c\u7121\u6548\u3002\u9019\u500b\u503c\u5fc5\u9808 > 0\u3002
+42Y60=\u6307\u5b9a\u7d66 hashLoadFactor \u7f6e\u63db\u7684 ''{0}'' \u503c\u7121\u6548\u3002\u9019\u500b\u503c\u5fc5\u9808 > 0.0 \u4e14 <= 1.0\u3002
+42Y61=\u6307\u5b9a\u7d66 hashMaxCapacity \u7f6e\u63db\u7684 ''{0}'' \u503c\u7121\u6548\u3002\u9019\u500b\u503c\u5fc5\u9808 > 0\u3002
+42Y62=\u5728 ''{1}'' \u4e2d\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}''\uff0c\u56e0\u70ba\u5b83\u662f\u6982\u7565\u8868\u3002
+42Y63=\u5728\u6240\u9078\u7d22\u5f15\u6216\u8cc7\u6599\u5806\u4e2d\u7684\u76f4\u6b04\u4e0a\uff0c\u96dc\u6e4a\u5408\u4f75\u9700\u8981\u53ef\u6700\u4f73\u5316\u7684\u7b49\u5f0f\u7d50\u5408\u8ff0\u8a5e\u3002\u5728 ''{0}'' \u8868\u683c\u6216\u7d22\u5f15\u7684\u4efb\u4f55\u76f4\u6b04\u4e2d\uff0c\u90fd\u6c92\u6709\u53ef\u6700\u4f73\u5316\u7684\u7b49\u5f0f\u7d50\u5408\u8ff0\u8a5e\u3002\u8acb\u5229\u7528 ''index'' \u6700\u4f73\u5316\u7a0b\u5f0f\u7f6e\u63db\uff0c\u5728 ''{1}'' \u8868\u683c\u4e2d\u6307\u5b9a\u9019\u985e\u7d22\u5f15\u6216\u8cc7\u6599\u5806\u3002
+42Y64=''{0}'' \u7684 bulkFetch \u503c\u7121\u6548\uff1abulkFetch \u7684\u6700\u5c0f\u503c\u662f 1\u3002
+42Y65=\u5728 ''{0}'' \u5408\u4f75\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 bulkFetch\u3002
+42Y66=\u53ef\u66f4\u65b0\u7684\u6e38\u6a19\u4e0d\u5141\u8a31\u4f7f\u7528 bulkFetch\u3002
+42Y67=\u4e0d\u80fd\u9664\u53bb\u7db1\u76ee ''{0}''\u3002
+42Y69=\u627e\u4e0d\u5230\u9019\u500b\u9673\u8ff0\u5f0f\u7684\u6709\u6548\u57f7\u884c\u898f\u5283\u3002\u53ef\u80fd\u7684\u539f\u56e0\u6709\u5169\u500b\uff1a\u60a8\u5728\u4e0d\u5141\u8a31\u4f7f\u7528\u96dc\u6e4a\u5408\u4f75\u6642\uff08\u6c92\u6709\u53ef\u6700\u4f73\u5316\u7684\u7b49\u5f0f\u7d50\u5408\uff09\u6307\u5b9a\u4e86\u96dc\u6e4a\u5408\u4f75\u7b56\u7565\uff0c\u6216\u60a8\u8a66\u5716\u5408\u4f75\u5169\u500b ExternalVirtualTables\uff0c\u4f46\u5169\u8005\u537b\u4e92\u76f8\u53c3\u7167\uff0c\u56e0\u800c\u7121\u6cd5\u8a55\u4f30\u9673\u8ff0\u5f0f\u3002
+42Y70=\u4f7f\u7528\u8005\u6307\u5b9a\u7684\u5408\u4f75\u6b21\u5e8f\u4e0d\u662f\u5408\u6cd5\u7684\u5408\u4f75\u6b21\u5e8f\u3002\u9019\u53ef\u80fd\u662f\u56e0\u70ba\u5c07\u5167\u90e8\u8868\u683c\u7684\u5408\u4f75\u76f4\u6b04\u7576\u4f5c\u53c3\u6578\u50b3\u905e\u7d66\u5916\u90e8\u865b\u64ec\u8868\u683c\u3002
+42Y71=\u7121\u6cd5\u9664\u53bb\u7cfb\u7d71\u51fd\u6578\u6216\u7a0b\u5e8f ''{0}''\u3002
+42Y82=\u7121\u6cd5\u5229\u7528 DROP STATEMENT \u4f86\u9664\u53bb\u7cfb\u7d71\u7522\u751f\u7684\u5132\u5b58\u5099\u59a5\u9673\u8ff0\u5f0f ''{0}''\u3002\u5b83\u662f\u89f8\u767c\u7684\u4e00\u90e8\u5206\u3002
+42Y83=\u4e0d\u5141\u8a31\u4ee5\u7121\u985e\u578b\u7684 null \u4f5c\u70ba {0} \u805a\u96c6\u7684\u5f15\u6578\u3002\u8acb\u5c07 null \u5f37\u5236\u8f49\u578b\u6210\u9069\u7576\u7684\u985e\u578b\u3002
+# NOTE: The parameter to this message is a keyword used as a noun phrase.
+# Some possible values are "subquery", "CurrentDate", and "?".
+42Y84=''{0}'' \u4e0d\u4e00\u5b9a\u6703\u51fa\u73fe\u5728 DEFAULT \u5b9a\u7fa9\u4e2d\u3002
+42Y85=\u53ea\u6709\u5728 VALUES \u5b50\u53e5\u51fa\u73fe\u5728 INSERT \u9673\u8ff0\u5f0f\u5167\u6642\uff0c\u624d\u80fd\u5728 VALUES \u5b50\u53e5\u4e2d\u4f7f\u7528 DEFAULT \u95dc\u9375\u5b57\u3002
+42Y90=\u5728\u9019\u985e\u578b\u7684\u9673\u8ff0\u5f0f\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 FOR UPDATE\u3002
+42Y91=\u5728\u89f8\u767c\u52d5\u4f5c\u7684 EXECUTE STATEMENT \u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 USING \u5b50\u53e5\u3002
+42Y92={0} \u89f8\u767c\u53ea\u80fd\u53c3\u7167 {1} \u500b\u4ea4\u6613\u8f49\u79fb\u8b8a\u6578/\u8868\u683c\u3002
+42Y93=\u4e0d\u5408\u6cd5\u7684 REFERENCING \u5b50\u53e5\uff1a\u6bcf\u500b\u985e\u578b\u7684\u8f49\u79fb\u8b8a\u6578/\u8868\u683c\u90fd\u53ea\u80fd\u4f7f\u7528\u4e00\u500b\u540d\u7a31\u3002
+42Y94=AND \u6216 OR \u6709\u4e0d\u662f Boolean \u7684\u904b\u7b97\u5143\u3002AND \u548c OR \u7684\u904b\u7b97\u5143\u5fc5\u9808\u5f97\u51fa TRUE\u3001FALSE \u6216 UNKNOWN\u3002
+42Y95=\u4e0d\u652f\u63f4\u5de6\u904b\u7b97\u5143\u985e\u578b\u70ba ''{1}''\uff0c\u53f3\u904b\u7b97\u5143\u985e\u578b\u70ba ''{2}''\u7684 ''{0}'' \u904b\u7b97\u5b50\u3002
+42Y96.U=UNKNOWN
+42Y97=\u5728\u7b2c ''{0}'' \u884c\u7b2c ''{1}'' \u6b04\u4e2d\u7684\u8df3\u96e2\u5b57\u5143\u7121\u6548\u3002
+42Y98.U=\u5728\u7b2c {1} \u884c\u7b2c {2} \u6b04\u4e2d\uff0c\u767c\u73fe "{0}"
+42Y99.U=\u5728\u7b2c {0} \u884c\u7b2c {1} \u6b04\u4e2d\uff0c\u767c\u751f\u8a9e\u5f59\u932f\u8aa4\u3002\u767c\u73fe\uff1a{2}
+42Z00.U=Java \u65b9\u6cd5\u547c\u53eb\u6216\u6b04\u4f4d\u53c3\u7167
+# This message is put into message 42X75 when a parameter doesn't have a
+# datatype. For example, from the parameterWidening test:
+#
+# values (java.lang.Integer::toString(?, null));
+# ERROR 42X50: No method was found with the signature
+# java.lang.Integer.toString(UNTYPED, UNTYPED).  It may be that the method
+# exists, but it is not public and/or static, or that the parameter types
+# are not method invocation convertible.
+42Z01.U=UNTYPED
+42Z02=\u9019\u6642\u4e0d\u652f\u63f4\u591a\u91cd DISTINCT \u805a\u96c6\u3002
+42Z07=\u5728 ON \u5b50\u53e5\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528\u805a\u96c6\u3002
+42Z08=\u5728 ''{0}'' \u4e2d\uff0c\u4e0d\u5141\u8a31\u57f7\u884c\u5927\u91cf\u63d2\u5165\u53d6\u4ee3\uff0c\u56e0\u70ba\u5b83\u6709\u5df2\u555f\u7528\u7684\u89f8\u767c ({1})\u3002
+42Z09.U=\u76ee\u524d\u6c92\u6709\u5be6\u4f5c CurrentOfResultSet \u7684
+#
+# The following message is used in error messages where we want to say that
+# certain operations on streams are illegal. The word "stream" is not a
+# keyword or method name, so it should be translated.
+42Z11.U=\u4e32\u6d41
+
+# alter table modify column error messages.
+#####
+42Z15=\u6307\u5b9a\u7121\u6548\u7684\u985e\u578b\u7d66 ''{0}'' \u76f4\u6b04\u3002\u76f4\u6b04\u985e\u578b\u4e0d\u80fd\u8b8a\u66f4\u3002
+42Z16=\u53ea\u6709 VARCHAR \u985e\u578b\u7684\u76f4\u6b04\u53ef\u4ee5\u4fee\u6539\u9577\u5ea6\u3002
+42Z17=\u6307\u5b9a\u7121\u6548\u7684\u9577\u5ea6\u7d66 ''{0}'' \u76f4\u6b04\u3002\u9577\u5ea6\u5fc5\u9808\u5927\u65bc\u73fe\u884c\u76f4\u6b04\u9577\u5ea6
+42Z18=''{0}'' \u76f4\u6b04\u662f\u5916\u90e8\u7d22\u5f15\u9375\u9650\u5236 ''{1}'' \u7684\u4e00\u90e8\u5206\u3002\u5982\u679c\u8981\u4fee\u6539\u9019\u500b\u76f4\u6b04\u7684\u9577\u5ea6\uff0c\u60a8\u61c9\u8a72\u5148\u9664\u53bb\u9650\u5236\uff0c\u57f7\u884c ALTER TABLE\uff0c\u518d\u91cd\u5efa\u9650\u5236\u3002
+42Z19=\u81f3\u5c11\u6709\u4e00\u500b\u5916\u90e8\u7d22\u5f15\u9375\u9650\u5236 ''{1}''\u5728\u53c3\u7167 ''{0}'' \u76f4\u6b04\u3002\u5982\u679c\u8981\u4fee\u6539\u9019\u500b\u76f4\u6b04\u7684\u9577\u5ea6\uff0c\u60a8\u61c9\u8a72\u9664\u53bb\u53c3\u7167\u9650\u5236\uff0c\u57f7\u884c ALTER TABLE\uff0c\u518d\u91cd\u5efa\u9650\u5236\u3002
+42Z20=''{0}'' \u76f4\u6b04\u4e0d\u80fd\u6210\u70ba\u53ef\u70ba null\u3002\u5b83\u662f\u4e3b\u8981\u7d22\u5f15\u9375\u7684\u4e00\u90e8\u5206\uff0c\u5b83\u4e0d\u80fd\u6709\u4efb\u4f55\u53ef\u70ba null \u7684\u76f4\u6b04\u3002
+
+#####
+# end of alter table modify constraints.
+# identity error message (from 42Z21-42Z29)
+#####
+42837=\u8b8a\u66f4\u8868 ''{0}'' \u6307\u5b9a\u7d66\u76f4\u6b04 ''{1}'' \u7684\u5c6c\u6027\u8207\u73fe\u6709\u7684\u76f4\u6b04\u4e0d\u76f8\u5bb9\u3002
+42Z21=\u5c0d\u76f4\u6b04 ''{0}'' \u7684\u8eab\u5206\u8b58\u5225\u6307\u5b9a\u4e86\u7121\u6548\u7684\u589e\u91cf\u3002\u589e\u91cf\u5fc5\u9808\u662f\u975e\u96f6\u3002
+42Z22=\u5c0d\u8eab\u5206\u8b58\u5225\u76f4\u6b04 ''{0}'' \u6307\u5b9a\u4e86\u7121\u6548\u7684\u985e\u578b\u3002\u8eab\u5206\u8b58\u5225\u76f4\u6b04\u7684\u6709\u6548\u985e\u578b\u53ea\u6709 BIGINT\u3001INT \u548c SMALLINT\u3002
+42Z23=\u8a66\u5716\u4fee\u6539\u8eab\u5206\u8b58\u5225\u76f4\u6b04 ''{0}''\u3002
+42Z24=''{0}'' \u8868\u683c ''{1}'' \u76f4\u6b04\u7684\u8eab\u5206\u8b58\u5225\u503c\u51fa\u73fe\u6ea2\u4f4d\u3002
+42Z25=INTERNAL ERROR \u8eab\u5206\u8b58\u5225\u8a08\u6578\u5668\uff1a\u5df2\u547c\u53eb\u66f4\u65b0\uff0c\u4f46\u6c92\u6709\u542b\u73fe\u884c\u503c = NULL \u7684\u5f15\u6578\u3002
+42Z26=\u542b\u8eab\u5206\u8b58\u5225\u9810\u8a2d\u503c\u7684 ''{0}''\u76f4\u6b04\u4e0d\u80fd\u8b8a\u6210\u53ef\u63a5\u53d7\u7a7a\u503c\u3002
+42Z27=\u7121\u6cd5\u5c07\u53ef\u63a5\u53d7\u7a7a\u503c\u7684\u76f4\u6b04 ''{0}'' \u4fee\u6539\u6210\u6709\u8eab\u5206\u8b58\u5225\u9810\u8a2d\u503c\u3002
+
+#####
+# end of identity error messages.
+
+42Z30.U=\u9019\u500b ResultSet \u6240\u82b1\u7684\u6642\u9593 =
+42Z31.U=\u9019\u500b ResultSet \u6240\u82b1\u7684\u6642\u9593\u548c\u4ee5\u4e0b =
+42Z32.U=\u6545\u969c\u7e3d\u6642\u9593\uff1a
+
+42Z33.U=\u5efa\u69cb\u5b50\u6642\u9593\uff08\u6beb\u79d2\uff09=
+42Z34.U=\u958b\u555f\u6642\u9593\uff08\u6beb\u79d2\uff09 =
+42Z35.U=\u4e0b\u4e00\u6b21\u7684\u6642\u9593\uff08\u6beb\u79d2\uff09=
+42Z36.U=\u95dc\u9589\u6642\u9593\uff08\u6beb\u79d2\uff09=
+42Z37.U=\u7121
+42Z38.U=\u7121\u6cd5\u4f7f\u7528\u5b9a\u4f4d\u8cc7\u8a0a\uff0c\u56e0\u70ba\u9019\u500b ResultSet \u6c92\u6709\u958b\u555f\u904e\u3002
+42Z39.U=\u53d6\u5f97\u5b9a\u4f4d\u7a0b\u5f0f\u6642\uff0c\u767c\u751f\u975e\u9810\u671f\u7684\u7570\u5e38\u72c0\u6cc1 {0}\u3002
+## NOTE: In the following message, {0} will be either >= or >
+42Z40.U=\u5728\u524d {1} \u500b\u76f4\u6b04\u4e2d {0}\u3002
+42Z41.U=\u5728\u4e0b\u5217\u76f4\u6b04\u4e2d\u7684\u6392\u5e8f null \u8a9e\u610f\uff1a
+
+42Z42.U=\u76f4\u6b04 ID
+42Z43.U=\u904b\u7b97\u5b50
+42Z44.U=\u6392\u5e8f null
+42Z45.U=\u4e0d\u660e\u56de\u8986\u503c
+42Z46.U=\u5426\u5b9a\u6bd4\u8f03\u7d50\u679c
+42Z47.U=\u76ee\u524d\u4e0d\u652f\u63f4\u4ee5 String \u53d6\u5f97 {0} \u7684\u67e5\u8a62\u898f\u5283
+## NOTE: In the following message, {0} and {1} are integer indexes into a 2-d array
+42Z48.U=\u76f4\u6b04[{0}][{1}] Id
+
+# matches DB2
+42939=\u4e0d\u80fd\u4ee5 ''{0}'' \u7db1\u76ee\u540d\u7a31\u4f86\u5efa\u7acb\u7269\u4ef6\u3002
+
+
+
+
+42Z50=\u5167\u90e8\u932f\u8aa4\uff1a\u7121\u6cd5\u7522\u751f {0} \u7684\u7a0b\u5f0f\u78bc\u3002
+42Z53=\u5167\u90e8\u932f\u8aa4\uff1a\u4e0d\u77e5\u9053\u7bc0\u9ede\u9078\u9805 {0} \u8981\u7522\u751f\u54ea\u985e\u578b\u7684\u555f\u52d5\u3002
+42Z54.U=\u5256\u6790\u4e4b\u5f8c\uff0c\u9019\u500b\u7570\u5e38\u72c0\u6cc1\u6703\u505c\u6b62\u9673\u8ff0\u5f0f - \u4e0d\u9700\u8981\u9032\u4e00\u6b65\u7684\u8655\u7406\u3002
+42Z55.U=\u5728\u5229\u7528 StopAfterParsing \u9664\u932f\u65d7\u6a19\u5256\u6790\u4e4b\u5f8c\uff0c\u505c\u6b62\u57f7\u884c\u3002
+42Z56.U=\u5728\u5229\u7528 StopAfterBinding \u9664\u932f\u65d7\u6a19\u9023\u7d50\u4e4b\u5f8c\uff0c\u505c\u6b62\u57f7\u884c\u3002
+42Z57.U=\u5728\u5229\u7528 StopAfterOptimizing \u9664\u932f\u65d7\u6a19\u6700\u4f73\u5316\u4e4b\u5f8c\uff0c\u505c\u6b62\u57f7\u884c\u3002
+42Z58.U=\u5728\u5229\u7528 StopAfterGenerating \u9664\u932f\u65d7\u6a19\u7522\u751f\u4e4b\u5f8c\uff0c\u505c\u6b62\u57f7\u884c\u3002
+
+## More RUNTIMESTATISTICS messages
+42Z80.U=\u53ef\u5e8f\u5217\u5316
+42Z81.U=\u5df2\u78ba\u5b9a\u7684\u8b80\u53d6
+42Z82.U=\u5c08\u7528
+42Z83.U=\u5373\u6642\u5171\u7528
+42Z84.U=\u5171\u7528
+42Z85.U=\u8868\u683c
+42Z86.U=\u5217
+42Z87.U=\u5171\u7528\u8868\u683c
+42Z88.U=\u5171\u7528\u5217
+
+# More generic language stuff
+42Z90=''{0}'' \u985e\u5225\u6c92\u6709\u50b3\u56de\u53ef\u66f4\u65b0\u7684 ResultSet\u3002
+42Z91=\u5b50\u67e5\u8a62
+42Z92=\u53ef\u91cd\u8907\u7684\u8b80\u53d6
+42Z9A=\u5c1a\u672a\u78ba\u5b9a\u7684\u8b80\u53d6
+
+# Declare global temporary table language stuff. Does not match DB2, specific to Derby behavior
+XCL478.S=\u6240\u8981\u6c42\u7684\u529f\u80fd\u4e0d\u80fd\u53c3\u7167 SESSION \u7db1\u76ee\u4e2d\u7684\u8868\u683c\u3002
+# Declare global temporary table language stuff. Matches DB2
+428EK=\u6240\u5ba3\u544a\u4e4b\u5ee3\u57df\u66ab\u6642\u8868\u683c\u540d\u7a31\u7684\u9650\u5b9a\u5143\u5fc5\u9808\u662f SESSION\u3002
+42995=\u6240\u8981\u6c42\u7684\u529f\u80fd\u4e0d\u9069\u7528\u5ee3\u57df\u66ab\u6642\u8868\u683c\u3002
+42962=\u6240\u5ba3\u544a\u7684\u5ee3\u57df\u66ab\u6642\u8868\u683c\u6216\u7a0b\u5e8f\u5b9a\u7fa9\u4e2d\uff0c\u4e0d\u5141\u8a31\u9577\u76f4\u6b04\u985e\u578b\u7684\u76f4\u6b04\u6216\u53c3\u6578 ''{0}''\u3002
+
+## org.apache.derby.impl.sql.execute.rts
+43X00.U=\u9023\u63a5\u81f3
+43X01.U=\u8d77\u59cb\u5b50\u67e5\u8a62\u865f\u78bc
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X02.U=\u4efb\u4f55 ResultSet
+43X03.U=\u958b\u555f\u6578\u76ee
+43X04.U=\u6240\u898b\u5217\u6578
+43X05.U=\u4f86\u6e90\u7d50\u679c\u96c6
+43X06.U=\u7d50\u675f\u5b50\u67e5\u8a62\u865f\u78bc
+43X07.U=\u6700\u4f73\u5316\u7a0b\u5f0f\u9810\u4f30\u7684\u5217\u8a08\u6578
+43X08.U=\u6700\u4f73\u5316\u7a0b\u5f0f\u9810\u4f30\u7684\u6210\u672c
+43X09.U=\u79d2\u6578
+43X10.U=\u7e3d\u8a08
+43X11.U=\u7bc0\u9ede
+43X12.U=\u76ee\u524d\u6c92\u6709\u5be6\u4f5c {0} \u4ee5\u8655\u7406 {1}
+# NOTE: In this case, the name of the type of ResultSet is "Any". ResultSet
+# is the name of an interface, so it should not be translated.
+43X13.U=\u522a\u9664 ResultSet\uff0c\u5229\u7528
+43X14.U=\u9396\u5b9a\u8868\u683c
+43X15.U=\u9396\u5b9a\u5217
+43X16.U=\u5ef6\u9072
+43X17.U=\u522a\u9664\u5217
+43X18.U=\u66f4\u65b0\u7d22\u5f15
+43X19.U=\u522a\u9664
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X20.U=\u5340\u5206\u7d14\u91cf\u805a\u96c6 ResultSet
+# NOTE: In this message, "input" is being used as a verb
+43X21.U=\u8f38\u5165\u5217\u6578
+43X22.U=\u5340\u5206\u7d14\u91cf\u805a\u96c6
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X23.U={0} \u7684\u5340\u5206\u6383\u63cf ResultSet\uff0c\u4f7f\u7528 {1} {2}
+43X24.U=\u9650\u5236
+43X25.U=\u7d22\u5f15
+43X26.U={0} \u7684\u5340\u5206\u6383\u63cf ResultSet
+#NOTE: In this message, {0} will be something like "serializable" or "read
+# committed", and {1} will be something like "share" or "exclusive".
+43X27.U=\u5728 {0} \u9694\u96e2\u5c64\u6b21\uff0c\u4f7f\u7528 {1} \u9396\u5b9a
+43X28.U=\u6383\u63cf\u8cc7\u8a0a
+43X29.U=\u5340\u5206\u76f4\u6b04\u662f\u76f4\u6b04\u865f\u78bc
+43X30.U=\u5340\u5206\u76f4\u6b04\u662f\u76f4\u6b04\u865f\u78bc
+43X31.U=\u96dc\u6e4a\u8868\u5927\u5c0f
+43X32.U=\u904e\u6ffe\u7684\u5217\u6578
+43X33.U=\u4e0b\u4e00\u6b21\u7684\u6642\u9593\uff08\u6beb\u79d2/\u5217\uff09
+43X34.U=\u8d77\u59cb\u4f4d\u7f6e
+43X35.U=\u505c\u6b62\u4f4d\u7f6e
+43X36.U=\u6383\u63cf\u9650\u5b9a\u5143
+#NOTE: The message means the set of qualifiers that filter rows returned
+# by the "next" operation, not the set of qualifiers that come next.
+43X37.U=\u4e0b\u4e00\u500b\u9650\u5b9a\u5143
+#NOTE: In this message, {0} is a table name and {1} is an index name
+43X38.U=\u5728 {0}\uff0c\u4f7f\u7528 {1}
+43X39.U=\u5340\u5206\u6383\u63cf
+43X40.U=\u6392\u5e8f\u8cc7\u8a0a
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X41.U=\u5206\u7d44\u805a\u96c6 ResultSet
+43X42.U=\u6709\u5340\u5206\u805a\u96c6
+43X43.U=\u4f9d\u7167\u6392\u5e8f\u6b21\u5e8f
+43X44.U=\u5206\u7d44\u805a\u96c6
+43X45.U=\u96dc\u6e4a\u5b58\u5728\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X46.U=\u96dc\u6e4a\u5b58\u5728\u5408\u4f75 ResultSet
+43X47.U=\u96dc\u6e4a\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X48.U=\u96dc\u6e4a\u5408\u4f75 ResultSet
+43X49.U=\u96dc\u6e4a\u5de6\u5916\u90e8\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X50.U=\u96dc\u6e4a\u5de6\u5916\u90e8\u5408\u4f75 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {1} is either "constraint" or "index", {0} is a table name, and {2} is a
+# constraint or index name.
+43X51.U={0} \u7684\u96dc\u6e4a\u6383\u63cf ResultSet\uff0c\u4f7f\u7528 {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X52.U={0} \u7684\u96dc\u6e4a\u6383\u63cf ResultSet
+43X53.U=\u96dc\u6e4a\u7d22\u5f15\u9375\u662f\u76f4\u6b04\u865f\u78bc
+43X54.U=\u96dc\u6e4a\u7d22\u5f15\u9375\u662f\u76f4\u6b04\u865f\u78bc
+43X55.U=\u96dc\u6e4a\u6383\u63cf
+43X56.U=\u9023\u63a5\u7684\u5b50\u67e5\u8a62
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X57.U=\u96dc\u6e4a\u8868 ResultSet
+43X58.U=\u96dc\u6e4a\u8868
+43X59.U=\u5168\u90e8
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X60.U={0} \u7684\u7d22\u5f15\u5217\u81f3\u57fa\u672c\u5217 ResultSet
+43X61.U=\u5f9e\u8cc7\u6599\u5806\u5b58\u53d6\u7684\u76f4\u6b04\u6578
+#NOTE: {0} is a table name
+43X62.U=\u9069\u7528\u65bc {0}
+43X63.U=\u7d22\u5f15\u5217\u81f3\u57fa\u672c\u5217
+43X64.U=\u63d2\u5165\u6a21\u5f0f\uff1a\u5927\u91cf\u63d2\u5165
+43X65.U=\u63d2\u5165\u6a21\u5f0f\uff1a\u6b63\u5e38\uff08\u56e0\u4e0d\u662f\u7a7a\u767d\u7684\u8868\u683c\u800c\u7121\u6cd5\u57f7\u884c\u5927\u91cf\u63d2\u5165\uff09
+43X66.U=\u63d2\u5165\u6a21\u5f0f\uff1a\u6b63\u5e38
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X67.U=\u63d2\u5165 ResultSet\uff0c\u5229\u7528
+43X68.U=\u63d2\u5165\u7684\u5217\u6578
+43X69.U=\u63d2\u5165
+43X70.U=\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43X71.U={0} \u7684\u6700\u5f8c\u4e00\u500b\u7d22\u5f15\u9375\u7d22\u5f15\u6383\u63cf ResultSet\uff0c\u4f7f\u7528 {1} \u7d22\u5f15
+43X72.U=\u5728 {0} \u9694\u96e2\u5c64\u6b21\uff0c\u4f7f\u7528\u6700\u4f73\u5316\u7a0b\u5f0f\u9078\u64c7\u7684 {1} \u9396\u5b9a
+43X73.U=\u8868\u683c\u6383\u63cf
+43X74.U=\u7d22\u5f15\u6383\u63cf
+#NOTE: {0} is a table name or class name
+43X75.U=\u5728 {0}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X76.U=\u5df2\u5f62\u6210\u7684 ResultSet
+43X77.U=\u66ab\u6642\u805a\u96c6\u7269\u5efa\u7acb\u6642\u9593\uff08\u6beb\u79d2\uff09
+43X78.U=\u66ab\u6642\u805a\u96c6\u7269\u63d0\u53d6\u6642\u9593\uff08\u6beb\u79d2\uff09
+43X79.U=\u5f9e\u5de6\u5074\u898b\u5230\u7684\u5217\u6578
+43X80.U=\u5f9e\u53f3\u5074\u898b\u5230\u7684\u5217\u6578
+43X81.U=\u50b3\u56de\u7684\u5217\u6578
+43X82.U=\u5de6\u7d50\u679c\u96c6
+43X83.U=\u53f3\u7d50\u679c\u96c6
+43X84.U=\u5de2\u72c0\u8ff4\u5708\u5b58\u5728\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X85.U=\u5de2\u72c0\u8ff4\u5708\u5b58\u5728\u5408\u4f75 ResultSet
+43X86.U=\u5de2\u72c0\u8ff4\u5708\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X87.U=\u5de2\u72c0\u8ff4\u5708\u5408\u4f75 ResultSet
+43X88.U=\u50b3\u56de\u7a7a\u7684\u53f3\u5074\u5404\u5217
+43X89.U=\u5de2\u72c0\u8ff4\u5708\u5de6\u5916\u90e8\u5408\u4f75
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X90.U=\u5de2\u72c0\u8ff4\u5708\u5de6\u5916\u90e8\u5408\u4f75 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X91.U=\u6b63\u898f\u5316 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X92.U=\u4e00\u6b21 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X93.U=\u6295\u5c04\u9650\u5236 ResultSet
+43X94.U=\u9650\u5236
+43X95.U=\u6295\u5c04
+43X96.U=\u9650\u5236\u6642\u9593\uff08\u6beb\u79d2\uff09
+43X97.U=\u6295\u5c04\u6642\u9593\uff08\u6beb\u79d2\uff09
+43X98.U=\u6295\u5c04\u9650\u5236
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43X99.U=\u5217 ResultSet
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y00.U=\u7d14\u91cf\u805a\u96c6 ResultSet
+43Y01.U=\u7d22\u5f15\u9375\u6700\u4f73\u5316
+43Y02.U=\u7d14\u91cf\u805a\u96c6
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y03.U=\u4e0d\u611f\u61c9\u6372\u52d5\u7684 ResultSet
+43Y04.U=\u96dc\u6e4a\u8868\u8b80\u53d6\u6578
+43Y05.U=\u96dc\u6e4a\u8868\u5beb\u5165\u6578
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y06.U=\u6392\u5e8f ResultSet
+43Y07.U=\u6d88\u9664\u8907\u672c
+43Y08.U=\u6392\u5e8f
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name, {1} is either "constraint" or "index", {2} is a
+# constraint or index name.
+43Y09.U={0} \u7684\u7d22\u5f15\u6383\u63cf ResultSet\uff0c\u4f7f\u7528 {1} {2}
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a table name.
+43Y10.U={0} \u7684\u8868\u683c\u6383\u63cf ResultSet
+43Y11.U=\u4f7f\u7528\u7684\u5be6\u969b\u9396\u5b9a\uff1a\u8868\u683c\u5c64\u6b21\u9396\u5b9a\u3002
+43Y12.U=\u63d0\u53d6\u5927\u5c0f
+43Y13.U=\u9650\u5b9a\u5143
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+43Y14.U=\u806f\u96c6 ResultSet
+43Y15.U=\u806f\u96c6
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is either "table" or "row"
+43Y16.U=\u5229\u7528 {0} \u9396\u5b9a\u66f4\u65b0 ResultSet
+43Y17.U=\u5df2\u66f4\u65b0\u7684\u5217\u6578
+43Y18.U=\u66f4\u65b0
+# NOTE: ResultSet is the name of an interface, so it should not be translated.
+# {0} is a Java class name.
+43Y19.U={0} \u7684 VTI ResultSet
+43Y20.U=VTI
+43Y21.U=\u5df2\u5f62\u6210\u7684\u5b50\u67e5\u8a62
+43Y22.U=\u9673\u8ff0\u5f0f\u540d\u7a31
+43Y23.U=\u9673\u8ff0\u5f0f\u6587\u5b57
+# NOTE: This means the amount of time it takes to parse
+43Y24.U=\u5256\u6790\u6642\u9593
+# NOTE: This means the amount of time it takes to bind
+43Y25.U=\u9023\u7d50\u6642\u9593
+# NOTE: This means the amount of time it takes to optimize
+43Y26.U=\u6700\u4f73\u5316\u6642\u9593
+# NOTE: This means the amount of time it takes to generate
+43Y27.U=\u7522\u751f\u6642\u9593
+# NOTE: This means the amount of time it takes to compile
+43Y28.U=\u7de8\u8b6f\u6642\u9593
+# NOTE: This means the amount of time it takes to execute
+43Y29.U=\u57f7\u884c\u6642\u9593
+43Y30.U=\u8d77\u59cb\u7de8\u8b6f\u6642\u9593\u6233\u8a18
+43Y31.U=\u7d50\u675f\u7de8\u8b6f\u6642\u9593\u6233\u8a18
+43Y32.U=\u8d77\u59cb\u57f7\u884c\u6642\u9593\u6233\u8a18
+43Y33.U=\u7d50\u675f\u57f7\u884c\u6642\u9593\u6233\u8a18
+43Y44.U=\u9673\u8ff0\u5f0f\u57f7\u884c\u898f\u5283\u6587\u5b57
+43Y45.U=\u57f7\u884c\u6642\u671f 100%\uff0c{0} \u79d2
+43Y46.U=\u63d2\u5165 VTI ResultSet
+43Y47.U=\u522a\u9664 VTI ResultSet
+43Y49.U=\u63d2\u5165 VTI
+43Y50.U=\u522a\u9664 VTI
+43Y51.U=\u522a\u9664 Cascade ResultSet
+43Y52.U=\u522a\u9664 Cascade ResultSet\uff0c\u5229\u7528
+43Y53.U=\u76f8\u4f9d\u9805\u8868\u683c\u7684\u53c3\u7167\u52d5\u4f5c
+43Y54.U=\u958b\u59cb\u76f8\u4f9d\u9805\u8868\u683c\u865f\u78bc\u7684\u53c3\u7167\u52d5\u4f5c
+43Y55.U=\u7d50\u675f\u76f8\u4f9d\u9805\u8868\u683c\u865f\u78bc\u7684\u53c3\u7167\u52d5\u4f5c 
+54004=SELECT \u9673\u8ff0\u5f0f\u5728 GROUP BY\u3001ORDER BY \u6216\u9078\u53d6\u6e05\u55ae\u4e2d\u6709\u904e\u591a\u7684\u9805\u76ee\u3002
+54008=CREATE INDEX \u9673\u8ff0\u5f0f\u6307\u5b9a\u592a\u591a\u76f4\u6b04\uff08\u4e0a\u9650\u70ba 16\uff09\u3002
+54023=\u5df2\u8d85\u51fa\u7a0b\u5e8f\u4e4b\u53c3\u6578\u6578\u76ee\u7684\u9650\u5236\u3002\u9650\u5236\u70ba {0}\uff0c\u800c\u7a0b\u5e8f {1} \u7684\u53c3\u6578\u6578\u76ee\u70ba {2}\u3002
+54038=\u5df2\u8d85\u51fa\u5de2\u72c0\u89f8\u767c\u7684\u6df1\u5ea6\u4e0a\u9650\u3002
+
+## all other org.apache.derby.catalog.types
+44X00.U=SQL \u985e\u578b\u540d\u7a31
+44X05.U=\u4e0b\u4e00\u500b\u932f\u8aa4
+
+X0X02.S=\u7121\u6cd5\u5728 ''{1}'' \u6a21\u5f0f\u4e2d\u9396\u5b9a ''{0}'' \u8868\u683c\u3002
+X0X03.S=\u4ea4\u6613\u72c0\u614b\u7121\u6548 - \u4fdd\u7559\u7684\u6e38\u6a19\u9700\u8981\u76f8\u540c\u7684\u9694\u96e2\u5c64\u6b21
+X0X05.S=''{0}'' \u8868\u683c\u4e0d\u5b58\u5728\u3002
+X0X0E.S=\u5728\u63d2\u5165\u8868\u683c\u4e2d\uff0c\u627e\u4e0d\u5230\u5217\u793a\u5728\u81ea\u52d5\u7522\u751f\u4e4b\u76f4\u6b04\u9078\u9805\u9663\u5217\u4e2d\u7684\u76f4\u6b04\u4f4d\u7f6e ''{0}''\u3002
+X0X0F.S=\u5728\u63d2\u5165\u8868\u683c\u4e2d\uff0c\u627e\u4e0d\u5230\u5217\u793a\u5728\u81ea\u52d5\u7522\u751f\u4e4b\u76f4\u6b04\u9078\u9805\u9663\u5217\u4e2d\u7684\u76f4\u6b04\u540d\u7a31 ''{0}''\u3002
+X0X07.S=\u7121\u6cd5\u9664\u53bb Jar \u6a94 ''{0}''\uff0c\u56e0\u70ba\u5b83\u5728\u60a8\u7684 db2j.database.classpath ''{0}'' \u4e2d\u3002
+X0X10.S=USING \u5b50\u53e5\u50b3\u56de\u4e0d\u53ea\u4e00\u5217\uff0c\u4f46\u53ea\u5141\u8a31\u6709\u55ae\u5217\u7684 ResultSet\u3002
+X0X11.S=USING \u5b50\u53e5\u6c92\u6709\u50b3\u56de\u4efb\u4f55\u7d50\u679c\uff0c\u4e0d\u80fd\u8a2d\u5b9a\u4efb\u4f55\u53c3\u6578\u3002
+X0X13.S=Jar \u6a94\u3000''{0}'' \u4e0d\u5728 ''{1}'' \u7db1\u76ee\u4e2d\u3002
+X0X57.S=\u8a66\u5716\u5c07 ''{0}'' \u985e\u578b\u7684 Java \u503c\u653e\u5728 SQL \u503c\u4e2d\uff0c\u4f46\u6c92\u6709\u5c0d\u61c9\u7684 SQL \u985e\u578b\u3002Java \u503c\u53ef\u80fd\u662f\u65b9\u6cd5\u547c\u53eb\u6216\u6b04\u4f4d\u5b58\u53d6\u7684\u7d50\u679c\u3002
+X0X60.S=\u5df2\u6709\u540d\u7a31\u70ba ''{0}'' \u7684\u6e38\u6a19\u5b58\u5728\u3002
+X0X61.S=''{0}'' \u7d22\u5f15\u548c ''{1}.{2}'' \u8868\u683c\u4e2d\u7684\u76f4\u6b04 ''{4}'' \u7684\u503c\u4e0d\u7b26\u5408\u5217\u4f4d\u7f6e ''{3}'' \u7684\u503c\u3002\u7d22\u5f15\u4e2d\u7684\u503c\u662f ''{5}''\uff0c\u57fa\u672c\u8868\u683c\u4e2d\u7684\u503c\u662f ''{6}''\u3002\u5305\u542b\u5217\u4f4d\u7f6e\u7684\u5b8c\u6574\u7d22\u5f15\u9375\u662f ''{7}''\u3002\u5efa\u8b70\u7684\u66f4\u6b63\u52d5\u4f5c\u662f\u91cd\u5efa\u7d22\u5f15\u3002
+X0X62.S=\u5728 ''{0}'' \u8868\u683c\u548c ''{1}'' \u7d22\u5f15\u4e4b\u9593\uff0c\u767c\u73fe\u4e0d\u4e00\u81f4\u7684\u60c5\u6cc1\u3002\u8a66\u5716\u5f9e\u8868\u683c\u4e2d\u64f7\u53d6\u5217\u4f4d\u7f6e ''{2}'' \u6642\uff0c\u767c\u751f\u932f\u8aa4\u3002\u5305\u542b\u5217\u4f4d\u7f6e\u7684\u5b8c\u6574\u7d22\u5f15\u9375\u662f ''{3}''\u3002\u5efa\u8b70\u7684\u66f4\u6b63\u52d5\u4f5c\u662f\u91cd\u5efa\u7d22\u5f15\u3002
+X0X63.S=\u53d6\u5f97 IOException ''{0}''\u3002
+X0X67.S=\u5728 CREATE INDEX\u3001ORDER BY\u3001GROUP BY\u3001UNION \u6216 DISTINCT \u4e2d\uff0c\u4e0d\u80fd\u4f7f\u7528 ''{0}'' \u985e\u578b\u7684\u76f4\u6b04\uff0c\u56e0\u70ba\u4e0d\u652f\u63f4\u9019\u985e\u578b\u7684\u6bd4\u8f03\u3002
+X0X81.S={0} ''{1}'' \u4e0d\u5b58\u5728\u3002
+X0X85.S=\u6c92\u6709\u5efa\u7acb ''{0}'' \u7d22\u5f15\uff0c\u56e0\u70ba ''{1}'' \u4e0d\u662f\u6709\u6548\u7684\u7d22\u5f15\u985e\u578b\u3002
+X0X86.S=0 \u662f\u7121\u6548\u7684 ResultSet.absolute(int row) \u53c3\u6578\u503c\u3002
+X0X87.S=\u7576\u6e38\u6a19\u6c92\u6709\u5b9a\u4f4d\u5728\u5217\u6642\uff0c\u7121\u6cd5\u547c\u53eb ResultSet.relative(int row)\u3002
+X0X95.S=\u7121\u6cd5\u57f7\u884c ''{1}'' \u7269\u4ef6\u7684 ''{0}'' \u4f5c\u696d\uff0c\u56e0\u70ba\u6709\u958b\u555f\u7684 ResultSet \u76f8\u4f9d\u65bc\u9019\u500b\u7269\u4ef6\u3002
+X0X99.S=''{0}'' \u7d22\u5f15\u4e0d\u5b58\u5728\u3002
+X0Y16.S=''{0}'' \u4e0d\u662f\u6982\u7565\u8868\u3002\u5982\u679c\u5b83\u662f\u8868\u683c\uff0c\u8acb\u6539\u7528 DROP TABLE\u3002
+X0Y23.S=\u7121\u6cd5\u57f7\u884c ''{1}'' \u7269\u4ef6\u7684 ''{0}'' \u4f5c\u696d\uff0c\u56e0\u70ba VIEW ''{2}'' \u76f8\u4f9d\u65bc\u9019\u500b\u7269\u4ef6\u3002
+X0Y24.S=\u7121\u6cd5\u57f7\u884c ''{1}'' \u7269\u4ef6\u7684 ''{0}'' \u4f5c\u696d\uff0c\u56e0\u70ba STATEMENT ''{2}'' \u76f8\u4f9d\u65bc\u9019\u500b\u7269\u4ef6\u3002
+X0Y25.S=\u7121\u6cd5\u57f7\u884c ''{1}'' \u7269\u4ef6\u7684 ''{0}'' \u4f5c\u696d\uff0c\u56e0\u70ba {2} ''{3}'' \u76f8\u4f9d\u65bc\u9019\u500b\u7269\u4ef6\u3002
+X0Y26.S=''{0}'' \u7d22\u5f15\u5fc5\u9808\u5728 ''{1}'' \u8868\u683c\u7684\u76f8\u540c\u7db1\u76ee\u4e2d\u3002
+X0Y28.S=\u7121\u6cd5\u5728\u7cfb\u7d71\u8868\u683c ''{1}'' \u4e2d\u5efa\u7acb ''{0}'' \u7d22\u5f15\u3002\u4f7f\u7528\u8005\u4e0d\u80fd\u5728\u7cfb\u7d71\u8868\u683c\u4e2d\u5efa\u7acb\u7d22\u5f15\u3002
+# column c already exists in table t.
+X0Y32.S={0} ''{1}'' \u5df2\u5728 {2} ''{3}'' \u4e2d\u3002
+X0Y38.S=\u7121\u6cd5\u5efa\u7acb ''{0}'' \u7d22\u5f15\uff0c\u56e0\u70ba ''{1}'' \u8868\u683c\u4e0d\u5b58\u5728\u3002
+X0Y41.S=''{0}'' \u9650\u5236\u7121\u6548\uff1a\u6240\u53c3\u7167\u7684\u8868\u683c {1} \u6c92\u6709\u4e3b\u8981\u7d22\u5f15\u9375\u3002\u8acb\u65b0\u589e\u4e3b\u8981\u7d22\u5f15\u9375\u81f3 {1} \u4e2d\uff0c\u6216\u660e\u78ba\u6307\u5b9a\u9019\u500b\u5916\u90e8\u7d22\u5f15\u9375\u6240\u53c3\u7167\u7684\u552f\u4e00\u9650\u5236\u7684\u76f4\u6b04\u6578\u3002
+X0Y42.S=''{0}'' \u9650\u5236\u7121\u6548\uff1a\u5916\u90e8\u7d22\u5f15\u9375\u76f4\u6b04\u7684\u985e\u578b\u4e0d\u7b26\u5408\u6240\u53c3\u7167\u76f4\u6b04\u7684\u985e\u578b\u3002
+X0Y43.S=''{0}'' \u9650\u5236\u7121\u6548\uff1a{0} ({1}) \u4e2d\u7684\u76f4\u6b04\u6578\u4e0d\u7b26\u5408\u6240\u53c3\u7167\u7d22\u5f15\u9375 ({2}) \u4e2d\u7684\u76f4\u6b04\u6578\u3002
+X0Y44.S=''{0}'' \u9650\u5236\u7121\u6548\uff1a\u5728 ''{1}'' \u8868\u683c\u4e2d\uff0c\u6c92\u6709\u7b26\u5408\u5916\u90e8\u7d22\u5f15\u9375\u4e2d\u7684\u76f4\u6b04\u6578\u548c\u985e\u578b\u7684\u552f\u4e00\u6216\u4e3b\u8981\u7d22\u5f15\u9375\u9650\u5236\u3002
+X0Y45.S=\u5916\u90e8\u7d22\u5f15\u9375\u9650\u5236 ''{0}'' \u7121\u6cd5\u65b0\u589e\u5230 {1} \u8868\u683c\u4e2d\uff0c\u56e0\u70ba\u6709\u4e00\u6216\u591a\u500b\u5916\u90e8\u7d22\u5f15\u9375\u6c92\u6709\u76f8\u7b26\u7684\u6240\u53c3\u7167\u7d22\u5f15\u9375\u3002
+X0Y46.S=''{0}'' \u9650\u5236\u7121\u6548\uff1a\u6240\u53c3\u7167\u7684\u8868\u683c {1} \u4e0d\u5b58\u5728\u3002
+X0Y54.S=\u7121\u6cd5\u9664\u53bb ''{0}'' \u7db1\u76ee\uff0c\u56e0\u70ba\u5b83\u4e0d\u662f\u7a7a\u7684\u3002
+X0Y55.S=\u57fa\u672c\u8868\u683c\u4e2d\u7684\u5217\u6578\u4e0d\u7b26\u5408\u8868\u683c\u81f3\u5c11\u4e00\u500b\u7d22\u5f15\u7684\u5217\u6578\u3002''{1}.{2}'' \u8868\u683c\u7684 ''{0}'' \u7d22\u5f15\u6709 {3} \u5217\uff0c\u4f46\u57fa\u672c\u8868\u683c\u6709 {4} \u5217\u3002\u5efa\u8b70\u7684\u66f4\u6b63\u52d5\u4f5c\u662f\u91cd\u5efa\u7d22\u5f15\u3002
+X0Y56.S=\u5728\u7cfb\u7d71\u8868\u683c ''{1}'' \u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}''\u3002
+X0Y57.S=\u4e0d\u80fd\u5c07\u4e0d\u53ef\u70ba null \u7684\u76f4\u6b04\u65b0\u589e\u5230 ''{0}'' \u8868\u683c\u4e2d\uff0c\u56e0\u70ba\u8868\u683c\u5305\u542b\u81f3\u5c11\u4e00\u5217\u3002\u4e0d\u53ef\u70ba null \u503c\u7684\u76f4\u6b04\u53ea\u80fd\u65b0\u589e\u81f3\u7a7a\u8868\u683c\u4e2d\u3002
+X0Y58.S=\u8a66\u5716\u65b0\u589e\u4e3b\u8981\u7d22\u5f15\u9375\u9650\u5236\u81f3 ''{0}'' \u8868\u683c\u5931\u6557\uff0c\u56e0\u70ba\u8868\u683c\u5df2\u6709\u9019\u985e\u578b\u7684\u9650\u5236\u3002\u8868\u683c\u53ea\u80fd\u6709\u55ae\u4e00\u4e3b\u8981\u7d22\u5f15\u9375\u9650\u5236\u3002
+X0Y59.S=\u8a66\u5716\u5728 ''{1}'' \u8868\u683c\u4e2d\u65b0\u589e\u6216\u555f\u7528\u9650\u5236\u5931\u6557\uff0c\u56e0\u70ba\u8868\u683c\u6709 {2} \u5217\u9055\u53cd\u4e0b\u5217\u6aa2\u67e5\u9650\u5236\uff1a{0}\u3002
+X0Y63.S=''{0}'' \u8868\u683c\u7684\u6307\u4ee4\u5931\u6557\u3002\u5728\u4e3b\u8981\u7d22\u5f15\u9375\u6216\u552f\u4e00\u9650\u5236/\u7d22\u5f15\u76f4\u6b04\u4e2d\uff0c\u627e\u5230 null \u8cc7\u6599\u3002\u4e3b\u8981\u6216\u552f\u4e00\u7d22\u5f15\u9375\u4e2d\u7684\u6240\u6709\u76f4\u6b04\u90fd\u5fc5\u9808\u4e0d\u662f null\u3002
+X0Y66.S=\u7576\u6bcd\u9805\u9023\u7dda\u4e2d\u6709\u64f1\u7f6e\u7684\u4f5c\u696d\u6642\uff0c\u4e0d\u80fd\u5728\u5de2\u72c0\u9023\u7dda\u4e2d\u767c\u51fa\u78ba\u5b9a\u6307\u5b9a\u3002
+X0Y67.S=\u7576\u6bcd\u9805\u9023\u7dda\u4e2d\u6709\u64f1\u7f6e\u7684\u4f5c\u696d\u6642\uff0c\u4e0d\u80fd\u5728\u5de2\u72c0\u9023\u7dda\u4e2d\u767c\u51fa\u56de\u5fa9\u6307\u5b9a\u3002
+X0Y68.S={0} ''{1}'' \u5df2\u7d93\u5b58\u5728\u3002
+X0Y69.S=\u4e0d\u5141\u8a31 {1}\uff0c\u56e0\u70ba {0} \u89f8\u767c\u5728 {2} \u4f5c\u7528\u4e2d\u3002
+X0Y70.S=\u5728 {1} \u8868\u683c\u4e2d\uff0c\u4e0d\u5141\u8a31\u57f7\u884c INSERT\u3001UPDATE \u548c DELETE\uff0c\u56e0\u70ba {0} \u89f8\u767c\u5728\u4f5c\u7528\u4e2d\u3002
+X0Y71.S=\u4e0d\u5141\u8a31 SET ISOLATION \u4e4b\u985e\u7684\u4ea4\u6613\u64cd\u4f5c\uff0c\u56e0\u70ba {0} \u89f8\u767c\u5728\u4f5c\u7528\u4e2d\u3002
+X0Y72.S=\u5728 ''{0}'' \u4e2d\uff0c\u4e0d\u5141\u8a31\u57f7\u884c\u5927\u91cf\u63d2\u5165\u53d6\u4ee3\uff0c\u56e0\u70ba\u5b83\u6709\u5df2\u555f\u7528\u7684\u89f8\u767c ({1})\u3002
+X0Y77.S=\u7121\u6cd5\u5728\u9032\u884c\u4e2d\u7684\u5ee3\u57df\u4ea4\u6613\u4e0a\uff0c\u767c\u51fa SET TRANSACTION ISOLATION \u9673\u8ff0\u5f0f\uff0c\u56e0\u70ba\u9019\u6642\u5b83\u5df2\u7d93\u96b1\u542b\u5730\u78ba\u5b9a\u5ee3\u57df\u4ea4\u6613\u3002
+
+X0Y78.S=\u7121\u6cd5\u5229\u7528\u50b3\u56de\u5217\u8a08\u6578\u7684\u9673\u8ff0\u5f0f\u4f86\u547c\u53eb Statement.executeQuery()\u3002
+X0Y79.S=\u7121\u6cd5\u5229\u7528\u50b3\u56de ResultSet \u7684\u9673\u8ff0\u5f0f\u4f86\u547c\u53eb Statement.executeUpdate()\u3002
+X0Y80.S=ALTER \u8868\u683c ''{0}'' \u5931\u6557\u3002\u5728 ''{1}'' \u76f4\u6b04\u4e2d\uff0c\u627e\u5230 null \u8cc7\u6599\u3002
+X0Y83.S=\u8b66\u544a\uff1a\u5728\u522a\u9664\u8868\u683c\u4e2d\u7684\u5217\u6642\uff0c\u5728\u805a\u96c6\u7269 ID \u70ba {1} \u7684\u7d22\u5f15\u4e2d\uff0c\u627e\u4e0d\u5230\u57fa\u672c\u8868\u683c\u5217 {0} \u7684\u7d22\u5f15\u5217\u3002\u5728\u522a\u9664\u4f5c\u696d\u4e2d\uff0c\u5df2\u81ea\u52d5\u66f4\u6b63\u9019\u500b\u554f\u984c\u3002
+XCL01.S=\u7d50\u679c\u96c6\u4e0d\u50b3\u56de\u5217\uff1b\u4e0d\u5141\u8a31\u57f7\u884c {0} \u4f5c\u696d\u3002
+XCL05.S=\u5df2\u95dc\u9589 Activation\uff0c\u4e0d\u5141\u8a31\u57f7\u884c {0} \u4f5c\u696d\u3002
+XCL07.S=\u5df2\u95dc\u9589 ''{0}'' \u6e38\u6a19\u3002\u8acb\u78ba\u8a8d\u81ea\u52d5\u78ba\u5b9a\u662f OFF\u3002
+XCL08.S=''{0}'' \u6e38\u6a19\u4e0d\u5728\u67d0\u5217\u4e2d\u3002
+XCL09.S=\u5df2\u5c07 Activation \u50b3\u905e\u81f3\u4e0d\u7b26\u5408 PreparedStatement \u7684 ''{0}'' \u65b9\u6cd5\u3002
+XCL10.S=\u5df2\u91cd\u65b0\u7de8\u8b6f PreparedStatement\uff0c\u4e14\u5df2\u8b8a\u66f4\u53c3\u6578\u3002\u5982\u679c\u60a8\u4f7f\u7528 JDBC\uff0c\u60a8\u5fc5\u9808\u91cd\u65b0\u6e96\u5099\u9673\u8ff0\u5f0f\u3002
+XCL12.S=\u8a66\u5716\u5c07 ''{0}'' \u985e\u578b\u7684\u8cc7\u6599\u503c\u653e\u5728 ''{1}'' \u985e\u578b\u7684\u8cc7\u6599\u503c\u4e2d\u3002
+XCL13.S=\u53c3\u6578\u4f4d\u7f6e ''{0}'' \u8d85\u51fa\u7bc4\u570d\u3002\u9019\u500b\u5099\u59a5\u9673\u8ff0\u5f0f\u7684\u53c3\u6578\u6578\u76ee\u662f ''{1}''\u3002
+XCL15.S=\u5728\u547c\u53eb ''{0}'' \u7269\u4ef6\u7684 compareTo() \u65b9\u6cd5\u6642\uff0c\u767c\u751f ClassCastException\u3002compareTo() \u7684\u53c3\u6578\u5c6c\u65bc ''{1}'' \u985e\u5225\u3002
+XCL16.S=\u6c92\u6709\u958b\u555f ResultSet\uff0c\u4e0d\u5141\u8a31\u57f7\u884c ''{0}'' \u4f5c\u696d\u3002\u8acb\u78ba\u8a8d\u81ea\u52d5\u78ba\u5b9a\u662f OFF\u3002
+XCL17.S=\u5728\u9019\u500b\u8cc7\u6599\u5eab\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 Statement\u3002
+XCL19.S=\u907a\u6f0f\u7d22\u5f15\u9375\u70ba ''{1}'' \u7684 ''{0}'' \u8868\u683c\u5176\u4e2d\u7684\u5217\u3002
+XCL20.S=\u7248\u672c\u5c64\u6b21 ''{0}'' \u7684\u578b\u9304\u7121\u6cd5\u5347\u7d1a\u81f3\u7248\u672c\u5c64\u6b21 ''{1}''\u3002
+XCL21.S=\u60a8\u5728\u6e96\u5099\u5176\u4ed6\u9673\u8ff0\u5f0f\u6642\uff0c\u8a66\u5716\u57f7\u884c\u300c\u8cc7\u6599\u5b9a\u7fa9\u300d\u9673\u8ff0\u5f0f\uff08CREATE\u3001DROP \u6216 ALTER\uff09\u3002\u9019\u662f\u4e0d\u5141\u8a31\u7684\u3002\u5982\u679c\u60a8\u5f9e SQL \u9673\u8ff0\u5f0f\u5167\u6b63\u5728\u4f7f\u7528\u7684 Java \u985e\u5225\u4e4b\u975c\u614b\u8d77\u59cb\u8a2d\u5b9a\u5143\u5167\u57f7\u884c\u300c\u8cc7\u6599\u5b9a\u7fa9\u300d\u9673\u8ff0\u5f0f\uff0c\u5c31\u53ef\u80fd\u767c\u751f\u9019\u500b\u60c5\u6cc1\u3002
+XCL22.S={0} \u70ba IN \u53c3\u6578\uff0c\u6545\u4e0d\u80fd\u767b\u9304\u70ba OUT \u53c3\u6578\u3002
+XCL23.S=SQL \u985e\u578b\u865f\u78bc ''{0}'' \u4e0d\u662f registerOutParameter() \u6240\u652f\u63f4\u7684\u985e\u578b\u3002
+XCL24.S={0} \u53c3\u6578\u5448\u73fe\u70ba\u8f38\u51fa\u53c3\u6578\uff0c\u4f46 registerOutParameter() \u6c92\u6709\u5982\u6b64\u6307\u5b9a\u3002\u5982\u679c\u5b83\u4e0d\u662f\u8f38\u51fa\u53c3\u6578\uff0c\u5c31\u5fc5\u9808\u8a2d\u70ba {1} \u985e\u578b\u3002
+XCL25.S={0} \u53c3\u6578\u4e0d\u80fd\u767b\u9304\u70ba {1} \u985e\u578b\uff0c\u56e0\u70ba\u5b83\u6703\u5c0d\u6620\u81f3 {2} \u985e\u578b\uff0c\u4e14\u5b83\u5011\u662f\u4e0d\u76f8\u5bb9\u7684\u3002
+XCL26.S={0} \u53c3\u6578\u4e0d\u662f\u8f38\u51fa\u53c3\u6578\u3002
+XCL27.S=\u7121\u6cd5\u8a2d\u5b9a\u50b3\u56de\u8f38\u51fa\u53c3\u6578\u3002
+XCL30.S=\u5f9e InputStream \u4e2d\u8b80\u53d6 ''{0}'' \u6642\uff0c\u64f2\u51fa IOException\u3002
+XCL31.S=\u5df2\u95dc\u9589 Statement\u3002
+
+# Delete Rule Restrictions Violation Messages
+XCL33.S=\u56e0\u70ba\u522a\u9664\u898f\u5247\u7684\u9650\u5236\uff0c\u8a72\u8868\u683c\u4e0d\u80fd\u5b9a\u7fa9\u6210\u8868\u683c {0} \u7684\u76f8\u4f9d\u9805\u3002\uff08\u6b64\u95dc\u4fc2\u70ba\u81ea\u884c\u53c3\u7167\uff0c\u4f46\u81ea\u884c\u53c3\u7167\u95dc\u4fc2\u5df2\u5b58\u5728\u4e14\u5177\u6709 SET NULL \u522a\u9664\u898f\u5247\u3002\uff09
+
+XCL34.S=\u56e0\u70ba\u522a\u9664\u898f\u5247\u7684\u9650\u5236\uff0c\u8a72\u8868\u683c\u4e0d\u80fd\u5b9a\u7fa9\u6210\u8868\u683c {0} \u7684\u76f8\u4f9d\u9805\u3002\uff08\u6b64\u95dc\u4fc2\u5f62\u6210\u5169\u500b\u6216\u5169\u500b\u4ee5\u4e0a\u8868\u683c\u7684\u5faa\u74b0\uff0c\u5c0e\u81f4\u8868\u683c\u5230\u672c\u8eab\u7684\u9023\u63a5\u88ab\u522a\u9664\uff08\u5faa\u74b0\u4e2d\u7684\u6240\u6709\u5176\u4ed6\u522a\u9664\u898f\u5247\u90fd\u662f CASCADE\uff09\uff09\u3002
+
+XCL35.S=\u56e0\u70ba\u522a\u9664\u898f\u5247\u7684\u9650\u5236\uff0c\u8a72\u8868\u683c\u4e0d\u80fd\u5b9a\u7fa9\u6210\u8868\u683c {0} \u7684\u76f8\u4f9d\u9805\u3002\uff08\u6b64\u95dc\u4fc2\u6703\u7d93\u7531\u591a\u91cd\u95dc\u4fc2\uff0c\u5c0e\u81f4\u8868\u683c\u5230\u6307\u5b9a\u8868\u683c\u7684\u9023\u63a5\u88ab\u522a\u9664\uff0c\u4e14\u73fe\u6709\u95dc\u4fc2\u7684\u522a\u9664\u898f\u5247\u70ba SET NULL\u3002\uff09
+
+
+XCL36.S=\u5916\u90e8\u7d22\u5f15\u9375\u7684\u522a\u9664\u898f\u5247\u5fc5\u9808\u70ba {0}\u3002\uff08\u53c3\u7167\u9650\u5236\u70ba\u81ea\u884c\u53c3\u7167\uff0c\u4e14\u73fe\u6709\u7684\u81ea\u884c\u53c3\u7167\u9650\u5236\u5177\u6709\u6307\u5b9a\u7684\u522a\u9664\u898f\u5247\uff08NO ACTION\u3001RESTRICT \u6216 CASCADE\uff09\u3002\uff09
+
+XCL37.S=\u5916\u90e8\u7d22\u5f15\u9375\u7684\u522a\u9664\u898f\u5247\u5fc5\u9808\u70ba {0}\u3002\uff08\u53c3\u7167\u9650\u5236\u70ba\u81ea\u884c\u53c3\u7167\uff0c\u4e14\u8868\u683c\u76f8\u4f9d\u65bc\u5177\u6709 CASCADE \u522a\u9664\u898f\u5247\u7684\u95dc\u4fc2\u3002\uff09
+XCL38.S=\u5916\u90e8\u7d22\u5f15\u9375\u7684\u522a\u9664\u898f\u5247\u5fc5\u9808\u70ba {0}\u3002\uff08\u6b64\u95dc\u4fc2\u6703\u7d93\u7531\u591a\u91cd\u95dc\u4fc2\uff0c\u5c0e\u81f4\u8868\u683c\u5230\u76f8\u540c\u8868\u683c\u7684\u9023\u63a5\u88ab\u522a\u9664\uff0c\u4e14\u9019\u985e\u95dc\u4fc2\u5fc5\u9808\u6709\u76f8\u540c\u7684\u522a\u9664\u898f\u5247\uff08NO ACTION\u3001RESTRICT \u6216 CASCADE\uff09\u3002\uff09
+
+
+XCL39.S=\u5916\u90e8\u7d22\u5f15\u9375\u7684\u522a\u9664\u898f\u5247\u4e0d\u53ef\u70ba CASCADE\u3002\uff08\u5177\u6709\u522a\u9664\u898f\u5247 SET NULL\u3001NO ACTION \u6216 RESTRICT \u7684\u81ea\u884c\u53c3\u7167\u9650\u5236\u5df2\u5b58\u5728\u3002\uff09
+
+XCL40.S=\u5916\u90e8\u7d22\u5f15\u9375\u7684\u522a\u9664\u898f\u5247\u4e0d\u53ef\u70ba CASCADE\u3002\uff08\u6b64\u95dc\u4fc2\u6703\u5f62\u6210\u4e00\u500b\u5faa\u74b0\uff0c\u5c0e\u81f4\u8868\u683c\u5230\u672c\u8eab\u7684\u9023\u63a5\u88ab\u522a\u9664\u3002\u5728\u5faa\u74b0\u4e2d\uff0c\u5176\u4e2d\u4e00\u500b\u73fe\u6709\u7684\u522a\u9664\u898f\u5247\u4e0d\u662f CASCADE\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u522a\u9664\u898f\u5247\u4e0d\u662f CASCADE\uff0c\u9019\u500b\u95dc\u4fc2\u5c31\u53ef\u4ee5\u88ab\u5b9a\u7fa9\u3002\uff09
+
+XCL41.S=\u5916\u90e8\u7d22\u5f15\u9375\u7684\u522a\u9664\u898f\u5247\u4e0d\u53ef\u70ba CASCADE\u3002\uff08\u6b64\u95dc\u4fc2\u6703\u7d93\u7531\u591a\u91cd\u5177\u6709\u4e0d\u540c\u522a\u9664\u898f\u5247\u7684\u8def\u5f91\uff0c\u6216\u662f\u5177\u6709\u522a\u9664\u898f\u5247\u7b49\u65bc SET NULL \u7684\u8def\u5f91\uff0c\u5c0e\u81f4\u53e6\u4e00\u500b\u8868\u683c\u5230\u76f8\u540c\u7684\u8868\u683c\u7684\u9023\u63a5\u88ab\u522a\u9664\u3002\uff09
+
+XCL42.S="CASCADE"
+XCL43.S="SET NULL"
+XCL44.S="RESTRICT"
+XCL45.S="NO ACTION"
+XCL46.S="SET DEFAULT"
+
+XCL47.S=\u4f7f\u7528 ''{0}'' \u6642\uff0c\u9700\u8981\u5c07\u8cc7\u6599\u5eab\u5f9e\u7248\u672c {1} \u5347\u7d1a\u6210\u7248\u672c {2} \u6216\u8f03\u65b0\u7248\u672c\u3002
+
+XCL48.S= ''{0}'' \u4e2d\u4e0d\u5141\u8a31 TRUNCATE TABLE\uff0c\u56e0\u70ba\u5176\u4ed6\u8868\u683c\u555f\u7528\u7684\u5916\u90e8\u7d22\u5f15\u9375\u9650\u5236\u6703\u53c3\u7167\u9019\u500b\u8868\u683c\u4e0a\u7684\u552f\u4e00/\u4e3b\u8981\u7d22\u5f15\u9375\u9650\u5236\u3002
+XCL49.S= ''{0}'' \u4e0a\u4e0d\u5141\u8a31 TRUNCATE TABLE\uff0c\u56e0\u70ba\u5b83\u5df2\u555f\u7528 DELETE \u89f8\u767c\u7a0b\u5f0f ({1})\u3002
+XCL50.S=\u4e0d\u652f\u63f4\u5f9e\u820a\u7248\u5347\u7d1a\u7684\u8cc7\u6599\u5eab\u3002\u6b63\u5728\u5b58\u53d6\u7684\u8cc7\u6599\u5eab\u4e4b\u7248\u672c\u5c64\u6b21\u70ba ''{0}''\uff0c\u800c\u9019\u500b\u8edf\u9ad4\u7684\u7248\u672c\u5c64\u6b21\u70ba ''{1}''\u3002
+
+
+# Transaction states, matches DB2
+25000=\u7121\u6548\u7684\u4ea4\u6613\u72c0\u614b\u3002
+
+# Authorization
+25501=\u7121\u6cd5\u5728\u4f5c\u7528\u4ea4\u6613\u4e2d\uff0c\u8a2d\u5b9a\u9023\u7dda\u552f\u8b80\u5167\u5bb9\u3002
+25502=\u552f\u8b80\u9023\u7dda\u3001\u4f7f\u7528\u8005\u6216\u8cc7\u6599\u5eab\u4e0d\u5141\u8a31\u57f7\u884c SQL \u8cc7\u6599\u8b8a\u66f4\u3002
+25503=\u552f\u8b80\u9023\u7dda\u3001\u4f7f\u7528\u8005\u6216\u8cc7\u6599\u5eab\u4e0d\u5141\u8a31\u57f7\u884c DDL\u3002
+25505=\u4e0d\u5141\u8a31\u552f\u8b80\u4f7f\u7528\u8005\u6216\u5728\u552f\u8b80\u8cc7\u6599\u5eab\u4e2d\u7684\u4f7f\u7528\u8005\u505c\u7528\u9023\u7dda\u7684\u552f\u8b80\u6a21\u5f0f\u3002
+28501=\u8cc7\u6599\u5eab\u6388\u6b0a\u5167\u5bb9 ''{0}={1}'' \u7121\u6548\u3002
+28502.C=\u4f7f\u7528\u8005\u540d\u7a31 ''{0}'' \u7121\u6548\u3002
+
+28503=\u4f7f\u7528\u8005 ''{0}'' \u4e0d\u80fd\u540c\u6642\u5728\u552f\u8b80\u548c\u5b8c\u6574\u5b58\u53d6\u6388\u6b0a\u6e05\u55ae\u4e2d\u3002
+28504=\u5b58\u53d6\u6e05\u55ae ''{0}'' \u4e2d\u7684\u4f7f\u7528\u8005 ''{1}'' \u91cd\u8907\uff1b
+04501.C=\u5df2\u62d2\u7d55\u8cc7\u6599\u5eab\u9023\u7dda\u3002
+
+
+# Dependency Manager
+XD003.S=\u7121\u6cd5\u5f9e\u78c1\u789f\u9084\u539f\u76f8\u4f9d\u95dc\u4fc2\u3002DependableFinder = ''{0}''\u3002\u9032\u4e00\u6b65\u7684\u8cc7\u8a0a\uff1a''{1}''\u3002
+XD004.S=\u7121\u6cd5\u5132\u5b58\u76f8\u4f9d\u95dc\u4fc2\u3002
+
+
+#../java/com/ibm/db2j/impl/Connectivity/JDBC/Local/messages.properties
+24000=\u6e38\u6a19\u72c0\u614b\u7121\u6548 - \u6c92\u6709\u73fe\u884c\u5217\u3002
+
+07000=\u73fe\u884c\u9673\u8ff0\u5f0f\u81f3\u5c11\u6709\u4e00\u500b\u53c3\u6578\u6c92\u6709\u8d77\u59cb\u8a2d\u5b9a\u3002
+
+# 07004 : {0} is an number {1) is fixed text OUT or INOUT
+07004=\u53c3\u6578 {0} \u662f {1} \u7a0b\u5e8f\u53c3\u6578\uff0c\u4e14\u5fc5\u9808\u5148\u767b\u9304\u5728 CallableStatement.registerOutParameter\uff0c\u624d\u80fd\u57f7\u884c\u3002
+
+07009=\u6c92\u6709\u8f38\u5165\u53c3\u6578\u3002
+
+S0022=\u627e\u4e0d\u5230\u7b2c ''{0}'' \u6b04\u3002
+XJ009.S=\u5132\u5b58\u7a0b\u5e8f\u547c\u53eb\u6216\u4f7f\u7528\u8f38\u51fa\u53c3\u6578\u6642\uff0c\u9700\u4f7f\u7528 CallableStatement\uff1a{0}
+XJ010.S=\u7121\u6cd5\u5728 autoCommit \u958b\u555f\u6642\u767c\u51fa\u5132\u5b58\u9ede\u3002
+XJ011.S=\u7121\u6cd5\u70ba\u5132\u5b58\u9ede\u540d\u7a31\u50b3\u905e null\u3002
+XJ012.S=''{0}'' \u5df2\u7d93\u95dc\u9589\u3002
+XJ013.S=\u6307\u540d\u7684\u5132\u5b58\u9ede\u6c92\u6709 ID\u3002
+XJ014.S=\u672a\u6307\u540d\u7684\u5132\u5b58\u9ede\u6c92\u6709\u540d\u7a31\u3002
+XJ016.S=\u5728\u5099\u59a5\u9673\u8ff0\u5f0f\u4e2d\uff0c\u4e0d\u5141\u8a31\u4f7f\u7528 ''{0}'' \u65b9\u6cd5\u3002
+XJ017.S=\u89f8\u767c\u78bc\u5167\u4e0d\u53ef\u6709\u5132\u5b58\u9ede\u6307\u4ee4\u3002
+XJ018.S=\u76f4\u6b04\u540d\u7a31\u4e0d\u80fd\u70ba null\u3002
+XJ020.S=\u7269\u4ef6\u985e\u578b\u4e0d\u80fd\u8f49\u63db\u70ba TYPE ''{0}''\uff0cjava.sql.Types \u503c\u7121\u6548\uff0c\u6216\u7269\u4ef6\u662f null\u3002
+XJ022.S=\u7121\u6cd5\u8a2d\u5b9a\u4e32\u6d41\uff1a''{0}''\u3002
+XJ023.S=\u8f38\u5165\u4e32\u6d41\u4fdd\u7559\u7684\u8cc7\u6599\u6bd4\u6240\u8981\u6c42\u7684\u9577\u5ea6\u5c11\u3002
+XJ025.S=\u8f38\u5165\u4e32\u6d41\u7684\u9577\u5ea6\u4e0d\u53ef\u70ba\u8ca0\u503c\u3002
+XJ030.S=\u7576\u5728\u5de2\u72c0\u9023\u7dda\u4e2d\uff0c\u4e0d\u80fd\u8a2d\u5b9a AUTOCOMMIT ON\u3002
+XJ042.S=''{0}'' \u4e0d\u662f ''{1}'' \u5167\u5bb9\u7684\u6709\u6548\u503c\u3002
+XJ044.S=''{0}'' \u662f\u7121\u6548\u7684\u5c0f\u6578\u4f4d\u6578\u3002
+XJ045.S=\u5c07\u7121\u6548\u6216\uff08\u76ee\u524d\uff09\u4e0d\u652f\u63f4\u7684\u9694\u96e2\u5c64\u6b21 ''{0}'' \u50b3\u7d66 Connection.setTransactionIsolationLevel()\u3002\u76ee\u524d\u652f\u63f4\u7684\u503c\u70ba java.sql.Connection.TRANSACTION_SERIALIZABLE\u3001java.sql.Connection.TRANSACTION_REPEATABLE_READ\u3001java.sql.Connection.TRANSACTION_READ_COMMITTED \u53ca java.sql.Connection.TRANSACTION_READ_UNCOMMITTED\u3002
+XJ04B.S=\u6279\u6b21\u4e0d\u80fd\u5305\u542b\u8a66\u5716\u50b3\u56de\u7d50\u679c\u96c6\u7684\u6307\u4ee4\u3002
+XJ04C.S=CallableStatement \u6279\u6b21\u4e0d\u80fd\u5305\u542b\u8f38\u51fa\u53c3\u6578\u3002
+XJ056.S=\u7576\u5728 XA \u9023\u7dda\u4e2d\uff0c\u4e0d\u80fd\u8a2d\u5b9a AUTOCOMMIT ON\u3002
+XJ057.S=\u7121\u6cd5\u5229\u7528\u9023\u7dda\u4f86\u78ba\u5b9a\u5ee3\u57df\u4ea4\u6613\uff0c\u78ba\u5b9a\u8655\u7406\u7a0b\u5e8f\u5fc5\u9808\u901a\u904e XAResource \u4ecb\u9762\u3002
+XJ058.S=\u7121\u6cd5\u5229\u7528\u9023\u7dda\u4f86\u56de\u5fa9\u5ee3\u57df\u4ea4\u6613\uff0c\u78ba\u5b9a\u8655\u7406\u7a0b\u5e8f\u5fc5\u9808\u901a\u904e XAResource \u4ecb\u9762\u3002
+XJ059.S=\u7576\u6709\u5ee3\u57df\u4ea4\u6613\u4ecd\u5728\u4f5c\u7528\u4e2d\uff0c\u4e0d\u80fd\u95dc\u9589\u9023\u7dda\u3002
+XJ05C.S=\u7121\u6cd5\u5c0d\u5ee3\u57df\u4ea4\u6613\u8a2d\u5b9a\u4fdd\u7279\u80fd\u529b ResultSet.HOLD_CURSORS_OVER_COMMIT\u3002
+XJ061.S=\u53ea\u6709\u6372\u52d5\u6e38\u6a19\u53ef\u4ee5\u4f7f\u7528 ''{0}'' \u65b9\u6cd5\u3002
+XJ062.S=ResultSet.setFetchSize(int rows) \u7684\u53c3\u6578\u503c ''{0}'' \u7121\u6548\u3002
+XJ063.S=Statement.setMaxRows(int maxRows) \u7684\u53c3\u6578\u503c ''{0}'' \u7121\u6548\u3002\u53c3\u6578\u503c\u5fc5\u9808 >= 0\u3002
+XJ064.S=setFetchDirection(int direction) \u7684\u53c3\u6578\u503c ''{0}'' \u7121\u6548\u3002
+XJ065.S=Statement.setFetchSize(int rows) \u7684\u53c3\u6578\u503c ''{0}'' \u7121\u6548\u3002
+XJ066.S=Statement.setMaxFieldSize(int max) \u7684\u53c3\u6578\u503c ''{0}'' \u7121\u6548\u3002
+XJ067.S=SQL \u6587\u5b57\u6307\u6a19\u662f null\u3002
+XJ068.S=\u5728\u6279\u6b21\u7684\u4e2d\u9593\uff0c\u53ea\u80fd\u4f7f\u7528 executeBatch \u548c clearBatch\u3002
+XJ069.S=Execute Statement Using \u4e0d\u53ef\u6709 SetXXX \u65b9\u6cd5\u3002
+XJ080.S=Execute Statement Using \u50b3\u905e\u4e86 {0} \u500b\u800c\u975e {1} \u500b\u53c3\u6578\u3002
+XJ070.S=\u5728 Blob \u6216 Clob \u65b9\u6cd5\u4e2d\u50b3\u905e\u8ca0\u6216\u96f6\u7684\u4f4d\u7f6e\u5f15\u6578 ''{0}''\u3002
+XJ071.S=\u5728 Blob \u6216 Clob \u65b9\u6cd5\u4e2d\u50b3\u905e\u96f6\u6216\u8ca0\u7684\u9577\u5ea6\u5f15\u6578 ''{0}''\u3002
+XJ072.S=\u5728 Blob \u6216 Clob \u4f4d\u7f6e\u65b9\u6cd5\u4e2d\uff0c\u50b3\u5165 null \u578b\u6a23\u6216 searchStr\u3002
+XJ073.S=\u9019\u500b Blob \u6216 Clob \u4e2d\u7684\u8cc7\u6599\u5df2\u7121\u6cd5\u4f7f\u7528\u3002\u53ef\u80fd\u662f\u56e0\u70ba\u5b83\u7684\u4ea4\u6613\u5df2\u7d93\u78ba\u5b9a\u6216\u9023\u7dda\u5df2\u7d93\u95dc\u9589\u3002
+XJ076.S=\u4f4d\u7f6e\u5f15\u6578 ''{0}'' \u8d85\u51fa Blob/Clob \u7684\u5927\u5c0f\u3002
+XJ077.S=\u5728\u8a66\u5716\u5229\u7528 getBytes/getSubString \u4f86\u8b80\u53d6 Blob/Clob \u578b\u6a23\u7684\u7b2c\u4e00\u500b\u4f4d\u5143\u7d44/\u5b57\u5143\u6642\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1\u3002
+XJ082.U=BLOB/CLOB \u503c\u4e0d\u80fd\u7576\u4f5c\u65b9\u6cd5\u53c3\u6578\u6216\u63a5\u6536\u7aef\u3002
+
+0A000.S=\u6c92\u6709\u5be6\u4f5c\u7279\u6027\uff1a{0}\u3002
+
+XJ004.C=\u627e\u4e0d\u5230 ''{0}'' \u8cc7\u6599\u5eab\u3002
+08004=\u9023\u7dda\u906d\u5230\u62d2\u7d55\uff1a{0}
+A020=\u9451\u5225\u7121\u6548\u3002
+08003=\u6c92\u6709\u73fe\u884c\u9023\u7dda\u3002
+XJ028.C=URL ''{0}'' \u7684\u5f62\u5f0f\u4e0d\u7576\u3002
+XJ040.C=\u7121\u6cd5\u555f\u52d5 ''{0}'' \u8cc7\u6599\u5eab\uff0c\u8acb\u53c3\u95b1\u4e0b\u500b\u7570\u5e38\u72c0\u6cc1\uff0c\u4ee5\u53d6\u5f97\u8a73\u7d30\u8cc7\u6599\u3002
+XJ041.C=\u7121\u6cd5\u5efa\u7acb ''{0}'' \u8cc7\u6599\u5eab\uff0c\u8acb\u53c3\u95b1\u4e0b\u500b\u7570\u5e38\u72c0\u6cc1\uff0c\u4ee5\u53d6\u5f97\u8a73\u7d30\u8cc7\u6599\u3002
+XJ049.C=\u6307\u5b9a\u885d\u7a81\u7684\u5efa\u7acb\u5c6c\u6027\u3002
+XJ081.C=\u6307\u5b9a\u885d\u7a81\u7684\u5efa\u7acb/\u9084\u539f/\u56de\u5fa9\u5c6c\u6027\u3002
+XJ05B.C=JDBC \u5c6c\u6027 ''{0}'' \u6709\u4e00\u500b\u7121\u6548\u7684\u503c ''{1}''\uff0c\u6709\u6548\u503c\u662f ''{2}''\u3002
+
+XXXXX.C.6=\u4e00\u822c\u8cc7\u6599\u5eab\u968e\u6bb5\u4f5c\u696d\u95dc\u9589\u3002
+
+08006.D=\u8cc7\u6599\u5eab ''{0}'' \u5df2\u7d93\u95dc\u9589\u3002
+
+XJ015.M=Derby \u7cfb\u7d71\u5df2\u7d93\u95dc\u9589\u3002
+
+01J01=\u6c92\u6709\u5efa\u7acb\u8cc7\u6599\u5eab ''{0}''\uff0c\u6539\u5efa\u7acb\u901a\u5f80\u73fe\u6709\u8cc7\u6599\u5eab\u7684\u9023\u7dda\u3002
+01J02=\u76ee\u524d\u6c92\u6709\u5be6\u4f5c\u6703\u611f\u61c9\u6372\u52d5\u7684\u6e38\u6a19\u3002
+01J03=\u76ee\u524d\u6c92\u6709\u5be6\u4f5c\u53ef\u66f4\u65b0\u7684 ResultSets\u3002
+01J04=''{1}'' \u76f4\u6b04\u7684 ''{0} \u985e\u5225\u6c92\u6709\u5be6\u4f5c java.io.Serializable \u6216 java.sql.SQLData\u3002\u5be6\u4f8b\u5fc5\u9808\u5be6\u4f5c\u9019\u4e9b\u4ecb\u9762\u4e4b\u4e00\uff0c\u5b83\u5011\u624d\u80fd\u5132\u5b58\u3002
+01J05=\u8cc7\u6599\u5eab\u5347\u7d1a\u9806\u5229\u5b8c\u6210\u3002\u73fe\u5728\uff0c\u5347\u7d1a\u904e\u7684\u8cc7\u6599\u5eab\u5df2\u6e96\u5099\u597d\uff0c\u53ef\u4ee5\u958b\u59cb\u4f7f\u7528\u3002\u91cd\u65b0\u9a57\u8b49\u5132\u5b58\u5099\u59a5\u9673\u8ff0\u5f0f\u5931\u6557\u3002\u8acb\u53c3\u95b1\u4e0b\u4e00\u500b\u7570\u5e38\u72c0\u6cc1\uff0c\u4ee5\u53d6\u5f97\u5931\u6557\u7684\u8a73\u7d30\u8cc7\u6599\u3002
+XJ001.U=Java \u7570\u5e38\u72c0\u6cc1\uff1a''{1}: {0}''\u3002
+XJ050.U=\u5fc5\u9808\u5c07\u8cc7\u6599\u5eab\u5f9e\u7248\u672c {0} \u5347\u7d1a\uff0c\u8acb\u5728 JDBC \u9023\u7dda URL \u4e0a\u8a2d\u5b9a\u5c6c\u6027 ''upgrade=true''\uff0c\u624d\u80fd\u5347\u7d1a\u6210\u7248\u672c {1}\u3002
+
+
+# org.apache.derby.database.UserUtility
+#
+XCZ00.S=''{0}'' \u8a31\u53ef\u6b0a\u4e0d\u660e\u3002
+XCZ01.S=''{0}'' \u4f7f\u7528\u8005\u4e0d\u660e\u3002
+XCZ02.S=''{0}''=''{1}'' \u53c3\u6578\u7121\u6548\u3002
+
+# SQL J Jar support
+46001=\u5229\u7528 URL ''{0}'' \u4f86\u5b58\u53d6 Jar \u6a94\u6642\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1\u3002
+
+###############################################################################
+#
+# Text for non-exception strings
+#
+###############################################################################
+
+# Log
+L001=------------  \u932f\u8aa4\u8a0a\u606f\u958b\u59cb -------------\n
+L002=------------  \u932f\u8aa4\u8a0a\u606f\u7d50\u675f -------------\n
+L003=\n------------  \u95dc\u6a5f\u932f\u8aa4\u5806\u758a\u958b\u59cb -------------\n
+L004=\n------------  \u95dc\u6a5f\u932f\u8aa4\u5806\u758a\u7d50\u675f -------------\n
+L005=\n------------  \u932f\u8aa4\u5806\u758a\u958b\u59cb -------------\n
+L006=\n------------  \u932f\u8aa4\u5806\u758a\u7d50\u675f -------------\n
+L007=\u8b66\u544a\uff1a\u627e\u4e0d\u5230\u65e5\u8a8c\u6a94\uff0c\u6b63\u5728\u5efa\u7acb\u65b0\u65e5\u8a8c\u3002\u53ef\u80fd\u662f\u8cc7\u6599\u5eab\u4e2d\u6709\u4e0d\u4e00\u81f4\u7684\u60c5\u6cc1
+L008=\u6b63\u5728\u522a\u9664\u4e0d\u76f8\u5bb9\u7684\u820a Logfile {0}
+L009=\u6b63\u5728\u522a\u9664\u820a Logfile {0}
+L010=\u5f9e\u4f4d\u7f6e {1} \u81f3 {2} \u7684 eof \u4e2d\u6e05\u9664\u65e5\u8a8c\u6a94\u6642\uff0c\u5728 {0} \u6a94\u6848\u4e2d\u5075\u6e2c\u5230\u4e0d\u5b8c\u6574\u7684\u65e5\u8a8c\u8a18\u9304\u3002
+L011=\u6838\u5c0d\u9ede\u5e38\u99d0\u7a0b\u5f0f\u6355\u6349\u5230\u6a19\u6e96\u7570\u5e38\u72c0\u6cc1
+L012=\u65e5\u8a8c\u8a18\u9304\u4e0d\u662f\u7b2c\u4e00\u500b\uff0c\u4f46\u4ea4\u6613\u4e0d\u5728\u4ea4\u6613\u8868\u683c\u4e2d\uff1a{0}
+L013=\u65e5\u8a8c\u8a18\u9304\u662f\u7b2c\u4e00\u500b\uff0c\u4f46\u4ea4\u6613\u5df2\u5728\u4ea4\u6613\u8868\u683c\u4e2d\uff1a{0}
+L014=\u555f\u52d5\u77ac\u6642\u4e0d\u7576
+L015=\u65b0\u65e5\u8a8c\u6a94\u5b58\u5728\uff0c\u4e14\u7121\u6cd5\u522a\u9664 {0}
+L016=\u7121\u6cd5\u5efa\u7acb\u65b0\u65e5\u8a8c\u6a94 {0}
+L017=\u7121\u6cd5\u5efa\u7acb\u65b0\u65e5\u8a8c\u6a94 {0}\uff0c\u56e0\u70ba {1}
+L018=\u7cfb\u7d71\u53ef\u80fd\u5728\u4e0d\u4e00\u81f4\u7684\u72c0\u614b\u4e2d\uff0c\u907a\u6f0f {0} \u6a94
+
+# Class Manager
+C000=\u5df2\u5c07 {0} \u985e\u5225\u5beb\u5165 {1} \u6a94\u4e2d\u3002\u8acb\u5229\u7528\u9019\u500b\u6a94\u6848\u548c\u4e0b\u5217\u7570\u5e38\u72c0\u6cc1\u8cc7\u8a0a\u4f86\u63d0\u4f9b\u652f\u63f4\uff1a{2}
+C001=\u5728 jar {1} \u4e2d\uff0c{0} \u985e\u5225\u6709\u4e0d\u660e\u7684\u6191\u8b49\u985e\u578b\uff0c\u539f\u9810\u671f\u662f X509 \u6191\u8b49\u3002
+C002=\u5b58\u53d6 jar {1} \u4e2d\u7684 {0} \u985e\u5225\u6642\uff0c\u64f2\u51fa\u5b89\u5168\u7570\u5e38\u72c0\u6cc1\uff1a{2}
+C003=\u8f09\u5165\u8cc7\u6599\u5eab jar {0} \u6642\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1 - {1}
+C004={0} \u985e\u5225\u7684\u820a\u985e\u5225\u8f09\u5165\u5668
+C005=\u5df2\u555f\u52d5\u8cc7\u6599\u5eab\u985e\u5225\u8f09\u5165\u5668 - derby.database.classpath=''{0}''
+C006=\u5df2\u5f9e\u8cc7\u6599\u5eab jar {1} \u4e2d\u8f09\u5165 {0}
+C007=\u5f9e jar {1} \u4e2d\u8f09\u5165\u985e\u5225 {0} \u6642\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1 - {2}
+
+# RawStore Data
+
+D001=\uff1a\n \u6b63\u5728\u555f\u52d5 Derby \u7248\u672c{0}\uff1a\u5be6\u4f8b {1}\n\u6240\u5728\u8cc7\u6599\u5eab\u76ee\u9304\u662f {2} \n
+D002=:\n\u95dc\u9589\u5be6\u4f8b {0}
+D004=\u5df2\u555f\u52d5\u5728 {0} \u7684\u8cc7\u6599\u5eab\u7684\u5099\u4efd\u4f5c\u696d
+D005=\u5df2\u5f9e {0} \u4e2d\uff0c\u5c07\u820a\u5099\u4efd\u79fb\u81f3 {1}
+D006=\u5df2\u5f9e {0} \u4e2d\uff0c\u5c07\u8cc7\u6599\u5eab\u76ee\u9304\u8907\u88fd\u81f3 {1}
+D007=\u5df2\u7de8\u8f2f\u8cc7\u6599\u5eab service.properties \u4f86\u4f7f\u7528\u9810\u8a2d\u65e5\u8a8c\u88dd\u7f6e
+D008=\u7de8\u8f2f\u8cc7\u6599\u5eab service.properties \u6642\uff0c\u767c\u751f\u932f\u8aa4\uff0c\u5df2\u4e2d\u6b62\u5099\u4efd\uff1a{0}
+D009=\u5df2\u5f9e {0} \u4e2d\uff0c\u5c07\u65e5\u8a8c\u76ee\u9304\u8907\u88fd\u81f3 {1}
+D010=\u767c\u751f\u932f\u8aa4\uff0c\u5099\u4efd\u5df2\u4e2d\u6b62
+D011=\u5df2\u79fb\u9664\u5728 {0} \u7684\u820a\u5099\u4efd
+D012=\u5099\u4efd\u5df2\u5b8c\u6210\uff0c\u65e5\u8a8c\u77ac\u6642\u5728 {0} \n
+
+# Connectivity 
+J004=\u8cc7\u6599\u5eab\u8eab\u5206
+J005=\u95dc\u9589 Derby
+J007=\u5efa\u7acb\u8cc7\u6599\u5eab
+J008=\u6c92\u6709\u8a73\u7d30\u8cc7\u6599
+J010=\u78c1\u789f\u4e2d\u7684\u52a0\u5bc6\u8cc7\u6599\u5eab
+J013=\u5347\u7d1a\u8cc7\u6599\u5eab
+J016=\u52a0\u5bc6\u670d\u52d9\u63d0\u4f9b\u8005
+J017=\u52a0\u5bc6\u6f14\u7b97\u6cd5
+J018=\u52a0\u5bc6\u91d1\u9470\u9577\u5ea6
+J019=\u5916\u90e8\u52a0\u5bc6\u91d1\u9470
+J020=\u79d8\u5bc6\u52a0\u5bc6\u91d1\u9470
+J021=\u8cc7\u6599\u5eab\u7684\u5340\u57df
+J022=\u4f7f\u7528\u8005\u540d\u7a31
+J023=\u4f7f\u7528\u8005\u5bc6\u78bc
+J025=\u65e5\u8a8c\u76ee\u9304\u8def\u5f91
+J028=rollforward \u56de\u5fa9\u7684\u5099\u4efd\u8def\u5f91
+J100=\u627e\u4e0d\u5230\u7db2\u8def\u4f3a\u670d\u5668\u985e\u5225 {0}\u3002\u60a8\u7684\u985e\u5225\u8def\u5f91\u61c9\u5305\u542b csnet.jar\u3002
+J101=\u7121\u6cd5\u8f09\u5165\u7db2\u8def\u4f3a\u670d\u5668\u985e\u5225{0}\u3002{1}  \u8acb\u6aa2\u67e5 csnet.jar \u6a94\u7684\u5b8c\u6574\u6027\u3002
+J102=\u5728\u7db2\u8def\u4f3a\u670d\u5668\u555f\u52d5\u671f\u9593\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1\u3002{0}
+J103=\u5728\u7db2\u8def\u4f3a\u670d\u5668\u95dc\u9589\u671f\u9593\uff0c\u64f2\u51fa\u7570\u5e38\u72c0\u6cc1\u3002{0}
+
+# Authentication
+A001=\u56b4\u91cd\uff1a\u6c92\u6709\u7cfb\u7d71\u7684\u9451\u5225\u670d\u52d9\u3002
+A002=\u56b4\u91cd\uff1a\u6c92\u6709\u8cc7\u6599\u5eab\u7684\u9451\u5225\u670d\u52d9\u3002
+A011=\u8b66\u544a\uff1a\u6c92\u6709 {0} \u5167\u5bb9\u6240\u63d0\u53ca\u7684 LDAP \u4f3a\u670d\u5668/\u4e3b\u96fb\u8166\u540d\u7a31\uff1b\u4f7f\u7528 localhost:389
+
+I015=\u672a\u5411 JDBC \u9a45\u52d5\u7a0b\u5f0f\u7ba1\u7406\u7a0b\u5f0f\u767b\u9304 org.apache.derby.jdbc.EmbeddedDriver
+I024=\u7121\u6cd5\u4f7f\u7528\u8cc7\u6599\u5eab
+I025=\u7121\u6cd5\u4f7f\u7528 JDBC \u9a45\u52d5\u7a0b\u5f0f
+
+# Import/Export
+XIE01.S=\u9023\u7dda\u662f null\u3002
+XIE03.S=\u5728\u7b2c {0} \u884c\u7684\u505c\u6b62\u5b9a\u754c\u7b26\u865f\u4e4b\u5f8c\uff0c\u627e\u5230\u7b2c {1} \u6b04\u7684\u8cc7\u6599
+XIE04.S=\u627e\u4e0d\u5230\u8cc7\u6599\u6a94\uff1a{0}
+XIE05.S=\u8cc7\u6599\u6a94\u4e0d\u80fd\u662f null\u3002
+XIE06.S=\u5be6\u9ad4\u540d\u7a31\u662f null\u3002
+XIE07.S=\u6b04\u4f4d\u548c\u8a18\u9304\u5206\u9694\u5b57\u5143\u4e0d\u80fd\u4e92\u70ba\u5b50\u5b57\u4e32\u3002
+XIE08.S=\u6c92\u6709\u540d\u7a31\u70ba {0} \u7684\u76f4\u6b04
+XIE09.S=\u5217\u4e2d\u7684\u7e3d\u76f4\u6b04\u6578\u662f {0}
+XIE0B.S=\u8868\u683c\u4e2d\u7684\u76f4\u6b04 ''{0}'' \u4e4b\u985e\u578b\u70ba {1}\uff0c\u5176\u4e0d\u53d7\u532f\u5165/\u532f\u51fa\u652f\u63f4\u3002
+XIE0D.S=\u5728\u7b2c {0} \u884c\u4e2d\uff0c\u627e\u4e0d\u5230\u6a94\u6848\u8a18\u9304\u5206\u9694\u5b57\u5143
+XIE0E.S=\u5728\u7b2c {0} \u884c\u975e\u9810\u671f\u7684\u4f4d\u7f6e\u8b80\u53d6 endOfFile
+XIE0I.S=\u5c07\u8cc7\u6599\u5beb\u5165\u6a94\u6848\u6642\uff0c\u53d6\u5f97 IOException\u3002
+XIE0J.S=\u5b9a\u754c\u5b57\u5143\u7121\u6548\u6216\u662f\u4f7f\u7528\u4e00\u6b21\u4ee5\u4e0a\u3002
+XIE0K.S=\u6307\u5b9a\u4e86\u53e5\u9ede\u4f5c\u70ba\u5b57\u4e32\u5340\u9694\u5b57\u5143\u3002
+XIE0M.S=''{0}'' \u8868\u683c\u4e0d\u5b58\u5728\u3002
+
+# Monitor
+M001=\n# ********************************************************************\n# ***                Please do NOT edit this file.                 ***\n# *** CHANGING THE CONTENT OF THIS FILE MAY CAUSE DATA CORRUPTION. ***\n# ********************************************************************
+
+
+
+
+#  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#
+#
+#  DO NOT TRANSLATE MESSAGES OR TEXT BELOW THIS LINE
+#
+#
+# ----------------------------------------------------------------------------------------------------------
+
+

Added: incubator/derby/code/trunk/java/testing/README.htm
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/README.htm	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1001 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta content="text/html; charset=ISO-8859-1"
+ http-equiv="content-type">
+  <title>readme.htm</title>
+</head>
+<body>
+<h1><a class="mozTocH1" name="mozTocId934928"></a>Derby Functional Tests<br>
+</h1>
+<h2><a class="mozTocH2" name="mozTocId504000"></a>Package:
+org.apache.derbyTesting<!--mozToc h1 1 h2 2 h3 3 h4 4 h5 5 h6 6--><br>
+</h2>
+<p>
+<small>created by myrna@golux.com<br>
+last updated on 11/11/2004 by: myrna@golux.com<br>
+</small>
+</p>
+<ul>
+  <li><a href="#intro">1. Introduction</a></li>
+  <li><a href="#quickstart">2. Quickstart</a></li>
+  <li style="margin-left: 40px;"><a
+ href="#2.1_running_with_derby_classes_">2.1 running tests<br>
+    </a></li>
+  <li style="margin-left: 40px;"><a
+ href="#building_derbyTesting__running_with">2.2 building
+derbyTesting package</a><br>
+  </li>
+  <li><a href="#run">3. More details on running the derby functional
+tests</a></li>
+  <li style="margin-left: 40px;"><a href="#run1">3.1 Running 1 test</a></li>
+  <li style="margin-left: 40px;"><a href="#run2">3.2 Running suites of
+tests</a></li>
+  <li><a href="#overview">4. Harness internals for developers</a> </li>
+  <li style="margin-left: 40px;"><a href="#ov1">4.1 Test types</a></li>
+  <li style="margin-left: 40px;"><a href="#ov2">4.2 Supporting files
+for tests</a></li>
+  <li style="margin-left: 40px;"><a href="#ov3">4.3
+&lt;testname&gt;_app.properties</a></li>
+  <li style="margin-left: 40px;"><a href="#ov4">4.4
+&lt;testname&gt;_derby.properties</a></li>
+  <li style="margin-left: 40px;"><a href="#ov5">4.5 tmp files, out
+files, master files, and canons</a></li>
+  <li style="margin-left: 40px;"><a href="#ov6">4.6 Masking and
+comparing</a></li>
+  <li style="margin-left: 40px;"><a href="#Adding_a_new_test">4.7
+Adding a new test</a></li>
+  <li style="margin-left: 40px;"><a
+ href="#4.8_Suites_and_Adding_a_new_suite">4.8 Suites and adding a
+new suite</a></li>
+  <li style="margin-left: 40px;"><a href="#ov9">4.9 Running with a new
+jvm</a></li>
+  <li style="margin-left: 40px;"><a href="#skipping">4.10 Skipping a
+test</a></li>
+  <li style="margin-left: 40px;"><a href="#frameworks">4.11 Frameworks</a></li>
+  <li style="margin-left: 40px;"><a href="#props">4.12 Some test
+harness properties</a> </li>
+</ul>
+<br>
+<h2>1. <a name="intro"></a>Introduction</h2>
+<p>
+This document describes functionality of the derby
+functional testing package org.apache.derbyTesting. This package is
+based on the functional tests in use at IBM for testing the Cloudscape
+product before its contribution to ASF.</p>
+<p>In the following, instructions are geared towards a unix
+environment. For other environments, some details may need to be
+adjusted. For instance, the document may
+refer to $ANT_HOME, for DOS, this would be %ANT_HOME%.<br>
+</p>
+<p>In the following the top
+directory under which the subversion tree is placed is referred to as
+${derby.source} - see also the
+derby <a href="http://incubator.apache.org/derby/BUILDING.html">BUILDING.txt</a>.<br>
+</p>
+<p>The version of the classes and supporting files of the derbyTesting
+package have to match the version of the classes of the derby package.
+Thus you either need to build all jars yourself, or get all jar files
+from the incubator site at the same time when available. <br>
+<br>
+</p>
+<span style="font-weight: bold;">
+</span>
+<h2><a class="mozTocH2" name="mozTocId191589"></a>2. <a
+ name="quickstart"></a>QuickStart<br>
+</h2>
+<h3><a name="2.1_running_with_derby_classes_"></a>2.1 running tests</h3>
+<p>
+The derbyTesting package enables you to run 1 test or a suite of tests.
+Before you can run, you need to setup your environment:<br>
+</p>
+<ul>
+  <li>Obtain a jdk or jre (based on jdk 1.3.1 specification or higher).
+Add the bin directory to your $PATH. Currently supported are:<br>
+  </li>
+</ul>
+<table
+ style="text-align: left; width: 497px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&nbsp;&nbsp;&nbsp; jdk131
+- Sun
+HotSpot jdk1.3.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk141 - Sun HotSpot jdk1.4.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk142 - Sun HotSpot jdk1.4.2</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk15 - Sun HotSpot jdk1.5</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm131 - IBM Classic jdk1.3.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm141 - IBM Classic jdk1.4.1</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm142 - IBM Classic jdk1.4.2</small><br>
+      <small>&nbsp;&nbsp;&nbsp; j9_13 - WCTME jvm (available with IBM
+Websphere Client Technology Micro Edition) <br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<ul>
+  <li>set $CLASSPATH to include the following jars:</li>
+  <ul>
+    <li><small>jakarta-oro-2.0.8.jar</small></li>
+    <small>&nbsp;&nbsp;&nbsp; oromatcher, obtain from <a
+ href="http://jakarta.apache.org/oro/index.html">http://jakarta.apache.org/oro/index.html</a>,
+or follow this link for <a
+ href="http://apache.roweboat.net/jakarta/oro/source/jakarta-oro-2.0.8.zip">zip</a>
+file, or <a
+ href="http://apache.roweboat.net/jakarta/oro/source/jakarta-oro-2.0.8.tar.gz">tar</a>.gz)</small><li><small>derbyTesting.jar<br>
+      </small></li>
+  </ul>
+  <ul>
+    <small>&nbsp;&nbsp;&nbsp;&nbsp; test files and classes</small><li><small>derby.jar<br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; main derby package classes</small><li><small>derbytools.jar<br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; derby tools classes for tools like ij
+and dblook</small><li><small>derbynet.jar<br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; derby network server classes</small><li><small>db2jcc.jar
+and db2jcc_license_c.jar <br>
+      </small></li>
+    <small>&nbsp;&nbsp;&nbsp; IBM Universal JDBC Driver classes. (See
+IBM <a href="http://www-106.ibm.com/developerworks/db2/downloads/jcc/">developerworks</a>
+for download)</small>
+  </ul>
+</ul>
+<p>
+For example:<br>
+</p>
+<div style="margin-left: 40px;">
+<table style="text-align: left; width: 484px; height: 32px;" border="1"
+ cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>(note that $jardir is
+only a convenience variable):<br>
+      </small><small>set jardir=/local/derbyjar<br>
+set
+CLASSPATH="$jardir/derby.jar:$jardir/derbytools.jar:$jardir/derbynet.jar:$jardir/db2jcc.jar:<br>
+$jardir/db2jcc_license_c.jar:$jardir/derbyTesting.jar:/local/derby/tools/java/jakarta-oro-2.0.8.jar:<br>
+$CLASSPATH</small><br>
+      <small>set PATH=/local/jdk141/bin:$PATH</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+</div>
+<p>
+To run 1 test:
+</p>
+<table
+ style="text-align: left; width: 514px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">syntax:<br>
+&nbsp;&nbsp;&nbsp; <small>java
+-D&lt;testproperty&gt;
+org.apache.derbyTesting.functionTests.harness.RunTest
+&lt;testdir&gt;/&lt;testname&gt;</small><br>
+      <small>where <br>
+      </small>
+      <ul>
+        <li><small>&nbsp;&nbsp; &lt;testproperty&gt; are test specific
+properties, such as
+'framework' for the RunTest class. </small></li>
+        <li><small>&nbsp;&nbsp; &lt;testdir&gt; is one of the
+directories under
+functionTests/tests where the actual test is located</small></li>
+        <li><small>&nbsp;&nbsp; &lt;testname&gt; is the actual name of
+the test</small></li>
+      </ul>
+      <small>examples:<br>
+to run the test supersimple against the embedded driver:<br>
+      </small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <small>java
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/supersimple.sql<br>
+      <br>
+To run a test with network server, add -Dframework=DerbyNet to the run.
+The test harness will to start
+network server at port 1527 or connect to a running one, run the test,
+and stop network server thereafter.<br>
+for example:<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; java </small><small>-Dframework=DerbyNet
+      </small><small>org.apache.derbyTesting.functionTests.harness.RunTest
+lang/supersimple.sql<br>
+      </small><small> </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+A successful run will have a .pass file, and the output to the
+console will show no difference between expected and actual test
+result. A failed test run will have at least a .fail file and the
+output to the console will show the difference between expected and
+actual result.<br>
+</p>
+<p>
+To run a suite:
+</p>
+<table
+ style="text-align: left; width: 546px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">syntax:<br>
+&nbsp; <small>java
+-D&lt;testproperty&gt;
+org.apache.derbyTesting.functionTests.harness.RunSuite&nbsp;
+&lt;testsuite&gt;</small><br>
+      <small>where <br>
+      </small>
+      <ul>
+        <li><small>&nbsp;&nbsp; &lt;testproperty&gt; are test specific
+properties, such as
+'verbose' for the RunSuite class. </small></li>
+        <li><small>&nbsp;&nbsp; &lt;testsuite&gt; is one of the suites
+under
+org/apache/derbyTesting/suites</small></li>
+      </ul>
+      <small>for example for running&nbsp; the suite derbylang:<br>
+      </small><small>&nbsp;&nbsp; java -Dverbose=true
+org.apache.derbyTesting.functionTests.harness.RunSuite derbylang</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p>
+Each suite run should be started in a clean directory. The test
+output directory will not be emptied out before testing is
+begun, although individual test files and result files will be cleaned
+out and overwritten.&nbsp;
+</p>
+<p>
+Initially the suites provided are:
+</p>
+<ul>
+  <li>derbylang: <br>
+  </li>
+  <ul>
+    <li>basic functionality of&nbsp;
+language implementation in derby. <br>
+    </li>
+    <li>Mostly .sql type tests. <br>
+    </li>
+    <li>tested on a variety of hardware takes from 1.15m to 3 hours<br>
+    </li>
+  </ul>
+  <li>derbynetmats</li>
+  <ul>
+    <li>basic network server tests.</li>
+    <li>variety of tests, including some from derbylang suite</li>
+    <li>tested on a variety of hardware takes from 15 to 50 minutes<br>
+    </li>
+  </ul>
+  <li>derbyall</li>
+  <ul>
+    <li>contains all suites typically run by all developers<br>
+    </li>
+  </ul>
+  <ul>
+    <li>tested on a variety of hardware takes from 1.30 - 3.45 minutes <br>
+    </li>
+  </ul>
+  <li><a href="#Note1:"><small>See Note1</small></a><br>
+  </li>
+</ul>
+<p>
+A successful run with all tests passing will have no *.fail files
+created, the &lt;testsuite&gt;_fail.txt file will be empty, and the
+&lt;testsuite&gt;_report.txt file will show no failures in the Summary
+results section.
+</p>
+<table
+ style="text-align: left; width: 556px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>-------snippet from
+derbylang_report.txt -----<br>
+-----------------------------------------------------------<br>
+Summary results:<br>
+      <br>
+Test Run Started: 2004-11-10 11:27:55.0<br>
+Test Run Duration: 00:04:09<br>
+      <br>
+129 Tests Run<br>
+100% Pass (129 tests passed)<br>
+&nbsp;0% Fail (0 tests failed)<br>
+0 Suites skipped</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<h3><a name="building_derbyTesting__running_with"></a>2.2 building
+derbyTesting package<br>
+</h3>
+<p>
+To build the derbyTesting package:<br>
+</p>
+<ul>
+  <li>follow all the steps in the derby <a
+ href="http://incubator.apache.org/derby/BUILDING.html">BUILDING.txt</a>.</li>
+</ul>
+<p>This is some typical
+output for the ant build process.<br>
+</p>
+<table
+ style="text-align: left; width: 516px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&gt; cd
+/local/derby/java/testing<br>
+&gt; ant.ksh<br>
+Searching for build.xml ...<br>
+Buildfile: /local/derby/java/testing/build.xml<br>
+      <br>
+compile:<br>
+&nbsp;&nbsp;&nbsp; [javac] Compiling 30 source files to
+/local/derby/classes<br>
+...<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [copy] Copying 1 file to
+/local/derby/classes/org/apache/derbyTesting/funct<br>
+ionTests<br>
+      <br>
+BUILD SUCCESSFUL<br>
+Total time: 10 minutes 3 seconds</small></td>
+    </tr>
+  </tbody>
+</table>
+<p>Once you have built the derbyTesting package built, you can make a
+derbyTesting.jar use the jar build target at the ${derby.source}level.
+</p>
+<p>
+This will look something like:
+</p>
+<table
+ style="text-align: left; width: 528px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>c:&gt; ant derbytestingjar<br>
+Searching for build.xml ...<br>
+Buildfile: C:\derby\build.xml<br>
+      <br>
+initjars:<br>
+&nbsp;&nbsp;&nbsp; [mkdir] Created dir: C:\derby\jars\<br>
+&nbsp;&nbsp;&nbsp; [mkdir] Created dir: C:\derby\jars\lists<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [echo] Revision number set to exported<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [echo] .<br>
+      <br>
+derbytestingjar:<br>
+&nbsp;&nbsp;&nbsp;&nbsp; [echo] Beginning derbytesting.jar build<br>
+.....<br>
+BUILD SUCCESSFULL<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+<h2><a class="mozTocH2" name="mozTocId582299"></a>3. <a name="run"></a>More
+details on running the derby functional tests</h2>
+<p>
+The functional tests are run using a class called 'RunTest'. This class
+calls a number of other classes. A group of tests, called a 'suite' is
+executed using a class called 'RunSuite'.<br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId595945"></a>3.1 <a name="run1"></a>Running
+1 test</h3>
+<p>See section 2.1 for the basic steps to run 1 test.
+</p>
+<p>To pass on system level properties to the test harness, use the test
+harness property -DtestSpecialFlags. For
+example, to run a test forcing
+the message text to be retrieved from the network server:
+</p>
+<table
+ style="text-align: left; width: 558px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"> <small>java
+-Dframework=DerbyNet
+-DtestSpecialFlags=RetrieveMessagesFromServerOnGetMessage=true&nbsp;
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/supersimple.sql</small></td>
+    </tr>
+  </tbody>
+</table>
+<p><br>
+Tests will be executed in the current directory. When
+running a test
+using the network server, i.e. -Dframework=DerbyNet, the test will run
+in a subdirectory (automatically created) 'DerbyNet'. <small> <br>
+<a href="#Note2:">See Note2</a>.<br>
+</small></p>
+<p>
+The test will normally create the following:<br>
+</p>
+<ul>
+  <li>a database. The default name is 'wombat'. However, the name may
+be different depending on certain properties passed in to the test
+harness.</li>
+  <li>a .out file: the final result file</li>
+  <li>a .tmp file; the initial result file, before any modification to
+prevent irrelevant differences has been applied (before 'masking').</li>
+  <li>a .diff file; the differences between the .out and the master
+file with expected output it is compared to.</li>
+  <li>a .pass or .fail file. This file lists the test if it passes
+under .pass, and under .fail if the output in .out is different from
+the expected output in the master.</li>
+</ul>
+<p>
+possibly created:<br>
+</p>
+<ul>
+  <li>additional files used in a specific test may get copied over to
+the test directory. These normally do not get cleaned up.</li>
+  <li>.tmpstr file is created for network server tests and is a
+possibly
+massaged copy of the master file the output needs to be compared with.</li>
+  <li>.err and .out files in network server database files for any
+additional error output.</li>
+</ul>
+<p>
+When the test is successful, cleanup will occur unless the test harness
+property -Dkeepfiles=true is used. Cleanup will attempt to cleanup all
+files except for .pass. <small><br>
+<a href="#Note3:_">See Note3.</a></small>
+</p>
+<p>
+A successful run (this example is from a dos environment) would
+look for instance like:
+</p>
+<table
+ style="text-align: left; width: 414px; height: 45px; margin-left: 80px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>c:&gt;
+derbyTesting.functionTests.harness.RunTest lang/supersimple.sql<br>
+C:\derby\run2<br>
+supersimple<br>
+-- listing properties --<br>
+derby.locks.deadlockTimeout=3<br>
+derby.locks.waitTimeout=3<br>
+*** Start: supersimple jdk1.4.2_03 2004-11-10 16:51:02 ***<br>
+The test should be running...<br>
+MasterFileName = master/supersimple.out<br>
+*** End:&nbsp;&nbsp; supersimple jdk1.4.2_03 2004-11-10 16:51:25 ***<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<p>A Test Failure shows the diff, creates a .fail file, does not create
+a .pass file, and does not cleanup any files upon completion. The
+output might look like this:<br>
+</p>
+<table
+ style="text-align: left; width: 442px; height: 32px; margin-left: 80px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&nbsp;</small><small>c:&gt;
+derbyTesting.functionTests.harness.RunTest lang/supersimple.sql<br>
+C:\derby\run2</small><small><br>
+supersimple<br>
+-- listing properties --<br>
+derby.locks.deadlockTimeout=3<br>
+derby.locks.waitTimeout=3<br>
+*** Start: supersimple jdk1.4.2_03 2004-11-10 16:54:39 ***<br>
+The test should be running...<br>
+MasterFileName = master/supersimple.out<br>
+10 del<br>
+&lt; 10<br>
+10a10<br>
+&gt; 1<br>
+Test Failed.<br>
+*** End:&nbsp;&nbsp; supersimple jdk1.4.2_03 2004-11-10 16:55:02 ***</small><br>
+      </td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<h3><a class="mozTocH3" name="mozTocId368566"></a>3.2 <a name="run2"></a>Running
+a suite of tests</h3>
+<p>
+See section 2.1 for a basic explanation on how to run a suite of tests.<br>
+</p>
+<p>
+Tests will be run in a subdirectory with the name of the test
+suite under the current directory. Eg. for derbylang suite, a directory
+derbylang will be created. While the tests are run, information about
+the run is inserted into a &lt;testsuite&gt;.sum file. When all tests
+have completed summary files are created &lt;testsuite&gt;_pass.txt,
+_fail.txt, and _diff.txt files are created as well as a
+&lt;testsuite&gt;_report.txt
+with additional details. Some of the information is duplicate. Also, a
+.skip file will be created holding a list of the tests that were
+skipped (for more details on this, see the section on <a
+ href="#skipping">skipping tests</a>).
+</p>
+<p>
+RunSuite does not empty the top level directory before running. Thus, if another suite was run in the same directory at an earlier time, the resulting summary files might contain results for more than the current run. Therefore it is important to run each suite in a clean directory.
+</p>
+<p>Sample output from RunSuite:<br>
+</p>
+<table
+ style="text-align: left; width: 471px; height: 32px; margin-left: 80px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small><small>c:&gt; $ java
+org.apache.derbyTesting.functionTests.harness.RunSuite derbylang<br>
+Top suite: derbylang<br>
+Suite to run: derbylang:derbylang<br>
+Now do RunList<br>
+Now run the suite's tests<br>
+Run the tests...<br>
+Execute command: java -DjavaCmd=java
+-Doutputdir=C:\derbyt1\derbylang\derbylang
+-Dtopsuitedir=C:\derbyt1\derbylang -Dtoprepo<br>
+rtdir=C:\derbyt1\derbylang -Drundir=C:\derbyt1
+-Dsuitename=derbylang:derbylang -Dtopsuitename=derbylang
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/altertable.sql<br>
+Execute command: java -DjavaCmd=java
+-Doutputdir=C:\derbyt1\derbylang\derbylang
+-Dtopsuitedir=C:\derbyt1\derbylang -Dtopreportdir=C:\derbyt1\derbylang
+-Drundir=C:\derbyt1 -Dsuitename=derbylang:derbylang
+-Dtopsuitename=derbylang
+org.apache.derbyTesting.functionTests.harness.RunTest
+lang/arithmetic.sql<br>
+...(.more tests)....<br>
+Generated report: derbylang_report.txt</small></small><small><br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+This output does not show whether the tests passed or failed. The
+Summary section in &lt;testsuite&gt;_report.txt shows the statistics of
+the passed vs. failed tests, the summary &lt;testsuite&gt;_*.txt files
+list the tests that passed and failed.
+</p>
+<br>
+<h2><a class="mozTocH2" name="mozTocId635355"></a>4. <a name="overview"></a>
+Harness internals for developers<br>
+</h2>
+<p>
+The following is intended for people who have the subversion tree
+available and want to add or modify tests.
+</p>
+<p>
+The test harness executing one test basically does the following in
+sequence:
+</p>
+<ul>
+  <li>identify test to run</li>
+  <li>identify properties to run with</li>
+  <li>copy needed support files</li>
+  <li>find the expected output</li>
+  <li>if network server, start network server</li>
+  <li>run the test, creating the database</li>
+  <li>if network server, shutdown the server</li>
+  <li>modify the output based on Sed class and _sed.properties file for
+the test</li>
+  <li>compare expected output with actual output</li>
+  <li>if pass, cleanup.</li>
+</ul>
+<br>
+<h3><a class="mozTocH3" name="mozTocId344499"></a>4.1 <a name="ov1"></a>Test
+types</h3>
+<p>
+The test harness recognizes, or will recognize tests with the following
+extensions:<br>
+</p>
+<ul>
+  <li>&nbsp;.java&nbsp;&nbsp;&nbsp; tests that run in a separate jvm.</li>
+  <li>&nbsp;.sql &nbsp;&nbsp;&nbsp; tests that run using ij</li>
+  <li>&nbsp;.sql2 &nbsp;&nbsp;&nbsp; related to .sql</li>
+  <li>&nbsp;.multi &nbsp;&nbsp;&nbsp; multi threaded tests. There are
+no
+multi threaded tests in the first contribution to apache, and the
+sections pertaining to such tests have been commented out</li>
+  <li>&nbsp;.unit &nbsp;&nbsp;&nbsp; unit tests. Currently there are no
+hooks for unit tests in the harness and no unit tests are contributed
+initially.</li>
+</ul>
+<br>
+<h3><a class="mozTocH3" name="mozTocId809770"></a>4.2 <a name="ov2"></a>Supporting
+files for tests</h3>
+<p>
+Various additional files may be used by a test, for instance, to create
+large data values, to test using of jar files and the like. Any files
+that need to be accessed by a particular test that are not accessed
+from the classpath need to be listed under supportfiles= in the
+&lt;testname&gt;_app.properties file.<br>
+Tests can refer to classes without being in the classpath, and sql
+tests can use the ij command 'run resource ' to execute additional .sql
+files without changes to the _app.properties files.
+</p>
+<p>For example, in the file
+(org/apache/derbyTesting/functionTests/tests/)tools/dblook_test_app.properties:<br>
+<small>&nbsp;&nbsp;&nbsp;
+supportfiles=tools/dblook_makeDB.sql,tools/dblook_test.jar</small><br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId427577"></a>4.3 <a name="ov3"></a>&lt;testname&gt;_app.properties</h3>
+<p>
+Every test directory has a default_app.properties. This file is for
+system level properties generic to all the tests in that test
+directory. </p>
+<p>
+If a test requires different system level properties, a test specific
+properties file can be created to overwrite the defaults. The test
+specific properties file needs to have a name starting with the
+test file name, followed with _app.properties</p>
+<p>For example, for the test tools/dblook_test.java, there is a
+properties file called tools/dblook_test_app.properties<br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId715566"></a>4.4 <a name="ov4"></a>&lt;testname&gt;_derby.properties</h3>
+<p>
+Every test directory has a default_derby.properties. This file is for
+derby specific properties common to all the tests in that test
+directory.<br>
+If a test requires different derby properties, a test specific
+properties file can be created to overwrite the defaults. The test
+specific properties file needs to have a name starting with the
+test file name, followed with _derby.properties<br>
+<br>
+</p>
+<h3><a class="mozTocH3" name="mozTocId874096"></a>4.5 <a name="ov5"></a>tmp
+files, out files, master files, and canons</h3>
+<p>
+The test's output will be put into a file testname.tmp. Then the output
+is modified if masking is required and the result is put into a .out
+file.<br>
+The expected output is found by examining the following directories,
+based on certain input<br>
+</p>
+<ul>
+  <li>functionTests/master/framework/jcc_version/jvmcode</li>
+  <li>functionTests/master/framework/jcc_version/earlier_jvmcode</li>
+  <li>functionTests/master/framework/jcc_version</li>
+  <li>functionTests/master/framework/jvmcode</li>
+  <li>functionTests/master/framework/earlier_jvmcode</li>
+  <li>functionTests/master/jvmcode</li>
+  <li>functionTests/master</li>
+</ul>
+<p>
+For example, if we are running a test and the flag -Dframework=DerbyNet
+is used and the jvm we are
+using is Sun's jdk 142, and the jcc version is 2.4 (not available at
+time of writing) then the search for the master to compare with
+starts in the functionTests/derbynet/jcc2.4/jdk14 directory. If a .out
+file with the same name as the test is found in that directory, that
+master is taken. If there is no such file in that directory, search
+continues in the directory functionTests/derbynet/jcc2.4/jdk13 if it
+exists.</p>
+<p>If there is no file there, nor for any other jcc directory, it will
+continue to derbynet/jdk14, and the search is continued for earlier jvm
+versions.<br>
+If we are not running network server, the DerbyNet and
+jcc_version directories are not traversed.<br>
+</p>
+<p>The version details do not go into the subversion level, i.e.
+running
+with jdk141 or jdk142 is expected to have the same behavior.
+</p>
+<p>
+This functionality supports dealing with minor differences in behavior
+caused by minor differences in behavior in the underlying jvms, jcc
+versions, differences between results returned through network server
+vs. embedded and minor differences between a debug and non debug (jar)
+build. </p>
+<p>
+However, having a large number of these files means a maintenance
+problem. Every time test output changes due to modifications to derby
+or to the test, all output files in all directories need to be updated
+accordingly. If at all possible, irrelevant differences should be
+masked out, or the test should be written so that the output does not
+reflect such items. </p>
+<p>
+Suggestions to minimize canons:
+</p>
+<ul>
+  <li>create test specific masking</li>
+  <li>ensure test data has a specific correct returned order; or an
+order by should be added to a query</li>
+  <li>when writing java tests, ensure only pertinent output is
+reflected.</li>
+</ul>
+<br>
+<h3><a class="mozTocH3" name="mozTocId68107"></a>4.6 <a name="ov6"></a>Masking
+and comparing</h3>
+<p>
+Tests often fail because of unimportant differences, such as process
+ids, statement ids, timestamps. The derby functional test harness
+provides for masking of these differences at 2 levels:<br>
+</p>
+<ol>
+  <li>overall level. Masking required in all, or many tests can be
+achieved using the class Sed in the test harness directory. This class
+can either delete a reference present in the .tmp file from the .out
+file, or replace it with a generic string. </li>
+  <li>test specific level. To make masking for only one test, a
+(testname)_sed.properties file can be created which allows to either
+remove a string from the output or to replace it.</li>
+</ol>
+<p>
+The diff is executed between the final resulting output and the master
+file found.<br>
+<br>
+</p>
+<h3><a name="Adding_a_new_test"></a>4.7<span style="font-weight: bold;">&nbsp;
+</span>Adding
+a new test</h3>
+<p>
+To add a new test:
+</p>
+<ul>
+  <li>create the test file (e.g. newfunctest.java or newfunctest.sql)
+in the appropriate tests subdirectory</li>
+  <li>list any files needed that are not .sql or .java files in a
+supportfiles entry in a test specific _app.properties file. e.g.
+newfunctest_app.properties:&nbsp; supportfiles=xyz.jar<br>
+  </li>
+  <li>list any specific derby properties in a test specific
+_derby.properties file.</li>
+  <li>add the properties files to the copyfiles.ant file in the test
+specific directory</li>
+  <li>run the test. The first time around, the test will fail because
+no master file will be found. </li>
+  <li>if the output is correct, copy it to the master directory. Note
+that there is no copyfiles.ant file needed for the master directory,
+all .out files are automatically copied.</li>
+  <li>run the test again. Investigate if any differences need to be
+masked out using a test specific sed.properties file (e.g.
+newfunctest_sed.properties). If so, ensure this is added to
+copyfiles.ant.</li>
+  <li>add the test to a specific suites/*.xml file, maintaining proper
+xml syntax. </li>
+  <li>run the suite, and correct any problems found.</li>
+</ul>
+<br>
+<h3><a name="4.8_Suites_and_Adding_a_new_suite"></a>4.8 Suites and
+Adding a new suite</h3>
+<p>
+A suite constitutes of a &lt;suitename&gt;.properties file and/or a
+&lt;suitename&gt;.runall file in the
+org/apache/derbyTesting/functionTests/suites directory. The .properties
+files hold references to other .properties files, or .runall files, the
+.runall files are the actual lists of tests.
+</p>
+<p>
+The lowest level suite always needs to have a .runall file.
+</p>
+<p>
+For example, the derbyall suite is only a derbyall.properties file that
+refers to 2 other suites in the 'suites' property:
+</p>
+<table
+ style="text-align: left; width: 527px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>-----------------------derbyall.properties---------------<br>
+suites=derbylang derbynetmats<br>
+derby.debug.true=enableBtreeConsistencyCheck<br>
+derby.stream.error.logSeverityLevel=0<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+The derbylang suite is only a derbylang.runall, which lists the tests.
+The derbynetmats suite has both a .runall and a .properties file, so
+some additional properties can be specified that are true for all tests
+in that suite. </p>
+<table
+ style="text-align: left; width: 521px; height: 32px; margin-left: 40px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>------------------derbynetmats.properties-----------------<br>
+framework=DerbyNet<br>
+suites=derbynetmats<br>
+jdk12test=true<br>
+runwithj9=false<br>
+timeout=60<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>
+To add a suite, you need to create at least a &lt;suite&gt;.runall
+file, which lists the actual tests, or a properties file that refers to
+other suites that do have a .runall file. The suite should be added
+into the directory
+${derby.source}/java/testing/org/apache/derbyTesting/functionTests/suites.<br>
+<br>
+</p>
+<h3><a name="4.9_Running_with_a_new_jvm_"></a> <a name="ov9"></a>4.9
+Running
+with a new jvm<br>
+</h3>
+<p>Currently, the supported jvms are:
+</p>
+<table style="text-align: left; width: 497px; height: 32px;" border="1"
+ cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;"><small>&nbsp;&nbsp;&nbsp; jdk131
+- Sun
+HotSpot jdk1.3.1 - class: jdk13</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk141 - Sun HotSpot jdk1.4.1 - class
+jdk14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk142 - Sun HotSpot jdk1.4.2 - class
+jdk14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; jdk15 - Sun HotSpot jdk1.5 - class jdk15</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm131 - IBM Classic jdk1.3.1&nbsp; -
+class ibm13</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm141 - IBM Classic jdk1.4.1 - class
+ibm14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; ibm142 - IBM Classic jdk1.4.1 - class
+ibm14</small><br>
+      <small>&nbsp;&nbsp;&nbsp; j9_13 - WCTME jvm (available with IBM
+Websphere Client Technology Micro Edition) - class j9_13<br>
+      </small></td>
+    </tr>
+  </tbody>
+</table>
+<p>The classes above are subclasses of
+org.apache.derbyTesting.functionTests.harness.jvm. The name at the
+front is just a convention.<br>
+</p>
+<p>To run a test with a jvm that does not have a matching class under
+org.apache.derbyTesting.functionTests.harness, do the following:<br>
+</p>
+<ul>
+  <li>just run the tests as if there is a jvm class. The harness will
+default to using
+the jdk14 class. Unlikely, but possibly there are no differences<br>
+  </li>
+  <li>if there are failures showing that cannot be explained any other
+way but genuine, acceptable jvm differences, do the following:</li>
+  <ul>
+    <li>create a subclass of
+org.apache.derbyTesting.functionTests.harness.jvm. In this class,
+specify any jvm specific property settings required </li>
+    <li>compile the new jvm class and run the tests</li>
+    <li>create a new canon directory for any additional canons that
+need to be created.</li>
+    <li>in rare occasions, other harness changes may be required</li>
+    <li>for any tests that should not run with this environment, add a
+line in the testname_app.properties file indicating this. For instance
+to add a line for a jvm called jdk29, it would be like this:
+runwithjdk29=false. Note that the versioning does not currently extend
+past 2 digits.</li>
+    <li>Add code in RunTest.java to switch to the new jvm based on
+values for system and vendor properties</li>
+  </ul>
+</ul>
+<br>
+<h3><a name="skipping"></a>4.10 Skipping a test</h3>
+<p>
+Some tests are written to test specific functionality only available
+with for instance certain jvms, or, with network server, certain
+versions of the IBM Universal Driver. To control this, properties can
+be set for each test, for instance, if a test should not be run when
+using an ibm jvm, set runwithibmjvm=false. If a test should be run with
+Sun Hotspot jvm version 14, then set runwithjdk14=true.<br>
+The skip setting does not go into the subversion level, i.e. setting
+runwithjdk141=false has no effect, and setting runwithjdk14 affects
+runs with jdk141 as well as jdk142.<br>
+Other skip reasons are encryption protocols specific to a certain jvm. <br>
+</p>
+<br>
+<h3><a name="frameworks"></a>4.11 Frameworks</h3>
+<p>
+Currently, the only framework used is DerbyNet for network server. <br>
+Setting framework property setting will invoke the test harness class
+NetServer, which currently has configuration for connecting to DB2 via
+jcc (the IBM Universal Driver), and via the older db2 driver. But there
+are currently no tests to exercise these settings.<br>
+Setting this framework also causes the search for expected output to
+include DerbyNet and jcc version specific subdirectories under master.<br>
+</p>
+<br>
+<h3><a name="props"></a>4.12 Some test harness properties</h3>
+<p>
+For a complete set, refer to comments in RunTest.java, but here are
+some valuable test properties which can be passed to the RunTest class:
+</p>
+<table
+ style="text-align: left; margin-left: 40px; width: 601px; height: 252px;"
+ border="1" cellpadding="2" cellspacing="2">
+  <tbody>
+    <tr>
+      <td style="vertical-align: top;">runwith&lt;jvm&gt;<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; See above
+section <a href="#skipping">4.10</a><br>
+framework<br>
+&nbsp;&nbsp;&nbsp; specifies which framework to run with. For example:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -Dframework=DerbyNet
+org.apache.derbyTesting.functionTests.RunTest <br>
+lang/supersimple.sql<br>
+verbose<br>
+&nbsp;&nbsp;&nbsp; Shows more detailed output. For example:<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java -Dverbose=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
+keepfiles<br>
+&nbsp; &nbsp; Indicates to not clean up any of the files if the test
+passed.<br>
+&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; java -Dkeepfiles=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql<br>
+TestSpecialFlags<br>
+&nbsp;&nbsp;&nbsp; sets additional properties.<br>
+&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; java
+-D=TestSpecialFlags=derby.infolog.append=true
+org.apache.derbyTesting.functionTests.RunTest lang/arithmetic.sql</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<br>
+<h3><br>
+</h3>
+<br>
+<br>
+<h2>Notes</h2>
+<small><a name="Note1:"></a> Note1:<br>
+</small>
+<div style="margin-left: 40px;"><small>There is one more suite
+included: the j9derbynetmats
+suite is a modification of the derbynetmats suite. It is available to
+test
+the network server with the jvm available with IBM's WCTME (Workplace
+Client Technology, Micro Edition; formerly WSDD), and will be run at IBM</small><small>.
+Note that the setup for running the j9derbynetmats
+tests is very specific to the test harness, not even using the WCTME
+files in their normal location.</small><small> <br>
+The j9derbynetmats suite is included to serve as an
+example of splitting the network server process to run with a different
+jvm than the test client. The j9derbynetmats suite will run with
+another
+jvm
+as client (as defined in the suite properties), but start up
+network server with the 'j9' jvm files (the reference to 'j9' is based
+on the executable, j9.exe), based on the property 'serverJvm'. Running
+this suite requires providing the property&nbsp; bootcp,
+which is&nbsp; interpreted from the test harness class j9_13. See also
+section on adding a new <a href="#ov9%22">jvm setup</a>.
+</small><br>
+</div>
+<br>
+<small><a name="Note2:"></a>Note2:<br>
+</small>
+<div style="margin-left: 40px;"><small>setting
+RetrieveMessagesFromServerOnGetMessage to true
+for the test harness is purely for
+illustration, the test harness actually forces
+RetrieveMessagesFromServerOnGetMessage to true for the tests so the
+output is always as expected.</small><br>
+</div>
+<br>
+<small><a name="Note3:_"></a>Note3: <br>
+</small>
+<div style="margin-left: 40px;"><small>occasionally, cleanup is
+unsuccessful. This does not
+constitute a problem in any way, as the harness starts with a clean
+database, and clean copies of all files. However, you will see
+something like this in the output:</small><br>
+<small>Warning: Cleanup failed on baseDir:
+/local/myrun1/DerbyNet/supersimple</small><br>
+</div>
+<br>
+</body>
+</html>

Added: incubator/derby/code/trunk/java/testing/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="testing" basedir="../..">
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <property name="properties.dir" value="tools/ant/properties"/>
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <property file="${properties.dir}/parser.properties"/>
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="testing" 
+          description="Build Derby testing files">
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/util"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/jdbcapi"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/lang"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/tools"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/derbynet"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/master"/> 
+    <ant dir="${derby.testing.src.dir}/${derby.testing.suites.dir}"/> 
+  </target>
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamDrainer.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,124 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+import java.sql.Timestamp;
+
+public class BackgroundStreamDrainer implements Runnable
+{
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	protected ByteArrayOutputStream data;
+	protected InputStream in;
+	protected boolean finished;
+	protected IOException ioe;
+	protected long startTime;
+	protected Thread myThread;
+	protected int timeout;
+
+	public BackgroundStreamDrainer(InputStream in, String timemin)
+	{
+		data = new ByteArrayOutputStream();
+		this.in = in;
+        this.startTime = System.currentTimeMillis();;
+        if (timemin != null)
+        {
+            Integer i = new Integer(timemin);
+            timeout = i.intValue();
+        }
+        else
+            timeout = 0;
+        //System.out.println("timeout set to: " + timeout);
+
+		myThread = new Thread(this, getClass().getName());
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		myThread.start();
+	}
+
+	public void run()
+	{
+        if ( in == null )
+        {
+            System.out.println("The inputstream is null");
+            System.exit(1);
+        }
+
+		try
+		{
+			byte[] ca = new byte[1024];
+			int valid;
+			while ((valid = in.read(ca, 0, ca.length)) != -1)
+			{
+                if (timeout > 0)
+			    {
+					long millis = System.currentTimeMillis();
+
+					long diff = millis - startTime;
+
+					int mins = (int) (diff / (1000 * 60));
+
+					if (mins > timeout) {
+
+						System.out.println("kill stderr thread...");
+						synchronized (this)
+						{
+							finished = true;
+							break;
+						}
+					}
+			    }
+			    //System.out.println("Bytes read to write data: " + valid);
+				data.write(ca, 0, valid);
+			}
+		}
+		catch (IOException ioe)
+		{
+			this.ioe = ioe;
+			System.out.println(ioe.getMessage());
+		}
+
+		synchronized (this)
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public InputStream getData() throws IOException
+	{
+	    // FIXME: On Netware, the last read throws an IOException,
+	    // which prevents the test output from getting written
+		//if (ioe != null)
+		//{
+			//throw ioe;
+        //}
+
+		synchronized (this)
+		{
+			try
+			{
+				while (!finished)
+				{
+					wait();
+				}
+			} catch (InterruptedException ie)
+			{
+			    System.out.println("IOException: " + ie);
+				throw new IOException(ie.toString());
+			}
+		}
+		return new ByteArrayInputStream(data.toByteArray());
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/BackgroundStreamSaver.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,81 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class BackgroundStreamSaver implements Runnable { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+ 
+	protected InputStream in;
+	protected OutputStream out;
+	protected boolean finished;
+	protected IOException ioe;
+
+	public BackgroundStreamSaver(InputStream in, OutputStream out) 
+	{
+		this.in = in;
+		this.out = out;
+		
+		Thread myThread = new Thread(this, getClass().getName());
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		myThread.start();
+	}
+
+	public void run() 
+	{
+		try 
+		{
+			byte[] ca = new byte[1024];
+			int valid;
+			while ((valid = in.read(ca, 0, ca.length)) != -1) 
+			{
+				out.write(ca, 0, valid);
+			}
+			out.flush();
+		} catch (IOException ioe) 
+		{
+			this.ioe = ioe;
+		}
+
+		synchronized (this) 
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public void finish() throws IOException 
+	{
+		if (ioe != null)
+			throw ioe;
+
+		synchronized (this) 
+		{
+			try 
+			{
+				while (!finished) 
+				{
+					wait();
+				}
+			} catch (InterruptedException ie) 
+			{
+				throw new IOException(ie.toString());
+			}
+			//out.close();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CopySuppFiles.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,76 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+import java.util.StringTokenizer;
+
+/**
+  For tests which require support files.
+  Copy them to the output directory for the test.
+  */
+public class CopySuppFiles
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static void main(String[] args) throws Exception
+	{
+	}
+
+	public static void copyFiles(File outDir, String suppFiles)
+	    throws ClassNotFoundException, IOException
+	{
+	    // suppFiles is a comma separated list of the files
+	    StringTokenizer st = new StringTokenizer(suppFiles,",");
+	    String scriptName = ""; // example: test/math.sql
+	    InputStream is = null; // To be used for each support file
+        while (st.hasMoreTokens())
+        {
+            scriptName = st.nextToken();
+    	    File suppFile = null;
+    	    String fileName = "";
+    	    // Try to locate the file
+            is = RunTest.loadTestResource(scriptName); 
+    		if ( is == null )
+    			System.out.println("Could not locate: " + scriptName);
+    		else
+    		{
+    		    // Copy the support file so the test can use it
+    			int index = scriptName.lastIndexOf('/');
+    			fileName = scriptName.substring(index+1);
+ //   			suppFile = new File((new File(outDir, fileName)).getCanonicalPath());
+
+		//these calls to getCanonicalPath catch IOExceptions as a workaround to
+		//a bug in the EPOC jvm. 
+    		try {suppFile = new File((new File(outDir, fileName)).getCanonicalPath());}
+		catch (IOException e) {
+		    File f = new File(outDir, fileName);
+		    FileWriter fw = new FileWriter(f);
+		    fw.close();
+		    suppFile = new File(f.getCanonicalPath());
+		}
+
+
+    			FileOutputStream fos = new FileOutputStream(suppFile);
+                byte[] data = new byte[4096];
+                int len;
+    			while ((len = is.read(data)) != -1)
+    			{
+    			    fos.write(data, 0, len);
+    			}
+    			fos.close();
+			}
+        }
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/CurrentTime.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,39 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.sql.Timestamp;
+import java.lang.String;
+
+/**
+  Return the current system time as a String
+  Used to print a timestamp for suite/test runs
+*/
+public class CurrentTime
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static String getTime()
+	{
+        // Get the current time and convert to a String
+        long millis = System.currentTimeMillis();
+        Timestamp ts = new Timestamp(millis);
+        String s = ts.toString();
+        s = s.substring(0, s.lastIndexOf("."));
+        return s;
+	}
+
+	// no instances permitted.
+	private CurrentTime() {}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/FileCompare.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,426 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/***
+ * FileCompare.java
+ *
+ * Compare two files using SimpleDiff
+ * Purpose: simulate diff
+ * Note: if usesysdiff=true, we execute the system's diff
+ ***/
+
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.StringTokenizer;
+import java.util.Properties;
+
+public class FileCompare
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    private String testBase;
+    private String framework;
+    private String jvmName;
+    private String jvmString;
+    private String serverJvm;
+    private int iminor;
+    private boolean searchJdk12 = false;
+    private boolean searchJdk13 = false;
+    private boolean searchJdk14 = false;
+    private int jccMajor = 0;
+    private int jccMinor = 0;
+    private boolean searchFrame;
+    private boolean searchJCC;
+    private InputStream master = null;
+    private boolean verbose;
+    
+    public FileCompare()
+    {
+      verbose = Boolean.getBoolean("verbose");
+    }
+
+    // The arguments should be the names of the input and output files
+    public boolean exec(String outfile, File outDir, PrintWriter pwDiff,
+        String testBaseOrig, String framework, String jvmName,
+        int iminor, boolean useprocess, boolean usesysdiff, 
+        String canondir, String canonpath, String serverJvm)
+        throws IOException, ClassNotFoundException
+    {
+        testBase = testBaseOrig;
+        this.framework = framework;
+        this.jvmName = jvmName;
+        this.iminor = iminor;
+        this.jvmString = jvmName;
+        this.serverJvm = serverJvm;
+
+        BufferedReader outFile;
+        BufferedReader masterFile;
+        StringBuffer sb = new StringBuffer();
+ 
+        // If framework is DerbyNet, we may need to check subdirs of the master canon dir
+        // for specific masters by version of JCC we're running against. So, get JCC version
+        // for later use if that is the case.
+        if (framework.equals("DerbyNet"))
+        {
+	  Class c = null;
+	  Method m = null;
+	  Object o = null;
+	  Integer i = null;
+	  try	
+	  {
+	    c = Class.forName("com.ibm.db2.jcc.DB2Driver");
+	    o = c.newInstance();
+	    m = c.getMethod("getMajorVersion", null);
+	    i = (Integer)m.invoke(o, null);
+	    jccMajor = i.intValue();
+	    m = c.getMethod("getMinorVersion", null);
+	    i = (Integer)m.invoke(o, null);
+	    jccMinor = i.intValue();
+            if (framework.equals("DerbyNet")) searchJCC = true;
+	  } catch ( Exception e )
+	  {
+	    //if anything goes wrong, make sure the JCC version values are set to zero
+	    //forget about it.
+	   jccMinor = 0;
+	   jccMajor = 0;
+           searchJCC = false;
+ 	  }
+        }
+        
+
+        // The outfile name is known -- outfile
+        // But the master canon needs to be located
+        // The user can set canondir (or it defaults to "master")
+        String topdir = "";
+        if ( (canondir != null) && (canondir.length()>0) )
+            topdir = canondir;
+        else {
+			// if this is using product jars, use product_master first
+			Class c = FileCompare.class; // get our class loader
+			InputStream is = c.getResourceAsStream("/org/apache/derby/info/DBMS.properties");
+			Properties dbprop = new Properties();
+			dbprop.load(is);
+			is.close();
+
+			String filename=dbprop.getProperty("derby.product.file");
+			if (filename != null) {
+				//looks like it might be one of our jars?
+				if (filename.startsWith("derby") && filename.endsWith(".jar")) {
+					canondir = "product_master"; // remember redirection
+                    topdir = "product_master";
+				}
+				else
+                    topdir = "master";
+			}
+			else
+                topdir = "master";
+		}
+
+        // There can be subdirs under the master for framework, jvm
+        String subdir = "";
+        boolean searchDefault = true; // if no framework or special jvm
+        boolean searchBoth = false;
+        boolean searchJvm = false;
+        if ( (framework != null) && (framework.length()>0) )
+        {
+            searchFrame = true;
+            subdir = framework;
+        }
+        if ( (jvmName != null) && (jvmName.length()>0)
+                & (!jvmName.equals("currentjvm")) )
+        {
+            searchJvm = true;
+            if (searchFrame)
+                searchBoth = true;
+            if ( iminor >= 2 ) // jdk12 or higher may use jdk12 masters
+                jvmString = "jdk12";
+	    if ( iminor >= 2 ) searchJdk12 = true;
+            if ( iminor >= 3 ) searchJdk13 = true;
+            if ( iminor >= 4 ) searchJdk14 = true;
+            subdir += jvmName;
+        }
+
+        if ( searchFrame || searchJvm || searchBoth )
+            searchDefault = false;
+       
+        sb.append(topdir);
+        if (subdir.length()>0)
+            sb.append(subdir + '/');
+        sb.append(testBase + ".out");
+        String masterfilename = sb.toString();
+	
+	InputStream is = null;
+        
+        // Now try to locate the master file
+	
+        if (is == null)
+	{
+	  searchCanondir(topdir);
+	  is = master;
+	}
+                
+        // If the master is still not found, print an error and return
+        if ( is == null )
+        {
+            System.out.println("No master file was found.");
+            pwDiff.println("No master file was found.");
+            pwDiff.flush();
+            return true;
+        }
+		// compress blanks in output columns to make up for column width differences
+		// for JCC output
+		if (NetServer.isJCCConnection(framework))
+		{
+            try
+            {
+		        Sed sed = new Sed();
+				File JCCOutFile = new File(outDir, testBase + ".tmpmstr");
+		        sed.execJCC(is, JCCOutFile);
+				is = new FileInputStream(JCCOutFile);
+		    }
+		    catch (ClassFormatError cfe)
+		    {
+		        System.out.println("SED Error: " + cfe.getMessage());
+		    }
+		}
+        
+        // Define the input and output files
+        outFile = new BufferedReader(new FileReader(outfile));
+        masterFile = new BufferedReader(new InputStreamReader(is));
+        
+        // Do the comparison (diff)
+        if (usesysdiff == true)
+            return doSysDiff(is, testBase, outfile, outDir, pwDiff);
+        else
+        {
+            return doDiff2(outFile,masterFile, pwDiff);
+        }
+    }
+
+    public boolean doDiff2(BufferedReader outFile, BufferedReader masterFile, PrintWriter pwDiff) throws IOException {
+		return ((new SimpleDiff()).doWork(masterFile,outFile,pwDiff));
+    }
+
+    public boolean doSysDiff(InputStream masterIS, String testBase, String outfile,
+        File outDir, PrintWriter pwDiff)
+        throws IOException
+    {
+        // Create a temp file to copy the master (located as an InputStream)
+        BufferedReader in =
+            new BufferedReader(new InputStreamReader(masterIS));
+        File tempMaster =
+            new File((new File(outDir,testBase + ".master")).getCanonicalPath());
+
+        // Create a PrintWriter for copying the master temporarily for the diff
+        PrintWriter pwMaster = new PrintWriter( new BufferedWriter
+            (new FileWriter(tempMaster.getPath()), 10000), true );
+        String str = "";
+        while ( (str = in.readLine()) != null )
+        {
+            pwMaster.println(str);
+        }
+        pwMaster.close();
+        pwMaster = null;
+        in = null;
+
+        String diffs = "0";
+        // Now create a process and do the system diff, capture to .out
+        Process pr = null;
+        try
+        {
+            StringBuffer sb = new StringBuffer();
+            sb.append("diff ");
+            sb.append(tempMaster.getCanonicalPath());
+            sb.append(" ");
+            sb.append(outfile);
+            String diffCmd = sb.toString();
+
+            //System.out.println("diffCmd = " + diffCmd);
+
+            pr = Runtime.getRuntime().exec(diffCmd);
+
+            // We need the process inputstream to capture into the diff file
+            //System.out.println("Capture the process InputStream...");
+            BackgroundStreamDrainer stdout =
+                new BackgroundStreamDrainer(pr.getInputStream(), null);
+            BackgroundStreamDrainer stderr =
+                new BackgroundStreamDrainer(pr.getErrorStream(), null);
+
+            pr.waitFor();
+            String result = HandleResult.handleResult(pr.exitValue(),
+                stdout.getData(), stderr.getData(), pwDiff);
+            diffs = result.substring( result.lastIndexOf(',')+1 );
+            //System.out.println("diffs: " + diffs);
+            pr.destroy();
+            pr = null;
+        }
+        catch(Throwable t)
+        {
+            System.out.println("Process exception: " + t);
+            if (pr != null)
+            {
+                pr.destroy();
+                pr = null;
+            }
+        }
+        tempMaster.delete();
+        if ( diffs.equals("0") )
+            return false;
+        else
+            return true;
+    }
+
+    public boolean doDiff(BufferedReader outFile, BufferedReader masterFile, PrintWriter pwDiff) throws IOException {
+        String str1;
+        String str2;
+        boolean diff = false;
+
+        int line = 0;
+        int diffnum = 0;
+        int diffline = 0;
+        while ( (str1 = outFile.readLine()) != null )
+        {
+            line++;
+            str1 = str1.trim();
+            //System.out.println("Reading line: " + line);
+            // Read the line from the master file and compare
+            if ( (str2 = masterFile.readLine()) != null )
+            {
+                str2 = str2.trim();
+                if (!str1.equals(str2))
+                {
+                    // Some lines diff because of too many spaces
+                    StringBuffer sb1 = new StringBuffer();
+                    StringBuffer sb2 = new StringBuffer();
+                    StringTokenizer st1 = new StringTokenizer(str1);
+                    while (st1.hasMoreTokens())
+                    {
+                        sb1.append(st1.nextToken());
+                    }
+                    //System.out.println("Out line: " + sb1.toString());
+
+                    StringTokenizer st2 = new StringTokenizer(str2);
+                    while (st2.hasMoreTokens())
+                    {
+                        sb2.append(st2.nextToken());
+                    }
+                    //System.out.println("Master line: " + sb2.toString());
+
+                    if ( sb1.toString().equals(sb2.toString()) )
+                        diff = false;
+                    // If the two lines are dashes, but wrong #, just ignore
+                    else if ( (str1.startsWith("-----")) && (str1.endsWith("-----")) )
+                    {
+                        if ( (str2.startsWith("-----")) && (str2.endsWith("-----")) )
+                            diff = false;
+                    }
+                    else
+                    {
+                        diff = true;
+                        diffnum++;
+                        System.out.println("Diff occurred at line: " + line);
+                        pwDiff.println("Diff occurred  at line: " + line);
+                        pwDiff.flush();
+                        break;
+                    }
+                }
+                else
+                {
+                    diff = false;
+                }
+            }
+        } // end while
+        outFile.close();
+        masterFile.close();
+        return diff;
+    }// end exec
+
+    private void searchCanondir(String canondir)
+    {
+	String prefix = canondir + '/';
+	if (master == null && searchFrame) searchFramework(prefix);
+        if (master == null) searchJvm(prefix);
+	if (master == null && searchJCC) searchJCCVersion(prefix);
+	if (master == null) getmaster(prefix);
+	if (master == null && canondir != "master") searchCanondir("master");
+    }
+
+    private void searchJvm(String prefix)
+    {
+	// The JVM search follows the following pattern, with one exception:
+	// first search jvmName (to support unnamed/non-IBM or Sun JVMs)
+	// if vendor == IBM, search ibm+rev then jdk+rev, decrementing rev by one until rev=13,
+	// in each dir, search framework and jcc version if applicable.
+	// BUT, if it's j9, search j9_foundation then j9_13 if j9_foundation, or j9_13 for j9_13, then 	       // the normal ibm13 search pattern: ibm13 then jdk13.
+
+	String newprefix;
+	if (jvmName.startsWith("j9") || (serverJvm != null && serverJvm.startsWith("j9")))
+	{
+	    if (jvmName.startsWith("j9_foundation"))
+            {
+                newprefix = prefix + "j9_foundation" + '/';
+		if (master == null && searchJCC) searchJCCVersion(newprefix);
+		if (master == null) getmaster(newprefix);
+            }
+            newprefix = prefix + "j9_13" + '/';
+	    if (master == null && searchJCC) searchJCCVersion(newprefix);
+	    if (master == null) getmaster(newprefix);
+	    
+	}
+	for (int i = iminor; i >= 2; i--)
+	{
+	    if (jvmName.startsWith("ibm"))
+            {
+		newprefix = prefix + "ibm1" + i + '/';
+		if (master == null && searchJCC) searchJCCVersion(newprefix);
+		if (master == null) getmaster(newprefix);
+	    }
+	    newprefix = prefix + "jdk1" + i + '/';
+	    if (master == null && searchJCC) searchJCCVersion(newprefix);
+	    if (master == null) getmaster(newprefix);
+        } 
+    }
+
+    private void searchFramework(String prefix)
+    {
+        String newprefix;
+	newprefix = prefix + framework + '/';
+	if (master == null) searchJvm(newprefix);
+	if (master == null && searchJCC) searchJCCVersion(newprefix);
+	if (master == null) getmaster(newprefix);
+    }
+
+    private void searchJCCVersion(String prefix)
+    {
+	// It is not sufficient to simply search the current JCC version. 
+	// We must search down through the JCC versions to find the newest applicable master. 
+        
+	String newprefix;
+	
+	for (int j = ((jccMajor * 10) + jccMinor); j >= 10; j--)
+	{
+            newprefix = prefix + "jcc" + j / 10 + "." + j % 10 + '/';
+	    if (master == null) getmaster(newprefix); 
+        }
+    }
+
+    private void getmaster(String prefix)
+    {
+        String fullname = prefix + testBase + ".out";
+        master = RunTest.loadTestResource(fullname);
+        if (master != null)
+            if (verbose) System.out.println("MasterFileName = "+fullname);
+    }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GRFileFilter.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,47 @@
+/* 
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.FilenameFilter;
+import java.io.File;
+
+/**
+	Filter to only accept interesting files
+	for generating reports.
+ */
+class GRFileFilter implements FilenameFilter {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public boolean accept (File dir, String name) {
+	    if (name.endsWith(".skip")) return true;
+		if (name.endsWith(".pass")) return true;
+		if (name.endsWith(".fail")) {
+			// special case from rundtest script
+			if (name.equals("runall.fail")) return false;
+			return true;
+		}
+		if (name.endsWith(".diff")) {
+			// special case from rundtest script
+			if (name.equals("runall.diff")) return false;
+			if (name.equals("failures.diff")) return false;
+			return true;
+		}
+		File f = new File(dir,name);
+		if (f.isDirectory()) return true;
+		return false;
+	}
+
+	GRFileFilter() {}
+	
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/GenerateReport.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,349 @@
+/* 
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Properties;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+/**
+	Generate summary information from a RunSuite run.
+	Can be called separately, if given the suite name.
+	Will be called from RunSuite if System property genrep=true.
+
+	Condenses run information down, prints out result stats,
+	and shows details of failures (.diff files).
+
+	@author ames
+**/
+public class GenerateReport { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	static void CollectProperties () {
+		Properties ps = System.getProperties();
+		char[] newline = {' '};
+		propFile.println(PropertyUtil.sortProperties(ps,newline));
+	}
+
+	static void CalculateRunLength () {
+	// read suite.sum for start/end timestamps, 
+	// report start date and full duration of run
+		String odn = System.getProperty("outputdir");
+		if (odn==null) odn = System.getProperty("user.dir");
+
+		BufferedReader sumFile = null;
+		String firstLine = null;
+		String lastLine = null;
+		try {
+			sumFile = new BufferedReader(new FileReader(new File(new File(odn),SuiteName+".sum")));
+			firstLine = sumFile.readLine();
+			String aLine = firstLine;
+			while (aLine!=null) {
+				lastLine = aLine;
+				aLine = sumFile.readLine();
+			}
+			sumFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+
+		// have firstLine and lastLine.
+		// format is: 
+		// ******* Start Suite: <suite> <timestamp> *******
+		// ******* End Suite: <suite> <timestamp> *******
+		int tsStart = 22+SuiteName.length();
+		int tsEnd = firstLine.length()-8;
+		TestStart = Timestamp.valueOf(firstLine.substring(tsStart,tsEnd));
+		// last line is two shorter
+		tsStart-=2; tsEnd-=2;
+		Timestamp testEnd = Timestamp.valueOf(lastLine.substring(tsStart,tsEnd));
+
+		long testLen = testEnd.getTime() - TestStart.getTime();
+		// Time isn't really a duration, so we have to set the fields
+		int sec = (int) (testLen / 1000);
+		int min = sec / 60;
+		int hr = min / 60;
+		sec = sec - (min*60); // adjust for part removed
+		min = min - (hr*60); // adjust for part removed
+		Calendar cal = new GregorianCalendar();
+		cal.set(Calendar.HOUR_OF_DAY,hr);
+		cal.set(Calendar.MINUTE,min);
+		cal.set(Calendar.SECOND,sec);
+		TestDuration = new Time(cal.getTime().getTime());
+	}
+
+	static void CollectPassFailStats () {
+		// need to ensure outputdir is set...
+		String odn = System.getProperty("outputdir");
+		if (odn==null) odn = System.getProperty("user.dir");
+		CollectPassFailStats(new File(odn),"");
+	}
+
+	static void addLines(PrintWriter outFile, File inFile, String relativeName) {
+		BufferedReader readFile = null;
+		try {
+		readFile = new BufferedReader(new FileReader(inFile));
+		String aLine = readFile.readLine();
+		while (aLine!=null) {
+			outFile.print(relativeName);
+			outFile.print(":");
+			outFile.println(aLine);
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+
+	}
+
+	static void addDiff(PrintWriter outFile, File inFile, String relativeName) {
+		BufferedReader readFile = null;
+		try {
+		readFile = new BufferedReader(new FileReader(inFile));
+		outFile.print("********* Diff file ");
+		outFile.println(relativeName);
+		String aLine = readFile.readLine();
+		while (aLine!=null) {
+			outFile.println(aLine);
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+	}
+
+	static void CollectPassFailStats (File dir,String relativeName) {
+		// starting in specified dir, 
+		String[] fileList = dir.list(fileFilter);
+		int l = fileList.length;
+		for (int i=0;i<l;i++) {
+			String fileName = fileList[i];
+			File file = new File(dir,fileName);
+
+			// collect all .pass files into suite_pass.txt (passFile)
+			if (fileName.endsWith(".pass")) {
+				addLines(passFile,file,relativeName+"/"+fileName);
+			}
+			// collect all .fail files into suite_fail.txt (failFile)
+			else if (fileName.endsWith(".fail")) {
+				addLines(failFile,file,relativeName+"/"+fileName);
+			}
+			// collect all .skip files into suite_skip.txt (skipFile)
+			else if (fileName.endsWith(".skip")) {
+				addLines(skipFile,file,relativeName+"/"+fileName);
+			}
+			// collect all .diff files into suite_diff.txt (diffFile)
+			else if (fileName.endsWith(".diff")) {
+				addDiff(diffFile,file,relativeName+"/"+fileName);
+			}
+
+			// recurse on all directories
+			else // it's a directory
+			{
+				String newDir;
+				if (relativeName.length()>0)
+					newDir = relativeName+"/"+fileName;
+				else newDir = fileName;
+				CollectPassFailStats(file, newDir);
+			}
+		}
+	}
+
+	static void CalculatePassFailStats() {
+		// total tests run
+		// #, % failures
+		// #, % passed
+		NumPass = CountLines (passFileName);
+		NumFail = CountLines (failFileName);
+		NumRun = NumPass+NumFail;
+		NumSkip = CountLines (skipFileName);
+		PercentPass = (int)Math.round(100* ((double)NumPass/(double)NumRun));
+		PercentFail = (int)Math.round(100* ((double)NumFail/(double)NumRun));
+	}
+
+	static int CountLines(String fileName) {
+		BufferedReader readFile = null;
+		int line = 0;
+		try {
+		readFile = new BufferedReader(new FileReader(fileName));
+		String aLine = readFile.readLine();
+		while (aLine!=null) {
+			line++;
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+		return line;
+	}
+
+	static void OutputFile(String fileName) {
+		BufferedReader readFile = null;
+		try {
+		readFile = new BufferedReader(new FileReader(fileName));
+		String aLine = readFile.readLine();
+		while (aLine != null) {
+			reportFile.println(aLine);
+			aLine = readFile.readLine();
+		}
+		readFile.close();
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+	}
+
+	static PrintWriter setupFile(String fn) {
+		File f = null;
+		PrintWriter pw = null;
+		try {
+		f = new File(fn);
+		if (f.exists()) {
+			System.out.println("WARNING: removing "+fn);
+			f.delete();
+		}
+		pw = new PrintWriter(new FileWriter(fn,true));
+		} catch (IOException ioe) { 
+			ioe.printStackTrace(System.out);
+		}
+		return pw;
+	}
+
+	public static void main(String[] args) {
+		SuiteName = args[0];
+		String jvmName = args[1];
+		String javaCmd = args[2];
+		String classpath = args[3];
+		String framework = args[4];
+		String processexec = args[5];
+		boolean useprocess = true;
+		if ( (processexec.toLowerCase()).startsWith("false") )
+		    useprocess = false;
+		String reportFileName = SuiteName+"_report.txt";
+		reportFile = setupFile(reportFileName);
+		reportFile.print("Generating report for RunSuite ");
+		for (int i=0;i<args.length;i++)
+			reportFile.print(args[i]+" ");
+		reportFile.println();
+		passFileName = SuiteName+"_pass.txt";
+		failFileName = SuiteName+"_fail.txt";
+		diffFileName = SuiteName+"_diff.txt";
+		skipFileName = SuiteName+"_skip.txt";
+		propFileName = SuiteName+"_prop.txt";
+		passFile = setupFile(passFileName);
+		failFile = setupFile(failFileName);
+		diffFile = setupFile(diffFileName);
+		skipFile = setupFile(skipFileName);
+		propFile = setupFile(propFileName);
+
+		// sysinfo printout
+		SysInfoLog sysLog = new SysInfoLog();
+		try
+		{
+		    sysLog.exec(jvmName, javaCmd, classpath, framework, reportFile, useprocess);
+		    //SysInfoMain.getMainInfo(reportFile,false,false);
+		}
+		catch (Exception e)
+		{
+		    System.out.println("SysInfoLog Exception: " + e.getMessage());
+		}
+	
+		reportFile.println("Test environment information:");
+		reportFile.print("COMMAND LINE STYLE: ");
+		String jvm = System.getProperty("jvm");
+		if (jvm == null) jvm="jdk13";
+		reportFile.println(jvm);
+		reportFile.print("TEST CANONS: ");
+		String canondir = System.getProperty("canondir");
+		if (canondir == null) canondir = "master";
+		reportFile.println(canondir);
+		reportFile.println(DASHLINE);
+
+		reportFile.println(DASHLINE);
+		reportFile.println("Summary results:");
+		CalculateRunLength();
+		CollectPassFailStats();
+		CollectProperties();
+		passFile.close();
+		failFile.close();
+		skipFile.close();
+		diffFile.close();
+		propFile.close();
+		CalculatePassFailStats();
+		reportFile.println();
+		reportFile.println("Test Run Started: "+TestStart);
+		reportFile.println("Test Run Duration: "+TestDuration);
+		reportFile.println();
+		reportFile.println(NumRun+" Tests Run");
+		if (PercentPass<10) reportFile.print(" ");
+		reportFile.println(PercentPass+"% Pass ("+NumPass+" tests passed)");
+		if (PercentFail<10) reportFile.print(" ");
+		reportFile.println(PercentFail+"% Fail ("+NumFail+" tests failed)");
+		reportFile.println(NumSkip + " Suites skipped");
+		reportFile.println(DASHLINE);
+
+		if (NumFail>0) {
+			reportFile.println("Failed tests in: "+failFileName);
+			reportFile.println(DASHLINE);
+		}
+
+		if (NumPass>0) {
+			reportFile.println("Passed tests in: "+passFileName);
+			reportFile.println(DASHLINE);
+		}
+
+		if (NumSkip>0) {
+			reportFile.println("Skipped suites in: "+skipFileName);
+			reportFile.println(DASHLINE);
+		}
+
+		reportFile.println("System properties in: "+propFileName);
+		reportFile.println(DASHLINE);
+
+		reportFile.println(DASHLINE);
+		if (NumFail>0) {
+			reportFile.println("Failure Details:");
+			// cat each .diff file with full test name
+			OutputFile(diffFileName);
+		}
+		else reportFile.println("No Failures.");
+		reportFile.println(DASHLINE);
+		reportFile.close();
+
+		System.out.println("Generated report: "+reportFileName);
+	}
+	
+	static final String DASHLINE="------------------------------------------------------";
+	static String passFileName, failFileName, diffFileName, skipFileName, propFileName;
+	static PrintWriter passFile, failFile, diffFile, skipFile, propFile;
+	static PrintWriter reportFile;
+	static FilenameFilter fileFilter = new GRFileFilter();
+	static int NumPass, NumFail, NumRun, NumSkip;
+	static int PercentPass, PercentFail;
+	static Timestamp TestStart;
+	static Time TestDuration;
+	static String SuiteName;
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/HandleResult.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,90 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.PrintWriter;
+import java.io.IOException;
+
+/**
+  Class: HandleResult
+  Purpose: To capture stdout & stderr to a file
+  (PrintWriter is used for writing the output)
+*/
+
+public class HandleResult
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static void main(String[] args) throws Exception
+	{
+	}
+
+    public static String handleResult(int exitCode, InputStream stdout,
+        InputStream stderr, PrintWriter printWriter)
+        throws IOException
+    {
+		StringBuffer sb = new StringBuffer();
+
+		// only used for debugging
+		sb.append("exitcode=");
+		sb.append(exitCode);
+
+        if (stdout != null)
+        {
+    		// reader for stdout
+    		BufferedReader outReader = new BufferedReader(new InputStreamReader(stdout));
+
+            // Read each line and write to printWriter
+    		String s = null;
+    		int lines = 0;
+    		while ((s = outReader.readLine()) != null)
+    		{
+    		    lines++;
+    		    if (printWriter == null)
+    			    System.out.println(s);
+    			else
+    			    printWriter.println(s);
+    		}
+    		sb.append(",");
+    		sb.append(lines);
+    		outReader.close();
+    		printWriter.flush();
+        }
+
+        if (stderr != null)
+        {
+            // reader for stderr
+    		BufferedReader errReader = new BufferedReader(new InputStreamReader(stderr));
+
+    		String s = null;
+    		int lines = 0;
+    		while ((s = errReader.readLine()) != null)
+    		{
+    		    if (printWriter == null)
+    			    System.out.println(s);
+    			else
+    			    printWriter.println(s);
+    		}
+    		errReader.close();
+    		printWriter.flush();
+    	}
+
+		return sb.toString();
+	}
+}
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/JavaVersionHolder.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,118 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.StringTokenizer;
+
+/**
+  To break down the java version into major and minor
+  Used by the test harness for special cases
+  */
+public class JavaVersionHolder
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+ 
+    private String majorVersion;
+    private String minorVersion;
+    private int major;
+    private int minor;
+    
+    public JavaVersionHolder(String javaVersion)
+        throws java.lang.NumberFormatException
+    {
+		// check for jdk12 or higher
+		int i = javaVersion.indexOf('.');
+		int j = javaVersion.indexOf('.', i+1);
+		majorVersion = javaVersion.substring(0, i);
+		try
+	    {
+		    Integer imajor = new Integer(majorVersion);
+		    major = imajor.intValue();
+		    if (j != -1)
+		    {
+		        minorVersion = javaVersion.substring(i+1, j);
+		        Integer iminor = new Integer(minorVersion);
+		        minor = iminor.intValue();
+		    }
+		    else
+		    {
+		        minorVersion = javaVersion.substring(i+1);
+		        Integer iminor = new Integer(minorVersion);
+		        minor = iminor.intValue();
+		    }
+		}
+		catch (NumberFormatException nfe)
+		{
+		    // Cannot parse the version as an Integer
+		    // such as on HP: hack for this special case
+		    if (javaVersion.startsWith("HP"))
+		    {
+		        // attempt to get the version
+		        StringTokenizer st = new StringTokenizer(javaVersion,".");
+		        String tmp = st.nextToken();
+		        majorVersion = st.nextToken();
+		        if (majorVersion.equals("01"))
+		            majorVersion = "1";
+		        else if (majorVersion.equals("02"))
+		            majorVersion = "2";
+		        minorVersion = st.nextToken();
+		        if (minorVersion.startsWith("1"))
+		            minorVersion = "1";
+		        else if (minorVersion.startsWith("2"))
+		            minorVersion = "2";
+		        //System.out.println("majorVersion: " + majorVersion);
+		        //System.out.println("minorVersion: " + minorVersion);
+		        try
+	            {
+		            Integer imajor = new Integer(majorVersion);
+		            major = imajor.intValue();
+		            Integer iminor = new Integer(minorVersion);
+		            minor = iminor.intValue();
+		        }
+		        catch (NumberFormatException nfe2)
+		        {
+		            System.out.println("Could not parse version: " + nfe2);
+		            // Still couldn't parse the vesion
+		            // have to give up
+		        }
+            }
+            else
+            {
+                System.out.println("NumberFormatException thrown trying to parse the version.");
+                System.out.println("The test harness only handles the HP special case.");
+            }
+                
+        }
+    }
+
+    public String getMajorVersion()
+    {
+        return majorVersion;
+    }
+    
+    public String getMinorVersion()
+    {
+        return minorVersion;
+    }
+    
+    public int getMajorNumber()
+    {
+        return major;
+    }
+    
+    public int getMinorNumber()
+    {
+        return minor;
+    }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ManageSysProps.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,54 @@
+/* 
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Enumeration;
+import java.util.Properties;
+
+/*
+ **
+ **	Keeps a copy of the system properties saved at a critical early
+ **	point during the running of the test harness.  Uses this copy
+ **	to create new copies which can then be mussed up and thrown
+ **	away, as needed.
+ */
+
+public class ManageSysProps
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	private static Properties savedSysProps = null;
+
+	public static void saveSysProps() {
+		Properties sp = System.getProperties();
+		savedSysProps = new Properties();
+		String key = null;
+		for (Enumeration e = sp.propertyNames(); e.hasMoreElements();) {
+			key = (String)e.nextElement();
+			savedSysProps.put(key, sp.getProperty(key));
+		}
+	}
+
+	// reset the system properties to prevent confusion
+	// when running with java threads
+	public static void resetSysProps() {
+		String key = null;
+		Properties nup = new Properties();
+		for (Enumeration e = savedSysProps.propertyNames(); e.hasMoreElements();) {
+			key = (String)e.nextElement();
+			nup.put(key, savedSysProps.getProperty(key));
+		}
+		System.setProperties(nup);
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/NetServer.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,407 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.lang.reflect.Method;
+import java.lang.reflect.Constructor;
+import java.net.ConnectException;
+import java.net.Socket;
+
+public class NetServer
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+    File homeDir; // The server directory (usually the test directory)
+    String jvmName = "jdk13";
+    String clPath;
+    String javaCmd;
+    String jvmflags;
+    String framework;
+    
+    Object[] frameworkInfo;
+    int port;
+    Process pr;
+    BackgroundStreamSaver outSaver, errSaver;
+    FileOutputStream fosOut, fosErr;
+    private String java;
+
+	//  Variables for test connection
+    Object networkServer;   // Server needs to be created with reflection
+	Method pingMethod;
+
+	private static String NETWORK_SERVER_CLASS_NAME="org.apache.derby.drda.NetworkServerControl";
+    
+    public static Hashtable m;
+    public static int PREFIX_POS = 0;
+    public static int SUFFIX_POS = 1;
+    public static int DRIVER_POS = 2;
+    public static int PORT_POS = 3;
+    public static int START_CMD_POS = 4;
+    public static int STOP_CMD1_POS = 5;
+    public static int STOP_CMD2_POS = 6;
+
+    
+    static {
+	m =  new Hashtable();
+	// Hashtable is keyed on framework name and has 
+	// an array of the framework prefix, suffix, driver, port  and 
+	// String[] command arguments to start the server
+	// String[] Command arguments to stop the server
+	m.put("DerbyNet", new Object[]
+	    {"jdbc:derby:net://localhost:1527/",                 //prefix
+	     "",                                            // suffix
+	     "com.ibm.db2.jcc.DB2Driver",                   //driver
+	     "1527",                                        // port
+	     new String[] {NETWORK_SERVER_CLASS_NAME,  //start
+			   "start"},                        
+	     new String[] {NETWORK_SERVER_CLASS_NAME,  //shutdown
+			   "shutdown"},
+	     null});                                        //shutdown2
+
+	m.put("DB2jcc", new Object[]
+	    {"jdbc:db2://localhost:50000/",                //prefix
+	     "",                                            //suffix
+	     "com.ibm.db2.jcc.DB2Driver",                   //driver
+	     "50000",                                       //port
+	     null,                                          //start
+	     null,                                          
+	     null});
+
+	m.put("DB2app", new Object[]
+	    {"jdbc:db2:",
+	     "",
+	     "COM.ibm.db2.jdbc.app.DB2Driver",
+	     "0",
+	     null,
+	     null,
+	     null});
+    }
+
+    public NetServer(File homeDir, String jvmName, String clPath, String
+		     javaCmd, String jvmflags, String framework) 
+	throws Exception
+    {
+	this.homeDir = homeDir;
+        this.jvmName = jvmName;
+        this.clPath = clPath;
+        this.javaCmd = javaCmd;
+        this.jvmflags = jvmflags;
+	this.framework = framework;
+	frameworkInfo =  (Object[]) m.get(framework);
+	
+	this.port = Integer.parseInt((String) frameworkInfo[PORT_POS]);
+	
+	// System.out.println("framework: " + this.framework + "port: " + this.port);
+	
+    }
+    public void start() throws Exception
+    {
+	// Create the Server directory under the    server dir
+	(new File(homeDir, framework + "Server")).mkdir();
+	String[] startcmd = (String[]) frameworkInfo[START_CMD_POS];
+	// if we are just connecting to DB2 we return
+	if (startcmd == null) 
+	    return;
+	
+        // Build the command to run the WL server
+	String homeDirName = homeDir.getCanonicalPath();
+		jvm jvm = null; // to quiet the compiler
+		jvm = jvm.getJvm(jvmName);
+		if (jvmName.equals("jview"))
+		    jvm.setJavaCmd("jview");
+		else if (javaCmd != null)
+		    jvm.setJavaCmd(javaCmd);
+		
+		Vector jvmProps = new Vector();
+		if ( (clPath != null) && (clPath.length()>0) )
+		    jvm.setClasspath(clPath);
+
+        if ( (jvmflags != null) && (jvmflags.length()>0) )
+            jvm.setFlags(jvmflags);
+
+
+        if (!jvmName.equals("jview"))
+        {
+            jvm.setMs(16*1024*1024); // -ms16m
+            jvm.setMx(32*1024*1024); // -mx32m
+            jvm.setNoasyncgc(true); // -noasyncgc
+        }
+
+        jvmProps.addElement("derby.system.home=" + homeDirName);
+		jvm.setD(jvmProps);
+		jvm.setSecurityProps();
+        // For some platforms (like Mac) the process exec command
+        // must be a string array; so we build this with a Vector
+        // first because some strings (paths) could have spaces
+	Vector vCmd = jvm.getCommandLine();
+	for (int i = 0; i < startcmd.length; i++)
+	    vCmd.addElement(startcmd[i]);
+
+	String serverCmd[] = new String[vCmd.size()];
+	for (int i = 0; i < vCmd.size(); i++)
+	{
+	    serverCmd[i] = (String)vCmd.elementAt(i);
+	    System.out.print(serverCmd[i] + " ");
+	}
+	System.out.println("");
+        // Start a process to run the Server
+	pr = Runtime.getRuntime().exec(serverCmd);
+	
+        // Write the out and err files to the server directory also
+	File out = new File(homeDir, framework + ".out");
+	fosOut = new FileOutputStream(out);
+	outSaver = new BackgroundStreamSaver(pr.getInputStream(), fosOut);
+	File err = new File(homeDir, framework + ".err");
+	fosErr = new FileOutputStream(err);
+	errSaver = new BackgroundStreamSaver(pr.getErrorStream(), fosErr);
+	
+	for (int i = 0 ; i <= 120 ; i++)
+	{
+	    // No need to wait for DB2
+	    if (isDB2Connection(framework))
+		break;
+     
+	    try
+	    {
+ 			if (isNetworkServerConnection(framework))
+			{
+				// adding a testconnection check 
+				// so that the test does not start before the server is up
+ 				if (testNetworkServerConnection())
+					break;
+ 			}
+ 			else	
+ 			{
+ 				Socket s = new Socket("localhost", this.port);
+ 				s.close();
+				break;
+ 			}
+
+		}
+		catch (Exception e)
+	    {
+		// bail out if something has been written to stderr
+		if (err.length() > 0) {
+		    break;
+		} else {
+				// it's probably unnecessary to sleep, since the
+				// connection request generally takes a long time when
+				// the listener hasn't started yet, but what the heck ...
+		    Thread.sleep(1000);
+				// but here we iterate, and after 120 seconds, we stop
+				// waiting to connect.
+		} 
+		
+	    }
+	}
+    }
+    
+	public boolean  testNetworkServerConnection() throws Exception
+	{ 	
+	    Object[] testConnectionArg  = null;
+		if (networkServer == null)
+		{
+			Constructor serverConstructor;
+			Class serverClass = Class.forName(NETWORK_SERVER_CLASS_NAME);
+			serverConstructor = serverClass.getDeclaredConstructor(null);
+			networkServer = serverConstructor.newInstance(null);
+			pingMethod = networkServer.getClass().getMethod("ping",
+															 null);
+		}
+		pingMethod.invoke(networkServer,null);
+		return true;
+	}
+
+    // stop the Server
+	public void stop() throws Exception
+    {
+	jvm jvm = null; // to quiet the compiler
+	jvm = jvm.getJvm(jvmName);
+	Vector jvmCmd = jvm.getCommandLine();
+	
+	Vector connV = new Vector();
+	for (int i = 0; i < jvmCmd.size(); i++)
+	{
+	    connV.addElement((String)jvmCmd.elementAt(i));
+        }
+	
+	String[] stopcmd1 = (String[]) frameworkInfo[STOP_CMD1_POS];
+		if (stopcmd1 == null)
+		    return;
+		
+		for (int i = 0; i < stopcmd1.length; i++)
+		    connV.addElement(stopcmd1[i]);
+		
+		String[] connCmd = new String[connV.size()];
+		for (int i = 0; i < connV.size(); i++)
+		{
+		    connCmd[i] = (String)connV.elementAt(i);
+		}		    
+		
+		
+		Vector stopV = new Vector();
+		for (int i = 0; i < jvmCmd.size(); i++)
+		{
+		    stopV.addElement((String)jvmCmd.elementAt(i));
+		}
+		Process prconn = Runtime.getRuntime().exec(connCmd);
+		// Give the server sixty seconds to shutdown.
+		TimedProcess tp = new TimedProcess(prconn);
+		tp.waitFor(60);
+		
+		String[] stopcmd2 = (String[]) frameworkInfo[STOP_CMD2_POS];
+		if (stopcmd2 != null)
+		{
+		    for (int i = 0; i < stopcmd2.length; i++)
+			stopV.addElement(stopcmd2[i]);
+		    
+		    String[] stopCmd = new String[stopV.size()];
+		    for (int i = 0; i < stopV.size(); i++)
+		    {
+			stopCmd[i] = (String)stopV.elementAt(i);
+		    }
+		    
+		    Process prstop = Runtime.getRuntime().exec(stopCmd);
+		    prstop.waitFor();
+		}
+
+		// Try a TimedProcess as Phil did for the WLServer
+		tp = new TimedProcess(pr);
+		// In case the Server didn't shut down, force it to ...
+		tp.waitFor(60);
+		
+		// Finish and close the redirected out and err files
+		outSaver.finish();
+		errSaver.finish();
+	}
+    
+    public void printFramworkInfo(String framework)
+    {
+	System.out.println("PREFIX = " + frameworkInfo[PREFIX_POS]);
+	System.out.println("SUFFIX = " + frameworkInfo[SUFFIX_POS]);
+	System.out.println("DRIVER = " + frameworkInfo[DRIVER_POS]);
+	System.out.println("PORT = " + frameworkInfo[PORT_POS]);
+	
+	for (int index = START_CMD_POS; index <= STOP_CMD2_POS; index++)
+	{
+	    String cmdString = "";
+	    String[] cmdArray = (String[]) frameworkInfo[index] ;
+	    for (int i = 0; i < cmdArray.length; i++)
+	    {
+		cmdString += " " + cmdArray[i];
+	    }
+	    if (index == START_CMD_POS)
+		System.out.println("START_CMD =  " + cmdString);
+	    else
+		System.out.println("STOP_CMD = " + cmdString);
+	    
+	}
+    }
+    
+    // Get Framework Info
+    public static String getURLPrefix(String fm)
+		{
+		    Object[] info = (Object[]) m.get(fm);
+		    return (String) info[PREFIX_POS];
+		}
+    
+    public static String getURLSuffix(String fm)
+    {
+	Object[] info = (Object[]) m.get(fm);
+	return (String) info[SUFFIX_POS];
+    }
+    
+    public static String getDriverName(String fm)
+    {
+	Object[] info =  (Object[]) m.get(fm);
+	if (info != null)
+	    return (String) info[DRIVER_POS];
+	else 
+	    return null;
+    }
+    
+    public static  boolean isDB2Connection(String fm)
+    {
+	return (fm.equals("DB2app") ||
+		fm.equals("DB2jcc"));
+
+    }
+
+	public static boolean isNetworkServerConnection(String fm)
+	{
+		return (fm.equals("DerbyNet"));
+	}
+
+    public static boolean isJCCConnection(String fm)
+    {
+	return (fm.equals("DerbyNet") ||
+		fm.equals("DB2jcc"));
+    }
+
+    /**
+     * @param fm framework name. database url from properties file
+     * @return  
+     * altered url (i.e. attributes stripped for DB2 and DerbyNet)
+     */
+
+    public static String alterURL(String fm, String url)
+    {
+	String urlPrefix = "jdbc:derby:";
+	String newURLPrefix = getURLPrefix(fm);
+	String newURLSuffix = getURLSuffix(fm);
+	
+	// If we don't have a URL prefix for this framework
+	// just return
+	if (newURLPrefix == null)
+	    return url;
+
+	if (newURLSuffix == null)
+	    newURLSuffix = "";
+	
+	if (url.equals(urlPrefix)) // Replace embedded
+	    return newURLPrefix;
+
+	// If this is a DB2 connection we need to strip 
+	// the connection attributes
+	int attrOffset = url.indexOf(';');
+	if (NetServer.isDB2Connection(fm)  &&
+		attrOffset != -1)
+	    url = url.substring(0,attrOffset);
+	
+	
+	if (url.startsWith(urlPrefix))
+	{
+	    // replace jdbc:derby: with our url:
+	    url = newURLPrefix +
+		url.substring(urlPrefix.length()) +
+		newURLSuffix;
+	}
+	else
+	{
+	    if (! (url.startsWith("jdbc:")))
+	    {
+		url = newURLPrefix + url + newURLSuffix;
+	    }
+	}
+	return url;
+    }
+    
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamDrainer.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,96 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+
+
+public class ProcessStreamDrainer implements Runnable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	protected ByteArrayOutputStream data;
+	protected InputStream in;
+	protected FileOutputStream fos;
+	protected BufferedOutputStream bos;
+	protected boolean finished;
+	protected IOException ioe;
+
+	public ProcessStreamDrainer(InputStream in, File tmpOutFile)
+	    throws IOException, InterruptedException
+	{
+		data = new ByteArrayOutputStream();
+		this.in = in;
+        this.fos = new FileOutputStream(tmpOutFile);
+        this.bos = new BufferedOutputStream(fos, 4096);
+		Thread myThread = new Thread(this, getClass().getName());
+
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		//System.out.println("ProcessStreamDrainer calling start...");
+		myThread.start();
+	}
+
+	public synchronized void run()
+	{
+        //System.out.println("Thread run...");
+        if ( in == null )
+        {
+            System.out.println("The inputstream is null");
+            System.exit(1);
+        }
+
+		try
+		{
+			byte[] ca = new byte[4096];
+			int valid;
+			while ((valid = in.read(ca, 0, ca.length)) != -1)
+			{
+			    //System.out.println(ca);
+    			bos.write(ca, 0, valid);
+    			bos.flush();
+			}
+			bos.flush();
+		}
+		catch (IOException ioe)
+		{
+			System.out.println(ioe);
+		}
+
+		synchronized (this)
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public void Wait() throws IOException
+	{
+	    synchronized(this)
+	    {
+	        try
+	        {
+	            while (!finished)
+	            {
+	                wait();
+	            }
+	        }
+	        catch (InterruptedException ie)
+	        {
+	            System.out.println("Interrupted: " + ie.toString());
+	        }
+	    }
+	    bos.close();
+	    return;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ProcessStreamResult.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,134 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+import java.sql.Timestamp;
+
+
+public class ProcessStreamResult implements Runnable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	protected InputStream in;
+	protected BufferedOutputStream bos;
+	protected boolean finished;
+	protected IOException ioe;
+	protected Thread myThread;
+	protected long startTime;
+	protected boolean interrupted;
+	protected int timeout;
+
+	public ProcessStreamResult(InputStream in, BufferedOutputStream bos,
+	    String timemin) throws IOException, InterruptedException
+	{
+		this.in = in;
+        this.bos = bos;
+        this.startTime = System.currentTimeMillis();
+        if (timemin != null)
+        {
+            Integer i = new Integer(timemin);
+            timeout = i.intValue();
+        }
+        else
+            timeout = 0;
+		myThread = new Thread(this);
+		myThread.setPriority(Thread.MIN_PRIORITY);
+		myThread.start();
+	}
+
+	public void run()
+	{
+        //System.out.println("Thread run... " + tname);
+        if ( in == null )
+        {
+            System.out.println("The inputstream is null");
+            System.exit(1);
+        }
+        
+		try
+		{
+			byte[] ba = new byte[1024];
+			int valid;
+			interrupted = false;
+			while ((valid = in.read(ba, 0, ba.length)) != -1)
+			{
+			    //System.out.println("Still reading thread: " + tname);
+/*				if (timeout > 0) {
+					long millis = System.currentTimeMillis();
+
+					long diff = millis - startTime;
+
+					int mins = (int) (diff / (1000 * 60));
+
+					if (mins > timeout) {
+						System.out.println("Timeout, kill the thread... ");
+						//myThread.dumpStack();
+						synchronized (this)
+						{
+							interrupted = true;
+							finished = true;
+							notifyAll();
+							return;
+						}
+					}
+			    }
+*/    			bos.write(ba, 0, valid);
+    			bos.flush();
+			}
+		}
+		catch (IOException ioe)
+		{
+			//System.out.println(ioe);
+			//ioe.printStackTrace();
+		}
+
+		synchronized (this)
+		{
+			finished = true;
+			notifyAll();
+		}
+	}
+
+	public boolean Wait() throws IOException
+	{
+	    synchronized(this)
+	    {
+			if (timeout > 0) {
+				long millis = System.currentTimeMillis();
+
+				long diff = millis - startTime;
+
+				int mins = (int) (diff / (1000 * 60));
+
+				if (mins > timeout)
+				{
+					return interrupted;
+				}
+			}
+			try
+			{
+				while (!finished && !interrupted)
+				{
+					wait();
+				}
+			}
+			catch (InterruptedException ie)
+			{
+				System.out.println("Interrupted: " + ie.toString());
+			}
+	    }
+	    return interrupted;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/PropertyUtil.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,144 @@
+/* 
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Properties;
+import java.util.Enumeration;
+
+public class PropertyUtil { 
+ 	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;  
+
+
+	//////////////////////////////////////////////////////////////////////////////
+	//
+	//	SORTS A PROPERTY LIST AND STRINGIFIES THE SORTED PROPERTIES
+	//
+	/////////////////////////////////////////////////////////////////////////////
+
+	/**
+	  *	Sorts a property list and turns the sorted list into a string.
+	  *
+	  *	@param	list	property list to sort
+	  *
+	  *	@return	a string version of the sorted list
+	  */
+	public	static	String	sortProperties( Properties list )
+	{
+		// stringify them with no indentation
+		return sortProperties(list, null);
+	}
+
+	/**
+	 * Sorts property list and print out each key=value pair prepended with 
+	 * specific indentation.  If indent is null, do not prepend with
+	 * indentation. 
+	 *
+	 * The output string shows up in two styles, style 1 looks like
+	 * { key1=value1, key2=value2, key3=value3 }
+	 *
+	 * style 2 looks like
+	 *		key1=value1
+	 *		key2=value2
+	 *		key3=value3
+	 * where indent goes between the new line and the keys
+	 *
+	 * To get style 1, pass in a null indent
+	 * To get sytle 2, pass in non-null indent (whatever you want to go before
+	 * the key value)
+	 */
+	public	static	String	sortProperties( Properties list, char[] indent )
+	{
+		int				size = list == null ? 0 : list.size();
+		int				count = 0;
+		String[]		array = new String[size];
+		String			key;
+		String			value;
+		StringBuffer	buffer;
+
+		// Calculate the number of properties in the property list and
+		// build an array of all the property names.
+		// We need to go thru the enumeration because Properties has a
+		// recursive list of defaults.
+		if (list != null)
+		{
+			for (Enumeration propertyNames = list.propertyNames();
+				 propertyNames.hasMoreElements(); )
+			{
+				if (count == size)
+				{
+					// need to expand the array
+					size = size*2;
+					String[] expandedArray = new String[size];
+					System.arraycopy(array, 0, expandedArray, 0, count);
+					array = expandedArray;
+				}
+				key = (String) propertyNames.nextElement();
+				array[ count++ ] = key;
+			}
+			// now sort the array
+			java.util.Arrays.sort( array, 0, count );
+		}
+
+
+		// now stringify the array
+		buffer = new StringBuffer();
+		if (indent == null)
+			buffer.append( "{ " );
+
+		for ( int ictr = 0; ictr < count; ictr++ )
+		{
+			if ( ictr > 0 && indent == null)
+				buffer.append( ", " );
+
+			key = array[ ictr ];
+
+			if (indent != null)
+				buffer.append( indent );
+
+			buffer.append( key ); buffer.append( "=" );
+
+			value = list.getProperty( key, "MISSING_VALUE" );
+			buffer.append( value );
+
+			if (indent != null)
+				buffer.append( "\n" );
+
+		}
+		if (indent == null)
+			buffer.append( " }" );
+
+		return	buffer.toString();
+	}
+
+    /**
+     * Copy a set of properties from one Property to another.
+     * <p>
+     *
+	 * @return The identifier to be used to open the conglomerate later.
+     *
+     * @param src_prop  Source set of properties to copy from.
+     * @param dest_prop Dest Properties to copy into.
+     *
+     **/
+    public static void copyProperties(Properties src_prop, Properties dest_prop)
+    {
+        for (Enumeration propertyNames = src_prop.propertyNames();
+             propertyNames.hasMoreElements(); )
+        {
+            String key = (String) propertyNames.nextElement();
+            dest_prop.put(key, src_prop.getProperty(key));
+        }
+    }
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunClass.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,63 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.lang.reflect.Method;
+
+
+// the purpose of this class is to run Java-based test cases in a separate thread
+public class RunClass implements Runnable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	/**
+		param args the arguments to pass into ij
+	*/
+	public RunClass(Class theClass, Method methodToCall, Object args[])
+	{
+		mainMethod = methodToCall;
+		arguments=args;	
+		testClass = theClass;
+	}
+
+	Object arguments[];
+	Method mainMethod;
+	Class testClass;
+
+	public void run()
+	{
+        synchronized (this)
+        {
+		    try
+		    {
+			    mainMethod.invoke(testClass.newInstance(), arguments);				
+		    }
+		    catch (InstantiationException ie)
+		    {
+		        System.out.println("Class could not be instantiated: " + ie);
+		        System.exit(1);
+		    }
+		    catch (IllegalAccessException iae)
+		    {
+		        System.out.println("RunClass: " + iae + " make sure the test class is public.");
+		        System.exit(1);
+		    }
+		    catch (Exception e)
+		    {
+			    System.out.println("RunClass --> " + e);
+			    e.printStackTrace();
+		    }
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunIJ.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,47 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+
+// the purpose of this class is to run IJ in a separate thread
+public class RunIJ implements Runnable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	/**
+		param args the arguments to pass into ij
+	*/
+	public RunIJ(String args[])
+	{
+		ijArgs=args;	
+	}
+
+	String ijArgs[];
+
+	public void run()
+	{
+	    synchronized (this)
+	    {
+		    try
+		    {
+			    org.apache.derby.tools.ij.main(ijArgs);
+		    }
+		    catch (Exception e)
+		    {
+			    System.out.println("RunIJ --> " + e);
+			    e.printStackTrace();
+		    }
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunList.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1203 @@
+/* 
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+//import org.apache.derby.tools.sysinfo;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.PrintStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.lang.ClassNotFoundException;
+import java.lang.reflect.Method;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+public class RunList
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	static String jvmName = "currentjvm";
+	static String javaCmd = "java";
+	static String javaArgs;
+	static jvm jvm;
+	static String javaVersion; // System.getProperty("java.version")
+	static String majorVersion;
+	static String minorVersion;
+	static String jversion; // to pass jvm to RunTest as -Djvm=1.2 etc.
+	static int iminor;
+	static int imajor;
+	static boolean skip = false;
+	static boolean driverNotFound = false;
+	static boolean needSync = false;
+	static boolean needJdk12 = false;
+	static boolean needJdk12ext = false;
+	static boolean excludedFromJCC = false;
+	static Boolean needIBMjvm = null;
+	static boolean needJdk14 = false;
+        static boolean needEncryption = false;
+	static String jvmflags;
+	static String testJavaFlags;
+	static String classpath;
+	static String classpathServer;
+    static String framework;
+    static String usesystem;
+    static String upgradetest;
+    static String jarfile;
+    static String useoutput;
+	static String keepfiles = "false";
+	static String encryption;
+	static String testEncryptionProvider;
+	static String jdk12test;
+	static String jdk12exttest;
+	static String jdk14test;
+	static String runwithibmjvm = null;
+	static String runwithj9;
+	static String runwithjvm;
+	static String excludeJCC;
+	static boolean useprocess = true;
+	static String skipsed = "false";
+	static boolean fw_set = false;
+	static String systemdiff = "false";
+	static String suiteName = "";
+	static String fullsuiteName = "";
+	static String topSuiteName = ""; // The very top suite creating RunLists
+	static String topParentSuite = ""; // The "subparent" of the very top suite
+	static String topSpecialProps = ""; // special properties at the top suite
+	static String otherSpecialProps = ""; // special properties (individual suite)
+	static String ijdefaultResourcePackage; // for ij tests, the package resource
+	static String outcopy; // cases where copyfiles should go to outDir
+	static String userdir; // current user directory
+	static String mtestdir; // required by multi tests
+	static boolean verbose = false; // for debug output
+	static String reportstderr;
+	static String timeout;
+	static String shutdownurl;
+    static PrintWriter pwOut; // for writing suite output
+	static String outputdir; // location of output (default is userdir)
+	static String topsuitedir; // for nested suites, need top output location
+	static String topreportdir; // where to place the .pass and .fail files
+	static String canondir; // location of masters (default is master)
+	static String bootcp; // for j9 bootclasspath
+	static String serverJvm; // for starting another jvm for networkserver, j9 only for now.
+    static File outDir; // test out dir
+    static File outFile; // suite output file
+    static File runDir; // location of suite.runall (list of tests)
+	static File runFile; // suite.runall file
+	static Properties suiteProperties;
+	static Properties specialProperties; // for testSpecialProps
+	static BufferedReader runlistFile;
+
+    public RunList()
+    {
+    }
+
+    /**
+    * RunList
+    * suitesToRun: a Vector of suites from RunSuite
+    * outDir: The output directory for the suite(s)
+    * pwOut: The output for writing suite and test results
+    * suiteProperties: From RunSuite for the top suite
+    * (individual suites in the vector may have their own
+    * properties which must also be located and applied)
+    */
+
+    public RunList(Vector suitesToRun, 
+        File runDir, File outDir, PrintWriter pwOut,
+        Properties suiteProperties, 
+        Properties specialProperties, 
+        String topParentSuite)
+        throws ClassNotFoundException, IOException, Exception
+    {
+        this.runDir = runDir;
+        this.outDir = outDir;
+        this.pwOut = pwOut;
+        this.suiteProperties = suiteProperties; // usual suite props
+        this.specialProperties = specialProperties; // for special test Flags
+        this.topSuiteName = suiteProperties.getProperty("suitename");
+        //System.out.println("----------------------------------------");
+        //System.out.println("RunList topSuiteName= " + topSuiteName);
+        this.topParentSuite = topParentSuite;
+        //System.out.println("topParentSuite= " + topParentSuite);
+        
+        // Run the suites
+        runSuites(suitesToRun);
+    }
+
+    private static void runSuites(Vector suitesToRun)
+        throws ClassNotFoundException,
+        FileNotFoundException, IOException, Exception
+    {
+        // For each suite, locate its properties and runall files
+        // which should be in the "suites" dir or user.dir
+        String suiteName = "";
+        userdir = System.getProperty("user.dir");
+        //System.out.println("Number of suites in list = " + suitesToRun.size());
+        Properties p = null;
+        
+        // First get the top level suiteProperties since some
+        // special properties might need to be used by all sub-suites
+        setTopSuiteProperties();
+        // Now set the properties for the topParentSuite (a sub-parent of the top)
+        Properties topParentSuiteProps = 
+            locateSuiteProperties(topParentSuite, suiteProperties, true, true);
+        setSuiteProperties(topParentSuiteProps, topParentSuite, suiteProperties, true, true);
+            
+        // Now handle the list of child suites under this parent
+        for (int i = 0; i < suitesToRun.size(); i++)
+        {
+            /* Note: nesting of suites can be complex, especially if the
+             subsuites of the top suite also contain subsuites; we must take
+             care in setting of special properties like framework which may
+             need to propagate to its subsuites, but not back to the very top
+            */
+            Properties subProps = null;
+            fullsuiteName = (String)suitesToRun.elementAt(i);
+            //System.out.println("fullsuiteName: " + fullsuiteName);
+            String subSuite = fullsuiteName.substring(0,fullsuiteName.lastIndexOf(":"));
+            //System.out.println("subSuite: " + subSuite);
+            if ( !subSuite.equals(topParentSuite) )
+            {
+                subProps = locateSuiteProperties(subSuite, topParentSuiteProps, true, false);
+            }
+            else
+            {
+                // reset in case a previous subsuite had set framework, etc
+                subProps = topParentSuiteProps;
+            }
+            setSuiteProperties(subProps, subSuite, topParentSuiteProps, true, false);
+            
+            // Now handle the child suite of this subSuite
+            suiteName = fullsuiteName.substring(fullsuiteName.lastIndexOf(":")+1);
+            //System.out.println("child suiteName: " + suiteName);
+                
+            p = locateSuiteProperties(suiteName, subProps, false, false);
+            setSuiteProperties(p, suiteName, subProps, false, false);
+
+            // Now locate the suite runall file containing the tests
+            String runfile = "suites" + '/' + suiteName + ".runall";
+
+            InputStream is =  org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(runfile);
+            if (is == null)
+            {
+                // Look in userdir
+                is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(userdir + '/' + suiteName + ".runall");
+            }
+            if (is == null)
+            {
+                System.out.println("Suite runall file not found for " + suiteName);
+                continue;
+            }
+
+            // Create a BufferedReader to read the list of tests to run
+            runlistFile = new BufferedReader(new InputStreamReader(is));
+            if (runlistFile == null)
+            {
+                System.out.println("The suite runall file could not be read.");
+            }
+            else
+            {
+                String startTime = CurrentTime.getTime();
+                pwOut.println("**** Start SubSuite: " + fullsuiteName +
+                    " jdk" + javaVersion +
+                    " " + startTime + " ****");
+                if ( (framework != null) && (framework.length()>0) )
+                {
+                    pwOut.println("Framework: " + framework);
+                }
+                else
+                    pwOut.println("Framework: No special framework.");
+                
+                // Create the file to list the suites that get skipped
+	            File f = new File(outDir, topSuiteName);
+	            File skipFile = new File(f, topSuiteName+".skip");
+
+		    //we catch an IOException here to work around a jvm bug on the Psion.
+		    PrintStream ps = null;
+		    try { ps = new PrintStream
+		            ( new FileOutputStream(skipFile.getCanonicalPath(),true) ); }
+		    catch (IOException e) {
+			FileWriter fw = new FileWriter(skipFile);
+			fw.close();
+			ps = new PrintStream
+			    ( new FileOutputStream(skipFile.getCanonicalPath(),true) );
+		    }
+
+                System.out.println("Now run the suite's tests");
+                //System.out.println("shutdownurl: " + shutdownurl);
+                
+                if (skip) // Skip a suite under certain environments
+				{
+				    addToSkipFile(topSuiteName+":"+fullsuiteName, ps);
+					if(driverNotFound)
+                    	pwOut.println("Cannot run the suite, framework driver not found");
+					else if(needSync)
+                    	pwOut.println("Cannot run the suite, sync product not found");
+					else if(needJdk12ext)
+                    	pwOut.println("Cannot run the suite, requires jdk12 or higher with extensions");
+					else if(needJdk12)
+                    	pwOut.println("Cannot run the suite, requires jdk12 or higher, have jdk" + javaVersion);
+					else if(needJdk14)
+                    	pwOut.println("Cannot run the suite, requires jdk14 or higher, have jdk" + javaVersion);
+					else if(needJdk14)
+                    	pwOut.println("Cannot run the suite, requires jdk14 or higher, have jdk" + javaVersion);
+					else if(excludedFromJCC)
+                    	pwOut.println("Cannot run the suite on JCC version " + excludeJCC + " or lower.");                                     
+                                        else if((needIBMjvm == null || needIBMjvm.booleanValue() == false))
+                    	pwOut.println("Cannot run the suite, requires IBM jvm, jvm vendor is " + System.getProperty("java.vendor"));
+					else
+                    	pwOut.println("Cannot run the suite, have jdk" + javaVersion);
+				 }
+                else
+                {
+                    System.out.println("Run the tests...");
+                    // Unjar any jarfile define for an upgrade suite
+                    //System.out.println("jarfile: " + jarfile);
+                    if (jarfile != null)
+                    {
+                        //System.out.println("unjar jar file...");
+                        UnJar uj = new UnJar();
+                        uj.unjar(jarfile, outDir.getCanonicalPath(), true);
+                        if ( (upgradetest.equals("true")) && (suiteName.startsWith("convert")) )
+                        {
+                            // need to rename the directory
+                            // such as kimono -- rename to convertKimono
+			    String tmpname = jarfile.substring(0, jarfile.indexOf("JAR"));
+                            File tmp = new File(outDir, tmpname);
+			    File convert = new File(outDir, usesystem);
+                            boolean renamed = tmp.renameTo(convert);
+                            //System.out.println("renamed: " + renamed);
+                        }
+                    }
+                    
+                    // Run the tests for this suite
+                    runTests(p, fullsuiteName);
+                }
+                
+                String endTime = CurrentTime.getTime();
+                pwOut.println("**** End SubSuite: " + fullsuiteName +
+                    " jdk" + javaVersion +
+                    " " + endTime + " ****");
+                //System.out.println("--------------------------------------");
+                ps.close();
+            }
+        }
+    }
+
+
+    private static void runTests(Properties suiteProps, String suite)
+        throws IOException, Exception
+    {
+	    // save a copy of the system properties at this point; when runing with
+	    // java threads we need to reset the system properties to this list;
+	    // otherwise we start to accumulate extraneous properties from
+	    // individual tests (does not happen with exec (useprocess==true)
+	    // because each test case has its own fresh VM
+	    ManageSysProps.saveSysProps();
+
+        // Build command string for RunTest()
+        StringBuffer sb = new StringBuffer();
+	    jvm = jvm.getJvm(jvmName);
+	    Vector jvmProps = new Vector();
+	    if ((javaCmd.length()>0) )
+	    {
+	        jvm.setJavaCmd(javaCmd);
+	        jvmProps.addElement("javaCmd=" + javaCmd);
+	    }
+        if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
+            jvmProps.addElement("testJavaFlags=" + testJavaFlags);
+	    if (classpath != null)
+	        jvmProps.addElement("classpath=" + classpath);
+	    if (classpathServer != null)
+	        jvmProps.addElement("classpathServer=" + classpathServer);
+	    if (jversion != null)
+	        jvmProps.addElement("jvm=" + jversion);
+        if (framework != null)
+            jvmProps.addElement("framework=" + framework);
+        if (usesystem != null)
+            jvmProps.addElement("usesystem=" + usesystem);
+        if (shutdownurl != null)
+            jvmProps.addElement("shutdownurl=" + shutdownurl);
+        if (upgradetest != null)
+            jvmProps.addElement("upgradetest=" + upgradetest);       
+        if (outcopy != null)
+            jvmProps.addElement("outcopy=" + outcopy);
+        if (useoutput != null)
+            jvmProps.addElement("useoutput=" + useoutput);
+        if (verbose == true)
+            jvmProps.addElement("verbose=true");
+        if ( (reportstderr != null) && (reportstderr.length()>0) )
+            jvmProps.addElement("reportstderr=" + reportstderr);
+        
+        if ( (jvmflags != null) && (jvmflags.length()>0) )
+        {
+            // We want to pass this down to RunTest so it will
+            // run an individual test with jvmflags like -nojit
+            jvmProps.addElement("jvmflags=" + '"' + jvmflags + '"');
+        }
+        
+        if ( (timeout != null) && (timeout.length()>0) )
+        {
+            if (useprocess)
+			{
+                jvmProps.addElement("timeout=" + timeout);            
+            }
+            else
+            {
+                org.apache.derbyTesting.functionTests.harness.RunTest.timeoutStr = timeout;
+            }
+        }
+		if (Boolean.getBoolean("listOnly"))
+			jvmProps.addElement("listOnly=true");
+
+        if (encryption != null)
+            jvmProps.addElement("encryption=" + encryption);
+        if (testEncryptionProvider != null)
+            jvmProps.addElement("testEncryptionProvider=" + testEncryptionProvider);
+        if (jdk12test != null)
+            jvmProps.addElement("jdk12test=" + jdk12test);
+        if (jdk12exttest != null)
+            jvmProps.addElement("jdk12exttest=" + jdk12exttest);
+        if (jdk14test != null)
+            jvmProps.addElement("jdk14test=" + jdk14test);
+        if (keepfiles != null)
+            jvmProps.addElement("keepfiles=" + keepfiles);
+        if ( (outputdir != null) && (outputdir.length()>0) )
+        {
+            jvmProps.addElement("outputdir=" + outputdir);
+        }
+        if ( (topsuitedir != null) && (topsuitedir.length()>0) )
+            jvmProps.addElement("topsuitedir=" + topsuitedir);
+        else
+            jvmProps.addElement("topsuitedir=" + outputdir);
+        if (topreportdir != null)
+            jvmProps.addElement("topreportdir=" + topreportdir);
+        else
+            jvmProps.addElement("topreprtdir=" + topsuitedir);
+        if ( (runDir != null) && (runDir.exists()) )
+            jvmProps.addElement("rundir=" + runDir.getCanonicalPath());
+        if ( (bootcp != null) && (bootcp.length()>0) )
+            jvmProps.addElement("bootcp=" + bootcp);
+        if ( (serverJvm != null) && (serverJvm.length()>0) )
+            jvmProps.addElement("serverJvm=" + serverJvm);
+        if ( useprocess == false )
+            jvmProps.addElement("useprocess=false");
+        if ( skipsed.equals("true") )
+            jvmProps.addElement("skipsed=true");
+        if ( systemdiff != null )
+            jvmProps.addElement("systemdiff=" + systemdiff);
+        if ( ijdefaultResourcePackage != null )
+            jvmProps.addElement("ij.defaultResourcePackage=" + ijdefaultResourcePackage);
+        if ( mtestdir != null )
+            jvmProps.addElement("mtestdir=" + mtestdir);
+        if (topSpecialProps.length()>0)
+        {
+            jvmProps.addElement("testSpecialProps=" + topSpecialProps +
+            ((otherSpecialProps.length()>0)?
+             ("^" + otherSpecialProps)
+             :"")
+            );
+        }
+        else if (otherSpecialProps.length()>0)
+            jvmProps.addElement("testSpecialProps=" + otherSpecialProps);
+
+        jvmProps.addElement("suitename=" + suite);
+        
+        if ( (topSuiteName != null) && (topSuiteName.length()>0) )
+            jvmProps.addElement("topsuitename=" + topSuiteName);
+
+        if (classpath != null)
+            jvm.setClasspath(classpath);
+
+        jvm.setD(jvmProps);
+        Vector v = jvm.getCommandLine();
+        v.addElement("org.apache.derbyTesting.functionTests.harness.RunTest");
+
+        String str = "";
+	    String lastTest = null;
+	    String skipTo = System.getProperties().getProperty("skipToFile");
+	    String stopAfter = System.getProperties().getProperty("stopAfterFile");
+        // Read the individual tests
+        // Example: "lang/avg.sql" or "conn/resultset.java"
+        while ( (str = runlistFile.readLine()) != null )
+        {
+	        // skip tests if specified
+	        if (skipTo != null && !str.equals(skipTo)) 
+	            continue;
+	        else 
+		        skipTo = null;
+	        if (stopAfter != null && lastTest != null && lastTest.equals(stopAfter)) break;
+            // Create the command for RunTest
+            // Create a string array from the vector
+            String testCmd[] = new String[v.size() + 1];
+            StringBuffer verboseSb = new StringBuffer();
+            int i = 0;
+            for (i = 0; i < v.size(); i++)
+            {
+                testCmd[i] = (String)v.elementAt(i);
+                verboseSb.append(testCmd[i] + " ");
+            }
+            testCmd[i++] = str;
+            verboseSb.append(str + " ");
+            //if (verbose) 
+                //System.out.println("Execute command: " + verboseSb.toString());
+            
+	        String uc = System.getProperties().getProperty("useCommonDB");
+		    if (uc == null) uc = "false";
+            if ( useprocess == true && uc.equals("true")==false)
+            {
+                System.out.println("Execute command: " + verboseSb.toString());
+                
+                // Now execute the command to run the test
+        		Process pr = null;
+        		try
+        		{
+                    pr = Runtime.getRuntime().exec(testCmd);
+
+                    // We need the process inputstream to capture into the output file
+                    BackgroundStreamDrainer stdout =
+                        new BackgroundStreamDrainer(pr.getInputStream(), null);
+                    BackgroundStreamDrainer stderr =
+                        new BackgroundStreamDrainer(pr.getErrorStream(), null);
+
+                    pr.waitFor();
+
+                    String result = HandleResult.handleResult(pr.exitValue(),
+                        stdout.getData(), stderr.getData(), pwOut);
+                    pr.destroy();
+                }
+                catch(Throwable t)
+                {
+                    System.out.println("Process exception: " + t.getMessage());
+                    if (pr != null)
+                    {
+                        pr.destroy();
+                        pr = null;
+                    }
+                }
+            }
+            else
+            {
+                String[] args = new String[6];
+                args[0] = str; // the test name
+                if ( ijdefaultResourcePackage != null )
+                    args[1] = ijdefaultResourcePackage;
+                else
+                    args[1] = "/org/apache/derbyTesting/functionTests/";
+                if ( usesystem != null )
+                    args[2] = usesystem;
+                else
+                    args[2] = "";
+                args[3] = "noprocess";
+                if ( shutdownurl != null)
+                    args[4] = shutdownurl;
+                else
+                    args[4] = "";
+                args[5] = suite;
+                org.apache.derbyTesting.functionTests.harness.RunTest.main(args);
+                // Write any diff to the suite's output
+                String tmp = str.substring(str.indexOf("/") + 1, str.lastIndexOf("."));
+                String diffname = tmp + "." + "diff";
+                File diffFile = new File(outDir, diffname);
+                if ( (diffFile != null) && (diffFile.exists()) )
+                {
+                    BufferedReader inFile =
+                        new BufferedReader(new FileReader(diffFile));
+                    String diffLine = "";
+                    while ( (diffLine = inFile.readLine()) != null )
+                    {
+                        pwOut.println(diffLine);
+                    }
+                }
+
+            }
+	    // reset the system properties to prevent confusion
+	    // when running with java threads
+	    ManageSysProps.resetSysProps();
+	    lastTest = str;
+        }
+    }
+    
+    /**
+    * Locate the suite's properties file
+    */
+    public static Properties locateSuiteProperties(String suiteName, 
+        Properties parentProps, boolean isParent, boolean isTop)
+        throws ClassNotFoundException, IOException, Exception
+    {
+        // Check for suite properties
+        //System.out.println("Checking for suite properties");
+        String suitePropsName = "suites" + '/' + suiteName + ".properties";
+
+        InputStream is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(suitePropsName);
+        if (is == null)
+        {
+            // Look in userdir
+            suitePropsName = userdir + '/' + suiteName + ".properties";
+            is = org.apache.derbyTesting.functionTests.harness.RunTest.loadTestResource(suitePropsName);
+        }
+        Properties p = new Properties();
+        // Reset these properties
+        if (isParent)
+        {
+            usesystem = null;
+            upgradetest = null;
+            jarfile = null;
+            outcopy = null;
+            useoutput = null;
+            mtestdir = null;
+            skipsed = "false";
+            //outputdir = outDir.getCanonicalPath();
+        }
+        if (is != null)
+        {
+            p.load(is);
+            is = null;
+        }
+        else
+        {
+            // Reset framework to the parent suite's framework, if any
+            // because framework may have been set by previous suite
+            framework = parentProps.getProperty("framework");
+            serverJvm = parentProps.getProperty("serverJvm");
+            // Do the same for ij.defaultResourcePackage
+            ijdefaultResourcePackage =
+                parentProps.getProperty("ij.defaultResourcePackage");
+            // And do the same for encryption
+            encryption = parentProps.getProperty("encryption");
+            testEncryptionProvider = parentProps.getProperty("testEncryptionProvider");
+            // And do the same for jdk12test
+            jdk12test = parentProps.getProperty("jdk12test");
+            jdk12exttest = parentProps.getProperty("jdk12exttest");
+	    // and jdk14test
+            jdk14test = parentProps.getProperty("jdk14test");
+            runwithj9 = parentProps.getProperty("runwithj9");
+            runwithibmjvm = parentProps.getProperty("runwithibmjvm");
+            String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
+            runwithjvm = parentProps.getProperty("runwith" + testJVM);
+            excludeJCC = parentProps.getProperty("excludeJCC");
+        }                
+        return p;
+    }
+                
+
+    /**
+    * Properties which may be defined for all suites
+    * at the top level suite (such as "nightly")
+    */
+    private static void setTopSuiteProperties()
+        throws ClassNotFoundException, IOException
+    {
+		framework = suiteProperties.getProperty("framework");
+		
+		jversion = suiteProperties.getProperty("jversion");
+		//System.out.println("RunList top jversion= " + jversion);
+		
+		jvmName = suiteProperties.getProperty("jvm");
+		String j9config = System.getProperty("com.ibm.oti.configuration");	
+		if (j9config != null)
+			if (j9config.equals("foun")) 
+				jvmName="j9_foundation";
+			else if (j9config.equals("max"))
+				jvmName="j9_13";
+		if (jversion == null)
+		    javaVersion = System.getProperty("java.version");
+		else
+		    javaVersion = jversion;
+		    
+		//System.out.println("RunList setTopSuiteProperties javaVersion: " + javaVersion);
+
+		javaCmd = suiteProperties.getProperty("javaCmd");
+		if (javaCmd == null)
+		    javaCmd = "java";
+		else if (javaCmd.equals("jview"))
+		    jvmName = "jview";
+        
+        JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
+        majorVersion = jvh.getMajorVersion();
+        minorVersion = jvh.getMinorVersion();
+        iminor = jvh.getMinorNumber();
+        imajor = jvh.getMajorNumber();
+        
+		if ( (jvmName == null) || (jvmName.equals("jview")) )
+		{
+		    if ( (iminor < 2) && (imajor < 2) )
+		        jvmName = "currentjvm";
+		    else
+		        jvmName = "jdk" + majorVersion + minorVersion;
+		}
+		
+		jvmflags = suiteProperties.getProperty("jvmflags");
+		testJavaFlags = suiteProperties.getProperty("testJavaFlags");
+		classpath = suiteProperties.getProperty("classpath");
+		classpathServer = suiteProperties.getProperty("classpathServer");
+		usesystem = suiteProperties.getProperty("usesystem");
+		upgradetest = suiteProperties.getProperty("upgradetest");
+        outcopy = suiteProperties.getProperty("outcopy");
+		useoutput = suiteProperties.getProperty("useoutput");
+		encryption = suiteProperties.getProperty("encryption");
+		testEncryptionProvider = suiteProperties.getProperty("testEncryptionProvider");
+		jdk12test = suiteProperties.getProperty("jdk12test");
+		jdk12exttest = suiteProperties.getProperty("jdk12exttest");
+		jdk14test = suiteProperties.getProperty("jdk14test");
+		runwithibmjvm = suiteProperties.getProperty("runwithibmjvm");
+		runwithj9 = suiteProperties.getProperty("runwithj9");
+		String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
+		runwithjvm = suiteProperties.getProperty("runwith" + testJVM);
+		excludeJCC = suiteProperties.getProperty("excludeJCC");
+		keepfiles = suiteProperties.getProperty("keepfiles");
+		systemdiff = suiteProperties.getProperty("systemdiff");
+		outputdir = suiteProperties.getProperty("outputdir");
+		if (outputdir == null)
+		    outputdir = userdir;
+		topsuitedir = suiteProperties.getProperty("topsuitedir");
+		if (topsuitedir == null)
+		    topsuitedir = outputdir;
+		bootcp = suiteProperties.getProperty("bootcp");
+		serverJvm = suiteProperties.getProperty("serverJvm");
+		canondir = suiteProperties.getProperty("canondir");
+		mtestdir = suiteProperties.getProperty("mtestdir");
+		String usepr = suiteProperties.getProperty("useprocess");
+		if ( (usepr != null) && (usepr.equals("false")) )
+		    useprocess = false;
+		skipsed = suiteProperties.getProperty("skipsed");
+		String dbug = suiteProperties.getProperty("verbose");
+		if ( (dbug != null) && (dbug.equals("true")) )
+		    verbose = true;
+		reportstderr = suiteProperties.getProperty("reportstderr");
+		timeout = suiteProperties.getProperty("timeout");
+		shutdownurl = suiteProperties.getProperty("shutdownurl");
+		topSuiteName = suiteProperties.getProperty("suitename");
+		ijdefaultResourcePackage =
+		    suiteProperties.getProperty("ij.defaultResourcePackage");
+        // The top level suiteProperties may have special
+        // properties which need to be added to testSpecialProps
+        if ( (specialProperties != null) && (!specialProperties.isEmpty()) )
+        {
+            //System.out.println("Top suite has special props");
+            setSpecialProps(specialProperties, true);
+        }
+    }
+
+    /**
+    * Properties for nested suites
+    */
+    private static void setSuiteProperties(Properties p, String suiteName,
+        Properties parentProperties, boolean isParent, boolean isTop)
+        throws ClassNotFoundException, IOException
+    {
+        // Some properties may have been set by the top suite
+        // jvm, jvmflags, classpath, systemdiff, verbose, etc.
+        // In that case, these will be preserved for the rest
+        if (jversion != null)
+            p.put("jvm", jversion);
+    	if ( jvmName == null )
+    		jvmName = "currentjvm";
+    	else
+    		p.put("jvm", jvmName);
+        
+        if ( javaCmd == null )
+            javaCmd = "java";
+        else
+            p.put("javaCmd", javaCmd);
+    	if ( jvmflags != null )
+    		p.put("jvmflags", jvmflags);
+    	if ( classpath != null )
+    		p.put("classpath", classpath);
+    	if ( classpathServer != null )
+    		p.put("classpathServer", classpathServer);
+        if ( systemdiff != null )
+            p.put("systemdiff", systemdiff);
+        if ( verbose == true )
+            p.put("verbose", "true");
+        if ( bootcp != null )
+            p.put("bootcp", "bootcp");
+        if ( canondir != null )
+            p.put("canondir", canondir);
+            
+		if ( (outputdir == null) || (outputdir.length() == 0) )
+		{
+		    outputdir = p.getProperty("outputdir");
+		    if (outputdir == null)
+		        outputdir = userdir;
+		}
+
+	    // framework may be set at the top, or just
+	    // set for individual suites
+	    if ( parentProperties.getProperty("framework") != null )
+		    p.put("framework", framework);
+		else
+            framework = p.getProperty("framework");
+
+		// same for serverJvm 
+        if ( parentProperties.getProperty("serverJvm") != null )
+            p.put("serverJvm", serverJvm);
+		else
+            serverJvm = p.getProperty("serverJvm");
+
+        // Encryption may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("encryption") != null )
+		    p.put("encryption", encryption);
+		else
+            encryption = p.getProperty("encryption");
+        
+	// Encryption provider may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("testEncryptionProvider") != null )
+		    p.put("testEncryptionProvider", testEncryptionProvider);
+		else
+            testEncryptionProvider = p.getProperty("testEncryptionProvider");
+        
+        // jdk12test may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("jdk12test") != null )
+		    p.put("jdk12test", jdk12test);
+		else
+            jdk12test = p.getProperty("jdk12test");
+       
+        // jdk12exttest may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("jdk12exttest") != null )
+		    p.put("jdk12exttest", jdk12exttest);
+		else
+            jdk12exttest = p.getProperty("jdk12exttest");
+        
+        // jdk14test may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("jdk14test") != null )
+		    p.put("jdk14test", jdk14test);
+		else
+            jdk14test = p.getProperty("jdk14test");
+       
+        // runwithibmjvm may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("runwithibmjvm") != null )
+		    p.put("runwithibmjvm", runwithibmjvm);
+		else
+            runwithibmjvm = p.getProperty("runwithibmjvm");
+       
+        // runwithjvm may be set at the top or just for a subsuite
+	    String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
+	    if ( parentProperties.getProperty("runwith" + testJVM) != null )
+		    p.put("runwith" + testJVM, runwithjvm);
+		else
+            runwithjvm = p.getProperty("runwith" + testJVM);
+
+        // runwithj9 may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("runwithj9") != null )
+		    p.put("runwithj9", runwithj9);
+		else
+            runwithj9 = p.getProperty("runwithj9");
+
+        // excludeJCC may be set at the top or just for a subsuite
+	    if ( parentProperties.getProperty("excludeJCC") != null )
+		    p.put("excludeJCC", excludeJCC);
+		else
+            excludeJCC = p.getProperty("excludeJCC");
+       
+        // useprocess may be set at the top or just for a subsuite
+        String upr = parentProperties.getProperty("useprocess");
+	    if ( upr != null )
+		    p.put("useprocess", upr);
+		else
+		{
+            upr = p.getProperty("useprocess");
+            if ( upr == null)
+                useprocess = true;
+            else if (upr.equals("false"))
+                useprocess = false;
+            else
+                useprocess = true;
+        }
+		// properties specific to a single suite
+		usesystem = p.getProperty("usesystem");
+		shutdownurl = p.getProperty("shutdownurl");
+        upgradetest = p.getProperty("upgradetest");
+        jarfile = p.getProperty("jarfile");
+        skipsed = p.getProperty("skipsed");
+        if (skipsed == null)
+            skipsed = "false";
+		if ( "true".equals(keepfiles) )
+		    p.put("keepfiles", keepfiles);
+            
+        // testJavaFlags should get appended
+        
+        String testflags = p.getProperty("testJavaFlags");
+        if ( parentProperties.getProperty("testJavaFlags") != null )
+        {
+            if ( (testflags != null) && (!testflags.equals(testJavaFlags)) )
+            {
+                testJavaFlags = testJavaFlags + "^" + testflags;
+            }
+            p.put("testJavaFlags", testJavaFlags);
+        }
+        else
+            testJavaFlags = p.getProperty("testJavaFlags");
+            
+		// The following could change between suites or
+		// may be set for the whole set of suites
+
+        if ( parentProperties.getProperty("reportstderr") != null )
+            p.put("reportstderr", reportstderr);
+        else
+            reportstderr = p.getProperty("reportstderr");
+            
+        if ( parentProperties.getProperty("timeout") != null )
+            p.put("timeout", timeout);
+        else
+            timeout = p.getProperty("timeout");
+                   
+        // outcopy is very specific to a single suite
+        outcopy = p.getProperty("outcopy");
+        
+		// useoutput is very specific to a single suite
+		useoutput = p.getProperty("useoutput");
+
+
+        // mtestdir is very specific to a multi suite
+        mtestdir = p.getProperty("mtestdir");
+
+        // ijdefaultResourcePackage is specific for a suite
+        ijdefaultResourcePackage = p.getProperty("ij.defaultResourcePackage");
+
+		if ( topSuiteName == null )
+		    topSuiteName = p.getProperty("suitename");
+		else
+		    p.put("suitename", topSuiteName);
+
+		skip = shouldSkipTest();
+		    
+        // Set the suite subdir under top outputdir
+        setSuiteDir(suiteName, isParent, isTop);
+        
+        // This individual suite may also have special flags
+        // Reset otherSpecialProps in case another suite had any set
+        otherSpecialProps = "";
+        Properties specialProps = SpecialFlags.getSpecialProperties(p);
+        if ( (specialProps != null) && (!specialProps.isEmpty()) )
+            // Add any special properties to suiteJavaFlags string
+            setSpecialProps(specialProps, false);
+    }
+
+	/**
+		Determine if a test should be skipped or not.
+		These are ad-hoc rules, see comments within for details.
+		Examples of what is checked: JVM version, framework,
+		encryption, jdk12test, 
+		Sets some global variables so that skip reporting is clearer.
+
+		@return true if test should not be run.
+    */
+    private static boolean shouldSkipTest()
+    {
+	boolean result = false;
+
+	// figure out if suite should be skipped ... adhoc rules
+	boolean isRmiJdbc = false;
+	boolean isIBridge = false;
+	boolean isJdk12 = false; // really now 'isJdk12orHigher'
+	boolean isJdk14 = false;
+	boolean isJdk118 = false;
+	boolean isJdk117 = false;
+	boolean isEncryption = false;
+	boolean isJdk12Test = false;
+	boolean isJdk12ExtTest = false;
+	boolean isJdk14Test = false;
+	boolean isSyncTest = false;
+	boolean isSyncProduct = false;
+	boolean isExcludeJCC = false;
+	// runwithibmjvm is really tri-state. null = run-anywhere,
+	// true = only ibm jvms, false = only non-IBM jvms.
+
+	// reset skip reason parameters
+	driverNotFound = false;
+	needSync = false;
+	needJdk12 = false;
+	needJdk12ext = false;
+	needJdk14 = false;
+	excludedFromJCC = false;
+	needIBMjvm = null;
+        
+	// Determine if this is jdk12 or higher (with or without extensions)
+        if (iminor >= 2) isJdk12 = true;
+	if ( System.getProperty("java.version").startsWith("1.1.8") ) isJdk118 = true;
+        if ( System.getProperty("java.version").startsWith("1.1.7") ) isJdk117 = true;
+        if ( System.getProperty("java.version").startsWith("1.4.") ) isJdk14 = true;
+
+        if ( (framework != null) && (framework.length()>0) )
+	{
+            if (framework.equals("RmiJdbc"))
+	    { 
+		try {
+			Class.forName("org.objectweb.rmijdbc.Driver");
+		} catch (ClassNotFoundException cnfe) {
+			driverNotFound = true;
+			result = true;
+		}
+            }
+            else if (framework.equals("DerbyNet"))
+	    {
+		try {
+			Class.forName("org.apache.derby.drda.NetworkServerControl");
+		} catch (ClassNotFoundException cnfe) {
+			driverNotFound = true;
+			result = true;
+		}
+	    }
+	}
+
+	if (result) return true; // stop looking once know should skip
+
+        if ( (encryption != null) && (encryption.length()>0) )
+            if ("true".equalsIgnoreCase(encryption)) isEncryption = true;
+        if ( (jdk12test != null) && (jdk12test.length()>0) )
+            if ("true".equalsIgnoreCase(jdk12test)) isJdk12Test = true;		
+        if ( (jdk12exttest != null) && (jdk12exttest.length()>0) )
+            if ("true".equalsIgnoreCase(jdk12exttest)) isJdk12ExtTest = true;
+        if ( (jdk14test != null) && (jdk14test.length()>0) )
+            if ("true".equalsIgnoreCase(jdk14test)) isJdk14Test = true;		
+
+        // Skip any suite if jvm is not jdk12 or higher for encryption, jdk12test or jdk12exttest
+        if (!isJdk12)
+        {
+            if ( (isEncryption) || (isJdk12Test) || (isJdk12ExtTest) )
+            {
+                needJdk12 = true;
+                result = true; // Can't run in this combination
+            }
+	    if (result) return true; // stop looking once know should skip
+ 	}		
+
+        // Skip any suite if jvm is not jdk14 or higher for jdk14test
+        if (!isJdk14 &&  isJdk14Test)
+	{
+		needJdk14 = true;
+  		return true;
+        }
+	
+        // Also require jdk12 extensions for encryption and jdk12exttest
+	if ( (isEncryption) || (isJdk12ExtTest) )
+	{
+	    needJdk12ext = true;
+            // Check for extensions
+            try
+            {
+                Class jtaClass = Class.forName("javax.transaction.xa.Xid");
+                Class jdbcClass = Class.forName("javax.sql.RowSet");
+            } 
+            catch (ClassNotFoundException cnfe)
+            {
+                // at least one of the extension classes was not found
+                result = true; // skip this test
+            }			
+	    if (result) return true; // stop looking once know should skip
+        }
+
+        if (isEncryption)  // make sure encryption classes are available
+        {
+            needEncryption = true;
+            try 
+            {
+                Class jceClass = Class.forName("javax.crypto.Cipher");
+            }
+            catch (ClassNotFoundException cnfe)
+            {
+                result = true;
+            }
+            if (result) return true;
+        }
+
+	// if a test needs an ibm jvm, skip if runwithibmjvm is true.
+	// if a test needs to not run in an ibm jvm, skip if runwithibmjvm is false.
+	// if null, continue in all cases.
+	if (runwithibmjvm != null) 
+	{ 
+	    if (runwithibmjvm.equals("")) { needIBMjvm = null; }
+	    else { needIBMjvm = new Boolean(runwithibmjvm); }
+	}
+	if (runwithibmjvm == null) { needIBMjvm = null; }
+	if (needIBMjvm != null)
+	{
+	    boolean needsibm = needIBMjvm.booleanValue();
+	    boolean ibmjvm = false;
+	    String vendor = System.getProperty("java.vendor");
+	    if (vendor.startsWith("IBM")) { ibmjvm = true; }
+	    if (!needsibm && ibmjvm) { return true; }
+	    if (needsibm && !ibmjvm) { return true; }
+	}
+
+	if (runwithjvm != null && runwithjvm.equals("false"))
+	{
+	    return true;
+	}
+	if (runwithj9 != null && runwithj9.equals("false"))
+	{
+	    return false ;
+	}
+
+	if (excludeJCC != null)
+	{
+	    Class c = null;
+	    Method m = null;
+	    Object o = null;
+	    Integer i = null;
+	    int jccMajor = 0;
+	    int jccMinor = 0;
+	    try	
+	    {
+		c = Class.forName("com.ibm.db2.jcc.DB2Driver");
+		o = c.newInstance();
+		m = c.getMethod("getMajorVersion", null);
+		i = (Integer)m.invoke(o, null);
+		jccMajor = i.intValue();
+		m = c.getMethod("getMinorVersion", null);
+		i = (Integer)m.invoke(o, null);
+		jccMinor = i.intValue();
+	    } catch (Exception e) {
+	        if (verbose) System.out.println("Exception in shouldSkipTest: " + e);
+            }
+
+	    if (excludeJCC != null) {
+		int excludeMajor = 0;
+		int excludeMinor = 0;
+		try 
+		{
+		    excludeMajor = Integer.parseInt(excludeJCC.substring(0,excludeJCC.indexOf(".")));
+		    excludeMinor = Integer.parseInt(excludeJCC.substring(excludeJCC.indexOf(".")+1));
+		} catch (NumberFormatException nfe) {
+		    System.out.println("excludeJCC property poorly formatted: " + excludeJCC);
+		} catch (NullPointerException npe) {
+		    System.out.println("excludeJCC property poorly formatted: " + excludeJCC);
+		}
+		if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
+		{
+		    excludedFromJCC = true;
+		    return true;
+		}
+	    }
+	} 
+
+	return result; // last test result is returned
+    }
+
+    
+    public static void setSuiteDir(String suiteName, boolean isParent, boolean isTop)
+        throws IOException
+    {
+        if (isTop) // This is the very top suite for this RunList
+        {
+            // Here we want to set the topsuitedir
+		    if ( (topsuitedir == null) || (topsuitedir.length() == 0) )
+		    {
+		        topsuitedir = userdir;
+		        outputdir = topsuitedir;
+		    }
+		    else
+		        outputdir = topsuitedir;
+		    
+		    // Create the topsuite directory under the outputdir
+		    File topdir = new File(outputdir, topSuiteName);
+		    topdir.mkdir();
+		    if (!topParentSuite.equals(topSuiteName))
+		    {
+		        File topparent = new File(topdir, topParentSuite);
+                topparent.mkdir();
+                outputdir = topparent.getCanonicalPath();
+            }
+            else
+                outputdir = topdir.getCanonicalPath();
+            topreportdir = outputdir;
+            //System.out.println("RunList topsuitedir: " + outputdir);
+            //System.out.println("RunList outputdir: " + outputdir);
+            //System.out.println("RunList topreportdir: " + topreportdir);
+            
+            // Modify outputdir for special framework
+            if ( (framework != null) && (framework.length()>0) )
+            {
+                File f = new File(outputdir, framework);
+                f.mkdir();
+                outputdir =  f.getCanonicalPath();
+		        fw_set = true; // framework dir set at top level
+                //System.out.println("RunList for framework outputdir: " + outputdir);
+            }
+		    topsuitedir = outputdir; 	
+		}
+		else if (isParent) // reset outputdir to topsuitedir for a new parent
+		{
+		    outputdir = topsuitedir;
+		    //System.out.println("outputdir reset for parent: " + outputdir);
+		    if (!suiteName.equals(topParentSuite))
+		    {
+                File suitedir = new File(outputdir, suiteName);
+                suitedir.mkdir();
+                outputdir = suitedir.getCanonicalPath();
+            }
+            // Modify outputdir for special framework (if not already set)
+            if (!fw_set)
+            {
+                if ( (framework != null) && (framework.length()>0) )
+                {
+                    File f = new File(outputdir, framework);
+                    f.mkdir();
+                    outputdir =  f.getCanonicalPath();
+                }
+            }
+        }
+        
+		else if ( upgradetest == null ) // this is a child suite of a parent
+		{
+            File suitedir = new File(outputdir, suiteName);
+            suitedir.mkdir();
+            outputdir = suitedir.getCanonicalPath();
+            //System.out.println("Child outputdir: " + outputdir);
+        }
+    }
+    
+	private static void setSpecialProps(Properties p, boolean isTop)
+	{
+        // Just build  string for RunTest to parse (^ is the separator)
+        // and determine which special flags are for ij or for server
+        // These special flags come from specialProperties, not from
+        // the usual properties (RunSuite will give these for the top suite)
+        String tmp = "";
+		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			// Note: RunSuite will already have excluded
+			// suites, useoutput, usesystem,keepfiles from these
+			tmp += key + "=" + p.getProperty(key) + "^";
+		}
+		if (tmp.length()>0)
+		{
+		    if ( isTop == true ) // This is the top level suite
+		        topSpecialProps = tmp.substring(0, tmp.lastIndexOf('^'));
+		    else // This is a nested suite, do not apply to all the suites
+		        otherSpecialProps = tmp.substring(0, tmp.lastIndexOf('^'));
+		}
+	}
+	
+	static void addToSkipFile(String suiteName, PrintStream ps) throws IOException
+	{
+		ps.println(suiteName);
+		ps.flush();
+    }
+	
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunSuite.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,552 @@
+/* 
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import org.apache.derby.tools.sysinfo;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.lang.ClassNotFoundException;
+import java.sql.Timestamp;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+public class RunSuite
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    static final boolean verbose=true;
+
+    static String suites; // list of subsuites in this suite
+    static Vector suitesToRun; // Vector of suites to run
+
+    // Properties which may be specified
+	static String jvmName = "";
+	static String javaCmd = "java";
+	static String jvmflags = ""; // jvm flags as one string
+	static String javaVersion;
+	static String classpath;
+	static String classpathServer;
+	static String testJavaFlags = ""; // formerly systest_javaflags
+	static String userdir;
+	static String framework;
+	static String runwithibmjvm;
+	static String excludeJCC;
+	static boolean useprocess = true;
+	static boolean skipsed = false;
+	static String systemdiff = "false";
+	static String topSuiteName = "";
+	static String outputdir; // location of output (default is userdir)
+	static String outcopy = "false"; // true if support files should go to outDir
+	static String canondir; // location of master dir (default is master)
+	static String bootcp; //  path for j9 bootclasspath setting
+	static String serverJvm; //  path for j9 bootclasspath setting
+	static String ijdefaultResourcePackage; // for ij tests only
+	static String debug; // for setting verbose mode to pass down to RunTest
+    static String timeout; // to allow killing a hanging test
+    static String shutdownurl; //used mainly by useprocess=false tests
+	static String reportstderr; // can set to disable (to turn off JIT errors, etc.)
+	static Properties suiteProperties;
+	static Properties specialProperties;
+
+	// Output variables
+    static PrintWriter pwOut = null; // for writing suite output
+    static File outDir; // test out dir
+    static File runDir; // where the suite/tests are run
+    static File outFile; // suite output file
+
+	public static void main(String[] args) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+		{
+		 		javaCmd = "j9";
+				String javaHome = System.getProperty("java.home");
+				//jvmflags = "-Xiss16k -Xss512k -Xmso16k -Xmx392388k";
+		}
+		String j9config = System.getProperty("com.ibm.oti.configuration");
+		if (j9config != null) 
+			if (j9config.equals("foun")) 
+				jvmName="j9_foundation";
+			else if (j9config.equals("max"))
+				jvmName="j9_13";
+
+	    String suiteName = args[0];
+	    if ( suiteName == null )
+	    {
+	        System.out.println("No suite name argument.");
+	        System.exit(1);
+	    }
+	    topSuiteName = suiteName;
+	    System.out.println("Top suite: " + suiteName);
+
+	    // suiteName may be one suite or a list of suites
+        suitesToRun = new Vector();
+
+        // Get properties set in the suite's properties file
+		suiteProperties = getSuiteProperties(suiteName, true);
+
+		// There may be system properties which will override
+		// the suiteProperties. This will make it easier when you
+		// do not want to edit the suite props for a special case
+		getSystemProperties();
+
+        // Get any special properties that are not the usual
+        // expected properties (we separate these from suiteProperties
+        // to avoid conflicts)
+        specialProperties =
+            SpecialFlags.getSpecialProperties(suiteProperties);
+
+        // Setup the initial output
+        setOutput(suiteName);
+
+        // Get the current time to write a timestamp
+        String startTime = CurrentTime.getTime();
+
+        pwOut.println("******* Start Suite: " + suiteName +
+            " " + startTime + " *******");
+
+        // Write sysinfo to the output file
+        if (useprocess) // doesn't work on Mac
+        {
+            SysInfoLog sysLog= new SysInfoLog();
+            sysLog.exec(jvmName, javaCmd, classpath, framework, pwOut, useprocess);
+        }
+            
+        getSuitesList(suiteName, true);
+        
+        // Get the current time to write a timestamp
+        String endTime = CurrentTime.getTime();
+        pwOut.println("******* End Suite: " + suiteName +
+            " " + endTime + " *******");
+        pwOut.close();
+        
+		String genrep = System.getProperty("genrep");
+		boolean isGenrep = true;
+		if (genrep!=null) isGenrep = "true".equalsIgnoreCase(genrep);
+		if (isGenrep) 
+		{
+		    String[] genargs = new String[6];
+		    genargs[0] = args[0];
+		    genargs[1] = jvmName;
+		    genargs[2] = javaCmd;
+		    genargs[3] = classpath;
+		    genargs[4] = framework;
+		    if (useprocess)
+		        genargs[5] = "true";
+		    else
+		        genargs[5] = "false";
+		    GenerateReport.main(genargs);
+		}
+	}
+
+    static void getSuitesList(String topparent, boolean isTop)
+        throws Exception, ClassNotFoundException, IOException
+    {
+		// Get the suite properties if it exists
+        Properties p;
+        if ( (suites == null) || (suites.length()==0) )
+        {
+            // There is a single suite, not a list, just add it
+            if (verbose) System.out.println("Suite to run: " + topparent+":"+topparent);
+            suitesToRun.addElement(topparent+":"+topparent);
+            // Use RunList class to issue the RunTest commands
+            if (verbose) System.out.println("Now do RunList");
+            //System.out.println("skipsed: " + skipsed);
+            RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
+                suiteProperties, specialProperties, topparent);
+            suitesToRun.removeAllElements();
+        }
+        else
+        {
+            isTop = false;
+            // Build the Vector from suites string
+	        StringTokenizer st = new StringTokenizer(suites);
+	        String subparent = "";
+            while (st.hasMoreTokens())
+            {
+                subparent = st.nextToken();
+                p = getSuiteProperties(subparent, isTop);
+                if ( (p.getProperty("suites") == null) || (subparent.equals(topparent)) )
+                {
+                    suitesToRun.addElement(topparent+":"+subparent);
+                    //System.out.println("Add to suitesToRun: " + topparent+":"+subparent);
+                    // Use RunList class to issue the RunTest commands
+                    if (verbose) System.out.println("Now do RunList");
+                    //System.out.println("skipsed: " + skipsed);
+                    RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
+                        suiteProperties, specialProperties, topparent);
+                    suitesToRun.removeAllElements();
+                }
+                else // This suite also has nested suites
+                {
+                    String sublist = p.getProperty("suites");
+                    //System.out.println("list for this SubSuite= " + sublist);
+                    BuildSuitesVector(subparent, sublist);
+                    // Use RunList class to issue the RunTest commands
+                    if (verbose) System.out.println("Now do RunList");
+                    //System.out.println("skipsed: " + skipsed);
+                    RunList rl = new RunList(suitesToRun, runDir, outDir, pwOut,
+                        suiteProperties, specialProperties, subparent);
+                    suitesToRun.removeAllElements();                    
+                }
+            }
+        }
+    }
+    
+    static void BuildSuitesVector(String parent, String subsuites)
+        throws ClassNotFoundException, IOException
+    {
+        Properties p;
+        StringTokenizer st = new StringTokenizer(subsuites);
+        String child = "";
+        while (st.hasMoreTokens())
+        {
+            child = st.nextToken();
+            if (child.equals(parent))
+            {
+                suitesToRun.addElement(parent+":"+child);
+                //System.out.println("Add this: " + parent+":"+child);
+            }
+            else
+            {
+                p = getSuiteProperties(child, false);
+                if ( p.getProperty("suites") == null )
+                {
+                    suitesToRun.addElement(parent+":"+child);
+                    //System.out.println("Add this: " + parent+":"+child);
+                }
+                else
+                {
+                    String moresuites = p.getProperty("suites");
+                    BuildSuitesVector(child, moresuites);
+                }
+            }
+        }
+    }
+            
+    
+    static Properties getSuiteProperties(String suiteName, boolean isTop)
+        throws ClassNotFoundException, IOException
+    {
+        // Locate the suite's config file and get the properties
+        // The file should be in the harness dir or user.dir
+        String suiteProps = "suites" + '/' + suiteName + ".properties";
+        userdir = System.getProperty("user.dir");
+
+        InputStream is = RunTest.loadTestResource(suiteProps);
+        if (is == null)
+        {
+            // Look in userdir
+            suiteProps = userdir + '/' + suiteName + ".properties";
+            is = RunTest.loadTestResource(suiteProps);
+        }
+        Properties p = new Properties();
+        if (is == null)
+            return p;
+
+        p.load(is);
+        // The top level suite may have special properties
+        // which get propagated to any subsuites
+        if (isTop == true)
+        {
+			String tmpjvmName=jvmName;	
+            jvmName = p.getProperty("jvm");
+		    if ( (jvmName == null) || (jvmName.length()==0) )
+		    {
+		        javaVersion = System.getProperty("java.version");
+		    }
+		    else
+		        javaVersion = jvmName;
+    		    
+		    JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
+		    String majorVersion = jvh.getMajorVersion();
+		    String minorVersion = jvh.getMinorVersion();
+            int iminor = jvh.getMinorNumber();
+            int imajor = jvh.getMajorNumber();
+    		
+		    if ( (iminor < 2) && (imajor < 2) )
+		        jvmName = "currentjvm";
+		    else
+		        jvmName = "jdk" + majorVersion + minorVersion;
+		if ( tmpjvmName != null)
+			jvmName= tmpjvmName;
+            javaCmd = p.getProperty("javaCmd");
+            jvmflags = p.getProperty("jvmflags");
+            testJavaFlags = p.getProperty("testJavaFlags");
+            classpath = p.getProperty("classpath");
+            classpathServer = p.getProperty("classpathServer");
+            framework = p.getProperty("framework");
+		    String usepr = p.getProperty("useprocess");
+		    if (usepr != null)
+		    {
+		        usepr = usepr.toLowerCase();
+		        if (usepr.equals("false"))
+		            useprocess = false;
+		        else
+		            useprocess = true;
+		    }
+		    else
+		        useprocess = true;
+
+            String nosed = p.getProperty("skipsed");
+            if (nosed != null)
+            {
+                nosed = nosed.toLowerCase();
+                if (nosed.equals("true"))
+                    skipsed = true;
+                else
+                    skipsed = false;
+            }
+            else
+                skipsed = false;
+                
+            outputdir = p.getProperty("outputdir");
+            canondir = p.getProperty("canondir");
+            bootcp = p.getProperty("bootcp");
+            serverJvm = p.getProperty("serverJvm");
+            systemdiff = p.getProperty("systemdiff");
+            ijdefaultResourcePackage = p.getProperty("ij.defaultResourcePackage");
+            outcopy = p.getProperty("outcopy");
+            debug = p.getProperty("verbose");
+            reportstderr = p.getProperty("reportstderr");
+            timeout = p.getProperty("timeout");
+            shutdownurl = p.getProperty("shutdownurl");
+        }
+        suites = p.getProperty("suites");
+		return p;
+    }
+
+    private static void getSystemProperties()
+    {
+        // Get any properties specified on the command line
+        // which may not have been specified in the suite prop file
+        Properties sp = System.getProperties();
+        String searchCP = sp.getProperty("ij.searchClassPath");
+        if (searchCP != null)
+            suiteProperties.put("ij.searchClassPath", searchCP);
+		String frm = sp.getProperty("framework");
+		if ( (frm != null) && (!frm.equals("embedded")) )
+		{
+		    framework = frm;
+		    suiteProperties.put("framework", framework);
+		}
+		String j = sp.getProperty("jvm");
+		if (j != null)
+		    suiteProperties.put("jversion", j);
+		
+		String jcmd = sp.getProperty("javaCmd");
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jcmd = "j9";
+		if (jcmd != null)
+		{
+		    javaCmd = jcmd;
+		    suiteProperties.put("javaCmd", javaCmd);
+		}
+		String jflags = sp.getProperty("jvmflags");
+		if (jflags != null)
+		{
+		    jvmflags = jflags;
+		    suiteProperties.put("jvmflags", jvmflags);
+		}
+		String testflags = sp.getProperty("testJavaFlags");
+		if (testflags != null)
+		{
+		    if (testJavaFlags == null)
+		        testJavaFlags = testflags;
+		    else // add to testJavaFlags
+		        testJavaFlags = testJavaFlags + "^" + testflags;
+		    suiteProperties.put("testJavaFlags", testJavaFlags);
+		}
+		String clpth = sp.getProperty("classpath");
+		if (clpth != null)
+		{
+		    classpath = clpth;
+		    suiteProperties.put("classpath", classpath);
+		}
+		String clsrv = sp.getProperty("classpathServer");
+		if ( (clsrv != null) && (!clsrv.startsWith("${")) )
+		{
+		    classpathServer = clsrv;
+		    suiteProperties.put("classpathServer", clsrv);
+		}
+		String usesys = sp.getProperty("usesystem");
+		if (usesys != null)
+		    suiteProperties.put("usesystem", usesys);
+		String jarf = sp.getProperty("jarfile");
+		if (jarf != null)
+		    suiteProperties.put("jarfile", jarf);
+		String upgtest = sp.getProperty("upgradetest");
+		if (upgtest != null)
+		    suiteProperties.put("upgradetest", upgtest);
+		String rep = sp.getProperty("replication");
+		if (rep != null)
+		    suiteProperties.put("replication", rep);
+		String encrypt = sp.getProperty("encryption");
+		if (encrypt != null)
+		    suiteProperties.put("encryption", encrypt);
+		String jdk12test = sp.getProperty("jdk12test");
+		if (jdk12test != null)
+		    suiteProperties.put("jdk12test", jdk12test);
+		String jdk12ex = sp.getProperty("jdk12exttest");
+		if (jdk12ex != null)
+		    suiteProperties.put("jdk12exttest", jdk12ex);
+		String runwithibmjvm = sp.getProperty("runwithibmjvm");
+		if (runwithibmjvm != null)
+		    suiteProperties.put("runwithibmjvm", runwithibmjvm);
+		String excludeJCC = sp.getProperty("excludeJCC");
+		if (excludeJCC != null)
+		    suiteProperties.put("excludeJCC", excludeJCC);
+		String keep = sp.getProperty("keepfiles");
+		if (keep != null)
+		    suiteProperties.put("keepfiles", keep);
+		String outd = sp.getProperty("outputdir");
+		if (outd != null)
+		{
+		    outputdir = outd;
+		    suiteProperties.put("outputdir", outputdir);
+		}
+		String canond = sp.getProperty("canondir");
+		if (canond != null)
+		{
+		    canondir = canond;
+		    suiteProperties.put("canondir", canondir);
+		}
+		String j9bootcp = sp.getProperty("bootcp");
+		if (j9bootcp != null)
+		{
+		    bootcp = j9bootcp;
+		    suiteProperties.put("bootcp", bootcp);
+		}
+		String serverJvm = sp.getProperty("serverJvm");
+		if (serverJvm != null)
+		    suiteProperties.put("serverJvm", serverJvm);
+		String testout = sp.getProperty("testoutname");
+		if (testout != null)
+		    suiteProperties.put("testoutname", testout); // toursDemo
+		String mtdir = sp.getProperty("mtestdir"); // used by multi tests
+		if (mtdir != null)
+		    suiteProperties.put("mtestdir", mtdir);
+		String usepr = sp.getProperty("useprocess");
+		if (usepr != null)
+		{
+		    // Some platforms cannot handle process exec
+		    usepr = usepr.toLowerCase();
+		    if (usepr.equals("false"))
+		    {
+		        useprocess = false;
+		        suiteProperties.put("useprocess", usepr);
+		    }
+		}
+		
+        String nosed = sp.getProperty("skipsed");
+        if (nosed != null)
+        {
+            // in some cases (like locales, we may want to skip the Sed)
+            nosed = nosed.toLowerCase();
+            if (nosed.equals("true"))
+            {
+                skipsed = true;
+                suiteProperties.put("skipsed", nosed);
+            }
+        }
+		
+		String sysdiff = sp.getProperty("systemdiff");
+		if (sysdiff != null)
+		{
+		    // Use system diff if set to true
+		    sysdiff = sysdiff.toLowerCase();
+		    if (sysdiff.equals("true"))
+		        suiteProperties.put("systemdiff", "true");
+		}
+		String defrespckg = sp.getProperty("ij.defaultResourcePackage");
+		if (defrespckg != null)
+		    suiteProperties.put("ij.defaultResourcePackage", defrespckg);
+		String outcpy = sp.getProperty("outcopy");
+		if (outcpy != null)
+		    suiteProperties.put("outcopy", outcpy);
+		String topsuite = sp.getProperty("suitename");
+		if (topsuite != null)
+		    suiteProperties.put("suitename", topsuite);
+		else
+		    suiteProperties.put("suitename", topSuiteName);
+        String dbug = sp.getProperty("verbose");
+		if (dbug != null)
+		    suiteProperties.put("verbose", dbug);
+		String reporterr = sp.getProperty("reportstderr");
+		if (reporterr != null)
+		    suiteProperties.put("reportstderr", reporterr);
+		String tout = sp.getProperty("timeout");
+		if (tout != null)
+		    suiteProperties.put("timeout", tout);
+    }
+
+    private static void setOutput(String suiteName)
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        boolean status = false;
+        // Use the defined output directory or user.dir by default
+        File tmpoutDir;
+        if ( (outputdir == null) || (outputdir.length()==0) )
+        {
+            tmpoutDir =
+		        new File((new File(userdir)).getCanonicalPath());
+		}
+        else
+        {
+            tmpoutDir =
+                new File((new File(outputdir)).getCanonicalPath());
+		}
+        outDir = tmpoutDir;
+        outDir.mkdir();
+        
+		// runDir is where the suites/tests are run and where
+		// any support files or scripts will be expected to live
+		runDir =
+		    new File((new File(userdir)).getCanonicalPath());
+		    
+        // Set the suite property outputdir
+        suiteProperties.put("outputdir", outDir.getCanonicalPath());
+
+        // Define the final suite summary file file
+        outFile = new File(outDir, suiteName + ".sum");
+        if (outFile.exists())
+            status = outFile.delete();
+ 
+        // Define the suite.pass file
+        File passFile = new File(outDir, suiteName + ".pass");
+        if (passFile.exists())
+            status = passFile.delete();
+
+        // Define the suite.fail file
+        File failFile = new File(outDir, suiteName + ".fail");
+        if (failFile.exists())
+            status = failFile.delete();
+
+        // Create a PrintWriter for writing env and test info to the diff file
+        pwOut = new PrintWriter
+            (new BufferedWriter(new FileWriter(outFile.getPath()), 4096), true);
+    }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/RunTest.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2282 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import org.apache.derby.tools.sysinfo;
+import org.apache.derby.tools.ij;
+import org.apache.derby.iapi.reference.Attribute;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.ByteArrayInputStream;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.PrintStream;
+import java.io.IOException;
+import java.io.FileNotFoundException;
+import java.lang.ClassNotFoundException;
+import java.lang.ClassFormatError;
+import java.lang.Thread;
+import java.lang.reflect.Method;
+import java.util.Enumeration;
+import java.util.Vector;
+import java.sql.Timestamp;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+import java.util.Properties;
+import java.util.StringTokenizer;
+import java.net.URL;
+
+public class RunTest
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    // For printing debug info
+    static boolean verbose=false;
+    // Under some circumstances, we may need to skip the test
+    static boolean skiptest = false;
+    static StringBuffer skiptestReason = new StringBuffer();
+    
+    //java requires / to look into jars, irrespective of OS
+    static final String testResourceHome = "/org/apache/derbyTesting/functionTests/";
+    
+    // Framework support
+    static String[] validFrameworks = {"embedded","",
+				       "DerbyNet","DB2jcc",
+				       "DB2app"};
+    static NetServer ns;
+    static boolean frameworkInitialized = false;
+    static boolean j9net = false;
+    static String driverName;
+    static String dbName;
+
+    // Test properties
+	static String jvmName = "currentjvm";
+	static String javaCmd;
+	static String javaVersion; // System.getProperty("java.version")
+	static String majorVersion;
+	static String minorVersion;
+	static int jccMajor;
+	static int jccMinor;
+	static int imajor;
+	static int iminor;
+	static boolean isjdk12test = false;
+	static String classpath = "";
+	static String classpathServer = "";
+    static String framework = "embedded";
+    public static String J9_STATEMENTCACHESIZE = "20";
+
+    static String usesystem = "";
+    static String searchCP = "";
+    static boolean useCommonDB = false;
+	static boolean keepfiles = false;
+	static boolean useprocess = true;
+	static boolean systemdiff = false; // can set true if there is a system diff
+	static boolean upgradetest = false;
+	static boolean encryption = false; // requires jdk12ext plus encryptionProtocol
+	static boolean jdk12exttest = false; // requires jdk12ext
+	static String runningdir = ""; // where the tests are run and suppfiles placed
+	static String outputdir = ""; // user can specify as a property (optional)
+	static String canondir; // optional (to specify other than "master")
+	static String bootcp; // for j9 bootclasspath
+	static String canonpath; // special full path (will be platform dependent)
+	//static String mtestdir = ""; // for MultiTest user must specify testdir
+	static String testSpecialProps = ""; // any special suite properties
+	static String testJavaFlags = ""; // special command line flags
+	static String jvmflags; // java special flags
+	static boolean reportstderr = true;
+	static int timeout = -1; // in case tests are hanging
+	public static String timeoutStr;
+	static String jarfile; // some tests have jar files (like upgrade)
+	static boolean skipsed = false;
+	static String commonDBHome = "testCSHome";
+	static boolean dbIsNew = true;
+	static String runwithjvm="true";
+
+	// Other test variables for directories, files, output
+	static String scriptName = ""; // testname as passed in
+	static String scriptFileName; // testname with extension
+	static String testDirName = ""; // test directory name
+        static String defaultPackageName = "/org/apache/derbyTesting/";
+        static String javaPath = "org.apache.derbyTesting."; // for java tests
+	static String testType; // sql, java, unit, etc.
+	static String testBase; // testname without extension
+	static String testOutName; // output name without path or extension (optional)
+	static String passFileName; // file listing passed tests
+	static String failFileName; // file listing failed tests
+	static String JCCOutName; //file name for JCC corrected master
+    static File passFile;
+    static File failFile;
+	static String shutdownurl = "";
+    static boolean useOutput; // use output or assume .tmp file is produced?
+    static boolean outcopy; // copy support files to outDir rather than runDir
+	static String userdir; // current user directory
+	static char fileSep; // file separator for the system
+    static PrintWriter printWriter = null; // used to write test output to .tmp
+    static PrintWriter pwDiff = null; // for writing test output and info
+    static File script; // The file created for test files other than java tests
+    static File baseDir; // the DB base system dir
+    static boolean deleteBaseDir; // the DB base system dir
+    static File outDir; // test out dir
+    static File runDir; // where test is run and where support files are expected
+    static File canonDir; // allows setting master dir other than default
+    static File tmpOutFile; // tmp output file (before sed)
+    static File JCCOutFile; // master file processed for JCC
+    static File stdOutFile; // for tests with useoutput false
+    static File finalOutFile; // final output file (after sed)
+    static File appPropFile; // testname_app.properties or default
+    static File clPropFile; // testname_derby.properties or default
+    static File diffFile; // To indicate diffs
+    static File tsuiteDir; // Final output dir for suite(s)
+    static File rsuiteDir; // Where to report .pass and .fail for suite(s)
+	static File extInDir;    //Where all external test input files exist.
+	static File extOutDir;    //Where all external test input files exist.
+	static File extInOutDir;    //Where all external test input files exist.
+
+    // This test may be part of a suite
+    // (RunTest may need to know this is a suite to avoid dup output like sysinfo)
+    static String topsuitedir = ""; // in case of nested suites
+    static String topsuiteName = "";
+    static String topreportdir = "";
+    static String suiteName = "";
+    static boolean isSuiteRun = false;
+    static boolean lastTestFailed = false;
+
+    static InputStream isSed = null; // For test_sed.properties // Cliff
+
+	public static void main(String[] args)
+		throws Exception
+	{
+		skiptestReason.setLength(0); // 0 out for useprocess
+		// Determine the test type
+		if (args.length == 0)
+		{
+			// No script name provided
+			System.out.println("no test name provided");
+			System.exit(1);
+		}
+		scriptName = args[0];
+
+		if (Boolean.getBoolean("listOnly")) 
+		{
+			System.out.println("LISTONLY :" + scriptName);
+			return;
+		}
+
+		if ( (scriptName == null) || (scriptName.equals("")) )
+		{
+		    System.out.println("Null or blank test script name.");
+		    System.exit(1);
+		}
+		if (args.length == 6)
+		{
+		    defaultPackageName = args[1];
+		    usesystem = args[2];
+		    useprocess = false;
+		    shutdownurl = args[4];
+		    isSuiteRun = true;
+		    suiteName = args[5];
+		    //System.out.println("suiteName: " + suiteName);
+		}
+		
+		testType = scriptName.substring(scriptName.lastIndexOf(".") + 1);
+
+		verifyTestType();
+
+        // Get the properties for the test
+		Properties sp = System.getProperties();
+
+		// For useprocess=false, some system wide properties need to be reset
+		if (useprocess == false)
+		{
+		    sp.put("useprocess", "false");
+            // Reset maximumDisplayWidth because some tests set this in app properties
+            // and when running in same process, can cause extra long lines and diffs
+            if ( sp.getProperty("maximumDisplayWidth") == null )
+                sp.put("maximumDisplayWidth", "128");
+            if ( sp.getProperty("ij.defaultResourcePackage") != null )
+                sp.put("ij.defaultResourcePackage", defaultPackageName);
+            System.setProperties(sp);
+        }
+        
+        getProperties(sp);
+        // Setup the directories for the test and test output
+        setDirectories(scriptName,sp);
+
+        // Check for properties files, including derby.properties
+        // and if needed, build the -p string to pass to the test
+        String propString = createPropString();
+
+        if ( (isSuiteRun == false) && (useprocess) )
+        {
+            SysInfoLog sysLog = new SysInfoLog();
+            sysLog.exec(jvmName, javaCmd, classpath, framework, pwDiff, useprocess);
+        }
+
+	    String startTime = CurrentTime.getTime();
+	    StringBuffer sb = new StringBuffer();
+	    sb.append("*** Start: " + testBase + " jdk" + javaVersion + " ");
+	    if ( (framework.length()>0) && (!framework.startsWith("embedded")) )
+	        sb.append(framework + " ");
+	    if ( (suiteName != null) && (suiteName.length()>0) )
+	        sb.append(suiteName + " ");
+	    sb.append(startTime + " ***");
+	    System.out.println(sb.toString());
+	    pwDiff.println(sb.toString());
+        
+        // Run the Server if needed
+	    if ((driverName != null) && (!skiptest) )
+	    {
+            System.out.println("Initialize for framework: "+ framework );
+            if (j9net && (framework.equals("DerbyNet"))) 
+			    ns = new NetServer(baseDir, "j9_13", classpathServer, null, jvmflags,framework);
+            else
+			    ns = new NetServer(baseDir, jvmName, classpathServer, javaCmd, jvmflags,framework);
+		    ns.start();
+		    frameworkInitialized = true;
+	    }
+		
+        // If the test has a jar file (such as upgrade) unjar it
+        if (jarfile != null)
+        {
+            UnJar uj = new UnJar();
+            uj.unjar(jarfile, outDir.getCanonicalPath(), true);
+        }
+        
+        // Run the actual test (unless skiptest was set to true)
+        if (skiptest == false)
+        {
+            testRun(propString, sp);
+        }
+        else
+        {
+			if (skiptestReason.length() == 0)
+				addSkiptestReason("Test skipped: skiptest set without setting skiptestReason, please fix RunTest.java...");
+		    pwDiff.println(skiptestReason);
+		    System.out.println(skiptestReason);
+            doCleanup(javaVersion);
+            return;
+        }
+            
+        // Stop the Network server if necessary
+		if (frameworkInitialized)
+		{
+		    System.out.println("Attempt to shutdown framework: " 
+				       + framework);
+		    ns.stop();
+		}
+
+		// Do "sed" to strip some unwanted stuff from the output file
+		// unless flag skipsed is set to true (for special cases)
+		
+		String outName = finalOutFile.getPath();
+
+        if (skipsed)
+        {
+            tmpOutFile.renameTo(finalOutFile);
+        }
+        else
+        {
+                    try
+                    {
+                        Sed sed = new Sed();
+                        sed.exec(tmpOutFile,finalOutFile, isSed, 
+                                        NetServer.isJCCConnection(framework));
+		    }
+		    catch (ClassFormatError cfe)
+		    {
+		        if (verbose) System.out.println("SED Error: " + cfe.getMessage());
+		    }
+        }
+        // Now do a diff between the out and the master files
+    	// Use the system's diff if systemdiff is true
+    	String frameworkMaster = framework;
+    	if (framework.startsWith("embedded"))
+    	    frameworkMaster = "";
+    	FileCompare diff = new FileCompare();
+
+        if (verbose)
+        {
+            System.out.println(
+                "About to execute: diff.exec(" + 
+                " outName = "           + outName +
+                ",outDir = "            + outDir  +
+                ",pwDiff = "            + pwDiff  +
+                ",testOutName = "       + testOutName +
+                ",frameworkMaster = "   + frameworkMaster +
+                ",jvmName = "           + jvmName +
+                ",iminor = "            + iminor  +
+                ",useprocess = "        + useprocess +
+                ",systemdiff = "        + systemdiff +
+                ",canondir = "          + canondir +
+                ",canonpath = "         + canonpath +
+                ")\n");
+        }
+
+    	boolean status;
+
+    	// only with j9 may the serverJvm be different from jvmName
+    	if (j9net)
+    	    status = diff.exec(outName, outDir, pwDiff, testOutName,
+    		    frameworkMaster, jvmName, iminor, useprocess, systemdiff, canondir, 
+			    canonpath, "j9_13");
+    	else
+      	    status = diff.exec(outName, outDir, pwDiff, testOutName,
+    		    frameworkMaster, jvmName, iminor, useprocess, systemdiff, canondir, 
+			    canonpath, null);
+
+    	if (status == true)
+    	{
+    		lastTestFailed = true;
+    		pwDiff.println("Test Failed.");
+    		System.out.println("Test Failed.");
+    		keepfiles = true;
+		    addToFailures(scriptName);
+		    if (useCommonDB) {
+	    		status = baseDir.delete();
+//System.out.println("basedir delete status: " + status );
+    		}
+        }
+        else
+    	{
+			addToSuccesses(scriptName);
+    		pwDiff.flush();
+        }
+
+		// Cleanup files
+		doCleanup(javaVersion);
+
+	}
+
+    private static void testRun(String propString, Properties sysProp)
+        throws FileNotFoundException, IOException, Exception
+    {
+        String systemHome = baseDir.getPath();
+        String scriptPath = null;
+        if (testType.startsWith("sql"))
+            scriptPath = script.getPath();
+                
+        // Build the test command
+        String[] testCmd = 
+    		buildTestCommand(propString, systemHome, scriptPath);
+        
+	    // cleanup for all tests that re-use standard testCSHome/wombat database
+	    if (useCommonDB == true 
+	    	&& (usesystem == null || usesystem == "")
+	    	&& (testType.equals("sql") || testType.equals("java")
+			|| testType.equals("sql2"))) {
+	        dbcleanup.doit(dbIsNew);
+	    }
+	
+
+        // Create a process to execute the command unless useprocess is false
+        if ( useprocess )
+		{
+            execTestProcess(testCmd);
+		}
+        else
+		{
+            execTestNoProcess(sysProp, systemHome, propString, scriptPath);
+		}
+    }
+
+    /** This is the method which created directories and looks for script file,
+     * need to make OS specific paths here.
+     *
+     */
+    private static void setDirectories(String scriptName, Properties sp)
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        // Get the current userdir
+        userdir = sp.getProperty("user.dir");
+        
+        // reset defaultPackageName (for useprocess=false)
+        //if (useprocess == false)
+        //defaultPackageName = "/org/apache/derbyTesting/";
+            
+        // reset defaultPackageName (for useprocess=false)
+        if (useCommonDB == true)
+        {
+            defaultPackageName = "/org/apache/derbyTesting/";
+        }
+            
+        // Set the resourceName from the default
+        // If not set by user, the default is used
+        String resourceName = defaultPackageName + "functionTests/tests/";
+        // scriptName could be of these two formats:
+        // testdir/test.testtype (testtype is sql, java, etc.)
+        // test.testtype (where the defaultPackageName includes the testdir)
+        int index = scriptName.lastIndexOf('/');
+        if (index == -1) // no test directory was specified
+        {
+            if ( (!testType.equals("sql")) && (!testType.equals("java")) )
+            {
+                System.out.println("Test argument should be of the form: <dir>/<test>.<ext>");
+                System.exit(1);
+            }
+            else
+            {
+                scriptFileName = scriptName; // such as my.sql
+                resourceName += scriptName; // build the full resource name
+            }
+        }
+        else // the testdir was specified 
+        {
+            testDirName = (index==0)?"":scriptName.substring(0,index);
+            //System.out.println("testDirName: " + testDirName);
+            scriptFileName = scriptName.substring(index+1, scriptName.length());
+            //System.out.println("scriptFileName: " + scriptFileName);
+            defaultPackageName = defaultPackageName + "functionTests/tests/" + testDirName + "/";
+            //System.out.println("defaultPackage: " + defaultPackageName);
+            resourceName = defaultPackageName + scriptFileName;
+            //System.out.println("resource: " + resourceName);
+        }
+
+
+        // Get the test name without the extension
+        testBase = scriptFileName.substring(0, scriptFileName.lastIndexOf("."+testType));
+
+		if (testType.equals("java"))
+		{
+                    //get the javaPath
+		    String tmp = defaultPackageName.replace('/', '.');
+                    int tl = tmp.length()-1;
+		    javaPath = (tl==0)?"":tmp.substring(1, tl);
+		}
+
+        // Check for runDir
+        if ( (runningdir != null) && (runningdir.length()>0) )
+        {
+            if (File.separatorChar == '\\')
+            {
+                //need to replace / in path with \ for windows
+                String runningdirWin = convertPathForWin(runningdir);
+                runDir = new File((new File(runningdirWin)).getCanonicalPath());
+            }
+            else
+            {
+                runDir = new File((new File(runningdir)).getCanonicalPath());
+            }
+        }
+
+        // Define the outDir if not already defined from properties
+        File tmpoutDir;
+        String userdirWin = null;
+        if ( (outputdir == null) || (outputdir.length()==0) )
+        {
+            if (File.separatorChar == '\\')
+            {
+                //need to replace / in path with \ for windows
+                userdirWin = convertPathForWin(userdir);
+                tmpoutDir = new File((new File(userdirWin)).getCanonicalPath());
+            }
+            else
+            {
+                tmpoutDir =
+		        new File((new File(userdir)).getCanonicalPath());
+            }
+        }
+        else
+        {
+            if (File.separatorChar == '\\')
+            {
+                String outputdirWin = convertPathForWin(outputdir);
+                tmpoutDir =
+                        new File((new File(outputdirWin)).getCanonicalPath());
+            }
+            else
+            {
+                tmpoutDir =
+                        new File((new File(outputdir)).getCanonicalPath());
+            }
+        }
+
+        // If this is a suite run in a framework, outdir
+        // would already be defined to be a framework subdir
+        // But for RunTest, we must create the framework subdir
+        //if ( (!isSuiteRun) && (framework != null) && (framework.length()>0) )
+        if ( (!isSuiteRun) && (!framework.startsWith("embedded")) )
+        {
+            runDir = tmpoutDir;
+		    outDir = new File(tmpoutDir, framework);
+		    outDir.mkdir();
+		}
+		else // This is a Suite Run
+		{
+		    outDir = tmpoutDir;
+		    outDir.mkdir();
+		    if ( (topsuitedir != null) && (topsuitedir.length()>0) )
+                    {
+                        if (File.separatorChar == '\\')
+                        {
+                            String topsuitedirWin = convertPathForWin(topsuitedir);
+                            tsuiteDir = 
+                                new File((new File(topsuitedirWin)).getCanonicalPath());
+                        }
+                        else
+                        {
+                            tsuiteDir = new File((new File(topsuitedir)).getCanonicalPath());
+                        }
+                    }
+		    else
+                    {
+		        tsuiteDir = outDir;
+                    }
+		    tsuiteDir.mkdir();
+		    if ( (topreportdir != null) && (topreportdir.length()>0) )
+                    {
+                        if (File.separatorChar == '\\')
+                        {
+                            String topreportdirWin = convertPathForWin(topreportdir);
+                            rsuiteDir = 
+                                new File((new File(topreportdirWin)).getCanonicalPath());
+                        }
+                        else
+                        {
+                            rsuiteDir = 
+                                new File((new File(topreportdir)).getCanonicalPath());
+                        }
+                    }
+		    else
+                    {
+		        rsuiteDir = outDir;
+                    }
+		    rsuiteDir.mkdir();		    
+		}
+		        
+	    fileSep = File.separatorChar;
+
+        // for now, only addressing java and sql tests; other possible test 
+        // contributions will be unittests and multithreaded tests.
+
+        // For certain test types, locate script file based on scriptName
+        // Then determine the actual test name and directory
+        if ( (!testType.equals("java")) ) 
+        {
+            // NOTE: cannot use getResource because the urls returned
+            // are not the same between different java environments
+            InputStream is =
+                loadTestResource("tests/" + testDirName + "/" + scriptFileName); 
+
+			if (is == null)
+			{
+			    System.out.println("Could not locate " + scriptName);
+			    addToFailures(scriptName);
+				throw new FileNotFoundException(resourceName);
+			}
+
+            // Read the test file and copy it to the outDir
+            // except for multi tests (for multi we just need to locate it)
+            BufferedReader in = new BufferedReader(new InputStreamReader(is));
+            if (upgradetest)
+		
+                //these calls to getCanonicalPath catch IOExceptions as a workaround to
+                //a bug in the EPOC jvm. 
+                try { script = new File((new File(userdir, scriptFileName)).getCanonicalPath()); }
+                catch (IOException e) {
+                    File f = new File(userdir, scriptFileName);
+        		    FileWriter fw = new FileWriter(f);
+                    fw.close();
+                    script = new File(f.getCanonicalPath());
+                }
+			// else is probably only multi test, not contributed at this point
+            else
+                try { script = new File((new File(outDir, scriptFileName)).getCanonicalPath()); } 
+                catch (IOException e) {
+                    File f = new File(outDir, scriptFileName);
+                    FileWriter fw = new FileWriter(f);
+                    fw.close();
+                    script = new File(f.getCanonicalPath());
+                }
+
+            PrintWriter pw = null;
+            pw = new PrintWriter( new BufferedWriter
+                (new FileWriter(script.getPath()), 10000), true );
+                
+            String str = "";
+            while ( (str = in.readLine()) != null )
+            {
+                pw.println(str);
+            }
+            pw.close();
+            pw = null;
+            in = null;
+        }
+
+        // This is the base directory for creating a database (under the outDir)
+        baseDir = null;
+
+    	if (useCommonDB == true)
+        {
+            if (File.separatorChar == '\\')
+            {
+                String commonDBHomeWin = convertPathForWin(commonDBHome);
+                baseDir = new File(userdirWin, commonDBHomeWin);
+            }
+            else
+            {
+    		baseDir = new File(userdir, commonDBHome);
+            }
+        }
+        else if ( (usesystem != null) && (usesystem.length()>0) )
+        {
+            if (File.separatorChar == '\\')
+            {
+                String usesystemWin = convertPathForWin(usesystem);
+                if (upgradetest == true)
+                    baseDir = new File(userdirWin, usesystemWin);
+                else
+                    baseDir = new File(outDir, usesystemWin);
+            }
+            else
+            {
+                if (upgradetest == true)
+                    baseDir = new File(userdir, usesystem);
+                else
+                    baseDir = new File(outDir, usesystem);
+            }
+        }
+        else
+        {
+            if (File.separatorChar == '\\')
+            {
+                String testBaseWin = convertPathForWin(testBase);
+                baseDir = new File(outDir, testBaseWin);
+            }
+            else
+            {
+                baseDir = new File(outDir, testBase);
+            }
+        }
+
+        // clean up old db dirs
+        // (except for special cases such as nist, commonDB).
+        // In the case of useCommonDB == true, the baseDir (commonDBHome) only gets
+        // cleaned up if the last test was a failure.  Further refinements may
+        // follow, since many test failures probably do not require such drastic
+        // action.
+        if (baseDir.exists())
+        {
+            if (useCommonDB == false || lastTestFailed == true) {
+                cleanupBaseDir(baseDir);
+                lastTestFailed = false;
+            }
+            else if (useCommonDB == true) 
+                dbIsNew = false; // dbcleanup may be needed
+        }
+        else {
+            
+            boolean created = baseDir.mkdir();
+            dbIsNew = true; // dbcleanup not needed on new database
+        }
+
+        // Determine if it is ok to delete base when done
+        if ( (usesystem == null) || (usesystem.length()<=0) )
+            deleteBaseDir = true; // ok to delete base when done
+        else
+            deleteBaseDir = false; // keep db dir for nist & puzzles in case of failures
+
+
+        // testOutName used to create the tmpOutFile
+        // this is probably always going to be testBase
+        if ( testOutName == null )
+        {
+            if (testType.equals("demo"))
+                testOutName = testBase.substring(testBase.indexOf(".")+1);
+            else
+                testOutName = testBase;
+        }
+
+        // Create a .tmp file for doing sed later to create testBase.out
+        tmpOutFile = new File(outDir, testOutName + ".tmp");
+		if (NetServer.isJCCConnection(framework))
+		{
+			JCCOutName = testOutName+".tmpmstr";
+		}
+
+		// Define the .out file which will be created by massaging the tmp.out
+		finalOutFile = new File(outDir, testOutName + ".out");
+
+		// Define the .diff file which will contain diffs and other info
+		diffFile = new File(outDir, testOutName + ".diff");
+		stdOutFile = new File(outDir, testOutName + ".std");
+
+        // Define also the .pass and .fail files        
+		if ( isSuiteRun ) 
+		{
+		    String sname = suiteName.substring(0,suiteName.indexOf(":"));
+		    //System.out.println("sname: " + sname);
+		    //System.out.println("topsuiteName: " + topsuiteName);
+		    passFileName = sname+".pass";
+		    passFile = new File(rsuiteDir, passFileName);
+		    failFileName = sname+".fail";
+		    failFile = new File(rsuiteDir, failFileName);
+		}
+		else
+		{
+		    passFileName=testBase+".pass";
+	        passFile = new File(outDir, passFileName);
+	        failFileName=testBase+".fail";
+	        failFile = new File(outDir, failFileName);
+	    }
+        //System.out.println("passFileName: " + passFileName);
+        boolean status = true;
+
+        // Delete any old .out or .tmp files
+        if (tmpOutFile.exists())
+            status = tmpOutFile.delete();
+		if (NetServer.isJCCConnection(framework))
+		{
+        	JCCOutFile = new File(outDir, JCCOutName);
+        	if (JCCOutFile.exists())
+            	status = JCCOutFile.delete();
+		}
+        if (finalOutFile.exists())
+            status = finalOutFile.delete();
+        if (diffFile.exists())
+            status = diffFile.delete();
+        if (stdOutFile.exists())
+            status = stdOutFile.delete();
+
+        // Delete any old pass or fail files
+        if (!isSuiteRun)
+        {
+            if (failFile.exists())
+                status = failFile.delete();
+            if (passFile.exists())
+                status = passFile.delete();
+        }
+
+        if (status == false)
+            System.out.println("Unable to delete tmp, out and/or diff files to start");
+
+        // Create a PrintWriter for writing env and test info to the diff file
+        pwDiff = new PrintWriter
+            (new BufferedWriter(new FileWriter(diffFile.getPath()), 4096), true);
+    }
+
+    private static void getProperties(Properties sp)
+        throws Exception
+    {
+        // Get any properties specified on the command line
+        searchCP = sp.getProperty("ij.searchClassPath");
+		framework = sp.getProperty("framework");
+		if (framework == null)
+			framework = "embedded";
+		if (!verifyFramework(framework))
+			framework = "";
+		else
+			driverName = NetServer.getDriverName(framework);
+		String skipFile;
+		// Some tests will not work with some frameworks,
+		// so check property files for tests to be skipped
+		skipFile = "no" + framework + ".runall";
+
+		if (!framework.equals(""))
+		{
+			if (SkipTest.skipIt(skipFile, scriptName)) {
+				skiptest = true;
+				addSkiptestReason("Test skipped: listed in " + 
+								  skipFile + 
+						  " file, skipping test: " 
+								  + scriptName);
+			}
+		}
+		else
+			framework = "";
+	
+		jvmName = sp.getProperty("jvm");
+
+		//System.out.println("jvmName is: " + jvmName);
+		if ( (jvmName == null) || (jvmName.length()==0) || (jvmName.equals("jview")))
+		{
+		    javaVersion = System.getProperty("java.version");
+		    //System.out.println("javaVersion is: " + javaVersion);
+		}
+		else
+		    javaVersion = jvmName;
+
+		JavaVersionHolder jvh = new JavaVersionHolder(javaVersion);
+		majorVersion = jvh.getMajorVersion();
+		minorVersion = jvh.getMinorVersion();
+        iminor = jvh.getMinorNumber();
+        imajor = jvh.getMajorNumber();
+
+		if ( (jvmName == null) || (!jvmName.equals("jview")) )
+		{
+		    if ( (iminor < 2) && (imajor < 2) )
+		        jvmName = "currentjvm";
+		    else
+		    {
+                if (System.getProperty("java.vm.vendor").startsWith("IBM"))
+                {
+                    if (System.getProperty("java.vm.name").equals("J9"))
+                    {
+                        if (System.getProperty("com.ibm.oti.configuration").equals("foun"))
+                            jvmName = "j9_foundation";
+                        else
+                            jvmName = "j9_" + majorVersion + minorVersion;
+                    }
+                    else
+                        jvmName = "ibm" + majorVersion + minorVersion;
+                }
+                else
+  		    jvmName = "jdk" + majorVersion + minorVersion;
+            }
+        }
+		
+        javaCmd = sp.getProperty("javaCmd");
+        bootcp = sp.getProperty("bootcp");
+
+        jvmflags = sp.getProperty("jvmflags");
+		testJavaFlags = sp.getProperty("testJavaFlags");
+		classpath = sp.getProperty("classpath");
+		//System.out.println("classpath set to: " + classpath);
+		classpathServer = sp.getProperty("classpathServer");
+		if ( (classpathServer == null) || (classpathServer.startsWith("${")) )
+		    classpathServer = classpath;
+		//System.out.println("classpathServer set to: " + classpathServer);
+		jarfile = sp.getProperty("jarfile");
+		String upg = sp.getProperty("upgradetest");
+		if (upg != null)
+		{
+		    upg = upg.toLowerCase();
+		    if (upg.equals("true"))
+		        upgradetest = true;
+		}
+	
+        if ( framework.startsWith("DB2") && (! jvmName.equals("j9_foundation")))
+		{	
+
+			Class c = null;
+			Method m = null;
+			Object o = null;
+			Integer i = null;
+ 			try	
+			{
+				c = Class.forName("com.ibm.db2.jcc.DB2Driver");
+				o = c.newInstance();
+				m = c.getMethod("getMajorVersion", null);
+				i = (Integer)m.invoke(o, null);
+				jccMajor = i.intValue();
+				m = c.getMethod("getMinorVersion", null);
+				i = (Integer)m.invoke(o, null);
+				jccMinor = i.intValue();
+			} catch (ClassNotFoundException e) {}
+
+			String excludeJcc = sp.getProperty("excludeJCC");
+			if (excludeJcc != null) {
+				int excludeMajor = 0;
+				int excludeMinor = 0;
+				try {
+					excludeMajor = Integer.parseInt(excludeJcc.substring(0,excludeJcc.indexOf(".")));
+					excludeMinor = Integer.parseInt(excludeJcc.substring(excludeJcc.indexOf(".")+1));
+				} catch (NumberFormatException nfe) {
+					System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+				} catch (NullPointerException npe) {
+					System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+				}
+				if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
+				{
+					skiptest = true;
+		    		addSkiptestReason("This test is excluded from running with JCC versions " + excludeJcc + " and below");
+		  		}
+			}
+		}
+			
+		String sysdiff = sp.getProperty("systemdiff");
+		if (sysdiff != null)
+		{
+		    sysdiff = sysdiff.toLowerCase();
+		    if (sysdiff.equals("true"))
+		        systemdiff = true;
+		}
+		String keep = sp.getProperty("keepfiles");
+		if (keep != null)
+		{
+		    keep = keep.toLowerCase();
+		    if (keep.equals("true"))
+		        keepfiles = true;
+		}
+		String encrypt = sp.getProperty("encryption");
+		if ( (encrypt != null) && (encrypt.equalsIgnoreCase("true")) )
+		    encryption = true;
+		String jdk12ext = sp.getProperty("jdk12exttest");
+		if ( (jdk12ext != null) && (jdk12ext.equalsIgnoreCase("true")) )
+		    jdk12exttest = true; // applied to jdk12 or higher
+		if ( encryption || jdk12exttest )
+		{
+		    // Must be running jdk12 or higher and must have extensions
+		    if ( iminor < 2 ) // this is 1.1.x
+			{
+		        skiptest = true;
+				addSkiptestReason("Test skipped: encryption or jdk12exttest requires jdk12 or higher; this is jdk1"+iminor+", skipping test: " + scriptFileName);
+			}
+		    else // now check for extensions
+		    {
+			    try
+			    {
+                    Class jtaClass = Class.forName("javax.transaction.xa.Xid");
+                } 
+                catch (ClassNotFoundException cnfe)
+                {
+                    // at least one of the extension classes was not found
+                    skiptest = true;
+				    addSkiptestReason("Test skipped: javax.transaction.xa.Xid not found, skipping test: " + scriptFileName);
+                }			
+			    try
+			    {
+                    Class jdbcClass = Class.forName("javax.sql.RowSet");
+                } 
+                catch (ClassNotFoundException cnfe2)
+                {
+                    // at least one of the extension classes was not found
+                    skiptest = true;
+				    addSkiptestReason("Test skipped: javax.sql.RowSet not found, skipping test: " + scriptFileName);
+                }			
+		    }
+		}
+		runningdir = sp.getProperty("rundir");
+		if (runningdir == null)
+		    runningdir = "";
+		outputdir = sp.getProperty("outputdir");
+		if (outputdir == null)
+		    outputdir = "";
+		bootcp = sp.getProperty("bootcp");
+		canondir = sp.getProperty("canondir");
+		canonpath = sp.getProperty("canonpath");
+
+		testOutName = sp.getProperty("testoutname");
+		useOutput = new Boolean(sp.getProperty("useoutput","true")).booleanValue();
+		outcopy = new Boolean(sp.getProperty("outcopy","false")).booleanValue();
+		// mtestdir = sp.getProperty("mtestdir"); // used by multi tests
+		//if (mtestdir == null)
+		//    mtestdir = "";
+		    
+		String usepr = sp.getProperty("useprocess");
+		if (usepr != null)
+		{
+		    usepr = usepr.toLowerCase();
+		    if (usepr.equals("false"))
+		        useprocess = false;
+		    else
+		        useprocess = true;
+		}
+		else
+		    useprocess = true;
+		
+		String nosed = sp.getProperty("skipsed");
+		if (nosed != null)
+		{
+		    nosed = nosed.toLowerCase();
+		    if (nosed.equals("true"))
+		        skipsed = true;
+		}
+
+		    
+		String dbug = sp.getProperty("verbose");
+		if (dbug != null)
+		{
+		    dbug = dbug.toLowerCase();
+		    if (dbug.equals("true"))
+		        verbose = true;
+		}
+		String rstderr = sp.getProperty("reportstderr");
+		if (rstderr != null)
+		{
+		    rstderr = rstderr.toLowerCase();
+		    if (rstderr.equals("false"))
+		        reportstderr = false;
+		}
+
+		// default to -1 (no timeout) if no property is set
+		if (timeoutStr == null)
+		{
+			timeoutStr = sp.getProperty("timeout", "-1");
+            //System.out.println("+++setting timeoutStr to " + timeoutStr + " in RunTest::getProperties");
+		}
+        else
+        {
+            //System.out.println("+++timeoutStr was already " + timeoutStr + " in RunTest::getProperties");
+        }
+        
+		try
+		{
+			timeout = Integer.parseInt(timeoutStr);
+		}
+		catch (NumberFormatException nfe)
+		{
+			timeout = -1;
+		}
+        
+        //System.out.println("RunTest timeout is: " + timeout);
+        
+		testSpecialProps = sp.getProperty("testSpecialProps");
+		
+		if (useprocess)
+		{
+		    String defrespckg = sp.getProperty("ij.defaultResourcePackage");
+		    if (defrespckg != null) // if not set there is a default defined
+		    {
+		        defaultPackageName = defrespckg;
+		        if (!defaultPackageName.endsWith("/"))
+		            defaultPackageName += "/";
+		    }
+		    usesystem = sp.getProperty("usesystem");
+		}
+		
+		if ( (useprocess) || (suiteName == null) )
+		{
+		    suiteName = sp.getProperty("suitename");
+		    if ( (suiteName != null) && (suiteName.length()>0) )
+		    {
+		        // This is a suite run
+		        isSuiteRun = true;
+		        // If a suite, it could be part of a top suite
+		        topsuiteName = sp.getProperty("topsuitename");
+		        topsuitedir = sp.getProperty("topsuitedir");
+		        topreportdir = sp.getProperty("topreportdir");
+		    }
+		}
+		String uscdb = sp.getProperty("useCommonDB");
+		if (uscdb != null && uscdb.equals("true"))
+			useCommonDB = true;
+    }
+
+    private static String createPropString()
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        // Check for existence of app properties and/or derby.properties files
+        // Copy the derby.properties to the db base directory
+        // Then create the -p string for the test
+		String propString = "";
+		
+		// General purpose variables
+		BufferedReader in = null;
+		BufferedOutputStream bos = null;
+		BufferedOutputStream bos2 = null;
+		String str = "";
+		
+		// InputStreams for all possible properties files
+		InputStream isCl = null; // For test_derby.properties
+		InputStream isClDef = null; // For default_derby.properties
+		InputStream isAp = null; // For test_app.properties
+		InputStream isApDef = null; // For default_app.properties
+
+		// Resource names for locating the various properties files
+		String clDefProp = "tests/" + testDirName + "/" + "default_derby.properties";
+		String apDefProp = null;
+		if (useCommonDB)
+		    apDefProp = "tests/" + testDirName + "/" + "commonDB_app.properties";
+		else
+		    apDefProp = "tests/" + testDirName + "/" + "default_app.properties" ;
+
+		// Properties
+		Properties clp = new Properties();
+		Properties ap = new Properties();
+		Properties sdp = new Properties();
+
+        // If there are special flags for ij or server, load these
+        // into properties to be merged with app and/or derby props
+        Properties ijProps = new Properties();
+        Properties srvProps = new Properties();
+		if ( (testSpecialProps != null) && (testSpecialProps.length()>0))
+		{
+		    SpecialFlags.parse(testSpecialProps, ijProps, srvProps);
+		}
+
+        /* If there are more than one derby.properties, the rule is to
+           load either the test_derby.properties or the default one,
+        */
+        
+        // Check for default_derby.properties
+        isClDef = loadTestResource(clDefProp);
+		// Check for test specific props 
+        isCl = loadTestResource("tests/" + testDirName + "/" + testBase + "_derby.properties");
+//System.out.println("**************");
+//System.out.println("isCl = " + isCl);
+//System.out.println(defaultPackageName + testBase + "_derby.properties");
+//System.out.println("**************");
+        
+        // Now load and merge the properties based on above rules
+		if (isCl != null) // In case there exists a test_derby.properties
+		{
+		    clp.load(isCl);
+clp.list(System.out);
+		}
+		// Try the default_derby.properties instead
+		else if (isClDef != null)
+		{
+		    clp.load(isClDef);
+		}
+
+        // j9 will run out of memory with the default cache size (100), so
+        // forcing it lower unless set in _derby.properties file for a specific test
+        if (jvmName.startsWith("j9"))
+        {
+            if (clp.getProperty("derby.language.statementCacheSize")==null)
+                clp.put("derby.language.statementCacheSize", J9_STATEMENTCACHESIZE);
+        }
+
+        // Now merge any special server props if they exist
+        // But if clp is still empty, try using the special server props
+        if ( clp.isEmpty() )
+        {
+            // Check for srvProps from testSpecialProps
+            if ( !srvProps.isEmpty() )
+                clp = srvProps;
+        }
+        else
+        {
+            // merge any special properties from testSpecialProps
+            if ( !srvProps.isEmpty() )
+            {
+                for (Enumeration e = srvProps.propertyNames(); e.hasMoreElements();)
+                {
+                    String key = (String)e.nextElement();
+                    String value = srvProps.getProperty(key);
+                    if (key.equals("derby.debug.true")) // Add to existing prop
+                    {
+                        String cval = clp.getProperty("derby.debug.true");
+                        // If this property exists, edit to prepend the srvProp
+                        // but if the original property is null, just put the srvProp
+                        if (cval != null)
+                        {
+			                if (cval.length() != 0) {
+                                // debug property exists, so edit it
+                                value = value + "," + cval;
+                            } else {
+                                // if new debug property is not null, but is zero length, 
+                                // assume the intention was to override the debug property.
+                                value = "";
+                            }
+                        }
+                    }
+                    clp.put(key,value);
+                }
+            }
+        }
+
+        if ( !clp.isEmpty() )
+        {
+            // Create and load the file
+
+            // This call to getCanonicalPath catches IOExceptions as a workaround to
+            // a bug in the EPOC jvm. 
+      	    try { clPropFile = new File((new File(baseDir, "derby.properties")).getCanonicalPath()); }
+    	    catch (IOException e) {
+    		    File f = new File(baseDir, "derby.properties");
+    		    FileWriter fw = new FileWriter(f);
+    		    fw.close();
+    		    clPropFile = new File(f.getCanonicalPath());
+    	    }
+
+//System.out.println("clPropFile: " + clPropFile.getPath());
+            bos = new BufferedOutputStream(new FileOutputStream(clPropFile));
+            clp.save(bos, "Derby Properties");
+        	bos.close();
+        }
+
+		// --------------------------------- 
+        // Check for existence of sed properties file (test_sed.properties)
+        // See jdbc_sed.properties
+        //  Multiple patterns for DELETE: comma separated
+        //    delete=pattern1,pattern2,...,patternn
+        //  No commas can be allowed in the patterns.
+        // 
+        //  Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+        //    substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+        //  No commas or semicolons can be allowed in the patterns/subsitutes.  //
+        isSed = loadTestResource("tests/" + testDirName + "/" + testBase + "_sed.properties");
+//System.out.println("**************");
+//System.out.println("isSed = " + isSed);
+//System.out.println(defaultPackageName + testBase + "_sed.properties");
+//System.out.println("**************");
+		// --------------------------------- 
+
+        // Check for existence of app properties file
+        // If there is an test_app, use it to overwrite default_app
+        // Then create the -p string for the test
+        Properties dp = new Properties();
+	    String testPropName = null;
+	    String testPropSDName = null; // name for shutdown properties file if needed
+	    if (useCommonDB) testPropName = "CDB" + testBase + "_app.properties";
+	    else testPropName = testBase + "_app.properties";
+
+        // Check for default_app.properties
+        isApDef = loadTestResource(apDefProp);
+
+        // Check for test_app.properties
+        isAp = loadTestResource("tests/" + testDirName + "/" + testBase + "_app.properties");
+//System.out.println("**************");
+//System.out.println("isAp = " + isAp);
+//System.out.println(defaultPackageName + testBase + "_app.properties");
+//System.out.println("**************");
+
+        // Try loading the ap and def properties if they exist
+        // Merge only if the test's app properties has usedefaults property
+        if ( isAp != null )
+        {
+            ap.load(isAp);
+            // Check for a property usedefaults; if true merge in default props
+		    for (Enumeration e = ap.propertyNames(); e.hasMoreElements(); )
+		    {
+			    String key = (String)e.nextElement();
+			    String value = ap.getProperty(key);
+			    if ( (key.equals("usedefaults")) && (value.equals("true")) )
+			    {
+			        // merge in the default properties
+                    if ( isApDef != null )
+                    {
+                        dp.load(isApDef);
+                        mergeProps(ap, dp);
+                        break;
+                    }
+                }
+            }
+        }
+        else
+        {
+            // Just use the default props
+            if ( isApDef != null )
+                ap.load(isApDef);
+        }
+
+        // If app props are still empty, check for any special testSpecialFlags
+        if ( ap.isEmpty() )
+        {
+            if ( !ijProps.isEmpty() )
+                ap = ijProps;
+        }
+        else
+        {
+            // merge any special properties from testSpecialFlags
+            if ( !ijProps.isEmpty() )
+            {
+                for (Enumeration e = ijProps.propertyNames(); e.hasMoreElements();)
+                {
+                    String key = (String)e.nextElement();
+                    String value = ijProps.getProperty(key);
+                    ap.put(key,value);
+                }
+            }
+        }
+
+        if ( !ap.isEmpty() )
+        {
+                // Create the file and load the properties
+	        // This call to getCanonicalPath catches IOExceptions as a workaround to
+	        // a bug in the EPOC jvm. 
+            try 
+            { 
+                appPropFile = new File((new File(baseDir, testPropName)).getCanonicalPath());                 
+            }
+	        catch (IOException e) 
+	        {
+		        File f = new File(baseDir, testPropName);
+		        FileWriter fw = new FileWriter(f);
+		        fw.close();
+		        appPropFile = new File(f.getCanonicalPath());		        
+	        }
+
+			// For IBM14 the console encoding is different from the platform
+			// encoding on windows.  We want it to be the same for our
+			// test output like the other JDK's.
+			String conEnc = System.getProperty("console.encoding");
+			String fileEnc = System.getProperty("file.encoding");
+		
+			if ((conEnc != null) &&  (fileEnc != null )  &&
+				(ap.getProperty("derby.ui.codeset") == null) &&
+				conEnc.startsWith("Cp850"))
+			{
+				ap.put("derby.ui.codeset",fileEnc);
+			}
+			if (verbose)
+				System.out.println("console.encoding:" + conEnc + 
+								   " file.encoding:" + fileEnc +
+							   " derby.ui.codeset: " + ap.getProperty("derby.ui.codeset"));
+
+//System.out.println("appPropFile: " + appPropFile.getPath());
+            bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
+            ap.save(bos, "App Properties");
+            bos.close();
+
+            // Depending on the framework, the app prop file may need editing
+            if ( (framework.length()>0) || (encryption) )
+            {
+                try
+                {
+                    if (!framework.equals("") && 
+                        !framework.equals("embedded"))
+                        frameworkProtocol(ap);
+                    else if (encryption)
+                        encryptionProtocol(ap);
+                }
+                catch(Exception e)
+                {
+                    System.out.println("Exception: " + e.getMessage());
+                    e.printStackTrace();
+                }
+		
+                // write the new properties to the appPropFile
+        		appPropFile = new File(baseDir, testBase + "_app.properties");
+        		try
+        		{
+            		bos = new BufferedOutputStream(new FileOutputStream(appPropFile));
+            		ap.save(bos, "Test Properties");
+            		bos.close();
+                }
+            	catch(IOException ioe)
+            	{
+            		System.out.println("IOException creating prop file: " + ioe.getMessage());
+            	}
+            }
+        }
+
+    	if ( (appPropFile != null) && (appPropFile.exists()) )
+    	{
+    	    // Create the properties string for the test
+    		propString = appPropFile.getPath();
+    		
+    		// Check for shutdown url
+    		shutdownurl = ap.getProperty("shutdown");
+    		
+    		// Check for jdk12test set to true
+	        String jdk12test = ap.getProperty("jdk12test");
+	        //System.out.println("jdk12test: " + jdk12test);
+	        //System.out.println("jvmName: " + jvmName);
+	        if (jdk12test != null)
+	        {
+	            if (jdk12test.toLowerCase().equals("true"))
+	            {
+	                isjdk12test = true;
+	                //System.out.println("isjdk12test " + isjdk12test);
+	                if (jvmName.equals("currentjvm")) { // This is not at least jdk12
+	                    skiptest = true;
+						addSkiptestReason("Test skipped: test needs jdk12, jvm is reporting currentjvm; skipping test: " + scriptFileName);
+					}
+	            }
+	        }
+
+            String srvJvm = System.getProperty("serverJvm");
+            if ((srvJvm !=null) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
+                j9net = true;
+
+            String excludeJcc = ap.getProperty("excludeJCC");
+            if ( framework.startsWith("DB2") )
+            {	
+                if (excludeJcc != null) {
+                    int excludeMajor = 0;
+                    int excludeMinor = 0;
+                    try {
+                        excludeMajor = Integer.parseInt(excludeJcc.substring(0,excludeJcc.indexOf(".")));
+                        excludeMinor = Integer.parseInt(excludeJcc.substring(excludeJcc.indexOf(".")+1));
+                    } catch (NumberFormatException nfe) {
+                        System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+                    } catch (NullPointerException npe) {
+  	                    System.out.println("excludeJCC property poorly formatted: " + excludeJcc);
+                    }
+                    if (excludeMajor >= jccMajor && excludeMinor >= jccMinor)
+                    {
+                        skiptest = true;
+                        addSkiptestReason("This test is excluded from running with JCC versions " + excludeJcc + " and below");
+                    }
+                }
+            }
+		
+
+            // for now we want just want to have a single property
+            // for all j9 versions; use j9_13 for the jvmname
+            String testJVM = (jvmName.startsWith("j9") ? "j9" : jvmName);
+            runwithjvm = ap.getProperty("runwith" + testJVM);
+            if  ((runwithjvm != null) && (runwithjvm.equalsIgnoreCase("false")))
+            {
+				skiptest = true;
+				addSkiptestReason("Test skipped: test cannot run with jvm: " +
+								  jvmName + ".  " + scriptFileName);
+			}
+
+	        // Check for jvmflags (like "-nojit -ms32M -mx32M")
+	        // These may have been set as a system property already
+	        if (jvmflags == null)
+	        {
+	            jvmflags = ap.getProperty("jvmflags");
+	            // If set in app props to up the memory, this
+	            // is only meant to be applied to 11x vms
+	            if ( (jvmflags != null) && (!jvmName.equals("currentjvm")) )
+	            {
+	                if (jvmflags.startsWith("-ms"))
+	                    jvmflags = "";
+	            }
+	        }	        
+	        
+    		// Also check for supportfiles
+    		String suppFiles = ap.getProperty("supportfiles");
+			boolean copySupportFiles = ((suppFiles != null) && (suppFiles.length()>0));
+			boolean createExtDirs= new Boolean(ap.getProperty("useextdirs","false")).booleanValue();
+			
+    		if (copySupportFiles || createExtDirs)
+    		{
+				File copyOutDir = null;
+
+    		    if (testType.equals("sql2"))
+    		    {
+    		        if ( (isSuiteRun) || (framework.length()>0) )
+						copyOutDir = outDir;
+    		        else if ( (runDir != null) && (runDir.exists()) )
+						copyOutDir = runDir;
+    		        else
+						copyOutDir = outDir;
+    		    }
+    		    //else if ( testType.equals("multi") )
+    		    //{
+    		    //    if ( (isSuiteRun) || (mtestdir == null) || (mtestdir.length()==0) )
+    		    //    {
+				//		copyOutDir = outDir;
+    		    //    }
+    		    //    else
+    		    //    {
+    		    //        File multiDir = new File(mtestdir);
+				//		copyOutDir = multiDir;
+    		    //    }
+    		    //}
+                else if ( outcopy == true )
+                    copyOutDir = outDir;
+                else if ( (runDir != null) && (runDir.exists()) )
+                {
+                    if (jvmName.startsWith("j9")&&  testType.equals("java"))
+                    {
+                        // for some reason, not picking up from rundir
+                        copyOutDir = outDir;
+                    }else
+					    copyOutDir = runDir;
+                }
+                else
+                    copyOutDir = outDir;
+
+				if(createExtDirs)
+				{
+					extInDir = copyOutDir;
+					//create the support file directory for input files
+					extInDir = new File(copyOutDir , "extin");
+					if(!extInDir.exists())
+						extInDir.mkdirs();
+					//create the support file directory for output files.
+					extOutDir = new File(copyOutDir , "extout");
+					if(!extOutDir.exists())
+						extOutDir.mkdirs();
+					//create the support file directory for input output files.
+					extInOutDir = new File(copyOutDir , "extinout");
+					if(!extInOutDir.exists())
+						extInOutDir.mkdirs();
+					copyOutDir = extInDir;
+				}
+				if(copySupportFiles)
+				   CopySuppFiles.copyFiles(copyOutDir, suppFiles);
+    		}
+			
+    	}
+        return propString;
+    }
+
+    public static String setTestJavaFlags(String tflags)
+    {
+        StringBuffer sb = new StringBuffer();
+	    if (verbose) System.out.println("testJavaflags: " + tflags);
+	    String dintro = "-D";
+        try
+        {
+            dintro = jvm.getJvm(jvmName).getDintro();
+        }
+        catch (Exception e)
+        {
+            System.out.println("Problem getting jvm "+jvmName+" Dintro: ");
+            e.printStackTrace(System.out);
+		    System.exit(1);
+        }
+	    // Parse because there could be a list of flags
+	    StringTokenizer st = new StringTokenizer(tflags,"^");
+        while (st.hasMoreTokens())
+        {
+	        String token = st.nextToken();
+            if ( ! (token.startsWith("-D") || token.startsWith("-X"))) { sb.append(dintro); }
+            sb.append(token);
+            sb.append(" ");
+        }
+        if (verbose) System.out.println("setTestJavaFlags returning: " + sb.toString());
+        return sb.toString();
+    }
+
+	private static void loadProps(Properties p, File f) throws Exception
+	{
+		if (f.canRead())
+		{
+			FileInputStream fis = new FileInputStream(f);
+			p.load(fis);
+			fis.close();
+		}
+	}
+
+	private static void mergeProps(Properties to, Properties from)
+	{
+		for (Enumeration e = from.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			to.put(key, from.getProperty(key));
+		}
+	}
+
+
+
+    private static void frameworkProtocol(Properties p) throws Exception
+    {
+
+        if (p == null)
+        {
+            // No properties
+            return;
+        }
+		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			String value = p.getProperty(key);
+
+			if (key.equals("driver") || key.equals("ij.driver") || key.equals("jdbc.drivers"))
+			{
+			    p.put(key, driverName);
+			}
+			else if (key.startsWith("ij.protocol") || key.equals("protocol"))
+			{
+			    value = NetServer.alterURL(framework,value);
+			    p.put(key, value);
+			}
+			else if (key.equals("database") || key.equals("ij.database") || key.startsWith("ij.connection") || key.equals("jdbc.url"))
+			{
+			    dbName = value.substring(value.lastIndexOf(':') + 1 ,
+						     value.length());
+			    value = NetServer.alterURL(framework,value);
+			    p.put(key, value);
+			}
+			// force messages to show
+			else if ((!key.equals("retrieveMessagesFromServerOnGetMessage")) &&
+				(!key.equals("ij.retrieveMessagesFromServerOnGetMessage")))
+			{
+				p.put("ij.retrieveMessagesFromServerOnGetMessage","true");	
+				p.put("retrieveMessagesFromServerOnGetMessage","true");	
+			}
+			else // for any other properties, just copy them
+			    p.put(key, value);
+			
+		}
+		// Temporary until jcc supports null userid
+		if (NetServer.isJCCConnection(framework))
+		{
+			String user = System.getProperty("ij.user");
+			String password = System.getProperty("ij.password");
+			if (user == null) user = "APP";
+			if (password == null) password = "APP";
+
+		    p.put("ij.user",user);
+		    p.put("ij.password",password);
+		}
+
+		// If this is not a known protocol for ij we
+		// need to set the driver
+		if (driverName != null)
+		    p.put("ij.driver",driverName);
+	}
+	
+
+	private static void encryptionProtocol(Properties p) throws Exception
+	{
+        String encryptUrl = "dataEncryption=true;bootPassword=Thursday";
+
+        if (p == null)
+        {
+            // No properties
+            return;
+        }
+
+        // add encryption algorithm and provider to database creation URL
+        String v = p.getProperty("testEncryptionAlgorithm");
+        if (v != null)
+            encryptUrl += ";" + Attribute.CRYPTO_ALGORITHM + "=" + v;
+        v = p.getProperty("testEncryptionProvider");
+        if (v != null)
+            encryptUrl += ";" + Attribute.CRYPTO_PROVIDER + "=" + v;
+
+		for (Enumeration e = p.propertyNames(); e.hasMoreElements(); )
+		{
+			String key = (String)e.nextElement();
+			String value = p.getProperty(key);
+
+			if (key.equals("database") || key.equals("ij.database") || key.startsWith("ij.connection") || key.equals("jdbc.url"))
+			{
+				// edit the url if necessary
+				int index = value.indexOf(encryptUrl);
+				if ( index == -1)
+				{
+				    value = value + ";" + encryptUrl;
+			    }
+				p.put(key, value);
+			}
+            else if (key.equals("testEncryptionAlgorithm") || key.equals("testEncryptionProvider"))
+                {} // ignore, do not copy
+			else // for any other properties, just copy them
+			    p.put(key, value);
+		}
+	}
+
+    private static void cleanupBaseDir(File baseDir)
+    {
+        // Some tests rely on no cleanup being done on the baseDir
+        boolean okToDelete = false;
+
+        if ( (usesystem == null) || (usesystem.length()==0) )
+            okToDelete = true;
+        else if (usesystem.equals("nist"))
+        {
+            if (testBase.equals("schema1"))
+                okToDelete = true;
+        }
+        else if (usesystem.equals("puzzles"))
+        {
+            if (testBase.equals("puzzleschema"))
+                okToDelete = true;
+        }
+
+        if (useCommonDB) okToDelete = false;
+
+        if (okToDelete == true)
+        {
+           //System.out.println("Should be deleting the baseDir for a clean run");
+           deleteFile(baseDir);
+           if (baseDir.exists())
+               System.out.println("baseDir did not get deleted which could cause test failures");
+           else
+               baseDir.mkdir();
+        }
+    }
+
+    private static void doCleanup(String javaVersion)
+        throws IOException
+    {
+        boolean status = true;
+        // The output files cannot be deleted if there
+        // is still a reference to them -- even doing
+        // this is not a guarantee that they will be deleted
+        // It seems to depend on the Java environment
+        //printWriter.close();
+        //printWriter = null;
+
+        //Always cleanup the script files
+        if ( !(script == null) && (script.exists()) )
+        {
+            status = script.delete();
+            //System.out.println("Status was: " + status);
+        }
+
+	    String endTime = CurrentTime.getTime();
+	    StringBuffer sbend = new StringBuffer();
+	    sbend.append("*** End:   " + testBase + " jdk" + javaVersion + " ");
+	    if ( (framework.length()>0) && (!framework.startsWith("embedded")) )
+	        sbend.append(framework + " ");
+	    if ( (suiteName != null) && (suiteName.length()>0) )
+	        sbend.append(suiteName + " ");
+	    sbend.append(endTime + " ***");
+	    System.out.println(sbend.toString());
+	    pwDiff.println(sbend.toString());
+        pwDiff.flush();
+        pwDiff.close();
+        pwDiff = null;
+
+        // This could be true if set by user or there were diffs
+        if (keepfiles == false)
+        {
+            // Delete the out and diff files
+            status = tmpOutFile.delete();
+            if (status == false)
+                tmpOutFile = null;
+            status = finalOutFile.delete();
+            if (skiptest == false)
+                status = diffFile.delete();
+			// delete JCC filtered master file
+			if (NetServer.isJCCConnection(framework))
+			{
+        		JCCOutFile = new File(outDir, JCCOutName);
+            	status = JCCOutFile.delete();
+			}
+            if (deleteBaseDir)
+            {
+                if (useCommonDB == false) 
+                {
+                	//System.out.println("Should delete the baseDir: " + baseDir.getPath());
+                	deleteFile(baseDir);
+		        }
+		        else 
+		        {
+			        status = appPropFile.delete();
+			        //no permission in Java to drop derby.log
+			        //File logfile = new File(baseDir, "derby.log");
+			        //System.out.println("delete derby.log ");
+			        //System.out.println(logfile.getPath());
+			        //status = logfile.delete();
+		        }
+            }
+
+			//delete the directories where external input/output files were created
+			if(extInDir!=null)
+				deleteFile(extInDir);
+			if(extOutDir!=null)
+				deleteFile(extOutDir);
+			if(extInDir!=null)
+				deleteFile(extInOutDir);
+        }
+	    // reset for next test
+	    // the next line is a bug fix to get cleanup working correctly when
+	    // useprocess==false;  without this the first failing test causes all
+	    // subsequent tests not to clean up, since keepfiles is static; a
+	    // more general solution is to make the variable non-static, and to
+	    // set the default in the initializer; I(john) have not done this
+	    // because the same reasoning probably applies to many of the static
+	    // variables, and the whole subject should probably be approached in
+	    // a coordinated way when someone has the time for it.
+	    keepfiles = false;
+
+    }
+
+    /*
+     * For recursively deleting a directory
+     *
+     */
+	public static void deleteFile(File f)
+	{
+	    boolean status = true;
+        if (f == null)
+        {
+            System.out.println(f.getName() + " is null");
+            return;
+        }
+        //System.out.println("Trying to delete: " + f.getPath());
+	    status = f.delete();
+
+	    if (status == true)
+	        return;
+	    else
+	    {
+	        // Could not delete; this could be a non-empty directory
+	        //System.out.println("Recursively delete...");
+	        String[] files = f.list();
+	        for (int i = 0; i < files.length; i++)
+	        {
+	            File sub = new File(f.getPath(), files[i]);
+	            if (sub == null)
+	                continue;
+	            //System.out.println("Try to delete: " + sub.getPath());
+	            status = sub.delete();
+	            if (status != true)
+	            {
+	                // Could not delete; it may be a non-empty dir
+	                if ( sub.isDirectory() )
+	                {
+	                    //System.out.println("Recursing again ... ");
+	                    deleteFile(sub);
+	                    // It should be empty now; try again
+	                    status = sub.delete();
+	                    //System.out.println("Recurse delete status: " + status);
+	                }
+	                // The file delete failed
+	                //System.out.println("Failed to clean up file: " + sub.getPath());
+	            }
+	        }
+	    }
+	    //Should be able to delete the top directory now
+	    status = f.delete();
+	    if (status == false)
+	    {
+	        System.out.println("Warning: Cleanup failed on baseDir: " + f.getPath());
+	    }
+	}
+
+	static void addToFailures(String testName) throws IOException
+	{
+		if (failFileName==null)
+		{
+			if (isSuiteRun) failFileName = suiteName+".fail";
+			else failFileName=testBase+".fail";
+        }
+		addToListFile(failFileName,testName);
+	}
+
+	static void addToSuccesses(String testName) throws IOException
+	{
+		if (passFileName==null)
+		{
+			if (isSuiteRun) passFileName = suiteName+".pass";
+			else passFileName=testBase+".pass";
+        }
+		addToListFile(passFileName,testName);
+    }
+
+	static void addToListFile(String fileName, String testName) throws IOException
+	{
+	    File f;
+	    if (isSuiteRun)
+	        f = new File(rsuiteDir,fileName);
+	    else
+	        f = new File(outDir,fileName);
+		PrintStream ps = null;
+
+		// This call to getCanonicalPath catches IOExceptions as a workaround to
+		// a bug in the EPOC jvm. 
+		try { ps = new PrintStream( new FileOutputStream(f.getCanonicalPath(),true) ); }
+		catch (IOException e) {
+		    FileWriter fw = new FileWriter(f);
+		    fw.close();
+		    ps = new PrintStream( new FileOutputStream(f.getCanonicalPath(),true) ); 
+		}
+
+		ps.println(testName);
+		ps.flush();
+		ps.close();
+    }
+
+    static void appendStderr(BufferedOutputStream bos, InputStream is)
+        throws IOException
+    {
+        PrintWriter tmpPw = new PrintWriter(bos);
+        // reader for stderr
+        BufferedReader errReader = new BufferedReader(new InputStreamReader(is));
+        String s = null;
+        int lines = 0;
+        while ((s = errReader.readLine()) != null)
+        {
+           tmpPw.println(s);
+        }
+        errReader.close();
+        tmpPw.flush();
+    }
+
+    static void verifyTestType()
+        throws ClassNotFoundException, FileNotFoundException, IOException
+    {
+        //java requires '/' as separator to look into jar, irrespective of OS
+        InputStream is =
+            loadTestResource("harness/testtypes.properties");
+		Properties p = new Properties();
+		p.load(is);
+        String testtypes = p.getProperty("testtypes");
+	    StringTokenizer st = new StringTokenizer(testtypes,",");
+	    String ttype = "";
+        while (st.hasMoreTokens())
+        {
+            ttype = st.nextToken();
+            if ( testType.equals(ttype) )
+                return;
+        }
+        // Not a known test type
+        System.out.println("Unknown test type: " + testType);
+        System.exit(1);
+    }
+
+	public static void
+	addStandardTestJvmProps(Vector testJvmProps,String derbySystemHome,
+							String userDirName, jvm jvm)
+	{
+		if (derbySystemHome==null || derbySystemHome.length() == 0)
+			derbySystemHome = userDirName;
+		testJvmProps.addElement("derby.system.home=" + derbySystemHome);
+		testJvmProps.addElement("derby.infolog.append=true ");
+		// Why is this being done here
+		//if (jvm != null)
+		    //testJvmProps.addElement("jvm="+jvm.getName());
+		testJvmProps.addElement("user.dir="+userDirName);
+	}
+	
+	private static String[] buildTestCommand(String propString,
+	    String systemHome, String scriptPath)
+	    throws FileNotFoundException, IOException, Exception
+	{
+	    //System.out.println("testType: " + testType);
+	    String ij = "";
+        // Create the test command line
+        if (testType.equals("sql"))
+            ij = "ij";
+		jvm jvm = null; // to quiet compiler
+		jvm = jvm.getJvm(jvmName);
+        if (javaCmd != null)
+            jvm.setJavaCmd(javaCmd);
+
+        if ( (classpath != null) && (classpath.length()>0) )
+            jvm.setClasspath(classpath);
+
+		Vector jvmProps = new Vector();
+		if ( testType.equals("java") || testType.equals("demo") )
+		    addStandardTestJvmProps(jvmProps,systemHome,
+			    outDir.getCanonicalPath(),null);		    
+        else if ( (runDir != null) && (runDir.exists()) )
+		    addStandardTestJvmProps(jvmProps,systemHome,
+			    runDir.getCanonicalPath(),jvm);
+        else
+			addStandardTestJvmProps(jvmProps,systemHome,
+				outDir.getCanonicalPath(),jvm);
+		
+        if ( (testJavaFlags != null) && (testJavaFlags.length()>0) )
+        {
+	    String parsedFlags = setTestJavaFlags(testJavaFlags);
+            StringTokenizer st = new StringTokenizer(parsedFlags," ");
+            while (st.hasMoreTokens())
+            {
+                jvmflags = (jvmflags==null?"":jvmflags) + " " + st.nextToken();
+            }
+        }
+        
+        if ( ij.startsWith("ij") )
+            jvmProps.addElement("ij.defaultResourcePackage=" +
+                defaultPackageName);
+        
+        if ( (framework != null) )
+            jvmProps.addElement("framework=" + framework);
+            
+        if ( (jvmflags != null) && (jvmflags.length()>0) )
+        {
+            jvm.setFlags(jvmflags);
+        }
+        
+        jvm.setD(jvmProps);
+        
+        if (testType.equals("multi"))
+        {
+            if ( (jvmflags != null) && (jvmflags.indexOf("mx") == -1) )
+                jvm.setMx(64*1024*1024); // -mx64m
+        }
+            
+        Vector v = jvm.getCommandLine();
+        if ( ij.startsWith("ij") )
+        {
+            // as of cn1411-20030930, the system takes the default console encoding
+            // which in the US, on windows, is Cp437.
+            // Sun on the other hand, always forces a console encoding of 1252.
+            // To get the same result for ibm141 & jdk14*, we need to force 
+            // the console encoding to Cp1252 for ij tests.
+            // see beetle 5475.
+            v.addElement("-Dconsole.encoding=Cp1252" );
+            v.addElement("org.apache.derby.tools." + ij);
+            if (ij.equals("ij"))
+            {
+                v.addElement("-fr");
+                v.addElement(scriptFileName);
+            }
+            v.addElement("-p");
+            v.addElement(propString);
+        }
+        else if ( testType.equals("java") )
+        {
+            if (javaPath.length() > 0)
+                v.addElement(javaPath + "." + testBase);
+            else
+                v.addElement(testBase);
+            if ( (propString.length() > 0) && (usesystem == null))
+            {
+                v.addElement("-p");
+                v.addElement(propString);
+            }
+        }
+        // here would be placed calls to and set properties for e.g. unittests and multithreaded tests methods
+            
+        // Now convert the vector into a string array
+        String[] sCmd = new String[v.size()];
+        for (int i = 0; i < v.size(); i++)
+        {
+            sCmd[i] = (String)v.elementAt(i);
+        }
+
+        return sCmd;
+    }
+
+    private static void execTestProcess(String[] testCmd)
+        throws Exception
+    {
+        
+        // Execute the process and handle the results
+    	Process pr = null;
+    	try
+    	{
+            // We need the process inputstream and errorstream
+            ProcessStreamResult prout = null;
+            ProcessStreamResult prerr = null;
+            FileOutputStream fos = null;
+            BufferedOutputStream bos = null;
+            
+            StringBuffer sb = new StringBuffer();
+            
+            for (int i = 0; i < testCmd.length; i++)
+            {
+                sb.append(testCmd[i] + " ");                    
+            }
+            if (verbose) System.out.println(sb.toString());
+            pr = Runtime.getRuntime().exec(testCmd);
+
+            if (useOutput)
+            {
+                fos = new FileOutputStream(tmpOutFile);
+                bos = new BufferedOutputStream(fos, 1024);
+                prout = 
+                    new ProcessStreamResult(pr.getInputStream(), bos, timeoutStr);
+            }
+            else
+            {
+                fos = new FileOutputStream(stdOutFile);
+                bos = new BufferedOutputStream(fos, 1024);
+                prout = 
+                    new ProcessStreamResult(pr.getInputStream(), bos, timeoutStr);
+            }
+            prerr =
+                new ProcessStreamResult(pr.getErrorStream(), bos, timeoutStr);
+    
+            if (framework != null && ! framework.equals(""))
+                if (verbose) System.out.println("The test should be running...");
+
+			if (timeout != -1) {
+				TimedProcess tp = new TimedProcess(pr);
+				tp.waitFor(timeout*60);
+				pr = null;
+			}
+
+            // determine if the process is done or was interrupted
+            boolean outInterrupt = prout.Wait();
+            boolean errInterrupt = prerr.Wait();                
+                
+            if ( (errInterrupt) || (outInterrupt) )
+            {
+                pwDiff.println("The test timed out...");
+                System.out.println("Test timed out...");
+                pr.destroy();
+                pr = null;
+            }
+
+            fos.close();
+            bos.close();
+            //printWriter.flush();
+            //printWriter.close();
+            if (pr != null)
+            {
+                pr.destroy();
+                pr = null;
+            }
+        }
+        catch(IOException ioe)
+        {
+            System.out.println("IOException: " + ioe.getMessage());
+        }
+        catch(Throwable t)
+        {
+            pwDiff.println("Process exception: " + t);
+            System.out.println("Process exception: " + t.getMessage());
+            t.printStackTrace();
+            if (pr != null)
+            {
+                pr.destroy();
+                pr = null;
+            }
+        }
+    }
+    
+    private static void execTestNoProcess(Properties sysProp,
+        String systemHome, String propString, String scriptPath)
+        throws Exception
+    {
+        // For platforms where executing a process is failing
+        String olduserdir = (String)sysProp.get("user.dir");
+        Properties ptmp = System.getProperties();
+        ptmp.put("derby.system.home", systemHome);
+        ptmp.put("derby.infolog.append", "true");
+        System.setProperties(ptmp);
+    	PrintStream stdout = System.out;
+    	PrintStream stderr = System.err;
+
+	    String pathStr = "";
+
+	    //these calls to getCanonicalPath catch IOExceptions as a workaround to
+	    //a bug in the EPOC jvm. 
+	    try 
+	    { 
+	        pathStr = tmpOutFile.getCanonicalPath().replace(File.separatorChar,fileSep); 
+	    }
+	    catch (IOException e) 
+	    {
+	        FileWriter fw = new FileWriter(tmpOutFile);
+	        fw.close();
+	        pathStr = tmpOutFile.getCanonicalPath().replace(File.separatorChar,fileSep);
+	    }
+
+    	PrintStream ps = new PrintStream(new FileOutputStream(pathStr), true);
+    	System.setOut(ps);
+    	System.setErr(ps);
+    	if (testType.equals("sql"))
+    	{
+    	    String[] ijarg = new String[3];
+            ijarg[0] = "-p";
+            ijarg[1] = propString;
+            ijarg[2] = scriptPath;
+			RunIJ ij = new RunIJ(ijarg);
+			Thread ijThread = new Thread(ij);
+			try
+			{
+				ijThread.start();
+				if (timeout < 0)
+				{
+					ijThread.join();
+				}
+				else
+				{
+				    ijThread.join(timeout * 60 * 1000);
+				}
+			}
+			catch (Exception e)
+			{
+				System.out.println("Aiiie! Got some kind of exception " + e);
+			}
+
+			// Now make sure a shutdown is complete if necessary
+			if (shutdownurl != null)
+			{
+			    String[] sdargs = new String[2];
+			    sdargs[0] = systemHome;
+			    sdargs[1] = shutdownurl;
+			    shutdown.main(sdargs);
+			}
+			// Reset ij.defaultResourcePackage
+			ptmp = System.getProperties();
+                        ptmp.put("ij.defaultResourcePackage", "/org/apache/derbyTesting/");
+			ptmp.put("usesystem", "");
+			System.setProperties(ptmp);
+        }
+        else if (testType.equals("java"))
+        {
+            sysProp.put("user.dir", outDir.getCanonicalPath());
+            javaPath = "org.apache.derbyTesting." + testDirName;
+            String[] args = new String[2];
+            args[0] = "-p";
+            args[1] = propString;
+            Class[] classArray = new Class[1];
+            classArray[0] = args.getClass();
+            String testName = javaPath + "." + testBase;
+            Class JavaTest = Class.forName(testName);
+            // Get the tests's main method and invoke it
+            Method testMain = JavaTest.getMethod("main", classArray);
+            Object[] argObj = new Object[1];
+            argObj[0] = args;
+			RunClass testObject = new RunClass(JavaTest, testMain, argObj);
+			Thread testThread = new Thread(testObject);
+			try
+			{
+				testThread.start();
+				if (timeout < 0)
+				{
+					testThread.join();
+				}
+				else
+				{
+					testThread.join(timeout * 1000);
+				}
+			}
+			catch(Exception e)
+			{
+				System.out.println("Exception upon invoking test..." + e);
+				e.printStackTrace();
+			}
+
+			try 
+			{
+				java.sql.DriverManager.getConnection("jdbc:derby:;shutdown=true");
+			} 
+			catch (java.sql.SQLException e) 
+			{
+				// ignore the errors, they are expected.
+			}
+    		sysProp.put("user.dir", olduserdir);
+        }
+        // here would be placed messages re unittests and multithreaded tests not working with useprocess false
+        ps.close();
+        // Reset System.out and System.err
+        System.setOut(stdout);
+        System.setErr(stderr);
+    }
+
+    static void addSkiptestReason(String reason) {
+		if (skiptestReason.length() > 0)
+			skiptestReason.append(System.getProperty("line.separator","\n"));
+		skiptestReason.append(reason);
+    }
+
+    static boolean verifyFramework (String framework) {
+    	String validFmString = "";
+    	for (int i = 0 ; i < validFrameworks.length; i++)
+    	{
+    	    validFmString   += " " + validFrameworks[i];
+    	    if (validFrameworks[i].equals(framework))
+        		return true;
+	    }
+    	System.err.println("Invalid framework: " + framework);
+	
+    	System.err.println("Valid frameworks are: " + 
+			   validFmString);
+    	return false;
+	
+    }
+
+    /*
+     * method for loading a resource relative to testResourceHome.
+     * @param loc location of file relative to testResourceHome (e.g. master/cast.out)
+     * @return InputStream for the resource
+     */
+    public static InputStream loadTestResource(String loc) {
+        return new Object().getClass().getResourceAsStream(testResourceHome + loc); 
+    }
+    
+    /*
+     * This method replaces the / in the path string with \ for windows
+     * @param path the path string to convert
+     * @return String the new path
+     */
+    private static String convertPathForWin(String path)
+    {
+        String tmp = "a" + path +"a";
+        int i = tmp.indexOf('/');
+        while (i != -1)
+        {
+            //replace the \\ with .
+            tmp = tmp.substring(0, i) + "\\\\" + tmp.substring(i+1);
+            i = tmp.indexOf('/');
+        }
+        //lets remove the a we added
+        tmp = tmp.substring(1, tmp.length()-1);
+        //System.out.println(tmp);
+        
+        return tmp;
+    }
+
+}
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/Sed.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,478 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/***
+ * Sed.java
+ *
+ * This is a version of "sed" in Java for the Cloudscape Function Tests,
+ * written using the OROMatcher Perl5 regular expression classes.
+ * The substitutions/deletions are based on the original kornshell tests.
+ *
+ ***/
+
+import java.io.*;
+import java.util.Vector;
+import org.apache.oro.text.regex.*;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+public class Sed
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    public Sed()
+    {
+    }
+
+    public static void main(String[] args) throws Exception {
+	if (args == null || args.length != 2) {
+		System.err.println("Usage: Sed sourcefile targetfile");
+		System.exit(1);
+	}
+	File src = new File(args[0]);
+	File tgt = new File(args[1]);
+	new Sed().exec(src,tgt,null, false);
+    }
+
+    // The arguments should be the names of the input and output files
+    public void exec(File srcFile, File dstFile, InputStream isSed, boolean isJCC)
+        throws IOException
+    {
+        // Vector for storing lines to be deleted
+        Vector deleteLines = new Vector();
+        deleteLines.addElement("^ij version.*$");
+        deleteLines.addElement("^\\*\\*\\*\\* Test Run Started .* \\*\\*\\*\\*$");
+        deleteLines.addElement("^\\*\\*\\*\\* Test Run Completed .* \\*\\*\\*\\*$");
+        deleteLines.addElement("^ELAPSED TIME = [0-9]* milliseconds$");
+        deleteLines.addElement("^Symantec Java! JustInTime Compiler Version .*$");
+        deleteLines.addElement("^Copyright .* Symantec .*$");
+        deleteLines.addElement("^\\^\\?$");
+        //deleteLines.addElement("^\\.$"); // originally to remove lines with a dot
+        deleteLines.addElement("^S.*ij> $");
+        deleteLines.addElement("^ *$");
+        deleteLines.addElement("^Server StackTrace:$");
+        deleteLines.addElement("^\\[ *$");
+        deleteLines.addElement("^\\] *$");
+        deleteLines.addElement("^\\[$");
+        deleteLines.addElement("^\\]$");
+        deleteLines.addElement("^<not available>\\]$");
+        deleteLines.addElement("^weblogic\\..*$");
+        deleteLines.addElement("^(.*at .*)\\(.*:[0-9].*\\)$");
+        deleteLines.addElement("^(.*at .*)\\(*.java\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Compiled Code\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Interpreted Code\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Unknown Source\\)$");
+        deleteLines.addElement("^(.*at .*)\\(Native Method\\)$");
+        deleteLines.addElement("^.*at weblogic\\..*$");
+        deleteLines.addElement("^\\tat $"); // rare case of incomplete stack trace line
+        deleteLines.addElement("JBMSTours\\.vti\\.jdbc1_2\\.ExternalTable"); // For some reason ArchiveData.out outputs it's errors in random order, sed them both out.
+        deleteLines.addElement("optimizer estimated cost");
+        deleteLines.addElement("optimizer estimated row count");
+        deleteLines.addElement("^WARNING: Cloudscape \\(instance.*$");
+        deleteLines.addElement("^Warning: Cloudscape \\(instance.*$");
+        deleteLines.addElement("Using executables built for native_threads");
+        deleteLines.addElement("Estimate of memory used");
+        deleteLines.addElement("Size of merge runs");
+        deleteLines.addElement("Number of merge runs");
+        deleteLines.addElement("Sort type");
+        deleteLines.addElement("Optimization started at .*$");
+        deleteLines.addElement("WARNING 02000: No row was found for FETCH, UPDATE or DELETE");
+	// deleteLines for stack traces from j9 jvm to match those above for other jvms
+ 	deleteLines.addElement("Stack trace:");	
+        deleteLines.addElement("^.*java/.*\\<init\\>\\(.*\\)V");
+ 	deleteLines.addElement("^.*org/apache/derby/.*\\(.*\\).*$");	
+	// next for j9 stack trace with jarfiles test run.
+ 	deleteLines.addElement("^.*derby/.*\\<.*\\>\\(.*\\).*$");	
+ 	deleteLines.addElement("^.*derby/.*\\(.*\\).*$");	
+ 	deleteLines.addElement("^.*java/.*\\(.*\\).*$");
+	deleteLines.addElement("^\\[.*db2jcc.jar\\] [0-9].[1-9] - .*$");	
+	deleteLines.addElement("^\\[.*db2jcc_license_c.jar\\] [1-9].[0-9] - .*$");	
+
+        // Vectors for substitutions
+        Vector searchStrings = new Vector();
+        searchStrings.addElement("^WARNING: JBMS \\(instance *");
+        searchStrings.addElement("^Warning: JBMS \\(instance *");
+        searchStrings.addElement("^Transaction:\\(.*\\) *\\|");
+        searchStrings.addElement("^Read [0-9]* of [0-9]* bytes$");
+	// added for ibridge connections
+        searchStrings.addElement("jdbc:derby:informix://localhost:1527/");
+        // This was for wl output; it needs some FIXUP to work
+        // or we need to change the masters (which would be easier)
+        //searchStrings.addElement("\\[B\\@[0-9a-f]");
+        searchStrings.addElement("Directory .*connect.wombat.seg0");
+        searchStrings.addElement("^ij> Warning: Cloudscape \\(instance.*$");
+        searchStrings.addElement("^ij> WARNING: Cloudscape \\(instance.*$");
+        searchStrings.addElement("^ij(\\([0-9]\\))> WARNING: Cloudscape \\(instance.*$");
+        searchStrings.addElement("^ij(\\([0-9]\\))> Warning: Cloudscape \\(instance.*$");
+        deleteLines.addElement("^XSDB.*$");
+        // Filter for constraint names - bug 5622 - our internal constraint names are too long. To be db2 compatible, we have reworked them.
+        StringBuffer constraintNameFilter = new StringBuffer();
+        constraintNameFilter.append("SQL[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
+        searchStrings.addElement(constraintNameFilter.toString());
+        // Filter for uuids
+        StringBuffer uuidFilter = new StringBuffer();
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-");
+        uuidFilter.append("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]");
+        searchStrings.addElement(uuidFilter.toString());
+		// Filter for timestamps
+		StringBuffer	timestampFilter = new StringBuffer();
+		timestampFilter.append( "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " );
+		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
+		searchStrings.addElement( timestampFilter.toString() );
+		// 3 digit year
+		timestampFilter = new StringBuffer();
+		timestampFilter.append( "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] " );
+		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
+		searchStrings.addElement( timestampFilter.toString() );
+		// ibm13 year
+		timestampFilter = new StringBuffer();
+		timestampFilter.append( "[0-9]-[0-9][0-9]-[0-9][0-9] " );
+		timestampFilter.append( "[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]* *" );
+		searchStrings.addElement( timestampFilter.toString() );
+		searchStrings.addElement("^COM\\.jbms\\..*\\|");
+		// Filter remove transaction id's from deadlock messages
+		searchStrings.addElement("^  Waiting XID : {.*}");
+		searchStrings.addElement("^  Granted XID : .*$");
+		searchStrings.addElement("^The selected victim is XID : .*");
+		// Filters for build numbers
+		searchStrings.addElement("(Cloudscape - DBMS:[A-Za-z]* - [0-9]\\.[0-9]\\.[0-9] - )\\(([0-9]*)\\)");
+		searchStrings.addElement("(beta - )\\(([0-9]*)\\)");
+		searchStrings.addElement("Level2CostEstimateImpl: .*");
+		// Filter for xa tests for the numbers representing the db name (it can change)
+		searchStrings.addElement("^Transaction ([0-9])* : \\(([0-9]*)\\,([0-9a-f]*)\\,([0-9a-f]*)\\)");
+		// Filter for optimizer number for zindexesLevel1 test (due to a change in display width for the test)
+		searchStrings.addElement("^Modifying access paths using optimizer .[0-9]*");
+		searchStrings.addElement("CDWS[0-9]*");
+		searchStrings.addElement("IXWS[0-9]*");
+		searchStrings.addElement("^.*COM.ibm.db2.jdbc.DB2Exception: \\[IBM\\]\\[CLI Driver\\] SQL1013N  The database alias name or database name \".*\\_M\".*");
+		// for j9, to eliminate intermittent failures due to this problem in j9:
+		searchStrings.addElement("FAILED STACK MAP");
+		if (isJCC)
+		{
+			searchStrings.addElement("[ ]*\\|");
+			searchStrings.addElement("^--*");
+		}
+
+		//Filter to suppress absould paths in error message for roll forward recovery tests 
+		searchStrings.addElement("Directory.*.wombat.already.exists");
+
+        Vector subStrings = new Vector();
+        subStrings.addElement("");
+        subStrings.addElement("");
+        subStrings.addElement("Transaction:(XXX)|");
+        subStrings.addElement("Read ... bytes");
+		// for iBridge connections
+        subStrings.addElement("cloudscape:derby:");
+        //subStrings.addElement("Bx"); // originally for 
+        subStrings.addElement("Directory DBLOCATION/seg0");
+        subStrings.addElement("ij> ");
+        subStrings.addElement("ij> ");
+        subStrings.addElement("ij$1> ");
+        subStrings.addElement("ij$1> ");
+        subStrings.addElement("xxxxGENERATED-IDxxxx");
+        subStrings.addElement("xxxxFILTERED-UUIDxxxx");
+        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
+        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
+        subStrings.addElement("xxxxxxFILTERED-TIMESTAMPxxxxx");
+        subStrings.addElement("Transaction:(XXX)|");
+		// remove transaction id's from deadlock messages
+		subStrings.addElement("  Waiting XID : {WWW,QQQ}");
+		subStrings.addElement("  Granted XID : {GGG.QQQ}...");
+		subStrings.addElement("The selected victim is XID : VVV");
+		// sub build numbers
+		subStrings.addElement("$1(xxXXxxFILTERED-BUILD-NUMBERxxXXxx)");
+		subStrings.addElement("$1(xxXXxxFILTERED-BUILD-NUMBERxxXXxx)");
+		subStrings.addElement("Level2CostEstimateImpl: xxXXxxFILTERED-INFORMATIONxxXXxx");
+		// sub for db name in xa tests (it can change)
+		subStrings.addElement("Transaction $1 : ($2,FILTERED,FILTERED)");
+		// sub for optimizer number for zindexesLevel1 test
+		subStrings.addElement("Modifying access paths using optimizer FILTERED_NUMBER");
+		subStrings.addElement("CDWSno");
+		subStrings.addElement("IXWSno");
+		subStrings.addElement("COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1013N  The database alias name or database name xxxFILTEREDMIRRORDBxxx could not be found.  SQLSTATE=42705");
+		// for j9, to eliminate intermittent failures due to this problem in j9:
+		subStrings.addElement("");
+		// for JCC replace multiple blanks with one blank to handle differences
+		// in display width
+		if (isJCC)
+		{
+			subStrings.addElement(" |");
+			subStrings.addElement("-----");
+		}
+		subStrings.addElement("Directory DBLOCATION/wombat already exists");
+		doWork(srcFile, dstFile, null, deleteLines, searchStrings, subStrings, isSed);
+
+	}
+	// This just does JCC changes on the output master file
+    public void execJCC(InputStream is, File dstFile)
+        throws IOException
+    {
+        // Vector for storing lines to be deleted
+        Vector deleteLines = new Vector();
+
+        // Vectors for substitutions
+        Vector searchStrings = new Vector();
+		searchStrings.addElement("^true[ ]*\\|");
+		searchStrings.addElement("^false[ ]*\\|");
+		searchStrings.addElement("\\|true[ ]*\\|");
+		searchStrings.addElement("\\|false[ ]*\\|");
+		searchStrings.addElement("[ ]*\\|");
+		searchStrings.addElement("^--*");
+
+        Vector subStrings = new Vector();
+		// true and false show up as 1 and 0 in JCC. 
+		//because they have no boolean support
+		subStrings.addElement("1 |");
+		subStrings.addElement("0 |");
+		subStrings.addElement("|1 |");
+		subStrings.addElement("|0 |");
+		subStrings.addElement(" |");
+		subStrings.addElement("-----");
+
+		doWork(null, dstFile, is, deleteLines, searchStrings, subStrings, null);
+
+	}
+	// for rmi, there's a warning about the db, but it's really ok.
+    public void rmiexec(File srcFile, File dstFile, InputStream isSed)
+        throws IOException
+    {
+        // Vector for storing lines to be deleted
+        Vector deleteLines = new Vector();
+		// for Rmi:
+	 	deleteLines.addElement("^.*WARNING: Wierd RMI server URL:.*$");	
+	 	deleteLines.addElement("^.*WARNING 01J01: Database 'wombat' not created, connection made to existing database instead.");	
+
+        Vector searchStrings = new Vector();
+		//searchStrings.addElement("");
+        Vector subStrings = new Vector();
+		//subStrings.addElement("");
+
+		doWork(srcFile, dstFile, null, deleteLines, searchStrings, subStrings, isSed);
+	}
+
+	private void doWork(File srcFile, File dstFile, InputStream is, Vector deleteLines, 
+		Vector searchStrings, Vector subStrings, InputStream isSed)
+        throws IOException
+	{
+		
+        boolean lineDeleted = false;
+        PatternMatcher matcher;
+        Perl5Compiler pcompiler;
+        PatternMatcherInput input;
+        BufferedReader inFile;
+        PrintWriter outFile;
+        String result = "";
+        String regex;
+        Vector delPatternVector = new Vector();
+        Vector subPatternVector = new Vector();
+
+	// ---------------------------------
+        // Try loading the sed properties if they exist (see jdbc_sed.properties as an example)
+        if ( isSed != null )
+        {
+	    Properties sedp = new Properties();
+		
+            sedp.load(isSed);
+	    for (Enumeration e = sedp.propertyNames(); e.hasMoreElements(); )
+		{
+		    String key = (String)e.nextElement();
+		    if (key.equals("substitute"))
+		    {
+			String value = sedp.getProperty(key);
+			// value string contains a comma separated list of patterns
+			StringTokenizer st = new StringTokenizer(value,",");
+			String patternName = ""; 
+			String patName = ""; 
+			String subName = ""; 
+			while (st.hasMoreTokens())
+			{
+			    patternName = st.nextToken();
+			    // pattern;substitute
+			    StringTokenizer st2 = new StringTokenizer(patternName,";");
+			    patName = st2.nextToken();
+			    subName = st2.nextToken();
+			    if (!patName.equals("") && !subName.equals(""))
+			    {
+				searchStrings.addElement(patName);
+				subStrings.addElement(subName);
+			    }
+//System.out.println("pattern = " + patName + " substitute " + subName);
+			}
+		    }
+		    else if (key.equals("delete"))
+		    {
+			String value = sedp.getProperty(key);
+			// value string contains a comma separated list of patterns
+			StringTokenizer st = new StringTokenizer(value,",");
+			String patternName = ""; 
+			while (st.hasMoreTokens())
+			{
+			    patternName = st.nextToken();
+			    deleteLines.addElement(patternName);
+			}
+		    }
+                }
+        }
+	// ---------------------------------
+
+        //Create Perl5Compiler and Perl5Matcher
+        pcompiler = new Perl5Compiler();
+        matcher = new Perl5Matcher();
+
+        // Define the input and output files based on args
+		if (is == null)
+        	inFile = new BufferedReader(new FileReader(srcFile));
+		else
+			inFile = new BufferedReader(new InputStreamReader(is));
+        outFile = new PrintWriter
+            ( new BufferedWriter(new FileWriter(dstFile), 10000), true );
+
+        // Attempt to compile the patterns for deletes
+        for (int i = 0; i < deleteLines.size(); i++)
+        {
+            try
+            {
+                regex = (String)deleteLines.elementAt(i);
+                //System.out.println("The pattern: " + regex);
+                Pattern pattern = pcompiler.compile(regex);
+                if (pattern == null)
+                    System.out.println("pattern is null");
+                delPatternVector.addElement(pattern);
+            }
+            catch(MalformedPatternException e)
+            {
+                System.out.println("Bad pattern.");
+                System.out.println(e.getMessage());
+            }
+        }
+
+        // Attempt to compile the patterns for substitutes
+        for (int i = 0; i < searchStrings.size(); i++)
+        {
+            try
+            {
+                regex = (String)searchStrings.elementAt(i);
+                //System.out.println("The pattern: " + regex);
+                Pattern pattern = pcompiler.compile(regex);
+                if (pattern == null)
+                    System.out.println("pattern is null");
+                subPatternVector.addElement(pattern);
+            }
+            catch(MalformedPatternException e)
+            {
+                System.out.println("Bad pattern.");
+                System.out.println(e.getMessage());
+            }
+        }
+
+        String str;
+        int j;
+        int lineCount = 0;
+        // Read the input file
+        while ( (str = inFile.readLine()) != null )
+        {
+            lineCount++;
+            
+            //System.out.println("***Line no: " + lineCount);
+            //System.out.println("***Line is: " + str);
+            lineDeleted = false;
+
+            // First delete any nulls (Cafe 1.8 leaves nulls)
+            if (str.length() == 1)
+            {
+                if (str.charAt(0) == (char) 0)
+                {
+                    // Skip this line, don't write it
+                    //System.out.println("Skip this line...");
+                    lineDeleted = true;
+                }
+            }
+
+            // Determine if this line should be deleted for delete pattern match
+            if ( lineDeleted == false )
+            {
+                for (j = 0; j < delPatternVector.size(); j++)
+                {
+                    if ( matcher.contains( str, (Pattern)delPatternVector.elementAt(j) ) )
+                    {
+                        //System.out.println("***Match found to delete line***");
+                        String tmpp = ((Pattern)delPatternVector.elementAt(j)).getPattern();
+                        //System.out.println("***Pattern is: " + tmpp);
+
+                        // In this case we are removing the line, so don't write it out
+                        lineDeleted = true;
+                        break;
+                    }
+                }
+            }
+
+            // Determine if any substitutions are needed
+            if (lineDeleted == false)
+            {
+		Substitution substitution;
+		StringSubstitution strsub = new StringSubstitution("");
+		Perl5Substitution perlsub = new Perl5Substitution("");
+                boolean subDone = false;
+                for (j = 0; j < subPatternVector.size(); j++)
+                {
+                    input = new PatternMatcherInput(str);
+                    Pattern patt = (Pattern)subPatternVector.elementAt(j);
+                    String pstr = patt.getPattern();
+                    //System.out.println("Pattern string is " + pstr);
+                    String sub = (String)subStrings.elementAt(j);
+		    if (sub.indexOf("$") > 0)
+		    {
+                        perlsub.setSubstitution(sub);
+                        substitution = (Substitution)perlsub;
+                    } else {
+                        strsub.setSubstitution(sub);
+			substitution = (Substitution)strsub;
+		    }
+                    //System.out.println("Substitute str = " + sub);
+                    if ( matcher.contains( input, patt ) )
+                    {
+                        MatchResult mr = matcher.getMatch();
+                        //System.out.println("***Match found for substitute***");
+                        // In this case we do a substitute
+                        result = Util.substitute(matcher, patt, substitution, str,
+                            Util.SUBSTITUTE_ALL);
+                        //System.out.println("New string: " + result);
+                        //outFile.println(result);
+                        str = result;
+                        subDone = true;
+                    }
+                }
+                if (subDone)
+                {
+                    //System.out.println("write the subbed line");
+                    outFile.println(result);
+                }
+                else
+                {
+                    //System.out.println("Write the str: " + str);
+                    outFile.println(str);
+                    outFile.flush();
+                }
+            }// end if
+        } // end while
+        inFile.close();
+        outFile.flush();
+        outFile.close();
+    }// end exec
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SimpleDiff.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,500 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+//SimpleDiff.java
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.IOException;
+import java.io.BufferedInputStream;
+import java.util.Vector;
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.BufferedReader;
+import java.io.FileReader;
+
+public class SimpleDiff
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    PrintWriter pw;
+
+    boolean debugOn = Boolean.getBoolean("simplediff.debug");
+    int debugLevel = 1;
+
+    boolean diffsFound = true;
+
+    int lookAhead = 20;
+
+    public void debug(int level, String msg)
+    {
+        if (debugLevel >= level)
+        {
+            debug(msg);
+        }
+    }
+    public void debug(String msg)
+    {
+        if (debugOn)
+        {
+            System.out.println("DEBUG: " + msg);
+        }
+    }
+
+    int lineCount(String file) throws IOException
+    {
+        BufferedReader input = new BufferedReader(new FileReader(file));
+        int count = 0;
+        String aLine = input.readLine();
+        while (aLine != null)
+        {
+            count++;
+            aLine = input.readLine();
+        }
+        input.close();
+        return count;
+    }
+
+
+    public String[] readFile(BufferedReader input) throws IOException
+    {
+
+        Vector vec = new Vector();
+
+        String aLine = "";
+        //int count = 0;
+        aLine = input.readLine();
+        while (aLine != null)
+        {
+            vec.addElement(aLine);
+            //count++;
+            aLine = input.readLine();
+        }
+        input.close();
+
+        String rV[] = new String[vec.size()];
+        //debug(2, ""+count + " lines in " + filename);
+        debug(2, ""+vec.size() + " lines in input");
+        vec.copyInto(rV);
+
+        return rV;
+    }
+
+    public void printFile(String file[])
+    {
+        for (int i = 0; i < file.length; i++)
+        {
+            pw.println(i + ": " + file[i]);
+            System.out.println(i + ": " + file[i]);
+        }
+    }
+
+    public static String usage = "java SimpleDiff <file1> <file2>";
+
+    /**
+        @param filename Name of file to be read
+        @return String array of file contents
+        @exception IOException thrown by underlying calls
+            to the file system
+    */
+
+    public String[] diffFiles(  DiffBuffer file1,
+                                DiffBuffer file2)
+                                throws IOException
+    {
+
+        int currentLine1 = 0;
+        int currentLine2 = 0;
+        Vector returnVec = new Vector();
+
+        while ( file1.isValidOffset(currentLine1) &&
+                file2.isValidOffset(currentLine2))
+        {
+            String f1 = file1.lineAt(currentLine1);
+            String f2 = file2.lineAt(currentLine2);
+
+            if (f1.equals(f2))
+            {
+                debug(1, currentLine1 + ": match");
+                currentLine1++;
+                currentLine2++;
+                file1.setLowWater(currentLine1);
+                file2.setLowWater(currentLine2);
+            }
+            else
+            {
+                boolean foundMatch = false;
+                int checkLine2 = currentLine2;
+                int checkCount = 1;
+//                while ( (currentLine2 + checkCount) < (file2Length - 1) &&
+                while ( file2.isValidOffset(currentLine2 + checkCount) &&
+                        checkCount < lookAhead)
+                {
+                    debug(1, "currentLine1 " + currentLine1 + "  currentLine2 " + (currentLine2 +checkCount));
+                    debug(1, "about to reference file2[" + (currentLine2 + checkCount) + "]");
+                    f2 = file2.lineAt(currentLine2 + checkCount);
+                    debug(2, "did");
+                    if (f1.equals(f2))
+                    {
+                        foundMatch = true;
+                        if (checkCount > 1)
+                        {
+                            returnVec.addElement(currentLine1 + "a" + (currentLine2 + 1) + "," + (currentLine2 + checkCount));
+                        }
+                        else
+                        {
+                            returnVec.addElement(currentLine1 + "a" + (currentLine2 + 1));
+                        }
+
+                        for (int j = 0; j < checkCount; j++)
+                        {
+                            returnVec.addElement("> " +
+                                  file2.lineAt(currentLine2 + j) );
+                        }
+                        currentLine2 = currentLine2 + checkCount;
+                        checkCount = 0;
+
+						// This break statement was commented out, which
+						// caused problems in the diff output.  I don't
+						// know why it was commented out, and uncommenting
+						// it fixed the problem.
+						//
+						//			-	Jeff Lichtman
+						//				March 24, 1999
+                        break;
+                    }
+                    checkCount ++;
+                }
+                if (!foundMatch && file2.isValidOffset(currentLine2))
+                {
+                    int checkLine1 = currentLine1;
+                    checkCount = 1;
+                    f2 = file2.lineAt(currentLine2);
+                    while ( file1.isValidOffset(currentLine1 + checkCount) &&
+                            checkCount < lookAhead)
+                    {
+                        debug(1, "currentLine2 " + currentLine2 + "  currentLine1 " + (currentLine1 + checkCount));
+                        f1 = file1.lineAt(currentLine1 + checkCount);
+                        if ( f2.equals(f1))
+                        {
+                            foundMatch = true;
+                            if (checkCount > 1)
+                            {
+                                returnVec.addElement((currentLine1 + 1) + "," + (currentLine1 + checkCount) + "d" + currentLine2);
+                            }
+                            else
+                            {
+                                returnVec.addElement((currentLine1 + 1) + "d" + currentLine2);
+                            }
+
+                            for (int j = 0; j < checkCount; j++)
+                            {
+                                returnVec.addElement("< " +
+                                      file1.lineAt(currentLine1 + j) );
+
+                            }
+                            currentLine1 = currentLine1 + checkCount;
+                            checkCount = 0;
+                            debug(1, "continuing");
+                            break;
+                        }
+                        checkCount ++;
+                    }
+
+                }
+                if (!foundMatch)
+                {
+                    debug(1, currentLine1 + ": NOMATCH");
+                    returnVec.addElement((currentLine1 + 1) +" del");// + (currentLine2 + 1));
+                    returnVec.addElement("< " + file1.lineAt(currentLine1));
+                    currentLine1++;
+                }
+                else
+                {
+                    currentLine1++;
+                    currentLine2++;
+                    file1.setLowWater(currentLine1);
+                    file2.setLowWater(currentLine2);
+                }
+            }
+        }
+
+        if (file1.isValidOffset(currentLine1))
+        {
+            returnVec.addElement((currentLine2) + " del");
+            for (int i = currentLine1; file1.isValidOffset(i); i++)
+            {
+                returnVec.addElement("< " + file1.lineAt(i));
+            }
+        }
+        if (file2.isValidOffset(currentLine2))
+        {
+            returnVec.addElement((currentLine1) + " add");
+            for (int i = currentLine2; file2.isValidOffset(i); i++)
+            {
+                returnVec.addElement("> " + file2.lineAt(i));
+            }
+        }
+
+        file1.close();
+        file2.close();
+
+        if (returnVec.size() == 0)
+        {
+            return null;
+        }
+
+
+        String [] returnArray = new String[returnVec.size()];
+        returnVec.copyInto(returnArray);
+        return returnArray;
+
+
+    }
+
+    private void reportMemory()
+    {
+        reportMemory(null);
+    }
+
+    private void reportMemory(String header)
+    {
+        if (header != null)
+        {
+            System.out.println(header);
+        }
+        long free = Runtime.getRuntime().freeMemory();
+        long total = Runtime.getRuntime().totalMemory();
+
+        System.out.println("total:         " + total );
+        System.out.println("free:          " + free );
+        System.out.println("used:          " + (total - free));
+        System.gc();
+        System.out.println("used: <postgc> " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
+        System.out.println("  ");
+    }
+
+    public boolean doWork(BufferedReader in1, BufferedReader in2, PrintWriter localPW) throws IOException
+    {
+        this.pw=(localPW==null?new PrintWriter(System.out):localPW);
+        try
+        {
+            DiffBuffer db1 = new DiffBuffer(in1, "1");
+            DiffBuffer db2 = new DiffBuffer(in2, "2");
+
+            String diffs[] = diffFiles(db1, db2);
+
+            if (diffs == null)
+            {
+                debug(1, "no diff");
+                return false;
+            }
+            else
+            {
+                for (int i = 0; i < diffs.length; i++)
+                {
+                    this.pw.println(diffs[i]);
+                    System.out.println(diffs[i]);
+                }
+            }
+
+        }
+        catch (IOException ioe)
+        {
+            System.err.println("IOException comparing <" + in1 +
+                "> and <" + in2 + ">");
+            System.err.println(ioe);
+
+            this.pw.println("IOException comparing <" + in1 +
+                "> and <" + in2 + ">");
+            this.pw.println(ioe);
+        }
+        return true;
+    }
+    public static void main(String args[]) throws IOException
+    {
+
+        if (args.length < 2)
+        {
+            System.err.println("Invalid number of arguments");
+            System.err.println("Usage: " + usage);
+            System.exit(1);
+        }
+
+        SimpleDiff me = new SimpleDiff();
+
+        try
+        {
+            BufferedReader br1 = new BufferedReader(new FileReader(args[0]));
+            BufferedReader br2 = new BufferedReader(new FileReader(args[1]));
+            me.doWork(br1, br2, null);
+        }
+        catch (IOException ioe)
+        {
+            System.out.println("IOExeption: " + ioe);
+        }
+    }
+
+    public void pause()
+    {
+        BufferedInputStream bis = new BufferedInputStream(System.in);
+        try
+        {
+            bis.read();
+        }
+        catch (IOException ioe)
+        {
+            pw.println("Error trying to pause...");
+            System.out.println("Error trying to pause...");
+        }
+    }
+
+    class DiffBuffer extends Vector
+    {
+
+
+        public boolean atEOF()
+        {
+            return atEnd;
+        }
+
+        public DiffBuffer(BufferedReader rb)
+        {
+            this(rb, "");
+        }
+
+        public DiffBuffer(BufferedReader rb, String name)
+        {
+            this (rb, name, 1024);
+        }
+
+        public DiffBuffer(BufferedReader rb, String name, int size)
+        {
+            super(size);
+            readBuffer = rb;
+            currentLowWater = 0;
+            currentHighWater = -1;
+            oldLow = 0;
+            myName = name;
+            atEnd = false;
+        }
+
+        public boolean isValidOffset(int lineNumber) throws IOException
+        {
+            if (atEnd)
+            {
+                return lineNumber <= actualEndOfFile;
+            }
+
+            if (lineAt(lineNumber) == null)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        public String lineAt(int offset) throws IOException
+        {
+/*
+System.out.println("offset: " + offset);
+System.out.println("currentHighWater: " + currentHighWater);
+System.out.println("");
+*/
+            if (offset > currentHighWater)
+            {
+                for (int i = 0; i < offset - currentHighWater; i++)
+                {
+                    String aLine = readBuffer.readLine();
+                    addElement(aLine);
+/*
+System.out.println("aLine: " + aLine);
+*/
+                    if (aLine == null)
+                    {
+                        if (!atEnd)
+                        {
+                            //first time we've tried to read past the EOF
+                            actualEndOfFile = currentHighWater + i;
+//System.out.println(myName + ": length " + actualEndOfFile);
+                            atEnd = true;
+                        }
+                    }
+                }
+                currentHighWater = offset;
+            }
+            return (String) elementAt(offset);
+        }
+
+
+        public final String EMPTY = null;
+        protected BufferedReader readBuffer;
+        protected int currentLowWater;
+        protected int currentHighWater;
+        private int oldLow;
+        protected String myName;
+        protected boolean atEnd;
+        protected int actualEndOfFile;
+        /**
+            Useful to keep memory requirements low
+         */
+        public void setLowWater(int newLow)
+        {
+
+            for (int i = oldLow; i < newLow; i++)
+            {
+                setElementAt(EMPTY, i);
+            }
+            currentLowWater = newLow;
+            oldLow = newLow -1;
+        }
+
+
+    public void iterate(boolean verbose)
+    {
+        int nulls = 0;
+        int nonnulls = 0;
+
+
+        for (int i = 0; i < this.size(); i++)
+        {
+            if (elementAt(i) == null)
+            {
+                if (verbose)
+                {
+                    System.out.print("[" + i + "] ");
+                    System.out.println("null");
+                }
+                nulls++;
+
+            }
+            else
+            {
+                if (verbose)
+                {
+                    System.out.print("[" + i + "] ");
+                    System.out.println("NotNULL");
+                }
+                nonnulls++;
+            }
+        }
+        System.out.println("nulls: " + nulls + "  nonNull: " + nonnulls);
+    }
+
+    public void close() throws IOException
+    {
+//		System.out.println("Closing BufferedReader");
+        readBuffer.close();
+        readBuffer = null;
+    }
+    }
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SkipTest.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Properties;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+
+/**
+  Determine if the named test is one which should not be
+  run in a particular framework (defined by the propFileName).
+  For instance, there could be a nowl.properties for a list of
+  tests which do not currently work under the WebLogic framework.
+  */
+public class SkipTest
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+ 
+    private SkipTest()
+    {
+    }
+
+    public static boolean skipIt(String listFileName, String testName)
+        throws Exception
+    {
+        boolean answer = false;
+	    InputStream is =
+		RunTest.loadTestResource("suites" + '/' + listFileName);
+        if (is == null)
+        {
+            System.out.println("File not found: " + listFileName);
+            answer = false;
+            return answer;
+        }
+        
+        // Create a BufferedReader to read the list of tests to skip
+        BufferedReader listFile = new BufferedReader(new InputStreamReader(is));
+        String str = "";
+        // Read the list of tests to skip, compare to testName
+        while ( (str = listFile.readLine()) != null )
+        {
+	       if ( (testName.equals(str)) )
+	            answer = true;
+	    }
+        return answer;
+    }
+}
+		
+			

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SpecialFlags.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,135 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.StringTokenizer;
+
+/**
+    Parse testJavaFlags for RunTest
+    These are special properties that might be
+    set for a suite or test, and they can be
+    either ij properties or server properties
+    which is why they need to be parsed
+*/
+
+public class SpecialFlags
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    public static Properties getSpecialProperties(Properties suiteProperties)
+    {
+        // Save any special properties which can be used by a
+        // suite for ij or server properties (not in the usual list)
+
+        // Define the "usual" properties to exclude from special props
+        // FIXME: These should be in a file or something to make it
+        // easier to add to this
+        String[] excludeList = new String[32];
+        excludeList[0] = "jvm";
+        excludeList[1] = "classpath";
+        excludeList[2] = "classpathServer";
+        excludeList[3] = "framework";
+        excludeList[4] = "usesystem";
+        excludeList[5] = "useprocess";
+        excludeList[6] = "outputdir";
+        excludeList[7] = "replication";
+        excludeList[8] = "keepfiles";
+        excludeList[9] = "mtestdir";
+        excludeList[10] = "suites";
+        excludeList[11] = "searchCP";
+        excludeList[12] = "useoutput";
+        excludeList[13] = "suitename";
+        excludeList[14] = "cleanfiles";
+        excludeList[15] = "systemdiff";
+        excludeList[16] = "jvmflags";
+        excludeList[17] = "testJavaFlags";
+        excludeList[18] = "ij.defaultResourcePackage";
+        excludeList[19] = "outcopy";
+        excludeList[20] = "verbose";
+        excludeList[21] = "canondir";
+        excludeList[22] = "timeout";
+        excludeList[23] = "encryption";
+        excludeList[24] = "javaCmd";
+        excludeList[25] = "topreportdir";
+        excludeList[26] = "jarfile";
+        excludeList[27] = "upgradetest";
+        excludeList[28] = "jdk12test";
+        excludeList[29] = "jdk12exttest";
+        excludeList[30] = "skipsed";
+		excludeList[31] = "sourceEnv";
+
+        Properties p = new Properties();
+
+        for (Enumeration e = suiteProperties.propertyNames(); e.hasMoreElements();)
+        {
+            boolean exclude = false;
+            String key = (String)e.nextElement();
+            for ( int i = 0; i < excludeList.length; i++ )
+            {
+                if ( excludeList[i].equals(key) )
+                {
+                    exclude = true;
+                    break;
+                }
+            }
+            if ( exclude == false )
+            {
+                String value = suiteProperties.getProperty(key);
+                p.put(key,value);
+            }
+        }
+        return p;
+    }
+
+	public static void parse(String flags,
+	    Properties ijProps, Properties srvProps)
+	{
+	    // flags is a list of key-value pairs separated by a ^;
+	    // to be parsed and added to either ijProps or srvProps
+	    StringTokenizer st = new StringTokenizer(flags, "^");
+	    String str = "";
+	    String key = "";
+	    String value = "";
+	    while (st.hasMoreTokens())
+	    {
+	        str = st.nextToken();
+            // System.out.println("TOKEN:"+str);
+	        key = str.substring( 0, str.indexOf("=") );
+	        value = str.substring( (str.indexOf("=") + 1) );
+	        if ( str.startsWith("derby") )
+	        {
+	            // This is a server property
+	            // Note that some can have a list of values
+	            if ( key.equals("derby.debug.true") ||
+	                 key.equals("derby.infolog.streams") )
+	            {
+	                String currval = srvProps.getProperty(key);
+	                if ( (currval != null) && (currval.length()>0) )
+	                {
+	                    value = value + "," + currval;
+	                }
+	            }
+	            srvProps.put(key,value);
+	        }
+	        else
+	            // This is an ij property
+	            ijProps.put(key,value);
+        }
+	}
+
+	// no instances permitted.
+	private SpecialFlags(){}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/SysInfoLog.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,125 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/***
+ * SysInfoLog
+ * Purpose: For a Suite or Test run, write out the
+ * sysinfo to the suite or test output file
+ *
+ ***/
+
+import java.io.*;
+import java.util.Vector;
+
+public class SysInfoLog
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    public SysInfoLog()
+    {
+    }
+
+    // Write out sysinfo for a suite or test
+    public void exec(String jvmName, String javaCmd, String classpath,
+        String framework, PrintWriter pw, boolean useprocess)
+        throws Exception
+	{
+        if ( useprocess == true )
+        {
+            // Create a process to run sysinfo
+    		Process pr = null;
+			jvm javavm = null; // to quiet the compiler
+    		try
+    		{
+                // Create the command line
+                //System.out.println("jvmName: " + jvmName);
+                if ( (jvmName == null) || (jvmName.length()==0) )
+                    jvmName = "jdk13";
+                else if (jvmName.startsWith("jdk13"))
+                    jvmName = "jdk31";
+
+				javavm = jvm.getJvm(jvmName);
+                if (javaCmd != null)
+                    javavm.setJavaCmd(javaCmd);
+				
+                if (javavm == null) System.out.println("WHOA, javavm is NULL");
+                if (javavm == null) pw.println("WHOA, javavm is NULL");
+
+                if ( (classpath != null) && (classpath.length()>0) )
+                {
+                    javavm.setClasspath(classpath);
+                }
+
+				Vector v = javavm.getCommandLine();
+                v.addElement("org.apache.derby.tools.sysinfo");
+                // Now convert the vector into a string array
+                String[] sCmd = new String[v.size()];
+                for (int i = 0; i < v.size(); i++)
+                {
+                    sCmd[i] = (String)v.elementAt(i);
+                    //System.out.println(sCmd[i]);
+                }
+                
+                pr = Runtime.getRuntime().exec(sCmd);
+
+                // We need the process inputstream to capture into the output file
+                BackgroundStreamDrainer stdout =
+                    new BackgroundStreamDrainer(pr.getInputStream(), null);
+                BackgroundStreamDrainer stderr =
+                    new BackgroundStreamDrainer(pr.getErrorStream(), null);
+
+                pr.waitFor();
+                String result = HandleResult.handleResult(pr.exitValue(),
+                    stdout.getData(), stderr.getData(), pw);
+                pw.flush();
+
+                if ( (framework != null) && (framework.length()>0) )
+                {
+                    pw.println("Framework: " + framework);
+                }
+
+                pr.destroy();
+                pr = null;
+            }
+            catch(Throwable t)
+            {
+                if (javavm == null) System.out.println("WHOA, javavm is NULL");
+                if (javavm == null) pw.println("WHOA, javavm is NULL");
+                System.out.println("Process exception: " + t);
+                pw.println("Process exception: " + t);
+                t.printStackTrace(pw);
+                if (pr != null)
+                {
+                    pr.destroy();
+                    pr = null;
+                }
+            }
+        }
+        else
+        {
+            // For platforms where process exec fails or hangs
+            // useprocess=false and attempt to get some info
+            /*
+            pw.println(org.apache.derby.impl.tools.sysinfo.Main.javaSep);
+            org.apache.derby.impl.tools.sysinfo.Main.reportCloudscape(pw);
+            pw.println(org.apache.derby.impl.tools.sysinfo.Main.jbmsSep);
+            org.apache.derby.impl.tools.sysinfo.Main.reportCloudscape(pw);
+            pw.println(org.apache.derby.impl.tools.sysinfo.Main.licSep);
+            org.apache.derby.impl.tools.sysinfo.Main.printLicenseFile(pw);
+            */
+        }
+    }
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/TimedProcess.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,103 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+/**
+ * This class is a wrapper of Process to provide a waitFor() method
+ * that forcibly terminates the process if it does not
+ * complete within the specified time.
+ *
+ * @author Phil Lopez
+ * 
+ */
+public class TimedProcess
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+  private Process process;
+
+  public TimedProcess(Process process)
+  {
+    this.process = process;
+  }
+
+  public int waitFor(int sec)
+  {
+    int exitValue = -1;
+
+    // Create a thread to wait for the process to die
+    WaitForProcess t = new WaitForProcess(process);
+    t.start();
+    
+    // Give the process sec seconds to terminate
+    try
+    {
+      t.join(sec * 1000);
+
+      // Otherwise, interrupt the thread...
+      if (t.isAlive())
+      {
+        t.interrupt();
+        
+        System.err.println("Server Process did not complete in time. Destroying...");
+        // ...and destroy the process with gusto
+        process.destroy();
+      }
+      else
+      {
+        // process shut down, so it is right to get the exit value from it
+        exitValue = t.getProcessExitValue();
+      }
+    }
+    catch (InterruptedException e)
+    {
+      e.printStackTrace();
+    }
+  
+    return exitValue;
+  }
+} // public class TimedProcess
+
+
+class WaitForProcess
+  extends Thread
+{
+  private Process process;
+  private int processExitValue;
+  
+  public WaitForProcess(Process process)
+  {
+    this.process = process;
+  }
+
+  public int getProcessExitValue()
+  {
+    return processExitValue;
+  }
+
+  public void run()
+  {
+    // Our whole goal in life here is to waitFor() the process.
+    // However, we're actually going to catch the InterruptedException for it!
+    try
+    {
+      processExitValue = process.waitFor();
+    }
+    catch (InterruptedException e)
+    {
+      // Don't do anything here; the thread will die of natural causes
+    }
+  }
+} // class WaitForProcess
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/UnJar.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,95 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.io.*;
+
+/**
+  The upgrade tests use jar files containing older version
+  databases. These need to be "unjarred" in order to do the tests.
+  */
+public class UnJar
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+ 
+    public UnJar()
+    {
+    }
+    
+    public static void main(String args[]) throws Exception
+    {
+        UnJar uj = new UnJar();
+        uj.unjar(args[0], null, true);
+    }
+    
+    public static void unjar(String jarname, String outputdir, boolean useprocess)
+        throws ClassNotFoundException, IOException
+    {
+        if (outputdir == null)
+            outputdir = System.getProperty("user.dir");
+        
+	    InputStream is =
+            RunTest.loadTestResource("upgrade" + '/' + jarname);
+        if (is == null)
+        {
+            System.out.println("File not found: " + jarname);
+            System.exit(1);
+        }
+        
+        // Copy to the current directory in order to unjar it
+        //System.out.println("Copy the jarfile to: " + outputdir);
+        File jarFile = new File((new File(outputdir, jarname)).getCanonicalPath());
+        //System.out.println("jarFile: " + jarFile.getPath());
+    	FileOutputStream fos = new FileOutputStream(jarFile);
+        byte[] data = new byte[1024];
+        int len;
+    	while ((len = is.read(data)) != -1)
+    	{
+    	    fos.write(data, 0, len);
+    	}
+    	fos.close();
+        
+        // Now unjar the file
+        String jarCmd = "jar xf " + jarFile.getPath();
+        if ( useprocess == true )
+        {
+            // Now execute the jar command
+            Process pr = null;
+        	try
+        	{
+        		//System.out.println("Use process to execute: " + jarCmd);
+                pr = Runtime.getRuntime().exec(jarCmd);
+                
+                pr.waitFor();
+                //System.out.println("Process done.");
+                pr.destroy();
+            }
+            catch(Throwable t)
+            {
+                System.out.println("Process exception: " + t.getMessage());
+                if (pr != null)
+                {
+                    pr.destroy();
+                    pr = null;
+                }
+            }
+        }
+        else
+        {
+            System.out.println("Jar not implemented yet with useprocess=false");
+        }
+    }
+}
+		
+			

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="FTharness" basedir="../../../../../../.." >
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="${basedir}/tools/ant/properties" />
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <property file="${properties.dir}/parser.properties"/>
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/harness"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="FTharness" depends="init,compile,copyfiles"/>
+
+  <target name="init">
+    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/harness"/>
+  </target>
+
+  <target name="compile">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement location="${oro}"/>
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+        <include name="${this.dir}/*.java"/> 
+    </javac>
+  </target>
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/harness">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness" 
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/harness/copyfiles.ant"/> 
+    </copy>
+  </target> 
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+needPosition.properties
+testtypes.properties

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/currentjvm.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,102 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for whatever java is in the current classpath
+
+  @author ames
+ */
+
+public class currentjvm extends jvm { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public String getName() {return "currentjvm";}
+    public currentjvm(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public currentjvm(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public currentjvm(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public currentjvm() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+    }
+
+    public void appendOtherFlags(StringBuffer sb)
+    {
+        if (noasyncgc) sb.append(" -noasyncgc");
+        if (verbosegc) sb.append(" -verbosegc");
+        if (noclassgc) sb.append(" -noclassgc");
+        if (ss>=0) {
+          sb.append(" -ss");
+          sb.append(ss);
+        }
+        if (oss>=0) {
+          sb.append(" -oss");
+          sb.append(oss);
+        }
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) {
+          sb.append(" -prof:");
+          sb.append(prof);
+        }
+        if (verify) sb.append(" -verify");
+        if (noverify) sb.append(" -noverify");
+        if (nojit) sb.append(" -nojit");
+        if (D!=null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+
+	public String getDintro() { return "-D"; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/dbcleanup.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,373 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.io.*;
+import java.util.*;
+import java.lang.Long;
+import java.util.Vector;
+
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/*
+ **
+ ** dbcleanup
+ **
+ ** Preliminary version:
+ **	gets rid of all the items in a database except those that
+ **	are present when a fresh database is created.  There are
+ **	some gaps still-- sync objects, and I have not done SYSFILES.
+ **	I have probably missed other things as well.  At present this
+ **	is hardwired for jdbc:derby:wombat, the focus of our
+ **	attention in the embedded tests.
+ **
+ */
+public class dbcleanup {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	static String dbURL = "jdbc:derby:wombat";
+	static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+	static boolean dbIsDirty = false;
+
+	int thread_id;
+	int ind = 0;
+
+	public static void main(String[] args) throws SQLException, IOException,
+		InterruptedException, Exception {
+		doit(true);
+	}
+
+	public static void doit(boolean dbIsNew) throws SQLException, IOException,
+		InterruptedException, Exception {
+
+		Connection conn = null;
+		Statement s = null;
+		ResultSet rs = null;
+		boolean finished = false;	
+		Date d = new Date();
+
+        	Properties dbclProps = System.getProperties();
+		String systemHome = dbclProps.getProperty("user.dir") + File.separatorChar +
+			"testCSHome";
+        	dbclProps.put("derby.system.home", systemHome);
+        	System.setProperties(dbclProps);
+
+		boolean useprocess = true;
+		String up = dbclProps.getProperty("useprocess");
+		if (up != null && up.equals("false"))
+			useprocess = false;		
+		
+    		PrintStream stdout = System.out;
+    		PrintStream stderr = System.err;
+
+		Class.forName(driver).newInstance();
+
+		if (dbIsNew) {
+		try {
+			conn = DriverManager.getConnection(dbURL +
+				";create=true");
+			conn.setAutoCommit(false);
+			System.out.println("created " + dbURL + " " + d);
+//FIX: temporarily we will always cleanup, so skip the shutdown
+//			conn.close();
+			// shutdown required only if 2 processes access database
+//			if (useprocess) doshutdown();
+		//	return;
+		} catch (SQLException  se) {
+			System.out.println("connect failed for " + dbURL);
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+		}
+		else {
+		try {
+			conn = DriverManager.getConnection(dbURL);
+			conn.setAutoCommit(false);
+			System.out.println("connected to " + dbURL + " " + d);
+		} catch (SQLException  se) {
+			System.out.println("connect failed for " + dbURL);
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+		}
+
+		d = new Date();
+		System.out.println("dbcleanup starting: " + d);
+
+		Enumeration schemalist = null;
+		Enumeration list = null;
+		Vector schemavec = new Vector();
+		Vector tablevec = null;
+		// get a list of the user schemas
+		try {
+			s = conn.createStatement();
+			rs = s.executeQuery( " select schemaname from sys.sysschemas " +
+				" where schemaname <> 'SYS'"); 
+			while (rs.next()) { 
+				schemavec.addElement(new String(rs.getString(1)));
+			}
+			rs.close();
+			if (schemavec.size() > 1) {
+				// there is at least one schema to clean up
+				dbIsDirty = true;
+			}
+		} catch (SQLException  se) {
+			System.out.println("select schemas: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+
+		// for each user schema, drop the objects
+		String schema = null;
+		String n = null;
+		boolean viewdependencyFound = false;
+		boolean tabledependencyFound = false;
+		Vector viewvec = null;
+		int count = 0;
+		for (schemalist = schemavec.elements(); schemalist.hasMoreElements();) {
+			schema = (String)schemalist.nextElement();
+			for (viewdependencyFound = true; viewdependencyFound;){
+				viewdependencyFound = false;
+				viewvec = findTables(conn, s, 'V', schema);
+				//for (list = viewvec.elements(); list.hasMoreElements();)
+				//	System.out.println("\t" + list.nextElement());
+				if (viewvec.size() > 0) {
+					System.out.println("schema " + schema);
+					viewdependencyFound = dropTables(conn, s, viewvec, "view");
+				}
+			}
+
+			for (tabledependencyFound = true; tabledependencyFound;){
+				tabledependencyFound = false;
+				tablevec = findTables(conn, s, 'T', schema);
+				if (tablevec.size() > 0) {
+					System.out.println("schema " + schema);
+					tabledependencyFound = 
+						dropTables(conn, s, tablevec, "table");
+				}
+			}
+
+			Vector stmtvec = new Vector();
+			try {
+				rs = s.executeQuery( " select stmtname " +
+					" from sys.sysstatements t, sys.sysschemas  s " +
+					" where t.schemaid = s.schemaid " +
+					" and s.schemaname = '" + schema + "'");
+				for (count = 0; rs.next(); count++) { 
+					dbIsDirty = true;
+					stmtvec.addElement(new String(rs.getString(1)));
+				}
+				rs.close();
+			} catch (SQLException  se) {
+				System.out.println("select statements: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+
+			if (count > 1) {
+			try {
+				System.out.println("schema " + schema);
+				System.out.println("dropping leftover statements: ");
+				for (list = stmtvec.elements(); list.hasMoreElements();) {
+					n = (String)list.nextElement();
+					s.execute("drop statement " + n);
+					conn.commit();
+					System.out.println("\t" + n);
+				}
+			} catch (SQLException  se) {
+				System.out.println("drop statement: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+			}
+		}
+		// drop every user schema except APP
+		if (schemavec.size() > 1) {
+		System.out.println("dropping extra user schemas: ");
+		schemalist = null;
+		for (schemalist = schemavec.elements(); schemalist.hasMoreElements();) {
+			schema = (String)schemalist.nextElement();
+			if (schema.equals("APP")) continue;
+			if (schema == null) {
+				System.out.println("null schema in schemalist");
+				continue;
+			}
+			try {
+				System.out.println("\t" + schema);
+				s.execute("drop schema \"" + schema + "\"");
+			} catch (SQLException  se) {
+				System.out.println("drop schema: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+		}
+		}
+		// drop all method aliases
+		dropAliases(conn, 'M');
+		dropAliases(conn, 'C');
+
+		// DEBUG: help figure out what's going on with extra entries in sysdepends
+		try {
+			rs = s.executeQuery("select count (*) from sys.sysdepends");
+			if (rs.next()) {
+				int i = rs.getInt(1);
+				if (i > 0)
+					System.out.println("found " + i + " leftover dependencies");
+			}
+		} catch (SQLException  se) {
+			System.out.println("drop schema: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+
+		// shutdown required only if 2 processes access database
+		if (useprocess) doshutdown();
+		//conn.close();
+		d = new Date();
+		System.out.println("dbcleanup finished: " + d);
+	}
+
+	static void doshutdown() {
+		Connection conn = null;
+		try {
+			conn = DriverManager.getConnection(dbURL +
+				";shutdown=true");
+		} catch (SQLException  se) {
+			if (se.getSQLState().equals("08006")){
+				System.out.println("shutting down " + dbURL);
+			}
+			else {
+				System.out.println("shutdown failed for " + dbURL);
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+		}
+	}
+
+	static boolean dropTables(Connection conn, Statement s, Vector tablevec,
+		String tabletype) throws Exception {
+
+		boolean dependencyFound = false;
+		String n = null;
+
+		String objtype = null;
+		System.out.println("dropping " + tabletype + "(s)");
+
+		for (Enumeration list = tablevec.elements(); list.hasMoreElements();) {
+			n = (String)list.nextElement();
+			try {
+				s.execute("drop " + tabletype + " " + n);
+				conn.commit();
+				System.out.println("\t" + n);
+			} catch (SQLException  se) {
+				if (se.getSQLState().equals("X0Y25")){
+					dependencyFound=true;
+					//System.out.println("error X0Y25: " + se.getMessage());
+					System.out.println(n + " not droped due to dependency, will retry a bit later");
+				}
+				else if (se.getSQLState().equals("X0Y23")){
+					dependencyFound=true;
+					//System.out.println("error X0Y23: " + se.getMessage());
+					System.out.println(n + " not droped due to dependency, will retry a bit later");
+				}
+				else {
+					System.out.println("drop table: FAIL -- unexpected exception:");
+					JDBCDisplayUtil.ShowException(System.out, se);
+					System.exit(1);
+		//FIX exits
+				}
+			}
+		}
+		return(dependencyFound);
+	}
+
+	static  Vector findTables(Connection conn, Statement s, char c, String schema) throws Exception {
+
+		ResultSet rs = null;
+		Vector tableviewvec = new Vector();
+
+		try {
+			rs = s.executeQuery( " select t.tablename " +
+				" from sys.systables t, sys.sysschemas  s " +
+				" where t.schemaid = s.schemaid " +
+				" and t.tabletype = '" + c + "'" +
+				" and s.schemaname = '" + schema + "'" );
+			while (rs.next()) { 
+				dbIsDirty = true;
+				tableviewvec.addElement(new String(rs.getString(1)));
+			}
+			rs.close();
+		} catch (SQLException  se) {
+			System.out.println("select tables: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		//FIX exits
+		}
+		return(tableviewvec);
+	}
+
+	static void dropAliases (Connection conn, char aliastype) throws Exception {
+		
+		ResultSet rs = null;
+		Statement s = null;
+		String typestring = null;
+		Vector aliasvec = new Vector();
+		String n = null;
+		int count = 0;
+
+		if (aliastype == 'M') typestring = "method";
+		else if (aliastype == 'C') typestring = "class";
+
+		try {
+			s = conn.createStatement();
+			rs = s.executeQuery("select alias, aliastype from sys.sysaliases " +
+				" where systemalias = false " + 
+				" and aliastype = '" + aliastype + "'");
+			for (count = 0; rs.next(); count++) {
+				dbIsDirty = true;
+				aliasvec.addElement(new String(rs.getString(1)));
+			}
+			rs.close();
+			conn.commit();
+		} catch (SQLException  se) {
+			System.out.println("drop alias: FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, se);
+			System.exit(1);
+		}
+
+		if (count > 1) {
+		System.out.println("dropping user aliases, type " + typestring + ": ");
+		for (Enumeration list = aliasvec.elements(); list.hasMoreElements();) {
+			n = (String)list.nextElement();
+			try {
+				s.execute("drop " + typestring + " alias " + n);
+			} catch (SQLException  se) {
+				System.out.println("drop alias: FAIL -- unexpected exception:");
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+			}
+			conn.commit();
+			System.out.println("\t" + n);
+		}
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm13.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,91 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2001, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for IBM's jdk 1.3.
+
+  @author ames
+ */
+public class ibm13 extends jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2001_2004;
+
+	public String getName(){return "ibm13";}
+    public ibm13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public ibm13(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public ibm13(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public ibm13() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("ibm13 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("ibm13 does not support ss");
+        if (oss>=0) warn("ibm13 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("ibm13 does not support prof");
+        if (verify) warn("ibm13 does not support verify");
+        if (noverify) warn("ibm13 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/ibm14.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,91 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for IBM's jdk 1.4.
+
+  @author ames
+ */
+public class ibm14 extends jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	public String getName(){return "ibm14";}
+    public ibm14(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public ibm14(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public ibm14(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public ibm14() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("ibm14 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("ibm14 does not support ss");
+        if (oss>=0) warn("ibm14 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("ibm14 does not support prof");
+        if (verify) warn("ibm14 does not support verify");
+        if (noverify) warn("ibm14 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/j9_13.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,129 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+import java.util.Properties;
+
+
+/**
+  <p>This class is for IBM's J9 jdk 1.3.
+
+  @author ge
+ */
+public class j9_13 extends jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	public String getName(){return "j9_13";}
+    public j9_13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public j9_13(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public j9_13(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public j9_13() {
+	Properties sp = System.getProperties();
+	String srvJvm = sp.getProperty("serverJvm");
+	if ((srvJvm!=null) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
+	{
+		String wshome = guessWSHome();
+		// note, may have to switch to sep instead of hardcoding the slashes...
+		setJavaCmd(wshome+"/wsdd5.6/ive/bin/j9");
+	}
+	else
+		setJavaCmd("j9");
+    }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+
+	Properties sp = System.getProperties();
+	String bootcp = sp.getProperty("bootcp");
+	String srvJvm = sp.getProperty("serverJvm");
+	// if we're coming in to be the server jvm for networkserver testing on j9,
+	// bootcp is null, so we need to try to setup the bootclasspath from scratch
+	// for now, assume we're only interested in doing this for wsdd5.6, worry about
+	// newer versions, multiple class libraries, or multiple releases later.
+	if ((srvJvm !=null ) && ((srvJvm.toUpperCase().startsWith("J9")) || (srvJvm.equalsIgnoreCase("wsdd5.6"))))
+	{
+		String pathsep = System.getProperty("path.separator");
+		String wshome = guessWSHome();
+		// note, may have to switch to sep instead of hardcoding the slashes...
+		sb.append(" -Xbootclasspath/a:" + wshome + "/wsdd5.6/ive/lib/jclMax/classes.zip"
+			+ pathsep + wshome + "/wsdd5.6/ive/lib/charconv.zip"
+			+ pathsep + wshome + "/wsdd5.6/ive/lib/jclMax");
+	} 
+	else
+		sb.append(" -Xbootclasspath/a:" + bootcp);
+        if (noasyncgc) warn("j9_13 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) warn("j9_13 does not support noclassgc");
+        if (ss>=0) warn("j9_13 does not support ss");
+        if (oss>=0) warn("j9_13 does not support oss");
+        if (ms>=0) {
+          sb.append(" -Xss");
+          sb.append(ms);
+		  //sb.append("k");
+        }
+        if (mx>=0) {
+          sb.append(" -Xmx");
+          sb.append(mx);
+		  //sb.append("k");
+        }
+        if (classpath!=null) warn("j9_13 does not support classpath, use -Xbootclasspath,-Xbootclasspath/p,-Xbootclasspath/a"); 
+        if (prof!=null) warn("j9_13 does not support prof");
+        if (verify) sb.append(" -verify");
+        if (noverify) warn("j9_13 does not support noverify");
+        if (nojit) sb.append(" -Xnojit");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+
+	protected void setSecurityProps()
+	{
+		System.out.println("Note: J9 tests do not run with security manager");		
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk13.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,91 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for JDK1.3.
+
+  @author ames
+ */
+public class jdk13 extends jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	public String getName(){return "jdk13";}
+    public jdk13(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public jdk13(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public jdk13(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public jdk13() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("jdk13 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("jdk13 does not support ss");
+        if (oss>=0) warn("jdk13 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("jdk13 does not support prof");
+        if (verify) warn("jdk13 does not support verify");
+        if (noverify) warn("jdk13 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk14.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,91 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2001, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for JDK1.4.
+
+  @author ames
+ */
+public class jdk14 extends jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2001_2004;
+
+	public String getName(){return "jdk14";}
+    public jdk14(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public jdk14(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public jdk14(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public jdk14() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("jdk14 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("jdk14 does not support ss");
+        if (oss>=0) warn("jdk14 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("jdk14 does not support prof");
+        if (verify) warn("jdk14 does not support verify");
+        if (noverify) warn("jdk14 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jdk15.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,91 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+
+/**
+  <p>This class is for JDK1.5.
+
+  @author ames
+ */
+public class jdk15 extends jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	public String getName(){return "jdk15";}
+    public jdk15(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        super(noasyncgc,verbosegc,noclassgc,ss,oss,ms,mx,classpath,prof,
+		verify,noverify,nojit,D);
+    }
+    // more typical use:
+    public jdk15(String classpath, Vector D) {
+        super(classpath,D);
+    }
+    // more typical use:
+    public jdk15(long ms, long mx, String classpath, Vector D) {
+        super(ms,mx,classpath,D);
+    }
+    // actual use
+    public jdk15() { }
+
+    // return the command line to invoke this VM.  The caller then adds
+    // the class and program arguments.
+    public Vector getCommandLine() 
+    {
+        StringBuffer sb = new StringBuffer();
+        Vector v = super.getCommandLine();
+        appendOtherFlags(sb);
+        String s = sb.toString();
+        StringTokenizer st = new StringTokenizer(s);
+        while (st.hasMoreTokens())
+        {
+            v.addElement(st.nextToken());
+        }
+        return v;
+	}
+
+	public void appendOtherFlags(StringBuffer sb)
+	{
+        if (noasyncgc) warn("jdk15 does not support noasyncgc");
+        if (verbosegc) sb.append(" -verbose:gc");
+        if (noclassgc) sb.append(" -Xnoclassgc");
+        if (ss>=0) warn("jdk15 does not support ss");
+        if (oss>=0) warn("jdk15 does not support oss");
+        if (ms>=0) {
+          sb.append(" -ms");
+          sb.append(ms);
+        }
+        if (mx>=0) {
+          sb.append(" -mx");
+          sb.append(mx);
+        }
+        if (classpath!=null) {
+          sb.append(" -classpath ");
+          sb.append(classpath);
+        }
+        if (prof!=null) warn("jdk15 does not support prof");
+        if (verify) warn("jdk15 does not support verify");
+        if (noverify) warn("jdk15 does not support noverify");
+        if (nojit) sb.append(" -Djava.compiler=NONE");
+        if (D != null)
+          for (int i=0; i<D.size();i++) {
+	        sb.append(" -D");
+	        sb.append((String)(D.elementAt(i)));
+          }
+    }
+	public String getDintro() { return "-D"; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/jvm.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,366 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.util.Vector;
+import java.util.StringTokenizer;
+import java.io.File;
+import org.apache.derby.impl.tools.sysinfo.ZipInfoProperties;
+
+
+/**
+  <p>This class provides the interface and mechanism
+  for plugging VMs into the system.  Typically
+  you only need to add a new implementation if your
+  supported attributes or command line building are
+  different from those that exist.
+
+  <p>this class has fields for all options that a JDK VM can take,
+  that is the reference point for all others.  Note some VMs (like jview)
+  don't take all options and will ignore them (like -mx).  Defining
+  the system property "verbose" to 1 will give you warnings for ignored
+  properties in a properly implemented subclass.
+
+  <p> here is the canonical output from java -help for options we take:
+  <pre>
+    -noasyncgc        don't allow asynchronous garbage collection
+    -verbosegc        print a message when garbage collection occurs
+    -noclassgc        disable class garbage collection
+    -ss<number>       set the maximum native stack size for any thread
+    -oss<number>      set the maximum Java stack size for any thread
+    -ms<number>       set the initial Java heap size
+    -mx<number>       set the maximum Java heap size
+    -classpath <directories separated by semicolons>
+                      list directories in which to look for classes
+    -prof[:<file>]    output profiling data to .\java.prof or .\<file>
+    -verify           verify all classes when read in
+    -noverify         do not verify any class
+    -nojit            turn off the jit
+    -Dprop=name       define property; can be specified more than once
+  </pre>
+
+  @author ames
+ */
+
+
+public abstract class jvm {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+    // they all take their defaults as the initial value.
+    // -1, null, and false all will mean we won't include them
+    // in the command line.
+
+    // flags             just take the whole string of flags as is
+    public String flags = null;
+    // -noasyncgc        don't allow asynchronous garbage collection
+    public boolean noasyncgc = false;
+    // -verbosegc        print a message when garbage collection occurs
+    public boolean verbosegc = false;
+    // -noclassgc        disable class garbage collection
+    public boolean noclassgc = false;
+    // -ss<number>       set the maximum native stack size for any thread
+    public long ss = -1;
+    // -oss<number>      set the maximum Java stack size for any thread
+    public long oss = -1;
+    // -ms<number>       set the initial Java heap size
+    public long ms = -1;
+    // -mx<number>       set the maximum Java heap size
+    public long mx = -1;
+    // -classpath <directories separated by semicolons>
+    //                   list directories in which to look for classes
+    public String classpath = null;
+    // -prof[:<file>]    output profiling data to .\java.prof or .\<file>
+    public String prof = null;
+    // -verify           verify all classes when read in
+    //                   (remote verification is the default)
+    public boolean verify = false;
+    // -noverify         do not verify any class
+    //                   (remote verification is the default)
+    public boolean noverify = false;
+    // -nojit            turn off the jit
+    public boolean nojit = false;
+    // -Dprop=name       define property; can be specified more than once
+    public Vector D = null;
+    // java cmd (java, java_g)
+    public String javaCmd = "java";
+    // major and minor version
+    public String majorVersion = "";
+    public String minorVersion = "";
+    public int imajor = 0;
+    public int iminor = 0;
+
+	// security defaults relative to WS
+	// not used if jvmargs serverPolicyFile or serverCodeBase are set
+	private static String DEFAULT_POLICY="util/nwsvr.policy";
+	private static String DEFAULT_CODEBASE="/classes";
+
+    // constructors
+    public jvm() { }
+
+    public jvm(boolean noasyncgc, boolean verbosegc, boolean noclassgc,
+    long ss, long oss, long ms, long mx, String classpath, String prof,
+    boolean verify, boolean noverify, boolean nojit, Vector D) {
+        this.noasyncgc=noasyncgc;
+        this.noclassgc=noclassgc;
+        this.verbosegc=verbosegc;
+        this.ss=ss;
+        this.oss=oss;
+        this.ms=ms;
+        this.mx=mx;
+        this.classpath=classpath;
+        this.prof=prof;
+        this.verify=verify;
+        this.noverify=noverify;
+        this.nojit=nojit;
+        this.D=D;
+    }
+    // more typical use:
+    public jvm(String classpath, Vector D) {
+        this.classpath=classpath;
+        this.D=D;
+    }
+    // more typical use:
+    public jvm(long ms, long mx, String classpath, Vector D) {
+        this.ms=ms;
+        this.mx=mx;
+        this.classpath=classpath;
+        this.D=D;
+    }
+
+	/**
+       return the property definition introducer, with a space if a
+       separator is needed.
+     */
+    public abstract String getDintro();
+	public abstract String getName();
+    public void setNoasyncgc(boolean noasyncgc) { this.noasyncgc=noasyncgc; }
+    public void setNoclassgc(boolean noclassgc) { this.noclassgc=noclassgc; }
+    public void setVerbosegc(boolean verbosegc) { this.verbosegc=verbosegc; }
+    public void setSs(long ss) { this.ss=ss; }
+    public void setOss(long oss) { this.oss=oss; }
+    public void setMs(long ms) { this.ms = ms; }
+    public void setMx(long mx) { this.mx = mx; }
+    public void setClasspath(String classpath) { this.classpath = classpath; }
+    public void setProf(String prof) { this.prof=prof; }
+    public void setVerify(boolean verify) { this.verify=verify; }
+    public void setNoverify(boolean noverify) { this.noverify=noverify; }
+    public void setNojit(boolean nojit) { this.nojit=nojit; }
+    public void setD(Vector D) { this.D = D; }
+    public void setFlags(String flags) { this.flags = flags; }
+    public void setJavaCmd(String jcmd) { this.javaCmd = jcmd; }
+
+	
+    public Vector getCommandLine()
+    {
+        Vector v = new Vector();
+        v.addElement(javaCmd);
+        if ( (flags != null) && (flags.length()>0) )
+        {
+            StringTokenizer st = new StringTokenizer(flags);
+            while (st.hasMoreTokens())
+            {
+                v.addElement(st.nextToken());
+            }
+        }
+        return v;
+    }
+
+    // implementation, used by subclasses only
+    int verboselevel = -1;
+    public void warn(String msg) {
+      if (verboselevel == -1) {
+         try {
+           verboselevel = Integer.parseInt((String)(System.getProperty("verbose")));
+         } catch (Exception e) {
+           verboselevel = 0;
+         }
+      }
+      if (verboselevel >0)
+          System.out.println("jvm: "+msg);
+    }
+
+    // utility for locating a jvm.
+    /**
+        pass in class name for JVM.  If we can't find it, try
+	also org.apache.derbyTesting.functionTests.harness.<jvmName>
+     */
+    public static jvm getJvm(String jvmName) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+	jvm result = null;
+        try {
+		result = (jvm)Class.forName(jvmName).newInstance();
+        } catch (ClassNotFoundException e) {
+		result = (jvm)Class.forName("org.apache.derbyTesting.functionTests.harness."+jvmName).newInstance();
+        }
+        return result;
+    }
+
+	/**
+	  Get the current JVM using the normal test harness rules for finding
+	  a JVM.
+	  <OL>
+	  <LI> If the sytem property 'jvm' use this name.
+	  <LI> else if the java version starts with 1.2 use
+	       "jdk12".
+	  <LI> else use "currentjvm".	
+	  */
+	public static jvm getCurrentJvm() throws Exception
+	{
+		String jvmName = System.getProperty("jvm");
+		if ( (jvmName == null) || (jvmName.length()==0) )
+		{
+			String javaVersion = System.getProperty("java.version");
+		    if (javaVersion.startsWith("1.2"))
+		        jvmName = "jdk12";
+		    else
+		        jvmName = "currentjvm";
+		}
+		return getJvm(jvmName);
+	}
+
+    /**
+      Return the major version number
+    */
+    public int getMajorVersion()
+    {
+        return imajor;
+    }
+    
+    /**
+      Return the major version number
+    */
+    public int getMinorVersion()
+    {
+        return iminor;
+    }
+    
+	/**
+	  Get the current JVM using the normal test harness rules for finding
+	  a JVM.
+	  */
+	public void setVersion() throws Exception
+	{
+		// check for jdk12 or higher
+	    String javaVersion = System.getProperty("java.version");
+		int i = javaVersion.indexOf('.');
+		int j = javaVersion.indexOf('.', i+1);
+		majorVersion = javaVersion.substring(0, i);
+		minorVersion = javaVersion.substring(i+1, j);
+		Integer minor = new Integer(minorVersion);
+		iminor = minor.intValue();
+		Integer major = new Integer(majorVersion);
+		imajor = major.intValue();
+		
+		String jvmName = System.getProperty("jvm");
+		
+		if ( (jvmName == null) || (jvmName.length()==0) )
+		{
+		    if (iminor < 2)
+		        jvmName = "currentjvm";
+		    else
+		        jvmName = "jdk" + majorVersion + minorVersion;
+		}
+	}
+	
+	/** Find $WS based on the assumption that JAVA_HOME is $WS/<jvm_name>
+	 * or $WS/<jvm_name>/jre
+	 * @return path of $WS
+	 */
+	protected static String guessWSHome()
+	{
+		String wshome=""; 
+		String jhome = System.getProperty("java.home");
+		String sep = System.getProperty("file.separator");
+		// need to strip off the java directory  assuming it's something
+		// like ibm14/jre or ibm14
+		wshome = jhome.substring(0,jhome.indexOf(sep + "jre"));
+		wshome = wshome.substring(0,wshome.lastIndexOf(sep));
+		return wshome;
+	}
+
+	protected static String findCodeBase()
+	{
+		String classpath = System.getProperty("java.class.path");
+		char sep = '/';
+		ZipInfoProperties zip[]= 
+			org.apache.derby.impl.tools.sysinfo.Main.getAllInfo (classpath);
+		for (int i = 0; i < zip.length; i++)
+		{
+			// it's a url so should just have forward slashes
+			String location = zip[i].getLocation().replace('\\','/');
+			if (location.indexOf("derbynet.jar") != -1)
+			{
+				return location.substring(0,location.lastIndexOf(sep));
+			}
+			else if ((location.indexOf("classes") != -1) &&
+					 location.indexOf(".jar") == -1)
+				return location;
+		}
+		return null;
+	}
+	
+	/**
+	 * set up security properties for server command line.
+	 */
+	protected void setSecurityProps() throws java.io.IOException, ClassNotFoundException
+	{
+		if (this.D == null)
+			this.D = new Vector();
+		
+		String userDir = System.getProperty("user.dir");
+		String policyFile = System.getProperty("serverPolicyFile");
+		if (policyFile == null)
+		{
+				File userDirHandle = new File(userDir);
+				CopySuppFiles.copyFiles(userDirHandle,DEFAULT_POLICY);
+				policyFile = userDir + baseName(DEFAULT_POLICY);
+		}
+
+		String serverCodeBase = System.getProperty("serverCodeBase");
+		if (serverCodeBase == null)
+			serverCodeBase = findCodeBase();
+   
+		if (serverCodeBase == null)
+		{
+			String ws = guessWSHome();
+			serverCodeBase = ws + DEFAULT_CODEBASE;
+		}
+
+		if (policyFile.toLowerCase().equals("none") || 
+			(!(new File(policyFile)).exists()) ||
+			!(new File(policyFile)).exists())
+		{
+			System.out.println("WARNING: Running without Security manager." +
+							   "serverPolicy(" + policyFile + 
+							   ") or serverCodeBase(" +  serverCodeBase + 
+							   ") not available");
+		return;
+		}
+		this.D.addElement("java.security.manager");
+		this.D.addElement("java.security.policy=" + policyFile);
+		this.D.addElement("csinfo.codebase=" + serverCodeBase);
+		this.D.addElement("csinfo.serverhost=localhost");
+		this.D.addElement("csinfo.trustedhost=localhost");	 
+
+	}
+
+	/** Get the base file name from a resource name string
+	 * @param resourceName (e.g. /org/apache/derbyTesting/functionTests/util/nwsvr.policy)
+	 * @return short name (e.g. nwsvr.policy)
+	 */
+	private String baseName(String resourceName)
+	{
+	  
+		return resourceName.substring(resourceName.lastIndexOf("/"),resourceName.length());
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/shutdown.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,100 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.harness;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.util.*;
+import java.io.*;
+
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/*
+ **
+ ** shutdown
+ **
+ **	force a shutdown after a test complete to guarantee shutdown
+ **	which doesn't always seem to happen with useprocess=false
+ **
+ */
+public class shutdown
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+ 
+	static String shutdownurl;
+	static String driver = "org.apache.derby.jdbc.EmbeddedDriver";
+	static String systemHome;
+
+	public static void main(String[] args) throws SQLException,
+		InterruptedException, Exception 
+    {
+		systemHome = args[0];
+		shutdownurl = args[1];
+		try
+		{
+		    doit();
+		}
+		catch(Exception e)
+		{
+		    System.out.println("Exception in shutdown: " + e);
+		}
+	}
+
+	public static void doit() throws SQLException,
+		InterruptedException, Exception 
+	{
+		Connection conn = null;
+		boolean finished = false;	
+		Date d = new Date();
+
+        Properties sp = System.getProperties();
+        if (systemHome == null)
+        {
+		    systemHome = sp.getProperty("user.dir") + File.separatorChar +
+			"testCSHome";
+        	sp.put("derby.system.home", systemHome);
+        	System.setProperties(sp);
+        }
+		boolean useprocess = true;
+		String up = sp.getProperty("useprocess");
+		if (up != null && up.equals("false"))
+			useprocess = false;		
+
+        PrintStream stdout = System.out;
+    	PrintStream stderr = System.err;
+
+		Class.forName(driver).newInstance();
+
+		try 
+		{
+			conn = DriverManager.getConnection(shutdownurl);
+		} 
+		catch (SQLException  se) 
+		{
+		    if (se.getSQLState().equals("08006"))
+		    {
+		        // It was already shutdown
+		        //System.out.println("Shutdown with: " + shutdownurl);
+		    }
+		    else 
+			{
+				System.out.println("shutdown failed for " + shutdownurl);
+				JDBCDisplayUtil.ShowException(System.out, se);
+				System.exit(1);
+	        }
+		}
+    }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/harness/testtypes.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+testtypes=sql,sql2,unit,java,multi,demo

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/AIjdbc.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+Test AIjdbc starting
+Test AIjdbc:creating objects
+Test AIjdbc:select from base table
+Test AIjdbc:select from view
+PASS
+Test AIjdbc finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/CharUTF8.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1095 @@
+Test CharUTF8 starting
+Testing with last char value 59 length=60
+Testing with last char value 119 length=60
+Testing with last char value 179 length=60
+Testing with last char value 239 length=60
+Testing with last char value 299 length=60
+Testing with last char value 359 length=60
+Testing with last char value 419 length=60
+Testing with last char value 479 length=60
+Testing with last char value 539 length=60
+Testing with last char value 599 length=60
+Testing with last char value 659 length=60
+Testing with last char value 719 length=60
+Testing with last char value 779 length=60
+Testing with last char value 839 length=60
+Testing with last char value 899 length=60
+Testing with last char value 959 length=60
+Testing with last char value 1019 length=60
+Testing with last char value 1079 length=60
+Testing with last char value 1139 length=60
+Testing with last char value 1199 length=60
+Testing with last char value 1259 length=60
+Testing with last char value 1319 length=60
+Testing with last char value 1379 length=60
+Testing with last char value 1439 length=60
+Testing with last char value 1499 length=60
+Testing with last char value 1559 length=60
+Testing with last char value 1619 length=60
+Testing with last char value 1679 length=60
+Testing with last char value 1739 length=60
+Testing with last char value 1799 length=60
+Testing with last char value 1859 length=60
+Testing with last char value 1919 length=60
+Testing with last char value 1979 length=60
+Testing with last char value 2039 length=60
+Testing with last char value 2099 length=60
+Testing with last char value 2159 length=60
+Testing with last char value 2219 length=60
+Testing with last char value 2279 length=60
+Testing with last char value 2339 length=60
+Testing with last char value 2399 length=60
+Testing with last char value 2459 length=60
+Testing with last char value 2519 length=60
+Testing with last char value 2579 length=60
+Testing with last char value 2639 length=60
+Testing with last char value 2699 length=60
+Testing with last char value 2759 length=60
+Testing with last char value 2819 length=60
+Testing with last char value 2879 length=60
+Testing with last char value 2939 length=60
+Testing with last char value 2999 length=60
+Testing with last char value 3059 length=60
+Testing with last char value 3119 length=60
+Testing with last char value 3179 length=60
+Testing with last char value 3239 length=60
+Testing with last char value 3299 length=60
+Testing with last char value 3359 length=60
+Testing with last char value 3419 length=60
+Testing with last char value 3479 length=60
+Testing with last char value 3539 length=60
+Testing with last char value 3599 length=60
+Testing with last char value 3659 length=60
+Testing with last char value 3719 length=60
+Testing with last char value 3779 length=60
+Testing with last char value 3839 length=60
+Testing with last char value 3899 length=60
+Testing with last char value 3959 length=60
+Testing with last char value 4019 length=60
+Testing with last char value 4079 length=60
+Testing with last char value 4139 length=60
+Testing with last char value 4199 length=60
+Testing with last char value 4259 length=60
+Testing with last char value 4319 length=60
+Testing with last char value 4379 length=60
+Testing with last char value 4439 length=60
+Testing with last char value 4499 length=60
+Testing with last char value 4559 length=60
+Testing with last char value 4619 length=60
+Testing with last char value 4679 length=60
+Testing with last char value 4739 length=60
+Testing with last char value 4799 length=60
+Testing with last char value 4859 length=60
+Testing with last char value 4919 length=60
+Testing with last char value 4979 length=60
+Testing with last char value 5039 length=60
+Testing with last char value 5099 length=60
+Testing with last char value 5159 length=60
+Testing with last char value 5219 length=60
+Testing with last char value 5279 length=60
+Testing with last char value 5339 length=60
+Testing with last char value 5399 length=60
+Testing with last char value 5459 length=60
+Testing with last char value 5519 length=60
+Testing with last char value 5579 length=60
+Testing with last char value 5639 length=60
+Testing with last char value 5699 length=60
+Testing with last char value 5759 length=60
+Testing with last char value 5819 length=60
+Testing with last char value 5879 length=60
+Testing with last char value 5939 length=60
+Testing with last char value 5999 length=60
+Testing with last char value 6059 length=60
+Testing with last char value 6119 length=60
+Testing with last char value 6179 length=60
+Testing with last char value 6239 length=60
+Testing with last char value 6299 length=60
+Testing with last char value 6359 length=60
+Testing with last char value 6419 length=60
+Testing with last char value 6479 length=60
+Testing with last char value 6539 length=60
+Testing with last char value 6599 length=60
+Testing with last char value 6659 length=60
+Testing with last char value 6719 length=60
+Testing with last char value 6779 length=60
+Testing with last char value 6839 length=60
+Testing with last char value 6899 length=60
+Testing with last char value 6959 length=60
+Testing with last char value 7019 length=60
+Testing with last char value 7079 length=60
+Testing with last char value 7139 length=60
+Testing with last char value 7199 length=60
+Testing with last char value 7259 length=60
+Testing with last char value 7319 length=60
+Testing with last char value 7379 length=60
+Testing with last char value 7439 length=60
+Testing with last char value 7499 length=60
+Testing with last char value 7559 length=60
+Testing with last char value 7619 length=60
+Testing with last char value 7679 length=60
+Testing with last char value 7739 length=60
+Testing with last char value 7799 length=60
+Testing with last char value 7859 length=60
+Testing with last char value 7919 length=60
+Testing with last char value 7979 length=60
+Testing with last char value 8039 length=60
+Testing with last char value 8099 length=60
+Testing with last char value 8159 length=60
+Testing with last char value 8219 length=60
+Testing with last char value 8279 length=60
+Testing with last char value 8339 length=60
+Testing with last char value 8399 length=60
+Testing with last char value 8459 length=60
+Testing with last char value 8519 length=60
+Testing with last char value 8579 length=60
+Testing with last char value 8639 length=60
+Testing with last char value 8699 length=60
+Testing with last char value 8759 length=60
+Testing with last char value 8819 length=60
+Testing with last char value 8879 length=60
+Testing with last char value 8939 length=60
+Testing with last char value 8999 length=60
+Testing with last char value 9059 length=60
+Testing with last char value 9119 length=60
+Testing with last char value 9179 length=60
+Testing with last char value 9239 length=60
+Testing with last char value 9299 length=60
+Testing with last char value 9359 length=60
+Testing with last char value 9419 length=60
+Testing with last char value 9479 length=60
+Testing with last char value 9539 length=60
+Testing with last char value 9599 length=60
+Testing with last char value 9659 length=60
+Testing with last char value 9719 length=60
+Testing with last char value 9779 length=60
+Testing with last char value 9839 length=60
+Testing with last char value 9899 length=60
+Testing with last char value 9959 length=60
+Testing with last char value 10019 length=60
+Testing with last char value 10079 length=60
+Testing with last char value 10139 length=60
+Testing with last char value 10199 length=60
+Testing with last char value 10259 length=60
+Testing with last char value 10319 length=60
+Testing with last char value 10379 length=60
+Testing with last char value 10439 length=60
+Testing with last char value 10499 length=60
+Testing with last char value 10559 length=60
+Testing with last char value 10619 length=60
+Testing with last char value 10679 length=60
+Testing with last char value 10739 length=60
+Testing with last char value 10799 length=60
+Testing with last char value 10859 length=60
+Testing with last char value 10919 length=60
+Testing with last char value 10979 length=60
+Testing with last char value 11039 length=60
+Testing with last char value 11099 length=60
+Testing with last char value 11159 length=60
+Testing with last char value 11219 length=60
+Testing with last char value 11279 length=60
+Testing with last char value 11339 length=60
+Testing with last char value 11399 length=60
+Testing with last char value 11459 length=60
+Testing with last char value 11519 length=60
+Testing with last char value 11579 length=60
+Testing with last char value 11639 length=60
+Testing with last char value 11699 length=60
+Testing with last char value 11759 length=60
+Testing with last char value 11819 length=60
+Testing with last char value 11879 length=60
+Testing with last char value 11939 length=60
+Testing with last char value 11999 length=60
+Testing with last char value 12059 length=60
+Testing with last char value 12119 length=60
+Testing with last char value 12179 length=60
+Testing with last char value 12239 length=60
+Testing with last char value 12299 length=60
+Testing with last char value 12359 length=60
+Testing with last char value 12419 length=60
+Testing with last char value 12479 length=60
+Testing with last char value 12539 length=60
+Testing with last char value 12599 length=60
+Testing with last char value 12659 length=60
+Testing with last char value 12719 length=60
+Testing with last char value 12779 length=60
+Testing with last char value 12839 length=60
+Testing with last char value 12899 length=60
+Testing with last char value 12959 length=60
+Testing with last char value 13019 length=60
+Testing with last char value 13079 length=60
+Testing with last char value 13139 length=60
+Testing with last char value 13199 length=60
+Testing with last char value 13259 length=60
+Testing with last char value 13319 length=60
+Testing with last char value 13379 length=60
+Testing with last char value 13439 length=60
+Testing with last char value 13499 length=60
+Testing with last char value 13559 length=60
+Testing with last char value 13619 length=60
+Testing with last char value 13679 length=60
+Testing with last char value 13739 length=60
+Testing with last char value 13799 length=60
+Testing with last char value 13859 length=60
+Testing with last char value 13919 length=60
+Testing with last char value 13979 length=60
+Testing with last char value 14039 length=60
+Testing with last char value 14099 length=60
+Testing with last char value 14159 length=60
+Testing with last char value 14219 length=60
+Testing with last char value 14279 length=60
+Testing with last char value 14339 length=60
+Testing with last char value 14399 length=60
+Testing with last char value 14459 length=60
+Testing with last char value 14519 length=60
+Testing with last char value 14579 length=60
+Testing with last char value 14639 length=60
+Testing with last char value 14699 length=60
+Testing with last char value 14759 length=60
+Testing with last char value 14819 length=60
+Testing with last char value 14879 length=60
+Testing with last char value 14939 length=60
+Testing with last char value 14999 length=60
+Testing with last char value 15059 length=60
+Testing with last char value 15119 length=60
+Testing with last char value 15179 length=60
+Testing with last char value 15239 length=60
+Testing with last char value 15299 length=60
+Testing with last char value 15359 length=60
+Testing with last char value 15419 length=60
+Testing with last char value 15479 length=60
+Testing with last char value 15539 length=60
+Testing with last char value 15599 length=60
+Testing with last char value 15659 length=60
+Testing with last char value 15719 length=60
+Testing with last char value 15779 length=60
+Testing with last char value 15839 length=60
+Testing with last char value 15899 length=60
+Testing with last char value 15959 length=60
+Testing with last char value 16019 length=60
+Testing with last char value 16079 length=60
+Testing with last char value 16139 length=60
+Testing with last char value 16199 length=60
+Testing with last char value 16259 length=60
+Testing with last char value 16319 length=60
+Testing with last char value 16379 length=60
+Testing with last char value 16439 length=60
+Testing with last char value 16499 length=60
+Testing with last char value 16559 length=60
+Testing with last char value 16619 length=60
+Testing with last char value 16679 length=60
+Testing with last char value 16739 length=60
+Testing with last char value 16799 length=60
+Testing with last char value 16859 length=60
+Testing with last char value 16919 length=60
+Testing with last char value 16979 length=60
+Testing with last char value 17039 length=60
+Testing with last char value 17099 length=60
+Testing with last char value 17159 length=60
+Testing with last char value 17219 length=60
+Testing with last char value 17279 length=60
+Testing with last char value 17339 length=60
+Testing with last char value 17399 length=60
+Testing with last char value 17459 length=60
+Testing with last char value 17519 length=60
+Testing with last char value 17579 length=60
+Testing with last char value 17639 length=60
+Testing with last char value 17699 length=60
+Testing with last char value 17759 length=60
+Testing with last char value 17819 length=60
+Testing with last char value 17879 length=60
+Testing with last char value 17939 length=60
+Testing with last char value 17999 length=60
+Testing with last char value 18059 length=60
+Testing with last char value 18119 length=60
+Testing with last char value 18179 length=60
+Testing with last char value 18239 length=60
+Testing with last char value 18299 length=60
+Testing with last char value 18359 length=60
+Testing with last char value 18419 length=60
+Testing with last char value 18479 length=60
+Testing with last char value 18539 length=60
+Testing with last char value 18599 length=60
+Testing with last char value 18659 length=60
+Testing with last char value 18719 length=60
+Testing with last char value 18779 length=60
+Testing with last char value 18839 length=60
+Testing with last char value 18899 length=60
+Testing with last char value 18959 length=60
+Testing with last char value 19019 length=60
+Testing with last char value 19079 length=60
+Testing with last char value 19139 length=60
+Testing with last char value 19199 length=60
+Testing with last char value 19259 length=60
+Testing with last char value 19319 length=60
+Testing with last char value 19379 length=60
+Testing with last char value 19439 length=60
+Testing with last char value 19499 length=60
+Testing with last char value 19559 length=60
+Testing with last char value 19619 length=60
+Testing with last char value 19679 length=60
+Testing with last char value 19739 length=60
+Testing with last char value 19799 length=60
+Testing with last char value 19859 length=60
+Testing with last char value 19919 length=60
+Testing with last char value 19979 length=60
+Testing with last char value 20039 length=60
+Testing with last char value 20099 length=60
+Testing with last char value 20159 length=60
+Testing with last char value 20219 length=60
+Testing with last char value 20279 length=60
+Testing with last char value 20339 length=60
+Testing with last char value 20399 length=60
+Testing with last char value 20459 length=60
+Testing with last char value 20519 length=60
+Testing with last char value 20579 length=60
+Testing with last char value 20639 length=60
+Testing with last char value 20699 length=60
+Testing with last char value 20759 length=60
+Testing with last char value 20819 length=60
+Testing with last char value 20879 length=60
+Testing with last char value 20939 length=60
+Testing with last char value 20999 length=60
+Testing with last char value 21059 length=60
+Testing with last char value 21119 length=60
+Testing with last char value 21179 length=60
+Testing with last char value 21239 length=60
+Testing with last char value 21299 length=60
+Testing with last char value 21359 length=60
+Testing with last char value 21419 length=60
+Testing with last char value 21479 length=60
+Testing with last char value 21539 length=60
+Testing with last char value 21599 length=60
+Testing with last char value 21659 length=60
+Testing with last char value 21719 length=60
+Testing with last char value 21779 length=60
+Testing with last char value 21839 length=60
+Testing with last char value 21899 length=60
+Testing with last char value 21959 length=60
+Testing with last char value 22019 length=60
+Testing with last char value 22079 length=60
+Testing with last char value 22139 length=60
+Testing with last char value 22199 length=60
+Testing with last char value 22259 length=60
+Testing with last char value 22319 length=60
+Testing with last char value 22379 length=60
+Testing with last char value 22439 length=60
+Testing with last char value 22499 length=60
+Testing with last char value 22559 length=60
+Testing with last char value 22619 length=60
+Testing with last char value 22679 length=60
+Testing with last char value 22739 length=60
+Testing with last char value 22799 length=60
+Testing with last char value 22859 length=60
+Testing with last char value 22919 length=60
+Testing with last char value 22979 length=60
+Testing with last char value 23039 length=60
+Testing with last char value 23099 length=60
+Testing with last char value 23159 length=60
+Testing with last char value 23219 length=60
+Testing with last char value 23279 length=60
+Testing with last char value 23339 length=60
+Testing with last char value 23399 length=60
+Testing with last char value 23459 length=60
+Testing with last char value 23519 length=60
+Testing with last char value 23579 length=60
+Testing with last char value 23639 length=60
+Testing with last char value 23699 length=60
+Testing with last char value 23759 length=60
+Testing with last char value 23819 length=60
+Testing with last char value 23879 length=60
+Testing with last char value 23939 length=60
+Testing with last char value 23999 length=60
+Testing with last char value 24059 length=60
+Testing with last char value 24119 length=60
+Testing with last char value 24179 length=60
+Testing with last char value 24239 length=60
+Testing with last char value 24299 length=60
+Testing with last char value 24359 length=60
+Testing with last char value 24419 length=60
+Testing with last char value 24479 length=60
+Testing with last char value 24539 length=60
+Testing with last char value 24599 length=60
+Testing with last char value 24659 length=60
+Testing with last char value 24719 length=60
+Testing with last char value 24779 length=60
+Testing with last char value 24839 length=60
+Testing with last char value 24899 length=60
+Testing with last char value 24959 length=60
+Testing with last char value 25019 length=60
+Testing with last char value 25079 length=60
+Testing with last char value 25139 length=60
+Testing with last char value 25199 length=60
+Testing with last char value 25259 length=60
+Testing with last char value 25319 length=60
+Testing with last char value 25379 length=60
+Testing with last char value 25439 length=60
+Testing with last char value 25499 length=60
+Testing with last char value 25559 length=60
+Testing with last char value 25619 length=60
+Testing with last char value 25679 length=60
+Testing with last char value 25739 length=60
+Testing with last char value 25799 length=60
+Testing with last char value 25859 length=60
+Testing with last char value 25919 length=60
+Testing with last char value 25979 length=60
+Testing with last char value 26039 length=60
+Testing with last char value 26099 length=60
+Testing with last char value 26159 length=60
+Testing with last char value 26219 length=60
+Testing with last char value 26279 length=60
+Testing with last char value 26339 length=60
+Testing with last char value 26399 length=60
+Testing with last char value 26459 length=60
+Testing with last char value 26519 length=60
+Testing with last char value 26579 length=60
+Testing with last char value 26639 length=60
+Testing with last char value 26699 length=60
+Testing with last char value 26759 length=60
+Testing with last char value 26819 length=60
+Testing with last char value 26879 length=60
+Testing with last char value 26939 length=60
+Testing with last char value 26999 length=60
+Testing with last char value 27059 length=60
+Testing with last char value 27119 length=60
+Testing with last char value 27179 length=60
+Testing with last char value 27239 length=60
+Testing with last char value 27299 length=60
+Testing with last char value 27359 length=60
+Testing with last char value 27419 length=60
+Testing with last char value 27479 length=60
+Testing with last char value 27539 length=60
+Testing with last char value 27599 length=60
+Testing with last char value 27659 length=60
+Testing with last char value 27719 length=60
+Testing with last char value 27779 length=60
+Testing with last char value 27839 length=60
+Testing with last char value 27899 length=60
+Testing with last char value 27959 length=60
+Testing with last char value 28019 length=60
+Testing with last char value 28079 length=60
+Testing with last char value 28139 length=60
+Testing with last char value 28199 length=60
+Testing with last char value 28259 length=60
+Testing with last char value 28319 length=60
+Testing with last char value 28379 length=60
+Testing with last char value 28439 length=60
+Testing with last char value 28499 length=60
+Testing with last char value 28559 length=60
+Testing with last char value 28619 length=60
+Testing with last char value 28679 length=60
+Testing with last char value 28739 length=60
+Testing with last char value 28799 length=60
+Testing with last char value 28859 length=60
+Testing with last char value 28919 length=60
+Testing with last char value 28979 length=60
+Testing with last char value 29039 length=60
+Testing with last char value 29099 length=60
+Testing with last char value 29159 length=60
+Testing with last char value 29219 length=60
+Testing with last char value 29279 length=60
+Testing with last char value 29339 length=60
+Testing with last char value 29399 length=60
+Testing with last char value 29459 length=60
+Testing with last char value 29519 length=60
+Testing with last char value 29579 length=60
+Testing with last char value 29639 length=60
+Testing with last char value 29699 length=60
+Testing with last char value 29759 length=60
+Testing with last char value 29819 length=60
+Testing with last char value 29879 length=60
+Testing with last char value 29939 length=60
+Testing with last char value 29999 length=60
+Testing with last char value 30059 length=60
+Testing with last char value 30119 length=60
+Testing with last char value 30179 length=60
+Testing with last char value 30239 length=60
+Testing with last char value 30299 length=60
+Testing with last char value 30359 length=60
+Testing with last char value 30419 length=60
+Testing with last char value 30479 length=60
+Testing with last char value 30539 length=60
+Testing with last char value 30599 length=60
+Testing with last char value 30659 length=60
+Testing with last char value 30719 length=60
+Testing with last char value 30779 length=60
+Testing with last char value 30839 length=60
+Testing with last char value 30899 length=60
+Testing with last char value 30959 length=60
+Testing with last char value 31019 length=60
+Testing with last char value 31079 length=60
+Testing with last char value 31139 length=60
+Testing with last char value 31199 length=60
+Testing with last char value 31259 length=60
+Testing with last char value 31319 length=60
+Testing with last char value 31379 length=60
+Testing with last char value 31439 length=60
+Testing with last char value 31499 length=60
+Testing with last char value 31559 length=60
+Testing with last char value 31619 length=60
+Testing with last char value 31679 length=60
+Testing with last char value 31739 length=60
+Testing with last char value 31799 length=60
+Testing with last char value 31859 length=60
+Testing with last char value 31919 length=60
+Testing with last char value 31979 length=60
+Testing with last char value 32039 length=60
+Testing with last char value 32099 length=60
+Testing with last char value 32159 length=60
+Testing with last char value 32219 length=60
+Testing with last char value 32279 length=60
+Testing with last char value 32339 length=60
+Testing with last char value 32399 length=60
+Testing with last char value 32459 length=60
+Testing with last char value 32519 length=60
+Testing with last char value 32579 length=60
+Testing with last char value 32639 length=60
+Testing with last char value 32699 length=60
+Testing with last char value 32759 length=60
+Testing with last char value 32819 length=60
+Testing with last char value 32879 length=60
+Testing with last char value 32939 length=60
+Testing with last char value 32999 length=60
+Testing with last char value 33059 length=60
+Testing with last char value 33119 length=60
+Testing with last char value 33179 length=60
+Testing with last char value 33239 length=60
+Testing with last char value 33299 length=60
+Testing with last char value 33359 length=60
+Testing with last char value 33419 length=60
+Testing with last char value 33479 length=60
+Testing with last char value 33539 length=60
+Testing with last char value 33599 length=60
+Testing with last char value 33659 length=60
+Testing with last char value 33719 length=60
+Testing with last char value 33779 length=60
+Testing with last char value 33839 length=60
+Testing with last char value 33899 length=60
+Testing with last char value 33959 length=60
+Testing with last char value 34019 length=60
+Testing with last char value 34079 length=60
+Testing with last char value 34139 length=60
+Testing with last char value 34199 length=60
+Testing with last char value 34259 length=60
+Testing with last char value 34319 length=60
+Testing with last char value 34379 length=60
+Testing with last char value 34439 length=60
+Testing with last char value 34499 length=60
+Testing with last char value 34559 length=60
+Testing with last char value 34619 length=60
+Testing with last char value 34679 length=60
+Testing with last char value 34739 length=60
+Testing with last char value 34799 length=60
+Testing with last char value 34859 length=60
+Testing with last char value 34919 length=60
+Testing with last char value 34979 length=60
+Testing with last char value 35039 length=60
+Testing with last char value 35099 length=60
+Testing with last char value 35159 length=60
+Testing with last char value 35219 length=60
+Testing with last char value 35279 length=60
+Testing with last char value 35339 length=60
+Testing with last char value 35399 length=60
+Testing with last char value 35459 length=60
+Testing with last char value 35519 length=60
+Testing with last char value 35579 length=60
+Testing with last char value 35639 length=60
+Testing with last char value 35699 length=60
+Testing with last char value 35759 length=60
+Testing with last char value 35819 length=60
+Testing with last char value 35879 length=60
+Testing with last char value 35939 length=60
+Testing with last char value 35999 length=60
+Testing with last char value 36059 length=60
+Testing with last char value 36119 length=60
+Testing with last char value 36179 length=60
+Testing with last char value 36239 length=60
+Testing with last char value 36299 length=60
+Testing with last char value 36359 length=60
+Testing with last char value 36419 length=60
+Testing with last char value 36479 length=60
+Testing with last char value 36539 length=60
+Testing with last char value 36599 length=60
+Testing with last char value 36659 length=60
+Testing with last char value 36719 length=60
+Testing with last char value 36779 length=60
+Testing with last char value 36839 length=60
+Testing with last char value 36899 length=60
+Testing with last char value 36959 length=60
+Testing with last char value 37019 length=60
+Testing with last char value 37079 length=60
+Testing with last char value 37139 length=60
+Testing with last char value 37199 length=60
+Testing with last char value 37259 length=60
+Testing with last char value 37319 length=60
+Testing with last char value 37379 length=60
+Testing with last char value 37439 length=60
+Testing with last char value 37499 length=60
+Testing with last char value 37559 length=60
+Testing with last char value 37619 length=60
+Testing with last char value 37679 length=60
+Testing with last char value 37739 length=60
+Testing with last char value 37799 length=60
+Testing with last char value 37859 length=60
+Testing with last char value 37919 length=60
+Testing with last char value 37979 length=60
+Testing with last char value 38039 length=60
+Testing with last char value 38099 length=60
+Testing with last char value 38159 length=60
+Testing with last char value 38219 length=60
+Testing with last char value 38279 length=60
+Testing with last char value 38339 length=60
+Testing with last char value 38399 length=60
+Testing with last char value 38459 length=60
+Testing with last char value 38519 length=60
+Testing with last char value 38579 length=60
+Testing with last char value 38639 length=60
+Testing with last char value 38699 length=60
+Testing with last char value 38759 length=60
+Testing with last char value 38819 length=60
+Testing with last char value 38879 length=60
+Testing with last char value 38939 length=60
+Testing with last char value 38999 length=60
+Testing with last char value 39059 length=60
+Testing with last char value 39119 length=60
+Testing with last char value 39179 length=60
+Testing with last char value 39239 length=60
+Testing with last char value 39299 length=60
+Testing with last char value 39359 length=60
+Testing with last char value 39419 length=60
+Testing with last char value 39479 length=60
+Testing with last char value 39539 length=60
+Testing with last char value 39599 length=60
+Testing with last char value 39659 length=60
+Testing with last char value 39719 length=60
+Testing with last char value 39779 length=60
+Testing with last char value 39839 length=60
+Testing with last char value 39899 length=60
+Testing with last char value 39959 length=60
+Testing with last char value 40019 length=60
+Testing with last char value 40079 length=60
+Testing with last char value 40139 length=60
+Testing with last char value 40199 length=60
+Testing with last char value 40259 length=60
+Testing with last char value 40319 length=60
+Testing with last char value 40379 length=60
+Testing with last char value 40439 length=60
+Testing with last char value 40499 length=60
+Testing with last char value 40559 length=60
+Testing with last char value 40619 length=60
+Testing with last char value 40679 length=60
+Testing with last char value 40739 length=60
+Testing with last char value 40799 length=60
+Testing with last char value 40859 length=60
+Testing with last char value 40919 length=60
+Testing with last char value 40979 length=60
+Testing with last char value 41039 length=60
+Testing with last char value 41099 length=60
+Testing with last char value 41159 length=60
+Testing with last char value 41219 length=60
+Testing with last char value 41279 length=60
+Testing with last char value 41339 length=60
+Testing with last char value 41399 length=60
+Testing with last char value 41459 length=60
+Testing with last char value 41519 length=60
+Testing with last char value 41579 length=60
+Testing with last char value 41639 length=60
+Testing with last char value 41699 length=60
+Testing with last char value 41759 length=60
+Testing with last char value 41819 length=60
+Testing with last char value 41879 length=60
+Testing with last char value 41939 length=60
+Testing with last char value 41999 length=60
+Testing with last char value 42059 length=60
+Testing with last char value 42119 length=60
+Testing with last char value 42179 length=60
+Testing with last char value 42239 length=60
+Testing with last char value 42299 length=60
+Testing with last char value 42359 length=60
+Testing with last char value 42419 length=60
+Testing with last char value 42479 length=60
+Testing with last char value 42539 length=60
+Testing with last char value 42599 length=60
+Testing with last char value 42659 length=60
+Testing with last char value 42719 length=60
+Testing with last char value 42779 length=60
+Testing with last char value 42839 length=60
+Testing with last char value 42899 length=60
+Testing with last char value 42959 length=60
+Testing with last char value 43019 length=60
+Testing with last char value 43079 length=60
+Testing with last char value 43139 length=60
+Testing with last char value 43199 length=60
+Testing with last char value 43259 length=60
+Testing with last char value 43319 length=60
+Testing with last char value 43379 length=60
+Testing with last char value 43439 length=60
+Testing with last char value 43499 length=60
+Testing with last char value 43559 length=60
+Testing with last char value 43619 length=60
+Testing with last char value 43679 length=60
+Testing with last char value 43739 length=60
+Testing with last char value 43799 length=60
+Testing with last char value 43859 length=60
+Testing with last char value 43919 length=60
+Testing with last char value 43979 length=60
+Testing with last char value 44039 length=60
+Testing with last char value 44099 length=60
+Testing with last char value 44159 length=60
+Testing with last char value 44219 length=60
+Testing with last char value 44279 length=60
+Testing with last char value 44339 length=60
+Testing with last char value 44399 length=60
+Testing with last char value 44459 length=60
+Testing with last char value 44519 length=60
+Testing with last char value 44579 length=60
+Testing with last char value 44639 length=60
+Testing with last char value 44699 length=60
+Testing with last char value 44759 length=60
+Testing with last char value 44819 length=60
+Testing with last char value 44879 length=60
+Testing with last char value 44939 length=60
+Testing with last char value 44999 length=60
+Testing with last char value 45059 length=60
+Testing with last char value 45119 length=60
+Testing with last char value 45179 length=60
+Testing with last char value 45239 length=60
+Testing with last char value 45299 length=60
+Testing with last char value 45359 length=60
+Testing with last char value 45419 length=60
+Testing with last char value 45479 length=60
+Testing with last char value 45539 length=60
+Testing with last char value 45599 length=60
+Testing with last char value 45659 length=60
+Testing with last char value 45719 length=60
+Testing with last char value 45779 length=60
+Testing with last char value 45839 length=60
+Testing with last char value 45899 length=60
+Testing with last char value 45959 length=60
+Testing with last char value 46019 length=60
+Testing with last char value 46079 length=60
+Testing with last char value 46139 length=60
+Testing with last char value 46199 length=60
+Testing with last char value 46259 length=60
+Testing with last char value 46319 length=60
+Testing with last char value 46379 length=60
+Testing with last char value 46439 length=60
+Testing with last char value 46499 length=60
+Testing with last char value 46559 length=60
+Testing with last char value 46619 length=60
+Testing with last char value 46679 length=60
+Testing with last char value 46739 length=60
+Testing with last char value 46799 length=60
+Testing with last char value 46859 length=60
+Testing with last char value 46919 length=60
+Testing with last char value 46979 length=60
+Testing with last char value 47039 length=60
+Testing with last char value 47099 length=60
+Testing with last char value 47159 length=60
+Testing with last char value 47219 length=60
+Testing with last char value 47279 length=60
+Testing with last char value 47339 length=60
+Testing with last char value 47399 length=60
+Testing with last char value 47459 length=60
+Testing with last char value 47519 length=60
+Testing with last char value 47579 length=60
+Testing with last char value 47639 length=60
+Testing with last char value 47699 length=60
+Testing with last char value 47759 length=60
+Testing with last char value 47819 length=60
+Testing with last char value 47879 length=60
+Testing with last char value 47939 length=60
+Testing with last char value 47999 length=60
+Testing with last char value 48059 length=60
+Testing with last char value 48119 length=60
+Testing with last char value 48179 length=60
+Testing with last char value 48239 length=60
+Testing with last char value 48299 length=60
+Testing with last char value 48359 length=60
+Testing with last char value 48419 length=60
+Testing with last char value 48479 length=60
+Testing with last char value 48539 length=60
+Testing with last char value 48599 length=60
+Testing with last char value 48659 length=60
+Testing with last char value 48719 length=60
+Testing with last char value 48779 length=60
+Testing with last char value 48839 length=60
+Testing with last char value 48899 length=60
+Testing with last char value 48959 length=60
+Testing with last char value 49019 length=60
+Testing with last char value 49079 length=60
+Testing with last char value 49139 length=60
+Testing with last char value 49199 length=60
+Testing with last char value 49259 length=60
+Testing with last char value 49319 length=60
+Testing with last char value 49379 length=60
+Testing with last char value 49439 length=60
+Testing with last char value 49499 length=60
+Testing with last char value 49559 length=60
+Testing with last char value 49619 length=60
+Testing with last char value 49679 length=60
+Testing with last char value 49739 length=60
+Testing with last char value 49799 length=60
+Testing with last char value 49859 length=60
+Testing with last char value 49919 length=60
+Testing with last char value 49979 length=60
+Testing with last char value 50039 length=60
+Testing with last char value 50099 length=60
+Testing with last char value 50159 length=60
+Testing with last char value 50219 length=60
+Testing with last char value 50279 length=60
+Testing with last char value 50339 length=60
+Testing with last char value 50399 length=60
+Testing with last char value 50459 length=60
+Testing with last char value 50519 length=60
+Testing with last char value 50579 length=60
+Testing with last char value 50639 length=60
+Testing with last char value 50699 length=60
+Testing with last char value 50759 length=60
+Testing with last char value 50819 length=60
+Testing with last char value 50879 length=60
+Testing with last char value 50939 length=60
+Testing with last char value 50999 length=60
+Testing with last char value 51059 length=60
+Testing with last char value 51119 length=60
+Testing with last char value 51179 length=60
+Testing with last char value 51239 length=60
+Testing with last char value 51299 length=60
+Testing with last char value 51359 length=60
+Testing with last char value 51419 length=60
+Testing with last char value 51479 length=60
+Testing with last char value 51539 length=60
+Testing with last char value 51599 length=60
+Testing with last char value 51659 length=60
+Testing with last char value 51719 length=60
+Testing with last char value 51779 length=60
+Testing with last char value 51839 length=60
+Testing with last char value 51899 length=60
+Testing with last char value 51959 length=60
+Testing with last char value 52019 length=60
+Testing with last char value 52079 length=60
+Testing with last char value 52139 length=60
+Testing with last char value 52199 length=60
+Testing with last char value 52259 length=60
+Testing with last char value 52319 length=60
+Testing with last char value 52379 length=60
+Testing with last char value 52439 length=60
+Testing with last char value 52499 length=60
+Testing with last char value 52559 length=60
+Testing with last char value 52619 length=60
+Testing with last char value 52679 length=60
+Testing with last char value 52739 length=60
+Testing with last char value 52799 length=60
+Testing with last char value 52859 length=60
+Testing with last char value 52919 length=60
+Testing with last char value 52979 length=60
+Testing with last char value 53039 length=60
+Testing with last char value 53099 length=60
+Testing with last char value 53159 length=60
+Testing with last char value 53219 length=60
+Testing with last char value 53279 length=60
+Testing with last char value 53339 length=60
+Testing with last char value 53399 length=60
+Testing with last char value 53459 length=60
+Testing with last char value 53519 length=60
+Testing with last char value 53579 length=60
+Testing with last char value 53639 length=60
+Testing with last char value 53699 length=60
+Testing with last char value 53759 length=60
+Testing with last char value 53819 length=60
+Testing with last char value 53879 length=60
+Testing with last char value 53939 length=60
+Testing with last char value 53999 length=60
+Testing with last char value 54059 length=60
+Testing with last char value 54119 length=60
+Testing with last char value 54179 length=60
+Testing with last char value 54239 length=60
+Testing with last char value 54299 length=60
+Testing with last char value 54359 length=60
+Testing with last char value 54419 length=60
+Testing with last char value 54479 length=60
+Testing with last char value 54539 length=60
+Testing with last char value 54599 length=60
+Testing with last char value 54659 length=60
+Testing with last char value 54719 length=60
+Testing with last char value 54779 length=60
+Testing with last char value 54839 length=60
+Testing with last char value 54899 length=60
+Testing with last char value 54959 length=60
+Testing with last char value 55019 length=60
+Testing with last char value 55079 length=60
+Testing with last char value 55139 length=60
+Testing with last char value 55199 length=60
+Testing with last char value 55259 length=60
+Testing with last char value 55319 length=60
+Testing with last char value 55379 length=60
+Testing with last char value 55439 length=60
+Testing with last char value 55499 length=60
+Testing with last char value 55559 length=60
+Testing with last char value 55619 length=60
+Testing with last char value 55679 length=60
+Testing with last char value 55739 length=60
+Testing with last char value 55799 length=60
+Testing with last char value 55859 length=60
+Testing with last char value 55919 length=60
+Testing with last char value 55979 length=60
+Testing with last char value 56039 length=60
+Testing with last char value 56099 length=60
+Testing with last char value 56159 length=60
+Testing with last char value 56219 length=60
+Testing with last char value 56279 length=60
+Testing with last char value 56339 length=60
+Testing with last char value 56399 length=60
+Testing with last char value 56459 length=60
+Testing with last char value 56519 length=60
+Testing with last char value 56579 length=60
+Testing with last char value 56639 length=60
+Testing with last char value 56699 length=60
+Testing with last char value 56759 length=60
+Testing with last char value 56819 length=60
+Testing with last char value 56879 length=60
+Testing with last char value 56939 length=60
+Testing with last char value 56999 length=60
+Testing with last char value 57059 length=60
+Testing with last char value 57119 length=60
+Testing with last char value 57179 length=60
+Testing with last char value 57239 length=60
+Testing with last char value 57299 length=60
+Testing with last char value 57359 length=60
+Testing with last char value 57419 length=60
+Testing with last char value 57479 length=60
+Testing with last char value 57539 length=60
+Testing with last char value 57599 length=60
+Testing with last char value 57659 length=60
+Testing with last char value 57719 length=60
+Testing with last char value 57779 length=60
+Testing with last char value 57839 length=60
+Testing with last char value 57899 length=60
+Testing with last char value 57959 length=60
+Testing with last char value 58019 length=60
+Testing with last char value 58079 length=60
+Testing with last char value 58139 length=60
+Testing with last char value 58199 length=60
+Testing with last char value 58259 length=60
+Testing with last char value 58319 length=60
+Testing with last char value 58379 length=60
+Testing with last char value 58439 length=60
+Testing with last char value 58499 length=60
+Testing with last char value 58559 length=60
+Testing with last char value 58619 length=60
+Testing with last char value 58679 length=60
+Testing with last char value 58739 length=60
+Testing with last char value 58799 length=60
+Testing with last char value 58859 length=60
+Testing with last char value 58919 length=60
+Testing with last char value 58979 length=60
+Testing with last char value 59039 length=60
+Testing with last char value 59099 length=60
+Testing with last char value 59159 length=60
+Testing with last char value 59219 length=60
+Testing with last char value 59279 length=60
+Testing with last char value 59339 length=60
+Testing with last char value 59399 length=60
+Testing with last char value 59459 length=60
+Testing with last char value 59519 length=60
+Testing with last char value 59579 length=60
+Testing with last char value 59639 length=60
+Testing with last char value 59699 length=60
+Testing with last char value 59759 length=60
+Testing with last char value 59819 length=60
+Testing with last char value 59879 length=60
+Testing with last char value 59939 length=60
+Testing with last char value 59999 length=60
+Testing with last char value 60059 length=60
+Testing with last char value 60119 length=60
+Testing with last char value 60179 length=60
+Testing with last char value 60239 length=60
+Testing with last char value 60299 length=60
+Testing with last char value 60359 length=60
+Testing with last char value 60419 length=60
+Testing with last char value 60479 length=60
+Testing with last char value 60539 length=60
+Testing with last char value 60599 length=60
+Testing with last char value 60659 length=60
+Testing with last char value 60719 length=60
+Testing with last char value 60779 length=60
+Testing with last char value 60839 length=60
+Testing with last char value 60899 length=60
+Testing with last char value 60959 length=60
+Testing with last char value 61019 length=60
+Testing with last char value 61079 length=60
+Testing with last char value 61139 length=60
+Testing with last char value 61199 length=60
+Testing with last char value 61259 length=60
+Testing with last char value 61319 length=60
+Testing with last char value 61379 length=60
+Testing with last char value 61439 length=60
+Testing with last char value 61499 length=60
+Testing with last char value 61559 length=60
+Testing with last char value 61619 length=60
+Testing with last char value 61679 length=60
+Testing with last char value 61739 length=60
+Testing with last char value 61799 length=60
+Testing with last char value 61859 length=60
+Testing with last char value 61919 length=60
+Testing with last char value 61979 length=60
+Testing with last char value 62039 length=60
+Testing with last char value 62099 length=60
+Testing with last char value 62159 length=60
+Testing with last char value 62219 length=60
+Testing with last char value 62279 length=60
+Testing with last char value 62339 length=60
+Testing with last char value 62399 length=60
+Testing with last char value 62459 length=60
+Testing with last char value 62519 length=60
+Testing with last char value 62579 length=60
+Testing with last char value 62639 length=60
+Testing with last char value 62699 length=60
+Testing with last char value 62759 length=60
+Testing with last char value 62819 length=60
+Testing with last char value 62879 length=60
+Testing with last char value 62939 length=60
+Testing with last char value 62999 length=60
+Testing with last char value 63059 length=60
+Testing with last char value 63119 length=60
+Testing with last char value 63179 length=60
+Testing with last char value 63239 length=60
+Testing with last char value 63299 length=60
+Testing with last char value 63359 length=60
+Testing with last char value 63419 length=60
+Testing with last char value 63479 length=60
+Testing with last char value 63539 length=60
+Testing with last char value 63599 length=60
+Testing with last char value 63659 length=60
+Testing with last char value 63719 length=60
+Testing with last char value 63779 length=60
+Testing with last char value 63839 length=60
+Testing with last char value 63899 length=60
+Testing with last char value 63959 length=60
+Testing with last char value 64019 length=60
+Testing with last char value 64079 length=60
+Testing with last char value 64139 length=60
+Testing with last char value 64199 length=60
+Testing with last char value 64259 length=60
+Testing with last char value 64319 length=60
+Testing with last char value 64379 length=60
+Testing with last char value 64439 length=60
+Testing with last char value 64499 length=60
+Testing with last char value 64559 length=60
+Testing with last char value 64619 length=60
+Testing with last char value 64679 length=60
+Testing with last char value 64739 length=60
+Testing with last char value 64799 length=60
+Testing with last char value 64859 length=60
+Testing with last char value 64919 length=60
+Testing with last char value 64979 length=60
+Testing with last char value 65039 length=60
+Testing with last char value 65099 length=60
+Testing with last char value 65159 length=60
+Testing with last char value 65219 length=60
+Testing with last char value 65279 length=60
+Testing with last char value 65339 length=60
+Testing with last char value 65399 length=60
+Testing with last char value 65459 length=60
+Testing with last char value 65519 length=60
+Testing with last char value 65535 length=16
+Test CharUTF8 finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DB2IsolationLevels.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,541 @@
+ij> -- single user test for the various isolation levels
+-- also notice in the runtimestatistics output that Fetch Size is 16 for various isolation levels ie we are doing bulk fetch for all isolation levels
+-- this will test the fix for bug 5953 - which is to enable bulk fetching for RR and serializable isolation levels as well.
+prepare getIsolation as 'values current isolation';
+ij> autocommit off;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- create a table
+create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- insert a row
+insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> -- verify table scan gets row lock at read committed
+select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify table scan gets row lock at read committed
+select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- verify SET ISOLATION commits and changes isolation level
+set isolation RR;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RR  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation reset;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+ij> -- verify SET ISOLATION commits and changes isolation level
+set isolation read committed;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+CS  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set current isolation = reset;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+ij> -- verify SET ISOLATION commits and changes isolation level
+set current isolation = RS;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RS  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at repeatable read isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation to reset;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+ij> -- verify SET ISOLATION commits and changes isolation level
+set isolation = dirty read;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+UR  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at read uncommitted isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- test WITH ISOLATION clause
+set isolation serializable;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RR  
+ij> select * from t1 with CS;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with CS
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation cursor stability;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+CS  
+ij> select * from t1 with RR;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with RR
+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 Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RR  
+ij> select * from t1 with RS;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with RS
+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 Scan ResultSet for T1 using constraint ASDF at repeatable read isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set current isolation to read committed;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+CS  
+ij> select * from t1 with ur;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with ur
+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 Scan ResultSet for T1 using constraint ASDF at read uncommitted isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- unknown isolation level
+select * from t1 with rw;
+ERROR 42X01: Syntax error: Encountered "rw" at line 2, column 23.
+ij> select * from t1 with DIRTY READ;
+ERROR 42X01: Syntax error: Encountered "DIRTY" at line 1, column 23.
+ij> select * from t1 with READ UNCOMMITTED;
+ERROR 42X01: Syntax error: Encountered "READ" at line 1, column 23.
+ij> select * from t1 with READ COMMITTED;
+ERROR 42X01: Syntax error: Encountered "READ" at line 1, column 23.
+ij> select * from t1 with CURSOR STABILITY;
+ERROR 42X01: Syntax error: Encountered "CURSOR" at line 1, column 23.
+ij> select * from t1 with REPEATABLE READ;
+ERROR 42X01: Syntax error: Encountered "REPEATABLE" at line 1, column 23.
+ij> select * from t1 with SERIALIZABLE;
+ERROR 42X01: Syntax error: Encountered "SERIALIZABLE" at line 1, column 23.
+ij> -- check the db2 isolation levels can be used as identifiers
+create table db2iso(cs int, rr int, ur int, rs int);
+0 rows inserted/updated/deleted
+ij> select cs, rr, ur, rs from db2iso;
+CS         |RR         |UR         |RS         
+-----------------------------------------------
+ij> -- cleanup
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/NSinSameJVM.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/NSinSameJVM.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,9 @@
+main-NSinSameJVM: Cloudscape drivers loaded
+Server is ready to accept connections on port 20000.
+Connection number: 1.
+main-NSinSameJVM: NetworkServer started
+Connection number: 2.
+main-NSinSameJVM: Connected to database NSinSameJVMTestDB;create=true
+getting ready to shutdown
+Connection number: 3.
+Shutdown successful.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/big.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/big.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,174 @@
+ij> -- create table with row greater than 32K
+----- try with just one row of data - JCC may handle those differently?
+create table big(c1 varchar(10000), c2 varchar(10000), c3 varchar(10000), c4 varchar(10000));
+0 rows inserted/updated/deleted
+ij> create procedure INSERTDATA1(IN a int) language java parameter style java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.bigTestData';
+0 rows inserted/updated/deleted
+ij> prepare p1 as 'call INSERTDATA1(?)';
+ij> execute p1 using 'values 1';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> select * from big;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb& |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc& |ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd&
+ij> -- multiple rows of data
+execute p1 using 'values 2';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> select * from big;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb& |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc& |ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd&
+eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee& |fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff& |ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg& |hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh&
+ij> -- the overhead for DSS on QRYDTA is 15 bytes
+----- let's try a row which is exactly 32767 (default JCC queryblock size)
+drop table big;
+0 rows inserted/updated/deleted
+ij> create table big(c1 varchar(30000), c2 varchar(2752));
+0 rows inserted/updated/deleted
+ij> execute p1 using 'values 5';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> select * from big;
+C1 |C2                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&
+ij> -- what happens when the row + the ending SQLCARD is too big
+drop table big;
+0 rows inserted/updated/deleted
+ij> create table big(c1 varchar(30000), c2 varchar(2750));
+0 rows inserted/updated/deleted
+ij> execute p1 using 'values 6';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> select * from big;
+C1 |C2                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb&
+ij> -- let's try scrolling
+drop table big;
+0 rows inserted/updated/deleted
+ij> create table big(c1 varchar(10000), c2 varchar(10000), c3 varchar(10000), c4 varchar(10000));
+0 rows inserted/updated/deleted
+ij> execute p1 using 'values 1';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> execute p1 using 'values 2';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> execute p1 using 'values 3';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> execute p1 using 'values 4';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> get scroll insensitive cursor c1 as 'select * from big';
+ij> first c1;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb& |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc& |ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd&
+ij> next c1;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee& |fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff& |ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg& |hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh&
+ij> previous c1;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb& |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc& |ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd&
+ij> last c1;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm& |nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn& |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo& |ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp&
+ij> close c1;
+ij> -- try going directly to the last row
+get scroll insensitive cursor c1 as 'select * from big';
+ij> last c1;
+C1 |C2 |C3 |C4                                                                                                                              
+-----
+mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm& |nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn& |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo& |ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp&
+ij> close c1;
+ij> drop table big;
+0 rows inserted/updated/deleted
+ij> -- try a column which is > 32767
+create table big (c1 clob(40000));
+0 rows inserted/updated/deleted
+ij> execute p1 using 'values 7';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> select * from big;
+C1                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&
+ij> drop table big;
+0 rows inserted/updated/deleted
+ij> -- try several columns > 32767
+create table big (c1 clob(40000), c2 clob(40000), c3 clob(40000));
+0 rows inserted/updated/deleted
+ij> execute p1 using 'values 8';
+IJ WARNING: Autocommit may close using result set
+Statement executed.
+ij> select * from big;
+C1 |C2 |C3                                                                                                                              
+-----
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa& |bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb& |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc&
+ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd& |eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee& |fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff&
+ij> drop table big;
+0 rows inserted/updated/deleted
+ij> -- The tests below won't run with db2 compat mode.
+----- try java objects of different sizes
+----- create table big(s java.lang.String);
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+----- select * from big;
+----- drop table big;
+----- big long varchar
+----- create table big(lvc long varchar );
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64499));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',65500));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64501));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',66000));
+----- select * from big;
+----- drop table big;
+----- create table big(vc varchar(32767));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+----- select * from big;
+----- drop table big;
+----- create table big(lvc long bit varying );
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64499));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',65500));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64501));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',66000));
+----- select * from big;
+----- drop table big;
+----- create table big(vb bit varying(131072));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+----- These cannot be run until 4662 is fixed because we send 
+----- a big arg to the localization method..
+-----  insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+----- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+----- select * from big;
+----- drop table big;
+;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/callable.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/callable.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,37 @@
+CallableStatement Test Starts
+Sum of 6 and 9 is: 15
+return value: Square of 6 then plus 6 is: 42
+return value is: 55
+return short: 3
+return int: 4
+return long: 5
+return float: 6.0
+return double: 7.0
+return decimal: 88.880
+return date: 2002-05-12
+return time: 10:05:02
+return time stamp: xxxxxxFILTERED-TIMESTAMPxxxxx
+return byte[0]: 1
+return byte[1]: 2
+method 5 return decimal: 33.3330
+method 5 return decimal: -33332.9966
+method 5 return decimal: -966.6669
+method 5 return decimal: 0.0000
+method 5 return decimal: 0.0000
+method 5 return decimal: 99999999.0000
+method 5 return decimal: -99999999.0000
+Integer: Sum of 6 and 9 is: 15
+Short: Sum of 6 and 9 is: 15
+Long: Sum of 99999 and 88888888 is: 88988887
+Float: Sum of 6.123453 and 77777 is: 77783.125
+Double: Sum of 6.987654 and 8888888888888.01234 is: 8.888888888894135E12
+Time: Old time of 10:05:02 changed to: 11:06:03
+cstmt.getBigDecimal(1): 999999999999999.000000000000000
+cstmt.getBigDecimal(2): 0.000000000000001
+cstmt.getBigDecimal(3): null
+get the CallableStatement object
+execute the procedure with LONGVARBINARY
+execute the procedure with BLOB
+Select lvbc from Longvarbinary_Tab
+done testing long varbinary
+CallableStatement Test Ends

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dataSourcePermissions_net.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dataSourcePermissions_net.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,38 @@
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+Checking authentication with DriverManager
+EXPECTED CONNFAIL null userid not supported
+EXPECTED CONNFAIL Connection authorization failure occurred.  Reason: userid invalid.
+DS connected as EDWARD
+DS connected as FRANCES
+Checking connections with DataSource
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+data source with no default user
+EXPECTED CONNFAIL null userid not supported
+EXPECTED CONNFAIL Connection authorization failure occurred.  Reason: userid invalid.
+DS connected as EDWARD
+DS connected as FRANCES
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+data source with invalid default user
+EXPECTED CONNFAIL Connection authorization failure occurred.  Reason: userid invalid.
+DS connected as FRANCES
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+data source with valid default user
+DS connected as EDWARD
+DS connected as FRANCES
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+Checking connections with ConnectionPoolDataSource
+ConnectionPoolDataSource with no default user
+EXPECTED CONNFAIL null userid not supported
+EXPECTED CONNFAIL Connection authorization failure occurred.  Reason: userid invalid.
+CP connected as EDWARD
+CP connected as FRANCES
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+ConnectionPoolDataSource with invalid default user
+EXPECTED CONNFAIL Connection authorization failure occurred.  Reason: userid invalid.
+CP connected as FRANCES
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+ConnectionPoolDataSource with valid default user
+CP connected as EDWARD
+CP connected as FRANCES
+EXPECTED SHUTDOWN DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: wombat08006.DDatabase 'wombat' shutdown.((server log XXX)
+Completed dataSourcePermissions_net

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/dblook_test_net.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1790 @@
+-----= Start dblook (net server) Test. =-
+Creating database 'wombat' from ddl script 'dblook_makeDB.sql'
+-----
+*******************************************
+Dumping DDL for all objects, using
+Network Server:
+*******************************************
+File dblook.log was empty.
+Creating database 'wombat_new' from ddl script 'wombat.sql'
+Dumping system tables for 'wombat_new'
+-----=================---------------
+System Tables for: wombat_new
+-----=================---------------
+========== SYSALIASES ==========
+<systemid>
+"proc "In Quotes with spaces"
+APP
+org.apache.derbyTesting.functionTests.util.ProcedureTest
+P
+P
+false
+inoutparams3(INOUT A CHAR(10),IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA DYNAMIC RESULT SETS 2
+<systemname>
+-----
+<systemid>
+OP4
+BAR
+org.apache.derbyTesting.functionTests.util.ProcedureTest
+P
+P
+false
+inoutparams4(OUT A DECIMAL(4,2),IN B VARCHAR(255)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+<systemname>
+-----
+<systemid>
+PROC1
+APP
+org.apache.derbyTesting.functionTests.util.ProcedureTest
+P
+P
+false
+inoutparams3(INOUT A CHAR(10),IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL DYNAMIC RESULT SETS 4
+<systemname>
+-----
+<systemid>
+PROC2
+Foo Bar
+org.apache.derbyTesting.functionTests.util.ProcedureTest
+P
+P
+false
+sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+<systemname>
+-----
+<systemid>
+SQQLCONTROL_1
+FOO
+org.apache.derbyTesting.functionTests.util.ProcedureTest
+P
+P
+false
+sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+<systemname>
+-----
+<systemid>
+procTwo
+APP
+org.apache.derbyTesting.functionTests.util.ProcedureTest
+P
+P
+false
+inoutparams3(INOUT A CHAR(10),IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA DYNAMIC RESULT SETS 2
+<systemname>
+-----
+========== SYSCHECKS ==========
+<systemname>
+(i > 0)
+(2)
+-----
+"ck2
+("""iq2" > 0)
+(2)
+-----
+NOTEVIL
+(vc != 'evil')
+(3)
+-----
+c"k1
+("i""q2" > 4)
+(2)
+-----
+chkOne
+(k < 0)
+(2)
+-----
+ck2"
+("iq2""" > 4)
+(2)
+-----
+========== SYSCOLUMNS ==========
+----- Columns for Tables ---
+"tquoteTwo
+"iq1
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+"tquoteTwo
+"iq2
+2
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+MULTI WORD NAME
+C
+1
+CHAR(2)
+null
+null
+<autoincval>
+null
+null
+-----
+REMOVED
+X
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+T10
+K
+2
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T10
+UK
+3
+CHAR(3) NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T10
+VACH
+1
+VARCHAR(12)
+null
+null
+<autoincval>
+null
+null
+-----
+T11
+LOLA
+2
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+T11
+MYCHAR
+1
+CHAR(8)
+null
+null
+<autoincval>
+null
+null
+-----
+T1
+C
+2
+CHAR(8)
+null
+null
+<autoincval>
+null
+null
+-----
+T1
+C
+2
+CLOB(15)
+null
+null
+<autoincval>
+null
+null
+-----
+T1
+D
+3
+DATE
+null
+null
+<autoincval>
+null
+null
+-----
+T1
+F
+4
+DOUBLE NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T1
+I
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+T1
+P1
+1
+VARCHAR(10) NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T2
+B
+2
+BLOB(20)
+null
+null
+<autoincval>
+null
+null
+-----
+T2
+C
+3
+CLOB(15)
+null
+null
+<autoincval>
+null
+null
+-----
+T2
+P1
+1
+VARCHAR(10)
+null
+null
+<autoincval>
+null
+null
+-----
+T3
+B
+2
+BLOB(20)
+null
+null
+<autoincval>
+null
+null
+-----
+T3
+ID
+3
+INTEGER NOT NULL
+null
+null
+<autoincval>
+2
+4
+-----
+T3
+P1
+1
+VARCHAR(10)
+'okie'
+<systemid>
+<autoincval>
+null
+null
+-----
+T4
+I
+1
+INTEGER
+2
+<systemid>
+<autoincval>
+null
+null
+-----
+T4
+J
+2
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T4
+K
+3
+INTEGER NOT NULL
+null
+null
+<autoincval>
+1
+1
+-----
+T5
+COST
+1
+DOUBLE
+null
+null
+<autoincval>
+null
+null
+-----
+T6
+LETTER
+2
+CHAR(1)
+null
+null
+<autoincval>
+null
+null
+-----
+T6
+NUM
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+T7
+DEUX
+2
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+T7
+UN
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+T8
+FKCHAR
+2
+CHAR(5)
+null
+null
+<autoincval>
+null
+null
+-----
+T8
+SOMEINT
+1
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T8T1T4
+C1
+1
+CHAR(4)
+'okie'
+<systemid>
+<autoincval>
+null
+null
+-----
+T8T1T4
+C2
+2
+CHAR(4)
+'doki'
+<systemid>
+<autoincval>
+null
+null
+-----
+T9
+CH
+2
+CHAR(8) NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+T9
+FKINT
+1
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+V"3
+I
+1
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+V1
+DEE
+2
+CHAR(8)
+null
+null
+<autoincval>
+null
+null
+-----
+V1
+DOKIE
+3
+VARCHAR(10)
+null
+null
+<autoincval>
+null
+null
+-----
+V1
+DOO
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+V1
+DUM
+1
+DATE
+null
+null
+<autoincval>
+null
+null
+-----
+V1
+DWA
+2
+CHAR(1)
+null
+null
+<autoincval>
+null
+null
+-----
+V2
+C
+2
+CLOB(15)
+null
+null
+<autoincval>
+null
+null
+-----
+V2
+P1
+1
+VARCHAR(10) NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+X
+X
+1
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+tWithKeys
+C
+1
+CHAR(5) NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+tWithKeys
+I
+2
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+tWithKeys
+VC
+3
+VARCHAR(10)
+null
+null
+<autoincval>
+null
+null
+-----
+tee""Hee
+N
+1
+CHAR(1) NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+tquote"One
+i"q1
+1
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+tquote"One
+i"q2
+2
+INTEGER
+8
+<systemid>
+<autoincval>
+null
+null
+-----
+tquoteThree"
+iq1"
+1
+INTEGER NOT NULL
+null
+null
+<autoincval>
+null
+null
+-----
+tquoteThree"
+iq2"
+2
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+viewTwo
+LOLA
+2
+INTEGER
+null
+null
+<autoincval>
+null
+null
+-----
+viewTwo
+MYCHAR
+1
+CHAR(8)
+null
+null
+<autoincval>
+null
+null
+-----
+----- Columns for Statements ---
+========== SYSCONGLOMERATES ==========
+"Quoted"Schema"
+tee""Hee
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (1)
+true
+<systemid>
+-----
+"Quoted"Schema"
+tee""Hee
+<systemnumber>
+Ix"5
+true
+BTREE (1 DESC)
+false
+<systemid>
+-----
+"Quoted"Schema"
+tee""Hee
+<systemnumber>
+tee""Hee
+false
+null
+false
+<systemid>
+-----
+APP
+"tquoteTwo
+<systemnumber>
+<systemname>
+true
+BTREE (1)
+true
+<systemid>
+-----
+APP
+"tquoteTwo
+<systemnumber>
+"tquoteTwo
+false
+null
+false
+<systemid>
+-----
+APP
+REMOVED
+<systemnumber>
+REMOVED
+false
+null
+false
+<systemid>
+-----
+APP
+T11
+<systemnumber>
+<systemname>
+true
+BTREE (1, 2)
+true
+<systemid>
+-----
+APP
+T11
+<systemnumber>
+T11
+false
+null
+false
+<systemid>
+-----
+APP
+T1
+<systemnumber>
+IX1
+true
+BTREE (4, 1)
+false
+<systemid>
+-----
+APP
+T1
+<systemnumber>
+T1
+false
+null
+false
+<systemid>
+-----
+APP
+T2
+<systemnumber>
+T2
+false
+null
+false
+<systemid>
+-----
+APP
+T8T1T4
+<systemnumber>
+T8T1T4
+false
+null
+false
+<systemid>
+-----
+APP
+X
+<systemnumber>
+X
+false
+null
+false
+<systemid>
+-----
+APP
+tquote"One
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (1)
+true
+<systemid>
+-----
+APP
+tquote"One
+<systemnumber>
+tquote"One
+false
+null
+false
+<systemid>
+-----
+APP
+tquoteThree"
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (1)
+true
+<systemid>
+-----
+APP
+tquoteThree"
+<systemnumber>
+tquoteThree"
+false
+null
+false
+<systemid>
+-----
+BAR
+MULTI WORD NAME
+<systemnumber>
+MULTI WORD NAME
+false
+null
+false
+<systemid>
+-----
+BAR
+T1
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (1)
+true
+<systemid>
+-----
+BAR
+T1
+<systemnumber>
+T1
+false
+null
+false
+<systemid>
+-----
+BAR
+T3
+<systemnumber>
+IX2
+true
+BTREE (1 DESC, 3 DESC)
+false
+<systemid>
+-----
+BAR
+T3
+<systemnumber>
+T3
+false
+null
+false
+<systemid>
+-----
+BAR
+T4
+<systemnumber>
+IX4
+true
+UNIQUE BTREE (3)
+false
+<systemid>
+-----
+BAR
+T4
+<systemnumber>
+T4
+false
+null
+false
+<systemid>
+-----
+BAR
+T8
+<systemnumber>
+<systemname>
+true
+BTREE (2)
+true
+<systemid>
+-----
+BAR
+T8
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (1)
+true
+<systemid>
+-----
+BAR
+T8
+<systemnumber>
+T8
+false
+null
+false
+<systemid>
+-----
+BAR
+tWithKeys
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (1)
+true
+<systemid>
+-----
+BAR
+tWithKeys
+<systemnumber>
+IX3
+true
+BTREE (1 DESC)
+false
+<systemid>
+-----
+BAR
+tWithKeys
+<systemnumber>
+tWithKeys
+false
+null
+false
+<systemid>
+-----
+FOO
+T10
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (2)
+true
+<systemid>
+-----
+FOO
+T10
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (3)
+true
+<systemid>
+-----
+FOO
+T10
+<systemnumber>
+T10
+false
+null
+false
+<systemid>
+-----
+FOO
+T9
+<systemnumber>
+<systemname>
+true
+BTREE (1)
+true
+<systemid>
+-----
+FOO
+T9
+<systemnumber>
+<systemname>
+true
+UNIQUE BTREE (2, 1)
+true
+<systemid>
+-----
+FOO
+T9
+<systemnumber>
+T9
+false
+null
+false
+<systemid>
+-----
+Foo Bar
+T5
+<systemnumber>
+CostIndex
+true
+UNIQUE BTREE (1)
+false
+<systemid>
+-----
+Foo Bar
+T5
+<systemnumber>
+T5
+false
+null
+false
+<systemid>
+-----
+Foo Bar
+T6
+<systemnumber>
+T6
+false
+null
+false
+<systemid>
+-----
+Foo Bar
+T7
+<systemnumber>
+T7
+false
+null
+false
+<systemid>
+-----
+========== SYSCONSTRAINTS ==========
+"ck2
+"tquoteTwo
+"ck2
+C
+APP
+E
+0
+-----
+"effkay1
+"tquoteTwo
+"effkay1
+F
+APP
+E
+0
+-----
+<systemname>
+T10
+<systemname>
+P
+FOO
+E
+1
+-----
+<systemname>
+T10
+<systemname>
+U
+FOO
+E
+0
+-----
+<systemname>
+T8
+<systemname>
+F
+BAR
+E
+0
+-----
+<systemname>
+T8
+<systemname>
+P
+BAR
+E
+0
+-----
+<systemname>
+tWithKeys
+<systemname>
+C
+BAR
+E
+0
+-----
+<systemname>
+tWithKeys
+<systemname>
+P
+BAR
+E
+1
+-----
+NOTEVIL
+tWithKeys
+NOTEVIL
+C
+BAR
+E
+0
+-----
+<systemname>
+T11
+<systemname>
+F
+APP
+E
+0
+-----
+UNQ
+T1
+UNQ
+U
+BAR
+E
+0
+-----
+c"k1
+tquote"One
+c"k1
+C
+APP
+E
+0
+-----
+chkOne
+T10
+chkOne
+C
+FOO
+E
+0
+-----
+ck2"
+tquoteThree"
+ck2"
+C
+APP
+E
+0
+-----
+fkOne
+T9
+fkOne
+F
+FOO
+E
+0
+-----
+pee"kay1
+tquote"One
+pee"kay1
+P
+APP
+E
+1
+-----
+pkTwo
+T9
+pkTwo
+P
+FOO
+E
+1
+-----
+<systemname>
+tee""Hee
+<systemname>
+P
+"Quoted"Schema"
+E
+0
+-----
+unqkay1"
+tquoteThree"
+unqkay1"
+U
+APP
+E
+0
+-----
+========== SYSDEPENDS ==========
+"effkay1
+<Constraint>APP."effkay1 -> <Constraint>APP.pee"kay1
+Constraint
+pee"kay1
+Constraint
+-----
+<systemname>
+<Constraint>APP.<sysname> -> <Constraint>FOO.pkTwo
+Constraint
+pkTwo
+Constraint
+-----
+<systemname>
+<Constraint>BAR.<sysname> -> <Constraint>BAR.<sysname>
+Constraint
+<systemname>
+Constraint
+-----
+fkOne
+<Constraint>FOO.fkOne -> <Constraint>FOO.<sysname>
+Constraint
+<systemname>
+Constraint
+-----
+<systemid>
+<StoredPreparedStatement>"Quoted"Schema".<sysname> -> <Table>"Quoted"Schema".tee""Hee
+StoredPreparedStatement
+tee""Hee
+Table
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <ColumnsInTable>BAR.T4
+StoredPreparedStatement
+T4
+ColumnsInTable
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <ColumnsInTable>BAR.tWithKeys
+StoredPreparedStatement
+tWithKeys
+ColumnsInTable
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Conglomerate>APP.<sysname>
+StoredPreparedStatement
+<systemid>
+Conglomerate
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Conglomerate>BAR.<sysname>
+StoredPreparedStatement
+<systemid>
+Conglomerate
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Conglomerate>BAR.IX3
+StoredPreparedStatement
+<systemid>
+Conglomerate
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Table>APP.REMOVED
+StoredPreparedStatement
+REMOVED
+Table
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Table>APP.X
+StoredPreparedStatement
+X
+Table
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Table>BAR.T3
+StoredPreparedStatement
+T3
+Table
+-----
+<systemid>
+<StoredPreparedStatement>APP.<sysname> -> <Table>BAR.tWithKeys
+StoredPreparedStatement
+tWithKeys
+Table
+-----
+<systemid>
+<StoredPreparedStatement>BAR.<sysname> -> <Table>BAR.T8
+StoredPreparedStatement
+T8
+Table
+-----
+<systemid>
+<StoredPreparedStatement>Foo Bar.<sysname> -> <Table>BAR.T1
+StoredPreparedStatement
+T1
+Table
+-----
+<systemid>
+<Trigger>"Quoted"Schema"."trig"One" -> <StoredPreparedStatement>"Quoted"Schema".<sysname>
+Trigger
+<systemid>
+StoredPreparedStatement
+-----
+<systemid>
+<Trigger>"Quoted"Schema"."trig"One" -> <Table>"Quoted"Schema".tee""Hee
+Trigger
+tee""Hee
+Table
+-----
+<systemid>
+<Trigger>APP.TRIGFOUR -> <StoredPreparedStatement>APP.<sysname>
+Trigger
+<systemid>
+StoredPreparedStatement
+-----
+<systemid>
+<Trigger>APP.TRIGFOUR -> <Table>APP.X
+Trigger
+X
+Table
+-----
+<systemid>
+<Trigger>APP.TRIGONE -> <StoredPreparedStatement>APP.<sysname>
+Trigger
+<systemid>
+StoredPreparedStatement
+-----
+<systemid>
+<Trigger>APP.TRIGONE -> <Table>BAR.T3
+Trigger
+T3
+Table
+-----
+<systemid>
+<Trigger>APP.TrigThree -> <StoredPreparedStatement>APP.<sysname>
+Trigger
+<systemid>
+StoredPreparedStatement
+-----
+<systemid>
+<Trigger>APP.TrigThree -> <Table>BAR.tWithKeys
+Trigger
+tWithKeys
+Table
+-----
+<systemid>
+<Trigger>BAR.REFTRIG -> <StoredPreparedStatement>BAR.<sysname>
+Trigger
+<systemid>
+StoredPreparedStatement
+-----
+<systemid>
+<Trigger>BAR.REFTRIG -> <Table>BAR.T8
+Trigger
+T8
+Table
+-----
+<systemid>
+<Trigger>Foo Bar.TRIG2 -> <StoredPreparedStatement>Foo Bar.<sysname>
+Trigger
+<systemid>
+StoredPreparedStatement
+-----
+<systemid>
+<Trigger>Foo Bar.TRIG2 -> <Table>BAR.T1
+Trigger
+T1
+Table
+-----
+V1
+<View>APP.V1 -> <ColumnsInTable>APP.T1
+View
+T1
+ColumnsInTable
+-----
+V1
+<View>APP.V1 -> <ColumnsInTable>BAR.T3
+View
+T3
+ColumnsInTable
+-----
+V2
+<View>APP.V2 -> <ColumnsInTable>BAR.T1
+View
+T1
+ColumnsInTable
+-----
+viewTwo
+<View>BAR.viewTwo -> <ColumnsInTable>APP.T11
+View
+T11
+ColumnsInTable
+-----
+V1
+<View>FOO.V1 -> <ColumnsInTable>Foo Bar.T6
+View
+T6
+ColumnsInTable
+-----
+========== SYSFILES ==========
+<systemid>
+FOO
+FOOJAR
+<systemnumber>
+-----
+========== SYSFOREIGNKEYS ==========
+<systemname>
+<systemid>
+<systemname>
+U
+R
+-----
+"effkay1
+<systemid>
+pee"kay1
+R
+R
+-----
+fkOne
+<systemid>
+<systemname>
+R
+S
+-----
+<systemname>
+<systemid>
+pkTwo
+R
+R
+-----
+========== SYSKEYS ==========
+<systemname>
+<systemid>
+-----
+<systemname>
+<systemid>
+-----
+<systemname>
+<systemid>
+-----
+<systemname>
+<systemid>
+-----
+<systemname>
+<systemid>
+-----
+UNQ
+<systemid>
+-----
+pee"kay1
+<systemid>
+-----
+pkTwo
+<systemid>
+-----
+unqkay1"
+<systemid>
+-----
+========== SYSSCHEMAS ==========
+"Quoted"Schema"
+"Quoted"Schema"
+APP
+-----
+APP
+APP
+APP
+-----
+BAR
+BAR
+APP
+-----
+FOO
+FOO
+APP
+-----
+Foo Bar
+Foo Bar
+APP
+-----
+========== SYSSTATEMENTS ==========
+<systemid>
+<systemname>
+APP
+T
+<validityflag>
+insert into removed select * from new org.apache.derby.catalog.TriggerOldTransitionRows() OLD  where x not in (select x from new org.apache.derby.catalog.TriggerNewTransitionRows() NEW  where x < 10)
+<systemid>
+APP
+null
+-----
+<systemid>
+<systemname>
+APP
+T
+<validityflag>
+select c from bar."tWithKeys"
+<systemid>
+APP
+null
+-----
+<systemid>
+<systemname>
+APP
+T
+<validityflag>
+update bar.t4 set j=8 where i=2
+<systemid>
+APP
+null
+-----
+<systemid>
+<systemname>
+"Quoted"Schema"
+T
+<validityflag>
+values(8)
+<systemid>
+APP
+null
+-----
+<systemid>
+<systemname>
+BAR
+T
+<validityflag>
+select * from new org.apache.derby.catalog.TriggerOldTransitionRows() OLDTABLE 
+<systemid>
+APP
+null
+-----
+<systemid>
+<systemname>
+Foo Bar
+T
+<validityflag>
+values (1), (2)
+<systemid>
+APP
+null
+-----
+========== SYSTABLES ==========
+"tquoteTwo
+"tquoteTwo
+T
+APP
+R
+-----
+MULTI WORD NAME
+MULTI WORD NAME
+T
+BAR
+R
+-----
+REMOVED
+REMOVED
+T
+APP
+R
+-----
+T10
+T10
+T
+FOO
+R
+-----
+T11
+T11
+T
+APP
+R
+-----
+T1
+T1
+T
+APP
+R
+-----
+T1
+T1
+T
+BAR
+R
+-----
+T2
+T2
+T
+APP
+R
+-----
+T3
+T3
+T
+BAR
+R
+-----
+T4
+T4
+T
+BAR
+R
+-----
+T5
+T5
+T
+Foo Bar
+R
+-----
+T6
+T6
+T
+Foo Bar
+R
+-----
+T7
+T7
+T
+Foo Bar
+R
+-----
+T8T1T4
+T8T1T4
+T
+APP
+R
+-----
+T8
+T8
+T
+BAR
+R
+-----
+T9
+T9
+T
+FOO
+R
+-----
+V"3
+V"3
+V
+APP
+R
+-----
+V1
+V1
+V
+APP
+R
+-----
+V1
+V1
+V
+FOO
+R
+-----
+V2
+V2
+V
+APP
+R
+-----
+X
+X
+T
+APP
+R
+-----
+tWithKeys
+tWithKeys
+T
+BAR
+R
+-----
+tee""Hee
+tee""Hee
+T
+"Quoted"Schema"
+R
+-----
+tquote"One
+tquote"One
+T
+APP
+R
+-----
+tquoteThree"
+tquoteThree"
+T
+APP
+R
+-----
+viewTwo
+viewTwo
+V
+BAR
+R
+-----
+========== SYSTRIGGERS ==========
+<systemid>
+"trig"One"
+"Quoted"Schema"
+<systemid>
+I
+A
+R
+E
+tee""Hee
+null
+<systemid>
+null
+values(8)
+false
+false
+null
+null
+-----
+<systemid>
+REFTRIG
+BAR
+<systemid>
+D
+A
+S
+E
+T8
+null
+<systemid>
+null
+select * from oldtable
+true
+false
+OLDTABLE
+null
+-----
+<systemid>
+TRIG2
+Foo Bar
+<systemid>
+D
+B
+S
+E
+T1
+null
+<systemid>
+null
+values (1), (2)
+false
+false
+null
+null
+-----
+<systemid>
+TRIGFOUR
+APP
+<systemid>
+U
+A
+S
+E
+X
+null
+<systemid>
+(1)
+insert into removed select * from old where x not in (select x from new where x < 10)
+true
+true
+OLD
+NEW
+-----
+<systemid>
+TRIGONE
+APP
+<systemid>
+I
+A
+R
+E
+T3
+null
+<systemid>
+null
+update bar.t4 set j=8 where i=2
+false
+false
+null
+null
+-----
+<systemid>
+TrigThree
+APP
+<systemid>
+U
+A
+R
+E
+tWithKeys
+null
+<systemid>
+(1,2)
+select c from bar."tWithKeys"
+false
+false
+null
+null
+-----
+========== SYSVIEWS ==========
+V"3
+create view "V""3"(i) as values (8), (28), (78)
+N
+APP
+-----
+V1
+create view v1 (dum, dee, dokie) as select a.d, a.c, b.p1 from t1 as a, bar.t3 as b
+N
+APP
+-----
+V1
+create view v1 (doo, dwa) as select num, letter from "Foo Bar".t6
+N
+FOO
+-----
+V2
+create view v2 as select * from bar.t1
+N
+APP
+-----
+viewTwo
+create view bar."viewTwo" as select * from app.t11
+N
+APP
+-----
+Database 'wombat_new' deleted.
+[ Done. ]

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/forupdate.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/forupdate.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,514 @@
+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 not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it 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 not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it 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 on 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 on 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 on this type of statement.
+ij> select i from t1 where exists (select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> select i from t1 where exists (select s from t2) for update;
+ERROR 42Y90: FOR UPDATE is not permitted on 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 on 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 on 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 on this type of statement.
+ij> select * from (select i, d from t1) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> select * from (select i+10, d from t1) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted on 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 on this type of statement.
+ij> values (1, 2, 3) for update;
+ERROR 42Y90: FOR UPDATE is not permitted on 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 on this type of statement.
+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;
+No current row
+ij> -- this will get a target table mismatch error, it uses the correlation name:
+delete from s1 where current of c4;
+ERROR (no SQLState): Invalid cursor name "C4" in the Update/Delete statement.
+ij> -- this will compile and get a 'no current row' error, it uses the table name:
+delete from t1 where current of c4;
+ERROR (no SQLState): Invalid cursor name "C4" in the Update/Delete statement.
+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 not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it 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> -- 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: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/holdCursorIJ.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/holdCursorIJ.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,300 @@
+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> -- 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> -- 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
+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
+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
+close jdk4;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+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
+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
+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> -- 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
+set isolation RS;
+ERROR X0X03: Invalid transaction state - held cursor requires same isolation level
+ij> -- following should fail because of cursor jdk4
+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> -- 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_CURSH200C2' 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_CURSH200C2' 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> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/metadata.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/metadata.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,471 @@
+Test metadata starting
+Column display size of the union result is: 12
+dec(10,2) -- precision: 10 scale: 2 display size: 12 type name: DECIMAL
+dec(10,2) -- precision: 10 scale: 2 display size: 12 type name: DECIMAL
+real + dec(10,2) -- precision: 7 scale: 0 display size: 13 type name: REAL
+double precision - dec(10,2) -- precision: 15 scale: 0 display size: 22 type name: DOUBLE
+dec(10,2) - double precision -- precision: 15 scale: 2 display size: 22 type name: DOUBLE
+result row: 11.10 11.10 14.4 -6.699999999999999 6.699999999999999
+Column result scale after division is: 23
+dc / 2 = 5.55000000000000000000000
+dc / 2 = 5.55500000000000000000000
+JDBC Driver 'IBM DB2 JDBC Universal Driver Architecture', version (EXPECTED VERSION)
+The URL is: jdbc:derby:net://localhost:1527/wombat;create=true
+allTablesAreSelectable(): true
+maxColumnNameLength(): 30
+getSchemas():
+TABLE_SCHEM
+APP
+NULLID
+SQLJ
+SYS
+SYSCAT
+SYSCS_DIAG
+SYSCS_UTIL
+SYSFUN
+SYSIBM
+SYSPROC
+SYSSTAT
+getCatalogs():
+TABLE_CAT
+getSearchStringEscape(): 
+getSQLKeywords(): ALIAS,BIGINT,BOOLEAN,CALL,CLASS,COPY,DB2J_DEBUG,EXECUTE,EXPLAIN,FILE,FILTER,GETCURRENTCONNECTION,INDEX,INSTANCEOF,METHOD,NEW,OFF,PROPERTIES,PUBLICATION,RECOMPILE,REFRESH,RENAME,RUNTIMESTATISTICS,STATEMENT,STATISTICS,TIMING,WAIT
+getDefaultTransactionIsolation(): 2
+getProcedures():
+PROCEDURE_CAT,PROCEDURE_SCHEM,PROCEDURE_NAME,RESERVED1,RESERVED2,RESERVED3,REMARKS,PROCEDURE_TYPE
+,APP,GETPCTEST1,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST2,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST3A,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST3B,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST4A,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4a,1
+,APP,GETPCTEST4B,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4b,1
+,APP,GETPCTEST4BX,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4b,1
+allProceduresAreCallable(): true
+getUserName(): APP
+isReadOnly(): false
+nullsAreSortedHigh(): true
+nullsAreSortedLow(): false
+nullsAreSortedAtStart(): false
+nullsAreSortedAtEnd(): false
+getDatabaseProductName(): Apache Derby
+getDatabaseProductVersion(): 10.0.2.1
+getDriverVersion(): EXPECTED VERSION
+usesLocalFiles(): true
+usesLocalFilePerTable(): true
+supportsMixedCaseIdentifiers(): false
+storesUpperCaseIdentifiers(): true
+storesLowerCaseIdentifiers(): false
+storesMixedCaseIdentifiers(): false
+supportsMixedCaseQuotedIdentifiers(): true
+storesUpperCaseQuotedIdentifiers(): false
+storesLowerCaseQuotedIdentifiers(): false
+storesMixedCaseQuotedIdentifiers(): true
+getIdentifierQuoteString(): "
+getNumericFunctions(): ABS,SQRT
+getStringFunctions(): LENGTH,LOWER,LTRIM,RTRIM,SUBSTR,SUBSTRING,UPPER
+getSystemFunctions(): CURRENT_USER,getCurrentConnection,runTimeStatistics,SESSION_USER,USER,CURRENT SCHEMA
+getTimeDateFunctions(): CURDATE,CURTIME,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,EXTRACT
+getExtraNameCharacters(): 
+supportsAlterTableWithAddColumn(): true
+supportsAlterTableWithDropColumn(): true
+supportsColumnAliasing(): true
+nullPlusNonNullIsNull(): true
+supportsConvert(): true
+supportsConvert(Types.INTEGER, Types.SMALLINT): false
+supportsTableCorrelationNames(): true
+supportsDifferentTableCorrelationNames(): true
+supportsExpressionsInOrderBy(): false
+supportsOrderByUnrelated(): false
+supportsGroupBy(): true
+supportsGroupByUnrelated(): true
+supportsGroupByBeyondSelect(): true
+supportsLikeEscapeClause(): true
+supportsMultipleResultSets(): true
+supportsMultipleTransactions(): true
+supportsNonNullableColumns(): true
+supportsMinimumSQLGrammar(): true
+supportsCoreSQLGrammar(): false
+supportsExtendedSQLGrammar(): false
+supportsANSI92EntryLevelSQL(): true
+supportsANSI92IntermediateSQL(): false
+supportsANSI92FullSQL(): false
+supportsIntegrityEnhancementFacility(): false
+supportsOuterJoins(): true
+supportsFullOuterJoins(): false
+supportsLimitedOuterJoins(): true
+getSchemaTerm(): SCHEMA
+getProcedureTerm(): PROCEDURE
+getCatalogTerm(): CATALOG
+isCatalogAtStart(): false
+getCatalogSeparator(): 
+supportsSchemasInDataManipulation(): true
+supportsSchemasInProcedureCalls(): true
+supportsSchemasInTableDefinitions(): true
+supportsSchemasInIndexDefinitions(): true
+supportsSchemasInPrivilegeDefinitions(): true
+supportsCatalogsInDataManipulation(): false
+supportsCatalogsInProcedureCalls(): false
+supportsCatalogsInTableDefinitions(): false
+supportsCatalogsInIndexDefinitions(): false
+supportsCatalogsInPrivilegeDefinitions(): false
+supportsPositionedDelete(): true
+supportsPositionedUpdate(): true
+supportsSelectForUpdate(): true
+supportsStoredProcedures(): true
+supportsSubqueriesInComparisons(): true
+supportsSubqueriesInExists(): true
+supportsSubqueriesInIns(): true
+supportsSubqueriesInQuantifieds(): true
+supportsCorrelatedSubqueries(): true
+supportsUnion(): true
+supportsUnionAll(): true
+supportsOpenCursorsAcrossCommit(): false
+supportsOpenCursorsAcrossRollback(): false
+supportsOpenStatementsAcrossCommit(): true
+supportsOpenStatementsAcrossRollback(): false
+getMaxBinaryLiteralLength(): 0
+getMaxCharLiteralLength(): 0
+getMaxColumnsInGroupBy(): 0
+getMaxColumnsInIndex(): 0
+getMaxColumnsInOrderBy(): 0
+getMaxColumnsInSelect(): 0
+getMaxColumnsInTable(): 0
+getMaxConnections(): 0
+getMaxCursorNameLength(): 18
+getMaxIndexLength(): 0
+getMaxSchemaNameLength(): 30
+getMaxProcedureNameLength(): 128
+getMaxCatalogNameLength(): 0
+getMaxRowSize(): 0
+doesMaxRowSizeIncludeBlobs(): true
+getMaxStatementLength(): 0
+getMaxStatements(): 0
+getMaxTableNameLength(): 128
+getMaxTablesInSelect(): 0
+getMaxUserNameLength(): 30
+supportsTransactions(): true
+supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE): false
+supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ): true
+supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE): true
+supportsDataDefinitionAndDataManipulationTransactions(): true
+supportsDataManipulationTransactionsOnly(): false
+dataDefinitionCausesTransactionCommit(): false
+dataDefinitionIgnoredInTransactions(): false
+getConnection(): same connection
+getProcedureColumns():
+PROCEDURE_CAT,PROCEDURE_SCHEM,PROCEDURE_NAME,COLUMN_NAME,COLUMN_TYPE,DATA_TYPE,TYPE_NAME,PRECISION,LENGTH,SCALE,RADIX,NULLABLE,REMARKS,METHOD_ID,PARAMETER_ID
+null,APP,GETPCTEST1,OUTB,4,12,VARCHAR,3,3,0,10,1,null,12,0
+null,APP,GETPCTEST1,A,1,12,VARCHAR,3,3,0,10,1,null,12,1
+null,APP,GETPCTEST1,B,1,2,NUMERIC,5,6,0,10,1,null,12,2
+null,APP,GETPCTEST1,C,1,5,SMALLINT,5,2,0,10,1,null,12,3
+null,APP,GETPCTEST1,E,1,5,SMALLINT,5,2,0,10,1,null,12,4
+null,APP,GETPCTEST1,F,1,4,INTEGER,10,4,0,10,1,null,12,5
+null,APP,GETPCTEST1,G,1,-5,BIGINT,19,8,0,10,1,null,12,6
+null,APP,GETPCTEST1,H,1,8,DOUBLE,52,8,0,2,1,null,12,7
+null,APP,GETPCTEST1,I,1,8,DOUBLE,52,8,0,2,1,null,12,8
+null,APP,GETPCTEST1,K,1,91,DATE,10,-1,0,10,1,null,12,9
+null,APP,GETPCTEST1,L,1,92,TIME,8,-1,0,10,1,null,12,10
+null,APP,GETPCTEST1,T,1,93,TIMESTAMP,26,-1,0,10,1,null,12,11
+null,APP,GETPCTEST2,PA,1,4,INTEGER,10,4,0,10,1,null,2,0
+null,APP,GETPCTEST2,PB,1,-5,BIGINT,19,8,0,10,1,null,2,1
+null,APP,GETPCTEST3A,STRING1,1,12,VARCHAR,5,5,0,10,1,null,2,0
+null,APP,GETPCTEST3A,STRING2,4,12,VARCHAR,5,5,0,10,1,null,2,1
+null,APP,GETPCTEST3B,STRING3,1,12,VARCHAR,5,5,0,10,1,null,2,0
+null,APP,GETPCTEST3B,STRING4,2,12,VARCHAR,5,5,0,10,1,null,2,1
+null,APP,GETPCTEST4BX,RETPARAM,4,4,INTEGER,10,4,0,10,1,null,1,0
+getTables() with TABLE_TYPE in ('SYSTEM TABLE') :
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+,SYS,SYSALIASES,SYSTEM TABLE,
+,SYS,SYSCHECKS,SYSTEM TABLE,
+,SYS,SYSCOLUMNS,SYSTEM TABLE,
+,SYS,SYSCONGLOMERATES,SYSTEM TABLE,
+,SYS,SYSCONSTRAINTS,SYSTEM TABLE,
+,SYS,SYSDEPENDS,SYSTEM TABLE,
+,SYS,SYSFILES,SYSTEM TABLE,
+,SYS,SYSFOREIGNKEYS,SYSTEM TABLE,
+,SYS,SYSKEYS,SYSTEM TABLE,
+,SYS,SYSSCHEMAS,SYSTEM TABLE,
+,SYS,SYSSTATEMENTS,SYSTEM TABLE,
+,SYS,SYSSTATISTICS,SYSTEM TABLE,
+,SYS,SYSTABLES,SYSTEM TABLE,
+,SYS,SYSTRIGGERS,SYSTEM TABLE,
+,SYS,SYSVIEWS,SYSTEM TABLE,
+,SYSIBM,SYSDUMMY1,SYSTEM TABLE,
+getTables() with no types:
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+,SYS,SYSALIASES,SYSTEM TABLE,
+,SYS,SYSCHECKS,SYSTEM TABLE,
+,SYS,SYSCOLUMNS,SYSTEM TABLE,
+,SYS,SYSCONGLOMERATES,SYSTEM TABLE,
+,SYS,SYSCONSTRAINTS,SYSTEM TABLE,
+,SYS,SYSDEPENDS,SYSTEM TABLE,
+,SYS,SYSFILES,SYSTEM TABLE,
+,SYS,SYSFOREIGNKEYS,SYSTEM TABLE,
+,SYS,SYSKEYS,SYSTEM TABLE,
+,SYS,SYSSCHEMAS,SYSTEM TABLE,
+,SYS,SYSSTATEMENTS,SYSTEM TABLE,
+,SYS,SYSSTATISTICS,SYSTEM TABLE,
+,SYS,SYSTABLES,SYSTEM TABLE,
+,SYS,SYSTRIGGERS,SYSTEM TABLE,
+,SYS,SYSVIEWS,SYSTEM TABLE,
+,SYSIBM,SYSDUMMY1,SYSTEM TABLE,
+,APP,ALLTYPES,TABLE,
+,APP,INFLIGHT,TABLE,
+,APP,LOUIE,TABLE,
+,APP,REFTAB,TABLE,
+,APP,REFTAB2,TABLE,
+,APP,T,TABLE,
+,APP,SCREWIE,VIEW,
+getTables() with TABLE_TYPE in ('VIEW','TABLE') :
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+,APP,ALLTYPES,TABLE,
+,APP,INFLIGHT,TABLE,
+,APP,LOUIE,TABLE,
+,APP,REFTAB,TABLE,
+,APP,REFTAB2,TABLE,
+,APP,T,TABLE,
+,APP,SCREWIE,VIEW,
+getTableTypes():
+TABLE_TYPE
+SYSTEM TABLE
+TABLE
+VIEW
+getColumns():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+getColumns('SYSTABLES'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,SYS,SYSTABLES,TABLEID,1,CHAR,36,null,null,10,0,,null,null,null,72,1,NO
+,SYS,SYSTABLES,TABLENAME,12,VARCHAR,128,null,null,10,0,,null,null,null,256,2,NO
+,SYS,SYSTABLES,TABLETYPE,1,CHAR,1,null,null,10,0,,null,null,null,2,3,NO
+,SYS,SYSTABLES,SCHEMAID,1,CHAR,36,null,null,10,0,,null,null,null,72,4,NO
+,SYS,SYSTABLES,LOCKGRANULARITY,1,CHAR,1,null,null,10,0,,null,null,null,2,5,NO
+getColumns('ALLTYPES'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,APP,ALLTYPES,SMALLINTCOL,5,SMALLINT,5,null,null,10,1,,null,null,null,null,1,YES
+,APP,ALLTYPES,INTCOL,4,INTEGER,10,null,null,10,1,,20,null,null,null,2,YES
+,APP,ALLTYPES,BIGINTCOL,-5,BIGINT,19,null,null,10,1,,null,null,null,null,3,YES
+,APP,ALLTYPES,REALCOL,7,REAL,23,null,null,2,1,,null,null,null,null,4,YES
+,APP,ALLTYPES,DOUBLEPRECCOL,8,DOUBLE,52,null,null,2,1,,10,null,null,null,5,YES
+,APP,ALLTYPES,DECIMALCOL10P4S,3,DECIMAL,10,null,4,10,1,,null,null,null,null,6,YES
+,APP,ALLTYPES,NUMERICCOL20P2S,2,NUMERIC,20,null,2,10,1,,null,null,null,null,7,YES
+,APP,ALLTYPES,CHAR8COL___,1,CHAR,8,null,null,10,1,,null,null,null,16,8,YES
+,APP,ALLTYPES,VARCHAR9COL,12,VARCHAR,9,null,null,10,1,,null,null,null,18,9,YES
+,APP,ALLTYPES,LONGVARCHARCOL,-1,LONG VARCHAR,32700,null,null,10,1,,null,null,null,null,10,YES
+,APP,ALLTYPES,BLOBCOL,2004,BLOB,3072,null,null,10,1,,null,null,null,null,11,YES
+getColumns('LOUIE'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,APP,LOUIE,I,4,INTEGER,10,null,null,10,0,,10,null,null,null,1,NO
+,APP,LOUIE,S,5,SMALLINT,5,null,null,10,0,,null,null,null,null,2,NO
+,APP,LOUIE,C30,1,CHAR,30,null,null,10,0,,null,null,null,60,3,NO
+,APP,LOUIE,VC10,12,VARCHAR,10,null,null,10,0,,'asdf',null,null,20,4,NO
+,APP,LOUIE,AI,-5,BIGINT,19,null,null,10,0,,AUTOINCREMENT: start -10 increment 2001,null,null,null,5,NO
+getColumns('INFLIGHT'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,APP,INFLIGHT,FLT_NUM,1,CHAR,20,null,null,10,0,,null,null,null,40,1,NO
+,APP,INFLIGHT,FLT_ORIGIN,1,CHAR,6,null,null,10,1,,null,null,null,12,2,YES
+,APP,INFLIGHT,FLT_DEST,1,CHAR,6,null,null,10,1,,null,null,null,12,3,YES
+,APP,INFLIGHT,FLT_AIRCRAFT,1,CHAR,20,null,null,10,1,,null,null,null,40,4,YES
+,APP,INFLIGHT,FLT_FLYING_TIME,12,VARCHAR,22,null,null,10,1,,null,null,null,44,5,YES
+,APP,INFLIGHT,FLT_DEPT_TIME,1,CHAR,8,null,null,10,1,,null,null,null,16,6,YES
+,APP,INFLIGHT,FLT_ARR_TIME,1,CHAR,8,null,null,10,1,,null,null,null,16,7,YES
+,APP,INFLIGHT,FLT_NOTES,12,VARCHAR,510,null,null,10,1,,null,null,null,1020,8,YES
+,APP,INFLIGHT,FLT_DAYS_OF_WK,1,CHAR,14,null,null,10,1,,null,null,null,28,9,YES
+,APP,INFLIGHT,FLT_CRAFT_PIC,12,VARCHAR,32672,null,null,10,1,,null,null,null,65344,10,YES
+getColumnPrivileges():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,GRANTOR,GRANTEE,PRIVILEGE,IS_GRANTABLE
+getTablePrivileges():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,GRANTOR,GRANTEE,PRIVILEGE,IS_GRANTABLE
+getBestRowIdentifier("",null,"LOUIE"):
+SCOPE,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,PSEUDO_COLUMN
+2,I,4,INTEGER,4,null,10,1
+2,VC10,12,VARCHAR,10,null,0,1
+getBestRowIdentifier("","SYS","SYSTABLES"):
+SCOPE,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,PSEUDO_COLUMN
+2,TABLEID,1,CHAR,36,null,0,1
+getVersionColumns():
+SCOPE,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,PSEUDO_COLUMN
+getPrimaryKeys():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,KEY_SEQ,PK_NAME
+,APP,LOUIE,I,2,PRIMKEY
+,APP,LOUIE,VC10,1,PRIMKEY
+getPrimaryKeys(null, null, tablename):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,KEY_SEQ,PK_NAME
+,APP,LOUIE,I,2,PRIMKEY
+,APP,LOUIE,VC10,1,PRIMKEY
+getImportedKeys():
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getExportedKeys():
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+-----
+getCrossReference('',null,'louie','',null,'reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+getCrossReference('','APP','reftab','',null,'reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getCrossReference('',null,null,'','APP','reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getImportedKeys('',null,null,'','APP','reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getCrossReference('',null,'louie','','APP',null):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+getExportedKeys('',null,'louie,'','APP',null ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+getCrossReference('','badschema','LOUIE','','APP','REFTAB' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+getTypeInfo():
+TYPE_NAME,DATA_TYPE,PRECISION,LITERAL_PREFIX,LITERAL_SUFFIX,CREATE_PARAMS,NULLABLE,CASE_SENSITIVE,SEARCHABLE,UNSIGNED_ATTRIBUTE,FIXED_PREC_SCALE,AUTO_INCREMENT,LOCAL_TYPE_NAME,MINIMUM_SCALE,MAXIMUM_SCALE,SQL_DATA_TYPE,SQL_DATETIME_SUB,NUM_PREC_RADIX
+BIGINT,-5,19,null,null,null,1,0,2,0,0,1,BIGINT,0,0,null,null,10
+LONG VARCHAR FOR BIT DATA,-4,32700,X',',null,1,0,2,1,0,0,LONG VARCHAR FOR BIT DATA,0,0,null,null,0
+VARCHAR () FOR BIT DATA,-3,32762,X',',length,1,0,2,1,0,0,VARCHAR () FOR BIT DATA,0,0,null,null,2
+CHAR () FOR BIT DATA,-2,254,X',',length,1,0,2,1,0,0,CHAR () FOR BIT DATA,0,0,null,null,2
+LONG VARCHAR,-1,32700,',',null,1,1,3,1,0,0,LONG VARCHAR,0,0,null,null,0
+LONG NVARCHAR,-1,32700,',',null,1,1,3,1,0,0,LONG NVARCHAR,0,0,null,null,0
+CHAR,1,254,',',length,1,1,3,1,0,0,CHAR,0,0,null,null,0
+NATIONAL CHAR,1,2147483647,',',length,1,1,3,1,0,0,NATIONAL CHAR,0,0,null,null,0
+NUMERIC,2,31,null,null,precision,scale,1,0,2,0,1,0,NUMERIC,0,32767,null,null,10
+DECIMAL,3,31,null,null,precision,scale,1,0,2,0,1,0,DECIMAL,0,32767,null,null,10
+INTEGER,4,10,null,null,null,1,0,2,0,0,1,INTEGER,0,0,null,null,10
+SMALLINT,5,5,null,null,null,1,0,2,0,0,1,SMALLINT,0,0,null,null,10
+FLOAT,6,52,null,null,precision,1,0,2,0,0,0,FLOAT,0,0,null,null,2
+REAL,7,23,null,null,null,1,0,2,0,0,0,REAL,0,0,null,null,2
+DOUBLE,8,52,null,null,null,1,0,2,0,0,0,DOUBLE,0,0,null,null,2
+VARCHAR,12,32672,',',length,1,1,3,1,0,0,VARCHAR,0,0,null,null,0
+NATIONAL CHAR VARYING,12,2147483647,',',length,1,1,3,1,0,0,NATIONAL CHAR VARYING,0,0,null,null,0
+DATE,91,10,DATE',',null,1,0,2,1,0,0,DATE,0,0,null,null,0
+TIME,92,0,TIME',',null,1,0,2,1,0,0,TIME,0,0,null,null,0
+TIMESTAMP,93,0,TIMESTAMP',',null,1,0,2,1,0,0,TIMESTAMP,0,0,null,null,0
+BLOB,2004,2147483647,null,null,length,1,0,1,null,0,null,BLOB,null,null,null,null,null
+CLOB,2005,2147483647,',',length,1,1,1,null,0,null,CLOB,null,null,null,null,null
+getIndexInfo():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,NON_UNIQUE,INDEX_QUALIFIER,INDEX_NAME,TYPE,ORDINAL_POSITION,COLUMN_NAME,ASC_OR_DESC,CARDINALITY,PAGES,FILTER_CONDITION
+,SYS,SYSCOLUMNS,0,,SYSCOLUMNS_INDEX1,3,1,REFERENCEID,A,null,null,null
+,SYS,SYSCOLUMNS,0,,SYSCOLUMNS_INDEX1,3,2,COLUMNNAME,A,null,null,null
+getIndexInfo():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,NON_UNIQUE,INDEX_QUALIFIER,INDEX_NAME,TYPE,ORDINAL_POSITION,COLUMN_NAME,ASC_OR_DESC,CARDINALITY,PAGES,FILTER_CONDITION
+,SYS,SYSCOLUMNS,0,,SYSCOLUMNS_INDEX1,3,1,REFERENCEID,A,null,null,null
+,SYS,SYSCOLUMNS,0,,SYSCOLUMNS_INDEX1,3,2,COLUMNNAME,A,null,null,null
+,SYS,SYSCOLUMNS,1,,SYSCOLUMNS_INDEX2,3,1,COLUMNDEFAULTID,A,null,null,null
+getIndexInfo():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,NON_UNIQUE,INDEX_QUALIFIER,INDEX_NAME,TYPE,ORDINAL_POSITION,COLUMN_NAME,ASC_OR_DESC,CARDINALITY,PAGES,FILTER_CONDITION
+,SYS,SYSTABLES,0,,SYSTABLES_INDEX1,3,1,TABLENAME,A,null,null,null
+,SYS,SYSTABLES,0,,SYSTABLES_INDEX1,3,2,SCHEMAID,A,null,null,null
+,SYS,SYSTABLES,0,,SYSTABLES_INDEX2,3,1,TABLEID,A,null,null,null
+getColumns('SYSTABLES'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,SYS,SYSTABLES,TABLEID,1,CHAR,36,null,null,10,0,,null,null,null,72,1,NO
+,SYS,SYSTABLES,TABLENAME,12,VARCHAR,128,null,null,10,0,,null,null,null,256,2,NO
+,SYS,SYSTABLES,TABLETYPE,1,CHAR,1,null,null,10,0,,null,null,null,2,3,NO
+,SYS,SYSTABLES,SCHEMAID,1,CHAR,36,null,null,10,0,,null,null,null,72,4,NO
+,SYS,SYSTABLES,LOCKGRANULARITY,1,CHAR,1,null,null,10,0,,null,null,null,2,5,NO
+-----
+Referential action values
+RESTRICT = 1
+NO ACTION = 3
+CASCADE = 0
+SETNULL = 2
+SETDEFAULT = 4
+getCrossReference('','APP','REFACTION1','','APP','REFACTIONNONE' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTNONE,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTRESTRICT' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTRESTRICT,A,1,3,1,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTNOACTION' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTCASCADE' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTCASCADE,A,1,3,0,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTSETNULL' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTSETNULL,A,1,3,2,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTUPDRESTRICT' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTUPDRESTRICT,A,1,1,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTUPDNOACTION' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTUPDNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getImportedKeys - none update Passed
+getImportedKeys - none delete Passed
+getImportedKeys - delete Restrict Passed
+getImportedKeys - delete NO ACTION Passed
+getImportedKeys - delete CASCADE Passed
+getImportedKeys - delete SET NULL Passed
+getImportedKeys - update Restrict Passed
+getImportedKeys - update NO ACTION Passed
+getExportedKeys('',null,null,'','APP','REFACTION1' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTCASCADE,A,1,3,0,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTNONE,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTRESTRICT,A,1,3,1,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTSETNULL,A,1,3,2,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTUPDNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTUPDRESTRICT,A,1,1,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+-----
+getColumns for 'T1'
+  Next line is real null.
+defval for col C1 type INTEGER DEFAULT 'null' wasnull true
+  Next line is real null.
+defval for col C2 type INTEGER DEFAULT 'null' wasnull true
+defval for col C3 type INTEGER DEFAULT 'NULL' wasnull false
+  Next line is real null.
+defval for col C4 type CHAR DEFAULT 'null' wasnull true
+defval for col C5 type CHAR DEFAULT 'NULL' wasnull false
+defval for col C6 type CHAR DEFAULT ''NULL'' wasnull false
+defval for col C7 type INTEGER DEFAULT '88' wasnull false
+Test metadata finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/parameterMetaDataJdbc30.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/parameterMetaDataJdbc30.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,240 @@
+Test parameterMetaDataJdbc30 starting
+parameters count for callable statement is 4
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 3
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_OUT
+Parameter number : 4
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN_OUT
+Bug 4450 - generate metadata for return parameter
+param count is: 2
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 31
+parameter getScale 0
+parameter getParameterType 3
+parameter getParameterTypeName DECIMAL
+parameter getParameterClassName java.math.BigDecimal
+parameter getParameterMode PARAMETER_MODE_OUT
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+parameters count for prepared statement is 5
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned false
+parameter getPrecision 5
+parameter getScale 0
+parameter getParameterType 1
+parameter getParameterTypeName CHAR
+parameter getParameterClassName java.lang.String
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 3
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 4
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 5
+parameter getScale 0
+parameter getParameterType 3
+parameter getParameterTypeName DECIMAL
+parameter getParameterClassName java.math.BigDecimal
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 5
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned false
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 91
+parameter getParameterTypeName DATE
+parameter getParameterClassName java.sql.Date
+parameter getParameterMode PARAMETER_MODE_IN
+Bug 4533 - hide associated parameters
+parameters count for prepared statement is 2
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned false
+parameter getPrecision 128
+parameter getScale 0
+parameter getParameterType 12
+parameter getParameterTypeName VARCHAR
+parameter getParameterClassName java.lang.String
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned false
+parameter getPrecision 36
+parameter getScale 0
+parameter getParameterType 1
+parameter getParameterTypeName CHAR
+parameter getParameterClassName java.lang.String
+parameter getParameterMode PARAMETER_MODE_IN
+parameters count for prepared statement is 0
+Bug 4654 - fill in where clause parameter type info
+parameters count for prepared statement is 1
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+PASS -- expected exception
+SQLSTATE(null): SQL Exception: Invalid argument: column index -1 is out of range.
+PASS -- expected exception
+SQLSTATE(null): SQL Exception: Invalid argument: column index 0 is out of range.
+PASS -- expected exception
+SQLSTATE(null): SQL Exception: Invalid argument: column index 2 is out of range.
+test: no parameter for the statement and then do getParameterMetaData()
+parameters count for prepared statement is 0
+test: the scale returned should be the one set by registerOutParameter
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 30
+parameter getScale 15
+parameter getParameterType 3
+parameter getParameterTypeName DECIMAL
+parameter getParameterClassName java.math.BigDecimal
+parameter getParameterMode PARAMETER_MODE_OUT
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 30
+parameter getScale 15
+parameter getParameterType 3
+parameter getParameterTypeName DECIMAL
+parameter getParameterClassName java.math.BigDecimal
+parameter getParameterMode PARAMETER_MODE_OUT
+Behaviour of meta data and out params after re-compile
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 3
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_OUT
+Parameter number : 4
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN_OUT
+DUMMYINT alias returned 11111
+Parameter number : 1
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 2
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN
+Parameter number : 3
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_OUT
+Parameter number : 4
+parameter isNullable PARAMETER_NULLABLE
+parameter isSigned true
+parameter getPrecision 10
+parameter getScale 0
+parameter getParameterType 4
+parameter getParameterTypeName INTEGER
+parameter getParameterClassName java.lang.Integer
+parameter getParameterMode PARAMETER_MODE_IN_OUT
+DUMMYINT alias returned 22222
+DUMMYINT alias returned 22222
+Test parameterMetaDataJdbc30 finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/procedure.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/procedure.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,912 @@
+testNegative
+create procedure asdf() language java external name 'asdfasdf' parameter style java
+EXPECTED SQL Exception: (42Y04) Cannot create a procedure or function with EXTERNAL NAME 'asdfasdf' because it is not a dot separated list. The expected format is <full java path>.<method name> .
+create procedure asdf() language java external name 'asdfasdf.' parameter style java
+EXPECTED SQL Exception: (42Y04) Cannot create a procedure or function with EXTERNAL NAME 'asdfasdf.' because it is not a dot separated list. The expected format is <full java path>.<method name> .
+create procedure a23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789() language java external name 'asdf.asdf' parameter style java
+EXPECTED SQL Exception: (42622) The name 'A23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' is too long. The maximum length is '128'.
+create procedure asdf language java external name java.lang.Thread.currentThread parameter style java
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "language" at line 1, column 23.
+CREATE PROCEDURE ASSEMBLY_PARTS (IN ASSEMBLY_NUM INTEGER, OUT NUM_PARTS INTEGER, OUT COST DOUBLE) EXTERNAL NAME 'parts!assembly' DYNAMIC RESULT SETS 1 LANGUAGE C PARAMETER STYLE GENERAL
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "C" at line 1, column 161.
+create procedure sys.proc1() language java external name 'java.lang.System.gc' parameter style java
+EXPECTED SQL Exception: (42X62) 'CREATE PROCEDURE' is not allowed in the 'SYS' schema.
+create procedure noclass() language java external name 'asdf.asdf' parameter style java language java
+EXPECTED SQL Exception: (42613) Multiple or conflicting keywords involving the 'LANGUAGE' clause are present.
+create procedure noclass() parameter style java language java external name 'asdf.asdf' parameter style java
+EXPECTED SQL Exception: (42613) Multiple or conflicting keywords involving the 'PARAMETER STYLE' clause are present.
+create procedure noclass() external name 'asdf.xxxx' language java external name 'asdf.asdf' parameter style java
+EXPECTED SQL Exception: (42613) Multiple or conflicting keywords involving the 'EXTERNAL NAME' clause are present.
+create procedure noclass() parameter style java language java external name 'asdf.asdf' parameter style derby_rs_collection
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "derby_rs_collection" at line 1, column 105.
+create procedure missing01()
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "<EOF>" at line 1, column 28.
+create procedure missing02() language java
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing03() language java parameter style java
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing04() language java external name 'foo.bar'
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing05() parameter style java
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing06() parameter style java external name 'foo.bar'
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing07() external name 'goo.bar'
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing08() dynamic result sets 1
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure NO_BLOB(IN P1 BLOB(3k)) language java parameter style java external name 'no.blob'
+EXPECTED SQL Exception: (42962) Long column type column or parameter 'P1' not permitted in declared global temporary tables or procedure definitions. 
+create procedure NO_CLOB(IN P1 CLOB(3k)) language java parameter style java external name 'no.clob'
+EXPECTED SQL Exception: (42962) Long column type column or parameter 'P1' not permitted in declared global temporary tables or procedure definitions. 
+create procedure NO_LVC(IN P1 LONG VARCHAR) language java parameter style java external name 'no.lvc'
+EXPECTED SQL Exception: (42962) Long column type column or parameter 'P1' not permitted in declared global temporary tables or procedure definitions. 
+create procedure DUP_P1(IN FRED INT, OUT RON CHAR(10), IN FRED INT) language java parameter style java external name 'no.dup1'
+EXPECTED SQL Exception: (42734) Name 'FRED' specified in context 'DUP_P1' is not unique.
+create procedure D2.DUP_P2(IN "FreD" INT, OUT RON CHAR(10), IN "FreD" INT) language java parameter style java external name 'no.dup2'
+EXPECTED SQL Exception: (42734) Name 'FreD' specified in context 'D2.DUP_P2' is not unique.
+create procedure D3.DUP_P3(IN "FRED" INT, OUT RON CHAR(10), IN fred INT) language java parameter style java external name 'no.dup3'
+EXPECTED SQL Exception: (42734) Name 'FRED' specified in context 'D3.DUP_P3' is not unique.
+CALL APP.NSP(?, ?)
+EXPECTED SQL Exception: (42Y03) 'APP.NSP' is not recognized as a function or procedure.
+call syscs_util.syscs_set_database_property("foo", "bar")
+EXPECTED SQL Exception: (42X15) Column name 'foo' appears in a statement without a FROM list.
+testDelayedClassChecking
+call noclass()
+EXPECTED SQL Exception: (42X51) The class 'asdf' does not exist or is inaccessible. This can happen if the class is not public. SQLSTATE: XJ001: Java exception: 'asdf: java.lang.ClassNotFoundException'.
+call nomethod()
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call java.lang.Integer.asdf(), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+call notstatic()
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call java.lang.Integer.equals(), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+call notvoid()
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call void java.lang.Runtime.getRuntime(), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+testDuplicates
+create procedure PROCDUP() language java external name 'failAPP.fail0' parameter style java
+EXPECTED SQL Exception: (X0Y68) PROCEDURE 'PROCDUP' already exists.
+create procedure s1.PROCDUP() language java external name 'fails1.fail0' parameter style java
+EXPECTED SQL Exception: (X0Y68) PROCEDURE 'PROCDUP' already exists.
+create procedure s2.PROCDUP() language java external name 'fails2.fail0' parameter style java
+EXPECTED SQL Exception: (X0Y68) PROCEDURE 'PROCDUP' already exists.
+DEFINED PROCEDURES FOR PROCDUP
+  APP.PROCDUP AS okAPP.ok0() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  S1.PROCDUP AS oks1.ok0() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  S2.PROCDUP AS oks2.ok0() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR PROCDUP
+  APP.PROCDUP AS okAPP.ok0 type procedureNoResult
+  S1.PROCDUP AS oks1.ok0 type procedureNoResult
+  S2.PROCDUP AS oks2.ok0 type procedureNoResult
+-----
+create procedure S1.NOTYET() SPECIFIC fred language java external name 'failAPP.fail0' parameter style java
+EXPECTED SQL Exception: (0A000) Feature not implemented: SPECIFIC identifier.
+ambigiousMethods
+call AMBIGIOUS01(?, ?)
+EXPECTED SQL Exception: (42X73) Method resolution for signature org.apache.derbyTesting.functionTests.util.ProcedureTest.ambigious1(int, java.lang.String, [Ljava.sql.ResultSet;) was ambiguous. (No single maximally specific method.)
+call AMBIGIOUS02(?, ?)
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call org.apache.derbyTesting.functionTests.util.ProcedureTest.ambigious2(int, int, java.sql.ResultSet[]), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+zeroArgProcedures
+No ResultSet or update count returned
+No ResultSet or update count returned
+No ResultSet or update count returned
+FAIL - prepareStatement call za(?)
+No ResultSet or update count returned
+No ResultSet or update count returned
+DEFINED PROCEDURES FOR ZA
+  APP.ZA AS org.apache.derbyTesting.functionTests.util.ProcedureTest.zeroArg() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR ZA
+  APP.ZA AS org.apache.derbyTesting.functionTests.util.ProcedureTest.zeroArg type procedureNoResult
+-----
+DEFINED PROCEDURES FOR ZA
+DATABASE METATDATA PROCEDURES FOR ZA
+-----
+sqlProcedures()
+DEFINED PROCEDURES FOR IR%
+  APP.IR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow(IN P1 INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  APP.IR2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow(IN P1 INTEGER,IN P2 CHAR(10)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR IR%
+  APP.IR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow type procedureNoResult
+    procedureColumnIn P1 INTEGER
+  APP.IR2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow type procedureNoResult
+    procedureColumnIn P1 INTEGER
+    procedureColumnIn P2 CHAR
+-----
+CALL IR()
+EXPECTED SQL Exception: (42Y03) 'IR' is not recognized as a function or procedure.
+No ResultSet or update count returned
+No ResultSet or update count returned
+EXPECTED SQL Exception: The exception 'SQL Exception: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.' was thrown while evaluating an expression. SQLSTATE: 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.
+No ResultSet or update count returned
+No ResultSet or update count returned
+No ResultSet or update count returned
+No ResultSet or update count returned
+No ResultSet or update count returned
+I |B              
+-----
+1 |int            
+2 |int            
+3 |int            
+7 |int            
+4 |4              
+5 |ir2            
+6 |'012345678     
+CALL IR2(2, 'no way')
+EXPECTED SQL Exception: (38000) The exception 'SQL Exception: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.' was thrown while evaluating an expression. SQLSTATE: 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.
+CALL IR2(?, 'no way')
+EXPECTED SQL Exception: (07000) At least one parameter to the current statement is uninitialized.
+CALL IR2(2, ?)
+EXPECTED SQL Exception: (07000) At least one parameter to the current statement is uninitialized.
+dynamicResultSets - parameter style JAVA
+create procedure DRS(p1 int) parameter style JAVA READS SQL DATA dynamic result sets -1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "-" at line 1, column 86.
+DEFINED PROCEDURES FOR DRS
+  APP.DRS AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows(IN P1 INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA DYNAMIC RESULT SETS 1
+DATABASE METATDATA PROCEDURES FOR DRS
+  APP.DRS AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows type procedureNoResult
+    procedureColumnIn P1 INTEGER
+-----
+CALL DRS()
+EXPECTED SQL Exception: (42Y03) 'DRS' is not recognized as a function or procedure.
+CALL DRS(?,?)
+EXPECTED SQL Exception: (42Y03) 'DRS' is not recognized as a function or procedure.
+I |B              
+-----
+3 |int            
+DEFINED PROCEDURES FOR DRS2
+  APP.DRS2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows(IN P1 INTEGER,IN P2 INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA DYNAMIC RESULT SETS 2
+DATABASE METATDATA PROCEDURES FOR DRS2
+  APP.DRS2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows type procedureNoResult
+    procedureColumnIn P1 INTEGER
+    procedureColumnIn P2 INTEGER
+-----
+I |B              
+-----
+2 |int            
+I |B              
+-----
+6 |'012345678     
+7 |int            
+I |B              
+-----
+2 |int            
+I |B              
+-----
+2 |int            
+I |B              
+-----
+I |B              
+-----
+2 |int            
+I |B              
+-----
+6 |'012345678     
+7 |int            
+CALL IRDRS(?)
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call org.apache.derbyTesting.functionTests.util.ProcedureTest.missingDynamicParameter(int, java.sql.ResultSet[]), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+CALL rsi(?)
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call org.apache.derbyTesting.functionTests.util.ProcedureTest.badDynamicParameter(int, java.sql.ResultSet[]), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+no dynamic result sets
+No ResultSet or update count returned
+Testing too many result sets
+... too many result sets
+I |B              
+-----
+2 |int            
+... one additional closed result set
+I |B              
+-----
+2 |int            
+Stored Procedure w/ CLOB in result set.
+C                             
+-----
+yayorsomething                
+yayorsomething2               
+1          
+-----
+2          
+C                             
+-----
+yayorsomething                
+yayorsomething2               
+Stored Procedure w/ BLOB in result set.
+B                                                           
+-----
+003100300031003000310030003000300031003100300031            
+003100300031003000310030003000300031003100300031            
+parameterTypes
+DEFINED PROCEDURES FOR PT1
+  APP.PT1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter1(IN A INTEGER,IN B CHAR(10),IN C VARCHAR(20)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA DYNAMIC RESULT SETS 1
+DATABASE METATDATA PROCEDURES FOR PT1
+  APP.PT1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter1 type procedureNoResult
+    procedureColumnIn A INTEGER
+    procedureColumnIn B CHAR
+    procedureColumnIn C VARCHAR
+-----
+A |B |3 |C |5          
+-----
+20 |abc |10 |efgh |4          
+A |B |3 |C |5          
+-----
+30 |abc |10 |efgh |6          
+A |B |3 |C |5          
+-----
+40 |abc |10 |efgh |20         
+A |B |3 |C |5          
+-----
+50 |0123456789 |10 |efgh |6          
+DEFINED PROCEDURES FOR PT2
+  APP.PT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter2(IN A INTEGER,IN B DECIMAL(4,0),IN C DECIMAL(7,3)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA DYNAMIC RESULT SETS 1
+DATABASE METATDATA PROCEDURES FOR PT2
+  APP.PT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter2 type procedureNoResult
+    procedureColumnIn A INTEGER
+    procedureColumnIn B DECIMAL
+    procedureColumnIn C DECIMAL
+-----
+A |B |C                   
+-----
+60 |34 |54.100              
+A |B |C                   
+-----
+70 |831 |45.700              
+EXPECTED SQL Exception: BigDecimal conversion exception [ibm][db2][jcc][converters] Overflow occurred during numeric data type conversion of "10243".. See attached Throwable.
+A |B |C                   
+-----
+80 |993 |1234.567            
+DEFINED PROCEDURES FOR PTSMALLINT%
+  APP.PTSMALLINT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.pSMALLINT(IN P_IN SMALLINT,INOUT P_INOUT SMALLINT,OUT P_OUT SMALLINT) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+DATABASE METATDATA PROCEDURES FOR PTSMALLINT%
+  APP.PTSMALLINT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.pSMALLINT type procedureNoResult
+    procedureColumnIn P_IN SMALLINT
+    procedureColumnInOut P_INOUT SMALLINT
+    procedureColumnOut P_OUT SMALLINT
+-----
+EXPECTED SQL Exception: (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'short'.
+EXPECTED SQL Exception: (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'short'.
+p_inout 9 p_out 6
+p_inout 9 null?false p_out 6 null?false
+p_inout 9 null?false p_out 6 null?false
+outparams
+DEFINED PROCEDURES FOR OP1
+  APP.OP1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.outparams1(OUT A INTEGER,IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP1
+  APP.OP1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.outparams1 type procedureNoResult
+    procedureColumnOut A INTEGER
+    procedureColumnIn B INTEGER
+-----
+No ResultSet or update count returned
+OP1 14 null ? false
+DEFINED PROCEDURES FOR OP2
+  APP.OP2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams2(INOUT A INTEGER,IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP2
+  APP.OP2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams2 type procedureNoResult
+    procedureColumnInOut A INTEGER
+    procedureColumnIn B INTEGER
+-----
+No ResultSet or update count returned
+OP2 17 null ? false
+DEFINED PROCEDURES FOR OP3
+  APP.OP3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3(INOUT A CHAR(10),IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP3
+  APP.OP3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3 type procedureNoResult
+    procedureColumnInOut A CHAR
+    procedureColumnIn B INTEGER
+-----
+No ResultSet or update count returned
+OP3 >nad       < null ? false
+DEFINED PROCEDURES FOR OP4
+  APP.OP4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4(OUT A DECIMAL(4,2),IN B VARCHAR(255)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP4
+  APP.OP4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4 type procedureNoResult
+    procedureColumnOut A DECIMAL
+    procedureColumnIn B VARCHAR
+-----
+No ResultSet or update count returned
+OP4 null >null< null ? true
+No ResultSet or update count returned
+OP4 14 >31.00< null ? false
+No ResultSet or update count returned
+OP4 11.3 >28.30< null ? false
+No ResultSet or update count returned
+OP4 39.345 >56.34< null ? false
+EXPECTED SQL Exception: The resulting value is outside the range for the data type DECIMAL/NUMERIC(4,2).
+No ResultSet or update count returned
+OP4 49.345 >66.34< null ? false
+EXPECTED SQL Exception: Invalid argument: parameter index 2 is not an OUT or INOUT parameter.
+EXPECTED SQL Exception: (<NULL>) Invalid operation: parameter 1 not set or registered
+DEFINED PROCEDURES FOR OP4INOUT
+  APP.OP4INOUT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4(INOUT A DECIMAL(4,2),IN B VARCHAR(255)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP4INOUT
+  APP.OP4INOUT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4 type procedureNoResult
+    procedureColumnInOut A DECIMAL
+    procedureColumnIn B VARCHAR
+-----
+No ResultSet or update count returned
+OP4INOUT null >null< null ? true
+No ResultSet or update count returned
+OP4INOUT null(2) >null< null ? true
+No ResultSet or update count returned
+OP4INOUT 14+23.5 >37.50< null ? false
+No ResultSet or update count returned
+OP4INOUT 9+23.505 >32.50< null ? false
+EXPECTED SQL Exception: The resulting value is outside the range for the data type DECIMAL/NUMERIC(4,2).
+EXPECTED SQL Exception: BigDecimal conversion exception [ibm][db2][jcc][converters] Overflow occurred during numeric data type conversion of "102.33".. See attached Throwable.
+EXPECTED SQL Exception: (<NULL>) Invalid operation: parameter 1 not set or registered
+SQL Control
+CREATE PROCEDURE SQLC.SQLCONTROL1_0 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_0 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_0 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_0 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_1 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_2 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_3 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_3 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_3 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_3 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_4 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_4 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_4 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_4 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+DEFINED PROCEDURES FOR SQLCONTROL1_%
+  SQLC.SQLCONTROL1_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL1_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL1_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL1_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL1_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL1_%
+  SQLC.SQLCONTROL1_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+-----
+DEFINED PROCEDURES FOR SQLCONTROL2_%
+  SQLC.SQLCONTROL2_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL2_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL2_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL2_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL2_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL2_%
+  SQLC.SQLCONTROL2_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+-----
+DEFINED PROCEDURES FOR SQLCONTROL3_%
+  SQLC.SQLCONTROL3_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL3_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL3_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL3_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL3_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL3_%
+  SQLC.SQLCONTROL3_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+-----
+DEFINED PROCEDURES FOR SQLCONTROL4_%
+  SQLC.SQLCONTROL4_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL4_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL4_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL4_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL4_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL4_%
+  SQLC.SQLCONTROL4_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+-----
+** SQL ** DEFAULT (MODIFIES SQL DATA)
+    CREATE TABLE SQ-UPDATE 0-EXECUTE OK
+    ALTER TABLE SQL-UPDATE 0-EXECUTE OK
+    INSERT INTO SQL-UPDATE 1-EXECUTE OK
+    UPDATE SQLC.SQL-UPDATE 2-EXECUTE OK
+    SELECT * FROM S- ROW(15)- ROW(12)-EXECUTE OK
+    DELETE FROM SQL-UPDATE 2-EXECUTE OK
+    DROP TABLE SQLC-UPDATE 0-EXECUTE OK
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-X0X05
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+    DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1- ROW(1)-EXECUTE OK
+    VALUES 1- ROW(1)-EXECUTE OK
+** SQL ** NO SQL
+    CREATE TABLE SQ-38001
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-38001
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3-38001
+    SET SCHEMA SQLC-38001
+    CREATE SCHEMA S-38001
+    DROP SCHEMA SQL-38001
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-38001
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1-38001
+    VALUES 1-38001
+** SQL ** CONTAINS SQL
+    CREATE TABLE SQ-38002
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-38002
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3-38004
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-38002
+    DROP SCHEMA SQL-38002
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1-38004
+    VALUES 1-38004
+** SQL ** READS SQL DATA
+    CREATE TABLE SQ-38002
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-38002
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-38002
+    DROP SCHEMA SQL-38002
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1- ROW(1)-EXECUTE OK
+    VALUES 1- ROW(1)-EXECUTE OK
+** SQL ** MODIFIES SQL DATA
+    CREATE TABLE SQ-UPDATE 0-EXECUTE OK
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-X0X05
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+    DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1- ROW(1)-EXECUTE OK
+    VALUES 1- ROW(1)-EXECUTE OK
+CALL ** DEFAULT (MODIFIES SQL DATA)
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+CALL ** NO SQL
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+CALL ** CONTAINS SQL
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38004
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+CALL ** READS SQL DATA
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+CALL ** MODIFIES SQL DATA
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+CALL SQLCONTROL3_0 (?, ?, ?, ?, ?, ?, ?)
+EXPECTED SQL Exception: (07004) Parameter 1 is an OUT procedure parameter and must be registered with CallableStatement.registerOutParameter before execution.
+literals
+DEFINED PROCEDURES FOR TY_%
+  LITT.TY_BIGINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 BIGINT,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_CHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 CHAR(10),OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_DECIMAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 DECIMAL(5,2),OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_DOUBLE AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 DOUBLE,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_INTEGER AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 INTEGER,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_REAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 REAL,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_SMALLINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 SMALLINT,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_VARCHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 VARCHAR(10),OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+DATABASE METATDATA PROCEDURES FOR TY_%
+  LITT.TY_BIGINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 BIGINT
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_CHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 CHAR
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_DECIMAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 DECIMAL
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_DOUBLE AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 DOUBLE
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_INTEGER AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 INTEGER
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_REAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 REAL
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_SMALLINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 SMALLINT
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_VARCHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 VARCHAR
+    procedureColumnOut P2 VARCHAR
+-----
+CALL LITT.TY_SMALLINT (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'short'.
+CALL LITT.TY_INTEGER (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+CALL LITT.TY_BIGINT (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'long'.
+CALL LITT.TY_REAL (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'float'.
+CALL LITT.TY_DOUBLE (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'double'.
+CALL LITT.TY_DECIMAL (null, ?)=>NULL<
+CALL LITT.TY_CHAR (null, ?)=>NULL<
+CALL LITT.TY_VARCHAR (null, ?)=>NULL<
+CALL LITT.TY_SMALLINT (12, ?)=>12<
+CALL LITT.TY_INTEGER (12, ?)=>12<
+CALL LITT.TY_BIGINT (12, ?)=>12<
+CALL LITT.TY_REAL (12, ?)=>12.0<
+CALL LITT.TY_DOUBLE (12, ?)=>12.0<
+CALL LITT.TY_DECIMAL (12, ?)=>12.00<
+CALL LITT.TY_CHAR (12, ?) (42821) Columns of type 'CHAR' cannot hold values of type 'INTEGER'. 
+CALL LITT.TY_VARCHAR (12, ?) (42821) Columns of type 'VARCHAR' cannot hold values of type 'INTEGER'. 
+CALL LITT.TY_SMALLINT (23.43e1, ?)=>234<
+CALL LITT.TY_INTEGER (23.43e1, ?)=>234<
+CALL LITT.TY_BIGINT (23.43e1, ?)=>234<
+CALL LITT.TY_REAL (23.43e1, ?)=>234.3<
+CALL LITT.TY_DOUBLE (23.43e1, ?)=>234.3<
+CALL LITT.TY_DECIMAL (23.43e1, ?)=>234.30<
+CALL LITT.TY_CHAR (23.43e1, ?) (42821) Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+CALL LITT.TY_VARCHAR (23.43e1, ?) (42821) Columns of type 'VARCHAR' cannot hold values of type 'DOUBLE'. 
+CALL LITT.TY_SMALLINT (176.3, ?)=>176<
+CALL LITT.TY_INTEGER (176.3, ?)=>176<
+CALL LITT.TY_BIGINT (176.3, ?)=>176<
+CALL LITT.TY_REAL (176.3, ?)=>176.3<
+CALL LITT.TY_DOUBLE (176.3, ?)=>176.3<
+CALL LITT.TY_DECIMAL (176.3, ?)=>176.30<
+CALL LITT.TY_CHAR (176.3, ?) (42821) Columns of type 'CHAR' cannot hold values of type 'DECIMAL'. 
+CALL LITT.TY_VARCHAR (176.3, ?) (42821) Columns of type 'VARCHAR' cannot hold values of type 'DECIMAL'. 
+CALL LITT.TY_SMALLINT ('12.34', ?) (42821) Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_INTEGER ('12.34', ?) (42821) Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_BIGINT ('12.34', ?) (42821) Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_REAL ('12.34', ?) (42821) Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_DOUBLE ('12.34', ?) (42821) Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_DECIMAL ('12.34', ?) (42821) Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_CHAR ('12.34', ?)=>12.34     <
+CALL LITT.TY_VARCHAR ('12.34', ?)=>12.34<

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/savepointJdbc30.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/savepointJdbc30.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,77 @@
+Test savepointJdbc30 starting
+Tests common to DRDA and embedded Cloudscape
+Test1 - no unnamed savepoints allowed if autocommit is true
+Expected Exception is Cannot set savepoint when in auto-commit mode.
+Test1a - no named savepoints allowed if autocommit is true
+Expected Exception is Cannot set savepoint when in auto-commit mode.
+Test2 - Release and reuse a savepoint name
+Test3 - null name not allowed for named savepoints
+Expected Exception is Named savepoint needs a none-null name.
+Test4 - Verify names/ids of named/unnamed savepoints
+Expected Exception is This is an un-named savepoint.
+Expected Exception is This is a named savepoint.
+Test5a - create two savepoints in two different transactions and release the first one in the subsequent transaction
+Expected Exception is SAVEPOINT, s1 does not  exist or is not active in the current transaction.
+Test5b - create two savepoints in two different transactions and rollback the first one in the subsequent transaction
+Expected Exception is SAVEPOINT, s1 does not  exist or is not active in the current transaction.
+Test6a - create a savepoint, release it, create another with same name and release the first one
+Expected Exception is SAVEPOINT, s1 does not  exist or is not active in the current transaction.
+Test6b - create a savepoint, release it, create another with same name and rollback the first one
+Expected Exception is SAVEPOINT, s1 does not  exist or is not active in the current transaction.
+Test6c - Try to use a savepoint from another connection for release
+Expected Exception is Cannot release a savepoint that was not created by this connection.
+Test7a - swap savepoints across connections with release
+Expected Exception is Cannot release a savepoint that was not created by this connection.
+Test7b - swap savepoints across connections with rollback
+Expected Exception is Rollback to a savepoint not created by this connection.
+Test 9 test savepoint name
+Test 10 test savepoint name case sensitivity
+Test 11 rolling back a savepoint multiple times - should work
+Test 12 releasing a savepoint multiple times - should not work
+Expected Exception is SAVEPOINT, MyName does not  exist or is not active in the current transaction.
+Test 13 shouldn't be able to use a savepoint from earlier transaction after setting autocommit on and off
+Expected Exception is SAVEPOINT, MyName does not  exist or is not active in the current transaction.
+Test 14 A non-user initiated transaction rollback should release the internal savepoint array
+Expected Exception is A lock could not be obtained within the time requested
+Expected Exception is SAVEPOINT, MyName does not  exist or is not active in the current transaction.
+Test 15 check savepoints in batch
+Test 16 grammar check for savepoint sq1
+Expected Exception is Syntax error: MISSING ON ROLLBACK RETAIN CURSORS.
+Expected Exception is Multiple or conflicting keywords involving the 'ON ROLLBACK RETAIN CURSORS' clause are present.
+Expected Exception is Multiple or conflicting keywords involving the 'ON ROLLBACK RETAIN LOCKS' clause are present.
+Expected Exception is Multiple or conflicting keywords involving the 'UNIQUE' clause are present.
+Test 17 No nested savepoints allowed when using SQL to set savepoints. This is to match DB2 LUW behavior
+Test 17a Test with UNIQUE clause.
+Expected Exception is The maximum number of savepoints has been reached. 
+Test 17b Test without UNIQUE clause.
+Since no nesting is allowed, skipping UNIQUE still gives error for trying to define another savepoint
+Expected Exception is The maximum number of savepoints has been reached. 
+Test 18 No nested SQL savepoints allowed inside JDBC savepoint.
+This is to match DB2 LUW behavior
+Following SQL savepoint will fail because we are trying to nest it inside JDBC savepoint
+Expected Exception is The maximum number of savepoints has been reached. 
+Test 19 No nested SQL savepoints allowed inside SQL savepoint.
+This is to match DB2 LUW behavior
+Following SQL savepoint will fail because we are trying to nest it inside SQL savepoint
+Expected Exception is The maximum number of savepoints has been reached. 
+Test 20 Rollback of SQL savepoint works same as rollback of JDBC savepoint.
+Test 21 After releasing the SQL savepoint, rollback the transaction and should see everything undone.
+Test 22 Should not be able to create a SQL savepoint starting with name SYS
+Expected Exception is An object cannot be created with the schema name 'SYS'.
+Test 23 Should be able to use non-reserved keywords savepoint and release as identifiers
+Create table with savepoint and release as identifiers
+Create a savepoint with name savepoint
+Release the savepoint with name savepoint
+Create a savepoint with name release
+Rollback to the savepoint with name release
+Release the savepoint with name release
+Test 24 Savepoint name can't exceed 128 characters
+Expected Exception is The name 'MyName1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890' is too long. The maximum length is '128'.
+Test 25 Should not be able to create a SQL savepoint starting with name SYS through jdbc
+Expected Exception is An object cannot be created with the schema name 'SYS'.
+Test 26a rollback of null savepoint
+Expected Exception is Cannot rollback to a null savepoint.
+Test 26b release  of null savepoint
+Expected Exception is Cannot release a null savepoint.
+Next try non-DRDA tests
+Test savepointJdbc30 finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/supersimple.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/supersimple.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,179 @@
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> create table a (a int);
+0 rows inserted/updated/deleted
+ij> insert into a values (1);
+1 row inserted/updated/deleted
+ij> select * from a;
+A          
+-----
+1          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> create table b (si smallint,i int, bi bigint, r real, f float, d double precision, n5_2 numeric(5,2), dec10_3 decimal(10,3), ch20 char(20),vc varchar(20), lvc long varchar, blobCol blob(1000),  clobCol clob(1000));
+0 rows inserted/updated/deleted
+ij> insert into b values(2,3,4,5.3,5.3,5.3,31.13,123456.123, 'one','one','one',cast(X'01ABCD' as blob(1000)),'one');
+1 row inserted/updated/deleted
+ij> insert into b values(-32768,-2147483648, -9223372036854775808 ,1.2E-37, 2.225E-307, +2.225E-307,-56.12, -123456.123,'one','one','one', cast(X'01ABCD' as blob(1000)),'one');
+1 row inserted/updated/deleted
+ij> insert into b values(null,null,null,null,null,null,null,null,null,null,null,null,null);
+1 row inserted/updated/deleted
+ij> insert into b values(32767,2147483647, 9223372036854775807 ,1.4 , 3.4028235E38 ,3.4028235E38  ,999.99, 9999999.999,'one','one','one',cast(X'01ABCD' as blob(1000)), 'one');
+1 row inserted/updated/deleted
+ij> select * from b;
+SI |I |BI |R |F |D |N5_2 |DEC10_3 |CH20 |VC |LVC |BLOBCOL |CLOBCOL                                                                                                                         
+-----
+2 |3 |4 |5.3 |5.3 |5.3 |31.13 |123456.123 |one |one |one |01abcd |one                                                                                                                             
+-----32768 |-2147483648 |-9223372036854775808 |1.2E-37 |2.225E-307 |2.225E-307 |-56.12 |-123456.123 |one |one |one |01abcd |one                                                                                                                             
+NULL |NULL |NULL |NULL |NULL |NULL |NULL |NULL |NULL |NULL |NULL |NULL |NULL                                                                                                                            
+32767 |2147483647 |9223372036854775807 |1.4 |3.4028235E38 |3.4028235E38 |999.99 |9999999.999 |one |one |one |01abcd |one                                                                                                                             
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> create table c (si smallint not null,i int not null , bi bigint not null, r real not null, f float not null, d double precision not null, n5_2 numeric(5,2) not null , dec10_3 decimal(10,3) not null, ch20 char(20) not null ,vc varchar(20) not null, lvc long varchar not null,  blobCol blob(1000) not null,  clobCol clob(1000) not null);
+0 rows inserted/updated/deleted
+ij> insert into c values(2,3,4,5.3,5.3,5.3,31.13,123456.123, 'one','one','one', cast(X'01ABCD' as blob(1000)), 'one');
+1 row inserted/updated/deleted
+ij> insert into c values(-32768,-2147483648, -9223372036854775808 ,1.2E-37, 2.225E-307, +2.225E-307,-56.12, -123456.123,'one','one','one', cast(X'01ABCD' as blob(1000)),'one');
+1 row inserted/updated/deleted
+ij> select * from c;
+SI |I |BI |R |F |D |N5_2 |DEC10_3 |CH20 |VC |LVC |BLOBCOL |CLOBCOL                                                                                                                         
+-----
+2 |3 |4 |5.3 |5.3 |5.3 |31.13 |123456.123 |one |one |one |01abcd |one                                                                                                                             
+-----32768 |-2147483648 |-9223372036854775808 |1.2E-37 |2.225E-307 |2.225E-307 |-56.12 |-123456.123 |one |one |one |01abcd |one                                                                                                                             
+ij> values(10);
+1          
+-----
+10         
+ij> values('hello');
+1    
+-----
+hello
+ij> values(1.2);
+1   
+-----
+1.2 
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> -- bug 4430 aliasinfo nullability problem
+select aliasinfo from sys.sysaliases where aliasinfo is null;
+ALIASINFO                                                                                                                       
+-----
+ij> -- test commit and rollback
+autocommit off;
+ij> create table a(a int);
+0 rows inserted/updated/deleted
+ij> insert into a values (1);
+1 row inserted/updated/deleted
+ij> select * from a;
+A          
+-----
+1          
+ij> commit;
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> select * from a;
+A          
+-----
+1          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> autocommit on;
+ij> maximumdisplaywidth 5000;
+ij> --test 84 columns
+ values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+81, 82, 83, 84);
+1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |40 |41 |42 |43 |44 |45 |46 |47 |48 |49 |50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |60 |61 |62 |63 |64 |65 |66 |67 |68 |69 |70 |71 |72 |73 |74 |75 |76 |77 |78 |79 |80 |81 |82 |83 |84         
+-----
+1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |40 |41 |42 |43 |44 |45 |46 |47 |48 |49 |50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |60 |61 |62 |63 |64 |65 |66 |67 |68 |69 |70 |71 |72 |73 |74 |75 |76 |77 |78 |79 |80 |81 |82 |83 |84         
+ij> values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
+1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |40 |41 |42 |43 |44 |45 |46 |47 |48 |49 |50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |60 |61 |62 |63 |64 |65 |66 |67 |68 |69 |70 |71 |72 |73 |74 |75 |76 |77 |78 |79 |80 |81 |82 |83 |84 |85 |86  
+-----
+1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |21 |22 |23 |24 |25 |26 |27 |28 |29 |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |40 |41 |42 |43 |44 |45 |46 |47 |48 |49 |50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |60 |61 |62 |63 |64 |65 |66 |67 |68 |69 |70 |71 |72 |73 |74 |75 |76 |77 |78 |79 |80 |81 |82 |83 |84 |85 |86 |87 |88 |89 |90 |91 |92 |93 |94 |95 |96 |97 |98 |99 |100        
+ij> -- test SQL Error with non-string arguments
+----- Make sure connection still ok (Bug 4657)
+create table a (a int);
+0 rows inserted/updated/deleted
+ij> insert into a values(2342323423) ;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> insert into a values(1);
+1 row inserted/updated/deleted
+ij> select * from a;
+A          
+-----
+1          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- Bug 4694 Test automatic rollback with close of connection
+----- in ij
+autocommit off;
+ij> create table a (a int);
+0 rows inserted/updated/deleted
+ij> -- Bug 4758 - Store error does not return properly to client
+autocommit off;
+ij> create table t (i int);
+0 rows inserted/updated/deleted
+ij> insert into t values(1);
+1 row inserted/updated/deleted
+ij> commit;
+ij> insert into t values(2);
+1 row inserted/updated/deleted
+ij> connect 'wombat';
+ij(CONNECTION1)> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij(CONNECTION1)> prepare s1 as 'select * from t';
+ij(CONNECTION1)> execute s1;
+I          
+-----
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONNECTION1)> execute s1;
+I          
+-----
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONNECTION1)> -- Bug 5967 - Selecting from 2 lob columns w/ the first one having data of length 0
+create table t1 (c1 clob(10), c2 clob(10));
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> insert into t1 values ('', 'some clob');
+1 row inserted/updated/deleted
+ij(CONNECTION1)> select * from t1;
+C1 |C2        
+-----
+ |some clob 
+ij(CONNECTION1)> select c2 from t1;
+C2        
+-----
+some clob 
+ij(CONNECTION1)> insert into t1 values ('', '');
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into t1 values ('some clob', '');
+1 row inserted/updated/deleted
+ij(CONNECTION1)> select * from t1;
+C1 |C2        
+-----
+ |some clob 
+ |          
+some clob |          
+ij(CONNECTION1)> select c2 from t1;
+C2        
+-----
+some clob 
+ij(CONNECTION1)> drop table t1;
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/sysinfo.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/sysinfo.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,56 @@
+Testing Sysinfo
+org.apache.derby.drda.NetworkServerControl sysinfo 
+----- Derby Network Server Information --------
+----- listing properties --
+derby.drda.maxThreads=0
+derby.drda.keepAlive=true
+derby.drda.minThreads=0
+derby.drda.portNumber=1527
+derby.drda.logConnections=false
+derby.drda.timeSlice=0
+derby.drda.startNetworkServer=false
+derby.drda.host=localhost
+derby.drda.traceAll=false
+----- Derby Information --------
+-----
+----- Locale Information -----------------
+Current Locale :  [English/United States [en_US]]
+Found support for locale: [de_DE]
+Found support for locale: [es]
+Found support for locale: [fr]
+Found support for locale: [it]
+Found support for locale: [ja_JP]
+Found support for locale: [ko_KR]
+Found support for locale: [pt_BR]
+Found support for locale: [zh_CN]
+Found support for locale: [zh_TW]
+-----
+End test
+Testing Sysinfo (locale)
+-----Duser.language=err -Duser.country=DE org.apache.derby.drda.NetworkServerControl sysinfo 
+----- Derby Network Server Information --------
+----- listing properties --
+derby.drda.maxThreads=0
+derby.drda.keepAlive=true
+derby.drda.minThreads=0
+derby.drda.portNumber=1527
+derby.drda.logConnections=false
+derby.drda.timeSlice=0
+derby.drda.startNetworkServer=false
+derby.drda.host=localhost
+derby.drda.traceAll=false
+----- Derby Information --------
+-----
+----- Locale Information -----------------
+Current Locale :  [English/United States [en_US]]
+Found support for locale: [de_DE]
+Found support for locale: [es]
+Found support for locale: [fr]
+Found support for locale: [it]
+Found support for locale: [ja_JP]
+Found support for locale: [ko_KR]
+Found support for locale: [pt_BR]
+Found support for locale: [zh_CN]
+Found support for locale: [zh_TW]
+-----
+End test (locale)

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/wisconsin.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/wisconsin.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,30664 @@
+ij> -- This test is an adaptation of the Wisconsin benchmark, as documented in
+----- The Benchmark Handbook, Second Edition (edited by Jim Gray).  The structure
+----- of the tables and the data in the tables are taken from there.
+-----
+----- The original benchmark talks about clustered and non-clustered
+----- indexes - as far as I can tell, this really means indexes where the
+----- row ordering is or is not the same as in the base table.  It does
+----- not mean special types of indexes.  I am putting in queries that
+----- use both ordered and unordered indexes, despite the fact that
+----- our optimizer does not currently distinguish these cases.
+-----
+----- Another difference is that the original Wisconsin benchmark is a performance
+----- test, while this test is only intended to ensure that the optimizer comes
+----- up with the right query plan.  Therefore, this test doesn't include those
+----- parts of the Wisconsin benchmark where the optimizer has no choice of
+----- access path (e.g. single-table query with no indexes), nor does it include
+----- the projection and update queries.
+-----
+----- This test only does the first variation of each query, since that is
+----- all that is documented in The Benchmark Handbook (it wouldn't be a true
+----- academic reference text if everything were spelled out).
+-----
+----- After the original Wisconsin queries are a bunch of queries that use the
+----- Wisconsin schema but that were written at Cloudscape specifically for
+----- testing our optimizer.
+autocommit off;
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> -- the method refers to a method in performance suite that takes a Connection.
+-----create function WISCInsert(rowcount int, tableName varchar(20)) returns int language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.lang.WiscVTI';
+CREATE PROCEDURE WISCINSERT(rowcount int, tableName varchar(20)) LANGUAGE JAVA PARAMETER STYLE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.WiscVTI.WISCInsertWOConnection';
+0 rows inserted/updated/deleted
+ij> create table TENKTUP1 (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52) not null,
+		stringu2 char(52) not null,
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> --insert 10000 rows into TENKTUP1 
+call WISCINSERT( 10000, 'TENKTUP1');
+Statement executed.
+ij> create unique index TK1UNIQUE1 on TENKTUP1(unique1);
+0 rows inserted/updated/deleted
+ij> create unique index TK1UNIQUE2 on TENKTUP1(unique2);
+0 rows inserted/updated/deleted
+ij> create index TK1TWO on TENKTUP1(two);
+0 rows inserted/updated/deleted
+ij> create index TK1FOUR on TENKTUP1(four);
+0 rows inserted/updated/deleted
+ij> create index TK1TEN on TENKTUP1(ten);
+0 rows inserted/updated/deleted
+ij> create index TK1TWENTY on TENKTUP1(twenty);
+0 rows inserted/updated/deleted
+ij> create index TK1ONEPERCENT on TENKTUP1(onePercent);
+0 rows inserted/updated/deleted
+ij> create index TK1TWENTYPERCENT on TENKTUP1(twentyPercent);
+0 rows inserted/updated/deleted
+ij> create index TK1EVENONEPERCENT on TENKTUP1(evenOnePercent);
+0 rows inserted/updated/deleted
+ij> create index TK1ODDONEPERCENT on TENKTUP1(oddOnePercent);
+0 rows inserted/updated/deleted
+ij> create unique index TK1STRINGU1 on TENKTUP1(stringu1);
+0 rows inserted/updated/deleted
+ij> create unique index TK1STRINGU2 on TENKTUP1(stringu2);
+0 rows inserted/updated/deleted
+ij> create index TK1STRING4 on TENKTUP1(string4);
+0 rows inserted/updated/deleted
+ij> create table TENKTUP2 (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> -- insert 10000 rows into TENKTUP2
+call WISCInsert( 10000, 'TENKTUP2');
+Statement executed.
+ij> create unique index TK2UNIQUE1 on TENKTUP2(unique1);
+0 rows inserted/updated/deleted
+ij> create unique index TK2UNIQUE2 on TENKTUP2(unique2);
+0 rows inserted/updated/deleted
+ij> create table ONEKTUP (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> -- insert 1000 rows into ONEKTUP
+call WISCInsert( 1000, 'ONEKTUP');
+Statement executed.
+ij> create unique index ONEKUNIQUE1 on ONEKTUP(unique1);
+0 rows inserted/updated/deleted
+ij> create unique index ONEKUNIQUE2 on ONEKTUP(unique2);
+0 rows inserted/updated/deleted
+ij> create table BPRIME (
+		unique1 int,
+		unique2 int,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> insert into BPRIME
+select * from TENKTUP2
+where TENKTUP2.unique2 < 1000;
+1000 rows inserted/updated/deleted
+ij> commit;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+Statement executed.
+ij> maximumdisplaywidth 8000;
+ij> -- Wisconsin Query 3
+get cursor c as
+	'select * from TENKTUP1
+	where unique2 between 0 and 99';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where unique2 between 0 and 99
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 4
+get cursor c as
+	'select * from TENKTUP1
+	where unique2 between 792 and 1791';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where unique2 between 792 and 1791
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 5
+get cursor c as
+	'select * from TENKTUP1
+	where unique1 between 0 and 99';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where unique1 between 0 and 99
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 6
+get cursor c as
+	'select * from TENKTUP1
+	where unique1 between 792 and 1791';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where unique1 between 792 and 1791
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 7
+get cursor c as
+	'select *
+	from TENKTUP1
+	where unique2 = 2001';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select *
+	from TENKTUP1
+	where unique2 = 2001
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 12
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP2.unique2 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP2.unique2 < 1000)
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Wisconsin Query 13
+get cursor c as
+	'select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique2 = BPRIME.UNIQUE2)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique2 = BPRIME.UNIQUE2)
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for BPRIME at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Wisconsin query 14
+----- NOTE: This could benefit from transitive closure, which our optimizer
+----- doesn't do (yet).
+----- Note that after fix for optimizer bug 5868, in runtime statistics info, we will see 2 qualifiers for table TENKTUP2. This is because as fix for
+----- bug 5868, while getting rid of a redundant predicate which is a start and/or stop AND a qualifier, we mark the predicate we are going to keep 
+----- as start and/or stop AND as a qualifier. Prior to fix of bug 5868, we were disregarding the qualifier flag on the redundant predicate if it 
+----- was a start and/or stop predicate too.
+get cursor c as
+	'select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique2 = TENKTUP1.unique2)
+	and (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP1.unique2 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique2 = TENKTUP1.unique2)
+	and (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP1.unique2 < 1000)
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Wisconsin Query 15
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Wisconsin Query 16
+get cursor c as
+	'select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique1 = BPRIME.unique1)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique1 = BPRIME.unique1)
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for BPRIME at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Wisconsin Query 17
+----- NOTE: This could benefit from transitive closure, which our optimizer
+----- doesn't do (yet).
+----- Note that after fix for optimizer bug 5868, in runtime statistics info, we will see 2 qualifiers for table TENKTUP2. This is because as fix for
+----- bug 5868, while getting rid of a redundant predicate which is a start and/or stop AND a qualifier, we mark the predicate we are going to keep 
+----- as start and/or stop AND as a qualifier. Prior to fix of bug 5868, we were disregarding the qualifier flag on the redundant predicate if it 
+----- was a start and/or stop predicate too.
+get cursor c as
+	'select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique1 = TENKTUP1.unique1)
+	and (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique1 = TENKTUP1.unique1)
+	and (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- This is the end of the Wisconsin queries.  Now do some queries that are
+----- not part of the original Wisconsin benchmark, using the Wisconsin schema.
+----- Single-table queries using index on column 'two'
+----- 50% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where two = 0
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 50% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two = 3';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where two = 3
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 100% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where two >= 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where two >= 0
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 2
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two > 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where two > 1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 50% selectivity index that covers query - should do index scan
+get cursor c as
+	'select two from TENKTUP1
+	where two = 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1
+	where two = 1
+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 Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'four'
+----- 25% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where four = 0
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 25% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four = 4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where four = 4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 75% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where four >= 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where four >= 1
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 3
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four > 3';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where four > 3
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 25% selectivity index that covers query - should do index scan
+get cursor c as
+	'select four from TENKTUP1
+	where four = 2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select four from TENKTUP1
+	where four = 2
+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 Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'twentyPercent'
+----- 20% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent = 2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent = 2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 20% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent = 5';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent = 5
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent > 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent > 1
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 8
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent > 4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent > 4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 20% selectivity index that covers query - should do index scan
+get cursor c as
+	'select twentyPercent from TENKTUP1
+	where twentyPercent = 3';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select twentyPercent from TENKTUP1
+	where twentyPercent = 3
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'ten'
+----- 10% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where ten = 5';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where ten = 5
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 10% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten = 10';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where ten = 10
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten <= 4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where ten <= 4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten <= 5';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where ten <= 5
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 4
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten > 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where ten > 100
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 10% selectivity index that covers query - should do index scan
+get cursor c as
+	'select ten from TENKTUP1
+	where ten = 7';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select ten from TENKTUP1
+	where ten = 7
+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 Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'twenty'
+----- 5% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where twenty = 17';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twenty = 17
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 5% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty = 20';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twenty = 20
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty <= 9';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twenty <= 9
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 55% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty <= 10';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twenty <= 10
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 5
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty < 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where twenty < 0
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> commit;
+ij> -- 5% selectivity index that covers query - should do index scan
+get cursor c as
+	'select twenty from TENKTUP1
+	where twenty = 19';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select twenty from TENKTUP1
+	where twenty = 19
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'onePercent'
+----- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent = 63';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent = 63
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent = 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent = 100
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 49';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent > 49
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 6
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 40';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent > 40
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 6
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 101';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent > 101
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select onePercent from TENKTUP1
+	where onePercent = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select onePercent from TENKTUP1
+	where onePercent = 0
+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 Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'evenOnePercent'
+----- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent = 64';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent = 64
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent = 200';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent = 200
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 99';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent > 99
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 11
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 80';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent > 80
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 11
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 198';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent > 198
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select evenOnePercent from TENKTUP1
+	where evenOnePercent = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select evenOnePercent from TENKTUP1
+	where evenOnePercent = 0
+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 Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'oddOnePercent'
+----- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent = 63';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent = 63
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent = 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent = 100
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 40% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 120';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent > 120
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 80';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent > 80
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 12
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 199';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent > 199
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select oddOnePercent from TENKTUP1
+	where oddOnePercent = 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select oddOnePercent from TENKTUP1
+	where oddOnePercent = 1
+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 Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'stringu1'
+----- unique index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 = ''AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 = 'AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 = ''AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 = 'AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 > 'AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 13
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 51% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 > 'AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 13
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 > 'AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index that covers query - should do index scan
+get cursor c as
+	'select stringu1 from TENKTUP1
+	where stringu1 = ''AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select stringu1 from TENKTUP1
+	where stringu1 = 'AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	qualifiers:
+None
+ij> commit;
+ij> -- Single-table queries using index on column 'stringu2'
+----- unique index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 = ''AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 = 'AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 = ''AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 = 'AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 > 'AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 14
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 51% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 > 'AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 14
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 > 'AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index that covers query - should do index scan
+get cursor c as
+	'select stringu2 from TENKTUP1
+	where stringu2 = ''AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select stringu2 from TENKTUP1
+	where stringu2 = 'AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	qualifiers:
+None
+ij> commit;
+ij> -- Single-table queries using index on column 'string4'
+----- 25% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 = ''AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where string4 = 'AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		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> commit;
+ij> -- 25% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 = ''EEEExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where string4 = 'EEEExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 > ''HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where string4 > 'HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 15
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 > ''VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+	where string4 > 'VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 25% selectivity index that covers query - should do index scan
+get cursor c as
+	'select string4 from TENKTUP1
+	where string4 = ''OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select string4 from TENKTUP1
+	where string4 = 'OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	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> commit;
+ij> -- Now test equijoins with different selectivities and different numbers
+----- of outer rows.  The approach taken is that different join columns are
+----- used, and that TENKTUP1 has indexes on all the joining columns, while
+----- TENKTUP2 does not.  We use the unique1 column of TENKTUP2 to select
+----- different numbers of rows.  The two tables will always appear in the
+----- FROM clause with TENKTUP1 first, and TENKTUP2 second - it is up to
+----- the optimizer to figure out which should come first in the join order.
+----- Joins on unique1
+----- Join on unique1, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=2
+		Number of rows qualified=16
+		Number of rows visited=16
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Join on unique1, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=3
+		Number of rows qualified=16
+		Number of rows visited=27
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 2500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=4
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Joins on two
+----- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+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: 
+Nested Loop Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=2
+		Number of rows qualified=16
+		Number of rows visited=16
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+Right result set:
+	Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Joins on four
+----- Join on four, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on ten
+----- Join on ten, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twenty
+----- Join on twenty, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on onePercent
+----- Join on onePercent, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twentyPercent
+----- Join on twentyPercent, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on stringu1
+----- Join on stringu1, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Joins on string4
+----- Join on string4, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Now do the same equijoin tests, but select only one column from TENKTUP1.
+----- This way, it can choose hash join where appropriate (it avoids it where
+----- it thinks the hash table will take too much memory).
+----- Joins on unique1
+----- Join on unique1, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 6000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=6000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 2500
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=15
+				Number of rows qualified=2500
+				Number of rows visited=2501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 1000
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=7
+				Number of rows qualified=1000
+				Number of rows visited=1001
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 500
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=4
+				Number of rows qualified=500
+				Number of rows visited=501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 100
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=2
+				Number of rows qualified=100
+				Number of rows visited=101
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Joins on two
+----- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Joins on four
+----- Join on four, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 3}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on ten
+----- Join on ten, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 4}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twenty
+----- Join on twenty, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 5}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on onePercent
+----- Join on onePercent, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 6}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twentyPercent
+----- Join on twentyPercent, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 8}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on stringu1
+----- Join on stringu1, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Joins on string4
+----- Join on string4, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Test the effect of ORDER BY on access path.  The optimizer takes
+----- the cost of sorting into account, and may choose an access path
+----- in the same order as the ORDER BY, especially if the sort is
+----- expensive.
+-----
+----- First try single-table queries.
+----- No where clause, try ordering on different indexed columns
+get cursor c as
+	'select * from TENKTUP1 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by unique2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by two
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by four
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by ten
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by twenty
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by onePercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by twentyPercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by evenOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by evenOnePercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by oddOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by oddOnePercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by stringu1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by stringu2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by stringu2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 order by string4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- Now try the same thing with covering indexes
+get cursor c as
+	'select unique1 from TENKTUP1 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select unique1 from TENKTUP1 order by unique1
+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 Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select unique2 from TENKTUP1 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select unique2 from TENKTUP1 order by unique2
+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 Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select two from TENKTUP1 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 order by two
+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 Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select four from TENKTUP1 order by four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select four from TENKTUP1 order by four
+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 Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select ten from TENKTUP1 order by ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select ten from TENKTUP1 order by ten
+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 Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select twenty from TENKTUP1 order by twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select twenty from TENKTUP1 order by twenty
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select onePercent from TENKTUP1 order by onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select onePercent from TENKTUP1 order by onePercent
+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 Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select twentyPercent from TENKTUP1 order by twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select twentyPercent from TENKTUP1 order by twentyPercent
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select evenOnePercent from TENKTUP1 order by evenOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select evenOnePercent from TENKTUP1 order by evenOnePercent
+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 Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select oddOnePercent from TENKTUP1 order by oddOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select oddOnePercent from TENKTUP1 order by oddOnePercent
+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 Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select stringu1 from TENKTUP1 order by stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select stringu1 from TENKTUP1 order by stringu1
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select stringu2 from TENKTUP1 order by stringu2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select stringu2 from TENKTUP1 order by stringu2
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select string4 from TENKTUP1 order by string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select string4 from TENKTUP1 order by string4
+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 Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> -- Where clause on same column as order by, with different selectivities.
+----- 60%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 6000 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 6000 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 25%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 2500 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 2500 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 10%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 1000 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 1000 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 5%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 500 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 500 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 1%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 100 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 100 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- one row
+get cursor c as
+	'select * from TENKTUP1 where unique1 = 0 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 = 0 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Where clause and order by on different columns - non-covering
+----- 60%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 6000 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 6000 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 6000
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=770
+		Number of rows qualified=6000
+		Number of rows visited=10000
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 2500 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 2500 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 2500
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2500
+		Rows filtered = 0
+		Fetch Size = 16
+			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=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 10%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 1000 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 1000 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1000
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 5%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 500 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 500 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 500
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 500
+		Rows filtered = 0
+		Fetch Size = 16
+			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=4
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 1%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 100 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 100 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 100
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 100
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- one row
+get cursor c as
+	'select * from TENKTUP1 where unique1 = 0 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1 where unique1 = 0 order by unique2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Where clause and order by on different columns - covering
+create index TK1UNIQUE1TWO on TENKTUP1(unique1, two);
+0 rows inserted/updated/deleted
+ij> create index TK1TWOUNIQUE1 on TENKTUP1(two, unique1);
+0 rows inserted/updated/deleted
+ij> -- 60%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 6000 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 6000 order by two
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 2500 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 2500 order by two
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 10%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 1000 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 1000 order by two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1TWO at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1000
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=8
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 5%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 500 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 500 order by two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1TWO at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 500
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=5
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 1%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 100 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 100 order by two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1TWO at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 100
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- one row
+----- RESOLVE: For some reason, this avoids the sort by choosing the
+----- index on column two, rather than by treating it as a one-row table.
+----- It does not do this if you run the query by itself, outside of this
+----- test.
+get cursor c as
+	'select two from TENKTUP1 where unique1 = 0 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two from TENKTUP1 where unique1 = 0 order by two
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {2}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> drop index TK1UNIQUE1TWO;
+0 rows inserted/updated/deleted
+ij> -- Constant search condition on first column of index, order on second
+----- column.
+get cursor c as
+	'select two, unique1 from TENKTUP1 where two = 0 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two, unique1 from TENKTUP1 where two = 0 order by unique1
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> -- Constant search condition on first column of index, order on first and second
+----- columns.
+get cursor c as
+	'select two, unique1 from TENKTUP1 where two = 0 order by two, unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select two, unique1 from TENKTUP1 where two = 0 order by two, unique1
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> drop index TK1TWOUNIQUE1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- Now test sort avoidance with joins.
+-----
+----- First try two-way joins where the order by column is in only one table
+----- Order by column same as joining column
+-----
+----- 100% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table 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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 60% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 2500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 2500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 10% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 5% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=4
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 1% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- one row from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Order by column different from joining column
+-----
+----- 100% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table 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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 60% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 6000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 6000
+		Rows seen from the right = 6000
+		Rows filtered = 0
+		Rows returned = 6000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 6000
+			Rows filtered = 0
+			Fetch Size = 16
+				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=16
+				Number of pages visited=770
+				Number of rows qualified=6000
+				Number of rows visited=10000
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 6000
+			Rows seen = 6000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 6000
+				Rows seen = 6000
+				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=12000
+					Number of rows qualified=6000
+					Number of rows visited=6000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 2500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 2500
+		Rows seen from the right = 2500
+		Rows filtered = 0
+		Rows returned = 2500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 2500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 2500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=15
+					Number of rows qualified=2500
+					Number of rows visited=2501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 2500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 2500
+		Rows seen from the right = 2500
+		Rows filtered = 0
+		Rows returned = 2500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 2500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 2500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=15
+					Number of rows qualified=2500
+					Number of rows visited=2501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 10% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1000
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=7
+					Number of rows qualified=1000
+					Number of rows visited=1001
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 5% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 500
+		Rows seen from the right = 500
+		Rows filtered = 0
+		Rows returned = 500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=4
+					Number of rows qualified=500
+					Number of rows visited=501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 500
+			Rows seen = 500
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 500
+				Rows seen = 500
+				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=1000
+					Number of rows qualified=500
+					Number of rows visited=500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 1% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 100
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 100
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=100
+					Number of rows visited=101
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- one row from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Sort avoidance with joins and order by on columns in different tables
+-----
+----- order on joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table 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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- order on joining columns with qualifications on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 6000
+	Rows seen from the right = 6000
+	Rows filtered = 0
+	Rows returned = 6000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 6000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=770
+			Number of rows qualified=6000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Project-Restrict ResultSet (5):
+		Number of opens = 6000
+		Rows seen = 6000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 6000
+			Rows seen = 6000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 6000
+				Rows seen = 6000
+				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=12000
+					Number of rows qualified=6000
+					Number of rows visited=6000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2500
+	Rows seen from the right = 2500
+	Rows filtered = 0
+	Rows returned = 2500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 2500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=15
+				Number of rows qualified=2500
+				Number of rows visited=2501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 2500
+		Rows seen = 2500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1000
+	Rows seen from the right = 1000
+	Rows filtered = 0
+	Rows returned = 1000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1000
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1000
+			Rows filtered = 0
+			Fetch Size = 16
+				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=7
+				Number of rows qualified=1000
+				Number of rows visited=1001
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1000
+		Rows seen = 1000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 500
+	Rows seen from the right = 500
+	Rows filtered = 0
+	Rows returned = 500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=4
+				Number of rows qualified=500
+				Number of rows visited=501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 500
+		Rows seen = 500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 500
+			Rows seen = 500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 500
+				Rows seen = 500
+				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=1000
+					Number of rows qualified=500
+					Number of rows visited=500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 100
+	Rows seen from the right = 100
+	Rows filtered = 0
+	Rows returned = 100
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 100
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 100
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=100
+				Number of rows visited=101
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 100
+		Rows seen = 100
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=0
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=0
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 100
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 100
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=100
+					Number of rows visited=101
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 100
+			Rows seen = 100
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 100
+				Rows seen = 100
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 100
+					Rows seen = 100
+					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=200
+						Number of rows qualified=100
+						Number of rows visited=100
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 500
+		Rows seen from the right = 500
+		Rows filtered = 0
+		Rows returned = 500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=4
+					Number of rows qualified=500
+					Number of rows visited=501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 500
+			Rows seen = 500
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 500
+				Rows seen = 500
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 500
+					Rows seen = 500
+					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=1000
+						Number of rows qualified=500
+						Number of rows visited=500
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> -- order on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=10000
+	Number of rows output=10000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 10000
+	Rows seen from the right = 10000
+	Rows filtered = 0
+	Rows returned = 10000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 10000
+		Rows seen = 10000
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 10000
+			Rows seen = 10000
+			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=20000
+				Number of rows qualified=10000
+				Number of rows visited=10000
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- order on non-joining columns with qualifications on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 6000
+	Rows seen from the right = 6000
+	Rows filtered = 0
+	Rows returned = 6000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 6000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=770
+			Number of rows qualified=6000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Project-Restrict ResultSet (5):
+		Number of opens = 6000
+		Rows seen = 6000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 6000
+			Rows seen = 6000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 6000
+				Rows seen = 6000
+				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=12000
+					Number of rows qualified=6000
+					Number of rows visited=6000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2500
+	Rows seen from the right = 2500
+	Rows filtered = 0
+	Rows returned = 2500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 2500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=15
+				Number of rows qualified=2500
+				Number of rows visited=2501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 2500
+		Rows seen = 2500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1000
+	Rows seen from the right = 1000
+	Rows filtered = 0
+	Rows returned = 1000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1000
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1000
+			Rows filtered = 0
+			Fetch Size = 16
+				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=7
+				Number of rows qualified=1000
+				Number of rows visited=1001
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1000
+		Rows seen = 1000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 500
+	Rows seen from the right = 500
+	Rows filtered = 0
+	Rows returned = 500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=4
+				Number of rows qualified=500
+				Number of rows visited=501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 500
+		Rows seen = 500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 500
+			Rows seen = 500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 500
+				Rows seen = 500
+				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=1000
+					Number of rows qualified=500
+					Number of rows visited=500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 100
+	Rows seen from the right = 100
+	Rows filtered = 0
+	Rows returned = 100
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 100
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 100
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=100
+				Number of rows visited=101
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 100
+		Rows seen = 100
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = true
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=0
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 100
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 100
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=100
+					Number of rows visited=101
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 100
+			Rows seen = 100
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 100
+				Rows seen = 100
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 100
+					Rows seen = 100
+					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=200
+						Number of rows qualified=100
+						Number of rows visited=100
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 500
+		Rows seen from the right = 500
+		Rows filtered = 0
+		Rows returned = 500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=4
+					Number of rows qualified=500
+					Number of rows visited=501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 500
+			Rows seen = 500
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 500
+				Rows seen = 500
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 500
+					Rows seen = 500
+					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=1000
+						Number of rows qualified=500
+						Number of rows visited=500
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> -- Three-way join, order on columns from only two tables
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 < 6000
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 < 6000
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 = 0
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 = 0
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for ONEKTUP:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for ONEKTUP using index ONEKUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 616
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=616
+	Number of rows output=616
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (10):
+	Number of opens = 1
+	Rows seen = 616
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 616
+		Rows seen from the right = 616
+		Rows filtered = 0
+		Rows returned = 616
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 616
+			Rows filtered = 0
+			Rows returned = 616
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (6):
+				Number of opens = 1000
+				Rows seen = 1000
+				Rows filtered = 384
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Row to Base Row ResultSet for TENKTUP1:
+					Number of opens = 1000
+					Rows seen = 1000
+					Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+						Number of opens = 1000
+						Rows seen = 1000
+						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=2000
+							Number of rows qualified=1000
+							Number of rows visited=1000
+							Scan type=btree
+							Tree height=2
+							start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+							stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+							qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (9):
+			Number of opens = 616
+			Rows seen = 616
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP2:
+				Number of opens = 616
+				Rows seen = 616
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 616
+					Rows seen = 616
+					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=1232
+						Number of rows qualified=616
+						Number of rows visited=616
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (10):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (7):
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1
+				Rows seen = 1
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+						Number of rows qualified=1
+						Number of rows visited=1
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for ONEKTUP:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for ONEKTUP using index ONEKUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Joining columns different from ordering columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (9):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for ONEKTUP:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for ONEKTUP using index ONEKUNIQUE2 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Values clause is a single-row result set, so should not cause optimizer
+----- to require sort.
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.unique1, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.unique1, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Try with a join on unique column and order on non-unique column
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.two, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.two, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.two = t.x
+	 order by TENKTUP1.two, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.two = t.x
+	 order by TENKTUP1.two, t.x
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.four = t.x
+	 order by TENKTUP1.four, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.four = t.x
+	 order by TENKTUP1.four, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.ten = t.x
+	 order by TENKTUP1.ten, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.ten = t.x
+	 order by TENKTUP1.ten, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twenty = t.x
+	 order by TENKTUP1.twenty, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twenty = t.x
+	 order by TENKTUP1.twenty, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.onePercent = t.x
+	 order by TENKTUP1.onePercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.onePercent = t.x
+	 order by TENKTUP1.onePercent, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.tenPercent = t.x
+	 order by TENKTUP1.tenPercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.tenPercent = t.x
+	 order by TENKTUP1.tenPercent, t.x
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 7
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twentyPercent = t.x
+	 order by TENKTUP1.twentyPercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twentyPercent = t.x
+	 order by TENKTUP1.twentyPercent, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.fiftyPercent = t.x
+	 order by TENKTUP1.fiftyPercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.fiftyPercent = t.x
+	 order by TENKTUP1.fiftyPercent, t.x
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 9
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Test for bug 2307:
+----- Join between primary & foreign keys, w/= clause on foreign tab &
+----- ORDER on indexed col of prim. tab returns rows in wrong order
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.ten
+	 and TENKTUP2.onePercent = 63
+	 order by TENKTUP1.two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.ten
+	 and TENKTUP2.onePercent = 63
+	 order by TENKTUP1.two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 100
+			Rows filtered = 0
+			Fetch Size = 16
+				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=16
+				Number of pages visited=770
+				Number of rows qualified=100
+				Number of rows visited=10000
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					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> commit;
+ij> -- Test multi-level outer join
+----- Extra-wide output because many tables.
+maximumdisplaywidth 8000;
+ij> get cursor c as
+	'select * from TENKTUP1
+		left outer join TENKTUP2 on
+		(
+			TENKTUP1.unique1 = TENKTUP2.unique1
+		)
+		left outer join ONEKTUP on
+		(
+			TENKTUP2.unique2 = ONEKTUP.unique2
+		)
+		left outer join BPRIME on
+		(
+			ONEKTUP.onePercent = BPRIME.onePercent
+		)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select * from TENKTUP1
+		left outer join TENKTUP2 on
+		(
+			TENKTUP1.unique1 = TENKTUP2.unique1
+		)
+		left outer join ONEKTUP on
+		(
+			TENKTUP2.unique2 = ONEKTUP.unique2
+		)
+		left outer join BPRIME on
+		(
+			ONEKTUP.onePercent = BPRIME.onePercent
+		)
+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: 
+Hash Left Outer Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Empty right rows returned = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Hash Left Outer Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Empty right rows returned = 0
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Left Outer Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Empty right rows returned = 0
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=16
+				Number of pages visited=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					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
+	Right result set:
+		Hash Scan ResultSet for ONEKTUP at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 1
+		Rows seen = 1
+		Rows filtered = 0
+			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=16
+			Number of pages visited=77
+			Number of rows qualified=1000
+			Number of rows visited=1000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Hash Scan ResultSet for BPRIME at serializable isolation level using share table locking: 
+	Number of opens = 1
+	Hash table size = 100
+	Hash key is column number 6
+	Rows seen = 0
+	Rows filtered = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=77
+		Number of rows qualified=1000
+		Number of rows visited=1000
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		scan qualifiers:
+None
+		next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- tests to show selectivity - rowcount estimates
+----- the numbers skip a value for reference to original Cloudscape test cases
+----- with identical queries using properties useStatistics=false.
+----- do simple joins on columns and look at row count/cost.
+----- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+ij> close c;
+ij> -- 1, join on two--all rows
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> -- 3, join on two--60%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> -- 5, join on two--25%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> -- 7, join on two--10%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> -- 9, join on two--5%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> -- 11, join on two--1%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> -- 13, join on two--1 row
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> --  now do joins on a very low cardinality table
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from 
+	TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+ij> close c;
+ij> -- 15, join on onePercent--all rows
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from 
+	TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> -- 17, join on onePercent--60%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> -- 19, join on onePercent--25%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> -- 21, join on onePercent--10%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> -- 23, join on onePercent--5%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> -- 25, join on onePercent--1%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> -- 27, join on onePercent--1 row
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+-----
+Statement Name: 
+	SQL_CURSH200C1
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 6}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOB.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOB.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,826 @@
+ij> -- This test lang/LOB.sql still includes tests for 
+-- DB2 UDB incompatible datatype NCLOB.
+-- Still waiting for DB2 UDB compatible functionality for NCLOB to be implemented
+-- Also note that in DB2 UDB, to create BLOB and CLOB strings greater than 1 gigabyte,
+-- the NOT LOGGED option must be specified (SQLSTATE 42993).
+-- test that BLOB/CLOB are not reserved words
+create table blob(a int);
+0 rows inserted/updated/deleted
+ij> insert into blob values(3);
+1 row inserted/updated/deleted
+ij> select blob.a from blob;
+A          
+-----------
+3          
+ij> create table clob(a int);
+0 rows inserted/updated/deleted
+ij> insert into clob values(3);
+1 row inserted/updated/deleted
+ij> select clob.a from clob;
+A          
+-----------
+3          
+ij> create table nclob(a int);
+0 rows inserted/updated/deleted
+ij> insert into nclob values(3);
+1 row inserted/updated/deleted
+ij> select nclob.a from nclob;
+A          
+-----------
+3          
+ij> create table a(blob int, clob int, nclob int);
+0 rows inserted/updated/deleted
+ij> insert into a values(1,2,3);
+1 row inserted/updated/deleted
+ij> insert into a(blob, clob, nclob) values(1,2,3);
+1 row inserted/updated/deleted
+ij> select a.blob, a.clob, a.nclob from a;
+BLOB       |CLOB       |NCLOB      
+-----------------------------------
+1          |2          |3          
+1          |2          |3          
+ij> select a.blob, a.clob, a.nclob from a where a.blob = 1;
+BLOB       |CLOB       |NCLOB      
+-----------------------------------
+1          |2          |3          
+1          |2          |3          
+ij> select a.blob, a.clob, a.nclob from a where a.clob = 2;
+BLOB       |CLOB       |NCLOB      
+-----------------------------------
+1          |2          |3          
+1          |2          |3          
+ij> select a.blob, a.clob, a.nclob from a where a.nclob = 3;
+BLOB       |CLOB       |NCLOB      
+-----------------------------------
+1          |2          |3          
+1          |2          |3          
+ij> select a.blob, a.clob, a.nclob from a where a.blob = 1 and a.clob = 2 and a.nclob = 3;
+BLOB       |CLOB       |NCLOB      
+-----------------------------------
+1          |2          |3          
+1          |2          |3          
+ij> create table b(blob blob(3K), clob clob(2M));
+0 rows inserted/updated/deleted
+ij> insert into b values(cast(X'0031' as blob(3K)),cast('2' as clob(2M)));
+1 row inserted/updated/deleted
+ij> insert into b(blob, clob, nclob) values(cast(X'0031' as blob(3K)),cast('2' as clob(2M)));
+ERROR 42X14: 'NCLOB' is not a column in table or VTI 'APP.B'.
+ij> select b.blob, b.clob, b.nclob from b;
+ERROR 42X04: Column 'B.NCLOB' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'B.NCLOB' is not a column in the target table.
+ij> -- equal tests are not allowed
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))=cast(X'e000' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where X'80' = cast(X'80' as blob(1));
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'80' as blob(1)) = X'80';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select 1 from b where cast(X'80' as blob(1)) = cast(X'80' as blob(1));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where '1' = cast('1' as clob(1));
+ERROR 42818: Comparisons between 'CHAR' and 'CLOB' are not supported.
+ij> select 1 from b where cast('1' as clob(1)) = '1';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select 1 from b where cast('1' as clob(1)) = cast('1' as clob(1));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where '1' = cast('1' as nclob(1));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('1' as nclob(1)) = '1';
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('1' as nclob(1)) = cast('1' as nclob(1));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- NCLOB is comparable with CLOB
+select 1 from b where cast('1' as nclob(10)) = cast('1' as clob(10));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('1' as clob(10)) = cast('1' as nclob(10));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- comparsion using tables
+select * from b as b1, b as b2 where b1.blob=b2.blob;
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select * from b as b1, b as b2 where b1.blob!=b2.blob;
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select * from b as b1, b as b2 where b1.blob=X'20';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select * from b as b1, b as b2 where X'20'=b1.blob;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij> select * from b as b1, b as b2 where X'20'!=b1.blob;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij> select * from b as b1, b as b2 where b1.blob=X'7575';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select * from b as b1, b as b2 where X'7575'=b1.blob;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij> select b.blob, b.clob, b.nclob from b where b.blob = '1' and b.clob = '2' and b.nclob = '3';
+ERROR 42X04: Column 'B.NCLOB' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'B.NCLOB' is not a column in the target table.
+ij> select b.blob from b where b.blob = '1';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> -- however it works for types which cloudscape autocasts to char
+select b.clob from b where b.clob = '2';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select b.nclob from b where b.nclob = '3';
+ERROR 42X04: Column 'B.NCLOB' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'B.NCLOB' is not a column in the target table.
+ij> -- test insert of NULL
+insert into b values(null, null, null);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> select * from b;
+BLOB                                                                                                                            |CLOB                                                                                                                            
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0031                                                                                                                            |2                                                                                                                               
+ij> -- cleanup
+drop table blob;
+0 rows inserted/updated/deleted
+ij> drop table clob;
+0 rows inserted/updated/deleted
+ij> drop table nclob;
+0 rows inserted/updated/deleted
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> -- test insert limitations
+create table b(b blob(5));
+0 rows inserted/updated/deleted
+ij> create table c(c clob(5));
+0 rows inserted/updated/deleted
+ij> create table n(n nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> insert into b values(cast(X'01020304' as blob(10)));
+1 row inserted/updated/deleted
+ij> insert into b values(cast(X'0102030405' as blob(10)));
+1 row inserted/updated/deleted
+ij> insert into b values(cast(X'010203040506' as blob(10)));
+ERROR 22001: A truncation error was encountered trying to shrink BLOB 'XXXX' to length 5.
+ij> -- truncate before insert, no errors
+insert into b values(cast(X'01020304' as blob(5)));
+1 row inserted/updated/deleted
+ij> insert into b values(cast(X'0102030405' as blob(5)));
+1 row inserted/updated/deleted
+ij> insert into b values(cast(X'010203040506' as blob(5)));
+1 row inserted/updated/deleted
+ij> -- clob/nclob
+--   ok in spite of not being cast
+insert into c values('1234');
+1 row inserted/updated/deleted
+ij> insert into c values('12345');
+1 row inserted/updated/deleted
+ij> insert into c values('123456');
+ERROR 22001: A truncation error was encountered trying to shrink CLOB '123456' to length 5.
+ij> insert into n values('1234');
+ERROR 42X05: Table 'N' does not exist.
+ij> insert into n values('12345');
+ERROR 42X05: Table 'N' does not exist.
+ij> insert into n values('123456');
+ERROR 42X05: Table 'N' does not exist.
+ij> --   ok
+insert into c values(cast('1234' as clob(5)));
+1 row inserted/updated/deleted
+ij> insert into c values(cast('12345' as clob(5)));
+1 row inserted/updated/deleted
+ij> insert into c values(cast('123456' as clob(5)));
+1 row inserted/updated/deleted
+ij> insert into n values(cast('1234' as nclob(5)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> insert into n values(cast('12345' as nclob(5)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> insert into n values(cast('123456' as nclob(5)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select * from b;
+B         
+----------
+01020304  
+0102030405
+01020304  
+0102030405
+0102030405
+ij> select * from c;
+C    
+-----
+1234 
+12345
+1234 
+12345
+1234&
+ij> select * from n;
+ERROR 42X05: Table 'N' does not exist.
+ij> -- concatenate
+values cast('12' as clob(2)) || cast('34' as clob(2));
+1   
+----
+1234
+ij> values cast('12' as nclob(2)) || cast('34' as nclob(2));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('12' as clob(2)) || cast('34' as clob(2)) = '1234';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select 1 from b where cast('12' as nclob(2)) || cast('34' as nclob(2)) = '1234';
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('12' as clob(2)) || cast('34' as clob(2)) = cast('1234' as clob(4));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('12' as nclob(2)) || cast('34' as nclob(2)) = cast('1234' as clob(4));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- like
+select * from b where b like '0102%';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select * from c where c like '12%';
+C    
+-----
+1234 
+12345
+1234 
+12345
+1234&
+ij> select * from n where n like '12%';
+ERROR 42X05: Table 'N' does not exist.
+ij> select * from b where b like cast('0102%' as blob(10));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> select * from c where c like cast('12%' as clob(10));
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select * from n where n like cast('12%' as nclob(10));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- cleanup
+drop table b;
+0 rows inserted/updated/deleted
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> drop table n;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'N' because it does not exist.
+ij> -- test syntax of using long type names
+create table a(a binary large object(3K));
+0 rows inserted/updated/deleted
+ij> create table b(a character large object(3K));
+0 rows inserted/updated/deleted
+ij> create table c(a national character large object(3K));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> create table d(a char large object(204K));
+0 rows inserted/updated/deleted
+ij> -- create index (not allowed)
+create index ia on a(a);
+ERROR X0X67: Columns of type 'BLOB' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> create index ib on b(a);
+ERROR X0X67: Columns of type 'CLOB' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> create index ic on c(a);
+ERROR 42Y55: 'CREATE INDEX' cannot be performed on 'C' because it does not exist.
+ij> create index id on d(a);
+ERROR X0X67: Columns of type 'CLOB' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- cleanup
+drop table a;
+0 rows inserted/updated/deleted
+ij> drop table c;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C' because it does not exist.
+ij> drop table d;
+0 rows inserted/updated/deleted
+ij> -- ORDER tests on LOB types (not allowed)
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))!=cast(X'e0' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))<cast(X'e0' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))>cast(X'e0' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))<=cast(X'e0' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast(X'e0' as blob(5))>=cast(X'e0' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij> select 1 from b where cast('fish' as clob(5))=cast('fish' as clob(5));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('fish' as clob(5))!=cast('fish' as clob(5));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('fish' as clob(5))<cast('fish' as clob(5));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('fish' as clob(5))>cast('fish' as clob(7));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('fish' as clob(5))<=cast('fish' as clob(7));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('fish' as clob(5))>=cast('fish' as clob(7));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij> select 1 from b where cast('fish' as nclob(5))=cast('fish' as nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('fish' as nclob(5))!=cast('fish' as nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('fish' as nclob(5))<cast('fish' as nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('fish' as nclob(5))>cast('fish' as nclob(7));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('fish' as nclob(5))<=cast('fish' as nclob(7));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select 1 from b where cast('fish' as nclob(5))>=cast('fish' as nclob(7));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- test operands on autocast
+-- beetle 5282
+-- <,> <=, >= operands are not supported in db2 but supported in cloudscape
+-- compare w. integer/char types are also not ok
+-- CLOB testing
+CREATE TABLE testoperatorclob (colone clob(1K));
+0 rows inserted/updated/deleted
+ij> INSERT INTO testoperatorclob VALUES (CAST('50' AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> INSERT INTO testoperatorclob VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> select * from testoperatorclob;
+COLONE                                                                                                                          
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+50                                                                                                                              
+ij> -- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorclob where colone > 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone > 5;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone < 70;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone = 50;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone != 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone <= 70;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone >= 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone <> 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone > '10';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone > '5';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone < '70';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone = '50';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone != '10';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone <= '70';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone >= '10';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorclob where colone <> '10';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij> drop table testoperatorclob;
+0 rows inserted/updated/deleted
+ij> -- BLOB testing
+CREATE TABLE testoperatorblob (colone blob(1K));
+0 rows inserted/updated/deleted
+ij> INSERT INTO testoperatorblob VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> INSERT INTO testoperatorblob VALUES (CAST(cast('50' as varchar(80)) AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'VARCHAR' to 'BLOB'.
+ij> select * from testoperatorblob;
+COLONE                                                                                                                          
+--------------------------------------------------------------------------------------------------------------------------------
+ij> -- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorblob where colone > 10;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone > 5;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone < 999999;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone = 00350030;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone != 10;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone <= 999999;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone >= 10;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone <> 10;
+ERROR 42818: Comparisons between 'BLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone > '10';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone > '5';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone < '70';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone = '50';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone != '10';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone <= '70';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone >= '10';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> select * from testoperatorblob where colone <> '10';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR' are not supported.
+ij> drop table testoperatorblob;
+0 rows inserted/updated/deleted
+ij> -- NCLOB testing
+CREATE TABLE testoperatornclob (colone nclob(1K));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> INSERT INTO testoperatornclob VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> INSERT INTO testoperatornclob VALUES (CAST(cast('50' as varchar(80)) AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> select * from testoperatornclob;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> -- these select statements should raise an error but are successful in cloudscape
+select * from testoperatornclob where colone > 10;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone > 5;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone < 70;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone = 50;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone != 10;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone <= 70;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone >= 10;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone <> 10;
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone > '10';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone > '5';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone < '70';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone = '50';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone != '10';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone <= '70';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone >= '10';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> select * from testoperatornclob where colone <> '10';
+ERROR 42X05: Table 'TESTOPERATORNCLOB' does not exist.
+ij> drop table testoperatornclob;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTOPERATORNCLOB' because it does not exist.
+ij> ----- test method invocations on LOB objects (should disallow)
+-- setup
+drop table b;
+0 rows inserted/updated/deleted
+ij> create table b(b blob(77));
+0 rows inserted/updated/deleted
+ij> insert into b values(cast('33' as blob(77)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> create table c(c clob(77));
+0 rows inserted/updated/deleted
+ij> insert into c values(cast('33' as clob(77)));
+1 row inserted/updated/deleted
+ij> -- LOB as main object for method invocation not allowed
+values (cast('1' as blob(1M)))->toString();
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> values (cast('1' as clob(1M)))->toString();
+ERROR XJ082: BLOB/CLOB values are not allowed as method parameters or receiver.
+ij> values (cast('1' as nclob(1M)))->toString();
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- LOB column as parameter not allowed
+select b->equals('3') from b;
+ERROR XJ082: BLOB/CLOB values are not allowed as method parameters or receiver.
+ij> select c->equals('3') from c;
+ERROR XJ082: BLOB/CLOB values are not allowed as method parameters or receiver.
+ij> -- explicit LOB as parameter not allowed
+values '3'->equals(cast('3' as blob(7)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> values '3'->equals(cast('3' as clob(7)));
+ERROR XJ082: BLOB/CLOB values are not allowed as method parameters or receiver.
+ij> -- LOB column as parameter not allowed
+select '3'->equals(b) from b;
+ERROR XJ082: BLOB/CLOB values are not allowed as method parameters or receiver.
+ij> select '3'->equals(c) from c;
+ERROR XJ082: BLOB/CLOB values are not allowed as method parameters or receiver.
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> ------ TEST length functions on LOBs
+---- BLOB
+values length(cast('foo' as blob(10)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> values {fn length(cast('foo' as blob(10)))};
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> ---- CHAR
+values length(cast('foo' as char(10)));
+1          
+-----------
+10         
+ij> values {fn length(cast('foo' as char(10)))};
+1          
+-----------
+3          
+ij> ---- CLOB
+values length(cast('foo' as clob(10)));
+1          
+-----------
+3          
+ij> values {fn length(cast('foo' as clob(10)))};
+1          
+-----------
+3          
+ij> ---- NCLOB
+values length(cast('foo' as nclob(10)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> values {fn length(cast('foo' as nclob(10)))};
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- Longvarchar negative tests
+create table testPredicate1 (c1 long varchar);
+0 rows inserted/updated/deleted
+ij> create table testPredicate2 (c1 long varchar);
+0 rows inserted/updated/deleted
+ij> insert into testPredicate1 (c1) values 'a';
+1 row inserted/updated/deleted
+ij> insert into testPredicate2 (c1) values 'a';
+1 row inserted/updated/deleted
+ij> -- UNION
+select * from testPredicate1 union select * from testPredicate2;
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- IN predicate
+select c1 from testPredicate1 where c1 IN (select c1 from testPredicate2);
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR' are not supported.
+ij> -- NOT IN predicate
+select c1 from testPredicate1 where c1 NOT IN (select c1 from testPredicate2);
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR' are not supported.
+ij> -- ORDER BY clause
+select * from testPredicate1 order by c1;
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- GROUP BY clause
+select substr(c1,1,2) from testPredicate1 group by c1;
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- JOIN
+select * from testPredicate1 t1, testPredicate2 t2 where t1.c1=t2.c1;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR' are not supported.
+ij> select * from testPredicate1 LEFT OUTER JOIN testPredicate2 on testPredicate1.c1=testPredicate2.c1;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR' are not supported.
+ij> -- PRIMARY KEY
+create table testConst1(c1 long varchar not null primary key);
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- UNIQUE KEY constraints
+CREATE TABLE testconst2 (col1 long varchar not null, CONSTRAINT uk UNIQUE (col1));
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- FOREIGN KEY constraints
+create table testConst3 (c1 char(10) not null, primary key (c1));
+0 rows inserted/updated/deleted
+ij> create table testConst4 (c1 long varchar not null, constraint fk foreign key (c1) references testConst3 (c1));
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> drop table testConst3;
+0 rows inserted/updated/deleted
+ij> -- MAX aggregate function
+select max(c1) from testPredicate1;
+ERROR 42Y22: Aggregate MAX cannot operate on type LONG VARCHAR.
+ij> -- MIN aggregate function
+select min(c1) from testPredicate1;
+ERROR 42Y22: Aggregate MIN cannot operate on type LONG VARCHAR.
+ij> drop table testpredicate1;
+0 rows inserted/updated/deleted
+ij> drop table testpredicate2;
+0 rows inserted/updated/deleted
+ij> -- CLOB/BLOB limits and sizes
+-- FAIL - bigger than 2G or 2Gb with no modifier
+create table DB2LIM.FB1(FB1C BLOB(3G));
+ERROR 42X44: Invalid length '3G' in column specification.
+ij> create table DB2LIM.FB2(FB2C BLOB(2049M));
+ERROR 42X44: Invalid length '2049M' in column specification.
+ij> create table DB2LIM.FB3(FB3C BLOB(2097153K));
+ERROR 42X44: Invalid length '2097153K' in column specification.
+ij> create table DB2LIM.FB4(FB4C BLOB(2147483648));
+ERROR 42X44: Invalid length '2147483648' in column specification.
+ij> -- OK 2G and end up as 2GB - 1 (with modifier)
+create table DB2LIM.GB1(GB1C BLOB(2G));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB2(GB2C BLOB(2048M));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB3(GB3C BLOB(2097152K));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB4(GB4C BLOB(2147483647));
+0 rows inserted/updated/deleted
+ij> -- next lower value
+create table DB2LIM.GB5(GB5C BLOB(1G));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB6(GB6C BLOB(2047M));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB7(GB7C BLOB(2097151K));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB8(GB8C BLOB(2147483646));
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GB5;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GB6;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GB7;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GB8;
+0 rows inserted/updated/deleted
+ij> -- no length (default to 1Mb)
+create table DB2LIM.GB9(GB9C BLOB);
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GB10(GB10C BINARY LARGE OBJECT);
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GB9;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GB10;
+0 rows inserted/updated/deleted
+ij> -- FAIL - bigger than 2G or 2Gb with no modifier
+create table DB2LIM.FC1(FC1C CLOB(3G));
+ERROR 42X44: Invalid length '3G' in column specification.
+ij> create table DB2LIM.FC2(FC2C CLOB(2049M));
+ERROR 42X44: Invalid length '2049M' in column specification.
+ij> create table DB2LIM.FC3(FC3C CLOB(2097153K));
+ERROR 42X44: Invalid length '2097153K' in column specification.
+ij> create table DB2LIM.FC4(FC4C CLOB(2147483648));
+ERROR 42X44: Invalid length '2147483648' in column specification.
+ij> -- OK 2G and end up as 2GC - 1 (with modifier)
+create table DB2LIM.GC1(GC1C CLOB(2G));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC2(GC2C CLOB(2048M));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC3(GC3C CLOB(2097152K));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC4(GC4C CLOB(2147483647));
+0 rows inserted/updated/deleted
+ij> -- next lower value
+create table DB2LIM.GC5(GC5C CLOB(1G));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC6(GC6C CLOB(2047M));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC7(GC7C CLOB(2097151K));
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC8(GC8C CLOB(2147483646));
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC5;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC6;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC7;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC8;
+0 rows inserted/updated/deleted
+ij> -- no length (default to 1Mb)
+create table DB2LIM.GC9(GC9C CLOB);
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC10(GC10C CHARACTER LARGE OBJECT);
+0 rows inserted/updated/deleted
+ij> create table DB2LIM.GC11(GC11C CHAR LARGE OBJECT);
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC9;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC10;
+0 rows inserted/updated/deleted
+ij> drop table DB2LIM.GC11;
+0 rows inserted/updated/deleted
+ij> SELECT CAST (TABLENAME AS CHAR(10)) AS T, CAST (COLUMNNAME AS CHAR(10)) AS C, CAST (COLUMNDATATYPE AS CHAR(30)) AS Y
+	FROM SYS.SYSTABLES T, SYS.SYSSCHEMAS S, SYS.SYSCOLUMNS C
+	WHERE S.SCHEMAID = T.SCHEMAID AND S.SCHEMANAME = 'DB2LIM'
+	AND C.REFERENCEID = T.TABLEID
+	ORDER BY 1;
+T         |C         |Y                             
+----------------------------------------------------
+GB1       |GB1C      |BLOB(2147483647)              
+GB2       |GB2C      |BLOB(2147483647)              
+GB3       |GB3C      |BLOB(2147483647)              
+GB4       |GB4C      |BLOB(2147483647)              
+GC1       |GC1C      |CLOB(2147483647)              
+GC2       |GC2C      |CLOB(2147483647)              
+GC3       |GC3C      |CLOB(2147483647)              
+GC4       |GC4C      |CLOB(2147483647)              
+ij> --- CHAR/VARCHAR and LOBs. (beetle 5741)
+--- test that we can insert CHAR/VARCHAR directly
+CREATE TABLE b (colone blob(1K));
+0 rows inserted/updated/deleted
+ij> VALUES '50';
+1 
+--
+50
+ij> INSERT INTO b VALUES '50';
+ERROR 42821: Columns of type 'BLOB' cannot hold values of type 'CHAR'. 
+ij> VALUES cast('50' as varchar(80));
+1                                                                               
+--------------------------------------------------------------------------------
+50                                                                              
+ij> INSERT INTO b VALUES cast('50' as varchar(80));
+ERROR 42821: Columns of type 'BLOB' cannot hold values of type 'VARCHAR'. 
+ij> VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> INSERT INTO b VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> VALUES (CAST(cast('50' as varchar(80)) AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'VARCHAR' to 'BLOB'.
+ij> INSERT INTO b VALUES (CAST(cast('50' as varchar(80)) AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'VARCHAR' to 'BLOB'.
+ij> VALUES cast('50' as long varchar);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO b VALUES cast('50' as long varchar);
+ERROR 42821: Columns of type 'BLOB' cannot hold values of type 'LONG VARCHAR'. 
+ij> -- test w LOBs
+VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> INSERT INTO b VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> VALUES (CAST('50' AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO b VALUES (CAST('50' AS CLOB(1K)));
+ERROR 42821: Columns of type 'BLOB' cannot hold values of type 'CLOB'. 
+ij> VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> INSERT INTO b VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> DROP TABLE b;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE c (colone clob(1K));
+0 rows inserted/updated/deleted
+ij> VALUES '50';
+1 
+--
+50
+ij> INSERT INTO c VALUES '50';
+1 row inserted/updated/deleted
+ij> VALUES cast('50' as varchar(80));
+1                                                                               
+--------------------------------------------------------------------------------
+50                                                                              
+ij> INSERT INTO c VALUES cast('50' as varchar(80));
+1 row inserted/updated/deleted
+ij> VALUES (CAST('50' AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO c VALUES (CAST('50' AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO c VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> VALUES cast('50' as long varchar);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO c VALUES cast('50' as long varchar);
+1 row inserted/updated/deleted
+ij> -- test w LOBs
+VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> INSERT INTO c VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> VALUES (CAST('50' AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO c VALUES (CAST('50' AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> INSERT INTO c VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> DROP TABLE c;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE n (colone clob(1K));
+0 rows inserted/updated/deleted
+ij> VALUES '50';
+1 
+--
+50
+ij> INSERT INTO n VALUES '50';
+1 row inserted/updated/deleted
+ij> VALUES cast('50' as varchar(80));
+1                                                                               
+--------------------------------------------------------------------------------
+50                                                                              
+ij> INSERT INTO n VALUES cast('50' as varchar(80));
+1 row inserted/updated/deleted
+ij> VALUES (CAST('50' AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO n VALUES (CAST('50' AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO n VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> VALUES cast('50' as long varchar);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO n VALUES cast('50' as long varchar);
+1 row inserted/updated/deleted
+ij> -- test w LOBs
+VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> INSERT INTO n VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> VALUES (CAST('50' AS CLOB(1K)));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> INSERT INTO n VALUES (CAST('50' AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> INSERT INTO n VALUES (CAST('50' AS NCLOB(1K)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> DROP TABLE n;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOBDB2compatibility.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/LOBDB2compatibility.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,145 @@
+ij> connect 'jdbc:derby:jonas;create=true';
+ij(CONNECTION1)> ----- TEST TO RUN IN DB2 COMPATIBLITY MODE
+--
+create table t1(c11 int);
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> insert into t1 values(1);
+1 row inserted/updated/deleted
+ij(CONNECTION1)> -- equal tests are allowed only for BLOB==BLOB
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1111' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1111' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1110' as blob(5))=cast(x'1110' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))=cast(x'11100000' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1110000000' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where x'11' = cast(x'11' as blob(1));
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'11' as blob(1)) = x'11';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'11' as blob(1)) = cast(x'11' as blob(1));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where '1' = cast('1' as clob(1));
+ERROR 42818: Comparisons between 'CHAR' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('1' as clob(1)) = '1';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('1' as clob(1)) = cast('1' as clob(1));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where '1' = cast('1' as nclob(1));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('1' as nclob(1)) = '1';
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('1' as nclob(1)) = cast('1' as nclob(1));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> -- NCLOB is comparable with CLOB
+select c11 from t1 where cast('1' as nclob(10)) = cast('1' as clob(10));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('1' as clob(10)) = cast('1' as nclob(10));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> drop table b;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'B' because it does not exist.
+ij(CONNECTION1)> drop table c;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C' because it does not exist.
+ij(CONNECTION1)> drop table n;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'N' because it does not exist.
+ij(CONNECTION1)> create table b(blob blob(3K));
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> create table c(clob clob(2M));
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> create table n(nclob nclob(1G));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> insert into b values(cast(X'0031' as blob(3K)));
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into c values(cast('2' as clob(2M)));
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into n values(cast('3' as nclob(1G)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> insert into b values(cast(X'0031' as blob(3K)));
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into c values(cast('2' as clob(2M)));
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into n values(cast('3' as nclob(1G)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> insert into b values(cast(X'0031' as blob(3K)));
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into c values(cast('2' as clob(2M)));
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into n values(cast('3' as nclob(1G)));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select blob from b;
+BLOB                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------
+0031                                                                                                                            
+0031                                                                                                                            
+0031                                                                                                                            
+ij(CONNECTION1)> select clob from c;
+CLOB                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------
+2                                                                                                                               
+2                                                                                                                               
+2                                                                                                                               
+ij(CONNECTION1)> select nclob from n;
+ERROR 42X05: Table 'N' does not exist.
+ij(CONNECTION1)> -- comparsion using tables
+select * from b as b1, b as b2 where b1.blob=b2.blob;
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select * from b as b1, b as b2 where b1.blob!=b2.blob;
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select * from b as b1, b as b2 where b1.blob=x'0001';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+ij(CONNECTION1)> select * from b as b1, b as b2 where x'0001'=b1.blob;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij(CONNECTION1)> select * from b as b1, b as b2 where x'0001'!=b1.blob;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij(CONNECTION1)> select * from b as b1, b as b2 where b1.blob=X'7575';
+ERROR 42818: Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+ij(CONNECTION1)> select * from b as b1, b as b2 where X'7575'=b1.blob;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c.clob from c where c.clob = '2';
+ERROR 42818: Comparisons between 'CLOB' and 'CHAR' are not supported.
+ij(CONNECTION1)> select n.nclob from n where n.nclob = '3';
+ERROR 42X05: Table 'N' does not exist.
+ij(CONNECTION1)> -- ORDER tests on LOB types (not allowed)
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1111' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))!=cast(x'1111' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))<cast(x'1111' as blob(5));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))>cast(x'1111' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))<=cast(x'1110' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast(x'1111' as blob(5))>=cast(x'11100000' as blob(7));
+ERROR 42818: Comparisons between 'BLOB' and 'BLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as clob(5))=cast('fish' as clob(5));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as clob(5))!=cast('fish' as clob(5));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as clob(5))<cast('fish' as clob(5));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as clob(5))>cast('fish' as clob(7));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as clob(5))<=cast('fish' as clob(7));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as clob(5))>=cast('fish' as clob(7));
+ERROR 42818: Comparisons between 'CLOB' and 'CLOB' are not supported.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as nclob(5))=cast('fish' as nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as nclob(5))!=cast('fish' as nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as nclob(5))<cast('fish' as nclob(5));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as nclob(5))>cast('fish' as nclob(7));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as nclob(5))<=cast('fish' as nclob(7));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> select c11 from t1 where cast('fish' as nclob(5))>=cast('fish' as nclob(7));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij(CONNECTION1)> -- BIT STRING literal is not allowed in DB2
+values cast(B'1' as blob(10));
+ERROR 42X01: Syntax error: Encountered "\'1\'" at line 2, column 14.
+ij(CONNECTION1)> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggbuiltin.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggbuiltin.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2773 @@
+ij> -- Note that bug 5704 occurs throughout this test
+-- Decimal results may be outside the range of valid types in Cloudscape
+-- ** insert avg.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', x'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 'jimmie noone was here',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'1111111111111111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> --------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+-- cannot aggregate datatypes that don't support NumberDataValue
+select avg(c) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR.
+ij> select avg(v) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type VARCHAR.
+ij> select avg(lvc) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type LONG VARCHAR.
+ij> select avg(dt) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type DATE.
+ij> select avg(t) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type TIME.
+ij> select avg(ts) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type TIMESTAMP.
+ij> select avg(b) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR () FOR BIT DATA.
+ij> select avg(bv) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type VARCHAR () FOR BIT DATA.
+ij> select avg(lbv) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type LONG VARCHAR FOR BIT DATA.
+ij> select avg(c) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR.
+ij> select avg(v) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type VARCHAR.
+ij> select avg(lvc) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type LONG VARCHAR.
+ij> select avg(dt) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type DATE.
+ij> select avg(t) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type TIME.
+ij> select avg(ts) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type TIMESTAMP.
+ij> select avg(b) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR () FOR BIT DATA.
+ij> select avg(bv) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type VARCHAR () FOR BIT DATA.
+ij> select avg(lbv) from t group by c;
+ERROR 42Y22: Aggregate AVG cannot operate on type LONG VARCHAR FOR BIT DATA.
+ij> -- long varchar datatypes too
+create table t1 (c1 long varchar);
+0 rows inserted/updated/deleted
+ij> select avg(c1) from t1;
+ERROR 42Y22: Aggregate AVG cannot operate on type LONG VARCHAR.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- constants
+select avg('hello') from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR.
+ij> select avg(X'11') from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR () FOR BIT DATA.
+ij> select avg(date('1999-06-06')) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type DATE.
+ij> select avg(time('12:30:30')) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type TIME.
+ij> select avg(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t;
+ERROR 42Y22: Aggregate AVG cannot operate on type TIMESTAMP.
+ij> ---------------------------
+-- NULL AGGREGATION
+---------------------------
+-- scalar
+select avg(i) from empty;
+1          
+-----------
+NULL       
+ij> select avg(s) from empty;
+1     
+------
+NULL  
+ij> select avg(d) from empty;
+1                     
+----------------------
+NULL                  
+ij> select avg(l) from empty;
+1                   
+--------------------
+NULL                
+ij> select avg(r) from empty;
+1            
+-------------
+NULL         
+ij> select avg(dc) from empty;
+1          
+-----------
+NULL       
+ij> -- variations
+select avg(i), avg(s), avg(r), avg(l) from empty;
+1          |2     |3            |4                   
+-----------------------------------------------------
+NULL       |NULL  |NULL         |NULL                
+ij> select avg(i+1) from empty;
+1          
+-----------
+NULL       
+ij> -- vector
+select avg(i) from empty group by i;
+1          
+-----------
+ij> select avg(s) from empty group by s;
+1     
+------
+ij> select avg(d) from empty group by d;
+1                     
+----------------------
+ij> select avg(l) from empty group by l;
+1                   
+--------------------
+ij> select avg(r) from empty group by r;
+1            
+-------------
+ij> select avg(dc) from empty group by dc;
+1          
+-----------
+ij> --------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select avg(i) from t;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(s) from t;
+1     
+------
+107   
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(d) from t;
+1                     
+----------------------
+192.85714285714286    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(l) from t;
+1                   
+--------------------
+1000000             
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(r) from t;
+1            
+-------------
+192.85715    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(dc) from t;
+1          
+-----------
+119.0464   
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(i) from t group by i;
+1          
+-----------
+0          
+1          
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(s) from t group by s;
+1     
+------
+100   
+200   
+NULL  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(d) from t group by d;
+1                     
+----------------------
+100.0                 
+200.0                 
+NULL                  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(l) from t group by l;
+1                   
+--------------------
+1000000             
+NULL                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(r) from t group by r;
+1            
+-------------
+100.0        
+200.0        
+NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select avg(dc), sum(dc), count(dc) from t group by dc;
+1          |2          |3          
+-----------------------------------
+111.1100   |1444.43    |13         
+222.2200   |222.22     |1          
+NULL       |NULL       |0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- constants
+select avg(1) from t;
+1          
+-----------
+1          
+ij> select avg(1.1) from t;
+1        
+---------
+1.1000   
+ij> select avg(1e1) from t;
+1                     
+----------------------
+10.0                  
+ij> select avg(1) from t group by i;
+1          
+-----------
+1          
+1          
+1          
+ij> select avg(1.1) from t group by r;
+1        
+---------
+1.1000   
+1.1000   
+1.1000   
+ij> select avg(1e1) from t group by r;
+1                     
+----------------------
+10.0                  
+10.0                  
+10.0                  
+ij> -- multicolumn grouping
+select avg(i), avg(l), avg(r) from t group by i, dt, b;
+1          |2                   |3            
+----------------------------------------------
+0          |1000000             |190.90909    
+0          |1000000             |200.0        
+0          |1000000             |200.0        
+1          |1000000             |200.0        
+NULL       |NULL                |NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select i, dt, avg(i), avg(r), avg(l), l from t group by i, dt, b, l;
+I          |DT        |3          |4            |5                   |L                   
+------------------------------------------------------------------------------------------
+0          |1992-01-01|0          |190.90909    |1000000             |1000000             
+0          |1992-01-01|0          |200.0        |1000000             |1000000             
+0          |1992-09-09|0          |200.0        |1000000             |1000000             
+1          |1992-01-01|1          |200.0        |1000000             |1000000             
+NULL       |NULL      |NULL       |NULL         |NULL                |NULL                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- group by expression
+select avg(expr1), avg(expr2)
+from (select i * s, r * 2 from t) t (expr1, expr2) group by expr2, expr1;
+1          |2            
+-------------------------
+0          |200.0        
+0          |400.0        
+100        |400.0        
+NULL       |NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- distinct and group by
+select distinct avg(i) from t group by i, dt;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          
+NULL       
+ij> -- insert select
+create table tmp (x int, y smallint);
+0 rows inserted/updated/deleted
+ij> insert into tmp (x, y) select avg(i), avg(s) from t;
+1 row inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+0          |107   
+ij> insert into tmp (x, y) select avg(i), avg(s) from t group by b;
+3 rows inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+0          |107   
+0          |107   
+0          |100   
+NULL       |NULL  
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- some accuracy tests
+create table tmp (x int);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647);
+22 rows inserted/updated/deleted
+ij> values(2147483647);
+1          
+-----------
+2147483647 
+ij> select avg(x) from tmp;
+1          
+-----------
+2147483647 
+ij> select avg(-(x - 1)) from tmp;
+1          
+-----------
+-2147483646
+ij> select avg(x) from tmp group by x;
+1          
+-----------
+2147483647 
+ij> select avg(-(x - 1)) from tmp group by x;
+1          
+-----------
+-2147483646
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- now lets try some simple averages to see what
+-- type of accuracy we get
+create table tmp(x double precision, y int);
+0 rows inserted/updated/deleted
+ij> prepare scalar as 'select avg(x) from tmp';
+ij> prepare vector as 'select avg(x) from tmp group by y';
+ij> insert into tmp values (1,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+1.0                   
+ij> execute vector;
+1                     
+----------------------
+1.0                   
+ij> insert into tmp values (2,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+1.5                   
+ij> execute vector;
+1                     
+----------------------
+1.5                   
+ij> insert into tmp values (3,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+2.0                   
+ij> execute vector;
+1                     
+----------------------
+2.0                   
+ij> insert into tmp values (4,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+2.5                   
+ij> execute vector;
+1                     
+----------------------
+2.5                   
+ij> insert into tmp values (5,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+3.0                   
+ij> execute vector;
+1                     
+----------------------
+3.0                   
+ij> insert into tmp values (6,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+3.5                   
+ij> execute vector;
+1                     
+----------------------
+3.5                   
+ij> insert into tmp values (7,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+4.0                   
+ij> execute vector;
+1                     
+----------------------
+4.0                   
+ij> insert into tmp values (10000,1);
+1 row inserted/updated/deleted
+ij> execute scalar;
+1                     
+----------------------
+1253.5                
+ij> execute vector;
+1                     
+----------------------
+1253.5                
+ij> remove vector;
+ij> remove scalar;
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> -- ** insert count.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- bit maps to Byte[], so can't test for now
+-- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 'jimmie noone was here',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0000111100001111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'1111111111111111', X'1234', 111.11);
+1 row inserted/updated/deleted
+ij> ---------------------------
+-- NULL AGGREGATION
+---------------------------
+-- scalar
+select count(i) from empty;
+1          
+-----------
+0          
+ij> select count(s) from empty;
+1          
+-----------
+0          
+ij> select count(l) from empty;
+1          
+-----------
+0          
+ij> select count(c) from empty;
+1          
+-----------
+0          
+ij> select count(v) from empty;
+1          
+-----------
+0          
+ij> select count(lvc) from empty;
+1          
+-----------
+0          
+ij> select count(d) from empty;
+1          
+-----------
+0          
+ij> select count(r) from empty;
+1          
+-----------
+0          
+ij> select count(dt) from empty;
+1          
+-----------
+0          
+ij> select count(t) from empty;
+1          
+-----------
+0          
+ij> select count(ts) from empty;
+1          
+-----------
+0          
+ij> select count(b) from empty;
+1          
+-----------
+0          
+ij> select count(bv) from empty;
+1          
+-----------
+0          
+ij> -- bug: should fail in db2 mode
+-- after for bit data is completely implemented
+select count(lbv) from empty;
+1          
+-----------
+0          
+ij> select count(dc) from empty;
+1          
+-----------
+0          
+ij> -- variations
+select count(i), count(b), count(i), count(s) from empty;
+1          |2          |3          |4          
+-----------------------------------------------
+0          |0          |0          |0          
+ij> select count(i+1) from empty;
+1          
+-----------
+0          
+ij> -- vector
+select count(i) from empty group by i;
+1          
+-----------
+ij> select count(s) from empty group by s;
+1          
+-----------
+ij> select count(l) from empty group by l;
+1          
+-----------
+ij> select count(c) from empty group by c;
+1          
+-----------
+ij> select count(v) from empty group by v;
+1          
+-----------
+ij> select count(d) from empty group by d;
+1          
+-----------
+ij> select count(r) from empty group by r;
+1          
+-----------
+ij> select count(dt) from empty group by dt;
+1          
+-----------
+ij> select count(t) from empty group by t;
+1          
+-----------
+ij> select count(ts) from empty group by ts;
+1          
+-----------
+ij> select count(b) from empty group by b;
+1          
+-----------
+ij> select count(bv) from empty group by bv;
+1          
+-----------
+ij> select count(lbv) from empty group by lbv;
+1          
+-----------
+ij> select count(dc) from empty group by dc;
+1          
+-----------
+ij> --------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select count(i) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(s) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(l) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(c) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(v) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(lvc) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(d) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(r) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(dt) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(t) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(ts) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(b) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(bv) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(lbv) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(dc) from t;
+1          
+-----------
+15         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(i) from t group by i;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(s) from t group by s;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(l) from t group by l;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(c) from t group by c;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(v) from t group by v;
+1          
+-----------
+1          
+14         
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(d) from t group by d;
+1          
+-----------
+1          
+14         
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(r) from t group by r;
+1          
+-----------
+1          
+14         
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(dt) from t group by dt;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(t) from t group by t;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(ts) from t group by ts;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(b) from t group by b;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(bv) from t group by bv;
+1          
+-----------
+14         
+1          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(lbv) from t group by lbv;
+1          
+-----------
+15         
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(dc) from t group by dc;
+1          
+-----------
+13         
+2          
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- constants
+select count(1) from t;
+1          
+-----------
+17         
+ij> select count('hello') from t;
+1          
+-----------
+17         
+ij> select count(1.1) from t;
+1          
+-----------
+17         
+ij> select count(1e1) from t;
+1          
+-----------
+17         
+ij> select count(X'11') from t;
+1          
+-----------
+17         
+ij> select count(date('1999-06-06')) from t;
+1          
+-----------
+17         
+ij> select count(time('12:30:30')) from t;
+1          
+-----------
+17         
+ij> select count(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t;
+1          
+-----------
+17         
+ij> select count(1) from t group by i;
+1          
+-----------
+14         
+1          
+2          
+ij> select count('hello') from t group by c;
+1          
+-----------
+14         
+1          
+2          
+ij> select count(1.1) from t group by dc;
+1          
+-----------
+13         
+2          
+2          
+ij> select count(1e1) from t group by r;
+1          
+-----------
+1          
+14         
+2          
+ij> select count(X'11') from t group by b;
+1          
+-----------
+14         
+1          
+2          
+ij> select count(date('1999-06-06')) from t group by dt;
+1          
+-----------
+14         
+1          
+2          
+ij> select count(time('12:30:30')) from t group by t;
+1          
+-----------
+14         
+1          
+2          
+ij> select count(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t group by ts;
+1          
+-----------
+14         
+1          
+2          
+ij> -- multicolumn grouping
+select count(i), count(dt), count(b) from t group by i, dt, b;
+1          |2          |3          
+-----------------------------------
+12         |12         |12         
+1          |1          |1          
+1          |1          |1          
+1          |1          |1          
+0          |0          |0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select l, dt, count(i), count(dt), count(b), i from t group by i, dt, b, l;
+L                   |DT        |3          |4          |5          |I          
+-------------------------------------------------------------------------------
+1000000             |1992-01-01|11         |11         |11         |0          
+2000000             |1992-01-01|1          |1          |1          |0          
+1000000             |1992-01-01|1          |1          |1          |0          
+1000000             |1992-09-09|1          |1          |1          |0          
+1000000             |1992-01-01|1          |1          |1          |1          
+NULL                |NULL      |0          |0          |0          |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- group by expression
+select count(expr1), count(expr2)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+1          |2          
+-----------------------
+1          |1          
+12         |12         
+1          |1          
+1          |1          
+0          |0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- distinct and group by
+select distinct count(i) from t group by i, dt;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          
+13         
+ij> -- insert select
+create table tmp (x int, y smallint);
+0 rows inserted/updated/deleted
+ij> insert into tmp (x, y) select count(i), count(c) from t;
+1 row inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+15         |15    
+ij> insert into tmp (x, y) select count(i), count(c) from t group by b;
+3 rows inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+15         |15    
+14         |14    
+1          |1     
+0          |0     
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> -- ** insert countStar.sql
+-- Test the COUNT() aggregate
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> -- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> -- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 'jimmie noone was here',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0000111100001111', X'1234');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'1111111111111111', X'ABCD');
+1 row inserted/updated/deleted
+ij> ---------------------------
+-- NULL AGGREGATION
+---------------------------
+-- scalar
+select count(*) from empty;
+1          
+-----------
+0          
+ij> -- variations
+select count(*), count(*) from empty;
+1          |2          
+-----------------------
+0          |0          
+ij> -- vector
+select count(*) from empty group by i;
+1          
+-----------
+ij> --------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select count(*) from t;
+1          
+-----------
+17         
+ij> select count(*) from t group by i;
+1          
+-----------
+14         
+1          
+2          
+ij> -- multicolumn grouping
+select count(*), count(*), count(*) from t group by i, dt, b;
+1          |2          |3          
+-----------------------------------
+12         |12         |12         
+1          |1          |1          
+1          |1          |1          
+1          |1          |1          
+2          |2          |2          
+ij> -- group by expression
+select count(*), count(*)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+1          |2          
+-----------------------
+1          |1          
+12         |12         
+1          |1          
+1          |1          
+2          |2          
+ij> -- distinct and group by
+select distinct count(*) from t group by i, dt;
+1          
+-----------
+1          
+2          
+13         
+ij> -- view
+create view v1 as select * from t;
+0 rows inserted/updated/deleted
+ij> select count(*) from v1;
+1          
+-----------
+17         
+ij> select count(*)+count(*) from v1;
+1          
+-----------
+34         
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> -- insert select 
+create table tmp (x int, y smallint);
+0 rows inserted/updated/deleted
+ij> insert into tmp (x, y) select count(*), count(*) from t;
+1 row inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+17         |17    
+ij> insert into tmp (x, y) select count(*), count(*) from t group by b;
+3 rows inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+17         |17    
+14         |14    
+1          |1     
+2          |2     
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> -- ** insert sum.sql
+--BUGS: sum() on decimal may overflow the decimal,
+--w/o the type system knowing.  so, given dec(1,0),
+--result might be dec(2,0), but return length passed
+--to connectivity is 1 which is wrong.  if we allow
+--the decimal to grow beyond the preset type, we need
+--to all the type system to get it.  alternatively, 
+--need to cast/normalize/setWidth() the result to ensure 
+--right type.
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- bit maps to Byte[], so can't test for now
+-- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'1111111111111111', 111.11);
+1 row inserted/updated/deleted
+ij> -- bit maps to Byte[], so can't test for now
+--------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+-- cannot aggregate datatypes that don't support NumberDataValue
+select sum(c) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR.
+ij> select sum(v) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type VARCHAR.
+ij> select sum(dt) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type DATE.
+ij> select sum(t) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIME.
+ij> select sum(ts) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIMESTAMP.
+ij> select sum(b) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR () FOR BIT DATA.
+ij> select sum(bv) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type VARCHAR () FOR BIT DATA.
+ij> select sum(c) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR.
+ij> select sum(v) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type VARCHAR.
+ij> select sum(dt) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type DATE.
+ij> select sum(t) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIME.
+ij> select sum(ts) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIMESTAMP.
+ij> select sum(b) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR () FOR BIT DATA.
+ij> select sum(bv) from t group by c;
+ERROR 42Y22: Aggregate SUM cannot operate on type VARCHAR () FOR BIT DATA.
+ij> -- long varchar datatypes too
+create table t1 (c1 long varchar);
+0 rows inserted/updated/deleted
+ij> select sum(c1) from t1;
+ERROR 42Y22: Aggregate SUM cannot operate on type LONG VARCHAR.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- constants
+select sum('hello') from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR.
+ij> select sum(X'11') from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR () FOR BIT DATA.
+ij> select sum(date('1999-06-06')) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type DATE.
+ij> select sum(time('12:30:30')) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIME.
+ij> select sum(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIMESTAMP.
+ij> ---------------------------
+-- NULL AGGREGATION
+---------------------------
+-- scalar
+select sum(i) from empty;
+1          
+-----------
+NULL       
+ij> select sum(s) from empty;
+1     
+------
+NULL  
+ij> select sum(d) from empty;
+1                     
+----------------------
+NULL                  
+ij> select sum(l) from empty;
+1                   
+--------------------
+NULL                
+ij> select sum(r) from empty;
+1            
+-------------
+NULL         
+ij> select sum(dc) from empty;
+1          
+-----------
+NULL       
+ij> -- variations
+select sum(i), sum(s), sum(r), sum(l) from empty;
+1          |2     |3            |4                   
+-----------------------------------------------------
+NULL       |NULL  |NULL         |NULL                
+ij> select sum(i+1) from empty;
+1          
+-----------
+NULL       
+ij> -- vector
+select sum(i) from empty group by i;
+1          
+-----------
+ij> select sum(s) from empty group by s;
+1     
+------
+ij> select sum(d) from empty group by d;
+1                     
+----------------------
+ij> select sum(l) from empty group by l;
+1                   
+--------------------
+ij> select sum(r) from empty group by r;
+1            
+-------------
+ij> select sum(dc) from empty group by dc;
+1          
+-----------
+ij> --------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select sum(i) from t;
+1          
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(s) from t;
+1     
+------
+1600  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(d) from t;
+1                     
+----------------------
+2900.0                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(l) from t;
+1                   
+--------------------
+16000000            
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(r) from t;
+1            
+-------------
+2900.0       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(dc) from t;
+1          
+-----------
+1888.87    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(i) from t group by i;
+1          
+-----------
+0          
+1          
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(s) from t group by s;
+1     
+------
+1400  
+200   
+NULL  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(d) from t group by d;
+1                     
+----------------------
+100.0                 
+2800.0                
+NULL                  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(l) from t group by l;
+1                   
+--------------------
+14000000            
+2000000             
+NULL                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(r) from t group by r;
+1            
+-------------
+100.0        
+2800.0       
+NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(dc) from t group by dc;
+1          
+-----------
+1444.43    
+444.44     
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- constants
+select sum(1) from t;
+1          
+-----------
+17         
+ij> select sum(1.1) from t;
+1     
+------
+18.7  
+ij> select sum(1e1) from t;
+1                     
+----------------------
+170.0                 
+ij> select sum(1) from t group by i;
+1          
+-----------
+14         
+1          
+2          
+ij> select sum(1.1) from t group by r;
+1     
+------
+1.1   
+15.4  
+2.2   
+ij> select sum(1e1) from t group by r;
+1                     
+----------------------
+10.0                  
+140.0                 
+20.0                  
+ij> -- multicolumn grouping
+select sum(i), sum(l), sum(r) from t group by i, dt, b;
+1          |2                   |3            
+----------------------------------------------
+0          |13000000            |2300.0       
+0          |1000000             |200.0        
+0          |1000000             |200.0        
+1          |1000000             |200.0        
+NULL       |NULL                |NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select i, dt, sum(i), sum(r), sum(l), l from t group by i, dt, b, l;
+I          |DT        |3          |4            |5                   |L                   
+------------------------------------------------------------------------------------------
+0          |1992-01-01|0          |2100.0       |11000000            |1000000             
+0          |1992-01-01|0          |200.0        |2000000             |2000000             
+0          |1992-01-01|0          |200.0        |1000000             |1000000             
+0          |1992-09-09|0          |200.0        |1000000             |1000000             
+1          |1992-01-01|1          |200.0        |1000000             |1000000             
+NULL       |NULL      |NULL       |NULL         |NULL                |NULL                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- group by expression
+select sum(expr1), sum(expr2)
+from (select i * s, r * 2 from t) t (expr1, expr2) group by expr2, expr1;
+1          |2            
+-------------------------
+0          |200.0        
+0          |5200.0       
+100        |400.0        
+NULL       |NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- distinct and group by
+select distinct sum(i) from t group by i, dt;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          
+NULL       
+ij> -- insert select
+create table tmp (x int, y smallint);
+0 rows inserted/updated/deleted
+ij> insert into tmp (x, y) select sum(i), sum(s) from t;
+1 row inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+1          |1600  
+ij> insert into tmp (x, y) select sum(i), sum(s) from t group by b;
+3 rows inserted/updated/deleted
+ij> select * from tmp;
+X          |Y     
+------------------
+1          |1600  
+1          |1500  
+0          |100   
+NULL       |NULL  
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- overflow
+create table tmp (x int);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (2147483647),
+                     (2147483647);
+2 rows inserted/updated/deleted
+ij> select sum(x) from tmp;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> create table tmp (x double precision);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647);
+9 rows inserted/updated/deleted
+ij> select sum(x) from tmp;
+1                     
+----------------------
+1.9327352823E10       
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> -- ** insert max.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- bit maps to Byte[], so can't test for now
+-- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'1111111111111111', 111.11);
+1 row inserted/updated/deleted
+ij> --------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+-- long varchar datatypes too
+create table t1 (c1 long varchar);
+0 rows inserted/updated/deleted
+ij> select max(c1) from t1;
+ERROR 42Y22: Aggregate MAX cannot operate on type LONG VARCHAR.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> ---------------------------
+-- NULL AGGREGATION
+---------------------------
+-- scalar
+select max(i) from empty;
+1          
+-----------
+NULL       
+ij> select max(s) from empty;
+1     
+------
+NULL  
+ij> select max(l) from empty;
+1                   
+--------------------
+NULL                
+ij> select max(c) from empty;
+1         
+----------
+NULL      
+ij> select max(v) from empty;
+1                                                 
+--------------------------------------------------
+NULL                                              
+ij> select max(d) from empty;
+1                     
+----------------------
+NULL                  
+ij> select max(r) from empty;
+1            
+-------------
+NULL         
+ij> select max(dt) from empty;
+1         
+----------
+NULL      
+ij> select max(t) from empty;
+1       
+--------
+NULL    
+ij> select max(ts) from empty;
+1                         
+--------------------------
+NULL                      
+ij> select max(b) from empty;
+1   
+----
+NULL
+ij> select max(bv) from empty;
+1               
+----------------
+NULL            
+ij> select max(dc) from empty;
+1       
+--------
+NULL    
+ij> -- variations
+select max(i), max(b), max(i), max(s) from empty;
+1          |2   |3          |4     
+-----------------------------------
+NULL       |NULL|NULL       |NULL  
+ij> select max(i+1) from empty;
+1          
+-----------
+NULL       
+ij> -- vector
+select max(i) from empty group by i;
+1          
+-----------
+ij> select max(s) from empty group by s;
+1     
+------
+ij> select max(l) from empty group by l;
+1                   
+--------------------
+ij> select max(c) from empty group by c;
+1         
+----------
+ij> select max(v) from empty group by v;
+1                                                 
+--------------------------------------------------
+ij> select max(d) from empty group by d;
+1                     
+----------------------
+ij> select max(r) from empty group by r;
+1            
+-------------
+ij> select max(dt) from empty group by dt;
+1         
+----------
+ij> select max(t) from empty group by t;
+1       
+--------
+ij> select max(ts) from empty group by ts;
+1                         
+--------------------------
+ij> select max(b) from empty group by b;
+1   
+----
+ij> select max(bv) from empty group by bv;
+1               
+----------------
+ij> select max(dc) from empty group by dc;
+1       
+--------
+ij> --------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select max(i) from t;
+1          
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(s) from t;
+1     
+------
+200   
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(l) from t;
+1                   
+--------------------
+2000000             
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(c) from t;
+1         
+----------
+goodbye   
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(v) from t;
+1                                                 
+--------------------------------------------------
+this is duplicated                                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(d) from t;
+1                     
+----------------------
+200.0                 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(r) from t;
+1            
+-------------
+200.0        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(dt) from t;
+1         
+----------
+1992-09-09
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(t) from t;
+1       
+--------
+12:55:55
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(ts) from t;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(b) from t;
+1   
+----
+ffff
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(bv) from t;
+1               
+----------------
+1111111111111111
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(dc) from t;
+1       
+--------
+222.22  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(i) from t group by i;
+1          
+-----------
+0          
+1          
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(s) from t group by s;
+1     
+------
+100   
+200   
+NULL  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(l) from t group by l;
+1                   
+--------------------
+1000000             
+2000000             
+NULL                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(c) from t group by c;
+1         
+----------
+duplicate 
+goodbye   
+NULL      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(v) from t group by v;
+1                                                 
+--------------------------------------------------
+noone is here                                     
+this is duplicated                                
+NULL                                              
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(d) from t group by d;
+1                     
+----------------------
+100.0                 
+200.0                 
+NULL                  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(r) from t group by r;
+1            
+-------------
+100.0        
+200.0        
+NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(dt) from t group by dt;
+1         
+----------
+1992-01-01
+1992-09-09
+NULL      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(t) from t group by t;
+1       
+--------
+12:30:30
+12:55:55
+NULL    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(ts) from t group by ts;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(b) from t group by b;
+1   
+----
+12af
+ffff
+NULL
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(bv) from t group by bv;
+1               
+----------------
+0000111100001111
+1111111111111111
+NULL            
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(dc) from t group by dc;
+1       
+--------
+111.11  
+222.22  
+NULL    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- constants
+select max(1) from t;
+1          
+-----------
+1          
+ij> select max('hello') from t;
+1    
+-----
+hello
+ij> select max(1.1) from t;
+1    
+-----
+1.1  
+ij> select max(1e1) from t;
+1                     
+----------------------
+10.0                  
+ij> select max(X'11') from t;
+1   
+----
+11  
+ij> select max(date('1999-06-06')) from t;
+1         
+----------
+1999-06-06
+ij> select max(time('12:30:30')) from t;
+1       
+--------
+12:30:30
+ij> select max(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select max(1) from t group by i;
+1          
+-----------
+1          
+1          
+1          
+ij> select max('hello') from t group by c;
+1    
+-----
+hello
+hello
+hello
+ij> select max(1.1) from t group by dc;
+1    
+-----
+1.1  
+1.1  
+1.1  
+ij> select max(1e1) from t group by d;
+1                     
+----------------------
+10.0                  
+10.0                  
+10.0                  
+ij> select max(X'11') from t group by b;
+1   
+----
+11  
+11  
+11  
+ij> select max(date('1999-06-06')) from t group by dt;
+1         
+----------
+1999-06-06
+1999-06-06
+1999-06-06
+ij> select max(time('12:30:30')) from t group by t;
+1       
+--------
+12:30:30
+12:30:30
+12:30:30
+ij> select max(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t group by ts;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- multicolumn grouping
+select max(i), max(dt), max(b) from t group by i, dt, b;
+1          |2         |3   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select l, dt, max(i), max(dt), max(b), i from t group by i, dt, b, l;
+L                   |DT        |3          |4         |5   |I          
+-----------------------------------------------------------------------
+1000000             |1992-01-01|0          |1992-01-01|12af|0          
+2000000             |1992-01-01|0          |1992-01-01|12af|0          
+1000000             |1992-01-01|0          |1992-01-01|ffff|0          
+1000000             |1992-09-09|0          |1992-09-09|12af|0          
+1000000             |1992-01-01|1          |1992-01-01|12af|1          
+NULL                |NULL      |NULL       |NULL      |NULL|NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- group by expression
+select max(expr1), max(expr2)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+1          |2                                                           
+------------------------------------------------------------------------
+0          |duplicate noone is here                                     
+0          |duplicate this is duplicated                                
+100        |duplicate this is duplicated                                
+0          |goodbye   this is duplicated                                
+NULL       |NULL                                                        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- distinct and group by
+select distinct max(i) from t group by i, dt;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          
+NULL       
+ij> -- insert select
+create table tmp (x int, y char(20));
+0 rows inserted/updated/deleted
+ij> insert into tmp (x, y) select max(i), max(c) from t;
+1 row inserted/updated/deleted
+ij> select * from tmp;
+X          |Y                   
+--------------------------------
+1          |goodbye             
+ij> insert into tmp (x, y) select max(i), max(c) from t group by b;
+3 rows inserted/updated/deleted
+ij> select * from tmp;
+X          |Y                   
+--------------------------------
+1          |goodbye             
+1          |goodbye             
+0          |duplicate           
+NULL       |NULL                
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> -- ** insert min.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> -- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0000111100001111', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'1111111111111111', 111.11);
+1 row inserted/updated/deleted
+ij> --------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+-- long varchar datatypes too
+create table t1 (c1 long varchar);
+0 rows inserted/updated/deleted
+ij> select min(c1) from t1;
+ERROR 42Y22: Aggregate MIN cannot operate on type LONG VARCHAR.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> ---------------------------
+-- NULL AGGREGATION
+---------------------------
+-- scalar
+select min(i) from empty;
+1          
+-----------
+NULL       
+ij> select min(s) from empty;
+1     
+------
+NULL  
+ij> select min(l) from empty;
+1                   
+--------------------
+NULL                
+ij> select min(c) from empty;
+1         
+----------
+NULL      
+ij> select min(v) from empty;
+1                                                 
+--------------------------------------------------
+NULL                                              
+ij> select min(d) from empty;
+1                     
+----------------------
+NULL                  
+ij> select min(r) from empty;
+1            
+-------------
+NULL         
+ij> select min(dt) from empty;
+1         
+----------
+NULL      
+ij> select min(t) from empty;
+1       
+--------
+NULL    
+ij> select min(ts) from empty;
+1                         
+--------------------------
+NULL                      
+ij> select min(b) from empty;
+1   
+----
+NULL
+ij> select min(bv) from empty;
+1               
+----------------
+NULL            
+ij> select min(dc) from empty;
+1       
+--------
+NULL    
+ij> -- variations
+select min(i), min(b), min(i), min(s) from empty;
+1          |2   |3          |4     
+-----------------------------------
+NULL       |NULL|NULL       |NULL  
+ij> select min(i+1) from empty;
+1          
+-----------
+NULL       
+ij> -- vector
+select min(i) from empty group by i;
+1          
+-----------
+ij> select min(s) from empty group by s;
+1     
+------
+ij> select min(l) from empty group by l;
+1                   
+--------------------
+ij> select min(c) from empty group by c;
+1         
+----------
+ij> select min(v) from empty group by v;
+1                                                 
+--------------------------------------------------
+ij> select min(d) from empty group by d;
+1                     
+----------------------
+ij> select min(r) from empty group by r;
+1            
+-------------
+ij> select min(dt) from empty group by dt;
+1         
+----------
+ij> select min(t) from empty group by t;
+1       
+--------
+ij> select min(ts) from empty group by ts;
+1                         
+--------------------------
+ij> select min(b) from empty group by b;
+1   
+----
+ij> select min(bv) from empty group by bv;
+1               
+----------------
+ij> select min(dc) from empty group by dc;
+1       
+--------
+ij> --------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select min(i) from t;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(s) from t;
+1     
+------
+100   
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(l) from t;
+1                   
+--------------------
+1000000             
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(c) from t;
+1         
+----------
+duplicate 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(v) from t;
+1                                                 
+--------------------------------------------------
+noone is here                                     
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(d) from t;
+1                     
+----------------------
+100.0                 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(r) from t;
+1            
+-------------
+100.0        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(dt) from t;
+1         
+----------
+1992-01-01
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(t) from t;
+1       
+--------
+12:30:30
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(ts) from t;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(b) from t;
+1   
+----
+12af
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(bv) from t;
+1               
+----------------
+0000111100001111
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(dc) from t;
+1       
+--------
+111.11  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(i) from t group by i;
+1          
+-----------
+0          
+1          
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(s) from t group by s;
+1     
+------
+100   
+200   
+NULL  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(l) from t group by l;
+1                   
+--------------------
+1000000             
+2000000             
+NULL                
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(c) from t group by c;
+1         
+----------
+duplicate 
+goodbye   
+NULL      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(v) from t group by v;
+1                                                 
+--------------------------------------------------
+noone is here                                     
+this is duplicated                                
+NULL                                              
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(d) from t group by d;
+1                     
+----------------------
+100.0                 
+200.0                 
+NULL                  
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(r) from t group by r;
+1            
+-------------
+100.0        
+200.0        
+NULL         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(dt) from t group by dt;
+1         
+----------
+1992-01-01
+1992-09-09
+NULL      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(t) from t group by t;
+1       
+--------
+12:30:30
+12:55:55
+NULL    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(ts) from t group by ts;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(b) from t group by b;
+1   
+----
+12af
+ffff
+NULL
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(bv) from t group by bv;
+1               
+----------------
+0000111100001111
+1111111111111111
+NULL            
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(dc) from t group by dc;
+1       
+--------
+111.11  
+222.22  
+NULL    
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- constants
+select min(1) from t;
+1          
+-----------
+1          
+ij> select min('hello') from t;
+1    
+-----
+hello
+ij> select min(1.1) from t;
+1    
+-----
+1.1  
+ij> select min(1e1) from t;
+1                     
+----------------------
+10.0                  
+ij> select min(X'11') from t;
+1   
+----
+11  
+ij> select min(date('1999-06-06')) from t;
+1         
+----------
+1999-06-06
+ij> select min(time('12:30:30')) from t;
+1       
+--------
+12:30:30
+ij> select min(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select min(1) from t group by i;
+1          
+-----------
+1          
+1          
+1          
+ij> select min('hello') from t group by c;
+1    
+-----
+hello
+hello
+hello
+ij> select min(1.1) from t group by dc;
+1    
+-----
+1.1  
+1.1  
+1.1  
+ij> select min(1e1) from t group by d;
+1                     
+----------------------
+10.0                  
+10.0                  
+10.0                  
+ij> select min(X'11') from t group by b;
+1   
+----
+11  
+11  
+11  
+ij> select min(date('1999-06-06')) from t group by dt;
+1         
+----------
+1999-06-06
+1999-06-06
+1999-06-06
+ij> select min(time('12:30:30')) from t group by t;
+1       
+--------
+12:30:30
+12:30:30
+12:30:30
+ij> select min(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)) from t group by ts;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- multicolumn grouping
+select min(i), min(dt), min(b) from t group by i, dt, b;
+1          |2         |3   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select l, dt, min(i), min(dt), min(b), i from t group by i, dt, b, l;
+L                   |DT        |3          |4         |5   |I          
+-----------------------------------------------------------------------
+1000000             |1992-01-01|0          |1992-01-01|12af|0          
+2000000             |1992-01-01|0          |1992-01-01|12af|0          
+1000000             |1992-01-01|0          |1992-01-01|ffff|0          
+1000000             |1992-09-09|0          |1992-09-09|12af|0          
+1000000             |1992-01-01|1          |1992-01-01|12af|1          
+NULL                |NULL      |NULL       |NULL      |NULL|NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- group by expression
+select min(expr1), min(expr2)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+1          |2                                                           
+------------------------------------------------------------------------
+0          |duplicate noone is here                                     
+0          |duplicate this is duplicated                                
+100        |duplicate this is duplicated                                
+0          |goodbye   this is duplicated                                
+NULL       |NULL                                                        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- distinct and group by
+select distinct min(i) from t group by i, dt;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          
+NULL       
+ij> -- insert select
+create table tmp (x int, y char(20));
+0 rows inserted/updated/deleted
+ij> insert into tmp (x, y) select min(i), min(c) from t;
+1 row inserted/updated/deleted
+ij> select * from tmp;
+X          |Y                   
+--------------------------------
+0          |duplicate           
+ij> insert into tmp (x, y) select min(i), min(c) from t group by b;
+3 rows inserted/updated/deleted
+ij> select * from tmp;
+X          |Y                   
+--------------------------------
+0          |duplicate           
+0          |duplicate           
+0          |duplicate           
+NULL       |NULL                
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregate.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregate.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,892 @@
+ij> -- ** insert aggregatesPositive.sql
+autocommit on;
+ij> -- General aggregate tests.  Aggregate
+-- specifics are tested in specific test (e.g. sum.jsql).
+--
+-- Note that this test does NOT test multiple datatypes,
+-- that is exercised in the specific aggregate tests.
+-- INSERT SELECT is also in the specific aggregate tests.
+-- 
+-- need to add: objects
+create table t1 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create table oneRow (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into oneRow values(1,1);
+1 row inserted/updated/deleted
+ij> create table empty (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create table emptyNull (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into emptyNull values (null, null);
+1 row inserted/updated/deleted
+ij> insert into t1 values (null, null), (1,1), (null, null), (2,1), (3,1), (10,10);
+6 rows inserted/updated/deleted
+ij> insert into t2 values (null, null), (1,1), (null, null), (2,1), (3,1), (10,10);
+6 rows inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+NULL       |NULL       
+1          |1          
+NULL       |NULL       
+2          |1          
+3          |1          
+10         |10         
+ij> --------------------------------------
+-- Expressions within an aggregate
+--------------------------------------
+select max(c1+10) from t1;
+1          
+-----------
+20         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(c1+10) from t1 group by c2;
+1          
+-----------
+13         
+20         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(2*10) from t1;
+1          
+-----------
+20         
+ij> select max(2*10) from t1 group by c2;
+1          
+-----------
+20         
+20         
+20         
+ij> -- conditional operator within aggregate
+select max(case when c1 <> 1 then 666 else 999 end) from oneRow;
+1          
+-----------
+999        
+ij> select max(case when c1 = 1 then 666 else c2 end) from oneRow;
+1          
+-----------
+666        
+ij> select max(case when c1 = 1 then 666 else c1 end) from oneRow;
+1          
+-----------
+666        
+ij> -- subquery in aggregate
+select max((select c1 from empty)) from t1;
+1          
+-----------
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- cast to string in aggregate
+select max(cast (c1 as char(1))) from oneRow;
+1   
+----
+1   
+ij> -- cast to string in aggregate and concatenate with another
+select max(cast(c1 as char(1)) || cast (c2 as char(1))) from oneRow;
+1   
+----
+11  
+ij> -- unary
+select max(-c1) from t1;
+1          
+-----------
+-1         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- count
+select count(c1) from t1;
+1          
+-----------
+4          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- cast
+select count(cast (null as int)) from t1;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- avg
+-- DB2 returns error 22003
+-- CS returns no error!
+select avg(2147483647) from t1;
+1          
+-----------
+2147483647 
+ij> --------------------------------------
+-- Expressions on an aggregates/with aggregates
+--------------------------------------
+select 10+sum(c1) from t1;
+1          
+-----------
+26         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select 10+sum(c1+10) from t1;
+1          
+-----------
+66         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- conditional operator on aggregate
+select (case when max(c1) = 1 then 666 else 1 end) from t1;
+1          
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select (case when max(c1) = 1 then 666 else c1 end) from t1 group by c1;
+1          
+-----------
+666        
+2          
+3          
+10         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- method call on aggregate, cannot use nulls
+select cast (max(c1) as char(1)) from oneRow;
+1   
+----
+1   
+ij> select cast (max(c1) as char(1)) from oneRow group by c1;
+1   
+----
+1   
+ij> select (cast(c1 as char(1)) || (cast (max(c2) as char(1)))) from oneRow group by c1;
+1   
+----
+11  
+ij> -- subquery on aggregate
+select (select max(c1) from t2)from t1;
+1          
+-----------
+10         
+10         
+10         
+10         
+10         
+10         
+ij> select (select max(c1) from oneRow group by c2)from t1;
+1          
+-----------
+1          
+1          
+1          
+1          
+1          
+1          
+ij> -- unary
+select -max(c1) from t1;
+1          
+-----------
+-10        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select -max(c1) from t1 group by c1;
+1          
+-----------
+-1         
+-2         
+-3         
+-10        
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- cast
+select cast (null as int), count(c1) from t1 group by c1;
+1          |2          
+-----------------------
+NULL       |1          
+NULL       |1          
+NULL       |1          
+NULL       |1          
+NULL       |0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(cast (null as int)) from t1 group by c1;
+1          
+-----------
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- binary list operator
+-- beetle 5571 - transient boolean type not allowed in DB2
+select (1 in (1,2)), count(c1) from t1 group by c1;
+ERROR 42X01: Syntax error: Encountered "in" at line 3, column 11.
+ij> select count((1 in (1,2))) from t1 group by c1;
+1          
+-----------
+1          
+1          
+1          
+1          
+2          
+ij> -- some group by specific tests
+select c2, 10+sum(c1), c2 from t1 group by c2;
+C2         |2          |C2         
+-----------------------------------
+1          |16         |1          
+10         |20         |10         
+NULL       |NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select c2, 10+sum(c1+10), c2*2 from t1 group by c2;
+C2         |2          |3          
+-----------------------------------
+1          |46         |2          
+10         |30         |20         
+NULL       |NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select c2+sum(c1)+c2 from t1 group by c2;
+1          
+-----------
+8          
+30         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select (c2+sum(c1)+c2)+10, c1, c2 from t1 group by c1, c2;
+1          |C1         |C2         
+-----------------------------------
+13         |1          |1          
+14         |2          |1          
+15         |3          |1          
+40         |10         |10         
+NULL       |NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select c1+10, c2, c1*1, c1, c2*5 from t1 group by c1, c2;
+1          |C2         |3          |C1         |5          
+-----------------------------------------------------------
+11         |1          |1          |1          |5          
+12         |1          |2          |2          |5          
+13         |1          |3          |3          |5          
+20         |10         |10         |10         |50         
+NULL       |NULL       |NULL       |NULL       |NULL       
+ij> --------------------------------------
+-- Distincts
+--------------------------------------
+select sum(c1) from t1;
+1          
+-----------
+16         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1) from t1;
+1          
+-----------
+16         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1), sum(c1) from t1;
+1          |2          
+-----------------------
+16         |16         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1), sum(c1) from oneRow;
+1          |2          
+-----------------------
+1          |1          
+ij> select max(c1), sum(distinct c1), sum(c1) from t1;
+1          |2          |3          
+-----------------------------------
+10         |16         |16         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1) from empty;
+1          
+-----------
+NULL       
+ij> select sum(distinct c1) from emptyNull;
+1          
+-----------
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(c1) from t1 group by c2;
+1          
+-----------
+6          
+10         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1) from t1 group by c2;
+1          
+-----------
+6          
+10         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1), sum(c1) from t1 group by c2;
+1          |2          
+-----------------------
+6          |6          
+10         |10         
+NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1), sum(c1) from oneRow group by c2;
+1          |2          
+-----------------------
+1          |1          
+ij> select max(c1), sum(distinct c1), sum(c1) from t1 group by c2;
+1          |2          |3          
+-----------------------------------
+3          |6          |6          
+10         |10         |10         
+NULL       |NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select c2, max(c1), c2+1, sum(distinct c1), c2+2, sum(c1) from t1 group by c2;
+C2         |2          |3          |4          |5          |6          
+-----------------------------------------------------------------------
+1          |3          |2          |6          |3          |6          
+10         |10         |11         |10         |12         |10         
+NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select sum(distinct c1) from empty group by c2;
+1          
+-----------
+ij> select sum(distinct c1) from emptyNull group by c2;
+1          
+-----------
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> --------------------------------------
+-- Subqueries in where clause
+--------------------------------------
+-- subqueries that might return more than 1 row
+select c1 from t1 where c1 not in (select sum(c1) from t2);
+C1         
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          
+3          
+10         
+ij> select c1 from t1 where c1 not in (select sum(distinct c1) from t2);
+C1         
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          
+3          
+10         
+ij> select c1 from t1 where c1 not in (select sum(distinct c1)+10 from t2);
+C1         
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          
+3          
+10         
+ij> select c1 from t1 where c1 in (select max(c1) from t2 group by c2);
+C1         
+-----------
+3          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         
+ij> select c1 from t1 where c1 in (select max(distinct c1) from t2 group by c2);
+C1         
+-----------
+3          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         
+ij> select c1 from t1 where c1 in (select max(distinct c1)+10 from t2 group by c2);
+C1         
+-----------
+ij> -- subqueries that return 1 row
+select c1 from t1 where c1 = (select max(c1) from t2);
+C1         
+-----------
+10         
+ij> select c1 from t1 where c1 = (select max(distinct c1) from t2);
+C1         
+-----------
+10         
+ij> select c1 from t1 where c1 = (select max(distinct c1)+10 from t2);
+C1         
+-----------
+ij> select c1 from t1 where c1 = (select max(c1) from oneRow group by c2);
+C1         
+-----------
+1          
+ij> select c1 from t1 where c1 = (select max(distinct c1) from oneRow group by c2);
+C1         
+-----------
+1          
+ij> select c1 from t1 where c1 = (select max(distinct c1)+10 from oneRow group by c2);
+C1         
+-----------
+ij> --------------------------------------
+-- From Subqueries (aka table expressions)
+--------------------------------------
+select tmpC1 from 
+	(select max(c1+10) from t1) as tmp (tmpC1);
+TMPC1      
+-----------
+20         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(tmpC1) from 
+	(select max(c1+10) from t1) as tmp (tmpC1);
+1          
+-----------
+20         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select tmpC1 from 
+	(select max(c1+10) from t1 group by c2) as tmp (tmpC1);
+TMPC1      
+-----------
+13         
+20         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(tmpC1) from 
+	(select max(c1+10) from t1 group by c2) as tmp (tmpC1);
+1          
+-----------
+20         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(tmpC1), tmpC2 from 
+	(select max(c1+10), c2 from t1 group by c2) as tmp (tmpC1, tmpC2)
+group by tmpC2;
+1          |TMPC2      
+-----------------------
+13         |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+20         |10         
+NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> --------------------------------------
+-- Cartesian product on from subquery: forces
+-- multiple opens/closes on the sort
+-- result set (bug 447)
+--------------------------------------
+select * from t1, (select max(c1) from t1) as mytab(c1);
+C1         |C2         |C1         
+-----------------------------------
+NULL       |NULL       |10         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          |1          |10         
+NULL       |NULL       |10         
+2          |1          |10         
+3          |1          |10         
+10         |10         |10         
+ij> select * from t1, (select max(c1) from t1 group by c1) as mytab(c1);
+C1         |C2         |C1         
+-----------------------------------
+NULL       |NULL       |1          
+1          |1          |1          
+NULL       |NULL       |1          
+2          |1          |1          
+3          |1          |1          
+10         |10         |1          
+NULL       |NULL       |2          
+1          |1          |2          
+NULL       |NULL       |2          
+2          |1          |2          
+3          |1          |2          
+10         |10         |2          
+NULL       |NULL       |3          
+1          |1          |3          
+NULL       |NULL       |3          
+2          |1          |3          
+3          |1          |3          
+10         |10         |3          
+NULL       |NULL       |10         
+1          |1          |10         
+NULL       |NULL       |10         
+2          |1          |10         
+3          |1          |10         
+10         |10         |10         
+NULL       |NULL       |NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+1          |1          |NULL       
+NULL       |NULL       |NULL       
+2          |1          |NULL       
+3          |1          |NULL       
+10         |10         |NULL       
+ij> --------------------------------------
+-- Union
+--------------------------------------
+select max(c1) from t1
+union all
+select max(c1) from t2;
+1          
+-----------
+10         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> --------------------------------------
+-- Joins
+--------------------------------------
+select max(t1.c1), max(t2.c2) 
+from t1, t2
+where t1.c1 = t2.c1;
+1          |2          
+-----------------------
+10         |10         
+ij> select max(t1.c1), max(t2.c2) 
+from t1, t2
+where t1.c1 = t2.c1
+group by t1.c1;
+1          |2          
+-----------------------
+1          |1          
+2          |1          
+3          |1          
+10         |10         
+ij> --------------------------------------
+-- Having
+--------------------------------------
+-- having with agg on a join
+select max(t1.c1), max(t2.c2) 
+from t1, t2
+where t1.c1 = t2.c1
+group by t1.c1
+having count(*) > 0;
+1          |2          
+-----------------------
+1          |1          
+2          |1          
+3          |1          
+10         |10         
+ij> -- having with subqueries and aggs, agg on grouping col
+select c1 from t1
+group by c1
+having max(c2) in (select c1 from t2);
+C1         
+-----------
+1          
+2          
+3          
+10         
+ij> -- agg not on grouping column
+select c1 from t1
+group by c1
+having max(c2) in (select c1 from t2);
+C1         
+-----------
+1          
+2          
+3          
+10         
+ij> -- having with a subquery that returns a single value
+select c1 from t1
+group by c1
+having avg(c2) in (select max(t2.c1) from t2);
+C1         
+-----------
+10         
+ij> -- similar to above
+select c1 from t1
+group by c1
+having (select max(t2.c1) from t2) = avg(c2);
+C1         
+-----------
+10         
+ij> -- various and sundry column references in the having clause
+select c1 from t1
+group by c1
+having max(c2) > (select avg(t2.c1 + t1.c1)-20 from t2);
+C1         
+-----------
+1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+3          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- multiple subqueries
+select c1 from t1
+group by c1
+having (max(c2) in (select c1 from t2)) OR
+		(max(c1) in (select c2-999 from t2)) OR
+		(count(*) > 0)
+;
+C1         
+-----------
+1          
+2          
+3          
+10         
+NULL       
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- non-correlated subquery w/o aggregate in aggreate select list
+select max(c1), (select c1 from oneRow) from t1;
+1          |2          
+-----------------------
+10         |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(c1), (select c1 from oneRow) from t1 group by c1;
+1          |2          
+-----------------------
+1          |1          
+2          |1          
+3          |1          
+10         |1          
+NULL       |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> --- tests of exact numeric results
+create table bd (i decimal(31,30));
+0 rows inserted/updated/deleted
+ij> insert into bd values(0.1);
+1 row inserted/updated/deleted
+ij> insert into bd values(0.2);
+1 row inserted/updated/deleted
+ij> select * from bd;
+I                                 
+----------------------------------
+0.100000000000000000000000000000  
+0.200000000000000000000000000000  
+ij> -- should be the same
+select avg(i), sum(i)/count(i) from bd;
+1                                 |2                                 
+---------------------------------------------------------------------
+0.150000000000000000000000000000  |0.150000000000000000000000000000  
+ij> drop table bd;
+0 rows inserted/updated/deleted
+ij> create table it (i int);
+0 rows inserted/updated/deleted
+ij> insert into it values (1);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (0);
+1 row inserted/updated/deleted
+ij> insert into it values (200001);
+1 row inserted/updated/deleted
+ij> -- should be the same
+select avg(i), sum(i)/count(i), sum(i), count(i) from it;
+1          |2          |3          |4          
+-----------------------------------------------
+18182      |18182      |200002     |11         
+ij> drop table it;
+0 rows inserted/updated/deleted
+ij> --- test avg cases where the sum will overflow
+create table ovf_int (i int);
+0 rows inserted/updated/deleted
+ij> insert into ovf_int values (2147483647);
+1 row inserted/updated/deleted
+ij> insert into ovf_int values (2147483647 - 1);
+1 row inserted/updated/deleted
+ij> insert into ovf_int values (2147483647 - 2);
+1 row inserted/updated/deleted
+ij> select avg(i), 2147483647 - 1 from ovf_int;
+1          |2          
+-----------------------
+2147483646 |2147483646 
+ij> drop table ovf_int;
+0 rows inserted/updated/deleted
+ij> create table ovf_small (i smallint);
+0 rows inserted/updated/deleted
+ij> insert into ovf_small values (32767);
+1 row inserted/updated/deleted
+ij> insert into ovf_small values (32767 - 1);
+1 row inserted/updated/deleted
+ij> insert into ovf_small values (32767 - 2);
+1 row inserted/updated/deleted
+ij> select avg(i), 32767 - 1 from ovf_small;
+1     |2          
+------------------
+32766 |32766      
+ij> drop table ovf_small;
+0 rows inserted/updated/deleted
+ij> create table ovf_long (i bigint);
+0 rows inserted/updated/deleted
+ij> insert into ovf_long values (9223372036854775807);
+1 row inserted/updated/deleted
+ij> insert into ovf_long values (9223372036854775807 - 1);
+1 row inserted/updated/deleted
+ij> insert into ovf_long values (9223372036854775807 - 2);
+1 row inserted/updated/deleted
+ij> -- beetle 5571 - transient boolean type not allowed in DB2 UDB
+select avg(i), 9223372036854775807 - 1 from ovf_long;
+1                   |2                   
+-----------------------------------------
+9223372036854775806 |9223372036854775806 
+ij> select avg(i), 9223372036854775807 from ovf_long;
+1                   |2                   
+-----------------------------------------
+9223372036854775806 |9223372036854775807 
+ij> -- operands are allowed in DB2 UDB
+select avg(i) from ovf_long;
+1                   
+--------------------
+9223372036854775806 
+ij> select avg(i) - 1  from ovf_long;
+1                   
+--------------------
+9223372036854775805 
+ij> drop table ovf_long;
+0 rows inserted/updated/deleted
+ij> -- Test that AVG is not limited by columns type precision
+-- using DB2 MAX REAL VALUES
+create table ovf_real (i real);
+0 rows inserted/updated/deleted
+ij> insert into ovf_real values (+3.402E+38);
+1 row inserted/updated/deleted
+ij> insert into ovf_real values (+3.402E+38 - 1);
+1 row inserted/updated/deleted
+ij> insert into ovf_real values (+3.402E+38 - 2);
+1 row inserted/updated/deleted
+ij> select avg(i) from ovf_real;
+1            
+-------------
+3.402E38     
+ij> drop table ovf_real;
+0 rows inserted/updated/deleted
+ij> -- Test that AVG is not limited by columns type precision
+-- using DB2 MAX DOUBLE VALUES
+create table ovf_double (i double precision);
+0 rows inserted/updated/deleted
+ij> insert into ovf_double values (+1.79769E+308);
+1 row inserted/updated/deleted
+ij> insert into ovf_double values (+1.79769E+308 - 1);
+1 row inserted/updated/deleted
+ij> insert into ovf_double values (+1.79769E+308 - 2);
+1 row inserted/updated/deleted
+ij> select avg(i) from ovf_double;
+1                     
+----------------------
+1.79769E308           
+ij> drop table ovf_double;
+0 rows inserted/updated/deleted
+ij> --------------------------------------
+-- CLEAN UP
+--------------------------------------
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table oneRow;
+0 rows inserted/updated/deleted
+ij> drop table empty;
+0 rows inserted/updated/deleted
+ij> drop table emptyNull;
+0 rows inserted/updated/deleted
+ij> -- ** insert aggregateNegative.sql
+-- For aggregates.  General issues
+autocommit on;
+ij> create table t (i int, l bigint);
+0 rows inserted/updated/deleted
+ij> create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int);
+0 rows inserted/updated/deleted
+ij> --------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+-- only a single distinct is supported
+select sum(distinct i), sum(distinct l) from t;
+ERROR 42Z02: Multiple DISTINCT aggregates are not supported at this time.
+ij> -- parameters in aggregate
+prepare p1 as 'select max(?) from t';
+ERROR 42X36: The 'MAX' operator is not allowed to take a ? parameter as an operand.
+ij> -- aggregates in aggregates
+select max(max(i)) from t;
+ERROR 42Y33: Aggregate MAX contains one or more aggregates.
+ij> select max(1+1+1+max(i)) from t;
+ERROR 42Y33: Aggregate MAX contains one or more aggregates.
+ij> -- TEMPORARY RESTRICTION, aggregates in the select list
+-- of a subquery on an aggregated result set
+select max(c1), (select max(c1) from t2) from t1;
+ERROR 42Y29: The SELECT list of a non-grouped query contains at least 1 invalid expression.  When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> select max(c1), (select max(t1.c1) from t2) from t1;
+ERROR 42Y29: The SELECT list of a non-grouped query contains at least 1 invalid expression.  When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> select max(c1), max(c1), (select max(c1) from t1) from t1;
+ERROR 42Y29: The SELECT list of a non-grouped query contains at least 1 invalid expression.  When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- cursor with aggregate is not updatable
+get cursor c1 as 'select max(i) from t group by i for update';
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- max over a join on a column with an index -- Beetle 4423
+create table t3(a int);
+0 rows inserted/updated/deleted
+ij> insert into t3 values(1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> create table t4(a int);
+0 rows inserted/updated/deleted
+ij> insert into t4 select a from t3;
+5 rows inserted/updated/deleted
+ij> create index tindex on t3(a);
+0 rows inserted/updated/deleted
+ij> select max(t3.a)
+from t3, t4
+where t3.a = t4.a
+and t3.a = 1;
+1          
+-----------
+1          
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> -- beetle 5122, aggregate on JoinNode
+CREATE TABLE DOCUMENT_VERSION
+   (
+      DOCUMENT_ID INT,
+      DOCUMENT_STATUS_ID INT
+   )
+;
+0 rows inserted/updated/deleted
+ij> insert into DOCUMENT_VERSION values (2,2),(9,9),(5,5),(1,3),(10,5),(1,6),(10,8),(1,10);
+8 rows inserted/updated/deleted
+ij> CREATE VIEW MAX_DOCUMENT_VERSION
+   AS SELECT  DOCUMENT_ID  FROM DOCUMENT_VERSION
+;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW MAX_DOCUMENT_VERSION_AND_STATUS_ID
+   AS SELECT  MAX(DV.DOCUMENT_STATUS_ID) AS MAX_DOCUMENT_STATUS_ID
+   FROM DOCUMENT_VERSION AS DV , MAX_DOCUMENT_VERSION 
+   WHERE DV.DOCUMENT_ID = 1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW LATEST_DOC_VERSION
+   AS SELECT DOCUMENT_ID 
+   FROM DOCUMENT_VERSION AS DV, MAX_DOCUMENT_VERSION_AND_STATUS_ID AS MDVASID
+   WHERE DV.DOCUMENT_ID = MDVASID.MAX_DOCUMENT_STATUS_ID;
+0 rows inserted/updated/deleted
+ij> select * from LATEST_DOC_VERSION;
+DOCUMENT_ID
+-----------
+10         
+10         
+ij> drop view LATEST_DOC_VERSION;
+0 rows inserted/updated/deleted
+ij> drop view MAX_DOCUMENT_VERSION_AND_STATUS_ID;
+0 rows inserted/updated/deleted
+ij> drop view  MAX_DOCUMENT_VERSION;
+0 rows inserted/updated/deleted
+ij> drop table DOCUMENT_VERSION;
+0 rows inserted/updated/deleted
+ij> -- Defect 5737. Prevent aggregates being used in VALUES clause or WHERE clause.
+create table tmax(i int);
+0 rows inserted/updated/deleted
+ij> values sum(1);
+ERROR 42903: Invalid use of an aggregate function.
+ij> values max(3);
+ERROR 42903: Invalid use of an aggregate function.
+ij> select * from tmax where sum(i)=1;
+ERROR 42903: Invalid use of an aggregate function.
+ij> select i from tmax where substr('abc', sum(1), 3) = 'abc';
+ERROR 42903: Invalid use of an aggregate function.
+ij> drop table tmax;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregateOptimization.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/aggregateOptimization.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2455 @@
+ij> -- test various aggregate optimizations
+set isolation to rr;
+0 rows inserted/updated/deleted
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> -- create and populate tables
+create table t1(c1 int, c2 char(200));
+0 rows inserted/updated/deleted
+ij> insert into t1 (c1) values 10, 9, 10, 9, 8, 7, 6, 1, 3;
+9 rows inserted/updated/deleted
+ij> update t1 set c2 = CHAR(c1);
+9 rows inserted/updated/deleted
+ij> -- distinct min -> min, distinct max -> max
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 7000;
+ij> select min(distinct c1), max(distinct(c1)) from t1;
+1          |2          
+-----------------------
+1          |10         
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select min(distinct c1), max(distinct(c1)) from t1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 9
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 9
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 9
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=9
+				Number of rows visited=9
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+ij> select min(distinct c1), max(distinct(c1)) from t1 group by c1;
+1          |2          
+-----------------------
+1          |1          
+3          |3          
+6          |6          
+7          |7          
+8          |8          
+9          |9          
+10         |10         
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select min(distinct c1), max(distinct(c1)) from t1 group by c1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 7
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 7
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Grouped Aggregate ResultSet:
+		Number of opens = 1
+		Rows input = 9
+		Has distinct aggregate = false
+		In sorted order = false
+		Sort information: 
+			Number of rows input=9
+			Number of rows output=7
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (3):
+			Number of opens = 1
+			Rows seen = 9
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 9
+				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={0}
+					Number of columns fetched=1
+					Number of pages visited=1
+					Number of rows qualified=9
+					Number of rows visited=9
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+ij> -- min optimization
+create index i1 on t1(c1);
+0 rows inserted/updated/deleted
+ij> -- min column is 1st column in index
+select min(c1) from t1;
+1          
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- min column is 1st column in index
+select min(c1) from t1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table 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={0}
+				Number of columns fetched=1
+				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: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> create index i2 on t1(c2, c1);
+0 rows inserted/updated/deleted
+ij> -- equality predicates on all key columns preceding min column 
+select min(c1) from t1 where c2 = '10';
+1          
+-----------
+10         
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- equality predicates on all key columns preceding min column 
+select min(c1) from t1 where c2 = '10'
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (3):
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Scan ResultSet for T1 using index I2 at serializable isolation level using share 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={0, 1}
+					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> -- equality predicates on all key columns preceding min column, 
+-- not a unique index
+select min(c2) from t1 where c1 = 1;
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1                                                                                                                                                                                                       
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- equality predicates on all key columns preceding min column, 
+-- not a unique index
+select min(c2) from t1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			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 T1 using index I1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1
+				Rows filtered = 0
+				Fetch Size = 16
+					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> delete from t1;
+9 rows inserted/updated/deleted
+ij> drop index i1;
+0 rows inserted/updated/deleted
+ij> create unique index i1 on t1(c1);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, '1'), (2, '2');
+2 rows inserted/updated/deleted
+ij> -- equality predicates on all key columns preceding min column, 
+-- a unique index
+select min(c2) from t1 where c1 = 1;
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1                                                                                                                                                                                                       
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- equality predicates on all key columns preceding min column, 
+-- a unique index
+select min(c2) from t1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {1}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for T1 using index I1 at serializable isolation level using share 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> -- group by ordered on grouping columns
+create table t2(c1 int, c2 int, c3 int, c4 int);
+0 rows inserted/updated/deleted
+ij> create index t2_i1 on t2(c1);
+0 rows inserted/updated/deleted
+ij> create index t2_i2 on t2(c1, c2);
+0 rows inserted/updated/deleted
+ij> -- empty table
+select c1, sum(c2) from t2 group by c1;
+C1         |2          
+-----------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- empty table
+select c1, sum(c2) from t2 group by c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+	Has distinct aggregate = false
+	In sorted order = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T2 using index T2_I2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- 1 row table
+insert into t2 values (1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> select c1, sum(c2) from t2 group by c1;
+C1         |2          
+-----------------------
+1          |1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c1, sum(c2) from t2 group by c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+	Has distinct aggregate = false
+	In sorted order = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T2 using index T2_I2 at serializable isolation level using share table 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={0, 1}
+				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: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- multiple rows, 1 group
+insert into t2 values (1, 2, 2, 2), (1, -1, -1, -1);
+2 rows inserted/updated/deleted
+ij> select c1, sum(c2) from t2 group by c1;
+C1         |2          
+-----------------------
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c1, sum(c2) from t2 group by c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 3
+	Has distinct aggregate = false
+	In sorted order = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T2 using index T2_I2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 3
+			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={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=3
+				Number of rows visited=3
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- multiple rows, multiple groups
+insert into t2 values (2, 3, 2, 2), (2, 3, -1, -1);
+2 rows inserted/updated/deleted
+ij> select c1, sum(c2) from t2 group by c1;
+C1         |2          
+-----------------------
+1          |2          
+2          |6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c1, sum(c2) from t2 group by c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 5
+	Has distinct aggregate = false
+	In sorted order = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 5
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T2 using index T2_I2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 5
+			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={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=5
+				Number of rows visited=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- ordered, but in reverse order 
+select c2, c1, sum(c3) from t2 group by c2, c1;
+C2         |C1         |3          
+-----------------------------------
+-1         |1          |-1         
+1          |1          |1          
+2          |1          |2          
+3          |2          |1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ordered, but in reverse order 
+select c2, c1, sum(c3) from t2 group by c2, c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 4
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 5
+	Has distinct aggregate = false
+	In sorted order = false
+	Sort information: 
+		Number of rows input=5
+		Number of rows output=4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 5
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 5
+			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={0, 1, 2}
+				Number of columns fetched=3
+				Number of pages visited=1
+				Number of rows qualified=5
+				Number of rows visited=5
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --
+-- max optimization: the optimization is to call the store
+-- with a special request for the last row in an index.  so
+-- we cannot deal with any predicates
+--
+set isolation read committed;
+0 rows inserted/updated/deleted
+ij> create table x (x int, y int);
+0 rows inserted/updated/deleted
+ij> create index ix on x(x);
+0 rows inserted/updated/deleted
+ij> create index ixy on x(x,y);
+0 rows inserted/updated/deleted
+ij> insert into x values (3,3),(7,7),(2,2),(666,6),(1,1);
+5 rows inserted/updated/deleted
+ij> select max(x) from x;
+1          
+-----------
+666        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for X using index IXat read committed isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> select max(x) from x;
+1          
+-----------
+666        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for X using index IXat read committed isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> -- cannot use max opt
+select max(x) from x;
+1          
+-----------
+666        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- cannot use max opt
+select max(x) from x
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for X using index IXat read committed isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> select max(x) from x where x < 99;
+1          
+-----------
+7          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x where x < 99
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for X using index IX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=4
+				Number of rows visited=5
+				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> select max(x) from x where x = 7;
+1          
+-----------
+7          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x where x = 7
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for X using index IX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				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> select max(x) from x where y = 7;
+1          
+-----------
+7          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x where y = 7
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for X using index IXY at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1}
+				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=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select max(x) from x where y = 7;
+1          
+-----------
+7          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x where y = 7
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for X using index IXY at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1}
+				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=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select max(y) from x where y = 7;
+1          
+-----------
+7          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(y) from x where y = 7
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for X using index IXY at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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={1}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=1
+				Number of rows visited=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select max(x) from x group by x;
+1          
+-----------
+1          
+2          
+3          
+7          
+666        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x group by x
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 5
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 5
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Grouped Aggregate ResultSet:
+		Number of opens = 1
+		Rows input = 5
+		Has distinct aggregate = false
+		In sorted order = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (3):
+			Number of opens = 1
+			Rows seen = 5
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Scan ResultSet for X using index IX at read committed isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 5
+				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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=5
+					Number of rows visited=5
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+ij> -- could do max optimization on this, but we don't 
+-- really know much about qualifications
+select max(x) from x where x > 99;
+1          
+-----------
+666        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- could do max optimization on this, but we don't 
+-- really know much about qualifications
+select max(x) from x where x > 99
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for X using index IX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				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: 
+	None
+				qualifiers:
+None
+ij> autocommit off;
+ij> prepare p as 'select max(x) from x';
+ij> execute p;
+1          
+-----------
+666        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(x) from x
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for X using index IXat read committed isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> insert into x values (99999,99999);
+1 row inserted/updated/deleted
+ij> execute p;
+1          
+-----------
+99999      
+ij> rollback;
+ij> execute p;
+1          
+-----------
+666        
+ij> delete from x;
+5 rows inserted/updated/deleted
+ij> execute p;
+1          
+-----------
+NULL       
+ij> rollback;
+ij> -- since max uses some funky store interface, lets
+-- check locking
+connect 'wombat' as conn2;
+ij(CONN2)> set isolation to rr;
+0 rows inserted/updated/deleted
+ij(CONN2)> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij(CONN2)> autocommit off;
+ij(CONN2)> insert into x values (99999,null);
+1 row inserted/updated/deleted
+ij(CONN2)> set connection connection0;
+ij(CONNECTION0)> -- should deadlock
+select max(x) from x;
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONNECTION0)> set connection conn2;
+ij(CONN2)> commit;
+ij(CONN2)> insert into x values (99980,null);
+1 row inserted/updated/deleted
+ij(CONN2)> set connection connection0;
+ij(CONNECTION0)> -- ok - should not block on previous key (lock held by conn2 on 99980)
+select max(x) from x;
+1          
+-----------
+99999      
+ij(CONNECTION0)> set connection conn2;
+ij(CONN2)> delete from x where x = 99980;
+1 row inserted/updated/deleted
+ij(CONN2)> delete from x where x = 99999;
+1 row inserted/updated/deleted
+ij(CONN2)> commit;
+ij(CONN2)> set connection connection0;
+ij(CONNECTION0)> -- ok
+select max(x) from x;
+1          
+-----------
+666        
+ij(CONNECTION0)> set connection conn2;
+ij(CONN2)> insert into x values (-1,null);
+1 row inserted/updated/deleted
+ij(CONN2)> set connection connection0;
+ij(CONNECTION0)> -- does not deadlock in current implementation, as it handles cases where
+-- the last row is deleted, but the maximum values is somewhere on the last
+-- page.
+select max(x) from x;
+1          
+-----------
+666        
+ij(CONNECTION0)> set connection conn2;
+ij(CONN2)> insert into x values (100000,null);
+1 row inserted/updated/deleted
+ij(CONN2)> commit;
+ij(CONN2)> set connection connection0;
+ij(CONNECTION0)> -- ok
+select max(x) from x;
+1          
+-----------
+100000     
+ij(CONNECTION0)> set connection connection0;
+ij(CONNECTION0)> rollback;
+ij(CONNECTION0)> disconnect;
+ij> set connection conn2;
+ij> rollback;
+ij> disconnect;
+ij> -- check case where all rows are deleted off the last page of index, store 
+-- will fault over to doing full table scan, rather than max optimization.
+connect 'wombat' as conn1;
+ij> set isolation to rr;
+0 rows inserted/updated/deleted
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> autocommit off;
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> create table x (a bigint, b int);
+0 rows inserted/updated/deleted
+ij> -- insert enough rows so that there are multiple pages in the index.
+insert into x values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into x (select a + 1,   b from x);
+1 row inserted/updated/deleted
+ij> insert into x (select a + 2,   b from x);
+2 rows inserted/updated/deleted
+ij> insert into x (select a + 4,   b from x);
+4 rows inserted/updated/deleted
+ij> insert into x (select a + 8,   b from x);
+8 rows inserted/updated/deleted
+ij> insert into x (select a + 16,  b from x);
+16 rows inserted/updated/deleted
+ij> insert into x (select a + 32,  b from x);
+32 rows inserted/updated/deleted
+ij> insert into x (select a + 64,  b from x);
+64 rows inserted/updated/deleted
+ij> insert into x (select a + 128, b from x);
+128 rows inserted/updated/deleted
+ij> insert into x (select a + 256, b from x);
+256 rows inserted/updated/deleted
+ij> create index x_idx on x (a);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> connect 'wombat' as conn2;
+ij(CONN2)> set isolation to rr;
+0 rows inserted/updated/deleted
+ij(CONN2)> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij(CONN2)> autocommit off;
+ij(CONN2)> commit;
+ij(CONN2)> set connection conn1;
+ij(CONN1)> -- get lock on first row of table
+insert into x values (0, 0);
+1 row inserted/updated/deleted
+ij(CONN1)> set connection conn2;
+ij(CONN2)> -- delete all the rows from the last page in the index, but don't commit or
+-- else post commit will remove the page from the index.
+delete from x where a > 4;
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONN2)> -- lock timeout in current implementation - to be fixed when row level locked
+-- backward scan exists.
+--
+--      this one deadlocks because we have not done a complete implementation
+--      of backward scan for max on btree.  If the last page in the table is
+--      all deletes, then instead of doing a backward scan we fault over
+--      to the un-optimized max code which does a forward scan from the 
+--      beginnning of the table.
+select max(a) from x;
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONN2)> -- cleanup
+set connection conn1;
+ij(CONN1)> rollback;
+ij(CONN1)> disconnect;
+ij> set connection conn2;
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- test a table with null values to be sure we do the right thing on optimization
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> create table t1(a int, b int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (null, null);
+1 row inserted/updated/deleted
+ij> insert into t1 values (10, 10), (9, 9), (10, 10), (9, 9), (8, 8), (7, 7), (6, 6), 
+	(1,1), (3,3);
+9 rows inserted/updated/deleted
+ij> create index aindex on t1(a);
+0 rows inserted/updated/deleted
+ij> create index bindex on t1(b desc);
+0 rows inserted/updated/deleted
+ij> select min(a) from t1;
+1          
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select min(a) from t1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index AINDEX at serializable isolation level using share table 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={0}
+				Number of columns fetched=1
+				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: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- min of b should use max optimization whether b in nullable or not because NULLS are sorted high
+select min(b) from t1;
+1          
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- min of b should use max optimization whether b in nullable or not because NULLS are sorted high
+select min(b) from t1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for T1 using index BINDEXat serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> select max(a) from t1;
+1          
+-----------
+10         
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(a) from t1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for T1 using index AINDEXat serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> select max(b) from t1;
+1          
+-----------
+10         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select max(b) from t1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 10
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index BINDEX at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 10
+			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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=10
+				Number of rows visited=10
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> create table t2 (a int not null, b int not null);
+0 rows inserted/updated/deleted
+ij> insert into t2 select a, b from t1 where a is not null and b is not null;
+9 rows inserted/updated/deleted
+ij> create index bindex2 on t2(b desc);
+0 rows inserted/updated/deleted
+ij> -- min of b should use max optimization since b is nullable or not because NULLS are sorted high
+select min(b) from t2;
+1          
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- min of b should use max optimization since b is nullable or not because NULLS are sorted high
+select min(b) from t2
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for T2 using index BINDEX2at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/altertable.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/altertable.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,867 @@
+ij> -- alter table tests
+-- add column
+-- (add constraint & drop constraint to be added)
+-- create some database objects
+create table t0(c1 int not null constraint p1 primary key);
+0 rows inserted/updated/deleted
+ij> create table t0_1(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t0_2(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t0_3(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t1_1(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t3(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t4(c1 int not null);
+0 rows inserted/updated/deleted
+ij> create view v1 as select * from t2;
+0 rows inserted/updated/deleted
+ij> create view v2 as select c1 from t2;
+0 rows inserted/updated/deleted
+ij> create index i0_1 on t0_1(c1);
+0 rows inserted/updated/deleted
+ij> create index i0_2 on t0_2(c1);
+0 rows inserted/updated/deleted
+ij> -- do some population
+insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> insert into t1_1 values 1;
+1 row inserted/updated/deleted
+ij> insert into t2 values 1;
+1 row inserted/updated/deleted
+ij> insert into t2 values 2;
+1 row inserted/updated/deleted
+ij> insert into t3 values 1;
+1 row inserted/updated/deleted
+ij> insert into t3 values 2;
+1 row inserted/updated/deleted
+ij> insert into t3 values 3;
+1 row inserted/updated/deleted
+ij> insert into t4 values 1, 2, 3, 1;
+4 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- add column
+-- negative tests
+-- alter a non-existing table
+alter table notexists add column c1 int;
+ERROR 42Y55: 'ALTER TABLE' cannot be performed on 'NOTEXISTS' because it does not exist.
+ij> -- add a column that already exists
+alter table t0 add column c1 int;
+ERROR X0Y32: Column 'C1' already exists in Table/View 'APP.T0'.
+ij> -- alter a system table
+alter table sys.systables add column c1 int;
+ERROR 42X62: 'ALTER TABLE' is not allowed in the 'SYS' schema.
+ij> -- alter table on a view
+alter table v2 add column c2 int;
+ERROR 42Y62: 'ALTER TABLE' is not allowed on 'APP.V2' because it is a view.
+ij> -- add a primary key column to a table which already has one
+-- this will produce an error
+alter table t0 add column c2 int not null default 0 primary key;
+ERROR X0Y58: Attempt to add a primary key constraint to table 'APP.T0' failed because the table already has a constraint of that type.  A table can only have a single primary key constraint.
+ij> -- add a unique column constraint to a table with > 1 row
+alter table t3 add column c2 int not null default 0 unique;
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T3'.
+ij> -- cannot alter a table when there is an open cursor on it
+get cursor c1 as 'select * from t1';
+ij> alter table t1 add column c2 int;
+ERROR X0X95: Operation 'ALTER TABLE' cannot be performed on object 'T1' because there is an open ResultSet dependent on that object.
+ij> close c1;
+ij> -- positive tests
+-- add a non-nullable column to a non-empty table
+alter table t1 add column c2 int not null default 0;
+0 rows inserted/updated/deleted
+ij> -- add a primary key column to a non-empty table
+alter table t1 add column c3 int not null default 0 primary key;
+0 rows inserted/updated/deleted
+ij> -- add a column with a check constraint to a non-empty column
+alter table t1 add column c4 int check(c4 = 1);
+0 rows inserted/updated/deleted
+ij> select * from v1;
+C1         
+-----------
+1          
+2          
+ij> prepare p1 as 'select * from t2';
+ij> execute p1;
+C1         
+-----------
+1          
+2          
+ij> alter table t2 add column c2 int;
+0 rows inserted/updated/deleted
+ij> -- select * views don't see added columns after alter table
+select * from v1;
+C1         
+-----------
+1          
+2          
+ij> -- select * prepared statements do see added columns after alter table
+execute p1;
+C1         |C2         
+-----------------------
+1          |NULL       
+2          |NULL       
+ij> -- rollback and recheck
+rollback;
+ij> select * from v1;
+C1         
+-----------
+1          
+2          
+ij> execute p1;
+C1         
+-----------
+1          
+2          
+ij> remove p1;
+ij> -- add non-nullable column to 0 row table and verify
+alter table t0 add column c2 int not null default 0;
+0 rows inserted/updated/deleted
+ij> insert into t0 values (1, default);
+1 row inserted/updated/deleted
+ij> select * from t0;
+C1         |C2         
+-----------------------
+1          |0          
+ij> drop table t0;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> select  * from t0;
+C1         
+-----------
+ij> -- add primary key to 0 row table and verify
+alter table t0_1 add column c2 int not null primary key default 0;
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T0_1'.
+ij> select * from t0_1;
+C1         |C2         
+-----------------------
+1          |1          
+ij> rollback;
+ij> -- add unique constraint to 0 and 1 row tables and verify 
+ alter table t0_1 add column c2 int not null unique default 0;
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, default);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (2, default);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T0_1'.
+ij> insert into t0_1 values (3, 1);
+1 row inserted/updated/deleted
+ij> delete from t1;
+1 row inserted/updated/deleted
+ij> alter table t1 add column c2 int not null unique default 0;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (2, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 1);
+1 row inserted/updated/deleted
+ij> -- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+T0                                                                                                                              |1          
+T0_1                                                                                                                            |1          
+T0_2                                                                                                                            |1          
+T0_3                                                                                                                            |1          
+T1                                                                                                                              |1          
+T1_1                                                                                                                            |1          
+T2                                                                                                                              |1          
+T3                                                                                                                              |1          
+T4                                                                                                                              |1          
+ij> rollback;
+ij> create function countopens() returns varchar(128)
+language java parameter style java
+external name 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.countOpens';
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- do consistency check on scans, etc.
+values countopens();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+ij> -- some typical data
+create table tab1 (c1 int, c2 int not null constraint tab1pk primary key, c3 double, c4 int);
+0 rows inserted/updated/deleted
+ij> create index i11 on tab1 (c1);
+0 rows inserted/updated/deleted
+ij> create unique index i12 on tab1 (c1);
+0 rows inserted/updated/deleted
+ij> create index i13 on tab1 (c3, c1, c4);
+0 rows inserted/updated/deleted
+ij> create unique index i14 on tab1 (c3, c1);
+0 rows inserted/updated/deleted
+ij> insert into tab1 values (6, 5, 4.5, 90);
+1 row inserted/updated/deleted
+ij> insert into tab1 values (10, 3, 8.9, -5);
+1 row inserted/updated/deleted
+ij> insert into tab1 values (100, 15, 4.5, 9);
+1 row inserted/updated/deleted
+ij> insert into tab1 values (2, 8, 4.4, 8);
+1 row inserted/updated/deleted
+ij> insert into tab1 values (11, 9, 2.5, 88);
+1 row inserted/updated/deleted
+ij> insert into tab1 values(null,10, 3.5, 99);
+1 row inserted/updated/deleted
+ij> create view vw1 (col_sum, col_diff) as select c1+c4, c1-c4 from tab1;
+0 rows inserted/updated/deleted
+ij> create view vw2 (c1) as select c3 from tab1;
+0 rows inserted/updated/deleted
+ij> create table tab2 (c1 int not null unique, c2 double, c3 int, c4 int not null constraint c4_PK primary key, c5 int, constraint t2ck check (c2+c3<100.0));
+0 rows inserted/updated/deleted
+ij> create table tab3 (c1 int, c2 int, c3 int, c4 int, constraint t3fk foreign key (c2) references tab2(c1), constraint t3ck check (c2-c3<80));
+0 rows inserted/updated/deleted
+ij> create view vw3 (c1, c2) as select c5, tab3.c4 from tab2, tab3 where tab3.c1 > 0;
+0 rows inserted/updated/deleted
+ij> create view vw4 (c1) as select c4 from tab3 where c2 > 8;
+0 rows inserted/updated/deleted
+ij> create table tab4 (c1 int, c2 int, c3 int, c4 int);
+0 rows inserted/updated/deleted
+ij> create table tab5 (c1 int);
+0 rows inserted/updated/deleted
+ij> insert into tab4 values (1,2,3,4);
+1 row inserted/updated/deleted
+ij> create trigger tr1 after update of c2, c3, c4 on tab4 for each row mode db2sql insert into tab5 values (1);
+0 rows inserted/updated/deleted
+ij> create trigger tr2 after update of c3, c4 on tab4 for each row mode db2sql insert into tab5 values (2);
+0 rows inserted/updated/deleted
+ij> -- tr1 is dropped, tr2 still OK
+drop trigger tr1;
+0 rows inserted/updated/deleted
+ij> select * from tab5;
+C1         
+-----------
+ij> -- fire tr2 only
+update tab4 set c3 = 33;
+1 row inserted/updated/deleted
+ij> update tab4 set c4 = 44;
+1 row inserted/updated/deleted
+ij> select * from tab5;
+C1         
+-----------
+2          
+2          
+ij> -- drop tr2
+drop trigger tr2;
+0 rows inserted/updated/deleted
+ij> update tab4 set c4 = 444;
+1 row inserted/updated/deleted
+ij> select * from tab2;
+C1         |C2                    |C3         |C4         |C5         
+----------------------------------------------------------------------
+ij> drop view vw2;
+0 rows inserted/updated/deleted
+ij> create view vw2 (c1) as select c3 from tab1;
+0 rows inserted/updated/deleted
+ij> -- vw1 should be dropped
+drop view vw1;
+0 rows inserted/updated/deleted
+ij> select * from vw1;
+ERROR 42X05: Table 'VW1' does not exist.
+ij> -- do the indexes still exist?
+-- the create index statements should fail
+create index i13 on tab1 (c3, c1, c4);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: I13.
+ij> create unique index i14 on tab1 (c3, c1);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: I14.
+ij> create unique index i12 on tab1 (c1);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: I12.
+ij> select c2, c3, c4 from tab1 order by c3;
+C2         |C3                    |C4         
+----------------------------------------------
+9          |2.5                   |88         
+10         |3.5                   |99         
+8          |4.4                   |8          
+15         |4.5                   |9          
+5          |4.5                   |90         
+3          |8.9                   |-5         
+ij> drop index i12;
+0 rows inserted/updated/deleted
+ij> drop index i13;
+0 rows inserted/updated/deleted
+ij> drop index i14;
+0 rows inserted/updated/deleted
+ij> -- more data
+insert into tab1 (c2, c3, c4) values (22, 8.9, 5);
+1 row inserted/updated/deleted
+ij> insert into tab1 (c2, c3, c4) values (11, 4.5, 67);
+1 row inserted/updated/deleted
+ij> select c2 from tab1;
+C2         
+-----------
+3          
+5          
+8          
+9          
+10         
+11         
+15         
+22         
+ij> -- add a new column
+alter table tab1 add column c5 double;
+0 rows inserted/updated/deleted
+ij> -- drop view vw2 so can create a new one, with where clause
+drop view vw2;
+0 rows inserted/updated/deleted
+ij> create view vw2 (c1) as select c5 from tab1 where c2 > 5;
+0 rows inserted/updated/deleted
+ij> -- drop vw2 as well
+drop view vw2;
+0 rows inserted/updated/deleted
+ij> alter table tab1 drop constraint tab1pk;
+0 rows inserted/updated/deleted
+ij> -- any surviving index? 
+-- creating the index should not fail
+select c4 from tab1 order by 1;
+C4         
+-----------
+-5         
+5          
+8          
+9          
+67         
+88         
+90         
+99         
+ij> create index i13 on tab1 (c3, c1, c4);
+0 rows inserted/updated/deleted
+ij> -- should drop t2ck
+alter table tab2 drop constraint t2ck;
+0 rows inserted/updated/deleted
+ij> -- this should drop t3fk, unique constraint and backing index
+alter table tab3 drop constraint t3fk;
+0 rows inserted/updated/deleted
+ij> alter table tab2 drop constraint c4_PK;
+0 rows inserted/updated/deleted
+ij> insert into tab3 values (1,2,3,4);
+1 row inserted/updated/deleted
+ij> -- drop view vw3
+drop view vw3;
+0 rows inserted/updated/deleted
+ij> -- violates t3ck
+insert into tab3 (c1, c2, c3) values (81, 1, 2);
+1 row inserted/updated/deleted
+ij> insert into tab3 (c1, c2, c3) values (81, 2, 2);
+1 row inserted/updated/deleted
+ij> -- this should drop t3ck, vw4
+alter table tab3 drop constraint t3ck;
+0 rows inserted/updated/deleted
+ij> drop view vw4;
+0 rows inserted/updated/deleted
+ij> insert into tab3 (c2, c3) values (-82, 9);
+1 row inserted/updated/deleted
+ij> create view vw4 (c1) as select c3 from tab3 where c3+5>c4;
+0 rows inserted/updated/deleted
+ij> -- drop view vw4
+drop view vw4;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- check that dropping a column will drop backing index on referencing
+-- table
+create table tt1(a int, b int not null constraint tt1uc unique);
+0 rows inserted/updated/deleted
+ij> create table reftt1(a int constraint reftt1rc references tt1(b));
+0 rows inserted/updated/deleted
+ij> -- count should be 2
+select count(*) 
+from sys.sysconglomerates c, sys.systables t 
+where t.tableid = c.tableid
+and t.tablename = 'REFTT1';
+1          
+-----------
+2          
+ij> alter table reftt1 drop constraint reftt1rc;
+0 rows inserted/updated/deleted
+ij> alter table tt1 drop constraint tt1uc;
+0 rows inserted/updated/deleted
+ij> -- count should be 1
+select count(*) 
+from sys.sysconglomerates c, sys.systables t 
+where t.tableid = c.tableid
+and t.tablename = 'REFTT1';
+1          
+-----------
+1          
+ij> rollback;
+ij> -- add constraint
+-- negative tests
+-- add primary key to table which already has one
+alter table t0 add column c3 int;
+0 rows inserted/updated/deleted
+ij> alter table t0 add constraint cons1 primary key(c3);
+ERROR 42831: 'C3' cannot be a column of a primary key or unique key because it can contain null values.
+ij> alter table t0 add primary key(c3);
+ERROR 42831: 'C3' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- add constraint references non-existant column
+alter table t4 add constraint t4pk primary key("c1");
+ERROR 42X14: 'c1' is not a column in table or VTI 'T4'.
+ij> alter table t4 add constraint t4uq unique("c1");
+ERROR 42X14: 'c1' is not a column in table or VTI 'T4'.
+ij> alter table t4 add constraint t4fk foreign key ("c1") references t0;
+ERROR 42X14: 'c1' is not a column in table or VTI 'T4'.
+ij> alter table t4 add constraint t4ck check ("c1" <> 4);
+ERROR 42X04: Column 'c1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'c1' is not a column in the target table.
+ij> -- add primary key to non-empty table with duplicates
+alter table t4 add primary key(c1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T4'.
+ij> -- positive tests
+-- add primary key to 0 row table and verify
+alter table t0_1 add column c2 int not null constraint p2 primary key default 0;
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'P2' defined on 'T0_1'.
+ij> select * from t0_1;
+C1         |C2         
+-----------------------
+1          |1          
+ij> rollback;
+ij> -- add check constraint to 0 row table and verify
+alter table t0_1 add column c2 int check(c2 != 3);
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (1, 3);
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'APP.T0_1'.
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> select * from t0_1;
+C1         |C2         
+-----------------------
+1          |1          
+1          |1          
+ij> rollback;
+ij> -- add check constraint to table with rows that are ok
+alter table t0_1 add column c2 int;
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (2, 2);
+1 row inserted/updated/deleted
+ij> alter table t0_1 add constraint ck1 check(c2 = c1);
+0 rows inserted/updated/deleted
+ij> select * from t0_1;
+C1         |C2         
+-----------------------
+1          |1          
+2          |2          
+ij> -- verify constraint has been added, the following should fail
+insert into t0_1 values (1, 3);
+ERROR 23513: The check constraint 'CK1' was violated while performing an INSERT or UPDATE on table 'APP.T0_1'.
+ij> rollback;
+ij> -- add check constraint to table with rows w/ 3 failures
+alter table t0_1 add column c2 int;
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (2, 2);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (2, 2);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (666, 2);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (2, 2);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (3, 3);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (666, 3);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (666, 3);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (3, 3);
+1 row inserted/updated/deleted
+ij> alter table t0_1 add constraint ck1 check(c2 = c1);
+ERROR X0Y59: Attempt to add or enable constraint(s) on table 'APP.T0_1' failed because the table contains 3 row(s) that violate the following check constraint(s): CK1.
+ij> -- verify constraint has NOT been added, the following should succeed
+insert into t0_1 values (1, 3);
+1 row inserted/updated/deleted
+ij> select * from t0_1;
+C1         |C2         
+-----------------------
+1          |1          
+2          |2          
+2          |2          
+666        |2          
+2          |2          
+3          |3          
+666        |3          
+666        |3          
+3          |3          
+1          |3          
+ij> rollback;
+ij> -- check and primary key constraints on same table and enforced
+alter table t0_1 add column c2 int not null constraint p2 primary key default 0;
+0 rows inserted/updated/deleted
+ij> alter table t0_1 add check(c2 = c1);
+0 rows inserted/updated/deleted
+ij> insert into t0_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (1, 2);
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'APP.T0_1'.
+ij> insert into t0_1 values (1, 1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'P2' defined on 'T0_1'.
+ij> insert into t0_1 values (2, 1);
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'APP.T0_1'.
+ij> insert into t0_1 values (2, 2);
+1 row inserted/updated/deleted
+ij> select * from t0_1;
+C1         |C2         
+-----------------------
+1          |1          
+2          |2          
+ij> rollback;
+ij> -- add primary key constraint to table with > 1 row
+alter table t3 add column c3 int;
+0 rows inserted/updated/deleted
+ij> alter table t3 add unique(c3);
+ERROR 42831: 'C3' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- add unique constraint to 0 and 1 row tables and verify 
+alter table t0_2 add column c2 int not null unique default 0;
+0 rows inserted/updated/deleted
+ij> insert into t0_2 values (1, default);
+1 row inserted/updated/deleted
+ij> insert into t0_2 values (1, 1);
+1 row inserted/updated/deleted
+ij> delete from t1_1;
+1 row inserted/updated/deleted
+ij> alter table t1_1 add column c2 int not null unique default 0;
+0 rows inserted/updated/deleted
+ij> insert into t1_1 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t1_1 values (1, 2);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1_1'.
+ij> insert into t1_1 values (1, 1);
+1 row inserted/updated/deleted
+ij> -- add unique constraint to table with > 1 row
+alter table t3 add unique(c1);
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- verify prepared alter table dependent on underlying table
+prepare p1 as 'alter table xxx add check(c2 = 1)';
+ERROR 42Y55: 'ALTER TABLE' cannot be performed on 'XXX' because it does not exist.
+ij> create table xxx(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> prepare p1 as 'alter table xxx add check(c2 = 1)';
+ij> execute p1;
+0 rows inserted/updated/deleted
+ij> drop table xxx;
+0 rows inserted/updated/deleted
+ij> create table xxx(c1 int);
+0 rows inserted/updated/deleted
+ij> execute p1;
+ERROR 42X04: Column 'C2' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C2' is not a column in the target table.
+ij> alter table xxx add column c2 int;
+0 rows inserted/updated/deleted
+ij> execute p1;
+0 rows inserted/updated/deleted
+ij> drop table xxx;
+0 rows inserted/updated/deleted
+ij> -- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+T0                                                                                                                              |1          
+T0_1                                                                                                                            |1          
+T0_2                                                                                                                            |1          
+T0_3                                                                                                                            |1          
+T1                                                                                                                              |1          
+T1_1                                                                                                                            |1          
+T2                                                                                                                              |1          
+T3                                                                                                                              |1          
+T4                                                                                                                              |1          
+ij> -- drop constraint
+-- negative tests
+-- drop non-existent constraint
+alter table t0 drop constraint notexists;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.NOTEXISTS' on table 'APP.T0'.
+ij> -- constraint/table mismatch
+alter table t1 drop constraint p1;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.P1' on table 'APP.T1'.
+ij> -- In DB2 compatibility mode, we cann't add a nullable primary key
+alter table t0_1 add constraint p2 primary key(c1);
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> alter table t0_1 drop constraint p2;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.P2' on table 'APP.T0_1'.
+ij> -- positive tests
+-- verify that we can add/drop/add/drop/... constraints
+alter table t0_1 add column c2 int not null constraint p2 primary key default 0;
+0 rows inserted/updated/deleted
+ij> delete from t0_1;
+0 rows inserted/updated/deleted
+ij> alter table t0_1 drop constraint p2;
+0 rows inserted/updated/deleted
+ij> alter table t0_1 add constraint p2 primary key(c2);
+0 rows inserted/updated/deleted
+ij> alter table t0_1 drop constraint p2;
+0 rows inserted/updated/deleted
+ij> alter table t0_1 add constraint p2 primary key(c2);
+0 rows inserted/updated/deleted
+ij> -- verify that constraint is still enforced
+insert into t0_1 values (1,1);
+1 row inserted/updated/deleted
+ij> insert into t0_1 values (1,1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'P2' defined on 'T0_1'.
+ij> -- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T' and tablename = 'T0_1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+T0_1                                                                                                                            |1          
+ij> -- verify that alter table works after drop/recreate of table
+prepare p1 as 'alter table t0_1 drop constraint p2';
+ij> execute p1;
+0 rows inserted/updated/deleted
+ij> drop table t0_1;
+0 rows inserted/updated/deleted
+ij> create table t0_1 (c1 int, c2 int not null constraint p2 primary key);
+0 rows inserted/updated/deleted
+ij> execute p1;
+0 rows inserted/updated/deleted
+ij> -- do consistency check on scans, etc.
+-- values (org.apache.derbyTesting.functionTests.util.ConsistencyChecker::countOpens());
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> -- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+T0                                                                                                                              |1          
+T0_2                                                                                                                            |1          
+T0_3                                                                                                                            |1          
+T1                                                                                                                              |1          
+T1_1                                                                                                                            |1          
+T2                                                                                                                              |1          
+T3                                                                                                                              |1          
+T4                                                                                                                              |1          
+T0_1                                                                                                                            |1          
+ij> -- bugs 793
+create table b793 (pn1 int not null constraint named_primary primary key, 
+				   pn2 int constraint named_pn2 check (pn2 > 3));
+0 rows inserted/updated/deleted
+ij> alter table b793 drop constraint named_primary;
+0 rows inserted/updated/deleted
+ij> drop table b793;
+0 rows inserted/updated/deleted
+ij> -- test that drop constraint removes backing indexes
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1(a int not null constraint t1_pri primary key);
+0 rows inserted/updated/deleted
+ij> create table reft1(a int constraint t1_ref references t1(a));
+0 rows inserted/updated/deleted
+ij> -- count should be 2
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where c.tableid = t.tableid and
+t.tablename = 'REFT1';
+1          
+-----------
+2          
+ij> alter table reft1 drop constraint t1_ref;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint t1_pri;
+0 rows inserted/updated/deleted
+ij> -- count should be 1
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where c.tableid = t.tableid and
+t.tablename = 'REFT1';
+1          
+-----------
+1          
+ij> drop table reft1;
+0 rows inserted/updated/deleted
+ij> -- clean up
+drop view v2;
+0 rows inserted/updated/deleted
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> drop table t0;
+0 rows inserted/updated/deleted
+ij> drop table t0_1;
+0 rows inserted/updated/deleted
+ij> drop table t0_2;
+0 rows inserted/updated/deleted
+ij> drop table t0_3;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t1_1;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> ------------------------------------------------------
+--
+-- special funky schema tests
+--
+------------------------------------------------------
+create schema newschema;
+0 rows inserted/updated/deleted
+ij> drop table x;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'X' because it does not exist.
+ij> create table x (x int not null, y int not null);
+0 rows inserted/updated/deleted
+ij> alter table x add constraint newcons primary key (x);
+0 rows inserted/updated/deleted
+ij> -- schemaname should be app
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+SCHEMANAME                                                                                                                      |CONSTRAINTNAME                                                                                                                  
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |NEWCONS                                                                                                                         
+ij> insert into x values (1,1),(1,1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'NEWCONS' defined on 'X'.
+ij> alter table x drop constraint app.newcons;
+0 rows inserted/updated/deleted
+ij> alter table x add constraint newcons primary key (x);
+0 rows inserted/updated/deleted
+ij> -- schemaname should be app
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+SCHEMANAME                                                                                                                      |CONSTRAINTNAME                                                                                                                  
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |NEWCONS                                                                                                                         
+ij> -- fail
+alter table x drop constraint badschema.newcons;
+ERROR 42Y07: Schema 'BADSCHEMA' does not exist
+ij> -- fail
+alter table x drop constraint newschema.newcons;
+ERROR 42X86: ALTER table failed. There is no constraint 'NEWSCHEMA.NEWCONS' on table 'APP.X'.
+ij> -- ok
+alter table x drop constraint app.newcons;
+0 rows inserted/updated/deleted
+ij> -- bad schema name
+alter table x add constraint badschema.newcons primary key (x);
+ERROR 42X85: Constraint 'BADSCHEMA.NEWCONS'is required to be in the same schema as table 'APP.X'.
+ij> -- two constriants, same name, different schema (second will fail)
+drop table x;
+0 rows inserted/updated/deleted
+ij> create table x (x int not null, y int not null);
+0 rows inserted/updated/deleted
+ij> alter table x add constraint con check (x > 1);
+0 rows inserted/updated/deleted
+ij> alter table x add constraint newschema.con check (x > 1);
+ERROR 42X85: Constraint 'NEWSCHEMA.CON'is required to be in the same schema as table 'APP.X'.
+ij> select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+SCHEMANAME                                                                                                                      |CONSTRAINTNAME                                                                                                                  
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |CON                                                                                                                             
+ij> create schema emptyschema;
+0 rows inserted/updated/deleted
+ij> set schema emptyschema;
+0 rows inserted/updated/deleted
+ij> -- fail, cannot find emptyschema.conn
+alter table app.x drop constraint emptyschema.con;
+ERROR 42X86: ALTER table failed. There is no constraint 'EMPTYSCHEMA.CON' on table 'APP.X'.
+ij> select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+SCHEMANAME                                                                                                                      |CONSTRAINTNAME                                                                                                                  
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |CON                                                                                                                             
+ij> set schema newschema;
+0 rows inserted/updated/deleted
+ij> -- add constraint, default to table schema
+alter table app.x add constraint con2 check (x > 1);
+0 rows inserted/updated/deleted
+ij> -- added constraint in APP (defaults to table's schema)
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1,2;
+SCHEMANAME                                                                                                                      |CONSTRAINTNAME                                                                                                                  
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |CON                                                                                                                             
+APP                                                                                                                             |CON2                                                                                                                            
+ij> drop table app.x;
+0 rows inserted/updated/deleted
+ij> drop schema newschema restrict;
+0 rows inserted/updated/deleted
+ij> -- some temporary table tests
+-- declare temp table with no explicit on commit behavior.
+declare global temporary table session.t1 (c11 int) not logged;
+0 rows inserted/updated/deleted
+ij> declare global temporary table session.t2 (c21 int) on commit delete rows not logged;
+0 rows inserted/updated/deleted
+ij> declare global temporary table session.t3 (c31 int) on commit preserve rows not logged;
+0 rows inserted/updated/deleted
+ij> drop table session.t1;
+0 rows inserted/updated/deleted
+ij> drop table session.t2;
+0 rows inserted/updated/deleted
+ij> drop table session.t3;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> create table t1(c1 int, c2 int not null primary key);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.
+ij> alter table t1 drop primary key;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1);
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |1          
+1          |1          
+ij> alter table t1 drop primary key;
+ERROR 42X86: ALTER table failed. There is no constraint 'PRIMARY KEY' on table 'APP.T1'.
+ij> alter table t1 drop constraint emptyschema.C1;
+ERROR 42X86: ALTER table failed. There is no constraint 'EMPTYSCHEMA.C1' on table 'APP.T1'.
+ij> alter table t1 drop constraint nosuchschema.C2;
+ERROR 42Y07: Schema 'NOSUCHSCHEMA' does not exist
+ij> alter table t1 add constraint emptyschema.C1_PLUS_C2 check ((c1 + c2) < 100);
+ERROR 42X85: Constraint 'EMPTYSCHEMA.C1_PLUS_C2'is required to be in the same schema as table 'APP.T1'.
+ij> alter table t1 add constraint C1_PLUS_C2 check ((c1 + c2) < 100);
+0 rows inserted/updated/deleted
+ij> prepare alplus as 'alter table t1 drop constraint C1_PLUS_C2';
+ij> alter table APP.t1 drop constraint APP.C1_PLUS_C2;
+0 rows inserted/updated/deleted
+ij> execute alplus;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C1_PLUS_C2' on table 'APP.T1'.
+ij> remove alplus;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5817 - make LOGGED non-reserved keyword. following test cases for that
+create table LOGGED(c11 int);
+0 rows inserted/updated/deleted
+ij> drop table LOGGED;
+0 rows inserted/updated/deleted
+ij> create table logged(logged int);
+0 rows inserted/updated/deleted
+ij> drop table logged;
+0 rows inserted/updated/deleted
+ij> declare global temporary table session.logged(logged int) on commit delete rows not logged;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/arithmetic.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/arithmetic.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,645 @@
+ij> --
+-- Test the arithmetic operators
+--
+create table t (i int, j int);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 101);
+1 row inserted/updated/deleted
+ij> insert into t values (-2, -102);
+1 row inserted/updated/deleted
+ij> select i + j from t;
+1          
+-----------
+NULL       
+100        
+102        
+-104       
+ij> select i, i + 10 + 20, j, j + 100 + 200 from t;
+I          |2          |J          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |30         |100        |400        
+1          |31         |101        |401        
+-2         |28         |-102       |198        
+ij> select i - j, j - i from t;
+1          |2          
+-----------------------
+NULL       |NULL       
+-100       |100        
+-100       |100        
+100        |-100       
+ij> select i, i - 10 - 20, 20 - 10 - i, j, j - 100 - 200, 200 - 100 - j from t;
+I          |2          |3          |J          |5          |6          
+-----------------------------------------------------------------------
+NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+0          |-30        |10         |100        |-200       |0          
+1          |-29        |9          |101        |-199       |-1         
+-2         |-32        |12         |-102       |-402       |202        
+ij> select i, j, i * j, j * i from t;
+I          |J          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |0          
+1          |101        |101        |101        
+-2         |-102       |204        |204        
+ij> select i, j, i * 10 * -20, j * 100 * -200 from t;
+I          |J          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |-2000000   
+1          |101        |-200       |-2020000   
+-2         |-102       |400        |2040000    
+ij> -- try unary minus on some expressions
+select -i, -j, -(i * 10 * -20), -(j * 100 * -200) from t;
+1          |2          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |-100       |0          |2000000    
+-1         |-101       |200        |2020000    
+2          |102        |-400       |-2040000   
+ij> -- unary plus doesn't do anything
+select +i, +j, +(+i * +10 * -20), +(+j * +100 * -200) from t;
+1          |2          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |-2000000   
+1          |101        |-200       |-2020000   
+-2         |-102       |400        |2040000    
+ij> -- test null/null, constant/null, null/constant
+select i, j, i / j, 10 / j, j / 10 from t;
+I          |J          |3          |4          |5          
+-----------------------------------------------------------
+NULL       |NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |0          |10         
+1          |101        |0          |0          |10         
+-2         |-102       |0          |0          |-10        
+ij> -- test for divide by 0
+select j / i from t;
+1          
+-----------
+NULL       
+ERROR 22012: Attempt to divide by zero.
+ij> select (j - 1) / (i + 4), 20 / 5 / 4, 20 / 4 / 5 from t;
+1          |2          |3          
+-----------------------------------
+NULL       |1          |1          
+24         |1          |1          
+20         |1          |1          
+-51        |1          |1          
+ij> -- test positive/negative, negative/positive and negative/negative
+select j, j / (0 - j), (0 - j) / j, (0 - j) / (0 - j) from t;
+J          |2          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+100        |-1         |-1         |1          
+101        |-1         |-1         |1          
+-102       |-1         |-1         |1          
+ij> -- test some "more complex" expressions
+select i, i + 10, i - (10 - 20), i - 10, i - (20 - 10) from t;
+I          |2          |3          |4          |5          
+-----------------------------------------------------------
+NULL       |NULL       |NULL       |NULL       |NULL       
+0          |10         |10         |-10        |-10        
+1          |11         |11         |-9         |-9         
+-2         |8          |8          |-12        |-12        
+ij> select 'The next 2 columns should agree', 2 + 3 * 4 + 5, 2 + (3 * 4) + 5 from t;
+1                              |2          |3          
+-------------------------------------------------------
+The next 2 columns should agree|19         |19         
+The next 2 columns should agree|19         |19         
+The next 2 columns should agree|19         |19         
+The next 2 columns should agree|19         |19         
+ij> select 'The next column should be 45', (2 + 3) * (4 + 5) from t;
+1                           |2          
+----------------------------------------
+The next column should be 45|45         
+The next column should be 45|45         
+The next column should be 45|45         
+The next column should be 45|45         
+ij> -- test overflow
+delete from t;
+4 rows inserted/updated/deleted
+ij> insert into t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 101);
+1 row inserted/updated/deleted
+ij> select i + 2147483647 from t;
+1          
+-----------
+NULL       
+2147483647 
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select i - 2147483647 - 1, 'This query should work' from t;
+1          |2                     
+----------------------------------
+NULL       |This query should work
+-2147483648|This query should work
+-2147483647|This query should work
+ij> select i - 2147483647 - 2, 'This query should fail' from t;
+1          |2                     
+----------------------------------
+NULL       |This query should fail
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select j * 2147483647 from t;
+1          
+-----------
+NULL       
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select j * -2147483647 from t;
+1          
+-----------
+NULL       
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> insert into t values (-2147483648, 0);
+1 row inserted/updated/deleted
+ij> select -i from t;
+1          
+-----------
+NULL       
+0          
+-1         
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table s (x char(10), y char(10));
+0 rows inserted/updated/deleted
+ij> select x + y from s;
+ERROR 42Y95: The '+' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select x - y from s;
+ERROR 42Y95: The '-' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select x * y from s;
+ERROR 42Y95: The '*' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select x / y from s;
+ERROR 42Y95: The '/' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select -x from s;
+ERROR 42X37: The unary '-' operator is not allowed on the 'CHAR' type.
+ij> -- do the same thing with smallints
+-- except that integer constants are ints!
+create table smallint_t (i smallint, j smallint);
+0 rows inserted/updated/deleted
+ij> create table smallint_s (i smallint, j smallint);
+0 rows inserted/updated/deleted
+ij> insert into smallint_t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into smallint_t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into smallint_t values (1, 101);
+1 row inserted/updated/deleted
+ij> insert into smallint_t values (-2, -102);
+1 row inserted/updated/deleted
+ij> select i + j from smallint_t;
+1     
+------
+NULL  
+100   
+102   
+-104  
+ij> select i, j, i + i + j, j + j + i from smallint_t;
+I     |J     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |100   |100   |200   
+1     |101   |103   |203   
+-2    |-102  |-106  |-206  
+ij> select i - j, j - i from smallint_t;
+1     |2     
+-------------
+NULL  |NULL  
+-100  |100   
+-100  |100   
+100   |-100  
+ij> select i, i - j - j, j - j - i, j, j - i - i, i - i - j from smallint_t;
+I     |2     |3     |J     |5     |6     
+-----------------------------------------
+NULL  |NULL  |NULL  |NULL  |NULL  |NULL  
+0     |-200  |0     |100   |100   |-100  
+1     |-201  |-1    |101   |99    |-101  
+-2    |202   |2     |-102  |-98   |102   
+ij> select i, j, i * j, j * i from smallint_t;
+I     |J     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |100   |0     |0     
+1     |101   |101   |101   
+-2    |-102  |204   |204   
+ij> select i, j, i * i * (i - j), j * i * (i - j) from smallint_t;
+I     |J     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |100   |0     |0     
+1     |101   |-100  |-10100
+-2    |-102  |400   |20400 
+ij> select -i, -j, -(i * i * (i - j)), -(j * i * (i - j)) from smallint_t;
+1     |2     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |-100  |0     |0     
+-1    |-101  |100   |10100 
+2     |102   |-400  |-20400
+ij> -- test for divide by 0
+select j / i from smallint_t;
+1     
+------
+NULL  
+ERROR 22012: Attempt to divide by zero.
+ij> -- test for overflow
+insert into smallint_s values (1, 32767);
+1 row inserted/updated/deleted
+ij> select i + j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select i - j - j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select j + j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select j * j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> insert into smallint_s values (-32768, 0);
+1 row inserted/updated/deleted
+ij> select -i from smallint_s;
+1     
+------
+-1    
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- test mixed types: int and smallint
+create table smallint_r (y smallint);
+0 rows inserted/updated/deleted
+ij> insert into smallint_r values (2);
+1 row inserted/updated/deleted
+ij> select 65535 + y from smallint_r;
+1          
+-----------
+65537      
+ij> select y + 65535 from smallint_r;
+1          
+-----------
+65537      
+ij> select 65535 - y from smallint_r;
+1          
+-----------
+65533      
+ij> select y - 65535 from smallint_r;
+1          
+-----------
+-65533     
+ij> select 65535 * y from smallint_r;
+1          
+-----------
+131070     
+ij> select y * 65535 from smallint_r;
+1          
+-----------
+131070     
+ij> select 65535 / y from smallint_r;
+1          
+-----------
+32767      
+ij> select y / 65535 from smallint_r;
+1          
+-----------
+0          
+ij> -- do the same thing with bigints
+create table bigint_t (i bigint, j bigint);
+0 rows inserted/updated/deleted
+ij> create table bigint_s (i bigint, j bigint);
+0 rows inserted/updated/deleted
+ij> insert into bigint_t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into bigint_t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into bigint_t values (1, 101);
+1 row inserted/updated/deleted
+ij> insert into bigint_t values (-2, -102);
+1 row inserted/updated/deleted
+ij> select i + j from bigint_t;
+1                   
+--------------------
+NULL                
+100                 
+102                 
+-104                
+ij> select i, j, i + i + j, j + j + i from bigint_t;
+I                   |J                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |100                 |100                 |200                 
+1                   |101                 |103                 |203                 
+-2                  |-102                |-106                |-206                
+ij> select i - j, j - i from bigint_t;
+1                   |2                   
+-----------------------------------------
+NULL                |NULL                
+-100                |100                 
+-100                |100                 
+100                 |-100                
+ij> select i, i - j - j, j - j - i, j, j - i - i, i - i - j from bigint_t;
+I                   |2                   |3                   |J                   |5                   |6                   
+-----------------------------------------------------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                |NULL                |NULL                
+0                   |-200                |0                   |100                 |100                 |-100                
+1                   |-201                |-1                  |101                 |99                  |-101                
+-2                  |202                 |2                   |-102                |-98                 |102                 
+ij> select i, j, i * j, j * i from bigint_t;
+I                   |J                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |100                 |0                   |0                   
+1                   |101                 |101                 |101                 
+-2                  |-102                |204                 |204                 
+ij> select i, j, i * i * (i - j), j * i * (i - j) from bigint_t;
+I                   |J                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |100                 |0                   |0                   
+1                   |101                 |-100                |-10100              
+-2                  |-102                |400                 |20400               
+ij> select -i, -j, -(i * i * (i - j)), -(j * i * (i - j)) from bigint_t;
+1                   |2                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |-100                |0                   |0                   
+-1                  |-101                |100                 |10100               
+2                   |102                 |-400                |-20400              
+ij> -- test for divide by 0
+select j / i from bigint_t;
+1                   
+--------------------
+NULL                
+ERROR 22012: Attempt to divide by zero.
+ij> -- test for overflow
+insert into bigint_s values (1, 9223372036854775807);
+1 row inserted/updated/deleted
+ij> select i + j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select i - j - j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select j + j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select j * j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select 2 * (9223372036854775807 / 2 + 1) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select -2 * (9223372036854775807 / 2 + 2) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select 2 * (-9223372036854775808 / 2 - 1) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select -2 * (-9223372036854775808 / 2 - 1) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> insert into bigint_s values (-9223372036854775808, 0);
+1 row inserted/updated/deleted
+ij> select -i from bigint_s;
+1                   
+--------------------
+-1                  
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select -j from bigint_s;
+1                   
+--------------------
+-9223372036854775807
+0                   
+ij> select i / 2 * 2 + 1 from bigint_s;
+1                   
+--------------------
+1                   
+-9223372036854775807
+ij> select j / 2 * 2 from bigint_s;
+1                   
+--------------------
+9223372036854775806 
+0                   
+ij> -- test mixed types: int and bigint
+create table bigint_r (y bigint);
+0 rows inserted/updated/deleted
+ij> insert into bigint_r values (2);
+1 row inserted/updated/deleted
+ij> select 2147483647 + y from bigint_r;
+1                   
+--------------------
+2147483649          
+ij> select y + 2147483647 from bigint_r;
+1                   
+--------------------
+2147483649          
+ij> select 2147483647 - y from bigint_r;
+1                   
+--------------------
+2147483645          
+ij> select y - 2147483647 from bigint_r;
+1                   
+--------------------
+-2147483645         
+ij> select 2147483647 * y from bigint_r;
+1                   
+--------------------
+4294967294          
+ij> select y * 2147483647 from bigint_r;
+1                   
+--------------------
+4294967294          
+ij> select 2147483647 / y from bigint_r;
+1                   
+--------------------
+1073741823          
+ij> select y / 2147483647 from bigint_r;
+1                   
+--------------------
+0                   
+ij> -- test precedence and associativity
+create table r (x int);
+0 rows inserted/updated/deleted
+ij> insert into r values (1);
+1 row inserted/updated/deleted
+ij> select 2 + 3 * 4 from r;
+1          
+-----------
+14         
+ij> select (2 + 3) * 4 from r;
+1          
+-----------
+20         
+ij> select 3 * 4 + 2 from r;
+1          
+-----------
+14         
+ij> select 3 * (4 + 2) from r;
+1          
+-----------
+18         
+ij> select 2 - 3 * 4 from r;
+1          
+-----------
+-10        
+ij> select (2 - 3) * 4 from r;
+1          
+-----------
+-4         
+ij> select 3 * 4 - 2 from r;
+1          
+-----------
+10         
+ij> select 3 * (4 - 2) from r;
+1          
+-----------
+6          
+ij> select 4 + 3 / 2 from r;
+1          
+-----------
+5          
+ij> select (4 + 3) / 2 from r;
+1          
+-----------
+3          
+ij> select 3 / 2 + 4 from r;
+1          
+-----------
+5          
+ij> select 3 / (2 + 4) from r;
+1          
+-----------
+0          
+ij> select 4 - 3 / 2 from r;
+1          
+-----------
+3          
+ij> select (4 - 3) / 2 from r;
+1          
+-----------
+0          
+ij> -- + and - are of equal precedence, so they should be evaluated left to right
+-- The result is the same regardless of order of evaluation, so test it
+-- by causing an overflow.  The first test should get an overflow, and the
+-- second one shouldn't.
+select 1 + 2147483647 - 2 from r;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select 1 + (2147483647 - 2) from r;
+1          
+-----------
+2147483646 
+ij> select 4 * 3 / 2 from r;
+1          
+-----------
+6          
+ij> select 4 * (3 / 2) from r;
+1          
+-----------
+4          
+ij> -- Test associativity of unary - versus the binary operators
+select -1 + 2 from r;
+1          
+-----------
+1          
+ij> select -(1 + 2) from r;
+1          
+-----------
+-3         
+ij> select -1 - 2 from r;
+1          
+-----------
+-3         
+ij> select -(1 - 2) from r;
+1          
+-----------
+1          
+ij> -- The test the associativity of unary - with respect to binary *, we must
+-- use a trick.  The value -1073741824 is the minimum integer divided by 2.
+-- So, 1073741824 * 2 will overflow, but (-1073741824) * 2 will not (because
+-- of two's complement arithmetic.
+select -1073741824 * 2 from r;
+1          
+-----------
+-2147483648
+ij> select -(1073741824 * 2) from r;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- This should not get an overflow
+select -2147483648 / 2 from r;
+1          
+-----------
+-1073741824
+ij> -- arithmetic on a numeric data type
+create table u (c1 int, c2 char(10));
+0 rows inserted/updated/deleted
+ij> insert into u (c2) values 'asdf';
+1 row inserted/updated/deleted
+ij> insert into u (c1) values null;
+1 row inserted/updated/deleted
+ij> insert into u (c1) values 1;
+1 row inserted/updated/deleted
+ij> insert into u (c1) values null;
+1 row inserted/updated/deleted
+ij> insert into u (c1) values 2;
+1 row inserted/updated/deleted
+ij> select c1 + c1 from u;
+1          
+-----------
+NULL       
+NULL       
+2          
+NULL       
+4          
+ij> select c1 / c1 from u;
+1          
+-----------
+NULL       
+NULL       
+1          
+NULL       
+1          
+ij> -- arithmetic between a numeric and a string data type fails
+select c1 + c2 from u;
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> -- clean up after ourselves
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> drop table r;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> drop table smallint_t;
+0 rows inserted/updated/deleted
+ij> drop table smallint_s;
+0 rows inserted/updated/deleted
+ij> drop table smallint_r;
+0 rows inserted/updated/deleted
+ij> drop table bigint_t;
+0 rows inserted/updated/deleted
+ij> drop table bigint_s;
+0 rows inserted/updated/deleted
+ij> drop table bigint_r;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/authorize.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/authorize.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,624 @@
+ij> --
+-- Create a database with a table and some data.
+--
+connect 'authorize;create=true' as c1;
+ij> create table AUTH_TEST.t1 (a int);
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION AUTH_TEST.resourcefile(packageName VARCHAR(50), resourceName VARCHAR(50), outputFileName VARCHAR(50)) 
+       RETURNS VARCHAR(3200) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.DbFile.mkFileFromResource' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> -- need two procedures to run this test, otherwise the read-only connection
+-- is not even alowed to call a MODIFIES SQL DATA procedure.
+create procedure AUTH_TEST.verifyAccessRW(P1 INT) MODIFIES SQL DATA external name 'org.apache.derbyTesting.functionTests.util.T_Authorize.verifyAccessRW' language java parameter style java;
+0 rows inserted/updated/deleted
+ij> create procedure AUTH_TEST.verifyAccessRO(P1 INT) READS SQL DATA external name 'org.apache.derbyTesting.functionTests.util.T_Authorize.verifyAccessRO' language java parameter style java;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION AUTH_TEST.getPermission(userName VARCHAR(50)) 
+       RETURNS VARCHAR(22) EXTERNAL NAME 'org.apache.derby.database.UserUtility.getPermission' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE AUTH_TEST.addUserUtility(IN userName VARCHAR(50), IN permission VARCHAR(22)) 
+       LANGUAGE JAVA PARAMETER STYLE JAVA
+       EXTERNAL NAME 'org.apache.derby.database.UserUtility.add';
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE AUTH_TEST.setUserUtility(IN userName VARCHAR(50), IN permission VARCHAR(22)) 
+       LANGUAGE JAVA PARAMETER STYLE JAVA
+       EXTERNAL NAME 'org.apache.derby.database.UserUtility.set';
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE AUTH_TEST.dropUserUtility(IN userName VARCHAR(50)) 
+       LANGUAGE JAVA PARAMETER STYLE JAVA
+       EXTERNAL NAME 'org.apache.derby.database.UserUtility.drop';
+0 rows inserted/updated/deleted
+ij> --
+-- Add a jar file for use in verification that jar replace and drop are not
+-- allowed in a read only connection.
+call sqlj.install_jar(AUTH_TEST.resourcefile('org.apache.derbyTesting.functionTests.testData.v1','j1v1.jar','extinout/j1v1.jar'),
+				'APP.IMMUTABLE', 0);
+0 rows inserted/updated/deleted
+ij> --
+-- Configure the database with an invalid default connection mode (should fail);
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','AsDf');
+ERROR 28501: Invalid database authorization property 'derby.database.defaultConnectionMode=AsDf'.
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> --
+-- Add a bad list of read only users (should fail).
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers','fred,0IsABadFirstLetter');
+ERROR 28501: Invalid database authorization property 'derby.database.readOnlyAccessUsers=fred,0IsABadFirstLetter'.
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> --
+-- Add a bad list of full access users (should fail).
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers','fred,0IsABadFirstLetter');
+ERROR 28501: Invalid database authorization property 'derby.database.fullAccessUsers=fred,0IsABadFirstLetter'.
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> --
+-- Connect and verify the user had full access.
+connect 'authorize' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRW(1);
+0 rows inserted/updated/deleted
+ij(C2)> disconnect;
+ij> --
+-- Configure the database to disallow access by unknown users
+--
+set connection c1;
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','NoAcCeSs');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NoAcCeSs                                                                                                                        
+ij> --
+-- Connect as an unknown user (Should fail)
+--
+connect 'authorize' user 'fred';
+ERROR 04501: Database connection refused.
+ij> --
+-- Connect as a user with an invalid name (Should fail)
+--
+connect 'authorize' user '!amber' as c2;
+ERROR 28502: The user name '!amber' is not valid. 
+ij> --
+-- Connect as a known user with a delimited name that is
+-- only valid if it is delimited (Should fail)
+--
+connect 'authorize' user '"!amber"' as c2;
+ERROR 04501: Database connection refused.
+ij> --
+-- Delete the defaultAccessMode property. Verify unknown users
+-- have full access.
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode',null);
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> connect 'authorize' user '"!amber"' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRW(2);
+0 rows inserted/updated/deleted
+ij(C2)> disconnect;
+ij> --
+-- Configure the database to allow full access by unknown users
+-- and verify an unknown user has full access.
+set connection c1;
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','fullACCESS');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+fullACCESS                                                                                                                      
+ij> connect 'authorize' user '"!amber"' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRW(3);
+0 rows inserted/updated/deleted
+ij(C2)> --
+-- Configure the database to allow readOnly access by unknown
+-- users. Verify existing connections by unknow users retain 
+-- thier full access.
+set connection c1;
+ij(C1)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','readOnlyACCESS');
+0 rows inserted/updated/deleted
+ij(C1)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+readOnlyACCESS                                                                                                                  
+ij(C1)> set connection c2;
+ij(C2)> call AUTH_TEST.verifyAccessRW(4);
+0 rows inserted/updated/deleted
+ij(C2)> disconnect;
+ij> --
+-- Connect as an unknown user and verify that the connection has
+-- readOnly access.
+connect 'authorize' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRO(5);
+0 rows inserted/updated/deleted
+ij(C2)> disconnect;
+ij> --
+-- Configure the database to have some read only and full access
+-- users. 
+--
+set connection c1;
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','NoACCESS');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NoACCESS                                                                                                                        
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers','fullUser1,"***both","aaa-differByCase"');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+fullUser1,"***both","aaa-differByCase"                                                                                          
+ij> -- The following should fail as user '***both' can only be in 1 list
+-- and it is already defined in the fullAccess users list.
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers','readUser1,"***both","AAA-differByCase"');
+ERROR 28503: User(s) '"***both"' must not be in both read-only and full-access authorization lists.
+ij> -- This should succeed
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers','readUser1,"AAA-differByCase"');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+readUser1,"AAA-differByCase"                                                                                                    
+ij> --
+-- Connect as an unknown user - due to case error (should fail);
+connect 'authorize' user '"fulluser1"';
+ERROR 04501: Database connection refused.
+ij> --
+-- Connect as a read only user and verify access
+-- Verify the user can't elevate to full access.
+connect 'authorize' user 'readUser1' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRO(6);
+0 rows inserted/updated/deleted
+ij(C2)> readonly off;
+ERROR 25505: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
+ij(C2)> call AUTH_TEST.verifyAccessRO(7);
+0 rows inserted/updated/deleted
+ij(C2)> --
+-- Connect as a full user and verify access.
+--
+connect 'authorize' user '"aaa-differByCase"' as c3;
+ij(C3)> call AUTH_TEST.verifyAccessRW(8);
+0 rows inserted/updated/deleted
+ij(C3)> --
+-- Verify the full user can set her connection to readonly 
+-- and back.
+readonly on;
+ij(C3)> call AUTH_TEST.verifyAccessRO(9);
+0 rows inserted/updated/deleted
+ij(C3)> readonly off;
+ij(C3)> call AUTH_TEST.verifyAccessRW(10);
+0 rows inserted/updated/deleted
+ij(C3)> --
+-- Configure the database to have some full users and all unknown
+-- users granted read access.
+disconnect;
+ij> set connection c2;
+ij(C2)> disconnect;
+ij> set connection c1;
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','readOnlyACCESS');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+readOnlyACCESS                                                                                                                  
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers','fullUser1,"***both","aaa-differByCase"');
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+fullUser1,"***both","aaa-differByCase"                                                                                          
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers',null);
+0 rows inserted/updated/deleted
+ij> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> --
+-- Connect as a guest user (name differs from a full user by case)
+connect 'authorize' user '"fulluser1"' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRO(11);
+0 rows inserted/updated/deleted
+ij(C2)> readonly off;
+ERROR 25505: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.
+ij(C2)> readonly on;
+ij(C2)> disconnect;
+ij> --
+-- Connect as a full user and verify we can do it all
+connect 'authorize' user 'fulluser1' as c2;
+ij(C2)> call AUTH_TEST.verifyAccessRW(12);
+0 rows inserted/updated/deleted
+ij(C2)> readonly on;
+ij(C2)> call AUTH_TEST.verifyAccessRO(13);
+0 rows inserted/updated/deleted
+ij(C2)> readonly off;
+ij(C2)> call AUTH_TEST.verifyAccessRW(14);
+0 rows inserted/updated/deleted
+ij(C2)> --
+-- Verfify we cannot set the readonly state in an active connection.
+autocommit off;
+ij(C2)> insert into AUTH_TEST.t1 values 1,2;
+2 rows inserted/updated/deleted
+ij(C2)> readonly off;
+ERROR 25501: Unable to set the connection read only property in an active transaction.
+ij(C2)> readonly on;
+ERROR 25501: Unable to set the connection read only property in an active transaction.
+ij(C2)> rollback;
+ij(C2)> autocommit on;
+ij(C2)> --
+-- Verify a read only user can perform a query that uses a
+-- temp table. 
+insert into AUTH_TEST.t1 values 1,2,3,4,5,6,7;
+7 rows inserted/updated/deleted
+ij(C2)> insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+7 rows inserted/updated/deleted
+ij(C2)> insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+14 rows inserted/updated/deleted
+ij(C2)> insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+28 rows inserted/updated/deleted
+ij(C2)> insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+56 rows inserted/updated/deleted
+ij(C2)> readonly on;
+ij(C2)> select * from AUTH_TEST.t1 order by a;
+A          
+-----------
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+1          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+2          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+3          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+4          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+5          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+6          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+7          
+ij(C2)> readonly off;
+ij(C2)> delete from AUTH_TEST.t1;
+112 rows inserted/updated/deleted
+ij(C2)> --
+-- Remove all the authorization properties to prepare to test
+-- the UserUtility.
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode',null);
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers',null);
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers',null);
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> --
+-- Verify external scalar function getPermission works with no users.
+values AUTH_TEST.getPermission('myFriend');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> --
+-- Verify external scalar function getPermission notices when it is
+-- called with a bad id. (should fail.)
+values AUTH_TEST.getPermission('***badId');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+ERROR XCZ02: Invalid parameter 'userName'='***badId'.
+ERROR XCXA0: Invalid identifier.
+ij(C2)> values AUTH_TEST.getPermission(null);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+ERROR XCZ02: Invalid parameter 'userName'='null'.
+ij(C2)> --
+-- Verify external scalar function addUserUtility reports an error when called with
+-- a bad user, a null user and a bad permission mode and a
+-- null permission mode.
+call AUTH_TEST.addUserUtility('***badId','READ_ACCESS_PERMISSION');
+ERROR XCZ02: Invalid parameter 'userName'='***badId'.
+ERROR XCXA0: Invalid identifier.
+ij(C2)> call AUTH_TEST.addUserUtility(null,'READ_ACCESS_PERMISSION');
+ERROR XCZ02: Invalid parameter 'userName'='null'.
+ij(C2)> call AUTH_TEST.addUserUtility('goodUser','badPermission');
+ERROR XCZ00: Unknown permission 'badPermission'.
+ij(C2)> call AUTH_TEST.addUserUtility('goodUser',null);
+ERROR XCZ02: Invalid parameter 'permission'='null'.
+ij(C2)> --
+-- Add 3 read access users with quoted names and verify they are added.
+-- As a negative test we add each user twice
+call AUTH_TEST.addUserUtility('"dAda"','READ_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.addUserUtility('"dAda"','READ_ACCESS_PERMISSION');
+ERROR 28504: Repeated user(s) '"dAda"' in access list 'derby.database.readOnlyAccessUsers';
+ij(C2)> call AUTH_TEST.addUserUtility('"bUnny"','READ_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.addUserUtility('"bUnny"','READ_ACCESS_PERMISSION');
+ERROR 28504: Repeated user(s) '"bUnny"' in access list 'derby.database.readOnlyAccessUsers';
+ij(C2)> call AUTH_TEST.addUserUtility('"jAmes"','READ_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.addUserUtility('"jAmes"','READ_ACCESS_PERMISSION');
+ERROR 28504: Repeated user(s) '"jAmes"' in access list 'derby.database.readOnlyAccessUsers';
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+"dAda","bUnny","jAmes"                                                                                                          
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> --
+-- Verify external scalar function setUserUtility reports an error when called with
+-- a bad user, a null user, a missing user a bad permission 
+-- mode and a null permission mode.
+call AUTH_TEST.setUserUtility('***badId','READ_ACCESS_PERMISSION');
+ERROR XCZ02: Invalid parameter 'userName'='***badId'.
+ERROR XCXA0: Invalid identifier.
+ij(C2)> call AUTH_TEST.setUserUtility(null,'READ_ACCESS_PERMISSION');
+ERROR XCZ02: Invalid parameter 'userName'='null'.
+ij(C2)> call AUTH_TEST.setUserUtility('missingUser','FULL_ACCESS_PERMISSION');
+ERROR XCZ01: Unknown user 'missingUser'.
+ij(C2)> call AUTH_TEST.setUserUtility('"jAmes"','badPermission');
+ERROR XCZ00: Unknown permission 'badPermission'.
+ij(C2)> call AUTH_TEST.setUserUtility('"jAmes"',null);
+ERROR XCZ02: Invalid parameter 'permission'='null'.
+ij(C2)> --
+-- Get the access level for our users
+values AUTH_TEST.getPermission('"dAda"');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+READ_ACCESS_PERMISSION                                                                                                          
+ij(C2)> values AUTH_TEST.getPermission('"DADA"');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> --wrong case
+values AUTH_TEST.getPermission('"bUnny"');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+READ_ACCESS_PERMISSION                                                                                                          
+ij(C2)> values AUTH_TEST.getPermission('"dAda"');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+READ_ACCESS_PERMISSION                                                                                                          
+ij(C2)> --
+-- Set all our read access users to full access users twice.
+call AUTH_TEST.setUserUtility('"dAda"','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.setUserUtility('"dAda"','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.setUserUtility('"bUnny"','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.setUserUtility('"bUnny"','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.setUserUtility('"jAmes"','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.setUserUtility('"jAmes"','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+"dAda","bUnny","jAmes"                                                                                                          
+ij(C2)> --
+-- Verify external scalar function dropUserUtility reports an error when called with
+-- a bad user, a null user, a missing user.
+call AUTH_TEST.dropUserUtility('***badId');
+ERROR XCZ02: Invalid parameter 'userName'='***badId'.
+ERROR XCXA0: Invalid identifier.
+ij(C2)> call AUTH_TEST.dropUserUtility(null);
+ERROR XCZ02: Invalid parameter 'userName'='null'.
+ij(C2)> call AUTH_TEST.dropUserUtility('missingUser');
+ERROR XCZ01: Unknown user 'missingUser'.
+ij(C2)> --
+-- Drop each user twice
+call AUTH_TEST.dropUserUtility('"dAda"');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.dropUserUtility('"dAda"');
+ERROR XCZ01: Unknown user '"dAda"'.
+ij(C2)> call AUTH_TEST.dropUserUtility('"bUnny"');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.dropUserUtility('"bUnny"');
+ERROR XCZ01: Unknown user '"bUnny"'.
+ij(C2)> call AUTH_TEST.dropUserUtility('"jAmes"');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.dropUserUtility('"jAmes"');
+ERROR XCZ01: Unknown user '"jAmes"'.
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> --
+-- Add set and drop some users with names that
+-- are not delimited.
+call AUTH_TEST.addUserUtility('dada','READ_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.addUserUtility('DADA','READ_ACCESS_PERMISSION');
+ERROR 28504: Repeated user(s) '"DADA"' in access list 'derby.database.readOnlyAccessUsers';
+ij(C2)> -- duplicate
+call AUTH_TEST.addUserUtility('bunny','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.addUserUtility('james','FULL_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+dada                                                                                                                            
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+bunny,james                                                                                                                     
+ij(C2)> call AUTH_TEST.setUserUtility('BUNNY','READ_ACCESS_PERMISSION');
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+dada,BUNNY                                                                                                                      
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+james                                                                                                                           
+ij(C2)> values AUTH_TEST.getPermission('dAda');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+READ_ACCESS_PERMISSION                                                                                                          
+ij(C2)> values AUTH_TEST.getPermission('bunny');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+READ_ACCESS_PERMISSION                                                                                                          
+ij(C2)> values AUTH_TEST.getPermission('jaMes');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+FULL_ACCESS_PERMISSION                                                                                                          
+ij(C2)> call AUTH_TEST.dropUserUtility('dada');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.dropUserUtility('bunny');
+0 rows inserted/updated/deleted
+ij(C2)> call AUTH_TEST.dropUserUtility('jaMes');
+0 rows inserted/updated/deleted
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij(C2)> -- clean up
+drop function AUTH_TEST.getPermission;
+0 rows inserted/updated/deleted
+ij(C2)> drop procedure AUTH_TEST.verifyAccessRW;
+0 rows inserted/updated/deleted
+ij(C2)> drop procedure AUTH_TEST.verifyAccessRO;
+0 rows inserted/updated/deleted
+ij(C2)> drop procedure AUTH_TEST.setUserUtility;
+0 rows inserted/updated/deleted
+ij(C2)> drop procedure AUTH_TEST.addUserUtility;
+0 rows inserted/updated/deleted
+ij(C2)> drop procedure AUTH_TEST.dropUserUtility;
+0 rows inserted/updated/deleted
+ij(C2)> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/autoincrement.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/autoincrement.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1377 @@
+ij> -- Adding new testcases for DB2 syntax "GENERATED ALWAYS AS IDENTITY"
+-- We don't enhance "ALTER TABLE <T> MODIFY COLUMN" yet: DB2 uses "ALTER TABLE <T> ALTER COLUMN..."
+-- try generated  values with all types.
+-- Cloudscape specific syntax for the autoincrement clause can be found in store/bug3498.sql
+create table ai_zero (i int, a_zero int generated always as identity);
+0 rows inserted/updated/deleted
+ij> create table ai_one (i int, a_one smallint generated always as identity);
+0 rows inserted/updated/deleted
+ij> create table ai_two (i int, a_two int generated always as identity);
+0 rows inserted/updated/deleted
+ij> create table ai_three (i int, a_three int generated always as identity);
+0 rows inserted/updated/deleted
+ij> select COLUMNNAME, AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME in ('A_ZERO', 'A_ONE', 'A_TWO', 'A_THREE');
+COLUMNNAME                                                                                                                      |AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+A_ZERO                                                                                                                          |1                   |1                   |1                   
+A_ONE                                                                                                                           |1                   |1                   |1                   
+A_TWO                                                                                                                           |1                   |1                   |1                   
+A_THREE                                                                                                                         |1                   |1                   |1                   
+ij> drop table ai_zero;
+0 rows inserted/updated/deleted
+ij> drop table ai_one;
+0 rows inserted/updated/deleted
+ij> drop table ai_two;
+0 rows inserted/updated/deleted
+ij> drop table ai_three;
+0 rows inserted/updated/deleted
+ij> -- try a generated column spec with initial and start values.
+create table ai (i  int, autoinc int generated always as identity (start with 100));
+0 rows inserted/updated/deleted
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AUTOINC';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+100                 |100                 |1                   
+ij> drop table ai;
+0 rows inserted/updated/deleted
+ij> create table ai (i int, autoinc int generated always as identity (increment by 100));
+0 rows inserted/updated/deleted
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AUTOINC';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+1                   |1                   |100                 
+ij> drop table ai;
+0 rows inserted/updated/deleted
+ij> create table ai (i int, 
+				 autoinc int generated always as identity (start with 101, increment by 100));
+0 rows inserted/updated/deleted
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AUTOINC';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+101                 |101                 |100                 
+ij> drop table ai;
+0 rows inserted/updated/deleted
+ij> -- try -ive numbers.
+create table ai1 (i int, 
+				  a1 int generated always as identity (start with  0, increment by -1));
+0 rows inserted/updated/deleted
+ij> create table ai2 (i int, 
+				  a2 int generated always as identity (start with  +0, increment by -1));
+0 rows inserted/updated/deleted
+ij> create table ai3 (i int, 
+				  a3 int generated always as identity (start with  -1, increment by -1));
+0 rows inserted/updated/deleted
+ij> create table ai4 (i int, 
+				  a4 int generated always as identity (start with  -11, increment by +100));
+0 rows inserted/updated/deleted
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A1';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+0                   |0                   |-1                  
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A2';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+0                   |0                   |-1                  
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A3';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+-1                  |-1                  |-1                  
+ij> select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A4';
+AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+--------------------------------------------------------------
+-11                 |-11                 |100                 
+ij> drop table ai1;
+0 rows inserted/updated/deleted
+ij> drop table ai2;
+0 rows inserted/updated/deleted
+ij> drop table ai3;
+0 rows inserted/updated/deleted
+ij> drop table ai4;
+0 rows inserted/updated/deleted
+ij> -- **** simple increment tests.
+create table ai_short (i int, 
+				       ais smallint generated always as identity (start with 0, increment by 2));
+0 rows inserted/updated/deleted
+ij> insert into ai_short (i) values (0);
+1 row inserted/updated/deleted
+ij> insert into ai_short (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_short (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into ai_short (i) values (3);
+1 row inserted/updated/deleted
+ij> select * from ai_short;
+I          |AIS   
+------------------
+0          |0     
+1          |2     
+2          |4     
+3          |6     
+ij> select COLUMNNAME, AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AIS';
+COLUMNNAME                                                                                                                      |AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+AIS                                                                                                                             |8                   |0                   |2                   
+ij> drop table ai_short;
+0 rows inserted/updated/deleted
+ij> -- table with more than one generated column spec should fail
+create table ai_multiple (i int, 
+						  a0 int generated always as identity (start with  -1,
+												    increment by -1),
+						  a1 smallint generated always as identity,
+						  a2 int generated always as identity (start with  0),
+						  a3 bigint generated always as identity (start with  -100,
+													increment by 10));
+ERROR 428C1: Only one identity column is allowed in a table.
+ij> -- table with one generated column spec should succeed
+create table ai_single1 (i int, a0 int generated always as identity 
+									(start with  -1, increment by -1));
+0 rows inserted/updated/deleted
+ij> create table ai_single2 (i int, a1 smallint generated always as identity);
+0 rows inserted/updated/deleted
+ij> create table ai_single3 (i int, a2 int generated always as identity 
+									(start with 0));
+0 rows inserted/updated/deleted
+ij> create table ai_single4 (i int, a3 bigint generated always as identity 
+								        (start with  -100, increment by 10));
+0 rows inserted/updated/deleted
+ij> insert into ai_single1 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (3);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (4);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (5);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (6);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (7);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (8);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (9);
+1 row inserted/updated/deleted
+ij> insert into ai_single1 (i) values (10);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (3);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (4);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (5);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (6);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (7);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (8);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (9);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (10);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (3);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (4);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (5);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (6);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (7);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (8);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (9);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (10);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (3);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (4);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (5);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (6);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (7);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (8);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (9);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (10);
+1 row inserted/updated/deleted
+ij> select a.i, a0, a1, a2, a3 from ai_single1 a 
+       join ai_single2 b on a.i = b.i 
+       join ai_single3 c on a.i = c.i 
+       join ai_single4 d on a.i = d.i;
+I          |A0         |A1    |A2         |A3                  
+---------------------------------------------------------------
+1          |-1         |1     |0          |-100                
+2          |-2         |2     |1          |-90                 
+3          |-3         |3     |2          |-80                 
+4          |-4         |4     |3          |-70                 
+5          |-5         |5     |4          |-60                 
+6          |-6         |6     |5          |-50                 
+7          |-7         |7     |6          |-40                 
+8          |-8         |8     |7          |-30                 
+9          |-9         |9     |8          |-20                 
+10         |-10        |10    |9          |-10                 
+ij> delete from ai_single1;
+10 rows inserted/updated/deleted
+ij> delete from ai_single2;
+10 rows inserted/updated/deleted
+ij> delete from ai_single3;
+10 rows inserted/updated/deleted
+ij> delete from ai_single4;
+10 rows inserted/updated/deleted
+ij> insert into ai_single1 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single2 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single3 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai_single4 (i) values (1);
+1 row inserted/updated/deleted
+ij> select a.i, a0, a1, a2, a3 from ai_single1 a 
+       join ai_single2 b on a.i = b.i 
+       join ai_single3 c on a.i = c.i 
+       join ai_single4 d on a.i = d.i;
+I          |A0         |A1    |A2         |A3                  
+---------------------------------------------------------------
+1          |-11        |11    |10         |0                   
+ij> -- clean up
+drop table ai_single1;
+0 rows inserted/updated/deleted
+ij> drop table ai_single2;
+0 rows inserted/updated/deleted
+ij> drop table ai_single3;
+0 rows inserted/updated/deleted
+ij> drop table ai_single4;
+0 rows inserted/updated/deleted
+ij> -- **** connection info tests {basic ones}
+create table ai_test (x int generated always as identity (start with 2, increment by 2),
+					  y int);
+0 rows inserted/updated/deleted
+ij> insert into ai_test (y) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+10 rows inserted/updated/deleted
+ij> -- should see 20.
+values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+0                              
+ij> insert into ai_test (y) select y+10 from ai_test;
+10 rows inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+0                              
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+0                              
+ij> -- try some more connection info tests
+create table ai_single1 (c char(100), a_odd int generated always as identity (start with 1, increment by 2));
+0 rows inserted/updated/deleted
+ij> create table ai_single2 (c char(100), a_even int generated always as identity (start with 0, increment by 2));
+0 rows inserted/updated/deleted
+ij> create table ai_single3 (c char(100), a_sum bigint generated always as identity (start with 1, increment by 2));
+0 rows inserted/updated/deleted
+ij> insert into ai_single1 (c) values ('a');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+1                              
+ij> insert into ai_single2 (c) values ('a');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+0                              
+ij> insert into ai_single3 (c) values ('a');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+1                              
+ij> insert into ai_single1 (c) values ('b');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+3                              
+ij> insert into ai_single2 (c) values ('b');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> insert into ai_single3 (c) values ('b');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+3                              
+ij> drop table ai_single1;
+0 rows inserted/updated/deleted
+ij> drop table ai_single2;
+0 rows inserted/updated/deleted
+ij> drop table ai_single3;
+0 rows inserted/updated/deleted
+ij> drop table ai_test;
+0 rows inserted/updated/deleted
+ij> -- nested, nested, nested stuff.
+-- t1 --> trigger --> insert into t2 
+-- insert row into t1.
+-- I can get lastAutoincrementValue for t1 but not t2.
+create table t1 (c1 int generated always as identity, name char(32));
+0 rows inserted/updated/deleted
+ij> create table t2 (c2 int generated always as identity, name char(32));
+0 rows inserted/updated/deleted
+ij> create trigger insert_trigger after insert on t1 for each row mode db2sql
+	   insert into t2 (name) values ('Bob Finocchio');
+0 rows inserted/updated/deleted
+ij> insert into t1 (name) values ('Phil White');
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |NAME                            
+--------------------------------------------
+1          |Phil White                      
+ij> select * from t2;
+C2         |NAME                            
+--------------------------------------------
+1          |Bob Finocchio                   
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+1                              
+ij> insert into t2 (name) values ('Jean-Yves Dexemier');
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> -- insert into multiple tables in different schema names with same tablename,column names
+-- make sure 
+-- lastAutoincrementValue shouldn't get confused.....
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- APP.TAB1.A1 ==> -1,-2,-3
+-- APP.TAB1.A2 ==> 1,2,3
+-- APP.TAB2.A1 ==> 0,-2,-4
+-- APP.TAB3.A2 ==> 0,2,4
+create table tab1 (i int, a1 int generated always as identity (start with -1, increment by -1));
+0 rows inserted/updated/deleted
+ij> create table tab2 (i int, a2 smallint generated always as identity (start with 1, increment by +1));
+0 rows inserted/updated/deleted
+ij> create table tab3 (i int, a1 int generated always as identity (start with 0, increment by -2));
+0 rows inserted/updated/deleted
+ij> create table tab4 (i int, a2 bigint generated always as identity (start with 0, increment by 2));
+0 rows inserted/updated/deleted
+ij> create schema BPP;
+0 rows inserted/updated/deleted
+ij> set schema BPP;
+0 rows inserted/updated/deleted
+ij> -- BPP.TAB1.A1 ==> 100,101,102
+-- BPP.TAB2.A2 ==> 100,99,98
+-- BPP.TAB3.A1 ==> 100,102,104
+-- BPP.TAB4.A2 ==> 100,98,96
+create table tab1 (i int, a1 int generated always as identity (start with 100, increment by 1));
+0 rows inserted/updated/deleted
+ij> create table tab2 (i int, a2 bigint generated always as identity (start with 100, increment by -1));
+0 rows inserted/updated/deleted
+ij> create table tab3 (i int, a1 int generated always as identity (start with 100, increment by 2));
+0 rows inserted/updated/deleted
+ij> create table tab4 (i int, a2 smallint generated always as identity (start with 100, increment by -2));
+0 rows inserted/updated/deleted
+ij> insert into APP.tab1 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into APP.tab2 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into APP.tab3 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into APP.tab4 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into tab1 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into tab1 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into tab2 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into tab2 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into tab3 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into tab3 (i) values (2);
+1 row inserted/updated/deleted
+ij> insert into tab4 (i) values (1);
+1 row inserted/updated/deleted
+ij> insert into tab4 (i) values (2);
+1 row inserted/updated/deleted
+ij> select a.i, a1, a2 from app.tab1 a join app.tab2 b on a.i = b.i;
+I          |A1         |A2    
+------------------------------
+1          |-1         |1     
+ij> select a.i, a1, a2 from app.tab3 a join app.tab4 b on a.i = b.i;
+I          |A1         |A2                  
+--------------------------------------------
+1          |0          |0                   
+ij> select a.i, a1, a2 from tab1 a join tab2 b on a.i = b.i;
+I          |A1         |A2                  
+--------------------------------------------
+1          |100        |100                 
+2          |101        |99                  
+ij> select a1, a2, a.i from tab3 a join tab4 b on a.i = b.i;
+A1         |A2    |I          
+------------------------------
+100        |100   |1          
+102        |98    |2          
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+98                             
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> drop table bpp.tab1;
+0 rows inserted/updated/deleted
+ij> drop table bpp.tab2;
+0 rows inserted/updated/deleted
+ij> drop table bpp.tab3;
+0 rows inserted/updated/deleted
+ij> drop table bpp.tab4;
+0 rows inserted/updated/deleted
+ij> drop schema bpp restrict;
+0 rows inserted/updated/deleted
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> drop table tab2;
+0 rows inserted/updated/deleted
+ij> drop table tab3;
+0 rows inserted/updated/deleted
+ij> drop table tab4;
+0 rows inserted/updated/deleted
+ij> -- trigger, 
+-- insert into t2
+--         ==> fires trigger which inserts into t1.
+--                      
+create table tab1 (s1 int generated always as identity, 
+				   lvl int);
+0 rows inserted/updated/deleted
+ij> create table tab3 (c1 int);
+0 rows inserted/updated/deleted
+ij> create trigger tab1_after1 after insert on tab3 referencing new as newrow for each row mode db2sql insert into tab1 (lvl) values 1,2,3;
+0 rows inserted/updated/deleted
+ij> insert into tab3 values null;
+1 row inserted/updated/deleted
+ij> select * from tab1;
+S1         |LVL        
+-----------------------
+1          |1          
+2          |2          
+3          |3          
+ij> select b.tablename, a.autoincrementvalue, a.autoincrementstart, a.autoincrementinc from sys.syscolumns a, sys.systables b where a.referenceid=b.tableid and a.columnname ='S1' and b.tablename = 'TAB1';
+TABLENAME                                                                                                                       |AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TAB1                                                                                                                            |4                   |1                   |1                   
+ij> create table tab2 (lvl int, s1  bigint generated always as identity);
+0 rows inserted/updated/deleted
+ij> create trigger tab1_after2 after insert on tab3 referencing new as newrow for each row mode db2sql insert into tab2 (lvl) values 1,2,3;
+0 rows inserted/updated/deleted
+ij> insert into tab3 values null;
+1 row inserted/updated/deleted
+ij> select * from tab2;
+LVL        |S1                  
+--------------------------------
+1          |1                   
+2          |2                   
+3          |3                   
+ij> select b.tablename, a.autoincrementvalue, a.autoincrementstart, a.autoincrementinc from sys.syscolumns a, sys.systables b where a.referenceid=b.tableid and a.columnname ='S1' and b.tablename = 'TAB2';
+TABLENAME                                                                                                                       |AUTOINCREMENTVALUE  |AUTOINCREMENTSTART  |AUTOINCREMENTINC    
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TAB2                                                                                                                            |4                   |1                   |1                   
+ij> -- clean up
+drop trigger tab1_after1;
+0 rows inserted/updated/deleted
+ij> drop trigger tab1_after2;
+0 rows inserted/updated/deleted
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> drop table tab2;
+0 rows inserted/updated/deleted
+ij> drop table tab3;
+0 rows inserted/updated/deleted
+ij> -- some more variations of lastAutoincrementValue....
+-- make sure we don't lose values from previous inserts.
+create table t1 (x int, s1 int generated always as identity);
+0 rows inserted/updated/deleted
+ij> create table t2 (x smallint, s2 int generated always as identity (start with 0));
+0 rows inserted/updated/deleted
+ij> insert into t1 (x) values (1);
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+1                              
+ij> insert into t1 (x) values (2);
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> insert into t2 (x) values (1);
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+0                              
+ij> -- alter table tests.
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t1 (s1 int generated always as identity);
+0 rows inserted/updated/deleted
+ij> alter table t1 add column x int;
+0 rows inserted/updated/deleted
+ij> insert into t1 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> create table t2 (s2 int generated always as identity (start with 2));
+0 rows inserted/updated/deleted
+ij> alter table t2 add column x int;
+0 rows inserted/updated/deleted
+ij> insert into t2 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> create table t3 (s0 int generated always as identity (start with 0));
+0 rows inserted/updated/deleted
+ij> alter table t3 add column x int;
+0 rows inserted/updated/deleted
+ij> insert into t3 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+X          |S1         |S2         |S0         
+-----------------------------------------------
+1          |1          |2          |0          
+2          |2          |3          |1          
+3          |3          |4          |2          
+4          |4          |5          |3          
+5          |5          |6          |4          
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+0                              
+ij> -- test some more generated column specs
+create table trigtest (s1 smallint generated always as identity, lvl int);
+0 rows inserted/updated/deleted
+ij> insert into trigtest (lvl) values (0);
+1 row inserted/updated/deleted
+ij> insert into trigtest (lvl) values (1),(2);
+2 rows inserted/updated/deleted
+ij> insert into trigtest (lvl) values (3),(4);
+2 rows inserted/updated/deleted
+ij> insert into trigtest (lvl) values (5),(6);
+2 rows inserted/updated/deleted
+ij> insert into trigtest (lvl) values (7),(8);
+2 rows inserted/updated/deleted
+ij> select * from trigtest;
+S1    |LVL        
+------------------
+1     |0          
+2     |1          
+3     |2          
+4     |3          
+5     |4          
+6     |5          
+7     |6          
+8     |7          
+9     |8          
+ij> drop table trigtest;
+0 rows inserted/updated/deleted
+ij> select count(*) from t1;
+1          
+-----------
+5          
+ij> select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+X          |S1         |S2         |S0         
+-----------------------------------------------
+1          |1          |2          |0          
+2          |2          |3          |1          
+3          |3          |4          |2          
+4          |4          |5          |3          
+5          |5          |6          |4          
+ij> delete from t1;
+5 rows inserted/updated/deleted
+ij> delete from t2;
+5 rows inserted/updated/deleted
+ij> delete from t3;
+5 rows inserted/updated/deleted
+ij> insert into t1 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> insert into t2 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> insert into t3 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> -- should have started from after the values in t1 due to alter.
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+X          |S1         |S2         |S0         
+-----------------------------------------------
+1          |6          |7          |5          
+2          |7          |8          |6          
+3          |8          |9          |7          
+4          |9          |10         |8          
+5          |10         |11         |9          
+ij> insert into t1 (x) values (6);
+1 row inserted/updated/deleted
+ij> insert into t2 (x) values (6);
+1 row inserted/updated/deleted
+ij> insert into t3 (x) values (6);
+1 row inserted/updated/deleted
+ij> select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+X          |S1         |S2         |S0         
+-----------------------------------------------
+1          |6          |7          |5          
+2          |7          |8          |6          
+3          |8          |9          |7          
+4          |9          |10         |8          
+5          |10         |11         |9          
+6          |11         |12         |10         
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+10                             
+ij> delete from t1;
+6 rows inserted/updated/deleted
+ij> delete from t2;
+6 rows inserted/updated/deleted
+ij> delete from t3;
+6 rows inserted/updated/deleted
+ij> insert into t1 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> insert into t2 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> insert into t3 (x) values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+X          |S1         |S2         |S0         
+-----------------------------------------------
+1          |12         |13         |11         
+2          |13         |14         |12         
+3          |14         |15         |13         
+4          |15         |16         |14         
+5          |16         |17         |15         
+ij> insert into t1 (x) values (6);
+1 row inserted/updated/deleted
+ij> insert into t2 (x) values (6);
+1 row inserted/updated/deleted
+ij> insert into t3 (x) values (6);
+1 row inserted/updated/deleted
+ij> select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+X          |S1         |S2         |S0         
+-----------------------------------------------
+1          |12         |13         |11         
+2          |13         |14         |12         
+3          |14         |15         |13         
+4          |15         |16         |14         
+5          |16         |17         |15         
+6          |17         |18         |16         
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+16                             
+ij> -- make sure we're doing nested xactions to update ai values.
+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> create table t1 (x int, yyy int generated always as identity (start with  0));
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> insert into t1 (x) values (1);
+1 row inserted/updated/deleted
+ij> insert into t1 (x) values (2);
+1 row inserted/updated/deleted
+ij> select * from t1;
+X          |YYY        
+-----------------------
+1          |0          
+2          |1          
+ij> -- should see only locks on t1, no locks on system catalogs.
+select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+TYPE |TABLENAME                                                                                                                       |MODE
+-------------------------------------------------------------------------------------------------------------------------------------------
+ROW  |T1                                                                                                                              |X   
+ROW  |T1                                                                                                                              |X   
+TABLE|T1                                                                                                                              |IX  
+ij> delete from t1;
+2 rows inserted/updated/deleted
+ij> commit;
+ij> -- locks should be gone now.
+select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+TYPE |TABLENAME                                                                                                                       |MODE
+-------------------------------------------------------------------------------------------------------------------------------------------
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> -- this will get a share  lock on syscolumns
+select columnname, autoincrementvalue
+ from sys.syscolumns where columnname = 'YYY';
+COLUMNNAME                                                                                                                      |AUTOINCREMENTVALUE  
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+YYY                                                                                                                             |2                   
+ij> select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+TYPE |TABLENAME                                                                                                                       |MODE
+-------------------------------------------------------------------------------------------------------------------------------------------
+TABLE|SYSCOLUMNS                                                                                                                      |S   
+ij> insert into t1 (x) values (3);
+1 row inserted/updated/deleted
+ij> select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+TYPE |TABLENAME                                                                                                                       |MODE
+-------------------------------------------------------------------------------------------------------------------------------------------
+ROW  |SYSCOLUMNS                                                                                                                      |X   
+TABLE|SYSCOLUMNS                                                                                                                      |IX  
+TABLE|SYSCOLUMNS                                                                                                                      |S   
+ROW  |T1                                                                                                                              |X   
+TABLE|T1                                                                                                                              |IX  
+ij> commit;
+ij> -- try using default keyword with ai.
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (x char(2) default 'yy', y bigint generated always as identity);
+0 rows inserted/updated/deleted
+ij> insert into t1 (x, y) values ('aa', default);
+1 row inserted/updated/deleted
+ij> insert into t1 values ('bb', default);
+1 row inserted/updated/deleted
+ij> insert into t1 (x) values default;
+1 row inserted/updated/deleted
+ij> insert into t1 (x) values null;
+1 row inserted/updated/deleted
+ij> -- switch the order of the columns
+insert into t1 (y, x) values (default, 'cc');
+1 row inserted/updated/deleted
+ij> select * from t1;
+X   |Y                   
+-------------------------
+aa  |1                   
+bb  |2                   
+yy  |3                   
+NULL|4                   
+cc  |5                   
+ij> -- bug 3450.
+autocommit off;
+ij> create table testme (text varchar(10), autonum int generated always as identity);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> prepare autoprepare as 'insert into testme (text) values ?';
+ij> execute autoprepare using 'values (''one'')';
+1 row inserted/updated/deleted
+ij> execute autoprepare using 'values (''two'')';
+1 row inserted/updated/deleted
+ij> execute autoprepare using 'values (''three'')';
+1 row inserted/updated/deleted
+ij> select * from testme;
+TEXT      |AUTONUM    
+----------------------
+one       |1          
+two       |2          
+three     |3          
+ij> -- give exact query and make sure that the statment cache doesn't
+-- mess up things.
+insert into testme (text) values ('four');
+1 row inserted/updated/deleted
+ij> insert into testme (text) values ('four');
+1 row inserted/updated/deleted
+ij> select * from testme;
+TEXT      |AUTONUM    
+----------------------
+one       |1          
+two       |2          
+three     |3          
+four      |4          
+four      |5          
+ij> drop table testme;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- go back to our commiting ways.
+autocommit on;
+ij> -- negative tests from autoincrementNegative.sql
+-- negative bind tests.
+-- invalid types 
+create table ni (x int, y char(1) generated always as identity);
+ERROR 42Z22: Invalid type specified for identity column 'Y'. The only valid types for identity columns are BIGINT, INT and SMALLINT.
+ij> create table ni (x int, y decimal(5,2) generated always as identity);
+ERROR 42Z22: Invalid type specified for identity column 'Y'. The only valid types for identity columns are BIGINT, INT and SMALLINT.
+ij> create table ni (x int, y float generated always as identity (start with 1, increment by 1));
+ERROR 42Z22: Invalid type specified for identity column 'Y'. The only valid types for identity columns are BIGINT, INT and SMALLINT.
+ij> create table ni (s int, y varchar(10) generated always as identity);
+ERROR 42Z22: Invalid type specified for identity column 'Y'. The only valid types for identity columns are BIGINT, INT and SMALLINT.
+ij> -- 0 increment 
+-- pass in DB2 UDB
+-- fail in DB2 CS
+create table ni (x int, y int generated always as identity (increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> create table ni (x int, y int generated always as identity (start with 0, increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> create table ni (x int, y smallint generated always as identity (increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> create table ni (x int, y smallint generated always as identity (start with 0, increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> create table ni (x int, y int generated always as identity (increment by 0);
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 75.
+ij> create table ni (x int, y int generated always as identity (start with 0, increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> create table ni (x int, y bigint generated always as identity (increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> create table ni (x int, y bigint generated always as identity (start with 0, increment by 0));
+ERROR 42Z21: Invalid increment specified for identity for column 'Y'. Increment must be non zero.
+ij> -- out of range start 
+-- actually the first few are valid
+create table ni (x int, y int generated always as identity (start with 127, increment by -1));
+0 rows inserted/updated/deleted
+ij> drop table ni;
+0 rows inserted/updated/deleted
+ij> create table ni (x int, y int generated always as identity (start with -128));
+0 rows inserted/updated/deleted
+ij> drop table ni;
+0 rows inserted/updated/deleted
+ij> --  now go through this exercise for all types!
+create table ni (x int, y smallint generated always as identity (start with 32768));
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> create table ni (x int, y smallint generated always as identity (start with -32769));
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> create table ni (x int, y int generated always as identity (start with  2147483648));
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> create table ni (x int, y int generated always as identity (start with  -2147483649));
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> create table ni (x int, y bigint  
+				 generated always as identity (start with  9223372036854775808));
+ERROR 42X49: Value '9223372036854775808' is not a valid integer literal.
+ij> create table ni (x int, y bigint 
+				 generated always as identity (start with  -9223372036854775809));
+ERROR 42X49: Value '9223372036854775809' is not a valid integer literal.
+ij> -- attempt to update or insert into autoincrement columns.
+create table ai (x smallint generated always as identity, y int);
+0 rows inserted/updated/deleted
+ij> insert into ai (y) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+11 rows inserted/updated/deleted
+ij> select * from ai;
+X     |Y          
+------------------
+1     |0          
+2     |1          
+3     |2          
+4     |3          
+5     |4          
+6     |5          
+7     |6          
+8     |7          
+9     |8          
+10    |9          
+11    |10         
+ij> delete from ai where y=8 OR y=4;
+2 rows inserted/updated/deleted
+ij> insert into ai (y) values (11),(13),(14),(15),(17),(18),(19);
+7 rows inserted/updated/deleted
+ij> select * from ai;
+X     |Y          
+------------------
+1     |0          
+2     |1          
+3     |2          
+4     |3          
+6     |5          
+7     |6          
+8     |7          
+10    |9          
+11    |10         
+12    |11         
+13    |13         
+14    |14         
+15    |15         
+16    |17         
+17    |18         
+18    |19         
+ij> -- valid updates.
+update ai set y=-y;
+16 rows inserted/updated/deleted
+ij> select * from ai order by x;
+X     |Y          
+------------------
+1     |0          
+2     |-1         
+3     |-2         
+4     |-3         
+6     |-5         
+7     |-6         
+8     |-7         
+10    |-9         
+11    |-10        
+12    |-11        
+13    |-13        
+14    |-14        
+15    |-15        
+16    |-17        
+17    |-18        
+18    |-19        
+ij> update ai set y=-y;
+16 rows inserted/updated/deleted
+ij> select * from ai order by x;
+X     |Y          
+------------------
+1     |0          
+2     |1          
+3     |2          
+4     |3          
+6     |5          
+7     |6          
+8     |7          
+10    |9          
+11    |10         
+12    |11         
+13    |13         
+14    |14         
+15    |15         
+16    |17         
+17    |18         
+18    |19         
+ij> update ai set y=4 where y=3;
+1 row inserted/updated/deleted
+ij> select * from ai order by x;
+X     |Y          
+------------------
+1     |0          
+2     |1          
+3     |2          
+4     |4          
+6     |5          
+7     |6          
+8     |7          
+10    |9          
+11    |10         
+12    |11         
+13    |13         
+14    |14         
+15    |15         
+16    |17         
+17    |18         
+18    |19         
+ij> update ai set y=4 where x=3;
+1 row inserted/updated/deleted
+ij> select * from ai order by x;
+X     |Y          
+------------------
+1     |0          
+2     |1          
+3     |4          
+4     |4          
+6     |5          
+7     |6          
+8     |7          
+10    |9          
+11    |10         
+12    |11         
+13    |13         
+14    |14         
+15    |15         
+16    |17         
+17    |18         
+18    |19         
+ij> -- error, error!
+update ai set x=4 where y=3;
+ERROR 42Z23: Attempt to modify an identity column 'X'. 
+ij> insert into ai values (1,2);
+ERROR 42Z23: Attempt to modify an identity column 'X'. 
+ij> -- overflow.
+drop table ai;
+0 rows inserted/updated/deleted
+ij> create table ai (x int, y int generated always as identity (increment by 200000000));
+0 rows inserted/updated/deleted
+ij> insert into ai (x) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19);
+ERROR 42Z24: Overflow occurred in identity value for column 'Y' in table 'AI'.
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- should have been rolled back.
+select * from ai;
+X          |Y          
+-----------------------
+ij> -- but the entry in syscolumns has been updated! still can't do inserts.
+insert into ai (x) values (1);
+ERROR 42Z24: Overflow occurred in identity value for column 'Y' in table 'AI'.
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- more overflow.
+drop table ai;
+0 rows inserted/updated/deleted
+ij> create table ai (x int, y smallint generated always as identity (start with  -32760, increment by -1));
+0 rows inserted/updated/deleted
+ij> insert into ai (x) values (1),(2),(3),(4),(5),(6),(7),(8);
+8 rows inserted/updated/deleted
+ij> insert into ai (x) values (9),(10);
+ERROR 42Z24: Overflow occurred in identity value for column 'Y' in table 'AI'.
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select * from ai;
+X          |Y     
+------------------
+1          |-32760
+2          |-32761
+3          |-32762
+4          |-32763
+5          |-32764
+6          |-32765
+7          |-32766
+8          |-32767
+ij> -- try overflow with int and bigint.
+drop table ai;
+0 rows inserted/updated/deleted
+ij> create table ai (x int, y int generated always as identity (start with  2147483646));
+0 rows inserted/updated/deleted
+ij> insert into ai (x) values (1);
+1 row inserted/updated/deleted
+ij> insert into ai (x) values (2);
+1 row inserted/updated/deleted
+ij> select * from ai;
+X          |Y          
+-----------------------
+1          |2147483646 
+2          |2147483647 
+ij> insert into ai (x) select x from ai;
+ERROR 42Z24: Overflow occurred in identity value for column 'Y' in table 'AI'.
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> drop table ai;
+0 rows inserted/updated/deleted
+ij> -- for bigint we don't go to the end-- stop one value before....
+create table ai (x int, y bigint generated always as identity 
+				   (start with     9223372036854775805));
+0 rows inserted/updated/deleted
+ij> insert into ai (x) values (1),(2);
+2 rows inserted/updated/deleted
+ij> insert into ai (x) values (3);
+ERROR 42Z24: Overflow occurred in identity value for column 'Y' in table 'AI'.
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select * from ai;
+X          |Y                   
+--------------------------------
+1          |9223372036854775805 
+2          |9223372036854775806 
+ij> -- clean up
+drop table ai;
+0 rows inserted/updated/deleted
+ij> --- alter table...
+create table base (x int);
+0 rows inserted/updated/deleted
+ij> insert into base values (1),(2),(3),(4),(5),(6);
+6 rows inserted/updated/deleted
+ij> select * from base;
+X          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+ij> -- should fail because alter table add generated column is not supported
+alter table base add column y smallint generated always as identity (start with  10);
+ERROR 42601: ALTER TABLE statement can not add an IDENTITY column to a table. 
+ij> alter table base add column y int generated always as identity (start with  10);
+ERROR 42601: ALTER TABLE statement can not add an IDENTITY column to a table. 
+ij> alter table base add column y bigint generated always as identity (start with  10);
+ERROR 42601: ALTER TABLE statement can not add an IDENTITY column to a table. 
+ij> -- make sure alter table failures above rolled themselves back 
+select * from base;
+X          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+ij> drop table base;
+0 rows inserted/updated/deleted
+ij> -- testing non-reserved keywords: generated, start, always
+-- should be successful
+create table always (a int);
+0 rows inserted/updated/deleted
+ij> create table start (a int);
+0 rows inserted/updated/deleted
+ij> create table generated (a int);
+0 rows inserted/updated/deleted
+ij> drop table always;
+0 rows inserted/updated/deleted
+ij> drop table start;
+0 rows inserted/updated/deleted
+ij> drop table generated;
+0 rows inserted/updated/deleted
+ij> -- IDENTITY_VAL_LOCAL function, same as DB2, beetle 5354
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1(c1 int generated always as identity, c2 int);
+0 rows inserted/updated/deleted
+ij> -- start
+insert into t1(c2) values (8);
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+1                              
+ij> select IDENTITY_VAL_LOCAL()+1, IDENTITY_VAL_LOCAL()-1 from t1;
+1                               |2                               
+-----------------------------------------------------------------
+2                               |0                               
+ij> insert into t1(c2) values (IDENTITY_VAL_LOCAL());
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |8          
+2          |1          
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> select IDENTITY_VAL_LOCAL()+1, IDENTITY_VAL_LOCAL()-1 from t1;
+1                               |2                               
+-----------------------------------------------------------------
+3                               |1                               
+3                               |1                               
+ij> insert into t1(c2) values (8), (9);
+2 rows inserted/updated/deleted
+ij> -- multi-values insert, return value of the function should not change, same as DB2
+values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |8          
+2          |1          
+3          |8          
+4          |9          
+ij> insert into t1(c2) select c1 from t1;
+4 rows inserted/updated/deleted
+ij> -- insert with sub-select, return value should not change
+values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |8          
+2          |1          
+3          |8          
+4          |9          
+5          |1          
+6          |2          
+7          |3          
+8          |4          
+ij> delete from t1;
+8 rows inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> insert into t1(c2) select c1 from t1;
+0 rows inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+2                              
+ij> -- end of practice, back to start...
+insert into t1(c2) values (8);
+1 row inserted/updated/deleted
+ij> values IDENTITY_VAL_LOCAL();
+1                              
+-------------------------------
+9                              
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- test cases for beetle 5404: inserting multiple rows of defaults into autoincrement column.
+create table t1(c1 int generated always as identity);
+0 rows inserted/updated/deleted
+ij> -- this is okay
+insert into t1 values (default);
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> -- should fail
+insert into t1 values (1), (1);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> -- this returns the right error
+insert into t1 values (1), (default);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t1 values (default), (1);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t1 values (default), (default), (default), (2);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t1 values (default), (default), (2);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t1 values (default), (default), (2), (default);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> -- this returns NPE
+insert into t1 values (default), (default);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+1          
+2          
+3          
+ij> insert into t1 values (default), (default), (default);
+3 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+ij> insert into t1 values (default), (default), (default), (default);
+4 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+10         
+ij> create table t2 (a int, b int generated always as identity);
+0 rows inserted/updated/deleted
+ij> insert into t2 values (1, default), (2, default);
+2 rows inserted/updated/deleted
+ij> select * from t2;
+A          |B          
+-----------------------
+1          |1          
+2          |2          
+ij> insert into t2 values (1, default), (2, 2);
+ERROR 42Z23: Attempt to modify an identity column 'B'. 
+ij> insert into t2 values (1, default), (2, default), (2, 2);
+ERROR 42Z23: Attempt to modify an identity column 'B'. 
+ij> insert into t2 values (1, 2), (2, default), (2, default);
+ERROR 42Z23: Attempt to modify an identity column 'B'. 
+ij> create table t3(c1 int generated always as identity (increment by 3));
+0 rows inserted/updated/deleted
+ij> -- succeeded
+insert into t3 values (default);
+1 row inserted/updated/deleted
+ij> select * from t3;
+C1         
+-----------
+1          
+ij> insert into t3 values (default);
+1 row inserted/updated/deleted
+ij> select * from t3;
+C1         
+-----------
+1          
+4          
+ij> -- should fail
+insert into t3 values (1), (1);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> select * from t3;
+C1         
+-----------
+1          
+4          
+ij> -- this returns the right error
+insert into t3 values (1), (default);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 values (default), (1);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 values (default), (default), (default), (2);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 values (default), (default), (2);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 values (default), (default), (2), (default);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 select * from t1;
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 select * from table (values (1)) as q(a);
+ERROR 42Z23: Attempt to modify an identity column 'C1'. 
+ij> insert into t3 select * from table (values (default)) as q(a);
+ERROR 42Y85: The DEFAULT keyword is only allowed in a VALUES clause when the VALUES clause appears within an INSERT statement.
+ij> -- this returns NPE
+insert into t3 values (default), (default);
+2 rows inserted/updated/deleted
+ij> select * from t3;
+C1         
+-----------
+1          
+4          
+7          
+10         
+ij> insert into t3 values (default), (default), (default);
+3 rows inserted/updated/deleted
+ij> select * from t3;
+C1         
+-----------
+1          
+4          
+7          
+10         
+13         
+16         
+19         
+ij> insert into t3 values (default), (default), (default), (default);
+4 rows inserted/updated/deleted
+ij> select * from t3;
+C1         
+-----------
+1          
+4          
+7          
+10         
+13         
+16         
+19         
+22         
+25         
+28         
+31         
+ij> 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> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/badConnection.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/badConnection.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,18 @@
+No user/password  (Client error)
+passed SQLException all the way to client, then thrown by client...
+SQLState is: null
+vendorCode is: -99999
+nextException is: null
+reason is: null userid not supported
+Database not Found  (RDBNFNRM)
+passed SQLException all the way to client, then thrown by client...
+SQLState is: 08004
+vendorCode is: -4499
+nextException is: null
+reason is: The application server rejected establishment of the connection.  An attempt was made to access a database, notthere, which was not found.
+Invalid Attribute  value (RDBAFLRM)
+passed SQLException all the way to client, then thrown by client...
+SQLState is: XJ05B
+vendorCode is: -1
+nextException is: null
+reason is: DB2 SQL error: SQLCODE: -1, SQLSTATE: XJ05B, SQLERRMC: upgradenotValidValue{true |false}XJ05B.CJDBC attribute 'upgrade' has an invalid value 'notValidValue', valid values are '{true |false}'.((server log XXX)

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,817 @@
+ij> --
+-- Test the builtin type 'bit'
+-- Specifically the base-16, hex bit literal
+-- stupid test of literals
+values(X'aAff');
+1   
+----
+aaff
+ij> -- casting to a for bit data type
+values (cast (x'ee' as char(2) for bit data));
+1   
+----
+ee20
+ij> values x'aAff' || (cast (x'ee' as char(2) for bit data));
+1       
+--------
+aaffee20
+ij> -- are the search conditions true?
+create table tab1 (c1 char(25));
+0 rows inserted/updated/deleted
+ij> insert into tab1 values 'search condition is true';
+1 row inserted/updated/deleted
+ij> select * from tab1 where ((X'1010' || X'0011' || X'0100') = X'101000110100');
+C1                       
+-------------------------
+search condition is true 
+ij> select * From tab1 where ((X'1010' || X'0011' || X'0100') = X'101000110100');
+C1                       
+-------------------------
+search condition is true 
+ij> select * from tab1 where (X'1100' > X'0011');
+C1                       
+-------------------------
+search condition is true 
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> -- simple negative test
+values(X'gg');
+ERROR 42X01: Syntax error: Encountered "\'gg\'" at line 2, column 9.
+ij> values(X'z');
+ERROR 42X01: Syntax error: Encountered "\'z\'" at line 1, column 9.
+ij> values(X'zz');
+ERROR 42X01: Syntax error: Encountered "\'zz\'" at line 1, column 9.
+ij> -- fails after bug 5742 is fixed
+values(X'9');
+ERROR 42606: An invalid hexadecimal constant starting with 'X'9'' has been detected.
+ij> -- some quick tests of the length function
+-- # bits in a string expression
+values({fn length(X'ab')} * 8);
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> values({fn length(X'11')} * 8);
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> -- # characters in a string expression
+values({fn length(X'ab')});
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> values({fn length(X'11')});
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> -- # octets in a string expression
+values({fn length(X'ab')});
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> values({fn length(X'11')});
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> -- stupid test for syntax
+create table t1 (b1 char for bit data, b2 char(2) for bit data, b3 varchar(2) for bit data, b4 LONG VARCHAR FOR BIT DATA,
+				b5 LONG VARCHAR FOR BIT DATA, b6 LONG VARCHAR FOR BIT DATA);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (b1 char for bit data, b2 char(1) for bit data not null, b3 varchar(1) for bit data not null,
+				b4 LONG VARCHAR FOR BIT DATA not null, b5 LONG VARCHAR FOR BIT DATA not null,
+				b6 LONG VARCHAR FOR BIT DATA not null);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real, b char (2) for bit data, bv varchar(8) for bit data,
+	lbv LONG VARCHAR FOR BIT DATA);
+0 rows inserted/updated/deleted
+ij> -- explicit null
+insert into t values (null, null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> -- implicit null
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> select b, bv, lbv from t;
+B   |BV              |LBV                                                                                                                             
+------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL|NULL            |NULL                                                                                                                            
+NULL|NULL            |NULL                                                                                                                            
+ij> -- sample data
+insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0, 200.0e0, 
+			X'12af', X'0000111100001111', X'abc123');
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0, -200.0e0,
+			X'0000', X'', X'10101010');
+1 row inserted/updated/deleted
+ij> -- truncation -- should get an error
+insert into t (b, bv) values (X'ffffffff', X'ffffffff');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA 'ffffffff' to length 2.
+ij> select b, bv, lbv from t;
+B   |BV              |LBV                                                                                                                             
+------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL|NULL            |NULL                                                                                                                            
+NULL|NULL            |NULL                                                                                                                            
+12af|0000111100001111|abc123                                                                                                                          
+0000|                |10101010                                                                                                                        
+ij> -- padding -- will be warning, some day (not now)
+insert into t (b, bv) values (X'01', X'01');
+1 row inserted/updated/deleted
+ij> insert into t (b, bv) values (X'', X'');
+1 row inserted/updated/deleted
+ij> select b, bv from t;
+B   |BV              
+---------------------
+NULL|NULL            
+NULL|NULL            
+12af|0000111100001111
+0000|                
+0120|01              
+2020|                
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> --
+-- simple comparisons
+-- returns 1 if the search conditions are true
+-- 
+create table nulltab (b char(1) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into nulltab values (null);
+1 row inserted/updated/deleted
+ij> select 1 from nulltab where X'0001' > X'0000';
+1          
+-----------
+1          
+ij> select 1 from nulltab where X'0100' > X'0001';
+1          
+-----------
+1          
+ij> select 1 from nulltab where X'ff00' > X'00ff';
+1          
+-----------
+1          
+ij> select 1 from nulltab where X'0100' > X'0100';
+1          
+-----------
+ij> select 1 from nulltab where X'0100' > b;
+1          
+-----------
+ij> select 1 from nulltab where X'0001' >= X'0000';
+1          
+-----------
+1          
+ij> select 1 from nulltab where X'0100' >= X'0001';
+1          
+-----------
+1          
+ij> select 1 from nulltab where X'ff00' >= X'00ff';
+1          
+-----------
+1          
+ij> select 1 from nulltab where X'0100' >= b;
+1          
+-----------
+ij> select 1 from nulltab where X'0001' < X'0000';
+1          
+-----------
+ij> select 1 from nulltab where X'0100' < X'0001';
+1          
+-----------
+ij> select 1 from nulltab where X'ff00' < X'00ff';
+1          
+-----------
+ij> select 1 from nulltab where X'0100' < b;
+1          
+-----------
+ij> select 1 from nulltab where X'0001' <= X'0000';
+1          
+-----------
+ij> select 1 from nulltab where X'0100' <= X'0001';
+1          
+-----------
+ij> select 1 from nulltab where X'ff00' <= X'00ff';
+1          
+-----------
+ij> select 1 from nulltab where X'0100' <= b;
+1          
+-----------
+ij> drop table nulltab;
+0 rows inserted/updated/deleted
+ij> --
+-- select comparisons
+--
+create table t (b10 char(20) for bit data, vb10 varchar(20) for bit data, b16 char(2) for bit data, vb16 varchar(2) for bit data, lbv LONG VARCHAR FOR BIT DATA, c20 char(20), cv20 varchar(20));
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, 'null', 'null columns');
+1 row inserted/updated/deleted
+ij> insert into t values (X'',  X'',  X'',  X'', X'', '0', 'zero length column');
+1 row inserted/updated/deleted
+ij> insert into t values (X'0000000001', X'0000000001', X'01', X'01', X'0000000001', '1', '1');
+1 row inserted/updated/deleted
+ij> insert into t values (X'0000000011', X'0000000011', X'03', X'03', X'03', '3', '3');
+1 row inserted/updated/deleted
+ij> insert into t values (X'1111111111', X'1111111111', X'ff', X'ff', X'1111111111', 'ff', 'ff');
+1 row inserted/updated/deleted
+ij> insert into t values (X'11', X'11', X'aa', X'aa', X'aa', 'aa', 'aa');
+1 row inserted/updated/deleted
+ij> -- make sure built-in functions work ok on binary types,
+-- it is a little special since it maps to an
+-- array.  use length to make sure it wont
+-- diff from run to run
+select {fn length(cast(b10 as char(10)))} from t where b10 is not null;
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+ij> select {fn length(cast(vb10 as char(10)))} from t where vb10 is not null;
+ERROR 42846: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'CHAR'.
+ij> select {fn length(cast(lbv as char(10)))} from t where vb10 is not null;
+ERROR 42846: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'CHAR'.
+ij> select b10, c20, cv20 from t order by b10 asc;
+B10                                     |C20                 |CV20                
+----------------------------------------------------------------------------------
+0000000001202020202020202020202020202020|1                   |1                   
+0000000011202020202020202020202020202020|3                   |3                   
+1111111111202020202020202020202020202020|ff                  |ff                  
+1120202020202020202020202020202020202020|aa                  |aa                  
+2020202020202020202020202020202020202020|0                   |zero length column  
+NULL                                    |null                |null columns        
+ij> select b10, c20, cv20 from t order by b10 desc;
+B10                                     |C20                 |CV20                
+----------------------------------------------------------------------------------
+NULL                                    |null                |null columns        
+2020202020202020202020202020202020202020|0                   |zero length column  
+1120202020202020202020202020202020202020|aa                  |aa                  
+1111111111202020202020202020202020202020|ff                  |ff                  
+0000000011202020202020202020202020202020|3                   |3                   
+0000000001202020202020202020202020202020|1                   |1                   
+ij> select vb10, c20, cv20 from t order by vb10;
+VB10                                    |C20                 |CV20                
+----------------------------------------------------------------------------------
+                                        |0                   |zero length column  
+0000000001                              |1                   |1                   
+0000000011                              |3                   |3                   
+11                                      |aa                  |aa                  
+1111111111                              |ff                  |ff                  
+NULL                                    |null                |null columns        
+ij> select b16, c20, cv20 from t order by b16;
+B16 |C20                 |CV20                
+----------------------------------------------
+0120|1                   |1                   
+0320|3                   |3                   
+2020|0                   |zero length column  
+aa20|aa                  |aa                  
+ff20|ff                  |ff                  
+NULL|null                |null columns        
+ij> select vb16, c20, cv20 from t order by vb16;
+VB16|C20                 |CV20                
+----------------------------------------------
+    |0                   |zero length column  
+01  |1                   |1                   
+03  |3                   |3                   
+aa  |aa                  |aa                  
+ff  |ff                  |ff                  
+NULL|null                |null columns        
+ij> select vb16, c20, cv20, lbv from t order by lbv;
+VB16|C20                 |CV20                |LBV                                                                                                                             
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+    |0                   |zero length column  |                                                                                                                                
+01  |1                   |1                   |0000000001                                                                                                                      
+03  |3                   |3                   |03                                                                                                                              
+ff  |ff                  |ff                  |1111111111                                                                                                                      
+aa  |aa                  |aa                  |aa                                                                                                                              
+NULL|null                |null columns        |NULL                                                                                                                            
+ij> select b10 from t where b10 > X'0000000010';
+B10                                     
+----------------------------------------
+2020202020202020202020202020202020202020
+0000000011202020202020202020202020202020
+1111111111202020202020202020202020202020
+1120202020202020202020202020202020202020
+ij> select b10 from t where b10 < X'0000000010';
+B10                                     
+----------------------------------------
+0000000001202020202020202020202020202020
+ij> select b10 from t where b10 <= X'0000000011';
+B10                                     
+----------------------------------------
+0000000001202020202020202020202020202020
+0000000011202020202020202020202020202020
+ij> select b10 from t where b10 >= X'0000000011';
+B10                                     
+----------------------------------------
+2020202020202020202020202020202020202020
+0000000011202020202020202020202020202020
+1111111111202020202020202020202020202020
+1120202020202020202020202020202020202020
+ij> select b10 from t where b10 <> X'0000000011';
+B10                                     
+----------------------------------------
+2020202020202020202020202020202020202020
+0000000001202020202020202020202020202020
+1111111111202020202020202020202020202020
+1120202020202020202020202020202020202020
+ij> select vb10 from t where vb10 > X'0000000010';
+VB10                                    
+----------------------------------------
+0000000011                              
+1111111111                              
+11                                      
+ij> select vb10 from t where vb10 < X'0000000010';
+VB10                                    
+----------------------------------------
+0000000001                              
+ij> select vb10 from t where vb10 <= X'0000000011';
+VB10                                    
+----------------------------------------
+0000000001                              
+0000000011                              
+ij> select vb10 from t where vb10 >= X'0000000011';
+VB10                                    
+----------------------------------------
+0000000011                              
+1111111111                              
+11                                      
+ij> select vb10 from t where vb10 <> X'0000000011';
+VB10                                    
+----------------------------------------
+0000000001                              
+1111111111                              
+11                                      
+ij> select b16 from t where b16 > X'0000000010';
+B16 
+----
+2020
+0120
+0320
+ff20
+aa20
+ij> select b16 from t where b16 < X'0000000010';
+B16 
+----
+ij> select b16 from t where b16 <= X'0000000011';
+B16 
+----
+ij> select b16 from t where b16 >= X'0000000011';
+B16 
+----
+2020
+0120
+0320
+ff20
+aa20
+ij> select b16 from t where b16 <> X'0000000011';
+B16 
+----
+2020
+0120
+0320
+ff20
+aa20
+ij> select vb16 from t where vb16 > X'0000000010';
+VB16
+----
+01  
+03  
+ff  
+aa  
+ij> select vb16 from t where vb16 < X'0000000010';
+VB16
+----
+ij> select vb16 from t where vb16 <= X'0000000011';
+VB16
+----
+ij> select vb16 from t where vb16 >= X'0000000011';
+VB16
+----
+01  
+03  
+ff  
+aa  
+ij> select vb16 from t where vb16 <> X'0000000011';
+VB16
+----
+01  
+03  
+ff  
+aa  
+ij> select lbv from t where lbv > X'0000000010';
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select lbv from t where lbv < X'0000000010';
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select lbv from t where lbv <= X'0000000011';
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select lbv from t where lbv >= X'0000000011';
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select lbv from t where lbv <> X'0000000011';
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select b10, vb10||X'11' from t where vb10||X'11' > b10;
+B10                                     |2                                         
+-----------------------------------------------------------------------------------
+ij> select b10, X'11'||vb10 from t where X'11'||vb10 > b10;
+B10                                     |2                                         
+-----------------------------------------------------------------------------------
+0000000001202020202020202020202020202020|110000000001                              
+0000000011202020202020202020202020202020|110000000011                              
+ij> select b16, vb16||X'11' from t where vb16||X'11' > b16;
+B16 |2     
+-----------
+ij> select b10 || vb10 from t;
+1                                                                               
+--------------------------------------------------------------------------------
+NULL                                                                            
+2020202020202020202020202020202020202020                                        
+00000000012020202020202020202020202020200000000001                              
+00000000112020202020202020202020202020200000000011                              
+11111111112020202020202020202020202020201111111111                              
+112020202020202020202020202020202020202011                                      
+ij> select lbv || b10 from t;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+2020202020202020202020202020202020202020                                                                                        
+00000000010000000001202020202020202020202020202020                                                                              
+030000000011202020202020202020202020202020                                                                                      
+11111111111111111111202020202020202020202020202020                                                                              
+aa1120202020202020202020202020202020202020                                                                                      
+ij> select b10 || lbv from t;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+2020202020202020202020202020202020202020                                                                                        
+00000000012020202020202020202020202020200000000001                                                                              
+000000001120202020202020202020202020202003                                                                                      
+11111111112020202020202020202020202020201111111111                                                                              
+1120202020202020202020202020202020202020aa                                                                                      
+ij> select lbv || vb10 from t;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+00000000010000000001                                                                                                            
+030000000011                                                                                                                    
+11111111111111111111                                                                                                            
+aa11                                                                                                                            
+ij> select vb10 || lbv from t;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+00000000010000000001                                                                                                            
+000000001103                                                                                                                    
+11111111111111111111                                                                                                            
+11aa                                                                                                                            
+ij> select t1.b10 from t t1, t t2 where t1.b10 > t2.b10;
+B10                                     
+----------------------------------------
+2020202020202020202020202020202020202020
+2020202020202020202020202020202020202020
+2020202020202020202020202020202020202020
+2020202020202020202020202020202020202020
+0000000011202020202020202020202020202020
+1111111111202020202020202020202020202020
+1111111111202020202020202020202020202020
+1120202020202020202020202020202020202020
+1120202020202020202020202020202020202020
+1120202020202020202020202020202020202020
+ij> -- FUNCTIONS
+-- some length functions
+select {fn length(b10)} from t;
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> select {fn length(vb10)} from t;
+ERROR 42846: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> select {fn length(lbv)} from t;
+ERROR 42846: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'VARCHAR'.
+ij> select {fn length(c20)} from t;
+1          
+-----------
+4          
+1          
+1          
+1          
+2          
+2          
+ij> select {fn length(cv20)} from t;
+1          
+-----------
+12         
+18         
+1          
+1          
+2          
+2          
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -----------------------
+-- test normalization
+-----------------------
+create table t1 (c1 char(2) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (X'0001');
+1 row inserted/updated/deleted
+ij> insert into t1 values (X'0010');
+1 row inserted/updated/deleted
+ij> insert into t1 values (X'0011');
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1  
+----
+0001
+0010
+0011
+ij> -- now insert something that needs to be expanded
+insert into t1 values (X'11');
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1  
+----
+0001
+0010
+0011
+1120
+ij> -- insert select, expand 1 byte
+create table t2 (c1 char(3) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into t2 select c1 from t1;
+4 rows inserted/updated/deleted
+ij> select * from t2;
+C1    
+------
+000120
+001020
+001120
+112020
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- insert select, expand many bytes
+create table t2 (c1 char(20) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into t2 select c1 from t1;
+4 rows inserted/updated/deleted
+ij> select * from t2;
+C1                                      
+----------------------------------------
+0001202020202020202020202020202020202020
+0010202020202020202020202020202020202020
+0011202020202020202020202020202020202020
+1120202020202020202020202020202020202020
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --
+-- some extra tests for truncation.  in 2.0
+create table t1 (b1 char(1) for bit data);
+0 rows inserted/updated/deleted
+ij> -- ok
+insert into t1 values (X'11');
+1 row inserted/updated/deleted
+ij> -- valid length
+insert into t1 values (X'10');
+1 row inserted/updated/deleted
+ij> insert into t1 values (X'11');
+1 row inserted/updated/deleted
+ij> -- truncation errors
+insert into t1 values (X'1000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1000' to length 1.
+ij> insert into t1 values (X'100000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '100000' to length 1.
+ij> insert into t1 values (X'10000000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '10000000' to length 1.
+ij> insert into t1 values (X'1000000000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1000000000' to length 1.
+ij> insert into t1 values (X'100001');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '100001' to length 1.
+ij> insert into t1 values (X'0001');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '0001' to length 1.
+ij> insert into t1 values (X'8001');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '8001' to length 1.
+ij> insert into t1 values (X'8000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '8000' to length 1.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (b9 char(2) for bit data);
+0 rows inserted/updated/deleted
+ij> -- ok
+insert into t1 values (X'1111');
+1 row inserted/updated/deleted
+ij> -- truncation errors
+insert into t1 values (X'111100');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '111100' to length 2.
+ij> insert into t1 values (X'11110000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '11110000' to length 2.
+ij> insert into t1 values (X'1111000000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1111000000' to length 2.
+ij> insert into t1 values (X'1111111100000000');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1111111100000000' to length 2.
+ij> insert into t1 values (X'1111111111');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1111111111' to length 2.
+ij> insert into t1 values (X'11111111100001');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '11111111100001' to length 2.
+ij> insert into t1 values (X'0001');
+1 row inserted/updated/deleted
+ij> insert into t1 values (X'8001');
+1 row inserted/updated/deleted
+ij> insert into t1 values (X'8000');
+1 row inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- a few other conditions
+create table t1 (b3 char(2) for bit data, b7 char(4) for bit data, b8 char (5) for bit data, b15 char(8) for bit data, b16 char(9) for bit data);
+0 rows inserted/updated/deleted
+ij> -- ok
+insert into t1 values
+(
+		X'1111',
+		X'11111111',
+		X'1111111111',
+		X'1111111111111111',
+		X'111111111111111111'
+);
+1 row inserted/updated/deleted
+ij> -- ok
+insert into t1 values
+(
+		X'1110',
+		X'11111110',
+		X'11111111',
+		X'1111111111111110',
+		X'1111111111111111'
+);
+1 row inserted/updated/deleted
+ij> -- bad
+-- truncation error for column b8
+insert into t1 values
+(
+		null,
+		null,
+		X'111111111110',
+		null,
+		null
+);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '111111111110' to length 5.
+ij> -- truncation error for column b7
+insert into t1 values
+(
+		null,
+		X'1111111100',
+		null,
+		null,
+		null
+);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1111111100' to length 4.
+ij> -- truncation error for column b7
+insert into t1 values
+(
+		null,
+		X'1111111111',
+		null,
+		null,
+		null
+);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '1111111111' to length 4.
+ij> -- truncation error for column b15
+insert into t1 values
+(
+		null,
+		null,
+		null,
+		X'111111111111111100',
+		null
+);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '111111111111111100' to length 8.
+ij> -- truncation error for column b15
+insert into t1 values
+(
+		null,
+		null,
+		null,
+		X'111111111111111111',
+		null
+);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '111111111111111111' to length 8.
+ij> -- truncation error for column b16
+insert into t1 values
+(
+		null,
+		null,
+		null,
+		null,
+		X'11111111111111111110'
+);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '11111111111111111110' to length 9.
+ij> AUTOCOMMIT OFF;
+ij> -- bug 5160 - incorrect typing of VALUES table constructor on an insert;
+create table iv (id int, vc varchar(12));
+0 rows inserted/updated/deleted
+ij> insert into iv values (1, 'abc'), (2, 'defghijk'), (3, 'lmnopqrstcc');
+3 rows inserted/updated/deleted
+ij> insert into iv values (4, null), (5, 'null ok?'), (6, '2blanks  ');
+3 rows inserted/updated/deleted
+ij> insert into iv values (7, 'dddd'), (8, '0123456789123'), (9, 'too long');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '0123456789123' to length 12.
+ij> select id, vc, {fn length(vc)} AS LEN from iv order by 1;
+ID         |VC          |LEN        
+------------------------------------
+1          |abc         |3          
+2          |defghijk    |8          
+3          |lmnopqrstcc |11         
+4          |NULL        |NULL       
+5          |null ok?    |8          
+6          |2blanks     |7          
+ij> -- the inner values must not be changed to VARCHAR as it is not the table constructor
+insert into iv select * from (values (10, 'pad'), (11, 'pad me'), (12, 'anakin jedi')) as t(i, c);
+3 rows inserted/updated/deleted
+ij> select id, vc, {fn length(vc)} AS LEN from iv order by 1;
+ID         |VC          |LEN        
+------------------------------------
+1          |abc         |3          
+2          |defghijk    |8          
+3          |lmnopqrstcc |11         
+4          |NULL        |NULL       
+5          |null ok?    |8          
+6          |2blanks     |7          
+10         |pad         |3          
+11         |pad me      |6          
+12         |anakin jedi |11         
+ij> -- check values outside of table constructors retain their CHARness
+select c, {fn length(c)} AS LEN from (values (1, 'abc'), (2, 'defghijk'), (3, 'lmnopqrstcc')) as t(i, c);
+C          |LEN        
+-----------------------
+abc        |3          
+defghijk   |8          
+lmnopqrstcc|11         
+ij> drop table iv;
+0 rows inserted/updated/deleted
+ij> create table bv (id int, vb varchar(16) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into bv values (1, X'1a'), (2, X'cafebabe'), (3, null);
+3 rows inserted/updated/deleted
+ij> select id, vb, {fn length(vb)} AS LEN from bv order by 1;
+ERROR 42846: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> drop table bv;
+0 rows inserted/updated/deleted
+ij> create table dv (id int, vc varchar(12));
+0 rows inserted/updated/deleted
+ij> -- beetle 5568
+-- should fail because DB2 doesn't allow this implicit casting to string
+insert into dv values (1, 1.2), (2, 34.5639), (3, null);
+ERROR 42X61: Types 'DECIMAL' and 'VARCHAR' are not UNION compatible.
+ij> -- should pass
+insert into dv values (1, '1.2'), (2, '34.5639'), (3, null);
+3 rows inserted/updated/deleted
+ij> select id, vc from dv order by 1;
+ID         |VC          
+------------------------
+1          |1.2         
+2          |34.5639     
+3          |NULL        
+ij> drop table dv;
+0 rows inserted/updated/deleted
+ij> -- bug 5306 -- incorrect padding of VALUES table constructor on an insert,
+-- when implicit casting (bit->char or char->bit) is used.
+-- 5306: Char -> For Bit Data Types
+create table bitTable (id int, bv LONG VARCHAR FOR BIT DATA);
+0 rows inserted/updated/deleted
+ij> insert into bitTable values (1, X'031'), (2, X'032'), (3, X'');
+ERROR 42606: An invalid hexadecimal constant starting with 'X'031'' has been detected.
+ij> insert into bitTable values (4, null), (5, X'033'), (6, X'2020');
+ERROR 42606: An invalid hexadecimal constant starting with 'X'033'' has been detected.
+ij> select id, bv, {fn length(bv)} as LEN from bitTable order by 1;
+ERROR 42846: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'VARCHAR'.
+ij> -- the inner values must not be changed to varying, as it is not the table constructor
+insert into bitTable select * from (values (10, 'pad'), (11, 'pad me'), (12, 'anakin jedi')) as t(i, c);
+ERROR 42821: Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'CHAR'. 
+ij> select id, bv, {fn length(bv)} AS LEN from bitTable order by 1;
+ERROR 42846: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'VARCHAR'.
+ij> drop table bitTable;
+0 rows inserted/updated/deleted
+ij> -- 5306: Bit -> Char
+create table charTable (id int, cv long varchar);
+0 rows inserted/updated/deleted
+ij> insert into charTable values (1, x'0101'), (2, x'00101100101001'), (3, x'');
+ERROR 42821: Columns of type 'LONG VARCHAR' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+ij> insert into charTable values (4, null), (5, x'1010101111'), (6, x'1000');
+ERROR 42X61: Types 'LONG VARCHAR' and 'LONG VARCHAR FOR BIT DATA' are not UNION compatible.
+ij> select id, cv, {fn length(cv)} as LEN from charTable order by 1;
+ID         |CV                                                                                                                              |LEN        
+--------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- the inner values must not be changed to varying, as it is not the table constructor
+insert into charTable select * from (values (10, x'001010'), (11, x'01011010101111'), (12, x'0101010101000010100101110101')) as t(i, c);
+ERROR 42821: Columns of type 'LONG VARCHAR' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+ij> select id, cv, {fn length(cv)} AS LEN from charTable order by 1;
+ID         |CV                                                                                                                              |LEN        
+--------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> drop table charTable;
+0 rows inserted/updated/deleted
+ij> -- Verify that 5306 still works with Union.
+create table pt5 (b5 char(2) for bit data);
+0 rows inserted/updated/deleted
+ij> create table pt10 (b10 char (4) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into pt10 values (x'01000110');
+1 row inserted/updated/deleted
+ij> insert into pt5 values (x'1010');
+1 row inserted/updated/deleted
+ij> select {fn length(CM)} from (select b5 from pt5 union all select b10 from pt10) as t(CM);
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> drop table pt5;
+0 rows inserted/updated/deleted
+ij> drop table pt10;
+0 rows inserted/updated/deleted
+ij> -- beetle 5612
+create table t5612 (c1 char(10), c2 varchar(10), c3 long  varchar);
+0 rows inserted/updated/deleted
+ij> insert into t5612 values (X'00680069', X'00680069', X'00680069');
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+ij> select * from t5612;
+C1        |C2        |C3                                                                                                                              
+------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values cast(X'00680069' as char(30)), cast(X'00680069' as varchar(30)), cast(X'00680069' as long varchar);
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit2.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bit2.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+ij> -- the following test causes an out of memory error in jdk118, so only run
+-- the test in jdk12.  
+-- Test for really big literals. Throw an error for now. beetle 2758
+VALUES (X'4749463837617201db01f70000000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde321f90400000000002c000000007201db01c7000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde308fe005fc122f6ac20b483d0a61d5488b021428510a74dabb64d62b68ad5b265cc7691e3b68f1e417edcc67163c98c26298e1cc9f1e4c58dd734a2ac4653664d943637ce4449b21ab59a2d6952d3a651e6499f34932a556ab428509c41c7219dfad3e9ce9b49ad465b2af4a7cfad3fa979f5aa34ec57b1d4ac45a306566c34b570d52265bb96ee5bb668e9ba45ba36dad66a6bf99af59937b0dfbb78dfaa55ecb799356b6c21d3f509b7ad5fc297d112462bb099ac8205254a7c26d19ae869a64d9f3ead2de1b569d7b45d9b4d7b5ab6d719afaddca6f223cd91d37a92bc982e5b717a248b6b2c97eea3f26c52398ebb58ae9cc671e98a37bfcebc79f66ae3bafe674f97b11c76e8d8c763379f3eddf4e9e0b795d3872f9df572e17857f3768df974f3cc5597dd38edb5474f3af498e75e35ee8de3cd7ed901e8cd84ec95838e79e079535d390f4ab51f35133a88d4350f7a03a2583499d895581a1246d883fb7d882252d2ec774d383f3d88a25926ea58a38b3ee9586238d584a3628d138a45a4892896b86259d44813d68c30a69894542186281068ab89a65a97afd966db6cb7bdc61b6ddbc4149b6d6992b41b482a9523df36086a37e078f020080f3c09eec96776748e176177cca123e8a175de999e37d7a5e3cd8108423a6036ddd1931e73f4a063683a9bb6939da6a0a6e3a9a8f18c63cea68612c8a9a7ecd8d7dda8fee6a4d36a76ed808a8e39a69a638e79b7a6b36b75bf6a585d351896189e8421eee7203538ee37618f317a138d942456230d937e4929e58348ee28cdb552e2982393ded41865394a4ee86c8f2612192d8846629324bb4c1a096289cfc2fbac83b83ac85c37dee88aab39dde8ba2569a475295198625aa41146afcd169c6dd5e846d135b98d24276f72a6a30e9d2079974e9e7456f79180238b971da4b6b667a8a65215370eaaf6853a73a69cc263ab3a86c6331e3af2c8934e3cf16c0a4e783e7bda4e3b44677a2a3a45dfea8e3cf1047dab3c57d383b53c4c6b4db5cfe864caced6eca823cfd8f3786d0e3bec68aaabdbe1b82db0c0e18423ce8613d64d61fe39bbe6ed6c86319bc3a283cf1ad96394135e6bedb3dc52f30d93cc96786f90d0e6cbf8e3f87a6338bac6e2caf8e71a0accef38e0146c9ee7bb022cad39edf4dbce38ad8f33f63becb873f069dc2c0cdb34dac016316d1267039b6c64f634114b69ea0612a5cef5345ea0d8494a0f3d3c4f3f9ea42b6f9aa9a1f49c5a0da43823ea1e39435f7868f4e3c583333d3e97c33e3baa66433d3a3c8b0ab43aa21e5875d8e8c04374d1f1a855dba036b5788c2d68f390c7a9e0e10e0312ed6c611bda3c6ea52976e8ca57e6209ad26aa52b0bad0d5fc40a0787cc53b0104985401a0ad8bd1c141e2c858771e1b08f37b00423c3ad2b1c844b8791c465b880996386fe75630fe1d405b071000c448feb21bfbec1c26e3471864723503796063bd64d917504c2d5eb60b7b42d767169016cc7c112b2b0dfed4e6268049ef02e129cd9a4891aca4b1e4d30d61f8ca548631b12dfcf46b62904a9431dd1c31ff774a62979b0cf569aa2073ba2160f9e152d5655d3d9f69ea6a9aa550d6bb72ac7d60c4935a0854a54080c9a2847090faa7d4d6bee609a01bf6649774c0d3ba25ce522e5e18e030a7091010c87c0cab18e5aa2a3606ccba4ae74192b700cec83ba721038cad10dd525891a585ad7e78c649ebc01cc4848bad60fbd010e6e1a0e89d2e8e6e7a8d10d1035f39c009b623a27d40e2786e868ed14a7379ad94d78427186affedb22ecb8083b799063916c6b0738bed88e45d6a30f1d60c10b00b10a24bce0a10a5d682bdea0501bfc6361d6e086431ffa503a70431ad7d0873efcf18f8ac0668ed3108748f7e18f95eae34c23b5877e6e7423feeca31ff6988d3df4d10f78f48739b309c735cc71d37ef4c31ffe382a3cd43152a426d5a8fbd813cfe4c133b7b15487e960e93cf4b10f9672751ffab0873a74358f7e2002065c482b0c5e100c7c74d51bc530c63df6314074b8031d0954c75dcde10ebd9aa3970a64073dfc518a17c000ad5c80011df6f10e7158f01de660c637be618cca0a0319e8b0073e8c310b5ecce3afee30c73184710c6320e318c7e88537c4610e718870a7bca8fe45243e310b6fe88317bde0452ec491a3fda06318863dec5a1521d26364021179b08431e8f1ad6f7c4b4ad12857b9eec5ac7074cb1e71486c62d74a077d54c31cd940831ad08006405c437191c80372f3c05ef62aa319edcdc319cc60097714a99bd2b087373661062f74e1bf60a0432dd4010f7394ae74dd00873de00b062f38980eb9880418268c0bae2d4d20b2484632b8a1058e729414dc68084350c30d2178f80574c00634fcc1841383011b1391c634b0818d663c74ad8765ab3df6c48d2255831b5f08ee61c3a00f8cd903133110f20b48a10f387a031e8515ee5a2db18fe00861bb871d833bc873b77dec41ca3088012ed611c36d7841b8891dc3fe3d5ccb2165c00311c14d2b5bd5118e615c59bb2f18833f5ce98e798c95af7caedd5f7565c17db8c2b0dae5c218ece158bdb6e31dfbc8c40bb0fc824bf443a0e000076b2dc80e7dd001ada0b60136de018e7588c31dfa50051a6e2ce5c4be2011eb68ad91d6616334c3201124da8717840c031e28431c977bae341e873918ea230f607ec11cf6618f66dbe0bf5d48f1b50c470f332036b1b8d005a82f018f1e4ea80b69957325649a0e71eca91c4bdd0637b959307f60c31473a88190c32d66764c718cdcf887beb991ef7ff0bb4b09d946bfb9610f82c3a3e0d8e0863e0efe8f9dca141b743cb8c3452a52b1062a5087ba063c28ded5b0c2631d20f7d51ffe6318214ead9490402be53c0e3e8f79a403e463f5953e8a718dad6e75b360e0f50b2cf159d6fe796a545587a9cdf18ed0d2afb5d961eda9feda8ebbd6ae960a8c15dbf84ccbb11970eaae94c73cd8b134be12e88bb2bbab2bdbc137778083eb047dc73bbade5a5db972e806ce74a605d63a0373539e136ae6e7a4590d711629497a2ff684109c387b6d137413b23b38dcc15f30849b0b3dc006ae4a670e2319b31df3bcbb81059a60708443ee053370c10e6cc1d61174696867874092111a32c25822d0a8068c4d730d6c08efa4ba8178c5ce54b1da5cc33bcd1bcf3a3c06a8a5fe117fc41fd9f105a933755808e5e5387ef4ff68fca2b5cd63bb0a15cf4efe75d7aa0a0d414f5347db969aa7b3d1a381b5acda3cee0aaaa79f2a986b53a002c56f0efc59d0ae86a265ade2b1fe82a61257e830366c737f4b27686c630e67333659b7807c35750758505a574bea90407cc533b5434b7ae53653b736f8172b75a72b05552b51a70ead33776ba32bebd00ebd3456aeb436ffc736ddf4799a0382e2d04c02034ff2148357c43a9ba745a4e30d98774510c876a64730582450a6b234c674845d947af5c00ef5500fabc77a0ba130af570d1201636d9226b2973cc0d37bca930eba7123cdb10e69c20de69027eb803fc8677c7fe431042655dbd77c3cc386cb477df2500dc48035dba3293af33428c70eefe07d58833fba524afef1600e2de7679c7235a5b4495475741dc833ee106bbd344102732b6b33369a924a03b8487af589beb434bea282b5b37ed5712b0c543b01c8356e273501f847ee373790554b7587356d333509244ae2573676458284c67520d80e2ca80e05b357f2c05aad534bc1c482a9742bf5d44c3d2442bad279967779331830dd54304ed44dad03838f6384a5f375edd4755d345097b783acc30ef834504dd80e52080b1af60c64a43013711a18830d60881bbd973c1f114772d21ffff87b1e9327eac00d04b60d04867cca178766230fcda73386840e15b77004260fcd564a7488805aa70f1d29527e1634f6800ed58049cdd7729d64219db47f63a372417375b4d4fe482f792bb9c80e36a775866241a7523453b353a6623541f334b8f88a1f3835dde74a42573615d83675f77301858095e876ad928b0545687c75959ff581efb73675b70e4a493772b78e73f3366ee70eb2437402b30ea4038260b96eba6483e2d00e753396c4642ab09360733377ed744599962b71177a4d374575573b05453b82580f6b8798ab6710339685ab217b65a48f1331476e043c6e648680f2316bd83c6fe831f2d17c1e836e4b951dc3d78888f447a8e20f6540076a6106a4b00fd4072a7cd53f8b3006fd60576d230ffab007c1b07e4b950d91f00d40330fda905ea4904028390ca5500ff0100d99e00d016893f2600c88a0077490077d9569fafe600697b00f7c557454d50decb00fa5d0036be729a1d50ef7d00c89b00f4d770fd9900791f008b59040d1590b5e1009b4e005b4500b745003b7a00f57790c66f005b7400b745095ba620fc6900789d00b605009f3a077b5d00579700b790006ca105a3fa40b601009bed240d5590c91300b02aa2bc700065d6009bef00579b00f9a63383f9469fb700677500d29c8a066700ae0f008c7c9743ac967a2e77957597703850eed006c63b9a4bad2977b090ea2c23a751795053550c2c88ca64750418398f5d04518061a0b7110af077ba7518fbba38fc003716e2470b3611f6d3a7cead01fcf237cc9877c0ba9299c122b4b577f89b47d6ec37e04c67e67232bfe9e2435f5c7297d6557ad437fcec86968838bef200ff5004156879b092888f3b08ca1350f45577f4ce9674ba74b4a984a1fc8353a290d9f7783ac530ec6146b73a70f99c008de295063e97929383766477701e82b5ca7931da42b71694c7f3637c0684c6cf67975634cf2647987c74c7869604dea439547304ba82b3ed4a99fe779319aaa0636971caa8dac939e4d57508e7a8081c675b6d874f2709e6cc335ef300f5d1aa9ad000bcfc07a06e110f87a8fb3014774241170745203491bdef13104b90da5291f78c23385f22974e886b142483cb37204269b55052a88884b10297e4067358db48867a375a2747e0884925a879c097449a294404d175a50c7fe362d974ae27735eb175ae9300f063468553956add34b52caa183363716145a7fb686ae3a9b07483b5d84824a3b8ce48a9bc6c46701188b95a8954b1a30e9f40df4644cd6983783074332684c85334dcf026c99668304932b99567702a5842518aee91a50a6b4769bd8740145b7fcb4346ad784f34a10f4380d09d398602211282563f758314a318662083cce510ec4d21c27432742f7312bd3866b7821fdb32b751836b10934a384b210490e54669389ca0efec006a0d00f8f20077be6678d34350f39b2bbb88b68b37ea2b4b107840f55800bfb204a9d08417cb53f2f5968b5a00cb403ab60600ff7900878c00fdff005ff500fca2a3051a789902603b7fe000fa526304f17976d27adafc383734341562930ec4796c7060d5c9360b08a0bd66a7756344ff2e4388ce34c3218b685732d8c336ccd0543cfda0de1a077ea040ebf248ec9e4445b040ed4c09645d836e6da0e67f38e03e8a5f278afd0f07a644446694263b0e18596f985954927eb307dcee190d4b70e7e427eef2056c7970eba889c7be2b11e3b81f0b08b586394f6100db5700a9f500b2ad557f3b00a89400bdf9040c690098d200cf7300c906009ed600f5ab70fbc6009b9500396a00fed8092fa300c9cf009b7000ef5600ff4500a9ff009c6403bbaf90d9f200ab440099f200c88c98c50f759b6500b5dbc0ff3d00cb5c00ab5b00c4f080fbe400bfee0f0b2724c0bca500fa7a20e73876aeb000cb6700bccf00ef790b4ad030cbd800df7106b7c650fd6d00bca000dca900c8d150ec0e0c9d2e02ba5662ad17010449a7973c74de9a00ccae02b32280ee2548393f52cb71c0df48bbf49542edf702f46f238008377f49b789dc74d9c375005b3b677b9b64bc34dac83cc2748ae63c7365d3a80ecbab7f54a8f0dc1cda89185581831e14c1b2a61476b1a7c66c80d6bf8470829551fb7863b76c27e869a6613872be7b1a1b48833dc72b9f947673381b1ab75f6d07203bd88068d9ca344d07d8692070daf7df69225ab0f266bb2258b92fc77401eab80231ba990d5367a554ba1c58aa617a5809694ed6b8e3cf8fe7f7c45b57339377563243f547961bb439f4322d7620ca1b00b99c0c681d00848d00748f0011780032e90021e900119d0011d800114a00119400343400349900469a00ac3b00bbed024cf42ad79f72d1f9279cdd44e680b824b18805f24a565f97feb403b525a8e86f98486897aaab725c9d00c07f11809610d09510d0961a682eb461793268e1b4798e99922539a7e12cff14cd0e4d77279329c8ecdd008a491290b74f8b088f850d1246bd03b15d15128d1606573305c0f1e3ba9a6edae1f1b34e4990b60f5c5fb300c54f6aea1a4d90c4ddaf0aadaf90006eb30a9413335ed2a88bd7a81fee7db99e84afe90099730a133b84c3ff4bfa9da4dd61aa3d2fe6d387a2354df100dbe000aa6a0086ee0076210021e70011550012730032390010fb0031d20024600020f400114b0000cb0000f90011640010f40df16e0010ee00014d0010fa001e17d014330034840033870042c70011da0011db0df3930042330023310e14740036fe008bed00cd7327550533b30597502c8a9911ac121e8c09f98e24fb80a0743c17d1d7b55080d843b1b60887b74d41c02ab90e9c00dd91187dce0867168c2c7b7867e82929c4b558ff8882be70e1a79404029d9b4bd88125dd02d1785cda60f5f2c5251b8e5f07a0f595e0ffb60db936ad0e04057b4e40fcdc004c2b00fae340ff85006cbe09e0f3d0ffb200479600cb7700ffa10a9fe604e0b3c10e65bd50c34200e2cb50778e00f55b70f71e009f7700fce700797dc0efa00096a760fde5003c1905307b684b45c24c0a64b504aa4d0aa213bd40cbe600c73d0011480010ff0001500dfefed011ef0eaadee00ef6d010f80000bb0eb0cc0000880001cd0021e4001f33ddf08c000f85d01bbee00befeebbbbeeb0f0001b4ceec145001e25ded4afd000e90d41870014fc0df0fc0e01d40032400047ee00ad1e01e18dd3a097440a728a9505835f5100f51088550f80ef57e021aa0024b200558a00552e00977ed0aae600869e008ac400c786d0dcaf0180eafd76a117b74740de29026e2f07b77f3722f377cc3c71ceb4ccfc73788a889579dd8fe57b39975b7a257250bb2f92cc8073db2254be5b6cdd0f350d0cd964033fff21b0df39c9a4a0bdde6330b416deeaea298407cb634e959ad57097246caa44ddf5a4e0addf69b8df81b0dca202dbe40094970043ae0022320024d80dfbdce012ef0000ce000f2fdecbd6eeb0be00026100410a0edf18d024440ec1af0ec19e0011840eb15d0ea679ff66b6febf5dddff3cdeb0e7001f87d01887fdf0c6001191002e27d011f6001fb2deb1d50047530042640021d40024e500582900a5b4120ed2aa9a2148566dca55118000f7002fa7e024ba0034650077050074b40033bb00682600886b0041990044650012a500438400886e0076e200785a00cca638614feff11dcf0133a240dd6f00a8f600cd2000dc6f00bbf600c3b0487c7a789874c7d080db24037f411384a08d467a43df392eae5241b85f09af3bc9db29b0daf2819a95b6a0fa45db288b9ae0021afdd3b79f3eacd2b38cfdd3b76eeccb9533810a13c76efdcb163d7ae9db986eeda81d3d82ee34673edc4950457d25cb78d2dcd8103e90d5c376f3561d60c07ce5bce6edfa8499366ccd829244b90ac998226d01310399c40a1b1a10205070c2854a8e0800206060b1c3c7050f5c1850b152e74f0d0e143060d182870f09001c2820374172040b0806edeae78173c6010f882050c1516046670a0abe20b143260e8802143071233dcb8624483c205101a407cfed83a020409291fb0386ac326902f6a14d9c993578f5d3ddaec7464d192a50e962546926881038790a13e70961021518202050b101e3cc662c84d9f4083804ddb96fd9ab56be5b297bbb6cbd4ab357f4c55238649542a5fd1ca51032694983975e9807102e62bd02762ded099834d1e740284679e78d889679e892682cd9e830e5250c1000b4aa842792c7a679ed734ac0843d75e7b274481421431c07ada812dc4852ad268c38636c2481e8f34baa8a391301aa91d965e8249239840eae6c71d5ffae8239d64ba69a79c94fce61b659431a69847a62c659659fe68a103102a7800b0b01870202faf0c434cab07f43a2ccc34c15aae4b0c1c48f32a0a107bfe2e03103c70ab4b06c0fa2aaca9e0eceaaeaebafccab10fb202b45038c7eaa0830bc07a80022d5bf8e0d1c0223d6b082794482515518a4107a377ea79a7040d88d0a20e2b4850e108238ae02d8ae28c98a18a43b0d080cb072ae8400d4f3859a5934e5281e69a6daeb9261d71b649071a62acb1c69b74aa790410638861a49868a4d9c51878d251275c78cc9956144e8c91169d79d4a9491c77d491471d88e40170c284e20950c27c332448417b604388a0143772882370a289c61884a16cd21b731e2a685e86440c31238f6a84d11c7140faefe187426aa91d77dc49699d8dc01927c894c431324895610aa726736c3a52a626c3f9a6a69b85f1e61b638efe51e69b5e1e11e594395a7840890bfeaa2a2c42cf44f33006f8a2e001c8aa0a2c6a040ea8abcbbfae024bafa92f3d8c4f38a5d61a310658f08005aaaebaa0aa053ac8a04fb018c8aa020b2a6db44b0d4af06004127000a1510b0a6f8c83465ba0c1053f3831251a73c669e79b22722364923e96484105133ce060010a96c0020e2c8650a1041c00f74087340c314410473ae1a49367ad91a69a64b759075c75b689a65363d678e21163aaa9461a627629459554380985975038a982925d02912390424209a51037d8d8c30d35d240c38f5ea229a61863a84147de8bf24568647702cc10a101f59de7615fb078c283e45ad8d205303040b794000d43c8920bfe5c908641dcc21b2c79cd412c4230818c6c1d3cf2188e4ae2918778a4470f79c93a48f630710429241afb914e7492339aed642737f946cc8c6187442882146a508228ca909623b8c12c57d1c005862083af20060160f28a5ecef20004102a2c66129bd4bae42640e9a52a7c79229bb814b75d15265060fa93063a00a7aa5ce589722ba257e614a9aa05ca6e5daa000b2a0004cd2ca70218184d095c200537f82114d6e806e532f20323600105cfd1011c0e51883ebca10e7e08161fb45085223ca1084d8083201a49883a2c2110a630842a3a6108544c631ad0880f3590558d42d0000d8e7802119c508528bce10d4dd0810e2ae9062810e1094d20821c9cfe80851c54a1094e90020d88a08321e4e00943a0410e98a08432b4210ad1a4c1348f90863520c1096e6883f8fe608747d0a23f0fa3463130b18841ecc1097668c11d50410c62b4a111c650820b4a10854e4ccf14a51885121ad5031170460725c0400ebea00324e0a03068a1db0846f098c744e6063350c2204c810a60b823540d89116c46322371e4e8632751493b6a528c3264530e7fd8031bd49008467c2217bc108afa8c310b271cca399b314207ac622a0660e0803480005996a315b454606c598b9a57fa22a6239e6d504f545b540f80003262006a0cb080062ce0950e540d3073bae2d8b472c62ecd496a97929bdaf88429b48289500cc8c0593853feb807786006332001000e90010b6845075a78031cb48085294c010b5870031cfa00bb3ed461387e10c42108918513cce00d9520841ffc70cf69e88e188e0004240401074324010420a08120ea000712384a32b04d810e9c70041dd0c0031ee8e510244a0312fc162d1f20c10872801c1de0a0050705600e94400837d0e00e69e840096860840f48a6053968c21fe6d0810db880061dd8c11370000a5e14c317f9e905307ab10b5fa40215a6d8052a06b10637acc10934d8811e6f00c0b5c425321a48cb0870e082168c400724b8130d3c010c5ea082178fb043199a900436bc410d7f780430e061b29476a31b2f1147cfbc418d5c1c412d2ee8aea41ac582fe11386a5733e0010890c00646b0610d65702608ccf6a53ddd353076a34a9ac2042626dfc52f6ffdd2619e1c3526e30d6a690acc5297eaa84445caaba2ebca9ec416e6a934594f4cd6d303c2da340dd458044c008255f496dd35e860061ea8c0119ad0881338e0020d48cc5729b001082459ce6b8c94596860021060610622c04227e0d0cc3714221084301d1b045188e034b20834480211d0f00643d0405369a8420548c0bf35d8b20d6fb8a4f6e0508552a72532cec581081c35821610214b1860dc0daa808510908004341801056480841e84602a66490b82477081628b713217b8c3271e618a63f04215a040452e4e610a5184c217bce845288eb08640fe3042118d30c52c4ec18a5e9c0214a408052548318a4f908214aa30c52946f10848704214a6b0c52c4ac1881e6f89021fa0d407b40402c091200a4748020d4ef0043ba4210a8e22cb00b1b21c014aaa6a9b290b06361e8510b080063a2803129440830cfc894b0ec04a61aac6252b86892f53cb4bd00545d5a91d266a6b657258fcd2b42b8ac92a5f05d35740409629eefc2a58c15a5b1f05165d7d00e70e6800d32055164b85458dbc12c1002990840edccdec5df90a00024000a1a3094c667540b141800322bcbc0daa58052104918a551802137da84262470dbb4a3802729ee8042620c70943d48111b413842138513b55a0a2539e57052b54310a4734fe82138e1004231ce10857bbc110801844250af18770a201d979e515640e4c832820c105c5dd41082263010f9c052b2248811886508954e0d717b6f8052f52b10b5eec8216bb38c529d4470c63f82217a45044c7ffa08836cca113b498052aee8d8a59dc6216be40052ae26b0bfacf82beb6488513045898a960e02c18f8801c880231280322a8319d9b8a5d699305049bab6b130d80b8c299011950a01070000be8001c90031d08bbb3313a2bba8bc3582ac0609323db0aaea822bb83aa293ba2a7b22bacd18b160cb322fa922c421448710ba9f90a2fea93a55980ac6080c670ab23c2b2a659932772ab250bc1ac69000b98bb030014a852413f738c2428fe021dc0024d588228800229588226c08226908221480329280341e004d53384306c833e10043fc8822768033b7082656a811368140a00811398a80cf00010b8813df00334f80343d8833558033650847e1a1660d80555f0033b60044aa0043910010710b93c8c0c0a80800c8030000401c8680bb2d83d25608a2920055bc80f5f08854f98056020060adb8554f803357884628092624838fbf305f7ca8f4f60834a300539688447f8045338c65f980553a0055bf08567e4055b388540408212b0b1c978ad11e0bfafa8ba488914a749c06eccb236a9806b23c54d5c226fa4003c79801180042c10930bb4802ea9aaad2b1b049bba2b33babbcb0a41c19a41fe3993b8f212b86b321de446ad48b9c6709a40598e19a413aa7080b8180b01ea80bc298b6f1c41c088c132d91318343ac0600001088002a80bae093abc38b2c0c8805e539c13a81b0a6882d9ba4220c8023720843e600311d8800b380126780329100434c08224580334680334308434980127588211f8430dd080b6aa131c30021e700224782541380231800322b8a6d18282820a812c210b21cc3db3380b897b2d06f3001798011cd8011dc0231ce800e23b0b2958455ee0044018055b08855288af38f0001a50822120859c02062be9455fe88567cc810e308421c0803bf0855f408579a3af5dd04c74db0559fc839adb8cd7c233aa904a2dfa126f141dfe339922a42b0cb078149cbbbab3f0c4976b0212300242d0812c9928aba99baf98b61070011cf8023c988335700b21eb13c488a2ac21b2bef8c8a6e948a641c2c6f09ae5fc8bd5c40006432b3f038b37a932b121c222e293a85b4da50b1bb1b932be101bb9093a01104902d82a933c80022880a87a0c0b98819a9325293881e0d0822280022ca80320980aaab8940728814a7a2622088236c082371084264803624a832220cd07d08010380108600112c80065020100822d29e083369801349082756c145d719a3699a2b3f0801380b031a21b0ca0cb4999b60122019e748351008480038546a80479d3cceb6b8324980352e03e63c8c55ee8055b403f65f0fe830e200439e8803b50c55d684c5e988584a30554108540080435d88339f882639a8302f480be53b511f025241003407083285003992a0335304a6e6a142eda0c25680225580326008335f88228100436180126408229f882236001bd5ac72f78822708818672012750833690031b7082a264033b98c340f0839eea002538534580a53500843b90031aa880502c012250020f2881133801af940324208219c88124480234108439c0023670021cc03127e0011a780227880234508337d0b02770832a40833450032728543798553c7922359a824280820af8ab118c41bf989aba0894b4f140be10133491bb02804f27ab0b270b3abb0a8137c0021da82538fe78022ca0811928825a8135d2244f07f8d028788213e8032bc8813440202268023264021c088122c8b826d8831370010d4d011a0881b2c801bd2b8b3bc20a4861a3a7d90c14e0123b410b04c393ffbb003b01b61aeb8013f82dcb08044e488441008453f0855d38c44718a747a08447208563501f9f491f5ae0859f1586530805404803468004f6b2855c984551a00447400285c4b904bc8a0e4082276801bd09011ec0b38772811c70033a40827f750123f8021c48011e40441df82d6c720340b0833b28ca3658833bb08339000446680434e01b1070011e30011c588323000342508345a5810f488221b8814329011d50821040032270012208011ae02dfe677a02847d822310843f100131aa9a0bc8011ab800b8a0013160821658ca37f0033660c7102d9c0c508eaf20acc2900127688332c8b81dd0803b74001238820f10becd505626e0812070ad347a2b34c18bad41497915baa2eb8bad8a470028000e6880f3758014188215f81b0bc8001d50817f0582c79ad02680822638823ee8033e90822288ac2a50022c98d027482c36c8021338813718e028f0d02d29142eba31cd081c0d75499b0d1c108000b87a9b442b8baf3894b050b01908ce12b8013c62013fbc80b6ec00e1db95c1c8929123813758c644f88550f8035a800425908332c8b642f8b14af0d9fc9883c19583364804f9eb456160ccf40b3854a0fe843d9003db2d9c0e688116c0a36cf40362e8855280044618a72f58833940385ac83e6d0384d4ab29506845703b0554b08552a0844f080552a85a50d0b753488547508444b8375268465e188416b800b674adccd5811a28023108820e98811a888219180125b8812750201240ae1c182047f1001e480224c80a05ac0aacc880cdc01a08f0008e1b4434a883b9ea13ae2a930e180116408b373081bba9b2306b1d42280454d8830c083bbb5a2a9f9bb272a58b02d8de78cc8bb3a12abd2800e2bbd54995820c000b08001c10e83b3e6d0eff09010de00014b88069038b0e78022330812818a62010011d380224d0015f058d30bc8ae2bb230f10018f05de1dfe5d0e2d098119f88221d80119380111980cb3d30b8c748bfd1b01de82ad2400200cd0001290230758dc3b690124c8b820c813ffe3153760844008855de0043170023f58e7267839f07a023fd8034944831e905653f00579a3056130069a3686ef4b8440108438500212609cee82d1df525c2670d263a085e9e3d2593806fa13865930dc5310da2610833d20052b0106f9fa052d15060b4b854588463a00044aa85a4ba004f6cbafeb8b695e405c47f90025e8e92438820c508323c000e24a610f48815106c2dc23411b458237180208f4c49a8b8ca7a90a08700239b08340a0bd2ff0aa4bc18aacf1462048031688821c4003b93450e6ec122ce004410804fe4a4804110833af788006d8800d384f41594fb9d19a1094c1300b94b948d0cbad8225a80222705f4bb200126802157800301c0229a8808d838224c0823290020d281d20e8df0e902622a0a48b4a822780822750832448812a98813162000e28ae13708334b08006c001cc05011e988110300224600229e8b010e0001c184c1df813588e9b05c8800cd880c3f000908cb22fea48d714a097745f48010135a084e7fb84997a044658042218023d4382a3648437000121b08335c08136f80346180433708334b50339e0b1387882647501be828cb06d940f18cc25158a732b86f642da62e8054550843d2803b7540216708199a3034310833710da3f68044010fe835028066140031e702640f85440484552f8844628ab50a66f1ab801206f011e10011590012540c329c081c6013916e093bf888c14be8023102842db804ad10121e3934273802a789e4f500fb21d021098c7b1b89b05b80006a80343280331888221f0b529a8c80de8ee9a83801048834260d656651b0a0033f12dbaad518c0520c993e45e512f80740d0caa0a000718022550010f8000073880cba9032798822138a40aa0012c208113c00227b00014200160d3012280821c28be1380821960f457c70013e06f2090a827280111388108d8131968330e08012c8802845d02293802882d0227e88113082b1c48824a19811028be0c505e23e881979b0136fe82800aa82a118c1401b79403754dacb0006d24024648044c60ec5160045168c64180045b38ca65ebbd39e0045f480439508327e030d45044394083129f0313d7543970044a08846ee2351cf0831cf8035be80539188124908335306246900337f8823d30761d4383157f8ec8a8280c0801c5058110e8014ece4db40030f58ef797e3812948033140033668821e600217d815c535810e90652b1283394802aec28a239877c3c0b2bba9002578ef1608812858f112a0142df92dc93826b54c0220407b16a0d80f1801df23afdeacf7a9f193a60142a96a57abb08a24dbdefa0cb363e6de3d39a2bcd82a34a9cfee155f0090bb037875ba700008408008f881fe21d0744f47d713d880fd8634289001387002763f94c3d87523200226a0011a28014013de9e640111e01a42970108388006b8406353ed2ee900ca2e2ea936821698c73f739a9fcf802748837f06c726005c1a58000bb00015e0810c2042bb5bc2af721a08900213c00a0d587117280319d80c2068023bc87928700386b6804aca00acc4680d6082dd0d021c285c4cc0122768a92700881c5368ccc041d00509171c8ef030d20404082251be94f000220da741343ab8305203078b166ed0cc18912309120f1d2e0c99f1e101051c62403869f3448d9a275fa4b879f244cc4f315f9420412206a7132453c0889182048d98286aecb471c3068d9a3569dc3c82fec488d19f4073e4f801bbe7aa93a36dd09471f2a50d5c35729c946933e38183070b2a5058e0c00105bc0e16305860f8b083c20b0e1026cc80f102048f1148464098f201cb080e642ec0d97266caa0196b166d18800002010ab0667da08061d1a1173c3041a141862148b2a4c13283c489161636a021a26188943d7dfa0ce1800002080b25188078d2e6c4850a0c2c50b0d0c143410e2ad2b481e3a2438a2326fe56d020c24285c87b5b80a880778694073a480c89a243c910349440821b4ebc57820915d1a04203793df0c005224421c2021b98a001051d8ca017842134214206347ca1835f8131f000061dd04083071774d00108219c60c71f8270c2c923fe7bc801c81f72bcb1c71c76c861c71c8028c24820896402ca238f80220a254f5af26428a17cf2152080e8a84822803442c9278f24a2c8238d3c4209259058c209988f7002899990381226258c08f9c71c78b6c1e31a73c865e420810c62871f82c8c148236edc71871d761ce5861f81d811481d7394a1044a4a28f1861b82a421030b25e8408312589401a91f743831c50c2d50c0011339d4d04007264aa61703b9c6c640622736c6986294c947da6b9169b69868986d36db61cb1a8b4001278050c20926a8c04108347090810958fc804002226040010216146181051acc10c20622d49a441117d4e7800c4c380104041760514406191066c10844d09041fe050473808508345451c51a490838601228b5d0c41a8dda8147144e4481c41238b43003114b4cb1861a62d4b1c6c6524095861868acf145cb6aa4e1c4134414a50413531cc184144e30b1f1534f44f1c71f813242881c813832881f610df207205f2dd295578f5402ca27a170828928a290a27598673692c823985c5934989428f2492aa4d042cb29b9d832cb2e73cf8dca29a23092a31c72b0b1e7908dfe8168936a63024a23647ef249238c001208989d80824a288f384289999650620b2a8f7c02881b767ca548207f1412c71c5f1c61c71d7f1cc1c20e4020e1d4df4f94b1d31a4f3031830b493881460e6cb891c61032e4c0c30c347c3c03133bd0e7fe824b3a60c1c6132d8cc07c134720d1041632d210630725385041050e6470030e3cf840030f3a20e1160550c401c265cb7ec61967adc1165901ca2ef6ac053c4002e04cab041d20c10c72f0842a142164250042139e00852440010b7080831be0f086e92d810d7ed0601f9a500538a4e10d6d608306abe287f2a4010d706844201a110a47fc81129cd8431be24088a709c21043825a2022e50841086a108258431ba0260837c8e1884998011292601024e460083c58510f92f004a21ca1074860020fbeb0b12028a10a5f78025bdc1088233102128f08c4e302b13724f981489d1ac45706a1083792e2118ca89c1ccf9408413022118b608420fed0343b00fe225081fa4322dac0084a888216b348c52c6c518a5a9ce2146f3b052848e1355490a214a4f0a42d48810abbe12d15abec05307c018c60144318bdb8c52e76c10b5ef88217b3c88528dc084a3479254aa0d05c25e6648a51ccf02b7e5b83189cb00697f9010f8dbcc39112810735a0c10d6ea8c3202a310a5084829498700420be90849344650a2769431566903c128000460671420f64d0810d9ce004df29c1072e0001826d200709a3c06032f3bfff55e6599c890d021c803fd8e06f33c9ca1f02962085254081085ab8a01a96f3863e1082537038841f0cd1074318c2119c60a9213ad10953984215a960c52b6e8ad35dfc2297b3e0c52be866d365ce94fe4da148852d7ee10b5ffc6218bf786a3178718ca502a3174b5d6a31b25a0c622c751857f5452e75d9cb5d90021294b01223803487390c221181f01c2438c1083524e1084a788234770408469ab572935c5c2844618a53e24d14abccc52e96ba4b5ee4b2178c9d0564219b4bc5323697bb742c63176b0ba9ee8216b6981bdd12bbd8cb32361753fda52e77910b5ef44297bfb4c52e226b8bb7d1e216bea01b2f67eb49545c32159d3d8529baf60934598999a2e86460c10458b3510914667bc422e0e4d63d40926c90e81b1a98900639fc618f85405220f6508635f8810ddcdcee1eec4032391802127f700370360018c93c343215cd0c7e1b63bffb11e033fefa7b0d013cd39ad03080329e59c02160cad24eac4215ad50c52a4cd1094f98621532ed84210a51083f10a20f29e544272a31535384621498e0444d51618a5da4a2c5aa08452744a18a5ef87617aed8e55295aad4abee98c7bcd4aa56a7ca545f2016acadad1bdd7a21b7599862719f6066296671ca54848216b94c6a62637b8b597856ac61e5a52f75c98b549c42159ef3453176814b5f6096cb491eeb6273910bdcf2f2b4968ced627be158c7fed417b0f5c531c0fcd853b86d6e6a861b334f414ac22a5acdb9a02ddd220d5c51640d15b4e0ada56791694b7ab2939f0c2e262021ea448c254f904844dfe0229408a2a18552588356d6f0be34c4010d47fe38021a9e908639202104fbbc400840040422ac04073a204f1569100539b4610f6761c21128d40106540058c2eadf6b4453188c5a14c0015e0db6f38bbf87e24f0b7528448297d38711fae1c2aa788527163c094774c211a678852a70fa8a5de03b15f8b6692adebdef5c3eb5a736b6692e6cca8a82ef1818c0f8452c7f918a5f8422965b8d25c681bc0b6064f5ab608dad2a4e9149ab7efc1797a41b264f5125377da214648e328b238b49329ba214a54045308f54e252300913658344d64cf13615d382c49d4c799953410b5ee672ce64b6c555815ccb5e523daabc4473551deb53d83e7695b2dd85d6456ec9482315b2a60065d7402174d9ba3215a2a8fe5227ac048941d8d00f7ee0d18ef2d83848c891ef81d870eecab06c392881084d20c21072000226008504221041bb44f0800870400317f840f2547201f6e0a50223a0810938e0039a31e10b33c0c00632f09d0e54c0034038c2c00a7c80fe8e3bc0048096806fef1a710f983508d0821658aa85379cdb101d3604880de1895560421018e6442cd080ee42d481101d2684217ac8895520921337e5a95237ee0b53f8f615a7b045c05591cb54b8e217ae106ac8435173f5b738975ee5454f5531e6392716ac2817394fcd0d2dcc59685d992b7dcd99ec8d95cc900d71422894c2db0996cdd50923600d39a91c4d9d9228b0c266a15f26a1dfdc9cddf925192ffecc96288d821b39c92960d24f2516301c43c77d553100da5739564fe19f2fe1126c65526c8dc2279082d2b91629b4912a415627515a2894951f490e261cd2228cc5212192e820921cd4c15ad4c11bc801c9a0011ad4d5ad8d00056400070c4705a00b0994000554000424c606b84407585e09801e7c20d403908f6038808b7c00077c8076648008304007f84b0574400890400eb8805e5c867c58c6ed1d46ff78c644dd8f8165db6b089880f1cfecf5418269c2f24118f3618221604227b04227684286d58121c0814ae58421ac8216380121c08120385b27c001bc400125fc9b2ae49b29f8010e5002293202e934822a485829788295cd42291802e5a882fe2740821f3c4270a9821c74422060c21f8c422a040227ec025b059c13b49b2330028eacd825754d28281a8971822870829585c22204dccc411626a15fdd24d5c7edd22f3096c87d56dbf0563d7e962db0020f321699d10d9be1d62c28d66c85c97115e0d50943d52d952d5d1d45ded64f5d5d2f48d667811997d9422f709d67f5162b90192aa0022b00a46f99029a8c1393c0918e50d71fec811c21c9551cc1131c811c24011170211cb0819fa8c00a6840068c4006e8c01348c1140cc8b694cf03f0ca0940c11094005f50800e2c41112c81c0a880807800073c880394866184a5663046b61d0b6804186640a2ed41e26b9086251280ed55e24411c01268fe412c780221f8412c10021fc04125a842271c82119000f415822724664dbd42270081131c4213a4c1049d800554422a6481bc2801f209c21bd81d1ab008f700010de0805210411a4cc11cbcc1107c000eecc110e8007eec000a38810ed0260d088d095c80c2a800060c01141c010e384158ae801bc00516008229cc411d40c11bf8840810c113f81306544009a8c0090442130042146c1723a0022f90df2e8098039e4229b0022f24a3259d1d2af01463d942277d2407e69225e9a095c596a1a516dc04d327089da295c2d169dad2f9824466169bc1126409a4dbdc822bd10d303cd607821d6b95e02c6c592adcc2a35dc91cec81d9f81c2644c2de5c171afe24111bc4c11ad0851a944e6a2ac25e8ac17eec800ee40011f08012188112f08414b8800a94400ab8000e149ecad08018c8414ee64020924f055c408b50401a3e4844e9859296cf8980c008e8807a68c0080c810f7825ba2c40b86506043c48034cc62442a26c9c657fd9cf80bd650140c012f4011668c110ac812140011ca04227c40223545828684220740288ad82bfb15f2c04c22ac001f70c410898407b09421638000a8c571314411d24810eac531620410a78001148c155d653063c4113ec80901a90077c9e0e64c0056080098840098440751401062c40114881061846ff4806097440035c401d6648613c480600c109300004005807d4c009cc40fe09f440149c0009380123b8c127a8423455c11d7080a8e60239f2026ff5023108c32f94524fa10223686467cd426bf54254f919cf7dd62d541553a9eb5409195859122f715c900183301483631568849220bab6d66c191a64b1d99cd556678da47ce2922725569a85646c9d42989402dc0416e5400213b5d12228c21ec4811fbc41196c8f1adc5a1a0809160e4e1bb8400b044112a0011290800738255e3c080530000558a90ba0ea03ac2104a4cb06b880d0d4411d00c51a2c8a18200118b4c0649046595214b22c46616c865b4e94b2404bfee017b450c62168c1061c8006c0412cd4c112484f21744221b0542160011664c121d84b09ac0121b041210cfe028369c11ad0db2110810e180138f5c156f441164401f7201e0e9c80a8944016f49316546a1de8c00814022610421ae8c014b8011610a20ebcc12b18c1057ccc1138eb1018c1117ce5018880121c00afccde013c6581ad467f3dc625ce1e97e64f017480442dc6094801011458775066208402170ac220e44029f0541d3841063d811bb8a72388c236569c9f595a2af412bad62063f1d9544964f60a289b1dc3be1e8355e99945fe98f7ee592f69e42e49592ee859a6ddc27b5e5d2c2d15c416ac7b8ec2d9318930f69da8c91f9a94028e380925f811a208c22250c2d278052318912378c223986d10cc40e8bd48a97e400bf40b012d5015ec41a4f84176fe29411078d311e8008ef2133f6d4602b8a50100cb0308cb58264645051843e11e5db2a5672c0b6634001114810a48411fa880099441047dd40669411274401540a32168c10980870ee88005884012c8ed72920010648011d00009bc811160c12e4a0107748701494f0a44010ee0c008688012f8c12444db08e828080c411f248111c0260e0c220954800910410e6441c7e0c007a0c001a0c01c98c08b8c406104805caa2997b2865a32f26ad0a508f026053422611c40008c1b9782480274c0093041a034c01320c1020882da56e076954223f8c239791242e26bfc4a6483c2ebd5d90228d8eb46266496750d29800228cc0d798a02285012a589829390c2fe2929a829a0422f0803317416c42916589d821b4c5229700db79ed2c1ae523227d52f0ce42c289ad2f5d11add1d201091b3fd08d104c22858c224e001a3ac8114ccc005a421056447b680cc09b58113c84019e34052d6410b1d228cd24015151e0dd4411f348a1b4481120041d1b241e5910005ac6106b8c049a82cbb40805f3854ff9c694549866b84740100400994001c1082162cc11a608114c0011624011c60581f68c113430002a0000af88d1600010264c01710c2244481de0ec11ec0c11f1c021428d0a66ac0048d407466406f68000de8401d584813f8f0136041199f400a0490ed96401ab4a62f044325582e0b6cc0037cc120c85a1b18810580fe0012b0411fb800129c40e75500066000b0a4a1b3b40602a0b51a6680d55a2dea3240ee25546610ebf850c66304db03740010d44c2700821ca8012c81552e98c28f19c3be769c3074b69e65dd9e6de42e742b29c80128f0023081025508232840422a988222ecc223b40137b5811988811d34c2f99982987c0523c01e57a0029935c21a8002075e1a2a2c021b24429a7c02e79442937d02d68c8299f8209b3c02303f821d1c92e638b71f110d700b23d158cc1f2cc21a394e20acf75b7d02e9881a25104d123142d3d8dd1e2452d10c4e2008821fcc414be8ce1ac8411fa88176294106984f13701823284183cc2144098bb08486fd6c06b958e709144247fe19c2212c814aaf1b16640016f4411da4400e1401274c42128000e845c0026080c294411540810818c2127c80f31941cd5c4006e0800c50c00c448111ac8106ac812760811b604258938005fc8507544127b80113a801123c8120a84121d0000588c01cb440076041a17842162c400914c50650800ab4800720c11eec023546411988810c08480660c08658726ac8a55e37c7ea3e88b1f8f5b61d40cd4a54ff28c6a0472d64b478039cc027d801113001207c02a1ed563dce020c1683c35de455e9d92e0433ce35424e908011e0c111d400438b011128b94a3ce513a4c00218800ae4c00880400b54c00938c4131cb80a54f617344227dc81a24cc523c841fe228c6c1c588523588a30be1d2794c228f05cd484924b220a750733277c029ca48903ee329b3082cf3d8222ac81124c929374c223448d22f8011ed9761b5c111330411b24825c9dda222c0226b81c2d60c21e9881797d811308c1e9b50012241e121cd00d7cc08610064c08d45fe005039c4011c4c7b4e145b344ed6278800840800e10810870c055364113b4407f680216a8400668c00300410930766664800c9cc0553a01f720c11114011aa00011589011388121c09a21a081114c504b9c000d0c41138400420da207987c6194401c2441cd1698132c0104b0a68ad04005700060fc45074008d67f80126080bcc48127844220dc810c044109b4011dacfe0111c8013ff403dc9742d33cc10e7c40523a001f38033ff0033968420334006d48860368423e38433e0c830424400218062036c00f6c423ef4433ef4810440000e200009908c18400239ecc3313cc237ec0339f802dc809d30c4563118433dec83e8db021b84422f94c110a4c111b0c12664422614021aa0c21ea8741205011464423364c22188c22ef80112a8c120c40116f74011b441df48791070391b3402e4d2c230d0c2a9f0800c14c1114c931a00423ff0432fec1139a91d2d9c922991027573822514921e41022ffb91572442e2fcc156d088a899571cb0411a240140b838f1c4c913357b123d62a48851a3858cecfc91d306cd11274a822079c3fe260d921c69be30c182660e92164f70b42041810102040c0a1458f0e00283991c1c3470e0e041cb030b1a04ed2993039013168cf0d461428405040b2ee468f1a64f1d385838a83041e1c2893a2736f42124b60f87256bfa9ca060818485237504194a1b2205132216349400a123c389133ade4479f326501b1a6b9c2c9143c4434d070b9e4266e3cf9f3e7ec914f1dbd78f9fa6071b8668d0f0804283155bb64861c4c44ea74a6ad248dcc7af5f294c6e90fc79824407962d932649b1500104850a182ec8202142cda42d53b4a8a84001f2634dfcf8c5a23229568e1127d26030c2a4932556bf2ab122c66810a8536a403d7a94aad4a0477f70ec01844097febf61b40fe16718ce5cd9a00e4a8e58e29336ecb8451a659651a617524cf904945b669965367e7cf9c41b7e8cf9e4145a6c4965165b7891e69e7dee01e61353441185944f3e01c61e719439051e7bec0145913f0051e491351a59c71e6258f9e70e25d050a30d251ae18c1f66f0c0c30d34f090e34a31d6f043a235e670a38d39d2d8c30e36105a04924738f984425340c1443e4812f9e38fc2d6102490421a81841141e6c82184370a91838d39e690c38e39da18139236d2c8028b369a100183e93a088204971a5080a706367060030b1c00028d131a3880810368d882831cb0680082122cd0218a080ed800820a44600981031cc8e000083cc0829049d6fe58a1830c4680620a0a4898018a32eca8438a0e4c30c1820ed878c2af13903041861692f0638a070eb0a0859d4e288184111680ac001fa008c001081a000285a70a380001074ca0018b411d71430737eec082040fd66863da144868c39013f85021041a4273a0881338e8c081045e72c0054392288383139878808312d0f5f7829d7ed5a003112240e081052ab020081502e1639127806e2310419c40430c0d38f882810a3e3600a803123020819f0ef0d704142a80c0042880a0c18a2f54b0e084294a61c489548cb14594537ae1859339d470c4945268d9c5976278998517bb77d9c5965972b10514504c3925155a4ee9dbefbf4d79441140ec4058cb44fe460985924a0651a4914adc5023a236fe58d3145350998594504621a5124a1c7a44944f4209c53545d69802893d18c9fdce3fd860430e3f7367a4903ff650638a3682108106340251e88f349eb0930d348610a1841028e8e0830b3c00576038a0386188f0331001091a0086a208000028008226aad0a28f21ea58e2010fa0a8e30707a45842051a4e40041d64410b2750011696b081271461098d3884093c908442a4c10982c082ae20f098542d6008274040aa5c40030bf080109dc0820b407018208080691808810c3a90c22560c10825f080056885830d2ce000112882082003999fb88401376b010f9a30041c3c210a75600309ead0842810410953f8fe032738b13c23c40b0d38798a074ac0819638a0004fb9570968000190fdaa0004a85ad50a70010c1ca05f1440012a5600b025a0c0021b388069b0e00113acaa6a0430644c16d0af98f8eb293fb1894bfc55b5c7a0cc0498d8032604a184404062108098c10cd8d08846a4821124d8832f6cb18b5ff80215a0e885df78b1b762ccb218bee0852d50610947700214342a45284e418ac3998214a8f8442950818a539c4215946044274251cc501cb3149c6844f33a018a4e34c2118f704423e4a34d4650c2998160c49a5047894f24424c7650881d1201092fe5ae506e98831dd0c0913288210a73f8031cdc20882b25210319e0000a4e500426f8650839a0c1fe13d2c00635a8800106a06301b2f7011270ac2b28d840064c00811e5ac00243f4000720b08012a4e0012518c2121cd0862530e0041da8c2053340041a100107405842f706013e3ea0e10f8750031680d0812770e0025850810344d0ae85b5a400060800d40c400004148001296d000a1e50863788e000064040061e80562554a17a1b90c20642700227c8a1376ea88013faa08435d4e1024f58831120802d41846a0dc0f240cb18094996b8f129bf3a40005cd22f020420008a244001ae4a59cc06800002a0ac6741ebd9000840b4949d2c654d1001249ce0009735240a0058862170c00244c8c109c4d080251481062b50411938d1b75480829b7dc2c488feee564b61142343737b51864ea1375390731081c0042d78115d5ef882bbc0e0ee2ffed68b59a0029aa433c52c444109730642119c201d253841894774e2119600842108518951a46e9b8cb06620a2300523ac010e7898820ed6d004341402107f1844ee06b18886ace93e7e40c30c4210042bc8e10f73d84320ee84d4213061099890f01fe2a00308e880093898c11156d08099908a010da84011d0f00519e060630a98951168a081297462156c28421fa08085122080b20990021b1840012c9ca002d31141af36802e14b0410b38b0c00218e003422cc1041b83431548b5bd0670200588740a986db2000a303926fde2ec411b10ad053cb46a13c0990816feaa2e27b0550d6c2002098a4032117400080da080124ee0809728400d47a0f2031430840e80b98d31e16c9ddd48593a7eba8d9cadec6949bdd9d6767aabbf62c0ababf6af7fbdda016ba180087680032518e10b37f840073ce0810ee0e00821d0000632d08232e0e1098ca804b540518afb8c621090c845dfb8bb5deef6c216a4e804264811cb57669b16cae46e2d79d18b5ef862ddc038462f6e810a6fcb08126b50031a6203293afcc111af8b9d7983390a55d06216bbd86f2300e108863c02149c50841bc490064138e2df0a6104261c91083c21ca0f8cf0833901b1c9466042148fa85319a8d8bb44c5410e4ca8c21bf6208739c4210d71a842062a90feadad15620e1bd98323fc540841ac21073a98821520b001f679b6a57d3082054ce0830c3c610a50f8c1014ca0027fa94002feda40031e30d94e63c0013f2901046c42c703a4f5010d60c006d2808205406103a5494002704683327c850218b854129ed0841bec10031f104d94dd2e82211cd601af16810766b0afb232c00411f503b11650d9027c40ed859c2c930f496a439a96000c0041044a4b5a01b4d18d6f5cc04e16d0010b5ca0031c50c20e3ad081242881136bc87dc4a2a804242ca272a140452a1cf187479c1715b6184525144e8834a8a1094f3802e0a3a08639d481bd0f66c4233ee1ba529082447fd39b2d7d718ce5ce726fb388ae3267c1ddfe5dec0d15154a262966f18b5d1c2e15a9783f294e419964a4744ca1dc4861144ca1ff1ec12120819c02c11128211546a176766008ee844d44611438414638a1100e410b0ae1fbfc84bdecc00f046a0fd644a06e27781c410e942009cee708ca604ce2600f88676804610fca000e9a8009d6a00c98e006686006688f03ca675ae480100aa30664e009784e0ccca009dc080a9c6e06c20801b6450ba68003b4606576a8016860036402012e2bf3342f26c8a8d312600908c0d11eebb20260ce1ea002b68a0050000b2420260ca0015ca00836a003e68c8e28800522e0015c2001e2b004ee6005e48c0892a00f964007f84d05202004fe488c3400082a800550fee0ee12e931124900e0d0d4c4eeb216e90d4f0bb33aabb2464bb328800232680d76e0067000077440075c200552c005a6e006a4400c6ee0068c000d08c10e72000d00214f14c2701821103821bae06b3e7c416f66a172c6eb1106c19946f00e00e111fe0f1340a1f9668116b86d16c42bddd28dddd68dddb8cb177261dd02e714d26dfefea61e4fe4164c81130a8edb2844bb6cc11610e7144687140607142aa714045211c2841346e113c08912bc4d1108c1c054800434e085aa207406c10ff6e00de4404f16210403a1113841e1026168d48411802e1abf4fc2cea99b280113cea94f1e011320610f0ac111d0000880000aaac00a9c200aaa80098a8003fe7c6024e220106cd0e698400842e01560211992e119a8f219a6e12ab1322bafd21aa6c11ab8922bbb522baf921aae321ba6e11aaee12ad1122da7211bb6611bdab21acc522ee5321bdc721bb2e11adcd22ef9f22ddf921beed22f05132fed122faba11a08331be43231fbd22ec7812f117331f1d23021d32ecb211df8d22ee5721c08f3311d331b3c331bca611c0e5331cba11a46132f49133415f330bde1321f731cc66134dd721c30d31b0a7333ab2136d3611bca01344b331b70d31ba8e1307793348bf330a921398d93345dd33897b338a5931aa4211aaac11a94333a97331ab8b31aa8813ba3133c8b933badd33bbdf33bcbf33cb3733a0f331a96b3fe34b53339a3133a8bd31bced33adfd31adef33be5d33bc9533a95d33ce9323b49d33eed731ca0b21964812ab1d22a1b342cc5722ba7411bb2b21aa6412ed7f22cb5e11a28741bae6130df1231f5721b7a932eb74132f79244d3211de8a1375bb437dd72457b731bc6a1456df3377f733751b31c2ed33739134767734751f3382f73451fd3486573377f331d66934999141d98b4469d141dd061346593475f934757331d8af44ad3c11ccac14699544bd3613765d41c56144de3011de8c11ca0544667d31c66f335c7211cbcc11bc2c11caac11b0a1431eb731ce8f434ab414fedf44ef7143a0f753989531af8b338bf811a0c943da58151a5c140f7144f13fe15520f9351bd331cec941a46734f01744f79943aa36152ab211ccac1500d341c8a9351e7d33cbd411a94f31aa83355ed1352ed54400f345549535565731cd0012aab522cd35243d5b22cd9322f27f42cd79243d17230353330cb61307b7346657445b7011e48d4378bb445d5211de06145e9615ce1e15cd9944a9d9445d3814ae9411da8f44db9b41bb2351dda8145a1541edc555dcb014ae3211ee80160df341edc011d847545d1014ce55446d37545d7144acd811ed4f55edba14ded1561db011de2411ee2811d1e56633d565fd1811d1c961d38561e38961da8b460db754dcde15ecd2166c3e14bc3011ce2944a01f54e5f736657b51cec74557bd53efe2f955517951ac0c15021f53b2b555429f51b2e15564d15565d9338759655cd8155a9211c06f54e21155021954f65f335f95467d34167af964fcb811ac6216647b31be4746d5fd66dbda11bbce16dbb616ddb014ddb616fc7811d88f52aa1012b8f352d093743f3f25911d7433f54301173321b373055b45b655445599472ebb55d57141e24565dd1011ed2b573dd1561d5c173c3744de1a148dbd54d5b9473d1015e5bd464e14160d1b45de5b55d45161df89464ff156551166045164c357664379677637763d36163d9811de6e15fe761797bd7644d76633b161d38f65f3dd61d4c7664939764bf7445ef3561d94166af5658ad14507d3667e7341caa14fe6de9746d81b64e0b1568abb61c62b64eef14507f966b55154f89f36bc35667df37675715543d554eab5667d1a11bf2d61ce8f66edbe16ec7216fbbc181db2182e7761c6c568223f865db617b2b786f41381ef63679db81581d3459d99270cf728511f742d7d22c43d443f1f243afa11c16f71a1033372bb7373953465b941e4eb45fc7b5733d57643d775c31d77337576257b448d95465e9218aa1741cd65465b3e115c88176e1756413967a35164d67371eccc1737d57631f567745b8623bb677ff557aab777845586339f67877571e967763e7411ee82182e34136fff58bcd217ce5017bad377cd38177ef3579d15491fbf535e5346621b96ef1d41cc0fe216671f76a81764f73d66cb9561cb8d63ebb4151c3a11b8ef64e0bf5522ff553ab76930b759575d64ebf61951bd88231d86d2318836fb9826df64ef7769723f881fbf68391b71d445884d9819889b91e3a368ffb20a33e80059ef903a49905a0999aadd91eae921bf8e099ad999ad5801b9c1587ab61710f33867db337ab75467d331bd2a186cf994b2f535e41b776b9541dec195edb151ef4b55f13767493d788f5951e54f661e5a15ddf759ee3c1760b9a1d24b66e3d171df461185e0006b8a0a26100065e6019127a8d03b677a99477a9778e2d994bc1814aed611862e0a2559a0b28fa052c611fbe778ccd611dc0214fe58184551692e1c11dccc11efe7281052adaa26b8019d4411c3cb56ef3b46cb5d65371551a3e551c42d90b545aa55f2011d6a1520df454a9d394f9371abec15351f51b26f51a2a551d8661aad13aad2f5a0cece180c3615227356bf7b452e9b69667b566ef94ae8f961cc0a194fbba921f181cc401921d981d64337c01fb6593b7635b01169e612ab9410b5e60b25960b249811ba0811b343b70ad011aa0e11a9060b2457bb449fb05ee009c5dd81a6a60a2479b07c060a231da06ec81acaf811bd800b62ffa056a00096280b52f3a0658411dd0b25a8500b773db12f4e1b68dfb05c6201dc461451d3a0e707bb2630009565bad63c0126ee432f50111d09aa5d51aa349411fdc81a71336fe1dc2571d02f990ddd490cd611f4a61a2c11b06c6c01edcd41cc2c1a7692006e69ba2fbfb0b6ec41ce461186a20ad798019e0614fed210e301aa335441ffa011afee00e28dc934f591c9ac1b82fba0678c006d21a0cae6156f9b7529796381ff554bdc1abbf011ee2a0bfa7fa055a21c5b9531ac41a4f2141aa57ba0b062119a2a110ba00bcf10015b6811abe411dbc3ba861000ff4411cfac10c901c0670011e4cf918c09b0b62800e122117c8611e347b1ac4611dde21cc1b9b18a0e1153e40b42b5bb4c36019a0a1b3a7c1b3b9a110d2bcb4efa01f9260b4735b0fec411ab6011bbc60b21b1cd0614011eca11ac4e11ab8f41af46115449baa053db7e9fe801bdaf94b2f931ecc40c31b5cad5f8014ee214de1411b5e3bad311d06c0e01ec48147235abefd5ba56d4019a22108283ad66120067a411ef234612d99a7d7811d0a5684eda119ba20d62dbaa25fe012f6a1bcef41a2597ad92f9a0b325a1fdaa1bc13f6a46dc0c5677d19de211cd461165e1c06bae0c7631db8e1211cf2561dc020ad59fa052aa11f701cadc7c01fbe7657f9d71b62d994a5611da821d89b5dd3a9fa0bb081ab75561fbea0d9c11b0cfc6168ed946ed9411f189ce0fd3bddc5601912dc68bd011d9cdcd11fdd0660611ed6d66fa3922a03f784df1c1b46feb323342d03571a2e141b2cb4e5d7729c7b1387c3612d2f731d7a731dde121efec275e7d5c1e6c37545c3b575eff99ea154bdd1b475e7a175e3e1a1fb591d06194c57344fd9c19ecd411daaa113c0c0066c80bf035debf1c018f4415f9ddee9f5d51de6a1bc5956c0b177eadd211ee03590a134da85f7ecdde1a6cd5e1ec8fea6513663eb1e65c357da4d16ed793d8fedbeee93378f79dd6451b6eeb1f7a6139fa7d1bebc5516ed1396a7d5a1bc63761d2079edc3573641181c269881411f9221b9afcf9694199894ddb6504b79a9f114af63b6afc3411cdae17ebb011dd0a3133ca13c92615cf3f66849f9af33d8f441786e3b5881d98194dba1affb9683011584df6184e5a11eb6b71ea0722a03171b48fe2a597efbb97f1a545ee5d112fe1b0e375a9d751ada99864914e755541db8c19ecf99449f1be7b3d59ed361e8897e74b778e8a9541d54b67301c29c3975e80ab273074f1e41740be199439790204178eae8a95ba74ede3c7402096a4c78d09d398df2e4997ba7ee614179e8d8b1e358d09d3c911bd1b94327cfa5cc97f372c69b19b29d3b91431faa6b27909db9970cddb18b7710a84e77ef8ace1bea14ebc1aaeee2b95b674eabcca20fb30ee528302b3b71ead8ad739712abd3901c45ae13cab1eac0b0e0040a6cd7cd5b3881e8baf915074ea94070decc01f6bb14a950c0ddba493607ceb24bc0ed904276dc6e9c50767dcd89ee8cbaddbbd59debbd8295ecd93368d0a64dab0d0ddb6dfeddb67b4fab66bb5ab56bd8b64ddb766df8b5e5cb9197db069d9bb86de9d2ad839e6e9b3a75db28a6db5e9ddbf672eae0515467fdfb42ebe2ca854b872e9d3978f20b1634970eaeca72e5d4dbbf2f5f7583fd67d34808ada3943c09c135933ae59863cf4b508555133b2c11745039f7a5b59d4b21e5a4215a2f29269252ee3c269239609506565c7e3df8553beb88e318618d81231f453339150f38eb80038e53e2b0e34d35611195e2419221061947ebdc2510582a3a76979343bd33cf51eb5416ce605d82534e66407a23a637deb463a6995f32e6cd838b4953da5fed80338e617f61668e9d408233273b4889c6276a91a9560f9faf25135b6dbed9561bfe6fc94d730da49062930d73cc0d87dc35d041a7ce70d55d071d7fe9d0775175f0a147113cf135845e79f310338b3e32aab84e3af6e8e3062ecdcc71cf4219ddf7523f8600b24f7b2dcd33cc2df3a8cace3cc650c312423fe564ce4f4f9564525d396914d64b6531640e3e6560338f5268b5840e3e7154b2cf3b9d99134e2e8fdc82cf62537a76a263eab83b508a22d9e7d7bbe128154e69f9be43a34d7342c61266340e368e19bee8e3cd359ef975578a988153f043dd746ce79cfad442ca3c4b691ca55f768613663771de6999484062d69837e33816a762998d03a4cb9879569acddd8c53146a22b5e5a19f1ed6b3da3bec1c9a286db6f1e6686fcb2947fea970965eaddc72dc5487dd77a6a2672a75e58d6aeaa8e8c56791aae9d0538b3ee5e9034f1c94e8338e3ec378610f3c183154537eeeccc3082bfbdc4a4f22a4e8f3ce4cfea8f2453d2ce9238a30fe6cc3833de5ea138918fdec630c18ebe833133d485cc28f3fa57ce14fbffb3463833df6ccf4905f2d99f32a18c61caecf3cf844a28a3c7d8df3c53bfa90538622f78cee0c0fcaec530b1aed3a130933eab813ce3e88c4b04f3de40861c93d276913c32dc77b71893cd4d8448e17c1f41e092cfaa4d53e2bf60cc64e2e7aecf33b18d8cc898f45b4011ff0684622b2518e3635061de3680c3d2291088e91c91df2b24733cc40887ba0a93299f14b9786d6fe17c140663253ca93370c2394871c6431efea136742d392ceb8242c3512c93872622179a4a61df5e8613bb07528d9d00637b751d46d8eb82848714d6b960ac735d2f1c44d65873f66ab0ed9d2d19f5571043e05f90eb860729ff818e57af4b1cf5390b6146ce5041d1a0a8b4d4a0217b8b4a42d3391c79346228f78f4641e7c8cca1e5942bb92bc045b8384e33c22842e76a423859e69898712e917c598c61c8d91e4c2ee24491afa854f6b49cbcb4a531a1a998346dd208d9438c21881cce35deee8cb9e3616a73ad529302e63d3f04c2334cb98b06066aa8ccbccb44b3331864eaea4a440c2b449c7f8e94f9d39915464929376f8e944d394a60e5593b4fecdb48687ef68052c60214468cc66888cfa0d34a2111ce000e737c9594e36aa810d4c696a9ed4491bd8caa1292b52471cf61c5b7500249f7514a43c1ab9081e0dd2168340441fd1806022e6000630d0410e89b0442d7811097ae5702638b956497e92916df1f18fd66a89202df43b5ad04219265be1503ca4c690ce831a99a8052d6e310b53d8010c5f98032266f10d6f648216a2a005caf6e297e3e94111c1409832c4318c1a7c632882ba893137e4189174c62630a16481ce352274082542c2cc9368f254993449231a69529337a4418db6bab5ad70954638d2c4986f4803af77f5655bc3e1b3b25e4c20375bd8bbba753191c8e31d8659e60e65d89977febc8618b2994d391715a9ccea0639d680863a93b30de50ca71ad0690e72b6f19cb4b58a3ed7f9db40fe599e85d88722e5c8123c6c9b918428448d6e1b884bcae58e7e20620cfbd8073fe8708b7d0c651efad8031dfce18f66f02d21fec8c413acd10f7f940115fe70c73eb451857ff0c3196558c63e7ad28f4c8cc11e279a69192cd10f7e2c820eedf25349bae8a1ceec231362b0c77ef1005d2190c25dd2ac47336a800d86082318f7604737fc218a30d8e33310cac4e2c0818f2f58c21fedd8870d8a218f71fc771eef68de3584078e7be8620ccab087385a8c1479988114fb000bcf6849266fc063befba0875cddfacba07a23ae7b7d6bcdbc11d4bd76fee9c7421e8ccb0233cc8219c63299f15965506398be5ca6467ec9976920eb58a7c95069eca8473b268b28720ed18853cb063622a5357636273b9bda06023925c56d60a43ceb308f3dd6d1373f9bc7cfcbda4e795693909edc76a4f8d8634f48c2478af031a425d1ada32fcddc5bd5a377ccd5873efc710a3cdc83d33dd11c3eee218f7acc43d56ac496aa25a791473f9a24cdc2564f7e8843352e975a78e1e8415c928e9028052f6169875887dd16a72045248311c8222183a080a1c5ab791248651af863c1dc5530358b6b358c518c6888db179f988531c09d084694a214bc28062d4e618c59144319d4a08634be510d24ebdb4c704dd392853ce57134d0fe324ff68c684e23c323f5c59927124a34d92166a6e5579a1ef22665a3b666cf1e1138d250e2a398735a286a6a1bd22179dab4d39f51d9831b820eb4ece021bb432e6be6b74d48cd6ddd1357f1517323e5a33c1aad11cd713ad69dae873d8caee991aadae7586235a657fde8a5b3ba872496873e8abb0f4f770fd5238d35ce4bd24335364e1faa8e075486a243aad47195682fd15388b26cd590385ffe8a12901023419a01966398b9abdfcd410d63f48216bf28c6291c010955fca1052df000083ad0810f64c0020e7840073c30020b74a002917fc007484003c97ba00318a800052c000217e0800623f000164cc1eeb51ac3178b7041063a30822ae8a004fe2d48022754310b629069406991d16273c89583f4c45d3b51fe3ea4497197f4d0cc4ef3109a9f111b213ea3b3d5f0aca28013a9df78bc9d231ff9a6ae719d4f71a756ead1f37618a28e65d59c222879b48e12ed735b0f6ea3fa47bbd7ff481283c3733bc75caba66964c75c92b374f9e76825c14753e70d91705eeee00f9af05caa5112c6f00dcd900b3c240ffe350fb9500b88b03b8ba51166b061580271fbe00c36550bc6500f4e810ef4700cc6a00b91600c57a122f7d00c9180089910095ef00fed8018dc06587ec73278c226cdb66d5d022f6fa50c7370044d20088c100444f00434900444d0021fd0011450010e400163f801ade70161c8000ba086fe0cf0000ee0000c70000c90860910870fc0791ed0860b208795f70014f0000fc0006ed8866eb8006df8871470011e400434a001279006585008a6600ccdd6766b37131362898de34c3961662ed1349d280f27a00252800586f00a9de008afd05952b366eb247ed6601b99251c72961d4fc41c50941dadc27ea8c27e6a231129b11d034111e8000e36611ef4a083d7631337b11d71044db666765e076903d83832d773f9976a08586a4a375239e4471ab119723114f0801259a14657715b2b54128d334debd84c699742a0a1659d4123ead0188181184508581cb46dfef657642241da160db630074640031e800117508862188810a07918e0866ff8867a28fe8708c0000870000880911ab99108407a17500179a8870b70000e009169780019799124e98618198871c89108c07915108876d80019e00132e0011a900123d00245f0046980066c1089c4c05640261038243916d24365467d4fc90e0fa0035a800545400458a0053be00486b00a5a40011e200586c0078650041960044370014fa00146e0087d4008473005ac300dc5618bdc100ed8b10ed8804fc3a10cc6300de1500debe01e5dd24503551ec4300daa822eefc710807411d0145254316b6bd77544778d50d775abc634a9868dcb471282e4808bb56a0e582eecb8584ef3167bd41939f11574672254111662361355c148e0204a9df14b7c7227d2d47721fe531934737746e87747f656be40098a3004b777043a900433600abbb0046ee00886b0044cf0042a50013479910840910b3091db098870a891299992de9987dcb9923199910bb0916a88007698866ae8879577017de80020e0000840011d200218b0010ea002aae00b90f0044fd0097ed0042d30059f10042e80041f30032d000250f0069cc0097f900ad6806b50510f4b2343f1c0013970049ec00a46400122800382d0098660087590067d00074f500770300367f89525a0037e600884e00784c008c6a029c3311d22170de0360de0960a8e600aa1400cc4e00bbe300bd2700d84110ed130109d820abb800ac5706e4ce80d364162d7489a78f247ab917ffed5c794ebd87499f98057b28e39b11aa9d6384be93444b7583f047160d7384d537583c31558214d54157dbfa65538334cf22826b809903dc3277b0290c2f40d4b6826df100e4125647b250c8fb00643b00a77300484a0049807911480015f28877f28889be79d62389272789182e8866c2886a5670176989d38397a19f0007ad8010e0092634801acba000560910ea0866a58000c108662288607c00120a0012470021f30047d2007393003fb09792030038fb7791b60902d00791df07839c00942e327efc034ef700ff570001690058670083ae0045ae0967dd0077e500755f0045a000758b0042710927f88936bd0099cc0a39d400c6f961cc2b10dc530fe0de6401d7e390e982007a7200dc68009a0400cd4500de9100e7dc90eef570ed2900aa5d00b47f920d9f2107d34381ff10e9aa339c7f78097591558e27318086b26b8583bc17ceea03955c19a10e7124427664c6921ee62a6ab1119c7c78e9dc127acd170ef3224a3941a7b6219cd9419503b27500b65e2c041c3b427df200e645ba9dff00dcaf00dbc600b2bf50db30009a8b00849e0a9ae5a796be89e23c99e0ce0877fd887163079900786197001bdcab7a35701a56a010b700118b00088780163689216800180e8877cfb9de1c986f12987de89b9904b011920025f58047040015ab00722700189d8028d0b02a6278663989d1780058d300a6a700358fec00676000cd4b06a4e530f2860045aa0054f00077040085a100575800543b0043250022a10023800075a90011ff0869c37049db00aa6900aafb00bd0401ccc012ad0810dc6900ad3900dd6f00683e008a0000c520a1fd5d11f02951c8fa006c0900ed3e00b93b856d130a501520e7f733d24d116f0a07cb6a66a63d176479199aca90ee2400c9020075f9003ab270669800434e0023340049c900acf690c48460d890171e5226c661112ade4120b176d2eb3247477495a56309e31307342a91cc326dcd656cac031681ba9965aa9cad00bc5500aa29008a1200a73e00451a0061500011a707a7a480181f8867618ba17c08712d987ca9a9dbb9a91dc4991fe6fe8aaf119917df8001650c59ebb01dd8a877a68ac0e10927ceb87555c01528cc6be8ab77ab8baa5f7008f67acc1daaaa607ac18f001c12ac71550b83290901d600270e00bd9b049d204014b70085a50044b409559a0054e8005587002348003a15c952480054910085a70021910ad3bb0043ac0c14fe004acf00cbe200dd0711ddcb11ce950086de004371005518005cba9033a8003c57ccc4af00443a0046f80066e90065160076d400424d00452a0034d80066b700751c0046e60075fa0cc4fa0066cf008a5500ca2c0088fc008a7e00d32d113e9608d167213d1500a6dd006a9000c9fa0068d200749f00129c00658f0064dd00444e0781f50011e10fe023460048db70334f00480b00780f0099c200aaa200a8ef00790b006354002b8370234e004da2c0683500cddb20eac19a731381483d1b55a3633d536278191264d8664db060e948a64df600cb4400c74d00138f0ba85eb87163002f549790f807925f09597db869ddbb97ad8c556ec9e1ab9c7566cacc5ba9d6a587935e9abf9e9b9dc899e7b589116a9ab1c399116c986eee9aa80b8ac124992f299b8950b867cd886150002af9b9382f00bc680ce6cf50d01c00133508a3b3a092c1a0b8250084b50c50c00012a800211900145700258500116d0022150024f300569c0098660078ef00cba410cbb600a45ca0aa9f0c95170904a90067e000743800319fe30bd38900443c09c09ba0634807b39a00444b0cd4fc00462800551d002335002abb70344c0043940032d40022de00239d07b6970045130021dd0878858036b80057380962400076970032100021e3005904009be500cbd700abba00aa5200883b00bbc700cbf900b4d30ae1d90881e8090a437b81de0022c5002151002357aab85fb7837f008a8400ca9400a82f0056bd0067f00088f000c1a180e7541254488319e414ade100abe3d7a98f77888b8064f80068220088eb0064e80032600096a10b96dc804449001f3c9865accac649c8658cd012760aa5f8d00b10a86884801eca98671b8876388aab21a88f1899ec6ca9e1679e562cce4991b9e6c5d88fe2069ac6918889c17b9b0fb00914b9f217901872cc87228b9a5caad8dfb011790057f3d0c749001025000047000702c861530041bb0ab82687a6ce801b747038490af4b800581d00744d0077620d176e0079d000cbf110d82f0044a80036870ca97d704499006088d01889890857b0339600475b0063930056c40cd34a003d25d022320034a30033820ae1770022e30aed07d0333c00483f006d609cb38500360d8011a000221a0011e7002fbe9ad208003a04009aa400cc5c00bb3f0a4bdc00bbbe00bbcf0a46af00462f0046d900672c00669b00672100572000a8f400980a0067270077fc0ee7200087660078ab00772400994800aa6800aa83008d00afe793b10023ad00639e0048b80099ff00548a0cc5f200668d0036ae0068080048d7bea3839bbe94dae209090da4abb6c30031dd0024f80042310ac797db9c62a926b08d66f68910fc09d2a4988627ee4539de5e8b9b7640cd7f59986befa871a509f7eab013c59b9dd7d7a3b1eac1d900189ebaa6e1de4e80988dcf9d5a607886ea8c6cc5e01dbedc7fbc9e0d1cd8683ce9e02c0e7614c911709e56d088689580217b0964d10052c5a0965b9048610054b40db4e50df86f004067902c76c90113a036a80054d900682600858f0016b30ea68900494ef0276300881100872a00639d00478c0041e50028f97066f40d422b0011e20ae24a0046d50063be0df7efe78797bbd7add0a02db5d862d80042a50023c29ca1d2007a6600bee0da5bbb00ba4200aa7900aa9a00aa8700ae2eeeda3f00541b0069f40f0215c0ab6700bbc400ba3c0098920f0b6300baa100a021f0a4e700144d008a1300a4830aee74dedd43d0333e0a039e001f37fc71c607a038bc67f48c87f0e100f28387020f002860b192e6878e0a003881a6a8670c040e10103070b163060b09163c78f2035625c8000c18281081850e8f06024c79325398edc28b3a1cb981a6bd66420706505071480f6c458a1830e131a2e10bc40a12641812e67f2248991a0830d100c66a8f0c02b468e150676741020008103211d80e4e8f5810815437490186208131428fe6f5254385184868e143372104982244a9111489210214144898e245870b87041e4c30d1a20708c682222890b1d68a23869810309612762ececf1d3668f9a284fa2b411d4a64c94161d3a54e0cdfbc2850a1e4068e8a041a1520c1930e4e8906183880d3b443031456b562f5fd97d192b962bd7ae5da14e15e34e9e942853a7689142d58bd72e5ab666a19ab53e95ad5db67a51424309982f6078e9659728840a4aacde3a68610a1e7413cbadab08b20a2381a0baa8020c7aa360a00cb802e1030b2cea2921e59ef8a3290c33fa282d9d664aaba305d6b24a278f348ae9a4b56a3a60a38c4a4260ad98acf2aa26931678e0828bd64a72239508c2e02d1740fe4811c9a118e08d20de1ee8a0470790cca8200c38baa0a78b606c88460004200081030ab011c61a55e0a08321a4c08284c83459c30a277498a184118ac0a20c433a3184903dfa48630e430449030d278c688106229e48228d273c20c1030a327081b4143cc8218a37de48031042d6800d092744cb81915d54e1a4144afcd8e38407800a0a830c3d4088380f3a180107109abbc002a330e8c089134cf0e0011ac4db85185e5219e5186a8839861755ca40a30c537ce945185380d965966276f185175e66f14518521861a4935042b1e597596609255f5b46f9a411506649e50f175a3ad2a80c3a686ac386281cc8ab82ac92702d822ca26061a130bc18c5aefe0e5438030d0a12c8830f3298e18828d05863060f34184827932ac640c28fde64e0c79a6df6882319993ce9661a5bfcf9a4866104cbe8aa78467243257bb2a82b9d2886736a9566bc196806cc2a0081ad8b3ca0489e29f060030714ea1204151e0061b1136668628d22081a49200a3448e2092ca4a0c18d288e30220743b4a0610a4e39908a020bbae4c08526e060228a241674e20834d038c185672fae28282cbdbad8a20b5800b40312742082860e520841d90a2e28d9031a94c0e0833a3c09c20d39fc684494535021a5945442596388345029665d77850166c05d7831068b11f648c3833f7ee9e5945bd67daf175bd825cf1753f61076841128e86843fea60b92b0210a70c82062f8d5efa9208b64e0ad83297408810831a210430e3bb4e10b6d704214fec0862738410eb96b031a1ae81a35a4c109691842088ed002241ce1012488020e8ca001ad982f241871cace42d2901e4d25464fe9598c30f2b3b1686004643b53d5da6210928828573d73988c66f2b3165d056b2dd28853d2148003b4c96b2651498cd867810e48c10f6f580211965085c80d610a58c042133a90b8a0082405280bc110b250821218010d75e84314dc20972434c10821c800093210a25c8140043720c1082e1082cd3c410939f8c00868c0a98358c4010fd250418cb28327a4a1092e735d0b4030072c7800074c90c20832f0012504c20ffe9ce08422043107548cc214a6f803241e710a53b48112ca308631a2514b5fb82b97e3d9051ed0c00841280215ebfa857c6851af46a0a141ba61a6c240d0821628610d65680323e6908326e0410e73b8c31cbea00424784007dffc4219e4d0863fb8a10c5310c31724c5821ed0000337280ce4c480063fe0610e68e0d40334f0846fedc10d6898030d72900448edc60332d894092687862f8ca039c23ac2109e50862f2421094a001107683084289480034938a410b0e08642d8610a2e2015134630041e8885044808010520d0ba0f84c00842885d1a945051243c81094a581d0e7010bb267cc1093458c3173c403e10d0e07d14734a471ef0b522a9844d6ffe7a498e8086a3051cb1005f5bc0d76024238aed800f27580210a408873a18e20d4670420998d0072358c0030eb0801d83d2014a89a004431801099880831284a0422bb9888290204717e0e004ad12c1033c10040e5cec2a0f63ca863e20966045e502c18aea0c40a09c191c523908ca50c28c72810ea8c1117f60c4274e715b46d0800662d8832318e106dabc9217c528862d18b1064ee46216e7eac52c3e519f50a4425fa6f804283af8815cfde6371598e9081a118a3f88610d7fb0431964c00334b8e1117270032814f18844d80110f19dc31c1af187405442117448c21c2891085726420e95384f2312418a50ec41117790831ad0d0830f20242162a0fe8105d070041c74a0047038016c64103b1ab0940649e8d3137030031d7c807435504c07da2294865420044a10e9068790833db4e1064d2004134a68a40a8c10234db140068e5008143cec7d3b529a4b6804a79d6cf52525f1d18e9898c49c3091893e5a00074e70022cf4410a4e80820636f500b6d200085368421144d002239cc07d1838810670b0452c40ee0423d0810c866019079420086a6882073c9081124c4a073920c10982a0830a80120b5364830b72c00642c0a1082d3074eb0452010d84402c41e14010f63a312bfd190938f80df9903002108086094d608107302783167c7643ba812d161ec10852f8c2117280c41b90d08224fce1092ec80dfe0dd8b08660f741368f68c323c4e50b628ccb18cd3d85731fd108318861071d105b7340000258b7600dc53846f77af109529c8716bcc8ce2d4c4189f524c20d76782f2d80010c5ba0423ef4b19e2d6c616ff1d04a14a8a084299a3b0bfccc420d1fa04c106e20a51b20bb031e48c210ca708319b4a0b04d2801065a505310c8a0032668410d483003424041444bc988da34d0248e18d90f8cb083200661870b18c97c0de389113cf107cd90a00d1c8891dc788691285462119c78051d9224b2a0204923ebd3c007a8fca382b0c92423b461475462812f8fa0042438d2055c1001066020b3c8f200072040010484a00955d8c0022cb0d53f9260072dd0010efe86b0841358a001e8963b0918b2032098d6030bc0d00864b08319902e085200d1a1a180051da4610d41e88a095a42810fcc74060b6b4a4584b2140b14ac2bb9d210dd20463fcd46c52b1e58032354f987367022146cc8411a98f005640fda117340c2b772e0864084e278c2e805768aab085208d07f017c825431a49b0f9c1b0462f0c5b9c4551f741d8379b378c42344f1df3628c20ecee5c11a50010c6af52217a4f8c41f46e18b5c68023b20053748044578822f38977c518286a1802731b410d0806219815ccb8116789f0db1000d008a8ca19b0b88b551510226b0241c708224c0815c43219e70002510049f63044590010f20b29a28320a61001a70feaa44130c22700124081306b880902b0135e0044680043b70319e093207d0aaa0d108b232bb93c0b2276412b660000ee0225ce91ace883312a81b1df8011cd08228e0800e090ac4c10a1da0012928021dc082343824c16ab43a78822658bd13f83311e800bc998131d38113a08114508a1c90024eeb801c08272dd980dfa0008f02012d990236f0831ca0812718bc60e914c578a619d0000bd808f6e1912419880d79908b4190ae70027b719752f80446380550188535b8b02708023b583e24f8a9274884563c055bb01652682a46108316b8b81bc00331508426680110ca433678844a608440700352000f776117573a06e212105f10051d188129f8901bfe60018a8b351ec0283f50033b80843f508446280331788227b00336080446d88345180555088559a101ac30021a900120680107000116583d4bd48c2690920580001e20c8063081244821e038012220990d018171a480678a0aa2408008e0af5090834eb80322b0a41018bc8ec1081a38811f30843a100343188541e00113889817f30a85a8001ce0a98219829668221b8119acb21120ca2a2dfba1aff99ab3380b11e84112d814117080b47800bd3a8a2a80032cd0001da88228208eab88910de080107808d9808215b83b0d90a10d34820ce8093a838c2608c41d208220eb8028c002137b0238500212708121b0b5f033810c8000beca810a803322c801fe3b6c822420011a2895356802b23192abf08016680235300323980b21018aa8789a277084d93a826a4b0339c004452884369003271882240882276883e8328545f8044e00047d622f4e78043f00a8095282739a0226508338fa034110010fe84165f980d2780246688326c02829c0812f7802c578820542a89dd3042520821a88822a20853fc0811ca8b635a08367cb2824d8ad21781c17a08193b10325b0a81c80a91e78b4a87a0c962913120a8a0c0081c4090ea0b0910658090df88b1670811db84edd528219988121a0816842833410043b98033fb0832440881b380239744005f9028bf33819508a0eb8bb8ba03291081a1ba21104b82a2ed38924c2feb298202baaa4b29d3109013800640934b2090e0b80800b00b322e080906b022670032920811690511fd9800d2981ca0a0a1ae00015a08104009220618911230211b080a5282b139001cf3101bd21012970032710010e400114280222c0bb209412457a801688242760033b20011988822828031d1003e2bb209c78938aa1980df0010e508225f8c4a07052f904027f120d2400010610812f98ce280001fa11881360823608313b40033b080436d0812890c634c801234002315082f4b2833498821a181c3698033c00ae0dbd0340700445500418f4ad41080445f00340302539982f61658446800448688467fd84f67b0448384246f8354af8b547a0846dfe6d844060b039708227880337f0033908a63910841c93833d588339600331680225180d411aaa28d8d426b83027c84524e0811d48821970811a480226408281dda8d1b81454150313c881d3faa2240109b07391459a9a283b899c904293f89a02b819af59cab1b2322ac3aa24aa32b23289135800b3088002182bb428000278d9241ad9b3da000ce98ac45c02ddcab308304a4f3c0008409d3ddb800c70022c78218dd8001778800c180214d8b80b80000b808c3230826351824c293209a13ca77b0bd4c9802ad803c89183be118184390a36300d2490202730c123c8812310a42130ce484283e2e4d337a82f27608227682a796c8359440329f882f46283fe3f188446683f48a8045202856a7d045292dc6b35b04460843f008440080447f88486fb1df5a805ebd885db42bf7c11b8f940b04e5004da52845f6d84f7820450008545909744b8dd40b8d64418047909844468bf44f8833f488435d803f2da832f388239d8033e75033538573428442750d21bc80127500322e0814b5935839d811a98011e900117784825785b41a0843f68021e2082457b8221a08c1ce0814dd1943dbb801228822328ac20a0811da0d00a881a08e0000d60448eb00036449d1258011428811fe0000740811f8880085001b2c9888e15bb1a8d1136212b94cdaa1d31022c280108608011b64abc838001060113308226580243d201c8c0fe82298003286802d980032d48822c380222785f1a408225b0432c7803ade4612c20b128800336a88337a803ce3595746d0447e8044ae0844e00055318855402057ee4044c70044e2884dcb1472394175762043570822f10043f284e37082a31b028c56803e34c991b9b01cc708c200054806a4ddfeadd45180445e0dd40f8834500beccfddd47508433660450f05c4b904679e9564ab8e250a004d8558406cb503f780457b42d53108559c885ec3817eba005f5e8b65df8844450b03958d639500339e053e19de4de04055128054ef05d79c9d64f80b74f5ea54f5884cefde55f368552100551788450f8044c70c5564603a14282326802246002ca7001f2fe610158db0124d80110e00012e0803d3c340d230229d05a6d0681c25b1d43cb000f28010f108113d8801260288e84a6ae538224e84c1a2881e9c4811a38012abd9a92a8d12b53090ec6aa8e2d4a1bd5d8b24a59263a812cc0822ca8e82c80832c406738200443e8833ac89b29688323b6a834e8033b8003796c0222e0a237708335a8c3d47894348003369ea23b984954608554e88441105c3bd8d042508440308450300552b86253f8055608856f1b6a4e00055278846295174100844aee4dcc555c47a00450103e231c04c5358436d83747a8846163033a86d70562023108044a7084c51d84dc992f47780454f01d2aa6e4470005fae89d476ebf46f056fe512085de21055a400551f8654a58b8deb1055a90ea59a037f87017763b8663008663009075692eebb8465e908fc95617ecf08562a0b7511e65c84685db326c716197f7a005d9b68e532805a90e855108855248655456855498ea3b08044038df780b85a97e84bd4e843b9097f7cad646900378b503463040dbc55c4178047ba4846b9d6541900395895548b2833580be40b8cd5cae021f10811f40030941caad59ca0358932ba30985de609385ef97e59ab1da6ffe46803ef8ef3ef08343f0833e78034120844a30144398844ee8844930044370044c10844010044708054fe8042ff684a37e855460855740855d788559f80512ff855ff0855f000f1457fe71574005ca66f161e085156f1e628a1555a00555109854488f50f0eddd5697f780ed5c601705946de582ec54e8365b400f5458a553b86452406aa946055a4885c5b6844f58a5520838886b1e301f65018138d9ce977c097383cb975b50ae5df80eec1890228ff322e78522df16ee710f016117f9908fda4665d62e055428f2c48e38fcc8853d47e5db42e5cfbef252208559388fc25eec4f286c53105d487f665784845148e66d75e66ce58444a0845088c5eaf2d62394dcf6c3cd41f803df5a046b4d0463a56b264803378883068be52370528f938337688340a0d53558837e6d81f32c043f08043ec8808140e899a5d936594afdde9afcc6b21a7d7636fe19ab05785999d5f6993d803e38044328843e28940887f04228944ec00443e00342c0042b8670172c8444318454708555ea0448e8841e37055578855cf88561f885604071dfde8517af771467f15f00861467f85d70f85d68f862089086dfec75010f6b8cf225ef9d541890f7e8715a687451c00465e60457ea84c2de477fb1e26e858436780339a8ad49e7472e2e05a4a66dc8c6785f3805d4a6852ceeb67cb9addf5666e3e6c75c560f5358aefba0b77551bf63288f5ca2b7cd3e178c6797ec1090ea53c0d13e17116f1e43f70efc888f01199033576cfa30b8534885f5c065508025c46e45af0e05df717b51e0e2bac7f7e94e5c79698445d8dc40e05dfe0a0f04f6222f4360849f135c38cc820612f63ae85500a24727800334d85f179801926ac91f9601e570b163c183538a822c780325f8c40370886c1f2bb11bd93631001f300193400bac1ad986fef605ef840ce7770f5f05dd57055600f154e0fd7ee7fd0fe77d104f0f55500553a01753f00451e8f75c5872de47850f5f711577f18867855fa0716cc397882f8654780f5b388515c73fede016b587f3ee59715bc88e222f3f1a6f9e51286ca7c6dc40a8030b9d835f1f8d3588794ef8044fd8728030f5295425489f483d7a444994a950a248853a850ad52e5ab35891fa24ea13a381a644950a9550e12754a966edf2d5cb97af59b976f15ac992174c5ec0fe8e152b662ca72f5bbb7aed4239cb22cd59a766b9b4452b57aea1274f59cc758a61a952a418ce1265ebd42950221f610aa448d01a232c46b4683184070d1e21643c4952464d1b3f8618050a24e7489426204c90a050e141850c0c1c58d0f0c308070f2368b400f100c3850e1f540c81a2a2888e132e963849e2a1c2051c68a284f08043c4030a1a3664b0d0414386d1101c6c10e100f1860bbb17304070a0c07004c203102f905c3972e207081c103e9c8016438762755ab5aa13f7eddbb373f7d4870d9621dc31194a2fc5501f39a60ced7124c8912955bf76953295bf7eaafeaf5485a28a2ab6d8124a7daaf4374b43a9a8c20928a5a4f2d12ea988c2cafe2fb37012e127a9a0a28a289c04f288288e0cd20827a670f2c720a00cc4891c7ed851871d89744449235e39c20929a850c248289c50c20924229e42ca29b6b4345128a180b2232ab464d42493254578e42e3e1168122a503d399450b49cb4d23137f5c24b312c1de34b9abd94c95245b3f8f4e68e34d9c24b9db694f2899e111d550a2da7a8625429a818258aa19f08240a28a284021128a074c2c82084e08185143bdc30820b2e80a0810521b85002116bac51c71d80d431c50723b04a83136530414319b00eb101030c3c508209145c4081030838f08003b7f9ea4007190cb6db03874160016cbb1de62b020bec66dcb40b1007ed02c00137dc01d11987fe2d710410a05c74df2a972eb6d1657188219ac0d107279dc4c2c92a9e68d7097b86c041082aacb0f20a87fa1a220824863451c4137dac710813337cc187219d38d249214e30c1461f68ac52481a4ebcc119677f14b2061a6e38c24825819401c7114f18e2442a869461881b6c741216237bb891c61e6b8070c2107e08f2c722a138f2871f8a2c02a01f83d861445d767032341a7534c208208c2c12082522215aca29a99c520a238c3c028a29a6a00d0a2594ece8d546a29c328adba6d43d252927d982529c2815858ad8b6e422932fbbbc19534d31c5b4d22eb794694b2fb7fc62619d40c9c40b4b529d52b851b67cd24829b9fc828a29595152c9238ea4fe5c49239510a2c8208afc0148229528f24827a2ecbc871c815452c8226dccd18618472841c4144ae850420614dccac0021ba07082f534cc40020a430c01040d442071040f1f50d04107c26ebbecb6db1af7c0fae14a0f5cfc0b08870071f52ff0edb7f61750ae72c211c0380118ce00fb079de790ab007d3844270e818542f4a110134b4f1f06d1094f98423b28328423e46008f4148208753004219250821d1481082668c21b9c9006848de009256383115c300322fc610f688083114e8084243c8108522044f640d0010f6480086ac0820e3240820a7480083818421d8820aa2274400415c8df065ac0843b18020d49b043154ab0010f6880083a988105fea4e0812350e0032d20c11b1a010727b8811389e0444278118a36d8c10d7308912a184109506c4573bcc8058b98240a4b0ca9510622c5554e470b5ba4c2274d41ca2501c78b4ffaa2294dd11c2dc446c951d0e24f792245df6ca10a54906248703b054cd2040c5f803217a0dc4553523921ae882d220f39922d6a61371b35e26d8c5044231ea1084040d30d62708312d640354aa42d1436a2941c0229852964c10d7830551d0441883ab4610d6948c31ade608742b0e1092de8000604f38023ae000416b04006e0a73e0650405817b00004a8652d0654c001d46a0042a3772be1d08f7edfa2dfb4ce5500e9106701013457720e80052d68010a1c5842bcb0fe102f4148101385200404eb00052cbc010b1010811304d1872c4881034dd88116867002412c41073a78431db080031d60410955c04113e0308423a421a63940831a429003cee480065858020974f0041a78000424f040406b130213642003436802137220020848ef000c3800fd8283ad8ad2d5030d58400b1280d183ce550310784012ea42840dbce1044e3801024e908a4ed881069c1805247c71264ab42114be60841b34c7125b0402492ae9054a68818a5ed8624b4149052d4671949494c94c67b26c316c520c61a4e918bd48136e7b2b0c962065474951644cd4a4b95fa096402719652f52c90b8b1c454142811398b674ba89a46214a418052c4d31fe8ab491a213a95b44cae4b0073bf0e10f7390031bfc5086273cc1096840420e861087f4aaa8108d088420e4400843dc21094e9082118620852f24610a5288111e9e90030fa8000d4530c10948d081dd38007aece35ffda44357e3e8cf39e7820effd0251d04f8cf024458425009d10738d4e1104e08411bd3338542acc2106fc8c20946d0842c60c1085878c2094040832848a108ee1b42157450841717010d4cd8c03d9150820a9440076d7803213cf001afd24007833142133590830f5420a104f8c00ca0e0811978000533e840083220d70a0447380c2840000a381c0316605d7ffe9fff0a7d0007ecb97c012097740c108138a8a0021ea0010e18f107fe46bcc10834b04009fcb08b4ac801b994f8c52f18f113affce4969665094b80c10b51f4a22bac46d39866ad5b36f54218bdf80454bc849295909693b3e8455390b40b89f4c4b448f989e68081124824824fd6d5d2414c17b74770e2139d780420fcf0873fb48109697043209c30043b4cc17c37287013f8a2e9289401094d7842199ce004b06a40031e80f01380b06f1054000227d843159a20030dac40073bf881058c208593adc10f75884254f7308841a86c106a2841097000020790e601eecbdfb93aacbffd15a77e133df11654b004159c000b5888791a664e8313e4cf04553884144e6004f6b0c1044628c2147610e40d54808e7d28c20c66e00438fe1081094480420b9a7c020d5cb80134100d04025107086420cc0fb840c0ab508725a400081be000064840820b6c400947188220a6800336f43c35400042148eaa011040605a1448c20d9a9580e824d001d3790e88a725bde65cd401feebdfb62ee01c063c810d245041072e0a2cf0c9c10d6e385d205081c850ccc2182db9654e76d2ea5a034318c0d82de1587d2596b00996c77e042312b1888d3842114e98439330018a53842210741385420e69a4d43e84169f50c4552cb2a55950124e48c1a44466e136487dc246b25384220c51893548210a7608c41ad4c0863828a2f7d8c6c4275204c432f8012c8d60c317329f0636d80116900a1adc0127fc0827fe649b787147250c0220d8c11dac57cfb441c1ecc11cccc11bc84121d88113344f0968c007a019dc41000578400754000678c009505806905db2e41947950b7438c75ed98a0868411184809059871ff4c1cb08421574c20f88402018c20a680014e0c01cac8112a0800500810690001110c10adcdc063480c0c1012640c19d8dc0092c4115184104b4460344070730c11ae0c00a944f0764811270000d88405a2cc10ca80127e04019144109448111b4800794400d108112348106a000c28c5b13a081f95c180e5c1d0b20c03d59c0b458cbb74846fe209afdc460bac895712c87fe4c467138474545800e0d411a5082304c5631cc829958d64e140330b49efeebfdd6e118c451d08228cc011bb8cd1ce8801ac8801675000d20010eac0113e88021a8c1137000085c000370801400421a9800405100097640099cc02f92c020f51f33014227fcc11a74422ec4d2322502f9a50d8b7805253d8aeaa4a3a3a88d772584dc8002d78c4537fd81207444ca30027b15cf1eecc1ac98d71e048223605bfd81c81a0c810c60011bb0c11e2c420e69e0ac08a3c1b180078c550624410e3023657cc05c8961f44c8f05885c5a4180091cc00afc0013d0810698000d3c80e7e50f0a184046394006b0c013348113f0c121f8401118422ca48108600109254110f0c1066c40084c810ae09f27f8c11ab4411f60411f7c952074c21234fe801f1ac10ea04004f8210870c00928010efcc009544f092cc00324000a54c014400113a440063c011220810ef40adda95006c018135040633c80054081126440a0210003784008b8811340c22e04c2b8b5c11dd8c11e10810608023ff00336b4820ff8400ec8c00240cf0ac8026662e63ffc400050d4052c4027f4033ff40337f0c3161800b5289402c0023fe84333f043329c00067cc01a4401127c0269b2833b60a631ec836bfac26ff1c231cc423160a63fb4263f00c2b085821aa8972f60e63db8e6128c800700011610c11db4663f4c0366c2c359e9d4f1e4400780000e1c81859dc01ab841a9e0836b5643792293ca34c229446729b46634288247fe084e28748875990294b0162a6c04fd8d424330041ff58823e405233482224042286042ee4002da70c2d980e8ec2cc2202442f005c23281e81f2442202cc27e8d4538ba5f1bb4815da2011aa4c113e8c01ad0c063f0c00ef00016a8410b9c001478a0c889400750c00290e1b418c07030000af0190dc0c11c6ed105700a026c4013c0618595c06e640004540008800003348008e8800a542304d0001b38014ba541c13d5015a45911380116c881201801c0e1802150c1a179400f71c0108c806c7cc0133041153041414507a205c70630c1112814b72cc00860c00fd44109c880af88800830011228c108740012b8810ef8017c35c22088011b0cc21cb841fe253002294c4210ac81209c000ef4c00880c00788c007d09305948fc8dd9309da8a037cc0052ccb61e40f0434c06e3400f42066100dc10e0d818aa0811099c8deec8246f4442fa1822f28e127c40105fc411344010a04cb071441155401076cd103b8412108a30ea00100fe418dae01208881130402202c181ea4d723644446348adb3c4232f1de237c42231909a1b0231f718228b816299882415082220402244042907c42c65202fd2d53c1ca811cb44137d9811d1802867e42420c4429386cb661829018a4a260931d1c016400c111308119c801c900821bdc411df44b1d3cc19c65c077d280acb00e23a0211b0402cf3093123cc11fb841cf81a60538fe800ab00005fc990398000a00000004000430e2053041cec04170dce409f84116e08013ac022130019452cb6d2c000a30d00f3401501d811f40c15e7140109c406c844007cc40f738c15539c005880079146e03f4501b5442c148410e6042168000952d4007041e0158801f2c8227f8033f50c12af0c336bcc13f60662c14c0ad0007756026151c026626831b7c41210082333d02691a031ea8811d3c41200d836b5ec12b60e62b4c8109346b06acc11edce7361c823ef48316206b010c8b3e6026376c0166f603162c0b0258c012ac2269024313504d1aa08111f80127ac4112f8411560401170000310c00f60a63e4c403ef4c30f8c26664a8011e4c01cfe88c00f88826ef2c33e24673740c2f141c229dcc2291cc37462e63e14892d305f027fc27d92663f1c03254082252c0223a88d3168ef74eec3078b023689023590a60493c28db88e23008208bba651c012447c88286082818642298842d3ca811a94c122a841121cc117384114cc412248a51d080220c45fd2e6c588328223ec172100821aacc117b4d7b7ad0109dcca07840010b4800898c0039c001328c10eb4000ed497430ac22240c21fbc0c2040010008400834cc2148800390000e70001440c0d489d912548220acc2125840059cc021c0c1bb188109de060a3c4116a8000df4c10f6c4f5a69c011bcc12268c1092c42103a4009840071005433a2c0feb25646097880093c811fb081e21e410fd140ad90c00c4ca9e6968bb2aeaefd740bc91d66091c8b0e20c11b240112cc400e3c410adc5c1d344123480112b40116d00004a04121b48603e0c005a0400d0807713cc013a4f21e44804259cb00d9cfad0400ff980bb5049a08e44feb468120b88104cc47135800067c0b6a92614621c0a229870c4a94fd4cd40140c00e2001116c2ac5312623a0c11a20412780428adc2e26202c44a0c2281848affdc42f34b0e4d8024288c269018572754542d00d879c022becc22b850277354227809a13a8c1205c2c26308241080428609b8696822a546c1be8eb23e445d3b68120546b4396ac1db0c11f9caa1c34581038fe41e609422041341ad4a50ec0a7121871124819c6a8c117748005888014600124a8010d84c009ac000aac405b5b0007a0c00f48c0581ede12389008440003d4321aa80255fa0005d0800430809032001008024a6d551ff48115702d6357411fc4020d3c01168c1508484116a06109042a1b54f21350cb1b08020a680010f0011cc88069b0c121f8811ad4c11e40c20e204011948714e0400be880083040113001016c4019308608780a04740003146d0b18c107c840063022039480573f411a48411360c120080211f8411428325815010a1c1e024440042040039c40099021701847fc6800192650023d87b75cd47400f4a02d470118c0ad38470c4a8fb9fef8cfa24587f4a4777a03471a2c810844a4a804c10e84564f4c4e8498c9ed19438447383010434e004355d08265f99128a4842f004330d8824403c21f9c829b70c4c51e447f8c02258c42033ac4143fc292605b420c022418df28748201a2c28f98c23c82028e63935e64cdab768246f73827e4889e7ce8cedee91edc2855d5811fec411dcc01411ac2222c0226c0b020bcc11ab0411b542b9d31411298c18db27168244115b8c112c8c01258c102008116f0181cf0c10fd41c9541c12144e2149cc05e218006dcca11e55909cc1114f04127404106f0711d708216a88007ec8127fce013c48213cc5412cc000478cb61decf01f4d937a34b7f33dab66c80fe052c005a46c00184401db06d14e4800b6c000b888a2318820a64401b2802214441103501043001e795412570c001fc8022a080445954b980b744111a7210409f95cb00c5e0a235c73f078000904b7bf7590000009ff5590160fbb66fbba82b9eb86f620298a00c28410ef41008b8005adcc0ffa2c11e30822810852f905a2d29838447783050c21c94024ee844850343c11383ec4d8edd50044ce09e4ad8024b230e4a00ca2c64922ab88ea55d6c2288822a7442220cc21f1464267c82450f02cc3a2c24cccbc1328220044222ccc11f54d0c59e302850a8a42402c8df0c13781c103c811b24e31420c11c2c42fda5411148017c45c1105c800914c11140fe8109404110cc00a53663024480af30400790a1006cbbb38800d235c07797400ea00004700004148008a82074ecd501a81d4635694d220004c8c0091874f4502f0810011bc04111540005a481f594c1067c0b1465400ecc00705080fd10b4fd90dd58db412aa0410214c0086c40e0218013ac406c38b721fcc003c8b50b9080dd6f4bffa0801108400160c1b11f4002289e013c3bb5073401dcd5ba38fba21100b6a3d8a20910ed5f1445410770a4d9110dc6057c8009848a1f4c821c600221a001f27d442544a5187493856d8ac7b9c00decc00c10b31300c2203c824693c48e1c052950c2e91cc52978d62d1517fb9b8e9d200e2669df2c5c8829a49690fe6002264002869f046b21df760184233b77fcd871f344491224377410b92327ce9f3d7f02b15903e9d1a3458c182d12f4e70f274c8f1cad9122474e23518fecf851344811254e8f08ad4922671127508c9e24d9d3f1cf9a416dd2489981c3050912384e5840e080c2860a0f162c70d0a10390130b44d008c1048b0f155ad6185911006d5ab4270c61d274088505235a921c7a1062c58105010e14a8504142dfaa070e20b8b0a070050c141e30401000c1020688297b307184c382132b4e883801a20305c854117328b12184030b1e3c9c38a1a30404081d0eac386221901113487e607973800185020108e84d80b64081e27b93077080e071dae168050448fe3e9d005f04c50b1c60e141858b111e3a78984162040e2c8eb0a450e2c8d09a376be2f87183a6899d3d8e4c314a658a924a18a1c417626c1985934e40e9449139fe68a4a082007104144e1411a4119d1e514414544e3965971067f1c597637c018644128b31c6975d66392595541aa1e4145250e984924f52a185164b48310515534801c511484609451140da9823904f30818494409e602314565211b01353544185144f1c01e411531ca18411473009e527482099e90ff8f8d0c29042ca6c84114e4281a4cc4718c9a8133d1919649082e4b0e38f001301040f2da49882a927045924113474c820030fa0e0e38f45407a84133698680284139230a1021ffed878630f3992780596676479e699699eb186565aa799c6566b709da6995a6fd57557686e1d369b69b499e61a6493ad669a6ab699a65862a1bd269b6caea196d96ab3d9a69a6aaaf5d6db6cc0d5b6db6fcbfd165a6fb711b7db6aa8a9765d72b3a1a6d96db9dd16de6adfd5365f7dbf1597df70a9a186db6db83d77dd70ff8db79c72da75b75b6dc669379b7112a606dc83c7f9975d8c07e6d6e38745c618626fa379989a68a2a1c69a814f86381a6b549e796595077699e695615e396495a5a946e566305eb9e5908176f7e5965176b91aa5812639e5987596da656b2036badb81b31659dc89ab615596666085555663633dfbd6586f3d566d608f2d561bfe6c6eb5f65a6593a5e65a6aad7ddbe08401ee7bdd7803b7b76f7e03df269d74b4ddc6e170cbd9d6618bd3f1d6e28a2757789cc413df66e38dab55bcf3aee16d789c72d219a7f46dc2a9b81cce1df6e6f16c483fbd1cd453973cf3dacb4127f18d49f746f174bcb19df5d251afa69ce16d9f18f66abc19d81b76bd715ee4e94b0e67fa9b8fa6b9dd94a9f959eb9bb5ce5a1a8fa529bffcf0497637fba5a9991e7ef8b59e3e9c6b7e0ee7ea6ad2bff96577a1f6567c187b5ed6a0a6b57150a373d51807ecbcc1aa66bc4a6d6a1bd6ae26b8b60a0e0b1bd7881bb4eca60d6e28ab5ad402dc080937c2d36d831e29449cc510a7b974208e7399a347f018273bd7fe292e76386c583a5af7c217ba6e862e4c073d50970ddaf14e73a64b62e294b8c3c9d50e79be3be138ccb14026260e1de34047f294980ede75518854fc22ecaa9839d4edae1ce6305df278388e70f0b061c8735e39c2f13ee099c31be77b9f00db15bdd751a31bcf7b9ef8b2e70dec0d0c7ff0eb9621e9e73ce875ab7cdd0a87341aa7bce981e392d408873934798df98d4f9024f3c628e177bef279d279d218a0feaa718de151af8ac953e0025127c8d299c38164bb60d986658d635db058adbc9506a7f1ac6469a36f1ad4db089d65308091ab613d7ca11113070f7aa0301df0d0dc3585b844272ab173bd0be2e9c8e9c2d699ce8cb5eb9df112474d2d9afe139d8933073a90884630662e1e6df4c6166b57c57454518dbba3dd2dd368c672b203893cf4223cccd13b06ea8e96ded846f3b458bbe9956e78891c25f90c49bd3cbecf91370be52207a6c7f20d321ae1785d249f278d6e600f7d21c3a3d6eae82efce9ef1a0f93461dc1773f45a6d295f19b9ffe3aea8d68905279d83324f6b8f8525cb64a9713fc65ddae9541bd71705ac9ba16ddb6b1d5c38db07506bb86c1ce09c36aba7086f4a02612ad994474d043a08923e2e932e74572beb39a48aceb5c87888e800a1489f118c7385338c3c07a31a1ed48473be841cf79b243b1f190073df2b9d876e4331e419407efda210fc1a6831df1a027efe281507678d1fe1c98dd223a36fb5674a883b5a245073bcc515bbf9a43a578c4de3f6bf9bc348ef27d0b446a3940bac872a89294fa53a526f738c05196ef1bfadbe31e3dfa48e78d347e8c64a05205f90d3b2a3579dec023529df70dd80dec8c4c2d5d2087d78d8652718105ad6d37da318efab6a3b64f155b042f38d5613d4b5bd828168045582c6b75b56fcd5457c1eca538cb698e1bdcd49cc1e49a4ddec1439bd9c4f05b83d861c4c2d11cf0e86216a9a83bb9369677f4842d6ba1385a166796b2b34d473e79f7de19ab111e0885c7681b9b4f84a6431eff5cac6c67ebd9d0c236c68a652d3bd8210f79c0c3b3a38dab3936eb0e84ce9377f2a86d34857bba51067478fe197d9fc3e878d38b26778fd1306ffa06494ae67ed490e17beefbd2773e41eacc91481520f4c431cae40937ccf115e428c1315e52d6528dbc436aa0f1080e5a567194e3a06f3bdac10efb521a165015d634b0c18d0f6ab598d112d7b30cd6cc6b6d831bf0fa2a85478838d331eed5ea40e1e34a67ce6ed263c7691de2aefb9ac20dd313b1af45f18c5328da19ee4eb4081d2d62b5d9587a6c961ef888323a244bcf1d67d6c8d48ec7b613278fcb2adbb3f468f2b725eb5979ccc3c9979dac93e3915a20bb03dd9295b793675bee26cb4389902dad3b5c1ccb2d637287f9bd25ec789b5d592e3acca3cceda1fdccbee4223c65d560ef52952a0df32295a9d8fe132e35fecc403bd656d220cfefe9ba11c86ec0b7be816cc7c9258d3a70e017bf54cca762297dd99a3319de998eaab23eadd563e5ed5a3f5796ddf2d62c7595ab9580dbd6365dd8426a0ad1d9bc6bac5d993e6c2cd23385542776431bea455da315893caeeb38449bb86da30eb499d52242b31e5a278bdbdce2de7669a98dee6753dbb3f160acdef1ce0e74bb711c50962c424b4b0f73287b9e41a6a7b7659bb8cbca96b65826a31891b8f2e1a5317900156e6f11aeddd285d7926ebcbc1d0f8ddc4326571c5c2c9dc6259d8e40d2928ae31d072617e8dee539da1b8e465d7d5137e92a521a8f54acb9f0db6d5fbd77d6dbf54d3e935925c1611d931b45a7fedb34a27f6a526790d3cdba57c2c62ad652775f898c63dc597d98577460b8b1ea98ec8e770c6c60cb15ca52dfa2d767acce6e8ad6769acb67adb72d0fd4c1361e448cb528ebc78688ee36abb4b62db44a6b1e44cb1da0ccc92230b4ea2d1ed0eddce441dadc81ddee4ddb22501efc6e1e98ec03956db1e8a9c9986cb6fccaaf682b8d6acb90f2ab05210d78326ae2b82bd216c8df1688a9e8aaf36c10e3146ed0240e08398e81dc0cb8160df4d82bb880afe4280d935ece76c081be4eeef5c40bf6ea8b1d3490d28ecfe6d8add2e4a1f974296fb841e8848eaa94c9ab9aa598d4b099eca55b0ac6625a29ac9a89ac6867d78228a1d2aac35eebad9cacc252fe48ea168bfeb8ed0e4fcbb00cafb05e6b88a6ee9f0ccfb5660b1e24cbf0cc618688ac1ceeed02e701ee3cd0dc2250de426b1e1ab00123101fbe70db1ab0ff9c2c1455d1b30e8fc9e649b4aaa8c966cbb4d0a11d6e0be4c2a1d0ca08e462af61c20c9d8007d0fc2cbf8c30d28e71d1942ae3cca1e4122e1915eee490ea1bf0e71b6a4fb8826f78560ef8bc810a676ff6bec1d128cdbe2c0dbeaae8e4202be65ece0b6b8ed2d0911deaa11e5e816ce4c6d3ead11eed31596ea51ee1c1d3f8111eba0ae890a55bc6ea0dafc1614a8dcc90279ac84a729c8811812d88560c8bb0cc8b600bd97011b1e2c11dd4a1fd862d1e566cd9160aeb800c1e562cb3fc6a1efee0611ef4411ff0011ef4219f18cfdc240bb4e8a9dce28ddd1290022dede24689bdbec1bcea21b450d00461d11c2a2dd8dc01bf60cb1ef4a1162221112ca118f4411cc0211c98eacbc62bbfaaa1b6ae12d0b281166a412cc7b2167c01f4164d93182e8f4cc9f4060d1d9a2112e2522ee7522e11012a11211398919430c91ca4b01ba410a9c231f70209b9c0019346a91d22cd3017d330dbb1d2daf11d988c1d8f121de34128eba0035840335f80055ec0333f13345fc006f4411f05a13343730d3ee8f99ae56780ee5a5ae95aace71aeae75ac201d64ecd20a509d65c4da5984889d6e19c7c53c8d2611d1a8a9faaa1225d6c77dc411c340778d24805fdaafe1cd6211d604b1d1a461f74810560200cba0006bef3059641cb80e79fcce11dfcea9f9c4c1d7e0ccbcc01b6d6811dd4411dec611864e03bb9800b60003fb9e0052ae11ed8611df0abb6c4211cd6611ddc81eba4e1b5e0d33d0f141e0a21063c933b97011ec28140c9e82a81d079b007a6faec90c02006be53446140112629b954498ff2c8a8366a2d55091ba67165bc411d86214445343fbf330622b446f9530cb88194bc4be1bee17c604abb4c0e93b84b95fe12f8faf2b974311cdaa1390d33bfd0ed1de601f8de412995b21dea011cfa2033592015b8410b3cf334598014fe41133e8033ed4158a0011ab8210842130f60e10b4e93335fe013ece156bafee5836a804cc9b406b04115fc5434ed2136abc11eb6c11122744441f30b70411fcae1351f47083e13063ed312f6810d24f405c0730cd4a13989d34049d30b3a55443dd33b4d153ccdd41ebace1e10e1056ef45215a15455f5522d411f666b1edc612379f503ddd304e54129fd6a1f4a2106f2f346c7c01ec46123cd53176cf53bc7a01abac054bfa055cd813e6bd446798019d64117d5a119bc133c73b4536fd4060c157b9c671d86015ab9e05847544497011d2c0e6880f27caac15e95611a53268fa2811ee2005945b40be8c00cc0c016f20828a9c15ee1c10c6e34606d60199ae15df11306f4001e78661e36415b61c0069020446f340c96811ea68719fec9c10c04d60de4c00c3e363f5be11d6a8e5588211992414c3ff33449811b9ec14d77f656a0e11a982034bf2018b8a11968003461000c7c361a58f31a9e81532f954c3b3350c3611ae0610e3ad554632018f4211df4c10c6c350628b45dec4115e0f50570b56bbda051c720f54c271ceca1146cf505f4401fd4411f7e4155f3730cf6e13ad9e855cb553f5f0052ed211764f552c9601f88d33ddf61046b0b1c90ecb1fe491fe2763ff5b655d501a0c4c11f3e810528f63e5f8007e8a011488159fbd21df6810ef453446da05b75d11ce2d646473406c04014ec21bc942a1d9a416e13011eae411fd4f63eb9200ca021bc14568f80f279ec155f47e91ae001fe60e1950e928118828178ebc890904b95e0010c8217061a611eca211302b712ecc1ce9ea772f5b30bbc207d371606c6001eae8b1e1061473d1747e9401cec0166614116a4f7159ce04f39530f6c4167ddb46709186841730c60c51f0ef852913619de3459b0c11a602144b1f60514011ba4411c6a33a7eca11054d53349611ff4e11a90005ec3c01e98281cd42117d8b70b6e011512015ac3c0169421a1ac61635fa0068401c3e2005ac1e01e1ac63ca321131a5675f9530f6ae11b9a210802963b6b4119e401b678d5ca16cfcaaecc1cee6118bc20601d9644efc1cadea11916e164f5f346e9200fb001418bb3b6dca119f2405c65950e9401bfdea118f2fe400ef22012ee811ffc2119f2407591f642a7270ed4967ed31714fa01788fb80bf2401f766ad1544919b1e71bc4a119b6337603d75245740cb8017955491ce0e10bba5844f1601d9617b9d48116ce970b6e211df00156f5130cccc017f0c8794cf633c1201af6a11ffce10ccc587089881d72e9152a80053ee098911999592018aa6167dd941bfa609935f3988ff90efa0109a6999af5404faf011a6a6033a9993359809baf21710c3470f0e119e4c006eeb4333bf30b68c11ed4e18a16521f5c01093ed306c66017f001446d00a0013a0644581cd838c42ef61308960ea4921b4af55481789ecc411f981809c0a0a2c1000c8e000cc46019a8a10cc08009fe301a0cbe000c82411e76b1b6dee13af34bc5d0418cd5e00bbe800ebe600cd040a6bfc012ec61b6daa119ca60a6e9800ec600a8c7e00bc4b38dfdca8de5400fe6400fee400f9a5a0f9601b2dcc117cc80a8e7806c675aa82de119eee11d706b1741a11240c113ca9aacc93a18e6411546a1ac83a41546e115d44193ae321cd88b433749e1f0e715820116f89aafa79718608118065b7a832119aee130976a7ae86194f7530c3238f748a9b6dac12aa98c7c7dc1143aa113588118b8a155f7921bd9416a8c011bf4211ba2c1189e219443b01ddee11de21116920156360d1ba0416ee466979065828489595a8959ba0a3661d320f3063901873a45553ee959fe73d6a12413473e79c81ca8932393bb3ae9999edfe89f101473cdd9af3057544d27c45a0b1df6011362353f257444f1f36cf5612395cdb444eb71cd0141e353dc76f1b6462b0279b5d2e0cd57435058db410b85d503af5803b3d0a5d5e131e53b0b47908a79151cc6cd1d2233c221ebbfdb18a178f528b57440115440ff52bcf2ab1bd8e1e5a470e5feb22f0bade4ba411c4edc30730f934cee2f09d4c3970a93f02bf7ae32b12dd4c4e52112cc383f63001b18ea285d8e19a7f0e5606ed228ad091bcdf79891c48fbcd2988cc95efb045945b679f656705b5870fbb69965597c3ba75c93e870b3756c731db6813a0db43a8f5b54ab5b1db8c13dab53c330feecb961ab24e31c244bb2bbf9b03d31171d8a73c7a25b3e5f6b77cecd1ef601d159b21ee6a12fb9f2c9045c586bcbc922af8a69ebc231d7c27b958ad71313cd2d0bad4c587d3502e7a14a110abf680b4ba3fc032dd0cacc2114f9dbca443d045f1dd6694b1d5adda5d1cd5771314027fb1629530303b4e6e6cbbd301c1d7691b2e5db303729bfac52e19cfdc4cd61c58fb22f4baed10aed48b971313f7c0abf61e546fcc16b2ec91d17bfa490da17f3bed29dd25e3632bf81c9607b6c360d8308381fe506d438ad1a32081bb8c5355d53accacf9c27eccc89b3cd658d3893fbb5e473c70efeb95f0b1ece731df870d05d7d9e4052390bd438dd7323776c3dfe47abe35bf1f0fa7015674bbe594bfd606b71adacdd160f7307fdb6f8ed23a9cca5474bbed50f41e51bd4694b40192ae28b93df10ab8d9bf5d2353032694b2943ec1de87c5737525877959eb51b5825d01d0cbae4279bea1114c3273bbabb1254a33beb132dba0d494addab2fa51ddbafd2c3cbc1c45d1c1c8ebddaed6bf61a6d498ff2e6ccc1db8f721731491c5e4f0a8f9cee29bbe6de21dc8739b6675bdee57d1ab67ce85a091b9ce51aac8adf7113e8c4aafbccb985949be0ad3bc39cfb85a65bae544ce111bea513feb5a478f4f950c5e6c1b15450fd485ffdce4d1d1a8bb6e6611f3e70f1508c576d3105991ef1541aa14c3f725f8ba52bddf699acfeb45ed115f1eb9f2a8d0115111d8c9de45d51d9fc2aca21cb3cf90d3a35f0e5afd81645f0039d4cc18f9eda6d4bbc5650eb1b3cf2a494572d1d06533c9038f4a596aa617471e21c77ecbd91ecaf9deeff92b60a8d1ddd0b20bab53347b05d3770e304b61b080edc4276ed202e8cc84e62bb57b0923d7b360ddb3468d3428af4786d5ac969db445ebb866d5bb56adb566e9bb9f29ab898e568964b976e5bcf74e2d2a91b0a4fdd4e75458daa43474f5ed2a448979a2b8a8e283a73e8d2a1bbca95de56785fe7c9bbaa0e6b56a15bd3c17307af2d5874f2e2ce53278f1edbb870e50d1d2acf1d5c77ecbeeaad888e1d5e76f1d8a5231cd81de08aecfc422eebfece5cbbb2e6d61526686e294471ea2a9b732796606575ede261bd6c98dde8cae2b03e56ed2e34607915e5cd7b0778dd63d7a2079a8bcd79345688c6d759beeaceb7efcaec308bf3262e5cb970debc9903473d5cb7ece1c28133e74d3c38f1deba591638bebdf0810adb8153bfdd5c42cbf539b71b5770613d70ef0008593d1869f40c48208df49148d354135235359974cd4c30a534e184dbac43534ceaf0948e861daea3ce361d22e5965a51b985d43c626535545573b565223af0e856d766442556db525bc135d43c3bc683ce3a506dc596634ec5e58e5cf298a3978e7105664e64a42dd91790bee166ce3c5ca143513c8e4176956b9d5d3565611125b6fe0e3be50cd59c5f804127d9681455166664e3ad05986554f6551141f3ac79de509dbde64e3b762ef41a6653be13119dcdb5d3e676cf7959d96ef09d474d79e285175e79eaa5f7e740e58d279065f7993ade55ea2df41d7df82d349f70e34d291144efe45a4f3dedbc4360461a79844d821e3dc8a0842c4918d285d7c064d24c31f534d34f3995b313373cad23948c68a148558a6dd1d396287ad0f2ca226080f1c41773dc528b2991ec53588ffa88e28b3cdeec924a1eccd8b3953c9988d3235c64d698583970c163988dea8835565c7d9959986bccb133cf38777c238e32b8cd135845fad0b34725bcc983683a422c4366399d216a593bbe4de958c5af8dfe46a671db79532b670e994550643793c94e38a669b9a768fa61a69c3901aa67dd78b4ca6c1041b52ae7d84087e6fc29d1587186dd78e110572b77e0a4f3507bdc71d6cddae22864d97963b7a35dac0e41b6d03b76f71a57811a2178ac82d8407852e02b75d46cb235412bd34dd04a7b8d8723eeb4ad8747a5130e5a557de58b30f0f0b49337fa9442873fd920818dbf03d358153e6590b20f8f65f9138732ef2c853084469a938e908469a5706da947c7995f5b75b60e3e48e0528f633bbb364f10ae8b331073eea856263ae504b5733b5c333d0f41f6a8b326cbf581a38e3de68897fe78e5ad63cf3be25c333641e7c3b3746604c1a34f8044eb6f8fa45dfe9bce3ac4b10f7b54033b07198778c6d11073ec0311add8477bc2610f7da06f1dc2b1cfceb2e30df2a96f3b0d645471b0b31d718c233b0d59dbdbb6338e0c864339ea990f41583610ac4da4228ea2083bde218f026dc46f1d5996104b42446c10d14113125c4d9ad5389ef8445b3c194a864654a2ce55318a3c519d165f64167b58a306cbd8873e72f1857d74461d5e190c3ae2418f32dc021f8841c73cf4310765a0ce1eb940c23df481a46620011cfab0d13e32b1863d662308e2b0873cf0110f26a0621f831c8305d9318e7d7c420cfb03129520338f66b000403cba8a3e74710909ce230e8ae8473bf611875be0cd1de3f8022efad10c30ee910dadb8fec740f411873bece31de4100229be678f4c88011ff2d88730edd11076041317fad0072de8a01c7020060c8f74922e6a708d2de9020cfe508e3e32f105f4c9c30cc1c017da1002c84c8cc11ee318473d4a214971f863135fd007d58856996a508d20d929087b56a836f660106bcfe19370c671b34309471c8e3ad544060211c7244687bcead5af92d13768242824c5fa9b481cf49223168b26177222b434e4136ef8642842c1224f3ae7139e8cc32b6fc98a3d7e810a5b88421afa10ca3c8c710a51f482784b89ca58d8a1bf68a08216b4b8873ddc21b079a46316a7988532e661177bf88216b3b8475f84b48faf16a317bc30060f17b90f6090a218bcc885fe30eab19d59dc0218c6a81ea288171874b8a31bf198873fa2310b5b28e31ebc4a8769f4610c5bac631fe5884834c2218dea5c63b253395d65f6510a4c5ec318f698470377698f6b14501cda320735ec618fcea5c38298a9863df6f138ce94631efa0baa7d2e03c9ca4433a81ce4a0390ea28f7ecca31c07194f05fd510f050e37a0e1b81967f8135006d68a38f6294e71aaa29f894c4966963994941e03338b200a2215494c457a85b78a6cb4a31efd6848a4d12006116e252545227e6b22ad9a6aeb711e1291e43ca43b1a81c58a8ae50956e051e01e25f547a13407cb1ae617882da946ea1052672cdad72db9e31ddf9b1897aa971b88c5a51d108b875cfe00e3d7ac00c9af92e10d4470438f3a61061de33954f18ae7a7fc1444bbf87307352c1133df984934b1418ecbfec91f0c6a575014854e43cc141aecd66a20e6194f39bc418d8664471a016d606504d20d067a071cd5491f7908120f145623cc0df4b13a1a1267fbb4b067583b1ad00c73a7f02e861dddd8e40e7b3511bc51e457c4f8617c41628d8f5823411f7d093492f5920695542634b989b47ee2219f3c2e7b68e9dc564a34b0a2d02fa967b198585ee4d7b1f4682c7469b53c7827c7daf485495732b18d70ad1b87f93a31609a75619444a525f146347f5aafc528d617b36969789bc10fced6a11d10bf4c34e359936df4a3ddf780303019ac92ccfafe8237dc98cd1de12108d7e6571c8334703e6b2b0f4051b89db5adcdcbd9a90677829b1d6a78073cb33a4f0c77869f7540ad86f299128af3166ca0fd86a2b879887c1e629177b40216b0d8c833ac71a0472f3a241eadef499a15c4972811263091494ea6f5936a780e7bd721b08762aabb2c0a65295ef94a281dbc1567c08377f428cbbfe6810fdcb2982ef208645cc0b254879918d82c22fa3c02ebf45e2f8c3f70c1873d2c56e12641cc4863a24b457c5341482a322b652248556a5430bfd06f35e0b3a0dcf59198e2c5b1326431936cfc9ae73f7dd734ae594cbb5ba5dd329b8a3cdff0f777f80d9e837c4367e9593ce375963ec283a3cbeae9867832c5fe9076bfec51a332dbad7478c3e800c65719bd21de3092e88d1cab58463489472084c406158ef631d9ef4a24a7386f68cb2755d9498620a795aa105f28b67e51f1ab8214bcc483e9bb4e6624587ba80ae3631fd378833fe6200c3e22e9eb4e9af5c274ddeb5e477dea1e93873df00186748436d77d71cc521ec3d77dd04218f778c73dbe39867bb05211fcc00f99a00cf5700ff720303f5318b7e10ee9500696a04a0b310fd2500b88000bccd4107b3210be21250ae81ae34126a1a10ede200d9c4119f21009ca3034f6400b354009fa84103af32af08642e0c1658f971ddf801d5f3679603679def01235481d904735f296293df36335441002011de87543fe89f232b762110df10e18d10c06b2200a22122061210e6212220721265152b9170e1ba23837b70d0316530496192fd2213b813055a1172ba2174b07168195620ef373108361fae049ae544be1b05649470dcd700c89d07d62611862c40b91500b8ea80f530789b4100974f009fb2016ed203b8ab00f56325bd4b009911009b3a00f8cc12602b1153cc40efb500b41b00ffd9009a3d30c60800d5e130ed2b408b4100cdcf73dfbb0085eb00fd3c119eb200fb9400afaa05ce48008a5200abcf03d00550b91f03dc78008ca7015ebf00db0580ba76006b3600fde000fcd600394200d33d80bf0a13b89300b79000cae112a1c140dc105663d7883e9118423f8fe8368d60df4c841f1468f64636f07011e6fb336352411d3f533f941118f1211b801190e794318210bcf900cf1055241d411b1b70d2d911229510d81735f98561310e20d3555531f222243c10df623237b411465d116625123bd060fab36162c522379817448670fc7a00c905841c67004cab00fc9140797e00f72c10f66600990a40d772055e6e00fb57004feb00ff0c004b8b00feb300facf40589c45ce4e60fc3500352451afbc002c0e00faf8807fb40112c926b865141e35006a85095b08894fec004cb4057dee00efb900b35703ac47854e9301efa600a74e09380f13f98c00a1e630fdad006a1450e5ed009f6d00deea00b53e07fc38004ccb034e3fed47ff6805dde800e88900c54b565fba633eaa00be5d40f4ba90e94658f8b270df2d883def00dd2a083fcf666f6981df1e68301f52ab2d21014056f64932ab2f21d548370b1f21bec604dd1b943bc12911a1772f65512c5a25fd8900d319172d9802189937b2f45221fb22d6e919ef6e03e44e116e1d39e2cd25a3729167311754e419f74a81be3b71ba13517a42116ff499ff3500fa1451afdd917fa800f4c700bbf747ef6b02bf2500fbb31a00ffa0e2a861b106318be727e6f8918775211a49143b912199a5425cfe10e0ee1187e415191018586e670ebe510ed101b65531de080a29c3137fb561c2ca379fba46fbcf91de1510ddfa19b90178fd8210dfed4208fd1d0a4d4a00cf0689bb6191e4a1a5cfba89bdfb08f3ac31d07315c32649cffe4813d4378e1b5102b4a7f0c9943bdb25e1181371797681df511d0e0111e357b0dd212282138df19922b852d3d510d4a919226929e847a936e31170d835b34c9a181d4165ab76b7304a086d1a102ca2290c8a805c85af350415c690bb51046966a7e101375f5804ce767626fc922042aa171510f36421a72e1aa7eb256f409ab4be2a10b6761b7ba243644a28ee1317e37a3de351afcc11f3f235de9931ed2c63d60033635b82960b6a43b280dd1400cbcc00989e0049dc0062ca0026c90043910055520032470024c30034b10084f70044ba00a4bda838bb729dfc1fe1d8fd729a5722a2f8336d226a30a654ddd155eae4171515271bb3211bb727106c2118bc668f4f537b897721852863f312d13922d83aa22174b9330090ff2a9a874e16b34f97e3429aa45679fbd76a9261b9f125a0ffa40a0acf5a02dcba9913aa095dab2144ab310e3aaf6690f62b5b2aa1a9f6f692341db6bae0a621c8a1b3cb45787726c7ea2b47e51375eb25735241930631a4b835db0220eb1216fe9501e1d841d3a986edc619ba5f00776500843e0023490012350023870021e00011f80011960011d40011550011a50011ed00118d0012d4002821b023a00022d80059c000cd4600cf21aafbcc00685600a9ff009be600c8cfb78072933d5f3a14afe8635c68128b7f661eff0a0f5908a3a942b01f20d16070bc4c0511bb7688f360d8d06121ea91247a44489437b3d016035d5214f41a81ceb9ea115bcb8c5a19b9a87963abc419baa352917c6bba9a1a5a99bbab2ab4ab3141a5ab2fab3e4b7bdf5b00faed9053c1006634089aaebbca5cb249b3a6bb2ba9f91700ba4e00d321626a978358e611c95e16dc3610efb6709d1600ce28066e791ac60eb1d0ca4a3dbb1355cd6419c821dc5f0076840043880053440047080032030032350010c40010cc0000eb00010500114e0012070b714f00028ec001490011060010f80b71580c21a600114a0012300079c500873e00434d0024800023aa0013340021a4002fe3910022980066cd009cda01dd2d3320eb95e7fe6578316888e1225ed35510e897a11f10aaf400cad7b9d1ee771724a5fd540bbf7457b10ab3864a838394145dc502224021a2ab2a945c192a151236ba11b8bba6a5431aa19f674c6cb6bbe667e962aa1fd79b4ea679f036a31bc16a1f5600c0caa4983a4079ce8bc4e2716169a2ba21aa1e410989c081889b1258ad1616302a2532278f8630ef680099274280d510e0d31c012f629d9431d40e1b5e1b0a4d4f066b6490dd140adc0c00bb3200a73f0012370010f5001757b011a00022060011c600422e0001dfc000c8001caec0028ecc1d8cc000b500118f0000820ce1ed0022d90cc1b4001175001734bfe01ec6c0116a0013830021ee0013470021d1002333004472008aee00dc69a0e0dd990c7b124c781a13a1471a73ba285c67a090b0d1e17728f16522375441722218d730debc0d11f42452ef9142f19bc6db19573b1956db1744af52f71d114266b25566218772817256bb2ea27a1aada9fd85b412cbb2b7384d33a3bb411ca2289a11bf5a00ccce00f7b4007fd60d4b0490611fa08b8800ff7d00c6d700dfd900f4c800d44c90efc90076cc91bf6400e5f100af6c00f888007a41811fa600664a00ffb300c61803ed5e30596e00ff7900d31800bcc0433e7a133d5b1a5d821cb33040e2c33c05c465876400320f00119a0b71e90018ffd0017e000edacc2d6fe5c000ba0c28fcdc10c40d917c00071ebd99ffd011f80cd0bb0001eecc11fbc0007d0c1aacd0008f0d90fe000965ddb15e0b714e0001030c22440032350c43480099c300cd4b0130b439fe5167ff2908ab9911ba99851bb429df51002500007add07a070272d8595f5d28212647126b7c0d2bf7382dd5193d213e2202162759d2e213154321b24e511bf4fd6a48e118ef5023b68aaa986cbca5fbbc431b75fd49bd62b1aaa48bc8ffbd829b500b8940646d0962ee900b711007b5802895ba0f9d400779800a266d0c8840077a800c53954caf4007899008639008bc8028baa00777700bf3400b77d00862a30fc4f00889004dd810c0f2711e3aa88490a73efe1cb465bca90c7440034320021710021840019bfdcd0b60c317c0cee56acdaa9ddaae8db7afcd00cc8cb7f0bc000500ce9badc2276ce5278ce50b8000078000b12de66caedabbbd0019e0022220022590068b300325ec0019f0db4c4008a9500ca7100d2ce31aeb0518a0cb43ae6a18ae5a0fece0e8bb02e9f2a00122b0045950056f600a5ffcba1ef50cc5d00c1b77c624250dcd4252c8b2444bf4212d2522e91d15c4b7de6901dfa88674c0c37c53114a91416ebbdac9f4c967a22aa0277baa2eeb74ee90c8465dc88238aaaf8a1b56d2eb71b1dc5833ab306a27c0211c9b51bf4883281934cb7203379a77a44403b65e9b1de9200dc6a00c23580cb690fe086bf00662700233d00338a0019f0dcfd8bce5b18de56bbee66a9eda6a0ece2b9ce6575ec31e8001245c0116300348e0021f20021d30e51d30022090011d60db56bee61560cd945db721a0011d00021a4001807b0117d0011de001cfbc047e70044d1004387004388c0434e007af400d516c62bcc22bbef2e88661012750022a500424500447e0066fd0091c650a8460085af0067b60088650087050052aa0039d80096f80057e100abb601237a121e2c00d9ae621e6fd38f63373532123cca72232b2167d1582883a1a19ba2413cabca77a25bb61c8cfebbce50718f8a91b8144a08114e01003624a727ee3e7eb2abaf8a4516cb73aba2afa324f1cb050fe631ade9570287a6fc8090e39d82950e38c611b0da4400369b00765b0066ca0061da0014df00433b00027f0052a80cd0e80001f8c006c9efbe5ecda0760d9969df1b0bd001730dbd7acdaf8eeefa8fdefe02cdb1eacd90bf0c2259f01debcccdc4c0110a0028640048ead023400dc5a000caee00b124e032e60044c80033400079db00872f009c580dc11caf390ce5e2ab6011c90011e10c14b400443800553a0020091e2848e3e6f3819825261c9120d5054b8d042a88f1b419c9e5ddbc6eddab5751ad3a5bb966edbb66aca76fd2a56cdd83563d1a4492b974e1d3a75eaccc13337939dba79ea76aa93e7539d3b77f3881e75874e9e3b79f2ccc963c754fede3caa55e741a5fa6e2ad57a4debcdab67af6ad377f3b436e57ab5a9bc7a65b5729557366ed3a354974625ba342f52b474dbfd6d07ce9c3b73ecd699fb8bd81c6277e3bab55b6cae1b3b73e0be790397b932386fe2bc850b87d95b65d0a1a579f316ad579c3a25a000817082c389297e448d0236ac4d070a1b305c008ee1f7050c28203870b000418107173220a740e1c18205144c746080a1020304070e285f70a00003ea07102020bf20b98307e4db7347a09ec17ce41a3c6ce8c0a148942733ee9320a184293ee8c005e13208010438d848421563d2018c1da8d8a9871d0b2d4ca001072c2862893a8a80600529b430a20e2d6878a30f3eb220420711fe2ac800041dfc20c4903dfa18849869360aa9c76baa91a61a71a021c6174e1829d21860aaf1a525d06492499d75bc31a6ca6a6842a79cc5d479471d78eaaa6b2baad869e79d76a492509e76d25c4bc2aeb6eaca2abbda518bacbedad48a1db9da7ae71d37d9322b2e3ddd896ac23507b3d09d322324944cc02013471cc4c85c2cb0c010e30c9cc034cb2c53ce50fb1435d4be09cd9b6ebaf9269a62e6d8e10b419a486208348888c2850a2af86d04104090ee810a28708001e828c8e001631fa0a082609503963d632f7080020b768daf3cf9c0430f5bf2be139602eace730001f6166060031e4a70218421b0c0a28d233c80228311d67042860b42e8c083fe224868c2853e3091c3091e9a78a518c4e2a9b0420beba9e7072c0e81038e3aa698c2082d0429a4903ed2286288214eb0205ae9280061843a08f1a30f461cf185c769a2d9e6a372542ac6186c54f9a410458a198612579054261a63aab9469a68c241271c6b18e1049562a231a71c63a499e9a899ac9a0aada2b4ae53ceb5bc024bcc0bf1dc2a2ab3cceaf32caf2c4cdbab3ed912d4ecb7ed6c74cd3ec97414b24405832cb24a2fed26b376446d2770cd2a0b2c70503fe3ec9bcbbc713c1cc7952906943fd0408514374e4802840c9435963ef62a2097021d1aa84e58d593238f3be518a0a075d831606fbe073ab81d02068a9d6f3e72c91b97dcf8be1357febd918d95ae8e38b04316020b2e00c103029545ce020f6e000204da77ef20030a3020a183264c81a41663be29932d0a435ec3903e9ee8c39043d2a8a30e4308a9a38f254e30a204ef917340074660874e18421095a8c42fb0c1a3744c6317d2f8c846acf10c5508c211bfd8c62f42610b62100334c650063584848e8f14e311356b0935d6e10e9f14a626ec90d3d9d46295b75c651e62c9ca56c464c3abbc232f682b0b67ce048e7830854ceee81312cbd2c3777c454e6923caddd0169576a88928674acc5f14b51877744a7099c10c623685194d8183525df4e2a72cf30d71908a54a15186301ef10951404218b440c31a8c308436cc80063a7840b09053fe2dea042b3dad73400540c0826219123dad3b80ec64871cd819f27617e88020b9a3ba0518cb7a1720cf79a8c3800ee0aa021ac880f72e103b1428e1011b8000751600011e90e00381bc55b42e802c5f5140054c00811154910a5aecc21ae6d04a85de01bb29400c0b7d38841fde800528408108703844084840031578c002c08200073080854e74c214a608c52f76c4c06d4c636a4453c636aeb10b35388217c5708429d45992a1a1c39f5e4a47354a410a6abcc418be88863250230d73acf0286859a254e232967980832945b94a5b0295b58da2e52a89d29b380483183f11052f6ad38a9fd8565293ae29316c539460140518c56c2a32221562e1fe9299fec7742a70dff02219bb212a51818319e20807364605396f284314a23805207a91083bac01046830c41c42d0bb6f75b590c2a2247880b72c06f82a5c842c6b599bd301edd0475914d0c0032c803aef9ce791cdf1000692e501683d40041aea6b5931e0016fc5c70119f8c02a018881127ce0571d60c1052ad09c0c60c10d86f0053574418a4cec81149f30c664d8b6843ea860060fab5f168a00072340010e45f815043a40cde7cce7564a30842138c1897c42639debd8464d44c2125528a31ad320461b88318a47a86216c4a88639d0618e8fe4241d330bc41f8226aa70446626dff5c90ff542141edae32b73d9da45ab92442312a5a9c5a819358a218a44fe50c214b4a0c4223e418c687c868b78b2db84f0b2a6c0f9704d12eadba3186318c88ce3525ddca9a6705a19c4103534a5fad4652c132ad158261c41139a32bec10b549c22146a28d0ad8c25c860a12790b08b4e074a092c0644b290c9898f5aadd71e59660b76b79b1eae4a89800764c00210680f7a1c20db5de66b042a16d6afd8333a19770f9389958e20dbc39e0eacd2032e201006408049f02541061df84008ea908b5c58c31b166a4a3c385082138c200b5848d134eda7053bc0410a0bc1731faaa082273c410b4f38c11308810a55784215bee51137c42112e01acd18a9b0c6340cc1063f00c31ae1b84638ca31b3d094e31ad430c61c02610c6b50fe2326e190863178e10b23052214a6288637d25198e9b250a24d29140e6738438faa851de830c61ef81a9d0a281659149882229c200734ec01138fe0842f4cf597af118a50e83069a530838e0bb9343290d9226436f59775744a1c97ea546832532a6f48835422ed8c673ee3b8372a4319bc488414eca0861bd0a0056ff0031268908437e4353a0ec0c0285f7c81c402473a3f7ea4efc6651ef3a05576b224572763079d0b6840387a056bb41e701efaa8a7031690258c9b4d9fd819ef7614f031f034ce8013ac7cc515e8000e92f005253c81094938c21a42518cc9b4030558c8421f0a81053faa96085800d90cac69842938a70f4ec0c212081b480a5cfdfe444a08421d8ccb91e072431d31db06300a618c4224010d8568037fdec0a02430c10d4f40431adaf00437b4210d511882129c808628fc91082d68021192b006411c1d095168c32780410de96e4929325cca54980296b02cc51cd120852f8a318b5f30620638f0c0ad48a003fee860571568810b709083293c410d8d38052fa2018e718c033383e354bda3e18b52fc0114c5f84637d071a62b46c5428071c761deadb77688b4a789fb62a94ec39970801154e687b53168218720b0950634c024c52fe001de5c60f6934d0eb7aa13f2904fd2accddea5e42097df109d1cf31ddfc9b1df510fd609974ec2240d3840dbf116e5a8960348166b29254dfa9d1c9bfe32b52aab5f4916e7903fc80a812460033540824a389abfe0ba2c58022da08013580222c802f7c10238901f41e8831dac831421042820010f38011cf8a325708349f08334100462b8066590868d00896b988657e0031c40821c880239f89028200224488323980123700225888235a095fc4903349801179082f7338223c8a3594981cbdb0124d88142e38121f0c2c25b833f908324700250f80560f0062e21afa840877518873f209029783ef8ba343f980217a0813548034f400548908213889e16c800f1c18155b280511c42172082271802109081f723900ef8a30c68813460021de84335a00470cb0b3db91b759394323187edab0cc3110cf37b8984fe0a1a7fab9284fa869758c67f4305693005253002ffd000123081da618055f201ab9a2cda419e5f5140e5f80eaf1217632117165b969833a442ea3161f19ede11160b688f9a9b0f94a38002998eaf6ab96ce13fea28000ad447e8408ed07900bdba1d342381550a814fcc000f68012000022cd0022dd01f2320844380a637a8114f28842228a51268821118c55db98e138082f631a754788546188495d89157d0116870844e488536d4011740833e608234588223d88104d18116c8012cc8491a50022c00021d900236780384ab3c1d38810fb801221802227002a41b022330b81c408226400224283a36700431c8000cd08142308540480339f8045e6884fe16a0012470816d728136400562380553f0855f78022c28821c800345e0045bf8855968827cc1150c8811dba3bf5d612b0cd8bd1b6001cf79cce8b8811150823668034e2886cc2a865da8855d8886c7983e0989a92ba229c018a9c5f0066aa0031090b16281c528d803250081cb5b0439980334400312208293230111600fe9501613288225f396b06a39e490ac407231c98a0e48fa8e037000fd23b264210f83c4a4118096da91250ad8250a4c0eb2eb2b0d28a5d89b2cc1da0e8d1b4895430eeaf89e666916d8d9a5c94216c97280558a0ebdea801908822578827c918100e08029388144dbc169d202fe29810d39813ed0821030010fb8264230021528fe02f3e4001c68022d70043f58034f9006df828654f80562500527d0810f288110180122500337a8820ca0c413a0c41d80cb136881d91a020f804d1798011dd081c44b900e100113c881a253821c1801dd33021cd0bd3408ca19f89c0fb09518a30038a00442688219108354bc011cb08328608254300662f84c5a50055538855df0855998b55fb0831628011c5083508c0e0dd000e7f815f3b49e5d695210b895bdc2171a300560f885bc84043fe04d2628834e308666280665e09bec238cbe0907913287d230864f680141fd80b2fc0d19bb8055bc011770813590033b3c821c10c591011665e9a4f608a4f61440ef6439f8f0b142028eb2ba47e1988ef8feb82be0e0b10444a403448e5fa10fdf510fbd0acf951b25618180e3488fef044f68998fee69010f50ab07f001376083103800631954e2d80116201010c08226908125a8020a000001e8380dd8010f20011d5502384083d72a822600827bc502266002417b0238a88235780337c8824040b841a80463da11267903256c8203958219688124c80137888277c9170f188212881e0f08bb21f5cd2118811998811400811620021a900222889e0e18021c9001874c1012400227b0834130844560822e44023f72810c6001e9100117280124c08120c80194250244b585622006615012d5f3055e98855d28865450034198034060044148843f180446308546f883fe24980235880225508235c82e40b083badd03b54c032590030d22855440031aa80122d801369883416804b6e422e20b07135283365803c2d54d34a03fc9ba95f92b990f3038e1208e5ff1001c7883b8ac4b3f788226f09ee85831640120f7e816d641a4e019c78e8bb91ab32b907b9d737c8f046c3669b9a5f530dd54b2cff600ba5f1945f5780f4a9ab27304a0e40da4226b16958b8e4542330f608152fa001c008122f80223d540062880748c000b10165f19c20f880e66ab001da802f364024220844228a74ac0822730048a700326988251780663d8054c308437a01736e8034728040fa0818889820c200eedf00029a80341f00307760241d88327b8fe8119f09c92891e1028811cd8bd19200119018119d8811b00810fd8d6111882369c811be0010d98960f881e1768810f304fe86952120801411c855000065fd8850806865c608423500550488345100337d8834790034618843f5c0334700352a0044668033ba084463084424885dd320550788441080546a08447088554d88542c8011ac000f304012580820f10811976812850033450832738823240023460831c883d5f592510ec150c90e12adb1517988225354531e8012548c86ed54f5f798f8b6bb97f14c0ef60dd05440f636d47d111a4f92cde50ba16069cac0d00820f20c06e29160a108117d3b806004fde70a4ef7c240a48ac5fa9dc41ed1ef8fe9b2c15eb1e08049de908240008806f192b08b815d5d9b25b110112c0012280021ca0883ec09ff93d82695a833ef0834a308412c05812d8978513ba37700494711fc06b033f68433690822348823460db34200125608321f08f13288112581722d0023920d312d0150d2801a3248116c0815f86c597d5bd1cc0d8111881c9f49c1956e02650024660b459b0855da08559b3055e48855398055440855e603e3750023778044a50bd5e70535a40855de08547d861fb4205330e055408854610055a488550780445480440c01731fb9c2e1b811698811ce060b04c8228f00339708319c01dd3ed155fb9155d0e5e210301d8938e52ba808ca5813123c815734ffefbec9640122bf0601daf5addf78cdd509a8f471ac82dabe5df192bf9e81d58063ac66a01d2e9a42a935506982c0e68011a8347218b16650ddf64a9800d381e9a13a46633160108000298dd5b0e1d6f69c812b03f1010013b588537d08110c002f78103de32043840e724f4c127484a3c83831c20822640033b00bc40f00312b8bb3e44034108043698b6b37584417803b55483291898de6b01da6b0281be43251001c756b1efa9803f4ad988de53c594310f108327108e1398830c0084124b8559e885adcd055b486f8d26855dc8853fb8055ae3053f088135008546600439f80239c8e95fe88447e804f6668340100550b00560b0855918851d1e855db0fe852440330c40d72aeb32197b51c79a01343801bd4adeea98c75d32ebc9a2b1c3122017608112386cf6d0802728031c008312b0ebb27a397e34ac60d9b2430a3942da401c7b9dbc9e6b78d439e50cc7685dd64a0aa00c5c00caee3264996b225b00fadb8eafd26baee2255a658f557a31e18939f4a0800008004d7616e25516eda0000fd081d71b42fac1c12788157649112c48033748831d90813ea8031248831a3184a87e8339a88323b003419083467004dd46b81e4c03c1338436b83592e6844230f445688495060551408551808440a0845018630e6f8e114082f011e854e280a34b33fa83e830a3dc812001aa4e0313f5056040d3f4b6852ac9da5efe380593ae19f8020654680448a0844ad0e3a6d9855d98054af88406b78554b0055bc80560e0855ee085679fb554288311784c009c3f17d859857301b622d7d31dd458dd25e22c5ff2241616f051558e1121131f2610848fc1bf06d000256356b6161d27cff295531d2167d6d6e9727e24977c9cb2b012c0df31a4dea1a4b212f10ab00013d88060d9001c2825db6d0eeaf944cd05964e4acf5122def6d880dda531f5288fcbc677ae3224c7c6800e288229200256208657e8031328e02720021200822468022c48023770833e28202cc8d737c88235a03a2890822480e63a70820bd8801120811849967461023ff83b36608335a8832758834570023d3484fe4760843b908337b08336b8031ab81552bd9596c71519b0cd0bd076edd065c9ca001c100157cc810e3082363d7663288653f0856330691f4e854f68835b17fc62e885cea485f99e755f58700827055240058dee855bf8055bf88450d87560f0e95d28052720e4acbe000b804b55a66cf034dfe575165c7ab6e13c7dc5fa95b5ea325c117134509723204210d83258667861c1a424575e4a12a55062c096cbf7945b8f035c72c842395c29241e1ba5d1798f1e4fa44ffc80c8128e7b84acc5cef8dfc8324e2aab73dceb68a56b630e001e97a548529d12c01df3d4001dd0483868823780832518812430022200082544d618ea6448501b419cd6d479f364cdfe91357066442993064b142c49b088e0406206060c20a2b87192c451213b9890c8f1c52bd4a93fa65c8562c48953274e43283ce0f9a10584900f666ca8d00104880b143064a0b0b402850b1b5a70a81064d4ae62be7c9dda95b518ad53b6e4a0994389983263c78a8105560c18af62c468cd421528078f35a44ef122c6cb5657547c4389a295ca8f870e1d3c6400310244070c1d78f67cf0c0010506969d52beece03303d00e942a855ae14205a3151e28b59cfa8151c515b2fc416387861225338e5e5800da7268d8a11730f05dbcb80306ca971f4780803874070f8a2f40a01cc181eace9f6f57ee3bc309101f3213074d5db903df9fd75f769a3a79f0e9fed293974fcf7d017efccf91270f40204001d839579d760728b75907453c71421269f0f1c61b590ca1c41234440147168e78624a217e68e44414451041030d6fb4a1d10c3b5448041127cc0002540f607081052010d1871f6a44f1841d75f090038b3dc8610a2983f851c7132158265d54905da058648c7dd0c1071e801082075366d0c1051a7440c4111cd0e0092fbb1053cc29aab8650c2d8fb09144136dd8810a5b6b6ae5522ec518330b24a7e482c92e7bd222d82cb6ecd28b30bbf862cc27812482c38c1524e6c18c18388599749779c6d37a3c85a61905c97196410516904a0154a89db6da66177c80810c1958c013058b7590810b4160c14483689cfeb080a9042e00d5719f0ec71c7ee88526dda7966dd65e07f0218b1e70dec1272d7dc4ed67dc74507920dc74c8190b9f75f931576e7efa2d1b40000b1c606075070c081d7110902045081988b08108331491441d708c30c41a6f4871ab710c50404213389440b0204fa4f1c4208720f1041634e82042059f79c6c00523109103166fecc189204cf450861b6d9491c16f9185ca5a66516530e30520e07014521db8404207b1d9acd89615945089315c3512c827a87cf24828a8a4c2c9136294f18931c69cf2c41d2ef1d28ba2d1403142254d68004830bf3462e631bd94d98b4bbef4d28b2da2ecc002085672b91a66f16dca64a8f339355da8a8c2a6aa693dfe85e00211493ca1460b4f30e2061b7fb811c71c83ccc1c61e8cf8c186186e48cc06092534a6c4171c2c40b012d132071f71c8267bddeb0c58b75c7dfa3d47dfb2993ac0010b8ca5471c6797a1b69e66f3d977dcccc9f5444179b75f679c0509c43baf03000840c0010514d07db9fb2d8b818a279440c10e50c0b106165a14a1c31255686142b9a1956aa5117024e1040d3b40e8849c8c002912900054a3e980c27ed28327e0200a6850820e6e108540c8c909384055533833b3d45ce001b221011370d082168cc00590c9000117c3945a79c00369b0431b18418853a4e2178ae2c52c48418a5d30820d7350c4298ca1a7ace94918c7289431de400246d4a1fe0377d885328ea12897ec8217c2f81a2f5c728a4788e10f7250c31f9260a9c1f144041af00009ca708229a801097e80a023a4300517b087018b51c21322f640452462108d20c2075c3082191c41093460820e3050011e34410d6838c208488084d095610d5f50422002718735b420074d20e00ed4e0493c1c01040ec8c0034e20830a7cea33f97180976616b807446008382095052ce0000b40c0012dd84009403083257ce103a64bcc10a4200622b03276a1894ae034838103453339e6810e77bc831efc58735bd8c44f000400a077ed4e3bc659c003489004436881414430c21280b084218ce0044e90021a8c001cccf0240325c8271088a083272cc109fe75700213b0308334bca1116bd0e5527000048551c00533784c6216d7042c604106168dcc072e40d125adca5916c8810814a348d670e009373042de3c90cb0a70a00548594326d9308847dc2214b30894293ee18b52e80009a0304634b22644610c8a14b330861d3a60074078400da120c6116dd18b5ca02214a408451b7480862f808004fdb3901ce640083ffc81108df8431bfc200736c8c10d6b88c320dac084193c8e0e6bd041093aa0010ad0400c29e04112ca80063534410c62604307482006353c810d48008122576301b3b2010d3918a412d8e0874180c0044ab0651abef0041d24610432804c08b2300741e0a1ae7678021a0491863588c1094ffe68c31cd6808684c8210d69380216fee004254084064e48031a80d0021284a0a8434883139af08124a0810741c0c10d98d0862a0c970d6d68031aa21005350ce102d9a54112921004ef24abbee9e22603e0559cdbe5c79bb803000002404edbe9aebec9218121e090812160a1106f70021cb0708214d0000e6f008205a67319cd5480065818421288905e38e84fc23978031640948625e020072718c1051c50040b9c80061d280109a63b839d658001a729dc813053994b59d303afdd010906fb000b8c2005501181073486591d34f00b81a0041a16c188539c8216b4d8c52932410a54cc62168b6a0633b2b616adf46216b428452070c0084a7ca2cba800fec65051218a47dca10997a21505b6841a12f0c00317a0c117484403bc518906bc45820758808111b401126848c20d6620061edc606433e0b4074a308249c6770d80f04322328904178801096500441b54db5d10d0400a6b80f4097860420f8c80064f70c345230b840fe4c00491c18187d740840bb42036cc3672133436032059040d4868c214049b01168c60041ff0f66922ad8424c840096a98181276d00227b841061de8750e5c708427d0a0932d3061076a84c00321a73a073a8003d03520dbe16e7af70df07fb2d3df78d1d7015f3ac1c63ce0074708a20f5a9801119a90052ca840b01e44256666a0821ae3c0032d48021c9a3003198c20095168c2fe748549022340a8116fd852de6a358320ccc003a89acce052639aa574e0067c8b8a625cd002223ce1ddb74aca696c59a5270c2135341004231e11883fd88218bd80040d8e1005b3d260ac8028465289288a3684622bbeb0052a1a6187b034cd50a998c52738a10616ac47328cf1600790a0042410a1128a1804107ca6811b2821076ef80323146107398c02159500041a1a718739b8810824d0014e1b41094824420e9078c42328f108485082138048430b7c368316f0fd02b832822375e38229d0018094a581e065f08440b841093d488218f0820316b460816888967a9423194b1127036278421daad002b19621071d649666c25f811995800944180113fede90049f4f8595a111090e5eab99d9a5c783fb2510edcc19f0ec38475edbb99ec2258bf6f8477678d81034c02b21c7032c588461011030c10990401164171160411f08c28749010dbcd8fb78000ecc4012b0961a2401131801898cc0ad384ba9ecc0825c000e34c16969800b7c98068c80080c07a6504b4f60c007740ca6b04606d85b0b79802081c008751b086440c86009a95c40ce00422a988229ccc25b70c527c8407ca9022360821ac8c1277c19dc3c4222fcc129ec414bf0422eec022994c2293c4d619c0226e4c813e400944c9f226dc920cc42eb9d0228c0d064c90125a8822880c22734821c409e1c004223600229d002292842ea3582232802fe28e8d0eaa95e2980422810092880022a34d51fe0c0ab1c45d83dc113989c0e7c807321c111cc000d8c80070401bd81800c5245078440ecf14407e4008c5c8a65c458f22cc767449668395a15841f7f6893726816953cc10660c67bc4ceee74400460c1147c000450c77350c073f89f811c87ee2040806cc7bbb88b39f9d702f8530988801100d662e880136041849d000648c11330c12791ccc861411318c1ccc9401ac0411f64411a689c139c8007305811e4801188800ce040153c011cbc180db8011c7c9e3acd80060c810e78d2423d81130cc10cac4664b0ca7b7c46e0684048f11305c8400ef4400e44590be8cd0ce00d0911e162449a22f95c6988fe0012fc412870c22994022d884221b800bb8141213c410da4011b24422a9c022988d71dfcc11750c2a10843d6c04d16fd052a8042204c010fcc9e052446d141069760412f482529400220fc0126d419a2f0c2279ec22c804222f841e47d022674d929b4d92cb4992d78992dd4c52778551bb60928146615d9822d7cc10ed4002e769229f25ade308c0b28c6acb54015e80066614009408a06688074588018e840b84c86039c8648494b2a61811c3002232c82215a5330ce8ec290c010a8818d45c1092c8ba75847a8444121b4811c70021a0023878d1f0d60d674dc1774bacb73a44b7714087e4040a06d491160010a68008b388008980005e800106cc08dfe61c009781ecc78c0b59d0004b4940a4041e96864de70c009945cb44080ce640120b5001e9d8012348114000d0e24411b10010e4c521d100212248114f8960b28811bd8c15ab5c1b4359bb2b046d078c0a72d46669a9ccf004dde60406288002abdc6472861ad00822150ded6cd0123ec0112200116e400127c006ee551d6cd41071ca21dc0cda218432f00c32d7885d3685d1b20012c8e80647009947c000bd4c115b919607c59a1d882dccc02e4cdc22930021d3481e8918228fc5415ed425dd0c52e3c822d7c021b348225d49926dae52d70292dd80230308220b5c00ec8400b71e451e04b8731010910e11ad0db0cdc4c0584146c88401330811c88c1fe07cc0a97808afdacc76744811fd8c11f38821dccc10394c7a5b49274bc012744810eb49c09544bb128cc120cc21f044225c4416614077050c094748c73d866743a93b960137d21002f35c00eeccbac54800658881178c4104c810ab88a62a0910b7cc0090cc144b1522a45801d69000478200744d609d8e882644013600c0d54c0a142054a3e40110cc1107cc0e7b900af05cd930c416686c007049c6fc0867b440a0f865410bac01324c11048260d6c000f1ca1cfac012f4686a5640aaa90801fa4412098d923d8815ce1001330810820452775021aece60db84120b0012ac08d31b8853068450e7d826c2ac21fac4112d04062209b957c9bc818833200fe035c14c32e785916cd422dd802254442272cc21cf0001a00a528c4e527d8421699a92f140325584299fd412260991b9c02259c029981190d64862fc98cab6cdf1700d208949c4d7dc00d1050add1800b04da08b0c06b71802025c11b88c16360814b5540037c2a81ed070dec412000c223300203e5400eec585328cb4a5180080c0108e4c5aa7d806738c008a824262d422704421060c07aa013c16107ee4ce7aff6d7bc4c27bd6c8b056c000770408659809874801148e413a880090e011438c10f34400690e7091801147040037c491518c11134c109040d11a4c11440c003984013248112944005b45c0b7c6a0be99206cc00095887747c00cc3c800cfece8012e0800a208505a8260558007a3e411394801376c69380dc36c94734d98fb3648aa6246a08405e207c115cce421bf89ad54c1b0b88c12324e90c0c4119548e1ff0429dbad9d328c221a601168e0809388662a06064280608e4406116a695c28d56260d29c84122a4b0e83c0173595b1280822f1cca2cf04223a8c11a800231508212d88100ff0125348253f9c22fa002122c89c2c86cc80c410b84400e04416ee0d610440b6b38000690404869066a806605b4c0c49c0694b8200fec1bb6108142a8c2233802a47110e55a8b90bd8907ac860c34c18c5c066350c008e840bd49811fa0c114d000cc08a373e4177ef89fb60c48fffd1f75c64bb2ec07fe0abd8f0ac8ec069cd11b6bc0479840046cc006b640419d1f110cc1c5b1d1465581f9b600ec96400512013e464115a840308180411981b65ac0058840104c811ff0011618810be8800e344509e8c00ec46b590081068855b852c046a2c17325410b18010f74cc493a8f652cc0067cc1ac1ec886e9eb533c800bb8412330c29866dd27b00296b5411db48085bc25e9294228fcf02132010f64700e884128c8811d3842bc99100b6800663d491300ca2038012cba802a98e90d7d0dcef28215f1c22dc8c10818411058140b14d51af80124d4301bd0811fa442eaa9a928b440cf89417725ad2fd04220808222e8c060c9200dd48121052c082441296549085cfe801f1081a87c000fe8407a0ccf7e74400b30810b0cc117b0000d94c0bdb152e144066c3c812154c21f94425a11f58cca80f3848a729c80217c011368210d7cc0c676d0e03cc006e840102401ee8d9bc6c45bcde887ff89630114c8ffdd47af7287213300f72c00089c40476470f43e01149880ac58c0cf1401eba6670890001614c10590c01240800c0c41604d2016a44112dc62e308e81ba40160ed8f0e5080c9d1800c944009f40fc7ccc003200007e8800a3c23e8664006f886ed69000fec488332d2099ca853d4d4acd0cac778cc6a72066ab4476a6446d0448168a1422e44015cc2a129a8422e3c81d2cd0012a05e28a40223c8411bb0c117384220fe94456db44120084213a441e308d01198440e54c009b0a0234c2223a40261a0416ecd8111ac0dd79a82a1800223048211a8d608184e4f6840f3e5000d00c21a581689c4de07721b1218a76f6d59972ec21d987753c4880890406a2f000a90001bb801cc484a0b8804e5bad2fa42c0b07840082992974cc6b651c96af886056cc4170c4c13589609e080ce2081923c2ff440802040c1300a764dd38a135e8b7c60460788c0ac10dc2b0d32810888b000e039daf57e790f3742c009f8c009a4d2066c400434c0c3b82e04bca7f376c97488e3013440087ceb1a548130150110e880f084401fefd20370800c7cdeb021e403888008a00a68e7c01ac8c00c38c1fe0c58c0698840c162064222010ee0400d1093287f40273bc1f9ada24df9adaaaa761178c06758400f506e0584c006a00a5440c00c5002200c8270c9667aa39e20fcc1224841192cc21194801e930225b4811adcc11ed8011bac811b38921a0cae1da8d7251d012024621ad43481839e5e31822df84119d80142c9f4c5b41a0f94c11378570fb87220388106f4840e34816280750f98001cec088894c11424c228500227e9c01744411ae4c0baa14113acc11f44812bea801b1c2d08f4c4f09c4020d08075dccc0e78ee86e5474fe40caef00011b8620bb54009780010dcc0885f800c1001088c7610d21a0d64f05e8f500b7c3c67272409d45ff36886dfcefe8ef420cff084c6745a0722e7d7ff2987816007feed0e02000802d0006936c07504083a41c08014000390001040c13c15411370000264400350400888c91294401564010d34418560ac845d06c066414f4c011a543c126cc0032081b2ad4116acd68ee500091cc12dbd52b4cc073f5b80294701e135ce0e5400093cc117a1407bac87c308484d2d4003d4d1b538c0062c821f44c11e8c55212c650734c122b8c11704810e90001164c00700c11bd0000ebc50842fad224c21240cc213743218c1c143f80125ecc0b318ab93b6c014204127256e12f4800bb080a635c14eeb801828c14c06c11af4402b26684d4a06648487ecf20008006ca2295dde340e13fef88c293d80af1dc1a95e571284002da63c52f4da13484110281f0fd0c0a759881bc8951fecc1a909c21a18a70fb5c1f5f18011c455220602400c4aa36304850b2180547050412185050e183078b82022030a0f1c505c806041478e1c171c40f071e4488a070e74f4584024ca922f456edc58720100000216e830a26388112c5848804042c3c14888141050a0c060c38e0f434e88d071a00082044a45881852e649860d2d2a3c60702143091a1638903801828358860f3274981125898e8538de1899c1e0c1870e1b3a5c40d10203030d14308068f2e402850a4b3db840b28688830b479820c901b163448a7c315c7860418383070b38b818b1e3090f0a1efe3424b060a20308134dec8c2831a242861c207238a2f4a5458b286a8ed429a3444d2046473c5cb820a38998273972a40944a44d9b3482d4204133a545e00a3754bb51a3c4c5871c6890284192a44d99356ee60072d306cf1e418a120944913f14b1e30f4616a18412461869440e40ec98a30e35d668430c31dc700310fdfc60a49241e45043bd07e5b00342390401c4b940f668830d35d06022071a8600238d288eb04f091e8678228a35f62004c541fc6083061168a0a183b01e683223068e920801cf3c1389238924524923064cbab22294c004d3a32b113880cb915ada88803503102000965c72408490527a49840d3220018b81d2a8a203071c70c184fe0492c2a0000e86c84185224ef08c238c286a8001083c98620a2268d0a0020d2c4800021aa4f8c18207649822041c1ea020501e24bdd234d33e30c18940fc10e40d1318608884103cc0410d2c6880402c2e1fc2724b065640a392220c8a6e840b2a182103072c68c103081e8bce01263ef1a185102e00818728d0c0e18326d448a4103fda78a38d35e4a8304337ec60a34439e6704391461479e4114a1e69e4914f28010514481e0185113bee68518e3f00f9c38f410e5c9091052101b89144484c3140451a4c449102bf88820e34acbbc30d362a6c430d36f6d8838d36e48843bb452496f98932d078828d34be40a38d4012b1e3dd3290e84106177290e1fe861e63cc218af99028c3092478f853ac549b8cc84ccf16580a2492402276a39652429b25040810a9aa3ac33469ed324342b3aa926c729380370be89ba5b04d9369a4becbf472530d22c8005a0728b04004066648c2893e94384b030f4ea0a102064050220917769521048722d8203ace81b02023073480b283879e548971402948c2761a8840030d233e682189207230e40818d5f8a2c1359870e169ecda70c2893476f882a80a3c9896718c3600e1af19a648a105eefa0064904a02712310880704c4df05137184e84136fce30f39daf8439007896604125266a1e51453fc370b5bd00215b4a0452af8774056808212fd1a052944410a098a821214f4d7fe2310f6094c00ec118ca815c81831880031e20f734803cd1231073494e10b340bc41c8226879ef1006b39e0c10e5ae0021ee400074810030fd220872848413e3b6ac10c9ad01e121c91042598010da750b924f4800920f0cb123b200213d040061dc0001074d002110ccb58c58add4b22f2912c8d0925336963e1ba24a505bc2d4c3141800a72208513c08d220e4840044e53b69240a9021bb0c0481850160b5000088e69c1061070822c90c0031500c1149ab001116cca2015a0c806baa8010d906549b40b01114e00110440200538208427bea084c358000318404c0f5da0843698100d69f083f30a71be97a5c10947988f128680042cb42049394c520efe90e04334ccc17e82284423f6200714dd210d6b88c217e83507780542458c00c527fc250a4e600214a120c52842f1097752629da118050521c1884f44f014b540852d7a018c63f4cf16bba0852f66b18b5394e29d1134c5291a81cf8ba1f313f9f497fe20a108a2fda17e1cb34322f6e008460808628090438b9e808687f9c10f7368c317e887864138480e8ad8032314c10631d8219b277599eed830845dfae109b61b8213d000042e9aa0083488021182800422d480884f68c30c40408498d5e10b41d41dba7230821c9840031018810b4e50021724c1985ecc95432a2702839cc0054e5883094e73263095a90073b4d2dc104936936c400522d8c1e34cfea3aa4951200221b0c009d0b084199040052110c112325001b328212c2a7800069e7082089ce0043b20ed129630852328610a4885831392c0843528a10a70e0191cd0a0863494210d69e8431decd08842d4410c69788213dae00716d921108330c4babab386deca6f666a70821a14c1073130410929fdc213beb00635acc7876b78831dd61034f07eb34425fd4320ee67878719ed4110cb98bff6e9ce53846283174c1807fd9508402857102ed2ad360f248a4f948216b7e0452f7a610b090b9016b338c52924d83f52a013120252102532ca310127825f1093df1deeb58744fc2161b40045231836b246200c409568c41fee00a13d0042a3e85d031bd833fe0322fc080f7760981a5094304e708211730043128830032934a1093dcc4113bef086f4fa6185446841544230a39e3181096f60037d1601893fc4a13e6080c21188000422e080064868c226339081a550e00410a0d3d9dc4891bbcd0d25772b9c4bea56120e9ca00845c0810e6860da1928010b6f78731140c0130f9400084d1dc211a0b20320e480085878c2137e92842854c13e6eb84f1aec508736c0210a5830442008d1083648210dee6a83201851084638229f7b30841c983085e4ba4b10f3fbc31e0e144c3fb488673e3dd0205c842f35bc410da746c2718f00e9e2b4800537c0c1116780834439e1d46c1830bbe4c08699bda8db482d0392edb7e2fe00f9ab118cb820272cf8085a9198c58a98c31c049188207e970d7360842844718a7372e29ce7449825409c888ca639a32a8e98f82216213f68f30e89203109470ab1440ce25f064bd8272c0e8946f0f861ce71c43a1ff1076163d45f8b90618c7820061af8920d5d6502788920741e2841b6f859c31aece006342421074c38c2ced090a42100e10877f240070c028211ec0a041ef0c00e5c2d862162a1093be8210e54b925347d64262f798946ea2e12bd8ead70a425810e4e3084258456074f68ea9b87a083346841094de84316b000ea2434a10a5878de6f09e1873eccfa0d8d7084700b61885e2f8609f796f71bd280047bbb61117b506e2002510953fe88f40d7370843a4dc109cf5342a48d108472fdcd08157542118bf0f7bf1b118842e8f60b4950a985981e08a3a5813bf31b0427f620dd3f0c82fbe7fb837c4d643f3748ec0fbb67104e1bc1098235e8fc0403050541dca07bfe6b9f1157c52e72318b59f0e2c1bdd8852f0010188ae11804501806101804ca1784e1187ca117189017f46fbf42a1c25281161e8a164401155481603e01e60c68176e01c34e81804e01154881a14281e2206e142841fad4203f4046fa820bc4fe85f8568441a40ff6184110d840100261110221de5e460dec401032a49b7ee5c700619d1ca112162198e4000798c00f8ec004cc8e2990c0023ee3b300a501bea64e38a28de0fea624f4ae70e8c46da8e20008a04cd0706d8c6009b4000eea400bea801008e1100c21f3cc6c0998000bb4a0096a0d0bb2000dfa8010fae0b57ea20acccb10926fc93a411538e1113a61145e61165821154c611446411554e117303114542115540115f48f1752c1156c2115fe47144201805231a1120a007701ff140a82286e167c41a1402111fee5113250152cac14de8f1328a114502115208c177cc1144301123e0f1238e1a1f8e714140c1332c61214ac8276c1162030157241c2264c8066211548b17f12aa16549116945119fd4fff76a1171af01892b1178ac1178aa11804b000d9d116128aff76e11866311772f1c1fc711bf52f157661ff12921ffef9f11d139280b691161212802ecc044f01e658b1142eecc24ce104370c831644e510247ff4c75f14c11144a6df0281d8002111fc000fe2e008a0a90ddc800694e0479420044ac0089e600ab0000dc8e5e998200aa6e009904055c664ee040b8ea6e4cffc2a4c3ca26e10cd6dce1001dea6000c21163cc11362c1102aa1133c61154c01134de1155461143ea1133a011338412c3d412d4d411558c1144c611546412c43819e38211452a12f5f61167f611677e1177e811708f317120a30ff6f190733177e21177681ff7841a17241200daa02213321f52f1724921f7b0102f54f80f0cf1780a1016781144610c34401322d0c81226e0443f332c7111550c1fe14f6093547908042b31ff98f3127531c0bea33473319dd31160190208f01347981019393017da1a01272167961807873372b8ca07ed380f4afc2f8511c2bac164e411c670115fa49f78ccfdf408114dc098236ac03150c9d2e6a1112413e2101124c2e11fc4d2d3b10133a68119ef0d9e44762d4200a4e8d2b9c2068eca545d0c00c7ac90f2ae40966000930a001d48822968803fea008f66a6dc0044ee8280da9c26f3a740d43d46ffa264451020f63412d3bc11026811256412c57811355611538e12d379115ce52155c41156c132c39e1f338a11342412d1fe114fa52150aaa1223731b1d73300313307d810109931886a11e73511524121e7de117eefef1188e011cffef1eeb110219b232f58f1f232e162d8c16186a14ac319e1861df4c0115041300fb273a01b001bb144d6133ff04c816beb17f9691ff128a21b9912027d320fd4f32a79320ff31393f93206dc1c17ae1162e7580fc8780f212c4f6c5dfdccf14d2941bc79316a0f31b0daa3bfb67045351143a92144db02333414114ecfd44213d2b2a127d9113e6f31130813f7d757df2c9df288ef710e4430081105204101a449b00a1e1e020b942640d4e4d096a808be6e3030e8050cec625e0a425aa82000a405c4df44459c243fba66d2020024e945cd3952afae0103a211686344663d4143ce1573b6115d6725f3ba11444512c3b6148e9721369d415fe44b1465b911553e117feb214ce722c21b34b0b733077a14777e115963115007617860118582115a5b33027b32fffaf3719931a3f419f04ec0fd0c009c40085fcc5191b21a2428111821412e4692f178413c23318058ee5ee8b123e418260b39f261350310c35b9334f0dd5c264911bf7b41816303297714ae55119a9561826731901ca312df0c2206e3b5d13c30008154aa115aff3804690a2e48914605582de16e2962c635cf523f91340004486e20d3f46c69cd669d83a4810ecc00e2e640da4a00eb18020ca030448e00968600666440666a0f0d2400da06d0fbcac089cc06a9a00084ca00fd3c00a88200420e03028c22a5d820130202316c0964040fe8cd8900dc775444bc700088d8f320225e2150f0de17709e1770ba10f9a200980c0ef04850800510ae0c00d82172cf935463bc1113c614767f1157221155ea1641192300713007f8162031315a1333273411506d21e0792172a5119673117e1174b0bd3166cf39e688115d0b62f493117c7114ee5a983dac00ee0c70f04662f3b281410d814ece914b47417547137dd7116098a6d2df018433017205082ddb1a0fc51328fd30185c118ee51840150184a93348f53c21e4ca158d15403f53ac3f3642313344911ff38d8ff44a1144c61245fa87ee2e0e0e6e07c1e611044449b602f10d880ccd0a0e1d8c00c1a2e0d9240b73005776860dc5a602886420702fea3036ea0ec706004c4ce03b41877a405033ac02c40e0023ec0311e83012c004a3802501c600346a0033ac00330820c07c76eceb544d3a66d0e2d44c3f044fdb00f0ca1133461123ce11558a115f8d5110e79153c81132681453b8110e4b0562a792c55e1155e812e3919813b011238594721f32f73e12fbb9418a21461555115efcf140ab34bbf97344bf33151619605f31472c115c671800a881c75f8c2c611816b531470161402a10dd000103a61659b8d1180d51110981246812e1fc1a462cfdffe29300df3376318340f12e68075588d6f6074586b8b811d95b162b954014fb801dd571953781b3fb3a02c0cff6e213a17753c490180c6911a412c9ffe10a6604821127b9668fd456d67e166db4009c4001008f76a5c40713a20054e600470000848c02066657ef6c347e0000966e00128544eda82023e40039c443a3460039240492aa003702007ca400c5c60032a80035aa0045060913240044e000a80c0074cc00554a00454e00474800848a03442e25c4fd44a50945c51c2aae748aa0f412bed354659c12c57a1155741143421f47e1713d452107e15134241140636ac3d61133151154441a4c6d2141ec11430c11152211406b33481e13033b64bbbf4a14ca1a0e2297c4f56b167f114782114c7744f5b938163d18153a17f5801c3cea94803a10e40468484832e2b81132e31034761e24281975121141ec1fe676f36a3460a6130a883446660f84715d5732347e1112a2182f68f63637151fd914fef51018f411816907f11ca043be88230e1134ca11434523b135215189822f16f0361eec26c4161ee60bc5ac83928814808c1c8c003098ea805aa200e94ab0c8872065c00032ae00482800320024a64c22218e2552ca0037ae70448e0023a80963a600436cd7438c0075460030065014e80c1a1c4223040048a00d472c0f9da200e9e208c6820041462effa8a0d0bad70a41a444fd42a4b1c90c1355ec1f22dc1d2926314130ca12d53c12bd5f2903f412c0dc190fba00f0ae12b3bc139d4cf2f5359227f41813f8163717614504147c7721cf14f87f952a14e61172efef1177474308be1145861173a212107f017f82b14de9930fd718334b015410113660e42d2400a1cce11fc2062ece7242fc8f702819ede0f81378c82604e54132a3067a1171eb8211d58220b521c21739e51167c131202d5794ae191ff267d31a713d1731149cf3433c7b31466a114022612474a10fc855725e6a560560ac20b0f9860066e800572c0095cea086ae0099ae0085c8409bec0097882098ca0f9ba4b0ab0433e22e7085aa031c282715a77012c20048c20094a00302a402b686003c48222fec82b0083053c40bee59bd9b510015ee54cf6b8d0a85a6e3ab4d058624dd4b06da6baddd3505c97000e0c212c25795f67945fd5721530410ba0000afea24010f210134ca113dec0d6faa0080ca11538c1109640105e6115a0600df4a9e015b8141c212e51e12d93fc121338156ca11458c111464114a9991154c19e1028f77861b5bd1c14010621e3a0104c01e20435151f8a1ae992ae1f2114da09214d11a21a2114363833f3ef811f5d4f23133a27aca0a053807e41c234b831dfb1a04856823bf838af164bf7744f81c1840170529511a0d6f73895111850763adfb701a3d4165021879bf47e4df09f32719f28c17e9c63101824f904780d7840ddd6400c5ac004e4ca8e37c0048ee0c7c4a0073ec0025ca00896e0074000042e6203842505b80e3e72f204880009c0002c7a83064ea0023020035a80f22d80fe046ca9223e634ab8240dc3d024e2064d5c420d3be234dc46aaaff25b51220e673c92637414d6f277ad092886c01004610f420f0e92a0101c810f4e6006f8400b68446a0821e3e3d21138b11266bc417890c9d8722fdfcbf92f32c8658f2e992c0ad88013dc40cbc8c70904e11438410e18e1d8e8bf13746009a88f0904811252beb501a2d1a350ac18090c040ad3a35da21c515a342a942a509c4271fa246ad4ac54a240994a550a552853b366890a85aa64ca53a850993a35cb16af5dbb78f5f2e52bd72955a74e912a15ca23ad92bb6ee20486d317afa44c95e2b4491367af5db3a8ee72faf4d6ac96a24e823a45cb142d52a21e952af5e8d3275089e4fe00fa3367cea2478c12313aab2aefa73f4f9c947172e44b9b408bfc04e18124c70e1c334a9c20714203850611162c886081438819271ca3409141448915243470c0a183040507962d2338500041eb0bac193070609b010206960f2c38007c81ecd708641f780d1b780102c98bbf2eb01cba74e0d41140efa365d2a43e8656a15ad5297c78438508b18193b7952b58bf58790ac409ce122345521079f386908814764cb132c589299dac0184112044d1061a82fc51851b6c8860881c82b091441a6cd010c511123661c410349c40c40e6880d0c41a4d3cf1852075fce0c6641b38e2c81a7b38f247217320b1471a8cf8b1461b6c3ca1c30c3430410316204cfe81061b8f40f24728a5a4120a2681ecf147208224e2c71e8f04920825a2b4440b2d3d6d05d32ca4d842149a54f5321555b7f8a2a64dbcc4b9cb2f33cd32d552beb0b9d431c01cb3e79ebd0083942f48d9044c2f36d9a2664c25313ae75030d1340b2da1a855ca276285120a29a690f508271991f209238c04f2c71e6eb85186144aac9146136aa8d106206b3c61040b1ec8d00208467c71c71a821802c81e6f3cd1461d5f38d1c71e6a3401441586ecf1c413397450c105143ce040050e7cfbed6dbc2df0006fbbe1769c65b709d71b71b151770073c7c10b9bbbca15405d74041c124b27e079b24a2aadacb24a775898e086219cac8289219d98f28a2a95fe7452081c7e1062880a1ae8c0010d24ac31491d4590d0c72a8518928620409090181b8448a1431372e43804124f1c01c21051283103147b1c7c810e4c28510209230cd1810311ecb0c31b289050dc107bd43184b0800012c50327b8d082148da0a106233a9c0085113244e1862068a32147288f34228a2986fc616a288370920a28668662cb54b7ec728b2d34a1f94b4db9e432f82934b149132a34456593a033e5e20ba084166ae831c56cceb930be1483792ebf08becb5829295a524cbc3c5ad229a67435d229a93ce22549b6d082ca28a050f249a76351d409248ab471c41b7b04d208248c50f2c820556619881c7f38e2071b6808c1041034d0904308fed85aa0c1051754b0ab061574e041051450303e05158c303eb6db967b9bf8147470030d3ab4d0020d2d38e13f16740003e7fb96ba78332e06f84681e9d20d727e731ce8dccb3ad021c01262d1872564a1137de80327aa70023884073f7d2084bf54b18abc4804167590821188a0826365300333e860112ca083243481435800820e32500125d0c0054940030eb2b0841c3c41093a38020e3e74020f78000947c0c2104e600110e4c0434708419144208321c8e6370ca0c00cd070042224810539585f0910408314e0c00349380104d86581211c2c0369784223da300441a802134478821c06c1883594ea118fa0c5284c01c953744211a11805a900f18951fe0cc44ca590c92e6492945df4c42ba2e0042846418933f94218c530c6e62ab73963180350816aca9f126594ca294570aa5b655156b7a7a5cc0427949a052f4ef1884424e20e7368831ce6529740d025541419854b3e410a4e24620e826084f2e4e08636b4610d47d8810ea250073460c10d6b90431a7000020f60c0031d18c10dfa97863644010dec74a61c0a11883bc801557f58431242e0010d40c05cf342ce186533ae7325b038c2194ebd62832f7cd5ab38b0c1977308501c2360010a5238c41ed660c28679c2138ec8201a3ac18942686212ab784527d820374174c210aee8840938d0020e28a11358c8421f52630423c001074d48020e90a083218cfe8008a829010874b0831ce4a00d4d9d02083230441080800834c041093c40010b74e0042748c21c4ec01c040440820b48c06b1e0081e11460011df8000728c0510822600316b0000d2c2002d814810d9310c30e9e70873610210348080523a6f7895364024fb6e0042496428a390853707f5004297ec90b9b28ae2946b909528a91949bd42926a760542e6671b863684e19b22c869f0425a85fb089509ebb89a27a81bb4ff5042ca01085eb3ed1884400a20e8d6804281ca108ba75e411a0e05477b329dd99b9816e95300421dc1005a61961074a50c20e68b00336ccc10d6240c20e8eb0064360425495fcc423c8438940bc010d8999023b0131083bf8e1fe647e1004c6aa24883688810622e800185ba001045aa0a21c3d0e729a132f0268f439115c80bc3a4c00e6144002072881053ca085299c000d6f90c3213066883a14550a5858421ae45384f014a20f83788521aa5004424cc103452a42134a5004673ae2100ea0c00d3c60840e34c004753882141e50ae0d504d0717b0c0642a50810cb0b5044f80c30c7488031cb4e004291001022a00e6d51c0037ea4a0e7540ca1a0f03a7384064406c16a081061400032578800c4470be1958a0022608452e0c2186de31e22abfa04b2354e12c4eece2b4b380444ac4b4119f54457048b98aa13cb794cd0d8a5049d1d3e680218c44adb2b894aa094e72cd2645a5f6b6feab1b8ae0105715a580a526684a9d4f5c7712539442146bf9d44838d5154e306249a6d4362748c1c8477402106858031ec4d08329f0c00319b8003d6990041ea0210d34b8013c4fa00329e041104ee88b1ba650060263a10c7e90831dd650ee232081c66bf8c2177810042408517f327081b7cc4551e1d0cb39839e9747e7951c7cc90b052f566a1d0cc187432c81064bd0c106340005ee14a10555c0c213d8401e4c9814927c28821a2ed60957f8e1c78548431ca63c041510e101eea3c11ad860841490400758808311e680051a544003298040d01c731ab5426003197001041c900134b03507510881030afb000c8c7139217f4d00f64c1cd82c408222fe664e6fb6dc04df14e0697bc7822926cb04469ce00fa53005208af8862530c116a458c42c8a216a63f8426f9c18456d8fa21463562a159000852d72c10b5cbf9673aedc9c308e210c5632a550c53d6eb3658b389bc47e17b9bf1d9a58027c52349714a89876a7c8422abad821108a50c4ee0201083688e10e80c043381b61aa4e008f13305a0420e8dd8319b840072aa0411adc9006343c410a6d50c31ad690852888610d524841129055883decc10f4808c10d74a004ddc36e34f0044cf01741d002ded3012640031a40025540041d3069e2d31b10042fadd1511c472fefa2510410000e50058480054c8005dcf1066dc52c1552754b507559500755d004fe3ef6047ce0094b806f3d960527b000273002278003448005456301537704ff660126700219d08337100243600434500775260345400345a3014a20087c80031a40044e10054f5856ea831b0f400411c0001b40020d202f224677f22241d0810029161b29661dbee12d1ea51b01e08615100568c7000f20027230046e900a3280063fc0008d100a683008bb6059bb600aa8500c90400a33610bc0e07ab8065bc0700ba7d01160d1378ad214b0853a95f2088a804d31710bbcb039c4204bc2d00bb7b311c6a413946017d8d413d9e4299f541280d008a4d00876f007ca632a3952066ca00865c0044c90033a200333900334d004786007d448088480078070fe0776400877e0044ad06fdf580685102a9d604d9e4009d5550995300a9c60077fa10633a3064c20058f50099e30080685041e52055fb08c44500447a00340d00120400352402b5180011df08468c51a1dd0022e40023cd001605604357001dcf22dbe012f79c7512336682aa0056db6534b400236e704abc01d37b50486800553800227d0044ea80240000557d4011a70001780021e10244fb00144a0055150021910652750013210022270224f900216860122e07458a01868c64427006f6c86020740017f585815705621400459b60351800327e0942570042a400121f68627961c71150077f71b01d0001db000166000c711001d106229362fb8c10078fe366f4d000114b0010f4003282018a0d0067130129ce006b3505b555115af450cc5e05abef0494b614c48817ac6441533d1120c212a82630bfea58da2f00794900a5b810ab6f029a49708ac8026c2833b8a331494f90980c008b41012b7b515985026a7500acb253ba8400a63f212fe411615510981b06d8fb0088dc0099940187e800641205645401f53600458253459b2079f900999200701f70434400421b090ded200ab210241a00416225f605306555005cb080448a91bdb72980c700119560009201c164040bc012f19f51a22061b7d271dd3a10227f0002690044b70633350071954022e600146a0021080025010054ea0033fa4034590038da022fe75d0023a4004273004696004520007a9710220e00493a00348102238905f86d03d3ad0064ed0046f30052270011c00021f30036e60044c5005dbd201499004430083193067553004fde30445700124e00217d0015d880624e0016a258181051cb6711c20e551c201012e30028af6a015141d1d6568b081010e50025de7010b800104d000b6e1066f900483200894d04c80b00bc2f00bb7f00b9cc90bc7106c84124baf874bc7955a450127c654798d500b7f130a94c01695801296e05f9d400a6c8007a6220a8c300876c14899120abd804c4d9008900029b6000a8c700abc900ac3ba9cd0460ac7da15a00816cab99ca61014d8240acb297c96e40903d1fe5de1c109da76358ca008d8176ed8c7ad72800451900675102c46d00344300346b00653f00458400880e008a0d0087340ae6ae004f6c5011f70033980034fe002a8c10152d7014dd006494001eac21a81f52e77c7401de750076001e6e4721f200545e01849008e6f50077ee0067d30044fd0852150052a500445209549905044d0095a20022ee001453004dad20152400426d00225f0530b801b08e0015a450104a806523067e0633e1d900124300424504516b00122a00654b0001b500662240227f0010e40026fe02051a0011ec05e7ee00747803e1dc03e3c8b66acd19686861c0560025d59000a9451f982017b671dc5f12e0cf0014973b70b700107fef0001780036560591d8006a65027a1020c936a0c98284baec44aac177bb04515ba699cb4b00789505a1ef27073b0074870024af00632f30772d00414104565d6048200097b40045f502d6060076f76b8dc450b77500a62920ab9500ad24309907011c4b86d94c029d2661171032a79016ea6f207696307cbe70774b32589807dc25317de4409a6c23c8bc0089890bd54f20789b00772d00676b0078a804878207f52f0043df20453200772205072702b25f05851400239e00458c006f15b0346402147c00337f0011f80011450c04470044940030ec00143b0011ed751b0e10001e0b33a60041ee0065a40021730037000074510424ba0022d3002191002fe92b7040e209674360884500775d0931a50025310225330554b50020c804347600828109520ac3108f01917b0b75b3b0517108360a50221bb060f50012200882620022f33360c50a827800433c0036a20085fd0083946446b70a237b02dba812d14e55050ec1c1df61cf85265cce1007bc54071ab40b7f1501585011700029fc00b4524074e000a48010c4b916bbda54bb0155ba56329ce53ba7fe0041f20039c50094a700347a00417fb048610047bdb2d25e03d4cd701d802011fb006832007398002ff1a0883e00703612a97c53bdb060a4ce20673903c89f0089fe27924010a8f207ccb49afdbd609d9db096a010a8ae00876e14d90608bcba34c9fa0fe08bfcb4894e059e2c67dd9ab08b6320762400220c003496004c3b2064a40041eba2d4e9b433b40a71d303e3dd00244300766a0031810b81f200245500665f00565700343c00416870110004467773ebc7176ee521c4088954ec0047d0007fc0bd159270325540526e00125f0851b40c51da3b53480d13af0064e200569300453c0064500561a40034530032020023870047e50055e4602f036034d3036b4f10029f0079d20083af0550fe0411bd07645490122000919520640900352c00116f087cf881b3f5007b7f2056290af0a7c045c93015ac00f612dd6fca00516702e80359773e9a0c331401e385719a840c291b005100002f0b62760086e500249fe7004904012373113be3515b3e00b99f939c5e0398272138f20289c5050ba0c241ec00134b41ab711771ab0017de00ffca00e64f704323002d148036ce0064ac0023f2803cc9809616d0d4a307d6d80040395063cb0034950056dc04eed2b086ea108def4091591bd8fd015c70a149ce236a6225d89b00881c0dc80c02572302bf0010a3005099900098bb00890406dc04b176ef0087f2008a83c50d03d2bd1fb0784a008ce62258150707bd04c8fa9605fc0b571900341e0832d9003093802348004fbb97517b094dd1293ec2602997102499aa485f58353000547700825386427100221c0044eb0677b26036e26055000424ca5031e800590801f405001fe1bc072f285317e000731992046400244506615a0a09621031cf0aea80b026556ca34802d18b0901d40023d000106da0089d9006737984fd5025f0009ec6d076d1070e384032e000861fd0a58900433004f03fa00a6c00ffd400513b0d9b06000bc51012de00006400c61bd040360a0e1820060cd0fb0a009756e052860211670027bb008f2c00ffbd00ffac00ffeb00ffa50a99cf939a5100f5f6e0bc510d6c6200abcf00833b0066ed30f5fbe042e700451300743503d8510d6abf00382ae0f00196734600657f3072a5b9643a304202ee8f6b006c910d6bd792a7600086e90089b2d0efc700a89d0dbb4030a9f4009c54eafd2a5087310bd77f0078070fe700747da8420ec905009b423108da0085cb26da1509c97f209b62c07baec4d8c104eda180830527d6970357e30088310053960074cd006af9e01697586cbe804682006555002a3cc3f4dd00393d6a4d8f200be717619906115cc0101b0015000010c183e1d50021000013a3009ad00050ea0022ee000c5c11a41f60abb400ccd800516c0632edb727db0032d4009d640084b50014050088540560e5da3653005329001e843c340300444e03e2b80042e40031b401c0f50024d7002335061232002bab100eb720108d0950870026e9004ce14077bb00135900681f004ca8e5e5aa50447508469a0044ff0076850062f2e0303440120c002eb0366b4514614fe10011470761020e30880760d00f810600167d70096e1028d31078e702981f029811007900009a78038b9b008a7c0268052a99420079098cf7e80034a10041da0b76bc00719100572b004484f04f94302622b066a840119b0c9cb722b4f20063c2005543405458406b23207ce0d7dcaaccc5e820ff8c00b8ab024a2a00a2f910a60310ba17012b8b816a0500980507082000873602a8c3408e234076960bedf9d08c238afca6707daf40777d0cacd14bf6ee1dc8290ed8a909eb25225e17b07d98d0973e08f692007f295066000104e8ee4203283c8131a399e30c9a1430d9b1610163ca040e14207192a7e6c28d080008d25451014e030c54d96141d8c64fed951c4040713298870e870820202040b166c98712283882133b070d0e1c4d01b2810182098e2b3c3932a271e60d0106489830b2e3e882851a44f9a252a981882a3a6c10613142616588093c2922d71a948c8b0a58e16439e966c3861614107080e2ce4909183c69a47901eed5205a8532f56a800bd9922a6511a25476e24e12145c9071720283c6030bac38d94532f8c6670e041850c86264d9262a183031d323aecc8306204963d6cf0902a43c9d6a94f8cecdc91138851a953b34e49c902290d2c6ccba61d2270089b2c6efa220469d268ce8e4048fc049a8326cda046893e9182a44811a060f7faed13e70fd87c5168e9c5965950896e165a0c34e594fe536831a514501e092514514c218514531244e51350401965c250461905150b3f4425944f58c106b947387984124a30e1a4124618718491401249649044e6f8a33e4504d9438e3dfef82310482071a410481a29440e34d890430e410091c38f3902012387320a1184860e3a10018513723841040c484ba0239cf82a2284052870e0001482a880010730b8e0810518b860092c2c0881060b20780081074a502102074230e28412e030a413430ec1628929fa38010735a050430d270a3102010a80a8030e1432a0c10719fa90a2040b6410c102394ba0218b219ea8a904378c48e1892c2ab860860a1280b5809c1e6882917df4e1839f7ef899e4157ef8c9a2fe058a48a360023804b9c295687d1105154648e1441037f4a99611392a79820d41e460e3134ea868a6da3704c9802a0f4090a2da67aed0859c2b12604027070cd0a2da6634a936990b9e30e403203418265a56e0e0c79a27fe208406468a28421146da60448d2344f86309004ae1e7877bf981e58a6a3b298d06310291e1046cf8f1a79652c8e125915372412e945ea2e587175a94c18616520c24e5134a88a9d61851f6e1679f1345098594c4e8f1591467aaa54514061b3c5b5d7e8cc9a48927be6823903fdeb8d71e3ada004411475ca444114e2849ac91451819e40f40f66ee491c513a9a4454a40f9e4c5501a09048d36f6b0630d267a58430df7d2c0fe43108fff90238d36feb0438eb91d31c40e3cd600418321907829873798283508143ac069a90356c86285000c4800881238e8eb00065edba008084810c1092b88407853c01ed080863d0e29018103eac822038a2c008b0434968060040a3850c28807324001810c6428e30d0c6490028bf9336082932a68a0010e98c30f18c08321d0e00319f08116b400052820020526e08319e2e08301b4458306f0011ff650883d64220e65c84115dce08745302117a54004263a610422d4817b6940831fac80822a58c10709a00003f0a4842f6cc0075630831544c0a7a514c0011598000a2620812258010d5340810e1a00010fa86111a150073f9ea18135b8e11176fef8841b9480860828010801d00216087080040460000390c01c0720c70128c088111804104ed0084e7ce2136a88432244218a4594410d9420452f80e10b5bd8c217d299c52d4e810a56f06217bd0806817a710c5ef0e216bb28502948310b525802121c7a112518918840248e119c680420dc30874f988244a8f0042300d1084300c20e6e48c31c3e3787452ce20f837884e100c1883fec61119090518d00b186402c22107e10431de4f0852738010d2d20811a8404883ba4210a7ec003167050062520010a7168030f9230073e14ce10978b42143af6850c6c000272a20013aa6002388ae00434f8420d64108005308f032b884003127080023000051648fec2131040000a286109167080037670021d78400450d800fd90c0be05a8800832c180514a7082193c81041ab0c0063870800a54c4010cb8010722301122b06109236880110851083b3cc10f4d3801139e000111348158853a58462dd09a0a20f10018055f0964a5031fa0010eeb79431a4c60813bac21084760831dd8d0863e90a00d25e8c3ac8052840390400708f0210332900627d080588c3a4b44ffe200f01d000124e080444612d403d0800620d0c10942b001364042091ce883289c0082071ce08d912d406b095000d54a76ac0530806c6183030804140538cbc009d4008965de619f7ff8db20dc000852687240b3f8452f7ee10b4eeea245b49845fe287de10b5e9c82140c32457547b90b5e607716b6001b2328f1094850c2459c40052a46910a5630a213a3f89b1ca4403af8b4a70a7f704493a06907402ce21132ead07dfc60073bec610d6bf8832208c91e3f6049107650c3148aa003128400084860021a9010820ed0000727e0000bc4a0061d40c00250a8428be790894cfca1096b18d21bbec084131ca0010038400002d08036bce25124c8011bb050040f5480062480c312387001150894028011810838508007f8c1105580020738a0812618a20f25d89e082ed05ba52a0002479082092452650b1c010b3220c21aaaf0be353c41063ac00112ec4c8288ac390553b0800726c1872188400171c2536afe93f597296cc001b8e5801c8890e40b24a10d4dd8c01e84c4092344811311200110022191053cc105023dd8521c20820e3060042468400522aada37c29601c8d2c947714200c2c609031aacc01569800614d87aace06b2d46612bdb65e704270b70000174c200c09c601023a0811ddad0821310c109699825791981091c852210be78e42e6e518a5d1c8318bd48052a40710a4a40a241457bee7579d10b5ed84293bbb0052a4411495b5022118f48448039918a542c0815a5582f284c41afbe8182138e68048e06b11e4604e90d7280e61f0c81237911690f6e884334a79989c404a2108018d21efaf6063b10a20d4a48d3027c000526b0a1e58538d23845fe50041f94611168384219c0f085328080031938800122a0001408a0013e960004cea25028a0a001723804107e50021d3c6a224c3855157430049f9880081da060270e31854260217e346802ac3b50011108228c6e60422854a1050ba8800da8789d1468d0873a90742a4640410020b0072c9c200520f0c00834c00411c061063dac80071c000117f02002b039d8031ee0000a6800031d20021ade80833ae0e109a1b00305e4d0080b54c1103ff02c642f20d9a142a003a4d1494461bb80024060d9183dc0ad0900ec0504c0d9046000125e3b561410218e1e3059002a80d1efbbb600d79f2d6c610bbe053480b5d876c00800ff064ee4200ab9d8c51fa2b0fe0334708313280455f0854d62056200865d70b75900858ecb905d408505c42e49ba2e5f38865db82e54b2055aa0055020055ab0855ca0ae5918af5920b8f1da8554b82454a0855f18854ee8044b68af5000854ef88446d883407084449812cd718e574a8473bb263440033978913ff08c37f0031a5b032c508336280446209d2941831a40292010822368022b4803384083275cb921680234688223c0300d38823ed8833888833938021af0890d40810d50342cd08224c8823aa88335d02c1f383211b0b505c000072882135800114803141001c552a9a6800023d8001af0832a20843ac8010b4000c832a92648034d9982c73b8428080149690229e8800cfe501e1220011928049db28021280426a00125488323a01dd2308123b03d0b68800c088208b08019e00007d000158b9e13e8002718a91438c3ce3a0142f83f19408219c80113f0012548001598820048009c48000b208d4df4a15f0b808cd209f46b2d7574b6d61a09f423001f8b470088477a8c470280801a688013300206d0802218959ce8314db4358a68807094011e6801d16881e4d1813a100448188662f085e732066530066328068d548666508668b8c88c2c068c34865e10855f008679030660388550381155a02e5bb80554101c4c7884e86010fa02043660b941109c4768a64fa890898b9c51f8042221243f708441708e66ea1b4cc0046d2a84fe2a68032cc8010f688229600226c8023670822740031af303411012477891661a8436500325f8c73a781f1d18010be0000f308125e8309770822460023ef8820a282913208c2668828858000348a0abab3a125081030002148083127080be2800883a9805a0012328020e780012e0030e28149890022370838d3a014d5881edc1010dd08135d001321b8236888004588013700235b0820cd080a1d2800cf0800e182b06b000d56aad0078233e912c0648021550a20c00ce07b8000e908124d08126c80013d88313488211d0813f20021d50011d20023838813740000888034358013d41032748ad0cd0890bc0896673acd6688db18aa8effba824924c78f4feb191f0b1fd1cce7814800010d079a44778240001385005f54fd73a80d3a4809df98010e00a0f28016e2bc23f600453a8c05ba08561b0c05b10054eb01053108552b8c08964376300865e1805502004243185f0c22e60109c152c055150051c3da4668a26463811e7a084533085471885a9a110b0e10411a50451208540e0844e6804189990668a10c379844ea004baf98338908323b103e5b0033f700339001d2869823200b036580325f8011a28010fc0812798091a2082b03bbd0c18022d8803298097692a0424210462bab132300431f8023450822110d000700013c0022c3001c5ea03432084a180800de83a0b28800888003c019f0d00020e58022dfe803c4a1d0a2c10815d83bd13308126a883379800cd638b148000b75800607b2dc3e2002768810a083602e0802018ad43c989b6d8802f28011c70833558810a6083221081f7c1012378821020c3ce42011468820fd0012888b216d8811270021d581337c082368b80e19cadebf39d8832c7d842001fcba8e0944c7b1480f5f3b104bdbeeb53c79150c7064596ea8b2c726c35c2b2880b983d0cf8808b600224280334d82741e8494ef0849fa4af4e304bb4f10546f8048b2c866310866200065e40c95e38855e20068d84a482030566658345e0844c3805037c0440484b1afb84991d2f5e9805486084662ad20e011152a804dd2b833918d15318054510d2fe52600448a09b3d6883221882321004462884c2f9594e08854a08842b01213b980337788340108445589c7c532fc619263f288418514a664d033548832a88833770821948022c78033418813e11012c68022448a04189823280d490b08225e88a2958813b94d422208126e08312280117280209a800298800293801a5c0b25dfb4d14d8012330020bd00149e41f08280226700213b0b607880023980229d83c242081b0c2556411015a7b3f785cbf204003112080389244dccc800fa800154801dc02012528032468823b80031598011d600442989f5d930027308204c8800ca8460d20cc0010010830c70fd8cf66f3310c6000f60dded77a2d8035c7e0b5fedf9180bfb6c08a3b212c3ca900dd040117f0802750023b50c1b365021e500337d0810e18811b18012248481db80117d88139a8033f6884417004aaa11c5038af5408a55ef08514f50562f0b75e00385620b80cb4c049a2855d98480261b712de855ce8850efc8504196160f8855960055b18854a88ab2950831ff9400631d150b090b4313c5200910539851036affea20453081118a98435300445b80341088428e03034d80324a03b2b28022148023130832730822680424210844278048de3043b68023178022ce04322308450e00437308444d280501d0245ad0343a8832f18022b70020000000198e49c783b1218b1c775833a381313008206308137fe6829077880aca281c98c80d70a8cfa4b008ac089926a8b0bd880e689a94ee883483b000e48834948028e483fe9cba815188207c022bf90be5ecbdf60430058eb012910017af98a25a03ec9c2d500009f3bb9be1488801e5bbf5cc335fbb535d81a4e7bfd4f7cd53eec7bad9ce0dfd2b80006f00012b0d011b80007488237d0011d608342108541b00354900301db05188c522af1833f50021cc88124400210b8011a60022560822860831df41b48e084aefd9a54e0c01344c10cd4a4ea229059189753a2c0893b055b4885130cb812dca428861aa6ed04a0f50327a0a6c4581053e804394884b5fd9b46f09a0ca937548862199411a3550271da833de003fe40f0833468823dc004575a044c80049adb8347e8af4160843df0034f930300331d3f6803ab5283392092f6f88234788236680327c892451884bdf90295a2543b9082e9150326e83b5ad900819ac30cb8a8cc8a800ec00458988412808237d88213d002e8c1a8f6d93a2c72009f728d0350800da08006d0b15eacd7747cbf92522d04709f7044001588021148821338bfc98200b618aaace2471c98021538290fa0361a400164a90016580322a84a0a682d0ec081d6b8b591c03ee194ac37d23ec95c3fc9dc66fb658beb6350d8ba3eacc08add24010af000eda680273023ceb35b3930841c40021af283b85a8390cbe2541805ac25855458615472c09f0cfe85a5bc83cd39a33a080429b5833f78918d8b9c05b18512beae151ef01386e15ed8850e1c610eec2e54220546686253fa0453eadaf96826a19c050a410525b505517884ac8e9a5480114ae88496acb70bd1250669c1a5fd0413778443d0044de8032fd15e1ab383993b1221098e3f2804457884686a382f65844c701146a8841b21048f710423590f296c041aa904579203457d82857082c4c28126700222482008400136308215f8014635800698323e28d53e2014813a813e10042c9881559d9513f00144690d152bdf3e7147632d802e67bf89688bb1e2553848832cc8446a23a92728822b7200389c811dd0818a828031d481cc50312798820c403411fef02324380156de81ca03ed8f3a50633400e6a6dfd772807c7d2dff8ceeeb7b80fd3c0056a7880a30681ec0dccbb5e01198028356831c50d45a9483707b033748826e69834748054ef8034e08c1400a8559b0405b7004a4a18f6722852cfd847d2a52960c0518311154908ee8584081b3c04d9ad17f4305a8f66946da057c6b844f40054b68d255bac950b0630ca1e2f60a6a1269495628da3c530470af03374003d0f98352102446885998c384267da5b2941060ea848de304a0fdc946e8b84400d44520999f95918c15425f4aeb1dd0ac19a081279082a62382cdaa82372804470804dede4725980222f8c72930453c88823abf923bc882f8a3001cd802fe09200007201303d0441438042d7800bea6b5d5626e7374bf039d578c025070943f1d538000b8899c80ad08d82103b8be15508b0dd0010e6000615994624c4deaa0020e28845598023898042c8083dac86c1dc3819b9808f84c80a3fa28715622060d5ed51ace370acee8164e78dcd7e8eec624b3800b40821d38f91cc8811bc0011ca83dbce49c24688236f0db2da7123b40124ab8034818f147c8a509f90447fa05d98f0c7bb304282d714b2005237daf5bc8e80504af12ec40e9e03f82e3c00459c0124c69523277734f851054c1132cc15b9885545005ed3238163710edd2fdb4c9621751043155031d6c04a876844ed03817078510a117f5d25e9328fe84aef51b4a000442b2bdb345b0816e8339c81c1d6f0eb09d128090d3864d9434668a78f0c08143850c24a0b41164088b060a164a1ce980c2099a3527501829626449080e2760a16cf60c9a356bd0a6c18cd9b225cc97d3a8c5c4392d5a4c6dd3aec1bc26745bb66cd3b6553bba8d68d16cd58a5e73da749ab66a4f894ebbcab4a954a7569f5a2d4acd29b5af45ab95cd160dec53a966db6e4b77966d5bab5b9d120d3baeebd7b2d5e47add5b94e838c166b97ab5eaf76ad3af56cb396e0ab96eb5718e2f978d66adec62ce68ab69ae662d1ab5966b15838ea659356bc59a47bf568d991a35d2a53fd3064d3bf7dac59f15731e3d1a34ecd137550ba7cdfafe36dae159d74ecbc67937dab161bd517b95f2d9339930ad7d9f367366789adf751a8d0954285568d95e469d6a34bd516d51975edb76ed69f4a5fe89fad7d4566dcd7556635cdd252054da64b354537b3135a0547935959b53e5585699537b59964d3a859583d738725583e15ee978e3215295b1988d602e86655538d940b6d45e8ed13697677e25e6d835d4ec075c6ed551a79c35cdacc6996db581260d5ad2f8450d94d54029656e577ad61b5a3f0ed99b976841475d5fca8169cd57da28175b73438e895636de5c568d37da25238b4adce1d99d9ed370175377e281275e4cd3d8a40d4f30d9e7135045fd84df7cfe45975435db448717850e36d820a644fed1e36058963eb55788000ef61fa634fee762511cc6e5df885dc9155739211a06593a90cdfad836857918a2541fcefa613ae9ec2a2b86909de84d39c01635ab8be520358e374891484d86654d0b276ae5c0498db6db8423e74d56a9c659b7b88186ee6de50e99d974d5fcc8eebb4212f995b6a8e1f89bbeb521d71a989d1d77da6fd6bdf9d4b9707a83dd38dac9924c9fcf68f3a7a0cf58d31d78125be3937a41adb71e554209555f7e212315a181a5de976aa999925a72ac1b36482062718d93a0c9457d48b3871f16a6cdb08585fa14b4afde7aacb2e8040bd9aa63f18a61af956138acd4bba623e788b74a4debaee5d003edae85653d0e861a6257228bfe638f832d5a08a3e65bd9fc56865d94dabe4d1d76da4e176534704e29a7b971ff553652087beb77d993a10519bfede28b6569ef865b96b49e79337989e114a61d2c2a35c3274c120f3a284d81f634a8a21ddb975f56d9e467eaa40102482a37fe498df3b00ddeda2aee59535de2b152573d8e39d7c8b56c88c32efba187235a5673cdab224fd4acc98b6de2d6cba233e2b2defcac70d163034f8fb0c3d203b6d457470da2b2d3b35f79dae598732cb785555e4d38e6084d369ca439c976e156c9ed375ca24db71026376918f06e775b9b9caaf10d0226ac7084f356c2ace224ab48cb8000646003bd110eb915c96f4e92d293a8631938492b6d09abdf093ffeb83058c8224f9f0b9d9f04151e1a6a8c631e638fa21ce4ba49214865ff21565c86b514f1e9ae663aa3cb6356c595ac09681c9582965c7ee6a2db5d9167271255f546143ff1c5a379710bd1f4b651b9e971f1445233c7cf90073f61210d784933073aaae6c6c98d0d6d29aadcc1bc15bf72fc4d6d721b6403bd250d04d66b37b679d294d876af022eb09065094759ca41c9c85d033bd2d88f5fbc51a57055703add9ad26e76833710864b6cca3220b7e2a6ac71a0032531dc130d6b59baf4c02453d3c046ea42f693a198ca3f937a1dec1ad4ba6515711bf0480712e1213ee04ded67c10a5ef5ce374d22220f796213d633e598454b260f9ae880c788d081fe34a499436c6c3447f9ae06ac0f416d5685694761d2c9ad338e281ec613de1a81173f3afe719fd3f360069525a7f5250c949009e541af04275cc9c894721a6126e5160d695cf4338fcc8d2639f38d1f918b1a944c8d480f69c1b59954a4543269b91e38d19576cb903f2225dfece78d6bcc2f9409831fb7e08792cd79ce96371c1450b21213d6b1ee97516914c84a05bba5d8455344dc06158157c465aa431d4884a6f84c44c6ab5d0d1df4501633eb78b56782154551b3d538ca07cd5bd5b18dc3122b2ce117d7b9960369e1a0473cb096b574b0d1ac264a8739bd6a3cc0be351ef130271b7f26b6b8a6b372b7ca6006678530cc59966d9fb1247628c937fece38e98386fb0c25317a378796d05b51821276cc71d38856509332428d3848e8c96e5dc3a4543a68262958b691aef0a07012c70783eb3ecb2290a0e3e88637ccf15387d9325045cda17a84020d90619775aad354cbf0921f687dd78dc85447558d988e659e37bd77e5aab0e4294ea9c59579e4239f58b9658d72d2a31def8c5a1dd979b575d223b08445873bccb9d8f82d161df4e499d4f20b36f3cdf567edd06f5fdbc14efdb223c1e64cc781d101d070007656ff44673a53b9c284a510591ebcec413b68b8d3628b82a825a094407851196b34825602d265577c59082e70c5367524058b0b0ee1aed2852bccac399a9c42e135399dcb354737c0e15c58fee0a99645fd4950b88c0da360d79751692a316357b2a578cd55453462a780875e78c043abf065e65ceb58be67e2198cf4106b9de3da4d66e2399b7766665fdd4a58760c58bf74944718fbba58767878cf58d36a80d3c9e174e817d3ecc86f3a181d0f79b0431ef23070863ddc0e44773a1e8a1e07a4e948d8266f785851f630fcd8c83d74b00343779396aee98742d72610802af520474ffb0d497ad2a1d8c9a4fd26b942b51129b677fb6071b955dc0f0eebc4e0ac1f8a57282d272fabc967ac9c820bc3dc0c76838df4ec46374ecd0e59ee891b5de67250a0415d9824253a3fc1e5c87ca81f4b99ca6b6526d6796986e6352f2bce525b263ab46a4ec69efe37ac817df8b2b20adf787475c0e2332b3d0c0d587ac0031d8a9daf5b2bfea105437ad374dcf0c309dbd74d435a58a3ee2ba3192b565c73381ee660873946ae5873b2c31d7dcd2bcc010b6b44ff13d6e0c86badedd7d3a737978f52a76007a93ec8c27936d9c9f656690338c8bd59dd1bc79613674f8cee67db14c97ca4f672298ba276b7ddb5e95eba6bd3a9f37a8e63c2503ef584d9d10e51c31b741b1bbc5107651478b58e514e51ca7f26f55dfd40553f465cca645b5544e35175bec0abe3c3d1bbe7c286fc7be52c6c5ee337a28d3b3c9c7c86af9d5d8e0e7990537890e5703b74ce357a205d1d0d1735ee31dd574c8fbec9a28e4786db41e0998b5cfe1ee650873c98cf0e78809af8ecc8b5acd3a17b3ab67a59e1d83e1b072ab6e22a0b1c7463764257084a1947b0817eebe069dff60d182b104ee0a0e424212827d74a90a0f72c3fb697eced24274c3a7403b7589afb7443617c5b39f01ce644d684191faeb9c3f44ddf76940e9781cc51149e59e452c8e407a8e0877fe4c7eb001cb4a843324915d6c88a1b695ec7d5d99ec1d9cda9033be8dee7fd5e5ff517e771de9ec58333119d87715e5e719839e9e062e9dc035a1fa8a583d00dcb627118a4851c3d345f3cb8035f211af479daf07198f231daf4bd1ef1c503f3cddca789dacc5118a26d98ec295fc3fd91392cdd64ecd4fa58965d9503bb718f9229cbfe071ddb8911d007f916b7181235e461fead18fa09d7dfcc9ff9191005e521f831e09379c3219e58423519731d2073794325b65dba35d7fd39a0de4d9839fc5da8a10477bc84bcfd12c7ec5bbe050936508a7e7020776dca60c045ab2053a7505e36111c7b610f9dd9193c6c8358759c33b1e0a8cd17ce89dce791cf1b855c5e0123149ed7f41196eef1decd411c618ddac3891a3acc03a345df80bd5e86399a6271635f4923c65da1a749df186ee3a8c5e0f0d5dca755d8cebd5e81e51aae251dd26c53930116afa15893b95017155441951d02f2110559e2b3456238348335dc936fad107301db38848325b26141495665748321710f26b6034452a2f02cfe57e560e2b72dd727ee5cded5133de51d39a0a4279eda28f64951c96497758c520945eaf452c9b40ebcb40ce5c505cb140bc885cf5bf1d9ea8d93a41156e8e1d9c3711e611116329ed7eabd135c31250b6e9893119a7e89dc87d8192c3d9c627d5aa771e3a56ddaebe183a8111a87ed99dfd1c33c4c1fef5de318129f3cccc3a26da139815a04f695d059d884611a1dd193b885435e09cf0a15e0191dd92a2514656516b6ec1f1ff91a011214b0c59fb544a20761ce65724ffc19664426ccd221603b5c221de6ddbaaddb01e6dd01822226a6133d7d4394f51d3b9466edb5c33b48204c0a1e50288a055a2036508505dee47d3886a77017b1dcc754ad19f0feec4cf83853cb695e8375530e3ae553529cf8884f6351983b21cf51621a33815ac785d15632a3cf7c9ec8891cc6cd171966185f29963361dc792a5686a1a3aa3963a62996f16d1af1f960cfbd9a58159aa21d18f6199d2ac993baede3fc885bf52c14c26490b55016c2d05102e59462ee54665da66b65a6b2b816864496611addfe11a437945bbab50338480b3d5da2898e83894a1960a9e48289a66c0a8f4b76a23c38a08de22651d5243798e27ad88751404a7076e057940c78c50c804cde9999971109e3796595c3011a9fb120c86d1c3c0021c4751cac85151c25189d615ac7dddaa5e1da568a9c39285f1082a7f5251ff0e817a861a318cec33a8ae5fea3c9a53a46dfcee19e17325a3bb8835b82633ac820aae1da5c0a9f87a19a93358f3f4699e9a19b02aa9db2784b4f451d83a6d0fdb84ff9499bf965a8f8259707a108d9c95d401a66244a0b1d02e26a7a4389160638bcdf8ad2938a426438f09c95f99d9539a0aa75e28dd603aeca438ecadb0e01272ab207a56cd791b24ec9d8c577c18b650c11b36e439bbd1533bde038c1c33cbc605b96e795c2d9e7491a14e2e0533658614de716fedeb0c8c387d8a0ee611cf34161ed7d9a33c19ea086daa8355fc3cda5a8fddd3ba2ab3c9ce5a74d9f3b0c1ff1e5ab3542dadf1998a8a91b1db5635f0de0a22a18ac99c360eee381c2aa61d613861acd89815f7309fe8f95958338f8df68f15f6721227331a2661ee441dd0f9599db72a9a6de8183deb96a695262c2b0db01268c9439a0dfa91a3b9003aeee2af1bd433df42a96ad444cfc6ac7b0c774291598450a4f266be4f1246464125e10d1f4e4e236a8037a0dcb0c5a9f34920fc8855c7352235f0d98cbb9e780315f5c1de3cffae0da4aa9ee7da362412118e11a3da8c3cfbd1e5eca67d0f96b9c82dabc7eda368aa1188e61c0aee3f0c9a762012c5a861aa06618a0f29d9b4edfe0caa6a8f19c6b59d98c7e48ae5918c446d96582df3d6ddf2502dbfd50246a529b66b2ae248eeeb745221d3657251e6047a2e48996660aa96aaacee6a9ed5c5f3657f1f59daad5c35bfeb6c3aeeeaadf011e2c388c4d10156f9ee235d8c7be19155238c50566977ea8c37eb00e919603f11c5cb4aae9733a5c5c551cc3ddad7fde5cc83d5c3e711e7a46e39e7ddef5a9c3a53d25c64d9c397ea71856a5388ada36ce83189ea59b7a9abb66183e2856e2622ea3a55a3c0430371e6ee6e21acff19c8789031b01ece71adda272b08749594642993c55193f42266612d4929588b765d035501b92e95a42b66eb7ddec0c9f6647caae89c2aaf8e9b0894e98d4498b8aea2e3df1ece49eda3be46a6c162d31b884f3d25be9d4e4d21e1e4ff65b90a48ad90409e214e9ac144b38452b0baed1334d2b75ca4555ca1a30caad101298a4c19e399d719d8a9afe56415a0c9e1714766917b6035fd1651ecb03148a1ac00270f46d61f17d1a189ea53dcc033ec429d156eee0e29a3c44e0a9a59af2ad033c341918c6a93ee8c33cbc031b82d8cace9aa2d2aa4452d91989d5b5321f8abc2122e62cce86c3211d92cdaa12f8355c56c1d91e6b239ccd833a002c3cc8e60a8103bbc12c0fc72c4a8a1fbb811fbbe5ddfbd1138af2f06c9ae8f4b95bad1eb1bbd5662bac82e6fc942fbcc22fc0c22f0cc336bfc22eb802bdf9022dbc822ba4423a9bc22facc865acc54e82ccc15946eb508b7b154de66d5e37e51532b2535336160cfa19258f9354beedfc2e6339b0ef1bb36fded6913ee882178041444bb4172cc3b91eaea88dfe0301bb43c8912b40455981cdc330808117744149933449db0028e8c380416cded2a58551b0c2b2c33aa8c32123020ce03417708125e8036682c33578253a2454710150e92a4b3478c10be0340c28f50b24c236249749d5942fb7f26e4943b8bcf2ddc8c330bc4057e374537775587b350c8c813d4462a776ea37ec4d4976c3375c757125176589df238ee62f8bdf6a76a427ae26289a430442f33bf4c107b0000bbc00618bf5612b750dfc035570031f20f60bd0c1f6c28b55d8e430752f08e6c551a4c33181d3f480d8b0fc85f57555f2545c1dd52f1d2d5339e85e56e160619d71c8b1f662c9ad6a8f53baeed9cac1ad3e0c030c70810d70016f73c10bfe2c0302d311ee6518a469e33646205e9ea9a2228d3d0c830d00f76f53370c58c23e4cdffcad833950722507ee5b567256d9832ec4007507f7185cf0f6d15df9d9d4f685436ead9895658317fcf652077722a4c30579d221d5d89049d02b23909460b53b0c430cd8f752233853fff60b8801373864c220928fd9eccd42b834885f71311738c4ac9565a4076978375c70955159dfc5ecdced9cdf156ff1d681600ff66017b658b77857dbc03f4003347043211c0162d381bc25053438495660435208c5642745386405e25d833820deb0b0304e154d381491ee7d88c4a643388843955bd2f6b5b7fd8018f700967b7bb03aa0b63ed6515ec1833d5032883d9cfe3b88f96a37d93c34432480814e2fb570cbc388cc833e18f2ced1b42e03ae3b007a98bb435fd3ab31240218f0f67487c11cdc425d5a983bd8833e54ab3d44ba3d44ac3960b23db8c33a0cfa3be8033fe8c333040336f8833e709f95476c3aa039a5df033a88c3aacfc39061ce3f10835203f70b28427e33df769b436d7d902bab758523d0b04b835b47902f98019d7f351d24033110032c78f50b4881385c7839b0b998f7fa3888c3b6afc33cda2865fa1838f4d53720c331188337d0e52a3f221d76833dd4433b7c83317c0326072e354fd88ab3400c10833ea8816177350bb0823fc4828c2f768d5b033708c161ef38371043228c4119e801316cef2665fe456e298222e841c66bfc33a803341cba18ec47b880af3d6c03257c0118f04017f00018d04130c099670fe636c8c118d041cdd3c11888012be8c3228cc117d0bccf7f811e58ba0747d93295821874810d74011844c234d001189cfcc947342ae843f7d9c34d57f70b28033ec8b974c7401888823ea4e1bc069d2eabc33a2037c09aa139ec4326d8fa5297b539f0ba3de4024e1b38757f813f340318c4c00b7c81a5834348273853db8032c0c3f695039c838158c340178c0153bf8062af2e9c3483ad2f7824e802a28b751758023c98d2fb65f5b0af508043893cd081b2e3341dd883b5c1833b60b23a3c493c2475587f750c248333d8baadcb013c0c3b35fed8c3267841a2d77770c3c01718038abc1fbbcd832e7441a223b84eff762be88386b7c32184c00cd4c02b70831abcf8bf9bc23fac020d2081127083c13f033730c161db800d3c760c2cc38a6060f0d3fe0b80012cd48057778183ff0837c0c317bcfde003040c183648d9f3766d5c3a6e60043684f182d4be380e05be1803cf5cba70e9ccc1abf6e50545915c6070e112a3603973e6f4217a41b2a4488736a4cd43e7ce9d3977e8e4b163878e9d3a75f17c9a0bba2fd34b8763ec995ba7ce9cbd6102610afc926869d36eee86c5a01ad3063379e1c2d94bdad013b15f7262bc706b839b376fe1e6966bf6b26a49930f1bbed0938e9ab46fdfa415f6f6cd9bfee0c282a3518b164d1e9daa796190aa66585ab86fd4f07989f995c5b2bb31b9bc90638f9ab76ecdbcec85118395ba539f5fb8d117d81bb866aee9f0eba78f579018365c587207ae1d3b58b064257bc60dcb0b166ea5a3e2f66c1a34eddbad7163421dfc131be0dd82b9767e5a76396af886a4ded006b66bd5d4b96aebf0cb3378ab6c547c0dc6a06bb2c986123342ea8b147d3e49c4abbec648279d722044071a9162b8859b6818a2280c4b845147a374e04144af86c088e4910dfbd2639f8ee441071d736294112a19638c911d7d4aa18a248beca9b11c77aab16611a528720f0c6c5692511b333864661db9ec71e9b32ec0c8a39662f6d9079d6bbca946fe2e6fd219e6c08ac620661bfb1ce20209650e4bad30c7a2c96cb339bda106cc6ae8a14326b75820e51b65a2196c316af42113a693b0a9a69c63ba30a9077dd0c16d1ccffa6a049f66f639c3b5172a81c79b71bc69a60bd21ae2e2c463f699a79b765c7d0516629291859b34a4a3ee4f6ea0c90e1a6bb6dbf53bf0e8e0669a7fc0202f0cf9d293669a6b8879af221e12b9c51a65e6bb861b90faea02b569f0c1a4cc876ad1e79a70f42c25dc182cc1671b7a84a0e8c17096f4a7488a6a8147426ade3d150c7d362a471cce5caaea85606c1aa65487e868519e77dc116a1e77d8c9899d79de318a9d17f741572f922ed2c99d782ef62729d760e8a2957efad9fe471f73d4c9491d7c9c4c34be79c431671e7830f18a32932cbac61cbae4b22b24924a4be41a6afcb1d44437e5122cb1a88596e66971e442278f5305a2c323d58c69c698638ad10c4e7c72e9988b30a0a9b4241eb0a146e8c34c722d8c31c010e38b2fc610438d31f008079cabf5c9c48b038d9edb226ecc01c71c58657de61f38a6c395957f78dd55bb699e0bd6cf618b3df63d24e42bac9a6ab679d6a11716e6a6f46bb7e1c640b71e824b9d69f429a44cb770d167ae6de0e1d82145fa81a73378f551a71ab2900af7054bf429071e6bc28581297324cc689f454a2c6d197dd231266198c8e8479e881fe60946761c166af176d4414747b4b918632589a1fe52871f8e618aa1177fdea99171e810873c24f2191884411cfa108738c2a10e7bac6c1ba6f8820d786622a085491dcdf88a40f4000f692ced546c520654a8f634aa416d2e61825b3436a122bd8021138b884424a8f2822f78a919259c47296230372ecc210f2fa94132c6919a30c5230e3e84011e78970e7218c31be69087a8724345647cad19f2e0063138e14218b4621ede68472b60e19c56c8603a93a34e188cc12b5e6143134c680b786c808449f80374ee81010f14a18f6641e30b48e00b7c785009759ca71ce5c056336ae09f17d8a012a1d0d68abc172109112308479aa38520628f8da4031f712813497800866389640c2d0b47390e6524ca2883fe1aa54a144970d1149dc0e865334a078eda610f4692c6648a68113be041268ac02434f6c88900d1618f63f02c510209863cc4310f5b80670cbc68473e2ce11a32ac031c742987a57cd8234bf083697d21833f342317dc08e61bd8400c62bc218f66346883a9c38f38ba119868c8051eb9c04ba70c66c41476231e7bc08b40bc604a87c4a007d0581c38c6310e33b8a60b7988c4191e55122560631ce06007ac64f18c57a4913c2f084332b4e3ab697407770f492921fa9147d9c5400f7edcc6348270203d86440ff6b8c636cab18d086d431f9da881ec8ee4163afc031e0cb4245287b154dac0600e5675c89fbc979172e0031f73180f78624087462ea565fe2a69a54c65f796653863a9ef79410c70218f95dc64251cb96b8c7a320f468247a6306081307722959452e703cbc0c74ad8b19278dc135ab2c3c53ca4480bead80024d3e10b0f3ce149c665a47083748fa7f81186b6c4e0b4aadb0798e46235c1982b4c6489623328885adbde16b5b58d8118b0919812ca651eb9e821e25a418fb9042e37dd908b39f0318b387401b50f190e181cc10d5001ae1be620471c86d3824b64020cc3b1010feed03df5f96439259585273cb18a55b46215a668052958b1abf464a73bb050052bf8fb8afebe8218dcf8c52b76f18a5fece2c06882c65087d10b60f8e2c1c110463080010d78a4e31a208250227de78f2d9a821394fe08452f3e680f089d982342414738f4a10f63fc8218d7f0c785b3a11075585721e2784a4776420f74cc431ffe50d996a6b226262e092afad8923ffcb1a52ddde3454a66729099dc9375e8c47a2f8bd84d6ee48ef2f5831fbe09739887dc139ce8436564167398f7e113fb05ad1e2a133298e53c8f76ace481727ec73ee4ec0f7c30ee668bc3733df6718f7ad4e31ef6a8873cda514f79d4631ef39047c31a2d17a12137b9962e876acc911c76dc79623e4947638364147120379c5443ce3cc80186b9c1c012ac8a22aa91db8dc031eed1fa8074d072030e5fdf7a71d945875e3fedaa4ffbe41ddd7807499ff10c68383b3bf7cd5c7ab0c1acfb56e3bed3c0fe46b69b750d696bfb3cd538cf35b0b18d6dc8671ddb388f5121f494106978c3896c373ca0726519ed321ce28090f562c4a88c6059464bd2c8cdd4218f9cd8031f48b0121df4900730f4e7335ce882c1d0a18e2896435eea68ec9264e48ee4dc55d052c4c94e728293f299dce013f3f2c8232d6989b563d26ec649a40dce688979fc966e36763bde41e98659eccaeb98c7a75d761c8a713c682bf1353a72b3b85e8fa3d3dd50ae6ae462eb7092e5d7e6903aa0e5528d5bfb3a4c5ea70b0385d658ba00ced752c74726ca09834ae8e3d75befb56ada91dd95dcf9b3e050aed66d3dd1c0b94aeaad12a94f08efaa778cb48ccdb62f3676b5edec78fbbed78006feb6b1ddacf4607bdcd310b7e6afa1c8752bd2dc435d77bad3c16e755c581deb80905050bccbfb09e5f4c3cec884d0713d18ade4ca41b93dc66befb2959cfeaf3c32a0742f610f8ce01246e593345066548e9ef45e46cb8591c46e829389c9a3e0934eb951528e8e75f4a41d5cd689c175726cc287dae3279fb999452d3199afa3fa94354ac9358e91e4b8e3622b11c79ddd31eab4d71df0262ab9ec4eefae0e1c1848ef94ab1b0007e30027852c8d71e4257016b0e92ccd1ce2211272070ff6218a3aad1d9043ea5ca5005da51d2a0af04630049704efc4a85548f0d3ea811d601006df21bd9c433b9e61db3067dab2cd5ad203f2aa61dbc2cddb98a5f386fe2a1cd6ed3cd6e11ac4c1a8ccadf4d621ddacebc2b641f55a2f1d600f0b87ed7daef07d54ec7d60040c2b0e46aeb0f62024e374e27de6611f98cc597a81166ac11688a11a84ccae5e64e478e27ed8812346cec7026e46d641e526a67e76e26570e21d860ee62ae626868efbb44f8a1a2b4634cecddaeffc78c21d24ad620ceefe64ce629cc21de0ef277e6299eacdfd3cce553a6de38c8271ee6c49c6a11b4e4dd0f02ea4e445e904cdd7022e9c1ed01c4eed1663d1d6c86271b0ee0215ad1eec611f8e63e3a44e35024f0443ce054d31ea908371b24b04abb1d878ae1dea21391a06566c30dab4cd07218fdab241f3ba2ddc4ce75a346f51c44ddc860a1dfe9d701bd0811b40c4dcd4611b4e0f44604f44604f1ee84128e4011e2a4e28e82120d521672a6e972a8edebe100c7d2f0c910f975e041d0292232a8ef0766222f5301e78c2e038521ee2418ad241d2260d2331a2fc982ff96e8e288082e6b4cf2577c927b4cffd32466246cdfa2631637ce26526661dbc8c2439f1127342e8548e2762d26146aeb18aadfc58d1147709d498f21477e227eeac1d826e490830d8ae0ceb6891e3a4ee2a432a4c1847ef90eeee4a50ef3e30374ef10377ce0391a3a2ec4e8c3a0d39762e39c00106b3f1bc6870396cd0bed2a32fd3033bb8cd07b16d51c451dcd44d081153dd420f5be081dda8d0c6ec5132f3f1c2f6710cbbf0fe0ae1611a7c070caf8cdec60146366225c6211c7049dfac2791baf0c2e82142ac478af0454620f1466e62238d42256aef46540c28742f4620e462984f0f6f13ea960428184d4686f3ee7c020a918e621a4be3706610f36f1dee6c3737ae1061c6e36e62277162492886287452e9eace2856a21c3e0baf1a2b2738eeca72821519ebe5540270948e71c252e9a0ae00d36eec5622b956c2ee26aa05e98e71bc2c395ab0b14a30bb7ced0391e3ee908328e69204491006d12bf170101cc1d1f1c8ad1c238f1dbd6da810733eda71dc8c2ac3d22ddd584ff5a850f5e6511fed71f5e0c126604f218582dee0814665b420e90d0cb7f06130b2e238ee7e14d26558fe132a2612fb2272247bc24527ed65fc7046266dfe9cf36182c261c62f14b9532a2711e0dce7e62606234a8e62b674e4189227c1af277a226376120a0dd2e34411270a1164c28f280f0fe90a4f1c2e5127da415e2e1227f08ee3d813fe402ee9ea33ebc472a2c8723f6b51eb5c651c3e50d8a8921a49b0d36ab1b17c2da4163500e5921d10d455eae11df0b21b15ef2fa92d432d0f08330ff3d60d44b92144cd8d55cdedcab881dde6f11e21a432aff01e6b54c5d241484faf462bae1cbe90202792216924283e3247191247c5d01d02f2465cb4470df220d341fb5c4efb12f22644ed267a02cbbc2c2657327d084f5a3531d43026145f64496e4614c7f35afeafafffaeb5faf6341dbc8cb1ca14fbaeb31ddc8f28468d26250624efead888cdae92d27d3aed7d40c6ae706e108b8e60cd21b696445e8e2bee26703a03473f03ef163f6e2d1955a494ceee4ad0d3ccd22b95cb635d71e77cc2f03a95d1780ef19a2330453507b36dc1c2d1f29ae530af054445143115891b308c0a63951e598fdeae3033179220df8746e101fe602f596fef0bc3011a24122573741d308259d5e1573b122061c459edeaf4ca27e6de872631912756f212d9a15f71c60e97146380425f77534648f24e71ae4ad313af9c343d6dc2e6482ed4546225ec0c28c2541daaf296f00afe24468aca276346f25acd745ec32f529912e0f6d0def8b6fe2647cede4ed1e9f4b30369b1ef28b003bbe11bf66f2d5350b93eabeeb24bea44b70545d65247962a2135391e34760b4f1b9743569e0d732cf4be762a089b453ecacddc367331c7ad1d1153214a2f1c6095dd746c1e655568335346653467d4c11f69540b31b3e2b25637e38121c7f0f92eb36a71140bd5a1e768ce45254dd2e0410fb14ffbe00171bd2c46468e38abb4fa8654623a127e3f52622286f0b4d55c47937154ce0ee5a127576e27e2a1fba4d2e0e49526adf265da41d2c2412a83063db595fff4945c2335168fa3eee4c5e30051101bd21c2e6659d170e930edb85a65eac2012c53289c96a4ea18ab00ebb37407b455e4924f8d423c9b6e2c65fe5751f13242f532199c033b7e2573fa525906f3da36b36669f65ad68da8e0910a97b01e4b94f5504c28d6017a68b4232e2c464fcf29acd54674f30b89490f7b542033827bfbf066c6e166a6cf6594b560d3101327784899ef6118d15725172a284a2ad3530f5dc64ced95cb362e7ef7cade4cf759b90f80523129b9f366b8f25e63b34c77c2f782461c0e2f53a548835de5ca4e8de93e4b05f52f5255cee370a27057509c92ceee2850efce4eefc2442e5eb8ef6a515377ceeada33d01876eb38965c49d605359904498a88a12d54bf31dbdad1f2e4231bc66d554b4f3159f5097b1632eb311f9556698fb62085f5f53a62686fcfc7ca410cc330f6b23797fed0817b87347addc1c76ec27d3972e45c3246866ed8220d4ecbcfe4b2155a83c220fd157dc8170c8902646293e3d0c17d8a220f73e262a0d072ed6c5b3d90fbd8c1de60e639a733280e303697492e9634ff3cb1d3d2331c722fe94450c7d8134fbd2146f294109764521956b6c472b924702e00871d36cdea44b9961956416b11769724ebf0eeb36ad9413dedd848501ef6d239b8ed8845b51c37cf07cf8df2d083f1440f918c7067a5b909e14d1f17b2f4a2d746bd101f33e27d0092acb59738e1216478130cbd1646c4399c2b3264ac157e352e1e08b127b22f6ccd75d4a6af4d95d428fc51e3dcf602dd335d3bee27628471dec770c1417d57c2e6e681fe7c1f86499bb3275e11cb00e71399ef1435bbfa7a12137b12638873171f114fd3b31dd2e11681c2d33498b17a52a23f11e7d04194e106ec024702a76e50233580a308f0382d8a645b3f77faeeee8e1aa3cee3161563e8f21a91cd7114cf2f0533892d6f3ed4d19941f43c94b755a3381b18a543f5910b45446b17722217927d657422f5211a32211112c1128c411dbce71860a916be2f0ce5011f22216fee20123e0115d8471480c12632f245dcf745268d1e520e2a96d525278d283af25b9fb37e9ae91b44a116946190193646ec411f74211268c1c3692114102115eb5b5bd7d6cb6a64af8654224b903903d4299ce2627ce26f23d5f9dea1a3374e60bbfe53b70bfab30c39762315618fae7e88ee03918e166159a759b17461f886a1aeb1aaae1bf4101c0c5a51275554e822d816f0661e14344dd6d86c9ce7166d65150fda2a5430a78108bb6df39e9866a3017843af5541a4a886eac42413c56ab5adc5590cdb191ee8e1bf9bec1e844c1fecc11ff421129441119401b263447dd36116e02f1efc011282a1456ec21ea2a117e8992706bd0bd1199d532c250b6e23cdd64cd77736efccae06c7128e113d11b86fc7a10c5e611feeafd19c010ca4e16c6b2429b12c84756297384e3c67c4a7f513901727483c8e6f41ee5eed4d90e58fb1426eb8c512bb94eeb834381dde211e6a411a7262ff6071ffb48e615d5818fe0388dae772b4bb923f1d96163b3001a54e68e8621ac7f2627fdc148b1accc31cf188c1d990d8f12eafdb22ef079d1809456f3159b5db9cb0f424a4f4165ec356d48b135237dd97167c81b24e2c20f5210e14811fe8605cd0a19d2512fb0e8507ae21c0356e1f44e116349d1ee4200ffc211e7ef57ee36123c5f9e4b43564d839620a0e237f622590c20d8ed1aec0b0b106e70beee1623e2e63a2623c7d0fd482c671750ccb0cba2302b5ee42caa75371ff9653e94cf2dc1516e912c1c2552380d881ddc7525e1650a76bf1153d731ce8e0475602ad815d3e034e73bd61526f263d052d1d022def93930255b1e9a89315519c2a0347e3dc38bbf07ee8088ffe28f0ddc6d30b54b98d3097d80739af1cc96dba9d99aaa538e1159ede7c47c36634685313f50aee8ad5211ca4e17e68d51abe4019fcc115c2601f60cf21df471f7ea106ece147364e1f9a2195de561d58462aa58c4b64deae80cce0d4d0ce0edb8154a61ffc6162d4011c0ec506661de9ead4af62001bfeb738a188801ddbe5e5c11edc8716f94c1fc8c11b58c619726449ae011e9e1f1972e17826ca83fd811c74e11bc6c21b746c4be6e11b360120bee93347109c3d7fcec0b5eb060e612d63f3089a0b77d0dbb84db5d4992be76d22387004d7c943c4e297c479fb6a45eab5af5d3b73eb082e94b811a44475eec2790be74e62c77212c17504c7d0dcc7fe6e48877e34d74e1cc897dd8c46ed2833663b772e5db2dbcaae1dd757b0922583f66cda3468d0cc629b86adda34b7d5b05d7b1bf7da5cb973ed56ab66779b5fbfead2714b1778dbba6dea10a72b97ae31ba748f03434647199e3a74972f53d618785f2625c67c89b2b1cc9e6673ea2ed343878f8e257feae451de376ccebe78977905d1734fb63d578ff4d991c64e1ebe5c356ee98bf7e58e3d74ecf479db93085bbe2fa09e839b478d89327cf3dc8967d7d3dcbe5261decd233f2f1dbb7bcec6f83327af99135c07e5045b8f6ede231ecbf463c618d8f8c38622fb80444f2931e0b2cf3e5fcc620f41f84412c732faf0020636e678030e3d88e480a13600feca338e4588f4808d3cede093071eebecd38c1afebc340f395d5c82522264f8438d37de5433148560ec7715396078b28f3fc78c31214d3c51d3934d5431c55037dfd02451542f5df5124d2e7dd48e4d2e31259339e374d32553ee6c95d53b5cbd538f3c5d65050b2cc43cf34c5a6999c5965a6655d3e734d9bcf51636dbd865575b8adad5d836e95c3318a4dcf8d518379649069939e8c0d398649b3d065935999a030f3c6584b2cf38fab061c97394b9a3ce6ae898c30e3c6604a30f3aeecce3a2832ca243cf17afb533cf3cf0e883c918b7b9638f363560a38f3e7128e24f9bfb9881473fee8c53644bd0edc38425fbf4da933b9815a78e3ed895bb15affef1c4a10c9dd578b14e8bc5f0a0cc3cedf8b3c81dfeccf3452bfed8338b22f58c539c3136aca84f2d37cccb0e3d31f4328f3eba2861cf89e6e8930919fb9883cf19c1c403143e993c311f38f26482873edb69bb8f37e878e3c532ee3c5c093e0475e46147ee7823c68a44e9a38925fad883632bf08c23145004b163944d277e6954d4122d54944c5875c9a54b6a7219b53bee6165ab4b5d47b5953c747ad5ce9c6eb6f3ce3b6025a3e79ecfacc5d63686ea6d175b73b9f5b7598dda154ea590427ad8a38a35e6693aeba4e3a9a99f7e9a4da7c23e660f31b544e3cd317190b20f3cf36483041ed770161bdbf0c8caf633797cd30c2f8908a38f3c1ac5434dfe0d7288c4ce3ca444d24c267aec4327c66018134d0d6080130fdbfb2ce2452db5b030462efb9a730c13613043e7a640a5632b74fa54f34724b31ca34b22c4c8030e50ee88524b2e7bbcdad53174f0200c394ce8918b3c89084322c2d1297cd4a011a2a0451c5a618ff2e803125f40041d9030875a48231dd1c803b1ec710c30e4c11804f9461e9410896f2cc61bf2a845261061896dc4c325b5f8c21c84110f4410ab66e1c821484ef48d3ba08115ee28c747e0a1123d04a38104e98637c4e1132546251c27f25051bab4940e11241c5203479ba4b610978cc3566df24a57c8c329f1c8242b5d641b57b8c2a2b9b5836d74c3d3ddd032a8429dc52d6b81c6fe5c02358dbf5d032e7f54d45fd2c197c4a50352d5400c3752c318c835e691a9a94c6a90b5197a206b1ef67852a7f4b18fdb2d063381b98cba78250f7b5cac271151c73ce4a10f7fdce339a93107266fa746b671f241fb6820db4a89cb07e92322d179d0b1d8368f775006776d728f39c481927ad4e31d5a3187788ca58f77102456c79266af08e20e3889a3575fc0902add61936e384d9b9c7a4938a4a98e9894a329d78c674fd821beab7d91261c114aad80b4ce7170c41bdd08875094f84525aed31c4801874e4002249b80436a3481683b6aa5a5741c544b36e95a56c0f492adb48945dad4e83ac2439e313e736d727a9b47c192a73dd1f12cd0c0065afefc44d33ffa692f7271cb5bfe98286c88e390878494a412b78d725c8331915b4c2809f3a9c794031d4f4d0d3c403999d4a8031eb8a3cc6662b319b6a1231ebc6a933bd6010f73d00a1d6485077b38258f36a9f258f3006b5bdb7aac5aedb2ad75120f9cc8d34e8dd80aa25a52c7fbc0684d5b4d641ebc5aa644d6c944ab1dd443f3d00525ec118ff149539a5cecc93abfa4932b9ae9b2b2e2e665298a8e3171b31d56311343d4a9938ee8a4b50d258a8792c81090e870224cec9042d29150aa0054a0aedd0913bbc144818284213c614a99aec645e894943ce7ba0a57c6c315adb0039a2e991b58c262b799fa894fdfc52320f5d247bee4452f9302aa51affe01297414159295438d63268319cad04a7c5b9daa5449171ed95c06770066dbf350c3abb21266aeb87b07ee9e8a2e7958063af160476c8639ccbbfe8e4eb57c1e56e4119e361dcb2be82a0e3b78b50ef1608645211ef144394c138a86749e67d38778ee85b5f24c542620118f3aa4268e8d7ef625e5314a5bad18e4cf2294b634218a4181c4e47282e4b801fd4640a9015ca93c392a1f398a91a796e4cba2ada33d916e1811dce1f080182bc5f18a8259243797d4638c0a66a9dd5c2ad33e41435068d1a99e03b596bdd42552d700b4a58caa5ec8a526d089710c65201318513166aa99d32a6620433acdc895321bd1aa47efba19acae72978895076ec8b3fecb63eef2799fe6703c9e87b6314b4dd4111ea678cc85e9add80a2721911a74b0d66373c4434db6062c377bf2c5d28a96c7dc1ca3365ff294731ad6af1bcd3157f6e9e2829869a0399cc850180250a42c13486952b26c998d9485263148b4dd89129bcc50707c33264c418743691ca6ae51b72b747aae75371a3739d509bb7263c776e74c9699da791ad2a0a94e6fcac746f985bd91fa8b211799547534123284799c56a36ad56b3e661e577547eb2c83aed5f81a3a9bb9f05c57292bcca8956d937cdeea2a2c600ed7dc1ec4bceb5d5fc81e770c79c4251d0f49812e62d44c848cda5cc756ac592b854a84a2e2c0f5442e03138c2ac4b467baac96aca68efe7688d2d4b346ad963a5b902c5f6ddd49711a52d6cde4deb2bb1ae1e8863460eb0d69ec6489e1908694c3d6ed2e89c3294cb95737d2f14db44993455c6c473a14561cac8ca7a360bc8a1bb3123785c8798ed0b0864be9680d4189379074b1a9e01e0ee870b0f72f7629473920d518d53f92a9af6734a6b59a299ce0e4549cd26a28b15aab637e54d45f2df0b15eaef3e23c8f6df8e0305ce301d7e6df95e63db1f92a993f499d47986db9576357760d0e6582f1d612e98946e8244d636d05ded3fcbdd4d6b6c52293cd6c9419b13c9edea66b4a58d832892255a4b676255b04484af40dfcc4640dd55a6b570e3ae40d3fb26e44514e9ee30d5aa344e9c614fe64b2765ca2266264266e52277fa54d7532466bb4742e71797893797474826741536d81700c6753ec655e7d7154a70729ab5754869454924378ad8768910113b8a7199da21a92242ce38055ee400fea806af8400dbeb00bbe200dc9820f35a30ed4400dc8d256f1900e36a77336470fa24673eb016a23c62bfdc10ebc600c22c729a2c5295b213e6338513e770cb5204188200abcf00df8f04b75c50b9bb00c81713512210eddd61fbea012d4430b91400911f1742f213e4eb77d5a522bb2a2113543186463748088630aa530e684500b418075078a406277a0d85aadf52379075be1f0234ab66e08458002651440d150f79489d55626eb7715d7541e5f83fe4668c415ad10167a32537ae32772d1279ec7828d1228a22748e2e0168b51547d0155aef77a4985399fc229d79819b9871a96413aa4a373e8b04becf03cecb008cc704bf0300dc4200cd7e00cc27307fbc07239474c154673caa787c7520fcc976aece00fb9402ebd51616e95661c366bc5010f91a00cf7b00ffd900f92d02f48a20872f0053c300691500b4a871ae86246c5712368400ad3c22ff3e00ff80006e2e05160346b925852681276103525eb141bf5e70ee4700cd06193b5101116684e422180770724020894a7d864a038773f4265a678770bd57648310e3ab4146182141de51556e2213cd125eb471e5f12465209705a815d5d31707a92827afe2317c6a8537bc417844328cd585ea6678386913884f648ab270e87f138f3d51864b518e213495a852e24471959b83af5d834e4328e53d518f3300e6bb00cf1d11b9db273f4548ecaa7736b966af61857e5781e74e00f74727c3ab7456d8515a5e50f254492f30006adb00fce8004e200908a600feb8013eb34625be7194ef259c5810dca600fb9d511fc02156604795c244df2b6863e0746f2700c8de00f4a642cc41009f3109d5ad38a1f012442e20ddf808a420994a20880048825def080a29850bad57f6507885d5295f7b45b6544796ae4365d3137d5e5260f0516b2d0528342536ab10d7aa42874d1707e1648a6974889b40dde70547e1918aef75efe851113b1471881010f8fd67b21772a0e367f9d1286e481556cc3419c060f9ef199fe2006b4502ec4f44bf6f04b39370f963492e0314cbfa30fe0e1a25f980b61e00fc581612dca49b7f3a128071dea604dc6c061fb8004ac201d48c00cf81007e4126498240f16916fed701e3c200ef3a75c4c410ddfa011ebb44a00b58855f71c048173348149a5752288c55688300663f245f3500b96300f3b5133c7400dec106e6c579e4c065b4309807dfaa703f80d768776570250a0e84469e22168e4a8687426653264e6004de3f025f7f981624479fa497031e59fd8d0168892177b61287bf1478914487c91a036784884a60e8b148d6515abb0c7298e4389f535fe61b1a1a15e883b20ea7300a6a138e10eab368ec6c1067a600ba4000674404bf3f00d99100389a00cb3800423654bc3600696b00ede3006c2907cfa600c79200cfd9009cc4227be5203c6a00f5b711b8b8007340406e4226ac5216f5ed71fc4940f60c00afb701dcbc00f71e01c6ad80dcaa206e2500fc25003c4c02fd103062113135c390fbc50092d310fcd0006b8c04960e00de2930ebc6003ad206adac2ae04310f662006e2100f60600bd2a10fc77004382780e3a07600650ed41006f6f00bb8400f1e225be1490d7af723dcf9a7df50b477f70dd5805044498a6b37806d9726a6754f9bd50e1ca35c50c1815ed658e9d09e70e2365a410e6eb61524fe481630e59f6a215e6e91707fa217319828a72a8341652988811881210e9e7271a9f14869056941f860fb05a296d15627867da662acf4a00fcd002017d30c358073e2610fd4d003caf02098a007faa00ef6400f41c0129ee1b0e1113d5e700c918007c1603cf3500ff8500648434ffb10077ae00ffaa0b9cb800fe5514b8a1763f48004a51b0f48b00cb75103c11076fe500a3c1032e8f04b69e62b2c000c1121882f910ff2f236cdf004e2c02a8c8b0decb00edf1004fbb10f88208fe1c044f860060c14a6dd60851963a605311304410d871b06a8300edd498ae2397748ab80df100dd210b4a408b442bbbf41c264864abf842ac04dab1457a210afe821fe5fb45cba2513186826b9b56f5ad166622b47c398166b518c88d2476fc10d85c3b6a9aa28d51029e1c07a8af32856455657b5b7a7f2c2f0600ff04056c8f25698d47c384c57bb241eab3421b4e03de3700a72e0bbac540a2c00429f360c34a02be34007b770c3fb600c47800bde80083bfa69fe300c3cf008c6c00ba2304ccdf005382b6af290a474500c9bc0027a200cd2801aa5e973f5d00cc7600cb34007a85023ba600374700cefd00f981009c6f00968e80e1032062a740be47775fbc00a79500bc7a03e94e00b03c114f54009b5a00b7240b10a250fc63006b3a00b03220cf0b010baf0056bcc44b59b0b4fa007d1d07450795bf39091997009d830fea8dd268a4369a80a08244a498a39b4cbdf09504231b4e1a9a8de165052a410ec701460c30e625326be48c15d5b0f62745d2ac552196c16e075536b5128e4b58cdb50487df1282a2c18dbf0c298821830fcc27b6b4aa423c3efac87323c7c970486f4c83abcd490f3a87c28d1499954c64b92340ee90ff5d02bc7b20ffc400b62f04ac8520f07ed0f0f624af6500f037d3b7372bab804d1fab885bb744b6df50ef6b00f0d790fed10610d393755e70ef7f04a5b24614f2179fa00375be412f732274b210eeba410e1814ede500e6663138bc5a50db5113e4365670324faebbf0b1a24a40894fbfb23dda90c762724d2700d4d2d0de090bf4249800238cc8bfeaa260d585b58966563e236dd804aa675754046c1d7050e6f869f6e5237c9400c27085e1b9c9688c23782d41712f770449518edc45e69c50d329c492f0ccfeb2c55c8722acd674a397c2cb703576cc3c39b49619964d0fc85490e8dc3a6c44a88f0ba38270f72c2cfceb78ff2b0d9bb74d1385c613d2ada3ddada73f3693e87901d0574b38d907f25464ce4926b2d13e8905b5a1264179564ddd0745bd2500ab84e43218ab0b5bf76a70c5e6a77df500abc500ccad00cd2600cca600cc640c0dd59c0464bcc021c8be99950e684756643812f515afc76152dfd506d834662e96f24380d796382d6e05d7e5228d91017abbad77c3db787a40e091a68e73cc3feeb00cf577555f37c558cfd60e0b84ae098d9a50dd9e101a2c3a461fd987cabbd4a70550f138d12cc700ce3a00a7a200ef3782c335ad9eb416aa73b2706bda20e0d6aab74613daa99a04627629562a25d62a48678d1e715bb065d3e574f12712f65f245405d6d1875642f410de0909c1db213e9208a82c8cbbc2c0dd1300cbef00bc5200a439006a2c1068220087fe0068210086af006a100099fb00bdc1d0ddffddd028cdcc0d5765642145682756aed8b401d665cf946ebd14d5d2b376fb657d45c1cdb75377a92df756db62bb8168d92d77f24177f911894020f8ab10e9c6e199d1ec32f5ccf0d9e19a9c1cf1c16e1cd4748f5282b14a6991dea2b17d3fee1d954c6fdb0cfa72bd9fc5c0f319d6ac7e261a47d8f9ff669dc94e3a4c936c6b2c3d6146608291b2158a9f1b6a5f4d11567e41534666d21117e55e7a854f2cbad8580cb1d940a180dc6500cdc6d0cc7f00885c00622e0016a30042490011e300224e0012000ef23e0025190067ea0031eb006c4a00c9eb39dad4514421b94e1f00d02b576f9b7bed2bea9d7b5cc6664362fb1576c9d6f7353e84b47969bc7272f95821eac1778615ea897287fb138861168b59929295f7b877d2c85ed60e1c87bc327d18d4d3a1c8e49a1ed2cad4e59e3d87c313da349733199b4daeae17caaedd0a634e3bb7eeb92edd8baeed0330e47c574ba34cef470451f1e594cb2fe341e3ace4eefe0786042e45e52955a0213310112c00d0e494b1442f2cb01fccb551e8ac5400cc5900873300444600226f0043a70041850022d50023240021870011d9001178001196001f40e021cd0012580054df0044fd009cda0bf702750caed0da1510c5a1e0dd4f0800c714e5bf1146c08643221356186caba88591ed54d2a659f85eed6f240960607531caf676bc9b67c2d29a7175411578db07ad8a01eea858dea11ee60cde7698e5d6123e9f239fcebfb78eb1c06e2219e4920fef4747531f27cba131de2de3f27c424fee22f7dcdb7d950dfe15bd826b1ad60ec7039843ee862251bb366627fb50e6d4c4e98551e1c281e4c04dc0061ce5c3870fee0c279fb762d9dbb81de0e863be88d9a3469debcf9ea654b111b364940b8f05062c68c131d289c3c590143860c3788102171c1028e102048d018796248153f9038f93246ed9bc562c784d0c041a309933d722001ab36ce1cb881e6e4b973c70e5c3b79efb2b26bc7102bbb79eedab57bd78e1dbb7afaf4cd5b1b77edbb776cc1b67b050b56b267d6fa42033c0d70b56984a71dc6560ddbb56ad5185f837c6d9b386ed7c2454eb72ddde674dcd2a953b76e1d3c78f6489b263d6f5ee9d3f3eccd93a73a356c75ae6dabc63d0fdf3c74f262e7cefd5b75bd7ab9dfb6758dfcedbce2b8e52167cedcb76fd8f584d7f3b78f1cb36fdfc87963f73afa73eac3bbfec646cf4e9ebe76c78ca96687f5aa3c76f1b0debf6fceac3974f1190a94e7985a8c11681d73c411c7a0830c1a271c73bc29079c6ea6b268a0051d14c79b688c39e50f531619a291409ca0e182072ec0800107566400020f3a18c1020d2c80e001061ea8e002963cd000840e2e70c0820c4400c9832194c0e2976176e125133472c0a0831274202187a48aa0c18f618ca926c276f48b4fadb9ca52cb1dbac86aa79b79de91c79e7bd202ab9ebbe462a7aeb35a81859864f6fc0b303f0583863068a659ac31c6b6d9e631c8102dc7b17424cb4c9ccfd4f94c34d1e0198db5d250634d35dfe0016d35d956130eb6e96073a73cea4a3515b77aec791536f19883fe15d6e46895cebae9d49b6ed7e7f059e40e6ceed9671f7f6a11661ff4748d4d57d8de218e38f5d8e927135cfaa9e79db2c2c4efacacccf1ef2c70d951c7ac76e649678e75ce02c71b81082a289c6a0c9ad01b70ca39d05d8b14b4e8a1a18aa1c511268e7882890b7a24c1031c8630c981072870a0020b1860a003072850898207307080e20756fcf88107845c80820b3c980184139e48b8051d6af28004103cf080081a9830a2094c88a9281c74cc5107acf8e8844d2e6de9422b5b39eb93ab1d3993560fcf3cf784e619c0acf173b0410f6bccd0c216ad261c6e1045b4b3b23bcb8cd249411b8d1bd64c83bb5379e0a1673678e4a90d9ed5d491079dbb3ffee50f1dbecb826d38dcf429cf39e15e6bae3ac3555b8ed95e799d4e9f7122d9a7f171d610a7b8e73ca55c37537f23af1e4d2ed927d5f95265271d3abf72d02ab0d41148a077c8f1029a79ba71c82181fa9dea2181782728a283a489a81ae4a5f9861a65943106943646f83162943f08618612b008018e4246c0f1a41b29d698020628105245071670b8030f44d021a4358e20224a0f1ee820830e4020020912523802094630821d00410e9d28c634cc910efe08ad3e6169da5ad0429fbac0294e7672e05dde81275910e3191fcc9a350035a8681ce63091298c63242399c5248a6c907ad43ab6a10e4c6d0634340c0d0d3b650f75bc466f7f1b556ef84643fedee0ed6fe839551255a3bac201c756c5b1d5e370c3b8c2cd273671698e3e8a718bd49d6b1f4858863eec131b37ed6374f129d63e10e79b77ec43145fe8c79ad6640e7bd8a358f6c08a40d4718f32dea375ec10083cee0134797cc112faa04a431e0291a998a31b04f18638a8f13b8810c41cd5f046358c518c62e42218be28052544310825e4600415c0182a3fc6009554a0020f58000216503207e80f481a5b400336c0be9364e095ebf365053ca0b155460c6210eb18053ac0800ce8800640c081085a80832774821aee32473be201c8ac98a52b63a91358e4110f31d5c96975ca565c9ca62da925c318c9b0463cfb22986948e330836a4c0a21e31815fe5e636c32944ca2203543b4d97052a40115693285d0d4fc4d6f7ceb0ddee6e68e72e56d7456ec9570324ac6dbb8e689cc69cbab88731de4c48a3cbfd1966af6c18b01edc3193608236ce2918918e8c1185fd0c33ed8b18f6324e216d2f0822294c50e7d34a306f6e81b51dbb1083dd0421736c0859ce4f10d44c4e012c680040fec01167de4020cad58873f5ea0077b88234d0eb217f122f2a0d80d845f11b108358c218a278c000424f180903c008211980c622aba51062c8081bd5aac63b33c800556b4008a2180628c75188e44b63e15399662807518c8888901887d2c022d20420ef6378327bcc218d2904a5662a3da796cd33fda3acfb4b822a76cd1fe6569e394c72af4920c0f5a0d6b81d99a094d88c27e2a6a519089a1402735434add906da1c1d4a5180a2abcd5063647e49b462fea1cf5b40a388d6b9c6a60651d2812471f216dcb78cf2b52e9e4a68ecbea072d94600f7d60651fba78c23e7653ac79f4030c7920072de2b08cccc9e31ef940022ecca88f7d808112feb887336ac08c7964f3be3c409c3fe660890aeb231353b88738fc818831d8c320edb257ed12543be06985ad10e9978678b1081c7400032802c1073af0309684ef61153089c6567481573e0c042d30898d1eeb8011b820048f65802c65b98003dc48622b32dfc524cb630c888c012990c106067be30a64e0996b480578c2821eb89803fe55a61a299b7c639d78d0165ab5558f1662a10a3d25a36ac0cd5a3da781357b4e2332fc3c6e6420739919ae6333f0f88c6604f7994a8de6867d33877449e5dcd8c42354fa41073a50451df95c74ce9e020e738e836af6de23bd6dd1077da3959c55a37a40d9b9ef189461c654ed231761f04759dc612a7f2c220ccde807326a51167de4030c8ae847aaecd10c16d4621fb578c1328c110e77f8431747f8c63cc841076350e55cc390423ac8c1064bd8c35e12b2e443bcf1c878c50e22fc2a07449af1083578020d14f801082a70d9c5aea8033bbe91c340008103c4f200b2b472c670e480031cc0619655112e11d0b188ad6f961a3b1f2cd94731542e6063fe1db0401644c08125fc287f18b8091c76d10c6a4cb2576b5a2d5ae8b2a691d2f63976aec73635408225f80116c680c52f88f1db3fd1b33081224c620cc318c7b850a0c8d5cc66449336d04c4aebeba094e028251ad09046707ac31b3dc895aa35c1e31dfa7187a8d97e7354b3aa3ad7396fe166e5aae1b8a9a3c171cd3db2829c61e37c1dfbe023aa52aa5206cfea1df6f0c75bd8b89ef332b81e82d7d67929e8eaff50052b750cdebcdb45958714c422fd8a1d8a8fe78d66d0020d4328d15f19cb8006cc880132c218054e20048d397696082800045654f116c55245031f390256a9222523c0f9b364c0c36739fb074cd90117c85f095654e6134421041cfe70c10362060229f001138f68c396aa11ea2f65132cb09d0e79b3754edaea8a0345c84216dea0db57a0c2cf809106a6db9ae0220c41312ee4820c7140c0acdb06196aae74703403013be75a1bfe5007b1bb2176408775b88a1b029ab88b8f6d62334f290f391bc1f2b095cf7115ea800ebd9b87e5a8a2ab80bfab903636c18fac4095356b15fca00eafd08fba588baff8128a1a88b73b0b71a89dfff88fa9288807091e7983247c7108e1c9246ac0a462580425688123380193e100903911f51939e8a3b858428086733e29ab38c77200e783b2828b250b7001226b808ef91808909817f93d8a73c3f539890b60260a1812c1d21f1bcb801008091a50033ffe78024858043958849f288554108562f0866df28aa0db26a7491aebb88b79f80123588225288125800336f084a5f30b68500538688454f83fc1a806acb9276b9086025434c91087b2d906465b0785b8867220a872682ea0011a50c121d0888750531d78101cc1c19bda41078ac228ba9b0fc541a253c90d68119de6280ecf39a9e8009d2a6293f1988f72c10aebf20d10148b4e7307d7199ab5083579c8a669dc0ffea81d813037aa1087756088760007030107247c10aae8860981248b1007793b3d6fd8248a90066248843688823248021ac08242a00121b3000b001206983e90744333ac2c33acb808608002304304b000bb1238bf7a800c1826915132fe8cb100845b9f34ec98842b3399391f10108193b93141bcb10e2081349003eab18923508341888242f8854b14c1f8630b36aa3febd08013589924c8022c800347788561788657580543200443308557503a63f80553c08442e0045ec0044cd8056230066bc8c5c81028cdf00cce70b40704bb50134cd0103b7079c650bbc0b7aba872f90c895ac7541b9d264a35bb730ec8b48ee108afe6b80a53f314339187733195fb5847860897d15cbbafc08afe380b7f040b03f947b35ac24c63088264c2e12908de89b14562428490860d318562980550d8855e508421f000208100e8a3988f8ca5dfabb2c89a25113001c12ab31d89b228dbc98761ac8ff1b8c362feace933b90b8098e98b2c1389ac8b5109f15426434411ec338234c0824660842fc0812829010f6802b46c0663880677898b9f9b8e75aaad1bc9bf25500122c8992948056b80852720023810844380032318023858821348021d00cb4e50054168835f588c804a94ccd88c72404071900685a034cef80cb113bb75d84f7c41ccf800bb16cdae55e19bc2239dc499a2565915be938e9bd315d5da39c381165e191dcfa18be7c00ab4c0a372548f6ed140d41c8b5d31936eca26fdd0c746a2cd2f01c877a99d262c88311dbdd2333db892865e900324c0010fa00112d0001d70812c500531d0011cd8010c2501c61ab8027838c7b2bec65a800a382c1571b88afe33b9364443e873be0278ac3f35be28fb3d06b8804a3db89378000880008ab1001d388135909829108532f88024c0045fc8843718855378021070022618010f808352f883326883553086729813117cbfb5f00d11308222208122288124d00227d0022c09011120024298044338041fa0802458020b20820e200243788325580341e0046538aecc988cb1e10c79a98662b0cbde949769b0c27478c61cda34c11ccc7920cc74f48d7291cc54b18fc20b0e7e0d8feb68afca44351264137094c1937accc963a332d11633f10a71528b76089afff00fd5a28fbbd88a209c462ffd92ad60c2f673a46c3a48143b4871e09d07e99d83e8860c4188d3fb0663a085fe27f88013308532f080227883395002a8dc0553c0833f588387d1980a20012f53be9dfcbd8d0349335c2c04c0c33d8cbe29ab3895244332a42ce5641f3bac808d23d413d1009141812578833d803d1a08811108012c4082372d01beba8926f0045a08845fb0b9aac42209aa9302a8a514188225700212300228f054edd1813ee8834230041fc08029000208d08121d0013f30843e480343f856047c14617434e42a076830865408059e31866df885d3824006028d774046667407b71bb6d78d5251c38d741c36d2299c785041cc4422d528d8f1b00ed07c96f1280be43829c9890ef2babbb428d2cd1c0b7b548d78a08bacf00afa500b38398beb45427169fe07b30a8beb9d8aeb0d0b261cd3949d4288404283f8868888866af8865e18054e688124388112b0803a308552408334688462d8051ab03154ca18ec0bb2263009ceaa800f104f0f6801ec1b4a417c001998ace78bb28793be349c251651914a0592c59abd8bbb9187f1001d08021d488234f0044ef802fd1981130882166881e3cc119ac18015f09e5168066f1013a0b3db0250261c38011c68822528822a780238c00223c082343884b384820ec88225a88010c0811ca803b314843a0804701d5746315179510869d8cf5d68046090066a40d75f5086c6b088b80b1c7408076a8806709846a0018dda4da2fb682de728c7cf0407dc8807c04bd254fb4638fedb28c7692fe2e039df200bc9491cebb8d286d58fa0898f259d96540127ffc847093a8b6ed88a811c17ad0087fdd864d343316fa80883383d92e59dee308647a4843fb80348380211708219e8001628011479a55f4209548a920ef0655402c9903b11f73938971c891ca0803f3dc3a34554c4722c939154f549c3a5fd4eecd3800e4801c532023770811678834790011a2881fcf1ab4a1d819b810355808432a0012978056ac0220aaa87753a0115e0002a388451340222b0835830cb37c00237d00238788364a5810ca000c202e7c325044168846450b4176a8c68282165208654e0844ef0855d780662a8065be092742887fe283b779886593086d382b1fecf180874541cf9f80d5e4995b0884c37132f719ca0cf6195d8a064aea8a0253d8fa07e0eba389aa306429b6693e8b5c75411eaae9893eb0de5ebb5977fcc52167397317da4f60348d37308d5eb97a1188a86f4066538850f20814e380242cd80253882fbfc110ca8000de011f34c389383acec749881bbace72b1920ebacfc7198fb393e423509318c32290bc9e6643e8b19e60e60e12378d537d88545a0812e339224c8810f00810b908027c8813e90822640025bee80165083571887ad80961cce960d20012900e86a550110580343e80442f0833ec0022c488222e8420cb00054728119e80343d86d4270046208d112ba865fbc0c6b2086126a4b4130fe855430865df88550f885decc348198a405320647180546f005615086757088fe70077f040ee1308b3ae98ad78096530bd2662947387b96090a27f25813db821638b958faf0695d610ba39613af306aa30e0baf90deb010c2f085f0ee3d90ad10976cead8db74abade0e482e8eaae46b1041187a158c870188ae391066338065f38053f980336908252a81fe1ee5aee8c2cf729810f3eace56bceeff4189a641f91a9321b7991f544a6edc418f2a1326b1ee6ac2d328dc1802f48020c303963bee516900104e6980c68812070011cf80064fa001d033295e88368d8cfebad2d6d51011518821380823ed0823430c53a28844e88053890822580028639cf8afef180363004e4360446808543d98614dd06616c8c6750856770054678686868cb4e5084baac069ea1865d40056f20e963f8034620866128860d290669e0951cc5d7c4e157cf299cc6212346561c136c95b9980fbcbd0b00ed0a13dcf5053f9a32b9a2b3189a9abe0f07ca526f41078ff5de82481009e964329d9034e1e44dc64d7b096be6e90e84f8866878d963f80427b80362b0053530446016b215414f90aca50868381be9328a19be299bbedccbce1bf92bb9164f0b103887114979873e343c8002d838368c9887d111318377643a3e1381a5f3b9be8fd080cea2c932530a272082b8f405654027a35e0229388449c0f341ef8335d0022c3884428003fe38a0811f2e1f9131190dc00242e80338f08341f085167a146b8886cc607465d8055ff0834700866d30064e60855f28066b4887683805e889867220e98c568662f84d65089cda0de5ab905d4b76073cea2eac58a252b15dde35b5493e8f8bf555799c1620f475a8aee7a5469a5d179af3d81640e28fac107640ba0b81302b0c1fbd346917bfe71de21953801c65af6e1713ef8eb1560688308601f1055e68044758843418824140052410011250aced5c5a4145771671980688800b4e6c884377561a6674371f878b1810d0800c602cf391a5573a090c6801e15b66e5bc1816c96691916b0640011cf87c41fc801b18b887b1182003e6c87a000e701f10a0fe5348b0835f18975d17782c985c0dc8024348832c1804c3ed8337306223a0012310810a10be8a19813ee8844e08844618056238b460240665c8ba72308669208636f8035600086ac44c7132262d5cb86ad5a2995387cea1b547c06611f3264e9d3c79e8d0b99b276fde3c781eedad7b0712a43c93f6ea7d9c570fa4c977ef5eb27c97911d4b79ee74ce63e7ae9dcd79ee30ba6367f49dbb9d32e7c964273365c6a64065267d67d4e84e77e6daad6bd76eebbaade6b482f36a0edc56afe0d8950587d66d3b70ddc0892bdb6e2e386fdedcbaddcb0c5cb86f81037ff3f6cdd8274a8f4819a3f4e4d31f25446440a0e0e001030708362f5880a0f382cb141850fea0f0e081850b203a3cc8f0013303cf9e3f3ba84dda7205d2b51f60a870213385cea5773378901b346807a54d53e8505a830b0f14a43412216149090b1f40b8a850c103ebe5a73b8018b246c9094f991641f2e54d9ed37aef1658c072c8901641860cc98103e70d166b404104164de0408307153cd781148e18d24927a6f852cd36d7a4734d35d728238d85d34483e12f769042cc2f8dfc528c32e2a4138d31e9a8f3a23aef54c30b63d148736339e684638e37e1b8630f52309d34a4502799d48e9043cad34e4a2c3935934d4c7ee453525bf9a41395ecb4e38e4d51c9570f4e3121c5a54e4cb6a3e5555f7905d44f6669a5a639e6d405175c5fb5e55638fe5ee9c5975e7deaf50d38827d33e837e20c06e82cb490328b31b34032c71333146142050f389019030c7c966967081ce0c002b1758669a8c5558081051a5c50a9031e8ce05c071528875968178067eb0797968a00a90e64300206a55960db020784961b03be618001a8a4b1a05a06985d10ec050f5040ed72196421431fc414930913837c024928c57803143bf258604115f84d510513599c90c1114bfcd784061e9c302007a6418083066bacd209268e54f20b34155e130e371642e38b41c654530e2c69c8f1cb338ea0424c3ad61c234d431b39844e358ca0120e350851a35739e58485ce581ea51b124a4cb5640f533287b3d4472679e4d15350c1e453fe9c72f1e84d37ca78334eba3a71d94e4e298989d49663118d9557636e95d49a7689f39558d2f045575c6da925d75cde9c35769f79019ad79f830a33a832d17c730c25b38052cc1c653c9186092aa0000168c5c576e9a697620adb67a5c6f619ada15eca9b69a02e706aa6a759db81032d58d078e3a38e7aedaa0b74e0c206c55d90ab6e0ec86ae9e595b24a020d2e74d0c105b63f70c1724360514a2ea2c49144087560528a3757b15302041a1491c514fa4281857f70a441bd09179c00071619d8b66a139df8d1c928a5b0c2e135e26c930efbdb84630d30c06c43612a7658334c20c418b38b2fd7a0e3e28be0818e727883116b304639d2a1a36aa40c1dfe42d148523642259dc0272b2d7189cc32f81196bcc423f2a8093bc2218d3fb5a319bcf0852f8e518c5cd80218d1a006c88a5295a058654c5b6a9396cc921674aca987e288535aee4297b3cc256d6fa9139ffaa297b41566507bda53a10aa317bb7d4319c62886301e0109483c410714e09d6d3275a9d23cae71ba72dcb59893293142c0029ae294e14853810ec8e60217505cb136b3c65085e634a341400634a081dd596a90a771c0b22c759b6a3d000210304e0646b300d48ce003aa01010832e0821680800652c0400794208736100215c6489e51c081052d60e10425c0c2240e0107222ca1083ac0c20f4e901a1264a1091bb0cd6588c089550cac12a8feb0c635d2c78d6d30737dcc7cc52f92690c399cc2117d284430aa01c075b0cf1ce5d846395ca1064b3050193b5a888a8008b38d0c45234e63074674e2339450b02357da49466e920ead7883179fe0c42718118832b4e10f9890831ad6f0075f14036286f94a98327226acfca44d6fd2d23bac2416be80ad1d3f0462d1fa3236bc74632fe1d0cb4947f88d6884036e07f1d3db9cc80c63d03417bc38c63112e187417c80029114236c60e7ba584dab370cb080730ed929e4c42653649ccd24617399588906022308816a5853a9e250a00216f080712e4082e874c002a7c9c00524e700085c20037374ce073090b9355ee6545f5c160b8265ad0a848004b8ebfe400b8a608809252f6befb00007b45084261ca20f75e8031cf04384262cc10949f04011faf0867991200224d00009dea01f55a46217cf48a6c29a99cc6a4c6363d930c61c04e186f34d837db66d598eaa218d40b881b0d15086cba841d31bbd30470dc90a956c8295965cd0693c314a3e9bf691768cc3186a0801083ce081ec960003e041c21adcc0883fec0d8bc6f82174a59694ab88254eec18873900a58e33bda36b5f539338b4c296b279742c3ce2534b7bb4a7c0a0d44f7f328c6108230c4a30410e72d88323ec20074aa081063950430bc06aa9d13c8e0119c09d1f31a59c0598c65a6be495a74257aaa5620a3898e92a063e50c9e06446afb6394dfee61459aaae6a2e338774ddaa382c46a766a65964ac6b05408004229c8004388043278a618c9479851d2798020d5450882560a10a5200020a9e5085285c93106c58c210a6976632af210d9df0842952d18950282343c9bcc63ad6d7be6840c316c4b0c61e7460875f48831a16f24602c7518d9356c317e29dd12e6c448d627022b682504314d0a00445584381f0dc893a6ae691787c0467ebed880749ad24f854a3144dd8ae07449020def9a6024708441a2c4b832734410d9f20c656ba94cfa2f8c42cecd84a37acc4c3762cfb2b3fd99a58eae28e23d2052e6be3d34ba5280d71f4c918790187320a15a86f040f149048020ddc20860fcc20092da00010fea090810f9ba6a997b994eb6ad3550e97a652c68171058ad54705e95854cdba8c713a6c29deb9e6379dd155b31eb7bbc3f9d80177749d897343815c7d86572d660004542083126c205aa6f90e0d98108420a43c109ee00431a8d10da3a8200b5a9884210eb1842568e1043758820528e0021dd060092aa08109b290842663a0044d00c20cea608842b8c10d7f680430509b67756c431d18524528ace18723f8e117a5fd841f72cd8437e41a0e6b604314da207736a8e1096c7083139e3084263c81084f58c31bfe100839b06110bbe8d1461ec294a47ca4f1f1407546ecd1917ccac31bd4e0c51fe480831990c003ab3a5506c093010c9840071ef85512d8fee0074818231a334757d5aa5ca5b308576c6789d39ab454943585e5d874b9af10e532c4b87c4530dceed349f37252012f7fa5b748851cd0c0ee37e0000320c042192ed08148ce9b06bf8c7853e1384950296e728a14d55165b5471f63a636c02c4d68f60dbb0de3d8fdbbeb40ae40c3614b69a654ba32ceee48526cd4dfe134c75fddce1cb540088c401abc82313483ddd8053b34c01434161648411d2c410e3c412d999e08e8c0090c8116a8c61bfc8020f4c110ac8a0664009955010e44811ba88232400385e4593ad8e03644c31fbc8220d080db3581124081134841133441121c411238411aa4c111d8411fa0411aa0011ac0c11c30810e0c1d1a9441fe14240112a4011b7c8112b840eac981232883394803c4284331504343b0c3495c1048449037400220144331fc82283482128040058c8018a4c11e08821f30c108f06107d04012e0400ddc0011a0c11a3c420a5d118a581e8b284333948220b0c1138480df950127a4827b6c4d528ca2519cc996381b755d1beea1453794d4f2bd229eb88560049880794331448614b44077e04eb07807282908ede8d88aed8a6c0c205d3d80e3d415f959cea868caa6849ff61d5271fc5b67f01fefacd15125081f898a674852a82892e6e0dba86cc6bfc58ae6588a71ccd1076c5f0bd0401ab4411d3c822954c3388cc3092c411f2c41122c810ee8801140c11248011604fe241664c12abd811418641f1c017880d61112c10e3c411dd401304c83fe4cc3322d133345c330a8811124c113c0c11118c8101041140c410ee440113201114261132041153c811202410e44411a04821d1c48de111d16a0411ba881134441dcbd812d40c2287d811c009b39c0039774843d604937a40324e4c00dcc002958034128c32e0c020d5c400ef8a41bccc11a7480abd891068c400ecc4059a10a097c800b3c011aa88112a8010f2041128c40e781070848811278d21dfcc12328c3043945ba141b5798c557a8cdedd945d9c8c55e78038740a661dc489f489130144323884227d4810c4c4b5e95405981807735c707588026910706a0231e1d8033fe764a6d8486e4888e8ffd8652c151f825876e18ce38f2d1058c8082389520194bfc61a36e2407ffb59f6e6a0a897d1118d5156668c0ed04c109a480dd31c110ec412818032da8c0f4fc0014544012bc411d1042cec1812074822110c21b98a76389561de08007908009e00021ac422554822024c11dd4993110c3345cc3fc6c033174c21b0c811200c114ac0113ac411be000ed180111d0801234c1114441babd0113a4011c20c13fde000e18e81194c10ee4400918c11f0802163041110ec114fc0d1f7c4112c41d14de9d1c2803cc0c853a94c308f108260cc15b3e022aecc22e94c22870020d38c11e24c6279c02243c022724c18771800794c0104887fe26ed4019ece1767955e881c00880470be4c0262d5d2801c21f8c023e2557947c0d4555145938e6b5b98d2dcec22c9c022d94822894c22e1843dd58913444833718830afd4108144107a08a6956ce2455001e2441701c8b1d9187063c5c19a1d8a770caa56686e3885f6c0ee3c339c0ba789c18290e8e6506ab7c07051c00e4e09b82884ea8785cc785ce5cb98e82041c699cc66bb4800c70e96a504009f8550760c1406a813ff6c109be4114ec8727c4422114010760c009688003142a106401297102271882c19802813282c4708332fc8231d0a02ab8011638c11b14010d64c11a4841ae49c10cb4c00cb45b8536c186da24b23e811bbc011bac011670fe5209a0258bf2000d188113a0410b84290ed424133cc106da81202c421a4481225442283c4276ae8c2f38c111d0800e24811a74001aa84231908221eca913b8c0073c0127a80227d8422a84c217ace3e84d4b0e24c1ed24ecc24e8b0be40027bd4a6f98a30b90000fc081228cc22e14433ae885cca5c555b8e928aec90fe1175ac497373c42595580bcaa811db4411422c117fc8129a8c2319cc227c4c11ef20e6c041d69780004d44606888082749568f8db6ff6d81a81e36c7006af78c6505d00023447d059cbdb860603a86aa6689f6620c003b00667284789dddba8f0c66d264be45c46670827033440b460eeac58c6ad1299b520520b908021d20010fe94010a18c116d4c11d68011cd4412174c22a18c224680216344b046c000284000754c020f98a07c88014f001841482215402345c833454c32e84c234fc0294b90226e04008cc4013a00111765e08e4c008d40b0ee8001338410b60810e80400bf81d1324c11ca427bf1a010df868fa22010f10c110e8c0e611413bee801838811bc88109580b05cc40dc0d41140c821a90c008e0c009804008e8400828c1277c0243990229f0422aa842143cc128a4821dfac21260c087adc6dc6a9f69f0ce08c86b258d800b041d28758006dc00faae811ff0cf90665e2070829d52433be8c5ee8185b3e15e9cbc6938340324848008404b6b64000eb0c1114cc11bd081fe20388118b4c11ce0811380c01da5001098d568d4060a88c10634c0bd110b674cd21df5edb1909f7770ce66b0266bead1e4da8665302ead0c9972bea6bd55e3e180d26fcc15031895a8e85189055c57d5aa683007ee2887e2cc26065c0052699f0764012ae4421b00c10704800580800af4c17ed42e1f0802119880655c8a0e1c010e488007f86f1fe00e5af155114c811c788223500230b016fc98c2b83e43210cc10eb84003e3401dbcc113b4c0afaa400b34b00b88c00b12011fd080f5e940192cc1132001129cab13d0400798400e1cc113585810ccc010d08002b2000ee8a40397d5c695c60ebc0223a4c1a182c00ee8404aee0008400127b002305cfe1131d8822dfc822dec0231f8c244144207b08031df0e5299e6b434eeedb8ca76fdac77681777b0302ac40f27848222448118d81d1b8402309893953cdb56bc8556a8c359b4542b86acf5c5180baca3add4dd11a4c11a080220444a074c4108544a6f88800894c68ba1638b61c61b6f8609c8806548d5344ece653c23a8b0e6e1bce62469aae3acd86634f26d76a3501787542b676844dcbdcdd10368d7866192ed5c86f6558b539d46b0f8940e204109681f0364c12f2c4221984106080007789f036c00f5f48140c2011494800e40c13f66810eec0014bf012b0db3d191800e2cc12038c220bc41192eef35a48229b84227a4010ef400075c8006ec801dfe68c11bb48020f5e6817840083c70098461077ca976c5f65595405c91c70223c114e80010dc400958982e16615aa6c10c8087e9469203888013b0012108421514b707b80012e0801198c244cc822dd4e92ea4022fe0a12af04f26b40113880112d0806886de8779802569c0079c1e79b04076e50b740a5206dc002700832fd8022900021af400123c011e3c822850022400439cac43950c51f2bd4538440324c8c0a1deceb468df077c805b81120fe4401908821da8c110b0c10c9c000d1432233187fbb91f57376e6a220e3722c7a8d02a66a0e303f06ddf9ed1192547b314f59031b2ac24f21de5861e65460620f5e4e6c665648a7330c7dbceca03fc80fe21e4c21714476ae04e057c18594241e088400700c18803800010400240400790401150cf121c8116f4819a178220c0011b4c1d1c78b21ff44120f8817f60c11318c21bbc811f38c2334c038560832b18821f10021c58210e94c00c3801f594c0e941b483b6c00e9000a36f1722c2a7976a806f90003fbac0ab7c800ec42b0804010e60d214a081eaf90123100212b8000e10810b68ba7454801bb04106b84120ecb61a10811140cc3e3794b7a0102f9cc22e88022a80c222f881e0455f1418211cb4410e4c810b20c85b798011448112a4811b68fb1a2481a7330289a4c22ffcc1134c018cba411b14de8880d40f054a25db542930c21625c10b6fdfed60fed26c8b70a558406fa4705c3e81127c4114a8c1ebf09f8fb1ca8d8deae236b26ca871f8710a6c924a33aab167189c6fe4cbb2cc516a92400bf446a584caaad006689891e218b9655c4b918dd1176971a680122875e957c1b00c90c07fa301108800b4fe00af80ca03004000180b0388d55da9ab966f807768406a6ac006745e15ac5214c89a163c011310421d34411afcc1c98eab456241082c010924c12d95ba81f6811384806982d20c68b307cc80117052552e5949a62479942e0dd0c09776800ce8e243a73012e4c01a388220e42209dc4086d955570d4b068000bff7e526814027c86343f9c2095dd12ef002ff34141b74741370c223544220b4811dfe50c222700223000220f8419f3f02251842e9937b14d8412010c289a242cb86c2118c000dcc00fa96012308021a70826134c3293cc222a8011b9481264afd1cccc10c04d9849f0af082000914f707a8caaadcc0dfbcf40e746c0f8880fb816e917163f81d3957c3268a171954598e57370e327ef557fb91e1ce915a070b36fa945b69006eb406087cc01c05c7ede80a403010c8604141810e1e105c30900285070f1c4464e0a145870e202a3ec07081440b10241e567020100102010c1c94448012c1020f2a2e5868c8a0c2850b1a7464a8b0634d9a3e820855c1b2c65015234dd2a4e9446c1ab6669e3a61aa63c80f1c1d1ea4a04953a443060c16316030fea2c650a54ea6ea24914263878712248810191262840e24495a78f030a3830710386858cc31e449132744903c4992c1830b17347ae0005123acc5c73858854205aa18b059a548fdda656a962948a29cd07063070d923a63d444f9a2e4cb273b8a00b9f9d2640da04a8c143582c4a80d2045aa489d4a65cb118910315d74d061c7450b174dd83cd1de064d99354ec4188ae38142870a353736ecf0c1a2870b1b2d8ee820c204080f3a68e4b850defc850717448ac88185248268a1054a5a60c0010d22a825020f52284105577280029428a8c0bc07103c50200a04bc2884131c8a883f16281041830c2e8468a4824a42a9c30651f20f839922bac03cf32c10fe09220a00a460861a34b0d0bf9656b200a5074ec0e1bc0e204831260b1e0092021afa288284359a78631047a86aa392570c11a40e2cdc30a5184ed26023102c80d02107370c31a40522d240638d0a309881041286484390a4bc5c638d4afac841be0e30c860841e68b8c105227008c1830c42d0610635dc38c283113e1a8206504dc0c1abaf3a286154199eec6b4746521184135f7639650d466cd925142c50d96594590271028d41ec4884134afe6884115236e30490404001251450481125144a1e6164145b4001a413544e31059023747a6f04173cb8d103163268818d3fbee0a187237a502cba86f8b4d22187d043f5031094682493234668330a2c58fee8a0ca87047a88e1ff6642692082283e7021810e5049a1035b92c843052916a8208314c480419b06e44006af1ee07343871352f03d0fced3f1830b3ce8604006325820210b2d32efbc8732bc60519b30a08144870c24d081005642b062a7190011a1862e509588269a4061082c9a58a28928fa78c3ec3ad6f0c310299878220a2448d0018824d230e4a73adc48038427aa4aa30e399890e289359e48e3090f9628c2be0e3400c1a62a45d8410943c40015041d94608206c066c8c0820b5298c1b1164a1881050d1a5b1c871616cd19104a48e985185f68b1c5175b72414595704f2986173f6640c38e4018d9c5185e78f1e593506ca1c58f474c79e4145bfe30514414524009a4114a404905954fe468c3891b6ccec0260f48d861049c5bb02b0a29e6b003affd20aab202a2f9bd5fa49a181bc17f1232a0810e20610d5118810704c4802a45a45120ca1703101091032164641d5b48fdfc03a38b49ec6713db208750b23382bc4841075060cbf6b530893146400ab2df851cb01f0f58a02503f159051cd801108dd0420e100112d8d310872c69214c7b80000a10c29db9108608a149053c70829c95402d9c988421d800874e18e20449280c1c0cc109430001042e38410b4e1082211ca10a4df083d9040189b20dea083a18420e96009737a041106d58031644e5821c18a10533180211927002c75120807d7141129afe90041ae8e8021998c1137230831bf84f09ff2a0146d2c5272822210a954805296cf18b5cedc217e19a0529aa350b56ee82148910c3b27691cb63f0c216a898052f4c810a6c49cb14a938052b44210855a0c2113df1c3f69ed002eb80e022eda141229da004241c0109db3c8279246635845409401a6a880370a8218be8e43c14d0806adc5002f228e8421b54e0c80ce2800368b00007e867851ad232842c4864521b490d1f842191486c42130b21881252350a5cf0011da001463e9001883040870772d83947b2209f99a87e2105908eee374e0b45348428110001fa6990087ee82126f24a253140823e18020b4b7843270e1105135c710d4b9002510a71fe88276041319c330212746084c1156e2a6818811d3a71364364610a7b5056212ab1083a41c20f43d00111ee438411cc807520a041fb3667a9f39ce7661890260e667029f6f8a5035298c21a4cd001259480028268de2f7c91d85dd8a297a8a8dd274e318b36307617aa488206dc008947606f11a030052d7af189473c2211a078842850810a5b2c47147248021e96770a206000041f18010eaae30210fcc505331841bbf0e3028d6248a2e3245a954ae44405d9473e1048888e76909d0eb4e0031b1d49d53aa490835c68630e4a508c24b60013e273640e2ac88bb41bb20d6a7049e44c888b7ee4000b6880431d95e0481c32c3175190641b0de1035cb001fe8454e003371ae240067a5d00082000fd1cafd388c6000b8ce0048d0b410e08b18a3339a10f9c78831bfae0932ab8811082e803200461083912620d76704489fd00883e88af6e8db0831f7ec3094134a2128300841fd4f0074704c20f89f043a7a6d0842fa441076208c41cf0a00626a4a1098bba594dc03205cd15b2735ff9974566b081fbcde00d1a10442a5291cb5de482176a564ef378510c561a43ce90c8c114e6e00639cc6610be9c852d60893c3b8c22148a40859c47e33d52ec221534380f0634400199d4e43c24c0413649e0021298ecc0c61de7be52682106e0cc2b2d404275dc5a13197cc704038aa8cf32c4a0f2c65789187098c516923105fe4ee84108ea75c80afaa0908a6c633b2369d5cca9a00159202c9d76510f231ab38b45649fd71550fd808d50f13644002f1d50426106d1289e60084528820ac8dc8942ece1108528021ce010c9341881048670c420dc50084eecdb117e70442702f1064638c211a1e8442502a16f4e38a211812074275481e65070a2e10c6744b238d109529882129dc87825fc2087213ce0031e10c1bafc4481af28617338e8005de473528be8e00948c04009e4400b53d88218c9f345294ce10b39ab6217b3f085308a91f4629426118d68c41e0461875018bde8c8f1652e41eb8b5ee4ca16b24cac2ac6971efbbd47032eb8c111caa0041068a002548259fd7e84c39aa2fef30216621a9f481004179cab3f3873032398204e0542e020df2ea8c49e08020efd87410d6390ac37a6929139f1ba36ac9a8c18604208a6e4200bfc7686147801c2e3f0baf4b3bb86105cd3871908c18f0b50e695d8809d018000e31550c742721e4b126109432041145e51082c60c108e5ee031ae04065273441ad5078830e6490063eb46128516802f187a00627b8010d4f10c313de70041af02607a44cb18af790063f1c59118ee044281ee108461822598d00931c9e10342290a03d19fa40472a408004d00232a00354e00356442f460003d6c0146487178421b178c11814eb168021176e41e984e1187ae11436cb03ff801250819768011592035c28fe6b1790a7134221b166a7959ee07eecc7d66e820686c00df0c222eaee6a9ead8748cf42ee47814024a018e952dce3733e4049c6c903f0220dc460a204a8860eca625642644888674482bdf6c99e648dbcd0aba52064841c4a22460841202ac180c4732e8001204004ce89bb46cd641c204aee67be3ea4f27e66a0fec3028ced675a8200a0a6da0a4a6a9684024aa0058c40077040100ea11380600862a108d2e8088ce008d4e20888800da4a00ffa000788000bde800d74200500e5098880dc94a02388e0733c2004286004ccaa0dde600d72200db0a006a44a0dfa206fa2400ee4600fe4400dd2060d986004b0e63dfa030370280332aa7cdc237f2ec02efe86400992e00294009550e1178a41186681188a61767269161e0110e24c19e8cc9748811672411d7b81564ee1166821394e815952e11778e11718410e766e978c2e159c60683224a02ce003a4493e70488816c6b892cbeee02e7f160848aaa49aeace216c4205d6630a2c45059490a12aa8642ea4ee2606bd48c6d71204d8882dbcee29414682e42a40a642ea9ce0ebdb1a04877ce00104484718635f2ca02ffc03482e4f087f04c126a69ecaab0b032000b63042444808c30203a2200de0801586618bb6a0049a40704ec08e94a009b2a04c0cc1141aa10f0a07c4dce00d72400ae0c00866800666c02219c53a72c60350a705b28070dca00ee6600e1841fe101c810ddc400d388115468113eca00cfc40c8e660228ff1020a2c039ae0094e00670a6c3ddc43193be03df04a9190801558a91d77e11378a117ec9156728113d000158c21358ba11d79e11478011884c1188861169627174c81114281d14ea1574e29b2e2ac56fe6c0e4640ee28b28ce252881eed7e32c4ba7e045f4a0a3983e4a46c82519ad22b06ec01548007d660083ca462c209a2982662322f9f5a26837c6d672a6410c36b212208461262685a46805a84bb422a8282100c1d40f6aa2467e8477f48cff4de6e10a9262524c8ba1c80c1626a6a0c2a2274e24a54e00142200b980007e0a00fe000084ae008a080e654030e0821e4a0d28ffca00ec4fe8708d0a00ea2a00c926c088c208da4800452e074186906e0000d9e9212064110fca00700e1157ec10173c11576e1110261101e01140c2107c0a2a2faee0144c002f4629d34e446cc09402a11042a400954011864b3183e01146ce11b69c51608f30818a118e8cc1778a1e78ec17772c517286159fe000490000d1281124c217980b31d8141b14e21117260546e664534e02bfcc345626da38e0b2843aa85682224908baee423a41e80044400212ce23c8ee00e4cb104180075d6e707ffa3ee3464042aa2257b4d412e069f104cbc30af6aae6bf1d47355cfab6a2a4af1aa70da24a8bb5062a1506861546ea1565285a68d55958dbc466ac11a6c2562a424fe744d20a0684a98048c3a41fd0ee1044ae0049ee0089a600a9ea01256a1110ce10d944210dec00f68200a8e8009e06006b6a608882004e489062c110b74c09d3ae008d2a00d8e4010e6c0df86600d7221150ae13b40411544e1133a811118c10910488134e439be22201f007d50442340a0681845032c40095ac00266e0137cf41e3f63165293184e8116d48006e4001562b3184441e84ea14f7de1187c0118fa741612810d0061103ea1577281b17a81174a811348e11142c1147221112ac2d634840510903180d556cf106b98e6be4c64c07c0448f6239d3224a5548e02e412d93400097ac005cae00dd400091c6d279b466310e046845228194622428afe467ea625c99024250464ba53412c4026565222aa706262c461f04b81240af4e66e25d70b5909e200966801180c290f2063d8b3240b422730e004b0a010880008a48010e6ad098a200986600790a00fb0201056c1140c8110da4016d1000bd8209286806ea6ec08d080109a0007e4f22b86007d3a0007e806f9dca08f9222073e607390401058a11418c10ff6600e9e200304244376ab326ca291a0e8034a2e5a2d000430c00d75e05e4fa0137241e880011552011892ae97182107782007fec0e884a11780814f7341056f36e9b6ce1680c116a667684fa17b52a11776a11d75ce14d2e032cb834f2ac339edee4248aff0ea564056b2681ac269f92585fcfe6368cc030774c4645a068a58806ffe600ea2607827cabf22e2323b2f22584f407dad565b6a49384857b3ab616c2882a46dda2ccf8636788854ea6e43086414f4a06284bc6284c108004930d7d70a0f25a2c801cce7e52a8008e0a0a7e28208a4a0173da110fca04bfa200b86e01004e10870c008ea860dee200a98000d8c8009ab514728322610110dcca60d06610fdc000bd0a0fb68600d3cce0dca200a88c071941348945147fac203fea520338008dc8004f4829a5a80311c290e7ace170636144221e98cc133dca06d9e400d46211a541318e24c0293ee09462010aa80041441ce468111c07434d59495e29113f4e32140e58094118381d27e7c15befe66623edfc37e7a55e53642eeaa84314e40095ae6321f02047200874220af04490da4200e52d73fa2a4f29ce6ba2a6472fdf6210804c20ae49c882d9f16e07e080402088f9e148884aa70a636f7667a4822020a871d4a40a3a66320c8208eb2005a629f1422252064010cb1083c6208348a04ea207096000774808f0861085a72493a800898c0098e006cd8600de0e00d1c610e70e00daa40b732400448207b096c06b2c9090941c7a48008d6400abee0af54a088448921810682cb236176cb512eca227860082873b700c4a266a14f8b2114fe201578e11328e11468490e72e008ec6017ccd11720a111b03ab166a1178ea1086e801194200300a1178ae1fe114641b1867681134b4d5be90494710432ea2023ecf246a2261e35a244ad07634d9a3364232a8904924007bcd5c974400a1cc10cdc400afca00d28a5f87a8404a6e00686a02e902004d0a0096e2624063a87557b0c7d98840cc26a88d8d80a4fbe6840b820e062dea327954b892264a308242117f7203648825cf5d72ee628a3789fbe0b0194bb202af60350402049e00430250daa80e6b2400b8a00870802226ae204e2150b90c044dbf509f8980688c009e0466f87a801cac30576e00b0ee60de0e0b295a00d04a109d6f064eef33f2082716ce2023062b73ee0064e8d190bf07e6c824f3240b8448011a2a7101861104aabb2366e1642410de47b148efee71418e1148e411822d0768c210a64a011b0e0030c81817b411892c7eb5c504dadfa224cd53c84c888e72e43dc50ee78508369f8c6055227fcc7d4d6800dce728fdc00107a220d74a370960ce1fea00dd4c0058c000d1e632d29000196c0114c3cd46aeabfcad0207cfba007e2bdd8d9bc849889564a5f40e88468782310cfbf7668673a6820b6d0581da401eeb94390847291a8000a40bceefc725f3b043640048880be346006a0202b8d009264c008cced0b35a0b19180a9b0400aaa20299200149b40aaae42f52ea005b2b90486a00aa4a00974600482c0bc09c10eb0402e6ae66a73ef2021e052cea5224880076840063c805e35a400b1b4035ca071fe70a00d1c8108288e13b2b1eb4ce1134e293bda8013e84ce994ce17feac18d0a00300210d3cc00f6ec11746707f17eb977e09ad6da11148806d9200adecc7bb07aa260cfd04dcc0134b000374e00490eb6aabe6140bc139c0ba0de6e00fdc403b9ec009d2e00b88809068a07993200ada40dadb608e81ec09ee5b094e8009ec2207f6220794c046a9fb027c46c236e0583d08bfc62942188003345862060c4322e20422400633409bc883439438669ca807e7ce853ca641489210fd2b42f0e941bacd7213246330778432a4058080064a6003d280be410c0e88600694e009ecc0086cadf21a650492200b22c53109010ddca08ce3828a64200f77020b76d2fe3e149905ae3e0792a00a08c10d80200ab6793d2612ee16fc8431e0cb2e823d7488025860a975e253fe450498a0121ee1137cc114442110ee377a38e11650230de420148ce11b9ae11bcc91976c41144e411afca003e4c00e3ac00d7e81ce7ea14f178b1616b8186c217a40e113dc800e085e0db659cc40e5e69060074ae009f0a005c48070d4c00f026167f740076e042220800566600a68200e70a009ec40104e7a1178a004befaaf8860ba5ae03d0868cf88c0052a200bdc44090225f99fcc7a499a046aa00520c97ed78004e6782ddd501921424938a4c1018204890b15327cb87041838e274fa24419c22307912146a41c2182c6cd9e236b783ca1a1fe43cd1b3433547c3951e141850a141e3858e00002161a0e5c7870f080c14b040b10f064c0f3e582a13f8732188ab4a7ce070818081040e000819e3e0f14f0e9d381830f2b8024d1714245952944b0607938a3499f222b1d3060e0f2428b253266b40042e44815416f92146222050e1a0d5a2b7c98b16101850d194694c8004283871147daa4b9818549ca0a185c3aa8e0960241d00f2ecc98a1c40508d0173c7c4821a3430711342854a041e4b01b5081fefc91f329952d519848992a068a469b59ca987d3366ac982f5fbd669d2a6648c31f3b1dd68c22066c97af5dbb668d4a554a0e8f366dbecc70d1c285933681e6882943224a133180dcd891b3c61cfe7288218614353cb1861a5f60800167a5692083125fccb1c6174d3cf1052047b830450f3c88410308a23de0010b247864570b4ae820461a73e8a043466568c4c4127fd0d0c1072000e1861f8bb4f1c61e6d24f184131e94d0c41b83348486186fc831c8207ef8214820688854071b6bb82146146b54d184133948814412581ce18714f33d81c61a6c3821851c6dacd1a4081b9cb0810327cc80861321504081050c50f056520b1c7554533fbdf5935b48317a28a24f0550c001963675a8516f7de681134be840441145609103164b404104144b605184560eb4a4d5053834414413580081c41375b4c186207028010713ac5af080051db4801208209040c3fe082d78d001082318616607a87d201b4b2bd9261a4b80da36420725d8d5d905251cd1021b438c30830e2e64102d083bd8f108237f3cf2482e9fecc2cb2e9f24f2092847b8718b31df28f39c30c5ec420b29b928134807780402c21aa708e38b2db694278a2aa234d2c6812674e0020d33d070041247ecc188238908d2861318b6e19b1c69584884126a88a1861d8c00b206123a54a8040f761d21860b398871c4081ea891c81a622871c307b6c1db43126ef2b0030d2ae4e0041ad88e80840b29ccc0861b49c8002d051ad0f0441a71ace1c71e32a3f1061b76b07104081ee0c0441a8604c2d7107cb22146113218915b0e4fcc8043070f1844c413489030fe03134790f041084fa8f1c4119007d10413410cf1440e202481040628e7000461471135fb0146f1b4c001b80355144f4d091529000044a57bee443d7ae80318acc001094b38d14759751011820e47984583052db90457062d3831c310492c81441a58a0d1c6084cc0d1041a7ebc5144094f9c9081050e60d0810e43e0d0420b13cd80ae11c00b0380bac0f6def280026eaf341fd0810c54071a0a1c8b31b77101835cd38113acc10e8208451b40f18859d8821494b0052d4e21c25090c2180863a1317ca130ea9ce214bec8451428510c622c0c15e339857140b806117466259c914d07a015041774400c81f8c214d4b0b3d40d810d1802490e5ce00640a0fec1716950c3119c70b32620015b2ec090e6c4808428f4460e89a0015706368734dc2c0aac530212ca90840b88600a36b180073ef70535608b7f1d88c20cc6d5821e3c810937c080073000821608510a26f0c00548708428b0c18b38c802124204020c382d5c8fec0083308017c7c5110dd0c281129ed03f1058cf0958980f13704502d960e07e5a81cb5b20f5a842f90e79c0d3545318203c0210cf2748c19da62e3084436461066fc0821648d0842290000838d0421d7e604097500027b729021146f604251ca1104e7002093ce786cc44410d4020c1107600cd37e8400438f09bb5421002025ea041e1e4de387bf919825c208147fc400b68108219c865fe082b81970764d0026be50a096b700423fcc08945a0423ca1c0c420d2b0074aa48216b3800e0b95710c5ff0a25fbbe80509d9200745408212a8b0452f78718a548402124960c95bb6d7120a64400969c0c1675280a30e28b40346f802138c109b65edc0a152f8c2103c700269b1c0033940c31c8e808627cc8107af74c3221af108392021722c90c106a988363f4c41043d009f0e5a232d879680037ed041b84886ad0e742d073c60021a00e1840e64408293e3800724c421cb75e0066d6a53070405021c706e5ba2c180085a00821c54a10d7b60c2e5903003027ac00314a0018e309003930d014619c5c0313335bbd90d73019542c0a59c099344656a01fec20b40000870159f20aa274a19d410c024be3ef4a10e7d3901118c50853e0ca1254bf9560788008725e0a00c52089a0ede63041aa0210a38f0c00d944003e8558e2025c8016ddfc6bf11780b502e7980815542e0954cae34c7f2806a0492d80b481603518003488630b20b00c1117f18455c15318b5d98620f62980313d4c0084e400212bd30180ba5138a5d14e3a7238c431b2c01894fb0741621a64422f6d0825d0e0a5e2941880e902003c7e880072460098924bc03460cc20d52908218e450b412e8c00e6ba541054e50831d08e21180484422cadc084624421181307313e272de2038400341884219d22046342421085d6dc8095a900326b8200a6dfe98411298908334047a082a634214be408313b8e525e3dc80a020f0815726210dcf528221dcf0270440c07e06eec0f62423592534210d4e18c108001a020f2826d60c92cd056ca254622120279112e6f1a89b3bac1cb398be138a4f9a4b80a2208a99878ac90996b0ba22e0e00d7df04321b2d0042994050e4530a58133b0191a9880064508c20c643084370c415a1a18f73b5932021a2481b575cb411680d0818280b5c980aa4041450328823a789c0c285107aae7821ad02f0925d0c0081a84bfc43ad4031970411b38c1094630623ab38004128c805637a8f34ab4884e318a710c463c4114191b0f4b19610aa1d26217410dc523fe90040f1898020d92feaa0666308239b4410e728004bed4e0821e10c1098048832218a1081fb781128f808422dc4009a83302cb4a10c44eeb0588a807cce8a0f80425f656b42628015a9ff11f098a2008332881051f48020e88908324f4e0423378421998e639a4f54dcbe273c2070aec96415d80dc24d80006864083340ca20d4870821cf2e89903260f21150841ff94c08619b4443639618d0558b0d043f1e401914abca692fbebaae8ae2a433900ef9a72a9da37b7009582000a22304ca0c0642b5ad0421292d0074360610869e8032dd300073ea8b709920341be2b30822110e10434e8c313e0f086c03141030536a5032c20021d746e5c693099126450011c88c0363831b0fe501c4090402570b207a5800848001919900176010233607d2090581ea02daf92106ad0098fa0089d600bb3900abf60083a900468f009f822078cd008982063c6200a90f007a6400ba5e00b3c660ba0700a27681ca4200a23e806481002174077183040f803028c400b89e0068c200880004b4d200780000a9440758da0088b206500430aa0c008ffa108f5f2066ef0098e600966a771c6810aa4f0090153758f60076a200319405b1fe00149a0063c0051fde40253a30338e22c4ae004add30232a02c3390013c407e38e80268485e2aa1136ec11440e1001145047f9006688205857214f8c76bc73428a271024e002b9e0114bf84108ee22ac2373b44c1fe4cc2347bcc247ba3683ba6c84c00001551d1001640021ad0004441012530023b70027211797d80055990056521055850054a20077d0007cd670774030758600465f20445004027008012664a9dc12d24a20421a001fe130547c0180a11372580502a1141043422839212a5212d17f51e7e330327e00232c00206684a17900447e0012d40100c1205a11083a3700cbb500aaa100834b041a6e00ba3d02e89400b32650b55070895a0067f300bd4c10bb6d053a7000aa4100aa800096ed00647e046e0060290617df80308bd809194b0081e89043a330ad661916b96664fa7087fb00830181ca44042a15076a2a0939fc0088f000a31b88194400a13085448fe30021fa04420708d6270033da01a3390342a920322100256760446a0031d90033930401da0010c203f4420590840109b527f39f11610e0605100596e7214dc135cad4710d1e2014c800238d14bbfd41316f00153800998c04a498129c0633b868215bc673bc2a614bfd6980bd0005a56041c300227a00369800450200551c00127904d27300558d0046b800538e0353a000434601670302770800458f006781604479006a1874d68b03e68a00320e00217600117807f1d900210e76f17f001238003f435021a80011a100282e22a5a012bb348038f9412f7a30339a004f1d64f19700121200212062d1f4002f3c719d2086e15d0014f100ab910088f600afea6700a8c400462d0066a00095ae206f7c282bc909f38e50681700abd400cd0211dd42142b3f00881000676770278092dd1822d6d400bb4008171250778f0078a400ac0301eb34042240808905009a2000a2a340b2c5591a76091a2301ca2f085a2800a434909a1304321467347c09441105a21400338e0022e401b47802eb895031c50023cb00635c003431002ce82101dc0001a609e3290798002179373018842011ea0015150258260076dc096e658970bf000d96704d0c27039e12a6aba1349e00668d0416590015e6a4ab2119cc2475dbed398c6058a89e24ca4c81396660445309a34c00110000534a0014550054bf0476bd0042a705158d08c4070fe2150d02e437004c12205688006757002b4810459900655608020b03f204903a0372448b027df5519b9027a4e805a14f7001a906f0b95402fc100f6a35429b11417d00338b0948e644a3ad0023320021d800321f0013b10490ef627de02015fda068dc0093156849cf00951e0024ce05d4860024880067fc009be000c66a00673f0086df008c0d00bc7200c15591dbc309134b79f62805a9c813f2df00163f307c4d00bfcd29065470a33f75327f809a470737f100890000aa0700be5c130177a0bb6d0822c550b3b15b198806394b0a213b80bb6203aed4204ce82049fb40319804968407dd2222dd1da0123607d39e0a34d1069b6e507b5911306a41509fe74505ad10017a0067520088930089df00707763fa081283ae1010e210345f0016a400306c600d999280ef0048d5084a8800604a7a62c01012290a78e98b654411547613b70018acbd513b6f3001ce0023ab004ab4204246004270001388003d6036d39cb0120400434c0001b8018cc220240d0a622401810c09e38f10125002dfaa6181ce0044c504929e0045c09044f103351f0044d30056c50087590646322059d930217420451300535e00221c096d4394e4c69170e46032513bc18101fd0d20224a01239012825d002df42021a4709be406681100a4ea02c62f0050fd10451d09f8cf0096cd00204d206a8a03027770cd1f18fa8600a8940746a9003fe196544be592223e0026b5043a6c00bbe400bb99082b6100ab4c00b27280abb400a90c008f2ea93b4b03121d60b0a9c0bb3d00b11fb0889906339760a9f800a109c82b4800aa820062ce03793d1012cf06a33d0603bf0053bc073274012f46b4939229c0c204a46500851606a3cc76b6a2a5585f20010100554220781d0067620acb0e200d205131960089c00232ed00422e0b59fa8130b600490600890200a7bd0a5c9459d256201b0c70038f0013c612905001344a13bb6277c828a3b08600125600146a0015fc39543d0048fa40116b00192536aa74a0260b9002250043a002fd9039aae74023b502449e02925b001258039485005e0b8013930033d00fe024ea00439100257a20218c002d6731155e0ac47d003032a087f5006339012e3c49601676a32603a09d1021ac0bc7ed3bc0368c22a5204b798012e31401950020d9a06b4600a8a30231b910440103691f405626007140b0804c908a0500cb470afd071afc2e0af8dd01f6c95035285102a8180436abf33650bfa9bbf3acaafa8401f22b608a8fb080ddbb0b9a03122a4c0193b08b790094a0030a0800a4898c1fc1a62eeba0b5d49322673597335022b221b1e5003d7191f1fa001ecc9acf8e30143a03349b003c86b496a29417cd9144ad00670c00894e0067350014361b46c691417500573f00486930626d016ae378852c0097fe0076426028f62b435fef0c5cbb53b468114b3176cc9751457018a4d316a2680021c3003bd1a1661f5012750029323021ea0039a0ba64ca50466288808200225a0344e701144c006b59404b90502ded52a1bc0041230280ca5b8518005ba5b0139105f18d05f4fa0031a4002274028be847f0b254104a12c4e732c3ba076334002a82996ec292d12e650ff674a12646a15e00498300794700aaa10346c607773a0064140034d300351c0084387052eb0ae89600bf62a0c267772c5700a13ac0880e0074fc086b146c2c4abb32cf004c5600cbd000c20baa2b3500cc270afbe1030b400097720061bf4092668afb33053f97b0bbd90098d20421af72f160b73fcc26399b0043e0005fef01b9e2ea004958323f9e502374071d0e204da44df93f3ab83980132500741102ef205c59d28890fe004865008722008bd1dc2793228bde4b570e3382dd00441907f70ca0010e0006968088c000998f00522f088834888537c3cc19589b373c4286e2885620138a00240108763f9011c40019ff92c34000543a0780f400449c0e30804176ef305f193bb14d0001000a73a4b04b44a0121804b799a019fd1c315c000ed088dd643048b4b013b90a46e135b5daa0122c00105a63cdc7201f092e638123915104a691e9cf9162878e22dbe54605f8b065957521d083275665b49d0385198046cf0686c900806a9dd30241da760743589067222463a7041fe74fe44ea030cc5a0ddb3900b2c95b2b350a3b440098d20b172f004297d845f3075bd406347b90bf7c20bbf400777700a760008b5200a8c1062b6600a4370606a8e010e251a16c003ae1a22e1b201c10b0208e134a091011ae002239035418a055f80daf855803800a7bdc600434025f1f9086860022130d834200273663ff5b70129d0df2060025f50266890183081d151e00881a07165909d98c86cfb4e5caa672989523cc355b79952ac16a00103e5ac66a1035280026a4a0143500752700207f0006f37324400010b002a3b8024b782056980ba36be99d9533f1bdebc2d61e581722e43209d4790031b201a3a804751800452802c2360d39b982325606aa5fe81609c8141bbeb120b60f08937e4c97b9caeec005ed9094129b169c009a8f0054f30202dcb9d76c0096b905b6e30347fc008cd5d0cf67a0cc7500af28a4776100768c00335f02cc7b2a7d15232d3a1b1c2b0a2bd8031c2700c0c4ade5612075ff0091dc106a2000cc7c0afbc90086a800690700ca0c004b84e748af00483b0311a9306c6aaa608786bdce90249b0c9593910a5b7500c606b53faeb49400352f0075f606ad22a46472003472be44ed0238cb00890b003f8634a54fb4b3a4101db38a5a70f12a457012260a48eb30781100872e6b5ae77c698527bc1d6c6b317f0c3645c07b0134dd10028000453a0a4535099d9280244a003389004294056fe697008a442035150bb9ed2d11d50044fe00245d0042b81034f900443d10019bd063a400223001041b080a0f0a0430710438c9cb8c0c001050d1d0a3218a183489319518c5870808102050c1640d0408244e2030a0e1e7a7ce080c183962e1d3e6c09f3020695162e9c648041831847bd40a9b1038993a23435c410424362c493467f784ce1f1644d9c358c4cd17af4084f22519414295232c205c2112c3a64e8500103c20e1f74ccea658b162d5ebb7af92a46cc97b059730229a28406c711294f98389153ca11a75c9f4a2d12336797b15a33907cfab207d21f51a876ed12a5a6a0cb0720346860e1c1030d222136e85093f883478f1d48e868c9c0f7dbfe0f0f68e0f0d0d66d050f3340385cf0d2c10322861aa15275aaec05ec0d5daa2cb8e04f9b1b322e947001a484441021209008d1814591406ff6a0a131d17773070b10e8dfeff24073fef8f38d81050a44e04002f94380010e38d0018a27962841872686f02083168a9881882a96d061862274608884138818828624b420c2092c86c8018a124a082104299270220d2c7470a185219a7862860f3a4049031d51c888080a2674c121145c184207126840a30f179120e2080d2e7800832176a041040a3ce021080a7ca3a00295b623f0a5015d2aa8020d2aa80026982898411046303165964e1e118513409e50e2892488a04d0e469e48c39039d46823903f9cfe20820626fca0a40d39e6d8c14a115a1be126077470438ab340e8a0845d8a29c617608e9985975e84c98bd54fd438e289295ce0e1861cc058a30d371429e357453a49450d4180a185881ddb80440c403e61c51651667944a20a2e10a1030d5e9ba1851294c0c1071a3ea0418d46ee0842039a32a0a93f952e000189e17a40a28d1c76930803b7e26200853202494490a190506288193c18b039020f30429028a268e489133a3862863953ca580325a2f8c20d366848a1dc8fee5be0bf031128e0bf030ed4af8000f703704106fe2b503f0b48988286121c80e000084ac061adf1b4cca00411406841440f2a08818621a0d0810620a2c08290256804a2031cfeaa58280719ac24e14936fcc0a289e12ec4603826d630510a3192606f081c3478a084422fc8400725a450c10323aa48e2e01e30186121105cd8a0cd071c72e88498d2fc082590b0ab00223a30390595624261c4915d1ef902893d929881864018b1c30e36d898e3334548418511379a68610d419888a20617729861c21632c08e8334f6f85c8916663065175e66d92515615c5555555f7801a4052733182179236a18020d368e486310341eb1e38f404611e50622f070640e3cc47023145a40792414609cf888052c461701031198ab05444802086e40821214e40239904d06788082fe10c8011ac8c1135c00021340400319a8c05960921f943040038230fe842f1ec188363ca1030c3c8112405001df3cc7011148c3117040885434214e0ee9cd032e27821174e0023348831c58300437d4a0020b9219caf46320fec02c65054ad0c95a26b3276ec00426e800030a8080d460010a4ac0820a66708413f868091658c0084850810de0e0040c00410968a0851388000a55289111a03485219c20042790a34aec38030cc8e0574d70c2c53690011cc8800108b85c7e62d82d0b140403231103138cd00342b5e02119338e0676f08105c870260ce30e4a62c2800b9c49815260c42378418b36388211a1f8842f7c21071af060074c90832106110a40d881318f70042a42b18847b441094770831280d0031008e109559803fe23388026798921116ac0042668e18b5dd02217bb384510ee308b53a4422fc530851b4e5785207ca0203e2c8e0e72208623b021118350431ae6d0862f90e40862880220f6d0cd50f0720d52c80112305690a04100020b109314d0608a24bcc4022c68410730f0800c9c9426141841083490858f848009eda9c0072ef41c3431c0026bd0411a98500a4c4062081598c10c92608210b444072280000a38f1850ff8800d8c2843096032a098c8e97218109e0c48d00197b8ac71069ae4815a66b3fdd42c6566b519cbbe8800010480012948180e5a0027118888411a28c1234980839d1d21052218020a7c22021518010b49980d0d50e4841990e00875a08183fe72b090a78900261978e3dd9ec006a925e10410088113e2409c577a80041cf0210528950311cc400a4e50823e4f238218b02b25f7e16de33a00013a3dc4213b81c95a66b0064e84821373b0432250418bc9a4821339b8601318d1085064d70e68b00a1be4200824ac011090024456fe608736ac410c4f90831f6e158527e4290e8c38c5230611171d20410e9ff804243ef10848a861744d4082184a8aa6945c80a42e70c10d287304178ce00320788007e2b6bd921881051911820cfe208727602f031fa120115ef880053ce00882484173523a02445e6e3f1460010c19d08013fce1082330d50d58c01a5379c4211aa8016d4dca03c10d816e2d20410b98febc019d3820038d03094ab0739a39c904012a59504ad2444500b9c440573c40010ab0260494b965565ceb14555680076871095230010952b0843260a10868044106204001cd92200740f8c00c3670800dcc40077cc882148a9084276061093420810728d081a665cc04bd3bc21482c7810cb88008333841116830833638610a4df8a60c74f00434dc00047af3c08952b081121c4109b089021aa230831030d9021bf0f24b5cc92695f4060504418e063e32a707a8e00f7e08041b04110a4804624f9cf8c3284681062508020b1d78022440f1073cb9610d6ec89418d0b006393402856c784278fde00744a921481b66c21cfcf087590ce20b29fc4214cc60fe8739ace10934c841125c20db1c78e0044c2841442e10c40b7860040fc00116d69004358821076a504212d6b086208020074df8021ba2b0223b1ce108837802083cd0d31c70c06ea8f1c01c3a7182e73080241311f3963e70011220610747c8c18472d09a92cea00733c001bf8690061c988a04179c810b4a5081b578e00371fa0004e2a51ddf6cf983f9b9191471fa11b6278866fb71d915f763b331a7f900787f2b010e108009c6680926b838020cb0000b983ad259a8431110c0012cfc20957b47c00570b0251d988002b74ea56f5c203813ac489fb9c6420ad6c0010b44c0eb1740400946ed4624b8e10816f8b3deb8c6043b73360dcc9a8112b25083fe41e5606f62488361d224c3542e400a7270c38588deb89ab869037210c520f6b088d43961088648c427dc100834e8a00c3898df784ff18b5124c20d6568433707218839b8e1a16e30431bd4500635a8810683e844122a408339a00192ca8145888327482131e80125f8828542822790021ee89b2858834108043c20810bb80123b883282881e488821a31182600253540833918162470011de1011d00253128308b9a821a98811d78820fc8010d309906381307b8090f08011208020b581334b3001ca0810e68011a58b8b7282aa50981082381a523a048ab0217a0341d1840219a014569143b70830fb0806c89899b11b30a00b314630e2a6a9805a13c97fed13bca5b809539ab348b9993d9b20040310e28000bf00008c080b25a00b09b2018828025c00213e11022708003708033cc992758aa24989034680343310223482a94cac1e7008123488226282051db800a180119f89d0e680234502c3438810ab000ca39883281ada9c10125d00110000123d8811640833790268591a0490282a610a42650828dea8d55aa090e980444e98482738424180135580485b34519008128200134808454fb8225d0b6451884f16a835ab28327c881d1b1834000033148a127e08013f0000c382ab033a911f882345803215002220802aa4b3524c0812728031e38022690392498022b0181322884026a8127f0aa16488328308bfe11e0011f71820b6a8128c08404cc011ec8468f748224f8800f480224380f18da0011e0210cc8811128811600812082880e18192278c73410033b48032740034100043f70834eda352440033928844498b627f8ab0eb08069fa8833691c13100134a900b30b2189500930239005d18fb0a2bbb49a2414c3a2b6dbbb2f6a3bbd9b24b2dabb051080b86a0008709cba433c18322b30c2012450011da88237c0826d190211784907a88113e0802ab88837e80312608b189a01553c810ca0818aa1001078491438812460022638819c31010ec80138608207d0200828c5de4831b650c12ff83812200213780025240427d09b3559000ac800b72c90066813c7a9fea28738812f381112780227980a19b08025f88339708213d8813f80823061825d43943f90021a98af4f08854ea8812718043cf028531804ef11833240820b70001c30810ad00105c3c52110031760011e70814ab3c91c7003017bb8743c8b1068835f23025bcc8183c080092b880e9092a711831af838034ac22b04011389111a00a82720827acb011ab881c3680266394825f0915d69811cd0d03598027753b73620ca415084ed6a94366883857a37399003a2341e3568021dc8163449a5d3f0a1f5b4a4015990960090034810b07c2205519029baa29551992705909b59d2e6701900008000288013d8000838018b38014959820d680035238034a39907fee0001a9082288002ea8400334dd28b400315a081071081a129138e528d9710c40d48a534d9920a00b925688b07d0802680c50d408224a00117708d19e00007b08011d8008edb833410422005816d12010be800545b83044abb1413339a918997288828801c487201e440c216a8810cf08027e0843aa0000b1882925a02b331ca1938083470844a58831e48833ff88346081e11f000befc245d63b724d8811ac0823488c02fc881136001487532104003702d810b688124c08196da4f0fcd81c4f80223280975231427602f3160033c90833b000445788446088441c894d121be14f2b52f78023170373b980f34d803357883409003f04938472983391004fe39588339600337a8c436f80335700236102f3560833470d42788023f88bf8c2db832c8814cfaa0e6d8ad413555b96352284a19b834ab2a9219bdd38f329b433a441026b5d932730000d0d50182827904822ff18d1398020e80800da0018f5b8208808008a84a0a28801488c70e9081530a0118e30013180258b4d9fd800024180225283e1c0003144831190854589a011eb0aa12d08c8a5b0002b8c3537517d4d080d17c832ad081cb6b004b558232c0ba16d88183b880b65b931e84091d30b016281387f054d739025c848d10a0bd4a4da3630c8233f4a108b0a55550021778821df8153b2082090c853dd8000fc80125d02ffeacb723680126508324e0fe01921383e414142550af279803e7ac583b48267543033bb8037b6d8446508441a82548a0844a78044a805e7c650446180cee7d04c280043918a839400346d803e3819440d0a53fb8ae1b953ff4f903f46d03366839396883f07283d149822f68823278832f588c1cb815c7ca3f39f88232b0033f48cf2048a920398de740b15532998681a29abdd937bcbb34e5d936b4223aa4c33b7419fed83b12ced200f83b265a0004b2800c58009d6361ad74001380821638811218c234730014f819dd3cdb22d8b51348b107102b9db2000b1081a4d2809fb1a4bd231020d4000c20012c60032c4028be64031f10629980890a000125900325288127780216400223fe300189638211380c0bb8a232748005798e93c931fa1ce28348420e60007d82802f19520df8800c4882375882dd6c2d0dd8100f18d6898d020f500235080225e8a45b61bf39603e36f8c539b8833f60caa614843d70044aa05e50fe84ee4d040566847cd5d745480479538451e084468084ef6584444884b14884ede55e5a3eaf3988037c138381255836c0943648033ca0033710844118044a10843be05e791b0cf905e635a85f3fd85131500293ac01c562021e40822f18d14afc032ade83463860224089db50552ad2d90201c429a259fd004b321b62b54cd3b5faa2b322e10381992baa990079a203892b0210009f756329d53b0438011a989a5b5902fe1c58022558011258831c19420a688005388123d08215c8231b2b1395a09125a830d83081aefb001738420c70023f6883263842700981871055b26d1cdfe8c39d080912900220f8c427a8b8866e82bb6d832a98bd186298015955ece8c13d58833f7401bb418923869a259881884bd494d80026680123200e27c381206882411283355083edb5031c158464bd8390f52ed691833f580448b084eaa5045100054af884eca2044ad0eb46a8e5c10804c21eaf456884aed0d7ff7a844fa084ae500456b66540a82550f8044ee084eec59341506076040487526b376803056637f5b236f44260a60b82874383122cdef2650326c8812314c91aecbab468811110fe49023a82143c420fe0448dc2d42355ea530d1034a3bb2b351004312b0521b327e2e7b5a23cb993a2bbdb3b0020e80320007dfe3b33bb19b24400bf3b90bb31b526d0822288210638013742aa13316327b01b0cb0d51f50895213010ef08016f0004cd5a98471800e708126b8107a44ef98c06997781ab3b3005443021d180114198254246d0175032b710340a0582478c5570c01374003271011cbb49b943a52df08812800027a74171ffa801290473045822388823aa0583fc05779c3d744b8834010847fab577f335e458004ecaddeca26854f4085ec3a055b38055a40855ac8de47a8844468d1f68d65bf3e05e5e26bbf0e0b506072524065c81e0b45fea065469065566684646547ee0d84d5e15e41d8f147c08447d803b9c63efcb33f31c894fcfb022c108219648292e85d365002cfc40122e0811ec081c560023610035be15594ac29173882354883101bbb0dd0006293892ba5199359ab2a9a99b2a23c32034b7c1e61e6b63bb355002ddd52ed2e0002f03bbba33c9520100b2881ba8ca1d8328234306f384e5306800011380136c00129b86f11308226a8995882c50ee0801690810520129ca04d753d0188503ab0da38b61babe2c66f5813834951381a90309d401d1a58dc6bb53f64618224388253db912760c028488225e8b54755028d7c023780031394037aeb4cf0d983ef100459d625f5a58450606cfe4a906559467346a8c0e945e5450885532885e79a058ddff874da858da785cd410523df6b5bf6938697e5e83d2153167340086c40c0e5316765591684a65c9d3bd8d88a2558750b5927c881c5e001a36a03486b813278f726e001af2e0362420378677a2360021d30021604411e58b9faec290374c026088216088191300221ba806c49c23342420af0ee0209bab27200c3f500094eab310b1035b3a2397c33e896c37e6e197dfea2133881083033b5243394716e294d2513581cb87b80615b03c2cb41302a333adaa028e1220e62c405c181d3e3382090300f40825374028b92130fd8fa1bf0992f65a3557280f6381328f0830d11d05bec98936384e2dbfe0191d477cdc0811e40838b10031e7002777f8263843534482f3a386b9f4c03368803fcc358e66d2e7983844e18f346c084cb06054e60eccbe604bdaea5cf51ebd461842e3f0578a20b264f055eb08559f8055ec88b8db70b5448055a9805cb1685bc865e547e044b38a11baf04ef35658000f4e74f20408002fd69b4e8a01d3462d0bc992346099b366ad87c6993e4081a2653d4b87972e40ea13b6ad4f861a4a4c6141c44c43c6992a34992247f1cbdf992868d1a274392a0f9a284469334499a30213245640e1a4a94a049d3064d0e1d1a16607892730411223a923059b3818189a87e068101c1840d8d275f642c588000c10104050e14c84b972e5ebafe0cf6e2adbba00002153f4c6039f14003070b0f32e8d83196010506181c404021b7c4901225446468f16403850a0d18a848c221099419244c1051612103020b2148cbb8c0a041840e389ed0d0e1e10183070f2e6410412103071d4fd344193264868b1120aebb90413323cf2f68d88861e2c44919252293288912f4e91324445c1cf982fec913256532ca91f3478e9f36fc0531b25f7e82f811c8208d40c2c8239c50f20828a884a20a28a698320a28a090224a838f30e2c8238a0892c81f8c40b2c81f8a9442cb2c2bee42cb292dda728a8ba498124a868f3c920823a1e46807240852620a28392ac2888e8c0472c71f7e9ca86087a04002881d7258b486fe7f81e021871d73b47147208228c2092707fea1441a720cc2c613164581845351b9e1820b4e3ca1061a4ef887060d39e0e0020853f871440b394877c4464e44214306341051c61b4eb8d9c21a5f342105114788a103114d94a1c3114ce85002061d3c3683114e9010421152a881c41b80d00001020c3010d75c7c2120d75e0e1c205760b9d235d801289460410409a0100102c9310001144f7cf040072aacf080031ea8a0c30f0b50c0ad06089c004505392411c1020c5470c1010c144183051a7890c10e271871c41053ccd0820e683c4104a2430461c4104eac21871b7e34f4454558bc81461d6e7cda041a6da431901d6db4c1a42181ece107218bb871fe277d58a8f18411490471c41151d06043124888e744123109b22523821014482277f07724207bfc7130230a3e424927a08c420a29a3848221851a32382423459268e4828f7c22ca29a590720a29a89c22a38ab6d0228ad2a4f0580925890ca2df1d761cc448250a36a888ce8324a2e5884572024a229f004e891c73fc21221b7f2c92c81e6aa4c1841a5f94d1062372a851c71b7700b888137d1e21050f12abb1c61d4f10c2c9d46b243105124d141144134fd4c003110eb7b1061a6adcb1060d3244c183a1e4b231482178a85155146e0c3208206b108287146bcc511f7d76240502050e5400c1091754d02d61711d50d75c77e52558f8e5e715805d751dfe400003846d40820a1e4020d8050eccfa575c1e107142084600c1031ad0000542908325306106ce39c1110446842860010e5878c2a4b0603b9f2021094e404314fae0849c64e10d70f80e1cec3008410cc20f8010041bfc20089cd9e12c58ea10251a61884a34a2110c6ac4d4425230f9e0490c6c98c31a187711251c01096e799d1398201d22206106fe72021b02a1339d99483f7b9043dc18d188474002121c12e387121446465082419408238e0231072e7ec12d6ad8922214f2355af0a218be00062f7a1123afadc814b6201b2940210a4b28e2449458db1cec6007b991e2138ff8a2e928018a507c2287166a9a2966718b59d00215649b052b78f10bfe5ed82215ac4865285501365138c28b3a0c85231601094ce0520e4a580b1be83404176840042dc041195e972f19f809992d08420b58d0820b70af0219e880083c60021e2441061d2001704200020c5ca003157840054ea0041978a004e27cc002ee073ef1dd2a7ce1030cb0e2c20078f66a2fdfd3955c54b0041aa8800320f04c0848e0992404a7084430020d4630032c34610851a842155eb6042030210d4fa8c2104830032560210b4d680211c493061132a13d4e90c21f08018846cae10d52a9192446a10a55a422159c7044200a11a02f4dad139d50e324792888402822968290c31d3076b034e420aa19e4011290900324ec00073720147a6890af21fe44f40b4b0d04230ab1083ff007ad7e284315c4109f359c4814a0a89a243fd189508882133f7290d438f1084ce068a9273d932320210a05010e6baa1085283e6123bc02ee468e20c51a1b1432faa0610d53fa03de72980845e4cd0e7fb84322100288d22642b4462a6d83f2b68744c0b68e9f981a24962425bbb9e10e6970a418688083193c21b76b08442d55f887920d2126046b4320d44013241cc10d6a284314a270042524410a55a8810e6800820e6040042308ce073ea0501af080061da040072e70190758a05673098c3c7f952b78f2257cbeca2ffb6695cf05c8135b343881060c1a021c0cb80a58c0423a5340032314a1ba40a0890e743083ec3efe01a20423840869b206411842106272442140dc30b2f2a13f6f10de200c114b2b0a220e767003e12a52873d4c653cfc4a421aca00d737b481bae471c2172e0229f25864754cc0410e9298841c50475f3ab06a0f0c3584ccce410d720090dd440b883b1462857e2810232ef207d10ac80f9354048e140189be718843890c841bfec086298bc10f5f88021366c68644588812ae04db2c504189509ce21394982d52f796884a78488c0b412a9b15fd205116bad03632052a56348b5ed08214b3e0052d3079a14400c20dd4fd027fde4007375484886888620e6ad0501ef0c00830a9cf14e4649d0e78c0053d704f9d0e12cb41d8f9652d18410b5ab083198800fe0758edc0074605821178a003236041147a8904b04e170b400842555b404e0003f85605888b03e412175bddca567f219f7ec797eef97280043f58a80a6670024d65010a585842a5a0208525c860826e708313e060bb3e60a1e12b854820e0908634f8c1108668841f1c01a0428c59e37220c45afdc3864776a23f7520ebd01a518839f881128e180492f443a23d4cae0d753c2320fc808646b241742b74c845d660ddaa12e1093551420b52a08320e8002968181d1a386ba49bf1473f029a4a1b0e92080e5d1db40eba519cbfb88846cc4d1175c4d028c444894a7cc21266bb902840698b5ef4a28fbc10462f7cb10b60f8a2efc710862f84210c601483effea04e2c864e610b50aec8f1b490e48f00d7884f28ed1485d6bc8b64948b5c80f2148d5ded88dece3636a7d114b355c42016913c13596c1124ca1a2645742243b814e66845430d5a0082194c610a7330441f842285fa48c10814a00075c67bbf515def312028807cffb2aeb99c4bbef6cc5faed2cdbeb810c6bfeccb27024a70821210810649a8f0091855042340a108492882b89750842a64180efa7fc382dfc007358c90c529d849bdc1989d90e5acccc561011af8411d60017444011cb8c1528d9927a4022e25c20b010227d8d429d40818894982801d922c8268edc11a30c143a0c10a7e81eae08012cc000ed8da0e78d59c48450371961db0817a7cc1fe230d4d8220db1ee88c22208c77cc8120148d2880568238098e3cc2d188112860c25d59088e8402273c56d38c1a2fac882f1c43e1055ee10d9e2fe4c22eec422ef0022fec822fb0212fb0e12ecc82a889d22dd8021dda022a5c0828784d2af891dfdd422aa8212d84928aa0022d98022994c229800dda604828500220f0872d8909263488985c8dec91952178d167bd817e5089cee8502324c2dbd14d2884c22838028228821cf4591294c17dd0c01438951dc0c1242c4109e0000788016de80a5d2400b09ccf5ddc17fedc0a7f791f5fdc055e24630010405e34630110c0019cc0c1d5811660411df4411dac411f08c22104c221689c1f401c141c410e3cfe81354aa0fe3d011c1820216c1c2170a38b115f230895271c4d27608229a6822a0c5527c81c28a8d22eb0c22ea4c2e3a1422a94c228700d8514e4a7f91d1c3ede2c98422998a25c5dc8d0148d21d1c8905402168a122a80241c1612ebe1819a014e8d28c8172d1ad67c02287cc28f28888d744de4358d469acd8aa8611f8512d8dc42ded1c21902621acec22ea4a117ea111b1a9e17fac22ca482a8d90251ce421912a52ff4115552651ada422e7c922da01228d1c253ba212a91cd5786dad7cc02d988cd2c701ed7145a8d748d22a2428d30cd27f40d940c4d229cddd5210943fcc11ecc581aec921bf8c71b9c841ca0415b55011c30010dd0401128d17dfe3c011354814f908006304004284b2f9a8f30a24ff8e5573cd5573c2523344263fb34a332ae8f168023383a82c6695c21f4011cd4417b2c411a304c1af481c7b89c21f84109d50121002721781c2114820e79822798822a0ce450e2942a988228f0082638822360a11ee6148f7082290489447a202a40e7a811e5515a251b926779ee02d8e40257ca8829481e84d008da80112404421b3c4491b541e14892d9609286148d8e2402249c02177acd4f62651f0dd22e0cd28abc65210e522f9c611f212828c1611aaa4854e2d1172a651a9a615806de840aa51bb6a11a4ea8a79d25899ae1dde11d2d9402a755a857a2c242960263b5e485040965c95ee1600dfe24a4d190b4a4a22d5ad3b4e45d49e7d00c0d5905cdc16c1c929c10c7bc9010c21895f8411cd4c11f809c128040bbfd97af984f3ed5c503e093aed4c569028b5dac4f30ea457d95a616a8e621b8a33bde5027acc22a748227ac029dd2a92aac8229c4292be0949e2a674e01e22ba4c241e6942b98e12efcc22f18ea2f0043a2fe0231ec51a2b2213000de294d2ae0f94231b821301c433118c31782e88312654e56a51a46648b08c928248d44ba642804821c7442205ce123acd21ae61d821265a879672888d15bca888472611f8d61de7161840e2582e6c2ad36281c8e2a1b821e17e64288a2d2d8b8e131f451de5d25b1921a89a6021e3d2bae9ee5a99efe218b84abded9422d280d94581ad89c822aac68d864c85ba20d5e5dd223205a2181d120b0de411c04eb418223a89ddab01edb18c209524e1b74624f0d82238c991fcc81108a0c12b841071800f6b95b6de4401470405eec93c59e0f9a960ffb74a67e91cf33de536010c0214c8221c40226e05e1f50a921148221b8ac74caaccc3a825049a723ac822abc82290c15858c422754c22a84028538a7199ed22b202aa24eea52be424e9ed22fec822a202b51fe82dfe5545c8a5e8ae4142d586da842a583662582aa08199aa1227202db30d6907048c710ced116a429b8088e601e22728d2199cd4f9ea519aec8e39de8a80d52d8a8c8b81e2b2875da869ae131fe106bde1dc3e382eae315ee508e1a1bfa1178de42d8840d48429e20fe2dd90cd2b4ae084846a4e482648d8882135ed229746b22d2824d45922481d6941404e64c674224a12376c8cfa88112b8c18cd9c18b955620d8c11b389246ad011bac1ac2ca0c1adc470bccc00e7c400594c00644800a10410a88000b54000af08a7ecd537d8566f8ce1361d49b7e0d06c7ca1361dc8516f4416c6a8108f541214cc29cc229d0c66928780227c4e971768229a40285e4a973520843de944082d22b502dd532ad2b24aa29fd9d2f642d8866ad040f03300c832f9c02276482d5fa1d55526d54562e799aa18bf8ed2075ab8bd042b786e4a042de2e78e0617ddd237412fe8bb4c8e6726584829edf6e281a425e82be0855b6081c82522a40e51af2825496a7def582b5626b1373e158964decd69528bcab5f2d0225668283cc96181549d138d69084428ca042577aa02d8c02d81022d340a74b56168e9008d690021899a242ced6d5700882b064d13c422c8d08872c821505821f34011240ca46ad01a4e84047f199144c8cc9a1e00de80013f4015ba0c00964c0c9aeaffa2a63343e232797a632a28f329ae96812c6211c0227c48250c969cf5288fefa6929e4e92c0b9523b8ac2354422114c2bffe2f85b002a00aaa119b21e8bd422ee414d5226a054f2d30ec4206bf61a65e6aa616c3344ff31e1de5171ee519be6109ff2482b2fe124836652152565326cda2d9f0a8ae48b712e5306b5e2a00ce2e08832016a2203e252df49d552a2da81dea3dfb1d8ba8e12c0883b5a66119e624e3f202a8866a12fb9d2d0043440e657a7a5a4e8e92a7edc23dab25228a8229a06b2779a72814a2222a628ba87044a6c2e6a66ed62c9a763ec27ca6545004454a954113a5941ab44116ffc11b94411c0c4289ec815f0e8eca7c010d60000600810b241712e84419648114e0012104c2132c81083840b5cd13808d1ff9928f30da05c772ec69e64502e00501100002442327abec2acfa92be7299c1a2dd0f22f271c672ba84228ac025cc3e9282027d0e27584a8825dd588735e211ad9942abc882d38f02ffebc4284506db552a55446ebe7a9a50f0fb41b1e6a6553650e3be8ae6e082380022b745a86cc75a2b1c80a137649a7882a4465d894428cd265ea4242d6749a8a80682f30b32715ee20ad7049e32ade85284e62e53aa7e13178e83d6bab43db2ab98eea53c230e719b15abac88b76de2126e22878b48b5871d7a888e84189e6a6088da4ae28eaab41204c23159160ba011ed80121240f889881124c4709b48047b5800b84400b201413dc4007b457f768800a3c5b0a18810bec8060ae41814bd7c1fc6e1a7cc1067080079c4b0268f5013800fe483856581f678aaf5d78726972f23ce5571fb0ac9db2b59e76822170029c0e1526d0a99e8a492dbfd9d1e669fe727a362bb8428538e72f3f702a086aad52ad2d0ca4a3f2c2408e6ad50628e28168794a6a2a80672a8442299c6728e05620342227cc0d3d8282da30086c612176f29021fd15277c4222b2eed63ca72b798d8c0422000f65e29628ba6ade411671d89ce15742e58a107419d2422d2877df15838362b3a6922788f63930f442228a5244a22751e2ddb23ede28b06e21dda4e6e21526e1158dd4c84b4696219602e0fceb24e58df20cc250e9a85e550d13b65c479ace23d8c144344170e84011780008c4f707b8800e84c00514d0099c00b0bd0b0694800640c0068c930788c0098cc00960011154c07d854fb09fc03d35c0bb2cc0066c00969a6f5fd0450124fe800104400098efbdc50571ccd72114029b9ab827188250c50227e8721ff001160c0113c0011b48d05ac08108b1a32140422740c298a9f827246719023962e31441aad2202deaa13eab04ff4206ffdd051b03a4aa6108276a2a69e8e3d9c22f14da416a5e1cb6f18280420da5da2070028df0c85dbe11c724c274020e167242464b12d6181228acb68cd8bc20860d7b9e617a2a79e912a48bd8548996677902de3477aa1e115edf113ade55a5a2bf612e786029142241f6ed8972251b96ed50feb372dfe1a8855a8a24675c525680fc01989b08d12009e20c045931ec131493e34cc5e1ec414700811430e611408178044112000112948113f17d441d2679fea481f3eece109840075c9b0ccc800758c03739407154c0e4fb7a1300c1101441134081059ccf7ca1cf86cb1301284003d445f9c453b6878ffb1ec214baa61ff0411f10022abb8104660116b8411db8e62ae8382bf03e2c24ea2f739a2bd038321f73082bb0a356f0d00bb111ffc23e2e16a09a612a306aa746bc2f643c34632a1c66ed50fad15332e550de612efcc24f62bc2b0d6a2a387ad6e61453aa0229002a5386122222dae3b12e0c9b365c62524bb67f5c0eaa9a1feb1a02842f5ebd76f19ab5cb162f5e097df92a66acd83187128b35f405ec57ae83077bf9ca850a15ad83b636ce327570e1ac53b668859c650b55aa59b368a922150a94225094fe3e29f2c388d09d468f1a51fa13a8511c35699e3c4923460c13233b74e0d0b123878e1e44d444d98144850e122d88d028f1658814273454f0387284060d19194c6ca8406183860e181edcad50e14187154c8a147922a54a141d1e4410a9a184c6080d207e2c39a281c181020710703e40a000e8029b476f06ed7974e7039f456bd172a88fa03e6fde607963885327437c72739ab4c78f20438e0c412afe08d2a24ea14ca552950aba2a95aa5499a26eaa54f354bf76b1dab5ebd72f5ebe888557e8ca95f35da6c6372c568c18b0f6c57ed1b2382bd72e8bbb549652758a1653421165a55da083cea44f3e118593461661042753440945268d72e145954402fe61249044da90638f39e410e4c14616346514544e018916924e61a52518675ad196ef649ae546fd2c3ae6bd63dadbb1a1f92af2a597816c11c5949376a1853f5ac47b8996fc989ca5149910e24f955048a1e411524a092594526e2a65944f98035345534e39e5913ff6f8031036d4f8e30f3698182207209c60638f41dc68c30e39d678e30934ea7823071240c880062488088208123ad020830d68f822040f3ed88002041cb880810522d88003081c586081071ea08081061cc8c00323b090420a2c9e20a2830b28e8eb81cf3afb15810556d36c5804100860d8d54ae3ec342cb480e3104326e16415555c7945154f3aa9f6da55a073e5395792f4361556fe5279a5dc5c927c0e3aee7641373b52b23ce5955f702cc89799dab517dd5478814e21802d22661860664105255e96e4e491954ed905a4546839851451486105c7ea4609e59347187484114744c12490401e710492472a79a413861f7904132e1fa1044c52565c7326fc66328514354d0165c0502849992847669ed914546afc4ee15d8a6c9aa0f1deabe8985e72e98848fdc6eb056b602c1ac8a05d72b1c5960b115afadf4f381990124a1a618412061fe1708f34ca68428d39da98638f45dc140493501c59448e279a48e2071c4ae8e0042042d8e0010718a8c08939d08002081f46454184af74000c55071ed0f500611160a0031786e060d50550c78186fe1c6808a1f1218810e18106167040031a5aa0010d358260428c2f9090612f068c5d2058e687dd4c59028c5576b4d510a83eda58b4adb615ea52f1d61456b0a5ae7b56aaf316dc73a9bb0e45eb547905bb54ba33c540525e29e81762e2d3cf6b8c2ef2c540dbf9c5be6621905d9c8226387a98fcbc56400052082158b3452a629225eb980415a190431afc0088b70962106b6b90283e010a518882118c80042538018a94a9f011402b05283e710a554cec145ac2c4234201894f4c0c15a2a0c44952610b534c0c3b33f9ce41d6649ff1f0e747132986308844c5efe402870892494b0024935e1c4c8945ba85cd4e9134180551419f488e1c963287347c8109fe3cd0410e94a0842124210969408313a0e2841a3ca10a4d0002108680b912f0e5010c60c0ae2870aa4576a0094e60420e4a40010cb06a321638410746c083273841062668010b9240030fb8200768b0021bd2808538b8210a79ac8321be3083162ce654ccd3250372e93cd008cb33c4224db1a0c72ce9410f015ae0036caa90064108c2119af0c31bf8d0070e4ec210c291431fe0d0043f18020e4ec0021cf6b0074360821398e844230a118850a00b5d026205777e31cf77a5e214f52c087814e6115bb8426161128f0005c28bf098c21705aac81371a69235ed5324dfe1cfcf5644255474e262fc09a22916440a8fa282a3a0c84e287698084830e2658afe38992220a1528b71821432e1c52d48628b35914da30629052630a1461e4a476b0ad951441e520caf09e4201a9d184c6ea2a59d84e2a634911009d5a620a17562140fa54529384109460c074cd04185da14e1083cb8c10f8388020e48c003db7d410c75ec81e238b001117840033a70021270002a0440c0758944150336e0000758e055332881e418a0aa0550a003917595065ca004127cca039fa441ae484004197000072df84006ee12accd386f79bfb29e6a38a31ad5886634d2d38cb15453002df46112b1e8043687232d4e18a213ba71442c86d3895418620d82f084fa4251081315a2129c18452038f18a7e81e717f75b8f2a10c21c0969e782f44afe45fcb015260385e2170211cf2fb0b30b0a711780aa28c582e4d710fe880daa3943887c3f71c39dbe6c87302bc584b2a30a5494e214a38044223a3113b2a90414262463426062d335a5821425541abec40331049ec416bef8054b7e71d462600d6c0221527b067290b1e54b2505ec052d08642f26ad64242c91df2e2aa2c015892215a148c41fec5006271ca10d51e041122499861131420e6868832082f3894a38421071cd410b78b00313808003147015073c30820e80a00517b0400940f0811db400b08a3c8061318001109040091fc865ae2c79800aa00a0216e8cb053e40010fb4c003becb000550052ce771465899d14c314d43cc623d0fb6a1598dfe16ea00874274c214abe8de2baaf5bd55242915ae086e1fd85008e07602137da80227fc20074f24c9157e70c4b9dec59df4b922142da32056536dc4531c6816f003852a462120eefe6718ed6d48290ec61e55e4e23f8c401895062c2148fc0142611ac5cb3cd6554a5422850c539b28404694930eed119ce0c4815c34319130893ff89c58815bb49135255814a5a81282a53312355129150eb90f3086d4238b3c9cc544ca0f4db68a600979cc3a35d2c84d3c8aa28fae08148d6884222ad1899555c2ab7eb8031a22d5810f74c0039175010d66f0f219c86504200001cd89d0042624990944d0c1107490010bac60094b308209123939111401087111c1eefe1c10f3bb50c0025ca6f90d1049810a60a003159001081cb02bd7292f54ca03666b15d9e8ea79667ac62ac0f548733dd96ea6339b79cdb656b10a4f18e29c9df0c42af8de8937b0010e505882140ae18743fcd6107d304414b2500838c081067ec0aa1ad9355ee962c239076684710d04d2228e37178f18852a58b1364a18d83a8213c52f80bd8b4f0c11123b5545c950f19c848cd85fb3e021285ac6c2400c6214ac18052540c130f0aa82241cb9af44f9330bf128ac4835e5cfb129e6255020d0c112654885dd15a45c3c5cc50a5708beaa86b58202f04aeed21a4b141662aec1e4602d91d7c1448155505802121cc16d1ca12882464d3a0613024e4130fee10fd02009d6400c68a00d08c1100ae10dda600ff8400ef8640ea4200d94e00434e00200e3544ac7022aa0036aa0059a200830c0023840047ae008ea2807502003220b03362002ca4e033e40e778400d68c0052a205482a53380a97a5cab74506b9124ad7a90690162ab587c09345c2b0bfaa00e2621b8764bf056a102cf29d6fac00daaa00e04211024af130a81139e20f2b080134cc1d5de600f4a61f1426dbc4a41f00ca10c30c17d3e01d4d26339428116d0451518010f43a1113a21f7aae317d686115ee111aac4875ec1649ca309d08061446117fe836228841494c614dae61392c4a004c4bd7866459ce346a88426f64961f0ad209aa6168a6889fe8e8d1698243f7ae1c1928afa7ae1493cc2c5f065fdd0cf178e41181422a20aaa17aa4622fe473ed6cf17e10fff668117b0e8200008a9bc2a14924a2452216e78ea6d56a88478464042c113428128ecc00fd6400d00a10d9ac008aae00dea605664200438c00470c70248e0088600073ac0025045771a400450e0044e00021e40971a007414890120809716e0041f202119eb0168ab79d66e7a926523518334ea6e3594a734eceeed3e6358fae01072cb103c811558a1ef746b5b5c8110dea00ab0003708611538a10e68a0bafae004d4400b5a6909d86009526009d660f40ac1147443143c0113eec011e6edd63a61d79663145471dc1c41be242410d800fe12b0e313daa087e4e00da003126c481d738306d4600fe4a00d4c666362660f0241a53801854268885261ba9c2d17a0234008248070a42fc18f62cac8bb2a267c68f1c16ae420462c176e013c1a62829408194dc18706446b7c4118dea3fe1a824754ec18f0a522f0a518b9e63109228100c481f0233ff26569eee58b040e123861a9ce8f157a26c306610dd6004476f30f04c10ee6e00eeea00d94000d9ec0ad88e02dda804fd0200832c50268200a98c0099420099080061c8755ceae793e850480e004e4e29614072025e753141255b8330a4b8701e6aeb58e70b65a6bd23e72ee6aab344a43344cb27a028000a640f20e813662a1125c2df20c410b9cfe000e96600a9e000bb0200b2870120841f20c210bd6c010b020058e6006a2e09b1a0f13468f7e5c6114000f0e4e801304b0101ca110d02010e4c00f28a1100a612e518a11fce00f52a9119cc0141c6110d8e00da88b1356c61100210d02810f48400a92a009eee00d7f41154e2a1050c1404e34119ce027042114d6201016411032219d0227de9aefd824cadfc888a4a42b40482140b4a4673a02622646622404aa687126fae96bb8663cc2061a8944222e84249ea6205482166ce66742018606e461eaaf8874b1468864ac440a61a0836cd0911106411112c10fbea0519060089e800d8ef309dce038d7200a9ae036f0c099508e282ac110086110fc000dfeb4ac0542600672600632000494e009ea801002610dd2600f180110d600add040095c0004288091daae089727541a2d3d8f303d8129b582853d5d8bee9e677aea1324a127b642030b16f410eae09b862337aa451508cf0f0841105a925db0c511e0a00fa68004ac800886e008004f1014650afc4015a8b213d6000aa4202eea801318610d289008d6606171c310ec600f5c819dd6d50fea200ada4007d4c00da6e00d76a0539ba00dd28010d6a0509e20ecd2a01212610aeac00d9e490d1a2111c064661ce1437ec214d08011ec20119ccbabeea012be6f274ac84c0c9314d405395268149bc3a36a463b4e013275916240024a6a442434023fc6cf4982c4fe228041175b6c20f0f418aa66c5da0318caf625b64f4d45c2c16c014f67ec16e40315bc0fc1f20d61c6ea13f592118ea211ec0010160164dce00b76c00330e02bc4000bd2200d8ee00440a0035a600a20360d9c60074040034a4005706005eaca08d0600a4ce0047460f18c40056620053400052240911a295842c5b022e7595dc775ae07ed68cb7496e73d1f8d7aaa27d342e3233d523384c5b624cf0b09413760cd10fa4e10b0800646360d08af397281d430410b9ec0d3b2a02c44800d0e010b406009fc0013a8a36520a19ba28008c6290afc3107b060095a801098530a70c010d0600694402cdec00d32cf0934c00386200b2ee00938610d5a000a04fe410eea60113a6503d49109be20103a8111da0007d2800818e19902c10e1c3008be000a68c00d70607b4b200dfe64662c580c9a400c3ca81368a8d948816dbfe8251ee61674515f706a3cd20bc66ac4202e44a81c62a1ec2b3f5a8c163aa2238041227cc42180e118a9d1343722a26231fa6621860b8a3107958c52312168426a8f88a31a610ed860431ec17206011014e161c50002c5000dbe20079ae00b78f30872402f4ed0031ee0d098002e68e00444a02e3800098c80e64420031c00035a40764040043e0030568508bd8e040d2b2f4a40075cc0053400b45a00042e0054a2f57657eb79ee333ef133eef2ee09098000706b25838b55d110b862e104fe4880104e743958ef7ce0e009de000edca00ef258070a41108ec0d068409dd2e00d4cc113d4770374a00a70200a8ce0090a38adba49e8688008b0a2090c6114b480045460089c000792e0043e20042e000456250974c01036a003aec70904e10fca220e1a010d68c07f8960068ea012dee008a620b2d86a069c600692b70c88400e36b184444110c6d80f1e4127662114586142086462a044626ef13bbe08321142c6a2c6405a842430fa603e912420d316806117cab66c2f82888d4a228ac46bb8866bf62367f0546114068b8298170044216662e3404158b9a4111a300a74f530a4c00ddc2072950002e5c00e2a75102af50e006110c438aa87531108a1fee42a411122b41148b5099aa007ca00097220ac2785042e80b4ae6e74d033721eeb020cabec0c6b912c20ec5485023200054a003050a054488b976025303c4059dbce089545ee56c374924598264d33b2279b3041b7c68538160f0e28d01126a1d678790f086112ea4007de60363689046e700800cf0b934009d4c07e9b20522a0b0d06a11208e130d240078a200934a005a48056890004cc2c07ec609366600834a0083aa1096067034ee008aa400454e00446430592000dd8207efd2010da408f49e004de91064c800d3c600940ab049060969ce002d569f51a3a14dc80112ae1491d811742c116b6d1fd3cec3b58422514268162821a2bfa3b002821a8fe6f9fceb648503a5fc4e6fc82444f07e2de42824914a2238c8a8ab836a8f8836cb8a62064fa16189c6248881114e15219211138a464ec400d9e2009728009d0e0e7e46010ec806f01c10ed6000d96ec085a20b22ae0023a00eb3c80034a600448a004789c04a6200be2ca087aa0036e30b274a5915485b176c5b016ed5574a00344009323e72f1c8008d54c030263743080ea24c758d2ce015a0b7811fbd2500334b420f2686009224f5e3ba10adae0d560ad9d50595a826b15b0200380000e84c05608019b29200b3a01072c60609fe0049cc008a2000a406008d6c09f89809ea7400516160d22e9966ee0e53ce0089e6045558001d66c430da1ab6f4907fe6840243b83023e200dd82049f9c8022ce0d03d160746600d56a053162904d6600ed62007985310188109e4c014382192d6804fdc801358bcd918c14cd408c6e7c6688c46a49ca8a4b9f67f1a826b0b083cf8a38716013946b18842ec228c01dda9e68b42ac22184e186002143e31a6e45d45c04414948617aa861768013a4e41142c01aa9ae3161cac25a80440706c3b70a4f750c1ab28e1a03be16418be11fe03e21350de0e760f30a14c184411f6a00dfee40dd0c06eb013077260044ae0045a60078c739aee806469c52a3480b174c9757249b0e74c72d253ed9607b5bc957aac47d35623008649b5a6c70760030b24ef0d3ca10f36000fbcb0b231c1fe13de275d5bc6ef4c0116d4a9151ab40e72200daac008b2e04209490aa0600894000474000aa2590aee6a04940007c4000a342004aaa00f94740a5c20e716cd08d622049e800466600674a0054480025880011a03b57667034820202d49cd3883014637031a600302f25410407f73202ff60810746041058f08a4a083d4a00c0c01141201146c01104041247ac114ba84df47211150411775514c5a624abe03153c864b4c816d79d8a8a686e17e8422dec31834738a04828adaefbe2fe2187e216a5e626bf2836c1ecc699ca68148e2a6dd86e428c1114621a6962fb8daa6853a06c1766264a5e009722009a400030981002918100a41ea1fc1e38f5309b2fe400966c0053c00203c8c0011620892214dca30b92142c409203344903841a3891b344776a4b0c0c182041428244880c0e0c1030a141030587060c14a040b58aa5c80e080cd02076a16284080c0ce033f75fae4697383964370a4f48905e790a74e9cfc1872c4a710a14ea65671e2944a95a9579804357a73c80d110b269c8458d287c30f13403a9c8033848694246c9ae4c0416486121a023de498e1a6ce090f254a0c694103c4c3140c2e3c6040d18103377b2ab8b409b38283969617588679a184081a0c662270b021890e0b4f9e7cd97002921c407fd62449e247840727a628613a65eb542a5bbb76817ae4abd7a93fbd78f1eab54b94a859b69a27f7fe65ab57b162c78af9f2b57d3c2f5fe7a38f3fb61e3dafefcdc70b2b664cbcade9bb66d1a2458a94285af9f5e21d30bccc828a2fc750971c2da29842cb2ca440b24822893002c9238f7cf2092889009288222036420927a034d28822810c72c71a3980f001061e7410c20c459481061b6aa421871d4fcce001081ddca084124648214514594881061a4aae91061a3b7c0082072db4b003135128f9c61b7fd8e1862086c8a144112898a0820534e544134c312150404c40b5f919509cb9c9134e401160139d3be1b4840a536851c409751862482798acb24a27937462a8206bbc610827a12cd1811a7ef8b1041b6cf041021122106108164e18f2061137c8d0fec2139fce50420a2414b1c30c24e0a0c4141f60d1070d338c40c41b1f68400407a50d31420b33e0c0c2080f74d004103aa8c041070b10951303d85290414b07e889c0082b3980c0b8d7aee4d2020d30d0000d8c98c2c6066c3cc104120fd0108a2276c4c1092a8ef0028c2fa1b411ca2e8c34314b2fdcf5f2c829e235d7cb2f10e6370b2fbb9c8720c2f37d27cc7ce30143602fc21c234c74bd00234c7dc508e30b300847c70b7b2b93a79f2dfae957cb27173e220a29a8dc620b72d375978b82a9cc920a299d8c823425a17c4209281a8e42092595dc31c81f8368c88925947a32e2238c28e2861d76ace1871d750c1248a67b3422881f683cb9861c6ea4fee1462182b021871337b681c6134300b146194fe46010933b70a0020d27b8842d041e30b0674e7aee896701e3669e13e6931fc080b797ef74c209249440c412221461021c86c001871c4831ce041c5834b5440568c4d2892386a8528714ac9f00021686582588a36b44da440827d445c3104ec011c50c278870410758604182084de830840e24585081072eacf1030314dce0eb081a5cf001051878e6404c20d099e74bddc2d4ed07a9d974aee4d8fac0030e5011201cc10448c0c11336b08013b022158c3801a518e12f5f3402109ff045200a718a07e502158a984531a453a0e2eca28300b245d18a469d598cc761c220067b78710bf920083de36919c8fec0a39d0ea202851513507272811c9a4567163e9bc52f7a519c53a0a214c4d9c5cf66318b8addc2144efbc429f4a30a5184e214a708457f40c1b45070a2139460c423049104640d61304c58820c4030a523a401091d40410e944002193881090561021baa800638e86d6d7f28841fd6a686398881092ed84115a6b7010b44c00116d88003b0c50092b4a926e4ca5c4d72b239ced8444f9cdb0928dd342e2cac600810d0801bfa70820de0a00a7ee8842e0fe5a8371c41076a70011602c189551c0a1358a803f1fa400215c8c0086ba02516dc0087345820058741029a3a101b235c4f0324a8c20934800529ecc00825c0001104010517e8200d6bc0421a94fe50052cb0e10de6a34049e0f7800a5c203598abd6b8764200cf0005273841000448b9130db0c43324c8414a16400107b000059d08051b0681a13998428a7fd843203e218624a4e2178fa8182450b18b0781713fbcc8c52c3c96311b8a5064c200067b80c1435f642c64164b592f8e41310161076639d40f2d4aa11f50ec8c16a848c5160fd60bec1815aa3ff4da861ac108a87d2214a2f8c423fec088119982144ea3848820d18844040212615304251ea1884660a2127e78831bc644a429ac21106ba081084a40831c180e0b7cd8431bd8803541c8010d7288141372f08423d89309e1ab000a48001208a060032288c00638000196b4c925a3cc899db855fe130280b24e356109e644790041c5520a9d30e621a290842a2c415e4f208216dec0074290ea2a951004200ec58a4ea8a17886220421c0e428430862571d9081061c90011cb0ee9d46c8411aa6300338f441051d308108385002353461082538c1aafcc0840a74c0010ff08006e2872c112ca0052e680945c5152706e0c45b2bb1dc4d86528093e089022220c002127082227860016f18451a7c600746e4605fa878c314de800531280115a100c4286ca108547c6743a1f82218274631124aa769e779197a10560c8fc9473d2f7419c97288b05de4a262451dcf7d10869fe4a4e2414a85ea7e9cb83350a05814a840052d54410a35820d4339fb831cd8d006fe393042cc7610c4dadea088475482118c0844209cd00435d0f98d455882117e500210a8a004e423c20932d0800c9c000a4e88021aca99041278a08f2df800119e80053964aa0528e0402537408210a880043430c209de67990aa4644fd552e5400faa133b0580a077d2930534a08372b24e0b558043169e80831cf4a113b4cb4216a650e12160160d3f788320b050582354a10840104116faa08428f4610a903005219c40827595c0011d98411f0421051d28e1094d90021346b0c92460c0961ee0c00230b09a12e0400323c040062aa0822fe0800121d0274de627618276cb277b8209fe0220b93bb5763530d9c00c3877ad006ca01246f84005dce0840afe8d02104d484310488087a3ddc117bf68840bbfda0b0775e785d2b90f7214969d83c18c3d1a4b19ca5e081f244fe785cdf9392f6c2153fd04bda808f3854c77718b98db22aca6a0192a4cd1b4508ce2aba3f8e1281ee108ac3f42ad9c308528b6b29541f821ce6dd8037dd150061c38ba035190ca201c318839b881107bb033a7cae007412ce2cc6a50031a96e0042ce8800223a8150d1ae3810b6880bd22a0000752206a09ac00240d48c084c7855a56be64a0696275e5c8a5a681e20402274877a10861a851254e109ee0432ca212dd252861098478421d9e706d0f186108705802ad4de0171204610934d8c0be1ffdfb8ab401754318b40ba2708424fcfee0044f2842085aa0821040a0045330820872a0831228e1303bf0400534f000977cc627310940007ac260f827fcc0aded134f10700107b8f602a7b47f07f00058d02c1620031ee0064ce0069dc0034ab0021a5008aaa066bf600b8fd00ba8f008c41046d9511f2a2354e7710cb6800919f808a4401ce7c132c9011e2a5355d8310b177256b4600a55b40b4c640ba8a021a4303130135353653438a821a1500bf9410a74f5554e640ba0c0089c500aa5800aaa700aaa100a5d84091682099cb0087ba00421f00103e10238400338a00648b0035830088ce00775200883400851603a7cc4011a90024a800459502895c0094f610762b00648a0692850021ad0fe0453e0078e50099e100a9500099030087250087ef30448f00427e00226700239c02b2ee00121001802710215601227c0012ad13fac644a9d4350e49226a2857aa0080587d0068630055840044600054940037030097d503c5860023490053a501186a005467003d8775e28207c335067ad7007400002800102b3a30215706f1d201727a0058230881a5002aea20341b00325100244503a26f006b5960452700416f0001c202e0ce00659d00008d00211e0133d815008e05a6e327f9c5100f3e72612760097540192e33fa9e53f40b0001ad0001b50043a400469100a16800649700190c0468e004181900a94b00bbe20070722202b231ebfe00bdf211e33fe431e2a390b985031e8c11e44451d34030a9c205627980a419531a8a04694f009b54044b3200aa0e0442d05202bd30bb4700abdf00981801dc1510994200778e06680b00680d0096eb0067780076e80077840089560096864754f530868d00694105596300a9e905c78306a2670046d10076a500555c0044ec0067350066a30043b80067d170852500224c00484c3043d320468300571330551b00618a13e2da00347d0021c4011ec275a16600115e5001ea05f17c01236b1496c127afae726a4447a4051131c30054bd01459700858209b339005913209ab60044530051960027dd0075240022930033fa00327500283e20352800238e002877002338005fe94080485100bd9b803e708077e80056d6404339003464004687002fd44011be0013af09d582008a3030110d001f32902e053044d40031f8006c3c2031c00022d90041bf0003c110030219079824a3c41130460a0fd18001c8004147001f6070108207f78b20004d00010500009a00362e0047e401b3a40006ee0036a6007a86095a14009c7f007a44033d9516340d71e324533b4e02fb7400a34c894e7d1942e84a306620ba690088bf508a5c05634d84154940bb4a033a7e0a44e387354940abb800a91500947c33306721ca9701c59a61fa6105534330b25a2089d8056a0000a6ce5088f70228400088d300880000870a6855511087bc0064910232e40fe044a80065e09088470077610086e70078610088109044cf02c9799047bf1048480358d60089050096e7a666bf00143f00434d00244d0021e80010fb0013e300428e0038bc70202577a3a5127b3a57f7db2003f0005a30307b12005a26604755008698005509001435008a6b2042580054670084b70041de03d4610010b7012459206c2f7065a40023a9003d293031630139c38911740013ac0011420033810119b64048640041870025850040d440423e002da6a3a52700238d0076fd004207001200007f45a018ea6391cca00183051fb482e7d222ed38a002871500560020bf56a3b911a0fb01a9a914c3ae000f6d87e0520036b50084e0209be00088afe204567f50bdf2143f55132e1613221b353c41064425432d4910a8e606513430a9470344e03088b100aa5600ace01469890085a760aa2b0524c6a20334846733057a84045b7300ba6300a569a1fc531759c10568f00098130217bc0088b206675f1056dc00889e00681000875a0066b50077740a862b08683d08450880a9d905c4e303a3ae0011ff02334b0034fb0065270078200296b100551508738800320503abe81020e61022b606f44e0021a908d187003338004f3b349e9291a0e2002a0d53e15108aedb73930814a0a5a0050800243504ec1a80544108c3f80024cd00011a018980007efa405a45301557008d7a5055160042100047ec0064ba0affe59500438d0012510b821900248c07e4350074490bb1460089ee0018b039ae0f4000ef004821005d3a29f33300314500151700217200584704e34a003537001346002daea076b8003cc42b062a04d73b290f3279008ba1225c0400ee75a3ca18f2d5101aa650134e0060ee02a0866021d9006625006a21067a6a046a1c0b2b3500a3c9532e40120fea2532793744cd41c04721e365820a7600a5fa70889f00794900872f0218fc0097f600653130773050941090a621463b3c034b6f009752b4637b80b3cfa8252588418f275a7400a62a40a53e7444ec41fa3a0086d20054fe05772d006e8b60351004f4e4004dcb90667ab0883903c75e00773e7089cf0fe088500097e79238b26078b100888f00771b0246c5036bce5046de00448308c06540565a0684be202a6ca5d2d12130966006a421305f039a1044aa9f49a08b0013ec1001e900586e0044bf0064f0007894104880b057df08b0c049ac11a0572500447107cde33916f500775a005e57a6f44a00645f006468001ba4c047c600415f03c49500255302a27200544000244102f141070a2f90465b0068280074d30031a40034a6001182005f3b41117300268d08c7cf44f14409fa8e97e094927d8d21208eb001dea1304395b037900f3434a0b20109a0c0205f03d19d0028fe50660530768100ac4d0300d430cc690d1f49132159d53322c1de46144beb045bbfef0077f800ab6f00b4dbb087fa545582656a700086d00098a80097fb0582202465cd7418fa0065fb0b3a9800aa2900876a0b445938190205670f5099ce04454f74545390a5bbc33a210469fc0c51a322262f50898c0d4418c218d10086425678120076f33077290d6b8116770e65680b0b895d0095c37083acc7572c5088280065f620769f0045280046220068aa61648205124e0066aa00108f9499cd72d3731ab08852740d1000aa0014900054db004ef956e4910cc87600823db0738a0022b20026ea00238b004f085021580016cf00a7d90049518055040035580041e00a84b00cfb7e300fe44046d60040f407c3b8002fbd60123300221407e23d004feb94bbb6b807d9cc2156c505a0728020fe00683500846400124b0064db00684300492d1011860aa9233aef8f55a004d6ce342010790c07d322eafa66035111904a6270b40c1f6050139a006a8f0044a4009bd400cb3204633250cd39153c59074e1e18144a53230c71ff99146a7500a73b0077f800673950865fb0868d0848a301bf0f3018c75d37130077660d68350063c100521b95418821cd8610bb4c0086ea00847f93462a7c49d70d559060a3c9a654b4c0a53b8a69840098ef02121120828025726e2e4749a088dc009a4b0c77016367296086a76d36f7d116da00684a31068f0066520a262c6066e800421e0013370044d60976ef0076e10054de0fe2b75d00673f0048c3103ef131313d6008f7d3907653940602919504e5a00118750078d8e4bab4008874004a683da4c508ba42d910f003d457001a5590216e039895e073b300219805f93c101386001d9383f209001ddd5233b00021830021c8001d0a2026d30031ce00151c009b1290304db015cc8014640034ee0c81d000773e0047f900652f0011fd001193003190001ffe6dbedd76a36813e92d3ba438170f3a3134181131495b19fec001820619d2402a5b0061620075f5a0a8020922a993115ad92c6b01e2b690cc470822554458f20261b2e07748802dd3c7e4ee008564002fc590214958d16700271b0086920023220031820034ca0064a100434fea00672e0c75fd05689c00972f00595300a4699e58f40d78fa0c464f4759c006767d40870053675c53419050a72ed083dec08a890099fc008760a67720d085fd6086e960873b0067f009eb989351462857be008a1d0b77485867e601b7310e648c0044780045fc0043380065f2003c1e5e923800332400432b049f5fc01db676c1e70024ca004282039fdd812aa040102100016d08c2a6004ba22086a309cda57044cf00319d00134103759a01727507e1a406c27702cd9130220b0030f80013482054be01218000282b00440f0074be00020b002f54624dc54020f00026aee2321d0011ae01bceb6013aa00317200758d0011500011910a16a78037b1005fe69d3d7d7d37fd4fe230ce0db19302e2b9160ee73cf85fed89c941a32314aa88970ac65000b200453c00275c00baad006bb900994400bf4511fecb1ef2a196405a21f1d640a824069764a096d20aac2f7f80001420c114126dce069a18142860714beb40162214307060c88f43801e48183132d780c99128814254689ec802ac58891a3428916290a25ea542852a242dd24558a542850a1388912f5e9d3a347a27696024594d1234a8f02297af4a9d1a34a8ea832fa23c6cd1a2951a288a141a3cd9e4098182d92d3e609060f2d3e6410d1824691161d3054f0f00183830b152874d04184088d0e0efefa488345ca942544861c21c1e04005081a3a2c3860fee1048b0e413a2060007ac106071b389cc862c44d1d0e2248d090d2070b912286b09c4871c4d012121e86089601448b13436b88ccc082a5439f4e2486aca1e140479a2255465c48f2c4531d1d293ad529711d810f3e53b018928245909f408e9678b06001ca08176bfc10aaf483c10637694e9cd0c18d1c0a0905954a06f9c38d2780d08001071cf8008205164000340628a0c0030a1f3ce080023c2c2044070b40a082051e108d010a3f0c6d01c90e40600107183881133f6890430c417829c6175f78f1e5185f7a1406986284f151985e7c01a6975d76a1a5113b145104902640a8c00c4ce4c0e1092270b8e00b1a40e8e0010644902288052820a13011fe3ac821842398c0d00223da40028d47f640638f39ee6084124e4049242d34d20044104540518594464921859344203105949f3809e5135092d294934f5462a411482009b591449efa031036d87844254a484da4a4495b5de4ac40d640c30d3b3a01c5113b0419e40e37da700350473801a4d82748a8c0b50c5abba0831134d8e0810ba2bdc0830a3030c18386249bf0020c1da8d0c30e4984e0041570c0218b298cf0c39043d2b02d8413a230a48f2a4ea8608327f6d04204121df0a0842170c8608675fdf82f8d214860a8001164e8288322fc80a30319e0a001081da0900882192b88e2133714aa600853b0b8e0840c2ca3e10837ca6863942a64488202fed03a0062060b0e7040083662ce01091070a801891640c86089569e7efa9556f0f0e0800512284103040a2000c40a437ca030ab2ba410010f1728a0ecad4bb8c00747d0e840093f18d905485b7804e6c7597619b298638ef4a5c8638439a6175366e9a517501a69c30f4e18c9a189323666a2050a0ceb0b8558fae9871b093a38020724fe40830d3bc498a10536d01003934494e1a79f70ec08a28d3a90986108259040620d37fe98438e2fd090230e3920610a934f4ef964505046318594a428a1e4135297c2e41149ed90e3d44618b9f4a6987252257b4842a144103c0841e3843be408e40f35bca2a10939f6f0830d31c448c38d37d6988279d6a00639feac670d5190431dbe7004293c210d6051c2072ef0001670400970e0410b36d0a2ae85886b246ac0064ce0800c64e002b1c9421d648385194c010e6f38c212eab0042cf4610a2458c3128e90832da8000e5aa8421de0c086e430211087c84005322003238c80020fd00116ca40043858c10319400105504084135ce62f7130041c4290011cb8e0049a388108343003077400027c78830e1c00011758610e7dc881443ef30024c8610e6da88494dee0c0274441403e70053ff8e10a2b68231f70a0504512a0002a68410b5b5000012844a10a1ce0075b00250a0eb182123900330c90001526d18a3b480005f2c3c11788f0887060a31cca008637b0510c71acfe631d4c3a063084d40b615c631ffa90062ffec08b5994420e7270032b94018b491c42163a60c0034010051d78600ab0e0c62becc10f6ea0a0063ce8400918888439cc01091e208197ae580478f0431ff6e8c73a1aa10441a8041080f0843d042a0a7ff843196b70444f50818a51484f7ba0e8042544810af471821289508423ac4289ef31621080781520b82788408022527f5044aa0471aa400462108b40a9475502534108620f7858c31e186107fc0dab9f8c08047b12c18635f0af092150835a4240811308210a4f3841694cf001101ca10515881104fe420326d040043c60421150b0820da8a0020f10010d4800042724700a55f0836cea8085231861fe063248c0018cc00928b8800d6fa8df1ba020833f1ca2087098c3091680c33a18421077a8031128b08035ac010935e5410e64d0000668c6016a48c21b967081199480042280c0055ac081fad1e00b5dc480561d70806c9e6b0121a0810b98808537f8ca0d8510841cfce08727b8a0118aecc736d220828775e0339350a426d8a0c857a48d019431800fb4a1487e90e30a3272100196d00f7eb422168a3cc40576e008279c2011e350e437f6a1487078831fc660122f78010c5ab423764352643268010c50a0c10f8a58843f14d90c4da8800768784209b2900945c66202dce0c7368a6087367c81074a68c212a6903417dca0097b70049fc6190d1ae84291fea4f8dd1f1251bd66f0631f94f0473baee78898d0aa2966f903518802893dc8410d89f8c31f4ab2882103e229ff04844b1e31aaa8682a148f5004f842a1924724aa105301de1e8a8c86210001084930b2189ec98636b4810d4fa841ea6440831094610d3af8cd5c3a408222a85521a1a1adce3003a30a5980421cf000084a0005232896044778c32196c0042674020e50909605742081b1ed4c055055cc14a4908421a8800f3f084e0968608213e460089e2084079af0863260a10d7ca00d0a3020410b7820b51770400896e0020f3880051ed0810a30d0010d54a0042d30011a9670390468000414c041093250020ab8400644b8832300e1072938810969fe4843197ad08671c60e147368c20ec83405135841c1b290057a0be0208e44400b0ae6472c24e0221735c00112b0063f64718557c462050ce8407c5c008527e44291faa80579f9118d59006917c738c62c8c415e7f90b71f688049133ae004481883bbcbd80149aa30032588010d35e607c0f9c10a0fa819a739f02a075cf0843b00620f6d204122b9abc85f2041094078021b26b5886128d21d7f6884f48c828a53cc6216a7404a551ee188a690dd28a618854f9a4712213f427ca130c52360ba8738e814129cc0844db01208a69cc5558fc084a4e4c00892da21c982a8152650ba06264c41092d380167cf66182018ed02158240119c4003168000032cc0fe50053ec0a0d9c24800194840049c20eb2c0ca108696c40caead009963164230cc080052020852c64010f782802094e4083358460012598010ecad0895534614e7220041c8a4081167aa0603868c1052cc080b6e880061b98d002aa0087060cba012d484215e4f0842128e7890e6280b83000b40c588002690d842838a18822386007e3de8a1d823620589d36500324a08127209e8833011418380790810a78900b61000350800b5400037091d040000ad8800650800840810d508006a080e8288332a00147c08453a0853f50055a10055ae80517049262a8855200925cd0af5e10851d39051c20824ac0822a58021148000c70824f208232900352688207fe78800fa081d1b3032698818ed1810c508171b30335603324880229f8022730021d6082df61b3a2220225182041a8044e98af7d58845018055040055ad81b1744059da0855320054c80844a80a9a45a0f34980392a2845a4984e031323720822798022268034058034260843250833938c03220a93f780afd6b1e4650043bb8033f7084e19a0a45700337600329c0833fb08303eb273b90023718351a90400cf88f0cd08113e8011d08811440010e71ae0a6880f223910a311b0410af3eb03f0fd0000e38c1296c8242e0031520012310010d41800630011160024180822ad0021a180123200413c80047208442c00210e8846760832438010c480347d082fe0e28a10c68010d5a800b280223b8100ae0801900811c208436800cce52916cb20012d08137b9001710340a8c9071a9001420012640032008c719f08024d881197083a53084f6480226f8952fc00135d0011770011c58b60da00025aa8009ba1091b1bf0ad0816494c21899c20e30380898880c10190648400fc80150440348c89e34c0a15819055e380545e8411f41855e60843dd8090d401435e8810962aa403801c26a8205c88035500139698136b03341100399648340500299048119002946b8033b30093fb803df21a94568041edb944f08444f8184a678849e308a99581e50100aa2d8944db9bb91e084471884a72814c3f303c303c544f09da710fe15456829bed31e51509e476884025209487004e4f1a83b78022930027e64ae2a0c0126288323408232301d35c002347082c1a802f5510331d001438300559bb30c301babe11a1390222480823428800d28350f0c8d0b280143db009b5c82e01b02cd100107a88016311b0b703d0b882dcd830213683f384803138080fb84001a28833aa8033498817084043f40000b68012578021c50021dd00007d080e4208228101b06f890e8ac0024a08000c0d0006000106080344882aac20c13980b1a480211100137e00331508326008454e8b241980325a8020363833910833fe00434280343208223188221a88b2b0a9b2722a1ab7a800aa8800eb8001571808dfe8080bc320086d88b12c0011208810a4888283890fe59034648855fb0055198833870c15ce8ba5d9885221c053490003b103a0ea8080be00028c082034081b97004a85b8326b0034070a72f08044ae80445b80336f0033930d4414829e4498ae81185e8210517a409534005a328055338055388094d0d0aa2a0d4ec6995566104404029a8000546584ca6e00448284c520c04274b84416029452015a2c004509d323f99833da8d58f4a8306aa4d2c6003f8598445c0a83488834068043f5002f3c082f7e8002be003ba2b8440600324f80013e8331a800236201534f83e11588852db800f308c7ee1170e88000228023ec08227e00017118e21c882754982fe2ca88c11d01683240206e5001440012cf0011330823e480220380112f880ff600343f881a39c48b600011078130ba8802430044e080441280542e8003a3d8223180c60938c18a9c055583a2d90029dbb063870822f20010d58509385b83970021c380245610345f005eeb20550a0b44a2803277802cf0b012040831018010e5d36894c02346802119042093c11268d80d8292fab8982772a8136688114c08124180138b8323750852d53044a083c39208954f8045160841048833a8082a5d38709c086a583001d40c5102004f6aa04453002350084f3d909a240054a2006e4d2074562065230055b4005afa3054d2505afd30951d0894ca58551108a4fa0fe044b79845841d55049045e3515356084ba1b155180844548387f7804378b833430403160b3957a55f8218b4278095a558a3b508444a804d66c0a4a708451758339f8a7d004456011831cc081bc5c0d3b98c53b98832748021df8c5376890266d8000988cf8eb801144910dec9006a8d226508107400e1428011158934eda802ac0022850810e78022350013c98043f88000bf0843e288355e00442908d2cb0c9b69881c6690213e0830692811b40823e30021968b60cf051115883df40023670182038820c904607110115010d0858813bc0077d585c7fb0876d9006458a82cb11177259016ef0077250307b908246485c3f400547780274881d45988345fe181d3b788240e09c6620af69d08128900832d101129804938b1d2df08bd9ba1c2d50a482222f43808d46e8803468827ae28774c0b940980351e8d65c500335100539e08446788322200435108057e8073e00387d1004f28a0506289a13708434f8004a0863059b075b404c3d14855e402e5b3805a0180a9ad8dc5350b07e982f7ee805b723055b98054a1806f2da075ed0b85e98855b40855d582897c3da7e503c4c490a55e01c7e688758f91e4aa804a00204f821c5b969034e1483365b033958834ab4dec614d5524c8337b0c42f78033948c12778823240b736fb022968a736480336108436e8d32f4802dca1012c10b33280022ccc800550026ecc00fe0a20822fd08b0020000140001ae8031d90823aa002d9ea001c7857b06d8214ea0336e04d71e683ae4a011a30c72210812388853e00bf0bb8dfd1a081846903d9c81a04780012d88114608237400120a0011a7a0346200236f0049aec0b088838b3b98034180436c0077fa08171ea8725780545c2020a701019a9800980857f680617e307526815bef3cb3f685c7ef80435680435780237400231c8e94ca8317fd802c9ba000cc08027e804455a8500800228b09a6c4a00080800300eb809202f58788023788208c0011f98057ce00758f0847e48843618044128ce13c0512c98034738012410c70d000094a5023e40af2b50a465a8805ef30334f8804220feb959f8845f109452088a48e56445c2865e982f7020e55d2065519065652005f2d287b123459268831adb0754b80645ba859b90cc53b0055b28397e408544680442588334b083a530627f8085d0a504ac6b4c4ce1044ce9044b688ae2b528a012445485844e503c977084f81904359002fb30454628043418432688834568273ff883e162022460827f61834d8c832f702e10e81812a00019f01607e000cde080b4311b01080003d8c808d001136840267090650b022c68021af00151888524200d17e10085008122c0844e488222008287818002304a0818021d98012780d3bea8001300829b9ca32268022330021a500226206789560243a882de400023fed8810788800dc88127e80094e58743b8827ed08435c05a6250800961000830801f20077bc207cec187e44883c27c8344c8b97ea0064ed04f34f8823458847ce0877f70a47d18861398ac33098434e00328b627554001dc93500e20017a48876d78063e188716d6020d9091084883508004f8ea872648023518843500962b6c811f58840cc06bcc10800968066d700505d0845518004d688666c8077531023960802818146748747c308652f03ae2458991d00572c0077c6086a4a8ee44608a2bcb0463c0877a20075fd0c34c1d8546d01451a0f559c8045dd0855c4890ee21c54f18065d30866260144b2015d3dc0335a876519831c96c9e41180bb6d31efe52a412d3b40a46b0d93a0804e10143f82914390045e0011e39281d34408338f88342a8d6f538d44008cc27d00120d8361d78821fd0801360832f60822f00021f200d7f990336080205548313d082094880b4a12129a882088891ad2980ffb0005322009078d22430810bc0810d20000da4b40838002160f812604a38382d0f10211a6801379884d988822698812638011c804710808336300222b0b93780836b2b800c4801c3800066d9800018800150800dd0f206308006d0022828d910598006405811f59fe6f403e3285012d0292038b13d388158333020188166818bc9b29a8d200136c0013480800d98820ba8bf098191f3350003b00b2828820ef4fe8b0f680220a83a7e90be3278834790032951831f80002198acef4b00cc487b0348808de89005e0812a4c0009689fa7b4054630013b605146f8823520855e00121fe1855238854840cc52c80560f87660e085bb19febce1053da4c1855a925f6085488dd454100592102ebfacee46f8c44618d6c1d31e4c813b5418894baf833b90021f67049ae804714b0335588332f8cd4280d13b180446f865450008428c060d5a23a58da03f6ad0b8f9d346cd9e4a8602d571d3468e1b1d3d3a64a001048d18192ca078a0d0a101ca050b36a08010a20a9c241d2040681061010214240e3c806060c181a027f828118182c0891c224ec85881804206133b343cb8b061fe8305074754a0085248951b0d2534aca9f2a0c2133814a0a83982d3c203071b44b0e994e403050b34dc143a42244494372a3c944103e4020306080e4818a201028302051c3840b018c1821562d838c15269861b5481023da1d0c6cf132784d0bc0964e4071c0e6a929c2db20482870a38298f60536407880e3d188830410141019e0c1c2c483002320207101640250245041126524ef8a9f427090a407f447438c173b1649c41091c007a2081ca030e1a2c2f6141f1831365e07007362b111b8bd832cb2380f881c81e7690620b2db4a042cb2ebbf8d2cb2ca840a24a8412de820a2aa99c62ca2cbff8e24b85ac9042c928a474e208270ea2720a2b1da202feca239528c2d01e6d0422c71c103d8249289c64224a288b0cb248227f60f249279f5062881d729cb6c8228cdcd1065f8c3c32d01a4944d1468f445490c10734c081a42082ec81061b4c886081073470401f0345dc21882185cc1685092294d0010740e010d75c0214f04009451872820626b407020d2a105105041b2cb184274b788001764f60b102030d244081079059c0501634544043111a5090820e53486184112a58402a0740b5208207951d40430e1e3c40031372c05107101d684002111900d104091e4c71020689e11419032a3170c072052cf000034b0c91c11383d8f5461b27948046ba34e0b0060d52ecb184121b38610404208800c203437cfe61d901053010050d32d4d10005073ca5f0a8dc5290dc743405fc804a479410174d45886148095a9812c809f7059c8006c949160001040420d9620aa79c9c65386d009a122acc50071a7250c20924683831c829a930424a2aa6a432cb2948f332e284bef062a129b4cc82b42dbeec424ad2b6a032f529a374c8602aa9a0420ad99450f247147f8462ca279880c2c828ac80d2c9dc946cc948258edc61471b7f68196422942832871c55c4b1c7680eedc1861c8e2c92461573bcc1e34573ecb887216a2821c30c153860c2135048d1841a6ea4e1c4116da93096072df8e0030a2754b001134c40714211651cf104000018800210821ca283085060118b0a20fe307a01119a08e2a665223051041055144181030cac20c82a98a0b000107018b184061a181105104f18b28404660cc14109d97ecb5c09690c3142083bd0008105211c9184052270823af8a0081b28400e4e400414344007116840064eb000c5284c612d4380053a50811c6860067388820e3c40828c44800380a84321084183fd64e0004d60c4b624a0060f308002ee214007908082037c81030ce8c00208e0ad0a060028bb410001be8513043ce038d13980086810011a30a20d15c01e7b841894f51c408828dba2652e6319e65000094aa00005a620862138c10925884220d21688413c82469048c4294e410a5a9c4215a818d0274421b55dcc024213eafe502a78a148426e2d1564fbc4274c01384c900292a8d8c580ae568951a442149c00859340118a507c82148fd852233c0909473422108960042702c1b739f8c10d807004231c91083b180212a0e04481d66007d3f92110b01483077010290e98c0074fd8831cd6908625f8800627d0810b4c50843914220a4ba8c3920837072680c0044028031bcc8086035420001b9082215cb1041c60210217d066093ca0010e3ce104d75483114a40822198a0814d308206a2d0092d9860064e30441ffc80050e60af3d0b900e1022e0800b9cc00320d081f294d007414881044d4843139cc0060d38c0034980c2114230820604c0012358400610250313c8e0093aa821feb7801246068c200838b040023990061cec00079222821266a0042cac21148468821c3680010a2442024141000d50b001c57cc05bd8a3400b4e40a72d6a316002db166614f6836f15a0010fb0a04a10708227d010399211621685881c8075915b05588c112ff0011db8410d4b184423d6d0843411e10b4c9803241461074adc8106a1a0d12978718c42eea217be3806318ae10b60f8426b9410449218218aa04d6817b9b0452e08998a5fd86217a9e8052b4c54094a0812146c6b442328c1a22dc9e10d8270e5233841894670c211c6dc121d3fc14a4128e20f6e90021aa4f9053fcca60e08f9c31c6c89113124e1094df0c31a98a08322ac4e054138c210fe2e30021a44210a6c8842085050824ae9e0040cbc68053a20830c48c701094840ef0210009464000e58a8c2148850022c74220bcc0cf0726800853410220b4158823f5530043874020b29c8c0062c3c83231ca10e4f28410518f0800830400b6bd800075460840588a012a6d8c31b9a70021ab480c1d299c9064030ab193c21084bfe28119e4005f8308006259820c0b6459d07202003192002096680853a1cc10f49f0c32090f08442ac610881c04411d69003dd7cc001150c810e128058c970eb01b76a007bc0f8d7c3824b251705c22938f0801024c1081dcd490a1d60c39709b600894e34a115f32d3123a0010b8040052a2002072ca1107d1bc4283afed1494728a1069d9845285261892734e214bdcd452fae968a5ddc6216a31045d556eb8b6000a317a830c5d83e91dcb57da214b4e8ad2d3ec4203d9aa26c8910842314d1063bf8010d6a588396b664074604e2119fe04423a29bcb532662228ca00424dcad5c7825c17083d8c31ee6e00433a8410d7650031b8669ba3754a1097f288312ec30072cb021356910c3090c0063074c5a8367f64322d6100528e08b6544de40090ca0823aa0a088b7d3c224a620082c8040094bd8400b36800015f4a1138b4254115600815971000b98f0041cfecbf10a5ce0011ca8800774c0874ea8a10c54f0c110b0a08421540113a930c41092e089f5e9405c81d042c03890fe661a9340d314e0c012181002156440c7194c021086651c147c00031e98c1062ea08332bca1087b70c213e6208a153c811346a0411da0500023c05561c969c080870a30c940e0ab9221b4a785e8e980a5ac3d284b4fc010500120a00001db127d172d53fa9515d6a2c961a9c226c8801f1061036970c41f74f00636ec410a9df06327eec00909ed42b4c678be318a410c5f6ccd16bf00868498c60ba4cd6242a2f8441f77510cd69a76177aec842854410a4c40e2137d9bad294ab1b6a91dbb14a550852a46490946306294a3cce58ed88113084223fc9b1f1453210c82213c82d96817ffb901e3fc81204809eaa8c117e400133c4112a4412dad811bb841fe14484112040111a4cf1af88c18a4461310411da4011338011254811c98411190400830011b884100ac801f68c10f90400a48000a7000131c02169c806530008381000894800c68010a404115400110d0800e40c610184f23bc811628410e40400178c0119c5413f48111740016688713e800055c88209c804964800a140111b4401434c1eec08185ad4b27100211188102880076c40a01204042591a0f3480ea3dc003cc800b5c400780d005b8c008a44012e8401a50950e401e13f8131694c0019c800a6cc009105a090c0104548607389a5b3d4562a0c7e7b915a76dcba215c0e9a98c84a98c174998201a4003e41ee9b5952d26070534da04cd8e0a9cfe4012884013a4c00578801218422814c32f189231b0966a8d4834188332445f317c63f4cd8225384229d4962db0d6d4f88230b01629b08829e4562a804223e412274052fa11122b148d2880822a7c88298cc2ce50422770c2f17d48fe85022a94c228fcd228ed232784429340c2e5c8c11e2c821c144222cc011bb0411bb0c91f20ce2334421b28411300c1115441ed94a4095c0005004f1904c21cc081463e0113e0000e3c8101314115e4cce47cc112a45313a80004a0401138411ff00116f0c10a248005348010a040015c400658000850c002b51416148103a800166c800e54411dd4410914800ac081c3f50116688005e84016b8c12408021cacc11bfe94581ae01907a0011c54411a2c19e4cc44036cc002148001040004181a0990800c94401294801834415e14c1095c4099b9801314c21da89d0b50c00590401d10010ddc41324a41cd48c10a44c12034010738400bacc11d3800784840de5dd41889da02dcc7614586a7250705b955178d5ec01c402eaaccc94898001427714a582e4a980118c00140c122dc25203c010824c0ca28c07cf01808540007680008f44004200a53350087750220c8c11f404229389f31f8c237b6672f484d2ef0427b3e1f3100832204c227c4e788b0d62f00d725f1427f22cd87a0c267651b2b8c82257402faa1020356c22374c28c3ce42731021bb8c011089320300272c901fe87a6c1130001102c990c2001e3b081200c821dd8c11d60c41a9ce81c75971cd0e44562827439827229821fecc147f2411fcc411aa4011be0c1d6a5011a40010d884006604662b0803ec9c01174e210548005a8400008808451670390000710010714d64a884013312309b48a09644011dc070560400678cb06648007a8c014d0ce12509c1664850798001c68814635000abc4625480164604fa904c57280da615147651c160478e6545a406a3e0008408120ac4109e04006a0c11294c00c9c40909a940720811d644111f401012c01214c41be20c01ffc4000a8c10f10808e6911c0142212c5e27aac0ccca04cca04670000272ea24c951e27720aab00e8fee2ae06cc0204a72d264004b44009d0c00ce8001080a90720801800c10228231648e3fc95166f91828d60c22c00c331b4273000c32d0c886b6dc96795822dbceb2efcc2bb818228745ff301682fdc422f04dbd6ccc2d110a8832a572bb1482510a4233c68b7cd022984822afc4120fc418ac29921686822b008277082217c428d704225300201fa411c34c4c30a4221f84d258c640a54c003984008140c105801c0e5c003fc0e0aa04008e4403f21801160c113bc4115c1e10778c013a4c11a9cc0d32140146d80091081d12ec114600111900f034cc10f789a04dc040270809f74000870800f24860b604112f4c12418c214948003780a11e80009800011fef8c1214cc10560810e884a4b61004e3400047cc0334e876524c77a845eca648baea2800a2c910dbd9d038080133441123cdd0900c11a20810640c11b24c10fe4c00e2c810ea8c00e6c000908421d50c61b4881050445afde555c01ee05055100200760d5aaa70d6bcafc6aed2267ca1827ca14a7955ae9b022a72dda6ee995510b24580bcc001394400279c0091c411a0802b96142f6615ff61103378e1f269d4826f882314c9f30d4e76a01036f8d0224d423269482af79082a8c4274e15b217002298c4d2790026f8102d99c9222c052279842231c6cbc7d52ae9d48be95c2fe69ec295102261017269c1220acc111e880bc70a01ffcc147da01c4929bfe1dbc0134f1482134821f380114ac41023b44e894c11a9280668a00101401f04861c1c5c11c9441492e441954c146020100108009ac591f4c81d762011648c1121c82065047ca20c7a86d004d9510056cc0599480f8e48a0a5c07e89e001214c27530d49bd4a603f46a7b3c40e8319a572686a86d110758c01291d9016c001688c1076c800688401524410efc854d0181139800240c4221f8c14ffa701f18820a880012400104c0410e60461b34c10a308157b5cc30cac05d1d167a0423e0b60702e4a22d7a312e66d12dfed5aee22e7be86ae8e16af678da537480a65dc005ccce132c8420e08107ae411d90c11348c11ac0811c6809fa4a08302044f495feabf51a8330a08222a0e731782389f05128644229cc0280ae96bcce41459eefd2a42bb4890dc3aa8228401b81768272d5c117b0417509a4d9dc0109408129f0c2407e8296f8cdbb3d2c23e4af021a9c81fc811f54179530022468e83cb2d21db001bccc000d60c1680c821c1c010900411430c117bc011ad0c013ccc003ac70111074f5ecc1138855046c405e28004a2840cbf56a03bc4e057c5327c084147ce27e8900050c1d052400fcb469072c0126c081ed140152ae011444c74695800e94c011f40121bc81127840538a40f9f0044b6dcb2b32c0117000121780f2f8895a01670150c00a3c400b41001360090e448005ec0016c0d91da041125c2812fee8401d2cc1078c8004a8000704c003a0c013d8810a3040009cd49cdc555bfd661175d1ca2011e9016372e6a6ae0216a70d36b26e91112986eb2d874a54800674c0587440313e400784000954f6a6d45c1344c1730d0220f4df23384228f4dff641f38172082974b328e482d3b4d62cec023014c3be9e96309cd688f40230d8022558c29328c2221c2c26a082c6f21f2eeddf79560226ccafd1e891d6fc118c34828a56511a50f344288223404295384225a0811444c11a480edf986721f433bc459312f0412054093031c9293d02952c09282c7020ec4174950241422423d8414aed811b30010d34011a18811470a9443bc11044400018400424a3284e81fe0f9f801158800f60421f40800934411160c114308005684013301464e04e05989aaf98847c9c00142862b618011bd0c01288151338055024800ec4f1a9594009b44c7bfc9003b0875fa1cc1c1c020724c006104012b8810f21c1013480031801145800b3a800c79d8018a0c00cec81194200723480123c81b7e8c611d0406527eb2f1ac0627c51ea49589187b28405efaf0e23602576e9119a12e99ea6a51a2b4385071881b97ce0d639c1e670a74739f00db88007dc40104849bbc94120a80223ec729134426de31621edebb99e6b2f688d29d02b2ff4c2a8f382beeea76f4f487f8e4869598dd6d08229c4ba25dc811bdcc11a64811228417b09c24342fe1b1f65f38bb87690d84d27f8df28a4f60152b02388422704c279bd8118ec81200c5f8e56c9bbd1f72288c223ec88782b810b808005a8a90e4441261a810c68e6610e01083058d189c006f80120a0010514a513d40eeac8c01aac49112880a148b90a544115f4d3544210ad78c00630070188c0149c5a6510c00aa000192fc013f8c00920290ad0c01400810a30d14c2c00f3eeace9aac113d013a82006654075d52a06ea1100ff740003f0ed0fc469a85476693c8007e893959b8003e34011e04014f081141c0a7240c01a2c4194d77806b8074da80c50ac8c2e16800090d9c90ce75ff9eaed128095b22eeb3611249abc9496000818810e2041893d0221fe088229b0c220984e12ac411b8c000680c00d80140decc01060130da8419a50c2285dac2870528418cdd2e0d6d4945631aca3d5f4c22ffc42699d2b7bb616db90c28864d2a89bd62cdc1634830dac7fdf2724c21d104e792a77e7ff011b2cc41a2cc29db9db228c82298882b64742bed5232778d223e45b3f7f822a3c82c3e2122010e07648341c48c1142c81cd3c811bd4c11bfc4121c84112a0131bcc011fec411c54010d98d4e1fcc1439b01131094095006a99080511441155841105c00c7f58ecae8050a44805388355368c1148ca9025d0007644102400005a4f862d262a25900014807402c700001c102830c2078f010a2c5091358042940c08122fe0a061c1e34b090818185060c0e14e0e02081050a0810d06053a4400113090a12d8a083410b14223a1972734281030d0e0e30605000c10107140258e000c44180061b0810281080c08190559116a8d03240cbaa538b12258aa025039408403a60b0e082870e235c68a08043878b165214991a2468949d50945251ea2ba78e9f44533cb470c1c4c588194794f06812a58aa246a21e317ac4499429529d51ede2b5cb572f5ec580f1e2557a352fd3b668ed329d6b16ecd0bb76a13a658b952246a406b549836551a8508f44fdfa65abf62e5ba866b16245ca932955a45079aa34e84e1a3977fe0462f4e74e1b3672200d0af467d0a044901c190f143f94a950fe9c283102143e919b36720429a4114706b1438d28d4d8a310f11cf923bc420411641139dc4823091450586183074c88028a278e086105872cd8000820ac50230e392280802a024cd84004084828c210418060e3908d0e20a1800368d86001020220a104a016b080062328386081023c72202cb2baaa8006295658608f4eaa186283043a782210424ea000038e38486285001ec8c187063c9821050b20b0c00110b22c08250716a860a0161c18c28f1bdb70a081a90230e8c7a01e986a03085a4260ab1fc93a80c8ae30c060c8a82e0dc0d30084b21401079064a0820e2e7840830e1e28410737661841030eb018a48422d6b08393bf3aa144bc547c31c596fe530651049040ec90228a1aa4e881861b7888c28d3908f1e30f471e798412c150f10c155a66099797e67801a617d27649c5164a1e31259773cf3d8594536629c5945466892d975bf0adcd165b724165de4a1a018410f440f984144b2821a51246ec10249041e4688311469c30638f4f4a112515cf76ad441142b4d0828f400471038f081561c30f37d0b8230aef1291783d3be490638e3dfe10e40f3fecb0e30e35c488e2092cb040038d39d810c3092c9af8828f4266b0b2104a1661648d1a88c801080f5450c208249620e2070500102000abaa88e5902d0e40a18a2a7c58c2820b5e040205021cd84182210f58fba9051ad080048362220001083240b5fe820d2870e08105ac6a80540a3850420e233620b501123a685c2d1388b0e0010e36e8680410265fa1848e1aaa620514d4126106259c701229a9102000244b0b70202a4b89b4f4d3e33da52003013af5942b022e58e0810b527d60840e40a0e088349450088d3604318486149020428e28887062104a3e31651746fc606457dc500945944a1ef9649035c458230a1e72800425b0c10e6fb0832228d18846fc2111a190d72c7e819b72a9c617c028c6058561ae7ff5c25cb9108d6b76012e4a84a27de122052884450b7a99825eb3f8962946480a17ee6616a140c52828d10946888214a600052844018a1176627d3daccf2720b1ab42f4e1107d20842220c1fe0839bc0140d9a298c536730739f8c1118dc8d6231c51893bb8210a4948c31392c004221cc1094f438313c4a0b428a0c17f5f5001086450041d90a0055050031bf6e004127820094538c1920090364f55a0010b0002263a71882900c10724a8c21256c080126ca02b04800005a40701b34cc52b0c48c1a10e30aa05a044714241c0460a40800ae4807b17a8800634403a0a9c846f402948477490840388c0094358830e348080d96da555192804149cc0a42248e000d9eb5d573ec53c525e2a965789ca8b38753c447d0a2d569948073cd0180e64400323a08005a220883a9460044970831dfcb00625b8610a69800316cec38850fcc1149f1004231a118afed5cc4214c6f9842278e68842e0b30d6b1044222a510a946906148f80c42866b18b5390e65cab1186304ae30b95561018be08612a1461b1eb90227fa7a85f4d43d1884480113fa3981024b0630a5358e213c78204284e488935bcc138a3000524bcd85048fc670f8f70a0754af1896c3142137ce8031ff840888b316210f26b84220a713141e033106d95c31ae6f0b39eed416765284315caa08639a4b5107f60030d4e80a232f06cac37aa031ad81885230c21033470821ada10050d844005091000000ce029016c000e7d300226a4408422c001054cf8c10ab05082048c050253a8835504d2120d1004714ebaa60222e024a92c602d2689c014dc40883afe70e09310680008ce4681b55cc0082880800666c001109c400527484216ba52820864c10f3880c3142800841f98a0092468c035a942a7aeac3696dd9c0ae5187029a9c4f29b5659dbf140629007dce00675690c0846b0031c94e006502084126e200527f8e10e6840821b04f10434a881108068182554f10b52300214a1f845317ad18b8ecab0179568432538a1409d0a3414a068047e3abcab53d8475da209e94a53038c96ae8616f30a172d7c78c247fca113c3aadf277ee14254349433f302c5c3ee19083770021452488284fe400a9a26e213a710852804a6654aa050cba27084b12446898815420b86e04420b4f5094be08f116d6544221c4109481cfe87135ac58cb1e4b087440482af7b58c41edab0041300c1098630841d8e693a5371c8073ec80087486081d2a6410522d034a351e0034d6c21b3119041230fa98327a820021ca88008aa8005c80525030b08004a14c5a60c58c0530630420478db3b0234a001546140083660df0da480013468020d28a08183a00402206040027660010664e00895aac010746004227040056dc8420380600402c8400332d8c00632408413542551087851001290d9f97e9348100809298f77292781d3950fa8001a68509711dcc0053a68010d9230041a9c310947a802ee949004369c510ec92245ba00910854d8a257948060057df1085088f40e7e68c42738a18841ccc1fe0e021d85b6f2d761e87c8b5eb2194d695aead210ab745ca8d00d2928610a5e30e716a6988529a003f5599ccb392c04576d66910aad6bd986f6b9a1d149d1ab518ca213e1b3431ddc20062398e0044e3034b642e10846406211f089e2232636d63863a2118cf04d23ca8af38b6dab8b80b8431d822688bd1cac0e5320c213f630084724b1118a77332720018986c23c105af003264a510a3ff8c8b82240c10138a083de39e00d5a40c1104ec08121282000107892a8acc215fa7aaa2899cd37042075bc0aac322406e1c30a7e548004c8c8094b901c05ce9b803a1120f6b1dc40280c61045a41780a1a10c1090ed0aa27a1c52c078800185070cd54ae456df1c753db37bd1270e751a5fd4422520128f01606a0e10933d881128800076ee0e194400972e069940009d2a00edac00db2c00dfa207c1c211016811520c6147a4ce528013a6c81174e8184564888fc2e7e1461a75241375c485df625a476215f3ad039569016540a375a70176e615caece16a8ee5cc2e505696114a023a44e4185fee5146c6a08676cc946618178063d1a0a14b08562de80110a6a841ca8132ac10e5c2f07a00012f263ee0644e6d2aaef1ae10be54e1102610f106ad0fea00dda000dd200902e6611b22510e6800900cb04d82e078aa008a6e0078e645428e04850000b8ce00138e4043a80721600de0202003b');
+ERROR 54002: A string constant starting with 'X'4749463837617201db01f70000000900001d00001500141a0a00220000&' is too long.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug4356.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug4356.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+Creating tables...done.
+T1 contents:
+Second row should have a b value of 0
+1 1
+2 0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5052rts.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5052rts.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,7 @@
+Test RunTime Statistics starting
+1
+2
+1
+2
+2
+Test RunTimeStatistics finished successfully

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5054.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/bug5054.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+Creating tables...done.
+cursor name is aBc
+T1 contents:
+First row should have a b value of 11
+1 11
+2 2

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+
+<project default="FTmaster" basedir=".">
+
+<!-- Set Properties -->
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties"/>
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+
+<!-- Targets -->
+  <target name="FTmaster" depends="copyfiles"/>
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/master">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/master"/>
+    </copy>
+  </target>
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/case.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/case.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,26 @@
+ij> --
+-- this test is for keyword case insensitivity
+--
+-- Try some of the keywords with mixed case. Don't do all of the keywords, as
+-- that would be overkill (either that, or I'm too lazy).
+cReAtE tAbLe T (x InT);
+0 rows inserted/updated/deleted
+ij> CrEaTe TaBlE s (X iNt);
+0 rows inserted/updated/deleted
+ij> iNsErT iNtO t VaLuEs (1);
+1 row inserted/updated/deleted
+ij> InSeRt InTo S vAlUeS (2);
+1 row inserted/updated/deleted
+ij> sElEcT * fRoM t;
+X          
+-----------
+1          
+ij> SeLeCt * FrOm s;
+X          
+-----------
+2          
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cast.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1591 @@
+ij> -- tests for cast expressions
+-- refer to casting.java for a complete analysis on casting
+--==================================
+--
+-- simple test cases
+--
+--==================================
+-- shrink/grow bit and char
+-- no exceptions should be raised.
+-- once we have warnings we'll expect
+-- a warning when shrinking non space/zeros
+-- shrink
+values (cast ('hell' as char(2)));
+1   
+----
+he  
+ij> values (cast ('hell' as varchar(2)));
+1   
+----
+he  
+ij> -- shrink, whitespace only
+values (cast ('he  ' as char(2)));
+1   
+----
+he  
+ij> -- expand, check lengths
+values (cast ('hell' as char(20)));
+1                   
+--------------------
+hell                
+ij> values (cast ('hell' as varchar(20)));
+1                   
+--------------------
+hell                
+ij> values length(cast ('hell' as char(20)));
+1          
+-----------
+20         
+ij> values length(cast ('hell' as varchar(20)));
+1          
+-----------
+4          
+ij> ----------------
+--char->bit data
+----------------
+-- shrink
+values (cast (X'1111' as char(1) for bit data));
+1   
+----
+11  
+ij> -- shrink, zero only
+values (cast (X'1100' as char(1) for bit data));
+1   
+----
+11  
+ij> -- expand
+values (cast (X'1111' as char(2) for bit data));
+1   
+----
+1111
+ij> -- w/o format
+-- DB2 UDB PASS
+-- DB2 CS FAIL
+values (cast ('1234' as char(2) for bit data));
+ERROR 42846: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+ij> -- extra tests for shrinking parts of bits
+values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'00111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'00111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00011111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'00111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00011111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00001111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'00111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00011111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00001111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00000111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'00111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00011111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00001111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00000111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00000011' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'11111111' as char(1) for bit data);
+1   
+----
+11  
+ij> values cast (X'01111111' as char(1) for bit data);
+1   
+----
+01  
+ij> values cast (X'00111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00011111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00001111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00000111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00000011' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'00000001' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'0011111111111111' as char(1) for bit data);
+1   
+----
+00  
+ij> values cast (X'1111111100111111' as char(2) for bit data);
+1   
+----
+1111
+ij> ---------
+--numbers
+---------
+values (cast (1.1 as int));
+1          
+-----------
+1          
+ij> values (cast (1.1 as smallint));
+1     
+------
+1     
+ij> values (cast (1.1 as bigint));
+1                   
+--------------------
+1                   
+ij> values (cast (1.1 as double precision));
+1                     
+----------------------
+1.1                   
+ij> values (cast (1.1 as numeric(2,1)));
+1    
+-----
+1.1  
+ij> values (cast (1.1 as decimal(2,1)));
+1    
+-----
+1.1  
+ij> values (cast (1.1 as numeric(2,0)));
+1   
+----
+1   
+ij> values (cast (1.1 as decimal(2,0)));
+1   
+----
+1   
+ij> values (cast (1.1 as float));
+1                     
+----------------------
+1.1                   
+ij> values (cast (1.1 as real));
+1            
+-------------
+1.1          
+ij> values (cast (1.9 as int));
+1          
+-----------
+1          
+ij> values (cast (1.9 as smallint));
+1     
+------
+1     
+ij> values (cast (1.9 as bigint));
+1                   
+--------------------
+1                   
+ij> values (cast (1.9 as double precision));
+1                     
+----------------------
+1.9                   
+ij> values (cast (1.9 as numeric(2,1)));
+1    
+-----
+1.9  
+ij> values (cast (1.9 as decimal(2,1)));
+1    
+-----
+1.9  
+ij> values (cast (1.9 as numeric(2,0)));
+1   
+----
+1   
+ij> values (cast (1.9 as decimal(2,0)));
+1   
+----
+1   
+ij> values (cast (1.9 as float));
+1                     
+----------------------
+1.9                   
+ij> values (cast (1.9 as real));
+1            
+-------------
+1.9          
+ij> -- bug 4352,4358 loss of precision on casts
+--   9223372036854775807 is Long::MAX_VALUE
+values (
+  9223372036854775807,
+  cast (9223372036854775807 as DECIMAL(24,1)),
+  cast (
+  cast (9223372036854775807 as DECIMAL(24,1)) as BIGINT)
+  );
+1                   |2                          |3                   
+---------------------------------------------------------------------
+9223372036854775807 |9223372036854775807.0      |9223372036854775807 
+ij> values (
+  cast ('9223372036854775807' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775807' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+9223372036854775807.0      |9223372036854775807 
+ij> values (
+  cast ('9223372036854775806' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775806' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+9223372036854775806.0      |9223372036854775806 
+ij> -- only this should fail
+values (
+  cast ('9223372036854775808' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775808' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> values (
+  cast ('9223372036854775807.9' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775807.9' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+9223372036854775807.9      |9223372036854775807 
+ij> --   -9223372036854775808 is Long::MIN_VALUE
+values (
+  cast ('-9223372036854775808' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775808' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+-9223372036854775808.0     |-9223372036854775808
+ij> values (
+  cast ('-9223372036854775807' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775807' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+-9223372036854775807.0     |-9223372036854775807
+ij> -- only this should fail
+values (
+  cast ('-9223372036854775809' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775809' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> values (
+  cast ('-9223372036854775808.9' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775808.9' as DECIMAL(24,1)) as BIGINT)
+  );
+1                          |2                   
+------------------------------------------------
+-9223372036854775808.9     |-9223372036854775808
+ij> values (
+  cast ('32767' as DECIMAL(24,1)),
+  cast (cast ('32767' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+32767.0                    |32767 
+ij> values (
+  cast ('32766' as DECIMAL(24,1)),
+  cast (cast ('32766' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+32766.0                    |32766 
+ij> values (
+  cast ('32768' as DECIMAL(24,1)),
+  cast (cast ('32768' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- only this should fail
+values (
+  cast ('32767.9' as DECIMAL(24,1)),
+  cast (cast ('32767.9' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+32767.9                    |32767 
+ij> values (
+  cast ('-32768' as DECIMAL(24,1)),
+  cast (cast ('-32768' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+-32768.0                   |-32768
+ij> values (
+  cast ('-32767' as DECIMAL(24,1)),
+  cast (cast ('-32767' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+-32767.0                   |-32767
+ij> -- only this should fail
+values (
+  cast ('-32769' as DECIMAL(24,1)),
+  cast (cast ('-32769' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> values (
+  cast ('-32768.9' as DECIMAL(24,1)),
+  cast (cast ('-32768.9' as DECIMAL(24,1)) as SMALLINT)
+  );
+1                          |2     
+----------------------------------
+-32768.9                   |-32768
+ij> values (
+  cast ('2147483647' as DECIMAL(24,1)),
+  cast (cast ('2147483647' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+2147483647.0               |2147483647 
+ij> values (
+  cast ('2147483646' as DECIMAL(24,1)),
+  cast (cast ('2147483646' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+2147483646.0               |2147483646 
+ij> -- only this should fail
+values (
+  cast ('2147483648' as DECIMAL(24,1)),
+  cast (cast ('2147483648' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> values (
+  cast ('2147483647.9' as DECIMAL(24,1)),
+  cast (cast ('2147483647.9' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+2147483647.9               |2147483647 
+ij> values (
+  cast ('-2147483647' as DECIMAL(24,1)),
+  cast (cast ('-2147483647' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+-2147483647.0              |-2147483647
+ij> values (
+  cast ('-2147483646' as DECIMAL(24,1)),
+  cast (cast ('-2147483646' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+-2147483646.0              |-2147483646
+ij> -- only this should fail
+values (
+  cast ('-2147483649' as DECIMAL(24,1)),
+  cast (cast ('-2147483649' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> values (
+  cast ('-2147483648.9' as DECIMAL(24,1)),
+  cast (cast ('-2147483648.9' as DECIMAL(24,1)) as INTEGER)
+  );
+1                          |2          
+---------------------------------------
+-2147483648.9              |-2147483648
+ij> --numbers to char
+values (cast (1.1 as char(10)));
+1         
+----------
+1.1       
+ij> values (cast (1.1 as varchar(10)));
+ERROR 42846: Cannot convert types 'DECIMAL' to 'VARCHAR'.
+ij> values (cast (1e1 as varchar(10)));
+ERROR 42846: Cannot convert types 'DOUBLE' to 'VARCHAR'.
+ij> values (cast (1e1 as char(10)));
+ERROR 42846: Cannot convert types 'DOUBLE' to 'CHAR'.
+ij> values (cast (1 as char(10)));
+1         
+----------
+1         
+ij> values (cast (1 as varchar(10)));
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values (cast (1e200 as char(10)));
+ERROR 42846: Cannot convert types 'DOUBLE' to 'CHAR'.
+ij> values (cast (1e200 as varchar(10)));
+ERROR 42846: Cannot convert types 'DOUBLE' to 'VARCHAR'.
+ij> values (cast (1 as long varchar));
+ERROR 42846: Cannot convert types 'INTEGER' to 'LONG VARCHAR'.
+ij> values (cast (1.1 as long varchar));
+ERROR 42846: Cannot convert types 'DECIMAL' to 'LONG VARCHAR'.
+ij> values (cast (1e1 as long varchar));
+ERROR 42846: Cannot convert types 'DOUBLE' to 'LONG VARCHAR'.
+ij> --char to numbers
+values (cast ('123' as smallint));
+1     
+------
+123   
+ij> values (cast ('123' as int));
+1          
+-----------
+123        
+ij> values (cast ('123' as bigint));
+1                   
+--------------------
+123                 
+ij> values (cast ('123' as double precision));
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values (cast ('123' as float));
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values (cast ('123' as real));
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> values (cast ('123' as numeric(3,0)));
+1   
+----
+123 
+ij> values (cast ('123' as decimal(3,0)));
+1   
+----
+123 
+ij> -- char (with decimal) to numbers  (truncates where needed Track #3756)
+-- bug 5568
+values (cast ('123.45' as smallint));
+1     
+------
+123   
+ij> values (cast ('123.45' as int));
+1          
+-----------
+123        
+ij> values (cast ('123.45' as bigint));
+1                   
+--------------------
+123                 
+ij> values (cast ('123.45' as double precision));
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values (cast ('123.45' as float));
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values (cast ('123.45' as real));
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> values (cast ('123.45' as numeric(5,1)));
+1       
+--------
+123.4   
+ij> values (cast ('123.45' as decimal(5,1)));
+1       
+--------
+123.4   
+ij> values (cast ('123.99' as smallint));
+1     
+------
+123   
+ij> values (cast ('123.99' as int));
+1          
+-----------
+123        
+ij> values (cast ('123.99' as bigint));
+1                   
+--------------------
+123                 
+ij> values (cast ('123.99' as double precision));
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values (cast ('123.99' as float));
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values (cast ('123.99' as real));
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> values (cast ('123.99' as numeric(5,1)));
+1       
+--------
+123.9   
+ij> values (cast ('123.99' as decimal(5,1)));
+1       
+--------
+123.9   
+ij> --bad
+values (cast (1 as char(2) for bit data));
+ERROR 42846: Cannot convert types 'INTEGER' to 'CHAR () FOR BIT DATA'.
+ij> values (cast (1 as date));
+ERROR 42846: Cannot convert types 'INTEGER' to 'DATE'.
+ij> values (cast (1 as time));
+ERROR 42846: Cannot convert types 'INTEGER' to 'TIME'.
+ij> values (cast (1 as timestamp));
+ERROR 42846: Cannot convert types 'INTEGER' to 'TIMESTAMP'.
+ij> -------------------
+--char -> date/time
+-------------------
+values (cast ('TIME''11:11:11''' as time));
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values (cast ('11:11:11' as time));
+1       
+--------
+11:11:11
+ij> values (cast ('DATE''1999-09-09''' as date));
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values (cast ('1999-09-09' as date));
+1         
+----------
+1999-09-09
+ij> values (cast ('TIMESTAMP''xxxxxxFILTERED-TIMESTAMPxxxxx'' as timestamp));
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values (cast ('xxxxxxFILTERED-TIMESTAMPxxxxxas timestamp));
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> ------------------
+--date/time ->other
+------------------
+values (cast (TIME('11:11:11') as char(20)));
+1                   
+--------------------
+11:11:11            
+ij> values (cast (DATE('1999-09-09') as char(20)));
+1                   
+--------------------
+1999-09-09          
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as char(40)));
+1                                       
+----------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values (cast (TIME('11:11:11') as varchar(20)));
+1                   
+--------------------
+11:11:11            
+ij> values (cast (DATE('1999-09-09') as varchar(20)));
+1                   
+--------------------
+1999-09-09          
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as varchar(40)));
+1                                       
+----------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values (cast (TIME('11:11:11') as long varchar));
+ERROR 42846: Cannot convert types 'TIME' to 'LONG VARCHAR'.
+ij> values (cast (DATE('1999-09-09') as long varchar));
+ERROR 42846: Cannot convert types 'DATE' to 'LONG VARCHAR'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as long varchar));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'LONG VARCHAR'.
+ij> -- truncation errors
+values (cast (TIME('11:11:11') as char(2)));
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '11:11:11' to length 2.
+ij> values (cast (DATE('1999-09-09') as char(2)));
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '1999-09-09' to length 2.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as char(2)));
+ERROR 22001: A truncation error was encountered trying to shrink CHAR 'xxxxxxFILTERED-TIMESTAMPxxxxx' to length 2.
+ij> -- to date/time
+values (cast (TIME('11:11:11') as time));
+1       
+--------
+11:11:11
+ij> values (cast (TIME('11:11:11') as date));
+ERROR 42846: Cannot convert types 'TIME' to 'DATE'.
+ij> -- this piece of convoluted logic is to ensure that we
+-- get the current date for a conversion of time to timestamp
+values cast (cast (TIME('11:11:11') as timestamp) as char(50)).substring(0, 10).equals(cast (current_date as char(10)));
+ERROR 42846: Cannot convert types 'TIME' to 'TIMESTAMP'.
+ij> -- now make sure we got the time right
+values cast (cast (TIME('11:11:11') as timestamp) as char(30)).substring(11,21);
+ERROR 42846: Cannot convert types 'TIME' to 'TIMESTAMP'.
+ij> values (cast (DATE('1999-09-09') as date));
+1         
+----------
+1999-09-09
+ij> values (cast (DATE('1999-09-09') as time));
+ERROR 42846: Cannot convert types 'DATE' to 'TIME'.
+ij> values (cast (DATE('1999-09-09') as timestamp));
+ERROR 42846: Cannot convert types 'DATE' to 'TIMESTAMP'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as date));
+1         
+----------
+1999-09-09
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as time));
+1       
+--------
+11:11:11
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as timestamp));
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> --bad
+values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as int));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'INTEGER'.
+ij> values (cast (DATE('1999-09-09') as int));
+ERROR 42846: Cannot convert types 'DATE' to 'INTEGER'.
+ij> values (cast (TIME('11:11:11') as int));
+ERROR 42846: Cannot convert types 'TIME' to 'INTEGER'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as smallint));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'SMALLINT'.
+ij> values (cast (DATE('1999-09-09') as smallint));
+ERROR 42846: Cannot convert types 'DATE' to 'SMALLINT'.
+ij> values (cast (TIME('11:11:11') as smallint));
+ERROR 42846: Cannot convert types 'TIME' to 'SMALLINT'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as bigint));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'BIGINT'.
+ij> values (cast (DATE('1999-09-09') as bigint));
+ERROR 42846: Cannot convert types 'DATE' to 'BIGINT'.
+ij> values (cast (TIME('11:11:11') as bigint));
+ERROR 42846: Cannot convert types 'TIME' to 'BIGINT'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as numeric));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'NUMERIC'.
+ij> values (cast (DATE('1999-09-09') as numeric));
+ERROR 42846: Cannot convert types 'DATE' to 'NUMERIC'.
+ij> values (cast (TIME('11:11:11') as numeric));
+ERROR 42846: Cannot convert types 'TIME' to 'NUMERIC'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx)as decimal));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'DECIMAL'.
+ij> values (cast (DATE('1999-09-09') as decimal));
+ERROR 42846: Cannot convert types 'DATE' to 'DECIMAL'.
+ij> values (cast (TIME('11:11:11') as decimal));
+ERROR 42846: Cannot convert types 'TIME' to 'DECIMAL'.
+ij> values (cast (TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx) as char(13) for bit data));
+ERROR 42846: Cannot convert types 'TIMESTAMP' to 'CHAR () FOR BIT DATA'.
+ij> values (cast (DATE('1999-09-09') as char(13) for bit data));
+ERROR 42846: Cannot convert types 'DATE' to 'CHAR () FOR BIT DATA'.
+ij> values (cast (TIME('11:11:11') as char(13) for bit data));
+ERROR 42846: Cannot convert types 'TIME' to 'CHAR () FOR BIT DATA'.
+ij> ------------
+--bit ->char
+------------
+values (cast (X'00680065006c006c006f' as char(10)));
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+ij> --small bit
+values (cast (X'11' as char(10)));
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+ij> values (cast (X'11' as varchar(10)));
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+ij> values (cast (X'11' as long varchar));
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+ij> --values (cast (X'00' as char(10)));
+--odd length won't work anymore
+values (cast (X'123' as char(20)));
+ERROR 42606: An invalid hexadecimal constant starting with 'X'123'' has been detected.
+ij> --truncate, (should be warning in future)
+values (cast ('1234' as char(1) for bit data));
+ERROR 42846: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+ij> --truncate, ok
+values (cast ('1200' as char(1) for bit data));
+ERROR 42846: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+ij> ------------------------------------------------
+-- Casting
+-----------------------------------------------
+create table tab1 (
+				i integer, 
+				s integer, 
+				b integer, 
+				l bigint,
+				c char(10),
+				v varchar(10),
+				d double precision,
+				r real,
+				dt date,
+				t time,
+				ts timestamp,
+				dc decimal);
+0 rows inserted/updated/deleted
+ij> insert into tab1 values(1, 
+				cast(1 as smallint), 
+				cast(1 as int), 
+				cast(1 as bigint), 
+				'char', 
+				'varchar', 
+				cast(1.1 as double precision), 
+				cast(1.1 as real), 
+				DATE('1990-10-10'),
+				TIME('11:11:11'), 
+				TIMESTAMP('xxxxxxFILTERED-TIMESTAMPxxxxx),
+				1.1);
+1 row inserted/updated/deleted
+ij> insert into tab1 values (null,
+				null,
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null);
+1 row inserted/updated/deleted
+ij> -- tab1 type -> its tab1 type
+select cast(i as integer) from tab1;
+1          
+-----------
+1          
+NULL       
+ij> select cast(s as smallint) from tab1;
+1     
+------
+1     
+NULL  
+ij> select cast(l as bigint) from tab1;
+1                   
+--------------------
+1                   
+NULL                
+ij> select cast(c as char(10)) from tab1;
+1         
+----------
+char      
+NULL      
+ij> select cast(v as char varying(10)) from tab1;
+1         
+----------
+varchar   
+NULL      
+ij> select cast(d as double precision) from tab1;
+1                     
+----------------------
+1.1                   
+NULL                  
+ij> select cast(r as float) from tab1;
+1                     
+----------------------
+1.100000023841858     
+NULL                  
+ij> select cast(dt as date) from tab1;
+1         
+----------
+1990-10-10
+NULL      
+ij> select cast(t as time) from tab1;
+1       
+--------
+11:11:11
+NULL    
+ij> select cast(ts as timestamp) from tab1;
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+ij> select cast(dc as dec) from tab1;
+1     
+------
+1     
+NULL  
+ij> -- try a few others where we try all conversions
+select cast(i as integer) from tab1;
+1          
+-----------
+1          
+NULL       
+ij> select cast(i as smallint) from tab1;
+1     
+------
+1     
+NULL  
+ij> select cast(i as bigint) from tab1;
+1                   
+--------------------
+1                   
+NULL                
+ij> select cast(i as char(10)) from tab1;
+1         
+----------
+1         
+NULL      
+ij> select cast(i as char varying(10)) from tab1;
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> select cast(i as double precision) from tab1;
+1                     
+----------------------
+1.0                   
+NULL                  
+ij> select cast(i as float) from tab1;
+1                     
+----------------------
+1.0                   
+NULL                  
+ij> select cast(i as date) from tab1;
+ERROR 42846: Cannot convert types 'INTEGER' to 'DATE'.
+ij> select cast(i as time) from tab1;
+ERROR 42846: Cannot convert types 'INTEGER' to 'TIME'.
+ij> select cast(i as timestamp) from tab1;
+ERROR 42846: Cannot convert types 'INTEGER' to 'TIMESTAMP'.
+ij> select cast(i as dec) from tab1;
+1     
+------
+1     
+NULL  
+ij> -- try a few others
+select cast(c as integer) from tab1;
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> select cast(c as smallint) from tab1;
+1     
+------
+ERROR 22018: Invalid character string format for type SMALLINT.
+ij> select cast(c as bigint) from tab1;
+1                   
+--------------------
+ERROR 22018: Invalid character string format for type BIGINT.
+ij> select cast(c as char(10)) from tab1;
+1         
+----------
+char      
+NULL      
+ij> select cast(c as char varying(10)) from tab1;
+1         
+----------
+char      
+NULL      
+ij> select cast(c as double precision) from tab1;
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> select cast(c as float) from tab1;
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> select cast(c as date) from tab1;
+1         
+----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select cast(c as time) from tab1;
+1       
+--------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select cast(c as timestamp) from tab1;
+1                         
+--------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select cast(c as dec) from tab1;
+1     
+------
+ERROR 22018: Invalid character string format for type DECIMAL.
+ij> select cast(t as integer) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'INTEGER'.
+ij> select cast(t as smallint) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'SMALLINT'.
+ij> select cast(t as bigint) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'BIGINT'.
+ij> select cast(t as char(10)) from tab1;
+1         
+----------
+11:11:11  
+NULL      
+ij> select cast(t as char varying(10)) from tab1;
+1         
+----------
+11:11:11  
+NULL      
+ij> select cast(t as double precision) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'DOUBLE'.
+ij> select cast(t as float) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'DOUBLE'.
+ij> select cast(t as date) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'DATE'.
+ij> select cast(t as time) from tab1;
+1       
+--------
+11:11:11
+NULL    
+ij> select cast(t as timestamp) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'TIMESTAMP'.
+ij> select cast(t as dec) from tab1;
+ERROR 42846: Cannot convert types 'TIME' to 'DECIMAL'.
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> ---------------------------------------------------------------
+-- Other Tests
+---------------------------------------------------------------
+autocommit off;
+ij> -- create tables
+create table t1 (bt char(1) for bit data, btv varchar(1) for bit data,
+				 c char(30), d double precision, i int, r real, 
+				 s smallint, dc decimal(18), num numeric(18),
+				 dt date, t time, ts timestamp, v varchar(30), 
+				 lvc long varchar);
+0 rows inserted/updated/deleted
+ij> create table strings(c30 char(30));
+0 rows inserted/updated/deleted
+ij> -- we need a 1 row table with date/time columns because of problems
+-- with single quotes in using 'values DATE('')'
+create table temporal_values (dt date, t time, ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into temporal_values values(DATE('9876-5-4'), TIME('1:02:34'),
+								   TIMESTAMP('9876-5-4 1:02:34'));
+1 row inserted/updated/deleted
+ij> -- negative
+-- pass wrong type for parameter
+prepare a1 as 'values cast(? as smallint)';
+ij> execute a1 using 'values 1';
+1     
+------
+1     
+ij> -- uninitialized parameter
+values cast(? as int);
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> -- positive
+-- test casting null to all builtin types
+insert into t1 (bt) values cast(null as char(1) for bit data);
+1 row inserted/updated/deleted
+ij> insert into t1 (btv) values cast(null as varchar(1) for bit data);
+1 row inserted/updated/deleted
+ij> insert into t1 (c) values cast(null as char(30));
+1 row inserted/updated/deleted
+ij> insert into t1 (d) values cast(null as double precision);
+1 row inserted/updated/deleted
+ij> insert into t1 (i) values cast(null as int);
+1 row inserted/updated/deleted
+ij> insert into t1 (r) values cast(null as real);
+1 row inserted/updated/deleted
+ij> insert into t1 (s) values cast(null as smallint);
+1 row inserted/updated/deleted
+ij> insert into t1 (dc) values cast(null as decimal);
+1 row inserted/updated/deleted
+ij> insert into t1 (num) values cast(null as numeric);
+1 row inserted/updated/deleted
+ij> insert into t1 (dt) values cast(null as date);
+1 row inserted/updated/deleted
+ij> insert into t1 (t) values cast(null as time);
+1 row inserted/updated/deleted
+ij> insert into t1 (ts) values cast(null as timestamp);
+1 row inserted/updated/deleted
+ij> insert into t1 (v) values cast(null as varchar(30));
+1 row inserted/updated/deleted
+ij> insert into t1 (lvc) values cast(null as long varchar);
+1 row inserted/updated/deleted
+ij> -- expect 10 rows of nulls
+select * from t1;
+BT  |BTV |C                             |D                     |I          |R            |S     |DC                 |NUM                |DT        |T       |TS                        |V                             |LVC                                                                                                                             
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+ij> -- make sure casting works correctly on nulls
+select cast (bt as char(1) for bit data) from t1;
+1   
+----
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+ij> select cast (btv as varchar(1) for bit data) from t1;
+1   
+----
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+NULL
+ij> select cast (c as char(30)) from t1;
+1                             
+------------------------------
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+ij> select cast (d as double precision) from t1;
+1                     
+----------------------
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+NULL                  
+ij> select cast (r as real) from t1;
+1            
+-------------
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+NULL         
+ij> select cast (s as smallint) from t1;
+1     
+------
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+ij> select cast (num as numeric) from t1;
+1     
+------
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+ij> select cast (dc as decimal) from t1;
+1     
+------
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+NULL  
+ij> select cast (dt as date) from t1;
+1         
+----------
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+NULL      
+ij> select cast (t as time) from t1;
+1       
+--------
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+NULL    
+ij> select cast (ts as timestamp) from t1;
+1                         
+--------------------------
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+NULL                      
+ij> select cast (v as varchar(30)) from t1;
+1                             
+------------------------------
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+NULL                          
+ij> select cast (lvc as long varchar) from t1;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+NULL                                                                                                                            
+ij> -- clean up t1
+delete from t1;
+14 rows inserted/updated/deleted
+ij> -- test casting ? to all builtin types
+prepare q1 as 'insert into t1 (bt) values cast(? as char(1) for bit data)';
+ij> prepare q2 as 'insert into t1 (btv) values cast(? as varchar(1) for bit data)';
+ij> prepare q4 as 'insert into t1 (c) values cast(? as char(30))';
+ij> prepare q5 as 'insert into t1 (d) values cast(? as double precision)';
+ij> prepare q6 as 'insert into t1 (i) values cast(? as int)';
+ij> prepare q7 as 'insert into t1 (r) values cast(? as real)';
+ij> prepare q8 as 'insert into t1 (s) values cast(? as smallint)';
+ij> prepare q10 as 'insert into t1 (num) values cast(? as numeric(18))';
+ij> prepare q11 as 'insert into t1 (dc) values cast(? as decimal(18))';
+ij> prepare q12 as 'insert into t1 (dt) values cast(? as date)';
+ij> prepare q13 as 'insert into t1 (t) values cast(? as time)';
+ij> prepare q14 as 'insert into t1 (ts) values cast(? as timestamp)';
+ij> prepare q15 as 'insert into t1 (v) values cast(? as varchar(30))';
+ij> prepare q16 as 'insert into t1 (lvc) values cast(? as long varchar)';
+ij> execute q1 using 'values X''aa''';
+1 row inserted/updated/deleted
+ij> execute q2 using 'values X''aa''';
+1 row inserted/updated/deleted
+ij> execute q4 using 'values char(123456)';
+1 row inserted/updated/deleted
+ij> execute q5 using 'values 123456.78e0';
+1 row inserted/updated/deleted
+ij> execute q6 using 'values 4321';
+1 row inserted/updated/deleted
+ij> -- bug 5421 - support db2 udb compatible built-in functions
+execute q7 using 'values REAL(4321.01234)';
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> execute q8 using 'values SMALLINT(12321)';
+1 row inserted/updated/deleted
+ij> execute q10 using 'values 123456.78';
+1 row inserted/updated/deleted
+ij> execute q11 using 'values 123456.78';
+1 row inserted/updated/deleted
+ij> execute q12 using 'select dt from temporal_values';
+1 row inserted/updated/deleted
+ij> execute q13 using 'select t from temporal_values';
+1 row inserted/updated/deleted
+ij> execute q14 using 'select ts from temporal_values';
+1 row inserted/updated/deleted
+ij> execute q15 using 'values char(654321)';
+1 row inserted/updated/deleted
+ij> execute q16 using 'values char(987654)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+BT  |BTV |C                             |D                     |I          |R            |S     |DC                 |NUM                |DT        |T       |TS                        |V                             |LVC                                                                                                                             
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+aa  |NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|aa  |NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|123456                        |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |123456.78             |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |4321       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |12321 |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |123456             |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |123456             |NULL               |NULL      |NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |9876-05-04|NULL    |NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |01:02:34|NULL                      |NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL                          |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |654321                        |NULL                                                                                                                            
+NULL|NULL|NULL                          |NULL                  |NULL       |NULL         |NULL  |NULL               |NULL               |NULL      |NULL    |NULL                      |NULL                          |987654                                                                                                                          
+ij> -- clean up t1
+delete from t1;
+13 rows inserted/updated/deleted
+ij> -- more ? tests
+-- Truncation exception expected in non-parameter cases
+-- RESOLVE, no truncation expected in parameter cases
+-- where parameter value is not a string.  This is
+-- currently an "extension".
+create table x(c1 char(1));
+0 rows inserted/updated/deleted
+ij> prepare param1 as 'insert into x values cast(? as char(1))';
+ij> insert into x values cast('12' as char(1));
+1 row inserted/updated/deleted
+ij> execute param1 using 'values ''34''';
+1 row inserted/updated/deleted
+ij> select * from x;
+C1  
+----
+1   
+3   
+ij> delete from x;
+2 rows inserted/updated/deleted
+ij> insert into x values cast(12 as char(1));
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '12' to length 1.
+ij> execute param1 using 'values 34';
+1 row inserted/updated/deleted
+ij> select * from x;
+C1  
+----
+3   
+ij> delete from x;
+1 row inserted/updated/deleted
+ij> insert into x values cast(time('12:12:12') as char(1));
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '12:12:12' to length 1.
+ij> execute param1 using 'values time(''21:12:12'')';
+1 row inserted/updated/deleted
+ij> select * from x;
+C1  
+----
+2   
+ij> delete from x;
+1 row inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> -- method resolution tests
+-- clean up the prepared statements
+remove a1;
+ij> remove q1;
+ij> remove q2;
+ij> remove q4;
+ij> remove q5;
+ij> remove q6;
+ij> remove q7;
+ij> remove q8;
+ij> remove q10;
+ij> remove q11;
+ij> remove q12;
+ij> remove q13;
+ij> remove q14;
+ij> remove q15;
+ij> -- reset autocomiit
+commit;
+ij> autocommit on;
+ij> -- bind time casting tests
+-- negative
+values cast('asdf' as smallint);
+ERROR 22018: Invalid character string format for type SMALLINT.
+ij> values cast('asdf' as int);
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> values cast('asdf' as bigint);
+ERROR 22018: Invalid character string format for type BIGINT.
+ij> values cast('asdf' as real);
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> values cast('asdf' as double precision);
+ERROR 42846: Cannot convert types 'CHAR' to 'DOUBLE'.
+ij> values cast('asdf' as decimal(5,4));
+1       
+--------
+ERROR 22018: Invalid character string format for type DECIMAL.
+ij> values cast('asdf' as date);
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values cast('asdf' as time);
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values cast('asdf' as timestamp);
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values cast('2999999999' as int);
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> values cast(2999999999 as int);
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> values cast('99999' as smallint);
+ERROR 22003: The resulting value is outside the range for the data type SHORT.
+ij> values cast(99999 as smallint);
+ERROR 22003: The resulting value is outside the range for the data type SHORT.
+ij> values cast(cast(99 as int) as char);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '99' to length 1.
+ij> values cast(cast(-9 as int) as char);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '-9' to length 1.
+ij> values cast(cast(99 as smallint) as char);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '99' to length 1.
+ij> values cast(cast(99 as bigint) as char);
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '99' to length 1.
+ij> values cast(cast(9.9 as real) as char);
+ERROR 42846: Cannot convert types 'REAL' to 'CHAR'.
+ij> values cast(cast(9.9 as double precision) as char);
+ERROR 42846: Cannot convert types 'DOUBLE' to 'CHAR'.
+ij> -- positive
+values cast(1 as int);
+1          
+-----------
+1          
+ij> values cast(1 as smallint);
+1     
+------
+1     
+ij> values cast(1 as bigint);
+1                   
+--------------------
+1                   
+ij> values cast(1 as char);
+1
+-
+1
+ij> values cast('true' as char(4));
+1   
+----
+true
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table temporal_values;
+0 rows inserted/updated/deleted
+ij> drop table strings;
+0 rows inserted/updated/deleted
+ij> -- ISO time/timestamp formats
+values (cast ('08.08.08' as TIME));
+1       
+--------
+08:08:08
+ij> values (cast ('2001-01-01-08.08.08.123456' as TIMESTAMP));
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- char, varchar
+values (char('abcde', 5));
+1    
+-----
+abcde
+ij> values (char('abcde', 6));
+1     
+------
+abcde 
+ij> values (char('abcde', 4));
+1   
+----
+abcd
+ij> values (varchar('', 20));
+1                   
+--------------------
+ij> create table t1 (c5 date, c6 time, c7 timestamp, c8 char(5), c9 varchar(5));
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('2003-09-10', '16:44:02', 'xxxxxxFILTERED-TIMESTAMPxxxxx', 'abc', 'abcde');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('2005-09-10', '18.44.02', '2004-09-08-12.20.30.123456', 'cba', 'c');
+1 row inserted/updated/deleted
+ij> select char(c5), char(c6), char(c7), char(c8), char(c9) from t1;
+1         |2       |3                         |4              |5              
+------------------------------------------------------------------------------
+2003-09-10|16:44:02|xxxxxxFILTERED-TIMESTAMPxxxxx|abc            |abcde          
+2005-09-10|18:44:02|xxxxxxFILTERED-TIMESTAMPxxxxx|cba            |c              
+ij> select varchar(c5), varchar(c6), varchar(c7), varchar(c8), varchar(c9) from t1;
+1         |2       |3                         |4              |5              
+------------------------------------------------------------------------------
+2003-09-10|16:44:02|xxxxxxFILTERED-TIMESTAMPxxxxx|abc            |abcde          
+2005-09-10|18:44:02|xxxxxxFILTERED-TIMESTAMPxxxxx|cba            |c              
+ij> select char(c8, 10), varchar(c9, 9) from t1;
+1         |2        
+--------------------
+abc       |abcde    
+cba       |c        
+ij> select { fn concat(c8, char(c8)) } from t1;
+1                   
+--------------------
+abc  abc            
+cba  cba            
+ij> select { fn concat(c8, varchar(c9)) } from t1;
+1                   
+--------------------
+abc  abcde          
+cba  c              
+ij> select { fn concat(varchar(c9, 20), char(c8, 8)) } from t1;
+1                           
+----------------------------
+abcdeabc                    
+ccba                        
+ij> select { fn concat(char(c9, 20), varchar(c8, 8)) } from t1;
+1                           
+----------------------------
+abcde               abc     
+c                   cba     
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5421 - support db2 udb compatible built-in functions
+values CHAR(INT(67890));
+ERROR 42X01: Syntax error: Encountered "INT" at line 2, column 13.
+ij> values CHAR(INTEGER(12345));
+1          
+-----------
+12345      
+ij> values CHAR(DEC(67.21,4,2));
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 13.
+ij> values CHAR(DECIMAL(67.10,4,2));
+ERROR 42X01: Syntax error: Encountered "DECIMAL" at line 1, column 13.
+ij> values CHAR(DOUBLE(5.55));
+1                                                    
+-----------------------------------------------------
+5.55                                                 
+ij> values CHAR(DOUBLE_PRECISION(5.555));
+ERROR 42Y03: 'DOUBLE_PRECISION' is not recognized as a function or procedure.
+ij> values CHAR(BIGINT(1));
+1                   
+--------------------
+1                   
+ij> values CHAR(BIGINT(-1));
+1                   
+--------------------
+-1                  
+ij> values LENGTH(CAST('hello' AS CHAR(25)));
+1          
+-----------
+25         
+ij> values LENGTH(CAST('hello' AS VARCHAR(25)));
+1          
+-----------
+5          
+ij> values LENGTH(CAST('hello' AS LONG VARCHAR));
+1          
+-----------
+5          
+ij> values CAST (X'03' as CHAR(5) for bit data);
+1         
+----------
+0320202020
+ij> values CAST (X'04' as VARCHAR(5) for bit data);
+1         
+----------
+04        
+ij> values CAST (X'05' as LONG VARCHAR for bit data);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+05                                                                                                                              
+ij> -- clean up
+drop table t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/casting.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/casting.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4504 @@
+**createTables  starting
+create table SMALLINT_TAB (c SMALLINT )
+create table INTEGER_TAB (c INTEGER )
+create table BIGINT_TAB (c BIGINT )
+create table DECIMAL_TAB (c DECIMAL(10,5) )
+create table REAL_TAB (c REAL )
+create table DOUBLE_TAB (c DOUBLE )
+create table CHAR_TAB (c CHAR(60) )
+create table VARCHAR_TAB (c VARCHAR(60) )
+create table LONG_VARCHAR_TAB (c LONG VARCHAR )
+create table CHAR_FOR_BIT_DATA_TAB (c CHAR(60) FOR BIT DATA )
+create table VARCHAR_FOR_BIT_DATA_TAB (c VARCHAR(60) FOR BIT DATA )
+create table LONG_VARCHAR_FOR_BIT_DATA_TAB (c LONG VARCHAR FOR BIT DATA )
+create table CLOB_TAB (c CLOB(1k) )
+create table DATE_TAB (c DATE )
+create table TIME_TAB (c TIME )
+create table TIMESTAMP_TAB (c TIMESTAMP )
+create table BLOB_TAB (c BLOB(1k) )
+**testAssignments starting
+* testing literal inserts
+insert into SMALLINT_TAB values( NULL)
+insert into INTEGER_TAB values( NULL)
+insert into BIGINT_TAB values( NULL)
+insert into DECIMAL_TAB values( NULL)
+insert into REAL_TAB values( NULL)
+insert into DOUBLE_TAB values( NULL)
+insert into CHAR_TAB values( NULL)
+insert into VARCHAR_TAB values( NULL)
+insert into LONG_VARCHAR_TAB values( NULL)
+insert into CHAR_FOR_BIT_DATA_TAB values( NULL)
+insert into VARCHAR_FOR_BIT_DATA_TAB values( NULL)
+insert into LONG_VARCHAR_FOR_BIT_DATA_TAB values( NULL)
+insert into CLOB_TAB values( NULL)
+insert into DATE_TAB values( NULL)
+insert into TIME_TAB values( NULL)
+insert into TIMESTAMP_TAB values( NULL)
+insert into BLOB_TAB values( NULL)
+insert into SMALLINT_TAB values( 0)
+insert into INTEGER_TAB values( 11)
+insert into BIGINT_TAB values( 22)
+insert into DECIMAL_TAB values( 3.3)
+insert into REAL_TAB values( 4.4)
+insert into DOUBLE_TAB values( 5.5)
+insert into CHAR_TAB values( '7')
+insert into VARCHAR_TAB values( '8')
+insert into LONG_VARCHAR_TAB values( '9')
+insert into CHAR_FOR_BIT_DATA_TAB values( X'10aa')
+insert into VARCHAR_FOR_BIT_DATA_TAB values( X'10bb')
+insert into LONG_VARCHAR_FOR_BIT_DATA_TAB values( X'10cc')
+insert into CLOB_TAB values( '13')
+insert into DATE_TAB values( '2000-01-01')
+insert into TIME_TAB values( '15:30:20')
+insert into TIMESTAMP_TAB values( 'xxxxxxFILTERED-TIMESTAMPxxxxx)
+insert into BLOB_TAB values( X'01dd')
+EXPECTED EXCEPTION inserting literal into BLOB . Columns of type 'BLOB' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS SMALLINT)
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS SMALLINT)
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS SMALLINT)
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS SMALLINT)
+INSERT INTO REAL_TAB VALUES CAST(NULL AS SMALLINT)
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS SMALLINT)
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'SMALLINT'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'SMALLINT'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'SMALLINT'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'SMALLINT'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'SMALLINT'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'SMALLINT'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'SMALLINT'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'SMALLINT'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'SMALLINT'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'SMALLINT'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'SMALLINT'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS INTEGER)
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS INTEGER)
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS INTEGER)
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS INTEGER)
+INSERT INTO REAL_TAB VALUES CAST(NULL AS INTEGER)
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS INTEGER)
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'INTEGER'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'INTEGER'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'INTEGER'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'INTEGER'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'INTEGER'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'INTEGER'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'INTEGER'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'INTEGER'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'INTEGER'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'INTEGER'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS BIGINT)
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS BIGINT)
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS BIGINT)
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS BIGINT)
+INSERT INTO REAL_TAB VALUES CAST(NULL AS BIGINT)
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS BIGINT)
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'BIGINT'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'BIGINT'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'BIGINT'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'BIGINT'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'BIGINT'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'BIGINT'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'BIGINT'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'BIGINT'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'BIGINT'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'BIGINT'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'BIGINT'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+INSERT INTO REAL_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'DECIMAL'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'DECIMAL'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'DECIMAL'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'DECIMAL'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'DECIMAL'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'DECIMAL'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'DECIMAL'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'DECIMAL'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'DECIMAL'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'DECIMAL'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'DECIMAL'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS REAL)
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS REAL)
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS REAL)
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS REAL)
+INSERT INTO REAL_TAB VALUES CAST(NULL AS REAL)
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS REAL)
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'REAL'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'REAL'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'REAL'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'REAL'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'REAL'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'REAL'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'REAL'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'REAL'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'REAL'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'REAL'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'REAL'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS DOUBLE)
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS DOUBLE)
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS DOUBLE)
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS DOUBLE)
+INSERT INTO REAL_TAB VALUES CAST(NULL AS DOUBLE)
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS DOUBLE)
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'DOUBLE'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'DOUBLE'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'DOUBLE'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'DOUBLE'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'DOUBLE'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'DOUBLE'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'DOUBLE'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'DOUBLE'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'DOUBLE'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'DOUBLE'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'CHAR'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'CHAR'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'CHAR'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO DATE_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO TIME_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS CHAR(60))
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'CHAR'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'VARCHAR'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'VARCHAR'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'VARCHAR'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'VARCHAR'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'VARCHAR'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'VARCHAR'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'VARCHAR'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'VARCHAR'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'VARCHAR'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO DATE_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO TIME_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS VARCHAR(60))
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'VARCHAR'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS LONG VARCHAR)
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS LONG VARCHAR)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS LONG VARCHAR)
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS LONG VARCHAR)
+INSERT INTO DATE_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'CLOB'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'CLOB'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'CLOB'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'CLOB'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'CLOB'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'CLOB'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS CLOB(1k))
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS CLOB(1k))
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS CLOB(1k))
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'CLOB'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'CLOB'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'CLOB'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS CLOB(1k))
+INSERT INTO DATE_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'CLOB'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'CLOB'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'CLOB'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'CLOB'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'DATE'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'DATE'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'DATE'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'DATE'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'DATE'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'DATE'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS DATE)
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS DATE)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'DATE'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'DATE'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'DATE'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'DATE'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'DATE'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS DATE)
+INSERT INTO TIME_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'DATE'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'DATE'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'DATE'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'TIME'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'TIME'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'TIME'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'TIME'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'TIME'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'TIME'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS TIME)
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS TIME)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'TIME'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'TIME'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'TIME'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'TIME'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'TIME'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'TIME'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS TIME)
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'TIME'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'TIME'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS TIMESTAMP)
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS TIMESTAMP)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS TIMESTAMP)
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'BLOB'. 
+INSERT INTO INTEGER_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'BLOB'. 
+INSERT INTO BIGINT_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'BLOB'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'BLOB'. 
+INSERT INTO REAL_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'BLOB'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'BLOB'. 
+INSERT INTO CHAR_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'BLOB'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'BLOB'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'BLOB'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'BLOB'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'BLOB'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'BLOB'. 
+INSERT INTO CLOB_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'BLOB'. 
+INSERT INTO DATE_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'BLOB'. 
+INSERT INTO TIME_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'BLOB'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'BLOB'. 
+INSERT INTO BLOB_TAB VALUES CAST(NULL AS BLOB(1k))
+INSERT INTO SMALLINT_TAB VALUES CAST(0 AS SMALLINT)
+INSERT INTO INTEGER_TAB VALUES CAST(0 AS SMALLINT)
+INSERT INTO BIGINT_TAB VALUES CAST(0 AS SMALLINT)
+INSERT INTO DECIMAL_TAB VALUES CAST(0 AS SMALLINT)
+INSERT INTO REAL_TAB VALUES CAST(0 AS SMALLINT)
+INSERT INTO DOUBLE_TAB VALUES CAST(0 AS SMALLINT)
+INSERT INTO CHAR_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'SMALLINT'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'SMALLINT'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'SMALLINT'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'SMALLINT'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'SMALLINT'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'SMALLINT'. 
+INSERT INTO CLOB_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'SMALLINT'. 
+INSERT INTO DATE_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'SMALLINT'. 
+INSERT INTO TIME_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'SMALLINT'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'SMALLINT'. 
+INSERT INTO BLOB_TAB VALUES CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'SMALLINT'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(11 AS INTEGER)
+INSERT INTO INTEGER_TAB VALUES CAST(11 AS INTEGER)
+INSERT INTO BIGINT_TAB VALUES CAST(11 AS INTEGER)
+INSERT INTO DECIMAL_TAB VALUES CAST(11 AS INTEGER)
+INSERT INTO REAL_TAB VALUES CAST(11 AS INTEGER)
+INSERT INTO DOUBLE_TAB VALUES CAST(11 AS INTEGER)
+INSERT INTO CHAR_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'INTEGER'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'INTEGER'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'INTEGER'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'INTEGER'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'INTEGER'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'INTEGER'. 
+INSERT INTO CLOB_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'INTEGER'. 
+INSERT INTO DATE_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+INSERT INTO TIME_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'INTEGER'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'INTEGER'. 
+INSERT INTO BLOB_TAB VALUES CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'INTEGER'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(22 AS BIGINT)
+INSERT INTO INTEGER_TAB VALUES CAST(22 AS BIGINT)
+INSERT INTO BIGINT_TAB VALUES CAST(22 AS BIGINT)
+INSERT INTO DECIMAL_TAB VALUES CAST(22 AS BIGINT)
+INSERT INTO REAL_TAB VALUES CAST(22 AS BIGINT)
+INSERT INTO DOUBLE_TAB VALUES CAST(22 AS BIGINT)
+INSERT INTO CHAR_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'BIGINT'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'BIGINT'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'BIGINT'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'BIGINT'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'BIGINT'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'BIGINT'. 
+INSERT INTO CLOB_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'BIGINT'. 
+INSERT INTO DATE_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'BIGINT'. 
+INSERT INTO TIME_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'BIGINT'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'BIGINT'. 
+INSERT INTO BLOB_TAB VALUES CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'BIGINT'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+INSERT INTO INTEGER_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+INSERT INTO BIGINT_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+INSERT INTO DECIMAL_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+INSERT INTO REAL_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+INSERT INTO DOUBLE_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+INSERT INTO CHAR_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'DECIMAL'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'DECIMAL'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'DECIMAL'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'DECIMAL'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'DECIMAL'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'DECIMAL'. 
+INSERT INTO CLOB_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'DECIMAL'. 
+INSERT INTO DATE_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'DECIMAL'. 
+INSERT INTO TIME_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'DECIMAL'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'DECIMAL'. 
+INSERT INTO BLOB_TAB VALUES CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'DECIMAL'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(4.4 AS REAL)
+INSERT INTO INTEGER_TAB VALUES CAST(4.4 AS REAL)
+INSERT INTO BIGINT_TAB VALUES CAST(4.4 AS REAL)
+INSERT INTO DECIMAL_TAB VALUES CAST(4.4 AS REAL)
+INSERT INTO REAL_TAB VALUES CAST(4.4 AS REAL)
+INSERT INTO DOUBLE_TAB VALUES CAST(4.4 AS REAL)
+INSERT INTO CHAR_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'REAL'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'REAL'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'REAL'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'REAL'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'REAL'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'REAL'. 
+INSERT INTO CLOB_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'REAL'. 
+INSERT INTO DATE_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'REAL'. 
+INSERT INTO TIME_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'REAL'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'REAL'. 
+INSERT INTO BLOB_TAB VALUES CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'REAL'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(5.5 AS DOUBLE)
+INSERT INTO INTEGER_TAB VALUES CAST(5.5 AS DOUBLE)
+INSERT INTO BIGINT_TAB VALUES CAST(5.5 AS DOUBLE)
+INSERT INTO DECIMAL_TAB VALUES CAST(5.5 AS DOUBLE)
+INSERT INTO REAL_TAB VALUES CAST(5.5 AS DOUBLE)
+INSERT INTO DOUBLE_TAB VALUES CAST(5.5 AS DOUBLE)
+INSERT INTO CHAR_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'DOUBLE'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'DOUBLE'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'DOUBLE'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'DOUBLE'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'DOUBLE'. 
+INSERT INTO CLOB_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'DOUBLE'. 
+INSERT INTO DATE_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'DOUBLE'. 
+INSERT INTO TIME_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'DOUBLE'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'DOUBLE'. 
+INSERT INTO BLOB_TAB VALUES CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'DOUBLE'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('0' AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+INSERT INTO INTEGER_TAB VALUES CAST('11' AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+INSERT INTO BIGINT_TAB VALUES CAST('22' AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('3.3' AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+INSERT INTO REAL_TAB VALUES CAST('4.4' AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('5.5' AS CHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+INSERT INTO CHAR_TAB VALUES CAST('7' AS CHAR(60))
+INSERT INTO VARCHAR_TAB VALUES CAST('8' AS CHAR(60))
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('9' AS CHAR(60))
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10aa' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10bb' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10cc' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+INSERT INTO CLOB_TAB VALUES CAST('13' AS CHAR(60))
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS CHAR(60))
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS CHAR(60))
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS CHAR(60))
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+INSERT INTO SMALLINT_TAB VALUES CAST('0' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'VARCHAR'. 
+INSERT INTO INTEGER_TAB VALUES CAST('11' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'VARCHAR'. 
+INSERT INTO BIGINT_TAB VALUES CAST('22' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'VARCHAR'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('3.3' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'VARCHAR'. 
+INSERT INTO REAL_TAB VALUES CAST('4.4' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'VARCHAR'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('5.5' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'VARCHAR'. 
+INSERT INTO CHAR_TAB VALUES CAST('7' AS VARCHAR(60))
+INSERT INTO VARCHAR_TAB VALUES CAST('8' AS VARCHAR(60))
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('9' AS VARCHAR(60))
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10aa' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10bb' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10cc' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+INSERT INTO CLOB_TAB VALUES CAST('13' AS VARCHAR(60))
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS VARCHAR(60))
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS VARCHAR(60))
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS VARCHAR(60))
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+INSERT INTO SMALLINT_TAB VALUES CAST('0' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO INTEGER_TAB VALUES CAST('11' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO BIGINT_TAB VALUES CAST('22' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('3.3' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO REAL_TAB VALUES CAST('4.4' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('5.5' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO CHAR_TAB VALUES CAST('7' AS LONG VARCHAR)
+INSERT INTO VARCHAR_TAB VALUES CAST('8' AS LONG VARCHAR)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('9' AS LONG VARCHAR)
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10aa' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10bb' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10cc' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+INSERT INTO CLOB_TAB VALUES CAST('13' AS LONG VARCHAR)
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS LONG VARCHAR)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'LONG VARCHAR'. 
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+INSERT INTO SMALLINT_TAB VALUES CAST('0' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO INTEGER_TAB VALUES CAST('11' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO BIGINT_TAB VALUES CAST('22' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO DECIMAL_TAB VALUES CAST('3.3' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO REAL_TAB VALUES CAST('4.4' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO DOUBLE_TAB VALUES CAST('5.5' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO CHAR_TAB VALUES CAST('7' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO VARCHAR_TAB VALUES CAST('8' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('9' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10aa' AS CHAR(60) FOR BIT DATA)
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10bb' AS CHAR(60) FOR BIT DATA)
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10cc' AS CHAR(60) FOR BIT DATA)
+INSERT INTO CLOB_TAB VALUES CAST('13' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('0' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO INTEGER_TAB VALUES CAST('11' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO BIGINT_TAB VALUES CAST('22' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO DECIMAL_TAB VALUES CAST('3.3' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO REAL_TAB VALUES CAST('4.4' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO DOUBLE_TAB VALUES CAST('5.5' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO CHAR_TAB VALUES CAST('7' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO VARCHAR_TAB VALUES CAST('8' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('9' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10aa' AS VARCHAR(60) FOR BIT DATA)
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10bb' AS VARCHAR(60) FOR BIT DATA)
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10cc' AS VARCHAR(60) FOR BIT DATA)
+INSERT INTO CLOB_TAB VALUES CAST('13' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('0' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO INTEGER_TAB VALUES CAST('11' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO BIGINT_TAB VALUES CAST('22' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO DECIMAL_TAB VALUES CAST('3.3' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO REAL_TAB VALUES CAST('4.4' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO DOUBLE_TAB VALUES CAST('5.5' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO CHAR_TAB VALUES CAST('7' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO VARCHAR_TAB VALUES CAST('8' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('9' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10aa' AS LONG VARCHAR FOR BIT DATA)
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10bb' AS LONG VARCHAR FOR BIT DATA)
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'10cc' AS LONG VARCHAR FOR BIT DATA)
+INSERT INTO CLOB_TAB VALUES CAST('13' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'CLOB'. 
+INSERT INTO INTEGER_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'CLOB'. 
+INSERT INTO BIGINT_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'CLOB'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'CLOB'. 
+INSERT INTO REAL_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'CLOB'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'CLOB'. 
+INSERT INTO CHAR_TAB VALUES CAST('13' AS CLOB(1k))
+INSERT INTO VARCHAR_TAB VALUES CAST('13' AS CLOB(1k))
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('13' AS CLOB(1k))
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'CLOB'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'CLOB'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'CLOB'. 
+INSERT INTO CLOB_TAB VALUES CAST('13' AS CLOB(1k))
+INSERT INTO DATE_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'CLOB'. 
+INSERT INTO TIME_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'CLOB'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'CLOB'. 
+INSERT INTO BLOB_TAB VALUES CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'CLOB'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'DATE'. 
+INSERT INTO INTEGER_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'DATE'. 
+INSERT INTO BIGINT_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'DATE'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'DATE'. 
+INSERT INTO REAL_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'DATE'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'DATE'. 
+INSERT INTO CHAR_TAB VALUES CAST('2000-01-01' AS DATE)
+INSERT INTO VARCHAR_TAB VALUES CAST('2000-01-01' AS DATE)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'DATE'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'DATE'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'DATE'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'DATE'. 
+INSERT INTO CLOB_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'DATE'. 
+INSERT INTO DATE_TAB VALUES CAST('2000-01-01' AS DATE)
+INSERT INTO TIME_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'DATE'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'DATE'. 
+INSERT INTO BLOB_TAB VALUES CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'DATE'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'TIME'. 
+INSERT INTO INTEGER_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'TIME'. 
+INSERT INTO BIGINT_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'TIME'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'TIME'. 
+INSERT INTO REAL_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'TIME'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'TIME'. 
+INSERT INTO CHAR_TAB VALUES CAST('15:30:20' AS TIME)
+INSERT INTO VARCHAR_TAB VALUES CAST('15:30:20' AS TIME)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'TIME'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'TIME'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'TIME'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'TIME'. 
+INSERT INTO CLOB_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'TIME'. 
+INSERT INTO DATE_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'TIME'. 
+INSERT INTO TIME_TAB VALUES CAST('15:30:20' AS TIME)
+INSERT INTO TIMESTAMP_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'TIME'. 
+INSERT INTO BLOB_TAB VALUES CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'TIME'. 
+INSERT INTO SMALLINT_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO INTEGER_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO BIGINT_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO DECIMAL_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO REAL_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO DOUBLE_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO CHAR_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+INSERT INTO VARCHAR_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO CLOB_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO DATE_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO TIME_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+INSERT INTO BLOB_TAB VALUES CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42821:Columns of type 'BLOB' cannot hold values of type 'TIMESTAMP'. 
+INSERT INTO SMALLINT_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'SMALLINT' cannot hold values of type 'BLOB'. 
+INSERT INTO INTEGER_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'INTEGER' cannot hold values of type 'BLOB'. 
+INSERT INTO BIGINT_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'BIGINT' cannot hold values of type 'BLOB'. 
+INSERT INTO DECIMAL_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DECIMAL' cannot hold values of type 'BLOB'. 
+INSERT INTO REAL_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'REAL' cannot hold values of type 'BLOB'. 
+INSERT INTO DOUBLE_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DOUBLE' cannot hold values of type 'BLOB'. 
+INSERT INTO CHAR_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR' cannot hold values of type 'BLOB'. 
+INSERT INTO VARCHAR_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR' cannot hold values of type 'BLOB'. 
+INSERT INTO LONG_VARCHAR_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR' cannot hold values of type 'BLOB'. 
+INSERT INTO CHAR_FOR_BIT_DATA_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CHAR () FOR BIT DATA' cannot hold values of type 'BLOB'. 
+INSERT INTO VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'VARCHAR () FOR BIT DATA' cannot hold values of type 'BLOB'. 
+INSERT INTO LONG_VARCHAR_FOR_BIT_DATA_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'LONG VARCHAR FOR BIT DATA' cannot hold values of type 'BLOB'. 
+INSERT INTO CLOB_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'CLOB' cannot hold values of type 'BLOB'. 
+INSERT INTO DATE_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'DATE' cannot hold values of type 'BLOB'. 
+INSERT INTO TIME_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIME' cannot hold values of type 'BLOB'. 
+INSERT INTO TIMESTAMP_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42821:Columns of type 'TIMESTAMP' cannot hold values of type 'BLOB'. 
+INSERT INTO BLOB_TAB VALUES CAST(X'01dd' AS BLOB(1k))
+**testExplicitCasts starting
+Test #1
+VALUES CAST (CAST (NULL AS SMALLINT) AS SMALLINT )
+1     
+------
+NULL  
+Test #2
+VALUES CAST (CAST (NULL AS SMALLINT) AS INTEGER )
+1          
+-----------
+NULL       
+Test #3
+VALUES CAST (CAST (NULL AS SMALLINT) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #4
+VALUES CAST (CAST (NULL AS SMALLINT) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #5
+VALUES CAST (CAST (NULL AS SMALLINT) AS REAL )
+1            
+-------------
+NULL         
+Test #6
+VALUES CAST (CAST (NULL AS SMALLINT) AS DOUBLE )
+1                     
+----------------------
+NULL                  
+Test #7
+VALUES CAST (CAST (NULL AS SMALLINT) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #8
+VALUES CAST (CAST (NULL AS SMALLINT) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'VARCHAR'.
+Test #9
+VALUES CAST (CAST (NULL AS SMALLINT) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'LONG VARCHAR'.
+Test #10
+VALUES CAST (CAST (NULL AS SMALLINT) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'CHAR () FOR BIT DATA'.
+Test #11
+VALUES CAST (CAST (NULL AS SMALLINT) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'VARCHAR () FOR BIT DATA'.
+Test #12
+VALUES CAST (CAST (NULL AS SMALLINT) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'LONG VARCHAR FOR BIT DATA'.
+Test #13
+VALUES CAST (CAST (NULL AS SMALLINT) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'CLOB'.
+Test #14
+VALUES CAST (CAST (NULL AS SMALLINT) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'DATE'.
+Test #15
+VALUES CAST (CAST (NULL AS SMALLINT) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'TIME'.
+Test #16
+VALUES CAST (CAST (NULL AS SMALLINT) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'TIMESTAMP'.
+Test #17
+VALUES CAST (CAST (NULL AS SMALLINT) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'BLOB'.
+Test #18
+VALUES CAST (CAST (0 AS SMALLINT) AS SMALLINT )
+1     
+------
+0     
+Test #19
+VALUES CAST (CAST (0 AS SMALLINT) AS INTEGER )
+1          
+-----------
+0          
+Test #20
+VALUES CAST (CAST (0 AS SMALLINT) AS BIGINT )
+1                   
+--------------------
+0                   
+Test #21
+VALUES CAST (CAST (0 AS SMALLINT) AS DECIMAL(10,5) )
+1            
+-------------
+0.00000      
+Test #22
+VALUES CAST (CAST (0 AS SMALLINT) AS REAL )
+1            
+-------------
+0.0          
+Test #23
+VALUES CAST (CAST (0 AS SMALLINT) AS DOUBLE )
+1                     
+----------------------
+0.0                   
+Test #24
+VALUES CAST (CAST (0 AS SMALLINT) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+0                                                           
+Test #25
+VALUES CAST (CAST (0 AS SMALLINT) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'VARCHAR'.
+Test #26
+VALUES CAST (CAST (0 AS SMALLINT) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'LONG VARCHAR'.
+Test #27
+VALUES CAST (CAST (0 AS SMALLINT) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'CHAR () FOR BIT DATA'.
+Test #28
+VALUES CAST (CAST (0 AS SMALLINT) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'VARCHAR () FOR BIT DATA'.
+Test #29
+VALUES CAST (CAST (0 AS SMALLINT) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'LONG VARCHAR FOR BIT DATA'.
+Test #30
+VALUES CAST (CAST (0 AS SMALLINT) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'CLOB'.
+Test #31
+VALUES CAST (CAST (0 AS SMALLINT) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'DATE'.
+Test #32
+VALUES CAST (CAST (0 AS SMALLINT) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'TIME'.
+Test #33
+VALUES CAST (CAST (0 AS SMALLINT) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'TIMESTAMP'.
+Test #34
+VALUES CAST (CAST (0 AS SMALLINT) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'SMALLINT' to 'BLOB'.
+Test #35
+VALUES CAST (CAST (NULL AS INTEGER) AS SMALLINT )
+1     
+------
+NULL  
+Test #36
+VALUES CAST (CAST (NULL AS INTEGER) AS INTEGER )
+1          
+-----------
+NULL       
+Test #37
+VALUES CAST (CAST (NULL AS INTEGER) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #38
+VALUES CAST (CAST (NULL AS INTEGER) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #39
+VALUES CAST (CAST (NULL AS INTEGER) AS REAL )
+1            
+-------------
+NULL         
+Test #40
+VALUES CAST (CAST (NULL AS INTEGER) AS DOUBLE )
+1                     
+----------------------
+NULL                  
+Test #41
+VALUES CAST (CAST (NULL AS INTEGER) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #42
+VALUES CAST (CAST (NULL AS INTEGER) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'VARCHAR'.
+Test #43
+VALUES CAST (CAST (NULL AS INTEGER) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'LONG VARCHAR'.
+Test #44
+VALUES CAST (CAST (NULL AS INTEGER) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'CHAR () FOR BIT DATA'.
+Test #45
+VALUES CAST (CAST (NULL AS INTEGER) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'VARCHAR () FOR BIT DATA'.
+Test #46
+VALUES CAST (CAST (NULL AS INTEGER) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'LONG VARCHAR FOR BIT DATA'.
+Test #47
+VALUES CAST (CAST (NULL AS INTEGER) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'CLOB'.
+Test #48
+VALUES CAST (CAST (NULL AS INTEGER) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'DATE'.
+Test #49
+VALUES CAST (CAST (NULL AS INTEGER) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'TIME'.
+Test #50
+VALUES CAST (CAST (NULL AS INTEGER) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'TIMESTAMP'.
+Test #51
+VALUES CAST (CAST (NULL AS INTEGER) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'BLOB'.
+Test #52
+VALUES CAST (CAST (11 AS INTEGER) AS SMALLINT )
+1     
+------
+11    
+Test #53
+VALUES CAST (CAST (11 AS INTEGER) AS INTEGER )
+1          
+-----------
+11         
+Test #54
+VALUES CAST (CAST (11 AS INTEGER) AS BIGINT )
+1                   
+--------------------
+11                  
+Test #55
+VALUES CAST (CAST (11 AS INTEGER) AS DECIMAL(10,5) )
+1            
+-------------
+11.00000     
+Test #56
+VALUES CAST (CAST (11 AS INTEGER) AS REAL )
+1            
+-------------
+11.0         
+Test #57
+VALUES CAST (CAST (11 AS INTEGER) AS DOUBLE )
+1                     
+----------------------
+11.0                  
+Test #58
+VALUES CAST (CAST (11 AS INTEGER) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+11                                                          
+Test #59
+VALUES CAST (CAST (11 AS INTEGER) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'VARCHAR'.
+Test #60
+VALUES CAST (CAST (11 AS INTEGER) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'LONG VARCHAR'.
+Test #61
+VALUES CAST (CAST (11 AS INTEGER) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'CHAR () FOR BIT DATA'.
+Test #62
+VALUES CAST (CAST (11 AS INTEGER) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'VARCHAR () FOR BIT DATA'.
+Test #63
+VALUES CAST (CAST (11 AS INTEGER) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'LONG VARCHAR FOR BIT DATA'.
+Test #64
+VALUES CAST (CAST (11 AS INTEGER) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'CLOB'.
+Test #65
+VALUES CAST (CAST (11 AS INTEGER) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'DATE'.
+Test #66
+VALUES CAST (CAST (11 AS INTEGER) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'TIME'.
+Test #67
+VALUES CAST (CAST (11 AS INTEGER) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'TIMESTAMP'.
+Test #68
+VALUES CAST (CAST (11 AS INTEGER) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'INTEGER' to 'BLOB'.
+Test #69
+VALUES CAST (CAST (NULL AS BIGINT) AS SMALLINT )
+1     
+------
+NULL  
+Test #70
+VALUES CAST (CAST (NULL AS BIGINT) AS INTEGER )
+1          
+-----------
+NULL       
+Test #71
+VALUES CAST (CAST (NULL AS BIGINT) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #72
+VALUES CAST (CAST (NULL AS BIGINT) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #73
+VALUES CAST (CAST (NULL AS BIGINT) AS REAL )
+1            
+-------------
+NULL         
+Test #74
+VALUES CAST (CAST (NULL AS BIGINT) AS DOUBLE )
+1                     
+----------------------
+NULL                  
+Test #75
+VALUES CAST (CAST (NULL AS BIGINT) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #76
+VALUES CAST (CAST (NULL AS BIGINT) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'VARCHAR'.
+Test #77
+VALUES CAST (CAST (NULL AS BIGINT) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'LONG VARCHAR'.
+Test #78
+VALUES CAST (CAST (NULL AS BIGINT) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'CHAR () FOR BIT DATA'.
+Test #79
+VALUES CAST (CAST (NULL AS BIGINT) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'VARCHAR () FOR BIT DATA'.
+Test #80
+VALUES CAST (CAST (NULL AS BIGINT) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'LONG VARCHAR FOR BIT DATA'.
+Test #81
+VALUES CAST (CAST (NULL AS BIGINT) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'CLOB'.
+Test #82
+VALUES CAST (CAST (NULL AS BIGINT) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'DATE'.
+Test #83
+VALUES CAST (CAST (NULL AS BIGINT) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'TIME'.
+Test #84
+VALUES CAST (CAST (NULL AS BIGINT) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'TIMESTAMP'.
+Test #85
+VALUES CAST (CAST (NULL AS BIGINT) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'BLOB'.
+Test #86
+VALUES CAST (CAST (22 AS BIGINT) AS SMALLINT )
+1     
+------
+22    
+Test #87
+VALUES CAST (CAST (22 AS BIGINT) AS INTEGER )
+1          
+-----------
+22         
+Test #88
+VALUES CAST (CAST (22 AS BIGINT) AS BIGINT )
+1                   
+--------------------
+22                  
+Test #89
+VALUES CAST (CAST (22 AS BIGINT) AS DECIMAL(10,5) )
+1            
+-------------
+22.00000     
+Test #90
+VALUES CAST (CAST (22 AS BIGINT) AS REAL )
+1            
+-------------
+22.0         
+Test #91
+VALUES CAST (CAST (22 AS BIGINT) AS DOUBLE )
+1                     
+----------------------
+22.0                  
+Test #92
+VALUES CAST (CAST (22 AS BIGINT) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+22                                                          
+Test #93
+VALUES CAST (CAST (22 AS BIGINT) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'VARCHAR'.
+Test #94
+VALUES CAST (CAST (22 AS BIGINT) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'LONG VARCHAR'.
+Test #95
+VALUES CAST (CAST (22 AS BIGINT) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'CHAR () FOR BIT DATA'.
+Test #96
+VALUES CAST (CAST (22 AS BIGINT) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'VARCHAR () FOR BIT DATA'.
+Test #97
+VALUES CAST (CAST (22 AS BIGINT) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'LONG VARCHAR FOR BIT DATA'.
+Test #98
+VALUES CAST (CAST (22 AS BIGINT) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'CLOB'.
+Test #99
+VALUES CAST (CAST (22 AS BIGINT) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'DATE'.
+Test #100
+VALUES CAST (CAST (22 AS BIGINT) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'TIME'.
+Test #101
+VALUES CAST (CAST (22 AS BIGINT) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'TIMESTAMP'.
+Test #102
+VALUES CAST (CAST (22 AS BIGINT) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BIGINT' to 'BLOB'.
+Test #103
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS SMALLINT )
+1     
+------
+NULL  
+Test #104
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS INTEGER )
+1          
+-----------
+NULL       
+Test #105
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #106
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #107
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS REAL )
+1            
+-------------
+NULL         
+Test #108
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS DOUBLE )
+1                     
+----------------------
+NULL                  
+Test #109
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #110
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'VARCHAR'.
+Test #111
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'LONG VARCHAR'.
+Test #112
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'CHAR () FOR BIT DATA'.
+Test #113
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'VARCHAR () FOR BIT DATA'.
+Test #114
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'LONG VARCHAR FOR BIT DATA'.
+Test #115
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'CLOB'.
+Test #116
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'DATE'.
+Test #117
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'TIME'.
+Test #118
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'TIMESTAMP'.
+Test #119
+VALUES CAST (CAST (NULL AS DECIMAL(10,5)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'BLOB'.
+Test #120
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS SMALLINT )
+1     
+------
+3     
+Test #121
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS INTEGER )
+1          
+-----------
+3          
+Test #122
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS BIGINT )
+1                   
+--------------------
+3                   
+Test #123
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS DECIMAL(10,5) )
+1            
+-------------
+3.30000      
+Test #124
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS REAL )
+1            
+-------------
+3.3          
+Test #125
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS DOUBLE )
+1                     
+----------------------
+3.3                   
+Test #126
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+3.30000                                                     
+Test #127
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'VARCHAR'.
+Test #128
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'LONG VARCHAR'.
+Test #129
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'CHAR () FOR BIT DATA'.
+Test #130
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'VARCHAR () FOR BIT DATA'.
+Test #131
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'LONG VARCHAR FOR BIT DATA'.
+Test #132
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'CLOB'.
+Test #133
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'DATE'.
+Test #134
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'TIME'.
+Test #135
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'TIMESTAMP'.
+Test #136
+VALUES CAST (CAST (3.3 AS DECIMAL(10,5)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DECIMAL' to 'BLOB'.
+Test #137
+VALUES CAST (CAST (NULL AS REAL) AS SMALLINT )
+1     
+------
+NULL  
+Test #138
+VALUES CAST (CAST (NULL AS REAL) AS INTEGER )
+1          
+-----------
+NULL       
+Test #139
+VALUES CAST (CAST (NULL AS REAL) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #140
+VALUES CAST (CAST (NULL AS REAL) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #141
+VALUES CAST (CAST (NULL AS REAL) AS REAL )
+1            
+-------------
+NULL         
+Test #142
+VALUES CAST (CAST (NULL AS REAL) AS DOUBLE )
+1                     
+----------------------
+NULL                  
+Test #143
+VALUES CAST (CAST (NULL AS REAL) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'CHAR'.
+Test #144
+VALUES CAST (CAST (NULL AS REAL) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'VARCHAR'.
+Test #145
+VALUES CAST (CAST (NULL AS REAL) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'LONG VARCHAR'.
+Test #146
+VALUES CAST (CAST (NULL AS REAL) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'CHAR () FOR BIT DATA'.
+Test #147
+VALUES CAST (CAST (NULL AS REAL) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'VARCHAR () FOR BIT DATA'.
+Test #148
+VALUES CAST (CAST (NULL AS REAL) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'LONG VARCHAR FOR BIT DATA'.
+Test #149
+VALUES CAST (CAST (NULL AS REAL) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'CLOB'.
+Test #150
+VALUES CAST (CAST (NULL AS REAL) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'DATE'.
+Test #151
+VALUES CAST (CAST (NULL AS REAL) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'TIME'.
+Test #152
+VALUES CAST (CAST (NULL AS REAL) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'TIMESTAMP'.
+Test #153
+VALUES CAST (CAST (NULL AS REAL) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'BLOB'.
+Test #154
+VALUES CAST (CAST (4.4 AS REAL) AS SMALLINT )
+1     
+------
+4     
+Test #155
+VALUES CAST (CAST (4.4 AS REAL) AS INTEGER )
+1          
+-----------
+4          
+Test #156
+VALUES CAST (CAST (4.4 AS REAL) AS BIGINT )
+1                   
+--------------------
+4                   
+Test #157
+VALUES CAST (CAST (4.4 AS REAL) AS DECIMAL(10,5) )
+1            
+-------------
+4.40000      
+Test #158
+VALUES CAST (CAST (4.4 AS REAL) AS REAL )
+1            
+-------------
+4.4          
+Test #159
+VALUES CAST (CAST (4.4 AS REAL) AS DOUBLE )
+1                     
+----------------------
+4.400000095367432     
+Test #160
+VALUES CAST (CAST (4.4 AS REAL) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'CHAR'.
+Test #161
+VALUES CAST (CAST (4.4 AS REAL) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'VARCHAR'.
+Test #162
+VALUES CAST (CAST (4.4 AS REAL) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'LONG VARCHAR'.
+Test #163
+VALUES CAST (CAST (4.4 AS REAL) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'CHAR () FOR BIT DATA'.
+Test #164
+VALUES CAST (CAST (4.4 AS REAL) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'VARCHAR () FOR BIT DATA'.
+Test #165
+VALUES CAST (CAST (4.4 AS REAL) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'LONG VARCHAR FOR BIT DATA'.
+Test #166
+VALUES CAST (CAST (4.4 AS REAL) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'CLOB'.
+Test #167
+VALUES CAST (CAST (4.4 AS REAL) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'DATE'.
+Test #168
+VALUES CAST (CAST (4.4 AS REAL) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'TIME'.
+Test #169
+VALUES CAST (CAST (4.4 AS REAL) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'TIMESTAMP'.
+Test #170
+VALUES CAST (CAST (4.4 AS REAL) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'REAL' to 'BLOB'.
+Test #171
+VALUES CAST (CAST (NULL AS DOUBLE) AS SMALLINT )
+1     
+------
+NULL  
+Test #172
+VALUES CAST (CAST (NULL AS DOUBLE) AS INTEGER )
+1          
+-----------
+NULL       
+Test #173
+VALUES CAST (CAST (NULL AS DOUBLE) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #174
+VALUES CAST (CAST (NULL AS DOUBLE) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #175
+VALUES CAST (CAST (NULL AS DOUBLE) AS REAL )
+1            
+-------------
+NULL         
+Test #176
+VALUES CAST (CAST (NULL AS DOUBLE) AS DOUBLE )
+1                     
+----------------------
+NULL                  
+Test #177
+VALUES CAST (CAST (NULL AS DOUBLE) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'CHAR'.
+Test #178
+VALUES CAST (CAST (NULL AS DOUBLE) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'VARCHAR'.
+Test #179
+VALUES CAST (CAST (NULL AS DOUBLE) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'LONG VARCHAR'.
+Test #180
+VALUES CAST (CAST (NULL AS DOUBLE) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'CHAR () FOR BIT DATA'.
+Test #181
+VALUES CAST (CAST (NULL AS DOUBLE) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'VARCHAR () FOR BIT DATA'.
+Test #182
+VALUES CAST (CAST (NULL AS DOUBLE) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'LONG VARCHAR FOR BIT DATA'.
+Test #183
+VALUES CAST (CAST (NULL AS DOUBLE) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'CLOB'.
+Test #184
+VALUES CAST (CAST (NULL AS DOUBLE) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'DATE'.
+Test #185
+VALUES CAST (CAST (NULL AS DOUBLE) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'TIME'.
+Test #186
+VALUES CAST (CAST (NULL AS DOUBLE) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'TIMESTAMP'.
+Test #187
+VALUES CAST (CAST (NULL AS DOUBLE) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'BLOB'.
+Test #188
+VALUES CAST (CAST (5.5 AS DOUBLE) AS SMALLINT )
+1     
+------
+5     
+Test #189
+VALUES CAST (CAST (5.5 AS DOUBLE) AS INTEGER )
+1          
+-----------
+5          
+Test #190
+VALUES CAST (CAST (5.5 AS DOUBLE) AS BIGINT )
+1                   
+--------------------
+5                   
+Test #191
+VALUES CAST (CAST (5.5 AS DOUBLE) AS DECIMAL(10,5) )
+1            
+-------------
+5.50000      
+Test #192
+VALUES CAST (CAST (5.5 AS DOUBLE) AS REAL )
+1            
+-------------
+5.5          
+Test #193
+VALUES CAST (CAST (5.5 AS DOUBLE) AS DOUBLE )
+1                     
+----------------------
+5.5                   
+Test #194
+VALUES CAST (CAST (5.5 AS DOUBLE) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'CHAR'.
+Test #195
+VALUES CAST (CAST (5.5 AS DOUBLE) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'VARCHAR'.
+Test #196
+VALUES CAST (CAST (5.5 AS DOUBLE) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'LONG VARCHAR'.
+Test #197
+VALUES CAST (CAST (5.5 AS DOUBLE) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'CHAR () FOR BIT DATA'.
+Test #198
+VALUES CAST (CAST (5.5 AS DOUBLE) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'VARCHAR () FOR BIT DATA'.
+Test #199
+VALUES CAST (CAST (5.5 AS DOUBLE) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'LONG VARCHAR FOR BIT DATA'.
+Test #200
+VALUES CAST (CAST (5.5 AS DOUBLE) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'CLOB'.
+Test #201
+VALUES CAST (CAST (5.5 AS DOUBLE) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'DATE'.
+Test #202
+VALUES CAST (CAST (5.5 AS DOUBLE) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'TIME'.
+Test #203
+VALUES CAST (CAST (5.5 AS DOUBLE) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'TIMESTAMP'.
+Test #204
+VALUES CAST (CAST (5.5 AS DOUBLE) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DOUBLE' to 'BLOB'.
+Test #205
+VALUES CAST (CAST (NULL AS CHAR(60)) AS SMALLINT )
+1     
+------
+NULL  
+Test #206
+VALUES CAST (CAST (NULL AS CHAR(60)) AS INTEGER )
+1          
+-----------
+NULL       
+Test #207
+VALUES CAST (CAST (NULL AS CHAR(60)) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #208
+VALUES CAST (CAST (NULL AS CHAR(60)) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #209
+VALUES CAST (CAST (NULL AS CHAR(60)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'REAL'.
+Test #210
+VALUES CAST (CAST (NULL AS CHAR(60)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'DOUBLE'.
+Test #211
+VALUES CAST (CAST (NULL AS CHAR(60)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #212
+VALUES CAST (CAST (NULL AS CHAR(60)) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #213
+VALUES CAST (CAST (NULL AS CHAR(60)) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #214
+VALUES CAST (CAST (NULL AS CHAR(60)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #215
+VALUES CAST (CAST (NULL AS CHAR(60)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #216
+VALUES CAST (CAST (NULL AS CHAR(60)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #217
+VALUES CAST (CAST (NULL AS CHAR(60)) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #218
+VALUES CAST (CAST (NULL AS CHAR(60)) AS DATE )
+1         
+----------
+NULL      
+Test #219
+VALUES CAST (CAST (NULL AS CHAR(60)) AS TIME )
+1       
+--------
+NULL    
+Test #220
+VALUES CAST (CAST (NULL AS CHAR(60)) AS TIMESTAMP )
+1                         
+--------------------------
+NULL                      
+Test #221
+VALUES CAST (CAST (NULL AS CHAR(60)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'BLOB'.
+Test #222
+VALUES CAST (CAST ('0' AS CHAR(60)) AS SMALLINT )
+1     
+------
+0     
+Test #223
+VALUES CAST (CAST ('11' AS CHAR(60)) AS INTEGER )
+1          
+-----------
+11         
+Test #224
+VALUES CAST (CAST ('22' AS CHAR(60)) AS BIGINT )
+1                   
+--------------------
+22                  
+Test #225
+VALUES CAST (CAST ('3.3' AS CHAR(60)) AS DECIMAL(10,5) )
+1            
+-------------
+3.30000      
+Test #226
+VALUES CAST (CAST ('4.4' AS CHAR(60)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'REAL'.
+Test #227
+VALUES CAST (CAST ('5.5' AS CHAR(60)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'DOUBLE'.
+Test #228
+VALUES CAST (CAST ('7' AS CHAR(60)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+7                                                           
+Test #229
+VALUES CAST (CAST ('8' AS CHAR(60)) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+8                                                           
+Test #230
+VALUES CAST (CAST ('9' AS CHAR(60)) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+9                                                                                                                               
+Test #231
+VALUES CAST (CAST (X'10aa' AS CHAR(60)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+Test #232
+VALUES CAST (CAST (X'10bb' AS CHAR(60)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+Test #233
+VALUES CAST (CAST (X'10cc' AS CHAR(60)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+Test #234
+VALUES CAST (CAST ('13' AS CHAR(60)) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+13                                                                                                                              
+Test #235
+VALUES CAST (CAST ('2000-01-01' AS CHAR(60)) AS DATE )
+1         
+----------
+2000-01-01
+Test #236
+VALUES CAST (CAST ('15:30:20' AS CHAR(60)) AS TIME )
+1       
+--------
+15:30:20
+Test #237
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS CHAR(60)) AS TIMESTAMP )
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+Test #238
+VALUES CAST (CAST (X'01dd' AS CHAR(60)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+Test #239
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS SMALLINT )
+1     
+------
+NULL  
+Test #240
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS INTEGER )
+1          
+-----------
+NULL       
+Test #241
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS BIGINT )
+1                   
+--------------------
+NULL                
+Test #242
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS DECIMAL(10,5) )
+1            
+-------------
+NULL         
+Test #243
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'REAL'.
+Test #244
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'DOUBLE'.
+Test #245
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #246
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #247
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #248
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'CHAR () FOR BIT DATA'.
+Test #249
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #250
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #251
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #252
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS DATE )
+1         
+----------
+NULL      
+Test #253
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS TIME )
+1       
+--------
+NULL    
+Test #254
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS TIMESTAMP )
+1                         
+--------------------------
+NULL                      
+Test #255
+VALUES CAST (CAST (NULL AS VARCHAR(60)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'BLOB'.
+Test #256
+VALUES CAST (CAST ('0' AS VARCHAR(60)) AS SMALLINT )
+1     
+------
+0     
+Test #257
+VALUES CAST (CAST ('11' AS VARCHAR(60)) AS INTEGER )
+1          
+-----------
+11         
+Test #258
+VALUES CAST (CAST ('22' AS VARCHAR(60)) AS BIGINT )
+1                   
+--------------------
+22                  
+Test #259
+VALUES CAST (CAST ('3.3' AS VARCHAR(60)) AS DECIMAL(10,5) )
+1            
+-------------
+3.30000      
+Test #260
+VALUES CAST (CAST ('4.4' AS VARCHAR(60)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'REAL'.
+Test #261
+VALUES CAST (CAST ('5.5' AS VARCHAR(60)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR' to 'DOUBLE'.
+Test #262
+VALUES CAST (CAST ('7' AS VARCHAR(60)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+7                                                           
+Test #263
+VALUES CAST (CAST ('8' AS VARCHAR(60)) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+8                                                           
+Test #264
+VALUES CAST (CAST ('9' AS VARCHAR(60)) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+9                                                                                                                               
+Test #265
+VALUES CAST (CAST (X'10aa' AS VARCHAR(60)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+Test #266
+VALUES CAST (CAST (X'10bb' AS VARCHAR(60)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+Test #267
+VALUES CAST (CAST (X'10cc' AS VARCHAR(60)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+Test #268
+VALUES CAST (CAST ('13' AS VARCHAR(60)) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+13                                                                                                                              
+Test #269
+VALUES CAST (CAST ('2000-01-01' AS VARCHAR(60)) AS DATE )
+1         
+----------
+2000-01-01
+Test #270
+VALUES CAST (CAST ('15:30:20' AS VARCHAR(60)) AS TIME )
+1       
+--------
+15:30:20
+Test #271
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS VARCHAR(60)) AS TIMESTAMP )
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+Test #272
+VALUES CAST (CAST (X'01dd' AS VARCHAR(60)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+Test #273
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'SMALLINT'.
+Test #274
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'INTEGER'.
+Test #275
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'BIGINT'.
+Test #276
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+Test #277
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'REAL'.
+Test #278
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+Test #279
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #280
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #281
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #282
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'CHAR () FOR BIT DATA'.
+Test #283
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #284
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #285
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #286
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'DATE'.
+Test #287
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'TIME'.
+Test #288
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'TIMESTAMP'.
+Test #289
+VALUES CAST (CAST (NULL AS LONG VARCHAR) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'BLOB'.
+Test #290
+VALUES CAST (CAST ('0' AS LONG VARCHAR) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'SMALLINT'.
+Test #291
+VALUES CAST (CAST ('11' AS LONG VARCHAR) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'INTEGER'.
+Test #292
+VALUES CAST (CAST ('22' AS LONG VARCHAR) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'BIGINT'.
+Test #293
+VALUES CAST (CAST ('3.3' AS LONG VARCHAR) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+Test #294
+VALUES CAST (CAST ('4.4' AS LONG VARCHAR) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'REAL'.
+Test #295
+VALUES CAST (CAST ('5.5' AS LONG VARCHAR) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+Test #296
+VALUES CAST (CAST ('7' AS LONG VARCHAR) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+7                                                           
+Test #297
+VALUES CAST (CAST ('8' AS LONG VARCHAR) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+8                                                           
+Test #298
+VALUES CAST (CAST ('9' AS LONG VARCHAR) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+9                                                                                                                               
+Test #299
+VALUES CAST (CAST (X'10aa' AS LONG VARCHAR) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+Test #300
+VALUES CAST (CAST (X'10bb' AS LONG VARCHAR) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+Test #301
+VALUES CAST (CAST (X'10cc' AS LONG VARCHAR) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+Test #302
+VALUES CAST (CAST ('13' AS LONG VARCHAR) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+13                                                                                                                              
+Test #303
+VALUES CAST (CAST ('2000-01-01' AS LONG VARCHAR) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'DATE'.
+Test #304
+VALUES CAST (CAST ('15:30:20' AS LONG VARCHAR) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'TIME'.
+Test #305
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS LONG VARCHAR) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR' to 'TIMESTAMP'.
+Test #306
+VALUES CAST (CAST (X'01dd' AS LONG VARCHAR) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+Test #307
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'SMALLINT'.
+Test #308
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'INTEGER'.
+Test #309
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'BIGINT'.
+Test #310
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'DECIMAL'.
+Test #311
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'REAL'.
+Test #312
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'DOUBLE'.
+Test #313
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+Test #314
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+Test #315
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+Test #316
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS CHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                    
+Test #317
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS VARCHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                    
+Test #318
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS LONG VARCHAR FOR BIT DATA )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #319
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'CLOB'.
+Test #320
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'DATE'.
+Test #321
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'TIME'.
+Test #322
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR () FOR BIT DATA' to 'TIMESTAMP'.
+Test #323
+VALUES CAST (CAST (NULL AS CHAR(60) FOR BIT DATA) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #324
+VALUES CAST (CAST ('0' AS CHAR(60) FOR BIT DATA) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #325
+VALUES CAST (CAST ('11' AS CHAR(60) FOR BIT DATA) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #326
+VALUES CAST (CAST ('22' AS CHAR(60) FOR BIT DATA) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #327
+VALUES CAST (CAST ('3.3' AS CHAR(60) FOR BIT DATA) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #328
+VALUES CAST (CAST ('4.4' AS CHAR(60) FOR BIT DATA) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #329
+VALUES CAST (CAST ('5.5' AS CHAR(60) FOR BIT DATA) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #330
+VALUES CAST (CAST ('7' AS CHAR(60) FOR BIT DATA) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #331
+VALUES CAST (CAST ('8' AS CHAR(60) FOR BIT DATA) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #332
+VALUES CAST (CAST ('9' AS CHAR(60) FOR BIT DATA) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #333
+VALUES CAST (CAST (X'10aa' AS CHAR(60) FOR BIT DATA) AS CHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
+Test #334
+VALUES CAST (CAST (X'10bb' AS CHAR(60) FOR BIT DATA) AS VARCHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10bb20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
+Test #335
+VALUES CAST (CAST (X'10cc' AS CHAR(60) FOR BIT DATA) AS LONG VARCHAR FOR BIT DATA )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+10cc20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020        
+Test #336
+VALUES CAST (CAST ('13' AS CHAR(60) FOR BIT DATA) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #337
+VALUES CAST (CAST ('2000-01-01' AS CHAR(60) FOR BIT DATA) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #338
+VALUES CAST (CAST ('15:30:20' AS CHAR(60) FOR BIT DATA) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #339
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS CHAR(60) FOR BIT DATA) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+Test #340
+VALUES CAST (CAST (X'01dd' AS CHAR(60) FOR BIT DATA) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+01dd20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020        
+Test #341
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'SMALLINT'.
+Test #342
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'INTEGER'.
+Test #343
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'BIGINT'.
+Test #344
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'DECIMAL'.
+Test #345
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'REAL'.
+Test #346
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'DOUBLE'.
+Test #347
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'CHAR'.
+Test #348
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'VARCHAR'.
+Test #349
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+Test #350
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS CHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                    
+Test #351
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS VARCHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                    
+Test #352
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS LONG VARCHAR FOR BIT DATA )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #353
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'CLOB'.
+Test #354
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'DATE'.
+Test #355
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'TIME'.
+Test #356
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'VARCHAR () FOR BIT DATA' to 'TIMESTAMP'.
+Test #357
+VALUES CAST (CAST (NULL AS VARCHAR(60) FOR BIT DATA) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #358
+VALUES CAST (CAST ('0' AS VARCHAR(60) FOR BIT DATA) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #359
+VALUES CAST (CAST ('11' AS VARCHAR(60) FOR BIT DATA) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #360
+VALUES CAST (CAST ('22' AS VARCHAR(60) FOR BIT DATA) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #361
+VALUES CAST (CAST ('3.3' AS VARCHAR(60) FOR BIT DATA) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #362
+VALUES CAST (CAST ('4.4' AS VARCHAR(60) FOR BIT DATA) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #363
+VALUES CAST (CAST ('5.5' AS VARCHAR(60) FOR BIT DATA) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #364
+VALUES CAST (CAST ('7' AS VARCHAR(60) FOR BIT DATA) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #365
+VALUES CAST (CAST ('8' AS VARCHAR(60) FOR BIT DATA) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #366
+VALUES CAST (CAST ('9' AS VARCHAR(60) FOR BIT DATA) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #367
+VALUES CAST (CAST (X'10aa' AS VARCHAR(60) FOR BIT DATA) AS CHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
+Test #368
+VALUES CAST (CAST (X'10bb' AS VARCHAR(60) FOR BIT DATA) AS VARCHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10bb                                                                                                                    
+Test #369
+VALUES CAST (CAST (X'10cc' AS VARCHAR(60) FOR BIT DATA) AS LONG VARCHAR FOR BIT DATA )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+10cc                                                                                                                            
+Test #370
+VALUES CAST (CAST ('13' AS VARCHAR(60) FOR BIT DATA) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #371
+VALUES CAST (CAST ('2000-01-01' AS VARCHAR(60) FOR BIT DATA) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #372
+VALUES CAST (CAST ('15:30:20' AS VARCHAR(60) FOR BIT DATA) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #373
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS VARCHAR(60) FOR BIT DATA) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+Test #374
+VALUES CAST (CAST (X'01dd' AS VARCHAR(60) FOR BIT DATA) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+01dd                                                                                                                            
+Test #375
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'SMALLINT'.
+Test #376
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'INTEGER'.
+Test #377
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'BIGINT'.
+Test #378
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'DECIMAL'.
+Test #379
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'REAL'.
+Test #380
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'DOUBLE'.
+Test #381
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'CHAR'.
+Test #382
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'VARCHAR'.
+Test #383
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'LONG VARCHAR'.
+Test #384
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS CHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                    
+Test #385
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS VARCHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                    
+Test #386
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS LONG VARCHAR FOR BIT DATA )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #387
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'CLOB'.
+Test #388
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'DATE'.
+Test #389
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'TIME'.
+Test #390
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'LONG VARCHAR FOR BIT DATA' to 'TIMESTAMP'.
+Test #391
+VALUES CAST (CAST (NULL AS LONG VARCHAR FOR BIT DATA) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #392
+VALUES CAST (CAST ('0' AS LONG VARCHAR FOR BIT DATA) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #393
+VALUES CAST (CAST ('11' AS LONG VARCHAR FOR BIT DATA) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #394
+VALUES CAST (CAST ('22' AS LONG VARCHAR FOR BIT DATA) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #395
+VALUES CAST (CAST ('3.3' AS LONG VARCHAR FOR BIT DATA) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #396
+VALUES CAST (CAST ('4.4' AS LONG VARCHAR FOR BIT DATA) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #397
+VALUES CAST (CAST ('5.5' AS LONG VARCHAR FOR BIT DATA) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #398
+VALUES CAST (CAST ('7' AS LONG VARCHAR FOR BIT DATA) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #399
+VALUES CAST (CAST ('8' AS LONG VARCHAR FOR BIT DATA) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #400
+VALUES CAST (CAST ('9' AS LONG VARCHAR FOR BIT DATA) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #401
+VALUES CAST (CAST (X'10aa' AS LONG VARCHAR FOR BIT DATA) AS CHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
+Test #402
+VALUES CAST (CAST (X'10bb' AS LONG VARCHAR FOR BIT DATA) AS VARCHAR(60) FOR BIT DATA )
+1                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10bb                                                                                                                    
+Test #403
+VALUES CAST (CAST (X'10cc' AS LONG VARCHAR FOR BIT DATA) AS LONG VARCHAR FOR BIT DATA )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+10cc                                                                                                                            
+Test #404
+VALUES CAST (CAST ('13' AS LONG VARCHAR FOR BIT DATA) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #405
+VALUES CAST (CAST ('2000-01-01' AS LONG VARCHAR FOR BIT DATA) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #406
+VALUES CAST (CAST ('15:30:20' AS LONG VARCHAR FOR BIT DATA) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #407
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS LONG VARCHAR FOR BIT DATA) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+Test #408
+VALUES CAST (CAST (X'01dd' AS LONG VARCHAR FOR BIT DATA) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+01dd                                                                                                                            
+Test #409
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'SMALLINT'.
+Test #410
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'INTEGER'.
+Test #411
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'BIGINT'.
+Test #412
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'DECIMAL'.
+Test #413
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'REAL'.
+Test #414
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'DOUBLE'.
+Test #415
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #416
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #417
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #418
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'CHAR () FOR BIT DATA'.
+Test #419
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'VARCHAR () FOR BIT DATA'.
+Test #420
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'LONG VARCHAR FOR BIT DATA'.
+Test #421
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #422
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'DATE'.
+Test #423
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'TIME'.
+Test #424
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'TIMESTAMP'.
+Test #425
+VALUES CAST (CAST (NULL AS CLOB(1k)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'BLOB'.
+Test #426
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'SMALLINT'.
+Test #427
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'INTEGER'.
+Test #428
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'BIGINT'.
+Test #429
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'DECIMAL'.
+Test #430
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'REAL'.
+Test #431
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'DOUBLE'.
+Test #432
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+13                                                          
+Test #433
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+13                                                          
+Test #434
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS LONG VARCHAR )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+13                                                                                                                              
+Test #435
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'CHAR () FOR BIT DATA'.
+Test #436
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'VARCHAR () FOR BIT DATA'.
+Test #437
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'LONG VARCHAR FOR BIT DATA'.
+Test #438
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS CLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+13                                                                                                                              
+Test #439
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'DATE'.
+Test #440
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'TIME'.
+Test #441
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'TIMESTAMP'.
+Test #442
+VALUES CAST (CAST ('13' AS CLOB(1k)) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'CLOB' to 'BLOB'.
+Test #443
+VALUES CAST (CAST (NULL AS DATE) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'SMALLINT'.
+Test #444
+VALUES CAST (CAST (NULL AS DATE) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'INTEGER'.
+Test #445
+VALUES CAST (CAST (NULL AS DATE) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'BIGINT'.
+Test #446
+VALUES CAST (CAST (NULL AS DATE) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'DECIMAL'.
+Test #447
+VALUES CAST (CAST (NULL AS DATE) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'REAL'.
+Test #448
+VALUES CAST (CAST (NULL AS DATE) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'DOUBLE'.
+Test #449
+VALUES CAST (CAST (NULL AS DATE) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #450
+VALUES CAST (CAST (NULL AS DATE) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #451
+VALUES CAST (CAST (NULL AS DATE) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'LONG VARCHAR'.
+Test #452
+VALUES CAST (CAST (NULL AS DATE) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'CHAR () FOR BIT DATA'.
+Test #453
+VALUES CAST (CAST (NULL AS DATE) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'VARCHAR () FOR BIT DATA'.
+Test #454
+VALUES CAST (CAST (NULL AS DATE) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'LONG VARCHAR FOR BIT DATA'.
+Test #455
+VALUES CAST (CAST (NULL AS DATE) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'CLOB'.
+Test #456
+VALUES CAST (CAST (NULL AS DATE) AS DATE )
+1         
+----------
+NULL      
+Test #457
+VALUES CAST (CAST (NULL AS DATE) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'TIME'.
+Test #458
+VALUES CAST (CAST (NULL AS DATE) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'TIMESTAMP'.
+Test #459
+VALUES CAST (CAST (NULL AS DATE) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'BLOB'.
+Test #460
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'SMALLINT'.
+Test #461
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'INTEGER'.
+Test #462
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'BIGINT'.
+Test #463
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'DECIMAL'.
+Test #464
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'REAL'.
+Test #465
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'DOUBLE'.
+Test #466
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+2000-01-01                                                  
+Test #467
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+2000-01-01                                                  
+Test #468
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'LONG VARCHAR'.
+Test #469
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'CHAR () FOR BIT DATA'.
+Test #470
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'VARCHAR () FOR BIT DATA'.
+Test #471
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'LONG VARCHAR FOR BIT DATA'.
+Test #472
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'CLOB'.
+Test #473
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS DATE )
+1         
+----------
+2000-01-01
+Test #474
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'TIME'.
+Test #475
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'TIMESTAMP'.
+Test #476
+VALUES CAST (CAST ('2000-01-01' AS DATE) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'DATE' to 'BLOB'.
+Test #477
+VALUES CAST (CAST (NULL AS TIME) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'SMALLINT'.
+Test #478
+VALUES CAST (CAST (NULL AS TIME) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'INTEGER'.
+Test #479
+VALUES CAST (CAST (NULL AS TIME) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'BIGINT'.
+Test #480
+VALUES CAST (CAST (NULL AS TIME) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'DECIMAL'.
+Test #481
+VALUES CAST (CAST (NULL AS TIME) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'REAL'.
+Test #482
+VALUES CAST (CAST (NULL AS TIME) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'DOUBLE'.
+Test #483
+VALUES CAST (CAST (NULL AS TIME) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #484
+VALUES CAST (CAST (NULL AS TIME) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #485
+VALUES CAST (CAST (NULL AS TIME) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'LONG VARCHAR'.
+Test #486
+VALUES CAST (CAST (NULL AS TIME) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'CHAR () FOR BIT DATA'.
+Test #487
+VALUES CAST (CAST (NULL AS TIME) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'VARCHAR () FOR BIT DATA'.
+Test #488
+VALUES CAST (CAST (NULL AS TIME) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'LONG VARCHAR FOR BIT DATA'.
+Test #489
+VALUES CAST (CAST (NULL AS TIME) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'CLOB'.
+Test #490
+VALUES CAST (CAST (NULL AS TIME) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'DATE'.
+Test #491
+VALUES CAST (CAST (NULL AS TIME) AS TIME )
+1       
+--------
+NULL    
+Test #492
+VALUES CAST (CAST (NULL AS TIME) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'TIMESTAMP'.
+Test #493
+VALUES CAST (CAST (NULL AS TIME) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'BLOB'.
+Test #494
+VALUES CAST (CAST ('15:30:20' AS TIME) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'SMALLINT'.
+Test #495
+VALUES CAST (CAST ('15:30:20' AS TIME) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'INTEGER'.
+Test #496
+VALUES CAST (CAST ('15:30:20' AS TIME) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'BIGINT'.
+Test #497
+VALUES CAST (CAST ('15:30:20' AS TIME) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'DECIMAL'.
+Test #498
+VALUES CAST (CAST ('15:30:20' AS TIME) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'REAL'.
+Test #499
+VALUES CAST (CAST ('15:30:20' AS TIME) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'DOUBLE'.
+Test #500
+VALUES CAST (CAST ('15:30:20' AS TIME) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+15:30:20                                                    
+Test #501
+VALUES CAST (CAST ('15:30:20' AS TIME) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+15:30:20                                                    
+Test #502
+VALUES CAST (CAST ('15:30:20' AS TIME) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'LONG VARCHAR'.
+Test #503
+VALUES CAST (CAST ('15:30:20' AS TIME) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'CHAR () FOR BIT DATA'.
+Test #504
+VALUES CAST (CAST ('15:30:20' AS TIME) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'VARCHAR () FOR BIT DATA'.
+Test #505
+VALUES CAST (CAST ('15:30:20' AS TIME) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'LONG VARCHAR FOR BIT DATA'.
+Test #506
+VALUES CAST (CAST ('15:30:20' AS TIME) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'CLOB'.
+Test #507
+VALUES CAST (CAST ('15:30:20' AS TIME) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'DATE'.
+Test #508
+VALUES CAST (CAST ('15:30:20' AS TIME) AS TIME )
+1       
+--------
+15:30:20
+Test #509
+VALUES CAST (CAST ('15:30:20' AS TIME) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'TIMESTAMP'.
+Test #510
+VALUES CAST (CAST ('15:30:20' AS TIME) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIME' to 'BLOB'.
+Test #511
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'SMALLINT'.
+Test #512
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'INTEGER'.
+Test #513
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'BIGINT'.
+Test #514
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'DECIMAL'.
+Test #515
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'REAL'.
+Test #516
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'DOUBLE'.
+Test #517
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #518
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+NULL                                                        
+Test #519
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'LONG VARCHAR'.
+Test #520
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'CHAR () FOR BIT DATA'.
+Test #521
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'VARCHAR () FOR BIT DATA'.
+Test #522
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'LONG VARCHAR FOR BIT DATA'.
+Test #523
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'CLOB'.
+Test #524
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS DATE )
+1         
+----------
+NULL      
+Test #525
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS TIME )
+1       
+--------
+NULL    
+Test #526
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS TIMESTAMP )
+1                         
+--------------------------
+NULL                      
+Test #527
+VALUES CAST (CAST (NULL AS TIMESTAMP) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'BLOB'.
+Test #528
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'SMALLINT'.
+Test #529
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'INTEGER'.
+Test #530
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'BIGINT'.
+Test #531
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'DECIMAL'.
+Test #532
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'REAL'.
+Test #533
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'DOUBLE'.
+Test #534
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS CHAR(60) )
+1                                                           
+------------------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+Test #535
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS VARCHAR(60) )
+1                                                           
+------------------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+Test #536
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'LONG VARCHAR'.
+Test #537
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'CHAR () FOR BIT DATA'.
+Test #538
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'VARCHAR () FOR BIT DATA'.
+Test #539
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'LONG VARCHAR FOR BIT DATA'.
+Test #540
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'CLOB'.
+Test #541
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS DATE )
+1         
+----------
+2000-01-01
+Test #542
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS TIME )
+1       
+--------
+15:30:20
+Test #543
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS TIMESTAMP )
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+Test #544
+VALUES CAST (CAST ('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP) AS BLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'TIMESTAMP' to 'BLOB'.
+Test #545
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'SMALLINT'.
+Test #546
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'INTEGER'.
+Test #547
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'BIGINT'.
+Test #548
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'DECIMAL'.
+Test #549
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'REAL'.
+Test #550
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'DOUBLE'.
+Test #551
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'CHAR'.
+Test #552
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'VARCHAR'.
+Test #553
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'LONG VARCHAR'.
+Test #554
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'CHAR () FOR BIT DATA'.
+Test #555
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'VARCHAR () FOR BIT DATA'.
+Test #556
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'LONG VARCHAR FOR BIT DATA'.
+Test #557
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'CLOB'.
+Test #558
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'DATE'.
+Test #559
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'TIME'.
+Test #560
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'TIMESTAMP'.
+Test #561
+VALUES CAST (CAST (NULL AS BLOB(1k)) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+Test #562
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS SMALLINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'SMALLINT'.
+Test #563
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS INTEGER )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'INTEGER'.
+Test #564
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS BIGINT )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'BIGINT'.
+Test #565
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS DECIMAL(10,5) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'DECIMAL'.
+Test #566
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS REAL )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'REAL'.
+Test #567
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS DOUBLE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'DOUBLE'.
+Test #568
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS CHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'CHAR'.
+Test #569
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS VARCHAR(60) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'VARCHAR'.
+Test #570
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS LONG VARCHAR )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'LONG VARCHAR'.
+Test #571
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS CHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'CHAR () FOR BIT DATA'.
+Test #572
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS VARCHAR(60) FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'VARCHAR () FOR BIT DATA'.
+Test #573
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS LONG VARCHAR FOR BIT DATA )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'LONG VARCHAR FOR BIT DATA'.
+Test #574
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS CLOB(1k) )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'CLOB'.
+Test #575
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS DATE )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'DATE'.
+Test #576
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS TIME )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'TIME'.
+Test #577
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS TIMESTAMP )
+EXPECTED CASTING EXCEPTION: Cannot convert types 'BLOB' to 'TIMESTAMP'.
+Test #578
+VALUES CAST (CAST (X'01dd' AS BLOB(1k)) AS BLOB(1k) )
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+01dd                                                                                                                            
+**testComparisons starting
+* testing literal comparisons
+SELECT distinct c FROM SMALLINT_TAB WHERE c = 0
+C     
+------
+0     
+SELECT distinct c FROM INTEGER_TAB WHERE c = 11
+C          
+-----------
+11         
+SELECT distinct c FROM BIGINT_TAB WHERE c = 22
+C                   
+--------------------
+22                  
+SELECT distinct c FROM DECIMAL_TAB WHERE c = 3.3
+C            
+-------------
+3.30000      
+SELECT distinct c FROM REAL_TAB WHERE c = 4.4
+C            
+-------------
+4.4          
+SELECT distinct c FROM DOUBLE_TAB WHERE c = 5.5
+C                     
+----------------------
+5.5                   
+SELECT distinct c FROM CHAR_TAB WHERE c = '7'
+C                                                           
+------------------------------------------------------------
+7                                                           
+SELECT distinct c FROM VARCHAR_TAB WHERE c = '8'
+C                                                           
+------------------------------------------------------------
+8                                                           
+SELECT distinct c FROM LONG_VARCHAR_TAB WHERE c = '9'
+EXPECTED EXCEPTION comparing long type. Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+SELECT distinct c FROM CHAR_FOR_BIT_DATA_TAB WHERE c = X'10aa'
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
+SELECT distinct c FROM VARCHAR_FOR_BIT_DATA_TAB WHERE c = X'10bb'
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+10bb                                                                                                                    
+SELECT distinct c FROM LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = X'10cc'
+EXPECTED EXCEPTION comparing long type. Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+SELECT distinct c FROM CLOB_TAB WHERE c = '13'
+EXPECTED EXCEPTION comparing long type. Comparisons between 'CLOB' and 'CHAR' are not supported.
+SELECT distinct c FROM DATE_TAB WHERE c = '2000-01-01'
+C         
+----------
+2000-01-01
+SELECT distinct c FROM TIME_TAB WHERE c = '15:30:20'
+C       
+--------
+15:30:20
+SELECT distinct c FROM TIMESTAMP_TAB WHERE c = 'xxxxxxFILTERED-TIMESTAMPxxxxx
+C                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT distinct c FROM BLOB_TAB WHERE c = X'01dd'
+EXPECTED EXCEPTION comparing long type. Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS SMALLINT)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(NULL AS SMALLINT)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(NULL AS SMALLINT)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS SMALLINT)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(NULL AS SMALLINT)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS SMALLINT)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'SMALLINT' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'SMALLINT' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'SMALLINT' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'SMALLINT' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'SMALLINT' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'SMALLINT' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'SMALLINT' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'SMALLINT' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'SMALLINT' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'SMALLINT' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS INTEGER)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(NULL AS INTEGER)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(NULL AS INTEGER)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS INTEGER)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(NULL AS INTEGER)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS INTEGER)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'INTEGER' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'INTEGER' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'INTEGER' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'INTEGER' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'INTEGER' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'INTEGER' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'INTEGER' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'INTEGER' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'INTEGER' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'INTEGER' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'INTEGER' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS BIGINT)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(NULL AS BIGINT)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(NULL AS BIGINT)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS BIGINT)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(NULL AS BIGINT)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS BIGINT)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'BIGINT' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'BIGINT' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'BIGINT' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'BIGINT' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'BIGINT' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'BIGINT' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'BIGINT' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'BIGINT' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'BIGINT' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'BIGINT' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'BIGINT' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'DECIMAL' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'DECIMAL' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'DECIMAL' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'DECIMAL' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'DECIMAL' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'DECIMAL' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'DECIMAL' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'DECIMAL' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'DECIMAL' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'DECIMAL' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS REAL)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(NULL AS REAL)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(NULL AS REAL)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS REAL)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(NULL AS REAL)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS REAL)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'REAL' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'REAL' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'REAL' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'REAL' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'REAL' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'REAL' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'REAL' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'REAL' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'REAL' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'REAL' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'REAL' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS DOUBLE)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(NULL AS DOUBLE)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(NULL AS DOUBLE)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS DOUBLE)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(NULL AS DOUBLE)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS DOUBLE)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'DOUBLE' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'DOUBLE' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'DOUBLE' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'DOUBLE' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'DOUBLE' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'DOUBLE' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'DOUBLE' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'DOUBLE' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'DOUBLE' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'DOUBLE' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'CHAR' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'CHAR' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'CHAR' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS CHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS CHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'CHAR' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'CHAR' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS CHAR(60))
+C         
+----------
+select c from TIME_TAB WHERE c = CAST(NULL AS CHAR(60))
+C       
+--------
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS CHAR(60))
+C                         
+--------------------------
+select c from BLOB_TAB WHERE c = CAST(NULL AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'CHAR' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'VARCHAR' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'VARCHAR' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'VARCHAR' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'VARCHAR' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'VARCHAR' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'VARCHAR' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'VARCHAR' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'VARCHAR' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+C         
+----------
+select c from TIME_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+C       
+--------
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+C                         
+--------------------------
+select c from BLOB_TAB WHERE c = CAST(NULL AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'VARCHAR' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'LONG VARCHAR' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'LONG VARCHAR' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'LONG VARCHAR' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'LONG VARCHAR' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'LONG VARCHAR' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'LONG VARCHAR' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'LONG VARCHAR' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'LONG VARCHAR' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'LONG VARCHAR' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'LONG VARCHAR' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'LONG VARCHAR' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'LONG VARCHAR' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'LONG VARCHAR' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'LONG VARCHAR' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'LONG VARCHAR' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'LONG VARCHAR' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'CHAR () FOR BIT DATA' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'CHAR () FOR BIT DATA' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'CHAR () FOR BIT DATA' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'CHAR () FOR BIT DATA' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'CHAR () FOR BIT DATA' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'CHAR () FOR BIT DATA' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'CHAR () FOR BIT DATA' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'CHAR () FOR BIT DATA' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'CHAR () FOR BIT DATA' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'CHAR () FOR BIT DATA' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'CHAR () FOR BIT DATA' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'CHAR () FOR BIT DATA' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'CLOB' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'CLOB' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'CLOB' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'CLOB' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'CLOB' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'CLOB' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'CLOB' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'CLOB' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'CLOB' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'CLOB' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'CLOB' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CLOB' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'CLOB' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'CLOB' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'CLOB' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'CLOB' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'CLOB' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'DATE' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'DATE' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'DATE' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'DATE' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'DATE' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'DATE' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS DATE)
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS DATE)
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'DATE' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'DATE' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'DATE' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'DATE' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'DATE' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS DATE)
+C         
+----------
+select c from TIME_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'DATE' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'DATE' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'DATE' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'TIME' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'TIME' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'TIME' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'TIME' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'TIME' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'TIME' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS TIME)
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS TIME)
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'TIME' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'TIME' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'TIME' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'TIME' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'TIME' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'TIME' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS TIME)
+C       
+--------
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'TIME' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'TIME' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'TIMESTAMP' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'TIMESTAMP' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'TIMESTAMP' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'TIMESTAMP' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'TIMESTAMP' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'TIMESTAMP' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'TIMESTAMP' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'TIMESTAMP' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'TIMESTAMP' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'TIMESTAMP' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'TIMESTAMP' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'TIMESTAMP' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'TIMESTAMP' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+C                         
+--------------------------
+select c from BLOB_TAB WHERE c = CAST(NULL AS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'TIMESTAMP' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'BLOB' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'BLOB' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'BLOB' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'BLOB' are not supported.
+select c from REAL_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'BLOB' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'BLOB' are not supported.
+select c from CHAR_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'BLOB' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'BLOB' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'BLOB' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'BLOB' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'BLOB' are not supported.
+select c from CLOB_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'BLOB' are not supported.
+select c from DATE_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'BLOB' are not supported.
+select c from TIME_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'BLOB' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'BLOB' are not supported.
+select c from BLOB_TAB WHERE c = CAST(NULL AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'BLOB' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(0 AS SMALLINT)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(0 AS SMALLINT)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(0 AS SMALLINT)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(0 AS SMALLINT)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(0 AS SMALLINT)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(0 AS SMALLINT)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'SMALLINT' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'SMALLINT' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'SMALLINT' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'SMALLINT' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'SMALLINT' are not supported.
+select c from CLOB_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'SMALLINT' are not supported.
+select c from DATE_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'SMALLINT' are not supported.
+select c from TIME_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'SMALLINT' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'SMALLINT' are not supported.
+select c from BLOB_TAB WHERE c = CAST(0 AS SMALLINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'SMALLINT' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(11 AS INTEGER)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(11 AS INTEGER)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(11 AS INTEGER)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(11 AS INTEGER)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(11 AS INTEGER)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(11 AS INTEGER)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'INTEGER' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'INTEGER' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'INTEGER' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'INTEGER' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'INTEGER' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'INTEGER' are not supported.
+select c from CLOB_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'INTEGER' are not supported.
+select c from DATE_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'INTEGER' are not supported.
+select c from TIME_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'INTEGER' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'INTEGER' are not supported.
+select c from BLOB_TAB WHERE c = CAST(11 AS INTEGER)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'INTEGER' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(22 AS BIGINT)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(22 AS BIGINT)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(22 AS BIGINT)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(22 AS BIGINT)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(22 AS BIGINT)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(22 AS BIGINT)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'BIGINT' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'BIGINT' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'BIGINT' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'BIGINT' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'BIGINT' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'BIGINT' are not supported.
+select c from CLOB_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'BIGINT' are not supported.
+select c from DATE_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'BIGINT' are not supported.
+select c from TIME_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'BIGINT' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'BIGINT' are not supported.
+select c from BLOB_TAB WHERE c = CAST(22 AS BIGINT)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'BIGINT' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'DECIMAL' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'DECIMAL' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'DECIMAL' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'DECIMAL' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'DECIMAL' are not supported.
+select c from CLOB_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'DECIMAL' are not supported.
+select c from DATE_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'DECIMAL' are not supported.
+select c from TIME_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'DECIMAL' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'DECIMAL' are not supported.
+select c from BLOB_TAB WHERE c = CAST(3.3 AS DECIMAL(10,5))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'DECIMAL' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(4.4 AS REAL)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(4.4 AS REAL)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(4.4 AS REAL)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(4.4 AS REAL)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(4.4 AS REAL)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(4.4 AS REAL)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'REAL' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'REAL' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'REAL' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'REAL' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'REAL' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'REAL' are not supported.
+select c from CLOB_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'REAL' are not supported.
+select c from DATE_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'REAL' are not supported.
+select c from TIME_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'REAL' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'REAL' are not supported.
+select c from BLOB_TAB WHERE c = CAST(4.4 AS REAL)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'REAL' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(5.5 AS DOUBLE)
+C     
+------
+select c from INTEGER_TAB WHERE c = CAST(5.5 AS DOUBLE)
+C          
+-----------
+select c from BIGINT_TAB WHERE c = CAST(5.5 AS DOUBLE)
+C                   
+--------------------
+select c from DECIMAL_TAB WHERE c = CAST(5.5 AS DOUBLE)
+C            
+-------------
+select c from REAL_TAB WHERE c = CAST(5.5 AS DOUBLE)
+C            
+-------------
+select c from DOUBLE_TAB WHERE c = CAST(5.5 AS DOUBLE)
+C                     
+----------------------
+select c from CHAR_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'DOUBLE' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'DOUBLE' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'DOUBLE' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'DOUBLE' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'DOUBLE' are not supported.
+select c from CLOB_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'DOUBLE' are not supported.
+select c from DATE_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'DOUBLE' are not supported.
+select c from TIME_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'DOUBLE' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'DOUBLE' are not supported.
+select c from BLOB_TAB WHERE c = CAST(5.5 AS DOUBLE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'DOUBLE' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('0' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('11' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'CHAR' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('22' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'CHAR' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('3.3' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+select c from REAL_TAB WHERE c = CAST('4.4' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'CHAR' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('5.5' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+select c from CHAR_TAB WHERE c = CAST('7' AS CHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST('8' AS CHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST('9' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10aa' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10bb' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10cc' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+select c from CLOB_TAB WHERE c = CAST('13' AS CHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'CHAR' are not supported.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS CHAR(60))
+C         
+----------
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS CHAR(60))
+C       
+--------
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS CHAR(60))
+C                         
+--------------------------
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS CHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+select c from SMALLINT_TAB WHERE c = CAST('0' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'VARCHAR' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('11' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'VARCHAR' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('22' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'VARCHAR' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('3.3' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'VARCHAR' are not supported.
+select c from REAL_TAB WHERE c = CAST('4.4' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'VARCHAR' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('5.5' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'VARCHAR' are not supported.
+select c from CHAR_TAB WHERE c = CAST('7' AS VARCHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST('8' AS VARCHAR(60))
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST('9' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'VARCHAR' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10aa' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10bb' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10cc' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+select c from CLOB_TAB WHERE c = CAST('13' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'VARCHAR' are not supported.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS VARCHAR(60))
+C         
+----------
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS VARCHAR(60))
+C       
+--------
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS VARCHAR(60))
+C                         
+--------------------------
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS VARCHAR(60))
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'VARCHAR'.
+select c from SMALLINT_TAB WHERE c = CAST('0' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'LONG VARCHAR' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('11' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'LONG VARCHAR' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('22' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'LONG VARCHAR' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('3.3' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'LONG VARCHAR' are not supported.
+select c from REAL_TAB WHERE c = CAST('4.4' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'LONG VARCHAR' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('5.5' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'LONG VARCHAR' are not supported.
+select c from CHAR_TAB WHERE c = CAST('7' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'LONG VARCHAR' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST('8' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'LONG VARCHAR' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST('9' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'LONG VARCHAR' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10aa' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10bb' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10cc' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+select c from CLOB_TAB WHERE c = CAST('13' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'LONG VARCHAR' are not supported.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'LONG VARCHAR' are not supported.
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'LONG VARCHAR' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS LONG VARCHAR)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'LONG VARCHAR' are not supported.
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS LONG VARCHAR)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR () FOR BIT DATA' to 'LONG VARCHAR'.
+select c from SMALLINT_TAB WHERE c = CAST('0' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from INTEGER_TAB WHERE c = CAST('11' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from BIGINT_TAB WHERE c = CAST('22' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from DECIMAL_TAB WHERE c = CAST('3.3' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from REAL_TAB WHERE c = CAST('4.4' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from DOUBLE_TAB WHERE c = CAST('5.5' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from CHAR_TAB WHERE c = CAST('7' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from VARCHAR_TAB WHERE c = CAST('8' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from LONG_VARCHAR_TAB WHERE c = CAST('9' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10aa' AS CHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10bb' AS CHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10cc' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CHAR () FOR BIT DATA' are not supported.
+select c from CLOB_TAB WHERE c = CAST('13' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'CHAR () FOR BIT DATA'.
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS CHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'CHAR () FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('0' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from INTEGER_TAB WHERE c = CAST('11' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from BIGINT_TAB WHERE c = CAST('22' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from DECIMAL_TAB WHERE c = CAST('3.3' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from REAL_TAB WHERE c = CAST('4.4' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from DOUBLE_TAB WHERE c = CAST('5.5' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from CHAR_TAB WHERE c = CAST('7' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from VARCHAR_TAB WHERE c = CAST('8' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from LONG_VARCHAR_TAB WHERE c = CAST('9' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10aa' AS VARCHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10bb' AS VARCHAR(60) FOR BIT DATA)
+C                                                                                                                       
+------------------------------------------------------------------------------------------------------------------------
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10cc' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from CLOB_TAB WHERE c = CAST('13' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'VARCHAR () FOR BIT DATA'.
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS VARCHAR(60) FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'VARCHAR () FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('0' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from INTEGER_TAB WHERE c = CAST('11' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from BIGINT_TAB WHERE c = CAST('22' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from DECIMAL_TAB WHERE c = CAST('3.3' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from REAL_TAB WHERE c = CAST('4.4' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from DOUBLE_TAB WHERE c = CAST('5.5' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from CHAR_TAB WHERE c = CAST('7' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from VARCHAR_TAB WHERE c = CAST('8' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from LONG_VARCHAR_TAB WHERE c = CAST('9' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10aa' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10bb' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'10cc' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from CLOB_TAB WHERE c = CAST('13' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42846:Cannot convert types 'CHAR' to 'LONG VARCHAR FOR BIT DATA'.
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS LONG VARCHAR FOR BIT DATA)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'LONG VARCHAR FOR BIT DATA' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'CLOB' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'CLOB' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'CLOB' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'CLOB' are not supported.
+select c from REAL_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'CLOB' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'CLOB' are not supported.
+select c from CHAR_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'CLOB' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'CLOB' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'CLOB' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'CLOB' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'CLOB' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'CLOB' are not supported.
+select c from CLOB_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'CLOB' are not supported.
+select c from DATE_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'CLOB' are not supported.
+select c from TIME_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'CLOB' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'CLOB' are not supported.
+select c from BLOB_TAB WHERE c = CAST('13' AS CLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'CLOB' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'DATE' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'DATE' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'DATE' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'DATE' are not supported.
+select c from REAL_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'DATE' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'DATE' are not supported.
+select c from CHAR_TAB WHERE c = CAST('2000-01-01' AS DATE)
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST('2000-01-01' AS DATE)
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'DATE' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'DATE' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'DATE' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'DATE' are not supported.
+select c from CLOB_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'DATE' are not supported.
+select c from DATE_TAB WHERE c = CAST('2000-01-01' AS DATE)
+C         
+----------
+select c from TIME_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'DATE' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'DATE' are not supported.
+select c from BLOB_TAB WHERE c = CAST('2000-01-01' AS DATE)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'DATE' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'TIME' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'TIME' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'TIME' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'TIME' are not supported.
+select c from REAL_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'TIME' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'TIME' are not supported.
+select c from CHAR_TAB WHERE c = CAST('15:30:20' AS TIME)
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST('15:30:20' AS TIME)
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'TIME' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'TIME' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'TIME' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'TIME' are not supported.
+select c from CLOB_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'TIME' are not supported.
+select c from DATE_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'TIME' are not supported.
+select c from TIME_TAB WHERE c = CAST('15:30:20' AS TIME)
+C       
+--------
+select c from TIMESTAMP_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'TIME' are not supported.
+select c from BLOB_TAB WHERE c = CAST('15:30:20' AS TIME)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'TIME' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'TIMESTAMP' are not supported.
+select c from INTEGER_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'TIMESTAMP' are not supported.
+select c from BIGINT_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'TIMESTAMP' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'TIMESTAMP' are not supported.
+select c from REAL_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'TIMESTAMP' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'TIMESTAMP' are not supported.
+select c from CHAR_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+C                                                           
+------------------------------------------------------------
+select c from VARCHAR_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+C                                                           
+------------------------------------------------------------
+select c from LONG_VARCHAR_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'TIMESTAMP' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'TIMESTAMP' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'TIMESTAMP' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'TIMESTAMP' are not supported.
+select c from CLOB_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'TIMESTAMP' are not supported.
+select c from DATE_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'TIMESTAMP' are not supported.
+select c from TIME_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'TIMESTAMP' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+C                         
+--------------------------
+select c from BLOB_TAB WHERE c = CAST('xxxxxxFILTERED-TIMESTAMPxxxxxAS TIMESTAMP)
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'TIMESTAMP' are not supported.
+select c from SMALLINT_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'SMALLINT' and 'BLOB' are not supported.
+select c from INTEGER_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'INTEGER' and 'BLOB' are not supported.
+select c from BIGINT_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BIGINT' and 'BLOB' are not supported.
+select c from DECIMAL_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DECIMAL' and 'BLOB' are not supported.
+select c from REAL_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'REAL' and 'BLOB' are not supported.
+select c from DOUBLE_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DOUBLE' and 'BLOB' are not supported.
+select c from CHAR_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR' and 'BLOB' are not supported.
+select c from VARCHAR_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR' and 'BLOB' are not supported.
+select c from LONG_VARCHAR_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR' and 'BLOB' are not supported.
+select c from CHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CHAR () FOR BIT DATA' and 'BLOB' are not supported.
+select c from VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'VARCHAR () FOR BIT DATA' and 'BLOB' are not supported.
+select c from LONG_VARCHAR_FOR_BIT_DATA_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'BLOB' are not supported.
+select c from CLOB_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'CLOB' and 'BLOB' are not supported.
+select c from DATE_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'DATE' and 'BLOB' are not supported.
+select c from TIME_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIME' and 'BLOB' are not supported.
+select c from TIMESTAMP_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'TIMESTAMP' and 'BLOB' are not supported.
+select c from BLOB_TAB WHERE c = CAST(X'01dd' AS BLOB(1k))
+EXPECTED EXCEPTION: 42818:Comparisons between 'BLOB' and 'BLOB' are not supported.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkConstraint.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkConstraint.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,377 @@
+ij> -- tests for check constraints
+autocommit off;
+ij> -- negative
+-- The following are not allowed in check constraints:
+--	?, subquery, datetime functions
+create table neg1(c1 int check(?));
+ERROR 42Y39: '?' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> create table neg1(c1 int check(c1 in (select c1 from neg1)));
+ERROR 42Y39: 'subquery' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> create table neg1(c1 int check(CURRENT_DATE = CURRENT_DATE));
+ERROR 42Y39: 'CURRENT DATE' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> create table neg1(c1 int check(CURRENT_TIME = CURRENT_TIME));
+ERROR 42Y39: 'CURRENT TIME' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> create table neg1(c1 int check(CURRENT_TIMESTAMP = CURRENT_TIMESTAMP));
+ERROR 42Y39: 'CURRENT TIMSTAMP' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> -- The check constraint definition must evaluate to a boolean
+create table neg1(c1 int check(c1));
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> create table neg1(c1 int check(1));
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> create table neg1(c1 int check(c1+c1));
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> -- All column references are to target table
+create table neg1(c1 int check((c2 = 1)));
+ERROR 42X04: Column 'C2' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C2' is not a column in the target table.
+ij> -- verify that a check constraint can't be used as an optimizer override
+create table t1(c1 int constraint asdf check(c1 = 1));
+0 rows inserted/updated/deleted
+ij> select * from t1 properties constraint = asdf;
+ERROR 42X01: Syntax error: PROPERTIES.
+ij> -- alter table t1 drop constraint asdf;
+rollback;
+ij> -- alter table t1 drop constraint asdf;
+-- forward references should fail
+create table neg1(c1 int check(c2 = 1), c2 int);
+ERROR 42621: A check constraint or generated column that is defined with 'C1' is invalid.
+ij> create table neg2(c1 int constraint asdf check(c2 = 1), c2 int);
+ERROR 42621: A check constraint or generated column that is defined with 'C1' is invalid.
+ij> rollback;
+ij> -- positive
+-- multiple check constraints on same table
+create table pos1(c1 int check(c1 > 0), constraint asdf check(c1 < 10));
+0 rows inserted/updated/deleted
+ij> -- verify both constraints are enforced
+insert into pos1 values 0;
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'APP.POS1'.
+ij> insert into pos1 values 1;
+1 row inserted/updated/deleted
+ij> insert into pos1 values 9;
+1 row inserted/updated/deleted
+ij> insert into pos1 values 10;
+ERROR 23513: The check constraint 'ASDF' was violated while performing an INSERT or UPDATE on table 'APP.POS1'.
+ij> select * from pos1;
+C1         
+-----------
+1          
+9          
+ij> -- verify constraint violation rolls back entire statement
+update pos1 set c1 = c1 + 1;
+ERROR 23513: The check constraint 'ASDF' was violated while performing an INSERT or UPDATE on table 'APP.POS1'.
+ij> select * from pos1;
+C1         
+-----------
+1          
+9          
+ij> update pos1 set c1 = c1 - 1;
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'APP.POS1'.
+ij> select * from pos1;
+C1         
+-----------
+1          
+9          
+ij> rollback;
+ij> -- conflicting constraints, should fail
+create table negcks(c1 int constraint ck1st check(c1 > 4), c2 int constraint ck2nd check(c2 > 2), c3 int, constraint ckLast check(c2 > c1));
+0 rows inserted/updated/deleted
+ij> -- constraint ck1st fails
+insert into negcks values (1, 3, 3);
+ERROR 23513: The check constraint 'CK1ST' was violated while performing an INSERT or UPDATE on table 'APP.NEGCKS'.
+ij> -- constraint ckLast fails (ck2nd fails too)
+insert into negcks values (5, 1, 3);
+ERROR 23513: The check constraint 'CKLAST' was violated while performing an INSERT or UPDATE on table 'APP.NEGCKS'.
+ij> -- constraint ck1st fails (ckLast fails too)
+insert into negcks values (2, 3, 3);
+ERROR 23513: The check constraint 'CK1ST' was violated while performing an INSERT or UPDATE on table 'APP.NEGCKS'.
+ij> rollback;
+ij> -- same source and target tables
+create table pos1(c1 int, c2 int, constraint ck1 check (c1 < c2));
+0 rows inserted/updated/deleted
+ij> insert into pos1 values (1, 2), (2, 3), (3, 4);
+3 rows inserted/updated/deleted
+ij> commit;
+ij> -- these should work
+insert into pos1 select * from pos1;
+3 rows inserted/updated/deleted
+ij> select count(*) from pos1;
+1          
+-----------
+6          
+ij> update pos1 set c2 = (select max(c1) from pos1),
+				c1 = (select min(c2) from pos1);
+6 rows inserted/updated/deleted
+ij> select * from pos1;
+C1         |C2         
+-----------------------
+2          |3          
+2          |3          
+2          |3          
+2          |3          
+2          |3          
+2          |3          
+ij> rollback;
+ij> -- these should fail
+insert into pos1 select c2, c1 from pos1;
+ERROR 23513: The check constraint 'CK1' was violated while performing an INSERT or UPDATE on table 'APP.POS1'.
+ij> select count(*) from pos1;
+1          
+-----------
+3          
+ij> update pos1 set c2 = (select min(c1) from pos1),
+				c1 = (select max(c2) from pos1);
+ERROR 23513: The check constraint 'CK1' was violated while performing an INSERT or UPDATE on table 'APP.POS1'.
+ij> select * from pos1;
+C1         |C2         
+-----------------------
+1          |2          
+2          |3          
+3          |4          
+ij> drop table pos1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- union under insert
+create table t1(c1 int, c2 int, constraint ck1 check(c1 = c2));
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1), (2, 1);
+ERROR 23513: The check constraint 'CK1' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> select * from t1;
+C1         |C2         
+-----------------------
+ij> -- normalize result set under insert/update
+insert into t1 values (1.0, 1);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2.0, 1);
+ERROR 23513: The check constraint 'CK1' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |1          
+ij> update t1 set c2 = 1.0;
+1 row inserted/updated/deleted
+ij> update t1 set c2 = 2.0;
+ERROR 23513: The check constraint 'CK1' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |1          
+ij> update t1 set c1 = 3.0, c2 = 3.0;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+3          |3          
+ij> rollback;
+ij> -- positioned update
+create table t1(c1 int, c2 int, constraint ck1 check(c1 = c2), constraint ck2 check(c2=c1));
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1), (2, 2), (3, 3), (4, 4);
+4 rows inserted/updated/deleted
+ij> create index i1 on t1(c1);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select * from t1 where c2 = 2 for update of c1';
+ij> next c1;
+C1         |C2         
+-----------------------
+2          |2          
+ij> -- this update should succeed
+update t1 set c1 = c1 where current of c1;
+1 row inserted/updated/deleted
+ij> -- this update should fail
+update t1 set c1 = c1 + 1 where current of c1;
+ERROR 23513: The check constraint 'CK2' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> close c1;
+ij> get cursor c2 as 'select * from t1 where c1 = 2 for update of c2';
+ij> next c2;
+C1         |C2         
+-----------------------
+2          |2          
+ij> -- this update should succeed
+update t1 set c2 = c2 where current of c2;
+1 row inserted/updated/deleted
+ij> -- this update should fail
+update t1 set c2 = c2 + 1 where current of c2;
+ERROR 23513: The check constraint 'CK2' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> close c2;
+ij> get cursor c3 as 'select * from t1 where c1 = 2 for update of c1, c2';
+ij> next c3;
+C1         |C2         
+-----------------------
+2          |2          
+ij> -- this update should succeed
+update t1 set c2 = c1, c1 = c2 where current of c3;
+1 row inserted/updated/deleted
+ij> -- this update should fail
+update t1 set c2 = c2 + 1, c1 = c1 + 3 where current of c3;
+ERROR 23513: The check constraint 'CK2' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> -- this update should succeed
+update t1 set c2 = c1 + 3, c1 = c2 + 3 where current of c3;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |1          
+5          |5          
+3          |3          
+4          |4          
+ij> close c3;
+ij> rollback;
+ij> -- complex expressions
+create table t1(c1 int check((c1 + c1) = (c1 * c1) or 
+							 (c1 + c1)/2 = (c1 * c1)), c2 int);
+0 rows inserted/updated/deleted
+ij> -- this insert should succeed
+insert into t1 values (1, 9), (2, 10);
+2 rows inserted/updated/deleted
+ij> -- these updates should succeed
+update t1 set c2 = c2 * c2;
+2 rows inserted/updated/deleted
+ij> update t1 set c1 = 2 where c1 = 1;
+1 row inserted/updated/deleted
+ij> update t1 set c1 = 1 where c1 = 2;
+2 rows inserted/updated/deleted
+ij> -- this update should fail
+update t1 set c1 = c2;
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'APP.T1'.
+ij> select * from t1;
+C1         |C2         
+-----------------------
+1          |81         
+1          |100        
+ij> rollback;
+ij> -- built-in functions in a check constraint
+create table charTab (c1 char(4) check(CHAR(c1) = c1));
+0 rows inserted/updated/deleted
+ij> insert into charTab values 'asdf';
+1 row inserted/updated/deleted
+ij> insert into charTab values 'fdsa';
+1 row inserted/updated/deleted
+ij> -- beetle 5805 - support built-in function INT
+-- should fail until beetle 5805 is implemented
+create table intTab (c1 int check(INT(1) = c1));
+ERROR 42X01: Syntax error: Encountered "INT" at line 3, column 35.
+ij> insert into intTab values 1;
+ERROR 42X05: Table 'INTTAB' does not exist.
+ij> -- this insert should fail, does not satisfy check constraint
+insert into intTab values 2;
+ERROR 42X05: Table 'INTTAB' does not exist.
+ij> create table maxIntTab (c1 int check(INT(2147483647) > c1));
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 38.
+ij> insert into maxIntTab values 1;
+ERROR 42X05: Table 'MAXINTTAB' does not exist.
+ij> -- this insert should fail, does not satisfy check constraint
+insert into maxIntTab values 2147483647;
+ERROR 42X05: Table 'MAXINTTAB' does not exist.
+ij> rollback;
+ij> -- verify that inserts, updates and statements with forced constraints are
+-- indeed dependent on the constraints
+create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1, 2, 3, 4, 5;
+5 rows inserted/updated/deleted
+ij> commit;
+ij> prepare p1 as 'insert into t1 values 1';
+ij> prepare p2 as 'update t1 set c1 = 3 where c1 = 4';
+ij> prepare p3 as 'select * from t1';
+ij> -- the insert and update should fail, select should succeed
+execute p1;
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'ASDF' defined on 'T1'.
+ij> execute p2;
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'ASDF' defined on 'T1'.
+ij> execute p3;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+ij> alter table t1 drop constraint asdf;
+0 rows inserted/updated/deleted
+ij> -- rollback and verify that constraints are enforced and select succeeds
+rollback;
+ij> execute p1;
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'ASDF' defined on 'T1'.
+ij> execute p2;
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'ASDF' defined on 'T1'.
+ij> execute p3;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+ij> remove p1;
+ij> remove p2;
+ij> remove p3;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- check constraints with parameters
+create table t1(c1 int constraint asdf check(c1 = 1));
+0 rows inserted/updated/deleted
+ij> prepare p1 as 'insert into t1 values (?)';
+ij> execute p1 using 'values (1)';
+1 row inserted/updated/deleted
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1(active_flag char(2) check(active_flag IN ('Y', 'N')), araccount_active_flag char(2) check(araccount_active_flag IN ('Y', 'N')), automatic_refill_flag char(2) check(automatic_refill_flag IN ('Y', 'N')), call_when_ready_flag char(2) check(call_when_ready_flag IN ('Y', 'N')), compliance_flag char(2) check(compliance_flag IN ('Y', 'N')), delivery_flag char(2) check(delivery_flag IN ('Y', 'N')), double_count_flag char(2) check(double_count_flag IN ('Y', 'N')), gender_ind char(2) check(gender_ind IN ('M', 'F', 'U')), geriatric_flag char(2) check(geriatric_flag IN ('Y', 'N')), refuse_inquiry_flag char(2) check(refuse_inquiry_flag IN ('Y', 'N')), animal_flag char(2) check(animal_flag IN ('Y', 'N')), terminal_flag char(2) check(terminal_flag IN ('Y', 'N')), unit_flag char(2) check(unit_flag IN ('Y', 'N')), VIP_flag char(2) check(VIP_flag IN ('Y', 'N')), snap_cap_flag char(2) check(snap_cap_flag IN ('Y', 'N')), consent_on_file_flag char(2) check(consent_on_file_flag IN ('Y', 'N')), enlarged_SIG_flag char(2) check(enlarged_SIG_flag IN ('Y', 'N')),aquired_patient_flag char(2) check(aquired_patient_flag IN ('Y', 'N')));
+0 rows inserted/updated/deleted
+ij> -- bug 5622 - internal generated constraint names are re-worked to match db2's naming convention.
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (c1 int not null primary key, c2 int not null unique, c3 int check (c3>=0));
+0 rows inserted/updated/deleted
+ij> alter table t1 add column c4 int not null default 1;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c4_unique UNIQUE(c4);
+0 rows inserted/updated/deleted
+ij> alter table t1 add column c5 int check(c5 >= 0);
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T1';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+xxxxGENERATED-IDxxxx                                                                                                              |P
+xxxxGENERATED-IDxxxx                                                                                                              |U
+xxxxGENERATED-IDxxxx                                                                                                              |C
+C4_UNIQUE                                                                                                                       |U
+xxxxGENERATED-IDxxxx                                                                                                              |C
+ij> drop table t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> create table t2 (c21 int references t1);
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T2';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+xxxxGENERATED-IDxxxx                                                                                                              |F
+ij> drop table t3;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T3' because it does not exist.
+ij> create table t3 (c1 int check (c1 >= 0), c2 int check (c2 >= 0), c3 int check (c3 >= 0), c4 int check (c4 >= 0), c5 int check (c5 >= 0), 
+c6 int check (c6 >= 0), c7 int check (c7 >= 0), c8 int check (c8 >= 0), c9 int check (c9 >= 0), c10 int check (c10 >= 0), 
+c11 int check (c11 >= 0), c12 int check (c12 >= 0), c13 int check (c13 >= 0));
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T3';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+xxxxGENERATED-IDxxxx                                                                                                              |C
+ij> drop table t4;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T4' because it does not exist.
+ij> create table t4(c11 int not null, c12 int not null, primary key (c11, c12));
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T4';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+xxxxGENERATED-IDxxxx                                                                                                              |P
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkSecMgr.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkSecMgr.out	Thu Nov 11 23:39:22 2004
@@ -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: XJ001: Java exception: 'access denied (java.util.PropertyPermission notAllowed write): java.security.AccessControlException'.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/closed.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/closed.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,23 @@
+Test closed starting
+ERROR XJ012: 'Statement' already closed.
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ERROR 08003: No current connection.
+ERROR 08003: No current connection.
+ERROR 08003: No current connection.
+ERROR 08003: No current connection.
+ERROR 08003: No current connection.
+ERROR 08003: No current connection.
+ERROR 08003: No current connection.
+ERROR 08006: Database 'wombat' shutdown.
+CALL sleep(10000) - 38000, 38000 -- InterruptedException, XJ001 -- InterruptedException
+LOCK TABLE CLOSED.LOCKME IN EXCLUSIVE MODE - 08006, 08006 -- Database 'wombat' shutdown.
+ERROR 08006: Database 'wombat' shutdown.
+Shutdown test completed jdbc:derby:wombat;shutdown=true
+ERROR 08006: Database 'wombat' shutdown.
+CALL sleep(10000) - 38000, 38000 -- InterruptedException, XJ001 -- InterruptedException
+LOCK TABLE CLOSED.LOCKME IN EXCLUSIVE MODE - 08006, 08006 -- Database 'wombat' shutdown.
+ERROR XJ015: Derby system shutdown.
+Shutdown test completed jdbc:derby:;shutdown=true
+PASS
+Test closed finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/coalesceTests.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/coalesceTests.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3941 @@
+TestA - some syntax testing for Coalesce/Value function
+TestAla - select coalesce from tA will give error because no arguments were supplied to the function
+expected exception Column 'COALESCE' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'COALESCE' is not a column in the target table.
+TestAlb - select value from tA will give error because no arguments were supplied to the function
+expected exception Column 'VALUE' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'VALUE' is not a column in the target table.
+TestA2a - select coalesce from tA will give error because no arguments were supplied inside the parentheses
+expected exception Syntax error: Encountered ")" at line 1, column 17.
+TestA2b - select value from tA will give error because no arguments were supplied inside the parentheses
+expected exception Syntax error: Encountered ")" at line 1, column 14.
+TestA3a - select coalesce from tA with only one argument will give error
+expected exception The number of arguments for function 'COALESCE' is incorrect.
+TestA3b - select value from tA with only one argument will give error
+expected exception The number of arguments for function 'VALUE' is incorrect.
+TestA4a - select coalesce from tA with incorrect column name will give error
+expected exception Column 'C111' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C111' is not a column in the target table.
+TestA4b - select value from tA with incorrect column name will give error
+expected exception Column 'C111' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C111' is not a column in the target table.
+TestA5a - create table with table name as coalesce and column name as coalesce will pass because coalesce is not a reserved-word
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1}
+TestA5b - create table with table name as value and column name as value will pass because value is not a reserved-word
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1}
+TestA6a - All arguments to coalesce function passed as parameters is an error
+expected exception All the arguments to the COALESC/VALUE function can not be parameters. Need to have at least one non-parameter argument.
+TestA6b - All arguments to value function passed as parameters is an error
+expected exception All the arguments to the COALESC/VALUE function can not be parameters. Need to have at least one non-parameter argument.
+Set up by creating table for testing all datatypes combinations
+create table AllDataTypesTable (SMALLINTCOL SMALLINT,INTEGERCOL INTEGER,BIGINTCOL BIGINT,DECIMALCOL DECIMAL(10,5),REALCOL REAL,DOUBLECOL DOUBLE,CHARCOL CHAR(60),VARCHARCOL VARCHAR(60),LONGVARCHARCOL LONG VARCHAR,CHARFORBITCOL CHAR(60) FOR BIT DATA,VARCHARFORBITCOL VARCHAR(60) FOR BIT DATA,LVARCHARFORBITCOL LONG VARCHAR FOR BIT DATA,CLOBCOL CLOB(1k),DATECOL DATE,TIMECOL TIME,TIMESTAMPCOL TIMESTAMP,BLOBCOL BLOB(1k))
+insert into AllDataTypesTable values(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)
+insert into AllDataTypesTable values(0,11,22,3.3,4.4,5.5,'1992-01-06','1992-01-07','1992-01-08',X'10aa',X'10bb',X'10cc','13','2000-01-01','15:30:20','xxxxxxFILTERED-TIMESTAMPxxxxx,NULL)
+insert into AllDataTypesTable values(1,111,222,3.33,4.44,5.55,'1992-01-16','1992-01-17','1992-01-18',NULL,NULL,NULL,'14','2000-01-01','15:30:20','xxxxxxFILTERED-TIMESTAMPxxxxx,NULL)
+insert into AllDataTypesTable values(2,NULL,3333,NULL,4.444,NULL,NULL,'15:30:20','xxxxxxFILTERED-TIMESTAMPxxxxx,X'10aaaa',X'10bbbb',X'10cccc',NULL,NULL,NULL,NULL,NULL)
+Start testing all compatible datatypes combinations in COALESCE/VALUE function
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL) from AllDataTypesTable
+	 COL1(datatype : SMALLINT, precision : 5, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{0.00000}
+	{1.00000}
+	{2.00000}
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0.0}
+	{1.0}
+	{2.0}
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL,DOUBLECOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0.0}
+	{1.0}
+	{2.0}
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL) from AllDataTypesTable
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{2}
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{2}
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{2}
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{11.00000}
+	{111.00000}
+	{2.00000}
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11.0}
+	{111.0}
+	{2.0}
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL,DOUBLECOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11.0}
+	{111.0}
+	{2.0}
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL) from AllDataTypesTable
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{22.00000}
+	{222.00000}
+	{3333.00000}
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22.0}
+	{222.0}
+	{3333.0}
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL,DOUBLECOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22.0}
+	{222.0}
+	{3333.0}
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{2.00000}
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 15, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{2.00000}
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{2.00000}
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{2.00000}
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{3.3}
+	{3.33}
+	{2.0}
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL,DOUBLECOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{3.3}
+	{3.33}
+	{2.0}
+SELECT COALESCE(REALCOL,SMALLINTCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL,DOUBLECOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL,INTEGERCOL,BIGINTCOL,DECIMALCOL,REALCOL,DOUBLECOL) from AllDataTypesTable
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(CHARCOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : CHAR, precision : 60, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{null}
+SELECT COALESCE(CHARCOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{15:30:20}
+SELECT COALESCE(CHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{15:30:20}
+SELECT COALESCE(CHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{15:30:20}
+SELECT COALESCE(CHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL,DATECOL) from AllDataTypesTable
+expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(CHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL,DATECOL,TIMECOL) from AllDataTypesTable
+expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(CHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL,DATECOL,TIMECOL,TIMESTAMPCOL) from AllDataTypesTable
+expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(VARCHARCOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL,DATECOL) from AllDataTypesTable
+expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(VARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL,DATECOL,TIMECOL) from AllDataTypesTable
+expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(VARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL,DATECOL,TIMECOL,TIMESTAMPCOL) from AllDataTypesTable
+expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(CHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 ----------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT COALESCE(CHARFORBITCOL,CHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT COALESCE(CHARFORBITCOL,CHARFORBITCOL,VARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT COALESCE(VARCHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT COALESCE(VARCHARFORBITCOL,CHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT COALESCE(VARCHARFORBITCOL,CHARFORBITCOL,VARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT COALESCE(LVARCHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT COALESCE(LVARCHARFORBITCOL,CHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT COALESCE(LVARCHARFORBITCOL,CHARFORBITCOL,VARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT COALESCE(CLOBCOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{null}
+SELECT COALESCE(CLOBCOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{15:30:20}
+SELECT COALESCE(CLOBCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{15:30:20}
+SELECT COALESCE(CLOBCOL,CHARCOL,VARCHARCOL,LONGVARCHARCOL,CLOBCOL) from AllDataTypesTable
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{15:30:20}
+SELECT COALESCE(DATECOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{2000-01-01}
+	{2000-01-01}
+	{null}
+SELECT COALESCE(DATECOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(DATECOL,CHARCOL,VARCHARCOL,DATECOL) from AllDataTypesTable
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(TIMECOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{null}
+SELECT COALESCE(TIMECOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{15:30:20}
+SELECT COALESCE(TIMECOL,CHARCOL,VARCHARCOL,TIMECOL) from AllDataTypesTable
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{15:30:20}
+SELECT COALESCE(TIMESTAMPCOL,CHARCOL) from AllDataTypesTable
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{null}
+SELECT COALESCE(TIMESTAMPCOL,CHARCOL,VARCHARCOL) from AllDataTypesTable
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(TIMESTAMPCOL,CHARCOL,VARCHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(BLOBCOL,BLOBCOL) from AllDataTypesTable
+	 COL1(datatype : BLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{null}
+	{null}
+	{null}
+Start testing all datatypes combinations in COALESCE/VALUE function
+SELECT COALESCE(SMALLINTCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , SMALLINT will have result data type of SMALLINT
+	 COL1(datatype : SMALLINT, precision : 5, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT VALUE(SMALLINTCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , SMALLINT will have result data type of SMALLINT
+	 COL1(datatype : SMALLINT, precision : 5, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT COALESCE(SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , INTEGER will have result data type of INTEGER
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT VALUE(SMALLINTCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , INTEGER will have result data type of INTEGER
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT COALESCE(SMALLINTCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , BIGINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT VALUE(SMALLINTCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , BIGINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0}
+	{1}
+	{2}
+SELECT COALESCE(SMALLINTCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{0.00000}
+	{1.00000}
+	{2.00000}
+SELECT VALUE(SMALLINTCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{0.00000}
+	{1.00000}
+	{2.00000}
+SELECT COALESCE(SMALLINTCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0.0}
+	{1.0}
+	{2.0}
+SELECT VALUE(SMALLINTCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0.0}
+	{1.0}
+	{2.0}
+SELECT COALESCE(SMALLINTCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0.0}
+	{1.0}
+	{2.0}
+SELECT VALUE(SMALLINTCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands SMALLINT , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{0.0}
+	{1.0}
+	{2.0}
+SELECT COALESCE(SMALLINTCOL,CHARCOL) from AllDataTypesTable
+ Operands SMALLINT , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'CHAR' is incompatible.
+SELECT VALUE(SMALLINTCOL,CHARCOL) from AllDataTypesTable
+ Operands SMALLINT , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'CHAR' is incompatible.
+SELECT COALESCE(SMALLINTCOL,VARCHARCOL) from AllDataTypesTable
+ Operands SMALLINT , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'VARCHAR' is incompatible.
+SELECT VALUE(SMALLINTCOL,VARCHARCOL) from AllDataTypesTable
+ Operands SMALLINT , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'VARCHAR' is incompatible.
+SELECT COALESCE(SMALLINTCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands SMALLINT , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(SMALLINTCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands SMALLINT , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(SMALLINTCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands SMALLINT , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(SMALLINTCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands SMALLINT , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(SMALLINTCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands SMALLINT , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(SMALLINTCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands SMALLINT , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(SMALLINTCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands SMALLINT , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(SMALLINTCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands SMALLINT , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(SMALLINTCOL,CLOBCOL) from AllDataTypesTable
+ Operands SMALLINT , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'CLOB' is incompatible.
+SELECT VALUE(SMALLINTCOL,CLOBCOL) from AllDataTypesTable
+ Operands SMALLINT , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'CLOB' is incompatible.
+SELECT COALESCE(SMALLINTCOL,DATECOL) from AllDataTypesTable
+ Operands SMALLINT , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'DATE' is incompatible.
+SELECT VALUE(SMALLINTCOL,DATECOL) from AllDataTypesTable
+ Operands SMALLINT , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'DATE' is incompatible.
+SELECT COALESCE(SMALLINTCOL,TIMECOL) from AllDataTypesTable
+ Operands SMALLINT , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'TIME' is incompatible.
+SELECT VALUE(SMALLINTCOL,TIMECOL) from AllDataTypesTable
+ Operands SMALLINT , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'TIME' is incompatible.
+SELECT COALESCE(SMALLINTCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands SMALLINT , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(SMALLINTCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands SMALLINT , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(SMALLINTCOL,BLOBCOL) from AllDataTypesTable
+ Operands SMALLINT , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'BLOB' is incompatible.
+SELECT VALUE(SMALLINTCOL,BLOBCOL) from AllDataTypesTable
+ Operands SMALLINT , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'SMALLINT' and 'BLOB' is incompatible.
+SELECT COALESCE(INTEGERCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , SMALLINT will have result data type of INTEGER
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{2}
+SELECT VALUE(INTEGERCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , SMALLINT will have result data type of INTEGER
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{2}
+SELECT COALESCE(INTEGERCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , INTEGER will have result data type of INTEGER
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{null}
+SELECT VALUE(INTEGERCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , INTEGER will have result data type of INTEGER
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{null}
+SELECT COALESCE(INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , BIGINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{3333}
+SELECT VALUE(INTEGERCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , BIGINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11}
+	{111}
+	{3333}
+SELECT COALESCE(INTEGERCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 15, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{11.00000}
+	{111.00000}
+	{null}
+SELECT VALUE(INTEGERCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 15, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{11.00000}
+	{111.00000}
+	{null}
+SELECT COALESCE(INTEGERCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11.0}
+	{111.0}
+	{4.443999767303467}
+SELECT VALUE(INTEGERCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11.0}
+	{111.0}
+	{4.443999767303467}
+SELECT COALESCE(INTEGERCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11.0}
+	{111.0}
+	{null}
+SELECT VALUE(INTEGERCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands INTEGER , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{11.0}
+	{111.0}
+	{null}
+SELECT COALESCE(INTEGERCOL,CHARCOL) from AllDataTypesTable
+ Operands INTEGER , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'CHAR' is incompatible.
+SELECT VALUE(INTEGERCOL,CHARCOL) from AllDataTypesTable
+ Operands INTEGER , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'CHAR' is incompatible.
+SELECT COALESCE(INTEGERCOL,VARCHARCOL) from AllDataTypesTable
+ Operands INTEGER , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'VARCHAR' is incompatible.
+SELECT VALUE(INTEGERCOL,VARCHARCOL) from AllDataTypesTable
+ Operands INTEGER , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'VARCHAR' is incompatible.
+SELECT COALESCE(INTEGERCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands INTEGER , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(INTEGERCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands INTEGER , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(INTEGERCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands INTEGER , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(INTEGERCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands INTEGER , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(INTEGERCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands INTEGER , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(INTEGERCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands INTEGER , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(INTEGERCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands INTEGER , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(INTEGERCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands INTEGER , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(INTEGERCOL,CLOBCOL) from AllDataTypesTable
+ Operands INTEGER , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'CLOB' is incompatible.
+SELECT VALUE(INTEGERCOL,CLOBCOL) from AllDataTypesTable
+ Operands INTEGER , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'CLOB' is incompatible.
+SELECT COALESCE(INTEGERCOL,DATECOL) from AllDataTypesTable
+ Operands INTEGER , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'DATE' is incompatible.
+SELECT VALUE(INTEGERCOL,DATECOL) from AllDataTypesTable
+ Operands INTEGER , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'DATE' is incompatible.
+SELECT COALESCE(INTEGERCOL,TIMECOL) from AllDataTypesTable
+ Operands INTEGER , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'TIME' is incompatible.
+SELECT VALUE(INTEGERCOL,TIMECOL) from AllDataTypesTable
+ Operands INTEGER , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'TIME' is incompatible.
+SELECT COALESCE(INTEGERCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands INTEGER , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(INTEGERCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands INTEGER , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(INTEGERCOL,BLOBCOL) from AllDataTypesTable
+ Operands INTEGER , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'BLOB' is incompatible.
+SELECT VALUE(INTEGERCOL,BLOBCOL) from AllDataTypesTable
+ Operands INTEGER , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'INTEGER' and 'BLOB' is incompatible.
+SELECT COALESCE(BIGINTCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , SMALLINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT VALUE(BIGINTCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , SMALLINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT COALESCE(BIGINTCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , INTEGER will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT VALUE(BIGINTCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , INTEGER will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT COALESCE(BIGINTCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , BIGINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT VALUE(BIGINTCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , BIGINT will have result data type of BIGINT
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22}
+	{222}
+	{3333}
+SELECT COALESCE(BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{22.00000}
+	{222.00000}
+	{3333.00000}
+SELECT VALUE(BIGINTCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{22.00000}
+	{222.00000}
+	{3333.00000}
+SELECT COALESCE(BIGINTCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22.0}
+	{222.0}
+	{3333.0}
+SELECT VALUE(BIGINTCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22.0}
+	{222.0}
+	{3333.0}
+SELECT COALESCE(BIGINTCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22.0}
+	{222.0}
+	{3333.0}
+SELECT VALUE(BIGINTCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands BIGINT , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{22.0}
+	{222.0}
+	{3333.0}
+SELECT COALESCE(BIGINTCOL,CHARCOL) from AllDataTypesTable
+ Operands BIGINT , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'CHAR' is incompatible.
+SELECT VALUE(BIGINTCOL,CHARCOL) from AllDataTypesTable
+ Operands BIGINT , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'CHAR' is incompatible.
+SELECT COALESCE(BIGINTCOL,VARCHARCOL) from AllDataTypesTable
+ Operands BIGINT , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'VARCHAR' is incompatible.
+SELECT VALUE(BIGINTCOL,VARCHARCOL) from AllDataTypesTable
+ Operands BIGINT , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'VARCHAR' is incompatible.
+SELECT COALESCE(BIGINTCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands BIGINT , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(BIGINTCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands BIGINT , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(BIGINTCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands BIGINT , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(BIGINTCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands BIGINT , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(BIGINTCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands BIGINT , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(BIGINTCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands BIGINT , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(BIGINTCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands BIGINT , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(BIGINTCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands BIGINT , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(BIGINTCOL,CLOBCOL) from AllDataTypesTable
+ Operands BIGINT , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'CLOB' is incompatible.
+SELECT VALUE(BIGINTCOL,CLOBCOL) from AllDataTypesTable
+ Operands BIGINT , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'CLOB' is incompatible.
+SELECT COALESCE(BIGINTCOL,DATECOL) from AllDataTypesTable
+ Operands BIGINT , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'DATE' is incompatible.
+SELECT VALUE(BIGINTCOL,DATECOL) from AllDataTypesTable
+ Operands BIGINT , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'DATE' is incompatible.
+SELECT COALESCE(BIGINTCOL,TIMECOL) from AllDataTypesTable
+ Operands BIGINT , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'TIME' is incompatible.
+SELECT VALUE(BIGINTCOL,TIMECOL) from AllDataTypesTable
+ Operands BIGINT , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'TIME' is incompatible.
+SELECT COALESCE(BIGINTCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands BIGINT , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(BIGINTCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands BIGINT , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(BIGINTCOL,BLOBCOL) from AllDataTypesTable
+ Operands BIGINT , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'BLOB' is incompatible.
+SELECT VALUE(BIGINTCOL,BLOBCOL) from AllDataTypesTable
+ Operands BIGINT , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BIGINT' and 'BLOB' is incompatible.
+SELECT COALESCE(DECIMALCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , SMALLINT will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{2.00000}
+SELECT VALUE(DECIMALCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , SMALLINT will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{2.00000}
+SELECT COALESCE(DECIMALCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , INTEGER will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 15, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{null}
+SELECT VALUE(DECIMALCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , INTEGER will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 15, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{null}
+SELECT COALESCE(DECIMALCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , BIGINT will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{3333.00000}
+SELECT VALUE(DECIMALCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , BIGINT will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 24, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{3333.00000}
+SELECT COALESCE(DECIMALCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{null}
+SELECT VALUE(DECIMALCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , DECIMAL(10,5) will have result data type of DECIMAL
+	 COL1(datatype : DECIMAL, precision : 10, scale : 5)
+	 ---------------------------------------------------
+	{null}
+	{3.30000}
+	{3.33000}
+	{null}
+SELECT COALESCE(DECIMALCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{3.3}
+	{3.33}
+	{4.443999767303467}
+SELECT VALUE(DECIMALCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{3.3}
+	{3.33}
+	{4.443999767303467}
+SELECT COALESCE(DECIMALCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{3.3}
+	{3.33}
+	{null}
+SELECT VALUE(DECIMALCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands DECIMAL(10,5) , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{3.3}
+	{3.33}
+	{null}
+SELECT COALESCE(DECIMALCOL,CHARCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'CHAR' is incompatible.
+SELECT VALUE(DECIMALCOL,CHARCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'CHAR' is incompatible.
+SELECT COALESCE(DECIMALCOL,VARCHARCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'VARCHAR' is incompatible.
+SELECT VALUE(DECIMALCOL,VARCHARCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'VARCHAR' is incompatible.
+SELECT COALESCE(DECIMALCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(DECIMALCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(DECIMALCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(DECIMALCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(DECIMALCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(DECIMALCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(DECIMALCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(DECIMALCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(DECIMALCOL,CLOBCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'CLOB' is incompatible.
+SELECT VALUE(DECIMALCOL,CLOBCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'CLOB' is incompatible.
+SELECT COALESCE(DECIMALCOL,DATECOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'DATE' is incompatible.
+SELECT VALUE(DECIMALCOL,DATECOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'DATE' is incompatible.
+SELECT COALESCE(DECIMALCOL,TIMECOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'TIME' is incompatible.
+SELECT VALUE(DECIMALCOL,TIMECOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'TIME' is incompatible.
+SELECT COALESCE(DECIMALCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(DECIMALCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(DECIMALCOL,BLOBCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'BLOB' is incompatible.
+SELECT VALUE(DECIMALCOL,BLOBCOL) from AllDataTypesTable
+ Operands DECIMAL(10,5) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DECIMAL' and 'BLOB' is incompatible.
+SELECT COALESCE(REALCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , SMALLINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT VALUE(REALCOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , SMALLINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , INTEGER will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT VALUE(REALCOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , INTEGER will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , BIGINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT VALUE(REALCOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , BIGINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , DECIMAL(10,5) will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT VALUE(REALCOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , DECIMAL(10,5) will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , REAL will have result data type of REAL
+	 COL1(datatype : REAL, precision : 7, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{4.4}
+	{4.44}
+	{4.444}
+SELECT VALUE(REALCOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , REAL will have result data type of REAL
+	 COL1(datatype : REAL, precision : 7, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{4.4}
+	{4.44}
+	{4.444}
+SELECT COALESCE(REALCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT VALUE(REALCOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands REAL , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{4.400000095367432}
+	{4.440000057220459}
+	{4.443999767303467}
+SELECT COALESCE(REALCOL,CHARCOL) from AllDataTypesTable
+ Operands REAL , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'CHAR' is incompatible.
+SELECT VALUE(REALCOL,CHARCOL) from AllDataTypesTable
+ Operands REAL , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'CHAR' is incompatible.
+SELECT COALESCE(REALCOL,VARCHARCOL) from AllDataTypesTable
+ Operands REAL , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'VARCHAR' is incompatible.
+SELECT VALUE(REALCOL,VARCHARCOL) from AllDataTypesTable
+ Operands REAL , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'VARCHAR' is incompatible.
+SELECT COALESCE(REALCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands REAL , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(REALCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands REAL , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(REALCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands REAL , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(REALCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands REAL , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(REALCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands REAL , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(REALCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands REAL , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(REALCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands REAL , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(REALCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands REAL , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(REALCOL,CLOBCOL) from AllDataTypesTable
+ Operands REAL , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'CLOB' is incompatible.
+SELECT VALUE(REALCOL,CLOBCOL) from AllDataTypesTable
+ Operands REAL , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'CLOB' is incompatible.
+SELECT COALESCE(REALCOL,DATECOL) from AllDataTypesTable
+ Operands REAL , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'DATE' is incompatible.
+SELECT VALUE(REALCOL,DATECOL) from AllDataTypesTable
+ Operands REAL , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'DATE' is incompatible.
+SELECT COALESCE(REALCOL,TIMECOL) from AllDataTypesTable
+ Operands REAL , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'TIME' is incompatible.
+SELECT VALUE(REALCOL,TIMECOL) from AllDataTypesTable
+ Operands REAL , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'TIME' is incompatible.
+SELECT COALESCE(REALCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands REAL , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(REALCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands REAL , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(REALCOL,BLOBCOL) from AllDataTypesTable
+ Operands REAL , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'BLOB' is incompatible.
+SELECT VALUE(REALCOL,BLOBCOL) from AllDataTypesTable
+ Operands REAL , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'REAL' and 'BLOB' is incompatible.
+SELECT COALESCE(DOUBLECOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , SMALLINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT VALUE(DOUBLECOL,SMALLINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , SMALLINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{2.0}
+SELECT COALESCE(DOUBLECOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , INTEGER will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{null}
+SELECT VALUE(DOUBLECOL,INTEGERCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , INTEGER will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{null}
+SELECT COALESCE(DOUBLECOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , BIGINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{3333.0}
+SELECT VALUE(DOUBLECOL,BIGINTCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , BIGINT will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{3333.0}
+SELECT COALESCE(DOUBLECOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , DECIMAL(10,5) will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{null}
+SELECT VALUE(DOUBLECOL,DECIMALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , DECIMAL(10,5) will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{null}
+SELECT COALESCE(DOUBLECOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{4.443999767303467}
+SELECT VALUE(DOUBLECOL,REALCOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , REAL will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{4.443999767303467}
+SELECT COALESCE(DOUBLECOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{null}
+SELECT VALUE(DOUBLECOL,DOUBLECOL) from AllDataTypesTable
+ Coalesc/Value with operands DOUBLE , DOUBLE will have result data type of DOUBLE
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{5.5}
+	{5.55}
+	{null}
+SELECT COALESCE(DOUBLECOL,CHARCOL) from AllDataTypesTable
+ Operands DOUBLE , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'CHAR' is incompatible.
+SELECT VALUE(DOUBLECOL,CHARCOL) from AllDataTypesTable
+ Operands DOUBLE , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'CHAR' is incompatible.
+SELECT COALESCE(DOUBLECOL,VARCHARCOL) from AllDataTypesTable
+ Operands DOUBLE , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'VARCHAR' is incompatible.
+SELECT VALUE(DOUBLECOL,VARCHARCOL) from AllDataTypesTable
+ Operands DOUBLE , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'VARCHAR' is incompatible.
+SELECT COALESCE(DOUBLECOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands DOUBLE , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(DOUBLECOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands DOUBLE , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(DOUBLECOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands DOUBLE , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(DOUBLECOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands DOUBLE , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(DOUBLECOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands DOUBLE , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(DOUBLECOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands DOUBLE , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(DOUBLECOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands DOUBLE , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(DOUBLECOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands DOUBLE , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(DOUBLECOL,CLOBCOL) from AllDataTypesTable
+ Operands DOUBLE , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'CLOB' is incompatible.
+SELECT VALUE(DOUBLECOL,CLOBCOL) from AllDataTypesTable
+ Operands DOUBLE , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'CLOB' is incompatible.
+SELECT COALESCE(DOUBLECOL,DATECOL) from AllDataTypesTable
+ Operands DOUBLE , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'DATE' is incompatible.
+SELECT VALUE(DOUBLECOL,DATECOL) from AllDataTypesTable
+ Operands DOUBLE , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'DATE' is incompatible.
+SELECT COALESCE(DOUBLECOL,TIMECOL) from AllDataTypesTable
+ Operands DOUBLE , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'TIME' is incompatible.
+SELECT VALUE(DOUBLECOL,TIMECOL) from AllDataTypesTable
+ Operands DOUBLE , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'TIME' is incompatible.
+SELECT COALESCE(DOUBLECOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands DOUBLE , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(DOUBLECOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands DOUBLE , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(DOUBLECOL,BLOBCOL) from AllDataTypesTable
+ Operands DOUBLE , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'BLOB' is incompatible.
+SELECT VALUE(DOUBLECOL,BLOBCOL) from AllDataTypesTable
+ Operands DOUBLE , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DOUBLE' and 'BLOB' is incompatible.
+SELECT COALESCE(CHARCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands CHAR(60) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'SMALLINT' is incompatible.
+SELECT VALUE(CHARCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands CHAR(60) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'SMALLINT' is incompatible.
+SELECT COALESCE(CHARCOL,INTEGERCOL) from AllDataTypesTable
+ Operands CHAR(60) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'INTEGER' is incompatible.
+SELECT VALUE(CHARCOL,INTEGERCOL) from AllDataTypesTable
+ Operands CHAR(60) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'INTEGER' is incompatible.
+SELECT COALESCE(CHARCOL,BIGINTCOL) from AllDataTypesTable
+ Operands CHAR(60) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'BIGINT' is incompatible.
+SELECT VALUE(CHARCOL,BIGINTCOL) from AllDataTypesTable
+ Operands CHAR(60) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'BIGINT' is incompatible.
+SELECT COALESCE(CHARCOL,DECIMALCOL) from AllDataTypesTable
+ Operands CHAR(60) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'DECIMAL' is incompatible.
+SELECT VALUE(CHARCOL,DECIMALCOL) from AllDataTypesTable
+ Operands CHAR(60) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'DECIMAL' is incompatible.
+SELECT COALESCE(CHARCOL,REALCOL) from AllDataTypesTable
+ Operands CHAR(60) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'REAL' is incompatible.
+SELECT VALUE(CHARCOL,REALCOL) from AllDataTypesTable
+ Operands CHAR(60) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'REAL' is incompatible.
+SELECT COALESCE(CHARCOL,DOUBLECOL) from AllDataTypesTable
+ Operands CHAR(60) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'DOUBLE' is incompatible.
+SELECT VALUE(CHARCOL,DOUBLECOL) from AllDataTypesTable
+ Operands CHAR(60) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'DOUBLE' is incompatible.
+SELECT COALESCE(CHARCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , CHAR(60) will have result data type of CHAR
+	 COL1(datatype : CHAR, precision : 60, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{null}
+SELECT VALUE(CHARCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , CHAR(60) will have result data type of CHAR
+	 COL1(datatype : CHAR, precision : 60, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{null}
+SELECT COALESCE(CHARCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , VARCHAR(60) will have result data type of VARCHAR
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{15:30:20}
+SELECT VALUE(CHARCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , VARCHAR(60) will have result data type of VARCHAR
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{15:30:20}
+SELECT COALESCE(CHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , LONG VARCHAR will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT VALUE(CHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , LONG VARCHAR will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(CHARCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands CHAR(60) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(CHARCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands CHAR(60) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(CHARCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands CHAR(60) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(CHARCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands CHAR(60) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(CHARCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands CHAR(60) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(CHARCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands CHAR(60) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(CHARCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{null}
+SELECT VALUE(CHARCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{1992-01-06                                                  }
+	{1992-01-16                                                  }
+	{null}
+SELECT COALESCE(CHARCOL,DATECOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , DATE will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-06}
+	{1992-01-16}
+	{null}
+SELECT VALUE(CHARCOL,DATECOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , DATE will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-06}
+	{1992-01-16}
+	{null}
+SELECT COALESCE(CHARCOL,TIMECOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , TIME will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(CHARCOL,TIMECOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , TIME will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(CHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , TIMESTAMP will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(CHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) , TIMESTAMP will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(CHARCOL,BLOBCOL) from AllDataTypesTable
+ Operands CHAR(60) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'BLOB' is incompatible.
+SELECT VALUE(CHARCOL,BLOBCOL) from AllDataTypesTable
+ Operands CHAR(60) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR' and 'BLOB' is incompatible.
+SELECT COALESCE(VARCHARCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'SMALLINT' is incompatible.
+SELECT VALUE(VARCHARCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'SMALLINT' is incompatible.
+SELECT COALESCE(VARCHARCOL,INTEGERCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'INTEGER' is incompatible.
+SELECT VALUE(VARCHARCOL,INTEGERCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'INTEGER' is incompatible.
+SELECT COALESCE(VARCHARCOL,BIGINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'BIGINT' is incompatible.
+SELECT VALUE(VARCHARCOL,BIGINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'BIGINT' is incompatible.
+SELECT COALESCE(VARCHARCOL,DECIMALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'DECIMAL' is incompatible.
+SELECT VALUE(VARCHARCOL,DECIMALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'DECIMAL' is incompatible.
+SELECT COALESCE(VARCHARCOL,REALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'REAL' is incompatible.
+SELECT VALUE(VARCHARCOL,REALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'REAL' is incompatible.
+SELECT COALESCE(VARCHARCOL,DOUBLECOL) from AllDataTypesTable
+ Operands VARCHAR(60) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'DOUBLE' is incompatible.
+SELECT VALUE(VARCHARCOL,DOUBLECOL) from AllDataTypesTable
+ Operands VARCHAR(60) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'DOUBLE' is incompatible.
+SELECT COALESCE(VARCHARCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , CHAR(60) will have result data type of VARCHAR
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT VALUE(VARCHARCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , CHAR(60) will have result data type of VARCHAR
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , VARCHAR(60) will have result data type of VARCHAR
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT VALUE(VARCHARCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , VARCHAR(60) will have result data type of VARCHAR
+	 COL1(datatype : VARCHAR, precision : 60, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , LONG VARCHAR will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT VALUE(VARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , LONG VARCHAR will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(VARCHARCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(VARCHARCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(VARCHARCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(VARCHARCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(VARCHARCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(VARCHARCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT VALUE(VARCHARCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{1992-01-07}
+	{1992-01-17}
+	{15:30:20}
+SELECT COALESCE(VARCHARCOL,DATECOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , DATE will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(VARCHARCOL,DATECOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , DATE will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(VARCHARCOL,TIMECOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , TIME will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(VARCHARCOL,TIMECOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , TIME will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(VARCHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , TIMESTAMP will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(VARCHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) , TIMESTAMP will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(VARCHARCOL,BLOBCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'BLOB' is incompatible.
+SELECT VALUE(VARCHARCOL,BLOBCOL) from AllDataTypesTable
+ Operands VARCHAR(60) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR' and 'BLOB' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'SMALLINT' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'SMALLINT' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,INTEGERCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'INTEGER' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,INTEGERCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'INTEGER' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,BIGINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'BIGINT' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,BIGINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'BIGINT' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,DECIMALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'DECIMAL' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,DECIMALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'DECIMAL' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,REALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'REAL' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,REALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'REAL' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,DOUBLECOL) from AllDataTypesTable
+ Operands LONG VARCHAR , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'DOUBLE' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,DOUBLECOL) from AllDataTypesTable
+ Operands LONG VARCHAR , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'DOUBLE' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , CHAR(60) will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT VALUE(LONGVARCHARCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , CHAR(60) will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , VARCHAR(60) will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT VALUE(LONGVARCHARCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , VARCHAR(60) will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , LONG VARCHAR will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT VALUE(LONGVARCHARCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , LONG VARCHAR will have result data type of LONG VARCHAR
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT VALUE(LONGVARCHARCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{1992-01-08}
+	{1992-01-18}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(LONGVARCHARCOL,DATECOL) from AllDataTypesTable
+ Operands LONG VARCHAR , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,DATECOL) from AllDataTypesTable
+ Operands LONG VARCHAR , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'DATE' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,TIMECOL) from AllDataTypesTable
+ Operands LONG VARCHAR , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'TIME' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,TIMECOL) from AllDataTypesTable
+ Operands LONG VARCHAR , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'TIME' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(LONGVARCHARCOL,BLOBCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'BLOB' is incompatible.
+SELECT VALUE(LONGVARCHARCOL,BLOBCOL) from AllDataTypesTable
+ Operands LONG VARCHAR , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR' and 'BLOB' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'SMALLINT' is incompatible.
+SELECT VALUE(CHARFORBITCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'SMALLINT' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,INTEGERCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'INTEGER' is incompatible.
+SELECT VALUE(CHARFORBITCOL,INTEGERCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'INTEGER' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,BIGINTCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'BIGINT' is incompatible.
+SELECT VALUE(CHARFORBITCOL,BIGINTCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'BIGINT' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,DECIMALCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'DECIMAL' is incompatible.
+SELECT VALUE(CHARFORBITCOL,DECIMALCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'DECIMAL' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,REALCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'REAL' is incompatible.
+SELECT VALUE(CHARFORBITCOL,REALCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'REAL' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,DOUBLECOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'DOUBLE' is incompatible.
+SELECT VALUE(CHARFORBITCOL,DOUBLECOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'DOUBLE' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,CHARCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'CHAR' is incompatible.
+SELECT VALUE(CHARFORBITCOL,CHARCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'CHAR' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,VARCHARCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'VARCHAR' is incompatible.
+SELECT VALUE(CHARFORBITCOL,VARCHARCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'VARCHAR' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(CHARFORBITCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) FOR BIT DATA , CHAR(60) FOR BIT DATA will have result data type of CHAR () FOR BIT DATA
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 ----------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT VALUE(CHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) FOR BIT DATA , CHAR(60) FOR BIT DATA will have result data type of CHAR () FOR BIT DATA
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 ----------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT COALESCE(CHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) FOR BIT DATA , VARCHAR(60) FOR BIT DATA will have result data type of VARCHAR () FOR BIT DATA
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT VALUE(CHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) FOR BIT DATA , VARCHAR(60) FOR BIT DATA will have result data type of VARCHAR () FOR BIT DATA
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT COALESCE(CHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) FOR BIT DATA , LONG VARCHAR FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT VALUE(CHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands CHAR(60) FOR BIT DATA , LONG VARCHAR FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10aa20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{10aaaa202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+SELECT COALESCE(CHARFORBITCOL,CLOBCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'CLOB' is incompatible.
+SELECT VALUE(CHARFORBITCOL,CLOBCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'CLOB' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,DATECOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'DATE' is incompatible.
+SELECT VALUE(CHARFORBITCOL,DATECOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'DATE' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,TIMECOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'TIME' is incompatible.
+SELECT VALUE(CHARFORBITCOL,TIMECOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'TIME' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(CHARFORBITCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(CHARFORBITCOL,BLOBCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+SELECT VALUE(CHARFORBITCOL,BLOBCOL) from AllDataTypesTable
+ Operands CHAR(60) FOR BIT DATA , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'SMALLINT' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'SMALLINT' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,INTEGERCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'INTEGER' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,INTEGERCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'INTEGER' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,BIGINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'BIGINT' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,BIGINTCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'BIGINT' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,DECIMALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'DECIMAL' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,DECIMALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'DECIMAL' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,REALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'REAL' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,REALCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'REAL' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,DOUBLECOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'DOUBLE' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,DOUBLECOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'DOUBLE' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,CHARCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'CHAR' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,CHARCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'CHAR' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,VARCHARCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'VARCHAR' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,VARCHARCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'VARCHAR' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) FOR BIT DATA , CHAR(60) FOR BIT DATA will have result data type of VARCHAR () FOR BIT DATA
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT VALUE(VARCHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) FOR BIT DATA , CHAR(60) FOR BIT DATA will have result data type of VARCHAR () FOR BIT DATA
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT COALESCE(VARCHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) FOR BIT DATA , VARCHAR(60) FOR BIT DATA will have result data type of VARCHAR () FOR BIT DATA
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT VALUE(VARCHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) FOR BIT DATA , VARCHAR(60) FOR BIT DATA will have result data type of VARCHAR () FOR BIT DATA
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 60, scale : 0)
+	 -------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT COALESCE(VARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) FOR BIT DATA , LONG VARCHAR FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT VALUE(VARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands VARCHAR(60) FOR BIT DATA , LONG VARCHAR FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10bb}
+	{null}
+	{10bbbb}
+SELECT COALESCE(VARCHARFORBITCOL,CLOBCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'CLOB' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,CLOBCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'CLOB' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,DATECOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'DATE' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,DATECOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'DATE' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,TIMECOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'TIME' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,TIMECOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'TIME' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(VARCHARFORBITCOL,BLOBCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+SELECT VALUE(VARCHARFORBITCOL,BLOBCOL) from AllDataTypesTable
+ Operands VARCHAR(60) FOR BIT DATA , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'SMALLINT' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'SMALLINT' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,INTEGERCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'INTEGER' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,INTEGERCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'INTEGER' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,BIGINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'BIGINT' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,BIGINTCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'BIGINT' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,DECIMALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'DECIMAL' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,DECIMALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'DECIMAL' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,REALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'REAL' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,REALCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'REAL' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,DOUBLECOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'DOUBLE' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,DOUBLECOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'DOUBLE' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,CHARCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'CHAR' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,CHARCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'CHAR' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,VARCHARCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,VARCHARCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR FOR BIT DATA , CHAR(60) FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT VALUE(LVARCHARFORBITCOL,CHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR FOR BIT DATA , CHAR(60) FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT COALESCE(LVARCHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR FOR BIT DATA , VARCHAR(60) FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT VALUE(LVARCHARFORBITCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR FOR BIT DATA , VARCHAR(60) FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT COALESCE(LVARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR FOR BIT DATA , LONG VARCHAR FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT VALUE(LVARCHARFORBITCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Coalesc/Value with operands LONG VARCHAR FOR BIT DATA , LONG VARCHAR FOR BIT DATA will have result data type of LONG VARCHAR FOR BIT DATA
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{null}
+	{10cc}
+	{null}
+	{10cccc}
+SELECT COALESCE(LVARCHARFORBITCOL,CLOBCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'CLOB' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,CLOBCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'CLOB' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,DATECOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'DATE' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,DATECOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'DATE' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,TIMECOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'TIME' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,TIMECOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'TIME' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(LVARCHARFORBITCOL,BLOBCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'BLOB' is incompatible.
+SELECT VALUE(LVARCHARFORBITCOL,BLOBCOL) from AllDataTypesTable
+ Operands LONG VARCHAR FOR BIT DATA , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'BLOB' is incompatible.
+SELECT COALESCE(CLOBCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands CLOB(1k) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'SMALLINT' is incompatible.
+SELECT VALUE(CLOBCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands CLOB(1k) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'SMALLINT' is incompatible.
+SELECT COALESCE(CLOBCOL,INTEGERCOL) from AllDataTypesTable
+ Operands CLOB(1k) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'INTEGER' is incompatible.
+SELECT VALUE(CLOBCOL,INTEGERCOL) from AllDataTypesTable
+ Operands CLOB(1k) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'INTEGER' is incompatible.
+SELECT COALESCE(CLOBCOL,BIGINTCOL) from AllDataTypesTable
+ Operands CLOB(1k) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'BIGINT' is incompatible.
+SELECT VALUE(CLOBCOL,BIGINTCOL) from AllDataTypesTable
+ Operands CLOB(1k) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'BIGINT' is incompatible.
+SELECT COALESCE(CLOBCOL,DECIMALCOL) from AllDataTypesTable
+ Operands CLOB(1k) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'DECIMAL' is incompatible.
+SELECT VALUE(CLOBCOL,DECIMALCOL) from AllDataTypesTable
+ Operands CLOB(1k) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'DECIMAL' is incompatible.
+SELECT COALESCE(CLOBCOL,REALCOL) from AllDataTypesTable
+ Operands CLOB(1k) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'REAL' is incompatible.
+SELECT VALUE(CLOBCOL,REALCOL) from AllDataTypesTable
+ Operands CLOB(1k) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'REAL' is incompatible.
+SELECT COALESCE(CLOBCOL,DOUBLECOL) from AllDataTypesTable
+ Operands CLOB(1k) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'DOUBLE' is incompatible.
+SELECT VALUE(CLOBCOL,DOUBLECOL) from AllDataTypesTable
+ Operands CLOB(1k) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'DOUBLE' is incompatible.
+SELECT COALESCE(CLOBCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , CHAR(60) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{null}
+SELECT VALUE(CLOBCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , CHAR(60) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{null}
+SELECT COALESCE(CLOBCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , VARCHAR(60) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{15:30:20}
+SELECT VALUE(CLOBCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , VARCHAR(60) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{15:30:20}
+SELECT COALESCE(CLOBCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , LONG VARCHAR will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT VALUE(CLOBCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , LONG VARCHAR will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx
+SELECT COALESCE(CLOBCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands CLOB(1k) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(CLOBCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands CLOB(1k) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(CLOBCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands CLOB(1k) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(CLOBCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands CLOB(1k) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(CLOBCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands CLOB(1k) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(CLOBCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands CLOB(1k) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(CLOBCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{null}
+SELECT VALUE(CLOBCOL,CLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands CLOB(1k) , CLOB(1k) will have result data type of CLOB
+	 COL1(datatype : CLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{13}
+	{14}
+	{null}
+SELECT COALESCE(CLOBCOL,DATECOL) from AllDataTypesTable
+ Operands CLOB(1k) , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'DATE' is incompatible.
+SELECT VALUE(CLOBCOL,DATECOL) from AllDataTypesTable
+ Operands CLOB(1k) , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'DATE' is incompatible.
+SELECT COALESCE(CLOBCOL,TIMECOL) from AllDataTypesTable
+ Operands CLOB(1k) , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'TIME' is incompatible.
+SELECT VALUE(CLOBCOL,TIMECOL) from AllDataTypesTable
+ Operands CLOB(1k) , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'TIME' is incompatible.
+SELECT COALESCE(CLOBCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands CLOB(1k) , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(CLOBCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands CLOB(1k) , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(CLOBCOL,BLOBCOL) from AllDataTypesTable
+ Operands CLOB(1k) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'BLOB' is incompatible.
+SELECT VALUE(CLOBCOL,BLOBCOL) from AllDataTypesTable
+ Operands CLOB(1k) , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'CLOB' and 'BLOB' is incompatible.
+SELECT COALESCE(DATECOL,SMALLINTCOL) from AllDataTypesTable
+ Operands DATE , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'SMALLINT' is incompatible.
+SELECT VALUE(DATECOL,SMALLINTCOL) from AllDataTypesTable
+ Operands DATE , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'SMALLINT' is incompatible.
+SELECT COALESCE(DATECOL,INTEGERCOL) from AllDataTypesTable
+ Operands DATE , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'INTEGER' is incompatible.
+SELECT VALUE(DATECOL,INTEGERCOL) from AllDataTypesTable
+ Operands DATE , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'INTEGER' is incompatible.
+SELECT COALESCE(DATECOL,BIGINTCOL) from AllDataTypesTable
+ Operands DATE , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'BIGINT' is incompatible.
+SELECT VALUE(DATECOL,BIGINTCOL) from AllDataTypesTable
+ Operands DATE , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'BIGINT' is incompatible.
+SELECT COALESCE(DATECOL,DECIMALCOL) from AllDataTypesTable
+ Operands DATE , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'DECIMAL' is incompatible.
+SELECT VALUE(DATECOL,DECIMALCOL) from AllDataTypesTable
+ Operands DATE , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'DECIMAL' is incompatible.
+SELECT COALESCE(DATECOL,REALCOL) from AllDataTypesTable
+ Operands DATE , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'REAL' is incompatible.
+SELECT VALUE(DATECOL,REALCOL) from AllDataTypesTable
+ Operands DATE , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'REAL' is incompatible.
+SELECT COALESCE(DATECOL,DOUBLECOL) from AllDataTypesTable
+ Operands DATE , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'DOUBLE' is incompatible.
+SELECT VALUE(DATECOL,DOUBLECOL) from AllDataTypesTable
+ Operands DATE , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'DOUBLE' is incompatible.
+SELECT COALESCE(DATECOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands DATE , CHAR(60) will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{2000-01-01}
+	{2000-01-01}
+	{null}
+SELECT VALUE(DATECOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands DATE , CHAR(60) will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{2000-01-01}
+	{2000-01-01}
+	{null}
+SELECT COALESCE(DATECOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands DATE , VARCHAR(60) will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(DATECOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands DATE , VARCHAR(60) will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(DATECOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands DATE , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(DATECOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands DATE , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(DATECOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands DATE , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(DATECOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands DATE , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(DATECOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands DATE , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(DATECOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands DATE , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(DATECOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands DATE , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(DATECOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands DATE , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(DATECOL,CLOBCOL) from AllDataTypesTable
+ Operands DATE , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'CLOB' is incompatible.
+SELECT VALUE(DATECOL,CLOBCOL) from AllDataTypesTable
+ Operands DATE , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'CLOB' is incompatible.
+SELECT COALESCE(DATECOL,DATECOL) from AllDataTypesTable
+ Coalesc/Value with operands DATE , DATE will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{2000-01-01}
+	{2000-01-01}
+	{null}
+SELECT VALUE(DATECOL,DATECOL) from AllDataTypesTable
+ Coalesc/Value with operands DATE , DATE will have result data type of DATE
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{2000-01-01}
+	{2000-01-01}
+	{null}
+SELECT COALESCE(DATECOL,TIMECOL) from AllDataTypesTable
+ Operands DATE , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'TIME' is incompatible.
+SELECT VALUE(DATECOL,TIMECOL) from AllDataTypesTable
+ Operands DATE , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'TIME' is incompatible.
+SELECT COALESCE(DATECOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands DATE , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(DATECOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands DATE , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(DATECOL,BLOBCOL) from AllDataTypesTable
+ Operands DATE , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'BLOB' is incompatible.
+SELECT VALUE(DATECOL,BLOBCOL) from AllDataTypesTable
+ Operands DATE , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'DATE' and 'BLOB' is incompatible.
+SELECT COALESCE(TIMECOL,SMALLINTCOL) from AllDataTypesTable
+ Operands TIME , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'SMALLINT' is incompatible.
+SELECT VALUE(TIMECOL,SMALLINTCOL) from AllDataTypesTable
+ Operands TIME , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'SMALLINT' is incompatible.
+SELECT COALESCE(TIMECOL,INTEGERCOL) from AllDataTypesTable
+ Operands TIME , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'INTEGER' is incompatible.
+SELECT VALUE(TIMECOL,INTEGERCOL) from AllDataTypesTable
+ Operands TIME , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'INTEGER' is incompatible.
+SELECT COALESCE(TIMECOL,BIGINTCOL) from AllDataTypesTable
+ Operands TIME , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'BIGINT' is incompatible.
+SELECT VALUE(TIMECOL,BIGINTCOL) from AllDataTypesTable
+ Operands TIME , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'BIGINT' is incompatible.
+SELECT COALESCE(TIMECOL,DECIMALCOL) from AllDataTypesTable
+ Operands TIME , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'DECIMAL' is incompatible.
+SELECT VALUE(TIMECOL,DECIMALCOL) from AllDataTypesTable
+ Operands TIME , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'DECIMAL' is incompatible.
+SELECT COALESCE(TIMECOL,REALCOL) from AllDataTypesTable
+ Operands TIME , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'REAL' is incompatible.
+SELECT VALUE(TIMECOL,REALCOL) from AllDataTypesTable
+ Operands TIME , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'REAL' is incompatible.
+SELECT COALESCE(TIMECOL,DOUBLECOL) from AllDataTypesTable
+ Operands TIME , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'DOUBLE' is incompatible.
+SELECT VALUE(TIMECOL,DOUBLECOL) from AllDataTypesTable
+ Operands TIME , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'DOUBLE' is incompatible.
+SELECT COALESCE(TIMECOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIME , CHAR(60) will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{null}
+SELECT VALUE(TIMECOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIME , CHAR(60) will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{null}
+SELECT COALESCE(TIMECOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIME , VARCHAR(60) will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{15:30:20}
+SELECT VALUE(TIMECOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIME , VARCHAR(60) will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{15:30:20}
+SELECT COALESCE(TIMECOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands TIME , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(TIMECOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands TIME , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(TIMECOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands TIME , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(TIMECOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands TIME , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(TIMECOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIME , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(TIMECOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIME , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(TIMECOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIME , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(TIMECOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIME , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(TIMECOL,CLOBCOL) from AllDataTypesTable
+ Operands TIME , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'CLOB' is incompatible.
+SELECT VALUE(TIMECOL,CLOBCOL) from AllDataTypesTable
+ Operands TIME , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'CLOB' is incompatible.
+SELECT COALESCE(TIMECOL,DATECOL) from AllDataTypesTable
+ Operands TIME , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'DATE' is incompatible.
+SELECT VALUE(TIMECOL,DATECOL) from AllDataTypesTable
+ Operands TIME , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'DATE' is incompatible.
+SELECT COALESCE(TIMECOL,TIMECOL) from AllDataTypesTable
+ Coalesc/Value with operands TIME , TIME will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{null}
+SELECT VALUE(TIMECOL,TIMECOL) from AllDataTypesTable
+ Coalesc/Value with operands TIME , TIME will have result data type of TIME
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{15:30:20}
+	{15:30:20}
+	{null}
+SELECT COALESCE(TIMECOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands TIME , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(TIMECOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands TIME , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(TIMECOL,BLOBCOL) from AllDataTypesTable
+ Operands TIME , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'BLOB' is incompatible.
+SELECT VALUE(TIMECOL,BLOBCOL) from AllDataTypesTable
+ Operands TIME , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIME' and 'BLOB' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands TIMESTAMP , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'SMALLINT' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands TIMESTAMP , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'SMALLINT' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,INTEGERCOL) from AllDataTypesTable
+ Operands TIMESTAMP , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'INTEGER' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,INTEGERCOL) from AllDataTypesTable
+ Operands TIMESTAMP , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'INTEGER' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,BIGINTCOL) from AllDataTypesTable
+ Operands TIMESTAMP , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'BIGINT' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,BIGINTCOL) from AllDataTypesTable
+ Operands TIMESTAMP , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'BIGINT' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,DECIMALCOL) from AllDataTypesTable
+ Operands TIMESTAMP , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'DECIMAL' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,DECIMALCOL) from AllDataTypesTable
+ Operands TIMESTAMP , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'DECIMAL' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,REALCOL) from AllDataTypesTable
+ Operands TIMESTAMP , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'REAL' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,REALCOL) from AllDataTypesTable
+ Operands TIMESTAMP , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'REAL' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,DOUBLECOL) from AllDataTypesTable
+ Operands TIMESTAMP , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'DOUBLE' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,DOUBLECOL) from AllDataTypesTable
+ Operands TIMESTAMP , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'DOUBLE' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIMESTAMP , CHAR(60) will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{null}
+SELECT VALUE(TIMESTAMPCOL,CHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIMESTAMP , CHAR(60) will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{null}
+SELECT COALESCE(TIMESTAMPCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIMESTAMP , VARCHAR(60) will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT VALUE(TIMESTAMPCOL,VARCHARCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIMESTAMP , VARCHAR(60) will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception because char value does not match a time/timestamp format The syntax of the string representation of a datetime value is incorrect.
+SELECT COALESCE(TIMESTAMPCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands TIMESTAMP , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands TIMESTAMP , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands TIMESTAMP , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands TIMESTAMP , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIMESTAMP , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIMESTAMP , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIMESTAMP , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands TIMESTAMP , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,CLOBCOL) from AllDataTypesTable
+ Operands TIMESTAMP , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'CLOB' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,CLOBCOL) from AllDataTypesTable
+ Operands TIMESTAMP , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'CLOB' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,DATECOL) from AllDataTypesTable
+ Operands TIMESTAMP , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'DATE' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,DATECOL) from AllDataTypesTable
+ Operands TIMESTAMP , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'DATE' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,TIMECOL) from AllDataTypesTable
+ Operands TIMESTAMP , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'TIME' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,TIMECOL) from AllDataTypesTable
+ Operands TIMESTAMP , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'TIME' is incompatible.
+SELECT COALESCE(TIMESTAMPCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIMESTAMP , TIMESTAMP will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{null}
+SELECT VALUE(TIMESTAMPCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Coalesc/Value with operands TIMESTAMP , TIMESTAMP will have result data type of TIMESTAMP
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+	{null}
+SELECT COALESCE(TIMESTAMPCOL,BLOBCOL) from AllDataTypesTable
+ Operands TIMESTAMP , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'BLOB' is incompatible.
+SELECT VALUE(TIMESTAMPCOL,BLOBCOL) from AllDataTypesTable
+ Operands TIMESTAMP , BLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'TIMESTAMP' and 'BLOB' is incompatible.
+SELECT COALESCE(BLOBCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands BLOB(1k) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'SMALLINT' is incompatible.
+SELECT VALUE(BLOBCOL,SMALLINTCOL) from AllDataTypesTable
+ Operands BLOB(1k) , SMALLINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'SMALLINT' is incompatible.
+SELECT COALESCE(BLOBCOL,INTEGERCOL) from AllDataTypesTable
+ Operands BLOB(1k) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'INTEGER' is incompatible.
+SELECT VALUE(BLOBCOL,INTEGERCOL) from AllDataTypesTable
+ Operands BLOB(1k) , INTEGER are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'INTEGER' is incompatible.
+SELECT COALESCE(BLOBCOL,BIGINTCOL) from AllDataTypesTable
+ Operands BLOB(1k) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'BIGINT' is incompatible.
+SELECT VALUE(BLOBCOL,BIGINTCOL) from AllDataTypesTable
+ Operands BLOB(1k) , BIGINT are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'BIGINT' is incompatible.
+SELECT COALESCE(BLOBCOL,DECIMALCOL) from AllDataTypesTable
+ Operands BLOB(1k) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'DECIMAL' is incompatible.
+SELECT VALUE(BLOBCOL,DECIMALCOL) from AllDataTypesTable
+ Operands BLOB(1k) , DECIMAL(10,5) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'DECIMAL' is incompatible.
+SELECT COALESCE(BLOBCOL,REALCOL) from AllDataTypesTable
+ Operands BLOB(1k) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'REAL' is incompatible.
+SELECT VALUE(BLOBCOL,REALCOL) from AllDataTypesTable
+ Operands BLOB(1k) , REAL are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'REAL' is incompatible.
+SELECT COALESCE(BLOBCOL,DOUBLECOL) from AllDataTypesTable
+ Operands BLOB(1k) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'DOUBLE' is incompatible.
+SELECT VALUE(BLOBCOL,DOUBLECOL) from AllDataTypesTable
+ Operands BLOB(1k) , DOUBLE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'DOUBLE' is incompatible.
+SELECT COALESCE(BLOBCOL,CHARCOL) from AllDataTypesTable
+ Operands BLOB(1k) , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'CHAR' is incompatible.
+SELECT VALUE(BLOBCOL,CHARCOL) from AllDataTypesTable
+ Operands BLOB(1k) , CHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'CHAR' is incompatible.
+SELECT COALESCE(BLOBCOL,VARCHARCOL) from AllDataTypesTable
+ Operands BLOB(1k) , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'VARCHAR' is incompatible.
+SELECT VALUE(BLOBCOL,VARCHARCOL) from AllDataTypesTable
+ Operands BLOB(1k) , VARCHAR(60) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'VARCHAR' is incompatible.
+SELECT COALESCE(BLOBCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands BLOB(1k) , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'LONG VARCHAR' is incompatible.
+SELECT VALUE(BLOBCOL,LONGVARCHARCOL) from AllDataTypesTable
+ Operands BLOB(1k) , LONG VARCHAR are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'LONG VARCHAR' is incompatible.
+SELECT COALESCE(BLOBCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands BLOB(1k) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(BLOBCOL,CHARFORBITCOL) from AllDataTypesTable
+ Operands BLOB(1k) , CHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'CHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(BLOBCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands BLOB(1k) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT VALUE(BLOBCOL,VARCHARFORBITCOL) from AllDataTypesTable
+ Operands BLOB(1k) , VARCHAR(60) FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'VARCHAR () FOR BIT DATA' is incompatible.
+SELECT COALESCE(BLOBCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands BLOB(1k) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT VALUE(BLOBCOL,LVARCHARFORBITCOL) from AllDataTypesTable
+ Operands BLOB(1k) , LONG VARCHAR FOR BIT DATA are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+SELECT COALESCE(BLOBCOL,CLOBCOL) from AllDataTypesTable
+ Operands BLOB(1k) , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'CLOB' is incompatible.
+SELECT VALUE(BLOBCOL,CLOBCOL) from AllDataTypesTable
+ Operands BLOB(1k) , CLOB(1k) are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'CLOB' is incompatible.
+SELECT COALESCE(BLOBCOL,DATECOL) from AllDataTypesTable
+ Operands BLOB(1k) , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'DATE' is incompatible.
+SELECT VALUE(BLOBCOL,DATECOL) from AllDataTypesTable
+ Operands BLOB(1k) , DATE are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'DATE' is incompatible.
+SELECT COALESCE(BLOBCOL,TIMECOL) from AllDataTypesTable
+ Operands BLOB(1k) , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'TIME' is incompatible.
+SELECT VALUE(BLOBCOL,TIMECOL) from AllDataTypesTable
+ Operands BLOB(1k) , TIME are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'TIME' is incompatible.
+SELECT COALESCE(BLOBCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands BLOB(1k) , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'TIMESTAMP' is incompatible.
+SELECT VALUE(BLOBCOL,TIMESTAMPCOL) from AllDataTypesTable
+ Operands BLOB(1k) , TIMESTAMP are incompatible for Coalesce/Value function
+expected exception The data type, length or value of arguments 'BLOB' and 'TIMESTAMP' is incompatible.
+SELECT COALESCE(BLOBCOL,BLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands BLOB(1k) , BLOB(1k) will have result data type of BLOB
+	 COL1(datatype : BLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{null}
+	{null}
+	{null}
+SELECT VALUE(BLOBCOL,BLOBCOL) from AllDataTypesTable
+ Coalesc/Value with operands BLOB(1k) , BLOB(1k) will have result data type of BLOB
+	 COL1(datatype : BLOB, precision : 1024, scale : 0)
+	 --------------------------------------------------
+	{null}
+	{null}
+	{null}
+	{null}
+TestF - focus on date datatypes
+TestF1a - coalesce(dateCol,dateCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-02}
+TestF1b - value(dateCol,dateCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-02}
+TestF2a - coalesce(dateCol,charCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-02}
+TestF2b - value(dateCol,charCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-02}
+TestF3a - coalesce(charCol,dateCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-03}
+TestF3b - value(charCol,dateCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-03}
+TestF4a - coalesce(dateCol,varcharCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-02}
+TestF4b - value(dateCol,varcharCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-02}
+TestF5a - coalesce(varcharCol,dateCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-03}
+TestF5b - value(varcharCol,dateCol)
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+	{null}
+	{1992-01-03}
+TestF - Try invalid string representation of date into chars and varchars and then use them in coalesce function with date datatype
+TestF6a - coalesce(charCol,dateCol) will fail because one row has invalid string representation of date in the char column
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestF6b - value(charCol,dateCol) will fail because one row has invalid string representation of date in the char column
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestF7a - coalesce(varcharCol,dateCol) will fail because one row has invalid string representation of date in the varchar column
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestF7b - value(varcharCol,dateCol) will fail because one row has invalid string representation of date in the varchar column
+	 COL1(datatype : DATE, precision : 10, scale : 0)
+	 ------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestG - focus on time datatypes
+TestG1a - coalesce(timeCol,timeCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+TestG1b - value(timeCol,timeCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+TestG2a - coalesce(timeCol,charCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+TestG2b - value(timeCol,charCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+TestG3a - coalesce(charCol,timeCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:31}
+TestG3b - value(charCol,timeCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:31}
+TestG4a - coalesce(timeCol,varcharCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+TestG4b - value(timeCol,varcharCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+TestG5a - coalesce(varcharCol,timeCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:31}
+TestG5b - value(varcharCol,timeCol)
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:31}
+TestG - Try invalid string representation of time into chars and varchars and then use them in coalesce function with time datatype
+TestG6a - coalesce(charCol,timeCol) will fail because one row has invalid string representation of time in the char column
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestG6b - value(charCol,timeCol) will fail because one row has invalid string representation of time in the char column
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestG7a - coalesce(varcharCol,timeCol) will fail because one row has invalid string representation of time in the varchar column
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestG7b - value(varcharCol,timeCol) will fail because one row has invalid string representation of time in the varchar column
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestG - Following will work fine with invalid string representation of time because timeCol is not null and hence we don't look at invalid time string in char/varchar columns
+TestG8a - coalesce(timeCol,charCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at charCol's invalid time string
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+	{12:30:33}
+TestG8b - value(timeCol,charCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at charCol's invalid time string
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+	{12:30:33}
+TestG9a - coalesce(timeCol,varcharCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at varcharCol's invalid time string
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+	{12:30:33}
+TestG9b - value(timeCol,varcharCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at varcharCol's invalid time string
+	 COL1(datatype : TIME, precision : 0, scale : 0)
+	 -----------------------------------------------
+	{null}
+	{12:30:30}
+	{12:30:33}
+TestH - focus on timestamp datatypes
+TestH1a - coalesce(timestampCol,timestampCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH1b - value(timestampCol,timestampCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH2a - coalesce(timestampCol,charCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH2b - value(timestampCol,charCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH3a - coalesce(charCol,timestampCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH3b - value(charCol,timestampCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH4a - coalesce(timestampCol,varcharCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH4b - value(timestampCol,varcharCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH5a - coalesce(varcharCol,timestampCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH5b - value(varcharCol,timestampCol)
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+	{null}
+	{xxxxxxFILTERED-TIMESTAMPxxxxx}
+TestH - Try invalid string representation of timestamp into chars and varchars and then use them in coalesce function with timestamp datatype
+TestH6a - coalesce(charCol,timestampCol) will fail because one row has invalid string representation of timestamp in the char column
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestH6b - value(charCol,timestampCol) will fail because one row has invalid string representation of timestamp in the char column
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestH7a - coalesce(varcharCol,timestampCol) will fail because one row has invalid string representation of timestamp in the varchar column
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestH7b - value(varcharCol,timestampCol) will fail because one row has invalid string representation of timestamp in the varchar column
+	 COL1(datatype : TIMESTAMP, precision : 0, scale : 0)
+	 ----------------------------------------------------
+expected exception The syntax of the string representation of a datetime value is incorrect.
+TestE - focus on smallint datatypes
+TestE1 - coalesce(smallintCol,smallintCol)
+	 COL1(datatype : SMALLINT, precision : 5, scale : 0)
+	 ---------------------------------------------------
+	{1}
+	{null}
+TestE1a - coalesce(smallintCol,intCol)
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{1}
+	{null}
+TestE1b - coalesce(smallintCol,bigintCol)
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{1}
+	{null}
+TestE1c - coalesce(SMALLINT,DECIMAL) with decimal(w,x) will give result decimal(p,x) where p=x+max(w-x,5) and if that gives p>31, then p is set to 31
+TestE1c1 - coalesce(smallintCol,decimalCol1) with decimal(22,2) will give result decimal(22,2)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{1.00}
+	{null}
+TestE1c2 - coalesce(smallintCol,decimalCol2) with decimal(8,6) will give result decimal(11,6)
+	 COL1(datatype : DECIMAL, precision : 11, scale : 6)
+	 ---------------------------------------------------
+	{1.000000}
+	{null}
+TestE1c3 - coalesce(smallintCol,decimalCol3) with decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31
+	 COL1(datatype : DECIMAL, precision : 31, scale : 28)
+	 ----------------------------------------------------
+	{1.0000000000000000000000000000}
+	{null}
+TestE1d - coalesce(smallintCol,realCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{1.0}
+	{null}
+TestE1e - coalesce(smallintCol,doubleCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{1.0}
+	{null}
+TestE - focus on int datatypes
+TestE1 - coalesce(intCol,intCol)
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{2}
+	{null}
+TestE1f - coalesce(intCol,smallintCol)
+	 COL1(datatype : INTEGER, precision : 10, scale : 0)
+	 ---------------------------------------------------
+	{2}
+	{null}
+TestE1g - coalesce(intCol,bigintCol)
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{2}
+	{null}
+TestE1h - coalesce(INT,DECIMAL) with decimal(w,x) will give result decimal(p,x) where p=x+max(w-x,11) and if that gives p>31, then p is set to 31
+TestE1h1 - coalesce(intCol,decimalCol1) with decimal(22,2) will give result decimal(22,2)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{2.00}
+	{null}
+TestE1h2 - coalesce(intCol,decimalCol2) with decimal(8,6) will give result decimal(17,6)
+	 COL1(datatype : DECIMAL, precision : 16, scale : 6)
+	 ---------------------------------------------------
+	{2.000000}
+	{null}
+TestE1h3 - coalesce(intCol,decimalCol3) with decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31
+	 COL1(datatype : DECIMAL, precision : 31, scale : 28)
+	 ----------------------------------------------------
+	{2.0000000000000000000000000000}
+	{null}
+TestE1i - coalesce(intCol,realCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{2.0}
+	{null}
+TestE1j - coalesce(intCol,doubleCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{2.0}
+	{null}
+TestE - focus on bigint datatypes
+TestE1 - coalesce(bigintCol,bigintCol)
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{3}
+	{null}
+TestE1k - coalesce(bigintCol,smallintCol)
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{3}
+	{null}
+TestE1l - coalesce(bigintCol,intCol)
+	 COL1(datatype : BIGINT, precision : 19, scale : 0)
+	 --------------------------------------------------
+	{3}
+	{null}
+TestE1m - coalesce(BIGINT,DECIMAL) with decimal(w,x) will give result decimal(p,x) where p=x+max(w-x,19) and if that gives p>31, then p is set to 31
+TestE1m1 - coalesce(bigintCol,decimalCol1) with decimal(22,2) will give result decimal(22,2)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{3.00}
+	{null}
+TestE1m2 - coalesce(bigintCol,decimalCol2) with decimal(8,6) will give result decimal(21,6)
+	 COL1(datatype : DECIMAL, precision : 25, scale : 6)
+	 ---------------------------------------------------
+	{3.000000}
+	{null}
+TestE1m3 - coalesce(bigintCol,decimalCol3) with decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31
+	 COL1(datatype : DECIMAL, precision : 31, scale : 28)
+	 ----------------------------------------------------
+	{3.0000000000000000000000000000}
+	{null}
+TestE1n - coalesce(bigintCol,realCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.0}
+	{null}
+TestE1o - coalesce(bigintCol,doubleCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.0}
+	{null}
+TestE - focus on decimal datatypes
+TestE1 - coalesce(DECIMAL,DECIMAL) with decimal(w,x), decimal(y,z) will give result decimal(p,s)
+  where p=max(x,z)+max(w-x,y-z), s=max(x,z) and if that gives p>31, then p is set to 31
+TestE11 - coalesce(decimalCol1,decimalCol1) with decimal(22,2) will give result decimal(22,2)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{4.00}
+	{null}
+TestE12 - coalesce(decimalCol1,decimalCol2) with decimal(22,2) and decimal(8,6) will give result decimal(26,6)
+	 COL1(datatype : DECIMAL, precision : 26, scale : 6)
+	 ---------------------------------------------------
+	{4.000000}
+	{null}
+TestE13 - coalesce(decimalCol1,decimalCol3) with decimal(22,2) and decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31
+	 COL1(datatype : DECIMAL, precision : 31, scale : 28)
+	 ----------------------------------------------------
+	{4.0000000000000000000000000000}
+	{null}
+TestE1p - coalesce(decimalCol1,smallintCol)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{4.00}
+	{null}
+TestE1q - coalesce(decimalCol1,intCol)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{4.00}
+	{null}
+TestE1r - coalesce(decimalCol1,bigintCol)
+	 COL1(datatype : DECIMAL, precision : 22, scale : 2)
+	 ---------------------------------------------------
+	{4.00}
+	{null}
+TestE1s - coalesce(decimalCol1,realCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{4.0}
+	{null}
+TestE1t - coalesce(decimalCol1,doubleCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{4.0}
+	{null}
+TestE - focus on real datatypes
+TestE1 - coalesce(realCol,realCol)
+	 COL1(datatype : REAL, precision : 7, scale : 0)
+	 -----------------------------------------------
+	{7.7}
+	{null}
+TestE1u - coalesce(realCol,smallintCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{7.699999809265137}
+	{null}
+TestE1v - coalesce(realCol,intCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{7.699999809265137}
+	{null}
+TestE1w - coalesce(realCol,bigintCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{7.699999809265137}
+	{null}
+TestE1x - coalesce(realCol,decimalCol1)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{7.699999809265137}
+	{null}
+TestE1y - coalesce(realCol,doubleCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{7.699999809265137}
+	{null}
+TestE - focus on double datatypes
+TestE1 - coalesce(doubleCol,doubleCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.4028235E38}
+	{null}
+TestE1z - coalesce(doubleCol,smallintCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.4028235E38}
+	{null}
+TestE2a - coalesce(doubleCol,intCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.4028235E38}
+	{null}
+TestE2b - coalesce(doubleCol,bigintCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.4028235E38}
+	{null}
+TestE2c - coalesce(doubleCol,decimalCol1)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.4028235E38}
+	{null}
+TestE2d - coalesce(doubleCol,realCol)
+	 COL1(datatype : DOUBLE, precision : 15, scale : 0)
+	 --------------------------------------------------
+	{3.4028235E38}
+	{null}
+TestD - some miscellaneous testing for Coalesce/Value function
+TestD1a - test coalesce function in values clause
+	 COL1(datatype : CHAR, precision : 50, scale : 0)
+	 ------------------------------------------------
+	{asdfghj                                           }
+TestD1b - test value function in values clause
+	 COL1(datatype : CHAR, precision : 50, scale : 0)
+	 ------------------------------------------------
+	{asdfghj                                           }
+TestD2a - First argument to coalesce function passed as parameter with non-null value
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{first argument to coalesce                                                                                                                                                                                                                                    }
+	{first argument to coalesce                                                                                                                                                                                                                                    }
+TestD2b - First argument to value function passed as parameter with non-null value
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{first argument to value                                                                                                                                                                                                                                       }
+	{first argument to value                                                                                                                                                                                                                                       }
+TestD3a - First argument to coalesce function passed as parameter with null value
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{abcdefgh                                                                                                                                                                                                                                                      }
+	{null}
+TestD3b - First argument to value function passed as parameter with null value
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{abcdefgh                                                                                                                                                                                                                                                      }
+	{null}
+TestD4a - Pass incompatible value for parameter to coalesce function
+expected exception Invalid character string format for type INTEGER.
+TestB - Focus on CHAR as atleast one of the operands
+TestB1a - 2 CHAR operands coalesce(c1,c2) with c1(254) and c2(40)
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{c2 not null but c1 is                                                                                                                                                                                                                                         }
+	{null}
+TestB1b - 2 CHAR operands value(c1,c2) with c1(254) and c2(40)
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{c2 not null but c1 is                                                                                                                                                                                                                                         }
+	{null}
+TestB2a - 2 CHAR operands coalesce(c2,c1) with c2(40) and c1(254)
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{c2 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{c2 not null but c1 is                                                                                                                                                                                                                                         }
+	{null}
+TestB2b - 2 CHAR operands value(c2,c1) with c2(40) and c1(254)
+	 COL1(datatype : CHAR, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{c2 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{c2 not null but c1 is                                                                                                                                                                                                                                         }
+	{null}
+TestB3a - CHAR and VARCHAR operands coalesce(c1,vc1) with c1(254) and vc1(253)
+	 COL1(datatype : VARCHAR, precision : 254, scale : 0)
+	 ----------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{null}
+	{null}
+TestB3b - CHAR and VARCHAR operands value(c1,vc1) with c1(254) and vc1(253)
+	 COL1(datatype : VARCHAR, precision : 254, scale : 0)
+	 ----------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{null}
+	{null}
+TestB4a - VARCHAR and CHAR operands coalesce(vc1,c1) with vc1(253) and c1(254)
+	 COL1(datatype : VARCHAR, precision : 254, scale : 0)
+	 ----------------------------------------------------
+	{vc1 not null}
+	{vc1 is not null but vc2 is}
+	{null}
+	{null}
+TestB4b - VARCHAR AND CHAR operands value(vc1,c1) with vc1(253) and c1(254)
+	 COL1(datatype : VARCHAR, precision : 254, scale : 0)
+	 ----------------------------------------------------
+	{vc1 not null}
+	{vc1 is not null but vc2 is}
+	{null}
+	{null}
+TestB - Focus on VARCHAR as atleast one of the operands
+TestB5a - 2 VARCHAR operands coalesce(vc1,vc2) with vc1(253) and vc2(2000)
+	 COL1(datatype : VARCHAR, precision : 2000, scale : 0)
+	 -----------------------------------------------------
+	{vc1 not null}
+	{vc1 is not null but vc2 is}
+	{vc2 is not null but vc1 is}
+	{null}
+TestB5b - 2 VARCHAR operands value(vc1,vc2) with vc1(253) and vc2(2000)
+	 COL1(datatype : VARCHAR, precision : 2000, scale : 0)
+	 -----------------------------------------------------
+	{vc1 not null}
+	{vc1 is not null but vc2 is}
+	{vc2 is not null but vc1 is}
+	{null}
+TestB6a - 2 VARCHAR operands coalesce(vc2,vc1) with vc2(2000) and vc1(253)
+	 COL1(datatype : VARCHAR, precision : 2000, scale : 0)
+	 -----------------------------------------------------
+	{vc2 not null}
+	{vc1 is not null but vc2 is}
+	{vc2 is not null but vc1 is}
+	{null}
+TestB6b - 2 VARCHAR operands value(vc2,vc1) with vc2(2000) and vc1(253)
+	 COL1(datatype : VARCHAR, precision : 2000, scale : 0)
+	 -----------------------------------------------------
+	{vc2 not null}
+	{vc1 is not null but vc2 is}
+	{vc2 is not null but vc1 is}
+	{null}
+TestB - Focus on LONG VARCHAR as atleast one of the operands
+TestB7a - CHAR and LONG VARCHAR operands coalesce(c1,lvc1) with c1(254)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{lvc1 not null again}
+	{null}
+TestB7b - CHAR and LONG VARCHAR operands value(c1,lvc1) with c1(254)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{lvc1 not null again}
+	{null}
+TestB8a - LONG VARCHAR and CHAR operands coalesce(lvc1,c1) with c1(254)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{lvc1 not null}
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{lvc1 not null again}
+	{null}
+TestB8b - LONG VARCHAR and CHAR operands value(lvc1,c1) with c1(254)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{lvc1 not null}
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{lvc1 not null again}
+	{null}
+TestB9a - VARCHAR and LONG VARCHAR operands coalesce(vc1,lvc1) with vc1(253)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{vc1 not null}
+	{vc1 is not null but vc2 is}
+	{lvc1 not null again}
+	{null}
+TestB9b - VARCHAR and LONG VARCHAR operands value(vc1,lvc1) with vc1(253)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{vc1 not null}
+	{vc1 is not null but vc2 is}
+	{lvc1 not null again}
+	{null}
+TestB10a - LONG VARCHAR and VARCHAR operands coalesce(lvc1,vc1) with vc1(253)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{lvc1 not null}
+	{vc1 is not null but vc2 is}
+	{lvc1 not null again}
+	{null}
+TestB10b - LONG VARCHAR and VARCHAR operands value(lvc1,vc1) with vc1(253)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{lvc1 not null}
+	{vc1 is not null but vc2 is}
+	{lvc1 not null again}
+	{null}
+TestB11a - LONG VARCHAR and LONG VARCHAR operands coalesce(lvc1,lvc2)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{lvc1 not null}
+	{null}
+	{lvc1 not null again}
+	{null}
+TestB11b - LONG VARCHAR and LONG VARCHAR operands value(lvc1,lvc2)
+	 COL1(datatype : LONG VARCHAR, precision : 32700, scale : 0)
+	 -----------------------------------------------------------
+	{lvc1 not null}
+	{null}
+	{lvc1 not null again}
+	{null}
+TestB - Focus on CLOB as atleast one of the operands
+TestB12a - CLOB and CHAR operands coalesce(clob1,c1) with clob1(200) and c1(254)
+	 COL1(datatype : CLOB, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{clob1 not null}
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{clob1 not null again}
+	{null}
+TestB12b - CLOB and CHAR operands value(clob1,c1) with clob1(200) and c1(254)
+	 COL1(datatype : CLOB, precision : 254, scale : 0)
+	 -------------------------------------------------
+	{clob1 not null}
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{clob1 not null again}
+	{null}
+TestB13a - CHAR and CLOB operands coalesce(c1,clob2) with c1(254) and clob2(33K)
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{clob2 not null again}
+	{null}
+TestB13b - CHAR and CLOB operands value(c1,clob2) with c1(254) and clob2(33K)
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{c1 not null                                                                                                                                                                                                                                                   }
+	{c1 not null but c2 is                                                                                                                                                                                                                                         }
+	{clob2 not null again}
+	{null}
+TestB14a - CLOB and VARCHAR operands coalesce(clob1,vc1) with clob1(200) and vc1(253)
+	 COL1(datatype : CLOB, precision : 253, scale : 0)
+	 -------------------------------------------------
+	{clob1 not null}
+	{vc1 is not null but vc2 is}
+	{clob1 not null again}
+	{null}
+TestB14b - CLOB and VARCHAR operands value(clob1,vc1) with clob1(200) and vc1(253)
+	 COL1(datatype : CLOB, precision : 253, scale : 0)
+	 -------------------------------------------------
+	{clob1 not null}
+	{vc1 is not null but vc2 is}
+	{clob1 not null again}
+	{null}
+TestB15a - VARCHAR and CLOB operands coalesce(vc2,clob2) with vc2(2000) and clob2(33K)
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{vc2 not null}
+	{null}
+	{vc2 is not null but vc1 is}
+	{null}
+TestB15b - VARCHAR and CLOB operands value(vc2,clob2) with vc2(2000) and clob2(33K)
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{vc2 not null}
+	{null}
+	{vc2 is not null but vc1 is}
+	{null}
+TestB16a - CLOB and LONG VARCHAR operands coalesce(clob1,lvc1) with clob1(200). The result length will be 32700 (long varchar max length)
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{clob1 not null}
+	{null}
+	{clob1 not null again}
+	{null}
+TestB16b - CLOB and LONG VARCHAR operands value(clob1,lvc1) with clob1(200). The result length will be 32700 (long varchar max length)
+	 COL1(datatype : CLOB, precision : 32700, scale : 0)
+	 ---------------------------------------------------
+	{clob1 not null}
+	{null}
+	{clob1 not null again}
+	{null}
+TestB17a - LONG VARCHAR and CLOB operands coalesce(lvc2,clob2) with clob2(33K). The result length will be 33K since clob length here is > 32700 (long varchar max length)
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{lvc2 not null}
+	{null}
+	{lvc2 not null again}
+	{null}
+TestB17b - LONG VARCHAR and CLOB operands value(lvc2,clob2) with clob2(33K). The result length will be 33K since clob length here is > 32700 (long varchar max length)
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{lvc2 not null}
+	{null}
+	{lvc2 not null again}
+	{null}
+TestB18a - CLOB and CLOB operands coalesce(clob1,clob2) with clob1(200) and clob2(33K).
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{clob1 not null}
+	{null}
+	{clob1 not null again}
+	{null}
+TestB18b - CLOB and CLOB operands value(clob1,clob2) with clob1(200) and clob2(33K).
+	 COL1(datatype : CLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{clob1 not null}
+	{null}
+	{clob1 not null again}
+	{null}
+TestC - Focus on CHAR FOR BIT DATA as atleast one of the operands
+TestC1a - 2 CHAR FOR BIT DATA operands coalesce(cbd1,cbd2) with cbd1(254) and cbd2(40)
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 -----------------------------------------------------------------
+	{63626431206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626432206e6f74206e756c6c20627574206362643120697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+TestC1b - 2 CHAR FOR BIT DATA operands value(cbd1,cbd2) with cbd1(254) and cbd2(40)
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 -----------------------------------------------------------------
+	{63626431206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626432206e6f74206e756c6c20627574206362643120697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+TestC2a - 2 CHAR FOR BIT DATA operands coalesce(cbd2,cbd1) with cbd2(40) and cbd1(254)
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 -----------------------------------------------------------------
+	{63626432206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626432206e6f74206e756c6c20627574206362643120697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+TestC2b - 2 CHAR FOR BIT DATA operands value(cbd2,cbd1) with cbd2(40) and cbd1(254)
+	 COL1(datatype : CHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 -----------------------------------------------------------------
+	{63626432206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626432206e6f74206e756c6c20627574206362643120697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+TestC3a - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands coalesce(cbd1,vcbd1) with cbd1(254) and vcbd1(253)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 --------------------------------------------------------------------
+	{63626431206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{null}
+TestC3b - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands value(cbd1,vcbd1) with cbd1(254) and vcbd1(253)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 --------------------------------------------------------------------
+	{63626431206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{null}
+	{null}
+TestC4a - VARCHAR FOR BIT DATA and CHAR FOR BIT DATA operands coalesce(vcbd1,cbd1) with vcbd1(253) and cbd1(254)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 --------------------------------------------------------------------
+	{7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{null}
+	{null}
+TestC4b - VARCHAR FOR BIT DATA AND CHAR FOR BIT DATA operands value(vcbd1,cbd1) with vcbd1(253) and cbd1(254)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 254, scale : 0)
+	 --------------------------------------------------------------------
+	{7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{null}
+	{null}
+TestC - Focus on VARCHAR FOR BIT DATA as atleast one of the operands
+TestC5a - 2 VARCHAR FOR BIT DATA operands coalesce(vcbd1,vcbd2) with vcbd1(253) and vcbd2(2000)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 2000, scale : 0)
+	 ---------------------------------------------------------------------
+	{7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{7663626432206e6f74206e756c6c20627574207663626431206973}
+	{null}
+TestC5b - 2 VARCHAR FOR BIT DATA operands value(vcbd1,vcbd2) with vcbd1(253) and vcbd2(2000)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 2000, scale : 0)
+	 ---------------------------------------------------------------------
+	{7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{7663626432206e6f74206e756c6c20627574207663626431206973}
+	{null}
+TestC6a - 2 VARCHAR FOR BIT DATA operands coalesce(vcbd2,vcbd1) with vcbd2(2000) and vcbd1(253)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 2000, scale : 0)
+	 ---------------------------------------------------------------------
+	{7663626432206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{7663626432206e6f74206e756c6c20627574207663626431206973}
+	{null}
+TestC6b - 2 VARCHAR FOR BIT DATA operands value(vcbd2,vcbd1) with vcbd2(2000) and vcbd1(253)
+	 COL1(datatype : VARCHAR () FOR BIT DATA, precision : 2000, scale : 0)
+	 ---------------------------------------------------------------------
+	{7663626432206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{7663626432206e6f74206e756c6c20627574207663626431206973}
+	{null}
+TestC - Focus on LONG VARCHAR FOR BIT DATA as atleast one of the operands
+TestC7a - CHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands coalesce(cbd1,lvcbd1) with cbd1(254)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{63626431206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC7b - CHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands value(cbd1,lvcbd1) with cbd1(254)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{63626431206e6f74206e756c6c20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC8a - LONG VARCHAR FOR BIT DATA and CHAR FOR BIT DATA operands coalesce(lvcbd1,cbd1) with cbd1(254)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{6c7663626431206e6f74206e756c6c}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC8b - LONG VARCHAR FOR BIT DATA and CHAR FOR BIT DATA operands value(lvcbd1,cbd1) with cbd1(254)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{6c7663626431206e6f74206e756c6c}
+	{63626431206e6f74206e756c6c20627574206362643220697320202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC9a - VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands coalesce(vcbd1,lvcbd1) with vcbd1(253)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC9b - VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands value(vcbd1,lvcbd1) with vcbd1(253)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC10a - LONG VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands coalesce(lvcbd1,vcbd1) with vcbd1(253)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{6c7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC10b - LONG VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands value(lvcbd1,vcbd1) with vcbd1(253)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{6c7663626431206e6f74206e756c6c}
+	{7663626431206e6f74206e756c6c20627574207663626432206973}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC11a - LONG VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands coalesce(lvcbd1,lvcbd2)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{6c7663626431206e6f74206e756c6c}
+	{null}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC11b - LONG VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands value(lvcbd1,lvcbd2)
+	 COL1(datatype : LONG VARCHAR FOR BIT DATA, precision : 32700, scale : 0)
+	 ------------------------------------------------------------------------
+	{6c7663626431206e6f74206e756c6c}
+	{null}
+	{6c7663626431206e6f74206e756c6c20616761696e}
+	{null}
+TestC - Focus on BLOB as atleast one of the operands
+TestC12a - BLOB and CHAR FOR BIT DATA in coalesce(blob1,cbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'BLOB' and 'CHAR () FOR BIT DATA' is incompatible.
+TestC12b - BLOB and CHAR FOR BIT DATA in value(blob1,cbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'BLOB' and 'CHAR () FOR BIT DATA' is incompatible.
+TestC13a - CHAR FOR BIT DATA and BLOB operands coalesce(cbd1,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+TestC13b - CHAR FOR BIT DATA and BLOB operands value(cbd1,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'CHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+TestC14a - BLOB and VARCHAR FOR BIT DATA operands coalesce(blob1,vcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'BLOB' and 'VARCHAR () FOR BIT DATA' is incompatible.
+TestC14b - BLOB and VARCHAR FOR BIT DATA operands value(blob1,vcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'BLOB' and 'VARCHAR () FOR BIT DATA' is incompatible.
+TestC15a - VARCHAR FOR BIT DATA and BLOB operands coalesce(vcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+TestC15b - VARCHAR FOR BIT DATA and BLOB operands value(vcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'VARCHAR () FOR BIT DATA' and 'BLOB' is incompatible.
+TestC16a - BLOB and LONG VARCHAR FOR BIT DATA operands coalesce(blob1,lvcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'BLOB' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+TestC16b - BLOB and LONG VARCHAR FOR BIT DATA operands coalesce(blob1,lvcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'BLOB' and 'LONG VARCHAR FOR BIT DATA' is incompatible.
+TestC17a - LONG VARCHAR FOR BIT DATA and BLOB operands coalesce(lvcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'BLOB' is incompatible.
+TestC17b - LONG VARCHAR FOR BIT DATA and BLOB operands value(lvcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes
+expected exception The data type, length or value of arguments 'LONG VARCHAR FOR BIT DATA' and 'BLOB' is incompatible.
+TestC18a - BLOB and BLOB operands coalesce(blob1,blob2) with blob1(200) and blob2(33K).
+	 COL1(datatype : BLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{626c6f6231206e6f74206e756c6c}
+	{null}
+	{626c6f6231206e6f74206e756c6c20616761696e}
+	{null}
+TestC18b - BLOB and BLOB operands value(blob1,blob2) with blob1(200) and blob2(33K).
+	 COL1(datatype : BLOB, precision : 33792, scale : 0)
+	 ---------------------------------------------------
+	{626c6f6231206e6f74206e756c6c}
+	{null}
+	{626c6f6231206e6f74206e756c6c20616761696e}
+	{null}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,191 @@
+ij> -- tests for column defaults
+-- negative
+-- ? in default
+create table neg(c1 int default ?);
+ERROR 42X01: Syntax error: Encountered "?" at line 6, column 33.
+ij> -- column reference in default
+create table neg(c1 int, c2 int default c1);
+ERROR 42X01: Syntax error: Encountered "c1" at line 2, column 41.
+ij> -- subquery in default
+create table neg(c1 int default (values 1));
+ERROR 42X01: Syntax error: Encountered "(" at line 2, column 33.
+ij> -- type incompatibility at compile time
+create table neg(c1 date default 1);
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+ij> -- type incompatibility at execution time
+-- bug 5585 - should fail at create table statement
+-- because the default value '1' is not valid
+create table neg(c1 int, c2 date default '1');
+0 rows inserted/updated/deleted
+ij> insert into neg (c1) values 1;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> drop table neg;
+0 rows inserted/updated/deleted
+ij> -- bug 5203 - built-in functions are not be allowed in a constantExpression
+-- because DB2 UDB returns SQLSTATE 42894
+CREATE FUNCTION ASDF (DATA DOUBLE) RETURNS DOUBLE EXTERNAL NAME 'java.lang.Math.sin' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> create table neg(c1 int default asdf(0));
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'C1'.
+ij> drop table neg;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'NEG' because it does not exist.
+ij> -- DEFAULT only valid in VALUES within an insert
+values default;
+ERROR 42Y85: The DEFAULT keyword is only allowed in a VALUES clause when the VALUES clause appears within an INSERT statement.
+ij> values 1, default;
+ERROR 42Y85: The DEFAULT keyword is only allowed in a VALUES clause when the VALUES clause appears within an INSERT statement.
+ij> -- alter table modify default
+create table neg(c1 date);
+0 rows inserted/updated/deleted
+ij> alter table neg modify x default null;
+ERROR 42X01: Syntax error: Encountered "modify" at line 1, column 17.
+ij> alter table neg add column x date default 1;
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+ij> -- bug 5585 - should fail at alter table statement
+-- because the default value '1' is not valid
+alter table neg add column x date default '1';
+0 rows inserted/updated/deleted
+ij> insert into neg (c1) values default;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> drop table neg;
+0 rows inserted/updated/deleted
+ij> -- too many values in values clause
+create table neg(c1 int default 10);
+0 rows inserted/updated/deleted
+ij> insert into neg values (1, default);
+ERROR 42X06: Too many result columns specified for table 'APP.NEG'.
+ij> insert into neg values (default, 1);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> drop table neg;
+0 rows inserted/updated/deleted
+ij> -- positive
+-- create tables
+create table t1(c1 int, c2 int with default 5, c3 date default current_date, c4 int);
+0 rows inserted/updated/deleted
+ij> -- verify that defaults work
+insert into t1 (c1) values 1;
+1 row inserted/updated/deleted
+ij> insert into t1 (c4) values 4;
+1 row inserted/updated/deleted
+ij> select c1, c2, c4 from t1;
+C1         |C2         |C4         
+-----------------------------------
+1          |5          |NULL       
+NULL       |5          |4          
+ij> select c1, c2, c4 from t1 where c3 = current_date;
+C1         |C2         |C4         
+-----------------------------------
+1          |5          |NULL       
+NULL       |5          |4          
+ij> -- update
+-- default for column whose default is null
+update t1 set c1 = default;
+2 rows inserted/updated/deleted
+ij> select c1, c2, c4 from t1 where c3 = current_date;
+C1         |C2         |C4         
+-----------------------------------
+NULL       |5          |NULL       
+NULL       |5          |4          
+ij> -- default for column that has explicit default
+update t1 set c2 = 7;
+2 rows inserted/updated/deleted
+ij> select c2 from t1;
+C2         
+-----------
+7          
+7          
+ij> update t1 set c2 = default;
+2 rows inserted/updated/deleted
+ij> select c2 from t1;
+C2         
+-----------
+5          
+5          
+ij> -- insert default
+delete from t1;
+2 rows inserted/updated/deleted
+ij> insert into t1 values (5, default, '1999-09-09', default);
+1 row inserted/updated/deleted
+ij> insert into t1 values (default, 6, default, 5);
+1 row inserted/updated/deleted
+ij> insert into t1 values (default, 6, default, 5), (7, default, '1997-07-07', 3);
+2 rows inserted/updated/deleted
+ij> select c1, c2, c4 from t1 where c3 = current_date;
+C1         |C2         |C4         
+-----------------------------------
+NULL       |6          |5          
+NULL       |6          |5          
+ij> select c1, c2, c4 from t1 where c3 <> current_date;
+C1         |C2         |C4         
+-----------------------------------
+5          |5          |NULL       
+7          |5          |3          
+ij> delete from t1;
+4 rows inserted/updated/deleted
+ij> insert into t1 (c1, c3, c4) values (5, '1999-09-09', default);
+1 row inserted/updated/deleted
+ij> insert into t1 (c1, c3, c4) values (default, default, 5);
+1 row inserted/updated/deleted
+ij> insert into t1 (c1, c3, c4) values (default, default, default);
+1 row inserted/updated/deleted
+ij> insert into t1 (c1, c3, c4) values (default, default, 5), (7, '1997-07-07', 3);
+2 rows inserted/updated/deleted
+ij> select c1, c2, c4 from t1 where c3 = current_date;
+C1         |C2         |C4         
+-----------------------------------
+NULL       |5          |5          
+NULL       |5          |NULL       
+NULL       |5          |5          
+ij> select c1, c2, c4 from t1 where c3 <> current_date;
+C1         |C2         |C4         
+-----------------------------------
+5          |5          |NULL       
+7          |5          |3          
+ij> -- delimited identifiers
+-- this schema
+create table "x1" ("c1" int);
+0 rows inserted/updated/deleted
+ij> insert into "x1" values 1;
+1 row inserted/updated/deleted
+ij> alter table "x1" add column "c2" char(1) default 'x';
+0 rows inserted/updated/deleted
+ij> select * from "x1";
+c1         |c2  
+----------------
+1          |x   
+ij> -- another schema
+create schema "otherschema";
+0 rows inserted/updated/deleted
+ij> create table "otherschema"."y1" ("c11" int);
+0 rows inserted/updated/deleted
+ij> insert into "otherschema"."y1" values 2;
+1 row inserted/updated/deleted
+ij> alter table "otherschema"."y1" add column "c22" char(1) default 'y';
+0 rows inserted/updated/deleted
+ij> select * from "otherschema"."y1";
+c11        |c22 
+----------------
+2          |y   
+ij> -- bug 3433
+create table t7(c1 int default 10);
+0 rows inserted/updated/deleted
+ij> insert into t7 values (default);
+1 row inserted/updated/deleted
+ij> select * from t7;
+C1         
+-----------
+10         
+ij> -- clean up
+drop function asdf;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t7;
+0 rows inserted/updated/deleted
+ij> drop table "x1";
+0 rows inserted/updated/deleted
+ij> drop table "otherschema"."y1";
+0 rows inserted/updated/deleted
+ij> drop schema "otherschema" restrict;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/comparisons.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/comparisons.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2264 @@
+ij> --
+-- this test shows the current supported comparison operators
+--
+-- first, do comparisons on the int type
+-- create a table with couple of int columns
+create table inttab (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into inttab values (0, 0);
+1 row inserted/updated/deleted
+ij> insert into inttab values (null, 5);
+1 row inserted/updated/deleted
+ij> insert into inttab values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into inttab values (2147483647, 2147483647);
+1 row inserted/updated/deleted
+ij> -- select each one in turn
+select c1 from inttab where c1 = 0;
+C1         
+-----------
+0          
+ij> select c1 from inttab where c1 = 1;
+C1         
+-----------
+1          
+ij> select c1 from inttab where c1 = 2147483647;
+C1         
+-----------
+2147483647 
+ij> -- now look for a value that isn't in the table
+select c1 from inttab where c1 = 2;
+C1         
+-----------
+ij> -- now test null = null semantics
+select c1 from inttab where c1 = c1;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> -- test is null semantics
+select c1 from inttab where c1 is null;
+C1         
+-----------
+NULL       
+ij> select c1 from inttab where c1 is not null;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where not c1 is null;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> -- now test <>
+select c1 from inttab where c1 <> 0;
+C1         
+-----------
+1          
+2147483647 
+ij> select c1 from inttab where c1 <> 1;
+C1         
+-----------
+0          
+2147483647 
+ij> select c1 from inttab where c1 <> 2147483647;
+C1         
+-----------
+0          
+1          
+ij> select c1 from inttab where c1 <> 2;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where c1 <> c1;
+C1         
+-----------
+ij> select c1 from inttab where c1 <> c2;
+C1         
+-----------
+ij> -- now test !=
+select c1 from inttab where c1 != 0;
+C1         
+-----------
+1          
+2147483647 
+ij> select c1 from inttab where c1 != 1;
+C1         
+-----------
+0          
+2147483647 
+ij> select c1 from inttab where c1 != 2147483647;
+C1         
+-----------
+0          
+1          
+ij> select c1 from inttab where c1 != 2;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where c1 != c1;
+C1         
+-----------
+ij> select c1 from inttab where c1 != c2;
+C1         
+-----------
+ij> -- now test <
+select c1 from inttab where c1 < 0;
+C1         
+-----------
+ij> select c1 from inttab where c1 < 1;
+C1         
+-----------
+0          
+ij> select c1 from inttab where c1 < 2;
+C1         
+-----------
+0          
+1          
+ij> select c1 from inttab where c1 < 2147483647;
+C1         
+-----------
+0          
+1          
+ij> select c1 from inttab where c1 < c1;
+C1         
+-----------
+ij> select c1 from inttab where c1 < c2;
+C1         
+-----------
+ij> -- now test >
+select c1 from inttab where c1 > 0;
+C1         
+-----------
+1          
+2147483647 
+ij> select c1 from inttab where c1 > 1;
+C1         
+-----------
+2147483647 
+ij> select c1 from inttab where c1 > 2;
+C1         
+-----------
+2147483647 
+ij> select c1 from inttab where c1 > 2147483647;
+C1         
+-----------
+ij> select c1 from inttab where c1 > c1;
+C1         
+-----------
+ij> select c1 from inttab where c1 > c2;
+C1         
+-----------
+ij> -- now test <=
+select c1 from inttab where c1 <= 0;
+C1         
+-----------
+0          
+ij> select c1 from inttab where c1 <= 1;
+C1         
+-----------
+0          
+1          
+ij> select c1 from inttab where c1 <= 2;
+C1         
+-----------
+0          
+1          
+ij> select c1 from inttab where c1 <= 2147483647;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where c1 <= c1;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where c1 <= c2;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> -- now test >=
+select c1 from inttab where c1 >= 0;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where c1 >= 1;
+C1         
+-----------
+1          
+2147483647 
+ij> select c1 from inttab where c1 >= 2;
+C1         
+-----------
+2147483647 
+ij> select c1 from inttab where c1 >= 2147483647;
+C1         
+-----------
+2147483647 
+ij> select c1 from inttab where c1 >= c1;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where c1 >= c2;
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> -- now test not
+select c1 from inttab where not (c1 = 0);
+C1         
+-----------
+1          
+2147483647 
+ij> select c1 from inttab where not (c1 <> 0);
+C1         
+-----------
+0          
+ij> select c1 from inttab where not (c1 != 0);
+C1         
+-----------
+0          
+ij> select c1 from inttab where not (c1 < 0);
+C1         
+-----------
+0          
+1          
+2147483647 
+ij> select c1 from inttab where not (c1 <= 0);
+C1         
+-----------
+1          
+2147483647 
+ij> select c1 from inttab where not (c1 > 0);
+C1         
+-----------
+0          
+ij> select c1 from inttab where not (c1 >= 0);
+C1         
+-----------
+ij> -- create a table with a couple of smallint columns.  All smallint vs. smallint
+-- comparisons must be done between columns, because there are no smallint
+-- constants in the language
+create table smallinttab (c1 smallint, c2 smallint);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into smallinttab values (0, 0);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (null, null);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (32767, 32767);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (0, 9);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (null, 8);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (1, 7);
+1 row inserted/updated/deleted
+ij> insert into smallinttab values (32767, 6);
+1 row inserted/updated/deleted
+ij> -- select the ones where the columns are equal
+select c1, c2 from smallinttab where c1 = c2;
+C1    |C2    
+-------------
+0     |0     
+1     |1     
+32767 |32767 
+ij> -- test smallint = int semantics
+select c1 from smallinttab where c1 = 0;
+C1    
+------
+0     
+0     
+ij> select c1 from smallinttab where c1 = 1;
+C1    
+------
+1     
+1     
+ij> select c1 from smallinttab where c1 = 32767;
+C1    
+------
+32767 
+32767 
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 = 65537;
+C1    
+------
+ij> -- test int = smallint semantics
+select c1 from smallinttab where 0 = c1;
+C1    
+------
+0     
+0     
+ij> select c1 from smallinttab where 1 = c1;
+C1    
+------
+1     
+1     
+ij> select c1 from smallinttab where 32767 = c1;
+C1    
+------
+32767 
+32767 
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 = c1;
+C1    
+------
+ij> -- Now test <>
+select c1, c2 from smallinttab where c1 <> c2;
+C1    |C2    
+-------------
+0     |9     
+1     |7     
+32767 |6     
+ij> select c1, c2 from smallinttab where c1 != c2;
+C1    |C2    
+-------------
+0     |9     
+1     |7     
+32767 |6     
+ij> -- test smallint <> int semantics
+select c1 from smallinttab where c1 <> 0;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where c1 <> 1;
+C1    
+------
+0     
+32767 
+0     
+32767 
+ij> select c1 from smallinttab where c1 <> 32767;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> select c1 from smallinttab where c1 != 0;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where c1 != 1;
+C1    
+------
+0     
+32767 
+0     
+32767 
+ij> select c1 from smallinttab where c1 != 32767;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 <> 65537;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> select c1 from smallinttab where c1 != 65537;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- test int = smallint semantics
+select c1 from smallinttab where 0 <> c1;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where 1 <> c1;
+C1    
+------
+0     
+32767 
+0     
+32767 
+ij> select c1 from smallinttab where 32767 <> c1;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> select c1 from smallinttab where 0 != c1;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where 1 != c1;
+C1    
+------
+0     
+32767 
+0     
+32767 
+ij> select c1 from smallinttab where 32767 != c1;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 <> c1;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> select c1 from smallinttab where 65537 != c1;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- Now test <
+select c1, c2 from smallinttab where c1 < c2;
+C1    |C2    
+-------------
+0     |9     
+1     |7     
+ij> -- test smallint < int semantics
+select c1 from smallinttab where c1 < 0;
+C1    
+------
+ij> select c1 from smallinttab where c1 < 1;
+C1    
+------
+0     
+0     
+ij> select c1 from smallinttab where c1 < 32767;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 < 65537;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- test int < smallint semantics
+select c1 from smallinttab where 0 < c1;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where 1 < c1;
+C1    
+------
+32767 
+32767 
+ij> select c1 from smallinttab where 32767 < c1;
+C1    
+------
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 < c1;
+C1    
+------
+ij> -- Now test >
+select c1, c2 from smallinttab where c1 > c2;
+C1    |C2    
+-------------
+32767 |6     
+ij> -- test smallint > int semantics
+select c1 from smallinttab where c1 > 0;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where c1 > 1;
+C1    
+------
+32767 
+32767 
+ij> select c1 from smallinttab where c1 > 32767;
+C1    
+------
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 > 65537;
+C1    
+------
+ij> -- test int > smallint semantics
+select c1 from smallinttab where 0 > c1;
+C1    
+------
+ij> select c1 from smallinttab where 1 > c1;
+C1    
+------
+0     
+0     
+ij> select c1 from smallinttab where 32767 > c1;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 > c1;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- Now test <=
+select c1, c2 from smallinttab where c1 <= c2;
+C1    |C2    
+-------------
+0     |0     
+1     |1     
+32767 |32767 
+0     |9     
+1     |7     
+ij> -- test smallint <= int semantics
+select c1 from smallinttab where c1 <= 0;
+C1    
+------
+0     
+0     
+ij> select c1 from smallinttab where c1 <= 1;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> select c1 from smallinttab where c1 <= 32767;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 <= 65537;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- test int <= smallint semantics
+select c1 from smallinttab where 0 <= c1;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> select c1 from smallinttab where 1 <= c1;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where 32767 <= c1;
+C1    
+------
+32767 
+32767 
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 <= c1;
+C1    
+------
+ij> -- Now test >=
+select c1, c2 from smallinttab where c1 >= c2;
+C1    |C2    
+-------------
+0     |0     
+1     |1     
+32767 |32767 
+32767 |6     
+ij> -- test smallint >= int semantics
+select c1 from smallinttab where c1 >= 0;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> select c1 from smallinttab where c1 >= 1;
+C1    
+------
+1     
+32767 
+1     
+32767 
+ij> select c1 from smallinttab where c1 >= 32767;
+C1    
+------
+32767 
+32767 
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 >= 65537;
+C1    
+------
+ij> -- test int >= smallint semantics
+select c1 from smallinttab where 0 >= c1;
+C1    
+------
+0     
+0     
+ij> select c1 from smallinttab where 1 >= c1;
+C1    
+------
+0     
+1     
+0     
+1     
+ij> select c1 from smallinttab where 32767 >= c1;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- test is null semantics
+select c1 from smallinttab where c1 is null;
+C1    
+------
+NULL  
+NULL  
+ij> select c1 from smallinttab where c1 is not null;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> select c1 from smallinttab where not c1 is null;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 >= c1;
+C1    
+------
+0     
+1     
+32767 
+0     
+1     
+32767 
+ij> -- create a table with a couple of bigint columns.  
+create table biginttab (c1 bigint, c2 bigint, c3 int, c4 smallint);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into biginttab values (0, 0, 0, 0 );
+1 row inserted/updated/deleted
+ij> insert into biginttab values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into biginttab values (9223372036854775807, 
+							   9223372036854775807,
+							   2147483647,
+							   32767);
+1 row inserted/updated/deleted
+ij> insert into biginttab values (-9223372036854775808, 
+							   -9223372036854775808,
+							   -2147483648,
+							   -32768);
+1 row inserted/updated/deleted
+ij> -- select the ones where the columns are equal
+select c1, c2 from biginttab where c1 = c2;
+C1                  |C2                  
+-----------------------------------------
+0                   |0                   
+9223372036854775807 |9223372036854775807 
+-9223372036854775808|-9223372036854775808
+ij> -- test bigint = int semantics
+select c1 from biginttab where c1 = 0;
+C1                  
+--------------------
+0                   
+ij> select c1 from biginttab where c1 = c3;
+C1                  
+--------------------
+0                   
+ij> -- test int = bigint semantics
+select c1 from biginttab where 0 = c1;
+C1                  
+--------------------
+0                   
+ij> select c1 from biginttab where c3 = c1;
+C1                  
+--------------------
+0                   
+ij> -- test bigint = smallint semantics
+select c1 from biginttab where c1 = c4;
+C1                  
+--------------------
+0                   
+ij> -- test smallint = bigint semantics
+select c1 from biginttab where c4 = c1;
+C1                  
+--------------------
+0                   
+ij> -- Now test <>
+select c1, c2 from biginttab where c1 <> c2;
+C1                  |C2                  
+-----------------------------------------
+ij> -- test bigint <> int semantics
+select c1 from biginttab where c1 <> 0;
+C1                  
+--------------------
+9223372036854775807 
+-9223372036854775808
+ij> select c1 from biginttab where c1 <> c3;
+C1                  
+--------------------
+9223372036854775807 
+-9223372036854775808
+ij> -- test int <> bigint semantics
+select c1 from biginttab where 0 <> c1;
+C1                  
+--------------------
+9223372036854775807 
+-9223372036854775808
+ij> select c1 from biginttab where c3 <> c1;
+C1                  
+--------------------
+9223372036854775807 
+-9223372036854775808
+ij> -- test bigint <> smallint semantics
+select c1 from biginttab where c1 <> c4;
+C1                  
+--------------------
+9223372036854775807 
+-9223372036854775808
+ij> -- test smallint <> bigint semantics
+select c1 from biginttab where c4 <> c1;
+C1                  
+--------------------
+9223372036854775807 
+-9223372036854775808
+ij> -- Now test <
+select c1, c2 from biginttab where c1 < c2;
+C1                  |C2                  
+-----------------------------------------
+ij> -- test bigint < int semantics
+select c1 from biginttab where c1 < 0;
+C1                  
+--------------------
+-9223372036854775808
+ij> select c1 from biginttab where c1 < c3;
+C1                  
+--------------------
+-9223372036854775808
+ij> -- test int < bigint semantics
+select c1 from biginttab where 0 < c1;
+C1                  
+--------------------
+9223372036854775807 
+ij> select c1 from biginttab where c3 < c1;
+C1                  
+--------------------
+9223372036854775807 
+ij> -- test bigint < smallint semantics
+select c1 from biginttab where c1 < c4;
+C1                  
+--------------------
+-9223372036854775808
+ij> -- test smallint < bigint semantics
+select c1 from biginttab where c4 < c1;
+C1                  
+--------------------
+9223372036854775807 
+ij> -- Now test >
+select c1, c2 from biginttab where c1 > c2;
+C1                  |C2                  
+-----------------------------------------
+ij> -- test bigint > int semantics
+select c1 from biginttab where c1 > 0;
+C1                  
+--------------------
+9223372036854775807 
+ij> select c1 from biginttab where c1 > c3;
+C1                  
+--------------------
+9223372036854775807 
+ij> -- test int > bigint semantics
+select c1 from biginttab where 0 > c1;
+C1                  
+--------------------
+-9223372036854775808
+ij> select c1 from biginttab where c3 > c1;
+C1                  
+--------------------
+-9223372036854775808
+ij> -- test bigint > smallint semantics
+select c1 from biginttab where c1 > c4;
+C1                  
+--------------------
+9223372036854775807 
+ij> -- test smallint > bigint semantics
+select c1 from biginttab where c4 > c1;
+C1                  
+--------------------
+-9223372036854775808
+ij> -- Now test <=
+select c1, c2 from biginttab where c1 <= c2;
+C1                  |C2                  
+-----------------------------------------
+0                   |0                   
+9223372036854775807 |9223372036854775807 
+-9223372036854775808|-9223372036854775808
+ij> -- test bigint <= int semantics
+select c1 from biginttab where c1 <= 0;
+C1                  
+--------------------
+0                   
+-9223372036854775808
+ij> select c1 from biginttab where c1 <= c3;
+C1                  
+--------------------
+0                   
+-9223372036854775808
+ij> -- test int <= bigint semantics
+select c1 from biginttab where 0 <= c1;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+ij> select c1 from biginttab where c3 <= c1;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+ij> -- test bigint <= smallint semantics
+select c1 from biginttab where c1 <= c4;
+C1                  
+--------------------
+0                   
+-9223372036854775808
+ij> -- test smallint <= bigint semantics
+select c1 from biginttab where c4 <= c1;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+ij> -- Now test >=
+select c1, c2 from biginttab where c1 >= c2;
+C1                  |C2                  
+-----------------------------------------
+0                   |0                   
+9223372036854775807 |9223372036854775807 
+-9223372036854775808|-9223372036854775808
+ij> -- test bigint >= int semantics
+select c1 from biginttab where c1 >= 0;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+ij> select c1 from biginttab where c1 >= c3;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+ij> -- test int >= bigint semantics
+select c1 from biginttab where 0 >= c1;
+C1                  
+--------------------
+0                   
+-9223372036854775808
+ij> select c1 from biginttab where c3 >= c1;
+C1                  
+--------------------
+0                   
+-9223372036854775808
+ij> -- test bigint >= smallint semantics
+select c1 from biginttab where c1 >= c4;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+ij> -- test smallint >= bigint semantics
+select c1 from biginttab where c4 >= c1;
+C1                  
+--------------------
+0                   
+-9223372036854775808
+ij> -- test is null semantics
+select c1 from biginttab where c1 is null;
+C1                  
+--------------------
+NULL                
+ij> select c1 from biginttab where c1 is not null;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+-9223372036854775808
+ij> select c1 from biginttab where not c1 is null;
+C1                  
+--------------------
+0                   
+9223372036854775807 
+-9223372036854775808
+ij> -- create a table with char columns of different lengths
+create table chartab (c1 char(1), c2 char(5));
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into chartab values (' ', '     ');
+1 row inserted/updated/deleted
+ij> insert into chartab values ('a', 'a    ');
+1 row inserted/updated/deleted
+ij> insert into chartab values ('b', 'bcdef');
+1 row inserted/updated/deleted
+ij> insert into chartab values (null, null);
+1 row inserted/updated/deleted
+ij> -- select each one in turn
+select c1 from chartab where c1 = ' ';
+C1  
+----
+ij> select c2 from chartab where c2 = '     ';
+C2   
+-----
+ij> select c1 from chartab where c1 = 'a';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 = 'a    ';
+C2   
+-----
+a    
+ij> select c1 from chartab where c1 = 'b';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 = 'bcdef';
+C2   
+-----
+bcdef
+ij> -- now check for end-of-string blank semantics
+select c1 from chartab where c1 = '';
+C1  
+----
+ij> select c1 from chartab where c1 = '                      ';
+C1  
+----
+ij> select c2 from chartab where c2 = '';
+C2   
+-----
+ij> select c2 from chartab where c2 = ' ';
+C2   
+-----
+ij> select c2 from chartab where c2 = '                           ';
+C2   
+-----
+ij> select c1 from chartab where c1 = 'a        ';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 = 'a ';
+C2   
+-----
+a    
+ij> select c1 from chartab where c1 = 'b             ';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 = 'bcdef                ';
+C2   
+-----
+bcdef
+ij> select c2 from chartab where c2 = 'bcde       ';
+C2   
+-----
+ij> -- now check null = null semantics
+select c1, c2 from chartab where c1 = c2;
+C1  |C2   
+----------
+    |     
+a   |a    
+ij> -- test is null semantics
+select c1 from chartab where c1 is null;
+C1  
+----
+NULL
+ij> select c1 from chartab where c1 is not null;
+C1  
+----
+a   
+b   
+ij> select c1 from chartab where not c1 is null;
+C1  
+----
+a   
+b   
+ij> -- Now test <>
+select c1 from chartab where c1 <> ' ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 <> '     ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 <> 'a';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 <> 'a    ';
+C2   
+-----
+bcdef
+ij> select c1 from chartab where c1 <> 'b';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 <> 'bcdef';
+C2   
+-----
+a    
+ij> select c1 from chartab where c1 != ' ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 != '     ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 != 'a';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 != 'a    ';
+C2   
+-----
+bcdef
+ij> select c1 from chartab where c1 != 'b';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 != 'bcdef';
+C2   
+-----
+a    
+ij> -- now check for end-of-string blank semantics
+select c1 from chartab where c1 <> '';
+C1  
+----
+a   
+b   
+ij> select c1 from chartab where c1 <> '                      ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 <> '';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 <> ' ';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 <> '                           ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 <> 'a        ';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 <> 'a ';
+C2   
+-----
+bcdef
+ij> select c1 from chartab where c1 <> 'b             ';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 <> 'bcdef                ';
+C2   
+-----
+a    
+ij> select c2 from chartab where c2 <> 'bcde       ';
+C2   
+-----
+a    
+bcdef
+ij> -- now check null <> null semantics
+select c1, c2 from chartab where c1 <> c2;
+C1  |C2   
+----------
+b   |bcdef
+ij> -- Now test <
+select c1 from chartab where c1 < ' ';
+C1  
+----
+ij> select c2 from chartab where c2 < '     ';
+C2   
+-----
+ij> select c1 from chartab where c1 < 'a';
+C1  
+----
+ij> select c2 from chartab where c2 < 'a    ';
+C2   
+-----
+ij> select c1 from chartab where c1 < 'b';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 < 'bcdef';
+C2   
+-----
+a    
+ij> -- now check for end-of-string blank semantics
+select c1 from chartab where c1 < '';
+C1  
+----
+ij> select c1 from chartab where c1 < '                      ';
+C1  
+----
+ij> select c2 from chartab where c2 < '';
+C2   
+-----
+ij> select c2 from chartab where c2 < ' ';
+C2   
+-----
+ij> select c2 from chartab where c2 < '                           ';
+C2   
+-----
+ij> select c1 from chartab where c1 < 'a        ';
+C1  
+----
+ij> select c2 from chartab where c2 < 'a ';
+C2   
+-----
+ij> select c1 from chartab where c1 < 'b             ';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 < 'bcdef                ';
+C2   
+-----
+a    
+ij> select c2 from chartab where c2 < 'bcde       ';
+C2   
+-----
+a    
+ij> -- now check null < null semantics
+select c1, c2 from chartab where c1 < c2;
+C1  |C2   
+----------
+b   |bcdef
+ij> -- Now test >
+select c1 from chartab where c1 > ' ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 > '     ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 > 'a';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 > 'a    ';
+C2   
+-----
+bcdef
+ij> select c1 from chartab where c1 > 'b';
+C1  
+----
+ij> select c2 from chartab where c2 > 'bcdef';
+C2   
+-----
+ij> -- now check for end-of-string blank semantics
+select c1 from chartab where c1 > '';
+C1  
+----
+a   
+b   
+ij> select c1 from chartab where c1 > '                      ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 > '';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 > ' ';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 > '                           ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 > 'a        ';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 > 'a ';
+C2   
+-----
+bcdef
+ij> select c1 from chartab where c1 > 'b             ';
+C1  
+----
+ij> select c2 from chartab where c2 > 'bcdef                ';
+C2   
+-----
+ij> select c2 from chartab where c2 > 'bcde       ';
+C2   
+-----
+bcdef
+ij> -- now check null > null semantics
+select c1, c2 from chartab where c1 > c2;
+C1  |C2   
+----------
+ij> -- Now test <=
+select c1 from chartab where c1 <= ' ';
+C1  
+----
+ij> select c2 from chartab where c2 <= '     ';
+C2   
+-----
+ij> select c1 from chartab where c1 <= 'a';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 <= 'a    ';
+C2   
+-----
+a    
+ij> select c1 from chartab where c1 <= 'b';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 <= 'bcdef';
+C2   
+-----
+a    
+bcdef
+ij> -- now check for end-of-string blank semantics
+select c1 from chartab where c1 <= '';
+C1  
+----
+ij> select c1 from chartab where c1 <= '                      ';
+C1  
+----
+ij> select c2 from chartab where c2 <= '';
+C2   
+-----
+ij> select c2 from chartab where c2 <= ' ';
+C2   
+-----
+ij> select c2 from chartab where c2 <= '                           ';
+C2   
+-----
+ij> select c1 from chartab where c1 <= 'a        ';
+C1  
+----
+a   
+ij> select c2 from chartab where c2 <= 'a ';
+C2   
+-----
+a    
+ij> select c1 from chartab where c1 <= 'b             ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 <= 'bcdef                ';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 <= 'bcde       ';
+C2   
+-----
+a    
+ij> -- now check null <= null semantics
+select c1, c2 from chartab where c1 <= c2;
+C1  |C2   
+----------
+    |     
+a   |a    
+b   |bcdef
+ij> -- Now test >=
+select c1 from chartab where c1 >= ' ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 >= '     ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 >= 'a';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 >= 'a    ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 >= 'b';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 >= 'bcdef';
+C2   
+-----
+bcdef
+ij> -- now check for end-of-string blank semantics
+select c1 from chartab where c1 >= '';
+C1  
+----
+a   
+b   
+ij> select c1 from chartab where c1 >= '                      ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 >= '';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 >= ' ';
+C2   
+-----
+a    
+bcdef
+ij> select c2 from chartab where c2 >= '                           ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 >= 'a        ';
+C1  
+----
+a   
+b   
+ij> select c2 from chartab where c2 >= 'a ';
+C2   
+-----
+a    
+bcdef
+ij> select c1 from chartab where c1 >= 'b             ';
+C1  
+----
+b   
+ij> select c2 from chartab where c2 >= 'bcdef                ';
+C2   
+-----
+bcdef
+ij> select c2 from chartab where c2 >= 'bcde       ';
+C2   
+-----
+bcdef
+ij> -- now check null >= null semantics
+select c1, c2 from chartab where c1 >= c2;
+C1  |C2   
+----------
+    |     
+a   |a    
+ij> -- create a table with a few varchar columns.  All varchar vs. varchar
+-- comparisons must be done between columns, because there are no varchar
+-- constants in the language
+create table varchartab (c1 varchar(1), c2 varchar(1), c3 varchar(5),
+			 c4 varchar(5));
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into varchartab values ('', '', '', '');
+1 row inserted/updated/deleted
+ij> insert into varchartab values ('a', 'a', 'a', 'a');
+1 row inserted/updated/deleted
+ij> insert into varchartab values ('b', 'b', 'bcdef', 'bcdef');
+1 row inserted/updated/deleted
+ij> insert into varchartab values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into varchartab values ('', null, '', null);
+1 row inserted/updated/deleted
+ij> insert into varchartab values ('a', 'b', 'a', 'b');
+1 row inserted/updated/deleted
+ij> insert into varchartab values ('b', '', 'b', 'bcdef');
+1 row inserted/updated/deleted
+ij> -- select the ones where the columns are equal
+select c1 from varchartab where c1 = c2;
+C1  
+----
+a   
+b   
+ij> select c3 from varchartab where c3 = c4;
+C3   
+-----
+a    
+bcdef
+ij> -- test varchar = char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 = '                 ';
+C1  
+----
+ij> select c1 from varchartab where c1 = '';
+C1  
+----
+ij> select c1 from varchartab where c1 = 'a ';
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where c1 = 'b                               ';
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where c1 = 'bb';
+C1  
+----
+ij> select c3 from varchartab where c3 = ' ';
+C3   
+-----
+ij> select c3 from varchartab where c3 = '';
+C3   
+-----
+ij> select c3 from varchartab where c3 = 'a    ';
+C3   
+-----
+a    
+a    
+ij> select c3 from varchartab where c3 = 'bcdef                   ';
+C3   
+-----
+bcdef
+ij> select c3 from varchartab where c3 = 'bbbb';
+C3   
+-----
+ij> -- test char = varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' = c1;
+C1  
+----
+ij> select c1 from varchartab where '' = c1;
+C1  
+----
+ij> select c1 from varchartab where 'a ' = c1;
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where 'b                               ' = c1;
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where 'bb' = c1;
+C1  
+----
+ij> select c3 from varchartab where ' ' = c3;
+C3   
+-----
+ij> select c3 from varchartab where '' = c3;
+C3   
+-----
+ij> select c3 from varchartab where 'a    ' = c3;
+C3   
+-----
+a    
+a    
+ij> select c3 from varchartab where 'bcdef                   ' = c3;
+C3   
+-----
+bcdef
+ij> select c3 from varchartab where 'bbbb' = c3;
+C3   
+-----
+ij> -- Now test <>
+select c1 from varchartab where c1 <> c2;
+C1  
+----
+a   
+b   
+ij> select c3 from varchartab where c3 <> c4;
+C3   
+-----
+a    
+b    
+ij> -- test varchar <> char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 <> '                 ';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 <> '';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 <> 'a ';
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where c1 <> 'b                               ';
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where c1 <> 'bb';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where c3 <> ' ';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 <> '';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 <> 'a    ';
+C3   
+-----
+bcdef
+b    
+ij> select c3 from varchartab where c3 <> 'bcdef                   ';
+C3   
+-----
+a    
+a    
+b    
+ij> select c3 from varchartab where c3 <> 'bbbb';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c1 from varchartab where c1 != '                 ';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 != '';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 != 'a ';
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where c1 != 'b                               ';
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where c1 != 'bb';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where c3 != ' ';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 != '';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 != 'a    ';
+C3   
+-----
+bcdef
+b    
+ij> select c3 from varchartab where c3 != 'bcdef                   ';
+C3   
+-----
+a    
+a    
+b    
+ij> select c3 from varchartab where c3 != 'bbbb';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> -- test char <> varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' <> c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where '' <> c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where 'a ' <> c1;
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where 'b                               ' <> c1;
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where 'bb' <> c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where ' ' <> c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where '' <> c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where 'a    ' <> c3;
+C3   
+-----
+bcdef
+b    
+ij> select c3 from varchartab where 'bcdef                   ' <> c3;
+C3   
+-----
+a    
+a    
+b    
+ij> select c3 from varchartab where 'bbbb' <> c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> -- Now test <
+select c1 from varchartab where c1 < c2;
+C1  
+----
+a   
+ij> select c3 from varchartab where c3 < c4;
+C3   
+-----
+a    
+b    
+ij> -- test varchar < char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 < '                 ';
+C1  
+----
+ij> select c1 from varchartab where c1 < '';
+C1  
+----
+ij> select c1 from varchartab where c1 < 'a ';
+C1  
+----
+ij> select c1 from varchartab where c1 < 'b                               ';
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where c1 < 'bb';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where c3 < ' ';
+C3   
+-----
+ij> select c3 from varchartab where c3 < '';
+C3   
+-----
+ij> select c3 from varchartab where c3 < 'a    ';
+C3   
+-----
+ij> select c3 from varchartab where c3 < 'bcdef                   ';
+C3   
+-----
+a    
+a    
+b    
+ij> select c3 from varchartab where c3 < 'bbbb';
+C3   
+-----
+a    
+a    
+b    
+ij> -- test char < varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' < c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where '' < c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where 'a ' < c1;
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where 'b                               ' < c1;
+C1  
+----
+ij> select c1 from varchartab where 'bb' < c1;
+C1  
+----
+ij> select c3 from varchartab where ' ' < c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where '' < c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where 'a    ' < c3;
+C3   
+-----
+bcdef
+b    
+ij> select c3 from varchartab where 'bcdef                   ' < c3;
+C3   
+-----
+ij> select c3 from varchartab where 'bbbb' < c3;
+C3   
+-----
+bcdef
+ij> -- Now test >
+select c1 from varchartab where c1 > c2;
+C1  
+----
+b   
+ij> select c3 from varchartab where c3 > c4;
+C3   
+-----
+ij> -- test varchar > char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 > '                 ';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 > '';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 > 'a ';
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where c1 > 'b                               ';
+C1  
+----
+ij> select c1 from varchartab where c1 > 'bb';
+C1  
+----
+ij> select c3 from varchartab where c3 > ' ';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 > '';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 > 'a    ';
+C3   
+-----
+bcdef
+b    
+ij> select c3 from varchartab where c3 > 'bcdef                   ';
+C3   
+-----
+ij> select c3 from varchartab where c3 > 'bbbb';
+C3   
+-----
+bcdef
+ij> -- test char > varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' > c1;
+C1  
+----
+ij> select c1 from varchartab where '' > c1;
+C1  
+----
+ij> select c1 from varchartab where 'a ' > c1;
+C1  
+----
+ij> select c1 from varchartab where 'b                               ' > c1;
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where 'bb' > c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where ' ' > c3;
+C3   
+-----
+ij> select c3 from varchartab where '' > c3;
+C3   
+-----
+ij> select c3 from varchartab where 'a    ' > c3;
+C3   
+-----
+ij> select c3 from varchartab where 'bcdef                   ' > c3;
+C3   
+-----
+a    
+a    
+b    
+ij> select c3 from varchartab where 'bbbb' > c3;
+C3   
+-----
+a    
+a    
+b    
+ij> -- Now test <=
+select c1 from varchartab where c1 <= c2;
+C1  
+----
+a   
+b   
+a   
+ij> select c3 from varchartab where c3 <= c4;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> -- test varchar <= char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 <= '                 ';
+C1  
+----
+ij> select c1 from varchartab where c1 <= '';
+C1  
+----
+ij> select c1 from varchartab where c1 <= 'a ';
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where c1 <= 'b                               ';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 <= 'bb';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where c3 <= ' ';
+C3   
+-----
+ij> select c3 from varchartab where c3 <= '';
+C3   
+-----
+ij> select c3 from varchartab where c3 <= 'a    ';
+C3   
+-----
+a    
+a    
+ij> select c3 from varchartab where c3 <= 'bcdef                   ';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 <= 'bbbb';
+C3   
+-----
+a    
+a    
+b    
+ij> -- test char <= varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' <= c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where '' <= c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where 'a ' <= c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where 'b                               ' <= c1;
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where 'bb' <= c1;
+C1  
+----
+ij> select c3 from varchartab where ' ' <= c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where '' <= c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where 'a    ' <= c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where 'bcdef                   ' <= c3;
+C3   
+-----
+bcdef
+ij> select c3 from varchartab where 'bbbb' <= c3;
+C3   
+-----
+bcdef
+ij> -- Now test >=
+select c1 from varchartab where c1 >= c2;
+C1  
+----
+a   
+b   
+b   
+ij> select c3 from varchartab where c3 >= c4;
+C3   
+-----
+a    
+bcdef
+ij> -- test varchar >= char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 >= '                 ';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 >= '';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 >= 'a ';
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where c1 >= 'b                               ';
+C1  
+----
+b   
+b   
+ij> select c1 from varchartab where c1 >= 'bb';
+C1  
+----
+ij> select c3 from varchartab where c3 >= ' ';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 >= '';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 >= 'a    ';
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where c3 >= 'bcdef                   ';
+C3   
+-----
+bcdef
+ij> select c3 from varchartab where c3 >= 'bbbb';
+C3   
+-----
+bcdef
+ij> -- test char >= varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' >= c1;
+C1  
+----
+ij> select c1 from varchartab where '' >= c1;
+C1  
+----
+ij> select c1 from varchartab where 'a ' >= c1;
+C1  
+----
+a   
+a   
+ij> select c1 from varchartab where 'b                               ' >= c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where 'bb' >= c1;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c3 from varchartab where ' ' >= c3;
+C3   
+-----
+ij> select c3 from varchartab where '' >= c3;
+C3   
+-----
+ij> select c3 from varchartab where 'a    ' >= c3;
+C3   
+-----
+a    
+a    
+ij> select c3 from varchartab where 'bcdef                   ' >= c3;
+C3   
+-----
+a    
+bcdef
+a    
+b    
+ij> select c3 from varchartab where 'bbbb' >= c3;
+C3   
+-----
+a    
+a    
+b    
+ij> -- test is null semantics
+select c1 from varchartab where c1 is null;
+C1  
+----
+NULL
+ij> select c1 from varchartab where c1 is not null;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> select c1 from varchartab where not c1 is null;
+C1  
+----
+a   
+b   
+a   
+b   
+ij> -- clean up
+drop table inttab;
+0 rows inserted/updated/deleted
+ij> drop table smallinttab;
+0 rows inserted/updated/deleted
+ij> drop table biginttab;
+0 rows inserted/updated/deleted
+ij> drop table chartab;
+0 rows inserted/updated/deleted
+ij> drop table varchartab;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/compressTable.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/compressTable.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1085 @@
+ij> -- tests for system procedure SYSCS_COMPRESS_TABLE
+-- that reclaims disk space to the OS
+run resource 'createTestProcedures.subsql';
+ij> CREATE FUNCTION  PADSTRING (DATA VARCHAR(32000), LENGTH INTEGER) RETURNS VARCHAR(32000) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Formatters.padString' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 512;
+ij> CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> -- create tables
+create table noindexes(c1 int, c2 char(30), c3 decimal(5,2));
+0 rows inserted/updated/deleted
+ij> create table indexes(c1 int, c2 char(30), c3 decimal(5,2));
+0 rows inserted/updated/deleted
+ij> create index i_c1 on indexes(c1);
+0 rows inserted/updated/deleted
+ij> create index i_c2 on indexes(c2);
+0 rows inserted/updated/deleted
+ij> create index i_c3 on indexes(c3);
+0 rows inserted/updated/deleted
+ij> create index i_c3c1 on indexes(c3, c1);
+0 rows inserted/updated/deleted
+ij> create index i_c2c1 on indexes(c2, c1);
+0 rows inserted/updated/deleted
+ij> create table oldconglom(o_cnum bigint, o_cname long varchar);
+0 rows inserted/updated/deleted
+ij> create table newconglom(n_cnum bigint, n_cname long varchar);
+0 rows inserted/updated/deleted
+ij> create view v_noindexes as select * from noindexes;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- test with heap only
+-- test with empty table
+insert into oldconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'NOINDEXES' and t.tableid = c.tableid;
+1 row inserted/updated/deleted
+ij> select count(*) from oldconglom;
+1          
+-----------
+1          
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+0 rows inserted/updated/deleted
+ij> insert into newconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'NOINDEXES' and t.tableid = c.tableid;
+1 row inserted/updated/deleted
+ij> select * from oldconglom, newconglom where o_cnum = n_cnum;
+O_CNUM              |O_CNAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |N_CNUM              |N_CNAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select count(*) from newconglom;
+1          
+-----------
+1          
+ij> select * from noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- test with various sizes as we use bulk fetch
+insert into noindexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+7 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+0 rows inserted/updated/deleted
+ij> select * from noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+ij> insert into noindexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+10 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+0 rows inserted/updated/deleted
+ij> select * from noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+ij> insert into noindexes values (17, '17', 17.17), (18, '18', 18.18);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+0 rows inserted/updated/deleted
+ij> select * from noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+17         |17                            |17.17   
+18         |18                            |18.18   
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- test with some indexes
+-- test with empty table
+insert into oldconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'INDEXES' and t.tableid = c.tableid;
+6 rows inserted/updated/deleted
+ij> select count(*) from oldconglom;
+1          
+-----------
+6          
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+0 rows inserted/updated/deleted
+ij> insert into newconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'INDEXES' and t.tableid = c.tableid;
+6 rows inserted/updated/deleted
+ij> select * from oldconglom, newconglom where o_cnum = n_cnum;
+O_CNUM              |O_CNAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |N_CNUM              |N_CNAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select count(*) from newconglom;
+1          
+-----------
+6          
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- test with various sizes as we use bulk fetch
+insert into indexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+7 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+ij> insert into indexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+10 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+ij> insert into indexes values (17, '17', 17.17), (18, '18', 18.18);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+17         |17                            |17.17   
+18         |18                            |18.18   
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- primary/foreign keys
+create table p (c1 char(1), y int not null, c2 char(1) not null, x int not null, constraint pk primary key(x,y));
+0 rows inserted/updated/deleted
+ij> create table f (x int, t int, y int, constraint fk foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into p values ('1', 1, '1', 1);
+1 row inserted/updated/deleted
+ij> insert into f values (1, 1, 1), (1, 1, null);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'P', 0);
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'F', 0);
+0 rows inserted/updated/deleted
+ij> insert into f values (1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into f values (2, 2, 2);
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (2,2).  The statement has been rolled back.
+ij> insert into p values ('2', 2, '2', 2);
+1 row inserted/updated/deleted
+ij> insert into f values (2, 2, 2);
+1 row inserted/updated/deleted
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+4 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- self referencing table
+create table pf (x int not null constraint p primary key, y int constraint f references pf);
+0 rows inserted/updated/deleted
+ij> insert into pf values (1,1), (2, 2);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'PF', 0);
+0 rows inserted/updated/deleted
+ij> insert into pf values (3,1), (4, 2);
+2 rows inserted/updated/deleted
+ij> insert into pf values (3,1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'P' defined on 'PF'.
+ij> insert into pf values (5,6);
+ERROR 23503: INSERT on table 'PF' caused a violation of foreign key constraint 'F' for key (6).  The statement has been rolled back.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+4 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- multiple indexes on same column
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+0 rows inserted/updated/deleted
+ij> create table t (i int, s varchar(1500));
+0 rows inserted/updated/deleted
+ij> create index t_s on t(s);
+0 rows inserted/updated/deleted
+ij> create index t_si on t(s, i);
+0 rows inserted/updated/deleted
+ij> insert into t values (1, '1'), (2, '2');
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T', 0);
+0 rows inserted/updated/deleted
+ij> select * from t;
+I          |S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+2          |2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- verify statements get re-prepared
+create table t(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t values (1, 2), (3, 4), (5, 6);
+3 rows inserted/updated/deleted
+ij> prepare p1 as 'select * from t where c2 = 4';
+ij> execute p1;
+C1         |C2         
+-----------------------
+3          |4          
+ij> prepare s as 'select * from t where c2 = 6';
+ij> execute s;
+C1         |C2         
+-----------------------
+5          |6          
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T', 0);
+0 rows inserted/updated/deleted
+ij> execute p1;
+C1         |C2         
+-----------------------
+3          |4          
+ij> execute s;
+C1         |C2         
+-----------------------
+5          |6          
+ij> remove p1;
+ij> remove s;
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> -- verify that space getting reclaimed
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+0 rows inserted/updated/deleted
+ij> create table t(c1 int, c2 varchar(1500));
+0 rows inserted/updated/deleted
+ij> insert into t values (1,PADSTRING('1', 1500)), (2,PADSTRING('2', 1500)), (3,PADSTRING('3', 1500)), (4, PADSTRING('4', 1500)),
+	(5, PADSTRING('5', 1500)), (6, PADSTRING('6', 1500)), (7, PADSTRING('7', 1500)), (8, PADSTRING('8', 1500));
+8 rows inserted/updated/deleted
+ij> create table oldinfo (cname varchar(128), nap bigint);
+0 rows inserted/updated/deleted
+ij> insert into oldinfo select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('T') t;
+1 row inserted/updated/deleted
+ij> delete from t where c1 in (1, 3, 5, 7);
+4 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T', 0);
+0 rows inserted/updated/deleted
+ij> create table newinfo (cname varchar(128), nap bigint);
+0 rows inserted/updated/deleted
+ij> insert into newinfo select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('T') t;
+1 row inserted/updated/deleted
+ij> -- verify space reclaimed, this query should return 'compressed!'
+-- if nothing is returned from this query, then the table was not compressed
+select 'compressed!' from oldinfo o, newinfo n where o.cname = n.cname and o.nap > n.nap;
+1          
+-----------
+compressed!
+ij> rollback;
+ij> -- sequential
+-- no indexes
+-- empty table
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from v_noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+ij> -- full table
+insert into noindexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+7 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from v_noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+ij> insert into noindexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+10 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from v_noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+ij> insert into noindexes values (17, '17', 17.17), (18, '18', 18.18);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from v_noindexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+17         |17                            |17.17   
+18         |18                            |18.18   
+ij> rollback;
+ij> -- 1 index
+drop index i_c2;
+0 rows inserted/updated/deleted
+ij> drop index i_c3;
+0 rows inserted/updated/deleted
+ij> drop index i_c2c1;
+0 rows inserted/updated/deleted
+ij> drop index i_c3c1;
+0 rows inserted/updated/deleted
+ij> -- empty table
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+ij> -- full table
+insert into indexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+7 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+ij> insert into indexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+10 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+ij> insert into indexes values (17, '17', 17.17), (18, '18', 18.18);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+17         |17                            |17.17   
+18         |18                            |18.18   
+ij> rollback;
+ij> -- multiple indexes
+-- empty table
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+ij> -- full table
+insert into indexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+7 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+ij> insert into indexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+10 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+ij> insert into indexes values (17, '17', 17.17), (18, '18', 18.18);
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+0 rows inserted/updated/deleted
+ij> select * from indexes;
+C1         |C2                            |C3      
+---------------------------------------------------
+1          |1                             |1.10    
+2          |2                             |2.20    
+3          |3                             |3.30    
+4          |4                             |4.40    
+5          |5                             |5.50    
+6          |6                             |6.60    
+7          |7                             |7.70    
+8          |8                             |8.80    
+8          |8                             |8.80    
+9          |9                             |9.90    
+10         |10                            |10.10   
+11         |11                            |11.11   
+12         |12                            |12.12   
+13         |13                            |13.13   
+14         |14                            |14.14   
+15         |15                            |15.15   
+16         |16                            |16.16   
+17         |17                            |17.17   
+18         |18                            |18.18   
+ij> rollback;
+ij> --table with multiple indexes, indexes share columns
+--table has more than 4 rows
+-- multiple indexes on same column
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+0 rows inserted/updated/deleted
+ij> create table tab (a int, b int, s varchar(1500));
+0 rows inserted/updated/deleted
+ij> create index i_a on tab(a);
+0 rows inserted/updated/deleted
+ij> create index i_s on tab(s);
+0 rows inserted/updated/deleted
+ij> create index i_ab on tab(a, b);
+0 rows inserted/updated/deleted
+ij> insert into tab values (1, 1, 'abc'), (2, 2,  'bcd');
+2 rows inserted/updated/deleted
+ij> insert into tab values (3, 3, 'abc'), (4, 4,  'bcd');
+2 rows inserted/updated/deleted
+ij> insert into tab values (5, 5, 'abc'), (6, 6,  'bcd');
+2 rows inserted/updated/deleted
+ij> insert into tab values (7, 7, 'abc'), (8, 8,  'bcd');
+2 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB', 1);
+0 rows inserted/updated/deleted
+ij> select * from tab;
+A          |B          |S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1          |abc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+2          |2          |bcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+3          |3          |abc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+4          |4          |bcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+5          |5          |abc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+6          |6          |bcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+7          |7          |abc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+8          |8          |bcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> --record the number of rows
+create table oldstat(rowCount int);
+0 rows inserted/updated/deleted
+ij> insert into oldstat select count(*) from tab;
+1 row inserted/updated/deleted
+ij> commit;
+ij> --double the size of the table
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+CONGLOMERATENAME                                                                                                                |NUMALLOCATEDPAGES   
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+TAB                                                                                                                             |2                   
+I_A                                                                                                                             |1                   
+I_S                                                                                                                             |1                   
+I_AB                                                                                                                            |1                   
+ij> insert into tab values (1, 1, 'abc'), (2, 2,  'bcd');
+2 rows inserted/updated/deleted
+ij> insert into tab values (3, 3, 'abc'), (4, 4,  'bcd');
+2 rows inserted/updated/deleted
+ij> insert into tab values (5, 5, 'abc'), (6, 6,  'bcd');
+2 rows inserted/updated/deleted
+ij> insert into tab values (7, 7, 'abc'), (8, 8,  'bcd');
+2 rows inserted/updated/deleted
+ij> select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+CONGLOMERATENAME                                                                                                                |NUMALLOCATEDPAGES   
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+TAB                                                                                                                             |2                   
+I_A                                                                                                                             |1                   
+I_S                                                                                                                             |1                   
+I_AB                                                                                                                            |1                   
+ij> delete from tab;
+16 rows inserted/updated/deleted
+ij> select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+CONGLOMERATENAME                                                                                                                |NUMALLOCATEDPAGES   
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+TAB                                                                                                                             |2                   
+I_A                                                                                                                             |1                   
+I_S                                                                                                                             |1                   
+I_AB                                                                                                                            |1                   
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB', 0);
+0 rows inserted/updated/deleted
+ij> -- verify space reclaimed
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+CONGLOMERATENAME                                                                                                                |NUMALLOCATEDPAGES   
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+TAB                                                                                                                             |2                   
+I_A                                                                                                                             |1                   
+I_S                                                                                                                             |1                   
+I_AB                                                                                                                            |1                   
+ij> -- do consistency check on scans, etc.
+values  ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+3 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> rollback;
+ij> --record the number of rows
+create table newstat(rowCount int);
+0 rows inserted/updated/deleted
+ij> insert into newstat select count(*) from tab;
+1 row inserted/updated/deleted
+ij> --make sure the number of rows are the same
+select o.rowCount, n.rowCount from oldstat o, newstat n where o.rowCount = n.rowCount;
+ROWCOUNT   |ROWCOUNT   
+-----------------------
+8          |8          
+ij> --show old space usage
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+CONGLOMERATENAME                                                                                                                |NUMALLOCATEDPAGES   
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+TAB                                                                                                                             |2                   
+I_A                                                                                                                             |1                   
+I_S                                                                                                                             |1                   
+I_AB                                                                                                                            |1                   
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB', 0);
+0 rows inserted/updated/deleted
+ij> --show new space usage
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+CONGLOMERATENAME                                                                                                                |NUMALLOCATEDPAGES   
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+TAB                                                                                                                             |2                   
+I_A                                                                                                                             |1                   
+I_S                                                                                                                             |1                   
+I_AB                                                                                                                            |1                   
+ij> rollback;
+ij> drop table tab;
+0 rows inserted/updated/deleted
+ij> drop table oldstat;
+0 rows inserted/updated/deleted
+ij> -- test that many levels of aborts of compress table still work
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+0 rows inserted/updated/deleted
+ij> create table xena (a int, b int, c varchar(1000), d varchar(8000));
+0 rows inserted/updated/deleted
+ij> create index xena_idx1 on xena (a, c);
+0 rows inserted/updated/deleted
+ij> create unique index xena_idx2 on xena (b, c);
+0 rows inserted/updated/deleted
+ij> insert into xena values (1, 1, 'argo', 'horse');
+1 row inserted/updated/deleted
+ij> insert into xena values (1, -1, 'argo', 'horse');
+1 row inserted/updated/deleted
+ij> insert into xena values (2, 2, 'ares', 'god of war');
+1 row inserted/updated/deleted
+ij> insert into xena values (2, -2, 'ares', 'god of war');
+1 row inserted/updated/deleted
+ij> insert into xena values (3, 3, 'joxer', 'the mighty');
+1 row inserted/updated/deleted
+ij> insert into xena values (4, -4, 'gabrielle', 'side kick');
+1 row inserted/updated/deleted
+ij> insert into xena values (4, 4, 'gabrielle', 'side kick');
+1 row inserted/updated/deleted
+ij> select 
+    conglomeratename, isindex, 
+    numallocatedpages, numfreepages, 
+    pagesize, estimspacesaving
+    from new org.apache.derby.diag.SpaceTable('XENA') t
+        order by conglomeratename;
+CONGLOMERATENAME                                                                                                                |ISIND&|NUMALLOCATEDPAGES   |NUMFREEPAGES        |PAGESIZE   |ESTIMSPACESAVING    
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+XENA                                                                                                                            |0     |1                   |0                   |4096       |0                   
+XENA_IDX1                                                                                                                       |1     |1                   |0                   |4096       |0                   
+XENA_IDX2                                                                                                                       |1     |1                   |0                   |4096       |0                   
+ij> commit;
+ij> delete from xena where b = 1;
+1 row inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> create table xena2(a int);
+0 rows inserted/updated/deleted
+ij> delete from xena where b = 2;
+1 row inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> create table xena3(a int);
+0 rows inserted/updated/deleted
+ij> delete from xena where b = 3;
+1 row inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> create table xena4(a int);
+0 rows inserted/updated/deleted
+ij> delete from xena where b = 4;
+1 row inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> create table xena5(a int);
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- should all fail
+drop table xena2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'XENA2' because it does not exist.
+ij> drop table xena3;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'XENA3' because it does not exist.
+ij> select a, b from xena;
+A          |B          
+-----------------------
+1          |1          
+1          |-1         
+2          |2          
+2          |-2         
+3          |3          
+4          |-4         
+4          |4          
+ij> -- read every row and value in the table, including overflow pages.
+insert into xena values (select a + 4, b - 4, c, d from xena);
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> insert into xena values (select (a + 4, b - 4, c, d from xena);
+ERROR 42X01: Syntax error: Encountered "," at line 1, column 39.
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |1   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> -- delete all but 1 row (the sidekick)
+delete from xena where a <> 4 or b <> -4;
+6 rows inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |1   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+XENA_IDX1 |1   |0   |0         
+XENA_IDX2 |1   |0   |0         
+ij> rollback;
+ij> select a, b from xena;
+A          |B          
+-----------------------
+1          |1          
+1          |-1         
+2          |2          
+2          |-2         
+3          |3          
+4          |-4         
+4          |4          
+ij> drop table xena;
+0 rows inserted/updated/deleted
+ij> -- bug 2940
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+0 rows inserted/updated/deleted
+ij> create table xena (a int, b int, c varchar(1000), d varchar(8000));
+0 rows inserted/updated/deleted
+ij> insert into xena values (1, 1, 'argo', 'horse');
+1 row inserted/updated/deleted
+ij> insert into xena values (2, 2, 'beta', 'mule');
+1 row inserted/updated/deleted
+ij> insert into xena values (3, 3, 'comma', 'horse');
+1 row inserted/updated/deleted
+ij> insert into xena values (4, 4, 'delta', 'goat');
+1 row inserted/updated/deleted
+ij> insert into xena values (1, 1, 'x_argo', 'x_horse');
+1 row inserted/updated/deleted
+ij> insert into xena values (2, 2, 'x_beta', 'x_mule');
+1 row inserted/updated/deleted
+ij> insert into xena values (3, 3, 'x_comma', 'x_horse');
+1 row inserted/updated/deleted
+ij> insert into xena values (4, 4, 'x_delta', 'x_goat');
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4000');
+0 rows inserted/updated/deleted
+ij> create unique index xena1 on xena (a, c);
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','20000');
+0 rows inserted/updated/deleted
+ij> create unique index xena2 on xena (a, d);
+0 rows inserted/updated/deleted
+ij> create unique index xena3 on xena (c, d);
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select * from xena;
+A          |B          |C                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1          |argo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+2          |2          |beta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |mule                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+3          |3          |comma                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+4          |4          |delta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |goat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+1          |1          |x_argo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |x_horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
+2          |2          |x_beta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |x_mule                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+3          |3          |x_comma                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |x_horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
+4          |4          |x_delta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |x_goat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+0 rows inserted/updated/deleted
+ij> select * from xena;
+A          |B          |C                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1          |argo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+2          |2          |beta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |mule                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+3          |3          |comma                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+4          |4          |delta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |goat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+1          |1          |x_argo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |x_horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
+2          |2          |x_beta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |x_mule                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+3          |3          |x_comma                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |x_horse                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
+4          |4          |x_delta                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |x_goat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+ij> rollback;
+ij> select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+NAME      |ALOC|FREE|EST       
+-------------------------------
+XENA      |2   |0   |0         
+ij> select schemaname, tablename, 
+SYSCS_UTIL.SYSCS_CHECK_TABLE(schemaname, tablename)
+ from sys.systables a,  sys.sysschemas b where a.schemaid = b.schemaid
+order by schemaname, tablename;
+SCHEMANAME                                                                                                                      |TABLENAME                                                                                                                       |3          
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |INDEXES                                                                                                                         |1          
+APP                                                                                                                             |NEWCONGLOM                                                                                                                      |1          
+APP                                                                                                                             |NOINDEXES                                                                                                                       |1          
+APP                                                                                                                             |OLDCONGLOM                                                                                                                      |1          
+APP                                                                                                                             |V_NOINDEXES                                                                                                                     |1          
+APP                                                                                                                             |XENA                                                                                                                            |1          
+SYS                                                                                                                             |SYSALIASES                                                                                                                      |1          
+SYS                                                                                                                             |SYSCHECKS                                                                                                                       |1          
+SYS                                                                                                                             |SYSCOLUMNS                                                                                                                      |1          
+SYS                                                                                                                             |SYSCONGLOMERATES                                                                                                                |1          
+SYS                                                                                                                             |SYSCONSTRAINTS                                                                                                                  |1          
+SYS                                                                                                                             |SYSDEPENDS                                                                                                                      |1          
+SYS                                                                                                                             |SYSFILES                                                                                                                        |1          
+SYS                                                                                                                             |SYSFOREIGNKEYS                                                                                                                  |1          
+SYS                                                                                                                             |SYSKEYS                                                                                                                         |1          
+SYS                                                                                                                             |SYSSCHEMAS                                                                                                                      |1          
+SYS                                                                                                                             |SYSSTATEMENTS                                                                                                                   |1          
+SYS                                                                                                                             |SYSSTATISTICS                                                                                                                   |1          
+SYS                                                                                                                             |SYSTABLES                                                                                                                       |1          
+SYS                                                                                                                             |SYSTRIGGERS                                                                                                                     |1          
+SYS                                                                                                                             |SYSVIEWS                                                                                                                        |1          
+SYSIBM                                                                                                                          |SYSDUMMY1                                                                                                                       |1          
+ij> select a, b from xena;
+A          |B          
+-----------------------
+1          |1          
+2          |2          
+3          |3          
+4          |4          
+1          |1          
+2          |2          
+3          |3          
+4          |4          
+ij> -- clean up
+drop function padstring;
+0 rows inserted/updated/deleted
+ij> drop view v_noindexes;
+0 rows inserted/updated/deleted
+ij> drop table noindexes;
+0 rows inserted/updated/deleted
+ij> drop table indexes;
+0 rows inserted/updated/deleted
+ij> drop table oldconglom;
+0 rows inserted/updated/deleted
+ij> drop table newconglom;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/concateTests.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/concateTests.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,309 @@
+Test1 - CHAR, VARCHAR, LONGVARCHAR and CLOB concatenation tests
+Test1a - CHAR concatenations will give result type of CHAR when concatenated string < 255
+datatype of concatenated string is : CHAR
+precision of concatenated string is : 254
+Successful CHAR read of 254 characters
+Successful CHAR read of 254 characters
+Test1b boundary test - CHAR concatenations will give result type of VARCHAR when concatenated string = 255
+datatype of concatenated string is : VARCHAR
+precision of concatenated string is : 255
+Successful VARCHAR read of 255 characters
+Successful VARCHAR read of 255 characters
+Test1b - CHAR concatenations will give result type of VARCHAR when concatenated string > 254
+datatype of concatenated string is : VARCHAR
+precision of concatenated string is : 264
+Successful VARCHAR read of 264 characters
+Successful VARCHAR read of 264 characters
+Test1c - CHAR and VARCHAR concatenations will give result type of VARCHAR when concatenated string < 4001
+datatype of concatenated string is : VARCHAR
+precision of concatenated string is : 4000
+Successful VARCHAR read of 4000 characters
+Successful VARCHAR read of 4000 characters
+Successful LONG VARCHAR read of 4000 characters
+Test1d - VARCHAR and CHAR concatenations will give result type of VARCHAR when concatenated string < 4001
+datatype of concatenated string is : VARCHAR
+precision of concatenated string is : 4000
+Successful VARCHAR read of 4000 characters
+Successful VARCHAR read of 4000 characters
+Successful LONG VARCHAR read of 4000 characters
+Test1e boundary test - CHAR and VARCHAR concatenations will give result type of LONG VARCHAR when concatenated string = 4001
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 4001 characters
+Successful LONG VARCHAR read of 4001 characters
+Test1f boundary test - VARCHAR and CHAR concatenations will give result type of LONG VARCHAR when concatenated string = 4001
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 4001 characters
+Successful LONG VARCHAR read of 4001 characters
+Test1g - CHAR and LONG VARCHAR concatenations will give result type of LONG VARCHAR
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 4002 characters
+Successful LONG VARCHAR read of 4002 characters
+Test1h - VARCHAR and LONG VARCHAR concatenations will give result type of LONG VARCHAR
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 4266 characters
+Successful LONG VARCHAR read of 4266 characters
+Test1i - VARCHAR and VARCHAR concatenations will give result type of VARCHAR when concatenated string < 4001
+datatype of concatenated string is : VARCHAR
+precision of concatenated string is : 528
+Successful VARCHAR read of 528 characters
+Successful LONG VARCHAR read of 528 characters
+Test1j boundary test - VARCHAR and VARCHAR concatenations will give result type of LONG VARCHAR when concatenated string = 4001
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 4001 characters
+Successful LONG VARCHAR read of 4001 characters
+Test1j - VARCHAR and VARCHAR concatenations will give result type of LONG VARCHAR when concatenated string > 4000
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 4264 characters
+Successful LONG VARCHAR read of 4264 characters
+Test1k - LONG VARCHAR and LONG VARCHAR concatenations will give result type of LONG VARCHAR
+datatype of concatenated string is : LONG VARCHAR
+precision of concatenated string is : 32700
+Successful LONG VARCHAR read of 8528 characters
+Successful LONG VARCHAR read of 8528 characters
+Test1l - CHAR and LONGVARCHAR concatenation resulting in concatenated string > 32700 will give error
+expected exception The length resulting from CONCAT operation is greater than 32700.
+expected exception The length resulting from CONCAT operation is greater than 32700.
+Test1m - VARCHAR and LONGVARCHAR concatenation resulting in concatenated string > 32700 will give error
+expected exception The length resulting from CONCAT operation is greater than 32700.
+expected exception The length resulting from CONCAT operation is greater than 32700.
+Test1n - LONGVARCHAR and LONGVARCHAR concatenation resulting in concatenated string > 32700 will give error
+expected exception The length resulting from CONCAT operation is greater than 32700.
+expected exception The length resulting from CONCAT operation is greater than 32700.
+Test1o - CHAR(A) and CLOB(B) concatenations will give result type of CLOB(A+B) when A+B<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 266
+Successful CLOB read of 37 characters
+Successful CLOB read of 37 characters
+Test1p - CLOB(A) and CHAR(B) concatenations will give result type of CLOB(A+B) when A+B<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 266
+Successful CLOB read of 47 characters
+Successful CLOB read of 47 characters
+Test1q - CHAR(A) and CLOB(B) concatenations will give result type of CLOB(2G) when A+B>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 25 characters
+Successful CLOB read of 25 characters
+Test1r - CLOB(A) and CHAR(B) concatenations will give result type of CLOB(2G) when A+B>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 35 characters
+Successful CLOB read of 35 characters
+Test1s - VARCHAR(A) and CLOB(B) concatenations will give result type of CLOB(A+B) when A+B<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 356
+Successful CLOB read of 62 characters
+Successful CLOB read of 62 characters
+Test1t - CLOB(A) and VARCHAR(B) concatenations will give result type of CLOB(A+B) when A+B<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 356
+Successful CLOB read of 77 characters
+Successful CLOB read of 77 characters
+Test1u - VARCHAR(A) and CLOB(B) concatenations will give result type of CLOB(2G) when A+B>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 50 characters
+Successful CLOB read of 50 characters
+Test1v - CLOB(A) and VARCHAR(B) concatenations will give result type of CLOB(2G) when A+B>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 65 characters
+Successful CLOB read of 65 characters
+Test1w - LONG VARCHAR and CLOB(A) concatenations will give result type of CLOB(A+32K) when A+32K<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 33024
+Successful CLOB read of 97 characters
+Successful CLOB read of 97 characters
+Test1x - CLOB(A) and LONG VARCHAR concatenations will give result type of CLOB(A+32K) when A+32K<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 33024
+Successful CLOB read of 117 characters
+Successful CLOB read of 117 characters
+Test1y - LONG VARCHAR and CLOB(B) concatenations will give result type of CLOB(2G) when A+32K>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 85 characters
+Successful CLOB read of 85 characters
+Test1z - CLOB(A) and LONG VARCHAR concatenations will give result type of CLOB(2G) when A+32K>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 105 characters
+Successful CLOB read of 105 characters
+Test11a - CLOB(A) and CLOB(B) concatenations will give result type of CLOB(A+B) when A+B<2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 1048832
+Successful CLOB read of 132 characters
+Successful CLOB read of 132 characters
+Test11b - CLOB(A) and CLOB(B) concatenations will give result type of CLOB(2G) when A+B>2G
+datatype of concatenated string is : CLOB
+precision of concatenated string is : 2147483647
+Successful CLOB read of 237 characters
+Successful CLOB read of 237 characters
+Test12 - try 2 empty string concatenation and verify that length comes back as 0 for the result
+datatype of concatenated string is : CHAR
+precision of concatenated string is : 0
+Successful CHAR read of 0 characters
+Test1 finished - CHAR, VARCHAR, LONGVARCHAR and CLOB concatenation tests
+Test2 - CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, LONGVARCHAR FOR BIT DATA and BLOB concatenation tests
+Test2a - CHAR FOR BIT DATA concatenations will give result type of CHAR FOR BIT DATA when concatenated string < 255
+datatype of concatenated string is : CHAR () FOR BIT DATA
+precision of concatenated string is : 254
+Successful CHAR () FOR BIT DATA read of 254 bytes
+Successful CHAR () FOR BIT DATA read of 254 bytes
+Test2b boundary test - CHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string = 255
+datatype of concatenated string is : VARCHAR () FOR BIT DATA
+precision of concatenated string is : 255
+Successful VARCHAR () FOR BIT DATA read of 255 bytes
+Successful VARCHAR () FOR BIT DATA read of 255 bytes
+Test2b - CHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string > 254
+datatype of concatenated string is : VARCHAR () FOR BIT DATA
+precision of concatenated string is : 264
+Successful VARCHAR () FOR BIT DATA read of 264 bytes
+Successful VARCHAR () FOR BIT DATA read of 264 bytes
+Test2c - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string < 4001
+datatype of concatenated string is : VARCHAR () FOR BIT DATA
+precision of concatenated string is : 4000
+Successful VARCHAR () FOR BIT DATA read of 4000 bytes
+Successful VARCHAR () FOR BIT DATA read of 4000 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4000 bytes
+Test2d - VARCHAR FOR BIT DATA and CHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string < 4001
+datatype of concatenated string is : VARCHAR () FOR BIT DATA
+precision of concatenated string is : 4000
+Successful VARCHAR () FOR BIT DATA read of 4000 bytes
+Successful VARCHAR () FOR BIT DATA read of 4000 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4000 bytes
+Test2e boundary test - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string > 4000
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 4001 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4001 bytes
+Test2f boundary test - VARCHAR FOR BIT DATA and CHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string > 4000
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 4001 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4001 bytes
+Test2g - CHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 4002 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4002 bytes
+Test2h - VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 4266 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4266 bytes
+Test2i - VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string < 4001
+datatype of concatenated string is : VARCHAR () FOR BIT DATA
+precision of concatenated string is : 528
+Successful VARCHAR () FOR BIT DATA read of 528 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 528 bytes
+Test2j boundary test - VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string = 4001
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 4001 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4001 bytes
+Test2j - VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string > 4000
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 4264 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 4264 bytes
+Test2k - LONG VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 8528 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 8528 bytes
+Test2l - CHAR FOR BIT DATA and LONGVARCHAR FOR BIT DATA concatenation resulting in concatenated string > 32700
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 32738 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 32738 bytes
+Test2m - VARCHAR FOR BIT DATA and LONGVARCHAR FOR BIT DATA concatenation resulting in concatenated string > 32700
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 33002 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 33002 bytes
+Test2n - LONGVARCHAR FOR BIT DATA and LONGVARCHAR FOR BIT DATA concatenation resulting in concatenated string > 32700
+datatype of concatenated string is : LONG VARCHAR FOR BIT DATA
+precision of concatenated string is : 32700
+Successful LONG VARCHAR FOR BIT DATA read of 41530 bytes
+Successful LONG VARCHAR FOR BIT DATA read of 41530 bytes
+Test2o - CHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(A+B) when A+B<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 266
+Successful BLOB read of 20 bytes
+Successful BLOB read of 20 bytes
+Test2p - BLOB(A) and CHAR(B) FOR BIT DATA concatenations will give result type of BLOB(A+B) when A+B<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 266
+Successful BLOB read of 30 bytes
+Successful BLOB read of 30 bytes
+Test2q - CHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(2G) when A+B>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 20 bytes
+Successful BLOB read of 20 bytes
+Test2r - BLOB(A) and CHAR(B) FOR BIT DATA concatenations will give result type of BLOB(2G) when A+B>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 30 bytes
+Successful BLOB read of 30 bytes
+Test2s - VARCHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(A+B) when A+B<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 356
+Successful BLOB read of 40 bytes
+Successful BLOB read of 40 bytes
+Test2t - BLOB(A) and VARCHAR(B) FOR BIT DATA concatenations will give result type of BLOB(A+B) when A+B<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 356
+Successful BLOB read of 50 bytes
+Successful BLOB read of 50 bytes
+Test2u - VARCHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(2G) when A+B>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 40 bytes
+Successful BLOB read of 40 bytes
+Test2v - BLOB(A) and VARCHAR(B) FOR BIT DATA concatenations will give result type of BLOB(2G) when A+B>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 50 bytes
+Successful BLOB read of 50 bytes
+Test2w - LONG VARCHAR FOR BIT DATA and BLOB(A) concatenations will give result type of BLOB(A+32K) when A+32K<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 33024
+Successful BLOB read of 60 bytes
+Successful BLOB read of 60 bytes
+Test2x - BLOB(A) and LONG VARCHAR FOR BIT DATA concatenations will give result type of BLOB(A+32K) when A+32K<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 33024
+Successful BLOB read of 70 bytes
+Successful BLOB read of 70 bytes
+Test2y - LONG VARCHAR FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(2G) when A+32K>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 60 bytes
+Successful BLOB read of 60 bytes
+Test2z - BLOB(A) and LONG VARCHAR FOR BIT DATA concatenations will give result type of BLOB(2G) when A+32K>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 70 bytes
+Successful BLOB read of 70 bytes
+Test21a - BLOB(A) and BLOB(B) concatenations will give result type of BLOB(A+B) when A+B<2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 1048832
+Successful BLOB read of 80 bytes
+Successful BLOB read of 80 bytes
+Test21b - BLOB(A) and BLOB(B) concatenations will give result type of BLOB(2G) when A+B>2G
+datatype of concatenated string is : BLOB
+precision of concatenated string is : 2147483647
+Successful BLOB read of 150 bytes
+Successful BLOB read of 150 bytes
+Test22 - try 2 empty char for bit data concatenation and verify that length comes back as 0 for the result
+datatype of concatenated string is : CHAR () FOR BIT DATA
+precision of concatenated string is : 0
+Test2 finished - CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, LONGVARCHAR FOR BIT DATA and BLOB concatenation tests

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,32 @@
+ij> driver 'org.apache.derby.jdbc.EmbeddedDriver';
+ij> connect 'jdbc:derby:wombat;create=true';
+ij> -- can we run a simple query?
+values 1;
+1          
+-----------
+1          
+ij> -- can we disconnect?
+disconnect;
+ij> -- can we reconnect?
+connect 'jdbc:derby:wombat;create=true';
+WARNING 01J01: Database 'wombat' not created, connection made to existing database instead.
+ij> -- can we run a simple query?
+values 1;
+1          
+-----------
+1          
+ij> disconnect;
+ij> -- do we get a non-internal error when we try to create
+-- over an existing directory? (T#674)
+connect 'jdbc:derby:wombat/seg0;create=true';
+ERROR XJ041: Failed to create database 'wombat/seg0', see the next exception for details.
+ERROR XBM0J: Directory DBLOCATION/seg0 already exists.
+ij> -- check to ensure an empty database name is taken
+-- as the name, over any connection attribute.
+-- this should fail.
+connect 'jdbc:derby: ;databaseName=wombat';
+ERROR XJ004: Database '' not found.
+ij> -- and this should succeed (no database name in URL)
+connect 'jdbc:derby:;databaseName=wombat';
+ij> disconnect;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/consistencyChecker.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/consistencyChecker.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,215 @@
+ij> --
+-- this test shows the consistency checker in action;
+--
+-- create a table with some indexes
+create table t1(i int, s smallint, c10 char(10), vc10 varchar(10), dc decimal(5,2));
+0 rows inserted/updated/deleted
+ij> create index t1_i on t1(i);
+0 rows inserted/updated/deleted
+ij> create index t1_s on t1(s);
+0 rows inserted/updated/deleted
+ij> create index t1_c10 on t1(c10);
+0 rows inserted/updated/deleted
+ij> create index t1_vc10 on t1(vc10);
+0 rows inserted/updated/deleted
+ij> create index t1_dc on t1(dc);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values (1, 11, '1 1', '1 1 1 ', 111.11);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 22, '2 2', '2 2 2 ', 222.22);
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 33, '3 3', '3 3 3 ', 333.33);
+1 row inserted/updated/deleted
+ij> insert into t1 values (4, 44, '4 4', '4 4 4 ', 444.44);
+1 row inserted/updated/deleted
+ij> -- verify that everything is alright
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+1          
+ij> CREATE PROCEDURE RFHR(P1 VARCHAR(128), P2 VARCHAR(128))
+LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker.reinsertFirstHeapRow'
+PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE DFHR(P1 VARCHAR(128), P2 VARCHAR(128))
+LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker.deleteFirstHeapRow'
+PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE NFHR(P1 VARCHAR(128), P2 VARCHAR(128))
+LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker.nullFirstHeapRow'
+PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- differing row counts
+call RFHR('APP', 'T1');
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0Y55: The number of rows in the base table does not match the number of rows in at least 1 of the indexes on the table. Index 'T1_I' on table 'APP.T1' has 4 rows, but the base table has 5 rows.  The suggested corrective action is to recreate the index.
+ij> -- drop and recreate each index to see differing count move to next index
+drop index t1_i;
+0 rows inserted/updated/deleted
+ij> create index t1_i on t1(i);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0Y55: The number of rows in the base table does not match the number of rows in at least 1 of the indexes on the table. Index 'T1_S' on table 'APP.T1' has 4 rows, but the base table has 5 rows.  The suggested corrective action is to recreate the index.
+ij> drop index t1_s;
+0 rows inserted/updated/deleted
+ij> create index t1_s on t1(s);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0Y55: The number of rows in the base table does not match the number of rows in at least 1 of the indexes on the table. Index 'T1_C10' on table 'APP.T1' has 4 rows, but the base table has 5 rows.  The suggested corrective action is to recreate the index.
+ij> drop index t1_c10;
+0 rows inserted/updated/deleted
+ij> create index t1_c10 on t1(c10);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0Y55: The number of rows in the base table does not match the number of rows in at least 1 of the indexes on the table. Index 'T1_VC10' on table 'APP.T1' has 4 rows, but the base table has 5 rows.  The suggested corrective action is to recreate the index.
+ij> drop index t1_vc10;
+0 rows inserted/updated/deleted
+ij> create index t1_vc10 on t1(vc10);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0Y55: The number of rows in the base table does not match the number of rows in at least 1 of the indexes on the table. Index 'T1_DC' on table 'APP.T1' has 4 rows, but the base table has 5 rows.  The suggested corrective action is to recreate the index.
+ij> drop index t1_dc;
+0 rows inserted/updated/deleted
+ij> create index t1_dc on t1(dc);
+0 rows inserted/updated/deleted
+ij> -- everything should be back to normal
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+1          
+ij> -- delete 1st row from heap
+call DFHR('APP', 'T1');
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X62: Inconsistency found between table 'APP.T1' and index 'T1_I'.  Error when trying to retrieve row location '(1,7)' from the table.  The full index key, including the row location, is '{ 1, (1,7) }'. The suggested corrective action is to recreate the index.
+ij> -- drop and recreate each index to see differing count move to next index
+drop index t1_i;
+0 rows inserted/updated/deleted
+ij> create index t1_i on t1(i);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X62: Inconsistency found between table 'APP.T1' and index 'T1_S'.  Error when trying to retrieve row location '(1,7)' from the table.  The full index key, including the row location, is '{ 11, (1,7) }'. The suggested corrective action is to recreate the index.
+ij> drop index t1_s;
+0 rows inserted/updated/deleted
+ij> create index t1_s on t1(s);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X62: Inconsistency found between table 'APP.T1' and index 'T1_C10'.  Error when trying to retrieve row location '(1,7)' from the table.  The full index key, including the row location, is '{ 1 1       , (1,7) }'. The suggested corrective action is to recreate the index.
+ij> drop index t1_c10;
+0 rows inserted/updated/deleted
+ij> create index t1_c10 on t1(c10);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X62: Inconsistency found between table 'APP.T1' and index 'T1_VC10'.  Error when trying to retrieve row location '(1,7)' from the table.  The full index key, including the row location, is '{ 1 1 1 , (1,7) }'. The suggested corrective action is to recreate the index.
+ij> drop index t1_vc10;
+0 rows inserted/updated/deleted
+ij> create index t1_vc10 on t1(vc10);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X62: Inconsistency found between table 'APP.T1' and index 'T1_DC'.  Error when trying to retrieve row location '(1,7)' from the table.  The full index key, including the row location, is '{ 111.11, (1,7) }'. The suggested corrective action is to recreate the index.
+ij> drop index t1_dc;
+0 rows inserted/updated/deleted
+ij> create index t1_dc on t1(dc);
+0 rows inserted/updated/deleted
+ij> -- everything should be back to normal
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+1          
+ij> -- set 1st row from heap to all nulls
+select * from t1;
+I          |S     |C10       |VC10      |DC      
+-------------------------------------------------
+2          |22    |2 2       |2 2 2     |222.22  
+3          |33    |3 3       |3 3 3     |333.33  
+4          |44    |4 4       |4 4 4     |444.44  
+1          |11    |1 1       |1 1 1     |111.11  
+ij> call NFHR('APP', 'T1');
+0 rows inserted/updated/deleted
+ij> select * from t1;
+I          |S     |C10       |VC10      |DC      
+-------------------------------------------------
+NULL       |NULL  |NULL      |NULL      |NULL    
+3          |33    |3 3       |3 3 3     |333.33  
+4          |44    |4 4       |4 4 4     |444.44  
+1          |11    |1 1       |1 1 1     |111.11  
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X61: The values for column 'I' in index 'T1_I' and table 'APP.T1' do not match for row location (1,8).  The value in the index is '2', while the value in the base table is 'NULL'.  The full index key, including the row location, is '{ 2, (1,8) }'.  The suggested corrective action is to recreate the index.
+ij> -- drop and recreate each index to see differing count move to next index
+drop index t1_i;
+0 rows inserted/updated/deleted
+ij> create index t1_i on t1(i);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X61: The values for column 'S' in index 'T1_S' and table 'APP.T1' do not match for row location (1,8).  The value in the index is '22', while the value in the base table is 'NULL'.  The full index key, including the row location, is '{ 22, (1,8) }'.  The suggested corrective action is to recreate the index.
+ij> drop index t1_s;
+0 rows inserted/updated/deleted
+ij> create index t1_s on t1(s);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X61: The values for column 'C10' in index 'T1_C10' and table 'APP.T1' do not match for row location (1,8).  The value in the index is '2 2       ', while the value in the base table is 'NULL'.  The full index key, including the row location, is '{ 2 2       , (1,8) }'.  The suggested corrective action is to recreate the index.
+ij> drop index t1_c10;
+0 rows inserted/updated/deleted
+ij> create index t1_c10 on t1(c10);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X61: The values for column 'VC10' in index 'T1_VC10' and table 'APP.T1' do not match for row location (1,8).  The value in the index is '2 2 2 ', while the value in the base table is 'NULL'.  The full index key, including the row location, is '{ 2 2 2 , (1,8) }'.  The suggested corrective action is to recreate the index.
+ij> drop index t1_vc10;
+0 rows inserted/updated/deleted
+ij> create index t1_vc10 on t1(vc10);
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+ERROR X0X61: The values for column 'DC' in index 'T1_DC' and table 'APP.T1' do not match for row location (1,8).  The value in the index is '222.22', while the value in the base table is 'NULL'.  The full index key, including the row location, is '{ 222.22, (1,8) }'.  The suggested corrective action is to recreate the index.
+ij> drop index t1_dc;
+0 rows inserted/updated/deleted
+ij> create index t1_dc on t1(dc);
+0 rows inserted/updated/deleted
+ij> -- everything should be back to normal
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+1          
+-----------
+1          
+ij> -- RESOLVE - Next test commented out due to inconsistency in store error
+-- message (sane vs. insane).  Check every index once store returns
+-- consistent error.
+-- insert a row with a bad row location into index
+-- call org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker::insertBadRowLocation('APP', 'T1', 'T1_I');
+-- values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+-- cleanup
+drop table t1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/constantExpression.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/constantExpression.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,87 @@
+ij> -- tests for constant expression evaluation
+autocommit off;
+ij> -- create and populate a table
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1, 2, 3;
+3 rows inserted/updated/deleted
+ij> -- false constant expressions
+select * from t1 where 1 <> 1;
+C1         
+-----------
+ij> select * from t1 where 1 = 1 and 1 = 0;
+C1         
+-----------
+ij> select * from t1 where 1 = (2 + 3 - 2);
+C1         
+-----------
+ij> select * from t1 where (case when 1 = 1 then 0 else 1 end) = 1;
+C1         
+-----------
+ij> select * from t1 where 1 in (2, 3, 4);
+C1         
+-----------
+ij> select * from t1 where 1 between 2 and 3;
+C1         
+-----------
+ij> prepare p1 as 'select * from t1 where ? = 1';
+ij> prepare p2 as 'select * from t1 where cast(? as int) = 1';
+ij> execute p1 using 'values 0';
+C1         
+-----------
+ij> execute p2 using 'values 0';
+C1         
+-----------
+ij> -- true constant expressions
+select * from t1 where 1 = 1;
+C1         
+-----------
+1          
+2          
+3          
+ij> select * from t1 where 1 = 0 or 1 = 1;
+C1         
+-----------
+1          
+2          
+3          
+ij> select * from t1 where 1 + 2 = (2 + 3 - 2);
+C1         
+-----------
+1          
+2          
+3          
+ij> select * from t1 where (case when 1 = 1 then 1 else 0 end) = 1;
+C1         
+-----------
+1          
+2          
+3          
+ij> select * from t1 where 1 in (2, 3, 4, 4, 3, 2, 1);
+C1         
+-----------
+1          
+2          
+3          
+ij> select * from t1 where 1 + 1 between 0 and 3;
+C1         
+-----------
+1          
+2          
+3          
+ij> execute p1 using 'values 1';
+C1         
+-----------
+1          
+2          
+3          
+ij> execute p2 using 'values 1';
+C1         
+-----------
+1          
+2          
+3          
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/csPrepStmt.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/csPrepStmt.out	Thu Nov 11 23:39:22 2004
@@ -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 'CS.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: 0.000000000000001
+Prepared Statement String: update Numeric_Tab set NULL_VAL=?
+Select NULL_VAL from Numeric_Tab
+Returned BigDecimal Value after Updation: 0.000000000000001
+Value returned from ctssql.stmt: 0.000000000000001
+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: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentSchema.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentSchema.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,324 @@
+ij> -- test for CURRENT SCHEMA and optional DB2 compatible SET SCHEMA statement
+--
+-- test SET SCHEMA syntax variations
+-- syntax is SET [CURRENT] SCHEMA [=] (<identifier> | USER | ? | '<string>')
+--			 SET CURRENT SQLID [=] (<identifier> | USER | ? | '<string>')
+--
+values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema sys;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+SYS                                                                                                                             
+ij> create schema app;
+ERROR X0Y68: Schema 'APP' already exists.
+ij> set current schema app;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema =  sys;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+SYS                                                                                                                             
+ij> set current schema = app;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema sys;
+0 rows inserted/updated/deleted
+ij> -- user should use default schema if no user set
+set schema user;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> -- see what user does when there is a user
+create schema judy;
+0 rows inserted/updated/deleted
+ij> connect 'jdbc:derby:wombat;user=judy' as judy;
+ij(JUDY)> set schema app;
+0 rows inserted/updated/deleted
+ij(JUDY)> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij(JUDY)> set schema user;
+0 rows inserted/updated/deleted
+ij(JUDY)> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+JUDY                                                                                                                            
+ij(JUDY)> disconnect;
+ij> set connection connection0;
+ij> -- check for default
+values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> -- check that current sqlid works as a synonym
+values current sqlid;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> -- check that sqlid still works as an identifer
+create table sqlid(sqlid int);
+0 rows inserted/updated/deleted
+ij> drop table sqlid;
+0 rows inserted/updated/deleted
+ij> -- check that set current sqlid works
+set current sqlid judy;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+JUDY                                                                                                                            
+ij> -- check that set sqlid doesn't work (not DB2 compatible) - should get error
+set sqlid judy;
+ERROR 42X01: Syntax error: Encountered "sqlid" at line 2, column 5.
+ij> -- change schema and make sure that the current schema is correct
+set schema sys;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+SYS                                                                                                                             
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> -- try using ? outside of a prepared statement
+set schema ?;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> -- use set schema in a prepared statement
+autocommit off;
+ij> prepare p1 as 'set schema ?';
+ij> -- should get error with no parameters
+execute p1;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> -- should get error if null is used
+create table t1(name varchar(128));
+0 rows inserted/updated/deleted
+ij> insert into t1 values(null);
+1 row inserted/updated/deleted
+ij> execute p1 using 'select name from t1';
+ERROR 42815: The replacement value for 'CURRENT SCHEMA' is invalid.
+ij> -- should get error if schema doesn't exist
+execute p1 using 'values(''notthere'')';
+ERROR 42Y07: Schema 'notthere' does not exist
+ij> -- should error with empty string
+execute p1 using 'values('''')';
+ERROR 42Y07: Schema '' does not exist
+ij> -- should get error if wrong case used
+execute p1 using 'values(''sys'')';
+ERROR 42Y07: Schema 'sys' does not exist
+ij> -- should get error if too many parameters
+execute p1 using 'values(''sys'',''app'')';
+ERROR XCL13: The parameter position '2' is out of range.  The number of parameters for this prepared  statement is '1'.
+ij> -- USER should return an error as it is interpreted as a string constant not an
+-- identifier
+execute p1 using 'values(''USER'')';
+ERROR 42Y07: Schema 'USER' does not exist
+ij> -- try positive test
+execute p1 using 'values(''SYS'')';
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+SYS                                                                                                                             
+ij> rollback;
+ij> autocommit on;
+ij> -- 
+-- try current schema in a number of statements types
+set schema app;
+0 rows inserted/updated/deleted
+ij> create table t1 ( a varchar(128));
+0 rows inserted/updated/deleted
+ij> -- insert
+insert into t1 values (current schema);
+1 row inserted/updated/deleted
+ij> select * from t1;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema judy;
+0 rows inserted/updated/deleted
+ij> insert into app.t1 values (current schema);
+1 row inserted/updated/deleted
+ij> select * from app.t1;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+JUDY                                                                                                                            
+ij> -- delete where clause
+delete from app.t1 where a = current schema;
+1 row inserted/updated/deleted
+ij> select * from app.t1;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set current schema app;
+0 rows inserted/updated/deleted
+ij> -- target list
+select current schema from t1;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> -- where clause
+select * from t1 where a = current schema;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> -- update statement
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 values ('test');
+1 row inserted/updated/deleted
+ij> select * from t1;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+test                                                                                                                            
+ij> update t1 set a = current schema;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema judy;
+0 rows inserted/updated/deleted
+ij> update app.t1 set a = current schema;
+1 row inserted/updated/deleted
+ij> select * from app.t1;
+A                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+JUDY                                                                                                                            
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- default
+set schema APP;
+0 rows inserted/updated/deleted
+ij> create table t1 ( a int, b varchar(128) default current schema);
+0 rows inserted/updated/deleted
+ij> insert into t1 (a) values (1);
+1 row inserted/updated/deleted
+ij> set schema SYS;
+0 rows inserted/updated/deleted
+ij> insert into app.t1 (a) values (1);
+1 row inserted/updated/deleted
+ij> set schema judy;
+0 rows inserted/updated/deleted
+ij> insert into app.t1 (a) values (1);
+1 row inserted/updated/deleted
+ij> set schema APP;
+0 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------
+1          |APP                                                                                                                             
+1          |SYS                                                                                                                             
+1          |JUDY                                                                                                                            
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- check constraint - this should fail
+create table t1 ( a varchar(128), check (a = current schema));
+ERROR 42Y39: 'CURRENT SCHEMA' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> create table t1 ( a varchar(128), check (a = current sqlid));
+ERROR 42Y39: 'CURRENT SCHEMA' may not appear in a CHECK CONSTRAINT definition because it may return non-deterministic results.
+ij> -- try mix case
+create schema "MiXCase";
+0 rows inserted/updated/deleted
+ij> set schema "MiXCase";
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+MiXCase                                                                                                                         
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema 'MiXCase';
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+MiXCase                                                                                                                         
+ij> -- following should get error - schema not found
+set schema 'MIXCASE';
+ERROR 42Y07: Schema 'MIXCASE' does not exist
+ij> set schema mixcase;
+ERROR 42Y07: Schema 'MIXCASE' does not exist
+ij> -- try long schema names (maximum schema identifier length has been changed to 30 as part of DB2 compatibility work)
+create schema t23456789012345678901234567890;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+MiXCase                                                                                                                         
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema t23456789012345678901234567890;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+T23456789012345678901234567890                                                                                                  
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> set schema 'T23456789012345678901234567890';
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+T23456789012345678901234567890                                                                                                  
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             
+ij> autocommit off;
+ij> prepare p1 as 'set schema ?';
+ij> execute p1 using 'values(''T23456789012345678901234567890'')';
+0 rows inserted/updated/deleted
+ij> values current schema;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+T23456789012345678901234567890                                                                                                  
+ij> -- the following should fail - 31 length
+create schema t234567890123456789012345678901;
+ERROR 42622: The name 'T234567890123456789012345678901' is too long. The maximum length is '30'.
+ij> set schema t234567890123456789012345678901;
+ERROR 42622: The name 'T234567890123456789012345678901' is too long. The maximum length is '30'.
+ij> set schema 'T234567890123456789012345678901';
+ERROR 42622: The name 'T234567890123456789012345678901' is too long. The maximum length is '30'.
+ij> execute p1 using 'values(''T234567890123456789012345678901'')';
+ERROR 42Y07: Schema 'T234567890123456789012345678901' does not exist
+ij> rollback;
+ij> autocommit on;
+ij> -- clean up
+drop schema judy restrict;
+0 rows inserted/updated/deleted
+ij> drop schema t234567890123456789012345678901 restrict;
+ERROR 42622: The name 'T234567890123456789012345678901' is too long. The maximum length is '30'.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentof.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/currentof.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+Test currentof starting
+PASS: expected and got 0 rowson stmt: create table t (i int, c char(50))
+PASS: expected and got 0 rowson stmt: create table s (i int, c char(50))
+PASS: expected and got 1 rowon stmt: insert into t values (1956, 'hello world')
+PASS: expected and got 1 rowon stmt: insert into t values (456, 'hi yourself')
+PASS: expected and got 1 rowon stmt: insert into t values (180, 'rubber ducky')
+PASS: expected and got 1 rowon stmt: insert into t values (3, 'you are the one')
+PASS: setup complete
+Row: 1956,hello world                                       
+Row: 456,hi yourself                                       
+Row: 180,rubber ducky                                      
+Row: 3,you are the one                                   
+Have 4 rows in table at start
+ERROR 42X28: Delete table 'S' is not target of cursor 'SQLCUR0'.
+PASS: delete table and cursor table mismatch caught
+ERROR XCL08: Cursor 'SQLCUR0' is not on a row.
+PASS: Attempt to delete cursor before first row caught
+PASS: expected and got true
+Row: 1956,hello world                                       
+PASS: expected and got 1 rowon stmt: delete, ok
+PASS: expected and got true
+Row: 456,hi yourself                                       
+PASS: expected and got true
+Row: 180,rubber ducky                                      
+PASS: expected and got 1 rowon stmt: <delete after skipping>
+PASS: expected and got true
+Row: 3,you are the one                                   
+PASS: expected and got false
+ERROR XCL08: Cursor 'SQLCUR0' is not on a row.
+PASS: Attempt to delete cursor past last row caught
+ERROR XCL07: Cursor 'SQLCUR0' is closed. Verify that autocommit is OFF.
+PASS: Attempt to delete closed cursor caught
+Row: 456,hi yourself                                       
+Row: 3,you are the one                                   
+Have 2 rows in table at end
+PASS: expected and got 2 rowson stmt: startCount-endCount
+ERROR 42X30: Cursor 'NOSUCHCURSOR' not found. Verify that autocommit is OFF.
+PASS: Attempt to delete nonexistent cursor caught
+PASS: delete test complete
+PASS: expected and got false
+PASS: expected and got 1 rowon stmt: insert into t values (1956, 'hello world')
+PASS: expected and got 1 rowon stmt: insert into t values (456, 'hi yourself')
+PASS: expected and got 1 rowon stmt: insert into t values (180, 'rubber ducky')
+PASS: expected and got 1 rowon stmt: insert into t values (3, 'you are the one')
+PASS: setup complete
+Row: 1956,hello world                                       
+Row: 456,hi yourself                                       
+Row: 180,rubber ducky                                      
+Row: 3,you are the one                                   
+Have 4 rows in table at start
+ERROR 42X31: Column 'C' is not in FOR UPDATE list of cursor 'SQLCUR1'.
+PASS: update of non-existant column caught
+PASS: update of read-only cursor caught
+PASS: update of fetch-only cursor caught
+PASS: update of union cursor caught
+PASS: update of join cursor caught
+PASS: update of derived table cursor caught
+PASS: update of values clause cursor caught
+PASS: update of subquery cursor caught
+ERROR 42X29: Update table 'S' is not target of cursor 'SQLCUR2'.
+PASS: update table and cursor table mismatch caught
+ERROR XCL08: Cursor 'SQLCUR2' is not on a row.
+PASS: Attempt to update cursor before first row caught
+PASS: expected and got true
+Row: 1956,hello world                                       
+PASS: expected and got 1 rowon stmt: update on row
+PASS: expected and got 1 rowon stmt: 2nd update on row
+PASS: expected and got true
+Row: 456,hi yourself                                       
+PASS: expected and got true
+Row: 180,rubber ducky                                      
+PASS: expected and got 1 rowon stmt: update after skipping
+PASS: expected and got true
+Row: 3,you are the one                                   
+PASS: expected and got false
+ERROR XCL08: Cursor 'SQLCUR2' is not on a row.
+PASS: Attempt to update cursor past last row caught
+ERROR 42X30: Cursor 'SQLCUR2' not found. Verify that autocommit is OFF.
+PASS: Attempt to update closed cursor caught
+ERROR 42X30: Cursor 'NOSUCHCURSOR' not found. Verify that autocommit is OFF.
+PASS: Attempt to update nonexistent cursor caught
+Row: 1976,Gumby was here                                    
+Row: 456,hi yourself                                       
+Row: 190,Gumby was here                                    
+Row: 3,you are the one                                   
+Have 4 rows in table at end
+bug4395 Cursor Name Application Defined
+PASS: expected and got true
+Row: 1976,Gumby was here                                    
+PASS: expected and got 1 rowon stmt: update: valid update
+PASS: expected and got true
+Row: 1986,Dan was here                                      
+ERROR 42X31: Column 'C' is not in FOR UPDATE list of cursor 'CS4395'.
+PASS: Attempt to update changed invalid cursor caught
+PASS: expected and got true
+Row: 1986,Dan was here                                      
+bug4395 Cursor Name System Generated
+PASS: expected and got true
+Row: 1986,Dan was here                                      
+PASS: expected and got 1 rowon stmt: update: valid update
+PASS: expected and got true
+Row: 1996,Dan was here                                      
+ERROR 42X31: Column 'C' is not in FOR UPDATE list of cursor 'SQLCUR3'.
+PASS: Attempt to update changed invalid cursor caught
+PASS: expected and got true
+Row: 1996,Dan was here                                      
+PASS: update test complete
+PASS: expected and got 0 rowson stmt: drop table t
+PASS: expected and got 0 rowson stmt: drop table s
+PASS: teardown complete
+PASS
+Test currentof finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursor.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursor.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,58 @@
+Test cursor starting
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 1 row
+PASS: expected and got 1 row
+PASS: expected and got 1 row
+PASS: expected and got 1 row
+PASS: setup complete
+PASS: expected and got true
+Row: 1956,hello world                                       
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+Row: 1956,hello world                                       
+Row: 456,hi yourself                                       
+Row: 180,rubber ducky                                      
+Row: 3,you are the one                                   
+No current row
+PASS: cursor test complete
+PASS: expected and got true
+Row: 1956,hello world                                       
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+PASS: Attempt to get next on closed cursor caught
+PASS: cursor name set
+No current row
+PASS: cursor test complete
+Test cursor name for select * from t Cursor name = null
+cursor name = null
+Test cursor name for select * from t for update Cursor name = null
+cursor name = SQLCUR0
+Test cursor name for select * from t for update of i Cursor name = null
+cursor name = SQLCUR1
+Test cursor name for select * from t Cursor name = myselect
+cursor name = myselect
+Test cursor name for select * from t for update Cursor name = myselect
+cursor name = myselect
+Test cursor name for select * from t for update of i Cursor name = myselect
+cursor name = myselect
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: teardown complete
+PASS
+Test cursor finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursorerrors.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/cursorerrors.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,236 @@
+ij> -- What happens when language exceptions are thrown on a next?
+-- NOTE: this test is dependent on no optimization, i.e., always getting
+-- the same access methods (table scans and join order matching the from list)
+-- create the tables
+create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values 1, 0, 2;
+3 rows inserted/updated/deleted
+ij> insert into t2 values 1, 0, 2;
+3 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- What happens on a fetch after a divide by 0 error?
+-- error in select list
+-- single table query
+get cursor c1 as 'select c1, c1/c1 from t1';
+ij> next c1;
+C1         |2          
+-----------------------
+1          |1          
+ij> -- divide by 0
+next c1;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c1;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c1;
+ij> -- join #1
+get cursor c2 as 
+	'select a.c1, b.c1, a.c1/a.c1 from t1 a, t1 b where a.c1 = b.c1';
+ij> next c2;
+C1         |C1         |3          
+-----------------------------------
+1          |1          |1          
+ij> -- divide by 0
+next c2;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c2;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c2;
+ij> -- join #2
+get cursor c3 as 
+	'select a.c1, b.c1, b.c1/a.c1 from t1 a, t1 b';
+ij> next c3;
+C1         |C1         |3          
+-----------------------------------
+1          |1          |1          
+ij> next c3;
+C1         |C1         |3          
+-----------------------------------
+1          |0          |0          
+ij> next c3;
+C1         |C1         |3          
+-----------------------------------
+1          |2          |2          
+ij> -- divide by 0
+next c3;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c3;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c3;
+ij> -- union all
+get cursor c4 as
+	'select c1, c1/c1 from t1 union all select c1, c1/c1 from t1';
+ij> next c4;
+C1         |2          
+-----------------------
+1          |1          
+ij> -- divide by 0 on left side
+next c4;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c4;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c4;
+ij> -- error in where clause
+-- single table
+get cursor c10 as 'select * from t1 where c1/c1 = 1';
+ij> -- (1)
+next c10;
+C1         
+-----------
+1          
+ij> -- divide by 0
+next c10;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c10;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c10;
+ij> -- join #1, error on open (1st row in left)
+-- (cursor will not exist after error on open)
+get cursor c12 as 'select * from t1 a, t1 b where a.c1 <> 1 and a.c1/a.c1 = 1';
+ERROR 22012: Attempt to divide by zero.
+ij> -- next should fail, since no cursor
+next c12;
+IJ ERROR: Unable to establish cursor
+ij> -- join #2, error on 2nd row on left
+get cursor c13 as 'select * from t1 a, t1 b where b.c1 = 1 and a.c1/a.c1 = 1';
+ij> -- (1, 1)
+next c13;
+C1         |C1         
+-----------------------
+1          |1          
+ij> -- divide by 0 from left
+next c13;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c13;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c13;
+ij> -- join #3, error on 1st row in right
+get cursor c14 as 'select * from t1 a, t1 b where b.c1 <> 1 and b.c1/b.c1 = 1';
+ij> -- divide by 0 from right
+next c14;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c14;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c14;
+ij> -- join #4, error on 2nd row in right
+get cursor c15 as 'select * from t1 a, t1 b where b.c1 <> 2 and b.c1/b.c1 = 1';
+ij> -- (1, 1)
+next c15;
+C1         |C1         
+-----------------------
+1          |1          
+ij> -- divide by 0 from right
+next c15;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c15;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c15;
+ij> -- union all
+get cursor c11 as 'select * from t1 where c1/c1 = 1 union all
+				   select * from t1 where c1/c1 = 1';
+ij> -- (1) from left
+next c11;
+C1         
+-----------
+1          
+ij> -- divide by 0 from left
+next c11;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c11;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c11;
+ij> -- error in join clause
+get cursor c5 as 'select * from t1, t2 where t1.c1/t2.c1 = 1';
+ij> -- (1, 1)
+next c5;
+C1         |C1         
+-----------------------
+1          |1          
+ij> -- (1, 0) -> divide by 0
+next c5;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c5;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c5;
+ij> -- error in subquery
+-- subquery in select list
+-- single table query
+get cursor c8 as 'select c1, (select c1/c1 from t2 where t1.c1 = c1) from t1';
+ij> -- (1, 1)
+next c8;
+C1         |2          
+-----------------------
+1          |1          
+ij> -- divide by 0
+next c8;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c8;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c8;
+ij> -- join
+get cursor c9 as 'select a.c1, (select c1/c1 from t2 where c1 = a.c1) from t1 a, t1 b
+				  where a.c1 = b.c1';
+ij> -- (1, 1)
+next c9;
+C1         |2          
+-----------------------
+1          |1          
+ij> -- divide by 0
+next c9;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c9;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c9;
+ij> -- subquery in where clause
+-- single table query
+get cursor c6 as 'select * from t1 
+				  where c1 = (select c1/c1 from t2 where t1.c1 = c1) or c1 = 2';
+ij> -- (1)
+next c6;
+C1         
+-----------
+1          
+ij> -- divide by 0
+next c6;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c6;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c6;
+ij> -- join
+get cursor c7 as 'select * from t1 a, t1 b
+				  where a.c1 = b.c1 and 
+						(a.c1 = (select c1/c1 from t2 where a.c1 = c1) or a.c1 = 2)';
+ij> -- (1, 1)
+next c7;
+C1         |C1         
+-----------------------
+1          |1          
+ij> -- divide by 0
+next c7;
+ERROR 22012: Attempt to divide by zero.
+ij> -- Verify that cursor closed on error
+next c7;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> close c7;
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/datetime.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/datetime.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1033 @@
+ij> --
+-- Test the builtin date/time types
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, real
+--
+-- other things we might test:
+-- interaction with UUID and other user defined types
+-- compatibility with dynamic parameters and JDBC getDate etc. methods
+--
+-- Test the arithmetic operators
+--
+create table t (i int, s smallint, c char(10), v varchar(50), 
+	d double precision, r real, e date, t time, p timestamp);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0,
+	300.0e0, date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0,
+	-300.0e0, date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> -- date/times don't support math, show each combination
+select e + e from t;
+ERROR 42Y95: The '+' operator with a left operand type of 'DATE' and a right operand type of 'DATE' is not supported.
+ij> select i + e from t;
+ERROR 42Y95: The '+' operator with a left operand type of 'INTEGER' and a right operand type of 'DATE' is not supported.
+ij> select p / p from t;
+ERROR 42Y95: The '/' operator with a left operand type of 'TIMESTAMP' and a right operand type of 'TIMESTAMP' is not supported.
+ij> select p * s from t;
+ERROR 42Y95: The '*' operator with a left operand type of 'TIMESTAMP' and a right operand type of 'SMALLINT' is not supported.
+ij> select t - t from t;
+ERROR 42Y95: The '-' operator with a left operand type of 'TIME' and a right operand type of 'TIME' is not supported.
+ij> select -t from t;
+ERROR 42X37: The unary '-' operator is not allowed on the 'TIME' type.
+ij> select +e from t;
+ERROR 42X37: The unary '+' operator is not allowed on the 'DATE' type.
+ij> --
+-- comparisons
+--
+-- select each one in turn
+-- each pair gets the same result
+select e from t where e = date('1992-01-01');
+E         
+----------
+1992-01-01
+1992-01-01
+ij> select e from t where date('1992-01-01') = e;
+E         
+----------
+1992-01-01
+1992-01-01
+ij> select t from t where t > time('09:30:15');
+T       
+--------
+12:30:30
+12:30:30
+ij> select t from t where time('09:30:15') < t;
+T       
+--------
+12:30:30
+12:30:30
+ij> select p from t where p < timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx);
+P                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select p from t where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)> p;
+P                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- now look for a value that isn't in the table
+select e from t where e <> date('1992-01-01');
+E         
+----------
+ij> select e from t where date('1992-01-01') <> e;
+E         
+----------
+ij> -- now test null = null semantics
+select e, t, p from t where e = e or t = t or p = p;
+E         |T       |P                         
+----------------------------------------------
+1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- now test <=, >=, <>
+-- each pair gets the same result
+select e from t where e >= date('1990-01-01');
+E         
+----------
+1992-01-01
+1992-01-01
+ij> select e from t where date('1990-01-01')<= e;
+E         
+----------
+1992-01-01
+1992-01-01
+ij> select t from t where t <= time('09:30:15');
+T       
+--------
+ij> select t from t where time('09:30:15') >= t;
+T       
+--------
+ij> select p from t where p <> timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx);
+P                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select p from t where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx)<> p;
+P                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- show comparisons with mixed types don't work
+select e from t where e <= i;
+ERROR 42818: Comparisons between 'DATE' and 'INTEGER' are not supported.
+ij> select e from t where t < s;
+ERROR 42818: Comparisons between 'TIME' and 'SMALLINT' are not supported.
+ij> select e from t where p > d;
+ERROR 42818: Comparisons between 'TIMESTAMP' and 'DOUBLE' are not supported.
+ij> select e from t where e >= t;
+ERROR 42818: Comparisons between 'DATE' and 'TIME' are not supported.
+ij> select e from t where t <> p;
+ERROR 42818: Comparisons between 'TIME' and 'TIMESTAMP' are not supported.
+ij> select e from t where p = e;
+ERROR 42818: Comparisons between 'TIMESTAMP' and 'DATE' are not supported.
+ij> -- check limit values
+values( date('0001-1-1'), date('9999-12-31'), date('2/29/2000'), date('29.2.2004'));
+1         |2         |3         |4         
+-------------------------------------------
+0001-01-01|9999-12-31|2000-02-29|2004-02-29
+ij> values( time('00:00:00'), time('23:59:59'));
+1       |2       
+-----------------
+00:00:00|23:59:59
+ij> values( time('00 AM'), time( '12:59 AM'), time('1 PM'), time('12:59 PM'));
+1       |2       |3       |4       
+-----------------------------------
+00:00:00|00:59:00|13:00:00|12:59:00
+ij> values( time('00.00.00'), time('23.59.59'), time('24.00.00'));
+1       |2       |3       
+--------------------------
+00:00:00|23:59:59|00:00:00
+ij> values( timestamp('0001-1-1 00:00:00'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+1                         |2                         
+-----------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- show that overflow and underflow are not allowed
+-- (SQL92 would have these report errors)
+values( date('0000-01-01'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( date('2000-00-01'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( date('2000-01-00'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( date('10000-01-01'));
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values( date('2000-13-01'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( date('2000-01-32'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( date('1900-02-29'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( date('2001-02-29'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( time('25.00.00'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( time('24.00.01'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( time('0:60:00'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> values( time('00:00:60'));
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> -- show garbage in == errors out
+select date( 'xxxx') from t where p is null;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select time( '') from t where p is null;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select timestamp( 'is there anything here?' )from t where p is null;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select timestamp( '1992-01- there anything here?' )from t where p is null;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select timestamp( '--::' )from t where p is null;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select time('::::') from t where p is null;
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- show is not null at work
+select * from t 
+where e is not null
+and t is not null
+and p is not null;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |100   |hello     |everyone is here                                  |200.0                 |300.0        |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+-1         |-100  |goodbye   |everyone is there                                 |-200.0                |-300.0       |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- test =SQ
+-- this gets cardinality error
+select 'fail' from t where e = (select e from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- this works
+select 'pass' from t where e = (select e from t where d=200);
+1   
+----
+pass
+pass
+ij> -- this gets cardinality error
+select 'fail' from t where t = (select t from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- this works
+select 'pass' from t where t = (select t from t where d=200);
+1   
+----
+pass
+pass
+ij> -- this gets cardinality error
+select 'fail' from t where p = (select p from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- this works
+select 'pass' from t where p = (select p from t where d=200);
+1   
+----
+pass
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> --
+-- test syntax: precision cannot be specified
+--
+create table wrong (t time(-100));
+ERROR 42X01: Syntax error: Encountered "(" at line 4, column 27.
+ij> create table wrong (t time(0));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 27.
+ij> create table wrong (t time(23));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 27.
+ij> create table wrong (t timestamp(-100));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 32.
+ij> create table wrong (t timestamp(0));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 32.
+ij> create table wrong (t timestamp(6));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 32.
+ij> create table wrong (t timestamp(9));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 32.
+ij> create table wrong (t timestamp(23));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 32.
+ij> --
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50), 
+	d double precision, r real, e date, t time, p timestamp);
+0 rows inserted/updated/deleted
+ij> create table target (e date not null, t time not null, p timestamp not null);
+0 rows inserted/updated/deleted
+ij> -- we have already tested inserting literals.
+insert into source values (1, 2, '3', '4', 5, 6, date('1997-07-07'),
+	time('08:08:08'),timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> -- these work:
+insert into target select e,t,p from source;
+1 row inserted/updated/deleted
+ij> -- these will all fail:
+insert into target select p,e,t from source;
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'TIMESTAMP'. 
+ij> insert into target select i,s,d from source;
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+ij> insert into target (t,p) select c,r from source;
+ERROR 42821: Columns of type 'TIMESTAMP' cannot hold values of type 'REAL'. 
+ij> delete from source;
+1 row inserted/updated/deleted
+ij> insert into source values (null, null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> -- these fail because the target won't take a null -- of any type
+insert into target values(null, null, null);
+ERROR 23502: Column 'E'  cannot accept a NULL value.
+ij> insert into target select e,t,p from source;
+ERROR 23502: Column 'E'  cannot accept a NULL value.
+ij> -- these still fail with type errors:
+insert into target select p,e,t from source;
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'TIMESTAMP'. 
+ij> insert into target select i,s,d from source;
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+ij> insert into target (t,p)select c,r from source;
+ERROR 42821: Columns of type 'TIMESTAMP' cannot hold values of type 'REAL'. 
+ij> -- expect 1 row in target:
+select * from target;
+E         |T       |P                         
+----------------------------------------------
+1997-07-07|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- unchanged:
+update target set e = e, t = t, p = p;
+1 row inserted/updated/deleted
+ij> select * from target;
+E         |T       |P                         
+----------------------------------------------
+1997-07-07|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- alters the row:
+update target set e = date('1990-01-01');
+1 row inserted/updated/deleted
+ij> select * from target;
+E         |T       |P                         
+----------------------------------------------
+1990-01-01|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- not settable to null
+update target set e = null;
+ERROR 23502: Column 'E'  cannot accept a NULL value.
+ij> select * from target;
+E         |T       |P                         
+----------------------------------------------
+1990-01-01|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- nullable col can be set to null:
+update source set e = date('1492-10-01');
+1 row inserted/updated/deleted
+ij> select e from source;
+E         
+----------
+1492-10-01
+ij> update source set e = null;
+1 row inserted/updated/deleted
+ij> select e from source;
+E         
+----------
+NULL      
+ij> -- these should get type errors
+update target set e = 1;
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'INTEGER'. 
+ij> update source set p = 1.4e10;
+ERROR 42821: Columns of type 'TIMESTAMP' cannot hold values of type 'DOUBLE'. 
+ij> update source set i = date('1001-01-01');
+ERROR 42821: Columns of type 'INTEGER' cannot hold values of type 'DATE'. 
+ij> -- tests with current functions:
+delete from source;
+1 row inserted/updated/deleted
+ij> delete from target;
+1 row inserted/updated/deleted
+ij> insert into source values (1, 2, '3', '4', 5, 6, date('1997-06-07'),
+	time('08:08:08'),timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> -- these tests are 'funny' so that the masters won't show a diff
+-- every time.
+select 'pass' from source 
+where current_date = current_date
+and current_time = current_time
+and current_timestamp = current_timestamp;
+1   
+----
+pass
+ij> select 'pass' from source 
+where current_date > date('1996-12-31')
+and current_time <= time(	'23:59:59') -- may oopsie on leap second days
+and current_timestamp <> timestamp( -- this comment is just more whitespace
+    'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1   
+----
+pass
+ij> -- test with DB2 compatible syntax
+select 'pass' from source 
+where current date = current date
+and current time = current time
+and current timestamp = current timestamp;
+1   
+----
+pass
+ij> select 'pass' from source 
+where current date > date('1996-12-31')
+and current time <= time(	'23:59:59') -- may oopsie on leap second days
+and current timestamp <> timestamp( -- this comment is just more whitespace
+    'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1   
+----
+pass
+ij> -- test escaped functions
+-- CURRENT_DATE escaped function not supported in DB2 UDB
+-- CURRENT_TIME escaped function not supported in DB2 UDB
+select 'pass' from source 
+where current_date = {fn current_date()}
+and current_time = {fn current_time()}
+and current_timestamp = current_timestamp;
+ERROR 42X01: Syntax error: Encountered "current_date" at line 5, column 26.
+ij> select 'pass' from source 
+where current_date = {fn curdate()}
+and current_time = {fn curtime()}
+and current_timestamp = current_timestamp;
+1   
+----
+pass
+ij> -- current_date() and current_time() not valid in DB2. curdate() and curtime()
+-- are as escaped functions only.
+values curdate();
+ERROR 42Y03: 'CURDATE' is not recognized as a function or procedure.
+ij> values curtime();
+ERROR 42Y03: 'CURTIME' is not recognized as a function or procedure.
+ij> values current_date();
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 20.
+ij> values current_time();
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 20.
+ij> values {fn current_date()};
+ERROR 42X01: Syntax error: Encountered "current_date" at line 1, column 12.
+ij> values {fn current_time()};
+ERROR 42X01: Syntax error: Encountered "current_time" at line 1, column 12.
+ij> -- DB2 UDB compatible test for escaped functions
+select 'pass' from source 
+where hour(current_time) = {fn hour(current_time)}
+and minute(current_time) = {fn minute(current_time)}
+and second(current_time) = {fn second(current_time)}
+and year(current_date)   = {fn year(current_date)};
+1   
+----
+pass
+ij> -- valid jdbc date and time escaped functions
+values {fn hour('23:38:10')};
+1          
+-----------
+23         
+ij> values {fn minute('23:38:10')};
+1          
+-----------
+38         
+ij> values {fn second('23:38:10')};
+1          
+-----------
+10         
+ij> values {fn year('2004-03-22')};
+1          
+-----------
+2004       
+ij> -- currents do have types, these inserts fail:
+insert into source values (0, 0, '0', '0', 0, 0,
+	current_time, current_time, current_timestamp);
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'TIME'. 
+ij> insert into source values (0, 0, '0', '0', 0, 0,
+	current_date, current_timestamp, current_timestamp);
+ERROR 42821: Columns of type 'TIME' cannot hold values of type 'TIMESTAMP'. 
+ij> insert into source values (0, 0, '0', '0', 0, 0,
+	current_date, current_time, current_date);
+ERROR 42821: Columns of type 'TIMESTAMP' cannot hold values of type 'DATE'. 
+ij> -- this insert works
+insert into source values (0, 0, '0', '0', 0, 0,
+	current_date, current_time, current_timestamp);
+1 row inserted/updated/deleted
+ij> -- test with DB2 syntax
+-- this insert works
+insert into source values (0, 0, '0', '0', 0, 0,
+	current date, current time, current timestamp);
+1 row inserted/updated/deleted
+ij> -- this test will diff if the select is run just after midnight,
+-- and the insert above was run just before midnight...
+select * from source where e <> current_date and p <> current_timestamp;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3         |4                                                 |5.0                   |6.0          |1997-06-07|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- test with DB2 syntax
+select * from source where e <> current date and p <> current timestamp;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3         |4                                                 |5.0                   |6.0          |1997-06-07|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select 'pass' from source 
+where e <= current_date and p <= current_timestamp;
+1   
+----
+pass
+pass
+ij> -- reduce it back to one row
+delete from source where i=0;
+2 rows inserted/updated/deleted
+ij> -- tests with extract:
+select year( e),
+	month( e),
+	day( date( '1997-01-15')),
+	hour( t),
+	minute( t),
+	second( time( '01:01:42')),
+	year( p),
+	month( p),
+	day( p),
+	hour( timestamp( 'xxxxxxFILTERED-TIMESTAMPxxxxx)),
+	minute( p),
+	second( p)
+from source;
+1          |2          |3          |4          |5          |6          |7          |8          |9          |10         |11         |12                    
+----------------------------------------------------------------------------------------------------------------------------------------------------------
+1997       |6          |15         |8          |8          |42         |9999       |9          |9          |14         |9          |9.0                   
+ij> -- extract won't work on other types
+select month( i) from source;
+ERROR 42X25: The 'EXTRACT MONTH' function is not allowed on the 'INTEGER' type.
+ij> select hour( d) from source;
+ERROR 42X25: The 'EXTRACT HOUR' function is not allowed on the 'DOUBLE' type.
+ij> -- extract won't work on certain field/type combos
+select month( t) from source;
+ERROR 42X25: The 'EXTRACT MONTH' function is not allowed on the 'TIME' type.
+ij> select day( t) from source;
+ERROR 42X25: The 'EXTRACT DAY' function is not allowed on the 'TIME' type.
+ij> select year( t) from source;
+ERROR 42X25: The 'EXTRACT YEAR' function is not allowed on the 'TIME' type.
+ij> select hour( e) from source;
+ERROR 42X25: The 'EXTRACT HOUR' function is not allowed on the 'DATE' type.
+ij> select minute( e) from source;
+ERROR 42X25: The 'EXTRACT MINUTE' function is not allowed on the 'DATE' type.
+ij> select second( e) from source;
+ERROR 42X25: The 'EXTRACT SECOND' function is not allowed on the 'DATE' type.
+ij> update source set i=month( e), s=minute( t),
+	d=second( p);
+1 row inserted/updated/deleted
+ij> -- should be true and atomics should match field named as label in date/times
+select i,e as "month",s,t as "minute",d,p as "second" 
+	from source 
+	where       (i = month(e))
+		and (s = minute(t))
+		and (d = second(p));
+I          |month     |S     |minute  |D                     |second                    
+----------------------------------------------------------------------------------------
+6          |1997-06-07|8     |08:08:08|9.0                   |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- fields should match the fields in the date (in order)
+select p, year( p) as "year",
+	month( p) as "month",
+	day( p) as "day",
+	hour( p) as "hour",
+	minute( p) as "minute",
+	second( p) as "second"
+from source;
+P                         |year       |month      |day        |hour       |minute     |second                
+-------------------------------------------------------------------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|9999       |9          |9          |9          |9          |9.0                   
+ij> -- jdbc escape sequences
+values ({d '1999-01-12'}, {t '11:26:35'}, {ts 'xxxxxxFILTERED-TIMESTAMPxxxxx});
+1         |2       |3                         
+----------------------------------------------
+1999-01-12|11:26:35|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values year( {d '1999-01-12'});
+1          
+-----------
+1999       
+ij> values hour( {t '11:28:10'});
+1          
+-----------
+11         
+ij> values day( {ts 'xxxxxxFILTERED-TIMESTAMPxxxxx});
+1          
+-----------
+12         
+ij> drop table source;
+0 rows inserted/updated/deleted
+ij> drop table target;
+0 rows inserted/updated/deleted
+ij> -- random tests for date
+create table sertest(d date, s Date,
+	o Date);
+0 rows inserted/updated/deleted
+ij> insert into sertest values (date('1992-01-03'), null, null);
+1 row inserted/updated/deleted
+ij> select * from sertest;
+D         |S         |O         
+--------------------------------
+1992-01-03|NULL      |NULL      
+ij> update sertest set s=d;
+1 row inserted/updated/deleted
+ij> update sertest set o=d;
+1 row inserted/updated/deleted
+ij> insert into sertest values (date( '3245-09-09'), date( '1001-06-07'),
+	date( '1999-01-05'));
+1 row inserted/updated/deleted
+ij> select * from sertest;
+D         |S         |O         
+--------------------------------
+1992-01-03|1992-01-03|1992-01-03
+3245-09-09|1001-06-07|1999-01-05
+ij> select * from sertest where d > s;
+D         |S         |O         
+--------------------------------
+3245-09-09|1001-06-07|1999-01-05
+ij> update sertest set d=s;
+2 rows inserted/updated/deleted
+ij> -- should get type errors:
+insert into sertest values (date('3245-09-09'), time('09:30:25'), null);
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'TIME'. 
+ij> insert into sertest values (null, null, time('09:30:25'));
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'TIME'. 
+ij> insert into sertest values (null, null, timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+ERROR 42821: Columns of type 'DATE' cannot hold values of type 'TIMESTAMP'. 
+ij> -- should work...
+update sertest set d=o;
+2 rows inserted/updated/deleted
+ij> select * from sertest where s is null and o is not null;
+D         |S         |O         
+--------------------------------
+ij> -- should work
+select month(s) from sertest where s is not null;
+1          
+-----------
+1          
+6          
+ij> select day(o) from sertest;
+1          
+-----------
+3          
+5          
+ij> drop table sertest;
+0 rows inserted/updated/deleted
+ij> -- conversion tests
+drop table convtest;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'CONVTEST' because it does not exist.
+ij> create table convtest(d date, t time, ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into convtest values(date('1932-03-21'),  time('23:49:52'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+1 row inserted/updated/deleted
+ij> insert into convtest values(date('0001-03-21'),  time('5:22:59'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+1 row inserted/updated/deleted
+ij> insert into convtest values(null, null, null);
+1 row inserted/updated/deleted
+ij> -- these should fail
+select CAST (d AS time) from convtest;
+ERROR 42846: Cannot convert types 'DATE' to 'TIME'.
+ij> select CAST (t AS date) from convtest;
+ERROR 42846: Cannot convert types 'TIME' to 'DATE'.
+ij> -- these should work
+select CAST (t AS time) from convtest;
+1       
+--------
+23:49:52
+05:22:59
+NULL    
+ij> select CAST (d AS date) from convtest;
+1         
+----------
+1932-03-21
+0001-03-21
+NULL      
+ij> select CAST (ts AS time) from convtest;
+1       
+--------
+10:11:43
+23:59:59
+NULL    
+ij> select CAST (ts AS date) from convtest;
+1         
+----------
+1832-09-24
+9999-12-31
+NULL      
+ij> -- show time and date separately as timestamp will be filtered out
+select CAST(CAST (ts AS timestamp) AS date),
+	CAST(CAST (ts AS timestamp) AS time) 
+from convtest;
+1         |2       
+-------------------
+1832-09-24|10:11:43
+9999-12-31|23:59:59
+NULL      |NULL    
+ij> -- casting from a time to a timestamp sets the date to current date
+select 'pass', CAST (CAST(t AS timestamp) AS time) from convtest
+where CAST(CAST(t AS timestamp) AS date)=current_date;
+ERROR 42846: Cannot convert types 'TIME' to 'TIMESTAMP'.
+ij> -- time should be 0
+select CAST (CAST (d AS timestamp) AS date),
+	CAST(CAST(d AS timestamp) AS time) from convtest;
+ERROR 42846: Cannot convert types 'DATE' to 'TIMESTAMP'.
+ij> -- convert from strings
+create table convstrtest(d varchar(30), t char(30), ts long varchar);
+0 rows inserted/updated/deleted
+ij> insert into convstrtest values('1932-03-21',  '23:49:52', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> insert into convstrtest values(null, null, null);
+1 row inserted/updated/deleted
+ij> -- these should fail - note when casting from character string the format has to
+-- be correct
+select CAST (d AS time) from convstrtest;
+1       
+--------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select CAST (t AS date) from convstrtest;
+1         
+----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select CAST (ts AS time) from convstrtest;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'TIME'.
+ij> select CAST (ts AS date) from convstrtest;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DATE'.
+ij> -- these should work
+select CAST (t AS time) from convstrtest;
+1       
+--------
+23:49:52
+NULL    
+ij> select CAST (d AS date) from convstrtest;
+1         
+----------
+1932-03-21
+NULL      
+ij> -- show time and date separately as timestamp will be filtered out
+select CAST(CAST (ts AS timestamp) AS date),
+	CAST(CAST (ts AS timestamp) AS time) 
+from convstrtest;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'TIMESTAMP'.
+ij> -- test aggregates
+-- sum should fail
+select sum(d) from convtest;
+ERROR 42Y22: Aggregate SUM cannot operate on type DATE.
+ij> select sum(t) from convtest;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIME.
+ij> select sum(ts) from convtest;
+ERROR 42Y22: Aggregate SUM cannot operate on type TIMESTAMP.
+ij> -- these should work
+select count(d) from convtest;
+1          
+-----------
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(t) from convtest;
+1          
+-----------
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(ts) from convtest;
+1          
+-----------
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> insert into convtest values(date('0001-03-21'),  time('5:22:59'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+1 row inserted/updated/deleted
+ij> -- distinct count should be 2 not 3
+select count(distinct d) from convtest;
+1          
+-----------
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(distinct t) from convtest;
+1          
+-----------
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select count(distinct ts) from convtest;
+1          
+-----------
+2          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- min should not be null!!!!!!!!
+select min(d) from convtest;
+1         
+----------
+0001-03-21
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select min(t) from convtest;
+1       
+--------
+05:22:59
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- show time and date separately as timestamp will be filtered out
+select CAST(CAST (min(ts) AS timestamp) AS date),
+	CAST(CAST (min(ts) AS timestamp) AS time) 
+from convtest;
+1         |2       
+-------------------
+1832-09-24|10:11:43
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(d) from convtest;
+1         
+----------
+1932-03-21
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> select max(t) from convtest;
+1       
+--------
+23:49:52
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- show time and date separately as timestamp will be filtered out
+select CAST(CAST (max(ts) AS timestamp) AS date),
+	CAST(CAST (max(ts) AS timestamp) AS time)
+from convtest;
+1         |2       
+-------------------
+9999-12-31|23:59:59
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> drop table convtest;
+0 rows inserted/updated/deleted
+ij> drop table convstrtest;
+0 rows inserted/updated/deleted
+ij> create table ts (ts1 timestamp, ts2 timestamp);
+0 rows inserted/updated/deleted
+ij> -- ISO format
+-- leading zeros may be omited from the month, day and part of the timestamp
+insert into ts values ('2003-03-05-17.05.43.111111', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-03-17.05.43.111111', '2003-3-03 17:05:43.111111');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-2-17.05.43.111111', '2003-3-2 17:05:43.111111');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-03-2-17.05.43.111111', '2003-03-2 17:05:43.111111');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.1', '2003-3-1 17:05:43.1');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.12', '2003-3-1 17:05:43.12');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.123', '2003-3-1 17:05:43.123');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.1234', '2003-3-1 17:05:43.1234');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.12345', '2003-3-1 17:05:43.12345');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.123456', '2003-3-1 17:05:43.123456');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43', '2003-3-1 17:05:43');
+1 row inserted/updated/deleted
+ij> -- trailing blanks are allowed
+insert into ts values ('2002-03-05-17.05.43.111111   ', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2002-03-05-17.05.43.1   ', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2002-03-05-17.05.43    ', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> -- UDB allows this by "appending a zero"; so, cloudscape follows
+insert into ts values ('2003-3-1-17.05.43.', '2003-3-1 17:05:43');
+1 row inserted/updated/deleted
+ij> insert into ts values ('2003-3-1-17.05.43.0', '2003-3-1 17:05:43.0');
+1 row inserted/updated/deleted
+ij> insert into ts values ('0003-03-05-17.05.43.111111', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> select * from ts;
+TS1                       |TS2                       
+-----------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from ts where ts1=ts2;
+TS1                       |TS2                       
+-----------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> delete from ts;
+17 rows inserted/updated/deleted
+ij> -- should be rejected because leading zero in year is missing
+insert into ts (ts1) values ('03-03-05-17.05.43.111111');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('103-03-05-17.05.43.111111');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('3-03-05-17.05.43.111111');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- not valid Time format in the timestamp strings: cloudscape rejects
+insert into ts (ts1) values ('2003-3-24-13.1.02.566999');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('2003-3-24-13.1.1.569');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('2003-3-24-1.1.1.56');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('2003-3-24-1.1.1');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('2003-3-1-17.05.4.');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('2003-03-05-7.05.43.111111');
+1 row inserted/updated/deleted
+ij> -- invalid ISO format: cloudscape rejects
+insert into ts (ts1) values ('2003-3-1 17.05.43.123456');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- Don't allow more than microseconds in ISO format: cloudscape rejects
+insert into ts (ts1) values ('2003-03-05-17.05.43.999999999');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into ts (ts1) values ('2003-03-05-17.05.43.999999000');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select * from ts;
+TS1                       |TS2                       
+-----------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|NULL                      
+ij> drop table ts;
+0 rows inserted/updated/deleted
+ij> -- Test the timestamp( d, t) function
+create table t (datecol date, dateStr varchar(16), timecol time, timeStr varchar(16), expected timestamp);
+0 rows inserted/updated/deleted
+ij> insert into t( dateStr, timeStr) values( '2004-03-04', '12:01:02');
+1 row inserted/updated/deleted
+ij> insert into t( dateStr, timeStr) values( null, '12:01:03');
+1 row inserted/updated/deleted
+ij> insert into t( dateStr, timeStr) values( '2004-03-05', null);
+1 row inserted/updated/deleted
+ij> update t set datecol = date( dateStr), timecol = time( timeStr);
+3 rows inserted/updated/deleted
+ij> update t set expected = timestamp( dateStr || ' ' || timeStr) where dateStr is not null and timeStr is not null;
+1 row inserted/updated/deleted
+ij> select dateStr, timeStr from t
+  where (expected is not null and (expected <> timestamp( dateCol, timeCol) or timestamp( dateCol, timeCol) is null))
+    or (expected is null and timestamp( dateCol, timeCol) is not null);
+DATESTR         |TIMESTR         
+---------------------------------
+ij> select dateStr, timeStr from t
+  where (expected is not null and (expected <> timestamp( dateStr, timeStr) or timestamp( dateStr, timeStr) is null))
+    or (expected is null and timestamp( dateStr, timeStr) is not null);
+DATESTR         |TIMESTR         
+---------------------------------
+ij> select dateStr, timeStr from t
+  where (expected is not null and timestamp( dateStr, timeStr) <> timestamp( dateCol, timeCol))
+    or (expected is null and timestamp( dateStr, timeStr) is not null);
+DATESTR         |TIMESTR         
+---------------------------------
+ij> select dateStr, timeStr from t
+  where expected is not null and date( timestamp( dateCol, timeCol)) <> dateCol;
+DATESTR         |TIMESTR         
+---------------------------------
+ij> select dateStr, timeStr from t
+  where expected is not null and time( timestamp( dateCol, timeCol)) <> timeCol;
+DATESTR         |TIMESTR         
+---------------------------------
+ij> -- Error cases
+select timestamp( dateCol, dateCol) from t where dateCol is not null;
+ERROR 42Y95: The 'timestamp' operator with a left operand type of 'DATE' and a right operand type of 'DATE' is not supported.
+ij> select timestamp( timeCol, timeCol) from t where timeCol is not null;
+ERROR 42Y95: The 'timestamp' operator with a left operand type of 'TIME' and a right operand type of 'TIME' is not supported.
+ij> values timestamp( 'xyz', '12:01:02');
+1                         
+--------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values timestamp( '2004-03-04', 'xyz');
+1                         
+--------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> create table t (t time);
+0 rows inserted/updated/deleted
+ij> -- ISO format: UDB is okay.
+insert into t values ('17.05.44');
+1 row inserted/updated/deleted
+ij> insert into t values ('17.05.00');
+1 row inserted/updated/deleted
+ij> insert into t values ('00.05.43');
+1 row inserted/updated/deleted
+ij> insert into t values ('00.00.00');
+1 row inserted/updated/deleted
+ij> -- DB2 keeps '24:00:00' but Cloudcape returns '00:00:00'
+insert into t values ('24.00.00');
+1 row inserted/updated/deleted
+ij> -- trailing blanks are allowed
+insert into t values ('17.05.11  ');
+1 row inserted/updated/deleted
+ij> insert into t values ('17:05:11  ');
+1 row inserted/updated/deleted
+ij> -- 7 rows
+select * from t;
+T       
+--------
+17:05:44
+17:05:00
+00:05:43
+00:00:00
+00:00:00
+17:05:11
+17:05:11
+ij> delete from t;
+7 rows inserted/updated/deleted
+ij> -- end value tests...
+insert into t values ('24.60.60');
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> insert into t values ('04.00.60');
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> insert into t values ('03.60.00');
+ERROR 22007: The string representation of a datetime value is out of range.
+ij> -- not valid Time string ISO format: HH.MM.SS
+insert into t values ('07.5.44');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('07.05.4');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('7.5.44');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('7.5.4');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('7.5.0');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('-4.00.00');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('A4.00.00');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('7.5.999');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('07.05.111');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('111.05.11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values ('11.115.00');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- no row
+select * from t;
+T       
+--------
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> values time('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1       
+--------
+16:15:32
+ij> values time('2004-04-15-16.15.32.387');
+1       
+--------
+16:15:32
+ij> values time('2004-04-15-16.15.32.387 zz');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values time('x-04-15-16.15.32.387');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values date('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1         
+----------
+2004-04-15
+ij> values date('2004-04-15-16.15.32.387');
+1         
+----------
+2004-04-15
+ij> values date('2004-04-15-16.15.32.387 zz');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values date('2004-04-15-16.15.32.y');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/db2Compatibility.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/db2Compatibility.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1769 @@
+ij> -- With DB2 current schema is equal to the user name on login.
+CREATE TABLE DST.DEF_SCHEMA_TEST(NAME_USER VARCHAR(128), NAME_SCHEMA VARCHAR(128));
+0 rows inserted/updated/deleted
+ij> INSERT INTO DST.DEF_SCHEMA_TEST VALUES(USER, CURRENT SCHEMA);
+1 row inserted/updated/deleted
+ij> SELECT COUNT(*) FROM DST.DEF_SCHEMA_TEST WHERE NAME_USER = NAME_SCHEMA;
+1          
+-----------
+1          
+ij> SET SCHEMA DILBERT;
+ERROR 42Y07: Schema 'DILBERT' does not exist
+ij> connect 'jdbc:derby:wombat;user=dilbert';
+ij(CONNECTION1)> INSERT INTO DST.DEF_SCHEMA_TEST VALUES(USER, CURRENT SCHEMA);
+1 row inserted/updated/deleted
+ij(CONNECTION1)> SELECT COUNT(*) FROM DST.DEF_SCHEMA_TEST WHERE NAME_USER = NAME_SCHEMA;
+1          
+-----------
+2          
+ij(CONNECTION1)> VALUES CURRENT SCHEMA;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+DILBERT                                                                                                                         
+ij(CONNECTION1)> disconnect;
+ij> SET CONNECTION CONNECTION0;
+ij> -- still should not be created
+SET SCHEMA DILBERT;
+ERROR 42Y07: Schema 'DILBERT' does not exist
+ij> connect 'jdbc:derby:wombat;user=dilbert';
+ij(CONNECTION1)> INSERT INTO DST.DEF_SCHEMA_TEST VALUES(USER, CURRENT SCHEMA);
+1 row inserted/updated/deleted
+ij(CONNECTION1)> SELECT COUNT(*) FROM DST.DEF_SCHEMA_TEST WHERE NAME_USER = NAME_SCHEMA;
+1          
+-----------
+3          
+ij(CONNECTION1)> VALUES CURRENT SCHEMA;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+DILBERT                                                                                                                         
+ij(CONNECTION1)> CREATE TABLE SCOTT(i int);
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> insert into SCOTT VALUES(4);
+1 row inserted/updated/deleted
+ij(CONNECTION1)> disconnect;
+ij> SET CONNECTION CONNECTION0;
+ij> SELECT * FROM DILBERT.SCOTT;
+I          
+-----------
+4          
+ij> DROP TABLE DILBERT.SCOTT;
+0 rows inserted/updated/deleted
+ij> DROP TABLE DST.DEF_SCHEMA_TEST;
+0 rows inserted/updated/deleted
+ij> DROP SCHEMA DST RESTRICT;
+0 rows inserted/updated/deleted
+ij> DROP SCHEMA DILBERT RESTRICT;
+0 rows inserted/updated/deleted
+ij> -- Simple Cloudscape specific features.
+-- CLASS ALIAS;
+create class alias MyMath for java.lang.Math;
+ERROR 42X01: Syntax error: Encountered "class" at line 5, column 8.
+ij> drop class alias MyMath;
+ERROR 42X01: Syntax error: Encountered "class" at line 1, column 6.
+ij> create class alias for java.lang.Math;
+ERROR 42X01: Syntax error: Encountered "class" at line 1, column 8.
+ij> drop class alias Math;
+ERROR 42X01: Syntax error: Encountered "class" at line 1, column 6.
+ij> -- METHOD ALIAS;
+create method alias myabs for java.lang.Math.abs;
+ERROR 42X01: Syntax error: Encountered "method" at line 3, column 8.
+ij> drop method alias myabs;
+ERROR 42X01: Syntax error: Encountered "method" at line 1, column 6.
+ij> -- STORED PREPARED STATEMENTS 
+-- create statement no more supported both in db2 and cloudscpae mode. -ve test for that
+create statement s1 as values 1,2;
+ERROR 42X01: Syntax error: Encountered "statement" at line 3, column 8.
+ij> -- alter, drop and execute statements are still supported for existing stored prepared statements for customers
+alter statement recompile all;
+ERROR 42X01: Syntax error: Encountered "statement" at line 2, column 7.
+ij> -- following will give error because there is no stored prepared statement s1 in the database
+drop statement s1;
+ERROR 42Y55: 'DROP STATEMENT' cannot be performed on 'S1' because it does not exist.
+ij> -- clean up
+DROP TABLE t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> DROP TABLE t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> DROP CLASS ALIAS ExternalInsert;
+ERROR 42X01: Syntax error: Encountered "CLASS" at line 1, column 6.
+ij> DROP STATEMENT insert1;
+ERROR 42Y55: 'DROP STATEMENT' cannot be performed on 'INSERT1' because it does not exist.
+ij> -- Primary key constraint, DB2 requires NOT null on the columns.
+create table customer (id int primary key, name char(100));
+ERROR 42831: 'ID' cannot be a column of a primary key or unique key because it can contain null values.
+ij> drop table customer;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'CUSTOMER' because it does not exist.
+ij> create table customer (id  int NOT NULL, id2 int, name char(100), primary key (id, id2));
+ERROR 42831: 'ID2' cannot be a column of a primary key or unique key because it can contain null values.
+ij> drop table customer;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'CUSTOMER' because it does not exist.
+ij> -- Unique key constraint, DB2 requires NOT null on the columns.
+create table customer (id int unique, name char(100));
+ERROR 42831: 'ID' cannot be a column of a primary key or unique key because it can contain null values.
+ij> create table customer (id  int NOT NULL, id2 int, constraint custCon unique(id, id2));
+ERROR 42831: 'ID2' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- check they actually work!
+create table customer (id int NOT NULL primary key, name char(100));
+0 rows inserted/updated/deleted
+ij> drop table customer;
+0 rows inserted/updated/deleted
+ij> create table customer (id  int NOT NULL, id2 int NOT NULL, name char(100), primary key (id, id2));
+0 rows inserted/updated/deleted
+ij> drop table customer;
+0 rows inserted/updated/deleted
+ij> -- drop schema requires restrict
+create schema fred;
+0 rows inserted/updated/deleted
+ij> drop schema fred;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 16.
+ij> drop schema fred restrict;
+0 rows inserted/updated/deleted
+ij> -- create schema not supported for schemas that start with SYS
+create schema SYS;
+ERROR 42939: An object cannot be created with the schema name 'SYS'.
+ij> create schema SYSDJD;
+ERROR 42939: An object cannot be created with the schema name 'SYSDJD'.
+ij> create schema "SYSNO";
+ERROR 42939: An object cannot be created with the schema name 'SYSNO'.
+ij> create schema "sys";
+0 rows inserted/updated/deleted
+ij> create schema "sysok";
+0 rows inserted/updated/deleted
+ij> drop schema "sys" restrict;
+0 rows inserted/updated/deleted
+ij> drop schema "sysok" restrict;
+0 rows inserted/updated/deleted
+ij> -- data types not supported
+create table NOTYPE(i int, b BOOLEAN);
+ERROR 42X01: Syntax error: BOOLEAN.
+ij> create table NOTYPE(i int, b TINYINT);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 30.
+ij> create table NOTYPE(i int, b java.lang.String);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 30.
+ij> create table NOTYPE(i int, b com.acme.Address);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 30.
+ij> create table NOTYPE(i int, b org.apache.derby.vti.VTIEnvironment);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 30.
+ij> -- VTI in the DELETE statement
+-- beetle 5234
+CREATE TABLE testCS (col1 int, col2 char(30), col3 int);
+0 rows inserted/updated/deleted
+ij> INSERT INTO testCS VALUES (100, 'asdf', 732);
+1 row inserted/updated/deleted
+ij> DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in the INSERT statement
+-- beetle 5234
+INSERT INTO NEW org.apache.derbyTesting.functionTests.util.serializabletypes.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (100, 'asdf', 732);
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.serializabletypes.ExternalTable.
+ij> -- VTI in the SELECT statement
+-- beetle 5234
+select * from testCS, new org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI.
+ij> select * from new com.acme.myVTI() as T;
+ERROR 42X01: Syntax error: com.acme.myVTI.
+ij> select * from new org.apache.derbyTesting.not.myVTI() as T;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.not.myVTI.
+ij> select * from new org.apache.derby.diag.LockTable() as T;
+XID            |TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE|TABLETYPE|LOCK&|INDEXNAME                                                                                                                       
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TABLE tb1(a int);
+0 rows inserted/updated/deleted
+ij> CREATE TRIGGER testtrig1 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (1000);
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig2 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig3 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL SELECT * FROM testCS, NEW org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI.
+ij> -- clean up
+DROP TABLE tb1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE testCS;
+0 rows inserted/updated/deleted
+ij> -- PROPERTIES in DB2 mode
+create table maps (country_ISO_code char(2)) PROPERTIES derby.storage.pageSize=262144;
+ERROR 42X01: Syntax error: PROPERTIES.
+ij> -- PROPERTIES in DB2 mode
+-- beetle 5177
+create table maps2 (country_ISO_code char(2));
+0 rows inserted/updated/deleted
+ij> create index map_idx1 on maps2(country_ISO_code) properties derby.storage.pageSize = 2048;
+ERROR 42X01: Syntax error: PROPERTIES.
+ij> -- BTREE not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error in DB2 mode
+create btree index map_idx2 on maps2(country_ISO_code);
+ERROR 42X01: Syntax error: Encountered "btree" at line 2, column 8.
+ij> create unique btree index map_idx2 on maps2(country_ISO_code);
+ERROR 42X01: Syntax error: Encountered "btree" at line 1, column 15.
+ij> drop table maps2;
+0 rows inserted/updated/deleted
+ij> -- SET LOCKING clause in DB2 mode
+-- beetle 5208
+create table maps1 (country_ISO_code char(2)) set locking = table;
+ERROR 42X01: Syntax error: Encountered "set" at line 3, column 47.
+ij> create table maps2 (country_ISO_code char(2)) set locking = row;
+ERROR 42X01: Syntax error: Encountered "set" at line 1, column 47.
+ij> drop table maps1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MAPS1' because it does not exist.
+ij> drop table maps2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MAPS2' because it does not exist.
+ij> -- ALTER TABLE statement
+-- beetle 5201
+-- Locking syntax
+-- negative tests
+create table tb1 (country_ISO_code char(2));
+0 rows inserted/updated/deleted
+ij> alter table tb1 set locking = table;
+ERROR 42X01: Syntax error: Encountered "set" at line 1, column 17.
+ij> alter table tb1 set locking = row;
+ERROR 42X01: Syntax error: Encountered "set" at line 1, column 17.
+ij> -- Locking syntax 
+-- positive tests
+-- beetle 5201
+create table tb2 (country_ISO_code char(2));
+0 rows inserted/updated/deleted
+ij> alter table tb2 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table tb2 locksize row;
+0 rows inserted/updated/deleted
+ij> -- clean up
+drop table tb1;
+0 rows inserted/updated/deleted
+ij> drop table tb2;
+0 rows inserted/updated/deleted
+ij> -- VTI in the DELETE statement
+-- beetle 5234
+CREATE TABLE testCS (col1 int, col2 char(30), col3 int);
+0 rows inserted/updated/deleted
+ij> INSERT INTO testCS VALUES (100, 'asdf', 732);
+1 row inserted/updated/deleted
+ij> DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in the INSERT statement
+-- beetle 5234
+INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (100, 'asdf', 732);
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in the SELECT statement
+-- beetle 5234
+select * from testCS, new org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI.
+ij> -- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TABLE tb1(a int);
+0 rows inserted/updated/deleted
+ij> CREATE TRIGGER testtrig1 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (1000);
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig2 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable.
+ij> -- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig3 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL SELECT * FROM testCS, NEW org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+ERROR 42X01: Syntax error: org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI.
+ij> -- clean up
+DROP TABLE tb1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE testCS;
+0 rows inserted/updated/deleted
+ij> -- RENAME/DROP COLUMN
+-- ALTER RENAME TABLE/COLUMN
+-- beetle 5205
+create table table tt (a int, b int, c int);
+ERROR 42X01: Syntax error: Encountered "table" at line 4, column 14.
+ij> alter table tt drop column b;
+ERROR 42X01: Syntax error: Encountered "drop" at line 1, column 16.
+ij> alter table tt rename to ttnew;
+ERROR 42X01: Syntax error: Encountered "rename" at line 1, column 16.
+ij> alter table tt rename c to d;
+ERROR 42X01: Syntax error: Encountered "rename" at line 1, column 16.
+ij> rename column tt.c to tt.d;
+ERROR 42X01: Syntax error: Encountered "column" at line 1, column 8.
+ij> drop table tt;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TT' because it does not exist.
+ij> -- CASCADE/RESTRICT on DROP CONSTRAINT
+-- beetle 5204
+ALTER TABLE TT DROP CONSTRAINT ABC CASCADE;
+ERROR 42X01: Syntax error: Encountered "CASCADE" at line 3, column 36.
+ij> ALTER TABLE TT DROP CONSTRAINT ABC2 RESTRICT;
+ERROR 42X01: Syntax error: Encountered "RESTRICT" at line 1, column 37.
+ij> -- CASCADE/RESTRICT on DROP TABLE
+-- beetle 5206
+DROP TABLE TT CASCADE;
+ERROR 42X01: Syntax error: Encountered "CASCADE" at line 3, column 15.
+ij> DROP TABLE TT RESTRICT;
+ERROR 42X01: Syntax error: Encountered "RESTRICT" at line 1, column 15.
+ij> -- beetle 5216
+-- there should only be one autoincrement column per table 
+CREATE TABLE T1 (C1 INT GENERATED ALWAYS AS IDENTITY 
+(START WITH 1, INCREMENT BY 1));
+0 rows inserted/updated/deleted
+ij> -- this statement should raise an error because it has more than one auto increment column in a table
+CREATE TABLE T2 (C1 INT GENERATED ALWAYS AS IDENTITY 
+(START WITH 1, INCREMENT BY 1), C2 INT GENERATED ALWAYS AS 
+IDENTITY (START WITH 1, INCREMENT BY 1));
+ERROR 428C1: Only one identity column is allowed in a table.
+ij> -- clean up
+DROP TABLE t1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> -- limit to 16 columns in an index key
+-- beetle 5181
+-- this create index statement should be successful in db2 compat mode because ix2 specifies 16 columns
+create table testindex1 (a int,b int,c int,d int ,e int ,f int,g int,h int,i int,j int,k int,l int,m int,n int,o int,p int);
+0 rows inserted/updated/deleted
+ij> create unique index ix1 on testindex1(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+0 rows inserted/updated/deleted
+ij> -- this create index statement should fail in db2 compat mode because ix2 specifies more than 16 columns
+create table testindex2 (a int,b int,c int,d int ,e int ,f int,g int,h int,i int,j int,k int,l int,m int,n int,o int,p int,q int);
+0 rows inserted/updated/deleted
+ij> create unique index ix2 on testindex2(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
+ERROR 54008: The CREATE INDEX statement specifies too many columns (16 is the maximum).
+ij> --clean up
+drop table testindex1;
+0 rows inserted/updated/deleted
+ij> drop table testindex2;
+0 rows inserted/updated/deleted
+ij> -- insert into a lob column using explicit cast
+-- positive test
+-- beetle 5221
+CREATE TABLE testblob(col1 BLOB(1M));
+0 rows inserted/updated/deleted
+ij> INSERT INTO testblob (col1) VALUES cast(X'11' as blob(1M));
+1 row inserted/updated/deleted
+ij> CREATE TABLE testclob(col1 CLOB(1M));
+0 rows inserted/updated/deleted
+ij> INSERT INTO testclob (col1) VALUES cast('asdf' as clob(1M));
+1 row inserted/updated/deleted
+ij> -- ALTER INDEX
+-- beetle 5222
+CREATE TABLE TT (A INT);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX TTIDX ON TT(A);
+0 rows inserted/updated/deleted
+ij> ALTER INDEX TTIDX RENAME TTIDXNEW;
+ERROR 42X01: Syntax error: Encountered "INDEX" at line 1, column 7.
+ij> -- clean up
+drop table tt;
+0 rows inserted/updated/deleted
+ij> -- CREATE and DROP AGGREGATE
+-- beetle 5222
+CREATE AGGREGATE STDEV FOR org.apache.derbyTesting.functionTests.util.aggregates.StandardDeviation;
+ERROR 42X01: Syntax error: Encountered "AGGREGATE" at line 3, column 8.
+ij> DROP AGGREGATE STDEV;
+ERROR 42X01: Syntax error: Encountered "AGGREGATE" at line 1, column 6.
+ij> CREATE AGGREGATE MAXBUTONE FOR org.apache.derbyTesting.functionTests.util.aggregates.MaxButOneDef;
+ERROR 42X01: Syntax error: Encountered "AGGREGATE" at line 1, column 8.
+ij> DROP AGGREGATE MAXBUTONE;
+ERROR 42X01: Syntax error: Encountered "AGGREGATE" at line 1, column 6.
+ij> -- CREATE and DROP CLASS ALIAS
+-- beetle 5222
+create class alias for java.util.Hashtable;
+ERROR 42X01: Syntax error: Encountered "class" at line 3, column 8.
+ij> drop class alias Hashtable;
+ERROR 42X01: Syntax error: Encountered "class" at line 1, column 6.
+ij> -- CREATE and DROP METHOD ALIAS
+-- beetle 5222
+create method alias hashtable for java.lang.Math.sin;
+ERROR 42X01: Syntax error: Encountered "method" at line 3, column 8.
+ij> drop method alias hashtable;
+ERROR 42X01: Syntax error: Encountered "method" at line 1, column 6.
+ij> -- RENAME COLUMN
+-- beetle 5222
+create table TT(col1 int, col2 int);
+0 rows inserted/updated/deleted
+ij> rename column TT.col2 to newcolumn2;
+ERROR 42X01: Syntax error: Encountered "column" at line 1, column 8.
+ij> drop table TT;
+0 rows inserted/updated/deleted
+ij> -- SET TRIGGERS
+-- beetle 5222
+CREATE TABLE tb1 (col1 int, col2 int, col3 int, constraint chk1 check (col1 > 0));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE tb2 (col1 char(30), c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> CREATE TRIGGER testtrig2 AFTER UPDATE on tb1
+REFERENCING OLD as oldtable FOR EACH ROW MODE DB2SQL INSERT INTO tb2 VALUES ('tb', oldtable.col1, oldtable.col2);
+0 rows inserted/updated/deleted
+ij> SET TRIGGERS FOR tb1 ENABLED;
+ERROR 42X01: Syntax error: Encountered "TRIGGERS" at line 1, column 5.
+ij> SET TRIGGERS FOR tb1 DISABLED;
+ERROR 42X01: Syntax error: Encountered "TRIGGERS" at line 1, column 5.
+ij> SET TRIGGERS testtrig2 ENABLED;
+ERROR 42X01: Syntax error: Encountered "TRIGGERS" at line 1, column 5.
+ij> SET TRIGGERS testtrig2 DISABLED;
+ERROR 42X01: Syntax error: Encountered "TRIGGERS" at line 1, column 5.
+ij> -- clean up
+DROP TRIGGER testtrig1;
+ERROR 42X94: TRIGGER 'TESTTRIG1' does not exist.
+ij> DROP TRIGGER testtrig2;
+0 rows inserted/updated/deleted
+ij> DROP TRIGGER testtrig3;
+ERROR 42X94: TRIGGER 'TESTTRIG3' does not exist.
+ij> DROP TABLE tb1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE tb2;
+0 rows inserted/updated/deleted
+ij> -- INSTANCEOF in where clause of select, delete, update,
+-- beetle 5224
+create table t1 (i int, s smallint, c10 char(10), vc30 varchar(30), b boolean);
+ERROR 42X01: Syntax error: BOOLEAN.
+ij> create table mm (x org.apache.derbyTesting.functionTests.util.ManyMethods);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 20.
+ij> create table sc (x org.apache.derbyTesting.functionTests.util.SubClass);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 20.
+ij> select i from t1 where i instanceof java.lang.Integer;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 26.
+ij> select i from t1 where i instanceof java.lang.Number;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 26.
+ij> select i from t1 where i instanceof java.lang.Object;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 26.
+ij> select s from t1 where s instanceof java.lang.Integer;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 26.
+ij> select b from t1 where b instanceof java.lang.Boolean;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 26.
+ij> select c10 from t1 where c10 instanceof java.lang.String;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 30.
+ij> select vc30 from t1 where vc30 instanceof java.lang.String;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 32.
+ij> -- following are negative test cases because boolean values disallowed in select clause
+select x instanceof org.apache.derbyTesting.functionTests.util.ManyMethods from mm;
+ERROR 42X01: Syntax error: Encountered "org" at line 2, column 21.
+ij> select x instanceof org.apache.derbyTesting.functionTests.util.SubClass from mm;
+ERROR 42X01: Syntax error: Encountered "org" at line 1, column 21.
+ij> select x instanceof org.apache.derbyTesting.functionTests.util.SubSubClass from mm;
+ERROR 42X01: Syntax error: Encountered "org" at line 1, column 21.
+ij> select (i + i) instanceof java.lang.Integer from t1;
+ERROR 42X01: Syntax error: Encountered "java" at line 1, column 27.
+ij> select (i instanceof java.lang.Integer) = true from t1;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 1, column 11.
+ij> DELETE FROM t1 where i INSTANCEOF 
+org.apache.derbyTesting.functionTests.util.serializabletypes.City;
+ERROR 42X01: Syntax error: Encountered "INSTANCEOF" at line 1, column 24.
+ij> UPDATE t1 SET s = NULL WHERE i INSTANCEOF 
+org.apache.derbyTesting.functionTests.util.serializabletypes.City;
+ERROR 42X01: Syntax error: Encountered "INSTANCEOF" at line 1, column 32.
+ij> -- clean up
+drop table t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> drop table mm;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MM' because it does not exist.
+ij> drop table sc;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'SC' because it does not exist.
+ij> -- datatypes
+-- beetle 5233
+create table testtype1(col1 bit);
+ERROR 42X01: Syntax error: Encountered "bit" at line 3, column 29.
+ij> create table testtype2(col1 bit varying(10));
+ERROR 42X01: Syntax error: Encountered "bit" at line 1, column 29.
+ij> -- boolean datatype already disabled
+create table testtype3(col1 boolean);
+ERROR 42X01: Syntax error: BOOLEAN.
+ij> create table testtype4(col1 LONG NVARCHAR);
+ERROR 0A000: Feature not implemented: LONG NVARCHAR.
+ij> create table testtype5(col1 LONG VARBINARY);
+ERROR 42X01: Syntax error: Encountered "VARBINARY" at line 1, column 34.
+ij> create table testtype6(col1 LONG BIT VARYING);
+ERROR 42X01: Syntax error: Encountered "BIT" at line 1, column 34.
+ij> create table testtype7(col1 LONG BINARY);
+ERROR 42X01: Syntax error: Encountered "BINARY" at line 1, column 34.
+ij> create table testtype8(col1 NCHAR);
+ERROR 0A000: Feature not implemented: NATIONAL CHAR.
+ij> create table testtype9(col1 NVARCHAR(10));
+ERROR 0A000: Feature not implemented: NATIONAL CHAR VARYING.
+ij> -- tinyint datatype already disabled
+create table testtype10(col1 TINYINT);
+ERROR 42X01: Syntax error: Encountered "" at line 2, column 30.
+ij> create table testtype11 (a national character large object (1000));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> -- beetle5426
+-- disable nclob
+create table beetle5426 (a nclob (1M));
+ERROR 0A000: Feature not implemented: NCLOB.
+ij> create table testtype12 (a national char(100));
+ERROR 0A000: Feature not implemented: NATIONAL CHAR.
+ij> CREATE CLASS ALIAS FOR org.apache.derbyTesting.functionTests.util.serializabletypes.Tour;
+ERROR 42X01: Syntax error: Encountered "CLASS" at line 1, column 8.
+ij> create table testtype13 (a Tour);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 28.
+ij> -- clean up
+drop table testtype1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE1' because it does not exist.
+ij> drop table testtype2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE2' because it does not exist.
+ij> drop table testtype3;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE3' because it does not exist.
+ij> drop table testtype4;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE4' because it does not exist.
+ij> drop table testtype5;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE5' because it does not exist.
+ij> drop table testtype6;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE6' because it does not exist.
+ij> drop table testtype7;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE7' because it does not exist.
+ij> drop table testtype8;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE8' because it does not exist.
+ij> drop table testtype9;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE9' because it does not exist.
+ij> drop table testtype10;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE10' because it does not exist.
+ij> drop table testtype11;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE11' because it does not exist.
+ij> drop table beetle5426;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'BEETLE5426' because it does not exist.
+ij> drop table testtype12;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE12' because it does not exist.
+ij> drop class alias Tours;
+ERROR 42X01: Syntax error: Encountered "class" at line 1, column 6.
+ij> drop table testtype13;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TESTTYPE13' because it does not exist.
+ij> -- limit char to 254 and varchar to 32672 columns in db2 mode
+-- beetle 5552
+-- following will fail because char length > 254
+create table test1(col1 char(255));
+ERROR 42611: The length, precision, or scale attribute for column, or type mapping 'CHAR(255)' is not valid. 
+ij> -- following will pass because char length <= 254
+create table test1(col1 char(254), col2 char(23));
+0 rows inserted/updated/deleted
+ij> -- try truncation error with the 2 chars
+-- the trailing blanks will not give error
+insert into test1 values('a','abcdefghijklmnopqrstuvw   ');
+1 row inserted/updated/deleted
+ij> -- the trailing non-blank characters will give error
+insert into test1 values('a','abcdefghijklmnopqrstuvwxyz');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR 'abcdefghijklmnopqrstuvwxyz' to length 23.
+ij> insert into test1 values('12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890','a');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '123456789012345678901234567890123456789012345678901234567890&' to length 254.
+ij> drop table test1;
+0 rows inserted/updated/deleted
+ij> -- following will fail because varchar length > 32672
+create table test1(col1 varchar(32673));
+ERROR 42611: The length, precision, or scale attribute for column, or type mapping 'VARCHAR(32673)' is not valid. 
+ij> -- following will pass because varchar length <= 32672
+create table test1(col1 varchar(32672), col2 varchar(1234));
+0 rows inserted/updated/deleted
+ij> drop table test1;
+0 rows inserted/updated/deleted
+ij> -- SET CONSTRAINTS statement
+-- beetle 5251
+CREATE TABLE testsetconst1 (col1 CHAR(7) NOT NULL, PRIMARY KEY(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testsetconst2 (col1 char(7) NOT NULL, CONSTRAINT fk FOREIGN KEY(col1) REFERENCES testsetconst1(col1));
+0 rows inserted/updated/deleted
+ij> SET CONSTRAINTS fk DISABLED;
+ERROR 42X01: Syntax error: Encountered "CONSTRAINTS" at line 1, column 5.
+ij> SELECT STATE FROM SYS.SYSCONSTRAINTS;
+&
+-
+E
+E
+ij> SET CONSTRAINTS fk ENABLED;
+ERROR 42X01: Syntax error: Encountered "CONSTRAINTS" at line 1, column 5.
+ij> SELECT STATE FROM SYS.SYSCONSTRAINTS;
+&
+-
+E
+E
+ij> SET CONSTRAINTS ALL DISABLED;
+ERROR 42X01: Syntax error: Encountered "CONSTRAINTS" at line 1, column 5.
+ij> SELECT STATE FROM SYS.SYSCONSTRAINTS;
+&
+-
+E
+E
+ij> SET CONSTRAINTS FOR testsetconst1 ENABLED;
+ERROR 42X01: Syntax error: Encountered "CONSTRAINTS" at line 1, column 5.
+ij> SELECT STATE FROM SYS.SYSCONSTRAINTS;
+&
+-
+E
+E
+ij> -- clean up
+DROP TABLE testsetconst1;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'FK' is dependent on that object.
+ij> DROP TABLE testsetconst2;
+0 rows inserted/updated/deleted
+ij> -- CALL statement
+-- beetle 5252
+call org.apache.derby.iapi.db.Factory::getDatabaseOfConnection().dropAllJDBCMetaDataSPSes();
+ERROR 42X01: Syntax error: org.apache.derby.iapi.db.Factory::getDatabaseOfConnection.
+ij> -- Beetle 5203: DB2 restricts what can be used for default clauses, and enforces
+-- constraints on the default clause that Cloudscape does not.
+-- Following should be okay:
+create table deftest1 (i int default 1);
+0 rows inserted/updated/deleted
+ij> create table deftest2 (vc varchar(30) default 'howdy');
+0 rows inserted/updated/deleted
+ij> create table deftest21 (vc clob(10) default 'okie');
+0 rows inserted/updated/deleted
+ij> create table deftest3 (d date default current date);
+0 rows inserted/updated/deleted
+ij> create table deftest31 (d date default '2004-02-08');
+0 rows inserted/updated/deleted
+ij> create table deftest5 (vc char(130) default current schema);
+0 rows inserted/updated/deleted
+ij> create table deftest4 (c char(130) default user);
+0 rows inserted/updated/deleted
+ij> create table deftest6 (d decimal(5,2) default null);
+0 rows inserted/updated/deleted
+ij> create table deftest7 (d decimal(5,2) default 123.450);
+0 rows inserted/updated/deleted
+ij> create table deftest8 (f float default 1.234);
+0 rows inserted/updated/deleted
+ij> -- make sure they actually work @ insertion.
+insert into deftest1 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest2 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest21 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest3 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest31 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest4 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest5 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest6 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest7 values (default);
+1 row inserted/updated/deleted
+ij> insert into deftest8 values (default);
+1 row inserted/updated/deleted
+ij> -- cleanup.
+drop table deftest1;
+0 rows inserted/updated/deleted
+ij> drop table deftest2;
+0 rows inserted/updated/deleted
+ij> drop table deftest21;
+0 rows inserted/updated/deleted
+ij> drop table deftest3;
+0 rows inserted/updated/deleted
+ij> drop table deftest31;
+0 rows inserted/updated/deleted
+ij> drop table deftest4;
+0 rows inserted/updated/deleted
+ij> drop table deftest5;
+0 rows inserted/updated/deleted
+ij> drop table deftest6;
+0 rows inserted/updated/deleted
+ij> drop table deftest7;
+0 rows inserted/updated/deleted
+ij> drop table deftest8;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5203, con't: following should all fail (though they'd pass in Cloudscape mode).
+-- expressions:
+create table deftest1 (vc varchar(30) default java.lang.Integer::toBinaryString(3));
+ERROR 42X01: Syntax error: Encountered "java" at line 3, column 47.
+ij> create table deftest2 (i int default 3+4);
+ERROR 42X01: Syntax error: Encountered "+" at line 1, column 39.
+ij> -- floating point assignment to non-float column.
+create table deftest3 (i int default 1.234);
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'I'.
+ij> -- decimal value with too much precision.
+create table deftest4 (d decimal(5,2) default 1.2234);
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'D'.
+ij> -- char constant longer than 254.
+create table deftest5 (vc varchar(300) default 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'VC'.
+ij> -- function calls (built-in and other) should fail with error 42894 (NOT with 42X01), to match DB2.
+create table t1 (i int default abs(0));
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'I'.
+ij> create table t1 (i int default someFunc('hi'));
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'I'.
+ij> -- Type mismatches should fail with 42894 (NOT with 42821), to match DB2.
+create table t1 (i int default 'hi');
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'I'.
+ij> -- Beetle 5281: <cast-function> for a default.
+-- Date-time functions (DATE, TIME, and TIMESTAMP)
+create table t1a (d date default date(current date));
+0 rows inserted/updated/deleted
+ij> create table t1b (d date default date('1978-03-22'));
+0 rows inserted/updated/deleted
+ij> create table t2a (t time default time(current time));
+0 rows inserted/updated/deleted
+ij> create table t2b (t time default time('08:28:08'));
+0 rows inserted/updated/deleted
+ij> create table t3a (ch timestamp default timestamp(current timestamp));
+0 rows inserted/updated/deleted
+ij> create table t3b (ts timestamp default timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+0 rows inserted/updated/deleted
+ij> -- BLOB function (not yet supported).
+create table t4 (b blob default blob('nope'));
+ERROR 42894: DEFAULT value or IDENTITY attribute value is not valid for column 'B'.
+ij> -- cleanup.
+drop table t1a;
+0 rows inserted/updated/deleted
+ij> drop table t1b;
+0 rows inserted/updated/deleted
+ij> drop table t2a;
+0 rows inserted/updated/deleted
+ij> drop table t2b;
+0 rows inserted/updated/deleted
+ij> drop table t3a;
+0 rows inserted/updated/deleted
+ij> drop table t3b;
+0 rows inserted/updated/deleted
+ij> -- DROP constraint syntax that should be supported in db2 compat mode:
+-- beetle 5204
+CREATE TABLE testconst1 (col1 CHAR(7) NOT NULL, col2 int CONSTRAINT cc CHECK(col2 > 1), PRIMARY KEY(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testconst2 (col1 char(7) NOT NULL, col2 char(7) NOT NULL, col3 int, CONSTRAINT fk FOREIGN KEY(col1) REFERENCES testconst1(col1), CONSTRAINT uk UNIQUE (col2));
+0 rows inserted/updated/deleted
+ij> -- DROP FOREIGN KEY syntax should be supported in DB2 compat mode
+insert into testconst1( col1, col2) values( 'a', 2);
+1 row inserted/updated/deleted
+ij> insert into testconst1( col1, col2) values( 'a', 2);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'TESTCONST1'.
+ij> insert into testconst1( col1, col2) values( 'b', 0);
+ERROR 23513: The check constraint 'CC' was violated while performing an INSERT or UPDATE on table 'APP.TESTCONST1'.
+ij> insert into testconst2( col1, col2, col3) values( 'a', 'a', 1);
+1 row inserted/updated/deleted
+ij> insert into testconst2( col1, col2, col3) values( 'z', 'b', 1);
+ERROR 23503: INSERT on table 'TESTCONST2' caused a violation of foreign key constraint 'FK' for key (z      ).  The statement has been rolled back.
+ij> insert into testconst2( col1, col2, col3) values( 'a', 'a', 1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'UK' defined on 'TESTCONST2'.
+ij> -- beetle 5204
+ALTER TABLE testconst1 DROP FOREIGN KEY cc;
+ERROR 42Z9E: Constraint 'CC' is not a FOREIGN KEY constraint.
+ij> ALTER TABLE testconst2 DROP UNIQUE fk;
+ERROR 42Z9E: Constraint 'FK' is not a UNIQUE constraint.
+ij> ALTER TABLE testconst2 DROP CHECK fk;
+ERROR 42Z9E: Constraint 'FK' is not a CHECK constraint.
+ij> ALTER TABLE testconst2 DROP FOREIGN KEY fk;
+0 rows inserted/updated/deleted
+ij> -- DROP PRIMARY KEY syntax should be supported in DB2 compat mode
+-- beetle 5204
+ALTER TABLE testconst1 DROP PRIMARY KEY;
+0 rows inserted/updated/deleted
+ij> -- DROP UNIQUE KEY syntax should be supported in DB2 compat mode
+-- beetle 5204
+ALTER TABLE testconst2 DROP UNIQUE uk;
+0 rows inserted/updated/deleted
+ij> -- DROP CHECK condition syntax should be supported in DB2 compat mode
+-- beetle 5204
+ALTER TABLE testconst1 DROP CHECK cc;
+0 rows inserted/updated/deleted
+ij> insert into testconst1( col1, col2) values( 'a', 2);
+1 row inserted/updated/deleted
+ij> insert into testconst1( col1, col2) values( 'b', 0);
+1 row inserted/updated/deleted
+ij> insert into testconst2( col1, col2, col3) values( 'z', 'b', 1);
+1 row inserted/updated/deleted
+ij> insert into testconst2( col1, col2, col3) values( 'a', 'a', 1);
+1 row inserted/updated/deleted
+ij> ALTER TABLE testconst2 DROP FOREIGN KEY noSuchConstraint;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.NOSUCHCONSTRAINT' on table 'APP.TESTCONST2'.
+ij> ALTER TABLE testconst2 DROP CHECK noSuchConstraint;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.NOSUCHCONSTRAINT' on table 'APP.TESTCONST2'.
+ij> ALTER TABLE testconst2 DROP UNIQUE noSuchConstraint;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.NOSUCHCONSTRAINT' on table 'APP.TESTCONST2'.
+ij> ALTER TABLE testconst1 DROP PRIMARY KEY;
+ERROR 42X86: ALTER table failed. There is no constraint 'PRIMARY KEY' on table 'APP.TESTCONST1'.
+ij> -- clean up
+DROP TABLE testconst1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE testconst2;
+0 rows inserted/updated/deleted
+ij> -- CREATE TRIGGERS
+-- beetle 5253
+CREATE TABLE tb1 (col1 int, col2 int, col3 int, constraint chk1 check (col1 > 0));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE tb2 (col1 char(30), c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> -- change syntax of before to "NO CASCADE BEFORE"
+CREATE TRIGGER testtrig1 NO CASCADE BEFORE UPDATE OF col1,col2 on tb1 FOR EACH ROW MODE DB2SQL VALUES 1;
+0 rows inserted/updated/deleted
+ij> CREATE TRIGGER testtrig2 AFTER UPDATE on tb1
+REFERENCING OLD as oldtable FOR EACH ROW MODE DB2SQL INSERT INTO tb2 VALUES ('tb', oldtable.col1, oldtable.col2);
+0 rows inserted/updated/deleted
+ij> CREATE TRIGGER testtrig3 AFTER UPDATE on tb1
+REFERENCING OLD as oldtable FOR EACH ROW MODE DB2SQL INSERT INTO tb2 VALUES ('tb', oldtable.col1, oldtable.col2);
+0 rows inserted/updated/deleted
+ij> -- clean up
+DROP TRIGGER testtrig1;
+0 rows inserted/updated/deleted
+ij> DROP TRIGGER testtrig2;
+0 rows inserted/updated/deleted
+ij> DROP TRIGGER testtrig3;
+0 rows inserted/updated/deleted
+ij> DROP TABLE tb1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE tb2;
+0 rows inserted/updated/deleted
+ij> -- SET TRANSACTION ISOLATION LEVEL
+-- beetle 5254
+-- these SET TRANSACTION ISOLATION statements fail in db2 compat mode because it has cloudscape specific syntax
+create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+ERROR 42X01: Syntax error: Encountered "TRANSACTION" at line 1, column 5.
+ij> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
+ERROR 42X01: Syntax error: Encountered "TRANSACTION" at line 1, column 5.
+ij> SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
+ERROR 42X01: Syntax error: Encountered "TRANSACTION" at line 1, column 5.
+ij> SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+ERROR 42X01: Syntax error: Encountered "TRANSACTION" at line 1, column 5.
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- statements should pass in db2 compat mode
+-- beetle 5260
+autocommit off;
+ij> create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> -- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation serializable;
+0 rows inserted/updated/deleted
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> -- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation read committed;
+0 rows inserted/updated/deleted
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> -- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation repeatable read;
+0 rows inserted/updated/deleted
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> -- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation read uncommitted;
+0 rows inserted/updated/deleted
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- SET ISOLATION statement
+-- beetle 5260
+-- set isolation statement that are supported in db2
+create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> set isolation read committed;
+0 rows inserted/updated/deleted
+ij> set isolation repeatable read;
+0 rows inserted/updated/deleted
+ij> set isolation read uncommitted;
+0 rows inserted/updated/deleted
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- SELECT statement testing
+-- beetle 5255
+CREATE TABLE t1(col1 int, col2 int);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE t2(col1 int, col2 int);
+0 rows inserted/updated/deleted
+ij> INSERT INTO t1 VALUES(3,4);
+1 row inserted/updated/deleted
+ij> INSERT INTO t2 VALUES(3,4);
+1 row inserted/updated/deleted
+ij> -- CROSS JOIN not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+-- (1) CROSS JOIN should be disabled in FROM clause of SELECT statement
+SELECT * FROM t1 CROSS JOIN t2;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 3, column 30.
+ij> -- (2) USING should be disabled in INNER JOIN of SELECT statement
+SELECT * FROM t1 INNER JOIN t2 USING (col1);
+ERROR 42X01: Syntax error: Encountered "USING" at line 2, column 32.
+ij> -- (3) USING should be disabled in INNER JOIN of SELECT statement
+SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col1);
+ERROR 42X01: Syntax error: Encountered "USING" at line 2, column 37.
+ij> -- (4) USING should be disabled in INNER JOIN of SELECT statement
+SELECT * FROM t1 RIGHT OUTER JOIN t2 USING (col1);
+ERROR 42X01: Syntax error: Encountered "USING" at line 2, column 38.
+ij> -- (5) TRUE and FALSE constants should be disabled in WHERE clause of SELECT statement
+SELECT * FROM t1 INNER JOIN t2 ON t1.col1 = t2.col1 WHERE true;
+ERROR 42X01: Syntax error: true.
+ij> SELECT * FROM t1 INNER JOIN t2 ON t1.col1 = t2.col1 WHERE false;
+ERROR 42X01: Syntax error: false.
+ij> -- (5) TRUE and FALSE constants should be disabled in WHERE clause of DELETE statement
+DELETE FROM t1 where true;
+ERROR 42X01: Syntax error: true.
+ij> DELETE FROM t1 where false;
+ERROR 42X01: Syntax error: false.
+ij> -- (5) TRUE and FALSE constants should be disabled in WHERE clause of DELETE statement
+UPDATE t2 SET col1 = NULL WHERE true;
+ERROR 42X01: Syntax error: true.
+ij> UPDATE t2 SET col1 = NULL WHERE false;
+ERROR 42X01: Syntax error: false.
+ij> -- (6) AT ISOLATION clause should be disabled in SELECT statement
+-- AT ISOLATION not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+SELECT * FROM t1 AT ISOLATION READ UNCOMMITTED;
+ERROR 42X01: Syntax error: Encountered "AT" at line 3, column 18.
+ij> SELECT * FROM t1 AT ISOLATION READ COMMITTED;
+ERROR 42X01: Syntax error: Encountered "AT" at line 1, column 18.
+ij> SELECT * FROM t1 AT ISOLATION SERIALIZABLE;
+ERROR 42X01: Syntax error: Encountered "AT" at line 1, column 18.
+ij> SELECT * FROM t1 AT ISOLATION REPEATABLE READ;
+ERROR 42X01: Syntax error: Encountered "AT" at line 1, column 18.
+ij> -- clean up
+DROP TABLE t1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE t2;
+0 rows inserted/updated/deleted
+ij> -- DEFAULT CAST not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+create table testuser(col1 BLOB(3K) default cast(user as blob(3k)));
+ERROR 42X01: Syntax error: Encountered "cast" at line 2, column 45.
+ij> create table testsessionuser(col1 BLOB(3K) default cast(session_user as blob(3k)));
+ERROR 42X01: Syntax error: Encountered "cast" at line 1, column 52.
+ij> create table testcurrentuser(col1 BLOB(3K) default cast(current_user as blob(3k)));
+ERROR 42X01: Syntax error: Encountered "cast" at line 1, column 52.
+ij> create table testschema(col1 BLOB(3K) default cast(current schema as blob(3k)));
+ERROR 42X01: Syntax error: Encountered "cast" at line 1, column 47.
+ij> -- alter table syntax that should be supported in db2 compat mode
+-- beetle 5267
+create table testmodify (col1 varchar(30), col2 int generated always as identity);
+0 rows inserted/updated/deleted
+ij> -- increasing the length of the varchar column
+alter table testmodify alter col1 set data type varchar(60);
+0 rows inserted/updated/deleted
+ij> -- specifying the interval between consecutive values of col2, the identity column 
+alter table testmodify alter col2 set increment by 2;
+0 rows inserted/updated/deleted
+ij> -- clean up
+drop table testmodify;
+0 rows inserted/updated/deleted
+ij> -- (1) adding more than one column 
+-- beetle 5268
+-- db2 compat mode should support the following statements
+create table testaddcol (col1 int);
+0 rows inserted/updated/deleted
+ij> alter table testaddcol add column col2 int add col3 int;
+ERROR 42X01: Syntax error: Encountered "add" at line 1, column 44.
+ij> drop table testaddcol;
+0 rows inserted/updated/deleted
+ij> -- (2) adding more than one unique, referential, or check constraint 
+-- beetle 5268
+-- db2 compat mode should support the following statements
+create table testaddconst1 (col1 int not null primary key, col2 int not null unique);
+0 rows inserted/updated/deleted
+ij> create table testaddconst2 (col1 int not null primary key, col2 int not null unique);
+0 rows inserted/updated/deleted
+ij> create table testaddconst3 (col1 int not null, col2 int not null, col3 int not null, col4 int not null, col5 int, col6 int);
+0 rows inserted/updated/deleted
+ij> create table testaddconst4 (col1 int not null, col2 int not null, col3 int not null, col4 int not null, col5 int, col6 int);
+0 rows inserted/updated/deleted
+ij> -- adding more than one unique-constraint 
+alter table testaddconst3 add primary key (col1) add unique (col2);
+ERROR 42X01: Syntax error: Encountered "add" at line 2, column 50.
+ij> alter table testaddconst3 add unique (col3) add unique (col4);
+ERROR 42X01: Syntax error: Encountered "add" at line 1, column 45.
+ij> -- adding more than one referential-constraint 
+alter table testaddconst3 add foreign key (col1) references testaddconst1(col1) add foreign key (col2) references testaddconst2(col2);
+ERROR 42X01: Syntax error: Encountered "add" at line 2, column 81.
+ij> -- adding more than one check-constraint 
+alter table testaddconst3 add check (col5 is null) add check (col6 is null);
+ERROR 42X01: Syntax error: Encountered "add" at line 2, column 52.
+ij> -- adding a primary, unique, foreign key, and  check-constraint 
+alter table testaddconst4 add primary key(col1) add unique(col2) add foreign key (col1) references testaddconst1(col1) add check (col2 is null);
+ERROR 42X01: Syntax error: Encountered "add" at line 2, column 49.
+ij> -- clean up
+drop table testaddconst1;
+0 rows inserted/updated/deleted
+ij> drop table testaddconst2;
+0 rows inserted/updated/deleted
+ij> drop table testaddconst3;
+0 rows inserted/updated/deleted
+ij> drop table testaddconst4;
+0 rows inserted/updated/deleted
+ij> -- (3) adding more than one unique, referential, or check constraints 
+-- beetle 5268
+-- syntax that will be supported in db2 compat mode (beetle 5204)
+CREATE TABLE testdropconst1 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk1 UNIQUE , PRIMARY KEY(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testdropconst2 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk2 UNIQUE, col3 CHAR(5) not null CONSTRAINT uk3 UNIQUE, PRIMARY KEY(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testdropconst3 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk4 UNIQUE , PRIMARY KEY(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testdropconst4 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk5 UNIQUE , PRIMARY KEY(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testdropconst5 (col1 CHAR(7) NOT NULL, col2 int, col3 CHAR(5) not null, CONSTRAINT fk1 FOREIGN KEY (col1) REFERENCES testdropconst3(col1), CONSTRAINT fk2 FOREIGN KEY (col1) REFERENCES testdropconst4(col1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE testdropconst6 (col1 CHAR(7) CONSTRAINT ck1 CHECK (col1 is null), col2 int CONSTRAINT ck2 CHECK (col2 is null));
+0 rows inserted/updated/deleted
+ij> -- dropping more than one unique-constraint 
+alter table testdropconst1 drop primary key drop constraint uk1;
+ERROR 42X01: Syntax error: Encountered "drop" at line 2, column 45.
+ij> alter table testdropconst2 drop primary key drop constraint uk2 drop constraint uk3;
+ERROR 42X01: Syntax error: Encountered "drop" at line 1, column 45.
+ij> -- dropping more than one foreign key constraint
+alter table testdropconst5 drop constraint fk1 drop constraint fk2;
+ERROR 42X01: Syntax error: Encountered "drop" at line 2, column 48.
+ij> -- dropping more than one check constraint
+alter table testdropconst6 drop constraint ck1 drop constraint ck2;
+ERROR 42X01: Syntax error: Encountered "drop" at line 2, column 48.
+ij> --clean up
+drop table testdropconst1;
+0 rows inserted/updated/deleted
+ij> drop table testdropconst2;
+0 rows inserted/updated/deleted
+ij> drop table testdropconst3;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'FK1' is dependent on that object.
+ij> drop table testdropconst4;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'FK2' is dependent on that object.
+ij> drop table testdropconst5;
+0 rows inserted/updated/deleted
+ij> drop table testdropconst6;
+0 rows inserted/updated/deleted
+ij> -- (4) altering more than one column
+-- beetle 5268
+-- syntax that will be supported in db2 compat mode (beetle 5267)
+-- db2 compat mode should support 
+create table testmodify (col1 varchar(30), col2 varchar(30));
+0 rows inserted/updated/deleted
+ij> alter table testmodify alter col1 set data type varchar(60) alter col2 set data type varchar(60);
+ERROR 42X01: Syntax error: Encountered "alter" at line 1, column 61.
+ij> -- clean up
+drop table testmodify;
+0 rows inserted/updated/deleted
+ij> -- number of values assigned in an INSERT statement should be the same as the number of specified or implied columns 
+-- beetle 5269
+create table t1(a int, b int, c char(10));
+0 rows inserted/updated/deleted
+ij> -- this statement should throw an error in db2 compat mode, but it does not
+insert into t1 values(1);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- beetle 5281
+-- These statements are successful in DB2 UDB v8, but not in Cloudscape
+-- Cloudscape does not support cast-functions such as blob, timestamp, time, and date
+-- DB2 does support cast functions such as these below:
+create table t1 (ch blob(10));
+0 rows inserted/updated/deleted
+ij> insert into t1 values (blob('hmm'));
+ERROR 42Y03: 'BLOB' is not recognized as a function or procedure.
+ij> create table t2 (ch timestamp);
+0 rows inserted/updated/deleted
+ij> insert into t2 values (timestamp(current timestamp));
+1 row inserted/updated/deleted
+ij> create table t3 (ch time);
+0 rows inserted/updated/deleted
+ij> insert into t3 values (time(current time));
+1 row inserted/updated/deleted
+ij> create table t4 (ch date);
+0 rows inserted/updated/deleted
+ij> insert into t4 values (date(current date));
+1 row inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> -- test operands
+-- beetle 5282
+-- <,> =, !=, <=, >= operands are not supported in db2 but supported in cloudscape
+CREATE TABLE testoperatorclob (colone clob(1K));
+0 rows inserted/updated/deleted
+ij> INSERT INTO testoperatorclob VALUES (CAST('50' AS CLOB(1K)));
+1 row inserted/updated/deleted
+ij> select * from testoperatorclob;
+COLONE                                                                                                                          
+--------------------------------------------------------------------------------------------------------------------------------
+50                                                                                                                              
+ij> -- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorclob where colone > 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone < 70;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone = 50;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone != 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone <= 70;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone >= 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorclob where colone <> 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> drop table testoperatorclob;
+0 rows inserted/updated/deleted
+ij> -- beetle 5282
+CREATE TABLE testoperatorblob (colone clob(1K));
+0 rows inserted/updated/deleted
+ij> INSERT INTO testoperatorblob VALUES (CAST('50' AS BLOB(1K)));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> select * from testoperatorblob;
+COLONE                                                                                                                          
+--------------------------------------------------------------------------------------------------------------------------------
+ij> -- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorblob where colone > 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone < 999999;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone = 00350030;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone != 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone <= 999999;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone >= 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> select * from testoperatorblob where colone <> 10;
+ERROR 42818: Comparisons between 'CLOB' and 'INTEGER' are not supported.
+ij> drop table testoperatorblob;
+0 rows inserted/updated/deleted
+ij> -- beetle 5283
+-- casting using "X" for hex constant, "B" literal is not allowed in DB2
+-- db2 raises ERROR 56098, cloudscape should raise error msg?a
+values cast(B'1' as char(100));
+ERROR 42X01: Syntax error: Encountered "\'1\'" at line 4, column 14.
+ij> values cast(B'1' as clob(1M));
+ERROR 42X01: Syntax error: Encountered "\'1\'" at line 1, column 14.
+ij> values cast(B'1' as blob(1M));
+ERROR 42X01: Syntax error: Encountered "\'1\'" at line 1, column 14.
+ij> values cast(X'11' as char(100));
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'CHAR'.
+ij> values cast(X'11' as clob(1M));
+ERROR 42846: Cannot convert types 'CHAR () FOR BIT DATA' to 'CLOB'.
+ij> values cast(X'11' as blob(1M));
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+11                                                                                                                              
+ij> -- beetle 5284
+-- minor difference in outputs when casting to blob in Cloudscape and DB2. 
+values cast('   ' as blob(1M));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> values cast('a' as blob(1M));
+ERROR 42846: Cannot convert types 'CHAR' to 'BLOB'.
+ij> -- beetle 5294
+-- diable column names in the characterExpression and escape clause of a LIKE predicate
+create table likeable (match_me varchar(10), pattern varchar(10), esc varchar(1));
+0 rows inserted/updated/deleted
+ij> insert into likeable values ('foo%bar3', 'fooZ%bar3', 'Z');
+1 row inserted/updated/deleted
+ij> select match_me from likeable where match_me like pattern escape esc;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> select match_me from likeable where match_me like pattern escape 'Z';
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> drop table likeable;
+0 rows inserted/updated/deleted
+ij> -- beetle 5298 
+-- disable Field Access
+VALUES java.lang.Integer::MAX_VALUE;
+ERROR 42X01: Syntax error: java.lang.Integer::MAX_VALUE.
+ij> VALUES (1)->noSuchField;
+ERROR 42X01: Syntax error: Encountered "->" at line 1, column 11.
+ij> -- beetle 5299
+-- disable Method Invocations 
+VALUES (1)->toString();
+ERROR 42X01: Syntax error: java.lang.Integer.toString.
+ij> VALUES 1.->toString();
+ERROR 42X01: Syntax error: java.math.BigDecimal.toString.
+ij> VALUES 1..getClass()->toString();
+ERROR 42X01: Syntax error: Encountered "1." at line 1, column 8.
+ij> create table m5299 (i int, s varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into m5299 values(1, 'hello');
+1 row inserted/updated/deleted
+ij> select i.hashCode(), s.indexOf('ll') from m5299;
+ERROR 42Y07: Schema 'I' does not exist
+ij> select s.indexOf('ll') from m5299;
+ERROR 42Y07: Schema 'S' does not exist
+ij> drop table m5299;
+0 rows inserted/updated/deleted
+ij> -- beetle 5307
+-- scale of the resulting data type for division 
+values(11.0/1111.33);
+1                                 
+----------------------------------
+0.009898050084133425715134118     
+ij> values (11111111111111111111111111111.10/1.11);
+1                               
+--------------------------------
+10010010010010010010010010010   
+ij> values (11111111111111111111111111111.10/1.1);
+1                                 
+----------------------------------
+10101010101010101010101010101.0   
+ij> -- beetle 5346
+-- positive test
+-- NULLs sort low in Cloudscape, but sort high in DB2 
+create table testOrderBy(c1 int);
+0 rows inserted/updated/deleted
+ij> insert into testOrderBy values (1);
+1 row inserted/updated/deleted
+ij> insert into testOrderBy values (2);
+1 row inserted/updated/deleted
+ij> insert into testOrderBy values (null);
+1 row inserted/updated/deleted
+ij> select * from testOrderBy order by c1;
+C1         
+-----------
+1          
+2          
+NULL       
+ij> drop table testOrderBy;
+0 rows inserted/updated/deleted
+ij> create table likeable (match_me varchar(10), pattern varchar(10), esc varchar(1), e varchar(1));
+0 rows inserted/updated/deleted
+ij> insert into likeable values ('foo%bar3', 'fooZ%bar3', 'Z', 'Z');
+1 row inserted/updated/deleted
+ij> select match_me from likeable where match_me like 'fooZ%bar3' escape 'Z';
+MATCH_ME  
+----------
+foo%bar3  
+ij> select match_me from likeable where 'foo%bar3' like 'fooZ%bar3' escape 'Z';
+MATCH_ME  
+----------
+foo%bar3  
+ij> select match_me from likeable where 'foo%bar3' like 'foo%';
+MATCH_ME  
+----------
+foo%bar3  
+ij> -- SQLSTATE=42824
+select match_me from likeable where match_me like pattern escape esc;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> select match_me from likeable where match_me like pattern escape e;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> select match_me from likeable where match_me like pattern escape 'Z';
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> select match_me from likeable where match_me like pattern;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> select match_me from likeable where match_me like e;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> -- SQLSTATE=22019
+select match_me from likeable where match_me like 'fooZ%bar3' escape esc;
+ERROR 22019: Invalid escape sequence, 'ESC'. The escape string must be exactly one character. It can not be a null or more than one character.
+ij> select match_me from likeable where match_me like 'fooZ%bar3' escape e;
+ERROR 22019: Invalid escape sequence, 'E'. The escape string must be exactly one character. It can not be a null or more than one character.
+ij> -- SQLSTATE=42884
+select match_me from likeable where match_me like 'fooZ%bar3' escape 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select match_me from likeable where match_me like 'fooZ%bar3' escape 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select match_me from likeable where 'foo%bar3' like 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select match_me from likeable where 1 like 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select match_me from likeable where match_me like 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- beetle 5845
+select match_me from likeable where match_me like CURRENT_DATE;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> create table likes (dt date, tm time, ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into likes values (current_date, current_time, current_timestamp);
+1 row inserted/updated/deleted
+ij> insert into likes values ('2004-03-03', current_time, current_timestamp);
+1 row inserted/updated/deleted
+ij> select * from likes where dt like '2004-03-0_';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select * from likes where tm like '_8:%:1%';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select * from likes where ts like '2004-04-09 08:5%';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table likeable;
+0 rows inserted/updated/deleted
+ij> drop table likes;
+0 rows inserted/updated/deleted
+ij> -- no schema names in constraint names (beetle 5143)
+CREATE TABLE S5143.T5143_1 (C1 int CONSTRAINT S5143.CPK1 PRIMARY KEY);
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> CREATE TABLE S5143.T5143_2 (C1 int, C2 int, CONSTRAINT S5143.CPK1  PRIMARY KEY(C1,C2));
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> CREATE TABLE S5143.T5143_3 (C1 int, C2 int, CONSTRAINT S5143.C3 CHECK(C1 > C2));
+0 rows inserted/updated/deleted
+ij> -- READ ONLY not allowed in "FOR" clause of a select.
+create table roTable (i int);
+0 rows inserted/updated/deleted
+ij> insert into roTable values (8);
+1 row inserted/updated/deleted
+ij> select * from roTable for update;
+I          
+-----------
+8          
+ij> select * from roTable for update of i;
+I          
+-----------
+8          
+ij> select * from roTable for fetch only;
+I          
+-----------
+8          
+ij> select * from roTable for read only;
+I          
+-----------
+8          
+ij> drop table roTable;
+0 rows inserted/updated/deleted
+ij> -- No support for Java types in CAST statements;
+values CAST (NULL AS CLASS java.lang.Integer);
+ERROR 42X01: Syntax error: Encountered "" at line 3, column 22.
+ij> values CAST (NULL AS CLASS com.acme.SomeClass);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 22.
+ij> values CAST (NULL AS CLASS java.sql.Date);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 22.
+ij> values CAST (NULL AS java.lang.Integer);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 22.
+ij> values CAST (NULL AS com.acme.SomeClass);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 22.
+ij> values CAST (NULL AS java.sql.Date);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 22.
+ij> values CAST (? AS CLASS java.lang.Integer);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 19.
+ij> values CAST (? AS CLASS com.acme.SomeClass);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 19.
+ij> values CAST (? AS CLASS java.sql.Date);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 19.
+ij> values CAST (? AS java.lang.Integer);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 19.
+ij> values CAST (? AS com.acme.SomeClass);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 19.
+ij> values CAST (? AS java.sql.Date);
+ERROR 42X01: Syntax error: Encountered "" at line 1, column 19.
+ij> -- No support for BIT_LENGTH, OCTET_LENGTH, TRIP and SUBSTRING in DB2 compatibility mode
+values BIT_LENGTH(X'55');
+ERROR 42Y03: 'BIT_LENGTH' is not recognized as a function or procedure.
+ij> values OCTET_LENGTH('asdfasdfasdf');
+ERROR 42Y03: 'OCTET_LENGTH' is not recognized as a function or procedure.
+ij> values TRIM('x' FROM 'xasdf x');
+ERROR 42X01: Syntax error: Encountered "FROM" at line 1, column 17.
+ij> values SUBSTRING('12345' FROM 3 FOR 2);
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> -- Tests for explicit nulls. Not allowed in DB2, defect 5589 
+-- Should fail.
+create table t1 ( i int null);
+ERROR 42X01: Syntax error: Encountered "null" at line 3, column 25.
+ij> -- Should pass.
+create table t1 (i int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values null;
+1 row inserted/updated/deleted
+ij> -- Alter table add explict null column should also fail.
+alter table t1 add column j int null;
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 33.
+ij> -- Should pass
+alter table t1 add column j int;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (null, null);
+1 row inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5538: Match DB2 trigger restrictions.
+-- Part I) SQL-Procedure-Statement restrictions:
+-- 1) BEFORE triggers: can't have CALL, INSERT, UPDATE, or DELETE as action; when beetle 5253 is resolved, thsese should be changed to "no cascade before", instead of just "before".
+create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> create table t2 (i int);
+0 rows inserted/updated/deleted
+ij> create trigger trig1a NO CASCADE before insert on t1 for each row mode db2sql insert into t2 values(1);
+ERROR 42Z9D: 'INSERT' statements are not allowed in 'BEFORE' triggers.
+ij> create trigger trig1b NO CASCADE before insert on t1 for each row mode db2sql update t2 set i=1 where i=2;
+ERROR 42Z9D: 'UPDATE' statements are not allowed in 'BEFORE' triggers.
+ij> create trigger trig1c NO CASCADE before insert on t1 for each row mode db2sql delete from t2 where i=8;
+ERROR 42Z9D: 'DELETE' statements are not allowed in 'BEFORE' triggers.
+ij> create trigger trig1d NO CASCADE before insert on t1 for each row mode db2sql call procOne();
+ERROR 42X01: Syntax error: Encountered "call" at line 1, column 79.
+ij> -- 2) AFTER triggers: can't have CALL as action, but others should still work.
+create trigger trig2 after insert on t1 for each row mode db2sql call procOne();
+ERROR 42X01: Syntax error: Encountered "call" at line 2, column 66.
+ij> create trigger trig2a after insert on t1 for each row mode db2sql insert into t2 values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig2b after insert on t1 for each row mode db2sql update t2 set i=1 where i=2;
+0 rows inserted/updated/deleted
+ij> create trigger trig2c after insert on t1 for each row mode db2sql delete from t2 where i=8;
+0 rows inserted/updated/deleted
+ij> -- Part II) Verify applicable restrictions on the "REFERENCES" clause (should be the same as in DB2).
+-- 3) NEW, NEW_TABLE only valid with insert and update triggers; OLD, OLD_TABLE
+--  only valid with delete and update triggers.
+-- Next 8 should succeed.
+create trigger trig3a after insert on t1 referencing new as ooga for each row mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3b after update on t1 referencing old as ooga for each row mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3c after update on t1 referencing new as ooga for each row mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3d after delete on t1 referencing old as ooga for each row mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3e after insert on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3f after update on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3g after update on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> create trigger trig3h after delete on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+0 rows inserted/updated/deleted
+ij> -- Next 4 should fail.
+create trigger trig3i after insert on t1 referencing old as ooga for each row mode db2sql values(1);
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger trig3j after delete on t1 referencing new as ooga for each row mode db2sql values(1);
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> create trigger trig3k after insert on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger trig3m after delete on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> -- 4) NEW_TABLE, OLD_TABLE not valid with BEFORE triggers (these will throw syntax errors until beetle 5253 is resolved).
+create trigger trig4a no cascade before update on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+ERROR 42Y92: BEFORE triggers may only reference row transition variables/tables.
+ij> create trigger trig4b no cascade before update on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+ERROR 42Y92: BEFORE triggers may only reference row transition variables/tables.
+ij> -- 5) OLD, NEW not valid with FOR EACH STATEMENT.
+create trigger trig5a after update on t1 referencing old as ooga for each statement mode db2sql values(1);
+ERROR 42Y92: STATEMENT triggers may only reference table transition variables/tables.
+ij> create trigger trig5b after update on t1 referencing new as ooga for each statement mode db2sql values(1);
+ERROR 42Y92: STATEMENT triggers may only reference table transition variables/tables.
+ij> -- cleanup for 5538:
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5637: Require FOR EACH clause in DB2 mode. Optional in Cloudscape mode. 
+create table t1(i int);
+0 rows inserted/updated/deleted
+ij> -- Should fail
+create trigger trig1 after insert on t1 mode db2sql values (8);
+ERROR 42X01: Syntax error: Encountered "mode" at line 2, column 41.
+ij> -- Should pass
+create trigger trig1 after insert on t1 for each row mode db2sql values (8);
+0 rows inserted/updated/deleted
+ij> create trigger trig2 after insert on t1 for each statement mode db2sql values (8);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- match SUBSTR builtin function out of range handling (5570).
+create table x1 (c char(10));
+0 rows inserted/updated/deleted
+ij> insert into x1 values ('foo');
+1 row inserted/updated/deleted
+ij> -- DB2: Raises ERROR 22011: out of range, Cloudscape doesn't
+select substr('foo', -2,1) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: Raises ERROR 22011: out of range, Cloudscape return NULL
+select substr('foo', 1,-1) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> select substr('foo', 2,-1) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> select substr('foo', 3,-2) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> select substr('foo', -2,-3) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: ERROR 22011 out of range, Cloudscape returns empty string
+select substr('foo', 5) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> select substr('foo', 6,3) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: Raises ERROR 22011: out of range, Cloudscape returns 'f'
+select substr('foo', 0,1) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: ERROR 22011 out of range, Cloudscape return 'foo'
+select substr('foo', 1,4) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: ERROR 22011 out of range, Cloudscape return 'foo'
+select substr('foo', -5) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: ERROR 22011 out of range
+select substr('foo', -6,3) from x1;
+1   
+----
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- DB2: Returns an empty value, Cloudscape returns NULL
+select substr('foo', 1,0) from x1;
+1              
+---------------
+ij> select substr('foo', 2,0) from x1;
+1              
+---------------
+ij> select substr('foo', 3,0) from x1;
+1              
+---------------
+ij> -- DB2: Raises ERROR 22011: out of range, Cloudscape returns NULL
+select substr('foo', 4,0) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> select substr('foo', 5,0) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> select substr('foo', 6,0) from x1;
+1              
+---------------
+ERROR 22011: The second or third argument of the SUBSTR function is out of range.
+ij> -- Beetle 5630: A column check constraint can only refer to that column in DB2
+create table t1(c1 int, c2 int check (c1 > 5));
+ERROR 42621: A check constraint or generated column that is defined with 'C2' is invalid.
+ij> -- check constraint ck1 in the column-definition of c2 can not refer to column c1
+create table t1(c1 int, c2 int constraint ck1 check(c1 > c2));
+ERROR 42621: A check constraint or generated column that is defined with 'C2' is invalid.
+ij> -- Same test with alter table
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table t1 add column c2 int constraint ck2 check(c2 > c1);
+ERROR 42621: A check constraint or generated column that is defined with 'C2' is invalid.
+ij> -- These should pass, uses table constraints
+create table t2(c1 int, c2 int, check (c1 > 5));
+0 rows inserted/updated/deleted
+ij> create table t3(i int, j int, check (j > 5));
+0 rows inserted/updated/deleted
+ij> alter table t1 add column c2 int;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint t1con check(c2 > c1);
+0 rows inserted/updated/deleted
+ij> 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> -- Beetle 5638: DB2 requires matching target and result columns for insert
+create table t1 ( i int, j int);
+0 rows inserted/updated/deleted
+ij> create table t2 ( i int, j int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 2);
+1 row inserted/updated/deleted
+ij> -- negative tests, mismatch of columns
+insert into t1 select i from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t1(i) select * from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t1(i, j) select j from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t1 select * from t2 union select i from t2;
+ERROR 42X58: The number of columns on the left and right sides of the UNION must be the same.
+ij> insert into t1 select j from t2 union select j from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t1(i) select * from t2 union all select * from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t1(i, j) select i, j from t2 union all i from t2;
+ERROR 42X01: Syntax error: Encountered "i" at line 1, column 52.
+ij> -- positive cases
+insert into t1 select * from t2;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+ij> insert into t1(i,j) select * from t2 union select i, j from t2;
+1 row inserted/updated/deleted
+ij> insert into t1(i) select i from t2 union all select j from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+2          |2          
+2          |NULL       
+2          |NULL       
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5667: DB2 requires non-nullable columns to have a default in ALTER TABLE
+create table t1( i int);
+0 rows inserted/updated/deleted
+ij> -- Negative cases
+alter table t1 add column j int not null;
+ERROR 42601: In an ALTER TABLE statement, the column 'J' has been specified as NOT NULL and either the DEFAULT clause was not specified or was specified as DEFAULT NULL.
+ij> alter table t1 add column j int not null default null;
+ERROR 42601: In an ALTER TABLE statement, the column 'J' has been specified as NOT NULL and either the DEFAULT clause was not specified or was specified as DEFAULT NULL.
+ij> -- positive cases
+alter table t1 add column j int;
+0 rows inserted/updated/deleted
+ij> alter table t1 add column k int not null default 5;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- IS [NOT] TRUE/FALSE/UNKNOWN not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+-- 
+create table t1( i int);
+0 rows inserted/updated/deleted
+ij> select * from t1 where ((1=1) IS TRUE);
+ERROR 42X01: Syntax error: Encountered "TRUE" at line 1, column 34.
+ij> select * from t1 where ((1=1) IS NOT TRUE);
+ERROR 42X01: Syntax error: Encountered "TRUE" at line 1, column 38.
+ij> select * from t1 where ((1=0) IS FALSE);
+ERROR 42X01: Syntax error: Encountered "FALSE" at line 1, column 34.
+ij> select * from t1 where ((1=0) IS NOT FALSE);
+ERROR 42X01: Syntax error: Encountered "FALSE" at line 1, column 38.
+ij> select * from t1 where (null IS UNKNOWN);
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 25.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5635, 5645 and 5633: Generated column name issues
+create table t1(i int, j int);
+0 rows inserted/updated/deleted
+ij> create table t2(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 2);
+1 row inserted/updated/deleted
+ij> -- Cloudscape should generate column names when both sides of union don't match
+select i,j from t1
+union all
+select c1,c2 from t2
+order by 1;
+1          |2          
+-----------------------
+1          |1          
+2          |2          
+ij> select i as c1, j as c2 from t1
+union all
+select c1, c2 from t2
+order by 1;
+C1         |C2         
+-----------------------
+1          |1          
+2          |2          
+ij> -- Prevent Cloudscape from using generated column names for ordering
+select i+1 from t1 order by "SQLCol1";
+ERROR 42X04: Column 'SQLCol1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'SQLCol1' is not a column in the target table.
+ij> select i+1 from t1 order by SQLCol1;
+ERROR 42X04: Column 'SQLCOL1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'SQLCOL1' is not a column in the target table.
+ij> values (1,2,3),(4,5,6),(7,8,9) order by "SQLCol1";
+ERROR 42X78: Column 'SQLCol1' is not in the result of the query expression.
+ij> -- Column names for a CREATE VIEW should be specified when result table has unnamed columns. 
+create view v1 as values 1;
+ERROR 42908: The CREATE VIEW statement does not include a column list.
+ij> create view v1 as select i+1 from t1;
+ERROR 42908: The CREATE VIEW statement does not include a column list.
+ij> create view v1 as select i+1 as i from t1;
+0 rows inserted/updated/deleted
+ij> create view v2(c) as select i+1 from t1;
+0 rows inserted/updated/deleted
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> drop view v2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- ALTER TABLE COMPRESS statement is cloudscape specific, disable in db2 mode
+-- beetle 5553
+--   TODO - not working yet
+-- negative tests
+create table tb1 (country_ISO_code char(2));
+0 rows inserted/updated/deleted
+ij> alter table tb1 compress;
+ERROR 42X01: Syntax error: COMPRESS.
+ij> alter table tb1 compress sequential;
+ERROR 42X01: Syntax error: COMPRESS.
+ij> -- clean up
+drop table tb1;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5717: Disable adding primary or unique constraints on non-nullable columns
+-- negative tests
+create table t1 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint pk1 primary key (c1);
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> alter table t1 add constraint uc1 unique (c2);
+ERROR 42831: 'C2' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- positive tests
+create table t2 (c1 int not null, c2 char(10) not null);
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint pk2 primary key (c1);
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint uc2 unique (c2);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- SET STATISTICS TIMING ON stmt is cloudscape specific, disabled in db2 mode
+-- Once we have rewritten our functions to not use following sql, SET STATISTICS TIMING can be completely removed from the parser.
+set statistics timing on;
+ERROR 42X01: Syntax error: Encountered "statistics" at line 3, column 5.
+ij> -- SET RUNTIMESTATISTICS ON stmt is cloudscape specific, disabled in db2 mode
+-- Once we have rewritten our functions to not use following sql, SET RUNTIMESTATISTICS can be completely removed from the parser.
+set runtimestatistics on;
+ERROR 42X01: Syntax error: Encountered "runtimestatistics" at line 3, column 5.
+ij> -- following runtime statistics related sql will fail in db2 mode but will run fine in Cloudscape mode
+create table t1 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+ij> values runtimestatistics()->getScanStatisticsText();
+ERROR 42Y03: 'RUNTIMESTATISTICS' is not recognized as a function or procedure.
+ij> values runtimestatistics()->toString();
+ERROR 42Y03: 'RUNTIMESTATISTICS' is not recognized as a function or procedure.
+ij> -- following runtime statistics related sql is not supported anymore and will not run in any mode
+UPDATE STATISTICS FOR TABLE T1;
+ERROR 42X01: Syntax error: Encountered "FOR" at line 2, column 19.
+ij> DROP STATISTICS FOR TABLE T1;
+ERROR 42X01: Syntax error: Encountered "STATISTICS" at line 1, column 6.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dbManagerLimits.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dbManagerLimits.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+Test - maximum length of character constant is 32672 and that of hex constant is 16336
+First testing less than maximum constant lengths through insert statement
+Next testing less than maximum constant lengths through values
+Next testing maximum constant lengths through insert statement
+Next testing maximum constant lengths through values
+Next testing maximum constant lengths + 1 through insert statement
+expected exception A string constant starting with ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+expected exception A string constant starting with 'X'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+Next testing maximum constant lengths + 1 through values
+expected exception A string constant starting with ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+expected exception A string constant starting with 'X'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+Next testing maximum constant lengths + n through insert statement
+expected exception A string constant starting with ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+expected exception A string constant starting with 'X'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+Next testing maximum constant lengths + n through values
+expected exception A string constant starting with ''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+expected exception A string constant starting with 'X'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' is too long.
+Next testing odd number of hex digits in a hex constant through insert statement
+expected exception An invalid hexadecimal constant starting with 'X'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' has been detected.
+And finally testing odd number of hex digits in a hex constant through values statement
+expected exception An invalid hexadecimal constant starting with 'X'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&' has been detected.
+Test - most columns allowed in a table
+First create a table with one column less than maximum allowed number of columns
+  Try alter table on it to have table with maximum allowed number of columns
+  Try another alter table to have table with one column more than maximum allowed number of columns
+expected exception Too many columns (1013) were specified for  table or view T1. The limit is 1012.
+Next create a table with maximum allowed number of columns
+  Try alter table to have table with more columns than maximum allowed number of columns
+expected exception Too many columns (1013) were specified for  table or view T1. The limit is 1012.
+Found 1012 columns/parameters through meta data
+Next create a table with one column more than maximum allowed number of columns
+expected exception Too many columns (1013) were specified for  table or view T1. The limit is 1012.
+Finally, create a table with 2 columns more than maximum allowed number of columns
+expected exception Too many columns (1014) were specified for  table or view T1. The limit is 1012.
+Test - most columns allowed in a view
+First create a view with one column less than maximum allowed number of columns
+Next create a view with maximum allowed number of columns
+Found 5000 columns/parameters through meta data
+Next create a view with one column more than that maximum allowed number of columns
+expected exception Too many columns (5001) were specified for  table or view V1. The limit is 5000.
+And finally create a view with 2 columns that maximum allowed number of columns
+expected exception Too many columns (5002) were specified for  table or view V1. The limit is 5000.
+Test - most elements allowed in a select list
+First try a select with one column less than maximum allowed number of columns
+Next try a select with maximum allowed number of columns
+Next try a select with one column more than maximum allowed number of columns
+expected exception SELECT statement has too many items in GROUP BY, ORDER BY or select list.
+Next try a select with 2 more columns than maximum allowed number of columns
+expected exception SELECT statement has too many items in GROUP BY, ORDER BY or select list.
+Test - most columns allowed in a ORDER BY clause
+First try order by with one column less than maximum allowed number of columns
+Next try an order by with maximum allowed number of columns
+Next try an order by with one column more than maximum allowed number of columns
+expected exception SELECT statement has too many items in GROUP BY, ORDER BY or select list.
+And finally try an order by with 2 more columns than maximum allowed number of columns
+expected exception SELECT statement has too many items in GROUP BY, ORDER BY or select list.
+Test - most parameters allowed for a stored procedure
+First create a procedure with one parameter less than maximum allowed number of parameters
+Next create a procedure with maximum allowed number of parameters
+Found 90 columns/parameters through meta data
+And finally create a procedure with more parameters that maximum allowed number of parameters
+expected exception The limit for the number of parameters for a procedure has been exceeded. Limit is 90 and number of parameters for procedure P3 are 91.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ddlTableLockMode.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ddlTableLockMode.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5072 @@
+ij> -- test DDL Table Lock mode
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> -- create tables with different lock modes
+drop   table default1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'DEFAULT1' because it does not exist.
+ij> create table default1(c1 int);
+0 rows inserted/updated/deleted
+ij> drop   table row1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'ROW1' because it does not exist.
+ij> create table row1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> drop   table table1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TABLE1' because it does not exist.
+ij> create table table1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> -- verify that views have table lock mode of 'R' (ignored)
+create view v1 as select * from table1;
+0 rows inserted/updated/deleted
+ij> select tablename, lockgranularity from sys.systables
+where tablename = 'V1';
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+V1                                                                                                                              |R
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> -- verify that system tables have lock mode of 'R'
+select tablename, lockgranularity from sys.systables
+where tablename = 'SYSTABLES';
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+SYSTABLES                                                                                                                       |R
+ij> -- READ COMMITTED tests
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> set current isolation = CS;
+0 rows inserted/updated/deleted
+ij> -- all selects should be row locked except for table1
+select * from default1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all selects should be row locked except for table1
+select * from default1
+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 DEFAULT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from row1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from row1
+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 ROW1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from table1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from table1
+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 TABLE1 at read committed isolation level using instantaneous share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> -- scans for all updates should be row locked except for table1
+update default1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all updates should be row locked except for table1
+update default1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update default1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update default1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update row1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update row1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update table1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update table1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- all inserts should be row locked except for table1
+insert into default1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all inserts should be row locked except for table1
+insert into default1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into row1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into row1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into table1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into table1 values 1
+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: 
+Insert ResultSet using table locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> -- scans for all deletes should be row locked except for table1
+delete from default1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all deletes should be row locked except for table1
+delete from default1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from default1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from default1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- REPEATABLE READ tests
+--   repeatable read works the same as serializable when no indexes are involved
+-- create tables with different lock modes
+drop   table default1;
+0 rows inserted/updated/deleted
+ij> create table default1(c1 int);
+0 rows inserted/updated/deleted
+ij> drop   table row1;
+0 rows inserted/updated/deleted
+ij> create table row1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> drop   table table1;
+0 rows inserted/updated/deleted
+ij> create table table1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> set current isolation RS;
+0 rows inserted/updated/deleted
+ij> -- all selects should be row locked except for table1
+select * from default1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all selects should be row locked except for table1
+select * from default1
+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 DEFAULT1 at repeatable read isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from row1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from row1
+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 ROW1 at repeatable read isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from table1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from table1
+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 TABLE1 at repeatable read isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> -- scans for all updates should be row locked except for table1
+update default1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all updates should be row locked except for table1
+update default1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at repeatable read isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update default1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update default1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at repeatable read isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update row1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at repeatable read isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update row1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at repeatable read isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update table1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at repeatable read isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update table1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at repeatable read isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- all inserts should be row locked except for table1
+insert into default1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all inserts should be row locked except for table1
+insert into default1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into row1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into row1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into table1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into table1 values 1
+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: 
+Insert ResultSet using table locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> -- scans for all deletes should be row locked except for table1
+delete from default1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all deletes should be row locked except for table1
+delete from default1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at repeatable read 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from default1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from default1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at repeatable read isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at repeatable read 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at repeatable read isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at repeatable read isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at repeatable read isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- alter table
+-- first set to same value (stupid test)
+alter table default1 locksize row;
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+DEFAULT1                                                                                                                        |R
+ROW1                                                                                                                            |R
+TABLE1                                                                                                                          |T
+ij> -- set to opposite value 
+alter table default1 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize row;
+0 rows inserted/updated/deleted
+ij> select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+DEFAULT1                                                                                                                        |T
+ROW1                                                                                                                            |T
+TABLE1                                                                                                                          |R
+ij> -- READ UNCOMMITTED tests
+-- create tables with different lock modes
+drop   table default1;
+0 rows inserted/updated/deleted
+ij> create table default1(c1 int);
+0 rows inserted/updated/deleted
+ij> drop   table row1;
+0 rows inserted/updated/deleted
+ij> create table row1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> drop   table table1;
+0 rows inserted/updated/deleted
+ij> create table table1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> set isolation = read uncommitted;
+0 rows inserted/updated/deleted
+ij> -- all selects should be row locked except for table1
+select * from default1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all selects should be row locked except for table1
+select * from default1
+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 DEFAULT1 at read uncommitted isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from row1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from row1
+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 ROW1 at read uncommitted isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from table1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from table1
+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 TABLE1 at read uncommitted isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> -- scans for all updates should be row locked except for table1
+update default1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all updates should be row locked except for table1
+update default1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read uncommitted isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update default1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update default1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read uncommitted isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update row1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read uncommitted isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update row1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read uncommitted isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update table1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read uncommitted isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update table1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read uncommitted isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- all inserts should be row locked except for table1
+insert into default1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all inserts should be row locked except for table1
+insert into default1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into row1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into row1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into table1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into table1 values 1
+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: 
+Insert ResultSet using table locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> -- scans for all deletes should be row locked except for table1
+delete from default1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all deletes should be row locked except for table1
+delete from default1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read uncommitted 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from default1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from default1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read uncommitted isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read uncommitted 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read uncommitted isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read uncommitted isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read uncommitted isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- alter table
+-- first set to same value (stupid test)
+alter table default1 locksize row;
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+DEFAULT1                                                                                                                        |R
+ROW1                                                                                                                            |R
+TABLE1                                                                                                                          |T
+ij> -- set to opposite value 
+alter table default1 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize row;
+0 rows inserted/updated/deleted
+ij> select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+DEFAULT1                                                                                                                        |T
+ROW1                                                                                                                            |T
+TABLE1                                                                                                                          |R
+ij> -- SERIALIZABLE tests
+-- create tables with different lock modes
+drop   table default1;
+0 rows inserted/updated/deleted
+ij> create table default1(c1 int);
+0 rows inserted/updated/deleted
+ij> drop   table row1;
+0 rows inserted/updated/deleted
+ij> create table row1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> drop   table table1;
+0 rows inserted/updated/deleted
+ij> create table table1(c1 int);
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> -- all selects should be table locked since no where clause
+select * from default1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all selects should be table locked since no where clause
+select * from default1
+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 DEFAULT1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from row1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from row1
+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 ROW1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from table1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from table1
+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 TABLE1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> -- scans for all updates should be table locked
+-- (No indexes, so will always do table scan)
+update default1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all updates should be table locked
+-- (No indexes, so will always do table scan)
+update default1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update default1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update default1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update row1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update row1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update table1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update table1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- all inserts should be row locked except for table1
+insert into default1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- all inserts should be row locked except for table1
+insert into default1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into row1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into row1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into table1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into table1 values 1
+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: 
+Insert ResultSet using table locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> -- scans for all deletes should be table locked
+-- (No indexes, so will always do table scan)
+delete from default1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- scans for all deletes should be table locked
+-- (No indexes, so will always do table scan)
+delete from default1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at serializable isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from default1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from default1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at serializable isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at serializable isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at serializable isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- alter table
+-- first set to same value (stupid test)
+alter table default1 locksize row;
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize row;
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize table;
+0 rows inserted/updated/deleted
+ij> select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+DEFAULT1                                                                                                                        |R
+ROW1                                                                                                                            |R
+TABLE1                                                                                                                          |T
+ij> -- set to opposite value 
+alter table default1 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table row1 locksize table;
+0 rows inserted/updated/deleted
+ij> alter table table1 locksize row;
+0 rows inserted/updated/deleted
+ij> select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+DEFAULT1                                                                                                                        |T
+ROW1                                                                                                                            |T
+TABLE1                                                                                                                          |R
+ij> set isolation read committed;
+0 rows inserted/updated/deleted
+ij> -- verify lock granularity changed for selects
+select * from default1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify lock granularity changed for selects
+select * from default1
+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 DEFAULT1 at read committed isolation level using instantaneous share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from row1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from row1
+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 ROW1 at read committed isolation level using instantaneous share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> select * from table1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from table1
+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 TABLE1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> -- verify lock granularity changed for updates
+update default1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify lock granularity changed for updates
+update default1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update default1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update default1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update row1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update row1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update row1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using table locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> update table1 set c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> update table1 set c1 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	update table1 set c1 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- verify lock granularity changed for inserts
+insert into default1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify lock granularity changed for inserts
+insert into default1 values 1
+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: 
+Insert ResultSet using table locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into row1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into row1 values 1
+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: 
+Insert ResultSet using table locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> insert into table1 values 1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into table1 values 1
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 1
+Indexes updated = 0
+Execute Time = 0
+	Row ResultSet:
+	Number of opens = 1
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+ij> -- verify lock granularity changed for deletes
+delete from default1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify lock granularity changed for deletes
+delete from default1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from default1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from default1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for DEFAULT1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive table 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from row1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from row1 where c1 = 1
+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: 
+Delete ResultSet using table locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for ROW1 at read committed isolation level using exclusive table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1;
+1 row inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 1
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 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={}
+			Number of columns fetched=0
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> delete from table1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	delete from table1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (1):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TABLE1 at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- bug 3819; delete from table would first
+-- end up getting an IX lock on table then
+-- an X lock on table; this can lead to
+-- deadlocks with multiple threads doing
+-- delete from table. fix is to choose 
+-- row locking for deletes/updates in *all*
+-- cases; this would result in an IX lock
+-- on the table. means more locking but
+-- increased concurrency.
+insert into default1 values (1);
+1 row inserted/updated/deleted
+ij> insert into default1 values (2);
+1 row inserted/updated/deleted
+ij> select * from default1 order by c1;
+C1         
+-----------
+1          
+2          
+ij> set isolation to CURSOR STABILITY;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> delete from default1;
+2 rows inserted/updated/deleted
+ij> -- should see only one lock; earlier used to 
+-- see 2, one IX and one for X.
+select count(*)
+ from new org.apache.derby.diag.LockTable() l 
+ where tablename = 'DEFAULT1' and type = 'TABLE';
+1          
+-----------
+1          
+ij> commit;
+ij> -- cleanup
+drop procedure WAIT_FOR_POST_COMMIT;
+0 rows inserted/updated/deleted
+ij> drop table default1;
+0 rows inserted/updated/deleted
+ij> drop table row1;
+0 rows inserted/updated/deleted
+ij> drop table table1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/deadlockMode.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/deadlockMode.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,51 @@
+Test deadlockMode starting
+PASS: expected and got 0 rows
+PASS: expected and got 1 row
+PASS: expected and got 1 row
+PASS: expected and got 1 row
+PASS: expected and got 1 row
+PASS: setup complete
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Starting thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+Done Thread
+PASS: expected and got 0 rows
+PASS: teardown complete
+PASS
+Test cursor finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJava.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJava.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,428 @@
+Test declaredGlobalTempTableJava starting
+TEST1 : global temporary tables can only be in SESSION schema
+Expected message: The qualifier for a declared global temporary table name must be SESSION.
+TEST1 PASSED
+TEST2A : Declaring a global temporary table while in SYS schema will pass because temp tables always go in SESSION schema and never in default schema
+TEST2A PASSED
+TEST2B : Drop the declared global temporary table declared in TEST2A while in schema SYS
+TEST2B PASSED
+TEST3A : positive grammar tests for DECLARE command
+TEST3A PASSED
+TEST3B : negative grammar tests for DECLARE command
+  Expected exception. Attempted to declare a temp table without NOT LOGGED. Syntax error: Encountered "<EOF>" at line 1, column 42.
+  Expected exception. Attempted to declare a temp table with multiple NOT LOGGED. Multiple or conflicting keywords involving the 'NOT LOGGED' clause are present.
+  Expected exception. Attempted to declare a temp table with multiple ON COMMIT. Multiple or conflicting keywords involving the 'ON COMMIT' clause are present.
+  Expected exception. Attempted to declare a temp table with multiple ON ROLLBACK. Multiple or conflicting keywords involving the 'ON ROLLBACK' clause are present.
+  Expected exception. Attempted to declare a temp table with syntax error ON ROLLBACK PRESERVE ROWS. Syntax error: Encountered "PRESERVE" at line 1, column 67.
+  Expected exception. Attempted to declare a temp table without NOT LOGGED. Syntax error: MISSING NOT LOGGED.
+TEST3B PASSED
+TEST4A : ALTER TABLE not allowed on global temporary tables
+Expected message: The requested function does not apply to global temporary tables.
+TEST4A PASSED
+TEST4B : ALTER TABLE on physical table in SESSION schema should work
+TEST4B PASSED
+TEST5A : LOCK TABLE not allowed on global temporary tables
+Expected message: The requested function does not apply to global temporary tables.
+TEST5A PASSED
+TEST5B : LOCK TABLE on physical table in SESSION schema should work
+TEST5B PASSED
+TEST6A : RENAME TABLE not allowed on global temporary tables
+Expected message: The requested function does not apply to global temporary tables.
+TEST6A PASSED
+TEST6B : RENAME TABLE on physical table in SESSION schema should work
+TEST6B PASSED
+TEST6C : RENAME COLUMN on physical table in SESSION schema should work
+TEST6C PASSED
+TEST8 : generated always as identity not supported for declared global temporary tables
+Expected message: The requested function does not apply to global temporary tables.
+TEST8 PASSED
+TEST9 : long datatypes not supported for declared global temporary tables
+  Expected exception. Attempted to declare a temp table with blob. Long column type column or parameter 'C22' not permitted in declared global temporary tables or procedure definitions. 
+  Expected exception. Attempted to declare a temp table with clob. Long column type column or parameter 'C22' not permitted in declared global temporary tables or procedure definitions. 
+  Expected exception. Attempted to declare a temp table with long varchar. Long column type column or parameter 'C22' not permitted in declared global temporary tables or procedure definitions. 
+  Expected exception. Attempted to declare a temp table with user defined type. Syntax error: Encountered "" at line 1, column 56.
+TEST9 PASSED
+TEST10A : Primary key constraint not allowed on a declared global temporary table.
+Expected message: The requested function does not apply to global temporary tables.
+TEST10A PASSED
+TEST10B : Primary key constraint allowed on a physical table in SESSION schema.
+TEST10B PASSED
+TEST10C : Unique key constraint not allowed on a declared global temporary table.
+Expected message: The requested function does not apply to global temporary tables.
+TEST10C PASSED
+TEST10D : Foreign key constraint not allowed on a declared global temporary table.
+Expected message: The requested function does not apply to global temporary tables.
+TEST10D PASSED
+TEST11 : Attempt to declare the same global temporary table twice will fail. Plan to support WITH REPLACE in future
+Expected message: Declared global temporary table 'T2' already exists in Schema 'SESSION'.
+TEST11 PASSED
+TEST12 : Try to drop a declared global temporary table that doesn't exist.
+Expected message: 'DROP TABLE' cannot be performed on 'SESSION.T2' because it does not exist.
+TEST12 PASSED
+TEST13A : insert into declared global temporary table will pass.
+	 1
+	 -
+	{56}
+TEST13A PASSED
+TEST13B : attempt to insert null into non-null column in declared global temporary table will fail.
+Declare the table with non-null column, insert a row and commit
+In the next transaction, attempt to insert a null value in the table will fail and we will loose all the rows from the table as part of internal rollback
+Expected message: Column 'C22'  cannot accept a NULL value.
+should see no data in t2
+	 C21,C22
+	 --- ---
+TEST13B PASSED
+TEST13C : declare a temporary table with default and then insert into it.
+	 C21,C22,C23
+	 --- --- ---
+	{1,aa,null}
+	{2,aa,APP}
+TEST13C PASSED
+TEST14 : Should be able to create Session schema manually.
+TEST14 PASSED
+TEST15 : Session schema can be dropped like any other user-defined schema.
+TEST15 PASSED
+TEST16 : Create a physical SESSION schema, drop it. Next attempt to drop SESSION schema will throw an exception because now we are dealing with in-memory SESSION schema and it can not be dropped by drop schema.
+In TEST16, now attempting to drop in-memory SESSION schema
+Expected message: Schema 'SESSION' does not exist
+TEST16 PASSED
+TEST17A : Check constraint not allowed on global temporary table
+Expected message: The requested function does not apply to global temporary tables.
+TEST17A PASSED
+TEST17B : Check constraint allowed on physical SESSION schema table
+TEST17B PASSED
+TEST18 : Test declared temporary table with ON COMMIT DELETE ROWS with and without open cursors
+Tests with holdable cursor are in a different class since holdability support is only under jdk14 and higher
+Temp table t2 with not holdable cursor open on it. Data should get deleted from t2 at commit time
+	 1
+	 -
+	{2}
+Temp table t3 with no open cursors of any kind on it. Data should get deleted from t3 at commit time
+	 1
+	 -
+	{2}
+After commit, verify the 2 tables
+Temp table t2 will have no data after commit
+	 1
+	 -
+	{0}
+Temp table t3 will have no data after commit
+	 1
+	 -
+	{0}
+TEST18 PASSED
+TEST19 : Declare a temporary table with ON COMMIT PRESERVE ROWS with and without open cursors
+Tests with holdable cursor are in a different class since holdability support is only under jdk14 and higher
+Temp table t2 with not holdable cursor open on it. Data should be preserved, holdability shouldn't matter
+	 1
+	 -
+	{2}
+Temp table t3 with no open cursors of any kind on it. Data should be preserved, holdability shouldn't matter
+	 1
+	 -
+	{2}
+After commit, verify the 2 tables
+Temp table t2 will have data after commit
+	 1
+	 -
+	{2}
+Temp table t3 will have data after commit
+	 1
+	 -
+	{2}
+TEST19 PASSED
+TEST20A : CREATE INDEX not allowed on global temporary table.
+Expected message: The requested function does not apply to global temporary tables.
+TEST20A PASSED
+TEST21A : CREATE INDEX on physical table in SESSION schema should work
+TEST21A PASSED
+TEST26A : CREATE VIEW not allowed on global temporary table.
+Expected message: The requested function can not reference tables in SESSION schema.
+TEST26A PASSED
+TEST27A : CREATE VIEW not allowed on physical table in SESSION schema
+Expected message: The requested function can not reference tables in SESSION schema.
+TEST27A PASSED
+TEST29A : DELETE FROM global temporary table allowed.
+	 1
+	 -
+	{2}
+	 1
+	 -
+	{0}
+TEST29A PASSED
+TEST31A : UPDATE on global temporary table allowed.
+TEST31A PASSED
+Multiple tests to make sure we do not do statement caching for statement referencing SESSION schema tables
+TEST34A : CREATE physical table and then DECLARE GLOBAL TEMPORARY TABLE with the same name in session schema.
+	 C21
+	 ---
+	{21}
+	 C21,C22
+	 --- ---
+	{22,22}
+	{23,23}
+	 C21,C22
+	 --- ---
+	{22,22}
+	{23,23}
+	 C21
+	 ---
+	{21}
+TEST34A PASSED
+TEST34B : Physical table & TEMPORARY TABLE with the same name in session schema, try insert.
+	 C21
+	 ---
+	{21}
+	 C21
+	 ---
+	 C21
+	 ---
+	{99}
+	 C21
+	 ---
+	{21}
+TEST34B PASSED
+TEST35A : Temporary table created in one connection should not be available in another connection
+	 1
+	 -
+	{1}
+Expected message: Table 'SESSION.T2' does not exist.
+TEST35A PASSED
+TEST35B : Temp table in one connection should not conflict with temp table with same name in another connection
+	 C21,C22
+	 --- ---
+	{22,22}
+	 C21
+	 ---
+	{99}
+	 C21,C22
+	 --- ---
+	{22,22}
+TEST35B PASSED
+TEST36 : After creating SESSION schema and making it current schema, temporary tables should not require SESSION qualification
+TEST36 PASSED
+TEST37A : Prepared statement test - drop the temp table underneath
+	 C21,C22
+	 --- ---
+	{21,1}
+Expected message: Table 'SESSION.T2' does not exist.
+TEST37A PASSED
+TEST37B : Prepared statement test - drop and recreate the temp table with different definition underneath
+	 C21,C22
+	 --- ---
+	{21,1}
+Expected message: The number of values assigned is not the same as the number of specified or implied columns.
+TEST37B PASSED
+TEST38A : Rollback behavior - declare temp table, rollback, select should fail
+	 C21,C22
+	 --- ---
+	{21,1}
+TEST38A : select should fail since temp table got dropped as part of rollback
+Expected message: Table 'SESSION.T2' does not exist.
+TEST38A PASSED
+TEST38B : Rollback behavior - declare temp table, commit, drop temp table, rollback, select should pass
+	 C21,C22
+	 --- ---
+	{21,1}
+	 C21,C22
+	 --- ---
+	{21,1}
+TEST38B : select should pass since temp table drop was rolled back
+	 C21,C22
+	 --- ---
+TEST38B PASSED
+TEST38C : Rollback behavior
+ In the transaction:
+  Declare temp table t2 with 3 columns
+	 C21,C22,C23
+	 --- --- ---
+	{1,1,1}
+  Drop temp table t2 (with 3 columns)
+  Attempted to select from temp table t2 but it failed as expected with exception Table 'SESSION.T2' does not exist.
+  Declare temp table t2 again but this time with 2 columns
+	 C21,C22
+	 --- ---
+ Commit the transaction. Should have temp table t2 with 2 columns
+ In the next transaction:
+	 C21,C22
+	 --- ---
+  Drop temp table t2 (with 2 columns)
+  Declare temp table t2 again but this time with 1 column
+	 C21
+	 ---
+ Rollback this transaction. Should have temp table t2 with 2 columns
+	 C21,C22
+	 --- ---
+TEST38C PASSED
+TEST38D : Rollback behavior for tables touched with DML
+ In the transaction:
+  Declare temp table t2 & t3 & t4 & t5 with preserve rows, insert data and commit
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,3}
+	 C31,C32
+	 --- ---
+	{31,1}
+	{32,2}
+	{33,3}
+	 C41,C42
+	 --- ---
+	{41,1}
+	{42,2}
+	{43,3}
+	 C51,C52
+	 --- ---
+	{51,1}
+	{52,2}
+	{53,3}
+ In the next transaction:
+  Declare temp table t6 with preserve rows, insert data and inspect data in all the tables
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,3}
+	 C31,C32
+	 --- ---
+	{31,1}
+	{32,2}
+	{33,3}
+	 C41,C42
+	 --- ---
+	{41,1}
+	{42,2}
+	{43,3}
+	 C51,C52
+	 --- ---
+	{51,1}
+	{52,2}
+	{53,3}
+	 C61,C62
+	 --- ---
+	{61,1}
+	{62,2}
+	{63,3}
+  delete from t2 with t5 in it's where clause, look at t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  delete with where clause from t3 so that no rows get deleted, look at the rows
+	 C31,C32
+	 --- ---
+	{31,1}
+	{32,2}
+	{33,3}
+  do not touch t4
+  rollback this transaction, should not see any rows in temp table t2 after rollback
+	 C21,C22
+	 --- ---
+  temp table t3 should have no rows because attempt was made to delete from it (even though nothing actually got deleted from it in the transaction)
+	 C31,C32
+	 --- ---
+  temp table t4 should have its data intact because it was not touched in the transaction that got rolled back
+	 C41,C42
+	 --- ---
+	{41,1}
+	{42,2}
+	{43,3}
+  temp table t5 should have its data intact because it was only used in where clause and not touched in the transaction that got rolled back
+	 C51,C52
+	 --- ---
+	{51,1}
+	{52,2}
+	{53,3}
+  temp table t6 got dropped as part of rollback of this transaction since it was declared in this same transaction
+  Attempted to select from temp table t6 but it failed as expected with exception Table 'SESSION.T6' does not exist.
+TEST38D PASSED
+TEST39A : Verify that there is no entry in system catalogs for temporary tables
+ Declare a temp table T2 and check system catalogs. Shouldn't find anything. Then drop the temp table
+	 TABLEID,TABLENAME,TABLETYPE,SCHEMAID,LOCKGRANULARITY
+	 ------- --------- --------- -------- ---------------
+	 TABLENAME,SCHEMANAME
+	 --------- ----------
+ Create physical schema SESSION, create a physical table T2 in SESSION schema and check system catalogs. Should be there
+	 TABLEID,TABLENAME,TABLETYPE,SCHEMAID,LOCKGRANULARITY
+	 ------- --------- --------- -------- ---------------
+	{xxxxFILTERED-UUIDxxxx,T2,T,xxxxFILTERED-UUIDxxxx,R}
+TEST39A PASSED
+TEST39B : Verify that there is no entry in system catalogs for SESSION schmea after declare table
+ Declare a temp table T2 and check system catalogs for SESSION schmea. Shouldn't find anything. Then drop the temp table
+	 SCHEMANAME
+	 ----------
+TEST39B PASSED
+TEST40 : DatabaseMetaData.getTables() should not return temporary tables
+getTables() with no types:
+	 TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+	 --------- ----------- ---------- ---------- -------
+	{,SYS,SYSALIASES,SYSTEM TABLE,}
+	{,SYS,SYSCHECKS,SYSTEM TABLE,}
+	{,SYS,SYSCOLUMNS,SYSTEM TABLE,}
+	{,SYS,SYSCONGLOMERATES,SYSTEM TABLE,}
+	{,SYS,SYSCONSTRAINTS,SYSTEM TABLE,}
+	{,SYS,SYSDEPENDS,SYSTEM TABLE,}
+	{,SYS,SYSFILES,SYSTEM TABLE,}
+	{,SYS,SYSFOREIGNKEYS,SYSTEM TABLE,}
+	{,SYS,SYSKEYS,SYSTEM TABLE,}
+	{,SYS,SYSSCHEMAS,SYSTEM TABLE,}
+	{,SYS,SYSSTATEMENTS,SYSTEM TABLE,}
+	{,SYS,SYSSTATISTICS,SYSTEM TABLE,}
+	{,SYS,SYSTABLES,SYSTEM TABLE,}
+	{,SYS,SYSTRIGGERS,SYSTEM TABLE,}
+	{,SYS,SYSVIEWS,SYSTEM TABLE,}
+	{,SYSIBM,SYSDUMMY1,SYSTEM TABLE,}
+	{,SESSION,T3,TABLE,}
+TEST40 PASSED
+TEST41 : delete where current of on temporary tables
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,1}
+	 C21,C22
+	 --- ---
+	{22,1}
+	 C21,C22
+	 --- ---
+TEST41 PASSED
+TEST42 : update where current of on temporary tables
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,1}
+	 C21,C22
+	 --- ---
+	{21,2}
+	{22,1}
+	 C21,C22
+	 --- ---
+	{21,2}
+	{22,2}
+TEST42 PASSED
+TEST44A : Prepared statement test - DML and rollback behavior
+ In the transaction:
+  Declare temp table t2, insert data using prepared statement and commit
+	 C21,C22
+	 --- ---
+	{21,1}
+ In the next transaction:
+  insert more data using same prepared statement and rollback. Should loose all the data in t2
+	 C21,C22
+	 --- ---
+TEST44A PASSED
+TEST44B : Prepared statement test - DML and rollback behavior
+ In the transaction:
+  Declare temp table t2, insert data and commit
+	 C21,C22
+	 --- ---
+	{21,1}
+ In the next transaction:
+  prepare a statement for insert into table but do not execute it and rollback
+  Should not loose the data from t2
+	 C21,C22
+	 --- ---
+	{21,1}
+TEST44B PASSED
+PASS
+Test declaredGlobalTempTable finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJavaJDBC30.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/declareGlobalTempTableJavaJDBC30.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,510 @@
+Test declaredGlobalTempTableJava starting
+TEST1 : Test declared temporary table with ON COMMIT DELETE ROWS and holdable cursors
+Temp table t1 with held open cursors on it. Data should be preserved in t1 at commit time
+	 1
+	 -
+	{2}
+Temp tables t2 & t3 with one held open cursor on them together. Data should be preserved in t2 & t3 at commit time
+	 1
+	 -
+	{2}
+	 1
+	 -
+	{2}
+Temp table t4 with one held cursor but it is closed before commit. Data should be deleted from t4 at commit time
+	 1
+	 -
+	{2}
+After commit, verify all the 4 tables
+Temp table t1 will have the data intact after commit
+	 1
+	 -
+	{2}
+Temp table t2 will have the data intact after commit
+	 1
+	 -
+	{2}
+Temp table t3 will have the data intact after commit
+	 1
+	 -
+	{2}
+Temp table t4 will have no data after commit
+	 1
+	 -
+	{0}
+TEST1 PASSED
+TEST1a : Test declared temporary table with ON COMMIT DELETE ROWS and holdable cursors on prepared statement
+Temp table t1 with held open cursors on it. Data should be preserved in t1 at commit time
+	 1
+	 -
+	{2}
+Temp table t2 with one held cursor but it is closed before commit. Data should be deleted from t2 at commit time
+	 1
+	 -
+	{2}
+After commit, verify both the tables
+Temp table t1 will have the data intact after commit
+	 1
+	 -
+	{2}
+Temp table t2 will have no data after commit
+	 1
+	 -
+	{0}
+TEST1a PASSED
+TEST2 : Declare a temporary table with ON COMMIT PRESERVE ROWS and various combinations of holdability
+Temp table t1 with held open cursors on it. Data should be preserved, holdability shouldn't matter
+	 1
+	 -
+	{2}
+After commit, verify the table
+Temp table t1 will have data after commit
+	 1
+	 -
+	{2}
+TEST2 PASSED
+TEST3A : Savepoint and Rollback behavior
+ In the transaction:
+  Create savepoint1 and declare temp table t1
+	 C11,C12
+	 --- ---
+	{11,1}
+  Create savepoint 2, drop temp table t1, rollback savepoint 2
+Expected message: Table 'SESSION.T1' does not exist.
+  select should pass, rollback savepoint 1, select should fail
+	 C11,C12
+	 --- ---
+Expected message: Table 'SESSION.T1' does not exist.
+TEST3A PASSED
+TEST3B : Savepoint and Rollback behavior
+ In the transaction:
+  Create savepoint1 and declare temp table t1
+  Create savepoint2 and declare temp table t2
+  Release savepoint 1 and select from temp table t1 & t2
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+  Drop temp table t2(explicit drop), rollback transaction(implicit drop of t1)
+  Select from temp table t1 and t2 will fail
+Expected message: Table 'SESSION.T1' does not exist.
+Expected message: Table 'SESSION.T2' does not exist.
+TEST3B PASSED
+TEST3C : Savepoint and Rollback behavior
+ In the transaction:
+  Create savepoint1 and declare temp table t1
+  Create savepoint2 and declare temp table t2
+  Release savepoint 1 and select from temp table t1 and t2
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+  Create savepoint3 and rollback savepoint3(should not touch t1 and t2)
+  select from temp tables t1 and t2 should pass
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+  Rollback transaction and select from temp tables t1 and t2 should fail
+Expected message: Table 'SESSION.T1' does not exist.
+Expected message: Table 'SESSION.T2' does not exist.
+TEST3C PASSED
+TEST3D : Savepoint and Rollback behavior
+ In the transaction:
+  Create savepoint1 and declare temp table t1
+  Create savepoint2 and drop temp table t1
+  Rollback savepoint2 and select temp table t1
+	 C11,C12
+	 --- ---
+ Commit transaction and select temp table t1
+	 C11,C12
+	 --- ---
+TEST3D PASSED
+TEST3E : Savepoint and Rollback behavior
+ In the transaction:
+  Create savepoint1 and declare temp table t1
+  Create savepoint2 and drop temp table t1
+  Rollback savepoint 1 and select from temp table t1 should fail
+Expected message: Table 'SESSION.T1' does not exist.
+TEST3E PASSED
+TEST3F : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 and drop temp table t1
+	 C11,C12
+	 --- ---
+  rollback, select on t1 should fail
+Expected message: Table 'SESSION.T1' does not exist.
+TEST3F PASSED
+TEST3G : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 and commit
+	 C11,C12
+	 --- ---
+ In the transaction:
+  drop temp table t1 and rollback, select on t1 should pass
+	 C11,C12
+	 --- ---
+TEST3G PASSED
+TEST3H : Savepoint and commit behavior
+ In the transaction:
+  declare temp table t1 and commit
+	 C11,C12
+	 --- ---
+ In the transaction:
+  drop temp table t1 and commit, select on t1 should fail
+Expected message: Table 'SESSION.T1' does not exist.
+TEST3H PASSED
+TEST3I : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 and rollback
+	 C11,C12
+	 --- ---
+Expected message: Table 'SESSION.T1' does not exist.
+TEST3I PASSED
+TEST3J : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 with 2 columns and commit
+	 C11,C12
+	 --- ---
+	{11,11}
+  Create savepoint1 and drop temp table t1 with 2 columns
+  declare temp table t1 but this time with 3 columns
+	 C11,C12,C13
+	 --- --- ---
+	{22,22,22}
+  Create savepoint2 and drop temp table t1 with 3 columns
+  select from temp table t1 here should have 2 columns
+	 C11,C12
+	 --- ---
+TEST3J PASSED
+TEST3K : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 & t2, insert few rows and commit
+	 C11,C12
+	 --- ---
+	{11,1}
+	 C21,C22
+	 --- ---
+	{21,1}
+ In the next transaction, insert couple more rows in t1 & t2 and 
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  Create savepoint1 and update some rows in t1 and inspect the data
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,3}
+  update t2 with where clause such that no rows get modified in t2 and inspect the data
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  Rollback to savepoint1 and we should loose all the rows in t1
+	 C11,C12
+	 --- ---
+  temp table t2 should also have no rows because attempt was made to modify it (even though nothing actually got modified in t2 in the savepoint)
+	 C21,C22
+	 --- ---
+  Commit the transaction and should see no data in t1 and t2
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+TEST3K PASSED
+TEST3L : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 & t2, insert few rows and commit
+	 C11,C12
+	 --- ---
+	{11,1}
+	 C21,C22
+	 --- ---
+	{21,1}
+ In the next transaction, insert couple more rows in t1 & t2 and 
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  Create savepoint1 and update some rows in t1 and inspect the data
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,3}
+  update t2 with where clause such that no rows get modified in t2 and inspect the data
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  Rollback to savepoint1 and we should loose all the rows in t1
+	 C11,C12
+	 --- ---
+  temp table t2 should also have no rows because attempt was made to modfiy it (even though nothing actually got modified in t2 in the savepoint)
+	 C21,C22
+	 --- ---
+  Rollback the transaction and should see no data in t1 and t2
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+TEST3L PASSED
+TEST3M : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 & t2 & t3 & t4, insert few rows and commit
+	 C11,C12
+	 --- ---
+	{11,1}
+	 C21,C22
+	 --- ---
+	{21,1}
+	 C31,C32
+	 --- ---
+	{31,1}
+	 C41,C42
+	 --- ---
+	{41,1}
+ In the next transaction, insert couple more rows in t1 & t2 & t3 and 
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	 C31,C32
+	 --- ---
+	{31,1}
+	{32,2}
+  Create savepoint1 and delete some rows from t1 and inspect the data in t1
+	 C11,C12
+	 --- ---
+	{11,1}
+  Create savepoint2 and delete some rows from t2 this time and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+  Release savepoint2 and now savepoint1 should keep track of changes made to t1 and t2, inspect the data in t1 & t2
+	 C11,C12
+	 --- ---
+	{11,1}
+	 C21,C22
+	 --- ---
+	{21,1}
+  Rollback savepoint1 and should see no data in t1 and t2, inspect the data
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+  Should see data in t3 since it was not touched in the savepoint that was rolled back
+	 C31,C32
+	 --- ---
+	{31,1}
+	{32,2}
+  Rollback the transaction and should see no data in t1 and t2 and t3
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+	 C31,C32
+	 --- ---
+  Should see data in t4 since it was not touched in the transaction that was rolled back
+	 C41,C42
+	 --- ---
+	{41,1}
+TEST3M PASSED
+TEST3N : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 & t2 & t3 & t4, insert few rows and commit
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	 C31,C32
+	 --- ---
+	{31,1}
+	 C41,C42
+	 --- ---
+	{41,1}
+ In the next transaction, insert couple more rows in t3 
+	 C31,C32
+	 --- ---
+	{31,1}
+	{31,2}
+  Create savepoint1 and delete some rows from t1 and inspect the data in t1
+	 C11,C12
+	 --- ---
+	{11,1}
+  delete from t2 with where clause such that no rows are deleted from t2 and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  Create savepoint2 and delete some rows from t2 this time and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+  Rollback the transaction and should see no data in t1 and t2 and t3
+	 C11,C12
+	 --- ---
+	 C21,C22
+	 --- ---
+	 C31,C32
+	 --- ---
+  Should see data in t4 since it was not touched in the transaction that was rolled back
+	 C41,C42
+	 --- ---
+	{41,1}
+TEST3N PASSED
+TEST3O : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1 & t2, insert few rows and commit
+	 C11,C12
+	 --- ---
+	{11,1}
+	 C21,C22
+	 --- ---
+	{21,1}
+ In the next transaction, insert couple more rows in t1 
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+  Create savepoint1 and insert one row in t2 and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+  Rollback savepoint1 and should see no data in t2 but t1 should have data, inspect the data
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	 C21,C22
+	 --- ---
+  Commit the transaction and should see no data in t2 but t1 should have data
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	 C21,C22
+	 --- ---
+TEST3O PASSED
+TEST3P : Savepoint and Rollback behavior
+ In the transaction:
+  declare temp table t1, insert few rows and commit
+ In the transaction:
+  Create savepoint1 and insert some rows into t1 and inspect the data in t1
+  Release savepoint1 and now transaction should keep track of changes made to t1, inspect the data in t1
+	 C11,C12
+	 --- ---
+	{11,1}
+	{12,2}
+	{13,3}
+  Rollback the transaction and should still see no data in t1
+	 C11,C12
+	 --- ---
+TEST3P PASSED
+TEST3Q : Prepared statement test - DML and rollback behavior
+ In the transaction:
+  Declare temp table t2, insert / update / delete data using various prepared statements and commit
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+ In the next transaction:
+  Create savepoint1 and insert some rows into t2 using prepared statement and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,2}
+  Create savepoint2 and update row inserted in savepoint1 using prepared statement and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,3}
+  rollback savepoint2 and should loose all the data from t2
+	 C21,C22
+	 --- ---
+  Create savepoint3 and insert some rows into t2 using prepared statement and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,333}
+  Create savepoint4 and update row inserted in savepoint3 using prepared statement and inspect the data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,3}
+  Release savepoint4 and inspect the data in t2, then delete a row from t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+	{23,3}
+  Commit transaction and should see data data in t2
+	 C21,C22
+	 --- ---
+	{21,1}
+	{22,2}
+TEST3Q PASSED
+TEST4 : Test declared temporary table with ON COMMIT DELETE ROWS and holdable cursors and temp table as part of subquery
+Temp table t1 with no direct held cursor open on it. Data should be deleted from t1 at commit time
+	 1
+	 -
+	{2}
+	 1
+	 -
+	{0}
+Insert into real table using temporary table data on a statement with holdability set to true
+After commit, verify both the tables
+Temp table t1 will have no data after commit
+	 1
+	 -
+	{0}
+Physical table t1 will have 2 rows after commit
+	 1
+	 -
+	{2}
+TEST4 PASSED
+TEST5 : Temporary tables declared in a pooled connection should get dropped when that pooled connection is closed
+ In the first connection handle to the pooled connection, create physical session schema, create table t1 in it
+ Insert some rows in physical SESSION.t1 table. Inspect the data.
+	 C21
+	 ---
+	{11}
+	{12}
+	{13}
+ Next declare a temp table with same name as physical table in SESSION schema.
+ Insert some rows in temporary table SESSION.t1. Inspect the data
+	 C11,C12
+	 --- ---
+	{11,1}
+ Now close the connection handle to the pooled connection
+ Do another getConnection() to get a new connection handle to the pooled connection
+ In this new handle, a select * from SESSION.t1 should be looking at the physical session table
+	 C21
+	 ---
+	{11}
+	{12}
+	{13}
+TEST5 PASSED
+PASS
+Test declaredGlobalTempTable finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/delete.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/delete.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,216 @@
+ij> --
+-- this test is for basic delete functionality
+--
+-- create the table
+create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int);
+0 rows inserted/updated/deleted
+ij> -- negative tests
+-- table name required for positioned delete and for searched delete
+delete;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 4, column 6.
+ij> -- populate the table
+insert into t1 values (1);
+1 row inserted/updated/deleted
+ij> insert into t2 select * from t1;
+1 row inserted/updated/deleted
+ij> -- delete all the rows (only 1)
+select * from t1;
+C1         
+-----------
+1          
+ij> delete from t1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> -- repopulate the table
+insert into t1 values(2);
+1 row inserted/updated/deleted
+ij> insert into t1 values(3);
+1 row inserted/updated/deleted
+ij> -- delete all the rows (multiple rows)
+select * from t1;
+C1         
+-----------
+2          
+3          
+ij> delete from t1;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> -- test atomicity of multi row deletes
+create table atom_test (c1 smallint);
+0 rows inserted/updated/deleted
+ij> insert into atom_test values 1, 30000,0, 2;
+4 rows inserted/updated/deleted
+ij> -- overflow
+delete from atom_test where c1 + c1 > 0;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select * from atom_test;
+C1    
+------
+1     
+30000 
+0     
+2     
+ij> -- divide by 0
+delete from atom_test where c1 / c1 = 1;
+ERROR 22012: Attempt to divide by zero.
+ij> select * from atom_test;
+C1    
+------
+1     
+30000 
+0     
+2     
+ij> -- target table in source, should be done in deferred mode
+-- repopulate the tables
+insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2);
+1 row inserted/updated/deleted
+ij> insert into t2 select * from t1;
+2 rows inserted/updated/deleted
+ij> autocommit off;
+ij> select * from t1;
+C1         
+-----------
+1          
+2          
+ij> delete from t1 where c1 <=
+	(select t1.c1
+	 from t1, t2
+	 where t1.c1 = t2.c1
+	 and t1.c1 = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> rollback;
+ij> delete from t1 where c1 >=
+	(select
+		(select c1
+		 from t1
+		 where c1 = 1)
+	 from t2
+	 where c1 = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> rollback;
+ij> delete from t1 where c1 >=
+	(select
+		(select c1
+		 from t1 a
+		 where c1 = 1)
+	 from t2
+	 where c1 = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> rollback;
+ij> -- delete 0 rows - degenerate case for deferred delete
+delete from t1 where c1 =
+	(select 1
+	 from t2
+	 where 1 =
+		(select c1
+		 from t1
+		 where c1 = 2)
+	);
+0 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+1          
+2          
+ij> rollback;
+ij> -- delete 1 row
+delete from t1
+where c1 =
+	(select c1
+	 from t1
+	 where c1 = 2)
+and c1 = 2;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> rollback;
+ij> delete from t1 where c1 <=
+	(select c1
+	 from
+		(select c1
+		 from t1) a
+	 where c1 = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> rollback;
+ij> delete from t1 where c1 <=
+	(select c1
+	 from t2
+	 where c1 = 37
+	union
+	 select c1
+	 from t1
+	 where c1 = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> rollback;
+ij> delete from t1 where c1 <=
+	(select c1
+	 from t2
+	 where c1 = 37
+	union
+	 select c1
+	 from
+		(select c1
+		from t1) a
+	 where c1 = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+C1         
+-----------
+ij> rollback;
+ij> autocommit on;
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table atom_test;
+0 rows inserted/updated/deleted
+ij> --
+-- here we test extra state lying around in the
+-- deleteResultSet on a prepared statement that
+-- is executed multiple times.  if we don't
+-- get a nasty error then we are ok
+--
+create table x (x int, y int);
+0 rows inserted/updated/deleted
+ij> create index ix on x(x);
+0 rows inserted/updated/deleted
+ij> insert into x values (1,1),(2,2),(3,3);
+3 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare p as 'delete from x where x = ? and y = ?';
+ij> execute p using 'values (1,1)';
+1 row inserted/updated/deleted
+ij> execute p using 'values (2,2)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- clean up
+autocommit on;
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/depend.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/depend.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,226 @@
+ij> --
+-- this test shows the dependency system in action;
+--
+autocommit off;
+ij> create table t(i int);
+0 rows inserted/updated/deleted
+ij> create table s(i int);
+0 rows inserted/updated/deleted
+ij> prepare ins as 'insert into t (i) values (1956)';
+ij> prepare ins_s as 'insert into s (i) values (1956)';
+ij> prepare sel as 'select i from t';
+ij> prepare sel2 as 'select i from (select i from t) a';
+ij> prepare sel_s as 'select i from s where i = (select i from t)';
+ij> prepare upd as 'update t set i = 666 where i = 1956';
+ij> prepare del as 'delete from t where i = 666';
+ij> prepare ins_sel as 'insert into t select * from s';
+ij> execute ins;
+1 row inserted/updated/deleted
+ij> execute ins_s;
+1 row inserted/updated/deleted
+ij> execute sel;
+I          
+-----------
+1956       
+ij> execute sel2;
+I          
+-----------
+1956       
+ij> execute sel_s;
+I          
+-----------
+1956       
+ij> execute upd;
+1 row inserted/updated/deleted
+ij> execute sel;
+I          
+-----------
+666        
+ij> execute del;
+1 row inserted/updated/deleted
+ij> execute sel;
+I          
+-----------
+ij> execute ins_sel;
+1 row inserted/updated/deleted
+ij> execute sel;
+I          
+-----------
+1956       
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- these should fail, can't find table
+execute ins;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel2;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute upd;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute del;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel_s;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute ins_sel;
+ERROR 42X05: Table 'T' does not exist.
+ij> create table t(i int);
+0 rows inserted/updated/deleted
+ij> -- these should recompile and work, table now found
+execute ins;
+1 row inserted/updated/deleted
+ij> -- expect one row only
+execute sel;
+I          
+-----------
+1956       
+ij> execute sel2;
+I          
+-----------
+1956       
+ij> execute sel_s;
+I          
+-----------
+1956       
+ij> execute upd;
+1 row inserted/updated/deleted
+ij> -- test update
+execute sel;
+I          
+-----------
+666        
+ij> execute del;
+1 row inserted/updated/deleted
+ij> -- test delete
+execute sel;
+I          
+-----------
+ij> execute ins_sel;
+1 row inserted/updated/deleted
+ij> execute sel;
+I          
+-----------
+1956       
+ij> rollback;
+ij> -- these should fail, the table will disappear at the rollback
+execute ins;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel2;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel_s;
+ERROR 42X05: Table 'S' does not exist.
+ij> execute upd;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute del;
+ERROR 42X05: Table 'T' does not exist.
+ij> -- recreate t again
+create table t(i int);
+0 rows inserted/updated/deleted
+ij> -- these should recompile and work, table now found
+execute ins;
+1 row inserted/updated/deleted
+ij> -- open a cursor on t
+get cursor c1 as 'select * from t';
+ij> -- dropping t should fail, due to open cursor
+drop table t;
+ERROR X0X95: Operation 'DROP TABLE' cannot be performed on object 'T' because there is an open ResultSet dependent on that object.
+ij> -- insert should still succeed, since table not dropped
+execute ins;
+1 row inserted/updated/deleted
+ij> -- close cursor
+close c1;
+ij> -- drop table should succeed
+drop table t;
+0 rows inserted/updated/deleted
+ij> -- verify that invalidate worked this time
+execute ins;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute sel2;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute upd;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute del;
+ERROR 42X05: Table 'T' does not exist.
+ij> execute ins_sel;
+ERROR 42X05: Table 'S' does not exist.
+ij> -- cleanup, roll everything back to the beginning
+rollback;
+ij> -- verify that cascading invalidations work
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1, 2;
+2 rows inserted/updated/deleted
+ij> get cursor c1 as 'select c1 from t1 for update of c1';
+ij> -- positioned update dependent on cursor c1
+prepare u1 as 'update t1 set c1 = c1 + 1 where current of c1';
+ij> next c1;
+C1         
+-----------
+1          
+ij> close c1;
+ij> execute u1;
+ERROR 42X30: Cursor 'C1' not found. Verify that autocommit is OFF.
+ij> -- cleanup, roll everything back to the beginning
+rollback;
+ij> -- verify that create index invalidates based on table and
+-- drop index invalidates based on the index
+create table t1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1,1), (2, 1), (3,3);
+3 rows inserted/updated/deleted
+ij> create index i1 on t1(c1);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select c1 from t1 where c2 = 1 for update of c1';
+ij> next c1;
+C1         
+-----------
+1          
+ij> prepare u1 as 'update  t1 set c1 = c1 + 1 ';
+ij> prepare i1 as 'insert into t1 values (4, 4)';
+ij> prepare d1 as 'delete from t1 where c2 = 3';
+ij> drop index i1;
+0 rows inserted/updated/deleted
+ij> -- u1 should be recompiled succesfully
+execute u1;
+3 rows inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         
+-----------------------
+2          |1          
+3          |1          
+4          |3          
+ij> -- recreate index i1, this time on c2
+create index i1 on t1(c2);
+0 rows inserted/updated/deleted
+ij> next c1;
+C1         
+-----------
+3          
+ij> close c1;
+ij> -- i1 and d1 should have been invalidated and recompiled
+execute i1;
+1 row inserted/updated/deleted
+ij> -- check the state of the index
+select * from t1 where c2 > 0;
+C1         |C2         
+-----------------------
+2          |1          
+3          |1          
+4          |3          
+4          |4          
+ij> execute d1;
+1 row inserted/updated/deleted
+ij> -- check the state of the index
+select * from t1 where c2 > 0;
+C1         |C2         
+-----------------------
+2          |1          
+3          |1          
+4          |4          
+ij> -- cleanup, roll everything back to the beginning
+rollback;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/derived.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/derived.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,472 @@
+ij> --
+-- this tests derived column lists and derived tables
+--
+create table s (a int, b int, c int, d int, e int, f int);
+0 rows inserted/updated/deleted
+ij> create table t (aa int, bb int, cc int, dd int, ee int, ff int);
+0 rows inserted/updated/deleted
+ij> insert into s values (0,1,2,3,4,5);
+1 row inserted/updated/deleted
+ij> insert into s values (10,11,12,13,14,15);
+1 row inserted/updated/deleted
+ij> -- tests without a derived table
+-- negative tests
+-- # of columns does not match
+select aa from s ss (aa);
+ERROR 42X32: The number of columns in the derived column list must match the number of columns in table 'S'.
+ij> select aa from s ss (aa, bb, cc, dd, ee, ff, gg);
+ERROR 42X32: The number of columns in the derived column list must match the number of columns in table 'S'.
+ij> -- duplicate names in derived column list
+select aa from s ss (aa, ee, bb, cc, dd, aa);
+ERROR 42X33: The derived column list contains a duplicate column name 'AA'.
+ij> -- test case insensitivity
+select aa from s ss (aa, bb, cc, dd, ee, AA);
+ERROR 42X33: The derived column list contains a duplicate column name 'AA'.
+ij> -- test uniqueness of names
+select aa from s ss (aa, bb, cc, dd, ee, ff), t;
+ERROR 42X03: Column name 'AA' is in more than one table in the FROM list.
+ij> -- test uniqueness of names
+insert into t select aa 
+from s aa (aa, bb, cc, dd, ee, ff), s bb (aa, bb, cc, dd, ee, ff);
+ERROR 42X03: Column name 'AA' is in more than one table in the FROM list.
+ij> -- verify using "exposed" names
+select a from s ss (aa, bb, cc, dd, ee, ff);
+ERROR 42X04: Column 'A' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'A' is not a column in the target table.
+ij> -- positive tests
+-- rename the columns
+select * from s ss (f, e, d, c, b, a) where f = 0;
+F          |E          |D          |C          |B          |A          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+ij> -- delimited identifiers in list
+select * from s ss ("a a", "b b", "c c", "d d", "e e", "f f") where "a a" = 0;
+a a        |b b        |c c        |d d        |e e        |f f        
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+ij> -- uniqueness of "exposed" names
+select a, aa from s a, s b (aa, bb, cc, dd, ee, ff)	where f = ff and aa = 10;
+A          |AA         
+-----------------------
+10         |10         
+ij> select a.a, b.aa from s a, s b (aa, bb, cc, dd, ee, ff) where f = ff and b.aa = 10;
+A          |AA         
+-----------------------
+10         |10         
+ij> -- insert tests
+insert into t select * from s ss (aa, bb, cc, dd, ee, ff);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t (aa,bb) select ff, aa from s ss (aa, bb, cc, dd, ee, ff);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+5          |0          |NULL       |NULL       |NULL       |NULL       
+15         |10         |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- derived tables
+-- negative tests
+-- no correlation name
+select * from (select * from s);
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 5, column 31.
+ij> -- # of columns does not match
+select aa from (select * from s) ss (aa);
+ERROR 42X32: The number of columns in the derived column list must match the number of columns in table 'SS'.
+ij> select aa from (select * from s) ss (aa, bb, cc, dd, ee, ff, gg);
+ERROR 42X32: The number of columns in the derived column list must match the number of columns in table 'SS'.
+ij> -- duplicate names in derived column list
+select aa from (select * from s) ss (aa, ee, bb, cc, dd, aa);
+ERROR 42X33: The derived column list contains a duplicate column name 'AA'.
+ij> -- test case insensitivity
+select aa from (select * from s) ss (aa, bb, cc, dd, ee, AA);
+ERROR 42X33: The derived column list contains a duplicate column name 'AA'.
+ij> -- test uniqueness of names
+select aa from (select * from s) ss (aa, bb, cc, dd, ee, ff), t;
+ERROR 42X03: Column name 'AA' is in more than one table in the FROM list.
+ij> -- test uniqueness of names
+insert into t select aa 
+from (select * from s) aa (aa, bb, cc, dd, ee, ff), 
+	 (select * from s) bb (aa, bb, cc, dd, ee, ff);
+ERROR 42X03: Column name 'AA' is in more than one table in the FROM list.
+ij> -- verify using "exposed" names
+select a from (select * from s) ss (aa, bb, cc, dd, ee, ff);
+ERROR 42X04: Column 'A' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'A' is not a column in the target table.
+ij> -- ambiguous column reference
+select a from (select * from s a, s b) ss;
+ERROR 42Y34: Column name 'A' matches more than one result column in table 'SS'.
+ij> -- positive tests
+-- simple derived table
+select a from (select a from s) a;
+A          
+-----------
+0          
+10         
+ij> -- select * query's
+select * from (select * from s) a;
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> select * from (select a, b, c, d, e, f from s) a;
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> select * from (select a, b, c from s) a;
+A          |B          |C          
+-----------------------------------
+0          |1          |2          
+10         |11         |12         
+ij> select a, b, c, d, e, f from (select * from s) a;
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> -- simple derived table
+insert into t (aa) select a from (select a from s) a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |NULL       |NULL       |NULL       |NULL       |NULL       
+10         |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- select * query's
+insert into t select * from (select * from s) a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t select * from (select a, b, c, d, e, f from s) a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t (aa, bb, cc) select * from (select a, b, c from s) a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |NULL       |NULL       |NULL       
+10         |11         |12         |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t select a, b, c, d, e, f from (select * from s) a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- simple derived table with derived column list
+select a from (select a from s) a (a);
+A          
+-----------
+0          
+10         
+ij> -- select * query's	with derived column lists
+select * from (select * from s) a (f, e, d, c, b, a);
+F          |E          |D          |C          |B          |A          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> select * from (select a, b, c, d, e, f from s) a (f, e, d, c, b, a);
+F          |E          |D          |C          |B          |A          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> select * from (select a, b, c from s) a (c, f, e);
+C          |F          |E          
+-----------------------------------
+0          |1          |2          
+10         |11         |12         
+ij> select a, b, c, d, e, f from (select * from s) a (a, b, c, d, e, f);
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> -- simple derived table with derived column list
+insert into t (aa) select a from (select a from s) a (a);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |NULL       |NULL       |NULL       |NULL       |NULL       
+10         |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- select * query's with derived column lists
+insert into t select * from (select * from s) a (c, b, a, e, f, d);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t select * from (select a, b, c, d, e, f from s) a (f, a, c, b, e, d);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t (aa, bb, cc) select * from (select a, b, c from s) a (f, e, a);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |NULL       |NULL       |NULL       
+10         |11         |12         |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t select a, c, "a", "b", b, "c" from (select * from s) a (a, c, "a", "b", b, "c");
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- project and reorder derived column list
+select a, f from (select * from s) a (b, c, d, e, f, a);
+A          |F          
+-----------------------
+5          |4          
+15         |14         
+ij> insert into t (aa, bb) select a, f from (select * from s) a (b, c, d, e, f, a);
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+5          |4          |NULL       |NULL       |NULL       |NULL       
+15         |14         |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- outer where clause references columns from derived table 
+select * from (select * from s) a (a, b, c, d, e, f) where a = 0;
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+ij> select * from (select * from s) a (f, e, d, c, b, a) where f = 0;
+F          |E          |D          |C          |B          |A          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+ij> insert into t select * from (select * from s) a (a, b, c, d, e, f) where a = 0;
+1 row inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+ij> delete from t;
+1 row inserted/updated/deleted
+ij> insert into t select * from (select * from s) a (f, e, d, c, b, a) where f = 0;
+1 row inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+ij> delete from t;
+1 row inserted/updated/deleted
+ij> -- join between 2 derived tables
+select * from (select a from s) a, (select a from s) b;
+A          |A          
+-----------------------
+0          |0          
+0          |10         
+10         |0          
+10         |10         
+ij> select * from (select a from s) a, (select a from s) b where a.a = b.a;
+A          |A          
+-----------------------
+0          |0          
+10         |10         
+ij> insert into t (aa, bb) select * from (select a from s) a, (select a from s) b where a.a = b.a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |0          |NULL       |NULL       |NULL       |NULL       
+10         |10         |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- join within a derived table
+select * from (select a.a, b.a from s a, s b) a (b, a) where b = a;
+B          |A          
+-----------------------
+0          |0          
+10         |10         
+ij> select * from (select a.a, b.a from s a, s b) a (b, a),
+			  (select a.a, b.a from s a, s b) b (b, a) where a.b = b.b;
+B          |A          |B          |A          
+-----------------------------------------------
+0          |0          |0          |0          
+0          |10         |0          |0          
+0          |0          |0          |10         
+0          |10         |0          |10         
+10         |0          |10         |0          
+10         |10         |10         |0          
+10         |0          |10         |10         
+10         |10         |10         |10         
+ij> select * from (select (select 1 from s where 1 = 0), b.a from s a, s b) a (b, a),
+			  (select (select 1 from s where 1 = 0), b.a from s a, s b) b (b, a) where a.b = b.b;
+B          |A          |B          |A          
+-----------------------------------------------
+ij> insert into t (aa, bb) select * from (select a.a, b.a from s a, s b) a (b, a) where b = a;
+2 rows inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |0          |NULL       |NULL       |NULL       |NULL       
+10         |10         |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+2 rows inserted/updated/deleted
+ij> -- join within a derived table, 2 predicates can be pushed all the way down
+select * from (select a.a, b.a from s a, s b) a (b, a) where b = a and a = 0 and b = 0;
+B          |A          
+-----------------------
+0          |0          
+ij> insert into t (aa, bb) select * from (select a.a, b.a from s a, s b) a (b, a) where b = a and a = 0 and b = 0;
+1 row inserted/updated/deleted
+ij> select * from t;
+AA         |BB         |CC         |DD         |EE         |FF         
+-----------------------------------------------------------------------
+0          |0          |NULL       |NULL       |NULL       |NULL       
+ij> delete from t;
+1 row inserted/updated/deleted
+ij> -- nested derived tables
+select * from (select * from (select * from s) a ) a;
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> select * from 
+	(select * from 
+		(select * from 
+			(select * from 
+				(select * from 
+					(select * from
+						(select * from
+							(select * from
+								(select * from
+									(select * from
+										(select * from
+											(select * from
+												(select * from
+													(select * from
+														(select * from
+															(select * from s) a
+														) a
+													) a
+												) a
+											) a
+										) a
+									) a
+								) a
+							) a
+						) a
+					) a
+				) a
+			) a
+		) a
+	) a;
+A          |B          |C          |D          |E          |F          
+-----------------------------------------------------------------------
+0          |1          |2          |3          |4          |5          
+10         |11         |12         |13         |14         |15         
+ij> -- test predicate push through
+select * from
+(select a.a as a1, b.a as a2 from s a, s b) a 
+where a.a1 = 0 and a.a2 = 10;
+A1         |A2         
+-----------------------
+0          |10         
+ij> -- push column = column through
+select * from (select a, a from s) a (x, y) where x = y;
+X          |Y          
+-----------------------
+0          |0          
+10         |10         
+ij> select * from (select a, a from s) a (x, y) where x + y = x * y;
+X          |Y          
+-----------------------
+0          |0          
+ij> -- return contants and expressions from derived table
+select * from (select 1 from s) a;
+1          
+-----------
+1          
+1          
+ij> select * from (select 1 from s) a (x) where x = 1;
+X          
+-----------
+1          
+1          
+ij> select * from (select 1 from s a, s b where a.a = b.a) a (x);
+X          
+-----------
+1          
+1          
+ij> select * from (select 1 from s a, s b where a.a = b.a) a (x) where x = 1;
+X          
+-----------
+1          
+1          
+ij> select * from (select a + 1 from s) a;
+1          
+-----------
+1          
+11         
+ij> select * from (select a + 1 from s) a (x) where x = 1;
+X          
+-----------
+1          
+ij> select * from (select a.a + 1 from s a, s b where a.a = b.a) a (x) where x = 1;
+X          
+-----------
+1          
+ij> -- Bug 2767, don't flatten derived table with join
+create table tab1(tab1_c1 int, tab1_c2 int);
+0 rows inserted/updated/deleted
+ij> create table tab2(tab2_c1 int, tab2_c2 int);
+0 rows inserted/updated/deleted
+ij> insert into tab1 values (1, 1), (2, 2);
+2 rows inserted/updated/deleted
+ij> insert into tab2 values (1, 1), (2, 2);
+2 rows inserted/updated/deleted
+ij> select * from (select * from tab1, tab2) c where tab1_c1 in (1, 3);
+TAB1_C1    |TAB1_C2    |TAB2_C1    |TAB2_C2    
+-----------------------------------------------
+1          |1          |1          |1          
+1          |1          |2          |2          
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> drop table tab2;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/desc_index.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/desc_index.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1004 @@
+ij> -- this also tests multiple indexes share one conglomerate if they essentially
+-- are the same
+autocommit off;
+ij> create table tab1 (c1 int, c2 smallint, c3 double precision, c4 varchar(30),
+		   c5 varchar(1024));
+0 rows inserted/updated/deleted
+ij> insert into tab1 values (8, 12, 5.6, 'dfg', 'ghji');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (76, 2, -9.86, 'yudf', '45gd');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (-78, 45, -5.6, 'jakdsfh', 'df89g');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (56, -3, 6.7, 'dfgs', 'fds');
+1 row inserted/updated/deleted
+ij> create index i1 on tab1 (c1, c3, c4);
+0 rows inserted/updated/deleted
+ij> create index i2 on tab1 (c1 desc, c3 desc, c4 desc);
+0 rows inserted/updated/deleted
+ij> create index i3 on tab1 (c1 desc, c3 asc, c4 desc);
+0 rows inserted/updated/deleted
+ij> create index i4 on tab1 (c2 desc, c3, c1);
+0 rows inserted/updated/deleted
+ij> create index i5 on tab1 (c1, c2 desc);
+0 rows inserted/updated/deleted
+ij> insert into tab1 values (34, 67, 5.3, 'rtgd', 'hds');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (100, 11, 9.0, '34sfg', 'ayupo');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (-100, 93, 9.1, 'egfh', 's6j');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (55, 44, -9.85, 'yudd', 'df89f');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (34, 68, 2.7, 'srg', 'iur');
+1 row inserted/updated/deleted
+ij> insert into tab1 values (34, 66, 1.2, 'yty', 'wer');
+1 row inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2500;
+ij> -- should use index i4
+select c1, c3 from tab1 where c2 > 40 and c3 <= 5.3;
+C1         |C3                    
+----------------------------------
+34         |2.7                   
+34         |5.3                   
+34         |1.2                   
+-78        |-5.6                  
+55         |-9.85                 
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use index i4
+select c1, c3 from tab1 where c2 > 40 and c3 <= 5.3
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 5
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 5
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TAB1 using index I4 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 5
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1, 2}
+			Number of columns fetched=3
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=5
+			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:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- should use index i5
+select c2, c1 from tab1 where c2 <= 44 and c1 > 55;
+C2    |C1         
+------------------
+-3    |56         
+2     |76         
+11    |100        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use index i5
+select c2, c1 from tab1 where c2 <= 44 and c1 > 55
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 3
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Scan ResultSet for TAB1 using index I5 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 3
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0, 1}
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=3
+		Number of rows visited=3
+		Scan type=btree
+		Tree height=1
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- should use i1
+select c1, c3, c4 from tab1 order by c1, c3;
+C1         |C3                    |C4                            
+-----------------------------------------------------------------
+-100       |9.1                   |egfh                          
+-78        |-5.6                  |jakdsfh                       
+8          |5.6                   |dfg                           
+34         |1.2                   |yty                           
+34         |2.7                   |srg                           
+34         |5.3                   |rtgd                          
+55         |-9.85                 |yudd                          
+56         |6.7                   |dfgs                          
+76         |-9.86                 |yudf                          
+100        |9.0                   |34sfg                         
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i1
+select c1, c3, c4 from tab1 order by c1, c3
+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 Scan ResultSet for TAB1 using index I1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 10
+Rows filtered = 0
+Fetch Size = 16
+	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={0, 1, 2}
+	Number of columns fetched=3
+	Number of deleted rows visited=0
+	Number of pages visited=1
+	Number of rows qualified=10
+	Number of rows visited=10
+	Scan type=btree
+	Tree height=1
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- should use i2
+select c1, c3, c4 from tab1 order by c1 desc, c3 desc, c4 desc;
+C1         |C3                    |C4                            
+-----------------------------------------------------------------
+100        |9.0                   |34sfg                         
+76         |-9.86                 |yudf                          
+56         |6.7                   |dfgs                          
+55         |-9.85                 |yudd                          
+34         |5.3                   |rtgd                          
+34         |2.7                   |srg                           
+34         |1.2                   |yty                           
+8          |5.6                   |dfg                           
+-78        |-5.6                  |jakdsfh                       
+-100       |9.1                   |egfh                          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i2
+select c1, c3, c4 from tab1 order by c1 desc, c3 desc, c4 desc
+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 Scan ResultSet for TAB1 using index I2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 10
+Rows filtered = 0
+Fetch Size = 16
+	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={0, 1, 2}
+	Number of columns fetched=3
+	Number of deleted rows visited=0
+	Number of pages visited=1
+	Number of rows qualified=10
+	Number of rows visited=10
+	Scan type=btree
+	Tree height=1
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- should use i3
+select c1, c3, c4 from tab1 order by c1 desc, c3 asc, c4 desc;
+C1         |C3                    |C4                            
+-----------------------------------------------------------------
+100        |9.0                   |34sfg                         
+76         |-9.86                 |yudf                          
+56         |6.7                   |dfgs                          
+55         |-9.85                 |yudd                          
+34         |1.2                   |yty                           
+34         |2.7                   |srg                           
+34         |5.3                   |rtgd                          
+8          |5.6                   |dfg                           
+-78        |-5.6                  |jakdsfh                       
+-100       |9.1                   |egfh                          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i3
+select c1, c3, c4 from tab1 order by c1 desc, c3 asc, c4 desc
+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 Scan ResultSet for TAB1 using index I3 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 10
+Rows filtered = 0
+Fetch Size = 16
+	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={0, 1, 2}
+	Number of columns fetched=3
+	Number of deleted rows visited=0
+	Number of pages visited=1
+	Number of rows qualified=10
+	Number of rows visited=10
+	Scan type=btree
+	Tree height=1
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- should use i4
+select c1, c2, c3 from tab1 order by c2 desc, c3 asc;
+C1         |C2    |C3                    
+-----------------------------------------
+-100       |93    |9.1                   
+34         |68    |2.7                   
+34         |67    |5.3                   
+34         |66    |1.2                   
+-78        |45    |-5.6                  
+55         |44    |-9.85                 
+8          |12    |5.6                   
+100        |11    |9.0                   
+76         |2     |-9.86                 
+56         |-3    |6.7                   
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i4
+select c1, c2, c3 from tab1 order by c2 desc, c3 asc
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 10
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Scan ResultSet for TAB1 using index I4 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 10
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0, 1, 2}
+		Number of columns fetched=3
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=10
+		Number of rows visited=10
+		Scan type=btree
+		Tree height=1
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> -- should use i5
+select c1, c2 from tab1 order by c1, c2 desc;
+C1         |C2    
+------------------
+-100       |93    
+-78        |45    
+8          |12    
+34         |68    
+34         |67    
+34         |66    
+55         |44    
+56         |-3    
+76         |2     
+100        |11    
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i5
+select c1, c2 from tab1 order by c1, c2 desc
+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 Scan ResultSet for TAB1 using index I5 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 10
+Rows filtered = 0
+Fetch Size = 16
+	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={0, 1}
+	Number of columns fetched=2
+	Number of deleted rows visited=0
+	Number of pages visited=1
+	Number of rows qualified=10
+	Number of rows visited=10
+	Scan type=btree
+	Tree height=1
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- should use i4
+select max(c2) from tab1;
+1     
+------
+93    
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i4
+select max(c2) from tab1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for TAB1 using index I4 at read committed isolation level using share 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={0}
+				Number of columns fetched=1
+				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: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- should use i4
+select min(c2) from tab1;
+1     
+------
+-3    
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i4
+select min(c2) from tab1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Last Key Index Scan ResultSet for TAB1 using index I4at read committed isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				next time in milliseconds/row = 0
+ij> -- should use i5
+select min(c2) from tab1 where c1 = 34;
+1     
+------
+66    
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i5
+select min(c2) from tab1 where c1 = 34
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 3
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for TAB1 using index I5 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 3
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=3
+				Number of rows visited=4
+				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
+				optimizer estimated r&
+ij> -- should use i5
+select max(c2) from tab1 where c1 = 34;
+1     
+------
+68    
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use i5
+select max(c2) from tab1 where c1 = 34
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = true
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for TAB1 using index I5 at read committed isolation level using share 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={0, 1}
+				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> -- test if bulk insert rebuilds desc index right
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB1', 0);
+0 rows inserted/updated/deleted
+ij> select * from tab1 order by c1 desc;
+C1         |C2    |C3                    |C4                            |C5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+100        |11    |9.0                   |34sfg                         |ayupo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+76         |2     |-9.86                 |yudf                          |45gd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+56         |-3    |6.7                   |dfgs                          |fds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+55         |44    |-9.85                 |yudd                          |df89f                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+34         |66    |1.2                   |yty                           |wer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+34         |68    |2.7                   |srg                           |iur                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+34         |67    |5.3                   |rtgd                          |hds                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+8          |12    |5.6                   |dfg                           |ghji                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+-78        |45    |-5.6                  |jakdsfh                       |df89g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+-100       |93    |9.1                   |egfh                          |s6j                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+ij> -- this tests multiple indexes share one conglomerate if they essentially
+-- are the same
+create table tab2 (c1 int not null primary key, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> -- not unique index, shouldn't share with primary key's index
+create index i21 on tab2(c1);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> -- desc index, shouldn't share with primary key's index
+create index i22 on tab2(c1 desc);
+0 rows inserted/updated/deleted
+ij> -- this should share with primary key's index, and give a warning
+create unique index i23 on tab2(c1);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> create index i24 on tab2(c1, c3 desc);
+0 rows inserted/updated/deleted
+ij> -- this should share with i24's conglomerate
+create index i25 on tab2(c1, c3 desc);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: I24.
+ij> -- no share
+create index i26 on tab2(c1, c3);
+0 rows inserted/updated/deleted
+ij> insert into tab2 values (6, 2, 8), (2, 8, 5), (28, 5, 9), (3, 12, 543);
+4 rows inserted/updated/deleted
+ij> create index i27 on tab2 (c1, c2 desc, c3);
+0 rows inserted/updated/deleted
+ij> -- no share
+create index i28 on tab2 (c1, c2 desc, c3 desc);
+0 rows inserted/updated/deleted
+ij> -- share with i27
+create index i29 on tab2 (c1, c2 desc, c3);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: I27.
+ij> create index i20 on tab2 (c1, c2 desc, c3);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: I27.
+ij> insert into tab2 values (56, 2, 7), (31, 5, 7), (-12, 5, 2);
+3 rows inserted/updated/deleted
+ij> select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+1          
+-----------
+7          
+ij> select * from tab2;
+C1         |C2         |C3         
+-----------------------------------
+-12        |5          |2          
+2          |8          |5          
+3          |12         |543        
+6          |2          |8          
+28         |5          |9          
+31         |5          |7          
+56         |2          |7          
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+1          
+-----------
+1          
+ij> -- see if rebuild indexes correctly
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB2', 0);
+0 rows inserted/updated/deleted
+ij> select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+1          
+-----------
+7          
+ij> select * from tab2;
+C1         |C2         |C3         
+-----------------------------------
+-12        |5          |2          
+2          |8          |5          
+3          |12         |543        
+6          |2          |8          
+28         |5          |9          
+31         |5          |7          
+56         |2          |7          
+ij> update tab2 set c2 = 11 where c3 = 7;
+2 rows inserted/updated/deleted
+ij> select * from tab2;
+C1         |C2         |C3         
+-----------------------------------
+-12        |5          |2          
+2          |8          |5          
+3          |12         |543        
+6          |2          |8          
+28         |5          |9          
+31         |11         |7          
+56         |11         |7          
+ij> delete from tab2 where c2 > 10 and c2 < 12;
+2 rows inserted/updated/deleted
+ij> select * from tab2;
+C1         |C2         |C3         
+-----------------------------------
+-12        |5          |2          
+2          |8          |5          
+3          |12         |543        
+6          |2          |8          
+28         |5          |9          
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+1          
+-----------
+1          
+ij> -- drop indexes
+drop index i22;
+0 rows inserted/updated/deleted
+ij> drop index i24;
+0 rows inserted/updated/deleted
+ij> drop index i26;
+0 rows inserted/updated/deleted
+ij> drop index i28;
+0 rows inserted/updated/deleted
+ij> drop index i20;
+ERROR 42X65: Index 'I20' does not exist.
+ij> select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+1          
+-----------
+3          
+ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB2', 0);
+0 rows inserted/updated/deleted
+ij> select * from tab2;
+C1         |C2         |C3         
+-----------------------------------
+-12        |5          |2          
+2          |8          |5          
+3          |12         |543        
+6          |2          |8          
+28         |5          |9          
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+1          
+-----------
+1          
+ij> drop index i21;
+ERROR 42X65: Index 'I21' does not exist.
+ij> drop index i23;
+ERROR 42X65: Index 'I23' does not exist.
+ij> drop index i25;
+ERROR 42X65: Index 'I25' does not exist.
+ij> drop index i27;
+0 rows inserted/updated/deleted
+ij> drop index i29;
+ERROR 42X65: Index 'I29' does not exist.
+ij> select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+1          
+-----------
+1          
+ij> -- beetle 4974
+create table b4974 (a BIGINT, b BIGINT, c INT, d CHAR(16), e BIGINT);
+0 rows inserted/updated/deleted
+ij> create index i4974 on b4974(a, d, c, e);
+0 rows inserted/updated/deleted
+ij> SELECT b from b4974 t1
+where (T1.a = 10127 or T1.a = 0)
+	and (T1.d = 'ProductBean' or T1.d = 'CatalogEntryBean')
+	and (T1.e =0 or T1.e = 0);
+B                   
+--------------------
+ij> rollback;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinct.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinct.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2482 @@
+ij> --
+-- tests for DISTINCT
+--
+-- these tests assume: no indexes, no order by, no grouping
+--
+-- test plan is represented by '.' items in comments. 
+-- the flavors of select are shown in distinct.subsql, which is
+-- run over a variety of data configurations.
+-- this file expects to be run from a directory under $WS/systest.
+-- speed up a fraction with autocommit off...
+autocommit off;
+ij> create table t (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+0 rows inserted/updated/deleted
+ij> -- data flavor:
+-- . no data at all (filtered out or just plain empty)
+run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+ij> select distinct s from t;
+S     
+------
+ij> select distinct r from t;
+R            
+-------------
+ij> select distinct f from t;
+F                     
+----------------------
+ij> select distinct d from t;
+D         
+----------
+ij> select distinct t from t;
+T       
+--------
+ij> select distinct ts from t;
+TS                        
+--------------------------
+ij> select distinct c from t;
+C         
+----------
+ij> select distinct v from t;
+V                   
+--------------------
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . 1 row
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . all rows the same
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |2     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |2     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . variety of rows, some same and some different
+insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+2          
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+1     
+ij> select distinct r from t;
+R            
+-------------
+4.0          
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+3.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |2     
+2          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |2     
+2          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+2          
+1          
+2          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+2          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . variety of rows, all different
+delete from t;
+3 rows inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+2          
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+1     
+ij> select distinct r from t;
+R            
+-------------
+4.0          
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+3.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+2          
+1          
+2          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+2          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|2          |1     |3.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . variety of rows, some same in some columns but not others
+delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, 3, 4, '1992-01-02', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'goodbye', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+1     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-02
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+goodbye   
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . just nulls
+delete from t;
+2 rows inserted/updated/deleted
+ij> -- all the defaults are null, so just get a row in easily
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+NULL       
+ij> select distinct s from t;
+S     
+------
+NULL  
+ij> select distinct r from t;
+R            
+-------------
+NULL         
+ij> select distinct f from t;
+F                     
+----------------------
+NULL                  
+ij> select distinct d from t;
+D         
+----------
+NULL      
+ij> select distinct t from t;
+T       
+--------
+NULL    
+ij> select distinct ts from t;
+TS                        
+--------------------------
+NULL                      
+ij> select distinct c from t;
+C         
+----------
+NULL      
+ij> select distinct v from t;
+V                   
+--------------------
+NULL                
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+NULL       
+NULL       
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . 1 null in the mix
+delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, 3, 4, '1992-01-02', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'goodbye', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+NULL       
+ij> select distinct s from t;
+S     
+------
+2     
+1     
+NULL  
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+NULL         
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+NULL                  
+ij> select distinct d from t;
+D         
+----------
+1992-01-02
+1992-01-01
+NULL      
+ij> select distinct t from t;
+T       
+--------
+NULL    
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+ij> select distinct c from t;
+C         
+----------
+goodbye   
+hello     
+NULL      
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+NULL                
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+NULL       
+1          
+NULL       
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . several nulls in the mix
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+NULL       
+ij> select distinct s from t;
+S     
+------
+2     
+1     
+NULL  
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+NULL         
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+NULL                  
+ij> select distinct d from t;
+D         
+----------
+1992-01-02
+1992-01-01
+NULL      
+ij> select distinct t from t;
+T       
+--------
+NULL    
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+ij> select distinct c from t;
+C         
+----------
+goodbye   
+hello     
+NULL      
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+NULL                
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+NULL       
+1          
+NULL       
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . nulls in some columns, not others
+delete from t where i is null;
+3 rows inserted/updated/deleted
+ij> insert into t values (null, 1, null, 4, null, '19:01:01',
+null, 'goodbye', null);
+1 row inserted/updated/deleted
+ij> insert into t values (1, null, 3, null, '1992-01-02', null,
+'xxxxxxFILTERED-TIMESTAMPxxxxx', null, 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+NULL       
+ij> select distinct s from t;
+S     
+------
+2     
+1     
+NULL  
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+NULL         
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+NULL                  
+ij> select distinct d from t;
+D         
+----------
+1992-01-02
+1992-01-01
+NULL      
+ij> select distinct t from t;
+T       
+--------
+NULL    
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+ij> select distinct c from t;
+C         
+----------
+goodbye   
+hello     
+NULL      
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+NULL                
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                |NULL                      
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                |NULL                      
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+NULL       
+1          
+NULL       
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- sure would like to dump all those selects now...they are invalid, at least,
+-- maybe that frees up some space (FLW)
+-- here are other things to test:
+-- . select distinct over a values table
+-- three rows
+select distinct * from (values (1,2),(1,3),(1,2),(2,3)) as t(a,b);
+A          |B          
+-----------------------
+1          |2          
+1          |3          
+2          |3          
+ij> -- two rows
+select distinct a from (values (1,2),(1,3),(1,2),(2,3)) as t(a,b);
+A          
+-----------
+1          
+2          
+ij> -- . show that distinct is a keyword, not a column name
+select distinct from t;
+ERROR 42X01: Syntax error: Encountered "from" at line 2, column 17.
+ij> rollback;
+ij> -- . usertypes
+-- To test usertypes in a way that works with weblogic, we
+-- pick one we can construct with other functionality available to us
+-- (UUID won't work)
+-- At the time these tests were written, user type comparisons
+-- were not supported.
+create table userInt (u integer);
+0 rows inserted/updated/deleted
+ij> insert into userInt values (123);
+1 row inserted/updated/deleted
+ij> insert into userInt values (123);
+1 row inserted/updated/deleted
+ij> insert into userInt values (456);
+1 row inserted/updated/deleted
+ij> insert into userInt values (null);
+1 row inserted/updated/deleted
+ij> create table sqlInt (i int not null);
+0 rows inserted/updated/deleted
+ij> insert into sqlInt values(123);
+1 row inserted/updated/deleted
+ij> -- expect two rows, 123 and 456
+select distinct u from userInt where u is not null;
+U          
+-----------
+123        
+456        
+ij> -- two rows, 123 and 456
+select u from userInt where u is not null;
+U          
+-----------
+123        
+123        
+456        
+ij> -- multiple rows in subquery get correct complaint
+select distinct i 
+from sqlInt 
+where i = (select distinct u from userInt);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> drop table userInt;
+0 rows inserted/updated/deleted
+ij> drop table sqlInt;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- . varchar blank padding is ignored, length will vary depending on row selected
+create table v (v varchar(40));
+0 rows inserted/updated/deleted
+ij> insert into v values ('hello');
+1 row inserted/updated/deleted
+ij> insert into v values ('hello   ');
+1 row inserted/updated/deleted
+ij> insert into v values ('hello      ');
+1 row inserted/updated/deleted
+ij> -- the |'s are just for visual demarcation
+select distinct '|' as "|", v, '|' as "|" from v;
+||V                                       ||
+--------------------------------------------
+||hello                                   ||
+ij> select {fn length(c)} from (select distinct v from v) as t(c);
+1          
+-----------
+5          
+ij> drop table v;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- distinct bigint
+create table li (l bigint, i int);
+0 rows inserted/updated/deleted
+ij> insert into li values(1, 1);
+1 row inserted/updated/deleted
+ij> insert into li values(1, 1);
+1 row inserted/updated/deleted
+ij> insert into li values(9223372036854775807, 
+					  2147483647);
+1 row inserted/updated/deleted
+ij> select distinct l from li;
+L                   
+--------------------
+1                   
+9223372036854775807 
+ij> (select distinct l from li) union all (select distinct i from li) order by 1;
+1                   
+--------------------
+1                   
+1                   
+2147483647          
+9223372036854775807 
+ij> select distinct l from li union select distinct i from li;
+1                   
+--------------------
+1                   
+2147483647          
+9223372036854775807 
+ij> select distinct l 
+from (select l from li union all select i from li) a(l);
+L                   
+--------------------
+1                   
+2147483647          
+9223372036854775807 
+ij> drop table li;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> autocommit off;
+ij> -- was off above, ensure it stayed off for this part of test
+create table u (d date);
+0 rows inserted/updated/deleted
+ij> -- three rows
+insert into u values ('1997-09-09'),('1997-09-09');
+2 rows inserted/updated/deleted
+ij> insert into u values (null);
+1 row inserted/updated/deleted
+ij> -- . nexting past the last row of a distinct
+get cursor past as 'select distinct d from u';
+ij> next past;
+D         
+----------
+1997-09-09
+ij> next past;
+D         
+----------
+NULL      
+ij> -- should report no current row:
+next past;
+No current row
+ij> next past;
+No current row
+ij> close past;
+ij> -- . for update on a select distinct
+-- both should get errors, not updatable.
+select distinct d from u for update;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> select distinct d from u for update of d;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- . positioned update/delete on a select distinct
+get cursor c1 as 'select distinct d from u';
+ij> next c1;
+D         
+----------
+1997-09-09
+ij> -- both should fail with cursor not updatable
+update u set d='1992-01-01' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> delete from u where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> close c1;
+ij> get cursor c1 as 'select distinct d from u';
+ij> -- both should fail with cursor not updatable (not no current row)
+update u set d='1992-01-01' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> delete from u where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> next c1;
+D         
+----------
+1997-09-09
+ij> next c1;
+D         
+----------
+NULL      
+ij> next c1;
+No current row
+ij> next c1;
+No current row
+ij> -- both should fail with cursor not updatable, or cursor closed/does not exist
+update u set d='1992-01-01' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> delete from u where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> close c1;
+ij> get cursor c1 as 'select distinct d from u';
+ij> close c1;
+ij> -- both should fail with cursor not updatable, or cursor closed/does not exist
+update u set d='1992-01-01' where current of c1;
+ERROR 42X30: Cursor 'C1' not found. Verify that autocommit is OFF.
+ij> delete from u where current of c1;
+ERROR 42X30: Cursor 'C1' not found. Verify that autocommit is OFF.
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- insert tests
+create table t (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+0 rows inserted/updated/deleted
+ij> create table insert_test (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into insert_test select distinct * from t;
+2 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> delete from insert_test;
+2 rows inserted/updated/deleted
+ij> insert into insert_test select distinct * from t union select * from t;
+2 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> delete from insert_test;
+2 rows inserted/updated/deleted
+ij> rollback;
+ij> -- for bug 4194, "insert into select distinct" into a table with a generated column
+create table destWithAI(c11 int generated always as identity, c12 int);
+0 rows inserted/updated/deleted
+ij> alter table destWithAI alter c11 set increment by 1;
+0 rows inserted/updated/deleted
+ij> create table destWithNoAI(c21 int, c22 int);
+0 rows inserted/updated/deleted
+ij> create table source(c31 int, c32 int, c33 int);
+0 rows inserted/updated/deleted
+ij> insert into source values(1,1,1);
+1 row inserted/updated/deleted
+ij> insert into source values(1,2,1);
+1 row inserted/updated/deleted
+ij> insert into source values(2,1,1);
+1 row inserted/updated/deleted
+ij> insert into source values(2,2,1);
+1 row inserted/updated/deleted
+ij> select distinct(c31) from source;
+C31        
+-----------
+2          
+1          
+ij> insert into destWithAI(c12) select distinct(c31) from source;
+2 rows inserted/updated/deleted
+ij> -- we will see gaps in the autoincrement column for all the duplicate rows from source
+select * from destWithAI;
+C11        |C12        
+-----------------------
+1          |1          
+3          |2          
+ij> insert into destWithNoAI(c22) select distinct(c31) from source;
+2 rows inserted/updated/deleted
+ij> select * from destWithNoAI;
+C21        |C22        
+-----------------------
+NULL       |1          
+NULL       |2          
+ij> -- test for beetle 4402
+-- problem with check that a  result set is in order since it is retrieved using
+-- an index
+CREATE TABLE netbutton1 (
+  lname                 varchar(128) not null,
+  name                  varchar(128),
+  summary               varchar(256),
+  lsummary              varchar(256),
+  description           varchar(2000),
+  ldescription          varchar(2000),
+  publisher_username    varchar(256),
+  publisher_lusername   varchar(256),
+  version               varchar(16),
+  source                
+ long varchar for bit data, 
+  updated               
+ timestamp, 
+  created               
+ timestamp DEFAULT current_timestamp,
+	primary key (lname)) 
+;
+0 rows inserted/updated/deleted
+ij> insert into netbutton1 values('lname1','name1','sum2','lsum1', 'des1','ldes1','pubu1', 'publu1', 'ver1', null, current_timestamp, default);
+1 row inserted/updated/deleted
+ij> insert into netbutton1 values('lname2','name2','sum2','lsum2', 'des2','ldes2','pubu2', 'publu2', 'ver2', null, current_timestamp, default);
+1 row inserted/updated/deleted
+ij> CREATE TABLE library_netbutton (
+  netbuttonlibrary_id   
+ int not null, 
+  lname         varchar(128) not null,
+	primary key (netbuttonlibrary_id, lname))
+;
+0 rows inserted/updated/deleted
+ij> insert into library_netbutton values(1, 'lname1');
+1 row inserted/updated/deleted
+ij> insert into library_netbutton values(2, 'lname2');
+1 row inserted/updated/deleted
+ij> -- this is the index which causes the bug to be exposed
+create unique index ln_library_id on library_netbutton(netbuttonlibrary_id);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE library_netbutton
+ADD CONSTRAINT ln_lname_fk
+FOREIGN KEY (lname) REFERENCES netbutton1(lname)
+;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE netbuttonlibraryrole1 (
+  lusername             varchar(512) not null,
+  netbuttonlibrary_id   
+ int not null, 
+  username              varchar(512),
+  role                  varchar(24),
+  created               
+ timestamp DEFAULT current_timestamp,
+	primary key (lusername, netbuttonlibrary_id)) 
+;
+0 rows inserted/updated/deleted
+ij> insert into netbuttonlibraryrole1 values('lusername1', 1,'user1', 'role1', default);
+1 row inserted/updated/deleted
+ij> insert into netbuttonlibraryrole1 values('lusername2', 2,'user2', 'role2', default);
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> prepare c1 as 'SELECT DISTINCT nb.name AS name, nb.summary AS summary
+               FROM netbutton1 nb, netbuttonlibraryrole1 nlr,
+                    library_netbutton ln
+              WHERE nlr.netbuttonlibrary_id = ln.netbuttonlibrary_id
+                AND nb.lname = ln.lname
+                AND (   nlr.lusername = ?
+                     OR nlr.lusername = ?)
+                AND nb.lname = ?
+           ORDER BY summary';
+ij> execute c1 using 'values(''lusername1'', ''lusername2'', ''lname1'')';
+NAME                                                                                                                            |SUMMARY                                                                                                                         
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+name1                                                                                                                           |sum2                                                                                                                            
+ij> rollback;
+ij> -- reset autocomiit
+autocommit on;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctElimination.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctElimination.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1771 @@
+ij> -- test distinct elimination
+set isolation to rr;
+0 rows inserted/updated/deleted
+ij> -- eliminate distincts based on a uniqueness condition
+-- create tables
+create table one(c1 int, c2 int, c3 int, c4 int, c5 int);
+0 rows inserted/updated/deleted
+ij> create unique index one_c1 on one(c1);
+0 rows inserted/updated/deleted
+ij> create table two(c1 int, c2 int, c3 int, c4 int, c5 int);
+0 rows inserted/updated/deleted
+ij> create unique index two_c1c3 on two(c1, c3);
+0 rows inserted/updated/deleted
+ij> create table three(c1 int, c2 int, c3 int, c4 int, c5 int);
+0 rows inserted/updated/deleted
+ij> create unique index three_c1 on three(c1);
+0 rows inserted/updated/deleted
+ij> create table four(c1 int, c2 int, c3 int, c4 int, c5 int);
+0 rows inserted/updated/deleted
+ij> create unique index four_c1c3 on four(c1, c3);
+0 rows inserted/updated/deleted
+ij> insert into one values (1, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (2, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (3, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (4, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (5, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (6, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (7, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into one values (8, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (1, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (1, 1, 2, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (1, 1, 3, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (2, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (2, 1, 2, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (2, 1, 3, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (3, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (3, 1, 2, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into two values (3, 1, 3, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (1, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (2, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (3, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (4, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (5, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (6, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (7, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into three values (8, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (1, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (1, 1, 2, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (1, 1, 3, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (2, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (2, 1, 2, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (2, 1, 3, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (3, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (3, 1, 2, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into four values (3, 1, 3, 1, 1);
+1 row inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- queries that cannot eliminate the distinct
+-- no unique index
+select distinct c2 from one;
+C2         
+-----------
+1          
+ij> -- Following runtime statistics output should have Distinct Scan in it
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- queries that cannot eliminate the distinct
+-- no unique index
+select distinct c2 from one
+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: 
+Distinct Scan ResultSet for ONE using index xxxxFILTERED-UUIDxxxx at serializable isolation level using share table locking: 
+Number of opens = 1
+Hash table size = 1
+Distinct column is column number 1
+Rows seen = 1
+Rows filtered = 0
+	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={1}
+	Number of columns fetched=1
+	Number of pages visited=1
+	Number of rows qualified=8
+	Number of rows visited=8
+	Scan type=heap
+	start position:
+	None
+	stop position:
+	None
+	scan qualifiers:
+None
+	next qualifiers:
+None
+ij> -- result ordering is not guaranteed, but order by clause will change how
+-- distinct is executed.  So test by retrieving data into a temp table and
+-- return results ordered after making sure the query was executed as expected.
+create table temp_result (c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> insert into temp_result
+    select distinct c2, c3 from two;
+3 rows inserted/updated/deleted
+ij> -- Following runtime statistics output should have Distinct Scan in it
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into temp_result
+    select distinct c2, c3 from two
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 3
+Indexes updated = 0
+Execute Time = 0
+	Distinct Scan ResultSet for TWO using index xxxxFILTERED-UUIDxxxx at serializable isolation level using share table locking: 
+	Number of opens = 1
+	Hash table size = 3
+	Distinct columns are column numbers (1,2)
+	Rows seen = 3
+	Rows filtered = 0
+		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={1, 2}
+		Number of columns fetched=2
+		Number of pages visited=1
+		Number of rows qualified=9
+		Number of rows visited=9
+		Scan type=heap
+		start position:
+	None
+		stop position:
+	None
+		scan qualifiers:
+None
+		next qualifiers:
+None
+ij> select c2, c3 from temp_result order by c2, c3;
+C2         |C3         
+-----------------------
+1          |1          
+1          |2          
+1          |3          
+ij> drop table temp_result;
+0 rows inserted/updated/deleted
+ij> -- Try same query, but with an order by at the end.  This will use the sort for
+-- the "order by" to do the distinct and not do a "DISTINCT SCAN".
+select distinct c2, c3 from two order by c2, c3;
+C2         |C3         
+-----------------------
+1          |1          
+1          |2          
+1          |3          
+ij> -- Following runtime statistics output should not have Distinct Scan in it
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- Try same query, but with an order by at the end.  This will use the sort for
+-- the "order by" to do the distinct and not do a "DISTINCT SCAN".
+select distinct c2, c3 from two order by c2, c3
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 3
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=9
+	Number of rows output=3
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TWO at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	Fetch Size = 16
+		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={1, 2}
+		Number of columns fetched=2
+		Number of pages visited=1
+		Number of rows qualified=9
+		Number of rows visited=9
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> -- more than one table in the select list
+select distinct a.c1, b.c1 from one a, two b where a.c1 = b.c1 and b.c2 =1;
+C1         |C1         
+-----------------------
+1          |1          
+2          |2          
+3          |3          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- more than one table in the select list
+select distinct a.c1, b.c1 from one a, two b where a.c1 = b.c1 and b.c2 =1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 3
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=9
+	Number of rows output=3
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 9
+		Rows seen from the right = 9
+		Rows filtered = 0
+		Rows returned = 9
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TWO at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 9
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next&
+ij> -- cross product join
+select distinct a.c1 from one a, two b;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- cross product join
+select distinct a.c1 from one a, two b
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 72
+Rows returned = 8
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 8
+	Rows seen from the right = 72
+	Rows filtered = 0
+	Rows returned = 72
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 8
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=8
+			Number of rows visited=8
+			Scan type=btree
+			Tree height=-1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for TWO using index TWO_C1C3 at serializable isol&
+ij> -- no single table will yield at most 1 row
+select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1;
+C1         |C3         |C2         
+-----------------------------------
+1          |1          |1          
+1          |2          |1          
+1          |3          |1          
+2          |1          |1          
+2          |2          |1          
+2          |3          |1          
+3          |1          |1          
+3          |2          |1          
+3          |3          |1          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- no single table will yield at most 1 row
+select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 27
+Rows returned = 9
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=27
+	Number of rows output=9
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 27
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Hash Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 9
+		Rows seen from the right = 27
+		Rows filtered = 0
+		Rows returned = 27
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TWO at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 9
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (millis&
+ij> select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1 and a.c2 = 1;
+C1         |C3         |C2         
+-----------------------------------
+1          |1          |1          
+1          |2          |1          
+1          |3          |1          
+2          |1          |1          
+2          |2          |1          
+2          |3          |1          
+3          |1          |1          
+3          |2          |1          
+3          |3          |1          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1 and a.c2 = 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 27
+Rows returned = 9
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=27
+	Number of rows output=9
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 27
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 9
+		Rows seen from the right = 27
+		Rows filtered = 0
+		Rows returned = 27
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TWO at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 9
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close tim&
+ij> -- both keys from unique index in where clause but joined to different tables
+select distinct a.c1 from one a, two b, three c where a.c1 = b.c1 and c.c1 = b.c3
+and a.c1 = 1;
+C1         
+-----------
+1          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- both keys from unique index in where clause but joined to different tables
+select distinct a.c1 from one a, two b, three c where a.c1 = b.c1 and c.c1 = b.c3
+and a.c1 = 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 3
+Rows returned = 1
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 3
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 3
+		Rows seen from the right = 3
+		Rows filtered = 0
+		Rows returned = 3
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1
+			Rows seen from the right = 3
+			Rows filtered = 0
+			Rows returned = 3
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				opti&
+ij> -- join between two tables using one columns of unique key
+select distinct a.c1 from two a, four b where a.c1 = b.c1 and b.c3 = 1;
+C1         
+-----------
+1          
+2          
+3          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- join between two tables using one columns of unique key
+select distinct a.c1 from two a, four b where a.c1 = b.c1 and b.c3 = 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 3
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=9
+	Number of rows output=3
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 3
+		Rows seen from the right = 9
+		Rows filtered = 0
+		Rows returned = 9
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for FOUR using index FOUR_C1C3 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 3
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open tim&
+ij> -- join between two tables with no join predicate
+select distinct a.c1, a.c3 from two a, one b;
+C1         |C3         
+-----------------------
+1          |1          
+1          |2          
+1          |3          
+2          |1          
+2          |2          
+2          |3          
+3          |1          
+3          |2          
+3          |3          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- join between two tables with no join predicate
+select distinct a.c1, a.c3 from two a, one b
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 72
+Rows returned = 9
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=72
+	Number of rows output=9
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 8
+	Rows seen from the right = 72
+	Rows filtered = 0
+	Rows returned = 72
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 8
+		Rows filtered = 0
+		Fetch Size = 16
+			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={}
+			Number of columns fetched=0
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=8
+			Number of rows visited=8
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+			optimizer es&
+ij> -- join between three tables with two tables joined uniquely 
+select distinct a.c1 from one a, two b, three c where a.c1 = c.c1 and a.c1 = 1;
+C1         
+-----------
+1          
+ij> -- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- join between three tables with two tables joined uniquely 
+select distinct a.c1 from one a, two b, three c where a.c1 = c.c1 and a.c1 = 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 1
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 9
+		Rows filtered = 0
+		Rows returned = 9
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1
+			Rows seen from the right = 1
+			Rows filtered = 0
+			Rows returned = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+ij> --
+-- queries that should eliminate the distinct
+-- single table queries
+-- unique columns in select list
+select distinct c1 from one;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	--
+-- queries that should eliminate the distinct
+-- single table queries
+-- unique columns in select list
+select distinct c1 from one
+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 Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 8
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=1
+	Number of rows qualified=8
+	Number of rows visited=8
+	Scan type=btree
+	Tree height=-1
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> select distinct c1, c2 + c3 from one;
+C1         |2          
+-----------------------
+1          |2          
+2          |2          
+3          |2          
+4          |2          
+5          |2          
+6          |2          
+7          |2          
+8          |2          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c1, c2 + c3 from one
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 8
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for ONE at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 8
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0, 1, 2}
+		Number of columns fetched=3
+		Number of pages visited=1
+		Number of rows qualified=8
+		Number of rows visited=8
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> select distinct c3, c1 from two;
+C3         |C1         
+-----------------------
+1          |1          
+2          |1          
+3          |1          
+1          |2          
+2          |2          
+3          |2          
+1          |3          
+2          |3          
+3          |3          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c3, c1 from two
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 9
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Scan ResultSet for TWO using index TWO_C1C3 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0, 1}
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=9
+		Number of rows visited=9
+		Scan type=btree
+		Tree height=-1
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> -- query returns single row
+select distinct c2 from one where c1 = 3;
+C2         
+-----------
+1          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- query returns single row
+select distinct c2 from one where c1 = 3
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for ONE:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {1}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share 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
+			optimizer estimat&
+ij> select distinct c3 from one where c1 = 3;
+C3         
+-----------
+1          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c3 from one where c1 = 3
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for ONE:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {2}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share 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> -- superset in select list
+select distinct c2, c5, c1 from one;
+C2         |C5         |C1         
+-----------------------------------
+1          |1          |1          
+1          |1          |2          
+1          |1          |3          
+1          |1          |4          
+1          |1          |5          
+1          |1          |6          
+1          |1          |7          
+1          |1          |8          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- superset in select list
+select distinct c2, c5, c1 from one
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 8
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for ONE at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 8
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0, 1, 4}
+		Number of columns fetched=3
+		Number of pages visited=1
+		Number of rows qualified=8
+		Number of rows visited=8
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> select distinct c2, c3, c1 from two;
+C2         |C3         |C1         
+-----------------------------------
+1          |1          |1          
+1          |2          |1          
+1          |3          |1          
+1          |1          |2          
+1          |2          |2          
+1          |3          |2          
+1          |1          |3          
+1          |2          |3          
+1          |3          |3          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c2, c3, c1 from two
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 9
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TWO at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0, 1, 2}
+		Number of columns fetched=3
+		Number of pages visited=1
+		Number of rows qualified=9
+		Number of rows visited=9
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> -- multi table queries
+-- 1 to 1 join, select list is superset
+select distinct a.c1 from one a, one b where a.c1 = b.c1;
+C1         
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- multi table queries
+-- 1 to 1 join, select list is superset
+select distinct a.c1 from one a, one b where a.c1 = b.c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 8
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 8
+	Rows seen from the right = 8
+	Rows filtered = 0
+	Rows returned = 8
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 8
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=8
+			Number of rows visited=8
+			Scan type=btree
+			Tree height=-1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+ij> select distinct a.c1, 3 from one a, one b where a.c1 = b.c1;
+C1         |2          
+-----------------------
+1          |3          
+2          |3          
+3          |3          
+4          |3          
+5          |3          
+6          |3          
+7          |3          
+8          |3          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct a.c1, 3 from one a, one b where a.c1 = b.c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 8
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 8
+	Rows seen from the right = 8
+	Rows filtered = 0
+	Rows returned = 8
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for ONE using index ONE_C1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 8
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=8
+			Number of rows visited=8
+			Scan type=btree
+			Tree height=-1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+	Right result &
+ij> select distinct a.c1, a.c3, a.c2 from two a, one b where a.c1 = b.c1;
+C1         |C3         |C2         
+-----------------------------------
+1          |1          |1          
+1          |2          |1          
+1          |3          |1          
+2          |1          |1          
+2          |2          |1          
+2          |3          |1          
+3          |1          |1          
+3          |2          |1          
+3          |3          |1          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct a.c1, a.c3, a.c2 from two a, one b where a.c1 = b.c1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 9
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 9
+	Rows seen from the right = 9
+	Rows filtered = 0
+	Rows returned = 9
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TWO at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 9
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1, 2}
+			Number of columns fetched=3
+			Number of pages visited=1
+			Number of rows qualified=9
+			Number of rows visited=9
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for ONE using index ONE_C1 at serializable &
+ij> select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1 and b.c3 = 1;
+C1         |C3         |C2         
+-----------------------------------
+1          |1          |1          
+1          |2          |1          
+1          |3          |1          
+2          |1          |1          
+2          |2          |1          
+2          |3          |1          
+3          |1          |1          
+3          |2          |1          
+3          |3          |1          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1 and b.c3 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 9
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 3
+	Rows seen from the right = 9
+	Rows filtered = 0
+	Rows returned = 9
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for TWO using index TWO_C1C3 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=3
+			Number of rows visited=9
+			Scan type=btree
+			Tree height=-1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparis&
+ij> -- join between two tables using both columns of unique key
+select distinct a.c1 from two a, four b where a.c1 = b.c1 and a.c3 = b.c3 and b.c3 = 1;
+C1         
+-----------
+1          
+2          
+3          
+ij> -- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- join between two tables using both columns of unique key
+select distinct a.c1 from two a, four b where a.c1 = b.c1 and a.c3 = b.c3 and b.c3 = 1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 3
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 3
+	Rows seen from the right = 3
+	Rows filtered = 0
+	Rows returned = 3
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for FOUR using index FOUR_C1C3 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=3
+			Number of rows visited=9
+			Scan type=btree
+			Tree height=-1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+O&
+ij> -- clean up
+drop table one;
+0 rows inserted/updated/deleted
+ij> drop table two;
+0 rows inserted/updated/deleted
+ij> drop table three;
+0 rows inserted/updated/deleted
+ij> drop table four;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctFiltering.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/distinctFiltering.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,917 @@
+ij> -- test filtering of duplicates at language layer
+-- for in-order distincts
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> -- create some tables
+create table t1(c1 int, c2 char(50), c3 char(50));
+0 rows inserted/updated/deleted
+ij> create table t2(c1 int, c2 char(50), c3 char(50));
+0 rows inserted/updated/deleted
+ij> -- t1 gets non-unique indexes, t2 gets unique
+create index t11 on t1(c1);
+0 rows inserted/updated/deleted
+ij> create index t12 on t1(c1, c2);
+0 rows inserted/updated/deleted
+ij> create index t13 on t1(c1, c3, c2);
+0 rows inserted/updated/deleted
+ij> create unique index t21 on t2(c1, c2);
+0 rows inserted/updated/deleted
+ij> create unique index t22 on t2(c1, c3);
+0 rows inserted/updated/deleted
+ij> -- populate 
+insert into t1 values (1, '1', '1'), (1, '1', '1'),
+	(1, '11', '11'), (1, '11', '11'), (2, '2', '2'),
+	(2, '2', '3'), (2, '3', '2'), (3, '3', '3'),
+	(null, null, null);
+9 rows inserted/updated/deleted
+ij> insert into t2 values (1, '1', '1'), (1, '2', '2'),
+		      (2, '1', '1'), (2, '2', '2'),
+		      (null, 'null', 'null');
+5 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 7000;
+ij> -- first column of an index
+select distinct c1 from t1 where 1=1;
+C1         
+-----------
+1          
+2          
+3          
+NULL       
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- first column of an index
+select distinct c1 from t1 where 1=1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 4
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	restriction = false
+	projection = false
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for T1 using index T11 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 9
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=9
+			Number of rows visited=9
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+ij> select distinct c1 from t1 where 1=1;
+C1         
+-----------
+1          
+2          
+3          
+NULL       
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c1 from t1 where 1=1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 4
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	restriction = false
+	projection = false
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for T1 using index T11 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 9
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=9
+			Number of rows visited=9
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+ij> -- equality predicate on preceding key columns
+select distinct c2 from t1 where c1 = 1 and c3 = '1';
+C2                                                
+--------------------------------------------------
+1                                                 
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- equality predicate on preceding key columns
+select distinct c2 from t1 where c1 = 1 and c3 = '1'
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 1
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index T13 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1, 2}
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=3
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+				stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+				qualifiers:
+None
+ij> -- equality predicate on all key columns, non unique
+select distinct c3 from t1 where c1 = 1 and c2 = '1';
+C3                                                
+--------------------------------------------------
+1                                                 
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- equality predicate on all key columns, non unique
+select distinct c3 from t1 where c1 = 1 and c2 = '1'
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 1
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index T13 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1, 2}
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=5
+				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:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- equality predicate on all key columns, non unique
+select distinct c3 from t2 where c1 = 1 and c2 = '1';
+C3                                                
+--------------------------------------------------
+1                                                 
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- equality predicate on all key columns, non unique
+select distinct c3 from t2 where c1 = 1 and c2 = '1'
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for T2:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {2}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for T2 using index T21 at read committed isolation level using share 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=3
+			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 2 column(s).
+	Ordered null semantics on the following columns: 
+			stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+			qualifiers:
+None
+ij> -- different orderings
+select distinct c2, c1 from t1 where 1=1;
+C2                                                |C1         
+--------------------------------------------------------------
+1                                                 |1          
+11                                                |1          
+2                                                 |2          
+3                                                 |2          
+3                                                 |3          
+NULL                                              |NULL       
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- different orderings
+select distinct c2, c1 from t1 where 1=1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 6
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 9
+		Rows filtered = 0
+		restriction = false
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index T12 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 9
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=9
+				Number of rows visited=9
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> select distinct c2 from t1 where c1 = 1;
+C2                                                
+--------------------------------------------------
+1                                                 
+11                                                
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c2 from t1 where c1 = 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 2
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for T1 using index T12 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=4
+			Number of rows visited=5
+			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> select distinct c2, c1 from t1 where c3 = '1';
+C2                                                |C1         
+--------------------------------------------------------------
+1                                                 |1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c2, c1 from t1 where c3 = '1'
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 1
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index T13 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1, 2}
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=9
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select distinct c2 from t1 where c3 = '1' and c1 = 1;
+C2                                                
+--------------------------------------------------
+1                                                 
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c2 from t1 where c3 = '1' and c1 = 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 1
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index T13 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1, 2}
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=3
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+				stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+				qualifiers:
+None
+ij> -- ordered, but no where clause - uses distinct scan
+-- the following approach is used because the ordering of the results from
+-- the distinct is not guaranteed (it varies depending on the JVM hash 
+-- implementation), but adding an order by to the query may
+-- change how we execute the distinct and we want to test the code path without
+-- the order by.  By adding the temp table, we can maintain a single master
+-- file for all JVM's.
+create table temp_result (result_column int);
+0 rows inserted/updated/deleted
+ij> insert into temp_result 
+    (select distinct c1 from t1);
+4 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	insert into temp_result 
+    (select distinct c1 from t1)
+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: 
+Insert ResultSet using row locking:
+deferred: false
+insert mode: normal
+Rows inserted = 4
+Indexes updated = 0
+Execute Time = 0
+	Distinct Scan ResultSet for T1 using index T11 at read committed isolation level using instantaneous share row locking: 
+	Number of opens = 1
+	Hash table size = 4
+	Distinct column is column number 0
+	Rows seen = 4
+	Rows filtered = 0
+		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={0}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=9
+		Number of rows visited=9
+		Scan type=btree
+		Tree height=1
+		start position:
+	None
+		stop position:
+	None
+		scan qualifiers:
+None
+		next qualifiers:
+None
+ij> select * from temp_result order by result_column;
+RESULT_COL&
+-----------
+1          
+2          
+3          
+NULL       
+ij> drop table temp_result;
+0 rows inserted/updated/deleted
+ij> -- test distinct with an order by
+select distinct c1 from t1 order by c1;
+C1         
+-----------
+1          
+2          
+3          
+NULL       
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- test distinct with an order by
+select distinct c1 from t1 order by c1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 9
+Rows returned = 4
+Eliminate duplicates = true
+In sorted order = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Scan ResultSet for T1 using index T11 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 9
+	Rows filtered = 0
+	Fetch Size = 16
+		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={0}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=9
+		Number of rows visited=9
+		Scan type=btree
+		Tree height=1
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dropTable.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dropTable.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,398 @@
+ij> -- tests for drop table
+--
+autocommit off;
+ij> --
+-- test simple table - all should work
+--
+create table t1 ( a int);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 (a int);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 (a int);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> --
+-- test table with unique constraint - all should work
+--
+create table t1 (a int not null unique);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 (a int not null unique);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 (a int not null unique);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> --
+-- test table with primary constraint - all should work
+--
+create table t1 ( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 ( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 ( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> --
+-- test table with check constraint - all should work
+--
+create table t1 ( a int check(a > 0));
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 ( a int check(a > 0));
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 ( a int check(a > 0));
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> --
+-- test table with index - all should work
+--
+create table t1 ( a int);
+0 rows inserted/updated/deleted
+ij> create index t1index on t1(a);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 (a int);
+0 rows inserted/updated/deleted
+ij> create index t1index on t1(a);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1 (a int);
+0 rows inserted/updated/deleted
+ij> create index t1index on t1(a);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> --
+-- test table with foreign key references;
+--
+create table t1(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(a int constraint reft1a references t1(a));
+0 rows inserted/updated/deleted
+ij> -- this should fail with a dependent constraint error
+drop table t1;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'REFT1A' is dependent on that object.
+ij> -- this should fail with a dependent constraint error
+drop table t1;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'REFT1A' is dependent on that object.
+ij> -- dropping dependent constraint
+alter table t2 drop constraint reft1a;
+0 rows inserted/updated/deleted
+ij> -- this should work since dependent constraint was dropped
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> -- the following should work since no referential constraint is left
+insert into t2 values(1);
+1 row inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --
+-- test table with view
+--
+create table t1(a int, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(c int, d int);
+0 rows inserted/updated/deleted
+ij> create view vt1a as select a from t1;
+0 rows inserted/updated/deleted
+ij> create view vt1b as select b from t1;
+0 rows inserted/updated/deleted
+ij> create view vt1t2 as select * from t1, t2;
+0 rows inserted/updated/deleted
+ij> create view vvt1a as select * from vt1a;
+0 rows inserted/updated/deleted
+ij> create view vvvt1a as select * from vvt1a;
+0 rows inserted/updated/deleted
+ij> -- this should fail with view being a dependent object
+drop table t1;
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VT1A' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VT1B' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VT1T2' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VVT1A' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VVVT1A' is dependent on that object.
+ij> -- this should fail with view being a dependent object
+drop table t1;
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VT1A' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VT1B' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VT1T2' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VVT1A' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'VVVT1A' is dependent on that object.
+ij> -- dropping dependent views
+drop view vvvt1a;
+0 rows inserted/updated/deleted
+ij> drop view vvt1a;
+0 rows inserted/updated/deleted
+ij> drop view vt1t2;
+0 rows inserted/updated/deleted
+ij> drop view vt1b;
+0 rows inserted/updated/deleted
+ij> drop view vt1a;
+0 rows inserted/updated/deleted
+ij> -- this should work after dependent views were dropped
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- this shouldn't find the view
+select * from vt1a;
+ERROR 42X05: Table 'VT1A' does not exist.
+ij> select * from vt1b;
+ERROR 42X05: Table 'VT1B' does not exist.
+ij> select * from vt1t2;
+ERROR 42X05: Table 'VT1T2' does not exist.
+ij> select * from vvt1a;
+ERROR 42X05: Table 'VVT1A' does not exist.
+ij> select * from vvvt1a;
+ERROR 42X05: Table 'VVVT1A' does not exist.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --
+-- test table with prepared statement
+--
+create table t1(a int);
+0 rows inserted/updated/deleted
+ij> prepare t1stmt as 'select * from t1';
+ij> -- this should work, statement will be invalidated and will fail when recompiled
+drop table t1;
+0 rows inserted/updated/deleted
+ij> execute t1stmt;
+ERROR 42X05: Table 'T1' does not exist.
+ij> remove t1stmt;
+ij> create table t1(a int);
+0 rows inserted/updated/deleted
+ij> prepare t1stmt as 'select * from t1';
+ij> -- this should work, statement will be invalidated and will fail when recompiled
+drop table t1;
+0 rows inserted/updated/deleted
+ij> execute t1stmt;
+ERROR 42X05: Table 'T1' does not exist.
+ij> remove t1stmt;
+ij> create table t1(a int);
+0 rows inserted/updated/deleted
+ij> prepare t1stmt as 'select * from t1';
+ij> -- this should work, statement will be invalidated and will fail when recompiled
+drop table t1;
+0 rows inserted/updated/deleted
+ij> execute t1stmt;
+ERROR 42X05: Table 'T1' does not exist.
+ij> remove t1stmt;
+ij> --
+-- test table with triggers
+--
+create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create table t2(a int);
+0 rows inserted/updated/deleted
+ij> create trigger t1trig after insert on t1 for each row mode db2sql insert into t2 values(1);
+0 rows inserted/updated/deleted
+ij> -- this should work - trigger should be deleted
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create trigger t1trig after insert on t1 for each row mode db2sql insert into t2 values(1);
+0 rows inserted/updated/deleted
+ij> -- this should work - trigger should be deleted
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create trigger t1trig after insert on t1 for each row mode db2sql insert into t2 values(1);
+0 rows inserted/updated/deleted
+ij> -- this should work - trigger should be deleted
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- t1 shouldn't be found
+select * from t1;
+ERROR 42X05: Table 'T1' does not exist.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --
+-- test table within the body of a trigger on another table
+--
+create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create table t2(a int);
+0 rows inserted/updated/deleted
+ij> create trigger t2trig after insert on t2 for each row mode db2sql insert into t1 values(1);
+0 rows inserted/updated/deleted
+ij> -- this should work
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- the following should get an error when trying to recompile the trigger action
+insert into t2 values(1);
+ERROR 42X05: Table 'T1' does not exist.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create table t2(a int);
+0 rows inserted/updated/deleted
+ij> create trigger t2trig after insert on t2 for each row mode db2sql insert into t1 values(1);
+0 rows inserted/updated/deleted
+ij> -- this should work
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- the following should get an error when trying to recompile the trigger action
+insert into t2 values(1);
+ERROR 42X05: Table 'T1' does not exist.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create table t2(a int);
+0 rows inserted/updated/deleted
+ij> create trigger t2trig after insert on t2 for each row mode db2sql insert into t1 values(1);
+0 rows inserted/updated/deleted
+ij> -- this should work
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- the following should get an error when trying to recompile the trigger action
+insert into t2 values(1);
+ERROR 42X05: Table 'T1' does not exist.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --
+-- test drop view
+--
+create table t1(a int);
+0 rows inserted/updated/deleted
+ij> create view vt1 as select * from t1;
+0 rows inserted/updated/deleted
+ij> create view vvt1 as select * from vt1;
+0 rows inserted/updated/deleted
+ij> -- these should fail
+drop view vt1;
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'VT1' because VIEW 'VVT1' is dependent on that object.
+ij> drop view vt1 restrict;
+ERROR 42X01: Syntax error: Encountered "restrict" at line 1, column 15.
+ij> drop view vt1 cascade;
+ERROR 42X01: Syntax error: Encountered "cascade" at line 1, column 15.
+ij> -- 
+-- make sure that indexes are dropped for drop table
+--
+create table t2(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table reft2(a int constraint ref1 references t2);
+0 rows inserted/updated/deleted
+ij> -- count should be 2
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where t.tableid = c.tableid and
+t.tablename = 'REFT2';
+1          
+-----------
+2          
+ij> -- drop dependent referential constraint
+alter table reft2 drop constraint ref1;
+0 rows inserted/updated/deleted
+ij> -- should work since dependent constraint was previously dropped
+drop table t2;
+0 rows inserted/updated/deleted
+ij> -- count should be 1
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where t.tableid = c.tableid and
+t.tablename = 'REFT2';
+1          
+-----------
+1          
+ij> -- unsuccessful drop table should not affect open cursor
+-- beetle 4393
+rollback;
+ij> create table T1 (i int, c varchar(255), d varchar(255));
+0 rows inserted/updated/deleted
+ij> insert into T1(i) values(1);
+1 row inserted/updated/deleted
+ij> insert into T1(i) values(2);
+1 row inserted/updated/deleted
+ij> get cursor X1 as 'select i from t1 for update of c';
+ij> prepare U as 'update t1 set c = CHAR(i) where current of X1';
+ij> next X1;
+I          
+-----------
+1          
+ij> 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> execute U;
+1 row inserted/updated/deleted
+ij> select * from T1;
+I          |C                                                                                                                               |D                                                                                                                               
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1                                                                                                                               |NULL                                                                                                                            
+2          |NULL                                                                                                                            |NULL                                                                                                                            
+ij> -- pretend all of the above didn't happen
+autocommit on;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dynamicLikeOptimization.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/dynamicLikeOptimization.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,511 @@
+ij> -- test the dynamic like optimization
+-- NOTE: the metadata test does a bunch
+-- of likes with parameters
+autocommit off;
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+-- NoHoldForConnection;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- language layer tests
+create table t1(c11 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> prepare ll1 as 'select 1 from t1 where ''asdf'' like ?';
+ij> execute ll1 using 'values '''' ';
+1          
+-----------
+ij> -- no match char(1) pads to ' '
+execute ll1 using 'values ''%'' ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values ''%f'' ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values cast(''%f'' as varchar(2)) ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values ''%g'' ';
+1          
+-----------
+ij> execute ll1 using 'values ''asd%'' ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values ''_%'' ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values ''%_'' ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values ''_asdf'' ';
+1          
+-----------
+ij> execute ll1 using 'values ''%asdf'' ';
+1          
+-----------
+1          
+ij> execute ll1 using 'values cast(null as char)';
+1          
+-----------
+ij> execute ll1 using 'values '''' ';
+1          
+-----------
+ij> -- Escape tests
+prepare ll15 as 'select 1 from t1 where ''%foobar'' like ''Z%foobar'' escape ?';
+ij> execute ll15 using 'values ''Z''';
+1          
+-----------
+1          
+ij> -- match: optimize to LIKE AND ==
+execute ll15 using 'values cast(''Z'' as varchar(1)) ';
+1          
+-----------
+1          
+ij> execute ll15 using 'values ''raZ''';
+ERROR 22019: Invalid escape sequence, 'raZ'. The escape string must be exactly one character. It can not be a null or more than one character.
+ij> -- too many like chars
+execute ll15 using 'values ''%''';
+1          
+-----------
+ij> -- no match, wrong char
+select 1 from t1  where '%foobar' like '%%foobar' escape '%';
+1          
+-----------
+1          
+ij> -- match
+select 1 from t1  where '_foobar' like '__foobar' escape '_';
+1          
+-----------
+1          
+ij> -- match
+select 1 from t1  where 'asdf' like 'a%' escape cast(null as char);
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- error NULL escape
+prepare ll2 as 'select 1 from t1 where ''%foobar'' like ? escape ?';
+ij> execute ll2 using 'values (''Z%foobar'', ''Z'') ';
+1          
+-----------
+1          
+ij> -- match
+execute ll2 using 'values (''Z%foobar'', '''') ';
+ERROR 22019: Invalid escape sequence, ''. The escape string must be exactly one character. It can not be a null or more than one character.
+ij> -- error empty string escape 
+prepare ll2 as 'select 1 from t1 where ''%foobar'' like ? escape ''Z''';
+ij> execute ll2 using 'values ''x%foobar'' ';
+1          
+-----------
+ij> -- no match 
+execute ll2 using 'values ''Z%foobar'' ';
+1          
+-----------
+1          
+ij> -- match 
+prepare ll2 as 'select 1 from t1 where ''%foobar'' like ? escape ''$''';
+ij> execute ll2 using 'values ''$%f%bar'' ';
+1          
+-----------
+1          
+ij> -- match
+prepare ll3 as 'select 1 from t1 where ''Z%foobar'' like ? escape ''Z''';
+ij> execute ll3 using 'values ''ZZZ%foo%a_'' ';
+1          
+-----------
+1          
+ij> -- MATCH
+CREATE FUNCTION GETMAXCHAR() RETURNS CHAR(1) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.CharUTF8.getMaxDefinedCharAsString' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> --\uFA2D - the highest valid character according to Character.isDefined() of JDK 1.4;
+--prepare ll4 as 'select 1 from t1 where ''\uFA2D'' like ?';
+prepare ll4 as 'select 1 from t1 where GETMAXCHAR() like ?';
+ij> execute ll4 using 'values ''%'' ';
+1          
+-----------
+1          
+ij> execute ll4 using 'values '''' ';
+1          
+-----------
+ij> execute ll4 using 'values ''_'' ';
+1          
+-----------
+1          
+ij> execute ll4 using 'values GETMAXCHAR() ';
+1          
+-----------
+1          
+ij> -- create and populate tables
+create table test(id char(10), c10 char(10), vc10 varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into test values ('V-NULL', null, null);
+1 row inserted/updated/deleted
+ij> insert into test values ('asdf', 'asdf', 'asdf');
+1 row inserted/updated/deleted
+ij> insert into test values ('asdg', 'asdg', 'asdg');
+1 row inserted/updated/deleted
+ij> insert into test values ('aasdf', 'aasdf', 'aasdf');
+1 row inserted/updated/deleted
+ij> insert into test values ('%foobar', '%foobar', '%foobar');
+1 row inserted/updated/deleted
+ij> insert into test values ('foo%bar', 'foo%bar', 'foo%bar');
+1 row inserted/updated/deleted
+ij> insert into test values ('foo_bar', 'foo_bar', 'foo_bar');
+1 row inserted/updated/deleted
+ij> insert into test values ('MAX_CHAR', '\uFA2D', '\uFA2D');
+1 row inserted/updated/deleted
+ij> -- pushing generated predicates down
+prepare p1 as 'select id from test where c10 like ?';
+ij> prepare p2 as 'select id from test where vc10 like ?';
+ij> select vc10 from test where vc10 like 'values cast(null as varchar(1))';
+VC10      
+----------
+ij> -- return 0 rows
+execute p1 using 'values cast(null as char)';
+ID        
+----------
+ij> execute p2 using 'values cast(null as varchar(1))';
+ID        
+----------
+ij> -- false
+execute p1 using 'values 1';
+ID        
+----------
+ij> execute p2 using 'values 1';
+ID        
+----------
+ij> -- false
+execute p1 using 'values '''' ';
+ID        
+----------
+ij> execute p2 using 'values '''' ';
+ID        
+----------
+ij> -- true
+execute p1 using 'values ''%'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> execute p2 using 'values ''%'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> -- fail, no end blankd pad
+execute p1 using 'values ''%f'' ';
+ID        
+----------
+ij> execute p2 using 'values ''%f'' ';
+ID        
+----------
+asdf      
+aasdf     
+ij> execute p1 using 'values cast(''%f'' as varchar(2)) ';
+ID        
+----------
+ij> execute p2 using 'values cast(''%f'' as varchar(2)) ';
+ID        
+----------
+asdf      
+aasdf     
+ij> execute p1 using 'values ''%g'' ';
+ID        
+----------
+ij> execute p2 using 'values ''%g'' ';
+ID        
+----------
+asdg      
+ij> execute p1 using 'values ''asd%'' ';
+ID        
+----------
+asdf      
+asdg      
+ij> execute p2 using 'values ''asd%'' ';
+ID        
+----------
+asdf      
+asdg      
+ij> execute p1 using 'values ''_%'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> execute p2 using 'values ''_%'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> execute p1 using 'values ''%_'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> execute p2 using 'values ''%_'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> -- one: aasdf
+execute p1 using 'values ''_asdf'' ';
+ID        
+----------
+ij> -- fail: char blank padding significant
+execute p1 using 'values ''_asdf   %'' ';
+ID        
+----------
+aasdf     
+ij> execute p2 using 'values ''_asdf'' ';
+ID        
+----------
+aasdf     
+ij> execute p1 using 'values ''%asdf'' ';
+ID        
+----------
+ij> -- fail
+execute p2 using 'values ''%asdf'' ';
+ID        
+----------
+asdf      
+aasdf     
+ij> -- verify that like optimization being performed
+execute p2 using 'values ''%'' ';
+ID        
+----------
+asdf      
+asdg      
+aasdf     
+%foobar   
+foo%bar   
+foo_bar   
+MAX_CHAR  
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select id from test where vc10 like ?
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 7
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 7
+	Rows filtered = 0
+	restriction = true
+	projection = false
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TEST at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 7
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 2}
+			Number of columns fetched=2
+			Number of pages visited=1
+			Number of rows qualified=7
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 2
+Operator: <
+Order&
+ij> create index i1 on test(vc10);
+0 rows inserted/updated/deleted
+ij> create table likeable (match_me varchar(10), pattern varchar(10), esc varchar(1));
+0 rows inserted/updated/deleted
+ij> insert into likeable values ('foo%bar', 'fooZ%bar', 'Z');
+1 row inserted/updated/deleted
+ij> insert into likeable values ('foo%bar', '%Z%ba_', 'Z');
+1 row inserted/updated/deleted
+ij> insert into likeable values ('foo%bar', 'fooZ%baZ', 'Z');
+1 row inserted/updated/deleted
+ij> -- error
+select match_me from likeable where match_me like pattern escape esc;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> delete from likeable;
+3 rows inserted/updated/deleted
+ij> insert into likeable values ('foo%bar', 'foo%bar', NULL);
+1 row inserted/updated/deleted
+ij> -- should error
+select match_me from likeable where match_me like pattern escape esc;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> delete from likeable;
+1 row inserted/updated/deleted
+ij> insert into likeable values ('foo%bar', 'foo%bar', '');
+1 row inserted/updated/deleted
+ij> -- should error
+select match_me from likeable where match_me like pattern escape esc;
+ERROR 42824: An operand of LIKE is not a string, or the first operand is not a column.
+ij> -- Defect 6002/6039
+create table cei(id int, name varchar(192) not null, source varchar(252) not null);
+0 rows inserted/updated/deleted
+ij> insert into cei values (1, 'Alarms', 'AlarmDisk999'), 
+		(2, 'Alarms', 'AlarmFS-usr'),
+		(3, 'Alarms', 'AlarmPower'),
+		(4, 'Alert', 'AlertBattery'),
+		(5, 'Alert', 'AlertUPS'),
+		(6, 'Warning', 'WarnIntrusion'),
+		(7, 'Warning', 'WarnUnlockDoor'),
+		(8, 'Warning', 'Warn%Unlock%Door'),
+		(9, 'Warning', 'W_Unlock_Door');
+9 rows inserted/updated/deleted
+ij> select * from cei;
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |Alarms                                                                                                                                                                                          |AlarmDisk999                                                                                                                                                                                                                                                
+2          |Alarms                                                                                                                                                                                          |AlarmFS-usr                                                                                                                                                                                                                                                 
+3          |Alarms                                                                                                                                                                                          |AlarmPower                                                                                                                                                                                                                                                  
+4          |Alert                                                                                                                                                                                           |AlertBattery                                                                                                                                                                                                                                                
+5          |Alert                                                                                                                                                                                           |AlertUPS                                                                                                                                                                                                                                                    
+6          |Warning                                                                                                                                                                                         |WarnIntrusion                                                                                                                                                                                                                                               
+7          |Warning                                                                                                                                                                                         |WarnUnlockDoor                                                                                                                                                                                                                                              
+8          |Warning                                                                                                                                                                                         |Warn%Unlock%Door                                                                                                                                                                                                                                            
+9          |Warning                                                                                                                                                                                         |W_Unlock_Door                                                                                                                                                                                                                                               
+ij> prepare s as 'select id, name, source from cei where (name LIKE ? escape ''\'') and (source like ? escape ''\'') order by source asc, name asc';
+ij> execute s using 'values (''%'', ''%'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |Alarms                                                                                                                                                                                          |AlarmDisk999                                                                                                                                                                                                                                                
+2          |Alarms                                                                                                                                                                                          |AlarmFS-usr                                                                                                                                                                                                                                                 
+3          |Alarms                                                                                                                                                                                          |AlarmPower                                                                                                                                                                                                                                                  
+4          |Alert                                                                                                                                                                                           |AlertBattery                                                                                                                                                                                                                                                
+5          |Alert                                                                                                                                                                                           |AlertUPS                                                                                                                                                                                                                                                    
+9          |Warning                                                                                                                                                                                         |W_Unlock_Door                                                                                                                                                                                                                                               
+8          |Warning                                                                                                                                                                                         |Warn%Unlock%Door                                                                                                                                                                                                                                            
+6          |Warning                                                                                                                                                                                         |WarnIntrusion                                                                                                                                                                                                                                               
+7          |Warning                                                                                                                                                                                         |WarnUnlockDoor                                                                                                                                                                                                                                              
+ij> execute s using 'values (''Alarms'', ''AlarmDisk%'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |Alarms                                                                                                                                                                                          |AlarmDisk999                                                                                                                                                                                                                                                
+ij> execute s using 'values (''A%'', ''%'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |Alarms                                                                                                                                                                                          |AlarmDisk999                                                                                                                                                                                                                                                
+2          |Alarms                                                                                                                                                                                          |AlarmFS-usr                                                                                                                                                                                                                                                 
+3          |Alarms                                                                                                                                                                                          |AlarmPower                                                                                                                                                                                                                                                  
+4          |Alert                                                                                                                                                                                           |AlertBattery                                                                                                                                                                                                                                                
+5          |Alert                                                                                                                                                                                           |AlertUPS                                                                                                                                                                                                                                                    
+ij> execute s using 'values (''%'',	''___rm%'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |Alarms                                                                                                                                                                                          |AlarmDisk999                                                                                                                                                                                                                                                
+2          |Alarms                                                                                                                                                                                          |AlarmFS-usr                                                                                                                                                                                                                                                 
+3          |Alarms                                                                                                                                                                                          |AlarmPower                                                                                                                                                                                                                                                  
+ij> execute s using 'values (''Warning'', ''%oor'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+9          |Warning                                                                                                                                                                                         |W_Unlock_Door                                                                                                                                                                                                                                               
+8          |Warning                                                                                                                                                                                         |Warn%Unlock%Door                                                                                                                                                                                                                                            
+7          |Warning                                                                                                                                                                                         |WarnUnlockDoor                                                                                                                                                                                                                                              
+ij> execute s using 'values (''Warning'', ''Warn\%Unlock\%Door'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+8          |Warning                                                                                                                                                                                         |Warn%Unlock%Door                                                                                                                                                                                                                                            
+ij> execute s using 'values (''Warning'', ''%\%Unlo%'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+8          |Warning                                                                                                                                                                                         |Warn%Unlock%Door                                                                                                                                                                                                                                            
+ij> execute s using 'values (''Warning'', ''W\_Unloc%'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+9          |Warning                                                                                                                                                                                         |W_Unlock_Door                                                                                                                                                                                                                                               
+ij> execute s using 'values (''Warning'', ''_\_Unlock\_Door'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+9          |Warning                                                                                                                                                                                         |W_Unlock_Door                                                                                                                                                                                                                                               
+ij> execute s using 'values (''W%'', ''Warn\%Unlock\%Door'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+8          |Warning                                                                                                                                                                                         |Warn%Unlock%Door                                                                                                                                                                                                                                            
+ij> execute s using 'values (''%ing'', ''W\_Unlock\_%Door'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+9          |Warning                                                                                                                                                                                         |W_Unlock_Door                                                                                                                                                                                                                                               
+ij> execute s using 'values (''Bogus'', ''Name'')';
+ID         |NAME                                                                                                                                                                                            |SOURCE                                                                                                                                                                                                                                                      
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- clean up
+drop table test;
+0 rows inserted/updated/deleted
+ij> drop table likeable;
+0 rows inserted/updated/deleted
+ij> drop table cei;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4324 @@
+ij> -- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABS/ABSVAL test.  For all valid types, un-escaped function.
+-- Integer has a range of -2147483648 to 2147483647
+-- Basic
+create table myint( a int );
+0 rows inserted/updated/deleted
+ij> create table myinteger( a integer );
+0 rows inserted/updated/deleted
+ij> select abs(a) from myint;
+1          
+-----------
+ij> select abs(a) from myinteger;
+1          
+-----------
+ij> insert into myint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (2147483647), (-2147483647);
+10 rows inserted/updated/deleted
+ij> insert into myinteger values (NULL), (+0), (-0), (+1), (-1), (1000), (-1000), (NULL), (2147483647), (-2147483647);
+10 rows inserted/updated/deleted
+ij> select a from myint;
+A          
+-----------
+NULL       
+0          
+0          
+1          
+-1         
+1000       
+-1000      
+NULL       
+2147483647 
+-2147483647
+ij> select a from myinteger;
+A          
+-----------
+NULL       
+0          
+0          
+1          
+-1         
+1000       
+-1000      
+NULL       
+2147483647 
+-2147483647
+ij> select abs(a) from myint;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> select abs(a) from myinteger;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> select -abs(a) from myint;
+1          
+-----------
+NULL       
+0          
+0          
+-1         
+-1         
+-1000      
+-1000      
+NULL       
+-2147483647
+-2147483647
+ij> select -abs(a) from myinteger;
+1          
+-----------
+NULL       
+0          
+0          
+-1         
+-1         
+-1000      
+-1000      
+NULL       
+-2147483647
+-2147483647
+ij> select abs(abs(-abs(-abs(a)))) from myint;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> select abs(abs(-abs(-abs(a)))) from myinteger;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYINT;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYINTEGER;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> insert into myint values (-2147483648);
+1 row inserted/updated/deleted
+ij> insert into myinteger values (-2147483648);
+1 row inserted/updated/deleted
+ij> select a from myint where a=-2147483648;
+A          
+-----------
+-2147483648
+ij> select a from myinteger where a=-2147483648;
+A          
+-----------
+-2147483648
+ij> -- Error
+select -a from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select -a from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-a) from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-a) from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(a) from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(a) from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-abs(a)) from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-abs(a)) from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> drop table myint;
+0 rows inserted/updated/deleted
+ij> drop table myinteger;
+0 rows inserted/updated/deleted
+ij> -- End of Integer test
+-- Smallint has a range of -32768 to 32767
+-- Basic
+create table mysmallint( a smallint );
+0 rows inserted/updated/deleted
+ij> select abs(a) from mysmallint;
+1     
+------
+ij> insert into mysmallint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (32767), (-32767);
+10 rows inserted/updated/deleted
+ij> select a from mysmallint;
+A     
+------
+NULL  
+0     
+0     
+1     
+-1    
+1000  
+-1000 
+NULL  
+32767 
+-32767
+ij> select abs(a) from mysmallint;
+1     
+------
+NULL  
+0     
+0     
+1     
+1     
+1000  
+1000  
+NULL  
+32767 
+32767 
+ij> select -abs(a) from mysmallint;
+1     
+------
+NULL  
+0     
+0     
+-1    
+-1    
+-1000 
+-1000 
+NULL  
+-32767
+-32767
+ij> select abs(abs(-abs(-abs(a)))) from mysmallint;
+1     
+------
+NULL  
+0     
+0     
+1     
+1     
+1000  
+1000  
+NULL  
+32767 
+32767 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYSMALLINT;
+1     
+------
+NULL  
+0     
+0     
+1     
+1     
+1000  
+1000  
+NULL  
+32767 
+32767 
+ij> insert into mysmallint values (-32768);
+1 row inserted/updated/deleted
+ij> select a from mysmallint where a=-32768;
+A     
+------
+-32768
+ij> -- Error
+select -a from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select abs(-a) from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select abs(a) from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select abs(-abs(a)) from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> drop table mysmallint;
+0 rows inserted/updated/deleted
+ij> -- End of Smallint test
+-- Bigint has a range of -9223372036854775808 to 9223372036854775807
+-- Basic
+create table mybigint( a bigint );
+0 rows inserted/updated/deleted
+ij> select abs(a) from mybigint;
+1                   
+--------------------
+ij> insert into mybigint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (9223372036854775807), (-9223372036854775807);
+10 rows inserted/updated/deleted
+ij> select a from mybigint;
+A                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+-1                  
+1000                
+-1000               
+NULL                
+9223372036854775807 
+-9223372036854775807
+ij> select abs(a) from mybigint;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+1                   
+1000                
+1000                
+NULL                
+9223372036854775807 
+9223372036854775807 
+ij> select -abs(a) from mybigint;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+-1                  
+-1                  
+-1000               
+-1000               
+NULL                
+-9223372036854775807
+-9223372036854775807
+ij> select abs(abs(-abs(-abs(a)))) from mybigint;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+1                   
+1000                
+1000                
+NULL                
+9223372036854775807 
+9223372036854775807 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYBIGINT;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+1                   
+1000                
+1000                
+NULL                
+9223372036854775807 
+9223372036854775807 
+ij> insert into mybigint values (-9223372036854775808);
+1 row inserted/updated/deleted
+ij> select a from mybigint where a=-9223372036854775808;
+A                   
+--------------------
+-9223372036854775808
+ij> -- Error
+select -a from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select abs(-a) from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select abs(a) from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select abs(-abs(a)) from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> drop table mybigint;
+0 rows inserted/updated/deleted
+ij> -- End of Bigint test
+-- REAL has a range of +/-1.175E-37 to +/-3.402E+38 
+-- Basic
+create table myreal( a real );
+0 rows inserted/updated/deleted
+ij> select abs(a) from myreal;
+1            
+-------------
+ij> insert into myreal values (null), (+0), (-0), (+1), (-1), (null), (100000000), (-100000000),
+(3.402E+38), (-3.402E+38),
+(1.175E-37), (-1.175E-37);
+12 rows inserted/updated/deleted
+ij> select a from myreal;
+A            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+-1.0         
+NULL         
+1.0E8        
+-1.0E8       
+3.402E38     
+-3.402E38    
+1.175E-37    
+-1.175E-37   
+ij> select -a from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+-1.0         
+1.0          
+NULL         
+-1.0E8       
+1.0E8        
+-3.402E38    
+3.402E38     
+-1.175E-37   
+1.175E-37    
+ij> select abs(a) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> select abs(-a) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> select -abs(a) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+-1.0         
+-1.0         
+NULL         
+-1.0E8       
+-1.0E8       
+-3.402E38    
+-3.402E38    
+-1.175E-37   
+-1.175E-37   
+ij> select abs(abs(-abs(-abs(a)))) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYREAL;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> select distinct abs(a) from myreal;
+1            
+-------------
+0.0          
+1.175E-37    
+1.0          
+1.0E8        
+3.402E38     
+NULL         
+ij> ---- There is nothing wrong with returning 1.0.  The float overflows and this is just the way it behaves.
+-- this used to work on CS, not any more when adopted to DB2 style floats
+-- since contant numbers are (parsed as) doubles
+select abs(-abs(a)) + 1 from myreal where a=1.175E-37;
+1            
+-------------
+ij> -- when casted to a real, it is found
+select abs(-abs(a)) + 1 from myreal where a=cast(1.175E-37 as real);
+1            
+-------------
+1.0          
+ij> -- Error
+insert into myreal values ( 3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into myreal values (-3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> drop table myreal;
+0 rows inserted/updated/deleted
+ij> -- End of Real test
+-- Double Precision has a range of +/-2.225E-307 to +/-1.79769E+308 
+-- Basic
+create table mydoubleprecision( a double precision );
+0 rows inserted/updated/deleted
+ij> select abs(a) from mydoubleprecision;
+1                     
+----------------------
+ij> insert into mydoubleprecision values (null), (+0), (-0), (+1), (-1), (100000000), (-100000000), (null),
+(1.79769E+308), (-1.79769E+308),
+(2.225E-307), (-2.225E-307);
+12 rows inserted/updated/deleted
+ij> select a from mydoubleprecision;
+A                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+-1.0                  
+1.0E8                 
+-1.0E8                
+NULL                  
+1.79769E308           
+-1.79769E308          
+2.225E-307            
+-2.225E-307           
+ij> select -a from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+1.0                   
+-1.0E8                
+1.0E8                 
+NULL                  
+-1.79769E308          
+1.79769E308           
+-2.225E-307           
+2.225E-307            
+ij> select abs(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> select abs(-a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> select -abs(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+-1.0                  
+-1.0E8                
+-1.0E8                
+NULL                  
+-1.79769E308          
+-1.79769E308          
+-2.225E-307           
+-2.225E-307           
+ij> select abs(abs(-abs(-abs(a)))) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYDOUBLEPRECISION;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> select distinct abs(a) from mydoubleprecision;
+1                     
+----------------------
+0.0                   
+2.225E-307            
+1.0                   
+1.0E8                 
+1.79769E308           
+NULL                  
+ij> -- There is nothing wrong with returning 1.0.  The double overflows and this is just the way it behaves.
+select abs(-abs(a)) + 1 from mydoubleprecision where a=2.225E-307;
+1                     
+----------------------
+1.0                   
+ij> -- Error
+insert into mydoubleprecision values ( 1.79769E+308 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into mydoubleprecision values (-1.79769E+308 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> drop table mydoubleprecision;
+0 rows inserted/updated/deleted
+ij> -- End of Double Precision test
+-- Float has a the range or a REAL or DOUBLE depending on
+-- the precision you specify.  Below a is a double, b is a float
+create table myfloat( a float, b float(23) );
+0 rows inserted/updated/deleted
+ij> select abs(a), abs(b) from myfloat;
+1                     |2            
+------------------------------------
+ij> select columnname, columndatatype
+from sys.syscolumns c, sys.systables t where c.referenceid = t.tableid and t.tablename='MYFLOAT';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+A                                                                                                                               |DOUBLE         
+B                                                                                                                               |REAL           
+ij> insert into myfloat values (null, null), (+0, +0), (-0, -0), (+1, +1), (-1, -1),
+(100000000, 100000000), (-100000000, -100000000), (null, null),
+(1.79769E+308, 3.402E+38),
+(-1.79769E+308, -3.402E+38),
+(2.225E-307, 1.175E-37),
+(-2.225E-307, -1.175E-37);
+12 rows inserted/updated/deleted
+ij> select a, b from myfloat;
+A                     |B            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+-1.0                  |-1.0         
+1.0E8                 |1.0E8        
+-1.0E8                |-1.0E8       
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+-1.79769E308          |-3.402E38    
+2.225E-307            |1.175E-37    
+-2.225E-307           |-1.175E-37   
+ij> select -a, -b from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+-1.0                  |-1.0         
+1.0                   |1.0          
+-1.0E8                |-1.0E8       
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+-1.79769E308          |-3.402E38    
+1.79769E308           |3.402E38     
+-2.225E-307           |-1.175E-37   
+2.225E-307            |1.175E-37    
+ij> select abs(a), abs(b) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> select abs(-a), abs(-b) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> select -abs(a), -abs(b) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+-1.0                  |-1.0         
+-1.0                  |-1.0         
+-1.0E8                |-1.0E8       
+-1.0E8                |-1.0E8       
+NULL                  |NULL         
+-1.79769E308          |-3.402E38    
+-1.79769E308          |-3.402E38    
+-2.225E-307           |-1.175E-37   
+-2.225E-307           |-1.175E-37   
+ij> select abs(abs(-abs(-abs(a)))), abs(abs(-abs(-abs(b)))) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))), ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(B)))) FROM MYFLOAT;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> select distinct abs(a) from myfloat;
+1                     
+----------------------
+0.0                   
+2.225E-307            
+1.0                   
+1.0E8                 
+1.79769E308           
+NULL                  
+ij> -- -- There is nothing wrong with returning 1.0.  The float overflows and this is just the way it behaves.
+-- this used to work in CS, but no more, = on floating point values isn't really useful
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307 AND b=1.175E-37;
+1                     |2            
+------------------------------------
+ij> select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where b=3.402E+38;
+1                     |2            
+------------------------------------
+ij> -- 'real =' works on DB2 and DB2 Cloudscape
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where b=cast(3.402E+38 as real);
+1                     |2            
+------------------------------------
+1.79769E308           |3.402E38     
+ij> select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307 AND b=cast(1.175E-37 as real);
+1                     |2            
+------------------------------------
+1.0                   |1.0          
+ij> select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307;
+1                     |2            
+------------------------------------
+1.0                   |1.0          
+ij> -- Error
+insert into myfloat values ( 1.79769E+308 *2, 3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into myfloat values (-1.79769E+308 *2, -3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into myfloat values ( 2.225E-307, 3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into myfloat values (-2.225E-307, -3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> drop table myfloat;
+0 rows inserted/updated/deleted
+ij> -- End of Float test
+-- Decimal is java.math.BigDecimal
+-- Basic
+create table myDecimal( a decimal(31, 0), b decimal(31,31));
+0 rows inserted/updated/deleted
+ij> select abs(a) from myDecimal;
+1                               
+--------------------------------
+ij> insert into myDecimal values (null,0), (+0,0), (-0,0), (+1,0), (-1,0), 
+(100000000,.10000000), (-100000000,-.10000000), (null,null), 
+(1.0e30, 1.0e-30), 
+(-1.0e30, -1.0e-30);
+10 rows inserted/updated/deleted
+ij> select a from myDecimal;
+A                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+-1                              
+100000000                       
+-100000000                      
+NULL                            
+1000000000000000019884624838656 
+-1000000000000000019884624838656
+ij> select -a from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+-1                              
+1                               
+-100000000                      
+100000000                       
+NULL                            
+-1000000000000000019884624838656
+1000000000000000019884624838656 
+ij> select b from myDecimal;
+B                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000055511151231257 
+-0.1000000000000000055511151231257
+NULL                              
+0.0000000000000000000000000000010 
+-0.0000000000000000000000000000010
+ij> select -b from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+-0.1000000000000000055511151231257
+0.1000000000000000055511151231257 
+NULL                              
+-0.0000000000000000000000000000010
+0.0000000000000000000000000000010 
+ij> select abs(a) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000019884624838656 
+1000000000000000019884624838656 
+ij> select abs(-a) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000019884624838656 
+1000000000000000019884624838656 
+ij> select -abs(a) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+-1                              
+-1                              
+-100000000                      
+-100000000                      
+NULL                            
+-1000000000000000019884624838656
+-1000000000000000019884624838656
+ij> select abs(abs(-abs(-abs(a)))) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000019884624838656 
+1000000000000000019884624838656 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYDECIMAL;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000019884624838656 
+1000000000000000019884624838656 
+ij> select distinct abs(a) from myDecimal;
+1                               
+--------------------------------
+0                               
+1                               
+100000000                       
+1000000000000000019884624838656 
+NULL                            
+ij> select abs(b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000055511151231257 
+0.1000000000000000055511151231257 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> select abs(-b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000055511151231257 
+0.1000000000000000055511151231257 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> select -abs(b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+-0.1000000000000000055511151231257
+-0.1000000000000000055511151231257
+NULL                              
+-0.0000000000000000000000000000010
+-0.0000000000000000000000000000010
+ij> select abs(abs(-abs(-abs(b)))) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000055511151231257 
+0.1000000000000000055511151231257 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(B)))) FROM MYDECIMAL;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000055511151231257 
+0.1000000000000000055511151231257 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> select distinct abs(b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000010 
+0.1000000000000000055511151231257 
+NULL                              
+ij> -- There is nothing wrong with returning 1.0.  The decimal overflows and this is just the way it behaves.  Needs to make this compatible with jdk1.1.8(which had a bug).
+select abs(-abs(a)) + 1 from myDecimal;
+1                               
+--------------------------------
+NULL                            
+1                               
+1                               
+2                               
+2                               
+100000001                       
+100000001                       
+NULL                            
+1000000000000000019884624838657 
+1000000000000000019884624838657 
+ij> drop table myDecimal;
+0 rows inserted/updated/deleted
+ij> -- End of Decimal test
+-- Numeric java.math.BigDecimal
+-- Basic
+create table myNumeric( a decimal(31,0), b decimal(31,31 ));
+0 rows inserted/updated/deleted
+ij> select abs(a) from myNumeric;
+1                               
+--------------------------------
+ij> insert into myNumeric values (null), (+0), (-0), (+1), (-1),
+(100000000), (-100000000), (null),
+(1.0e31, ,1.0e-31),
+(-1.0e31, -1.0e-31 ), 
+select a from myNumeric;
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> select -a from myNumeric;
+1                               
+--------------------------------
+ij> select b from myNumeric;
+B                                 
+----------------------------------
+ij> select -b from myNumeric;
+1                                 
+----------------------------------
+ij> select abs(a), abs(b)from myNumeric;
+1                               |2                                 
+-------------------------------------------------------------------
+ij> select abs(-a), abs(-b) from myNumeric;
+1                               |2                                 
+-------------------------------------------------------------------
+ij> select -abs(a), -abs(b)  from myNumeric;
+1                               |2                                 
+-------------------------------------------------------------------
+ij> select abs(abs(-abs(-abs(a)))) from myNumeric;
+1                               
+--------------------------------
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYNUMERIC;
+1                               
+--------------------------------
+ij> select distinct abs(a) from myNumeric;
+1                               
+--------------------------------
+ij> -- There is nothing wrong with returning 1.0.  The numeric overflows and this is just the way it behaves.  Needs to make this compatible with jdk1.1.8(which had a bug).
+select abs(-abs(a)) + 1 from myNumeric;
+1                               
+--------------------------------
+ij> drop table myNumeric;
+0 rows inserted/updated/deleted
+ij> -- End of Numeric test
+-- Test some different statements, just in case
+create table foo( a int );
+0 rows inserted/updated/deleted
+ij> insert into foo values ( abs( 1) );
+1 row inserted/updated/deleted
+ij> insert into foo values ( abs(-2) );
+1 row inserted/updated/deleted
+ij> insert into foo values (-abs(-3) );
+1 row inserted/updated/deleted
+ij> insert into foo values (-abs( 4) );
+1 row inserted/updated/deleted
+ij> insert into foo values (          -5  );
+1 row inserted/updated/deleted
+ij> insert into foo values (          -6  );
+1 row inserted/updated/deleted
+ij> insert into foo values (          -7  );
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> prepare p1 as 'select a from foo';
+ij> prepare p2 as 'select abs(a) from foo';
+ij> prepare p3 as 'insert into foo select a*(-1) from foo';
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+ij> execute p2;
+1          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+ij> execute p3;
+7 rows inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+ij> insert into foo values( abs( 8 ) );
+1 row inserted/updated/deleted
+ij> insert into foo values( abs(-9 ) );
+1 row inserted/updated/deleted
+ij> insert into foo values(-abs(-10) );
+1 row inserted/updated/deleted
+ij> insert into foo values( abs( 11) );
+1 row inserted/updated/deleted
+ij> insert into foo values(          -12  );
+1 row inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+-10        
+11         
+-12        
+ij> execute p2;
+1          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+10         
+11         
+12         
+ij> execute p3;
+19 rows inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+-10        
+11         
+-12        
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-8         
+-9         
+10         
+-11        
+12         
+ij> rollback;
+ij> commit;
+ij> autocommit on;
+ij> insert into foo values( abs( 13) );
+1 row inserted/updated/deleted
+ij> insert into foo values( abs(-14) );
+1 row inserted/updated/deleted
+ij> insert into foo values(-abs(-15) );
+1 row inserted/updated/deleted
+ij> insert into foo values(-abs( 16) );
+1 row inserted/updated/deleted
+ij> insert into foo values(          -17  );
+1 row inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+13         
+14         
+-15        
+-16        
+-17        
+ij> execute p2;
+1          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+13         
+14         
+15         
+16         
+17         
+ij> execute p3;
+12 rows inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+13         
+14         
+-15        
+-16        
+-17        
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+-13        
+-14        
+15         
+16         
+17         
+ij> select * from foo;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+13         
+14         
+-15        
+-16        
+-17        
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+-13        
+-14        
+15         
+16         
+17         
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> -- End of ABS/ABSVAL test.  For all valid types.  Un-escaped function.
+-- abs is not a reserved word
+create table abs( a int );
+0 rows inserted/updated/deleted
+ij> drop table abs;
+0 rows inserted/updated/deleted
+ij> -- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABS test.  For escape function.
+-- Integer
+-- Basic
+-- beetle 5805 - support INT[EGER] built-in function
+values{fn abs(INT(' 0')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 7, column 15.
+ij> values{fn abs(INT('-0')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT(' 1')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT('-1')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT(' 1000000')         )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT('-1000000')         )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT(' 2147483647')      )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT('-2147483648') + 1  )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> -- Error
+values{fn abs(INT('-2147483648')      )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 2, column 15.
+ij> values{fn abs(INT(' 2147483647') + 1  )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> -- Smallint
+-- Basic
+-- beetle 5807 - support SMALLINT built-in function
+values{fn abs( SMALLINT(' 0')         )};
+1     
+------
+0     
+ij> values{fn abs( SMALLINT('-0')         )};
+1     
+------
+0     
+ij> values{fn abs( SMALLINT(' 1')         )};
+1     
+------
+1     
+ij> values{fn abs( SMALLINT('-1')         )};
+1     
+------
+1     
+ij> values{fn abs( SMALLINT(' 10000')     )};
+1     
+------
+10000 
+ij> values{fn abs( SMALLINT('-10000')     )};
+1     
+------
+10000 
+ij> values{fn abs( SMALLINT(' 32767')     )};
+1     
+------
+32767 
+ij> values{fn abs( SMALLINT('-32768') + 1 )};
+1          
+-----------
+32767      
+ij> values{fn abs(-SMALLINT('-32768')     )};
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- Error
+values{fn abs(-SMALLINT(' 32768')     )};
+ERROR 22003: The resulting value is outside the range for the data type SHORT.
+ij> values{fn abs( SMALLINT('-32768')     )};
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- Bigint
+-- Basic
+-- beetle 5809 - support BIGINT built-in function
+values{fn abs( BIGINT(' 0')                       )};
+1                   
+--------------------
+0                   
+ij> values{fn abs( BIGINT('-0')                       )};
+1                   
+--------------------
+0                   
+ij> values{fn abs( BIGINT(' 1')                       )};
+1                   
+--------------------
+1                   
+ij> values{fn abs( BIGINT('-1')                       )};
+1                   
+--------------------
+1                   
+ij> values{fn abs( BIGINT(' 100000000000')            )};
+1                   
+--------------------
+100000000000        
+ij> values{fn abs( BIGINT('-100000000000')            )};
+1                   
+--------------------
+100000000000        
+ij> values{fn abs( BIGINT(' 9223372036854775807')     )};
+1                   
+--------------------
+9223372036854775807 
+ij> values{fn abs( BIGINT('-9223372036854775808') + 1 )};
+1                   
+--------------------
+9223372036854775807 
+ij> -- Error
+values{fn abs(-BIGINT('-9223372036854775808')     )};
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> values{fn abs( BIGINT('-9223372036854775808')     )};
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> -- Real
+-- Basic
+-- beetle 5806 - support REAL built-in function
+values{fn abs( REAL( 0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 4, column 16.
+ij> values{fn abs( REAL(-0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL(-1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL(-1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 3.402E+38)               )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL(-3.402E+38) + 1           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> -- Error
+values{fn abs( REAL( 3.402E+38 * 2)           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 2, column 16.
+ij> values{fn abs(-REAL( NaN)                     )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 1.40129846432481707e-45) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 3.40282346638528860e+38) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> -- Double Precision/Double
+-- Basic
+-- beetle 5803 - support DOUBLE_[PRECISION] built-in function
+values{fn abs( DOUBLE( 0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn abs( DOUBLE(-0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn abs( DOUBLE( 1)                      )};
+1                     
+----------------------
+1.0                   
+ij> values{fn abs( DOUBLE(-1)                      )};
+1                     
+----------------------
+1.0                   
+ij> values{fn abs( DOUBLE( 1000000.001)            )};
+1                     
+----------------------
+1000000.001           
+ij> values{fn abs( DOUBLE(-1000000.001)            )};
+1                     
+----------------------
+1000000.001           
+ij> values{fn abs( DOUBLE(-1.79769E+308)           )};
+1                     
+----------------------
+1.79769E308           
+ij> values{fn abs( DOUBLE( 1.79769E+308) + 1       )};
+1                     
+----------------------
+1.79769E308           
+ij> values{fn abs( DOUBLE( 2.225E-307 + 1)         )};
+1                     
+----------------------
+1.0                   
+ij> -- Error
+values{fn abs( DOUBLE( 1.79769E+308 * 2)       )};
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn abs(-DOUBLE( NaN)                    )};
+ERROR 42X04: Column 'NAN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NAN' is not a column in the target table.
+ij> values{fn abs( DOUBLE( 4.9E-324)               )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn abs( DOUBLE( 1.7976931348623157E308) )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- Decimal/Numeric
+-- Basic
+-- beetle 5802 - support DEC[IMAL] built-in function
+values{ fn abs(DEC( 0)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 4, column 16.
+ij> values{ fn abs(DEC(-0)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC( 1)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC(-1)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC( 1000000000000) )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC(-1000000000000) )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> -- More generic test
+values{ fn abs( 0-1-.1 ) };
+1              
+---------------
+1.1            
+ij> values{ fn abs( -0-1.000000001 ) };
+1                      
+-----------------------
+1.000000001            
+ij> VALUES{ FN ABS( 100-200-300 ) };
+1          
+-----------
+400        
+ij> -- Error
+values{ fn abs('null') };
+ERROR 42X25: The 'ABS/ABSVAL' function is not allowed on the 'CHAR' type.
+ij> -- End of ABS test.  For escaped function.
+-- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABSVAL test.  For all valid types, un-escaped function.
+-- Integer has a range of -2147483648 to 2147483647
+-- Basic
+create table myint( a int );
+0 rows inserted/updated/deleted
+ij> select abs(a) from myint;
+1          
+-----------
+ij> insert into myint values (null);
+1 row inserted/updated/deleted
+ij> select abs(a) from myint;
+1          
+-----------
+NULL       
+ij> autocommit off;
+ij> -- Prepare Statements, should pass and return 1
+prepare p1 as 'select abs(?) from myint';
+ij> prepare p1 as 'select 1 from myint where ? <= 4';
+ij> execute p1 using 'values absval( 4 )';
+1          
+-----------
+1          
+ij> execute p1 using 'values absval( -4 )';
+1          
+-----------
+1          
+ij> execute p1 using 'values absval( 4.4 )';
+1          
+-----------
+1          
+ij> execute p1 using 'values absval( -4.4 )';
+1          
+-----------
+1          
+ij> -- Prepare Statements, should pass and return 1
+prepare p2 as 'select {fn abs(?)} from myint';
+ij> prepare p2 as 'select 1 from myint where ? <= 4';
+ij> execute p2 using 'values {fn abs( 4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( -4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( 4.4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( -4.4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( -4.44444444444444444444444 )}';
+1          
+-----------
+1          
+ij> autocommit on;
+ij> drop table myint;
+0 rows inserted/updated/deleted
+ij> -- Using Strings in escape function
+create table myStr( a varchar(10) );
+0 rows inserted/updated/deleted
+ij> insert into myStr values ( '123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '-123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '-12 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( ' -2 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '1a3' );
+1 row inserted/updated/deleted
+ij> select * from myStr;
+A         
+----------
+123       
+-123      
+-12       
+ -2       
+1a3       
+ij> select abs(a) from myStr;
+ERROR 42X25: The 'ABS/ABSVAL' function is not allowed on the 'VARCHAR' type.
+ij> select {fn abs(a)} from myStr;
+ERROR 42X25: The 'ABS/ABSVAL' function is not allowed on the 'VARCHAR' type.
+ij> drop table myStr;
+0 rows inserted/updated/deleted
+ij> -- End of ABSVAL test
+-- This test EJBQL function, CONCAT. Resolve 3535
+-- Begin of CONCAT test
+-- Basic
+values{ fn concat( 'hello', ' world' ) };
+1          
+-----------
+hello world
+ij> VALUES{ FN CONCAT( 'HELLO', ' WORLD' ) };
+1          
+-----------
+HELLO WORLD
+ij> values{ fn concat( '' , '' )};
+1              
+---------------
+ij> values{ fn concat( CHAR(''), CHAR('') ) };
+1                             
+------------------------------
+ij> values{ fn concat( 45, 67 )};
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values{ fn concat( '45', 67 )};
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values{ fn concat( 45, '67' )};
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values{ fn concat( CHAR('C'), CHAR('#') ) };
+1                             
+------------------------------
+C              #              
+ij> values{ fn concat( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\    [];,./ \'' |',
+                   'abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+|<>?:"{}     ''''''      ' ) };
+1                                                                                                                   
+--------------------------------------------------------------------------------------------------------------------
+ABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\    [];,./ \' |abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+|<>?:"{}     '''      
+ij> create table concat ( a int );
+0 rows inserted/updated/deleted
+ij> insert into concat values (1);
+1 row inserted/updated/deleted
+ij> select * from CONCAT;
+A          
+-----------
+1          
+ij> create table myconcat( a varchar(10) default null, b varchar(10) default null, c int);
+0 rows inserted/updated/deleted
+ij> insert into myconcat (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myconcat (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myconcat (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myconcat (b) values( 'world' );
+1 row inserted/updated/deleted
+ij> insert into myconcat (a,b) values( 'hello', 'world' );
+1 row inserted/updated/deleted
+ij> select * from myconcat;
+A         |B         |C          
+---------------------------------
+NULL      |NULL      |1          
+NULL      |NULL      |2          
+hello     |NULL      |NULL       
+NULL      |world     |NULL       
+hello     |world     |NULL       
+ij> select { fn concat( a, b ) } from myconcat;
+1                   
+--------------------
+NULL                
+NULL                
+NULL                
+NULL                
+helloworld          
+ij> drop table concat;
+0 rows inserted/updated/deleted
+ij> drop table myconcat;
+0 rows inserted/updated/deleted
+ij> -- End of CONCAT test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2 }; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+-- 2 args
+values{ fn locate( 'hello', 'hello' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'hellohello' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'helloworld' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'h?hello' ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'match me, hello now!' ) };
+1          
+-----------
+11         
+ij> values{ fn locate( '?', '?' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( '\', '\\') };
+1          
+-----------
+1          
+ij> values{ fn locate( '/', '//') };
+1          
+-----------
+1          
+ij> values{ fn locate( '\\', '\') };
+1          
+-----------
+0          
+ij> values{ fn locate( '//', '/') };
+1          
+-----------
+0          
+ij> values{ fn locate( '', 'test' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( '', ''     ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'test', '' ) };
+1          
+-----------
+0          
+ij> -- 3 args 
+values{ fn locate( 'hello', 'hello',-1 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '-1'.  The string to search for is 'hello'.  The string to search from is 'hello'. 
+ij> values{ fn locate( 'hello', 'hello',-0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'hello'.  The string to search from is 'hello'. 
+ij> values{ fn locate( 'hello', 'hello', 0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'hello'.  The string to search from is 'hello'. 
+ij> values{ fn locate( 'hello', 'hello', 1 ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'hello', 2 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'hello', 5 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'hello', 9 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'hellohello', 0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'hello'.  The string to search from is 'hellohello'. 
+ij> values{ fn locate( 'hello', 'hellohello', 1 ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'hellohello', 2 ) };
+1          
+-----------
+6          
+ij> values{ fn locate( 'hello', 'hellohello', 5 ) };
+1          
+-----------
+6          
+ij> values{ fn locate( 'hello', 'hellohello', 6 ) };
+1          
+-----------
+6          
+ij> values{ fn locate( 'hello', 'hellohello', 7 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'h?hello', 1 ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'h?hello', 2 ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'h?hello', 3 ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'h?hello', 4 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'match me, hello now!',  7 ) };
+1          
+-----------
+11         
+ij> values{ fn locate( 'hello', 'match me, hello now!', 15 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( '?', '?',-1 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '-1'.  The string to search for is '?'.  The string to search from is '?'. 
+ij> values{ fn locate( '?', '?',-0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '?'.  The string to search from is '?'. 
+ij> values{ fn locate( '?', '?', 0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '?'.  The string to search from is '?'. 
+ij> values{ fn locate( '?', '?', 1 ) };
+1          
+-----------
+1          
+ij> values{ fn locate( '?', '?', 2 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( '\', '\\',0) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '\'.  The string to search from is '\\'. 
+ij> values{ fn locate( '\', '\\',1) };
+1          
+-----------
+1          
+ij> values{ fn locate( '\', '\\',2) };
+1          
+-----------
+2          
+ij> values{ fn locate( '\', '\\',3) };
+1          
+-----------
+0          
+ij> values{ fn locate( '/', '//',0) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '/'.  The string to search from is '//'. 
+ij> values{ fn locate( '/', '//',1) };
+1          
+-----------
+1          
+ij> values{ fn locate( '/', '//',2) };
+1          
+-----------
+2          
+ij> values{ fn locate( '/', '//',3) };
+1          
+-----------
+0          
+ij> values{ fn locate( '\\', '\',1) };
+1          
+-----------
+0          
+ij> values{ fn locate( '//', '/',1) };
+1          
+-----------
+0          
+ij> values{ fn locate( '', 'test',1) };
+1          
+-----------
+1          
+ij> values{ fn locate( '', 'test',2) };
+1          
+-----------
+2          
+ij> values{ fn locate( '', 'test',3) };
+1          
+-----------
+3          
+ij> values{ fn locate( '', 'test',4) };
+1          
+-----------
+4          
+ij> values{ fn locate( '', 'test',5) };
+1          
+-----------
+5          
+ij> values{ fn locate( '', ''    ,1) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'test', '',1) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'test', '',2) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'test', '',3) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'test', '',4) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 1 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 'hello' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 'hello', 'hello', 'hello' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 'hello', 'hello', 1.99999999999 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 'hel1lo' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 1 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 1, '1' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( '1', 1, 1 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( '1', '1', '1' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- End of EJBQL function test for LOCATE.
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+create table locate( a varchar(20) );
+0 rows inserted/updated/deleted
+ij> -- create table myChar( a char(10), b char(20), c int default '1'  );
+create table myChar( a char(10), b char(20), c int );
+0 rows inserted/updated/deleted
+ij> insert into myChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+1 row inserted/updated/deleted
+ij> insert into myChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+1 row inserted/updated/deleted
+ij> insert into myChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+1 row inserted/updated/deleted
+ij> insert into myChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+1 row inserted/updated/deleted
+ij> insert into myChar values( '1234567890', 'abcde1234567890fghij', 2 );
+1 row inserted/updated/deleted
+ij> insert into myChar values( 'abcdefghij', 'abcdefghij1234567890', 1  );
+1 row inserted/updated/deleted
+ij> insert into myChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+1 row inserted/updated/deleted
+ij> insert into myChar (c) values( 0 );
+1 row inserted/updated/deleted
+ij> insert into myChar (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myChar (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myChar (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myChar (b) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+1 row inserted/updated/deleted
+ij> select a, b, c from myChar;
+A         |B                   |C          
+-------------------------------------------
+1234567890|abcde1234567890fghij|NULL       
+abcdefghij|abcdefghij1234567890|NULL       
+abcdefghij|1234567890abcdefghij|NULL       
+abcdefghij|1234567890!@#$%^&*()|NULL       
+1234567890|abcde1234567890fghij|2          
+abcdefghij|abcdefghij1234567890|1          
+abcdefghij|1234567890abcdefghij|15         
+NULL      |NULL                |0          
+NULL      |NULL                |1          
+NULL      |NULL                |2          
+hello     |NULL                |NULL       
+NULL      |hello               |NULL       
+abcdefghij|1234567890!@#$%^&*()|21         
+ij> select locate(a, b) from myChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+6          
+1          
+11         
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> select locate(a, b, c) from myChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+6          
+1          
+0          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> drop table myChar;
+0 rows inserted/updated/deleted
+ij> create table myLongVarChar( a long varchar, b long varchar, c int);
+0 rows inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcde', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcde', 'abcd' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( '', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcde', null );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( null, 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcde', 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcde', 'abcd', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( '', 'abcde', 2 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcde', null, 1  );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( null, 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (c) values( 0 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (b) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+1 row inserted/updated/deleted
+ij> select a, b, c from myLongVarChar;
+A                                                                                                                               |B                                                                                                                               |C          
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1234567890                                                                                                                      |abcde1234567890fghij                                                                                                            |NULL       
+abcdefghij                                                                                                                      |abcdefghij1234567890                                                                                                            |NULL       
+abcdefghij                                                                                                                      |1234567890abcdefghij                                                                                                            |NULL       
+abcdefghij                                                                                                                      |1234567890!@#$%^&*()                                                                                                            |NULL       
+abcde                                                                                                                           |abcde                                                                                                                           |NULL       
+abcde                                                                                                                           |abcd                                                                                                                            |NULL       
+                                                                                                                                |abcde                                                                                                                           |NULL       
+abcde                                                                                                                           |NULL                                                                                                                            |NULL       
+NULL                                                                                                                            |abcde                                                                                                                           |NULL       
+1234567890                                                                                                                      |abcde1234567890fghij                                                                                                            |2          
+abcdefghij                                                                                                                      |abcdefghij1234567890                                                                                                            |1          
+abcdefghij                                                                                                                      |1234567890abcdefghij                                                                                                            |15         
+abcde                                                                                                                           |abcde                                                                                                                           |1          
+abcde                                                                                                                           |abcd                                                                                                                            |1          
+                                                                                                                                |abcde                                                                                                                           |2          
+abcde                                                                                                                           |NULL                                                                                                                            |1          
+NULL                                                                                                                            |abcde                                                                                                                           |1          
+NULL                                                                                                                            |NULL                                                                                                                            |0          
+NULL                                                                                                                            |NULL                                                                                                                            |1          
+NULL                                                                                                                            |NULL                                                                                                                            |2          
+hello                                                                                                                           |NULL                                                                                                                            |NULL       
+NULL                                                                                                                            |hello                                                                                                                           |NULL       
+abcdefghij                                                                                                                      |1234567890!@#$%^&*()                                                                                                            |21         
+ij> select locate(a, b) from myLongVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+11         
+1          
+0          
+1          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> select locate(a, b, c) from myLongVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+0          
+1          
+0          
+2          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> drop table myLongVarChar;
+0 rows inserted/updated/deleted
+ij> create table myVarChar( a varchar(10), b varchar(20), c int );
+0 rows inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcde', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcde', 'abcd' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( '', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcde', null );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( null, 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcde', 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcde', 'abcd', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( '', 'abcde', 2 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcde', null, 1  );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( null, 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (c) values( 0 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (b) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+1 row inserted/updated/deleted
+ij> select a, b, c from myVarChar;
+A         |B                   |C          
+-------------------------------------------
+1234567890|abcde1234567890fghij|NULL       
+abcdefghij|abcdefghij1234567890|NULL       
+abcdefghij|1234567890abcdefghij|NULL       
+abcdefghij|1234567890!@#$%^&*()|NULL       
+abcde     |abcde               |NULL       
+abcde     |abcd                |NULL       
+          |abcde               |NULL       
+abcde     |NULL                |NULL       
+NULL      |abcde               |NULL       
+1234567890|abcde1234567890fghij|2          
+abcdefghij|abcdefghij1234567890|1          
+abcdefghij|1234567890abcdefghij|15         
+abcde     |abcde               |1          
+abcde     |abcd                |1          
+          |abcde               |2          
+abcde     |NULL                |1          
+NULL      |abcde               |1          
+NULL      |NULL                |0          
+NULL      |NULL                |1          
+NULL      |NULL                |2          
+hello     |NULL                |NULL       
+NULL      |hello               |NULL       
+abcdefghij|1234567890!@#$%^&*()|21         
+ij> select locate(a, b) from myVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+11         
+1          
+0          
+1          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> select locate(a, b, c) from myVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+0          
+1          
+0          
+2          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> drop table myVarChar;
+0 rows inserted/updated/deleted
+ij> -- Negative cases. To match DB2 behaviour
+create table t1 (dt date, tm time, ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (current_date, current_time, current_timestamp);
+1 row inserted/updated/deleted
+ij> select locate (dt, ts) from t1;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> select locate (tm, ts) from t1;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> select locate (ts, ts) from t1;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> values locate('abc', 'dkabc', 1.4);
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values locate('c', 'abcdedf', cast(1 as decimal(2,0)));
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- =========================================================================
+-- These test cases for national character types will fail until 
+-- until a future work around is implemented
+-- =========================================================================
+create table mynChar( a nchar(10), b nchar(20), c int );
+ERROR 0A000: Feature not implemented: NATIONAL CHAR.
+ij> insert into mynChar values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', 'abcdefghij1234567890', 1  );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (c) values( 0 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (c) values( 1 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (c) values( 2 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (a) values( 'hello' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (b) values( 'hello' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> select a, b, c from mynChar;
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> select locate(a, b) from mynChar;
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> select locate(a, b, c) from mynChar;
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> drop table mynChar;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYNCHAR' because it does not exist.
+ij> create table myLongnVarChar( a long nvarchar, b long nvarchar, c int );
+ERROR 0A000: Feature not implemented: LONG NVARCHAR.
+ij> insert into myLongnVarChar values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcde' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcd' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( '', 'abcde' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', null );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( null, 'abcde' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcde', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcd', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( '', 'abcde', 2 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', null, 1  );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( null, 'abcde', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (c) values( 0 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (c) values( 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (c) values( 2 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (a) values( 'hello' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (b) values( 'hello' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> select a, b, c from myLongnVarChar;
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> select locate(a, b) from myLongnVarChar;
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> select locate(a, b, c) from myLongnVarChar;
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> drop table myLongnVarChar;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYLONGNVARCHAR' because it does not exist.
+ij> create table mynVarChar( a nvarchar(10), b nvarchar(20), c int );
+ERROR 0A000: Feature not implemented: NATIONAL CHAR VARYING.
+ij> insert into mynVarChar values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcde' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcd' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( '', 'abcde' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', null );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( null, 'abcde' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcde', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcd', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( '', 'abcde', 2 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', null, 1  );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( null, 'abcde', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (c) values( 0 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (c) values( 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (c) values( 2 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (a) values( 'hello' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (b) values( 'hello' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> select a, b, c from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> select locate(a, b) from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> select locate(a, b, c) from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> create table myMixed( a char(10), b long nvarchar, c int );
+ERROR 0A000: Feature not implemented: LONG NVARCHAR.
+ij> insert into myMixed values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (c) values( 0 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (c) values( 1 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (c) values( 2 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (a) values( 'hello' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (b) values( 'hello' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> select a, b, c from myMixed;
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> select locate(a, b) from myMixed;
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> select locate(a, b, c) from myMixed;
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> drop table myMixed;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYMIXED' because it does not exist.
+ij> create table foo( a int );
+0 rows inserted/updated/deleted
+ij> insert into foo select locate(a, b) from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into foo values( {fn locate('hello', 'hello')} );
+1 row inserted/updated/deleted
+ij> select * from foo;
+A          
+-----------
+1          
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> drop table mynVarChar;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYNVARCHAR' because it does not exist.
+ij> -- =========================================================================
+-- Other types
+create table myBigInt( a bigint, b bigint );
+0 rows inserted/updated/deleted
+ij> insert into myBigInt values( 1234, 1234 );
+1 row inserted/updated/deleted
+ij> insert into myBigInt values( 4321, 1234 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myBigInt;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myBigInt;
+0 rows inserted/updated/deleted
+ij> create table myBit( a char for bit data, b char for bit data );
+0 rows inserted/updated/deleted
+ij> insert into myBit values( X'40', X'40' );
+1 row inserted/updated/deleted
+ij> insert into myBit values( X'01', X'40' );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myBit;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myBit;
+0 rows inserted/updated/deleted
+ij> -- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table myDate( a date, b date );
+0 rows inserted/updated/deleted
+ij> insert into myDate values( date('1970-01-08'), date('1970-01-08') );
+1 row inserted/updated/deleted
+ij> insert into myDate values( date('1979-08-30'), date('1978-07-28') );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myDate;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myDate;
+0 rows inserted/updated/deleted
+ij> create table myDecimal( a decimal, b decimal );
+0 rows inserted/updated/deleted
+ij> insert into myDecimal values( 2.2, 2.2 );
+1 row inserted/updated/deleted
+ij> insert into myDecimal values( 12.23, 3423 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myDecimal;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myDecimal;
+0 rows inserted/updated/deleted
+ij> create table myDouble( a double precision, b double precision );
+0 rows inserted/updated/deleted
+ij> insert into myDouble values( 2.2, 2.2 );
+1 row inserted/updated/deleted
+ij> insert into myDouble values( 12.23, 3423 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myDouble;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myDouble;
+0 rows inserted/updated/deleted
+ij> create table myInteger(a integer, b integer );
+0 rows inserted/updated/deleted
+ij> insert into myInteger values( 2, 2 );
+1 row inserted/updated/deleted
+ij> insert into myInteger values( 123, 3423 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myInteger;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myInteger;
+0 rows inserted/updated/deleted
+ij> create table mylongvarbinary( a long varchar for bit data, b long varchar for bit data );
+0 rows inserted/updated/deleted
+ij> select locate(a, b) from mylongvarbinary;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table mylongvarbinary;
+0 rows inserted/updated/deleted
+ij> -- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table mytime( a time, b time );
+0 rows inserted/updated/deleted
+ij> insert into mytime values( time('10:00:00'), time('10:00:00') );
+1 row inserted/updated/deleted
+ij> insert into mytime values( time('10:00:00'), time('11:00:00') );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from mytime;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table mytime;
+0 rows inserted/updated/deleted
+ij> -- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table mytimestamp( a timestamp, b timestamp );
+0 rows inserted/updated/deleted
+ij> insert into mytimestamp values( timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> insert into mytimestamp values( timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> select locate(a, b) from mytimestamp;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table mytimestamp;
+0 rows inserted/updated/deleted
+ij> -- End of ejbql_locate2.sql test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+-- AUTHOR'S NOTE: This test highlights the difference between Oracle8i,
+--    IBM DB2, and Cloudscape.
+create table foo( a varchar(10), b varchar(20) );
+0 rows inserted/updated/deleted
+ij> insert into foo values( 'abc', 'abcd' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'ABC', NULL );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( NULL, 'DEF' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'ABC', '') ;
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( '', 'DEF' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( '', '' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( NULL, NULL );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'GHJK', 'GHJ' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'QWE', 'QWERT' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'TYUI', 'RTYUI' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'IOP', 'UIOP[' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'ZXCV', 'ZXCV' );
+1 row inserted/updated/deleted
+ij> select * from foo;
+A         |B                   
+-------------------------------
+abc       |abcd                
+ABC       |NULL                
+NULL      |DEF                 
+ABC       |                    
+          |DEF                 
+          |                    
+NULL      |NULL                
+GHJK      |GHJ                 
+QWE       |QWERT               
+TYUI      |RTYUI               
+IOP       |UIOP[               
+ZXCV      |ZXCV                
+ij> select locate(a, b) from foo;
+1          
+-----------
+1          
+NULL       
+NULL       
+0          
+1          
+1          
+NULL       
+0          
+1          
+2          
+2          
+1          
+ij> select locate(a, b, 0) from foo;
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'abc'.  The string to search from is 'abcd'. 
+ij> select locate(a, b, -1) from foo;
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '-1'.  The string to search for is 'abc'.  The string to search from is 'abcd'. 
+ij> select locate(a, b, 1) from foo;
+1          
+-----------
+1          
+NULL       
+NULL       
+0          
+1          
+1          
+NULL       
+0          
+1          
+2          
+2          
+1          
+ij> select locate(a, b, 2) from foo;
+1          
+-----------
+0          
+NULL       
+NULL       
+0          
+2          
+2          
+NULL       
+0          
+0          
+2          
+2          
+0          
+ij> select locate(a, b, 200) from foo;
+1          
+-----------
+0          
+NULL       
+NULL       
+0          
+200        
+200        
+NULL       
+0          
+0          
+0          
+0          
+0          
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> -- End of ejbql_locate3.sql test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2 }; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+create table loc( c varchar(20) default null, a int default null, b int default null);
+0 rows inserted/updated/deleted
+ij> insert into loc (c) values ('This world is crazy' );
+1 row inserted/updated/deleted
+ij> insert into loc (c) values ('nada' );
+1 row inserted/updated/deleted
+ij> insert into loc (b) values ( 3 );
+1 row inserted/updated/deleted
+ij> select * from loc;
+C                   |A          |B          
+--------------------------------------------
+This world is crazy |NULL       |NULL       
+nada                |NULL       |NULL       
+NULL                |NULL       |3          
+ij> select c, locate( 'crazy', c ) from loc;
+C                   |2          
+--------------------------------
+This world is crazy |15         
+nada                |0          
+NULL                |NULL       
+ij> autocommit off;
+ij> -- Prepare Statements
+prepare p1 as 'select locate( ''crazy'', c ) from loc';
+ij> execute p1;
+1          
+-----------
+15         
+0          
+NULL       
+ij> -- first arg ?
+prepare p2 as 'select locate( ?, c ) from loc';
+ij> execute p2 using 'values ( ''crazy'' )';
+1          
+-----------
+15         
+0          
+NULL       
+ij> execute p2 using 'values ( ''hahah'' )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- second arg ?
+prepare p3 as 'select locate( ''nada'', ? ) from loc';
+ij> execute p3 using 'values ( ''nada'' )';
+1          
+-----------
+1          
+1          
+1          
+ij> execute p3 using 'values ( ''haha'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> -- both first and second arguments ? ?
+prepare p4 as 'select locate( ?, ? ) from loc';
+ij> execute p4 using 'values ( ''dont'', ''match'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p4 using 'values ( ''match'', ''me match me'' )';
+1          
+-----------
+4          
+4          
+4          
+ij> -- thrid arg ?
+prepare p5 as 'select locate( c, c, ? ) from loc';
+ij> execute p5 using 'values ( 1 )';
+1          
+-----------
+1          
+1          
+NULL       
+ij> execute p5 using 'values ( 2 )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- all args ? ? ?
+prepare p6 as 'select locate( ?, ?, ? ) from loc';
+ij> execute p6 using 'values ( ''hello'', ''no match'', 1 )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p6 using 'values ( ''match'', ''me match me'', 2 )';
+1          
+-----------
+4          
+4          
+4          
+ij> -- Prepare Statements
+prepare p7 as 'select {fn locate( ''crazy'', c )} from loc';
+ij> execute p7;
+1          
+-----------
+15         
+0          
+NULL       
+ij> -- first arg ?
+prepare p7 as 'select {fn locate( ?, c )} from loc';
+ij> execute p7 using 'values ( ''crazy'' )';
+1          
+-----------
+15         
+0          
+NULL       
+ij> execute p7 using 'values ( ''hahah'' )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- second arg ?
+prepare p8 as 'select {fn locate( ''nada'', ? )} from loc';
+ij> execute p8 using 'values ( ''nada'' )';
+1          
+-----------
+1          
+1          
+1          
+ij> execute p8 using 'values ( ''haha'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> -- both first and second arguments ? ?
+prepare p9 as 'select {fn locate( ?, ? )} from loc';
+ij> execute p9 using 'values ( ''dont'', ''match'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p9 using 'values ( ''match'', ''me match me'' )';
+1          
+-----------
+4          
+4          
+4          
+ij> -- thrid arg ?
+prepare p10 as 'select {fn locate( c, c, ? )} from loc';
+ij> execute p10 using 'values ( 1 )';
+1          
+-----------
+1          
+1          
+NULL       
+ij> execute p10 using 'values ( 2 )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- all args ? ? ?
+prepare p11 as 'select {fn locate( ?, ?, ? )} from loc';
+ij> execute p11 using 'values ( ''hello'', ''no match'', 1 )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p11 using 'values ( ''match'', ''me match me'', 2 )';
+1          
+-----------
+4          
+4          
+4          
+ij> autocommit on;
+ij> drop table loc;
+0 rows inserted/updated/deleted
+ij> -- End of LOCATE test
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.  For all valid types, un-escaped function.
+-- Real has a range of +/-1.4E-45 to +/-3.4028235E+38
+-- Basic
+create table myreal( a real );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from myreal;
+1                     
+----------------------
+ij> insert into myreal values (null), (+0), (-0), (+1), (null), (100000000),
+(3.402E+38), (1.175E-37);
+8 rows inserted/updated/deleted
+ij> select a from myreal;
+A            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+NULL         
+1.0E8        
+3.402E38     
+1.175E-37    
+ij> select sqrt(a) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+NULL                  
+10000.0               
+1.844451138023282E19  
+3.427827260414494E-19 
+ij> select -sqrt(a) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+NULL                  
+-10000.0              
+-1.844451138023282E19 
+-3.427827260414494E-19
+ij> select sqrt(sqrt(-sqrt(-sqrt(a)))) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> SELECT SQRT(SQRT(-SQRT(-SQRT(A)))) FROM MYREAL;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> select sqrt(sqrt(sqrt(sqrt(a)))) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+NULL                  
+3.1622776601683795    
+255.99612668910464    
+0.004919006155611499  
+ij> select distinct sqrt(a) from myreal;
+1                     
+----------------------
+0.0                   
+3.427827260414494E-19 
+1.0                   
+10000.0               
+1.844451138023282E19  
+NULL                  
+ij> drop table myreal;
+0 rows inserted/updated/deleted
+ij> -- End of Real test
+-- Double Precision has a range of +/-4.9E-324 to +/-1.7976931348623157E+308
+-- Basic
+create table mydoubleprecision( a double precision );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+ij> insert into mydoubleprecision values (null), (+0), (-0), (+1), (100000000), (null),
+(1.79769E+308), (2.225E-307);
+8 rows inserted/updated/deleted
+ij> select a from mydoubleprecision;
+A                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0E8                 
+NULL                  
+1.79769E308           
+2.225E-307            
+ij> select sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+10000.0               
+NULL                  
+1.3407796239501852E154
+4.716990566028302E-154
+ij> select -sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+-10000.0              
+NULL                  
+-1.3407796239501852E1&
+-4.716990566028302E-1&
+ij> select sqrt(sqrt(-sqrt(-sqrt(a)))) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> SELECT SQRT(SQRT(-SQRT(-SQRT(A)))) FROM MYDOUBLEPRECISION;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> select sqrt(sqrt(sqrt(sqrt(a)))) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+3.1622776601683795    
+NULL                  
+1.8446742063214512E19 
+6.826657681281494E-20 
+ij> select distinct sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+0.0                   
+4.716990566028302E-154
+1.0                   
+10000.0               
+1.3407796239501852E154
+NULL                  
+ij> drop table mydoubleprecision;
+0 rows inserted/updated/deleted
+ij> -- End of Double Precision test
+-- Float has a the range or a java.lang.Float or java.lang.Double depending on
+-- the precision you specify.  Below a is a double, b is a float
+create table myfloat( a float, b float(23) );
+0 rows inserted/updated/deleted
+ij> select sqrt(a), sqrt(b) from myfloat;
+1                     |2                     
+---------------------------------------------
+ij> select columnname, columndatatype
+from sys.syscolumns c, sys.systables t where c.referenceid = t.tableid and t.tablename='MYFLOAT';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+A                                                                                                                               |DOUBLE         
+B                                                                                                                               |REAL           
+ij> insert into myfloat values (null, null), (+0, +0), (-0, -0), (+1, +1), (100000000, 100000000), (null, null),
+(1.79769E+308, 3.402E+38),
+(2.225E-307, 1.175E-37);
+8 rows inserted/updated/deleted
+ij> select a, b from myfloat;
+A                     |B            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+ij> select sqrt(a), sqrt(b) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+1.0                   |1.0                   
+10000.0               |10000.0               
+NULL                  |NULL                  
+1.3407796239501852E154|1.844451138023282E19  
+4.716990566028302E-154|3.427827260414494E-19 
+ij> select -sqrt(a), -sqrt(b) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+-1.0                  |-1.0                  
+-10000.0              |-10000.0              
+NULL                  |NULL                  
+-1.3407796239501852E1&|-1.844451138023282E19 
+-4.716990566028302E-1&|-3.427827260414494E-19
+ij> select sqrt(sqrt(-sqrt(-sqrt(a)))), sqrt(sqrt(-sqrt(-sqrt(b)))) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> SELECT SQRT(SQRT(-SQRT(-SQRT(A)))), SQRT(SQRT(-SQRT(-SQRT(B)))) FROM MYFLOAT;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> select sqrt(sqrt(sqrt(sqrt(a)))), sqrt(sqrt(sqrt(sqrt(b)))) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+1.0                   |1.0                   
+3.1622776601683795    |3.1622776601683795    
+NULL                  |NULL                  
+1.8446742063214512E19 |255.99612668910464    
+6.826657681281494E-20 |0.004919006155611499  
+ij> select distinct sqrt(a) from myfloat;
+1                     
+----------------------
+0.0                   
+4.716990566028302E-154
+1.0                   
+10000.0               
+1.3407796239501852E154
+NULL                  
+ij> select distinct sqrt(b) from myfloat;
+1                     
+----------------------
+0.0                   
+3.427827260414494E-19 
+1.0                   
+10000.0               
+1.844451138023282E19  
+NULL                  
+ij> drop table myfloat;
+0 rows inserted/updated/deleted
+ij> -- End of Float test
+-- Test some different statements, just in case
+-- beetle 5804 - support FLOAT built-in function
+create table foo( a float );
+0 rows inserted/updated/deleted
+ij> insert into foo values ( sqrt(FLOAT( 1)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values ( sqrt(FLOAT( 2)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 3)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 4)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (     (FLOAT(-5)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- this insert should fail
+insert into foo values ( sqrt(FLOAT(-3)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 2, column 31.
+ij> autocommit off;
+ij> prepare p1 as 'select a from foo';
+ij> prepare p2 as 'insert into foo select a*(-1) from foo';
+ij> execute p1;
+A                     
+----------------------
+ij> execute p2;
+0 rows inserted/updated/deleted
+ij> execute p1;
+A                     
+----------------------
+ij> insert into foo values ( sqrt(FLOAT( 6)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 7)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 8)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values ( sqrt(FLOAT( 9)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (     (FLOAT(10)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- few negative tests
+-- insert should fail
+insert into foo values ( sqrt(FLOAT(-7)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 3, column 31.
+ij> prepare p3 as 'select sqrt(a) from foo';
+ij> -- executing p3 should fail
+execute p3;
+1                     
+----------------------
+ij> -- these should pass
+execute p1;
+A                     
+----------------------
+ij> execute p2;
+0 rows inserted/updated/deleted
+ij> execute p1;
+A                     
+----------------------
+ij> rollback;
+ij> commit;
+ij> autocommit on;
+ij> insert into foo values ( sqrt(FLOAT( 11)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 12)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 13)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 14)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (     (FLOAT( 15)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- these 2 inserts should fail
+insert into foo values (-sqrt(FLOAT(-12)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 2, column 31.
+ij> insert into foo values ( sqrt(FLOAT(-13)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- these should pass
+autocommit off;
+ij> execute p1;
+A                     
+----------------------
+ij> execute p3;
+1                     
+----------------------
+ij> execute p1;
+A                     
+----------------------
+ij> -- executing p2 should fail
+execute p2;
+0 rows inserted/updated/deleted
+ij> autocommit on;
+ij> select * from foo;
+A                     
+----------------------
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> -- End of SQRT test.  For all valid types.  Un-escaped function.
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.
+-- Integer, Smallint, Bigint, Decimal
+create table myint( a int );
+0 rows inserted/updated/deleted
+ij> create table myinteger( a Integer );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from myint;
+1                     
+----------------------
+ij> select sqrt(a) from myinteger;
+1                     
+----------------------
+ij> drop table myint;
+0 rows inserted/updated/deleted
+ij> drop table myinteger;
+0 rows inserted/updated/deleted
+ij> create table mysmallint( a smallint );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mysmallint;
+1                     
+----------------------
+ij> drop table mysmallint;
+0 rows inserted/updated/deleted
+ij> create table mybigint( a bigint );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mybigint;
+1                     
+----------------------
+ij> drop table mybigint;
+0 rows inserted/updated/deleted
+ij> create table mydecimal( a decimal );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mydecimal;
+1                     
+----------------------
+ij> drop table mydecimal;
+0 rows inserted/updated/deleted
+ij> -- For escape function.
+-- Integer
+-- Basic
+values{ fn sqrt(INT('0'))};
+ERROR 42X01: Syntax error: Encountered "INT" at line 6, column 17.
+ij> -- Smallint
+-- Basic
+-- beetle 5805 - support INT[EGER] built-in function
+values{ fn sqrt(SMALLINT('0'))};
+1                     
+----------------------
+0.0                   
+ij> -- Bigint
+-- Basic
+-- beetle 5809 - support BIGINT built-in function
+values{ fn sqrt(BIGINT('0'))};
+1                     
+----------------------
+0.0                   
+ij> -- Real
+-- Basic
+-- beetle 5806 - support REAL built-in function
+values{fn sqrt( REAL( 0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 4, column 17.
+ij> values{fn sqrt( REAL(-0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL(-1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL(-1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 3.402E+38)               )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL(-3.402E+38) + 1           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> -- Error
+values{fn sqrt( REAL( 3.402E+38 * 2)           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 2, column 17.
+ij> values{fn sqrt(-REAL( NaN)                     )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 1.40129846432481707e-45) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 3.40282346638528860e+38) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> -- Double Precision/Double
+-- Basic
+-- beetle 5803 - support DOUBLE_[PRECISION] built-in function
+values{fn  sqrt( DOUBLE( 0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn  sqrt( DOUBLE(-0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn  sqrt( DOUBLE( 1)                      )};
+1                     
+----------------------
+1.0                   
+ij> values{fn -sqrt( DOUBLE(1)                       )};
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 11.
+ij> values{fn  sqrt( DOUBLE( 1000000.001)            )};
+1                     
+----------------------
+1000.0000005          
+ij> values{fn -sqrt( DOUBLE(1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 11.
+ij> values{fn -sqrt( DOUBLE(1.79769E+308)            )};
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 11.
+ij> values{fn  sqrt( DOUBLE( 1.79769E+308) + 1       )};
+1                     
+----------------------
+1.3407796239501852E154
+ij> values{fn  sqrt( DOUBLE( 2.225E-307 + 1)         )};
+1                     
+----------------------
+1.0                   
+ij> -- Error
+values{fn  sqrt( DOUBLE(-1)                      )};
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> values{fn  sqrt( DOUBLE(-1000000.001)            )};
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1000000.001'.
+ij> values{fn  sqrt( DOUBLE(-1.79769E+308)           )};
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.79769E308'.
+ij> values{fn  sqrt( DOUBLE( 1.79769E+308 * 2)       )};
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn  sqrt(-DOUBLE( NaN)                    )};
+ERROR 42X04: Column 'NAN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NAN' is not a column in the target table.
+ij> values{fn  sqrt( DOUBLE( 4.9E-324)               )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn  sqrt( DOUBLE( 1.7976931348623157E308) )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- Decimal/Numeric
+-- Basic
+-- beetle 5802 - support DEC[IMAL] built-in function
+values{ fn sqrt(DEC('0'))};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 4, column 17.
+ij> -- More generic test
+values{ fn sqrt( 0+1+.1 ) };
+1                     
+----------------------
+1.0488088481701516    
+ij> values{ fn sqrt( +0+1.000000001 ) };
+1                     
+----------------------
+1.0000000005          
+ij> VALUES{ FN sqrt( 100+200+300 ) };
+1                     
+----------------------
+24.49489742783178     
+ij> values{ fn sqrt( 0-1-.1 ) };
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.1'.
+ij> values{ fn sqrt( -0-1.000000001 ) };
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.000000001'.
+ij> VALUES{ FN sqrt( 100-200-300 ) };
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-400.0'.
+ij> -- Error
+values{ fn sqrt('null') };
+ERROR 42X25: The 'SQRT' function is not allowed on the 'CHAR' type.
+ij> -- sqrt as a keyword
+create table sqrt( a int );
+0 rows inserted/updated/deleted
+ij> -- End of SQRT test.
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.  For all valid types, un-escaped function.
+create table myreal( a real );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from myreal;
+1                     
+----------------------
+ij> insert into myreal values ( 3.402E+38 );
+1 row inserted/updated/deleted
+ij> select a from myreal;
+A            
+-------------
+3.402E38     
+ij> -- Prepare Statements, should pass
+-- beetle 5806 - support REAL built-in function
+autocommit off;
+ij> prepare p1 as 'select a from myreal where ? <> 1';
+ij> execute p1 using 'values  sqrt(REAL( 0 ))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> execute p1 using 'values -sqrt(REAL( 20))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> execute p1 using 'values  sqrt(REAL( 20))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> -- this should fail
+execute p1 using 'values  sqrt(REAL(-20))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> -- Prepare Statements, should pass
+-- beetle 5806 - support REAL built-in function
+prepare p2 as 'select a from myreal where ? <> 1';
+ij> execute p2 using 'values {fn sqrt (REAL( 0 ))}';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 18.
+ij> execute p2 using 'values {fn -sqrt(REAL( 20))}';
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 12.
+ij> execute p2 using 'values {fn sqrt (REAL( 20))}';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 18.
+ij> -- this should fail
+execute p2 using 'values {fn  sqrt(REAL(-20))}';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 18.
+ij> autocommit on;
+ij> -- mod function
+create table modfn(s smallint, i int, b bigint, c char(10), d decimal(6,3), r real, dbl double);
+0 rows inserted/updated/deleted
+ij> insert into modfn values(0, 0, 0, '0', 0.0, 0.0, 0.0);
+1 row inserted/updated/deleted
+ij> insert into modfn values(5, 5, 5, '5', 5.0, 5.0, 5.0);
+1 row inserted/updated/deleted
+ij> insert into modfn values(null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> select { fn mod(s, 3) } from modfn;
+1          
+-----------
+0          
+2          
+NULL       
+ij> select { fn mod(i, 3) } from modfn;
+1          
+-----------
+0          
+2          
+NULL       
+ij> select { fn mod(b, 3) } from modfn;
+1                   
+--------------------
+0                   
+2                   
+NULL                
+ij> select { fn mod(c, 3) } from modfn;
+1          
+-----------
+0          
+2          
+NULL       
+ij> select { fn mod(d, 3) } from modfn;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'DECIMAL' and a right operand type of 'INTEGER' is not supported.
+ij> select { fn mod(r, 3) } from modfn;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'REAL' and a right operand type of 'INTEGER' is not supported.
+ij> select { fn mod(dbl, 3) } from modfn;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'DOUBLE' and a right operand type of 'INTEGER' is not supported.
+ij> select { fn mod(67, t) } from modfn where s <> 0;
+ERROR 42X04: Column 'T' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T' is not a column in the target table.
+ij> select { fn mod(67, s) } from modfn where s <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, i) } from modfn where s <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, b) } from modfn where s <> 0;
+1                   
+--------------------
+2                   
+ij> select { fn mod(67, c) } from modfn where s <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, d) } from modfn where s <> 0;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'INTEGER' and a right operand type of 'DECIMAL' is not supported.
+ij> select { fn mod(67, r) } from modfn where s <> 0;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'INTEGER' and a right operand type of 'REAL' is not supported.
+ij> select { fn mod(67, dbl) } from modfn where s <> 0;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'INTEGER' and a right operand type of 'DOUBLE' is not supported.
+ij> select { fn mod(s, s) } from modfn where s = 0;
+1     
+------
+ERROR 22012: Attempt to divide by zero.
+ij> select { fn mod(i, i) } from modfn where s = 0;
+1          
+-----------
+ERROR 22012: Attempt to divide by zero.
+ij> select { fn mod(i, b) } from modfn where s = 0;
+1                   
+--------------------
+ERROR 22012: Attempt to divide by zero.
+ij> select { fn mod(s, s) } from modfn where s is null;
+1     
+------
+NULL  
+ij> select { fn mod(i, i) } from modfn where s is null;
+1          
+-----------
+NULL       
+ij> select { fn mod(i, b) } from modfn where s is null;
+1                   
+--------------------
+NULL                
+ij> select { fn mod(67, i) } from modfn where i <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, b) } from modfn where b <> 0;
+1                   
+--------------------
+2                   
+ij> -- this query should fail because of incompatible arguments
+select { fn mod('rrrr', b) } from modfn  where b <> 0;
+1                   
+--------------------
+ERROR 22018: Invalid character string format for type BIGINT.
+ij> values { fn mod(23, 9)};
+1          
+-----------
+5          
+ij> values mod(23, 9);
+1          
+-----------
+5          
+ij> create table mod(mod int);
+0 rows inserted/updated/deleted
+ij> insert into mod values(1);
+1 row inserted/updated/deleted
+ij> select mod from mod;
+MOD        
+-----------
+1          
+ij> select mod(mod,mod) from mod;
+1          
+-----------
+0          
+ij> drop table mod;
+0 rows inserted/updated/deleted
+ij> drop table modfn;
+0 rows inserted/updated/deleted
+ij> -- Using Strings in escape function
+create table myStr( a varchar(10) );
+0 rows inserted/updated/deleted
+ij> insert into myStr values ( '123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( ' 123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( ' 12 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '  2 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '1a3' );
+1 row inserted/updated/deleted
+ij> select * from myStr;
+A         
+----------
+123       
+ 123      
+ 12       
+  2       
+1a3       
+ij> select sqrt(a) from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'VARCHAR' type.
+ij> select {fn sqrt(a)} from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'VARCHAR' type.
+ij> select {fn sqrt( '-12' ) } from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'CHAR' type.
+ij> select {fn sqrt( '-1a2' ) } from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'CHAR' type.
+ij> drop table myreal;
+0 rows inserted/updated/deleted
+ij> drop table myStr;
+0 rows inserted/updated/deleted
+ij> -- End of SQRT test
+-- CHAR AND VARCHAR 
+--
+-- create some tables
+create table t1 (c15a char(15), c15b char(15), vc15a varchar(15),
+	vc15b varchar(15), lvc long varchar);
+0 rows inserted/updated/deleted
+ij> create table t2 (c20 char(20), c30 char(30), c40 char(40),
+				 vc20 varchar(20), vc30 varchar(30), vc40 varchar(40),
+				lvc long varchar);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 (c15a) values(null);
+1 row inserted/updated/deleted
+ij> insert into t1 values('1', '2', '3', '4', '5');
+1 row inserted/updated/deleted
+ij> insert into t1 values('111111', '222222222222222', 
+					  '333333', '444444444444444',
+					'555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555');
+1 row inserted/updated/deleted
+ij> insert into t1 values('555555    ', '66          ', 
+					  '777777    ', '88          ',
+					'99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     ');
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- mixing char and bit (illegal)
+values X'11' || 'asdf';
+ERROR 42884: No authorized routine named '||' of type 'FUNCTION' having compatible arguments was found.
+ij> values 'adsf' || X'11';
+ERROR 42884: No authorized routine named '||' of type 'FUNCTION' having compatible arguments was found.
+ij> -- ? parameter on both sides
+values ? || ?;
+ERROR 42X35: It is not allowed for both operands of '||' to be ? parameters.
+ij> -- simple positive
+values 'aaa' || 'bbb';
+1     
+------
+aaabbb
+ij> values X'aaaa' || X'bbbb';
+1       
+--------
+aaaabbbb
+ij> -- non-blank truncation error on char result
+insert into t2 (c20) select c15a || c15b from t1 where c15a = '111111';
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '111111         222222222222222' to length 20.
+ij> insert into t2 (vc20) select vc15a || vc15b from t1 where c15a= '111111';
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '333333444444444444444' to length 20.
+ij> insert into t2 (c20) select lvc || lvc from t1 where c15a = '111111';
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '555555555555555555555555555555555555555555555555555555555555&' to length 20.
+ij> maximumdisplaywidth 512;
+ij> -- positive tests
+-- blank truncation on varchar
+insert into t2 (c20) select vc15a || vc15b from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c20 from t2;
+C20                 
+--------------------
+777777    88        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- no blank truncation on char
+insert into t2 (c30) select c15a || c15b from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+555555         66             
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- long varchar
+insert into t2 (c30) select lvc || lvc from t1 where c15a = '1';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+55                            
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- vc || c -> vc
+insert into t2 (c30) select vc15a || c15a from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+777777    555555              
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- c || vc -> vc
+insert into t2 (c30) select c15a || vc15a || '9' from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+555555         777777    9    
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- vc || c -> lvc
+insert into t2 (lvc) select c15a || vc15a from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select lvc from t2;
+LVC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+555555         777777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+ij> select length(lvc) from t2;
+1          
+-----------
+25         
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- lvc || lvc - > lvc
+insert into t2 (lvc) select lvc || lvc from t1;
+4 rows inserted/updated/deleted
+ij> select lvc from t2;
+LVC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+55                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
+555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555                                                                                                                                                                          
+99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                                                                                                                                                                                                                                     
+ij> delete from t2;
+4 rows inserted/updated/deleted
+ij> -- Parameters can be used in DB2 UDB if one operand is either CHAR(n) or VARCHAR(n), 
+-- where n is less than 128, then other is VARCHAR(254 - n). 
+-- In all other cases the data type is VARCHAR(254).
+autocommit off;
+ij> -- ? || c
+prepare pc as 'select ? || c15a from t1';
+ij> execute pc using 'values (''left'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+left1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+left111111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+left555555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+ij> -- c || ?
+prepare cp as 'select c15a || ? from t1';
+ij> execute cp using 'values (''right'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+1              right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+111111         right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+555555         right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+ij> -- ? || v
+prepare pv as 'select ? || vc15a from t1';
+ij> execute pv using 'values (''left'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+left3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+left333333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+left777777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+ij> -- v || ?
+prepare vp as 'select vc15a || ? from t1';
+ij> execute vp using 'values (''right'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+3right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+333333right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
+777777    right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
+ij> -- Parameters cannot be used in DB2 UDB 
+-- if one operand is a long varchar [for bit data] data type. 
+-- An invalid parameter marker error is thrown in DB2 UDB (SQLSTATE 42610).
+-- lvc || ?
+prepare lvp as 'select lvc || ? from t1';
+ij> execute lvp using 'values (''right'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+5right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555right                                                                                                                                                                                                                                                                                                                                                
+99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     right                                                                                                                                                                                                                                                                                                                                                                   
+ij> -- ? || lvc
+prepare plv as 'select ? || lvc from t1';
+ij> execute plv using 'values (''left'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+left5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+left555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555                                                                                                                                                                                                                                                                                                                                                 
+left99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                                                                                                                                                                                                                                                                                                                                                                                         
+ij> autocommit on;
+ij> -- multiple concatenations
+insert into t2 (c30, vc30) values ('111  ' || '222  ' || '333   ',
+								   '444  ' || '555  ' || '666   ');
+1 row inserted/updated/deleted
+ij> select c30, vc30 from t2;
+C30                           |VC30                          
+-------------------------------------------------------------
+111  222  333                 |444  555  666                 
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- concatenation on a long varchar
+create table t3 (c1 long varchar, c2 long varchar);
+0 rows inserted/updated/deleted
+ij> insert into t3 values ('c1   ', 'c2');
+1 row inserted/updated/deleted
+ij> insert into t2 (c30, vc30) select t3.c1 || t3.c2, t3.c2 || t3.c1 from t3;
+1 row inserted/updated/deleted
+ij> select c30, vc30 from t2;
+C30                           |VC30                          
+-------------------------------------------------------------
+c1   c2                       |c2c1                          
+ij> delete from t2;
+1 row inserted/updated/deleted
+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> ------------------------------------------------------------------------------------
+-- CHAR (n) FOR BIT DATA AND VARCHAR (n) FOR BIT DATA
+-- try some cases zero length cases
+values X''|| X'80';
+1 
+--
+80
+ij> values X'01'|| X'';
+1 
+--
+01
+ij> -- create some tables
+create table t1 (b16a char(2) for bit data, b16b char(2) for bit data, vb16a varchar(2) for bit data, vb16b varchar(2) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> create table t2 (b20 char(3) for bit data, b60 char(8) for bit data, b80 char(10) for bit data,
+				 vb20 varchar(3) for bit data, vb60 varchar(8) for bit data, vb80 varchar(10) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 (b16a) values(null);
+1 row inserted/updated/deleted
+ij> insert into t1 values(X'11', X'22', X'33', X'44', X'55');
+1 row inserted/updated/deleted
+ij> insert into t1 values(X'1111', X'2222', 
+					  X'3333', X'4444',
+					  X'5555');
+1 row inserted/updated/deleted
+ij> insert into t1 values(X'5555', X'66', 
+					  X'7777', X'88',
+					  X'9999');
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- non-blank truncation error on bit result
+insert into t2 (b20) select b16a || b16b from t1 where b16a = X'1111';
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '11112222' to length 3.
+ij> insert into t2 (vb20) select vb16a || vb16b from t1 where b16a= X'1111';
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR () FOR BIT DATA '33334444' to length 3.
+ij> -- positive tests
+-- truncation on bit varying
+insert into t2 (b20) select vb16a || vb16b from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select b20 from t2;
+B20   
+------
+777788
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- bc || b -> vb
+insert into t2 (b80) select vb16a || b16a from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select b80 from t2;
+B80                 
+--------------------
+77775555202020202020
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- b || vb -> vb
+insert into t2 (b80) select b16a || vb16a || X'99' from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select b80 from t2;
+B80                 
+--------------------
+55557777992020202020
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- b || lbv -> lbv
+insert into t2 (lbv) select b16a || lbv from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+55559999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- lbv || b -> lbv
+insert into t2 (lbv) select lbv || b16a from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+99995555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- vb || lbv -> lbv
+insert into t2 (lbv) select vb16a || lbv from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+77779999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- lbv || vb -> lbv
+insert into t2 (lbv) select lbv || vb16a from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+99997777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- Parameters can be used in DB2 UDB 
+-- if one operand is either CHAR(n) [for bit data] or VARCHAR(n) [for bit data], 
+-- where n is less than 128, then other is VARCHAR(254 - n). 
+-- In all other cases the data type is VARCHAR(254).
+autocommit off;
+ij> -- ? || b
+prepare pb as 'select ? || b16a from t1';
+ij> execute pb using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+abcd1120                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd1111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd5555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- b || ?
+prepare bp as 'select b16a || ? from t1';
+ij> execute bp using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+1120abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+1111abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+5555abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- ? || vb
+prepare pvb as 'select ? || vb16a from t1';
+ij> execute pvb using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+abcd33                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+abcd3333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd7777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- vb || ?
+prepare vbp as 'select vb16a || ? from t1';
+ij> execute vbp using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+33abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+3333abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+7777abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- Parameters cannot be used in DB2 UDB 
+-- if one operand is a long varchar [for bit data] data type. 
+-- An invalid parameter marker error is thrown in DB2 UDB (SQLSTATE 42610).
+-- ? || lbv
+prepare plbv as 'select ? || lbv from t1';
+ij> execute plbv using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+abcd55                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+abcd5555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd9999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- lbv || ?
+prepare lbvp as 'select lbv || ? from t1';
+ij> execute lbvp using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+55abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+5555abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+9999abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> autocommit on;
+ij> -- multiple concatenations
+insert into t2 (b80, vb80, lbv) values (X'e0' || X'A0' || X'20',
+								   X'10' || X'11' || X'e0',
+								   X'1234' || X'A0' || X'20');
+1 row inserted/updated/deleted
+ij> select b80, vb80, lbv from t2;
+B80                 |VB80                |LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+e0a02020202020202020|1011e0              |1234a020                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- concatenation on a byte
+create table t3 (b1 char(1) for bit data, b2 char(1) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into t3 values (X'11', X'22');
+1 row inserted/updated/deleted
+ij> insert into t2 (b80, vb80) select t3.b1 || t3.b2, t3.b2 || t3.b1 from t3;
+1 row inserted/updated/deleted
+ij> select b80, vb80 from t2;
+B80                 |VB80                
+-----------------------------------------
+11222020202020202020|2211                
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- clean up the prepared statements
+remove pc;
+ij> remove cp;
+ij> remove vp;
+ij> remove pv;
+ij> remove pb;
+ij> remove bp;
+ij> remove pvb;
+ij> remove vbp;
+ij> remove lvp;
+ij> remove plv;
+ij> remove plbv;
+ij> remove lbvp;
+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> -- reset maximumdisplaywidth
+maximumdisplaywidth 128;
+ij> --
+--
+-- the like tests are all run through the unit test
+-- mechanism that is fired off with this test's
+-- properties file.  that test tests all the %, _ combinations
+-- to exhaustion.
+--
+-- we show that the language level support works, here, which is:
+-- the syntax
+-- char and varchar columns
+-- not can be applied and pushed around with it
+-- parameters (would need to be .java to show completely...)
+-- not other types of columns
+--
+create table t (c char(20), v varchar(20), lvc long varchar);
+0 rows inserted/updated/deleted
+ij> insert into t values('hello','world', 'nice day, huh?');
+1 row inserted/updated/deleted
+ij> insert into t values('goodbye','planet', 'see you later');
+1 row inserted/updated/deleted
+ij> insert into t values('aloha','orb', 'hang loose');
+1 row inserted/updated/deleted
+ij> -- subquery on left side
+select * from t where (select max(c) from t) like '%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+goodbye             |planet              |see you later                                                                                                                   
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where c like 'h%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+ij> select * from t where v like '%or%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where lvc like '%y%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+goodbye             |planet              |see you later                                                                                                                   
+ij> -- these four should all have the same results:
+select * from t where not v like '%or%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> select * from t where not (v like '%or%');
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> select * from t where 1=0 or not v like '%or%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> select * from t where not (1=0 or not v not like '%or%');
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> -- these two should have the same results:
+select * from t where c like '%lo%' or v like '%o%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where v like '%o%' or c like '%lo%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> -- these three should have the same results:
+select * from t where c like '%lo%' and 0=0;
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where c like '%lo%' and 1=1;
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where 1=1 and c like '%lo%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> -- we can at least show the parameters compile...
+autocommit off;
+ij> prepare s as 'select * from t where v like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where ? like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where c like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where lvc like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where lvc like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> autocommit on;
+ij> create table n (i int, r real, d date, u char(10));
+0 rows inserted/updated/deleted
+ij> -- these should succeed
+insert into n values (1, 1.1, date('1111-11-11'), '%');
+1 row inserted/updated/deleted
+ij> insert into n values (2, 2.2, date('2222-2-2'), 'haha');
+1 row inserted/updated/deleted
+ij> select * from n where u like 'haha______';
+I          |R            |D         |U         
+-----------------------------------------------
+2          |2.2          |2222-02-02|haha      
+ij> -- now, with an index
+create table m (i int, r real, d date, u varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into m select * from n;
+2 rows inserted/updated/deleted
+ij> select * from m where u like 'haha';
+I          |R            |D         |U         
+-----------------------------------------------
+ij> select * from m where u like 'haha______';
+I          |R            |D         |U         
+-----------------------------------------------
+2          |2.2          |2222-02-02|haha      
+ij> create index i1 on m(u);
+0 rows inserted/updated/deleted
+ij> select * from m where u like 'haha';
+I          |R            |D         |U         
+-----------------------------------------------
+ij> select * from m where u like 'haha______';
+I          |R            |D         |U         
+-----------------------------------------------
+2          |2.2          |2222-02-02|haha      
+ij> -- tests for column like constant optimization
+create table u (c char(10), vc varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into u values ('hello', 'hello');
+1 row inserted/updated/deleted
+ij> select * from u where c like 'hello';
+C         |VC        
+---------------------
+ij> select * from u where vc like 'hello';
+C         |VC        
+---------------------
+hello     |hello     
+ij> select * from u where c like 'hello     ';
+C         |VC        
+---------------------
+hello     |hello     
+ij> select * from u where vc like 'hello     ';
+C         |VC        
+---------------------
+ij> -- cleanup
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table n;
+0 rows inserted/updated/deleted
+ij> drop table m;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> -- testing JDBC escaped length function
+-- JDBC length is defined as the number of characters in a string without trailing blanks.
+values {FN LENGTH('hello     ') };
+1          
+-----------
+5          
+ij> values {FN LENGTH(rtrim('hello     ')) };
+1          
+-----------
+5          
+ij> -- defect 5749. rtrim() over substr() used to raise ASSERT failure.
+create table t1 (c1 char(10));
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('testing');
+1 row inserted/updated/deleted
+ij> select rtrim(substr(' asdf', 1, 3)) from t1;
+1   
+----
+ as 
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql_nonSPS.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ejbql_nonSPS.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,63 @@
+ij> -- this file contains any ejbql tests which produce an error which
+-- includes a column number. The column number will change for SPS tests
+-- so these tests can't be included in allAsSPS
+-- absolute is not a reserved word any more
+create table absolute( a int );
+0 rows inserted/updated/deleted
+ij> values{ fn abs( NULL ) };
+ERROR 42X01: Syntax error: Encountered "NULL" at line 1, column 17.
+ij> values{ fn abs( null ) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 17.
+ij> values{ fn abs( ) };
+ERROR 42X01: Syntax error: Encountered ")" at line 1, column 17.
+ij> -- Error
+values{ fn concat( ) };
+ERROR 42X01: Syntax error: Encountered ")" at line 2, column 20.
+ij> values{ fn concat( 'error0' ) };
+ERROR 42X01: Syntax error: Encountered ")" at line 1, column 29.
+ij> values  fn concat( 'syntax', ' error1' );
+ERROR 42X01: Syntax error: Encountered "concat" at line 1, column 12.
+ij> values{ fn concat { 'syntax', ' error2' }};
+ERROR 42X01: Syntax error: Encountered "{" at line 1, column 19.
+ij> values{ fn concat( 'syntax', ' error3' });
+ERROR 42X01: Syntax error: Encountered "}" at line 1, column 40.
+ij> values{ fn concat( fn concat( 'nested', ' not ' ), ' allowed!' ) };
+ERROR 42X01: Syntax error: Encountered "concat" at line 1, column 23.
+ij> values{ fn concat( values{ fn concat( 'nested', ' not ' ) }, ' allowed!' ) };
+ERROR 42X01: Syntax error: Encountered "values" at line 1, column 20.
+ij> values{ fn locate( null, null ) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 20.
+ij> values{ fn locate( null, ''   ) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 20.
+ij> values{ fn locate( '', null   ) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 24.
+ij> values{ fn locate( null, null,1) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 20.
+ij> values{ fn locate( null, ''  ,1) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 20.
+ij> values{ fn locate( '', null  ,1) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 24.
+ij> values{ fn sqrt( NULL ) };
+ERROR 42X01: Syntax error: Encountered "NULL" at line 1, column 18.
+ij> values{ fn sqrt( null ) };
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 18.
+ij> values{ fn sqrt( ) };
+ERROR 42X01: Syntax error: Encountered ")" at line 1, column 18.
+ij> -- Substring tests. Valid only as escaped function
+values substring('asdf', 1);
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> values substring(X'101101', 3);
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> values substring('asdf', 1, 2);
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> values {fn substring('asdf', 1)};
+1   
+----
+asdf
+ij> values {fn substring(X'101101', 3)};
+ERROR 42X25: The 'SUBSTR' function is not allowed on the 'CHAR () FOR BIT DATA' type.
+ij> values {fn substring('asdf', 1, 2)};
+1   
+----
+as  
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/errorCode.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/errorCode.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,56 @@
+ij> --
+-- this test shows the error code functionality
+--
+-- specify an invalid driver
+driver 'java.lang.Integer';
+IJ ERROR: Could not locate class java.lang.Integer
+ij> -- now a valid driver
+driver 'org.apache.derby.jdbc.EmbeddedDriver';
+ij> -- specify an invalid database
+connect 'asdfasdf';
+ERROR 08001: No suitable driver (errorCode = 0)
+ij> -- now a valid database, but no create
+connect 'jdbc:derby:wombat';
+ERROR XJ004: Database 'wombat' not found. (errorCode = 40000)
+ij> -- now a valid database
+connect 'jdbc:derby:wombat;create=true';
+ij> -- create the table
+create table t(i int, s smallint);
+0 rows inserted/updated/deleted
+ij> -- populate the table
+insert into t values (1,2);
+1 row inserted/updated/deleted
+ij> insert into t values (null,2);
+1 row inserted/updated/deleted
+ij> -- parser error
+-- bug 5701
+create table t(i nt, s smallint);
+ERROR 42X01: Syntax error: Encountered "" at line 3, column 18. (errorCode = 30000)
+ij> -- non-boolean where clause
+select * from t where i;
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression. (errorCode = 30000)
+ij> -- invalid correlation name for "*"
+select asdf.* from t;
+ERROR 42X10: 'ASDF' is not an exposed table name in the scope in which it appears. (errorCode = 30000)
+ij> -- execution time error
+select i/0 from t;
+1          
+-----------
+ERROR 22012: Attempt to divide by zero. (errorCode = 30000)
+ij> -- test ErrorMessages VTI
+select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '07000';
+SQL_&|MESSAGE                                                                                                                         |SEVERITY   
+--------------------------------------------------------------------------------------------------------------------------------------------------
+07000|At least one parameter to the current statement is uninitialized.                                                               |20000      
+ij> select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '22012';
+SQL_&|MESSAGE                                                                                                                         |SEVERITY   
+--------------------------------------------------------------------------------------------------------------------------------------------------
+22012|Attempt to divide by zero.                                                                                                      |20000      
+ij> select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '42X74';
+SQL_&|MESSAGE                                                                                                                         |SEVERITY   
+--------------------------------------------------------------------------------------------------------------------------------------------------
+42X74|Invalid CALL statement syntax.                                                                                                  |20000      
+ij> -- cleanup
+drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/executeUpdate.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/executeUpdate.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8 @@
+executeUpdate Test Starts
+PASS - create table
+PASS - insert 1 row
+PASS - insert 3 rows
+Rows in table should be 1,2,3,4
+PASS - correct rows in table
+PASS - drop table
+executeUpdate Test ends

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/fk_nonSPS.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/fk_nonSPS.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,937 @@
+ij> -- ** insert fkBulkInsert.sql
+--
+-- test foreign key checking.  first
+-- check that we do proper checking.
+-- then make sure that dependencies interact
+-- correctly with foreign keys
+CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> create table p (c1 char(1), y int not null, c2 char(1), x int not null, constraint pk primary key (x,y));
+0 rows inserted/updated/deleted
+ij> create table f (x int not null, s smallint, y int not null, constraint fk foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into p values ('1',1,'1',1);
+1 row inserted/updated/deleted
+ij> -- should pass, foreign key constraint satisfied
+insert into f 
+values 
+	(1,1,1),
+	(1,1,1),
+	(1,1,1),	
+	(1,1,1),
+	(1, 0, 1),
+	(1,1,1),
+	(1,0,1),
+	(1, 0, 1);
+8 rows inserted/updated/deleted
+ij> -- should FAIL, foreign key constraint violated
+delete from f;
+8 rows inserted/updated/deleted
+ij> insert into f 
+values 
+	(1,1,1),
+	(1,1,1),
+	(1,1,1),	
+	(1,1,1),
+	(1, 1, 1),
+	(2,1,666),
+	(1,1,0),
+	(0, 1, 0);
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (2,666).  The statement has been rolled back.
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- make sure boundary conditions are ok, null insert set
+create table f (c1 char(1), y int, c2 char(1), x int, constraint fk foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into f 
+	select * from p where 1 = 2;
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> drop table p;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- self referencing
+create table s (x int not null primary key, y int references s, z int references s);
+0 rows inserted/updated/deleted
+ij> -- ok
+insert into s 
+values 
+	(1,1,1),
+	(2,1,1),
+	(10,2,1),	
+	(11,1,2),
+	(12,4,4),
+	(4,1,1),
+	(13,null,null),
+	(14,1,2),
+	(15,null, 1);
+9 rows inserted/updated/deleted
+ij> delete from s;
+9 rows inserted/updated/deleted
+ij> -- bad
+insert into s 
+values 
+	(1,1,1),
+	(2,1,1),
+	(10,2,1),	
+	(11,1,2),
+	(12,4,4),
+	(4,1,1),
+	(13,null,null),
+	(14,1,2),
+	(15,666, 1);
+ERROR 23503: INSERT on table 'S' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (666).  The statement has been rolled back.
+ij> -- now a test for depenencies.
+-- the insert will create new index conglomerate numbers,
+-- so we want to test that a statement with a constraint
+-- check that is dependent on the conglomerate number that
+-- is being changed is invalidated
+create table x (x int not null, y int, constraint pk primary key (x));
+0 rows inserted/updated/deleted
+ij> create table y (x int , y int, constraint fk foreign key (x) references x);
+0 rows inserted/updated/deleted
+ij> prepare ix as 
+	'insert into x 
+	values
+		(0,0),
+		(1,1),
+		(2,2)';
+ij> prepare ix2 as 
+	'insert into x 
+	values
+		(3,3),
+		(4,4)';
+ij> prepare iy as 
+	'insert into y 
+	values
+		(0,0),
+		(1,1),
+		(2,2)';
+ij> prepare dy as 'delete from y where x = 1';
+ij> prepare dx as 'delete from x where x = 1';
+ij> execute ix;
+3 rows inserted/updated/deleted
+ij> autocommit off;
+ij> commit;
+ij> -- ok
+execute dy;
+0 rows inserted/updated/deleted
+ij> -- ok
+execute dx;
+1 row inserted/updated/deleted
+ij> -- will fail, no key 1 in x
+execute iy;
+ERROR 23503: INSERT on table 'Y' caused a violation of foreign key constraint 'FK' for key (1).  The statement has been rolled back.
+ij> rollback;
+ij> commit;
+ij> execute iy;
+3 rows inserted/updated/deleted
+ij> execute dy;
+1 row inserted/updated/deleted
+ij> execute dx;
+1 row inserted/updated/deleted
+ij> remove ix;
+ij> remove ix2;
+ij> remove iy;
+ij> remove dy;
+ij> remove dx;
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> autocommit on;
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- ** insert fkddl.sql
+-- simple syntax checks
+-- column constraint
+create table p1 (x int not null, constraint pk1 primary key(x));
+0 rows inserted/updated/deleted
+ij> create table u1 (x int not null unique);
+0 rows inserted/updated/deleted
+ij> -- table constraint
+create table p2 (x int not null, y dec(5,2) not null, constraint pk2 primary key (x,y));
+0 rows inserted/updated/deleted
+ij> create table u2 (x int not null, y dec(5,2) not null, constraint uk2 unique (x,y));
+0 rows inserted/updated/deleted
+ij> create table p3 (x char(10) not null, constraint pk3 primary key (x));
+0 rows inserted/updated/deleted
+ij> -- for future use
+create schema otherschema;
+0 rows inserted/updated/deleted
+ij> create table otherschema.p1 (x int not null primary key);
+0 rows inserted/updated/deleted
+ij> -- 
+-- Negative test cases for foreign key TABLE
+-- constraints
+--
+-- negative: fk table, no table
+create table f (x int, constraint fk foreign key (x) references notthere);
+ERROR X0Y46: Constraint 'FK' is invalid: referenced table NOTTHERE does not exist.
+ij> -- negative: fk table, bad column
+create table f (x int, constraint fk foreign key (x) references p1(notthere));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P1' that matches the number and types of the columns in the foreign key.
+ij> -- negative: fk table, no constraint
+create table f (x int, constraint fk foreign key (x) references p2(y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> -- negative: fk table, wrong type
+create table f (x smallint, constraint fk foreign key (x) references p1(x));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P1' that matches the number and types of the columns in the foreign key.
+ij> -- negative: cannot reference a system table
+create table f (x char(36), constraint fk foreign key (x) references sys.sysforeignkeys(constraintid));
+ERROR 42Y08: Foreign key constraints are not allowed on system tables.
+ij> -- negative: bad schema
+create table f (x char(36), constraint fk foreign key (x) references badschema.x);
+ERROR 42Y07: Schema 'BADSCHEMA' does not exist
+ij> -- negative: bad column list
+create table f (x dec(5,2), y int, constraint fk foreign key (x,z) references p2(x,y));
+ERROR 42X93: Table 'F' contains a constraint definition with column 'Z' which is not in the table.
+ij> -- negative: wrong number of columns
+create table f (x dec(5,2), y int, constraint fk foreign key (x) references p2(x,y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> create table f (x dec(5,2), y int, constraint fk foreign key (x,y) references p2(x));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> -- 
+-- Negative test cases for foreign key COLUMN
+-- constraints
+--
+-- negative: fk column, no table
+create table f (x int references notthere);
+ERROR X0Y46: Constraint 'xxxxGENERATED-IDxxxx' is invalid: referenced table NOTTHERE does not exist.
+ij> -- negative: fk column, bad column
+create table f (x int references p1(notthere));
+ERROR X0Y44: Constraint 'xxxxGENERATED-IDxxxx' is invalid: there is no unique or primary key constraint on table 'APP.P1' that matches the number and types of the columns in the foreign key.
+ij> -- negative: fk column, no constraint
+create table f (x int references p2(y));
+ERROR X0Y44: Constraint 'xxxxGENERATED-IDxxxx' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> -- negative: fk column, wrong type
+create table f (x smallint references p1(x));
+ERROR X0Y44: Constraint 'xxxxGENERATED-IDxxxx' is invalid: there is no unique or primary key constraint on table 'APP.P1' that matches the number and types of the columns in the foreign key.
+ij> -- negative: cannot reference a system table
+create table f (x char(36) references sys.sysforeignkeys(constraintid));
+ERROR 42Y08: Foreign key constraints are not allowed on system tables.
+ij> -- negative: bad schema
+create table f (x char(36) references badschema.x);
+ERROR 42Y07: Schema 'BADSCHEMA' does not exist
+ij> --
+-- Some type checks.  Types must match exactly
+--
+-- ok
+create table f (d dec(5,2), i int, constraint fk foreign key (i,d) references p2(x,y));
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> create table f (i int, d dec(5,2), constraint fk foreign key (i,d) references p2(x,y));
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> create table f (d dec(5,2), i int, constraint fk foreign key (i,d) references u2(x,y));
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> create table f (i int, d dec(5,2), constraint fk foreign key (i,d) references u2(x,y));
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> create table f (c char(10) references p3(x));
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- type mismatch
+create table f (i int, d dec(5,1), constraint fk foreign key (i,d) references p2(x,y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> create table f (i int, d dec(4,2), constraint fk foreign key (i,d) references p2(x,y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> create table f (i int, d dec(4,2), constraint fk foreign key (i,d) references p2(x,y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> create table f (i int, d numeric(5,2), constraint fk foreign key (i,d) references p2(x,y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> create table f (c char(11) references p3(x));
+ERROR X0Y44: Constraint 'xxxxGENERATED-IDxxxx' is invalid: there is no unique or primary key constraint on table 'APP.P3' that matches the number and types of the columns in the foreign key.
+ij> create table f (c varchar(10) references p3(x));
+ERROR X0Y44: Constraint 'xxxxGENERATED-IDxxxx' is invalid: there is no unique or primary key constraint on table 'APP.P3' that matches the number and types of the columns in the foreign key.
+ij> -- wrong order
+create table f (d dec(5,2), i int, constraint fk foreign key (d,i) references p2(x,y));
+ERROR X0Y44: Constraint 'FK' is invalid: there is no unique or primary key constraint on table 'APP.P2' that matches the number and types of the columns in the foreign key.
+ij> -- check system tables 
+create table f (x int, constraint fk foreign key (x) references p1);
+0 rows inserted/updated/deleted
+ij> select constraintname, referencecount 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.keyconstraintid = c.constraintid order by constraintname;
+CONSTRAINTNAME                                                                                                                  |REFERENCEC&
+--------------------------------------------------------------------------------------------------------------------------------------------
+PK1                                                                                                                             |1          
+ij> create table f2 (x int, constraint fk2 foreign key (x) references p1(x));
+0 rows inserted/updated/deleted
+ij> create table f3 (x int, constraint fk3 foreign key (x) references p1(x));
+0 rows inserted/updated/deleted
+ij> create table f4 (x int, constraint fk4 foreign key (x) references p1(x));
+0 rows inserted/updated/deleted
+ij> select distinct constraintname, referencecount 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.keyconstraintid = c.constraintid order by constraintname;
+CONSTRAINTNAME                                                                                                                  |REFERENCEC&
+--------------------------------------------------------------------------------------------------------------------------------------------
+PK1                                                                                                                             |4          
+ij> select constraintname 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.constraintid = c.constraintid
+	order by 1;
+CONSTRAINTNAME                                                                                                                  
+--------------------------------------------------------------------------------------------------------------------------------
+FK                                                                                                                              
+FK2                                                                                                                             
+FK3                                                                                                                             
+FK4                                                                                                                             
+ij> -- we should not be able to drop the primary key 
+alter table p1 drop constraint pk1;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK' is dependent on that object.
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK2' is dependent on that object.
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK3' is dependent on that object.
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK4' is dependent on that object.
+ij> drop table p1;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK' is dependent on that object.
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK2' is dependent on that object.
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK3' is dependent on that object.
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK1' because CONSTRAINT 'FK4' is dependent on that object.
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- now lets drop the foreign keys and try again
+drop table f2;
+0 rows inserted/updated/deleted
+ij> drop table f3;
+0 rows inserted/updated/deleted
+ij> drop table f4;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> select constraintname, referencecount 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.keyconstraintid = c.constraintid order by constraintname;
+CONSTRAINTNAME                                                                                                                  |REFERENCEC&
+--------------------------------------------------------------------------------------------------------------------------------------------
+PK1                                                                                                                             |1          
+ij> alter table f drop constraint fk;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- ok
+alter table p1 drop constraint pk1;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- we shouldn't be able to add an fk on p1 now
+alter table f add constraint fk foreign key (x) references p1;
+ERROR X0Y41: Constraint 'FK' is invalid: referenced table APP.P1 has no primary key.  Either add a primary key to APP.P1 or explicity specify the columns of a unique constraint that this foreign key references.
+ij> -- add the constraint and try again
+alter table p1 add constraint pk1 primary key (x);
+0 rows inserted/updated/deleted
+ij> create table f2 (x int, constraint fk2 foreign key (x) references p1(x));
+0 rows inserted/updated/deleted
+ij> create table f3 (x int, constraint fk3 foreign key (x) references p1(x));
+0 rows inserted/updated/deleted
+ij> create table f4 (x int, constraint fk4 foreign key (x) references p1(x));
+0 rows inserted/updated/deleted
+ij> -- drop constraint
+alter table f4 drop constraint fk4;
+0 rows inserted/updated/deleted
+ij> alter table f3 drop constraint fk3;
+0 rows inserted/updated/deleted
+ij> alter table f2 drop constraint fk2;
+0 rows inserted/updated/deleted
+ij> alter table p1 drop constraint pk1;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- all fks are gone, right?
+select constraintname 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.constraintid = c.constraintid order by constraintname;
+CONSTRAINTNAME                                                                                                                  
+--------------------------------------------------------------------------------------------------------------------------------
+ij> -- cleanup what we have done so far
+drop table p1;
+0 rows inserted/updated/deleted
+ij> drop table p2;
+0 rows inserted/updated/deleted
+ij> drop table u1;
+0 rows inserted/updated/deleted
+ij> drop table u2;
+0 rows inserted/updated/deleted
+ij> drop table otherschema.p1;
+0 rows inserted/updated/deleted
+ij> drop schema otherschema restrict;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- will return dependencies for SPS metadata queries now created by default 
+-- database is created.
+create table default_sysdepends_count(a int);
+0 rows inserted/updated/deleted
+ij> insert into default_sysdepends_count select count(*) from sys.sysdepends;
+1 row inserted/updated/deleted
+ij> select * from default_sysdepends_count;
+A          
+-----------
+0          
+ij> -- 
+-- now we are going to do some self referencing
+-- tests.
+-- 
+create table selfref (p char(10) not null primary key, 
+		f char(10) references selfref);
+0 rows inserted/updated/deleted
+ij> drop table selfref;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- ok
+create table selfref (p char(10) not null, 
+		f char(10) references selfref, 
+		constraint pk primary key (p));
+0 rows inserted/updated/deleted
+ij> drop table selfref;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- ok
+create table selfref (p char(10) not null, f char(10), 
+		constraint f foreign key (f) references selfref(p), 
+		constraint pk primary key (p));
+0 rows inserted/updated/deleted
+ij> -- should fail
+alter table selfref drop constraint pk;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'PK' because CONSTRAINT 'F' is dependent on that object.
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- ok
+alter table selfref drop constraint f;
+0 rows inserted/updated/deleted
+ij> alter table selfref drop constraint pk;
+0 rows inserted/updated/deleted
+ij> drop table selfref;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- what if a pk references another pk?  should just
+-- drop the direct references (nothing special, really)
+create table pr1(x int not null, 
+		constraint pkr1 primary key (x));
+0 rows inserted/updated/deleted
+ij> create table pr2(x int not null, 
+		constraint pkr2 primary key(x), 
+		constraint fpkr2 foreign key (x) references pr1);
+0 rows inserted/updated/deleted
+ij> create table pr3(x int not null, 
+		constraint pkr3 primary key(x), 
+		constraint fpkr3 foreign key (x) references pr2);
+0 rows inserted/updated/deleted
+ij> select constraintname, referencecount from sys.sysconstraints order by constraintname;
+CONSTRAINTNAME                                                                                                                  |REFERENCEC&
+--------------------------------------------------------------------------------------------------------------------------------------------
+FPKR2                                                                                                                           |0          
+FPKR3                                                                                                                           |0          
+PK3                                                                                                                             |0          
+PKR1                                                                                                                            |1          
+PKR2                                                                                                                            |1          
+PKR3                                                                                                                            |0          
+ij> -- now drop constraint pkr1
+alter table pr2 drop constraint fpkr2;
+0 rows inserted/updated/deleted
+ij> alter table pr1 drop constraint pkr1;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- pkr1 and pfkr2 are gone
+select constraintname, referencecount from sys.sysconstraints order by constraintname;
+CONSTRAINTNAME                                                                                                                  |REFERENCEC&
+--------------------------------------------------------------------------------------------------------------------------------------------
+FPKR3                                                                                                                           |0          
+PK3                                                                                                                             |0          
+PKR2                                                                                                                            |1          
+PKR3                                                                                                                            |0          
+ij> -- cleanup
+drop table pr3;
+0 rows inserted/updated/deleted
+ij> drop table pr2;
+0 rows inserted/updated/deleted
+ij> drop table pr1;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- should return 0, confirm no unexpected dependencies
+-- verify that all rows in sys.sysdepends got dropped 
+-- apart from sps dependencies
+create table default_sysdepends_count2(a int);
+0 rows inserted/updated/deleted
+ij> insert into default_sysdepends_count2 select count(*) from sys.sysdepends;
+1 row inserted/updated/deleted
+ij> select default_sysdepends_count2.a - default_sysdepends_count.a
+    from default_sysdepends_count2, default_sysdepends_count;
+1          
+-----------
+0          
+ij> -- dependencies and spses
+create table x (x int not null primary key, y int, constraint xfk foreign key (y) references x);
+0 rows inserted/updated/deleted
+ij> create table y (x int, constraint yfk foreign key (x) references x);
+0 rows inserted/updated/deleted
+ij> prepare ss as 'select * from x';
+ij> prepare si as 'insert into x values (1,1)';
+ij> prepare su as 'update x set x = x+1, y=y+1';
+ij> alter table x drop constraint xfk;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- drop the referenced fk, should force su to be recompiled
+-- since it no longer has to check the foreign key table
+alter table y drop constraint yfk;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- ok
+drop table x;
+0 rows inserted/updated/deleted
+ij> remove ss;
+ij> remove si;
+ij> remove su;
+ij> drop table f3;
+0 rows inserted/updated/deleted
+ij> drop table f2;
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> -- verify that all rows in sys.sysdepends got dropped 
+-- apart from sps dependencies
+-- Since, with beetle 5352; we create metadata SPS for network server at database bootup time
+-- so the dependencies for SPS are there.
+create table default_sysdepends_count3(a int);
+0 rows inserted/updated/deleted
+ij> insert into default_sysdepends_count3 select count(*) from sys.sysdepends;
+1 row inserted/updated/deleted
+ij> select default_sysdepends_count3.a - default_sysdepends_count.a
+    from default_sysdepends_count3, default_sysdepends_count;
+1          
+-----------
+0          
+ij> -- ** insert fkdml.sql
+autocommit on;
+ij> --
+-- DML and foreign keys
+--
+drop table s;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S' because it does not exist.
+ij> drop table f3;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'F3' because it does not exist.
+ij> drop table f2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'F2' because it does not exist.
+ij> drop table f;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'F' because it does not exist.
+ij> drop table p;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'P' because it does not exist.
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> create table p (x int not null, y int not null, constraint pk primary key (x,y));
+0 rows inserted/updated/deleted
+ij> create table f (x int, y int, constraint fk foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into p values (1,1);
+1 row inserted/updated/deleted
+ij> -- ok
+insert into f values (1,1);
+1 row inserted/updated/deleted
+ij> -- fail
+insert into f values (2,1);
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (2,1).  The statement has been rolled back.
+ij> insert into f values (1,2);
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (1,2).  The statement has been rolled back.
+ij> -- nulls are ok
+insert into f values (1,null);
+1 row inserted/updated/deleted
+ij> insert into f values (null,null);
+1 row inserted/updated/deleted
+ij> insert into f values (1,null);
+1 row inserted/updated/deleted
+ij> -- update on pk, fail
+update p set x = 2;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> update p set y = 2;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> update p set x = 1, y = 2;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> update p set x = 2, y = 1;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> update p set x = 2, y = 2;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> -- ok
+update p set x = 1, y = 1;
+1 row inserted/updated/deleted
+ij> -- delete pk, fail
+delete from p;
+ERROR 23503: DELETE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> -- delete fk, ok
+delete from f;
+4 rows inserted/updated/deleted
+ij> insert into f values (1,1);
+1 row inserted/updated/deleted
+ij> -- update fk, fail
+update f set x = 2;
+ERROR 23503: UPDATE on table 'F' caused a violation of foreign key constraint 'FK' for key (2,1).  The statement has been rolled back.
+ij> update f set y = 2;
+ERROR 23503: UPDATE on table 'F' caused a violation of foreign key constraint 'FK' for key (1,2).  The statement has been rolled back.
+ij> update f set x = 1, y = 2;
+ERROR 23503: UPDATE on table 'F' caused a violation of foreign key constraint 'FK' for key (1,2).  The statement has been rolled back.
+ij> update f set x = 2, y = 1;
+ERROR 23503: UPDATE on table 'F' caused a violation of foreign key constraint 'FK' for key (2,1).  The statement has been rolled back.
+ij> -- update fk, ok
+update f set x = 1, y = 1;
+1 row inserted/updated/deleted
+ij> -- nulls ok
+update f set x = null, y = 1;
+1 row inserted/updated/deleted
+ij> update f set x = 1, y = null;
+1 row inserted/updated/deleted
+ij> update f set x = null, y = null;
+1 row inserted/updated/deleted
+ij> delete from f;
+1 row inserted/updated/deleted
+ij> insert into f values (1,1);
+1 row inserted/updated/deleted
+ij> insert into p values (2,2);
+1 row inserted/updated/deleted
+ij> -- ok
+update f set x = x+1, y = y+1;
+1 row inserted/updated/deleted
+ij> select * from f;
+X          |Y          
+-----------------------
+2          |2          
+ij> select * from p;
+X          |Y          
+-----------------------
+1          |1          
+2          |2          
+ij> -- ok
+update p set x = x+1, y = y+1;
+2 rows inserted/updated/deleted
+ij> -- fail
+update p set x = x+1, y = y+1;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (2,2).  The statement has been rolled back.
+ij> -- 
+-- BOUNDARY CONDITIONS
+--
+delete from f;
+1 row inserted/updated/deleted
+ij> delete from p;
+2 rows inserted/updated/deleted
+ij> insert into f select * from f;
+0 rows inserted/updated/deleted
+ij> delete from p where x = 9999;
+0 rows inserted/updated/deleted
+ij> update p set x = x+1, y=y+1 where x = 999;
+0 rows inserted/updated/deleted
+ij> insert into p values (1,1);
+1 row inserted/updated/deleted
+ij> insert into f values (1,1);
+1 row inserted/updated/deleted
+ij> update p set x = x+1, y=y+1 where x = 999;
+0 rows inserted/updated/deleted
+ij> delete from p where x = 9999;
+0 rows inserted/updated/deleted
+ij> insert into f select * from f;
+1 row inserted/updated/deleted
+ij> --
+-- test a CURSOR
+--
+delete from f;
+2 rows inserted/updated/deleted
+ij> delete from p;
+1 row inserted/updated/deleted
+ij> insert into p values (1,1);
+1 row inserted/updated/deleted
+ij> insert into f values (1,1);
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> get cursor  c as 'select * from p for update of x';
+ij> next c;
+X          |Y          
+-----------------------
+1          |1          
+ij> -- fail
+update p set x = 666 where current of c;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> close c;
+ij> get cursor  c as 'select * from f for update of x';
+ij> next c;
+X          |Y          
+-----------------------
+1          |1          
+ij> -- fail
+update f set x = 666 where current of c;
+ERROR 23503: UPDATE on table 'F' caused a violation of foreign key constraint 'FK' for key (666,1).  The statement has been rolled back.
+ij> close c;
+ij> commit;
+ij> autocommit on;
+ij> delete from f;
+1 row inserted/updated/deleted
+ij> delete from p;
+1 row inserted/updated/deleted
+ij> insert into p values (0,0), (1,1), (2,2), (3,3), (4,4);
+5 rows inserted/updated/deleted
+ij> insert into f values (1,1);
+1 row inserted/updated/deleted
+ij> -- lets add some additional foreign keys to the mix
+create table f2 (x int, y int, constraint fk2 foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into f2 values (2,2);
+1 row inserted/updated/deleted
+ij> create table f3 (x int, y int, constraint fk3 foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into f3 values (3,3);
+1 row inserted/updated/deleted
+ij> -- ok
+update p set x = x+1, y = y+1;
+5 rows inserted/updated/deleted
+ij> -- error, fk1
+update p set x = x+1;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> update p set y = y+1;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> update p set x = x+1, y = y+1;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> -- fail of fk3
+update p set y = 666 where y = 3;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK3' for key (3,3).  The statement has been rolled back.
+ij> -- fail of fk2
+update p set x = 666 where x = 2;
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK2' for key (2,2).  The statement has been rolled back.
+ij> -- cleanup
+drop table f;
+0 rows inserted/updated/deleted
+ij> drop table f2;
+0 rows inserted/updated/deleted
+ij> drop table f3;
+0 rows inserted/updated/deleted
+ij> drop table p;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> --
+-- SELF REFERENCING
+--
+create table s (x int not null primary key, y int references s, z int references s);
+0 rows inserted/updated/deleted
+ij> -- ok
+insert into s values (1,null,null);
+1 row inserted/updated/deleted
+ij> -- ok
+update s set y = 1;
+1 row inserted/updated/deleted
+ij> -- fail
+update s set z = 2;
+ERROR 23503: UPDATE on table 'S' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (2).  The statement has been rolled back.
+ij> -- ok
+update s set z = 1;
+1 row inserted/updated/deleted
+ij> -- ok
+insert into s values (2, 1, 1);
+1 row inserted/updated/deleted
+ij> -- ok
+update s set x = 666 where x = 2;
+1 row inserted/updated/deleted
+ij> -- ok
+update s set x = x+1, y = y+1, z = z+1;
+2 rows inserted/updated/deleted
+ij> delete from s;
+2 rows inserted/updated/deleted
+ij> -- ok
+insert into s values (1,null,null);
+1 row inserted/updated/deleted
+ij> -- ok
+insert into s values (2,null,null);
+1 row inserted/updated/deleted
+ij> -- ok
+update s set y = 2 where x = 1;
+1 row inserted/updated/deleted
+ij> -- ok
+update s set z = 1 where x = 2;
+1 row inserted/updated/deleted
+ij> select * from s;
+X          |Y          |Z          
+-----------------------------------
+1          |2          |NULL       
+2          |NULL       |1          
+ij> -- fail 
+update s set x = 0 where x = 1;
+ERROR 23503: UPDATE on table 'S' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> --
+-- Now we are going to do a short but sweet
+-- check to make sure we are actually hitting
+-- the correct columns
+--
+create table p (c1 char(1), y int not null, c2 char(1), x int not null, constraint pk primary key (x,y));
+0 rows inserted/updated/deleted
+ij> create table f (x int, s smallint, y int, constraint fk foreign key (x,y) references p);
+0 rows inserted/updated/deleted
+ij> insert into p values ('1',1,'1',1);
+1 row inserted/updated/deleted
+ij> -- ok
+insert into f values (1,1,1);
+1 row inserted/updated/deleted
+ij> insert into p values ('0',0,'0',0);
+1 row inserted/updated/deleted
+ij> -- ok
+update p set x = x+1, y=y+1;
+2 rows inserted/updated/deleted
+ij> -- fail
+delete from p where y = 1;
+ERROR 23503: DELETE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> -- fail
+insert into f values (1,1,4);
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (1,4).  The statement has been rolled back.
+ij> delete from f;
+1 row inserted/updated/deleted
+ij> delete from p;
+2 rows inserted/updated/deleted
+ij> --
+-- Lets make sure we don't interact poorly with
+-- 'normal' deferred dml
+insert into p values ('1',1,'1',1);
+1 row inserted/updated/deleted
+ij> insert into f values (1,1,1);
+1 row inserted/updated/deleted
+ij> insert into p values ('0',0,'0',0);
+1 row inserted/updated/deleted
+ij> -- ok
+update p set x = x+1, y=y+1 where x < (select max(x)+10000 from p);
+2 rows inserted/updated/deleted
+ij> -- fail
+delete from p where y = 1 and y in (select y from p);
+ERROR 23503: DELETE on table 'P' caused a violation of foreign key constraint 'FK' for key (1,1).  The statement has been rolled back.
+ij> -- inserts
+create table f2 (x int, t smallint, y int);
+0 rows inserted/updated/deleted
+ij> insert into f2 values (1,1,4);
+1 row inserted/updated/deleted
+ij> -- fail
+insert into f select * from f2;
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (1,4).  The statement has been rolled back.
+ij> -- ok
+insert into f2 values (1,1,1);
+1 row inserted/updated/deleted
+ij> insert into f select * from f2 where y = 1;
+1 row inserted/updated/deleted
+ij> drop table f2;
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> drop table p;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> --
+-- PREPARED STATEMENTS
+--
+drop table f;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'F' because it does not exist.
+ij> drop table p;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'P' because it does not exist.
+ij> --the reason for this wait call is to wait unitil system tables row deletes
+--are completed other wise we will get different order fk checks
+--that will lead different error messages depending on when post commit thread runs
+CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> prepare s as 
+	'create table p (w int not null primary key, x int references p, y int not null, z int not null, constraint uyz unique (y,z))';
+ij> execute s;
+0 rows inserted/updated/deleted
+ij> remove s;
+ij> prepare s as 
+	'create table f (w int references p, x int, y int, z int, constraint fk foreign key (y,z) references p (y,z))';
+ij> execute s;
+0 rows inserted/updated/deleted
+ij> remove s;
+ij> prepare s as 
+	'alter table f drop constraint fk';
+ij> execute s;
+0 rows inserted/updated/deleted
+ij> remove s;
+ij> --the reason for this wait call is to wait unitil system tables row deletes
+--are completed other wise we will get different order fk checks
+CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> prepare s as 
+	'alter table f add constraint fk foreign key (y,z) references p (y,z)';
+ij> execute s;
+0 rows inserted/updated/deleted
+ij> remove s;
+ij> prepare sf as 
+	'insert into f values (1,1,1,1)';
+ij> prepare sp as 
+	'insert into p values (1,1,1,1)';
+ij> -- fail
+execute sf;
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> -- ok
+execute sp;
+1 row inserted/updated/deleted
+ij> execute sf;
+1 row inserted/updated/deleted
+ij> insert into p values (2,2,2,2);
+1 row inserted/updated/deleted
+ij> remove sf;
+ij> prepare sf as 
+	'update f set w=w+1, x = x+1, y=y+1, z=z+1';
+ij> -- ok
+execute sf;
+1 row inserted/updated/deleted
+ij> remove sp;
+ij> prepare sp as 
+	'update p set w=w+1, x = x+1, y=y+1, z=z+1';
+ij> -- ok
+execute sp;
+2 rows inserted/updated/deleted
+ij> remove sp;
+ij> prepare sp as 
+	'delete from p where x =1';
+ij> -- ok
+execute sp;
+0 rows inserted/updated/deleted
+ij> remove sp;
+ij> remove sf;
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> drop table p;
+0 rows inserted/updated/deleted
+ij> CALL WAIT_FOR_POST_COMMIT();
+0 rows inserted/updated/deleted
+ij> drop procedure WAIT_FOR_POST_COMMIT;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/floattypes.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/floattypes.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2422 @@
+ij> -- ** insert decimal.sql
+--
+-- Test DECIMAL and NUMERIC.  Note that we
+-- know that DECIMAL and NUMERIC are pretty much the
+-- same thing, so we don't do much testing with
+-- the two types other than to make sure the 
+-- syntax is the same.
+-- test some of the meta data
+drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> create table tmp (tmpcoldecimal dec(8,4), tmpcolnumeric numeric);
+0 rows inserted/updated/deleted
+ij> select columndatatype 
+	from sys.syscolumns 
+	where columnname like 'TMPCOL%';
+COLUMNDATATYPE 
+---------------
+DECIMAL(8,4)   
+NUMERIC(5,0)   
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- Negative tests, bad precision/scale
+create table bad (d decimal(11,12));
+ERROR 42Y43: Scale '12' is not a valid scale with precision of '11'.
+ij> create table bad (d decimal(0,0));
+ERROR 42X48: Value '0' is not a valid precision for DECIMAL.
+ij> create table bad (d decimal(0));
+ERROR 42X48: Value '0' is not a valid precision for DECIMAL.
+ij> create table bade(d decimal(32));
+ERROR 42X48: Value '32' is not a valid precision for DECIMAL.
+ij> create table bade(d decimal(31,32));
+ERROR 42Y42: Scale '32' is not a valid scale for a DECIMAL.
+ij> create table bade(d decimal(32,32));
+ERROR 42X48: Value '32' is not a valid precision for DECIMAL.
+ij> -- Simple acceptance test
+values cast (1 as dec);
+1     
+------
+1     
+ij> values cast (1 as decimal);
+1     
+------
+1     
+ij> values cast (1 as decimal(5));
+1     
+------
+1     
+ij> values cast (1 as dec(5));
+1     
+------
+1     
+ij> values cast (1.1 as dec(5,3));
+1       
+--------
+1.100   
+ij> values cast (1.1 as numeric(5,3));
+1       
+--------
+1.100   
+ij> -- cast to all valid types
+values cast (1.1 as int);
+1          
+-----------
+1          
+ij> values cast (1.1 as bigint);
+1                   
+--------------------
+1                   
+ij> values cast (1.1 as smallint);
+1     
+------
+1     
+ij> values cast (1.1 as real);
+1            
+-------------
+1.1          
+ij> values cast (1.1 as float);
+1                     
+----------------------
+1.1                   
+ij> values cast (1.1 as char(10));
+1         
+----------
+1.1       
+ij> -- cast all valid types to dec
+values cast ((cast (1 as int)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as bigint)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as smallint)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as real)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as float)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as char(10))) as dec);
+1     
+------
+1     
+ij> -- cast overflow,
+-- make a number bigger than everything but 
+-- decimal, and then try to cast it
+drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> create table tmp(d decimal(31 ,0));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (cast (
+'100000000000000000000000000000' as dec(31,0)));
+1 row inserted/updated/deleted
+ij> update tmp set d = d * d;
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> select cast(d as int) from tmp;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select cast(d as smallint) from tmp;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select cast(d as bigint) from tmp;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select cast(d as float) from tmp;
+1                     
+----------------------
+1.0E29                
+ij> select cast(d as real) from tmp;
+1            
+-------------
+1.0E29       
+ij> select cast(d as double precision) from tmp;
+1                     
+----------------------
+1.0E29                
+ij> -- test alternative syntax
+select cast(d as double) from tmp;
+1                     
+----------------------
+1.0E29                
+ij> insert into tmp values (+1.79769E+308);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> select * from tmp;
+D                               
+--------------------------------
+100000000000000000000000000000  
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- try inserting various types into decimal.
+-- we expect silent truncation of the fraction
+drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> create table tmp (d decimal(5,2));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (100);
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as smallint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as bigint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as real));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as double precision));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100.999 as real));
+1 row inserted/updated/deleted
+ij> insert into tmp values (100.999e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (100.999);
+1 row inserted/updated/deleted
+ij> --too big
+insert into tmp values (1000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as smallint));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as bigint));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as real));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as double precision));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000.999 as real));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000.999e0);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000.999);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> --try a few values that hit borders in how java.lang.Double work
+--(this is really tied to some details in the internals of
+-- SQLDecimal)
+insert into tmp values (1000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> create table tmp(d dec(1,1));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (0.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.1e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.1e0);
+1 row inserted/updated/deleted
+ij> select * from tmp;
+D   
+----
+0.0 
+0.0 
+0.1 
+-0.1
+0.1 
+-0.1
+ij> delete from tmp;
+6 rows inserted/updated/deleted
+ij> insert into tmp values (0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.0e10);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.0e10);
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (0 as smallint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (0 as bigint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (0 as real));
+1 row inserted/updated/deleted
+ij> select * from tmp;
+D   
+----
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> create table tmp(d dec(1,0));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (1.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (1.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-1.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-1.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (1 as smallint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (1 as bigint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (1 as real));
+1 row inserted/updated/deleted
+ij> select * from tmp;
+D   
+----
+1   
+1   
+1   
+-1  
+-1  
+-1  
+1   
+1   
+1   
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- Using the DOUBLE built-in function
+-- test that double maps to the double data type
+-- all of the following should work if DOUBLE appears in the COLUMNDATATYPE column
+create table tmp (x double);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (1);
+1 row inserted/updated/deleted
+ij> select columnname, columndatatype 
+       from sys.syscolumns c, sys.systables t 
+       where c.referenceid = t .tableid and t.tablename='TMP';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+X                                                                                                                               |DOUBLE         
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- cast dec as as a numeric type in a select list
+create table tmp (d decimal);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (1.1);
+1 row inserted/updated/deleted
+ij> --should all pass
+insert into tmp values (1);
+1 row inserted/updated/deleted
+ij> select cast(d as int) from tmp;
+1          
+-----------
+1          
+1          
+ij> select cast(d as smallint) from tmp;
+1     
+------
+1     
+1     
+ij> select cast(d as bigint) from tmp;
+1                   
+--------------------
+1                   
+1                   
+ij> select cast(d as float) from tmp;
+1                     
+----------------------
+1.0                   
+1.0                   
+ij> select cast(d as real) from tmp;
+1            
+-------------
+1.0          
+1.0          
+ij> select cast(d as double precision) from tmp;
+1                     
+----------------------
+1.0                   
+1.0                   
+ij> select cast(d as dec(10,2)) from tmp;
+1            
+-------------
+1.00         
+1.00         
+ij> select cast(d as dec(10,8)) from tmp;
+1            
+-------------
+1.00000000   
+1.00000000   
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> drop table t;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T' because it does not exist.
+ij> create table t (i int, 
+				l bigint,
+				s smallint, 
+				d double precision,
+				r real,
+				dc decimal(10,2));
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (10,		-- int
+						10,		-- bigint
+						10,		-- smallint	
+						10,		-- double
+						10,		-- real
+						10		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> insert into t values (-10,		-- int
+						-10,	-- bigint
+						-10,	-- smallint	
+						-10,	-- double
+						-10,	-- real
+						-10		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> insert into t values (0,		-- int
+						0,		-- bigint
+						0,		-- smallint	
+						0,		-- double
+						0,		-- real
+						0		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> select dc from t;
+DC           
+-------------
+NULL         
+10.00        
+-10.00       
+0.00         
+ij> select dc + i, dc + s, dc + r, dc + dc from t;
+1               |2             |3            |4             
+------------------------------------------------------------
+NULL            |NULL          |NULL         |NULL          
+20.00           |20.00         |20.0         |20.00         
+-20.00          |-20.00        |-20.0        |-20.00        
+0.00            |0.00          |0.0          |0.00          
+ij> select dc - i, dc - s, dc - r, dc - dc from t;
+1               |2             |3            |4             
+------------------------------------------------------------
+NULL            |NULL          |NULL         |NULL          
+0.00            |0.00          |0.0          |0.00          
+0.00            |0.00          |0.0          |0.00          
+0.00            |0.00          |0.0          |0.00          
+ij> select dc * i, dc * s, dc * r, dc * dc from t;
+1                      |2                 |3            |4                      
+--------------------------------------------------------------------------------
+NULL                   |NULL              |NULL         |NULL                   
+100.00                 |100.00            |100.0        |100.0000               
+100.00                 |100.00            |100.0        |100.0000               
+0.00                   |0.00              |0.0          |0.0000                 
+ij> select dc / i, dc / s, dc / r, dc / dc from t;
+1                                 |2                                 |3            |4                                 
+----------------------------------------------------------------------------------------------------------------------
+NULL                              |NULL                              |NULL         |NULL                              
+1.00000000000000000000000         |1.00000000000000000000000         |1.0          |1.000000000000000000000           
+1.00000000000000000000000         |1.00000000000000000000000         |1.0          |1.000000000000000000000           
+ERROR 22012: Attempt to divide by zero.
+ij> -- try unary minus, plus
+select -(dc * 100 / 100e0 ), +(dc * 100e0 / 100 ) from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-10.0                 |10.0                  
+10.0                  |-10.0                 
+0.0                   |0.0                   
+ij> -- test null/null, constant/null, null/constant
+select dc, i / dc, 10 / dc, dc / 10e0 from t;
+DC           |2                                 |3                                 |4                     
+----------------------------------------------------------------------------------------------------------
+NULL         |NULL                              |NULL                              |NULL                  
+10.00        |1.0000000000000000000             |1.0000000000000000000             |1.0                   
+-10.00       |1.0000000000000000000             |-1.0000000000000000000            |-1.0                  
+ERROR 22012: Attempt to divide by zero.
+ij> -- test for divide by 0
+select dc / i from t;
+1                                 
+----------------------------------
+NULL                              
+1.00000000000000000000000         
+1.00000000000000000000000         
+ERROR 22012: Attempt to divide by zero.
+ij> select 20e0 / 5e0 / 4e0, 20e0 / 4e0 / 5 from t;
+1                     |2                     
+---------------------------------------------
+1.0                   |1.0                   
+1.0                   |1.0                   
+1.0                   |1.0                   
+1.0                   |1.0                   
+ij> -- test positive/negative, negative/positive and negative/negative
+select dc, dc / -dc, (-dc) / dc, (-dc) / -dc from t;
+DC           |2                                 |3                                 |4                                 
+----------------------------------------------------------------------------------------------------------------------
+NULL         |NULL                              |NULL                              |NULL                              
+10.00        |-1.000000000000000000000          |-1.000000000000000000000          |1.000000000000000000000           
+-10.00       |-1.000000000000000000000          |-1.000000000000000000000          |1.000000000000000000000           
+ERROR 22012: Attempt to divide by zero.
+ij> -- test some "more complex" expressions
+select dc, dc + 10e0, dc - (10 - 20e0), dc - 10, dc - (20 - 10) from t;
+DC           |2                     |3                     |4               |5               
+---------------------------------------------------------------------------------------------
+NULL         |NULL                  |NULL                  |NULL            |NULL            
+10.00        |20.0                  |20.0                  |0.00            |0.00            
+-10.00       |0.0                   |0.0                   |-20.00          |-20.00          
+0.00         |10.0                  |10.0                  |-10.00          |-10.00          
+ij> -- make sure we get the right scale/precision during arithmetic
+values (9.0 + 9.0);
+1     
+------
+18.0  
+ij> values (9.9 + 9.9);
+1     
+------
+19.8  
+ij> values (-9.0 - 9.0);
+1     
+------
+-18.0 
+ij> values (-9.9 - 9.9);
+1     
+------
+-19.8 
+ij> values (9.0 * 9.0);
+1      
+-------
+81.00  
+ij> values (9.9 * 9.9);
+1      
+-------
+98.01  
+ij> values (0.9 * 0.9);
+1    
+-----
+0.81 
+ij> values (0.9999 * 0.9);
+1       
+--------
+0.89991 
+ij> values (0.9 * 0.9999);
+1       
+--------
+0.89991 
+ij> values (0.9999 * 0.9999);
+1          
+-----------
+0.99980001 
+ij> values (1.0 / 3.0);
+1                                 
+----------------------------------
+0.33333333333333333333333333333   
+ij> values (1.0 / 0.3);
+1                                 
+----------------------------------
+3.33333333333333333333333333333   
+ij> values (1.0 / 0.03);
+1                                 
+----------------------------------
+33.3333333333333333333333333333   
+ij> values (1.0 / 0.000003);
+1                                 
+----------------------------------
+333333.333333333333333333333333   
+ij> values (10000.0 / 0.000003);
+1                                 
+----------------------------------
+3333333333.33333333333333333333   
+ij> values (0.0001 / 0.0003);
+1                                 
+----------------------------------
+0.333333333333333333333333333     
+ij> values (0.1 / 3.0);
+1                                 
+----------------------------------
+0.033333333333333333333333333333  
+ij> -- huge number
+values (
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)));
+1                               
+--------------------------------
+69757574410000000000000000      
+ij> values cast(1.7e30 as dec(31));
+1                               
+--------------------------------
+1700000000000000118246355238912 
+ij> --try a tiny number 
+-- the following seems to be asking a bit
+-- too much of poor old biginteger, so try
+-- something smaller
+--values (cast(1.7e-307 as dec(2147483647,2147483640)) /
+--		(cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647))));
+--
+values cast(1 as dec(31, 20));
+1                                 
+----------------------------------
+1.00000000000000000000            
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table w (x dec, y long varchar);
+0 rows inserted/updated/deleted
+ij> select x + y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> select x - y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> select x * y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> select x / y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> -- clean up after ourselves
+drop table w;
+0 rows inserted/updated/deleted
+ij> --
+-- comparisons
+--
+insert into t values (123,			-- int
+						123,		-- bigint
+						123,		-- smallint	
+						1234.56,	-- double
+						1234.56,	-- real
+						1234.56		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> -- test =
+select dc from t where dc is null;
+DC           
+-------------
+NULL         
+ij> select dc from t where dc = 10;
+DC           
+-------------
+10.00        
+ij> select dc from t where dc = -10;
+DC           
+-------------
+-10.00       
+ij> select dc from t where dc = 0;
+DC           
+-------------
+0.00         
+ij> select dc from t where dc = 1234.45;
+DC           
+-------------
+ij> select dc from t where dc = i;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc = l;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc = s;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc = r;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc = d;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc = dc;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> -- test >
+select dc from t where dc > 10;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > -10;
+DC           
+-------------
+10.00        
+0.00         
+1234.56      
+ij> select dc from t where dc > 0;
+DC           
+-------------
+10.00        
+1234.56      
+ij> select dc from t where dc > 1234.45;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > i;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > l;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > s;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > r;
+DC           
+-------------
+ij> select dc from t where dc > d;
+DC           
+-------------
+ij> select dc from t where dc > dc;
+DC           
+-------------
+ij> -- test >=
+select dc from t where dc >= 10;
+DC           
+-------------
+10.00        
+1234.56      
+ij> select dc from t where dc >= -10;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= 0;
+DC           
+-------------
+10.00        
+0.00         
+1234.56      
+ij> select dc from t where dc >= 1234.45;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc >= i;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= l;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= s;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= r;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= d;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= dc;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> -- test <
+select dc from t where dc < 10;
+DC           
+-------------
+-10.00       
+0.00         
+ij> select dc from t where dc < -10;
+DC           
+-------------
+ij> select dc from t where dc < 0;
+DC           
+-------------
+-10.00       
+ij> select dc from t where dc < 1234.45;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc < i;
+DC           
+-------------
+ij> select dc from t where dc < l;
+DC           
+-------------
+ij> select dc from t where dc < s;
+DC           
+-------------
+ij> select dc from t where dc < r;
+DC           
+-------------
+ij> select dc from t where dc < d;
+DC           
+-------------
+ij> select dc from t where dc < dc;
+DC           
+-------------
+ij> -- test <=
+select dc from t where dc <= 10;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= -10;
+DC           
+-------------
+-10.00       
+ij> select dc from t where dc <= 0;
+DC           
+-------------
+-10.00       
+0.00         
+ij> select dc from t where dc <= 1234.45;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= i;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= l;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= s;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= r;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <= d;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <= dc;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> -- test <>
+select dc from t where dc <> 10;
+DC           
+-------------
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <> -10;
+DC           
+-------------
+10.00        
+0.00         
+1234.56      
+ij> select dc from t where dc <> 0;
+DC           
+-------------
+10.00        
+-10.00       
+1234.56      
+ij> select dc from t where dc <> 1234.45;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <> i;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc <> l;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc <> s;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc <> r;
+DC           
+-------------
+ij> select dc from t where dc <> d;
+DC           
+-------------
+ij> select dc from t where dc <> dc;
+DC           
+-------------
+ij> --
+-- test a variety of inserts and updates
+--
+drop table t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> create table t2 (i int, 
+				l bigint,
+				s smallint, 
+				d double precision,
+				r real,
+				dc decimal(10,2));
+0 rows inserted/updated/deleted
+ij> insert into t2 select * from t;
+5 rows inserted/updated/deleted
+ij> -- add a few indexes
+create index dcindex on t2(dc);
+0 rows inserted/updated/deleted
+ij> create unique index dcuniqueindex on t2(dc);
+0 rows inserted/updated/deleted
+ij> -- now do updates and confirm they are ok
+update t2 set dc = dc + 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-8.90        
+1.10         
+11.10        
+1235.66      
+NULL         
+ij> update t2 set dc = dc - 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-10.00       
+0.00         
+10.00        
+1234.56      
+NULL         
+ij> update t2 set dc = dc / 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.09        
+0.00         
+9.09         
+1122.32      
+NULL         
+ij> update t2 set dc = dc * 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.99        
+0.00         
+9.99         
+1234.55      
+NULL         
+ij> -- try some deletes
+delete from t2 where dc > 0;
+2 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.99        
+0.00         
+NULL         
+ij> delete from t2 where dc = 0;
+1 row inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.99        
+NULL         
+ij> delete from t2 where dc < 0;
+1 row inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+NULL         
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- test that we recycle values correctly
+-- when reading from a decimal table with
+-- variable length byte arrays stored
+-- via write external
+create table t (c1 char(1), d dec(20,4), c2 char(1));
+0 rows inserted/updated/deleted
+ij> create unique index tu on t(d);
+0 rows inserted/updated/deleted
+ij> insert into t values ('a', 1.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 11111.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 11111111.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 6.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 666.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', .6, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 0, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 666666.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 99999999999999.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 9.123, 'Z');
+1 row inserted/updated/deleted
+ij> select * from t;
+C1  |D                      |C2  
+---------------------------------
+a   |1.1230                 |Z   
+a   |11111.1230             |Z   
+a   |11111111.1230          |Z   
+a   |6.1230                 |Z   
+a   |666.1230               |Z   
+a   |0.6000                 |Z   
+a   |0.0000                 |Z   
+a   |666666.1230            |Z   
+a   |99999999999999.1230    |Z   
+a   |9.1230                 |Z   
+ij> update t set d = d + .0007;
+10 rows inserted/updated/deleted
+ij> select * from t;
+C1  |D                      |C2  
+---------------------------------
+a   |1.1237                 |Z   
+a   |11111.1237             |Z   
+a   |11111111.1237          |Z   
+a   |6.1237                 |Z   
+a   |666.1237               |Z   
+a   |0.6007                 |Z   
+a   |0.0007                 |Z   
+a   |666666.1237            |Z   
+a   |99999999999999.1237    |Z   
+a   |9.1237                 |Z   
+ij> drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> drop table bad;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'BAD' because it does not exist.
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- ** insert double.sql
+--
+-- Test the builtin type 'double precision'
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar
+--
+-- other things we might test:
+-- show how doubles lose precision on computations
+--
+-- Test the arithmetic operators
+--
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0);
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0);
+1 row inserted/updated/deleted
+ij> select d + d, i + d, s + d from t;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  
+400.0                 |200.0                 |300.0                 
+-400.0                |-201.0                |-300.0                
+ij> select d + d + d, d + 100 + 432e0 from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+600.0                 |732.0                 
+-600.0                |332.0                 
+ij> select d - i, i - d, d - s, s - d from t;
+1                     |2                     |3                     |4                     
+-------------------------------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  |NULL                  
+200.0                 |-200.0                |100.0                 |-100.0                
+-199.0                |199.0                 |-100.0                |100.0                 
+ij> select d - d - d, d - 100 - 432e0 from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-200.0                |-332.0                
+200.0                 |-732.0                
+ij> select i, d, i * d, d * i, d * d, d * 2, d * 2.0e0 from t;
+I          |D                     |3                     |4                     |5                     |6                     |7                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL                  |NULL                  |NULL                  |NULL                  |NULL                  
+0          |200.0                 |0.0                   |0.0                   |40000.0               |400.0                 |400.0                 
+-1         |-200.0                |200.0                 |200.0                 |40000.0               |-400.0                |-400.0                
+ij> -- try unary minus, plus
+select -(d * 100 / 100e0 ), +(d * 100e0 / 100 ) from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-200.0                |200.0                 
+200.0                 |-200.0                
+ij> -- test null/null, constant/null, null/constant
+select i, d, i / d, 10 / d, d / 10e0 from t;
+I          |D                     |3                     |4                     |5                     
+-------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL                  |NULL                  |NULL                  
+0          |200.0                 |0.0                   |0.05                  |20.0                  
+-1         |-200.0                |0.0050                |-0.05                 |-20.0                 
+ij> -- test for divide by 0
+select d / i from t;
+1                     
+----------------------
+NULL                  
+ERROR 22012: Attempt to divide by zero.
+ij> select 20e0 / 5e0 / 4e0, 20e0 / 4e0 / 5 from t;
+1                     |2                     
+---------------------------------------------
+1.0                   |1.0                   
+1.0                   |1.0                   
+1.0                   |1.0                   
+ij> -- test positive/negative, negative/positive and negative/negative
+select d, d / -d, (-d) / d, (-d) / -d from t;
+D                     |2                     |3                     |4                     
+-------------------------------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  |NULL                  
+200.0                 |-1.0                  |-1.0                  |1.0                   
+-200.0                |-1.0                  |-1.0                  |1.0                   
+ij> -- test some "more complex" expressions
+select d, d + 10e0, d - (10 - 20e0), d - 10, d - (20 - 10) from t;
+D                     |2                     |3                     |4                     |5                     
+------------------------------------------------------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  |NULL                  |NULL                  
+200.0                 |210.0                 |210.0                 |190.0                 |190.0                 
+-200.0                |-190.0                |-190.0                |-210.0                |-210.0                
+ij> -- show that decimals will go into doubles:
+select d+1.1 from t;
+1                     
+----------------------
+NULL                  
+201.1                 
+-198.9                
+ij> insert into t (d) values(1.1);
+1 row inserted/updated/deleted
+ij> select d from t where d=1.1;
+D                     
+----------------------
+1.1                   
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- test overflow
+create table s (d double precision, p double);
+0 rows inserted/updated/deleted
+ij> insert into s values (null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 101);
+1 row inserted/updated/deleted
+ij> select d + 1.7e+308 from s;
+1                     
+----------------------
+NULL                  
+1.7E308               
+1.7E308               
+ij> -- these are close enough to the infinities to overflow
+-- the null row will still get returned
+select 1.798e+308, - 1.798e+308, 'This query should not work' from s;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> select 1.8e+1000, - 1.8e+1000, 'This query should not work' from s;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- these are far enough from the infinities to work
+select 1.797e+308, - 1.797e+308, 'This query should work' from s;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+1.797E308             |-1.797E308            |This query should work
+1.797E308             |-1.797E308            |This query should work
+1.797E308             |-1.797E308            |This query should work
+ij> select 1.6e+308, - 1.6e+308, 'This query should work' from s;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+1.6E308               |-1.6E308              |This query should work
+1.6E308               |-1.6E308              |This query should work
+1.6E308               |-1.6E308              |This query should work
+ij> -- the null row will still get returned
+select d - 1.6e+308 - 0, 'This query should work' from s;
+1                     |2                     
+---------------------------------------------
+NULL                  |This query should work
+-1.6E308              |This query should work
+-1.6E308              |This query should work
+ij> select d - 1.6e+308 - 1.6e+308, 'This query should fail' from s;
+1                     |2                     
+---------------------------------------------
+NULL                  |This query should fail
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- these should fail
+select p * 1.6e+308 from s;
+1                     
+----------------------
+NULL                  
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> select p * -1.6e+308 from s;
+1                     
+----------------------
+NULL                  
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- these work
+insert into s values (-1.6e+308, 0);
+1 row inserted/updated/deleted
+ij> insert into s values (-1.797e+308, 0);
+1 row inserted/updated/deleted
+ij> -- these don't work
+insert into s values (-1.798e+308, 0);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into s values (-1.8e+308, 0);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- see two more rows
+select -d from s;
+1                     
+----------------------
+NULL                  
+0.0                   
+-1.0                  
+1.6E308               
+1.797E308             
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table w (x double precision, y long varchar);
+0 rows inserted/updated/deleted
+ij> select x + y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> select x - y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> select x * y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> select x / y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> -- clean up after ourselves
+drop table w;
+0 rows inserted/updated/deleted
+ij> --
+-- comparisons
+--
+create table c (i int, s smallint, d double precision, p double precision);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into c values (0, 0, 0e0, 0e0);
+1 row inserted/updated/deleted
+ij> insert into c values (null, null, 5e0, null);
+1 row inserted/updated/deleted
+ij> insert into c values (1, 1, 1e0, 2e0);
+1 row inserted/updated/deleted
+ij> insert into c values (1956475, 1956, 1956475e0, 1956475e0);
+1 row inserted/updated/deleted
+ij> -- select each one in turn
+select d from c where d = 0e0;
+D                     
+----------------------
+0.0                   
+ij> select d from c where d = 1e0;
+D                     
+----------------------
+1.0                   
+ij> select d from c where d = 1956475e0;
+D                     
+----------------------
+1956475.0             
+ij> -- now look for a value that isn't in the table
+select d from c where p = 2e0;
+D                     
+----------------------
+1.0                   
+ij> -- now test null = null semantics
+select d from c where d = d;
+D                     
+----------------------
+0.0                   
+5.0                   
+1.0                   
+1956475.0             
+ij> -- now test <>, <, >
+select d from c where d <> 0e0;
+D                     
+----------------------
+5.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d <> 1e0;
+D                     
+----------------------
+0.0                   
+5.0                   
+1956475.0             
+ij> select d from c where d < 1956475e0;
+D                     
+----------------------
+0.0                   
+5.0                   
+1.0                   
+ij> select d from c where d < 2e0;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> select d from c where d > d;
+D                     
+----------------------
+ij> select d from c where d > p;
+D                     
+----------------------
+ij> -- now test <=, >=
+select d from c where d <= 0e0;
+D                     
+----------------------
+0.0                   
+ij> select d from c where d <= 1e0;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> select d from c where d <= 2e0;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> select d from c where d >= 1956475e0;
+D                     
+----------------------
+1956475.0             
+ij> select d from c where d >= d;
+D                     
+----------------------
+0.0                   
+5.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d >= p;
+D                     
+----------------------
+0.0                   
+1956475.0             
+ij> -- test comparisons with int and smallint
+select d from c where d <= i;
+D                     
+----------------------
+0.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d < s;
+D                     
+----------------------
+ij> select d from c where d > i;
+D                     
+----------------------
+ij> select d from c where d >= s;
+D                     
+----------------------
+0.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d <> i;
+D                     
+----------------------
+ij> select d from c where d = s;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> -- test that the smallint gets promoted to double, and not vice versa.  65537
+-- when converted to short becomes 1
+select d from c where s = 65537e0;
+D                     
+----------------------
+ij> -- test =SQ
+-- this gets cardinality error
+select d from c where d = (select d from c);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- this works
+select d from c where d = (select d from c where d=5);
+D                     
+----------------------
+5.0                   
+ij> -- show that double is comparable to real
+create table o (c char(10), v varchar(30), dc decimal);
+0 rows inserted/updated/deleted
+ij> select d from c,o where d <> dc;
+D                     
+----------------------
+ij> -- clean up
+drop table c;
+0 rows inserted/updated/deleted
+ij> drop table o;
+0 rows inserted/updated/deleted
+ij> --
+-- test alternate syntax: just double will work for DB2 compatibility
+--
+create table db2version (d double);
+0 rows inserted/updated/deleted
+ij> drop table db2version;
+0 rows inserted/updated/deleted
+ij> --
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50),
+	d double precision);
+0 rows inserted/updated/deleted
+ij> create table target (p double precision not null);
+0 rows inserted/updated/deleted
+ij> -- we have already tested inserting integer and double literals.
+insert into source values (1, 2, '3', '4', 5);
+1 row inserted/updated/deleted
+ij> -- these will all work:
+insert into target select i from source;
+1 row inserted/updated/deleted
+ij> insert into target select s from source;
+1 row inserted/updated/deleted
+ij> insert into target select d from source;
+1 row inserted/updated/deleted
+ij> -- these will all fail:
+delete from source;
+1 row inserted/updated/deleted
+ij> insert into source values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> -- these fail because the target won't take a null -- of any type
+insert into target values(null);
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> insert into target select i from source;
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> insert into target select s from source;
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> insert into target select d from source;
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> -- expect 4 rows in target: 1, 2, 5, and 1:
+select * from target;
+P                     
+----------------------
+1.0                   
+2.0                   
+5.0                   
+ij> update target set p = p + 1;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+2.0                   
+3.0                   
+6.0                   
+ij> update target set p = p - 1;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+1.0                   
+2.0                   
+5.0                   
+ij> update target set p = p / 10;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+0.1                   
+0.2                   
+0.5                   
+ij> update target set p = p * 10;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+1.0                   
+2.0                   
+5.0                   
+ij> -- these should work
+update source set i = 1.4e8;
+1 row inserted/updated/deleted
+ij> update source set s = 1.4e4;
+1 row inserted/updated/deleted
+ij> select i, s from source where i=1.4e8 or s=1.4e4;
+I          |S     
+------------------
+140000000  |14000 
+ij> -- these should get overflow
+update source set i = 1.4e12;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> update source set s = 1.4e12;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> drop table source;
+0 rows inserted/updated/deleted
+ij> drop table target;
+0 rows inserted/updated/deleted
+ij> create table abcfloat (numtest float(20));
+0 rows inserted/updated/deleted
+ij> insert into abcfloat values (1.23456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (.123456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (-.123456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (0.223456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (-0.223456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (12345678.9);
+1 row inserted/updated/deleted
+ij> select * from abcfloat;
+NUMTEST      
+-------------
+1.2345679    
+0.12345679   
+-0.12345679  
+0.22345679   
+-0.22345679  
+1.2345679E7  
+ij> drop table abcfloat;
+0 rows inserted/updated/deleted
+ij> -- ** insert float.sql
+--
+-- Test the builtin type 'float'
+-- Float is a synonym for double or real, depending on
+-- the precision specified; so all we need to do is
+-- show the mapping here; the double and real tests
+-- show how well those types behave.
+--
+-- this shows several working versions of float, the default
+-- and all of the boundary values:
+create table t (d double precision, r real, f float, f1 float(1),
+	f23 float(23), f24 float(24), f53 float(52));
+0 rows inserted/updated/deleted
+ij> select columnname, columndatatype 
+from sys.syscolumns c, sys.systables t
+where c.referenceid = t.tableid and t.tablename='T';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+D                                                                                                                               |DOUBLE         
+F                                                                                                                               |DOUBLE         
+F1                                                                                                                              |REAL           
+F23                                                                                                                             |REAL           
+F24                                                                                                                             |DOUBLE         
+F53                                                                                                                             |DOUBLE         
+R                                                                                                                               |REAL           
+ij> -- invalid float values
+insert into t(r) values 'NaN';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> insert into t(r) values +3.4021E+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t(r) values -3.4021E+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> create table tt(c char(254));
+0 rows inserted/updated/deleted
+ij> insert into tt values -3.402E+38;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+ij> insert into t(r) select * from tt;
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> insert into t(r) values '1.0';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> update t set r = NaN;
+ERROR 42X04: Column 'NAN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NAN' is not a column in the target table.
+ij> update t set r = +3.4021E+38;
+0 rows inserted/updated/deleted
+ij> update t set r = -3.4021E+38;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tt;
+0 rows inserted/updated/deleted
+ij> -- these get errors for invalid precision values:
+create table t1 (d double precision, r real, f float(-10));
+ERROR 42X01: Syntax error: Encountered "-" at line 2, column 54.
+ij> --
+create table t2 (d double precision, r real, f float(-1));
+ERROR 42X01: Syntax error: Encountered "-" at line 2, column 54.
+ij> create table t3 (d double precision, r real, f float(0));
+ERROR 42X48: Value '0' is not a valid precision for FLOAT.
+ij> create table t4 (d double precision, r real, f float(100));
+ERROR 42X48: Value '100' is not a valid precision for FLOAT.
+ij> create table t5 (d double precision, r real, f float(53));
+ERROR 42X48: Value '53' is not a valid precision for FLOAT.
+ij> create table t6 (d double precision, r real, f float(12.3));
+ERROR 42X49: Value '12.3' is not a valid integer literal.
+ij> -- ** insert real.sql
+--
+-- Test the builtin type 'real'
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, double precision
+--
+-- other things we might test:
+-- show how reals lose precision on computations
+--
+-- Test the arithmetic operators
+--
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0, 200.0e0);
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0, -200.0e0);
+1 row inserted/updated/deleted
+ij> select r + r, d + r, i + r, s + r, r + i from t;
+1            |2                     |3            |4            |5            
+------------------------------------------------------------------------------
+NULL         |NULL                  |NULL         |NULL         |NULL         
+400.0        |400.0                 |200.0        |300.0        |200.0        
+-400.0       |-400.0                |-201.0       |-300.0       |-201.0       
+ij> select r + r + r, r + 100 + 432e0 from t;
+1            |2                     
+------------------------------------
+NULL         |NULL                  
+600.0        |732.0                 
+-600.0       |332.0                 
+ij> select r - r, r - d, d - r, r - i, i - r, r - s, s - r from t;
+1            |2                     |3                     |4            |5            |6            |7            
+-------------------------------------------------------------------------------------------------------------------
+NULL         |NULL                  |NULL                  |NULL         |NULL         |NULL         |NULL         
+0.0          |0.0                   |0.0                   |200.0        |-200.0       |100.0        |-100.0       
+0.0          |0.0                   |0.0                   |-199.0       |199.0        |-100.0       |100.0        
+ij> select r - r - r, r - 100 - 432e0 from t;
+1            |2                     
+------------------------------------
+NULL         |NULL                  
+-200.0       |-332.0                
+200.0        |-732.0                
+ij> select i, d, s, r, i * r, r * i, s * r, d * r, r * r, r * 2, r * 2.0e0 from t;
+I          |D                     |S     |R            |5            |6            |7            |8                     |9            |10           |11                    
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL  |NULL         |NULL         |NULL         |NULL         |NULL                  |NULL         |NULL         |NULL                  
+0          |200.0                 |100   |200.0        |0.0          |0.0          |20000.0      |40000.0               |40000.0      |400.0        |400.0                 
+-1         |-200.0                |-100  |-200.0       |200.0        |200.0        |20000.0      |40000.0               |40000.0      |-400.0       |-400.0                
+ij> -- try unary minus, plus
+select -(r * 100 / 100e0 ), +(r * 100e0 / 100 ) from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-200.0                |200.0                 
+200.0                 |-200.0                
+ij> -- test null/null, constant/null, null/constant
+select i, d, r, d / r, i / r, 10 / r, r / d, r / 10e0 from t;
+I          |D                     |R            |4                     |5            |6            |7                     |8                     
+-------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL         |NULL                  |NULL         |NULL         |NULL                  |NULL                  
+0          |200.0                 |200.0        |1.0                   |0.0          |0.05         |1.0                   |20.0                  
+-1         |-200.0                |-200.0       |1.0                   |0.0050       |-0.05        |1.0                   |-20.0                 
+ij> -- test for divide by 0
+select r / i from t;
+1            
+-------------
+NULL         
+ERROR 22012: Attempt to divide by zero.
+ij> -- test positive/negative, negative/positive and negative/negative
+select r, r / -r, (-r) / r, (-r) / -r from t;
+R            |2            |3            |4            
+-------------------------------------------------------
+NULL         |NULL         |NULL         |NULL         
+200.0        |-1.0         |-1.0         |1.0          
+-200.0       |-1.0         |-1.0         |1.0          
+ij> -- test some "more complex" expressions
+select r, r + 10e0, r - (10 - 20e0), r - 10, r - (20 - 10) from t;
+R            |2                     |3                     |4            |5            
+---------------------------------------------------------------------------------------
+NULL         |NULL                  |NULL                  |NULL         |NULL         
+200.0        |210.0                 |210.0                 |190.0        |190.0        
+-200.0       |-190.0                |-190.0                |-210.0       |-210.0       
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- test overflow
+create table s (d real, p real);
+0 rows inserted/updated/deleted
+ij> insert into s values (null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 101);
+1 row inserted/updated/deleted
+ij> select d + 3.4e+38 from s;
+1                     
+----------------------
+NULL                  
+3.4E38                
+3.4E38                
+ij> -- these are close enough to the infinities to overflow
+-- Can't test simple select of literal because literals are doubles
+insert into s values(3.403e+38, 3.403e+38);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into s values(- 3.403e+38, - 3.403e+38);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into s values(1.8e+100, 1.8e+100);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into s values(- 1.8e+100, - 1.8e+100);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from s;
+D            |P            
+---------------------------
+NULL         |NULL         
+0.0          |100.0        
+1.0          |101.0        
+ij> -- these are far enough from the infinities to work
+insert into s values(3.402e+38, - 3.402e+38);
+1 row inserted/updated/deleted
+ij> insert into s values(3.3e+38, - 3.3e+38);
+1 row inserted/updated/deleted
+ij> -- these show that math is promoted to double because of the double
+-- literals. If it was real math, it would fail
+select d - 3.3e+38 - 3.3e+38, p * 3.3e+38, p * -3.3e+38 from s;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  
+-6.6E38               |3.3E40                |-3.3E40               
+-6.6E38               |3.333E40              |-3.333E40             
+-3.1979999994446195E38|-1.1226600001832754E77|1.1226600001832754E77 
+-3.3000000345172877E38|-1.088999988609295E77 |1.088999988609295E77  
+ij> -- see two more rows
+select -d from s;
+1            
+-------------
+NULL         
+0.0          
+-1.0         
+-3.402E38    
+-3.3E38      
+ij> -- to do the math as reals, we have to keep it in the columns
+delete from s;
+5 rows inserted/updated/deleted
+ij> insert into s values (1,3.3e+38);
+1 row inserted/updated/deleted
+ij> -- these will fail, because the math is done as reals
+select d - p - p from s;
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select p * p from s;
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select p * -p from s;
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> delete from s;
+1 row inserted/updated/deleted
+ij> -- select values between 0 and 1
+insert into s values (.111, 1e-1);
+1 row inserted/updated/deleted
+ij> insert into s values (0.222, 0.222);
+1 row inserted/updated/deleted
+ij> select * from s;
+D            |P            
+---------------------------
+0.111        |0.1          
+0.222        |0.222        
+ij> delete from s;
+2 rows inserted/updated/deleted
+ij> insert into s values (10, 1e-10);
+1 row inserted/updated/deleted
+ij> -- underflow calculation doesn't round off, gives error.
+update s set d=d*1.4e-55, p=p*1.4e-45;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select d, p from s;
+D            |P            
+---------------------------
+10.0         |1.0E-10      
+ij> update s set d=d + 1.4e-46;
+1 row inserted/updated/deleted
+ij> select d from s;
+D            
+-------------
+10.0         
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table w (x real, y char);
+0 rows inserted/updated/deleted
+ij> select x + y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> select x - y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> select x * y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> select x / y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> -- clean up after ourselves
+drop table w;
+0 rows inserted/updated/deleted
+ij> --
+-- comparisons
+--
+create table c (i int, s smallint, d double precision, r real, l real);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into c values (0, 0, 0e0, 0e0, 0e0);
+1 row inserted/updated/deleted
+ij> insert into c values (null, null, 5e0, null, null);
+1 row inserted/updated/deleted
+ij> insert into c values (1, 1, 1e0, 2e0, 3e0);
+1 row inserted/updated/deleted
+ij> insert into c values (1956475, 1956, 1956475e0, 1956475e0, 1956475e0);
+1 row inserted/updated/deleted
+ij> -- select each one in turn
+select r from c where r = 0e0;
+R            
+-------------
+0.0          
+ij> select r from c where r = 1e0;
+R            
+-------------
+ij> select r from c where r = 1956475e0;
+R            
+-------------
+1956475.0    
+ij> -- now look for a value that isn't in the table
+select r from c where l = 2e0;
+R            
+-------------
+ij> -- now test null = null semantics
+select r from c where r = r;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> -- now test <>, <, >, <=, >=
+select r from c where r <> 0e0;
+R            
+-------------
+2.0          
+1956475.0    
+ij> select r from c where r <> 1e0;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> select r from c where r < 1956475e0;
+R            
+-------------
+0.0          
+2.0          
+ij> select r from c where r < 2e0;
+R            
+-------------
+0.0          
+ij> select r from c where r > d;
+R            
+-------------
+2.0          
+ij> select r from c where r <= l;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> select r from c where r >= r;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> -- test comparisons with int and smallint and double
+select r from c where r <= i;
+R            
+-------------
+0.0          
+1956475.0    
+ij> select r from c where r < s;
+R            
+-------------
+ij> select r from c where r > i;
+R            
+-------------
+2.0          
+ij> select r from c where r >= s;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> select r from c where r <> i;
+R            
+-------------
+2.0          
+ij> select r from c where r = s;
+R            
+-------------
+0.0          
+ij> select r from c where r = d;
+R            
+-------------
+0.0          
+1956475.0    
+ij> select r from c where r >= d;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> -- show that real is comparable to decimal
+create table o (c char(10), v varchar(30), dc decimal);
+0 rows inserted/updated/deleted
+ij> select r from c,o where r <> dc;
+R            
+-------------
+ij> -- clean up
+drop table c;
+0 rows inserted/updated/deleted
+ij> drop table o;
+0 rows inserted/updated/deleted
+ij> --
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real);
+0 rows inserted/updated/deleted
+ij> create table target (t real not null);
+0 rows inserted/updated/deleted
+ij> -- we have already tested inserting integer and double literals.
+insert into source values (1, 2, '3', '4', 5, 6);
+1 row inserted/updated/deleted
+ij> -- these will all work:
+insert into target select i from source;
+1 row inserted/updated/deleted
+ij> insert into target select s from source;
+1 row inserted/updated/deleted
+ij> insert into target select d from source;
+1 row inserted/updated/deleted
+ij> insert into target select r from source;
+1 row inserted/updated/deleted
+ij> delete from source;
+1 row inserted/updated/deleted
+ij> insert into source values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into source values (1, 2, '3', '4', 5, 6);
+1 row inserted/updated/deleted
+ij> -- these fail because the target won't take a null -- of any type
+insert into target values(null);
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select i from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select s from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select d from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select r from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> -- expect 5 rows in target: 1, 2, 5, 6, and 1:
+select * from target;
+T            
+-------------
+1.0          
+2.0          
+5.0          
+6.0          
+ij> update target set t = t + 1;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+2.0          
+3.0          
+6.0          
+7.0          
+ij> update target set t = t - 1;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+1.0          
+2.0          
+5.0          
+6.0          
+ij> update target set t = t / 10;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+0.1          
+0.2          
+0.5          
+0.6          
+ij> update target set t = t * 10;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+1.0          
+2.0          
+5.0          
+6.0          
+ij> -- these should work
+update source set r = 1.4e4;
+2 rows inserted/updated/deleted
+ij> update source set i = r, s=r, d=r;
+2 rows inserted/updated/deleted
+ij> select i, s, d from source where i=1.4e4 or s=1.4e4 or d=1.4e4;
+I          |S     |D                     
+-----------------------------------------
+14000      |14000 |14000.0               
+14000      |14000 |14000.0               
+ij> -- just curious, do columns see the before or after values, and
+-- does it matter if they are before or after the changed value?
+update source set i = r, r = 0, s = r;
+2 rows inserted/updated/deleted
+ij> select i, r, s from source where r = 0;
+I          |R            |S     
+--------------------------------
+14000      |0.0          |14000 
+14000      |0.0          |14000 
+ij> -- these should get overflow
+update source set r = 1.4e12;
+2 rows inserted/updated/deleted
+ij> update source set i = r;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> update source set s = r;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> drop table source;
+0 rows inserted/updated/deleted
+ij> drop table target;
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+--          TESTS FOR DB2 FLOAT/DOUBLEs LIMITS
+-- ============================================================
+create table fake(r real);
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+-- different errmsg for DB2: "value of of range", CS: "NumberFormatException"
+values 5e-325;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values 5e-324;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- --- TEST SPECIAL VALUES
+-- DB2 (should succed)
+insert into fake values( -3.402E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.402E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values -1;
+1 row inserted/updated/deleted
+ij> insert into fake values( -1.175E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values( +1.175E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values -2;
+1 row inserted/updated/deleted
+ij> -- CS (should fail)
+insert into fake values( -3.4028235E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.4028235E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -3;
+1 row inserted/updated/deleted
+ij> insert into fake values( -1.4E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.4E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -4;
+1 row inserted/updated/deleted
+ij> -- ============================================================
+-- variants of ZERO
+insert into fake values (+0);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0E-37);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0E-38);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0E-500);
+1 row inserted/updated/deleted
+ij> values (+0.0E-500);
+1                     
+----------------------
+0.0                   
+ij> values (+1.0E-300);
+1                     
+----------------------
+1.0E-300              
+ij> -- approx ZERO (java rounds to zero, but not DB2)
+insert into fake values (+1.0E-300);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values (+1.0E-900);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into fake values (cast(+1.0E-900 as real));
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values (cast(+1.0E-300 as real));
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values (+1.0E-900);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values (cast(+1.0E-900 as real));
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into fake values -11;
+1 row inserted/updated/deleted
+ij> -- ============================================================
+-- DB2 MAX_VALUES (first succeed, second fail)
+insert into fake values( -3.4019E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values( -3.4021E+38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -21;
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.4019E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.4021E+38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -22;
+1 row inserted/updated/deleted
+ij> -- DB2 MIN_VALUES (first fail, second succeed)
+insert into fake values( -1.1749E-37 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.1751E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values -23;
+1 row inserted/updated/deleted
+ij> insert into fake values( +1.1749E-37 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.1751E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values -24;
+1 row inserted/updated/deleted
+ij> -- CS (fail)
+insert into fake values( -3.4028234E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -3.40282349E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -3.40282351E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -3.4028236E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -25;
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.4028234E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.40282349E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.40282351E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.4028236E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -26;
+1 row inserted/updated/deleted
+ij> insert into fake values( -1.39E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.399E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.401E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.41E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -27;
+1 row inserted/updated/deleted
+ij> insert into fake values( +1.39E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.399E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.401E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.41E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -28;
+1 row inserted/updated/deleted
+ij> -- checkpoint
+select * from fake;
+R            
+-------------
+-3.402E38    
+3.402E38     
+-1.0         
+-1.175E-37   
+1.175E-37    
+-2.0         
+-3.0         
+-4.0         
+0.0          
+0.0          
+0.0          
+0.0          
+0.0          
+-11.0        
+-3.4019E38   
+-21.0        
+3.4019E38    
+-22.0        
+-1.1751E-37  
+-23.0        
+1.1751E-37   
+-24.0        
+-25.0        
+-26.0        
+-27.0        
+-28.0        
+ij> drop table fake;
+0 rows inserted/updated/deleted
+ij> create table fake(r real);
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+-- ---underflow aritmetic
+-- underflow to small real but / makes double!=0, so we catch
+-- ok
+values cast(5e-37/1e0 as real);
+1            
+-------------
+5.0E-37      
+ij> -- fail
+values cast(5e-37/1e1 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-37/1e300 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 as real)/cast(1e10 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> -- ok
+insert into fake values 5e-37/1e0;
+1 row inserted/updated/deleted
+ij> -- fail
+insert into fake values 5e-37/1e1;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values 5e-37/1e300;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into fake values cast(5e-37 as real)/cast(1e10 as real);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> drop table fake;
+0 rows inserted/updated/deleted
+ij> -- makes double to small, so java double rounds to 0. need to catch (fail)
+values 5e-37 / 1e300;
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 / 1e300 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- ok, zero result (succeed)
+values cast(cast(0.0e0 as real) - cast(0.0e0 as real) as real);
+1            
+-------------
+0.0          
+ij> values cast(cast(1.0e-30 as real) - cast(1.0e-30 as real) as real);
+1            
+-------------
+0.0          
+ij> -- java (and CS previously) rounded result to zero, but now gives errors like DB2 (fail)
+values cast(cast(5e-37 as real) - cast(4e-37 as real) as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-37 - 4e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-37 - 4.99e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-308 - 4e-308 as real);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 + -4e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-324 - 4e-324 as real);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 * 4e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(cast(5e-37 as real) * cast(4e-37 as real) as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> -- double trouble, underflow detection (fail)
+values cast(5e-300 * 4e-300 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- underflow aritmetic DOUBLE (fail)
+values -3e-305/1e100;
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values -3e-305/1e100;
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- negative zeros not allowed (succeed)
+values 0.0e5/-1;
+1                     
+----------------------
+0.0                   
+ij> -- 30 characters limit to be enforced ) (first fail, second ok)
+values 01234567890123456789012345678e1;
+ERROR 42820: The floating point literal '01234567890123456789012345678e1' contains more than 30 characters.
+ij> values 0123456789012345678901234567e1;
+1                     
+----------------------
+1.2345678901234569E27 
+ij> -- ============================================================
+--- Marks tests
+-- Examples in Cloudscape 5.2:
+-- these 2 insert statements should raise error msgs in compat mode because 
+-- the values are between the -mpv and +mpv (fail)
+create table t1 (c1 real);
+0 rows inserted/updated/deleted
+ij> insert into t1 values -1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values +1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> -- these 2 insert statements should raise an error msg in compat mode
+-- because the values are greater db2's limits (fail)
+insert into t1 values 3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values -3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- Examples in DB2 UDB for LUW 8.1.4:
+-- these 2 insert statements raise ERROR 22003 because
+-- the values are between the -mpv and +mpv (fail)
+create table t1 (c1 real);
+0 rows inserted/updated/deleted
+ij> insert into t1 values -1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values +1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> -- these 2 insert statements raise ERROR 22003 because
+-- the values are greater db2's limits (fail)
+insert into t1 values 3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values -3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+-- bug 5704 - make sure we catch the overflow correctly for multiplication operator
+values cast(1e30 as decimal(31))*cast(1e30 as decimal(31));
+1                               
+--------------------------------
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> values cast('1e30' as decimal(31))*cast('1e30' as decimal(31));
+1                               
+--------------------------------
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forbitdata.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forbitdata.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,630 @@
+START testNegative
+CREATE TABLE FBDFAIL.T001 (C001 CHAR(255) FOR BIT DATA)
+EXPECTED SQL Exception: (42611) The length, precision, or scale attribute for column, or type mapping 'CHAR (255) FOR BIT DATA' is not valid. 
+CREATE TABLE FBDFAIL.T002 (C002 VARCHAR(32673) FOR BIT DATA)
+EXPECTED SQL Exception: (42611) The length, precision, or scale attribute for column, or type mapping 'VARCHAR (32673) FOR BIT DATA' is not valid. 
+CREATE TABLE FBDFAIL.T003 (C003 VARCHAR FOR BIT DATA)
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "FOR" at line 1, column 41.
+CREATE TABLE FBDFAIL.T004 (C004 LONG VARCHAR(100) FOR BIT DATA)
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "(" at line 1, column 45.
+END testNegative
+START testTypes
+CREATE TABLE FBDOK.T001 (C001 CHAR FOR BIT DATA)
+CREATE TABLE FBDOK.T002 (C002 CHAR(1) FOR BIT DATA)
+CREATE TABLE FBDOK.T003 (C003 CHAR(10) FOR BIT DATA)
+CREATE TABLE FBDOK.T004 (C004 CHAR(254) FOR BIT DATA)
+CREATE TABLE FBDOK.T005 (C005 VARCHAR(1) FOR BIT DATA)
+CREATE TABLE FBDOK.T006 (C006 VARCHAR(100) FOR BIT DATA)
+CREATE TABLE FBDOK.T007 (C007 VARCHAR(32672) FOR BIT DATA)
+CREATE TABLE FBDOK.T008 (C008 LONG VARCHAR FOR BIT DATA)
+FBDOK,T001,C001,-2,CHAR () FOR BIT DATA,1,null,10,1,null,null,1,YES
+FBDOK,T002,C002,-2,CHAR () FOR BIT DATA,1,null,10,1,null,null,1,YES
+FBDOK,T003,C003,-2,CHAR () FOR BIT DATA,10,null,10,1,null,null,1,YES
+FBDOK,T004,C004,-2,CHAR () FOR BIT DATA,254,null,10,1,null,null,1,YES
+FBDOK,T005,C005,-3,VARCHAR () FOR BIT DATA,1,null,10,1,null,null,1,YES
+FBDOK,T006,C006,-3,VARCHAR () FOR BIT DATA,100,null,10,1,null,null,1,YES
+FBDOK,T007,C007,-3,VARCHAR () FOR BIT DATA,32672,null,10,1,null,null,1,YES
+FBDOK,T008,C008,-4,LONG VARCHAR FOR BIT DATA,32700,null,10,1,null,null,1,YES
+TABLE FBDOK.T001
+  C001 CHAR () FOR BIT DATA precision 1
+TABLE FBDOK.T002
+  C002 CHAR () FOR BIT DATA precision 1
+TABLE FBDOK.T003
+  C003 CHAR () FOR BIT DATA precision 10
+TABLE FBDOK.T004
+  C004 CHAR () FOR BIT DATA precision 254
+TABLE FBDOK.T005
+  C005 VARCHAR () FOR BIT DATA precision 1
+TABLE FBDOK.T006
+  C006 VARCHAR () FOR BIT DATA precision 100
+TABLE FBDOK.T007
+  C007 VARCHAR () FOR BIT DATA precision 32672
+TABLE FBDOK.T008
+  C008 LONG VARCHAR FOR BIT DATA precision 32700
+DATABASE META DATA.getTypeInfo()
+LONG VARCHAR FOR BIT DATA(-4) precision 32700
+VARCHAR () FOR BIT DATA(-3) precision 32762
+CHAR () FOR BIT DATA(-2) precision 254
+VALUES X'2345d45a2e44'
+  1 CHAR () FOR BIT DATA precision 6
+VALUES X''
+  1 CHAR () FOR BIT DATA precision 0
+END testTypes
+START testValues
+**** NULL
+  ORG <NULL> CHR <NULL> VAR <NULL> LVC <NULL> BLOB <NULL> 
+  ORG <NULL> CHR <NULL> VAR <NULL> LVC <NULL> BLOB <NULL> 
+**** 7 bytes (EMPTY)
+  ORG 00000000000000 (7) CHR 00000000000000202020 (10) VAR 00000000000000 (7) LVC 00000000000000 (7) BLOB 00000000000000 (7) 
+  ORG 00000000000000 (7) CHR 00000000000000202020 (10) VAR 00000000000000 (7) LVC 00000000000000 (7) BLOB 00000000000000 (7) 
+**** 15 bytes (EMPTY)
+  >> CHAR FOR BIT DATA
+22001 truncation error
+22001 truncation error
+  >> VARCHAR FOR BIT DATA
+22001 truncation error
+22001 truncation error
+  >> LONG VARCHAR FOR BIT DATA
+  >> BLOB
+22001 truncation error
+22001 truncation error
+  ORG 000000000000000000000000000000 (15) CHR <NULL> VAR <NULL> LVC 000000000000000000000000000000 (15) BLOB <NULL> 
+  ORG 000000000000000000000000000000 (15) CHR <NULL> VAR <NULL> LVC 000000000000000000000000000000 (15) BLOB <NULL> 
+**** 4 bytes
+  ORG 0423a2fd (4) CHR 0423a2fd202020202020 (10) VAR 0423a2fd (4) LVC 0423a2fd (4) BLOB 0423a2fd (4) 
+  ORG 0423a2fd (4) CHR 0423a2fd202020202020 (10) VAR 0423a2fd (4) LVC 0423a2fd (4) BLOB 0423a2fd (4) 
+**** 10 bytes
+  ORG 0b27a2fd016de2356690 (10) CHR 0b27a2fd016de2356690 (10) VAR 0b27a2fd016de2356690 (10) LVC 0b27a2fd016de2356690 (10) BLOB 0b27a2fd016de2356690 (10) 
+  ORG 0b27a2fd016de2356690 (10) CHR 0b27a2fd016de2356690 (10) VAR 0b27a2fd016de2356690 (10) LVC 0b27a2fd016de2356690 (10) BLOB 0b27a2fd016de2356690 (10) 
+**** 15 bytes
+  >> CHAR FOR BIT DATA
+22001 truncation error
+22001 truncation error
+  >> VARCHAR FOR BIT DATA
+22001 truncation error
+22001 truncation error
+  >> LONG VARCHAR FOR BIT DATA
+  >> BLOB
+22001 truncation error
+22001 truncation error
+  ORG ebcafebabefeedface24784392316d (15) CHR <NULL> VAR <NULL> LVC ebcafebabefeedface24784392316d (15) BLOB <NULL> 
+  ORG ebcafebabefeedface24784392316d (15) CHR <NULL> VAR <NULL> LVC ebcafebabefeedface24784392316d (15) BLOB <NULL> 
+**** 4 spaces 
+  ORG 20202020 (4) CHR 20202020202020202020 (10) VAR 20202020 (4) LVC 20202020 (4) BLOB 20202020 (4) 
+  ORG 20202020 (4) CHR 20202020202020202020 (10) VAR 20202020 (4) LVC 20202020 (4) BLOB 20202020 (4) 
+**** 6 data with trailing space 
+  ORG cafe20202020 (6) CHR cafe2020202020202020 (10) VAR cafe20202020 (6) LVC cafe20202020 (6) BLOB cafe20202020 (6) 
+  ORG cafe20202020 (6) CHR cafe2020202020202020 (10) VAR cafe20202020 (6) LVC cafe20202020 (6) BLOB cafe20202020 (6) 
+**** 12 data with trailing space 
+  >> CHAR FOR BIT DATA
+22001 truncation error
+22001 truncation error
+  >> VARCHAR FOR BIT DATA
+22001 truncation error
+22001 truncation error
+  >> LONG VARCHAR FOR BIT DATA
+  >> BLOB
+22001 truncation error
+22001 truncation error
+  ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020 (12) BLOB <NULL> 
+  ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020 (12) BLOB <NULL> 
+**** INSERT INTO FBDVAL.T001 VALUES(80, X'2020202020', X'2020202020', X'2020202020', null)
+  ORG 20202020 (4) CHR 20202020202020202020 (10) VAR 2020202020 (5) LVC 2020202020 (5) BLOB <NULL> 
+**** INSERT INTO FBDVAL.T001 VALUES(90, X'CAFE20202020CAFE20202020', null, null, null)
+  ORG cafe20202020cafe20202020 (12) CHR cafe20202020cafe2020 (10) VAR <NULL> LVC <NULL> BLOB <NULL> 
+**** INSERT INTO FBDVAL.T001 VALUES(100, null, X'CAFE20202020CAFE20202020', null, null)
+  ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR cafe20202020cafe2020 (10) LVC <NULL> BLOB <NULL> 
+**** INSERT INTO FBDVAL.T001 VALUES(110, null, null, X'CAFE20202020CAFE20202020', null)
+  ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020 (12) BLOB <NULL> 
+**** INSERT INTO FBDVAL.T001 VALUES(120, X'CAFE20202020CAFE20202020DD', null, null, null)
+22001 truncation error
+**** INSERT INTO FBDVAL.T001 VALUES(130, null, X'CAFE20202020CAFE20202020DD', null, null)
+22001 truncation error
+**** INSERT INTO FBDVAL.T001 VALUES(140, null, null, X'CAFE20202020CAFE20202020DD', null)
+  ORG cafe20202020cafe20202020 (12) CHR <NULL> VAR <NULL> LVC cafe20202020cafe20202020dd (13) BLOB <NULL> 
+**** INSERT INTO FBDVAL.X001 VALUES(200, X'CAFE20202020CAFE20202020', null, null, null)
+**** INSERT INTO FBDVAL.T001 SELECT * FROM FBDVAL.X001
+  ORG cafe20202020cafe20202020 (12) CHR cafe20202020cafe2020 (10) VAR <NULL> LVC <NULL> BLOB <NULL> 
+END testValues
+START testCompare
+SELECT T.ID, T.C1, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 = O.C1 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  30 0423a2fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <> O.C1 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  30 0423a2fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  30 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  40 0423a1fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff202020202020 (10)   30 0423a2fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   60 0423a2fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd202020202020 (10) 
+SELECT T.ID, T.C1, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 < O.C1 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  30 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  40 0423a1fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <= O.C1 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  30 0423a2fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  30 0423a2fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  30 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  40 0423a1fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff202020202020 (10)   50 0423a2ff202020202020 (10) 
+  50 0423a2ff202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 > O.C1 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   30 0423a2fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   60 0423a2fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd202020202020 (10) 
+SELECT T.ID, T.C1, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 >= O.C1 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  30 0423a2fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  30 0423a2fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   30 0423a2fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff202020202020 (10)   50 0423a2ff202020202020 (10) 
+  50 0423a2ff202020202020 (10)   60 0423a2fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   30 0423a2fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   40 0423a1fd202020202020 (10) 
+  60 0423a2fd202020202020 (10)   60 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 = O.C2 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   30 0423a2fd (4) 
+  30 0423a2fd202020202020 (10)   60 0423a2fd20 (5) 
+  40 0423a1fd202020202020 (10)   40 0423a1fd (4) 
+  50 0423a2ff202020202020 (10)   50 0423a2ff (4) 
+  60 0423a2fd202020202020 (10)   30 0423a2fd (4) 
+  60 0423a2fd202020202020 (10)   60 0423a2fd20 (5) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <> O.C2 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   40 0423a1fd (4) 
+  30 0423a2fd202020202020 (10)   50 0423a2ff (4) 
+  30 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd202020202020 (10)   30 0423a2fd (4) 
+  40 0423a1fd202020202020 (10)   50 0423a2ff (4) 
+  40 0423a1fd202020202020 (10)   60 0423a2fd20 (5) 
+  40 0423a1fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff202020202020 (10)   30 0423a2fd (4) 
+  50 0423a2ff202020202020 (10)   40 0423a1fd (4) 
+  50 0423a2ff202020202020 (10)   60 0423a2fd20 (5) 
+  50 0423a2ff202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd202020202020 (10)   40 0423a1fd (4) 
+  60 0423a2fd202020202020 (10)   50 0423a2ff (4) 
+  60 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd (4) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff (4) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd20 (5) 
+SELECT T.ID, T.C1, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 < O.C2 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   50 0423a2ff (4) 
+  30 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd202020202020 (10)   30 0423a2fd (4) 
+  40 0423a1fd202020202020 (10)   50 0423a2ff (4) 
+  40 0423a1fd202020202020 (10)   60 0423a2fd20 (5) 
+  40 0423a1fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd202020202020 (10)   50 0423a2ff (4) 
+  60 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <= O.C2 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   30 0423a2fd (4) 
+  30 0423a2fd202020202020 (10)   50 0423a2ff (4) 
+  30 0423a2fd202020202020 (10)   60 0423a2fd20 (5) 
+  30 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd202020202020 (10)   30 0423a2fd (4) 
+  40 0423a1fd202020202020 (10)   40 0423a1fd (4) 
+  40 0423a1fd202020202020 (10)   50 0423a2ff (4) 
+  40 0423a1fd202020202020 (10)   60 0423a2fd20 (5) 
+  40 0423a1fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff202020202020 (10)   50 0423a2ff (4) 
+  50 0423a2ff202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd202020202020 (10)   30 0423a2fd (4) 
+  60 0423a2fd202020202020 (10)   50 0423a2ff (4) 
+  60 0423a2fd202020202020 (10)   60 0423a2fd20 (5) 
+  60 0423a2fd202020202020 (10)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 > O.C2 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   40 0423a1fd (4) 
+  50 0423a2ff202020202020 (10)   30 0423a2fd (4) 
+  50 0423a2ff202020202020 (10)   40 0423a1fd (4) 
+  50 0423a2ff202020202020 (10)   60 0423a2fd20 (5) 
+  60 0423a2fd202020202020 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd (4) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff (4) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd20 (5) 
+SELECT T.ID, T.C1, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 >= O.C2 ORDER BY 1,3
+  30 0423a2fd202020202020 (10)   30 0423a2fd (4) 
+  30 0423a2fd202020202020 (10)   40 0423a1fd (4) 
+  30 0423a2fd202020202020 (10)   60 0423a2fd20 (5) 
+  40 0423a1fd202020202020 (10)   40 0423a1fd (4) 
+  50 0423a2ff202020202020 (10)   30 0423a2fd (4) 
+  50 0423a2ff202020202020 (10)   40 0423a1fd (4) 
+  50 0423a2ff202020202020 (10)   50 0423a2ff (4) 
+  50 0423a2ff202020202020 (10)   60 0423a2fd20 (5) 
+  60 0423a2fd202020202020 (10)   30 0423a2fd (4) 
+  60 0423a2fd202020202020 (10)   40 0423a1fd (4) 
+  60 0423a2fd202020202020 (10)   60 0423a2fd20 (5) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd (4) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff (4) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd20 (5) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C1, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 = O.C3 ORDER BY 1,3
+42818 types not comparable C1 ... C3
+SELECT T.ID, T.C1, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <> O.C3 ORDER BY 1,3
+42818 types not comparable C1 ... C3
+SELECT T.ID, T.C1, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 < O.C3 ORDER BY 1,3
+42818 types not comparable C1 ... C3
+SELECT T.ID, T.C1, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <= O.C3 ORDER BY 1,3
+42818 types not comparable C1 ... C3
+SELECT T.ID, T.C1, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 > O.C3 ORDER BY 1,3
+42818 types not comparable C1 ... C3
+SELECT T.ID, T.C1, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 >= O.C3 ORDER BY 1,3
+42818 types not comparable C1 ... C3
+SELECT T.ID, T.C1, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 = O.C4 ORDER BY 1,3
+42818 types not comparable C1 ... C4
+SELECT T.ID, T.C1, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <> O.C4 ORDER BY 1,3
+42818 types not comparable C1 ... C4
+SELECT T.ID, T.C1, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 < O.C4 ORDER BY 1,3
+42818 types not comparable C1 ... C4
+SELECT T.ID, T.C1, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 <= O.C4 ORDER BY 1,3
+42818 types not comparable C1 ... C4
+SELECT T.ID, T.C1, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 > O.C4 ORDER BY 1,3
+42818 types not comparable C1 ... C4
+SELECT T.ID, T.C1, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C1 >= O.C4 ORDER BY 1,3
+42818 types not comparable C1 ... C4
+SELECT T.ID, T.C2, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 = O.C1 ORDER BY 1,3
+  30 0423a2fd (4)   30 0423a2fd202020202020 (10) 
+  30 0423a2fd (4)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff (4)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd20 (5)   30 0423a2fd202020202020 (10) 
+  60 0423a2fd20 (5)   60 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <> O.C1 ORDER BY 1,3
+  30 0423a2fd (4)   40 0423a1fd202020202020 (10) 
+  30 0423a2fd (4)   50 0423a2ff202020202020 (10) 
+  30 0423a2fd (4)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd (4)   30 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   50 0423a2ff202020202020 (10) 
+  40 0423a1fd (4)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff (4)   30 0423a2fd202020202020 (10) 
+  50 0423a2ff (4)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff (4)   60 0423a2fd202020202020 (10) 
+  50 0423a2ff (4)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd20 (5)   40 0423a1fd202020202020 (10) 
+  60 0423a2fd20 (5)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd20 (5)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd202020202020 (10) 
+SELECT T.ID, T.C2, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 < O.C1 ORDER BY 1,3
+  30 0423a2fd (4)   50 0423a2ff202020202020 (10) 
+  30 0423a2fd (4)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd (4)   30 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   50 0423a2ff202020202020 (10) 
+  40 0423a1fd (4)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff (4)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd20 (5)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd20 (5)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <= O.C1 ORDER BY 1,3
+  30 0423a2fd (4)   30 0423a2fd202020202020 (10) 
+  30 0423a2fd (4)   50 0423a2ff202020202020 (10) 
+  30 0423a2fd (4)   60 0423a2fd202020202020 (10) 
+  30 0423a2fd (4)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd (4)   30 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   40 0423a1fd202020202020 (10) 
+  40 0423a1fd (4)   50 0423a2ff202020202020 (10) 
+  40 0423a1fd (4)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff (4)   50 0423a2ff202020202020 (10) 
+  50 0423a2ff (4)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd20 (5)   30 0423a2fd202020202020 (10) 
+  60 0423a2fd20 (5)   50 0423a2ff202020202020 (10) 
+  60 0423a2fd20 (5)   60 0423a2fd202020202020 (10) 
+  60 0423a2fd20 (5)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 > O.C1 ORDER BY 1,3
+  30 0423a2fd (4)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff (4)   30 0423a2fd202020202020 (10) 
+  50 0423a2ff (4)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff (4)   60 0423a2fd202020202020 (10) 
+  60 0423a2fd20 (5)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd202020202020 (10) 
+SELECT T.ID, T.C2, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 >= O.C1 ORDER BY 1,3
+  30 0423a2fd (4)   30 0423a2fd202020202020 (10) 
+  30 0423a2fd (4)   40 0423a1fd202020202020 (10) 
+  30 0423a2fd (4)   60 0423a2fd202020202020 (10) 
+  40 0423a1fd (4)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff (4)   30 0423a2fd202020202020 (10) 
+  50 0423a2ff (4)   40 0423a1fd202020202020 (10) 
+  50 0423a2ff (4)   50 0423a2ff202020202020 (10) 
+  50 0423a2ff (4)   60 0423a2fd202020202020 (10) 
+  60 0423a2fd20 (5)   30 0423a2fd202020202020 (10) 
+  60 0423a2fd20 (5)   40 0423a1fd202020202020 (10) 
+  60 0423a2fd20 (5)   60 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd202020202020 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 = O.C2 ORDER BY 1,3
+  30 0423a2fd (4)   30 0423a2fd (4) 
+  30 0423a2fd (4)   60 0423a2fd20 (5) 
+  40 0423a1fd (4)   40 0423a1fd (4) 
+  50 0423a2ff (4)   50 0423a2ff (4) 
+  60 0423a2fd20 (5)   30 0423a2fd (4) 
+  60 0423a2fd20 (5)   60 0423a2fd20 (5) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <> O.C2 ORDER BY 1,3
+  30 0423a2fd (4)   40 0423a1fd (4) 
+  30 0423a2fd (4)   50 0423a2ff (4) 
+  30 0423a2fd (4)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd (4)   30 0423a2fd (4) 
+  40 0423a1fd (4)   50 0423a2ff (4) 
+  40 0423a1fd (4)   60 0423a2fd20 (5) 
+  40 0423a1fd (4)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff (4)   30 0423a2fd (4) 
+  50 0423a2ff (4)   40 0423a1fd (4) 
+  50 0423a2ff (4)   60 0423a2fd20 (5) 
+  50 0423a2ff (4)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd20 (5)   40 0423a1fd (4) 
+  60 0423a2fd20 (5)   50 0423a2ff (4) 
+  60 0423a2fd20 (5)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd (4) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff (4) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd20 (5) 
+SELECT T.ID, T.C2, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 < O.C2 ORDER BY 1,3
+  30 0423a2fd (4)   50 0423a2ff (4) 
+  30 0423a2fd (4)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd (4)   30 0423a2fd (4) 
+  40 0423a1fd (4)   50 0423a2ff (4) 
+  40 0423a1fd (4)   60 0423a2fd20 (5) 
+  40 0423a1fd (4)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff (4)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd20 (5)   50 0423a2ff (4) 
+  60 0423a2fd20 (5)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <= O.C2 ORDER BY 1,3
+  30 0423a2fd (4)   30 0423a2fd (4) 
+  30 0423a2fd (4)   50 0423a2ff (4) 
+  30 0423a2fd (4)   60 0423a2fd20 (5) 
+  30 0423a2fd (4)   70 0b27a2fd016de2356690 (10) 
+  40 0423a1fd (4)   30 0423a2fd (4) 
+  40 0423a1fd (4)   40 0423a1fd (4) 
+  40 0423a1fd (4)   50 0423a2ff (4) 
+  40 0423a1fd (4)   60 0423a2fd20 (5) 
+  40 0423a1fd (4)   70 0b27a2fd016de2356690 (10) 
+  50 0423a2ff (4)   50 0423a2ff (4) 
+  50 0423a2ff (4)   70 0b27a2fd016de2356690 (10) 
+  60 0423a2fd20 (5)   30 0423a2fd (4) 
+  60 0423a2fd20 (5)   50 0423a2ff (4) 
+  60 0423a2fd20 (5)   60 0423a2fd20 (5) 
+  60 0423a2fd20 (5)   70 0b27a2fd016de2356690 (10) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 > O.C2 ORDER BY 1,3
+  30 0423a2fd (4)   40 0423a1fd (4) 
+  50 0423a2ff (4)   30 0423a2fd (4) 
+  50 0423a2ff (4)   40 0423a1fd (4) 
+  50 0423a2ff (4)   60 0423a2fd20 (5) 
+  60 0423a2fd20 (5)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd (4) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff (4) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd20 (5) 
+SELECT T.ID, T.C2, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 >= O.C2 ORDER BY 1,3
+  30 0423a2fd (4)   30 0423a2fd (4) 
+  30 0423a2fd (4)   40 0423a1fd (4) 
+  30 0423a2fd (4)   60 0423a2fd20 (5) 
+  40 0423a1fd (4)   40 0423a1fd (4) 
+  50 0423a2ff (4)   30 0423a2fd (4) 
+  50 0423a2ff (4)   40 0423a1fd (4) 
+  50 0423a2ff (4)   50 0423a2ff (4) 
+  50 0423a2ff (4)   60 0423a2fd20 (5) 
+  60 0423a2fd20 (5)   30 0423a2fd (4) 
+  60 0423a2fd20 (5)   40 0423a1fd (4) 
+  60 0423a2fd20 (5)   60 0423a2fd20 (5) 
+  70 0b27a2fd016de2356690 (10)   30 0423a2fd (4) 
+  70 0b27a2fd016de2356690 (10)   40 0423a1fd (4) 
+  70 0b27a2fd016de2356690 (10)   50 0423a2ff (4) 
+  70 0b27a2fd016de2356690 (10)   60 0423a2fd20 (5) 
+  70 0b27a2fd016de2356690 (10)   70 0b27a2fd016de2356690 (10) 
+SELECT T.ID, T.C2, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 = O.C3 ORDER BY 1,3
+42818 types not comparable C2 ... C3
+SELECT T.ID, T.C2, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <> O.C3 ORDER BY 1,3
+42818 types not comparable C2 ... C3
+SELECT T.ID, T.C2, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 < O.C3 ORDER BY 1,3
+42818 types not comparable C2 ... C3
+SELECT T.ID, T.C2, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <= O.C3 ORDER BY 1,3
+42818 types not comparable C2 ... C3
+SELECT T.ID, T.C2, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 > O.C3 ORDER BY 1,3
+42818 types not comparable C2 ... C3
+SELECT T.ID, T.C2, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 >= O.C3 ORDER BY 1,3
+42818 types not comparable C2 ... C3
+SELECT T.ID, T.C2, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 = O.C4 ORDER BY 1,3
+42818 types not comparable C2 ... C4
+SELECT T.ID, T.C2, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <> O.C4 ORDER BY 1,3
+42818 types not comparable C2 ... C4
+SELECT T.ID, T.C2, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 < O.C4 ORDER BY 1,3
+42818 types not comparable C2 ... C4
+SELECT T.ID, T.C2, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 <= O.C4 ORDER BY 1,3
+42818 types not comparable C2 ... C4
+SELECT T.ID, T.C2, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 > O.C4 ORDER BY 1,3
+42818 types not comparable C2 ... C4
+SELECT T.ID, T.C2, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C2 >= O.C4 ORDER BY 1,3
+42818 types not comparable C2 ... C4
+SELECT T.ID, T.C3, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 = O.C1 ORDER BY 1,3
+42818 types not comparable C3 ... C1
+SELECT T.ID, T.C3, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <> O.C1 ORDER BY 1,3
+42818 types not comparable C3 ... C1
+SELECT T.ID, T.C3, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 < O.C1 ORDER BY 1,3
+42818 types not comparable C3 ... C1
+SELECT T.ID, T.C3, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <= O.C1 ORDER BY 1,3
+42818 types not comparable C3 ... C1
+SELECT T.ID, T.C3, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 > O.C1 ORDER BY 1,3
+42818 types not comparable C3 ... C1
+SELECT T.ID, T.C3, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 >= O.C1 ORDER BY 1,3
+42818 types not comparable C3 ... C1
+SELECT T.ID, T.C3, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 = O.C2 ORDER BY 1,3
+42818 types not comparable C3 ... C2
+SELECT T.ID, T.C3, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <> O.C2 ORDER BY 1,3
+42818 types not comparable C3 ... C2
+SELECT T.ID, T.C3, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 < O.C2 ORDER BY 1,3
+42818 types not comparable C3 ... C2
+SELECT T.ID, T.C3, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <= O.C2 ORDER BY 1,3
+42818 types not comparable C3 ... C2
+SELECT T.ID, T.C3, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 > O.C2 ORDER BY 1,3
+42818 types not comparable C3 ... C2
+SELECT T.ID, T.C3, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 >= O.C2 ORDER BY 1,3
+42818 types not comparable C3 ... C2
+SELECT T.ID, T.C3, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 = O.C3 ORDER BY 1,3
+42818 types not comparable C3 ... C3
+SELECT T.ID, T.C3, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <> O.C3 ORDER BY 1,3
+42818 types not comparable C3 ... C3
+SELECT T.ID, T.C3, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 < O.C3 ORDER BY 1,3
+42818 types not comparable C3 ... C3
+SELECT T.ID, T.C3, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <= O.C3 ORDER BY 1,3
+42818 types not comparable C3 ... C3
+SELECT T.ID, T.C3, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 > O.C3 ORDER BY 1,3
+42818 types not comparable C3 ... C3
+SELECT T.ID, T.C3, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 >= O.C3 ORDER BY 1,3
+42818 types not comparable C3 ... C3
+SELECT T.ID, T.C3, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 = O.C4 ORDER BY 1,3
+42818 types not comparable C3 ... C4
+SELECT T.ID, T.C3, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <> O.C4 ORDER BY 1,3
+42818 types not comparable C3 ... C4
+SELECT T.ID, T.C3, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 < O.C4 ORDER BY 1,3
+42818 types not comparable C3 ... C4
+SELECT T.ID, T.C3, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 <= O.C4 ORDER BY 1,3
+42818 types not comparable C3 ... C4
+SELECT T.ID, T.C3, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 > O.C4 ORDER BY 1,3
+42818 types not comparable C3 ... C4
+SELECT T.ID, T.C3, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C3 >= O.C4 ORDER BY 1,3
+42818 types not comparable C3 ... C4
+SELECT T.ID, T.C4, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 = O.C1 ORDER BY 1,3
+42818 types not comparable C4 ... C1
+SELECT T.ID, T.C4, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <> O.C1 ORDER BY 1,3
+42818 types not comparable C4 ... C1
+SELECT T.ID, T.C4, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 < O.C1 ORDER BY 1,3
+42818 types not comparable C4 ... C1
+SELECT T.ID, T.C4, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <= O.C1 ORDER BY 1,3
+42818 types not comparable C4 ... C1
+SELECT T.ID, T.C4, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 > O.C1 ORDER BY 1,3
+42818 types not comparable C4 ... C1
+SELECT T.ID, T.C4, O.ID, O.C1 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 >= O.C1 ORDER BY 1,3
+42818 types not comparable C4 ... C1
+SELECT T.ID, T.C4, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 = O.C2 ORDER BY 1,3
+42818 types not comparable C4 ... C2
+SELECT T.ID, T.C4, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <> O.C2 ORDER BY 1,3
+42818 types not comparable C4 ... C2
+SELECT T.ID, T.C4, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 < O.C2 ORDER BY 1,3
+42818 types not comparable C4 ... C2
+SELECT T.ID, T.C4, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <= O.C2 ORDER BY 1,3
+42818 types not comparable C4 ... C2
+SELECT T.ID, T.C4, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 > O.C2 ORDER BY 1,3
+42818 types not comparable C4 ... C2
+SELECT T.ID, T.C4, O.ID, O.C2 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 >= O.C2 ORDER BY 1,3
+42818 types not comparable C4 ... C2
+SELECT T.ID, T.C4, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 = O.C3 ORDER BY 1,3
+42818 types not comparable C4 ... C3
+SELECT T.ID, T.C4, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <> O.C3 ORDER BY 1,3
+42818 types not comparable C4 ... C3
+SELECT T.ID, T.C4, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 < O.C3 ORDER BY 1,3
+42818 types not comparable C4 ... C3
+SELECT T.ID, T.C4, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <= O.C3 ORDER BY 1,3
+42818 types not comparable C4 ... C3
+SELECT T.ID, T.C4, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 > O.C3 ORDER BY 1,3
+42818 types not comparable C4 ... C3
+SELECT T.ID, T.C4, O.ID, O.C3 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 >= O.C3 ORDER BY 1,3
+42818 types not comparable C4 ... C3
+SELECT T.ID, T.C4, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 = O.C4 ORDER BY 1,3
+42818 types not comparable C4 ... C4
+SELECT T.ID, T.C4, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <> O.C4 ORDER BY 1,3
+42818 types not comparable C4 ... C4
+SELECT T.ID, T.C4, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 < O.C4 ORDER BY 1,3
+42818 types not comparable C4 ... C4
+SELECT T.ID, T.C4, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 <= O.C4 ORDER BY 1,3
+42818 types not comparable C4 ... C4
+SELECT T.ID, T.C4, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 > O.C4 ORDER BY 1,3
+42818 types not comparable C4 ... C4
+SELECT T.ID, T.C4, O.ID, O.C4 FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T.C4 >= O.C4 ORDER BY 1,3
+42818 types not comparable C4 ... C4
+END testCompare
+START testEncodedLengths
+ EL byte[] 10 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 10 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 30 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 30 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 31 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 31 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 32 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 32 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 1345 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 1345 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 23456 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 23456 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 32672 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL stream 32672 C1 OK DATA OK C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 32700 C1 NULL C2 OK DATA OK C3 OK DATA OK
+ EL stream 32700 C1 NULL C2 OK DATA OK C3 OK DATA OK
+ EL byte[] 32767 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 32767 C1 NULL C2 NULL C3 OK DATA OK
+ EL byte[] 32768 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 32768 C1 NULL C2 NULL C3 OK DATA OK
+ EL byte[] 32769 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 32769 C1 NULL C2 NULL C3 OK DATA OK
+ EL byte[] 65535 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 65535 C1 NULL C2 NULL C3 OK DATA OK
+ EL byte[] 65536 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 65536 C1 NULL C2 NULL C3 OK DATA OK
+ EL byte[] 65537 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 65537 C1 NULL C2 NULL C3 OK DATA OK
+ EL byte[] 115882 C1 NULL C2 NULL C3 OK DATA OK
+ EL stream 115882 C1 NULL C2 NULL C3 OK DATA OK
+END testEncodedLengths

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forupdate.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/forupdate.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,514 @@
+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 3, 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 C is not updatable.
+ij> --  cursor with same name already exists
+get cursor c as 'select i, v from t1, t2';
+ERROR X0X60: A cursor with name 'C' already exists.
+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 42X23: Cursor C1 is not updatable.
+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 C2 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 C3 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 not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it 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 not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it 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 on 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 on 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 on this type of statement.
+ij> select i from t1 where exists (select i from t1) for update;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> select i from t1 where exists (select s from t2) for update;
+ERROR 42Y90: FOR UPDATE is not permitted on 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 on 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 on 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 on this type of statement.
+ij> select * from (select i, d from t1) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> select * from (select i+10, d from t1) a for update;
+ERROR 42Y90: FOR UPDATE is not permitted on 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 on this type of statement.
+ij> values (1, 2, 3) for update;
+ERROR 42Y90: FOR UPDATE is not permitted on 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 on this type of statement.
+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;
+No current row
+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 'C4'.
+ij> -- this will compile and get a 'no current row' error, it uses the table name:
+delete from t1 where current of c4;
+ERROR XCL08: Cursor 'C4' is not on a row.
+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 not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it 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 'C5' 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 3, 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);
+0 rows inserted/updated/deleted
+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: 
+	null
+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: 
+	null
+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: 
+	null
+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: 
+	null
+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);
+0 rows inserted/updated/deleted
+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> -- 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 42X30: Cursor 'CURS1' not found. Verify that autocommit is OFF.
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/functions.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/functions.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,491 @@
+ij> -- Test various functions
+create table alltypes(
+  id int not null primary key,
+  smallIntCol smallint,
+  intCol int,
+  bigIntCol bigint,
+  floatCol float,
+  float1Col float(1),
+  float26Col float(26),
+  realCol real,
+  doubleCol double,
+  decimalCol decimal,
+  decimal10Col decimal(10),
+  decimal11Col decimal(11),
+  numeric10d2Col numeric(10,2),
+  charCol char,
+  char32Col char(32),
+  charForBitCol char(16) for bit data,
+  varcharCol varchar(64),
+  varcharForBitCol varchar(64) for bit data,
+  longVarcharCol long varchar,
+  blobCol blob(10k),
+  clobCol clob(10k),
+  dateCol date,
+  timeCol time,
+  timestampCol timestamp);
+0 rows inserted/updated/deleted
+ij> insert into allTypes(id) values(1),(2);
+2 rows inserted/updated/deleted
+ij> update allTypes set smallIntCol = 2 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set intCol = 2 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set bigIntCol = 3 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set floatCol = 4.1 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set float1Col = 5 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set float26Col = 6.1234567890123456 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set realCol = 7.2 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set doubleCol = 8.2 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set decimalCol = 9 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set decimal10Col = 1234 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set decimal11Col = 1234 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set numeric10d2Col = 11.12 where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set charCol = 'a' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set char32Col = 'abc' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set charForBitCol = X'ABCD' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set varcharCol = 'abcde' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set varcharForBitCol = X'ABCDEF' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set longVarcharCol = 'abcdefg' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set blobCol = cast( X'0031' as blob(10k)) where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set clobCol = 'clob data' where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set dateCol = date( '2004-3-13') where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set timeCol = time( '16:07:21') where id = 1;
+1 row inserted/updated/deleted
+ij> update allTypes set timestampCol = timestamp( '2004-3-14 17:08:22.123456') where id = 1;
+1 row inserted/updated/deleted
+ij> select id, length(smallIntCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |2          
+2          |NULL       
+ij> select id, length(intCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |4          
+2          |NULL       
+ij> select id, length(bigIntCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |8          
+2          |NULL       
+ij> select id, length(floatCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |8          
+2          |NULL       
+ij> select id, length(float1Col) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |4          
+2          |NULL       
+ij> select id, length(float26Col) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |8          
+2          |NULL       
+ij> select id, length(realCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |4          
+2          |NULL       
+ij> select id, length(doubleCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |8          
+2          |NULL       
+ij> select id, length(decimalCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |3          
+2          |NULL       
+ij> select id, length(decimal10Col) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |6          
+2          |NULL       
+ij> select id, length(decimal11Col) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |6          
+2          |NULL       
+ij> select id, length(numeric10d2Col) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |6          
+2          |NULL       
+ij> select id, length(charCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |1          
+2          |NULL       
+ij> select id, length(char32Col) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |32         
+2          |NULL       
+ij> select id, length(charForBitCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |16         
+2          |NULL       
+ij> select id, length(varcharCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |5          
+2          |NULL       
+ij> select id, length(varcharForBitCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |3          
+2          |NULL       
+ij> select id, length(longVarcharCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |7          
+2          |NULL       
+ij> select id, length(blobCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |2          
+2          |NULL       
+ij> select id, length(clobCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |9          
+2          |NULL       
+ij> select id, length(dateCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |4          
+2          |NULL       
+ij> select id, length(timeCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |3          
+2          |NULL       
+ij> select id, length(timestampCol) from allTypes order by id;
+ID         |2          
+-----------------------
+1          |10         
+2          |NULL       
+ij> -- try length of constants
+values( length( 1), length( 720176), length( 12345678901));
+1          |2          |3          
+-----------------------------------
+4          |4          |8          
+ij> values( length( 2.2E-1));
+1          
+-----------
+8          
+ij> values( length( 1.), length( 12.3), length( 123.4), length( 123.45));
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |3          
+ij> values( length( '1'), length( '12'));
+1          |2          
+-----------------------
+1          |2          
+ij> values( length( X'00'), length( X'FF'), length( X'FFFF'));
+1          |2          |3          
+-----------------------------------
+1          |1          |2          
+ij> values( length( date('0001-1-1')), length( time('0:00:00')), length( timestamp( '0001-1-1 0:00:00')));
+1          |2          |3          
+-----------------------------------
+4          |3          |10         
+ij> -- try a length in the where clause
+select id from allTypes where length(smallIntCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(intCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(bigIntCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(floatCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(float1Col) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(float26Col) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(realCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(doubleCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(decimalCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(decimal10Col) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(decimal11Col) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(numeric10d2Col) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(charCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(char32Col) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(charForBitCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(varcharCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(varcharForBitCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(longVarcharCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(blobCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(clobCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> select id from allTypes where length(dateCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(timeCol) > 5 order by id;
+ID         
+-----------
+ij> select id from allTypes where length(timestampCol) > 5 order by id;
+ID         
+-----------
+1          
+ij> -- try an expression
+select id, length( charCol || 'abc') from allTypes order by id;
+ID         |2          
+-----------------------
+1          |4          
+2          |NULL       
+ij> -- bug 5761 & 5627
+-- JDBC escape length function has the following behavior
+-- LENGTH (RTRIM (xxxx))
+values {FN LENGTH('xxxx                    ')};
+1          
+-----------
+4          
+ij> values {FN LENGTH(' xxxx                    ')};
+1          
+-----------
+5          
+ij> values {FN LENGTH('  xxxx                    ')};
+1          
+-----------
+6          
+ij> values {FN LENGTH('   xxxx                    ')};
+1          
+-----------
+7          
+ij> CREATE FUNCTION SV_RNNI(P1 INT) RETURNS VARCHAR(10) RETURNS NULL ON NULL INPUT EXTERNAL NAME 'java.lang.String.valueOf' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION SV_CNI(P1 INT) RETURNS VARCHAR(10) CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.String.valueOf' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION SV_DEF(P1 INT) RETURNS VARCHAR(10) EXTERNAL NAME 'java.lang.String.valueOf' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION MAX_RNNI(P1 INT, P2 INT) RETURNS INT RETURNS NULL ON NULL INPUT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION MAX_CNI(P1 INT, P2 INT) RETURNS INT CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION MAX_DEF(P1 INT, P2 INT) RETURNS INT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> VALUES SV_RNNI(3);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+3                                                                                                                               
+ij> VALUES SV_CNI(4);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+4                                                                                                                               
+ij> VALUES SV_DEF(5);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+5                                                                                                                               
+ij> create table SV_TAB(I INT);
+0 rows inserted/updated/deleted
+ij> insert into SV_TAB values(null);
+1 row inserted/updated/deleted
+ij> insert into SV_TAB values(7);
+1 row inserted/updated/deleted
+ij> select SV_RNNI(I) from SV_TAB where I = 7;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+7                                                                                                                               
+ij> select SV_CNI(I) from SV_TAB where I = 7;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+7                                                                                                                               
+ij> select SV_DEF(I) from SV_TAB where I = 7;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+7                                                                                                                               
+ij> select SV_RNNI(I) from SV_TAB where I IS NULL;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                            
+ij> select SV_CNI(I) from SV_TAB where I IS NULL;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+ERROR 39004: A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+ij> select SV_DEF(I) from SV_TAB where I IS NULL;
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+ERROR 39004: A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+ij> VALUES MAX_RNNI(67, 12);
+1          
+-----------
+67         
+ij> VALUES MAX_RNNI(-3, -98);
+1          
+-----------
+-3         
+ij> VALUES MAX_CNI(5, 3);
+1          
+-----------
+5          
+ij> VALUES MAX_DEF(99, -45);
+1          
+-----------
+99         
+ij> select MAX_RNNI(5, I) from SV_TAB where I = 7;
+1          
+-----------
+7          
+ij> select MAX_CNI(6, I) from SV_TAB where I = 7;
+1          
+-----------
+7          
+ij> select MAX_DEF(2, I) from SV_TAB where I = 7;
+1          
+-----------
+7          
+ij> select MAX_RNNI(I, 34) from SV_TAB where I = 7;
+1          
+-----------
+34         
+ij> select MAX_CNI(I, 24) from SV_TAB where I = 7;
+1          
+-----------
+24         
+ij> select MAX_DEF(I, 14) from SV_TAB where I = 7;
+1          
+-----------
+14         
+ij> select MAX_RNNI(5, I) from SV_TAB where I IS NULL;
+1          
+-----------
+NULL       
+ij> select MAX_CNI(6, I) from SV_TAB where I IS NULL;
+1          
+-----------
+ERROR 39004: A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+ij> select MAX_DEF(2, I) from SV_TAB where I IS NULL;
+1          
+-----------
+ERROR 39004: A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+ij> select MAX_RNNI(I, 34) from SV_TAB where I IS NULL;
+1          
+-----------
+NULL       
+ij> select MAX_CNI(I, 24) from SV_TAB where I IS NULL;
+1          
+-----------
+ERROR 39004: A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+ij> select MAX_DEF(I, 14) from SV_TAB where I IS NULL;
+1          
+-----------
+ERROR 39004: A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+ij> CREATE FUNCTION COUNT_ROWS(P1 VARCHAR(128), P2 VARCHAR(128)) RETURNS INT
+READS SQL DATA
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.countRows'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION FN_ABS(P1 INT) RETURNS INT
+NO SQL
+RETURNS NULL ON NULL INPUT
+EXTERNAL NAME 'java.lang.Math.abs'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> select FN_ABS(i) FROM SV_TAB;
+1          
+-----------
+NULL       
+7          
+ij> select COUNT_ROWS(CURRENT SCHEMA, 'SV_TAB') from SV_TAB;
+1          
+-----------
+2          
+2          
+ij> select FN_ABS(i), COUNT_ROWS(CURRENT SCHEMA, 'SV_TAB') from SV_TAB;
+1          |2          
+-----------------------
+NULL       |2          
+7          |2          
+ij> DROP FUNCTION SV_RNNI;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION SV_CNI;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION SV_DEF;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION MAX_RNNI;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION MAX_CNI;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION MAX_DEF;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION FN_ABS;
+0 rows inserted/updated/deleted
+ij> DROP FUNCTION COUNT_ROWS;
+0 rows inserted/updated/deleted
+ij> DROP TABLE SV_TAB;
+0 rows inserted/updated/deleted
+ij> -- check MODIFIES SQL DATA not allowed with FUNCTION
+CREATE FUNCTION COUNT_ROWS(P1 VARCHAR(128), P2 VARCHAR(128)) RETURNS INT
+MODIFIES SQL DATA
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.countRows'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+ERROR 42X01: Syntax error: MODIFIES SQL DATA.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/getCurrentProperties.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/getCurrentProperties.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,33 @@
+----- listing properties --
+derby.drda.maxThreads=0
+derby.drda.keepAlive=true
+derby.drda.minThreads=0
+derby.drda.portNumber=1527
+derby.drda.logConnections=false
+derby.drda.timeSlice=0
+derby.drda.startNetworkServer=false
+derby.drda.host=localhost
+derby.drda.traceAll=false
+Properties with tracing on
+----- listing properties --
+derby.drda.maxThreads=0
+derby.drda.trace.3=true
+derby.drda.keepAlive=true
+derby.drda.minThreads=0
+derby.drda.portNumber=1527
+derby.drda.logConnections=false
+derby.drda.timeSlice=0
+derby.drda.startNetworkServer=false
+derby.drda.host=localhost
+derby.drda.traceAll=false
+Properties with tracing on
+----- listing properties --
+derby.drda.maxThreads=0
+derby.drda.keepAlive=true
+derby.drda.minThreads=0
+derby.drda.portNumber=1527
+derby.drda.logConnections=false
+derby.drda.timeSlice=0
+derby.drda.startNetworkServer=false
+derby.drda.host=localhost
+derby.drda.traceAll=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/groupBy.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/groupBy.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,632 @@
+ij> -- negative tests for group by and having clauses
+create table t1 (a int, b int, c int);
+0 rows inserted/updated/deleted
+ij> create table t2 (a int, b int, c int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values (1,1,1), (2,2,2);
+2 rows inserted/updated/deleted
+ij> -- group by position
+select * from t1 group by 1;
+ERROR 42X01: Syntax error: Encountered "1" at line 2, column 27.
+ij> -- column in group by list not in from list
+select a as d from t1 group by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> -- column in group by list not in select list
+select a as b from t1 group by b;
+ERROR 42Y36: Column reference 'A' is invalid.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> select a from t1 group by b;
+ERROR 42Y36: Column reference 'A' is invalid.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> select a, char(b) from t1 group by a;
+ERROR 42Y36: Column reference 'B' is invalid.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> -- columns in group by list must be unique
+select a, b from t1 group by a, a;
+ERROR 42Y19: 'A' appears multiple times in the GROUP BY list. Columns in the GROUP BY list must be unambiguous.
+ij> select a, b from t1 group by a, t1.a;
+ERROR 42Y19: 'A' appears multiple times in the GROUP BY list. Columns in the GROUP BY list must be unambiguous.
+ij> -- cursor with group by is not updatable
+get cursor c1 as 'select a from t1 group by a for update';
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- noncorrelated subquery that returns too many rows
+select a, (select a from t2) from t1 group by a;
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- correlation on outer table
+select t2.a, (select b from t1 where t1.b = t2.b) from t1 t2 group by t2.a;
+ERROR 42Y30: The SELECT list of a grouped query contains at least 1 invalid expression.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> -- having clause
+-- cannot contain column references which are not grouping columns
+select a from t1 group by a having c = 1;
+ERROR 42X04: Column 'C' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C' is not a column in the target table.
+ij> select a from t1 o group by a having a = (select a from t1 where b = b.o);
+ERROR 42X04: Column 'B.O' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'B.O' is not a column in the target table.
+ij> -- ?s in group by
+select a from t1 group by ?;
+ERROR 42X01: Syntax error: Encountered "?" at line 2, column 27.
+ij> -- group by on long varchar type
+create table unmapped(c1 long varchar);
+0 rows inserted/updated/deleted
+ij> select c1, max(1) from unmapped group by c1;
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table unmapped;
+0 rows inserted/updated/deleted
+ij> -- Test group by and having clauses with no aggregates
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(2) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> create table tab1 (
+				i integer, 
+				s smallint, 
+				l bigint,
+				c char(30),
+				v varchar(30),
+				lvc long varchar,
+				d double precision,
+				r real,
+				dt date, 
+				t time, 
+				ts timestamp);
+0 rows inserted/updated/deleted
+ij> -- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'everyone is here', 'adios, muchachos',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'noone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0f0f', X'1234');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'ffff', X'ABCD');
+1 row inserted/updated/deleted
+ij> -- bit maps to Byte[], so can't test for now
+insert into tab1
+select i, s, l, c, v, lvc, d, r, dt, t, ts from t;
+17 rows inserted/updated/deleted
+ij> -- simple grouping
+select i from t group by i order by i;
+I          
+-----------
+0          
+1          
+NULL       
+ij> select s from t group by s order by s;
+S     
+------
+100   
+200   
+NULL  
+ij> select l from t group by l order by l;
+L                   
+--------------------
+1000000             
+2000000             
+NULL                
+ij> select c from t group by c order by c;
+C         
+----------
+goodbye   
+hello     
+NULL      
+ij> select v from t group by v order by v;
+V                                                 
+--------------------------------------------------
+everyone is here                                  
+noone is here                                     
+NULL                                              
+ij> select d from t group by d order by d;
+D                     
+----------------------
+100.0                 
+200.0                 
+NULL                  
+ij> select r from t group by r order by r;
+R            
+-------------
+100.0        
+200.0        
+NULL         
+ij> select dt from t group by dt order by dt;
+DT        
+----------
+1992-01-01
+1992-09-09
+NULL      
+ij> select t from t group by t order by t;
+T       
+--------
+12:30:30
+12:55:55
+NULL    
+ij> select ts from t group by ts order by ts;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+ij> select b from t group by b order by b;
+B   
+----
+12af
+ffff
+NULL
+ij> select bv from t group by bv order by bv;
+BV  
+----
+0f0f
+ffff
+NULL
+ij> -- grouping by long varchar [for bit data] cols should fail in db2 mode
+select lbv from t group by lbv order by lbv;
+LBV                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------
+1234                                                                                                                            
+abcd                                                                                                                            
+NULL                                                                                                                            
+ij> -- multicolumn grouping
+select i, dt, b from t where 1=1 group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select i, dt, b from t group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select i, dt, b from t group by b, i, dt order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select i, dt, b from t group by dt, i, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- group by expression
+select expr1, expr2
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1 order by expr2,expr1;
+EXPR1      |EXPR2                                                       
+------------------------------------------------------------------------
+0          |goodbye   everyone is here                                  
+0          |hello     everyone is here                                  
+0          |hello     everyone is here                                  
+100        |hello     everyone is here                                  
+0          |hello     noone is here                                     
+NULL       |NULL                                                        
+ij> -- group by correlated subquery
+select i, expr1
+from (select i, (select distinct i from t m where m.i = t.i) from t) t (i, expr1)
+ group by i, expr1 order by i,expr1;
+I          |EXPR1      
+-----------------------
+0          |0          
+1          |1          
+NULL       |NULL       
+ij> -- distinct and group by
+select distinct i, dt, b from t group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- order by and group by
+-- same order
+select i, dt, b from t group by i, dt, b order by i, dt, b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- subset in same order
+select i, dt, b from t group by i, dt, b order by i, dt;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|ffff
+0          |1992-01-01|12af
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- different order
+select i, dt, b from t group by i, dt, b order by b, dt, i;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+1          |1992-01-01|12af
+0          |1992-09-09|12af
+0          |1992-01-01|ffff
+NULL       |NULL      |NULL
+ij> -- subset in different order
+select i, dt, b from t group by i, dt, b order by b, dt;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+1          |1992-01-01|12af
+0          |1992-09-09|12af
+0          |1992-01-01|ffff
+NULL       |NULL      |NULL
+ij> -- group by without having in from subquery
+select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-01-01|0          |1992-09-09
+0          |1992-01-01|1          |1992-01-01
+0          |1992-01-01|NULL       |NULL      
+0          |1992-09-09|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+0          |1992-09-09|1          |1992-01-01
+0          |1992-09-09|NULL       |NULL      
+1          |1992-01-01|0          |1992-01-01
+1          |1992-01-01|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+1          |1992-01-01|NULL       |NULL      
+NULL       |NULL      |0          |1992-01-01
+NULL       |NULL      |0          |1992-09-09
+NULL       |NULL      |1          |1992-01-01
+NULL       |NULL      |NULL       |NULL      
+ij> select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> select t.*, m.* from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,t.t_dt,m.t_i,m.t_dt;
+T_I        |T_DT      |T_I        |T_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> select t.t_i, t.t_dt, m.* from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,t.t_dt,m.t_i,m.t_dt;
+T_I        |T_DT      |T_I        |T_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> -- additional columns in group by list not in select list
+select i, dt, b from t group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select t.i from t group by i, dt, b order by i;
+I          
+-----------
+0          
+0          
+0          
+1          
+NULL       
+ij> select t.dt from t group by i, dt, b order by dt;
+DT        
+----------
+1992-01-01
+1992-01-01
+1992-01-01
+1992-09-09
+NULL      
+ij> select t.b from t group by i, dt, b order by b;
+B   
+----
+12af
+12af
+12af
+ffff
+NULL
+ij> select t.t_i, m.t_i from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,m.t_i;
+T_I        |T_I        
+-----------------------
+0          |0          
+0          |0          
+1          |1          
+ij> -- having
+-- parameters in having clause
+prepare p1 as 'select i, dt, b from t group by i, dt, b having i = ? order by i,dt,b';
+ij> execute p1 using 'values 0';
+IJ WARNING: Autocommit may close using result set
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+ij> remove p1;
+ij> -- group by with having in from subquery
+select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+ij> select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-01-01|0          |1992-09-09
+0          |1992-09-09|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|0          |1992-01-01
+1          |1992-01-01|0          |1992-09-09
+NULL       |NULL      |0          |1992-01-01
+NULL       |NULL      |0          |1992-09-09
+ij> select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt
+group by t_i, t_dt, m_i, m_dt
+having t_i * m_i = m_i * t_i order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+ij> -- correlated subquery in having clause
+select i, dt from t
+group by i, dt
+having i = (select distinct i from tab1 where t.i = tab1.i) order by i,dt;
+I          |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+ij> select i, dt from t
+group by i, dt
+having i = (select i from t m group by i having t.i = m.i) order by i,dt;
+I          |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+ij> -- column references in having clause match columns in group by list
+select i as outer_i, dt from t
+group by i, dt
+having i = (select i from t m group by i having t.i = m.i) order by outer_i,dt;
+OUTER_I    |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+ij> -- additional columns in group by list not in select list
+select i, dt from t group by i, dt order by i,dt;
+I          |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+NULL       |NULL      
+ij> select t.dt from t group by i, dt having i = 0 order by t.dt;
+DT        
+----------
+1992-01-01
+1992-09-09
+ij> select t.dt from t group by i, dt having i <> 0 order by t.dt;
+DT        
+----------
+1992-01-01
+ij> select t.dt from t group by i, dt having i != 0 order by t.dt;
+DT        
+----------
+1992-01-01
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> -- negative tests for selects with a having clause without a group by
+-- create a table
+create table t1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> -- binding of having clause
+select 1 from t1 having 1;
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> -- column references in having clause not allowed if no group by
+select * from t1 having c1 = 1;
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> select 1 from t1 having c1 = 1;
+ERROR 42X04: Column 'C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C1' is not a column in the target table.
+ij> -- correlated subquery in having clause
+select * from t1 t1_outer 
+having 1 = (select 1 from t1 where c1 = t1_outer.c1);
+ERROR 42Y35: Column reference 'T1_OUTER.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5653
+-- test (almost useful) restrictions on a having clause without a group by clause
+-- create the table
+create table t1 (c1 float);
+0 rows inserted/updated/deleted
+ij> -- populate the table
+insert into t1 values 0.0, 90.0;
+2 rows inserted/updated/deleted
+ij> -- this is the only query that should not fail
+-- filter out all rows
+select 1 from t1 having 1=0;
+1          
+-----------
+ij> -- all 6 queries below should fail after bug 5653 is fixed
+-- select * 
+select * from t1 having 1=1;
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- select column
+select c1 from t1 having 1=1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- select with a built-in function sqrt
+select sqrt(c1) from t1 having 1=1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- non-correlated subquery in having clause
+select * from t1 having 1 = (select 1 from t1 where c1 = 0.0);
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- expression in select list
+select (c1 * c1) / c1 from t1 where c1 <> 0 having 1=1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- between
+select * from t1 having 1 between 1 and 2;
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5920
+-- test that HAVING without GROUPBY makes one group
+create table t(c int, d int);
+0 rows inserted/updated/deleted
+ij> insert into t(c,d) values (1,10),(2,20),(2,20),(3,30),(3,30),(3,30);
+6 rows inserted/updated/deleted
+ij> select avg(c) from t having 1 < 2;
+1          
+-----------
+2          
+ij> -- used to give several rows, now gives only one
+select 10 from t having 1 < 2;
+1          
+-----------
+10         
+ij> -- ok, gives one row
+select 10,avg(c) from t having 1 < 2;
+1          |2          
+-----------------------
+10         |2          
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorIJ.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorIJ.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,300 @@
+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 XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> next jdk2;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+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> -- 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 XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> next jdk2;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> next jdk4;
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+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
+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
+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
+close jdk4;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+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
+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
+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> -- 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
+set isolation RS;
+ERROR X0X03: Invalid transaction state - held cursor requires same isolation level
+ij> -- following should fail because of cursor jdk4
+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> -- 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 'JDK4' 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 42X30: Cursor 'JDK4' not found. Verify that autocommit is OFF.
+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 'JDK4' 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 XCL07: Cursor 'JDK4' is closed. Verify that autocommit is OFF.
+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;
+ERROR 24000: Invalid cursor state - no current row.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorJavaReflection.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/holdCursorJavaReflection.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,24 @@
+Creating table...
+done creating table and inserting data.
+Start holdable cursor after commit test
+do next() before commit
+look at first column's value: 1
+After commit, look at first column's value: 1
+do next() after commit. Should be at the end of resultset
+one more next() here will give no more rows
+Holdable cursor after commit test over
+Start hold cursor for prepared statements test
+do next() before commit
+look at first column's value: 1
+After commit, look at first column's value: 1
+do next() after commit. Should be at the end of resultset
+one more next() here will give no more rows
+Holdable cursor after commit for prepared statements test over
+Expected Exception:Table 'T1NOTTHERE' does not exist.
+Start hold cursor for callable statements test
+do next() before commit
+look at first column's value: 1
+After commit, look at first column's value: 1
+do next() after commit. Should be at the end of resultset
+one more next() here will give no more rows
+Holdable cursor after commit for callable statements test over

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/identifier.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/identifier.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,288 @@
+ij> --
+-- this test is for identifiers and delimited idenifiers
+-- identifiers get converted to upper case
+-- delimited identifiers have their surrounding double quotes removed and
+-- any pair of adjacent double quotes is converted to a single double quote
+-- max identifier length is 128
+--
+-- trailing blank not trimmed
+create table t1("       " int);
+0 rows inserted/updated/deleted
+ij> -- duplicate identifiers
+create table t1 (c1 int, C1 int);
+ERROR 42X12: Column name 'C1' appears more than once in the create table statement.
+ij> -- duplicate identifier/delimited identifier
+create table t1 (c1 int, "C1" int);
+ERROR 42X12: Column name 'C1' appears more than once in the create table statement.
+ij> -- duplicate delimited identifier/identifier
+create table t1 ("C1" int, C1 int);
+ERROR 42X12: Column name 'C1' appears more than once in the create table statement.
+ij> -- duplicate delimited identifiers
+create table t1 ("C1" int, "C1" int);
+ERROR 42X12: Column name 'C1' appears more than once in the create table statement.
+ij> -- verify preservation of spaces
+create table success1 (c1 int, " C1" int, "  C1  " int);
+0 rows inserted/updated/deleted
+ij> -- verify correct handling of case
+create table success2 ("c1" int, "C1" int);
+0 rows inserted/updated/deleted
+ij> create table success3 (c1 int, "c1" int);
+0 rows inserted/updated/deleted
+ij> -- verify correct handling of double quotes
+create table success4 ("C1""" int, "C1""""" int);
+0 rows inserted/updated/deleted
+ij> -- verify correct handling in an insert
+insert into success1 (c1, " C1", "  C1  ") 
+values (1, 2, 3);
+1 row inserted/updated/deleted
+ij> insert into success1 (C1, " C1", "  C1  ") 
+values (6, 7, 8);
+1 row inserted/updated/deleted
+ij> -- negative testing for an insert
+-- "c1 " is not in success1
+insert into success1 (c1, "c1 ", " C1", " C1 ", "  C1  ") 
+values (11, 12, 13, 14, 15);
+ERROR 42X14: 'c1 ' is not a column in table or VTI 'APP.SUCCESS1'.
+ij> -- C1 appears twice in the column list - C1 and "C1"
+insert into success1 (C1, "C1", " C1", " C1 ", "  C1  ") 
+values (16, 17, 18, 19, 20);
+ERROR 42X13: Column name 'C1' appears more than once times in the column list of an insert statement.
+ij> -- verify correct handling in a select
+select C1, " C1", " C1", "  C1  " from success1;
+C1         | C1        | C1        |  C1       
+-----------------------------------------------
+1          |2          |2          |3          
+6          |7          |7          |8          
+ij> -- following should fail for "C1 "
+select c1, "C1 ", " C1", " C1 ", "  C1  " from success1;
+ERROR 42X04: Column 'C1 ' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C1 ' is not a column in the target table.
+ij> -- negative testing for an insert
+-- "c1 " should not match
+select c1, "c1 ", " C1", " C1 ", "  C1  "  from success1;
+ERROR 42X04: Column 'c1 ' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'c1 ' is not a column in the target table.
+ij> -- negative test for max identifier width
+-- 4567890123456789012345678901234567890123456789012345678901234567890
+create table
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast6
+(c1 int);
+ERROR 42622: The name 'ASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASDFASLAST6' is too long. The maximum length is '128'.
+ij> create table
+"asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast7"
+(c1 int);
+ERROR 42622: The name 'asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast7' is too long. The maximum length is '128'.
+ij> -- positive test for max identifier width
+create table
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast
+(c1 int);
+0 rows inserted/updated/deleted
+ij> insert into 
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast
+values (1);
+1 row inserted/updated/deleted
+ij> select * from 
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast;
+C1         
+-----------
+1          
+ij> create table
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast"
+(c1 int);
+0 rows inserted/updated/deleted
+ij> insert into 
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast"
+values (2);
+1 row inserted/updated/deleted
+ij> select * from 
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast";
+C1         
+-----------
+2          
+ij> -- drop the tables
+drop table success1;
+0 rows inserted/updated/deleted
+ij> drop table success2;
+0 rows inserted/updated/deleted
+ij> drop table success3;
+0 rows inserted/updated/deleted
+ij> drop table success4;
+0 rows inserted/updated/deleted
+ij> drop table
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast;
+0 rows inserted/updated/deleted
+ij> drop table
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast";
+0 rows inserted/updated/deleted
+ij> -- xxxxxxFILTERED-TIMESTAMPxxxxx
+-- new testcases for SQL92 reserved keywords as identifiers
+CREATE TABLE WHEN (WHEN INT, A INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO WHEN (WHEN) VALUES (1);
+1 row inserted/updated/deleted
+ij> INSERT INTO WHEN VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> SELECT * FROM WHEN;
+WHEN       |A          
+-----------------------
+1          |NULL       
+2          |2          
+ij> SELECT WHEN.WHEN, WHEN FROM WHEN;
+WHEN       |WHEN       
+-----------------------
+1          |1          
+2          |2          
+ij> SELECT WHEN.WHEN, WHEN FROM WHEN WHEN;
+WHEN       |WHEN       
+-----------------------
+1          |1          
+2          |2          
+ij> DROP TABLE WHEN;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE THEN (THEN INT, A INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO THEN (THEN) VALUES (1);
+1 row inserted/updated/deleted
+ij> INSERT INTO THEN VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> SELECT * FROM THEN;
+THEN       |A          
+-----------------------
+1          |NULL       
+2          |2          
+ij> SELECT THEN.THEN, THEN FROM THEN;
+THEN       |THEN       
+-----------------------
+1          |1          
+2          |2          
+ij> SELECT THEN.THEN, THEN FROM THEN THEN;
+THEN       |THEN       
+-----------------------
+1          |1          
+2          |2          
+ij> DROP TABLE THEN;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE SIZE (SIZE INT, A INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO SIZE (SIZE) VALUES (1);
+1 row inserted/updated/deleted
+ij> INSERT INTO SIZE VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> SELECT * FROM SIZE;
+SIZE       |A          
+-----------------------
+1          |NULL       
+2          |2          
+ij> SELECT SIZE.SIZE, SIZE FROM SIZE;
+SIZE       |SIZE       
+-----------------------
+1          |1          
+2          |2          
+ij> SELECT SIZE.SIZE, SIZE FROM SIZE SIZE;
+SIZE       |SIZE       
+-----------------------
+1          |1          
+2          |2          
+ij> DROP TABLE SIZE;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE LEVEL (LEVEL INT, A INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO LEVEL (LEVEL) VALUES (1);
+1 row inserted/updated/deleted
+ij> INSERT INTO LEVEL VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> SELECT * FROM LEVEL;
+LEVEL      |A          
+-----------------------
+1          |NULL       
+2          |2          
+ij> SELECT LEVEL.LEVEL, LEVEL FROM LEVEL;
+LEVEL      |LEVEL      
+-----------------------
+1          |1          
+2          |2          
+ij> SELECT LEVEL.LEVEL, LEVEL FROM LEVEL LEVEL;
+LEVEL      |LEVEL      
+-----------------------
+1          |1          
+2          |2          
+ij> DROP TABLE LEVEL;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE DOMAIN (DOMAIN INT, A INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO DOMAIN (DOMAIN) VALUES (1);
+1 row inserted/updated/deleted
+ij> INSERT INTO DOMAIN VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> SELECT * FROM DOMAIN;
+DOMAIN     |A          
+-----------------------
+1          |NULL       
+2          |2          
+ij> SELECT DOMAIN.DOMAIN, DOMAIN FROM DOMAIN;
+DOMAIN     |DOMAIN     
+-----------------------
+1          |1          
+2          |2          
+ij> SELECT DOMAIN.DOMAIN, DOMAIN FROM DOMAIN DOMAIN;
+DOMAIN     |DOMAIN     
+-----------------------
+1          |1          
+2          |2          
+ij> DROP TABLE DOMAIN;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE ZONE (ZONE INT, A INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO ZONE (ZONE) VALUES (1);
+1 row inserted/updated/deleted
+ij> INSERT INTO ZONE VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> SELECT * FROM ZONE;
+ZONE       |A          
+-----------------------
+1          |NULL       
+2          |2          
+ij> SELECT ZONE.ZONE, ZONE FROM ZONE;
+ZONE       |ZONE       
+-----------------------
+1          |1          
+2          |2          
+ij> SELECT ZONE.ZONE, ZONE FROM ZONE ZONE;
+ZONE       |ZONE       
+-----------------------
+1          |1          
+2          |2          
+ij> DROP TABLE ZONE;
+0 rows inserted/updated/deleted
+ij> -- Negative tests
+-- Novera wanted 0-length delimited identifiers but for db2-compatibility, we are going to stop supporting 0-length delimited identifiers
+-- test1
+create table "" (c1 int);
+ERROR 42X01: Syntax error: Encountered "\"" at line 4, column 14.
+ij> -- test2
+create table t1111 ("" int);
+ERROR 42X01: Syntax error: Encountered "\"" at line 2, column 21.
+ij> -- test3
+create schema "";
+ERROR 42X01: Syntax error: Encountered "\"" at line 2, column 15.
+ij> -- identifiers can not start with "_"
+-- test4
+create table _t1(_c1 int);
+ERROR 42X01: Syntax error: Encountered "_" at line 3, column 14.
+ij> -- test5
+create table t1(_c1 int);
+ERROR 42X01: Syntax error: Encountered "_" at line 2, column 17.
+ij> -- test6
+create view _v1 (c1) as select * from t1;
+ERROR 42X01: Syntax error: Encountered "_" at line 2, column 13.
+ij> -- test7
+create view v1 (__c1) as select * from t1;
+ERROR 42X01: Syntax error: Encountered "_" at line 2, column 17.
+ij> -- test8
+create index _i1 on t1(c1);
+ERROR 42X01: Syntax error: Encountered "_" at line 2, column 14.
+ij> -- test9
+create table "_"."_"(c1 int);
+0 rows inserted/updated/deleted
+ij> -- test10
+create table "".""(c1 int);
+ERROR 42X01: Syntax error: Encountered "\"" at line 2, column 14.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/implicitConversions.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/implicitConversions.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3885 @@
+ij> -- ** insert implicitConversionsPositive.sql
+-- tests for implicit conversions between string and non-string types
+-- and vice versa
+-- create an all types table
+create table all1(si smallint, i int, li bigint, r real, 
+				  dp double precision, dc decimal(5,1), num numeric(5,1),
+				  b char(2) for bit data, bv varchar(2) for bit data,
+				  lbv long varchar FOR bit data,
+				  dt date, tm time, tms timestamp,
+				  c char(1), vc varchar(1), lvc long varchar);
+0 rows inserted/updated/deleted
+ij> -- populate table
+insert into all1 values (2, 3, 4, 5.5, 6.6, 7.7, 8.8,
+				  		 X'0020', X'0020', X'0020',
+				  		 date('1996-09-09'), time('12:12:12'), 
+				  		 timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'),
+				  		 '1', '2', '33333333');
+1 row inserted/updated/deleted
+ij> -- unions between string and non-string types
+values cast(1 as smallint), cast('2' as char(1));
+ERROR 42X61: Types 'SMALLINT' and 'CHAR' are not UNION compatible.
+ij> values cast(1 as smallint), cast('2' as varchar(1));
+ERROR 42X61: Types 'SMALLINT' and 'VARCHAR' are not UNION compatible.
+ij> values cast(1 as smallint), cast('2' as long varchar);
+ERROR 42X61: Types 'SMALLINT' and 'LONG VARCHAR' are not UNION compatible.
+ij> values cast('2' as char(1)), cast(1 as smallint);
+ERROR 42X61: Types 'CHAR' and 'SMALLINT' are not UNION compatible.
+ij> values cast('2' as varchar(1)), cast(1 as smallint);
+ERROR 42X61: Types 'VARCHAR' and 'SMALLINT' are not UNION compatible.
+ij> values cast('2' as long varchar), cast(1 as smallint);
+ERROR 42X61: Types 'LONG VARCHAR' and 'SMALLINT' are not UNION compatible.
+ij> values cast(1 as int), cast('2' as char(1));
+ERROR 42X61: Types 'INTEGER' and 'CHAR' are not UNION compatible.
+ij> values cast(1 as int), cast('2' as varchar(1));
+ERROR 42X61: Types 'INTEGER' and 'VARCHAR' are not UNION compatible.
+ij> values cast(1 as int), cast('2' as long varchar);
+ERROR 42X61: Types 'INTEGER' and 'LONG VARCHAR' are not UNION compatible.
+ij> values cast('2' as char(1)), cast(1 as int);
+ERROR 42X61: Types 'CHAR' and 'INTEGER' are not UNION compatible.
+ij> values cast('2' as varchar(1)), cast(1 as int);
+ERROR 42X61: Types 'VARCHAR' and 'INTEGER' are not UNION compatible.
+ij> values cast('2' as long varchar), cast(1 as int);
+ERROR 42X61: Types 'LONG VARCHAR' and 'INTEGER' are not UNION compatible.
+ij> values cast(1 as bigint), cast('2' as char(1));
+ERROR 42X61: Types 'BIGINT' and 'CHAR' are not UNION compatible.
+ij> values cast(1 as bigint), cast('2' as varchar(1));
+ERROR 42X61: Types 'BIGINT' and 'VARCHAR' are not UNION compatible.
+ij> values cast(1 as bigint), cast('2' as long varchar);
+ERROR 42X61: Types 'BIGINT' and 'LONG VARCHAR' are not UNION compatible.
+ij> values cast('2' as char(1)), cast(1 as bigint);
+ERROR 42X61: Types 'CHAR' and 'BIGINT' are not UNION compatible.
+ij> values cast('2' as varchar(1)), cast(1 as bigint);
+ERROR 42X61: Types 'VARCHAR' and 'BIGINT' are not UNION compatible.
+ij> values cast('2' as long varchar), cast(1 as bigint);
+ERROR 42X61: Types 'LONG VARCHAR' and 'BIGINT' are not UNION compatible.
+ij> values cast(1.1 as real), cast('2' as char(1));
+ERROR 42X61: Types 'REAL' and 'CHAR' are not UNION compatible.
+ij> values cast(1.1 as real), cast('2' as varchar(1));
+ERROR 42X61: Types 'REAL' and 'VARCHAR' are not UNION compatible.
+ij> values cast(1.1 as real), cast('2' as long varchar);
+ERROR 42X61: Types 'REAL' and 'LONG VARCHAR' are not UNION compatible.
+ij> values cast('2' as char(1)), cast(1.1 as real);
+ERROR 42X61: Types 'CHAR' and 'REAL' are not UNION compatible.
+ij> values cast('2' as varchar(1)), cast(1.1 as real);
+ERROR 42X61: Types 'VARCHAR' and 'REAL' are not UNION compatible.
+ij> values cast('2' as long varchar), cast(1.1 as real);
+ERROR 42X61: Types 'LONG VARCHAR' and 'REAL' are not UNION compatible.
+ij> values cast(1.1 as double precision), cast('2' as char(1));
+ERROR 42X61: Types 'DOUBLE' and 'CHAR' are not UNION compatible.
+ij> values cast(1.1 as double precision), cast('2' as varchar(1));
+ERROR 42X61: Types 'DOUBLE' and 'VARCHAR' are not UNION compatible.
+ij> values cast(1.1 as double precision), cast('2' as long varchar);
+ERROR 42X61: Types 'DOUBLE' and 'LONG VARCHAR' are not UNION compatible.
+ij> values cast('2' as char(1)), cast(1.1 as double precision);
+ERROR 42X61: Types 'CHAR' and 'DOUBLE' are not UNION compatible.
+ij> values cast('2' as varchar(1)), cast(1.1 as double precision);
+ERROR 42X61: Types 'VARCHAR' and 'DOUBLE' are not UNION compatible.
+ij> values cast('2' as long varchar), cast(1.1 as double precision);
+ERROR 42X61: Types 'LONG VARCHAR' and 'DOUBLE' are not UNION compatible.
+ij> values cast(1.1 as decimal(5,1)), cast('2' as char(1));
+ERROR 42X61: Types 'DECIMAL' and 'CHAR' are not UNION compatible.
+ij> values cast(1.1 as decimal(5,1)), cast('2' as varchar(1));
+ERROR 42X61: Types 'DECIMAL' and 'VARCHAR' are not UNION compatible.
+ij> values cast(1.1 as decimal(5,1)), cast('2' as long varchar);
+ERROR 42X61: Types 'DECIMAL' and 'LONG VARCHAR' are not UNION compatible.
+ij> values cast('2' as char(1)), cast(1.1 as decimal(5,1));
+ERROR 42X61: Types 'CHAR' and 'DECIMAL' are not UNION compatible.
+ij> values cast('2' as varchar(1)), cast(1.1 as decimal(5,1));
+ERROR 42X61: Types 'VARCHAR' and 'DECIMAL' are not UNION compatible.
+ij> values cast('2' as long varchar), cast(1.1 as decimal(5,1));
+ERROR 42X61: Types 'LONG VARCHAR' and 'DECIMAL' are not UNION compatible.
+ij> values cast(1.1 as decimal(5,1)), '0.002';
+ERROR 42X61: Types 'DECIMAL' and 'CHAR' are not UNION compatible.
+ij> values cast(1.1 as decimal(5,1)), '0.002';
+ERROR 42X61: Types 'DECIMAL' and 'CHAR' are not UNION compatible.
+ij> values '0.002', cast(1.1 as decimal(5,1));
+ERROR 42X61: Types 'CHAR' and 'DECIMAL' are not UNION compatible.
+ij> values '0.002', cast(1.1 as decimal(5,1));
+ERROR 42X61: Types 'CHAR' and 'DECIMAL' are not UNION compatible.
+ij> values 'abcde', 'fghij';
+1    
+-----
+abcde
+fghij
+ij> values 'abcde', cast('fghij' as varchar(5));
+1    
+-----
+abcde
+fghij
+ij> values 'abcde', cast('fghij' as long varchar);
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+abcde                                                                                                                           
+fghij                                                                                                                           
+ij> values cast('abcde' as varchar(5)), 'fghij';
+1    
+-----
+abcde
+fghij
+ij> values cast('abcde' as long varchar), 'fghij';
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+abcde                                                                                                                           
+fghij                                                                                                                           
+ij> -- DB2 UDB allows comparisons between hex constants and character constants
+-- DB2 CS does not allow comparisons between hex constants and character constants
+values X'01', '3';
+ERROR 42X61: Types 'CHAR () FOR BIT DATA' and 'CHAR' are not UNION compatible.
+ij> values X'01', cast('3' as varchar(5));
+ERROR 42X61: Types 'CHAR () FOR BIT DATA' and 'VARCHAR' are not UNION compatible.
+ij> values X'01', cast('3' as long varchar);
+ERROR 42X61: Types 'CHAR () FOR BIT DATA' and 'LONG VARCHAR' are not UNION compatible.
+ij> values '3', X'01';
+ERROR 42X61: Types 'CHAR' and 'CHAR () FOR BIT DATA' are not UNION compatible.
+ij> values cast('3' as varchar(5)), X'01';
+ERROR 42X61: Types 'VARCHAR' and 'CHAR () FOR BIT DATA' are not UNION compatible.
+ij> values cast('3' as long varchar), X'01';
+ERROR 42X61: Types 'LONG VARCHAR' and 'CHAR () FOR BIT DATA' are not UNION compatible.
+ij> values date('1996-09-09'), '1995-08-08';
+1         
+----------
+1996-09-09
+1995-08-08
+ij> values date('1996-09-09'), cast('1995-08-08' as varchar(10));
+1         
+----------
+1996-09-09
+1995-08-08
+ij> values date('1996-09-09'), cast('1995-08-08' as long varchar);
+ERROR 42X61: Types 'DATE' and 'LONG VARCHAR' are not UNION compatible.
+ij> values '1995-08-08', date('1996-09-09');
+1         
+----------
+1995-08-08
+1996-09-09
+ij> values cast('1995-08-08' as varchar(10)), date('1996-09-09');
+1         
+----------
+1995-08-08
+1996-09-09
+ij> values cast('1995-08-08' as long varchar), date('1996-09-09');
+ERROR 42X61: Types 'LONG VARCHAR' and 'DATE' are not UNION compatible.
+ij> values time('12:12:12'), '11:11:11';
+1       
+--------
+12:12:12
+11:11:11
+ij> values time('12:12:12'), cast('11:11:11' as varchar(8));
+1       
+--------
+12:12:12
+11:11:11
+ij> values time('12:12:12'), cast('11:11:11' as long varchar);
+ERROR 42X61: Types 'TIME' and 'LONG VARCHAR' are not UNION compatible.
+ij> values '11:11:11', time('12:12:12');
+1       
+--------
+11:11:11
+12:12:12
+ij> values cast('11:11:11' as varchar(8)), time('12:12:12');
+1       
+--------
+11:11:11
+12:12:12
+ij> values cast('11:11:11' as long varchar), time('12:12:12');
+ERROR 42X61: Types 'LONG VARCHAR' and 'TIME' are not UNION compatible.
+ij> values timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'), 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'), cast('xxxxxxFILTERED-TIMESTAMPxxxxx' as varchar(30));
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'), cast('xxxxxxFILTERED-TIMESTAMPxxxxx' as long varchar);
+ERROR 42X61: Types 'TIMESTAMP' and 'LONG VARCHAR' are not UNION compatible.
+ij> values 'xxxxxxFILTERED-TIMESTAMPxxxxx', timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values cast('xxxxxxFILTERED-TIMESTAMPxxxxx' as varchar(30)), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> values cast('xxxxxxFILTERED-TIMESTAMPxxxxx' as long varchar), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 42X61: Types 'LONG VARCHAR' and 'TIMESTAMP' are not UNION compatible.
+ij> -- comparisons at the language level
+select si from all1 where cast(1 as smallint) = '1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) > '2';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) >= '2';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) < '2';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <= '2';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <> '2';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) = cast(null as char);
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) > cast(null as char);
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) >= cast(null as char);
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) < cast(null as char);
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <= cast(null as char);
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <> cast(null as char);
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where '1' = cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '2' > cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '2' >= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '2' < cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '2' <= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '2' <> cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(null as char) = cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(null as char) > cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(null as char) >= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(null as char) < cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(null as char) <= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(null as char) <> cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(1 as int) = '1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) > '2';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) >= '2';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) < '2';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <= '2';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <> '2';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) = cast(null as char);
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) > cast(null as char);
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) >= cast(null as char);
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) < cast(null as char);
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <= cast(null as char);
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <> cast(null as char);
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where '1' = cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '2' > cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '2' >= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '2' < cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '2' <> cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '2' <= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(null as char) = cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(null as char) > cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(null as char) >= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(null as char) < cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(null as char) <> cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(null as char) <= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(1 as bigint) = '1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) > '2';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) >= '2';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) < '2';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <= '2';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <> '2';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) = cast(null as char);
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) > cast(null as char);
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) >= cast(null as char);
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) < cast(null as char);
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <= cast(null as char);
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <> cast(null as char);
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where '1' = cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '2' > cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '2' >= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '2' < cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '2' <= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '2' <> cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(null as char) = cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(null as char) > cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(null as char) >= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(null as char) < cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(null as char) <= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(null as char) <> cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where cast(1 as real) = '1';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) > '2';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) >= '2';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) < '2';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) <> '2';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) <= '2';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) = cast(null as char);
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) > cast(null as char);
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) >= cast(null as char);
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) < cast(null as char);
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) <> cast(null as char);
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as real) <= cast(null as char);
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where '1' = cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where '2' > cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where '2' >= cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where '2' < cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where '2' <= cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where '2' <> cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(null as char) = cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(null as char) > cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(null as char) >= cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(null as char) < cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(null as char) <= cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(null as char) <> cast(1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(1 as double precision) = '1';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) > '2';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) >= '2';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) < '2';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) <= '2';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) <> '2';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) = cast(null as char);
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) > cast(null as char);
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) >= cast(null as char);
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) < cast(null as char);
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) <= cast(null as char);
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as double precision) <> cast(null as char);
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where '1' = cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where '2' > cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where '2' >= cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where '2' < cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where '2' <= cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where '2' <> cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(null as char) = cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(null as char) > cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(null as char) >= cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(null as char) < cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(null as char) <= cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(null as char) <> cast(1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where cast(1 as numeric) = '1';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) > '2';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) >= '2';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) < '2';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) <= '2';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) <> '2';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) = cast(null as char);
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) > cast(null as char);
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) >= cast(null as char);
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) < cast(null as char);
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) <= cast(null as char);
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as numeric) <> cast(null as char);
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select si from all1 where '1' = cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where '2' > cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where '2' >= cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where '2' < cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where '2' <= cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where '2' <> cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where cast(null as char) = cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where cast(null as char) > cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where cast(null as char) >= cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where cast(null as char) < cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where cast(null as char) <= cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select si from all1 where cast(null as char) <> cast(1 as numeric);
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> -- the following queries return 1 if the search condition is satisfied
+-- and returns nothing if the search condition is not satisfied
+select 1 from all1 where '1996-09-09' = date('1996-09-09');
+1          
+-----------
+1          
+ij> select 1 from all1 where '1996-9-10' > date('1996-09-09');
+1          
+-----------
+1          
+ij> select 1 from all1 where '1996-9-10' >= date('1996-09-09');
+1          
+-----------
+1          
+ij> select 1 from all1 where '1996-9-10' < date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where '1996-9-10' <= date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where '1996-9-10' <> date('1996-09-09');
+1          
+-----------
+1          
+ij> select 1 from all1 where cast(null as char) = date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char)> date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char)>= date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char)< date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char)<= date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char)<> date('1996-09-09');
+1          
+-----------
+ij> select 1 from all1 where date('1996-09-09') = '1996-09-09';
+1          
+-----------
+1          
+ij> select 1 from all1 where date('1996-9-10') > '1996-09-09';
+1          
+-----------
+1          
+ij> select 1 from all1 where date('1996-9-10') >= '1996-09-09';
+1          
+-----------
+1          
+ij> select 1 from all1 where date('1996-9-10') < '1996-09-09';
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') <= '1996-09-09';
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') <> '1996-09-09';
+1          
+-----------
+1          
+ij> select 1 from all1 where date('1996-09-09') = cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') > cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') >= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') < cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') <= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where date('1996-9-10') <> cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where '12:12:12' = time('12:12:12');
+1          
+-----------
+1          
+ij> select 1 from all1 where '12:13:12' > time('12:12:12');
+1          
+-----------
+1          
+ij> select 1 from all1 where '12:13:12' >= time('12:12:12');
+1          
+-----------
+1          
+ij> select 1 from all1 where '12:13:12' < time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where '12:13:12' <= time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where '12:13:12' <> time('12:12:12');
+1          
+-----------
+1          
+ij> select 1 from all1 where cast(null as char) = time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) > time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) >= time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) < time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) <= time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) <> time('12:12:12');
+1          
+-----------
+ij> select 1 from all1 where time('12:12:12') = '12:12:12';
+1          
+-----------
+1          
+ij> select 1 from all1 where time('12:13:12') > '12:12:12';
+1          
+-----------
+1          
+ij> select 1 from all1 where time('12:13:12') >= '12:12:12';
+1          
+-----------
+1          
+ij> select 1 from all1 where time('12:13:12') < '12:12:12';
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') <= '12:12:12';
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') <> '12:12:12';
+1          
+-----------
+1          
+ij> select 1 from all1 where time('12:12:12') = cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') > cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') >= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') < cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') <= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where time('12:13:12') <> cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where 'xxxxxxFILTERED-TIMESTAMPxxxxx' = timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+1          
+ij> select 1 from all1 where 'xxxxxxFILTERED-TIMESTAMPxxxxx' > timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+1          
+ij> select 1 from all1 where 'xxxxxxFILTERED-TIMESTAMPxxxxx' >= timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+1          
+ij> select 1 from all1 where 'xxxxxxFILTERED-TIMESTAMPxxxxx' < timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where 'xxxxxxFILTERED-TIMESTAMPxxxxx' <= timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where 'xxxxxxFILTERED-TIMESTAMPxxxxx' <> timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+1          
+ij> select 1 from all1 where cast(null as char) = timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) > timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) >= timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) < timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) <= timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where cast(null as char) <> timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )= 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1          
+-----------
+1          
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )> 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1          
+-----------
+1          
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )>= 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1          
+-----------
+1          
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )< 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )<= 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )<> 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1          
+-----------
+1          
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )> cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )>= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )< cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )<= cast(null as char);
+1          
+-----------
+ij> select 1 from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )<> cast(null as char);
+1          
+-----------
+ij> select si from all1 where ' ' = X'0020';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where ' ' > X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where ' ' >= X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where ' ' < X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where ' ' <= X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where ' ' <> X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where cast(null as char) = X'0020';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where cast(null as char) > X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where cast(null as char) >= X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where cast(null as char) < X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where cast(null as char) <= X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where cast(null as char) <> X'001F';
+ERROR 42818: Comparisons between 'CHAR' and 'CHAR () FOR BIT DATA' are not supported.
+ij> select si from all1 where X'0020' = ' ';
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' > ' ';
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' >= ' ';
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' < ' ';
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' <= ' ';
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' <> ' ';
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'0020' = cast(null as char);
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' > cast(null as char);
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' >= cast(null as char);
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' < cast(null as char);
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' <= cast(null as char);
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select si from all1 where X'001F' <> cast(null as char);
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> create table all_c1(c_ti char(3), c_si char(10), c_i char(30), c_li char(30), 
+					c_r char(50), c_dp char(50), c_dc char(10), 
+					c_num char(50), c_bool char(5), c_b char(8), 
+					vc_bv varchar(16), vc_lbv varchar(16), c_dt char(10),
+					c_tm char(16), c_tms char(21), c_c char(30),
+					vc_vc char(30), c_lvc char(30));
+0 rows inserted/updated/deleted
+ij> insert into all_c1 values ('1', '2', '3', '4', '5.5', '6.6', '7.7', '8.8',
+						   'true', ' ', ' ', ' ', '1996-09-09', '12:12:12',
+						   'xxxxxxFILTERED-TIMESTAMPxxxxx', '1', '2', '33333333');
+1 row inserted/updated/deleted
+ij> -- test qualifiers with conversion from (var)char
+select 1 from all_c1, all1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si <> c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i <> c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li <> c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r <> c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp <> c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc <> c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b <> c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv <> vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv <> vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where dt = c_dt;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt >= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt <= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where dt <> c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm = c_tm;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm >= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm <= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tm <> c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms = c_tms;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms >= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms <= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tms <> c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc <> c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> autocommit off;
+ij> delete from all_c1;
+1 row inserted/updated/deleted
+ij> insert into all_c1 (c_ti) values (null);
+1 row inserted/updated/deleted
+ij> select 1 from all_c1, all1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si <> c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i <> c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li <> c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r <> c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp <> c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc <> c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b <> c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv <> vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv <> vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where dt = c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt >= c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt <= c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt <> c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm = c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm >= c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm <= c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm <> c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms = c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms >= c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms <= c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms <> c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc <> c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> rollback;
+ij> -- test start and stop positions for conversions to (var)char
+create index all_c1_ti on all_c1(c_ti);
+0 rows inserted/updated/deleted
+ij> create index all_c1_si on all_c1(c_si);
+0 rows inserted/updated/deleted
+ij> create index all_c1_i on all_c1(c_i);
+0 rows inserted/updated/deleted
+ij> create index all_c1_li on all_c1(c_li);
+0 rows inserted/updated/deleted
+ij> create index all_c1_r on all_c1(c_r);
+0 rows inserted/updated/deleted
+ij> create index all_c1_dp on all_c1(c_dp);
+0 rows inserted/updated/deleted
+ij> create index all_c1_dc on all_c1(c_dc);
+0 rows inserted/updated/deleted
+ij> create index all_c1_num on all_c1(c_num);
+0 rows inserted/updated/deleted
+ij> create index all_c1_bool on all_c1(c_bool);
+0 rows inserted/updated/deleted
+ij> create index all_c1_b on all_c1(c_b);
+0 rows inserted/updated/deleted
+ij> create index all_c1_bv on all_c1(vc_bv);
+0 rows inserted/updated/deleted
+ij> create index all_c1_dt on all_c1(c_dt);
+0 rows inserted/updated/deleted
+ij> create index all_c1_tm on all_c1(c_tm);
+0 rows inserted/updated/deleted
+ij> create index all_c1_tms on all_c1(c_tms);
+0 rows inserted/updated/deleted
+ij> create index all_c1_lvc on all_c1(c_lvc);
+0 rows inserted/updated/deleted
+ij> select 1 from all_c1, all1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where dt = c_dt;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt >= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt <= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tm = c_tm;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm >= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm <= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tms = c_tms;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms >= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms <= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all_c1, all1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> delete from all_c1;
+1 row inserted/updated/deleted
+ij> insert into all_c1 (c_ti) values (null);
+1 row inserted/updated/deleted
+ij> select 1 from all_c1, all1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all_c1, all1 where dt = c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt >= c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where dt <= c_dt;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm = c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm >= c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tm <= c_tm;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms = c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms >= c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where tms <= c_tms;
+1          
+-----------
+ij> select 1 from all_c1, all1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all_c1, all1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> -- drop the indexes;
+rollback;
+ij> -- test qualifiers with conversion to (var)char
+select 1 from all1, all_c1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si <> c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i <> c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li <> c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r <> c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp <> c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc <> c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b <> c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv <> vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv <> vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where dt = c_dt;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt >= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt <= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where dt <> c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm = c_tm;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm >= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm <= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tm <> c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms = c_tms;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms >= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms <= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tms <> c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc <> c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> delete from all1;
+1 row inserted/updated/deleted
+ij> insert into all1 (si) values (null);
+1 row inserted/updated/deleted
+ij> select 1 from all1, all_c1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si <> c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i <> c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li <> c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r <> c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp <> c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc <> c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b <> c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv <> vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv <> vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where dt = c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt >= c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt <= c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt <> c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm = c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm >= c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm <= c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm <> c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms = c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms >= c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms <= c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms <> c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc <> c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> rollback;
+ij> -- test start and stop positions for conversions to (var)char
+create index all1_si on all1(si);
+0 rows inserted/updated/deleted
+ij> create index all1_i on all1(i);
+0 rows inserted/updated/deleted
+ij> create index all1_li on all1(li);
+0 rows inserted/updated/deleted
+ij> create index all1_r on all1(r);
+0 rows inserted/updated/deleted
+ij> create index all1_dp on all1(dp);
+0 rows inserted/updated/deleted
+ij> create index all1_dc on all1(dc);
+0 rows inserted/updated/deleted
+ij> create index all1_num on all1(num);
+0 rows inserted/updated/deleted
+ij> create index all1_b on all1(b);
+0 rows inserted/updated/deleted
+ij> create index all1_bv on all1(bv);
+0 rows inserted/updated/deleted
+ij> create index all1_lbv on all1(lbv);
+0 rows inserted/updated/deleted
+ij> create index all1_dt on all1(dt);
+0 rows inserted/updated/deleted
+ij> create index all1_tm on all1(tm);
+0 rows inserted/updated/deleted
+ij> create index all1_tms on all1(tms);
+0 rows inserted/updated/deleted
+ij> select 1 from all1, all_c1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where dt = c_dt;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt >= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt <= c_dt;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tm = c_tm;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm >= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm <= c_tm;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tms = c_tms;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms >= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms <= c_tms;
+1          
+-----------
+1          
+ij> select 1 from all1, all_c1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> delete from all1;
+1 row inserted/updated/deleted
+ij> insert into all1(si) values (null);
+1 row inserted/updated/deleted
+ij> select 1 from all1, all_c1 where si = c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si > c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si >= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si < c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where si <= c_si;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i = c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i > c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i >= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i < c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where i <= c_i;
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li = c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li > c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li >= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li < c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where li <= c_li;
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r = c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r > c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r >= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r < c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where r <= c_r;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp = c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp > c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp >= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp < c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dp <= c_dp;
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc = c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc > c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc >= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc < c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where dc <= c_dc;
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b = c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b > c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b >= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b < c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where b <= c_b;
+ERROR 42818: Comparisons between 'CHAR () FOR BIT DATA' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv = vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv > vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv >= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv < vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where bv <= vc_bv;
+ERROR 42818: Comparisons between 'VARCHAR () FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv = vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv > vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv >= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv < vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where lbv <= vc_bv;
+ERROR 42818: Comparisons between 'LONG VARCHAR FOR BIT DATA' and 'VARCHAR' are not supported.
+ij> select 1 from all1, all_c1 where dt = c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt > c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt >= c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt < c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where dt <= c_dt;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm = c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm > c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm >= c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm < c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tm <= c_tm;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms = c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms > c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms >= c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms < c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where tms <= c_tms;
+1          
+-----------
+ij> select 1 from all1, all_c1 where lvc = c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc > c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc >= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc < c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> select 1 from all1, all_c1 where lvc <= c_lvc;
+ERROR 42818: Comparisons between 'LONG VARCHAR' and 'CHAR' are not supported.
+ij> -- drop the indexes;
+rollback;
+ij> delete from all_c1;
+1 row inserted/updated/deleted
+ij> -- insert with implicit conversions to (var)char
+insert into all_c1 select * from all1;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> select c_ti, si, c_si, i, c_i from all1, all_c1;
+C_TI|SI    |C_SI      |I          |C_I                           
+-----------------------------------------------------------------
+ij> select li, c_li, r, c_r, dp, c_dp from all1, all_c1;
+LI                  |C_LI                          |R            |C_R                                               |DP                    |C_DP                                              
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select dc, c_dc, num, c_num, c_bool from all1, all_c1;
+DC      |C_DC      |NUM     |C_NUM                                             |C_BO&
+-------------------------------------------------------------------------------------
+ij> select b, c_b, bv, vc_bv, lbv, vc_lbv, dt, c_dt from all1, all_c1;
+B   |C_B     |BV  |VC_BV           |LBV                                                                                                                             |VC_LBV          |DT        |C_DT      
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select tm, c_tm, tms, c_tms, c, c_c from all1, all_c1;
+TM      |C_TM            |TMS                       |C_TMS                |C   |C_C                           
+--------------------------------------------------------------------------------------------------------------
+ij> select vc, vc_vc, lvc, c_lvc from all1, all_c1;
+VC  |VC_VC                         |LVC                                                                                                                             |C_LVC                         
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- insert with implicit conversions from (var)char
+insert into all1 select c_ti, c_si, c_i, c_li, c_r, c_dp,
+					    c_dc, c_num, c_bool, ' ', ' ', ' ',
+					    c_dt, c_tm, c_tms, '1', '2' from all_c1;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> select c_ti, si, c_si, i, c_i from all1, all_c1;
+C_TI|SI    |C_SI      |I          |C_I                           
+-----------------------------------------------------------------
+ij> select li, c_li, r, c_r, dp, c_dp from all1, all_c1;
+LI                  |C_LI                          |R            |C_R                                               |DP                    |C_DP                                              
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select dc, c_dc, num, c_num, c_bool from all1, all_c1;
+DC      |C_DC      |NUM     |C_NUM                                             |C_BO&
+-------------------------------------------------------------------------------------
+ij> select b, c_b, bv, vc_bv, lbv, vc_lbv, dt, c_dt from all1, all_c1;
+B   |C_B     |BV  |VC_BV           |LBV                                                                                                                             |VC_LBV          |DT        |C_DT      
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select tm, c_tm, tms, c_tms, c, c_c from all1, all_c1;
+TM      |C_TM            |TMS                       |C_TMS                |C   |C_C                           
+--------------------------------------------------------------------------------------------------------------
+ij> select vc, vc_vc, lvc, c_lvc from all1, all_c1;
+VC  |VC_VC                         |LVC                                                                                                                             |C_LVC                         
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> rollback;
+ij> -- more insert conversions
+create table t5_2(dc decimal(5,2), num numeric(5,2));
+0 rows inserted/updated/deleted
+ij> -- bug 827, NormalizeResultSet with char->decimal conversions
+insert into t5_2 values ('11.95', '95.11');
+ERROR 42821: Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+ij> select * from t5_2;
+DC      |NUM     
+-----------------
+ij> rollback;
+ij> -- update tests
+alter table all1 add column c30 char(30) ;
+0 rows inserted/updated/deleted
+ij> alter table all1 add column vc30 varchar(30) ;
+0 rows inserted/updated/deleted
+ij> alter table all1 add column lvc2 long varchar ;
+0 rows inserted/updated/deleted
+ij> select * from all1;
+SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             |C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2     |3          |4                   |5.5          |6.6                   |7.7     |8.8     |0020|0020|0020                                                                                                                            |1996-09-09|12:12:12|xxxxxxFILTERED-TIMESTAMPxxxxx|1   |2   |33333333                                                                                                                        |NULL                          |NULL                          |NULL                                                                                                                            
+ij> update all1 set si = '11';
+ERROR 42821: Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+ij> update all1 set i = '11';
+ERROR 42821: Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+ij> update all1 set li = '11';
+ERROR 42821: Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+ij> update all1 set r = '11.11';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> update all1 set dp = '11.11';
+ERROR 42821: Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+ij> update all1 set dc = '11.11';
+ERROR 42821: Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+ij> update all1 set num = '11.11';
+ERROR 42821: Columns of type 'NUMERIC' cannot hold values of type 'CHAR'. 
+ij> update all1 set b = X'21';
+1 row inserted/updated/deleted
+ij> update all1 set bv = X'21';
+1 row inserted/updated/deleted
+ij> update all1 set lbv = X'21';
+1 row inserted/updated/deleted
+ij> update all1 set dt = '1900-01-01';
+1 row inserted/updated/deleted
+ij> update all1 set tm = '08:08:08';
+1 row inserted/updated/deleted
+ij> update all1 set tms = 'xxxxxxFILTERED-TIMESTAMPxxxxx';
+1 row inserted/updated/deleted
+ij> update all1 set lvc = '44444444';
+1 row inserted/updated/deleted
+ij> select * from all1;
+SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             |C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2     |3          |4                   |5.5          |6.6                   |7.7     |8.8     |2120|21  |21                                                                                                                              |1900-01-01|08:08:08|xxxxxxFILTERED-TIMESTAMPxxxxx|1   |2   |44444444                                                                                                                        |NULL                          |NULL                          |NULL                                                                                                                            
+ij> select c30, vc30, lvc2 from all1;
+C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                          |NULL                          |NULL                                                                                                                            
+ij> update all1 set c30 = si, vc30 = si, lvc2 = si;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'SMALLINT'. 
+ij> update all1 set c30 = i, vc30 = i, lvc2 = i;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'INTEGER'. 
+ij> update all1 set c30 = li, vc30 = li, lvc2 = li;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'BIGINT'. 
+ij> update all1 set c30 = r, vc30 = r, lvc2 = r;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'REAL'. 
+ij> select c30, vc30, lvc2 from all1;
+C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                          |NULL                          |NULL                                                                                                                            
+ij> update all1 set c30 = dp, vc30 = dp, lvc2 = dp;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+ij> update all1 set c30 = dc, vc30 = dc, lvc2 = dc;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'DECIMAL'. 
+ij> update all1 set c30 = num, vc30 = num, lvc2 = num;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'NUMERIC'. 
+ij> select c30, vc30, lvc2 from all1;
+C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                          |NULL                          |NULL                                                                                                                            
+ij> update all1 set c30 = b, vc30 = b, lvc2 = b;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'CHAR () FOR BIT DATA'. 
+ij> select c30, vc30, lvc2 from all1;
+C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                          |NULL                          |NULL                                                                                                                            
+ij> update all1 set c30 = bv, vc30 = bv, lvc2 = bv;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'VARCHAR () FOR BIT DATA'. 
+ij> update all1 set c30 = lbv, vc30 = lbv, lvc2 = lbv;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'LONG VARCHAR FOR BIT DATA'. 
+ij> update all1 set c30 = dt, vc30 = dt, lvc2 = dt;
+ERROR 42821: Columns of type 'LONG VARCHAR' cannot hold values of type 'DATE'. 
+ij> update all1 set c30 = tm, vc30 = tm, lvc2 = tm;
+ERROR 42821: Columns of type 'LONG VARCHAR' cannot hold values of type 'TIME'. 
+ij> update all1 set c30 = tms, vc30 = tms, lvc2 = tms;
+ERROR 42821: Columns of type 'LONG VARCHAR' cannot hold values of type 'TIMESTAMP'. 
+ij> select c30, vc30, lvc2 from all1;
+C30                           |VC30                          |LVC2                                                                                                                            
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                          |NULL                          |NULL                                                                                                                            
+ij> rollback;
+ij> autocommit off;
+ij> -- bug 5838 - arithmetic operators should not be applied to character strings
+-- the following arithmetic operations should fail
+values 1 + '2';
+1          
+-----------
+3          
+ij> values 1 - '2';
+1          
+-----------
+-1         
+ij> values 1 * '2';
+1          
+-----------
+2          
+ij> values 4 / '2';
+1          
+-----------
+2          
+ij> values 1.1 + '2';
+1       
+--------
+3.10    
+ij> values 1.1 - '2';
+1       
+--------
+-0.90   
+ij> values 1.1 * '2';
+1        
+---------
+2.200    
+ij> values 4.4 / '2';
+1                                 
+----------------------------------
+2.2000000000000000000000000000    
+ij> values 1.1 + '2.2';
+1           
+------------
+3.3000      
+ij> values 1.1 - '2.2';
+1           
+------------
+-1.1000     
+ij> values 1.1 * '2.2';
+1            
+-------------
+2.42000      
+ij> values 4.4 / '2.2';
+1                                 
+----------------------------------
+2.00000000000000000000000000      
+ij> -- concatentation
+values '$' || cast(1 as smallint) || '$';
+ERROR 42846: Cannot convert types 'SMALLINT' to 'VARCHAR'.
+ij> values '$' || 1 || '$';
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values '$' || cast(1 as bigint) || '$';
+ERROR 42846: Cannot convert types 'BIGINT' to 'VARCHAR'.
+ij> values '$' || cast(1.1 as real) || '$';
+ERROR 42846: Cannot convert types 'REAL' to 'VARCHAR'.
+ij> values '$' || cast(1.1 as double precision) || '$';
+ERROR 42846: Cannot convert types 'DOUBLE' to 'VARCHAR'.
+ij> values '$' || 1.1 || '$';
+ERROR 42846: Cannot convert types 'DECIMAL' to 'VARCHAR'.
+ij> values '$' || cast(1.1 as decimal(8,3)) || '$';
+ERROR 42846: Cannot convert types 'DECIMAL' to 'VARCHAR'.
+ij> values '$' || 'abcd' || '$';
+1     
+------
+$abcd$
+ij> values '$' || date('1996-09-09') || '$';
+1           
+------------
+$1996-09-09$
+ij> values '$' || time('10:11:12') || '$';
+1         
+----------
+$10:11:12$
+ij> values '$' || timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )|| '$';
+1                           
+----------------------------
+$xxxxxxFILTERED-TIMESTAMPxxxxx$     
+ij> -- length functions
+values length(cast(1 as smallint));
+1          
+-----------
+2          
+ij> values length(cast(1 as int));
+1          
+-----------
+4          
+ij> values length(cast(1 as bigint));
+1          
+-----------
+8          
+ij> values length(cast(1.1 as real));
+1          
+-----------
+4          
+ij> values length(cast(1.1 as double precision));
+1          
+-----------
+8          
+ij> values length(1.1);
+1          
+-----------
+2          
+ij> values length(cast(1.1 as decimal(8,3)));
+1          
+-----------
+5          
+ij> values length('four');
+1          
+-----------
+4          
+ij> values length(date('1996-09-10'));
+1          
+-----------
+4          
+ij> values length(time('10:11:12'));
+1          
+-----------
+3          
+ij> values length(timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+1          
+-----------
+10         
+ij> -- extract
+values year( '1996-01-10');
+1          
+-----------
+1996       
+ij> values month( '1996-01-10');
+1          
+-----------
+1          
+ij> values day( '1996-01-10');
+1          
+-----------
+10         
+ij> values hour( '10:11:12');
+1          
+-----------
+10         
+ij> values minute( '10:11:12');
+1          
+-----------
+11         
+ij> values second( '10:11:12');
+1          
+-----------
+12         
+ij> -- like
+select si from all1 where 1 like '%';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- bug 5845
+select 1 from all1 where date('1996-09-10') like '19%';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select si from all1 where '1' like 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- integer 1 gets converted to 1 followed by 0 spaces
+-- so for kicks put a single space and make sure it is
+-- not the same
+select si from all1 where '1 ' like 1;
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> select si from all1 where '1996-09-10' like date('1996-09-10');
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> prepare p1 as 'select 1 from all1 where si like ?';
+ERROR 42884: No authorized routine named 'LIKE' of type 'FUNCTION' having compatible arguments was found.
+ij> execute p1 using 'values 1';
+IJ ERROR: Unable to establish prepared statement P1
+ij> execute p1 using 'values ''1''';
+IJ ERROR: Unable to establish prepared statement P1
+ij> -- conversions involving non-canonical date, time, and timestamp strings
+create table t (d date, t time, ts timestamp);
+0 rows inserted/updated/deleted
+ij> create index txd on t(d);
+0 rows inserted/updated/deleted
+ij> create index txt on t(t);
+0 rows inserted/updated/deleted
+ij> create index txts on t(ts);
+0 rows inserted/updated/deleted
+ij> insert into t values (CHAR('2000-01-07'), 
+		      CHAR('20:06:58'), 
+		      CHAR('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into t values (CHAR('2000-1-06'), 
+		      CHAR('20:06:57'), 
+		      CHAR('2000-01-7 20:06:58.8000'));
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> VALUES SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T');
+1          
+-----------
+1          
+ij> -- bug 2247, make sure that constant retyping
+-- (avoiding unnecessary normalization at execution)
+-- does not screw up implicit conversions
+create table x(x varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into x values 123;
+ERROR 42821: Columns of type 'VARCHAR' cannot hold values of type 'INTEGER'. 
+ij> select * from x;
+X         
+----------
+ij> -- clean up 
+drop table all_c1;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> disconnect;
+ij> -- ** insert implicitConversionsNegative.sql
+-- negate tests for implicit conversions
+-- to/from (var)char
+-- union
+connect 'jdbc:derby:wombat';
+ij> autocommit on;
+ij> values cast(1 as smallint), 'a';
+ERROR 42X61: Types 'SMALLINT' and 'CHAR' are not UNION compatible.
+ij> values 'a', cast(1 as smallint);
+ERROR 42X61: Types 'CHAR' and 'SMALLINT' are not UNION compatible.
+ij> values cast(1 as smallint), '1.1';
+ERROR 42X61: Types 'SMALLINT' and 'CHAR' are not UNION compatible.
+ij> values '1.1', cast(1 as smallint);
+ERROR 42X61: Types 'CHAR' and 'SMALLINT' are not UNION compatible.
+ij> values 1, 'a';
+ERROR 42X61: Types 'INTEGER' and 'CHAR' are not UNION compatible.
+ij> values 'a', 1;
+ERROR 42X61: Types 'CHAR' and 'INTEGER' are not UNION compatible.
+ij> values 1, '1.1';
+ERROR 42X61: Types 'INTEGER' and 'CHAR' are not UNION compatible.
+ij> values '1.1', a;
+ERROR 42X04: Column 'A' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'A' is not a column in the target table.
+ij> values cast(1 as bigint), 'a';
+ERROR 42X61: Types 'BIGINT' and 'CHAR' are not UNION compatible.
+ij> values 'a', cast(1 as bigint);
+ERROR 42X61: Types 'CHAR' and 'BIGINT' are not UNION compatible.
+ij> values cast(1 as bigint), '1.1';
+ERROR 42X61: Types 'BIGINT' and 'CHAR' are not UNION compatible.
+ij> values '1.1', cast(1 as bigint);
+ERROR 42X61: Types 'CHAR' and 'BIGINT' are not UNION compatible.
+ij> values cast(1.1 as real), 'a';
+ERROR 42X61: Types 'REAL' and 'CHAR' are not UNION compatible.
+ij> values 'a', cast(1.1 as real);
+ERROR 42X61: Types 'CHAR' and 'REAL' are not UNION compatible.
+ij> values cast(1.1 as double precision), 'a';
+ERROR 42X61: Types 'DOUBLE' and 'CHAR' are not UNION compatible.
+ij> values 'a', cast(1.1 as double precision);
+ERROR 42X61: Types 'CHAR' and 'DOUBLE' are not UNION compatible.
+ij> values 1.1, 'a';
+ERROR 42X61: Types 'DECIMAL' and 'CHAR' are not UNION compatible.
+ij> values 'a', 1.1;
+ERROR 42X61: Types 'CHAR' and 'DECIMAL' are not UNION compatible.
+ij> values true, 'a';
+ERROR 42X01: Syntax error: true.
+ij> values 'a', true;
+ERROR 42X01: Syntax error: true.
+ij> values date('1996-09-09'), 'a';
+1         
+----------
+1996-09-09
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values 'a', date('1996-09-09');
+1         
+----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values time('11:11:11'), 'a';
+1       
+--------
+11:11:11
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values 'a', time('11:11:11');
+1       
+--------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'), 'a';
+1                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values 'a', timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1                         
+--------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- comparisons at the language level
+select si from all1 where cast(1 as smallint) = 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) = '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) > 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) > '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) >= 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) >= '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) < 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) < '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <= 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <= '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <> 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as smallint) <> '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select si from all1 where 'a' = cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '1.1' = cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where 'a' > cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '1.1' > cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where 'a' >= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '1.1' >= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where 'a' < cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '1.1' < cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where 'a' <= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '1.1' <= cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where 'a' <> cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where '1.1' <> cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(1 as int) = 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) = '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) > 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) > '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) >= 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) >= '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) < 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) < '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <= 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <= '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <> 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as int) <> '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select si from all1 where 'a' = cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '1.1' = cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where 'a' > cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '1.1' > cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where 'a' >= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '1.1' >= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where 'a' < cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '1.1' < cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where 'a' <= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '1.1' <= cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where 'a' <> cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where '1.1' <> cast(1 as int);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select si from all1 where cast(1 as bigint) = 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) = '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) > 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) > '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) >= 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) >= '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) < 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) < '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <= 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <= '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <> 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1 as bigint) <> '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select si from all1 where 'a' = cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '1.1' = cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where 'a' > cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '1.1' > cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where 'a' >= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '1.1' >= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where 'a' < cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '1.1' < cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where 'a' <= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '1.1' <= cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where 'a' <> cast(1 as bigint);
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select si from all1 where '1.1' <> cast(1 as smallint);
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select si from all1 where cast(1.1 as real) = 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as real) > 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as real) >= 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as real) < 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as real) <= 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as real) <> 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select si from all1 where 'a' = cast(1.1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where 'a' > cast(1.1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where 'a' >= cast(1.1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where 'a' < cast(1.1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where 'a' <= cast(1.1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where 'a' <> cast(1.1 as real);
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select si from all1 where cast(1.1 as double precision) = 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as double precision) > 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as double precision) >= 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as double precision) < 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as double precision) <= 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where cast(1.1 as double precision) <> 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select si from all1 where 'a' = cast(1.1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where 'a' > cast(1.1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where 'a' >= cast(1.1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where 'a' < cast(1.1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where 'a' <= cast(1.1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where 'a' <> cast(1.1 as double precision);
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select si from all1 where 1.1 = 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select si from all1 where 1.1 > 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select si from all1 where 1.1 >= 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select si from all1 where 1.1 < 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select si from all1 where 1.1 <= 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select si from all1 where 1.1 <> 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select si from all1 where 'a' = 1.1;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select si from all1 where 'a' > 1.1;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select si from all1 where 'a' >= 1.1;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select si from all1 where 'a' < 1.1;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select si from all1 where 'a' <= 1.1;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select si from all1 where 'a' <> 1.1;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select si from all1 where date('1996-09-09') = 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where date('1996-09-09') > 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where date('1996-09-09') >= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where date('1996-09-09') < 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where date('1996-09-09') <= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where date('1996-09-09') <> 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' = date('1996-09-09');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' > date('1996-09-09');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' >= date('1996-09-09');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' < date('1996-09-09');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' <= date('1996-09-09');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' <> date('1996-09-09');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where time('11:11:11') = 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where time('11:11:11') > 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where time('11:11:11') >= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where time('11:11:11') < 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where time('11:11:11') <= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where time('11:11:11') <> 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' = time('11:11:11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' > time('11:11:11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' >= time('11:11:11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' < time('11:11:11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' <= time('11:11:11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' <> time('11:11:11');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )> 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )>= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )< 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )<= 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx' )<> 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' = timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' > timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' >= timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' < timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' <= timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select si from all1 where 'a' <> timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- create an all types table
+drop table all1;
+0 rows inserted/updated/deleted
+ij> create table all1(si smallint, i int, li bigint, r real, 
+				  dp double precision, dc decimal(5,1), num numeric(5,1),
+				  b char for bit data, bv varchar(1) for bit data,
+				  lbv long varchar for bit data,
+				  dt date, tm time, tms timestamp,
+				  c char(1), vc varchar(1), lvc long varchar);
+0 rows inserted/updated/deleted
+ij> -- populate table
+insert into all1 values (2, 3, 4, 5.5, 6.6, 7.7, 8.8,
+				  		 X'20', X'20', X'20',
+				  		 date('1996-09-09'), time('12:12:12'), 
+				  		 timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'),
+				  		 '1', '2', '333333333333333333');
+1 row inserted/updated/deleted
+ij> -- tests for comparisons as qualifiers
+select 1 from all1 where si = 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si = '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si > 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si > '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si >= 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si >= '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si < 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si < '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si <= 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si <= '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si <> 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si <> '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' = si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' > si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' > si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' >= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' >= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' < si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' < si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' <= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' <= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' <> si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' <> si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where i = 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i = '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i > 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i > '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i >= 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i >= '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i < 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i < '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i <= 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i <= '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i <> 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i <> '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' = i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' > i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' > i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' >= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' >= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' < i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' < i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' <= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' <= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' <> i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' <> i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where li = 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li = '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li > 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li > '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li >= 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li >= '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li < 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li < '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li <= 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li <= '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li <> 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li <> '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' = li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' > li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' > li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' >= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' >= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' < li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' < li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' <= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' <= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' <> li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' <> li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where r = 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r > 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r >= 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r < 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r <= 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r <> 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' > r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' >= r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' < r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' <= r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' <> r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where dp = 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp > 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp >= 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp < 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp <= 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp <> 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' > dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' >= dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' < dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' <= dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' <> dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where dc = 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc > 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc >= 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc < 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc <= 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc <> 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' > dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' >= dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' < dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' <= dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' <> dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where num = 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num > 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num >= 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num < 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num <= 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num <> 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' > num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' >= num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' < num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' <= num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' <> num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where dt = 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt > 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt >= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt < 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt <= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt <> 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' = dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' > dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' >= dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' < dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <= dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <> dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm = 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm > 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm >= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm < 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm <= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm <> 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' = tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' > tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' >= tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' < tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <= tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <> tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms = 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms > 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms >= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms < 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms <= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms <> 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' = tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' > tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' >= tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' < tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <= tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <> tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> autocommit off;
+ij> -- test start and stop positions for conversions to (var)char
+create index all1_si on all1(si);
+0 rows inserted/updated/deleted
+ij> create index all1_i on all1(i);
+0 rows inserted/updated/deleted
+ij> create index all1_li on all1(li);
+0 rows inserted/updated/deleted
+ij> create index all1_r on all1(r);
+0 rows inserted/updated/deleted
+ij> create index all1_dp on all1(dp);
+0 rows inserted/updated/deleted
+ij> create index all1_dc on all1(dc);
+0 rows inserted/updated/deleted
+ij> create index all1_num on all1(num);
+0 rows inserted/updated/deleted
+ij> create index all1_b on all1(b);
+0 rows inserted/updated/deleted
+ij> create index all1_bv on all1(bv);
+0 rows inserted/updated/deleted
+ij> create index all1_lbv on all1(lbv);
+0 rows inserted/updated/deleted
+ij> create index all1_dt on all1(dt);
+0 rows inserted/updated/deleted
+ij> create index all1_tm on all1(tm);
+0 rows inserted/updated/deleted
+ij> create index all1_tms on all1(tms);
+0 rows inserted/updated/deleted
+ij> select 1 from all1 where si = 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si = '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si > 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si > '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si >= 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si >= '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si < 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si < '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si <= 'a';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where si <= '1.1';
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' = si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' > si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' > si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' >= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' >= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' < si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' < si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where 'a' <= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where '1.1' <= si;
+ERROR 42818: Comparisons between 'CHAR' and 'SMALLINT' are not supported.
+ij> select 1 from all1 where i = 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i = '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i > 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i > '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i >= 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i >= '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i < 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i < '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i <= 'a';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where i <= '1.1';
+ERROR 42818: Comparisons between 'INTEGER' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' = i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' > i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' > i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' >= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' >= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' < i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' < i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where 'a' <= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where '1.1' <= i;
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select 1 from all1 where li = 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li = '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li > 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li > '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li >= 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li >= '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li < 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li < '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li <= 'a';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where li <= '1.1';
+ERROR 42818: Comparisons between 'BIGINT' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' = li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' > li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' > li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' >= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' >= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' < li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' < li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where 'a' <= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where '1.1' <= li;
+ERROR 42818: Comparisons between 'CHAR' and 'BIGINT' are not supported.
+ij> select 1 from all1 where r = 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r > 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r >= 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r < 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where r <= 'a';
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' > r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' >= r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' < r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where 'a' <= r;
+ERROR 42818: Comparisons between 'CHAR' and 'REAL' are not supported.
+ij> select 1 from all1 where dp = 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp > 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp >= 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp < 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where dp <= 'a';
+ERROR 42818: Comparisons between 'DOUBLE' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' > dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' >= dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' < dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where 'a' <= dp;
+ERROR 42818: Comparisons between 'CHAR' and 'DOUBLE' are not supported.
+ij> select 1 from all1 where dc = 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc > 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc >= 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc < 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where dc <= 'a';
+ERROR 42818: Comparisons between 'DECIMAL' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' > dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' >= dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' < dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where 'a' <= dc;
+ERROR 42818: Comparisons between 'CHAR' and 'DECIMAL' are not supported.
+ij> select 1 from all1 where num = 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num > 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num >= 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num < 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where num <= 'a';
+ERROR 42818: Comparisons between 'NUMERIC' and 'CHAR' are not supported.
+ij> select 1 from all1 where 'a' = num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' > num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' >= num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' < num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where 'a' <= num;
+ERROR 42818: Comparisons between 'CHAR' and 'NUMERIC' are not supported.
+ij> select 1 from all1 where dt = 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt > 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt >= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt < 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where dt <= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' = dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' > dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' >= dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' < dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <= dt;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm = 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm > 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm >= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm < 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tm <= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' = tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' > tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' >= tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' < tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <= tm;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms = 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms > 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms >= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms < 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where tms <= 'a';
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' = tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' > tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' >= tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' < tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select 1 from all1 where 'a' <= tms;
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> rollback;
+ij> -- insert tests
+insert into all1(si) values 'a';
+ERROR 42821: Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+ij> insert into all1(si) values '1.1';
+ERROR 42821: Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+ij> insert into all1(i) values 'a';
+ERROR 42821: Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+ij> insert into all1(i) values '1.1';
+ERROR 42821: Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+ij> insert into all1(li) values 'a';
+ERROR 42821: Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+ij> insert into all1(li) values '1.1';
+ERROR 42821: Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+ij> insert into all1(r) values 'a';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> insert into all1(dp) values 'a';
+ERROR 42821: Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+ij> insert into all1(dc) values 'a';
+ERROR 42821: Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+ij> insert into all1(num) values 'a';
+ERROR 42821: Columns of type 'NUMERIC' cannot hold values of type 'CHAR'. 
+ij> insert into all1(dt) values 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into all1(tm) values 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> insert into all1(tms) values 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- update tests
+update all1 set si = 'a';
+ERROR 42821: Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+ij> update all1 set si = '1.1';
+ERROR 42821: Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+ij> update all1 set i = 'a';
+ERROR 42821: Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+ij> update all1 set i = '1.1';
+ERROR 42821: Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+ij> update all1 set li = 'a';
+ERROR 42821: Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+ij> update all1 set li = '1.1';
+ERROR 42821: Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+ij> update all1 set r = 'a';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> update all1 set dp = 'a';
+ERROR 42821: Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+ij> update all1 set dc = 'a';
+ERROR 42821: Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+ij> update all1 set num = 'a';
+ERROR 42821: Columns of type 'NUMERIC' cannot hold values of type 'CHAR'. 
+ij> update all1 set dt = 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> update all1 set tm = 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> update all1 set tms = 'a';
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> rollback;
+ij> -- arithmetic
+-- arithmetic on 2 non-numeric strings
+values '1' + '2';
+ERROR 42Y95: The '+' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> -- non-numeric strings
+values 1 + 'a';
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> values 1 + '1a';
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> values 'a' + 1;
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> values '1a' + 1;
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> -- numeric string of wrong type
+values 1 + '1.1';
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> values '1.1' + 1;
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> -- extract
+-- non-date strings
+values year( '1');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values month( '1');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values day( '1');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values hour( '1');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values minute( '1');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values second( '1');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- string does not match default
+-- date for year/month/day
+-- time for hour/minute/second
+values year( 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+1996       
+ij> values year( '10:11:12.5');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values month( 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+9          
+ij> values month( '10:11:12.5');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values day( 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+10         
+ij> values day( '10:11:12.5');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values hour( 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+10         
+ij> values hour( '1996-09-10');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values minute( 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+11         
+ij> values minute( '1996-09-10');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> values second( 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+1          
+-----------
+12         
+ij> values second( '1996-09-10');
+1          
+-----------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- sum and avg not supported on string types
+select sum('1') from all1;
+ERROR 42Y22: Aggregate SUM cannot operate on type CHAR.
+ij> select avg('1') from all1;
+ERROR 42Y22: Aggregate AVG cannot operate on type CHAR.
+ij> -- joins
+select * from all1 a, all1 b 
+where a.si = b.c;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where a.si = b.vc;
+ERROR 42818: Comparisons between 'SMALLINT' and 'VARCHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where a.si = b.lvc;
+ERROR 42818: Comparisons between 'SMALLINT' and 'LONG VARCHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where b.si = a.c;
+ERROR 42818: Comparisons between 'SMALLINT' and 'CHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where b.si = a.vc;
+ERROR 42818: Comparisons between 'SMALLINT' and 'VARCHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where b.si = a.lvc;
+ERROR 42818: Comparisons between 'SMALLINT' and 'LONG VARCHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where a.dt = b.c;
+SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             |SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select * from all1 a, all1 b 
+where a.dt = b.vc;
+SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             |SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select * from all1 a, all1 b 
+where a.dt = b.lvc;
+ERROR 42818: Comparisons between 'DATE' and 'LONG VARCHAR' are not supported.
+ij> select * from all1 a, all1 b 
+where b.dt = a.c;
+SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             |SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select * from all1 a, all1 b 
+where b.dt = a.vc;
+SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             |SI    |I          |LI                  |R            |DP                    |DC      |NUM     |B   |BV  |LBV                                                                                                                             |DT        |TM      |TMS                       |C   |VC  |LVC                                                                                                                             
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> select * from all1 a, all1 b 
+where b.dt = a.lvc;
+ERROR 42818: Comparisons between 'DATE' and 'LONG VARCHAR' are not supported.
+ij> -- clean up 
+drop table all1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/inbetween.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/inbetween.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1635 @@
+ij> --
+-- Test IN lists and BETWEEN on the builtin  types
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, real
+--
+-- other things we might test:
+-- compatibility with dynamic parameters 
+set isolation to rr;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- Create the tables
+create table s (i int);
+0 rows inserted/updated/deleted
+ij> create table t (i int, s smallint, c char(10), v varchar(50), 
+	d double precision, r real, e date, t time, p timestamp);
+0 rows inserted/updated/deleted
+ij> create table test (i int, d double precision);
+0 rows inserted/updated/deleted
+ij> -- Populate the tables
+insert into s values (1);
+1 row inserted/updated/deleted
+ij> insert into s values (1);
+1 row inserted/updated/deleted
+ij> insert into s values (2);
+1 row inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0,
+	300.0e0, '1992-01-01', '12:30:30', 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0,
+	-300.0e0, '1992-01-02', '12:30:59', 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1 row inserted/updated/deleted
+ij> insert into test values (2, 4.0);
+1 row inserted/updated/deleted
+ij> insert into test values (3, 10.0);
+1 row inserted/updated/deleted
+ij> insert into test values (4, 12.0);
+1 row inserted/updated/deleted
+ij> insert into test values (5, 25.0);
+1 row inserted/updated/deleted
+ij> insert into test values (10, 100.0);
+1 row inserted/updated/deleted
+ij> insert into test values (-6, 36);
+1 row inserted/updated/deleted
+ij> -- BETWEEN
+-- negative tests
+-- type mismatches
+select * from t where i between i and e;
+ERROR 42818: Comparisons between 'INTEGER' and 'DATE' are not supported.
+ij> select * from t where i between i and t;
+ERROR 42818: Comparisons between 'INTEGER' and 'TIME' are not supported.
+ij> select * from t where i between i and p;
+ERROR 42818: Comparisons between 'INTEGER' and 'TIMESTAMP' are not supported.
+ij> select * from t where e between p and p;
+ERROR 42818: Comparisons between 'DATE' and 'TIMESTAMP' are not supported.
+ij> select * from t where 1 between e and p;
+ERROR 42818: Comparisons between 'INTEGER' and 'DATE' are not supported.
+ij> -- between null and
+select * from t where i between null and i;
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 33.
+ij> -- cardinality violation on a subquery
+select * from t where i between i and (select i from s);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- all parameters
+select * from t where ? between ? and ?;
+ERROR 42X35: It is not allowed for both operands of 'BETWEEN' to be ? parameters.
+ij> -- positive tests
+-- type comparisons
+select i from t where i between s and r;
+I          
+-----------
+ij> select i from t where i between r and d;
+I          
+-----------
+ij> select i from t where s between i and r;
+I          
+-----------
+0          
+ij> select i from t where s between r and d;
+I          
+-----------
+ij> select i from t where r between s and i;
+I          
+-----------
+ij> select i from t where d between s and i;
+I          
+-----------
+ij> select i from t where i between 40e1 and 50e1;
+I          
+-----------
+ij> select i from t where s between 40e1 and 50e1;
+I          
+-----------
+ij> select i from t where c between c and v;
+I          
+-----------
+ij> select i from t where 40e1 between i and s;
+I          
+-----------
+ij> select i from t where 'goodbye' between c and c;
+I          
+-----------
+-1         
+ij> select i from t where 'xxxxxxFILTERED-TIMESTAMPxxxxxbetween p and p;
+I          
+-----------
+-1         
+ij> -- between 2 and 1
+select * from t where i between 2 and 1;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where not i not between 2 and 1;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where not i between 2 and 1;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |100   |hello     |everyone is here                                  |200.0                 |300.0        |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+-1         |-100  |goodbye   |everyone is there                                 |-200.0                |-300.0       |1992-01-02|12:30:59|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from t where i not between 2 and 1;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |100   |hello     |everyone is here                                  |200.0                 |300.0        |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+-1         |-100  |goodbye   |everyone is there                                 |-200.0                |-300.0       |1992-01-02|12:30:59|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- between arbitrary expressions
+select * from test where sqrt(d) between 5 and 10;
+I          |D                     
+----------------------------------
+5          |25.0                  
+10         |100.0                 
+-6         |36.0                  
+ij> select * from test where (i+d) between 20 and 50;
+I          |D                     
+----------------------------------
+5          |25.0                  
+-6         |36.0                  
+ij> select * from test where {fn abs (i)} between 5 and 8;
+I          |D                     
+----------------------------------
+5          |25.0                  
+-6         |36.0                  
+ij> select * from test where (i+d) not between 20 and 50;
+I          |D                     
+----------------------------------
+2          |4.0                   
+3          |10.0                  
+4          |12.0                  
+10         |100.0                 
+ij> select * from test where sqrt(d) not between 5 and 20;
+I          |D                     
+----------------------------------
+2          |4.0                   
+3          |10.0                  
+4          |12.0                  
+ij> -- not (test clone() once its implemented)
+select i from t where i not between i and i;
+I          
+-----------
+ij> select i from t where s not between s and s;
+I          
+-----------
+ij> select i from t where c not between c and c;
+I          
+-----------
+ij> select i from t where v not between v and v;
+I          
+-----------
+ij> select i from t where d not between d and d;
+I          
+-----------
+ij> select i from t where r not between r and r;
+I          
+-----------
+ij> select i from t where e not between e and e;
+I          
+-----------
+ij> select i from t where t not between t and t;
+I          
+-----------
+ij> select i from t where p not between p and p;
+I          
+-----------
+ij> -- between complex expressions
+select i from t where s between (select i from s where i = 2) and
+							    (select 100 from s where i = 2);
+I          
+-----------
+0          
+ij> select * from t where i between i and (select max(i) from s);
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |100   |hello     |everyone is here                                  |200.0                 |300.0        |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+-1         |-100  |goodbye   |everyone is there                                 |-200.0                |-300.0       |1992-01-02|12:30:59|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- subquery between
+select i from t where (select i from s where i = 2) between 1 and 2;
+I          
+-----------
+NULL       
+0          
+-1         
+ij> -- parameters
+prepare q1 as 'select i from t where ? between 2 and 3';
+ij> prepare q2 as 'select i from t where ? between ? and 3';
+ij> prepare q3 as 'select i from t where ? between 2 and ?';
+ij> prepare q4 as 'select i from t where i between ? and ?';
+ij> execute q1 using 'values 2';
+I          
+-----------
+NULL       
+0          
+-1         
+ij> execute q2 using 'values (2, 2)';
+I          
+-----------
+NULL       
+0          
+-1         
+ij> execute q3 using 'values (2, 3)';
+I          
+-----------
+NULL       
+0          
+-1         
+ij> execute q4 using 'values (0, 1)';
+I          
+-----------
+0          
+ij> remove q1;
+ij> remove q2;
+ij> remove q3;
+ij> remove q4;
+ij> update s set i = 5 where i between 2 and 3;
+1 row inserted/updated/deleted
+ij> select * from s;
+I          
+-----------
+1          
+1          
+5          
+ij> -- delete - where clause
+delete from s where i between 3 and 5;
+1 row inserted/updated/deleted
+ij> select * from s;
+I          
+-----------
+1          
+1          
+ij> -- check consistency of scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> -- IN List
+-- recreate s as ss
+create table ss (i int);
+0 rows inserted/updated/deleted
+ij> insert into ss values (1);
+1 row inserted/updated/deleted
+ij> insert into ss values (1);
+1 row inserted/updated/deleted
+ij> insert into ss values (2);
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- empty list
+select i from t where i in ();
+ERROR 42X01: Syntax error: Encountered ")" at line 4, column 29.
+ij> -- null in list
+select i from t where i in (null);
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 29.
+ij> -- cardinality violation from subquery
+select i from t where i in (1, 3, 5, 6, (select i from ss));
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- type mismatches
+select i from t where i in (i, i, e);
+ERROR 42818: Comparisons between 'INTEGER' and 'DATE' are not supported.
+ij> select i from t where i in (i, i, t);
+ERROR 42818: Comparisons between 'INTEGER' and 'TIME' are not supported.
+ij> select i from t where i in (i, i, p);
+ERROR 42818: Comparisons between 'INTEGER' and 'TIMESTAMP' are not supported.
+ij> select i from t where e in (e, p, e);
+ERROR 42818: Comparisons between 'DATE' and 'TIMESTAMP' are not supported.
+ij> select i from t where 1 in (p, 2, 1);
+ERROR 42818: Comparisons between 'INTEGER' and 'TIMESTAMP' are not supported.
+ij> -- positive tests
+-- type comparisons
+select i from t where i in (s, r, i, d, 40e1);
+I          
+-----------
+0          
+-1         
+ij> select s from t where s in (s, r, i, d, 40e1);
+S     
+------
+100   
+-100  
+ij> select r from t where r in (s, r, i, d, 40e1);
+R            
+-------------
+300.0        
+-300.0       
+ij> select d from t where d in (s, r, i, d, 40e1);
+D                     
+----------------------
+200.0                 
+-200.0                
+ij> select i from t where 40e1 in (s, r, i, d, 40e1);
+I          
+-----------
+NULL       
+0          
+-1         
+ij> select c from t where c in (c, v, 'goodbye');
+C         
+----------
+hello     
+goodbye   
+ij> select v from t where v in (c, v, 'goodbye');
+V                                                 
+--------------------------------------------------
+everyone is here                                  
+everyone is there                                 
+ij> select i from t where 'goodbye' in (c, v, 'goodbye');
+I          
+-----------
+NULL       
+0          
+-1         
+ij> select i from t where 'xxxxxxFILTERED-TIMESTAMPxxxxxin (p, 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+I          
+-----------
+NULL       
+0          
+-1         
+ij> select p from t where p in (p, 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+P                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- not (test clone() once its implemented)
+select i from t where i not in (i, i);
+I          
+-----------
+ij> select i from t where s not in (s, s);
+I          
+-----------
+ij> select i from t where c not in (c, c);
+I          
+-----------
+ij> select i from t where v not in (v, v);
+I          
+-----------
+ij> select i from t where d not in (d, d);
+I          
+-----------
+ij> select i from t where r not in (r, r);
+I          
+-----------
+ij> select i from t where e not in (e, e);
+I          
+-----------
+ij> select i from t where t not in (t, t);
+I          
+-----------
+ij> select i from t where p not in (p, p);
+I          
+-----------
+ij> -- more nots
+select i from t where i not in (0, 9, 8, 2, 7);
+I          
+-----------
+-1         
+ij> select i from t where i not in (0, 9, 8, 2, 7);
+I          
+-----------
+-1         
+ij> select i from t where not i not in (0, 9, 8, 2, 7);
+I          
+-----------
+0          
+ij> -- 1 element list
+select s from t where s in (100);
+S     
+------
+100   
+ij> -- left side of expression
+select s from t where (s in (100));
+S     
+------
+100   
+ij> select s from t where (s in (100));
+S     
+------
+100   
+ij> -- complex expressions
+select i from t where i in (1, 3, 5, 6, (select i from ss where i = 2) - 2);
+I          
+-----------
+0          
+ij> select * from test where i in (sqrt(d),{fn abs (i)}, -6);
+I          |D                     
+----------------------------------
+2          |4.0                   
+3          |10.0                  
+4          |12.0                  
+5          |25.0                  
+10         |100.0                 
+-6         |36.0                  
+ij> select * from test where sqrt(d) in (i, 4);
+I          |D                     
+----------------------------------
+2          |4.0                   
+5          |25.0                  
+10         |100.0                 
+ij> select * from test where (i+d) in (6, 30);
+I          |D                     
+----------------------------------
+2          |4.0                   
+5          |25.0                  
+-6         |36.0                  
+ij> select * from test where sqrt(d) in (i);
+I          |D                     
+----------------------------------
+2          |4.0                   
+5          |25.0                  
+10         |100.0                 
+ij> select * from test where {fn abs (i)} in (i);
+I          |D                     
+----------------------------------
+2          |4.0                   
+3          |10.0                  
+4          |12.0                  
+5          |25.0                  
+10         |100.0                 
+ij> select * from test where {fn abs (i)} not in (i);
+I          |D                     
+----------------------------------
+-6         |36.0                  
+ij> select * from test where (i+d) not in (6, 30);
+I          |D                     
+----------------------------------
+3          |10.0                  
+4          |12.0                  
+10         |100.0                 
+ij> select * from test where sqrt(d) not in (5, 10, 2);
+I          |D                     
+----------------------------------
+3          |10.0                  
+4          |12.0                  
+-6         |36.0                  
+ij> -- subquery in
+select i from t where (select i from ss where i = 2) in (1, 2);
+I          
+-----------
+NULL       
+0          
+-1         
+ij> -- derived table
+select * from (select * from t 
+where i in (1, 3, 5, 6, (select i from ss where i = 2) - 2)) a;
+I          |S     |C         |V                                                 |D                     |R            |E         |T       |P                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |100   |hello     |everyone is here                                  |200.0                 |300.0        |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> update ss set i = 5 where i in (2, 3, 40e1);
+1 row inserted/updated/deleted
+ij> select * from ss;
+I          
+-----------
+1          
+1          
+5          
+ij> -- delete - where clause
+delete from ss where i not in (5, 3);
+2 rows inserted/updated/deleted
+ij> select * from ss;
+I          
+-----------
+5          
+ij> -- in/between 
+create table u (c1 integer);
+0 rows inserted/updated/deleted
+ij> insert into u values null;
+1 row inserted/updated/deleted
+ij> insert into u values 1;
+1 row inserted/updated/deleted
+ij> insert into u values null;
+1 row inserted/updated/deleted
+ij> insert into u values 2;
+1 row inserted/updated/deleted
+ij> select * from u where c1 between 2 and 3;
+C1         
+-----------
+2          
+ij> select * from u where c1 in (2, 3, 0, 1);
+C1         
+-----------
+1          
+2          
+ij> -- add some more rows before testing static in list xform
+insert into t values (20, 200, 'maybe', 'noone is here', 800.0e0,
+	1000.0e0, '1892-01-01', '07:30:30', 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1 row inserted/updated/deleted
+ij> insert into t values (-50, -200, 'never', 'noone is there', -800.0e0,
+	-10300.0e0, '2992-01-02', '19:30:59', 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1 row inserted/updated/deleted
+ij> -- test the static in list xform for the various types
+select i from t;
+I          
+-----------
+NULL       
+0          
+-1         
+20         
+-50        
+ij> select i from t where i in (80, 20, -60, -1);
+I          
+-----------
+-1         
+20         
+ij> select s from t;
+S     
+------
+NULL  
+100   
+-100  
+200   
+-200  
+ij> select s from t where s in (100, -200, -400);
+S     
+------
+100   
+-200  
+ij> select c from t;
+C         
+----------
+NULL      
+hello     
+goodbye   
+maybe     
+never     
+ij> select c from t where c in ('a', 'goodbye', '');
+C         
+----------
+goodbye   
+ij> select v from t;
+V                                                 
+--------------------------------------------------
+NULL                                              
+everyone is here                                  
+everyone is there                                 
+noone is here                                     
+noone is there                                    
+ij> select v from t where v in ('noone is there', 'everyone is here', '');
+V                                                 
+--------------------------------------------------
+everyone is here                                  
+noone is there                                    
+ij> select d from t;
+D                     
+----------------------
+NULL                  
+200.0                 
+-200.0                
+800.0                 
+-800.0                
+ij> select d from t where d in (200, -800);
+D                     
+----------------------
+200.0                 
+-800.0                
+ij> select r from t;
+R            
+-------------
+NULL         
+300.0        
+-300.0       
+1000.0       
+-10300.0     
+ij> select r from t where r in (300.0, -10300.0);
+R            
+-------------
+300.0        
+-10300.0     
+ij> select e from t;
+E         
+----------
+NULL      
+1992-01-01
+1992-01-02
+1892-01-01
+2992-01-02
+ij> select e from t where e in ('2992-01-02', '3999-08-08', '1992-01-02');
+E         
+----------
+1992-01-02
+2992-01-02
+ij> select t from t;
+T       
+--------
+NULL    
+12:30:30
+12:30:59
+07:30:30
+19:30:59
+ij> select t from t where t in ('12:30:58', '07:20:20', '07:30:30');
+T       
+--------
+07:30:30
+ij> select p from t;
+P                         
+--------------------------
+NULL                      
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select p from t where p in ('xxxxxxFILTERED-TIMESTAMPxxxxx', 'xxxxxxFILTERED-TIMESTAMPxxxxx', 'xxxxxxFILTERED-TIMESTAMPxxxxx');
+P                         
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- verify that added predicates getting pushed down
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify that added predicates getting pushed down
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1)
+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: 
+null                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
+ij> -- big in lists (test binary search)
+create table big(i int, c char(10));
+0 rows inserted/updated/deleted
+ij> insert into big values 
+	(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'), (6, '6'), (7, '7'), (8, '8'), (9, '9'), (10, '10'), 
+	(11, '11'), (12, '12'), (13, '13'), (14, '14'), (15, '15'), (16, '16'), (17, '17'), (18, '18'), (19, '19'), (20, '20'), 
+	(21, '21'), (22, '22'), (23, '23'), (24, '24'), (25, '25'), (26, '26'), (27, '27'), (28, '28'), (29, '29'), (30, '30');
+30 rows inserted/updated/deleted
+ij> select * from big where i in (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+I          |C         
+----------------------
+1          |1         
+3          |3         
+5          |5         
+7          |7         
+9          |9         
+11         |11        
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+21         |21        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> select * from big where i in (31, 32, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 1);
+I          |C         
+----------------------
+1          |1         
+5          |5         
+7          |7         
+9          |9         
+11         |11        
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+21         |21        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> select * from big where i in (1, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+I          |C         
+----------------------
+1          |1         
+5          |5         
+7          |7         
+9          |9         
+11         |11        
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+21         |21        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> select * from big where i in (1, 5, 7, 9, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+I          |C         
+----------------------
+1          |1         
+5          |5         
+7          |7         
+9          |9         
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+21         |21        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> select * from big where i in (1, 5, 7, 9, 13, 15, 17, 19, 23, 25, 27, 29, 31);
+I          |C         
+----------------------
+1          |1         
+5          |5         
+7          |7         
+9          |9         
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> select * from big where i in (3, 3, 3, 3);
+I          |C         
+----------------------
+3          |3         
+ij> select * from big where i in (4, 4, 4, 4);
+I          |C         
+----------------------
+4          |4         
+ij> select * from big where c in (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select * from big where c in (31, 32, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 1);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select * from big where c in (1, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select * from big where c in (1, 5, 7, 9, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+ERROR 42818: Comparisons between 'CHAR' and 'INTEGER' are not supported.
+ij> select * from big where c in ('1', '5', '7', '9', '13', '15', '17', '19', '21', '23', '25', '27', '29', '31');
+I          |C         
+----------------------
+1          |1         
+5          |5         
+7          |7         
+9          |9         
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+21         |21        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> select * from big where i in (1, 5, 7, 9, 13, 15, 17, 19, 23, 25, 27, 29, 31);
+I          |C         
+----------------------
+1          |1         
+5          |5         
+7          |7         
+9          |9         
+13         |13        
+15         |15        
+17         |17        
+19         |19        
+23         |23        
+25         |25        
+27         |27        
+29         |29        
+ij> -- check consistency of scans, etc.
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- beetle 4316, check "in" with self-reference and correlation, etc.
+create table t1 (c1 real, c2 real);
+0 rows inserted/updated/deleted
+ij> create index i11 on t1 (c1);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 real, c2 real);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (2, 1), (3, 9), (8, 63), (5, 25), (20, 5);
+5 rows inserted/updated/deleted
+ij> insert into t2 values (4, 8), (8, 8), (7, 6), (5, 6);
+4 rows inserted/updated/deleted
+ij> select c1 from t1 where c1 in (2, sqrt(c2));
+C1           
+-------------
+2.0          
+3.0          
+5.0          
+ij> select c1 from t1 where c1 in ('10', '5', '20') and c1 > 3
+and c1 < 19;
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 4000;
+ij> -- nested loop exists join, right side should be ProjectRestrict on index scan with start and stop keys
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2));
+C1           
+-------------
+8.0          
+5.0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- nested loop exists join, right side should be ProjectRestrict on index scan with start and stop keys
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2))
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 4
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for T2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		Fetch Size = 16
+			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=4
+			Number of rows visited=4
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 4
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = true
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Scan ResultSet for T1 using index I11 at serializable isolation level using share table locking: 
+			Number of opens = 4
+			Hash table size = 5
+			Hash key is column number 0
+			Rows seen = 2
+			Rows filtered = 0
+				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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=5
+				Number of rows visited=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- nested loop exists join, right side should be ProjectRestrict on index scan with start and stop keys
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2) and c1 in ('5', '7'));
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS()
+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: 
+Row ResultSet:
+Number of opens = 1
+Rows returned = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+ij> -- hash exists join, right side PR on hash index scan, no start/stop key, next qualifier "=".
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2));
+C1           
+-------------
+8.0          
+5.0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- hash exists join, right side PR on hash index scan, no start/stop key, next qualifier "=".
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2))
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 4
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for T2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		Fetch Size = 16
+			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=4
+			Number of rows visited=4
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 4
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = true
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Scan ResultSet for T1 using index I11 at serializable isolation level using share table locking: 
+			Number of opens = 4
+			Hash table size = 5
+			Hash key is column number 0
+			Rows seen = 2
+			Rows filtered = 0
+				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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=5
+				Number of rows visited=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- hash exists join, right side PR on hash index scan, still no start/stop key, next qualifier "=".
+-- It still doesn't have start/stop key because c1 in ('5', '7') is blocked out by 2 others.
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2) and c1 in ('5', '7'));
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS()
+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: 
+Row ResultSet:
+Number of opens = 1
+Rows returned = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+ij> create index i12 on t1 (c1, c2);
+0 rows inserted/updated/deleted
+ij> -- at push "in" time, we determined that it is key and we can push; but at hash time we determined
+-- it's not key.  Now the key is it should be filtered out, otherwise we get exception.
+select c1 from t2 where c1 in (select c1 from t1 where c2 in (5, t2.c2));
+C1           
+-------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- at push "in" time, we determined that it is key and we can push; but at hash time we determined
+-- it's not key.  Now the key is it should be filtered out, otherwise we get exception.
+select c1 from t2 where c1 in (select c1 from t1 where c2 in (5, t2.c2))
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 4
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for T2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		Fetch Size = 16
+			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=4
+			Number of rows visited=4
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 4
+		Rows seen = 2
+		Rows filtered = 2
+		restriction = true
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Scan ResultSet for T1 using index I12 at serializable isolation level using share table locking: 
+			Number of opens = 4
+			Hash table size = 5
+			Hash key is column number 0
+			Rows seen = 2
+			Rows filtered = 0
+				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={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=5
+				Number of rows visited=5
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- just some more tests in different situations, not for the bug 4316
+-- many items
+select c1 from t1 where c1 in ('9', '4', '8.0', '7.7',
+	5.2, 6, '7.7', '4.9', '6.1');
+ERROR 42818: Comparisons between 'REAL' and 'CHAR' are not supported.
+ij> prepare q1 as 'select c1 from t1 where c1 in (3, ?)';
+ij> execute q1 using 'values 8';
+C1           
+-------------
+3.0          
+8.0          
+ij> execute q1 using 'values 9';
+C1           
+-------------
+3.0          
+ij> remove q1;
+ij> -- reset autocommit
+autocommit on;
+ij> -- Clean up
+drop table ss;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> drop table big;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table test;
+0 rows inserted/updated/deleted
+ij> --reproduction for beetle 5135 ( long list of constants in IN clause)
+create table t1(id int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(2);
+1 row inserted/updated/deleted
+ij> insert into t1 values(5644);
+1 row inserted/updated/deleted
+ij> insert into t1 values(723);
+1 row inserted/updated/deleted
+ij> insert into t1 values(0);
+1 row inserted/updated/deleted
+ij> insert into t1 values(1827);
+1 row inserted/updated/deleted
+ij> insert into t1 values(4107);
+1 row inserted/updated/deleted
+ij> insert into t1 values(5095);
+1 row inserted/updated/deleted
+ij> insert into t1 values(6666);
+1 row inserted/updated/deleted
+ij> insert into t1 values(7777);
+1 row inserted/updated/deleted
+ij> insert into t1 values(15157);
+1 row inserted/updated/deleted
+ij> insert into t1 values(13037);
+1 row inserted/updated/deleted
+ij> insert into t1 values(9999);
+1 row inserted/updated/deleted
+ij> SELECT id FROM t1 WHERE id IN (2,3,5,7,6,8,11,13,14,15,16,18,19
+,22,25,30,32,33,5712,34,39,42,43,46,51,54
+,55,56,58,60,62,63,64,65,68,70,72,73,5663
+,5743,74,5396,78,81,83,87,5267,89,91,92,93,94
+,95,96,97,99,101,102,103,104,107,108,109,110,114
+,115,116,118,121,122,124,126,128,129,130,131,132,134
+,136,135,139,140,141,145,150,155,156,158,159,162,160
+,164,165,166,168,169,170,171,172,173,174,175,176,178
+,180,182,183,185,187,188,190,191,193,197,198,200,202
+,203,208,5672,5221,5713,212,213,215,219,220,221,225,227
+,229,5763,234,235,236,238,241,239,243,245,249,250,5716
+,255,256,257,258,259,260,261,262,263,264,265,269,5644
+,272,274,275,276,277,280,282,284,286,289,290,294,296
+,293,299,301,303,305,5234,306,310,311,5473,313,314,315
+,316,318,319,322,323,324,326,327,328,330,333,334,336
+,337,338,340,341,342,343,344,345,346,347,348,350,351
+,353,354,361,363,368,369,370,374,372,373,375,376,379
+,380,384,388,389,390,392,394,396,397,398,400,403,404
+,5775,406,407,408,409,410,412,413,414,416,420,422,423
+,424,428,429,431,434,436,438,441,442,443,450,452,454
+,456,457,458,462,467,466,468,469,5651,470,474,477,479
+,481,482,483,484,488,486,493,494,495,496,498,500,501
+,502,503,504,506,507,508,509,510,512,513,514,516,519
+,520,522,523,524,527,528,530,532,534,535,538,539,542
+,543,546,548,550,552,555,562,561,563,565,567,568,569
+,571,574,572,5250,576,573,579,581,583,584,586,589,590
+,5642,592,596,600,601,602,604,606,607,609,610,611,615
+,616,617,618,619,620,621,623,624,625,626,627,629,630
+,631,632,633,635,636,637,640,641,642,643,644,5246,647
+,646,648,653,5324,654,655,656,658,660,662,663,665,668
+,669,670,672,673,674,675,676,677,678,680,681,683,684
+,686,689,691,2762,694,695,5464,696,697,698,700,701,705
+,5635,5471,708,711,713,714,715,717,719,720,721,722,723
+,724,726,728,729,730,731,733,735,740,741,746,747,748
+,749,750,751,752,754,755,756,757,759,761,762,763,764
+,766,768,769,772,774,776,775,779,780,781,783,788,790
+,794,795,797,801,800,802,804,806,811,813,814,816,819
+,822,823,824,825,826,827,829,5755,832,833,834,836,838
+,840,841,843,844,846,847,848,850,851,852,855,856,857
+,858,859,860,864,5602,865,869,871,872,873,874,876,878
+,880,882,883,885,886,888,890,892,896,898,5528,900,901
+,902,903,904,905,906,907,908,5334,911,912,913,914,915
+,916,918,919,920,921,922,924,923,926,927,928,930,933
+,934,937,938,939,941,942,943,947,945,948,949,951,955
+,957,958,959,960,961,967,968,971,974,980,981,986,987
+,988,991,989,993,995,996,997,999,1000,1001,1002,1003,1005
+,1006,1007,1008,1009,1010,1012,1011,1014,1015,1016,1017,1019,1021
+,1025,1026,1028,1029,1030,1031,1034,1036,1037,1039,1041,1042,1043
+,1049,1047,1050,1051,1052,1053,1054,1056,1057,1058,1061,1062,1063
+,1066,1071,1070,1073,1075,1077,1078,5710,1084,1085,1086,1088,1090
+,1091,1093,1094,1095,1096,1099,1102,1104,1105,1107,1108,1109,1110
+,1114,1117,1119,1121,1123,1124,1126,1127,1128,1129,1130,1131,1136
+,1138,1141,1143,1144,1145,1147,1150,1151,1157,1146,1158,1164,1166
+,1171,1170,1176,1177,1189,5525,1202,1203,1173,1175,1179,1181,1183
+,1184,1186,1188,1193,1195,1196,1197,1198,1199,1200,1205,1207,1225
+,1226,1227,1228,1209,1210,1214,1212,1215,1217,1218,1219,1220,5238
+,1221,1223,5288,1230,5727,1232,1234,1235,1236,5795,5816,1238,1240
+,1241,1245,1246,1247,1250,1253,1254,1258,1261,1262,1264,1265,1266
+,1268,1270,1274,1275,1277,1278,1280,1281,1282,1283,1284,1286,1285
+,1287,1288,1290,1293,1294,1295,1297,1301,1302,1305,1307,1308,1309
+,1311,1313,1314,1316,1317,1318,1320,1321,1323,1327,1329,1332,1334
+,1336,1338,1339,1341,1343,1348,1346,1347,1349,1350,1353,1357,1358
+,1359,1361,1363,1366,1367,1368,1369,1370,1371,1374,5689,1376,1377
+,1379,1380,1381,1386,1387,5661,1389,1390,1392,1393,1394,1395,1396
+,1398,1400,1402,1408,1409,1410,1411,1412,1413,1414,1415,1416,1419
+,1421,1425,1427,1428,5216,1430,1431,1432,1433,1434,1437,1438,1440
+,1444,1446,1448,1449,1451,1453,1454,1456,1457,1458,1459,1461,1463
+,1464,1465,1466,1467,1468,1472,1474,1475,1477,1476,1479,1480,1482
+,1484,1485,1489,1490,1491,1492,1494,1495,1498,1496,1502,1503,1504
+,1506,1507,1508,1510,1511,1512,1517,1519,5686,1521,1525,1528,1531
+,1530,1529,1535,1537,1538,1539,1541,1542,1546,1549,1552,1554,1555
+,1557,1558,1561,1562,1563,1566,1568,1570,1574,1575,1576,1580,1579
+,1577,1581,1583,1584,1585,1586,1589,1588,1592,1590,1594,1597,1598
+,1600,1601,1605,1606,1607,1608,1610,1611,1612,1613,1614,1615,1618
+,1620,1624,1625,1626,1627,1628,1631,1633,1635,1639,1640,1641,1642
+,5653,1645,1647,1649,1650,1655,5633,1656,1657,5647,1661,1662,1666
+,1667,1668,1669,1671,1672,1673,1674,1675,1676,1677,1678,1680,1682
+,1686,1688,1690,1694,1695,1696,1697,1699,1700,1701,1702,1703,1708
+,1710,1714,1713,1716,1719,1722,1721,1723,1724,1726,1727,1728,1729
+,1732,1734,1735,5419,1736,1737,1739,1740,1743,1744,1747,1748,1749
+,1750,1751,1752,1754,1757,1758,1767,1759,1761,1762,1764,1765,1766
+,1768,1771,1774,1775,1776,1779,1777,1781,1783,1785,1787,1789,1791
+,1794,1795,1796,1797,1798,1802,1804,1805,1806,1808,1809,1811,1812
+,1813,1814,1815,1816,1817,1819,5372,1822,1823,1824,1825,1827,1829
+,5709,1830,1831,1832,1833,1834,1835,1837,1838,1839,1841,1842,1847
+,5337,1848,1850,1851,1852,1854,1855,1858,1856,1859,1861,1862,1863
+,1867,1866,1868,1870,1871,1873,1874,1878,1879,1880,1881,1883,1884
+,1886,1889,1891,1893,1894,1896,1901,1903,1905,1906,1907,1908,1909
+,1911,1915,1916,1918,1919,1921,1922,1924,1925,5468,5671,1930,1931
+,1932,1933,1935,1937,1942,1943,1944,1947,1949,1951,1952,1955,1956
+,1957,1961,1962,1963,5393,1965,1966,1968,1972,1971,1976,1978,1980
+,1982,1983,1986,1989,1991,1992,1994,1995,1996,1997,1998,2000,2001
+,2002,2003,2005,2006,2008,2009,2012,2013,2015,2016,2018,2024,2026
+,2027,2028,2029,2031,2038,2039,2044,2046,2049,2050,2051,2052,2053
+,2054,2056,2058,2055,2060,2061,2062,2063,2065,2069,2070,2066,2076
+,2074,2072,2077,2079,2080,2083,2085,2086,2088,2089,2091,2092,2094
+,2096,2095,2098,2097,2099,2100,2106,2107,2108,2111,2112,2113,2114
+,2116,2117,2118,2119,2121,2123,2124,2125,2126,2127,2128,2129,2130
+,2134,2138,2139,2144,2145,2147,2148,2150,2151,2152,2153,2156,2157
+,2158,2160,2161,2162,2163,2164,2165,2166,2167,2170,2171,2172,2173
+,2174,2175,2176,2178,2180,2181,2186,5408,2188,2189,2190,2191,2192
+,2195,2198,2199,2201,2203,2206,2207,2209,2211,2212,5236,2213,2215
+,2216,2217,2218,2219,5253,2224,2225,2226,2227,2229,2231,2232,2233
+,2235,2236,2237,2238,2240,2241,2242,2243,2245,2246,2247,2248,2249
+,2251,2257,2259,2260,2261,2262,2263,2264,2265,2266,2267,2270,2272
+,2273,2274,2275,2276,2277,2281,2282,2284,2285,2288,2289,2290,2291
+,2293,2294,2295,2296,2298,2299,2300,2301,2304,2306,2308,2310,2309
+,2312,2313,2316,2317,2322,2324,2320,2318,2330,2331,2332,2334,5711
+,2335,2337,2338,2339,2344,2345,2347,2348,2349,5740,2350,2354,2356
+,2357,2358,2359,2361,2362,2365,2367,2368,2370,2372,2374,2378,2379
+,2380,2381,2382,2385,2388,2389,2391,2392,2393,2395,2396,2398,2400
+,2402,2401,2403,2404,2406,2408,2409,2411,2413,2417,2419,2421,2422
+,2424,2425,2426,2427,2428,2430,2432,2433,2434,2435,2436,2440,2439
+,2441,2443,2445,2446,2450,2448,2449,2451,2453,2456,2457,2458,5751
+,2460,2462,2463,2465,5731,2468,2469,2471,2472,2474,2479,2480,2481
+,2482,2484,2485,2486,2487,2488,2489,2491,2492,2494,2495,2496,2497
+,2499,2500,2501,2503,2505,2506,2507,2508,2511,2513,2515,2514,2516
+,2522,2525,2523,2526,2527,2528,2529,2532,2531,2533,2534,2535,2537
+,2539,2541,2543,2544,2546,2548,2550,2551,5629,2553,2555,2556,2557
+,2558,2559,2560,2563,2565,2569,2571,2574,2575,5718,5434,2577,2578
+,5760,2580,2584,2585,2587,2589,2590,2591,2592,2593,2594,2596,2598
+,2600,2602,2603,2605,2606,2607,2608,2610,2612,2613,2615,2616,2618
+,2619,2623,2621,2624,2625,2630,2633,2634,2636,2638,2640,2643,2644
+,2649,2651,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2665
+,2666,2667,2670,2671,2673,2674,2676,2680,2682,2683,2684,2687,2685
+,2690,2688,2694,2692,2695,2696,5448,2698,2699,2700,2701,2703,2704
+,2705,2706,2708,2709,2711,2714,2716,2717,2718,2719,2720,2722,2724
+,2725,2726,2728,2729,2733,2736,2734,2737,2738,2739,2743,2744,2745
+,2746,2747,2748,2754,2751,2753,2755,2757,2758,2761,2763,2766,2768
+,2769,2771,2773,2775,2774,2776,2778,2780,2781,2782,2784,2785,2786
+,2787,2788,2789,2790,2791,2795,2798,2801,2802,2803,2804,2807,2808
+,2809,2810,2812,2814,2815,2816,2819,2820,2822,2824,5649,2828,5465
+,2832,2833,5817,5809,5814,5815,2835,2838,2839,2845,2846,2847,2850
+,2851,2852,2854,2855,2857,2842,2858,2859,2861,2863,2864,2865,2866
+,2872,2873,2874,2875,2878,2881,2882,2883,2884,2885,2886,2887,2888
+,2891,2893,2894,2895,2896,2898,2897,2899,2900,2901,2903,2905,2906
+,2907,2908,2910,2914,2916,2917,2920,2918,2921,2925,2927,2928,2929
+,2932,2934,2936,2937,2938,2940,2939,2942,2943,2944,2945,2947,2950
+,2952,2953,2955,2957,2958,2959,2961,2962,2963,2964,2966,2967,2968
+,2972,2974,2976,2977,2978,2979,2980,2981,2982,2983,2984,2986,2987
+,2988,2989,2990,2991,2992,2993,2994,2996,2997,2998,2999,3000,3001
+,3003,3007,3008,3009,3011,3013,3014,3015,3016,3017,3019,3021,5768
+,3023,3026,3027,3028,3029,3032,3033,3035,3039,3040,3041,3042,3043
+,3044,3045,3046,3048,3050,3051,3055,3056,3057,3060,3061,3062,3064
+,3069,3068,3070,3071,3072,3074,3076,3079,3080,3082,3083,3086,3099
+,3088,3089,3090,3091,3092,3093,3094,3095,3096,5183,3097,3101,3103
+,3104,3107,3109,3111,3112,3114,3116,3120,3122,3123,3126,3127,3128
+,3129,3131,3132,3134,3135,3137,3139,5758,5724,3140,3144,3145,3147
+,3148,3149,3150,3152,3153,3154,3155,3158,3161,3162,3163,3164,3165
+,3166,3167,5776,3168,3170,3180,3181,3182,3186,3191,3192,3196,3198
+,3199,3200,3203,3205,3206,3207,3208,3210,3211,3212,3213,3215,3216
+,3217,3218,3219,3220,3221,3224,3226,3228,3230,3231,3232,3233,3235
+,3236,3237,3239,3241,3242,3243,5687,3245,3246,3248,3249,3253,3254
+,3259,3260,3261,3262,3264,3266,3267,3269,5811,3271,3273,3275,3277
+,5620,3278,3279,3280,3282,3284,3286,3287,3289,3293,3294,3295,3297
+,3299,3302,3301,3305,3307,3306,3308,3310,3311,3312,3313,3315,3316
+,5497,3318,3322,3324,3326,3328,3336,3337,3338,3339,3341,5589,3344
+,5742,3345,3346,3348,3350,3352,3354,3355,3356,3357,3361,3363,3364
+,3365,3367,3368,3369,3371,3370,3372,3375,3373,3377,3378,3379,3381
+,5638,3382,3384,3386,3387,3389,3390,3391,3392,3397,3398,3400,3401
+,3402,3404,3405,3406,3407,3408,3409,3410,3411,3414,3415,3416,3417
+,3418,3420,3421,3423,3424,3426,3428,3430,3431,3432,3433,3435,3436
+,3437,5391,3440,3441,3442,3443,3444,3446,3448,3450,3452,3451,3453
+,3455,3456,3457,3460,3461,3463,3464,3467,3466,3468,3471,3472,3474
+,3475,3477,3479,3481,3482,3484,3485,3486,3487,3488,3489,3491,3493
+,3494,3496,3497,3498,3500,3502,3504,3499,3505,3507,3514,3515,3517
+,3519,3520,3522,3524,3525,5256,3526,3527,3528,3529,3531,5636,3532
+,3533,3535,3536,3538,3539,3541,3544,3548,3550,3551,3552,3554,3556
+,3557,3559,3560,3563,3564,3565,3567,3568,3571,3572,3573,3574,3577
+,3583,3582,3580,3584,3586,3589,3587,3590,3591,3592,3593,3596,3597
+,3599,3602,3603,3604,3605,3606,3608,3609,5398,3612,3614,3615,3616
+,3617,3618,3619,3620,3621,3623,3624,3628,3630,3631,3633,3635,3636
+,3637,3638,3640,3641,3643,3645,3644,3648,3650,3649,3651,3655,3662
+,3664,3665,3667,3668,3672,3673,3676,3679,3681,3682,3683,3685,3688
+,3689,3690,3692,3695,3696,3697,3699,3700,3701,3704,5349,3707,3708
+,3710,3713,3715,3716,3717,3718,3720,3721,3724,3726,3727,3728,3729
+,3731,3732,3733,3735,3736,3741,3745,3747,3749,3751,3752,3754,3756
+,3758,3761,3762,3767,3769,3773,3775,5680,5181,3779,3783,3784,3788
+,5567,3792,3794,3797,3800,3801,3804,3805,3806,3807,3808,3809,3810
+,3811,3812,3813,3814,3819,3818,3820,3821,3822,3824,3825,3826,3827
+,3829,3830,3832,5242,3834,3835,3836,3838,3843,3802,3849,3850,3855
+,3857,5657,3858,3859,3862,5645,3863,3864,3865,5669,3866,3867,3868
+,3869,3872,5720,3873,3874,3877,3879,3880,3881,3882,3884,3885,3886
+,3887,3888,3889,3890,3892,3893,3898,3899,3900,3903,3904,3905,3908
+,3909,3910,3911,3916,3917,3918,3921,3924,3926,3930,3931,3933,3934
+,3936,3938,3939,3940,3941,3945,3949,3950,3954,3955,3957,3958,3960
+,3961,3964,3966,3968,3973,3979,3980,3981,3982,3983,3985,3986,3987
+,3989,3991,3990,3994,3992,3993,3995,3997,3998,3999,4000,4001,4002
+,4003,4004,4005,4006,4007,4008,4009,4011,4012,4013,4015,4016,4020
+,4022,4023,5536,4026,4027,4028,4030,4031,4034,5770,4035,4037,4040
+,4041,4043,4044,4045,4046,4047,4048,4051,4052,4053,4055,4059,4061
+,4062,4063,4064,4067,4070,4073,4074,4075,4076,4077,4079,4081,4083
+,4084,4085,4086,4093,5240,4090,4092,4094,4095,4097,4098,4100,4102
+,4103,4104,4105,4106,4107,4108,4109,4110,4112,4114,4115,4118,5631
+,4120,4124,4132,4135,4142,4144,4145,4147,4148,4149,4150,4156,4159
+,4160,4162,4163,4165,4166,4168,4167,4169,4171,4172,4174,4175,4179
+,4181,4182,4186,4190,4188,4194,4196,4198,5738,4200,4202,4203,4205
+,4206,4208,4211,4212,4213,4215,4217,4220,4223,4225,4229,4230,4231
+,4235,4236,4237,4238,4239,5826,4241,4242,4243,4244,4246,5343,4250
+,4251,4252,4253,4254,4255,4256,4257,4258,4262,5685,4264,4268,4269
+,4270,4271,4272,4273,4274,5659,4279,4281,4283,4284,4285,4287,4291
+,4292,4296,4298,4299,4300,4301,4302,4303,4304,4305,4308,4310,5348
+,4311,4312,4313,4315,5438,4317,4319,4321,4322,4324,4326,4327,4328
+,4329,4330,4331,4334,4336,4337,4341,4342,4343,4344,5326,4346,4352
+,4354,4356,4359,4362,4364,4366,4367,4371,4373,4375,4379,4381,4384
+,4386,4392,4390,5218,4397,4404,4406,4409,4410,4412,4411,4413,4414
+,4416,4418,4420,4424,4426,4427,4430,4431,4432,4433,4437,4438,4439
+,4440,4441,4442,4444,4445,4448,4446,5748,4451,4453,4454,4455,4458
+,5774,4461,4462,4464,4465,4466,4467,4468,4469,4470,4472,4474,4475
+,4476,4479,4480,4482,4483,4485,4487,4490,4492,4493,4494,4500,4501
+,4503,4504,4506,4507,4508,4509,4510,4511,4512,4513,4516,4519,4520
+,4521,4522,4524,4525,4527,4528,4533,4535,4536,4537,4538,4539,4540
+,4541,4542,4544,4547,4548,4550,4552,4553,4555,4556,4557,4559,4561
+,4562,4564,4565,4566,4567,4568,4569,5417,4570,4572,4575,4582,4576
+,4578,4581,4583,4584,4585,4586,4587,4588,4589,4593,4594,4596,4603
+,4604,4605,4610,4612,4614,5387,4619,4622,4624,4626,4627,4628,4629
+,4630,4632,4634,4636,4637,4640,4645,4646,4648,4650,4651,4652,4653
+,4654,4657,4659,4662,4660,4664,4665,4667,4668,4669,4672,4674,4677
+,4679,4681,4682,4683,4684,4686,4688,4689,4690,4692,4693,4694,4695
+,4698,4699,4700,4705,4701,4703,4708,4709,4711,4713,4714,4717,4727
+,4728,4732,4734,4736,4737,4739,4741,4744,4747,4748,4750,4751,4754
+,4755,4756,4758,4759,4761,4762,4764,4765,4767,4769,4749,4770,4771
+,4773,4774,4775,4776,4777,4778,4784,4785,4786,4787,4788,4791,4793
+,4794,5389,4798,4800,4801,4803,4805,4808,4806,4809,4810,4811,4814
+,4815,4816,4822,4826,4827,4829,4831,4824,4832,4835,4836,4838,4839
+,4840,4842,4844,4846,4848,4849,4850,4853,4854,4858,4860,4861,4862
+,4863,4864,4867,4868,4871,4873,4874,4875,4877,4878,4879,4884,4886
+,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4899,4902,4903
+,4904,4908,4905,4906,4907,4910,4911,4912,4913,4915,4914,4916,4917
+,4918,4919,4920,4921,4923,4926,4927,4928,4929,4930,4931,4932,4933
+,4937,4942,4944,4945,4946,4948,4950,4951,4954,4956,4958,4960,4961
+,4963,4964,4965,4967,4970,4969,4971,4972,4974,4977,4975,4979,4981
+,5729,4982,4983,4984,4986,4989,4991,4992,4994,4995,4996,4997,4998
+,4999,5001,5003,5005,5006,5655,3969,5007,5622,5009,5013,5015,5021
+,5022,5024,5025,5026,5028,5029,5031,5033,5036,5037,5038,5040,5041
+,5042,5043,5047,5048,5050,5051,5053,5054,5056,5058,5059,5061,5063
+,5064,5065,5066,5068,5069,5070,5072,5073,5076,5080,5081,5082,5083
+,5084,5085,5087,5086,5088,5090,5092,5094,5095,5097,5099,5101,5102
+,5104,5105,5106,5107,5108,5110,5112,5114,5115,5116,5117,5118,5119
+,5120,5121,5123,5124,5125,5126,5127,5128,5130,5131,5132,5134,5136
+,5137,5138,5139,5140,5141,5143,5777,5812,5148,5154,5155,5157,5159
+,6022,6024,6025,6026,6028,6029,6031,6033,6036,6037,6038,6040,6041
+,6042,6043,6047,6048,6050,6051,6053,6054,6056,6058,6059,6061,6063
+,6064,6065,6066,6068,6069,6070,6072,6073,6076,6080,6081,6082,6083
+,6084,6085,6087,6086,6088,6090,6092,6094,6095,6097,6099,6101,6102
+,6104,6105,6106,6107,6108,6110,6112,6114,6115,6116,6117,6118,6119
+,6120,6121,6123,6124,6125,6126,6127,6128,6130,6131,6132,6134,6136
+,6137,6138,6139,6140,6141,6143,6777,6812,6148,6154,6155,6157,6159
+,7022,7024,7025,7026,7028,7029,7031,7033,7036,7037,7038,7040,7041
+,7042,7043,7047,7048,7050,7051,7053,7054,7056,7058,7059,7061,7063
+,7064,7065,7066,7068,7069,7070,7072,7073,7076,7080,7081,7082,7083
+,7084,7085,7087,7086,7088,7090,7092,7094,7095,7097,7099,7101,7102
+,7104,7105,7106,7107,7108,7110,7112,7114,7115,7116,7117,7118,7119
+,7120,7121,7123,7124,7125,7126,7127,7128,7130,7131,7132,7134,7136
+,7137,7138,7139,7140,7141,7143,7777,7812,7148,7154,7155,7157,7159
+,8022,8024,8025,8026,8028,8029,8031,8033,8036,8037,8038,8040,8041
+,8042,8043,8047,8048,8050,8051,8053,8054,8056,8058,8059,8061,8063
+,8064,8065,8066,8068,8069,8070,8072,8073,8076,8080,8081,8082,8083
+,8084,8085,8087,8086,8088,8090,8092,8094,8095,8097,8099,8101,8102
+,8104,8105,8106,8107,8108,8110,8112,8114,8115,8116,8117,8118,8119
+,8120,8121,8123,8124,8125,8126,8127,8128,8130,8131,8132,8134,8136
+,8137,8138,8139,8140,8141,8143,8777,8812,8148,8154,8155,8157,8159
+,9022,9024,9025,9026,9028,9029,9031,9033,9036,9037,9038,9040,9041
+,9042,9043,9047,9048,9050,9051,9053,9054,9056,9058,9059,9061,9063
+,9064,9065,9066,9068,9069,9070,9072,9073,9076,9080,9081,9082,9083
+,9084,9085,9087,9086,9088,9090,9092,9094,9095,9097,9099,9101,9102
+,9104,9105,9106,9107,9108,9110,9112,9114,9115,9116,9117,9118,9119
+,9120,9121,9123,9124,9125,9126,9127,9128,9130,9131,9132,9134,9136
+,9137,9138,9139,9140,9141,9143,9777,9812,9148,9154,9155,9157,9159
+,10022,10024,10025,10026,10028,10029,10031,10033,10036,10037,10038,10040,10041
+,10042,10043,10047,10048,10050,10051,10053,10054,10056,10058,10059,10061,10063
+,10064,10065,10066,10068,10069,10070,10072,10073,10076,10080,10081,10082,10083
+,10084,10085,10087,10086,10088,10090,10092,10094,10095,10097,10099,10101,10102
+,10104,10105,10106,10107,10108,10110,10112,10114,10115,10116,10117,10118,10119
+,10120,10121,10123,10124,10125,10126,10127,10128,10130,10131,10132,10134,10136
+,10137,10138,10139,10140,10141,10143,10777,10812,10148,10154,10155,10157,10159
+,11022,11024,11025,11026,11028,11029,11031,11033,11036,11037,11038,11040,11041
+,11042,11043,11047,11048,11050,11051,11053,11054,11056,11058,11059,11061,11063
+,11064,11065,11066,11068,11069,11070,11072,11073,11076,11080,11081,11082,11083
+,11084,11085,11087,11086,11088,11090,11092,11094,11095,11097,11099,11101,11102
+,11104,11105,11106,11107,11108,11110,11112,11114,11115,11116,11117,11118,11119
+,11120,11121,11123,11124,11125,11126,11127,11128,11130,11131,11132,11134,11136
+,11137,11138,11139,11140,11141,11143,11777,11812,11148,11154,11155,11157,11159
+,12022,12024,12025,12026,12028,12029,12031,12033,12036,12037,12038,12040,12041
+,12042,12043,12047,12048,12050,12051,12053,12054,12056,12058,12059,12061,12063
+,12064,12065,12066,12068,12069,12070,12072,12073,12076,12080,12081,12082,12083
+,12084,12085,12087,12086,12088,12090,12092,12094,12095,12097,12099,12101,12102
+,12104,12105,12106,12107,12108,12110,12112,12114,12115,12116,12117,12118,12119
+,12120,12121,12123,12124,12125,12126,12127,12128,12130,12131,12132,12134,12136
+,12137,12138,12139,12140,12141,12143,12777,12812,12148,12154,12155,12157,12159
+,13022,13024,13025,13026,13028,13029,13031,13033,13036,13037,13038,13040,13041
+,13042,13043,13047,13048,13050,13051,13053,13054,13056,13058,13059,13061,13063
+,13064,13065,13066,13068,13069,13070,13072,13073,13076,13080,13081,13082,13083
+,13084,13085,13087,13086,13088,13090,13092,13094,13095,13097,13099,13101,13102
+,13104,13105,13106,13107,13108,13110,13112,13114,13115,13116,13117,13118,13119
+,13120,13121,13123,13124,13125,13126,13127,13128,13130,13131,13132,13134,13136
+,13137,13138,13139,13140,13141,13143,13777,13812,13148,13154,13155,13157,13159
+,14022,14024,14025,14026,14028,14029,14031,14033,14036,14037,14038,14040,14041
+,14042,14043,14047,14048,14050,14051,14053,14054,14056,14058,14059,14061,14063
+,14064,14065,14066,14068,14069,14070,14072,14073,14076,14080,14081,14082,14083
+,14084,14085,14087,14086,14088,14090,14092,14094,14095,14097,14099,14101,14102
+,14104,14105,14106,14107,14108,14110,14112,14114,14115,14116,14117,14118,14119
+,14120,14121,14123,14124,14125,14126,14127,14128,14130,14131,14132,14134,14136
+,14137,14138,14139,14140,14141,14143,14777,14812,14148,14154,14155,14157,14159
+,15022,15024,15025,15026,15028,15029,15031,15033,15036,15037,15038,15040,15041
+,15042,15043,15047,15048,15050,15051,15053,15054,15056,15058,15059,15061,15063
+,15064,15065,15066,15068,15069,15070,15072,15073,15076,15080,15081,15082,15083
+,15084,15085,15087,15086,15088,15090,15092,15094,15095,15097,15099,15101,15102
+,15104,15105,15106,15107,15108,15110,15112,15114,15115,15116,15117,15118,15119
+,15120,15121,15123,15124,15125,15126,15127,15128,15130,15131,15132,15134,15136
+,15137,15138,15139,15140,15141,15143,15777,15812,15148,15154,15155,15157,15159
+,4436,5162,5165,5170,5171,5173,5345,5174,5765,5177,5750,5793,0) ORDER BY id;
+ID         
+-----------
+0          
+2          
+723        
+1827       
+4107       
+5095       
+5644       
+7777       
+13037      
+15157      
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1(c1 int );
+0 rows inserted/updated/deleted
+ij> create table t2(c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values(0);
+1 row inserted/updated/deleted
+ij> create view v1(c1)
+as
+select c1 from t1
+union all
+select c2 from t2 ;
+0 rows inserted/updated/deleted
+ij> --following statement fails with NPE before fix of 5469
+select c1 from v1 where c1 NOT IN (1, 2);
+C1         
+-----------
+0          
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/infostreams.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/infostreams.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4 @@
+ij> -- this file exists to show the streams booting and looking at
+-- their properties...
+;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/innerjoin.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/innerjoin.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,216 @@
+ij> -- test inner joins
+-- (NO NATURAL JOIN)
+autocommit off;
+ij> -- create some tables
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t3(c1 int);
+0 rows inserted/updated/deleted
+ij> create table insert_test(c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values 1, 2, 3, 4;
+4 rows inserted/updated/deleted
+ij> insert into t2 values 1, 3, 5, 6;
+4 rows inserted/updated/deleted
+ij> insert into t3 values 2, 3, 5, 7;
+4 rows inserted/updated/deleted
+ij> -- negative tests
+-- no join clause
+select * from t1 join t2;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 4, column 24.
+ij> select * from t1 inner join t2;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 30.
+ij> -- empty column list
+select * from t1 join t2 using ();
+ERROR 42X01: Syntax error: Encountered "using" at line 2, column 26.
+ij> -- non-boolean join clause
+select * from t1 join t2 on 1;
+ERROR 42Y12: The ON clause of a JOIN is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> -- duplicate exposed names, DB2 extension
+-- DB2 UDB: PASS
+-- DB2 CS:  FAIL
+select * from t1 join t1 on 1=1;
+ERROR 42X03: Column name 'T1.C1' is in more than one table in the FROM list.
+ij> -- duplicate exposed names
+select * from t1 join t1 on c1 = 1;
+ERROR 42X03: Column name 'T1.C1' is in more than one table in the FROM list.
+ij> select * from t1 join t1 on (c1);
+ERROR 42X03: Column name 'T1.C1' is in more than one table in the FROM list.
+ij> -- join clause only allowed to contain column references from tables being
+-- joined. DB2 doesn't allow references to correlated columns
+select * from t1, t2 join t3 on t1.c1 = t2.c1;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- should match db2's behavior by raising an error
+select * from t2 b inner join t3 c on a.c1 = b.c1 and b.c1 = c.c1;
+ERROR 42X04: Column 'A.C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'A.C1' is not a column in the target table.
+ij> select * from t3 b where exists (select * from t1 a inner join t2 on b.c1 = t2.c1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> select * from t3 where exists (select * from t1 inner join t2 on t3.c1 = t2.c1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- positive tests
+select a.c1 from t1 a join t2 b on a.c1 = b.c1;
+C1         
+-----------
+1          
+3          
+ij> select a.x from t1 a (x) join t2 b (x) on a.x = b.x;
+X          
+-----------
+1          
+3          
+ij> -- ANSI "extension" - duplicate exposed names allowed when no column references
+-- this may go away if we can figure out how to detect this error and
+-- get bored enough to prioritize the fix
+get cursor c as 'select 1 from t1 join t1 on 1=1';
+ij> next c;
+1          
+-----------
+1          
+ij> close c;
+ij> -- parameters and join clause
+prepare asdf as 'select * from t1 join t2 on ?=1 and t1.c1 = t2.c1';
+ij> execute asdf using 'values 1';
+C1         |C1         
+-----------------------
+1          |1          
+3          |3          
+ij> remove asdf;
+ij> prepare asdf as 'select * from t1 join t2 on t1.c1 = t2.c1 and t1.c1 = ?';
+ij> execute asdf using 'values 1';
+C1         |C1         
+-----------------------
+1          |1          
+ij> remove asdf;
+ij> -- additional predicates outside of the join clause
+select * from t1 join t2 on t1.c1 = t2.c1 where t1.c1 = 1;
+C1         |C1         
+-----------------------
+1          |1          
+ij> select * from t1 join t2 on t1.c1 = 1 where t2.c1 = t1.c1;
+C1         |C1         
+-----------------------
+1          |1          
+ij> -- subquery in join clause, not allowed in DB2 compatibility mode
+select * from t1 a join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> select * from t1 a join t2 b 
+on a.c1 = b.c1 and a.c1 in (select c1 from t1 where a.c1 = t1.c1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- correlated columns
+select * from t1 a
+where exists (select * from t1 inner join t2 on a.c1 = t2.c1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- nested joins
+select * from t1 join t2 on t1.c1 = t2.c1 inner join t3 on t1.c1 = t3.c1;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> -- parens
+select * from (t1 join t2 on t1.c1 = t2.c1) inner join t3 on t1.c1 = t3.c1;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> select * from t1 join (t2 inner join t3 on t2.c1 = t3.c1) on t1.c1 = t2.c1;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> -- [inner] joins
+select * from t1 a left outer join t2 b on a.c1 = b.c1 inner join t3 c on b.c1 = c.c1;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> select * from (t1 a left outer join t2 b on a.c1 = b.c1) inner join t3 c on b.c1 = c.c1;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> select * from t1 a join t2 b on a.c1 = b.c1 inner join t3 c on c.c1 = a.c1 where c.c1 > 2 and a.c1 > 2;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> select * from (t1 a join t2 b on a.c1 = b.c1) inner join t3 c on c.c1 = a.c1 where c.c1 > 2 and a.c1 > 2;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> select * from t1 a join (t2 b inner join t3 c on c.c1 = b.c1) on a.c1 = b.c1 where c.c1 > 2 and b.c1 > 2;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+ij> -- test insert/update/delete
+insert into insert_test
+select * from t1 a join t2 b on a.c1 = b.c1 inner join t3 c on a.c1 <> c.c1;
+7 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |2          
+1          |1          |3          
+1          |1          |5          
+1          |1          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |7          
+ij> update insert_test
+set c1 = (select 9 from t1 a join t1 b on a.c1 = b.c1 where a.c1 = 1)
+where c1 = 1;
+4 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+9          |1          |2          
+9          |1          |3          
+9          |1          |5          
+9          |1          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |7          
+ij> delete from insert_test
+where c1 = (select 9 from t1 a join t1 b on a.c1 = b.c1 where a.c1 = 1);
+4 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+3          |3          |2          
+3          |3          |5          
+3          |3          |7          
+ij> -- multicolumn join
+select * from insert_test a join insert_test b 
+on a.c1 = b.c1 and a.c2 = b.c2 and a.c3 = b.c3;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+3          |3          |2          |3          |3          |2          
+3          |3          |5          |3          |3          |5          
+3          |3          |7          |3          |3          |7          
+ij> -- continue with insert tests
+delete from insert_test;
+3 rows inserted/updated/deleted
+ij> insert into insert_test
+select * from (select * from t1 a join t2 b on a.c1 = b.c1 inner join t3 c on a.c1 <> c.c1) d (c1, c2, c3);
+7 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |2          
+1          |1          |3          
+1          |1          |5          
+1          |1          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |7          
+ij> delete from insert_test;
+7 rows inserted/updated/deleted
+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> drop table insert_test;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/insert.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/insert.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,774 @@
+ij> --
+-- this test is for basic insert functionality
+--
+-- NOTE: drop, create, select from the same table doesn't work yet either.
+-- create the tables
+create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> create table t2 (k int, l int);
+0 rows inserted/updated/deleted
+ij> -- populate t2
+insert into t2 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 4);
+1 row inserted/updated/deleted
+ij> -- select * from t2
+insert into t1 select * from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (i, j) select * from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (j, i) select * from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |2          
+3          |4          
+1          |2          
+3          |4          
+2          |1          
+4          |3          
+ij> -- drop and recreate t1
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> -- select column list from t2
+insert into t1 select k, l from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 select l, k from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (i, j) select k, l from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (j, i) select k, l from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |2          
+3          |4          
+2          |1          
+4          |3          
+1          |2          
+3          |4          
+2          |1          
+4          |3          
+ij> -- drop and recreate t1
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> -- select constants from t2
+insert into t1 select 5, 6 from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (i, j) select 5, 6 from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (j, i) select 6, 5 from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+5          |6          
+5          |6          
+5          |6          
+5          |6          
+5          |6          
+5          |6          
+ij> -- drop and recreate t1
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> insert into t1 (i) select 666 from t2;
+2 rows inserted/updated/deleted
+ij> insert into t1 (j) select 666 from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1 where i = 666 or j = 666;
+I          |J          
+-----------------------
+666        |NULL       
+666        |NULL       
+NULL       |666        
+NULL       |666        
+ij> -- drop and recreate t1
+drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> -- Negative test cases - column references in values clause
+insert into t1 values(1, c1);
+ERROR 42X04: Column 'C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C1' is not a column in the target table.
+ij> insert into t1 values("asdf asdf", 2);
+ERROR 42X04: Column 'asdf asdf' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'asdf asdf' is not a column in the target table.
+ij> -- Negative test case - syntax error
+insert into t1 values;
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> -- Too many values in values clause
+insert into t1 values(1,1,1);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- insert select with too many result columns in select
+insert into t1 select 1, 2, 3 from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- multiple instances of same column in colum list
+insert into t1 (i, i) values(2,2);
+ERROR 42X13: Column name 'I' appears more than once times in the column list of an insert statement.
+ij> -- target column list size != source size
+insert into t1 (i, j) values(1);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> insert into t1 (i) values (1, 2);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- Negative test cases - column name not specified
+insert into t1 select 666 from t2;
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- target table in source - deferred mode
+insert into t1 values (1,1);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2,2);
+1 row inserted/updated/deleted
+ij> delete from t2;
+2 rows inserted/updated/deleted
+ij> insert into t2 select * from t1;
+2 rows inserted/updated/deleted
+ij> autocommit off;
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+ij> insert into t1 select t1.* from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from t1 order by 1, 2;
+I          |J          
+-----------------------
+1          |1          
+1          |1          
+1          |1          
+2          |2          
+2          |2          
+2          |2          
+ij> rollback;
+ij> insert into t1 (i) select (select i from t1 where i = 1) from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+1          |NULL       
+1          |NULL       
+ij> rollback;
+ij> insert into t1 (i) select 1 from t2 where 1 = (select i from t1 where i = 1);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+1          |NULL       
+1          |NULL       
+ij> rollback;
+ij> insert into t1 select * from (select * from t1) a;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+1          |1          
+2          |2          
+ij> rollback;
+ij> -- bug 5638
+insert into t1 select * from t2 union select * from t1;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+1          |1          
+2          |2          
+ij> rollback;
+ij> -- bug 5638
+insert into t1 select * from t2 union select * from (select * from t1) a;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+1          |1          
+2          |2          
+ij> rollback;
+ij> -- single-row deferred insert
+insert into t1 select * from t1 where i = 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+1          |1          
+ij> rollback;
+ij> -- zero-row deferred insert - degenerate case
+insert into t1 select * from t1 where i = 17;
+0 rows inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+ij> rollback;
+ij> -- insert-select with ? parameters
+prepare i1 as 'insert into t1 (j, i) select 101,102 from t1 where i = ?';
+ij> execute i1 using 'values (1)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |1          
+2          |2          
+102        |101        
+ij> rollback;
+ij> autocommit on;
+ij> -- test atomicity of multi row inserts
+create table atom_test_target (c1 smallint);
+0 rows inserted/updated/deleted
+ij> create table atom_test_source (c1 smallint);
+0 rows inserted/updated/deleted
+ij> insert into atom_test_source values 1, 30000,0, 2;
+4 rows inserted/updated/deleted
+ij> -- overflow
+insert into atom_test_target select c1 + c1 from atom_test_source;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select * from atom_test_target;
+C1    
+------
+ij> -- divide by 0
+insert into atom_test_target select c1 / c1 from atom_test_source;
+ERROR 22012: Attempt to divide by zero.
+ij> select * from atom_test_target;
+C1    
+------
+ij> -- Derby-34
+create table tchar( i int, c char(1) for bit data default x'02');
+0 rows inserted/updated/deleted
+ij> create table tchar1 (i int, c char(5) for bit data default x'2020202020',
+			v varchar(5) for bit data default x'2020',
+			l long varchar for bit data default x'303030');
+0 rows inserted/updated/deleted
+ij> drop table tchar;
+0 rows inserted/updated/deleted
+ij> drop table tchar1;
+0 rows inserted/updated/deleted
+ij> -- insert various numeric types into other numeric types
+create table i1 (i int, t int, s smallint, l bigint, r real, dp double, dc dec);
+0 rows inserted/updated/deleted
+ij> create table i2 (i int, t int, s smallint, l bigint, r real, dp double, dc dec);
+0 rows inserted/updated/deleted
+ij> create table tab1 (
+				i integer, 
+				t integer, 
+				s integer, 
+				l bigint,
+				r real, 
+				dp double,
+				dc decimal);
+0 rows inserted/updated/deleted
+ij> insert into i1 values (1, 2, 3, 4, 5.5, 6.6, 7.7);
+1 row inserted/updated/deleted
+ij> insert into i1 values (null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into tab1 values(1, 
+				cast(2 as int), 
+				cast(3 as smallint), 
+				cast(4 as bigint), 
+				cast(5.5 as real), 
+				cast(6.6 as double), 
+				7.7);
+1 row inserted/updated/deleted
+ij> insert into tab1 values (null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into i2 select i, i, i, i, i, i, i from i1;
+2 rows inserted/updated/deleted
+ij> insert into i2 select t, t, t, t, t, t, t from i1;
+2 rows inserted/updated/deleted
+ij> insert into i2 select s, s, s, s, s, s, s from i1;
+2 rows inserted/updated/deleted
+ij> insert into i2 select l, l, l, l, l, l, l from i1;
+2 rows inserted/updated/deleted
+ij> insert into i2 select r, r, r, r, r, r, r from i1;
+2 rows inserted/updated/deleted
+ij> insert into i2 select dp, dp, dp, dp, dp, dp, dp from i1;
+2 rows inserted/updated/deleted
+ij> insert into i2 select dc, dc, dc, dc, dc, dc, dc from i1;
+2 rows inserted/updated/deleted
+ij> select * from i2;
+I          |T          |S     |L                   |R            |DP                    |DC    
+-----------------------------------------------------------------------------------------------
+1          |1          |1     |1                   |1.0          |1.0                   |1     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+2          |2          |2     |2                   |2.0          |2.0                   |2     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+3          |3          |3     |3                   |3.0          |3.0                   |3     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+4          |4          |4     |4                   |4.0          |4.0                   |4     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+5          |5          |5     |5                   |5.5          |5.5                   |5     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+6          |6          |6     |6                   |6.6          |6.6                   |6     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+7          |7          |7     |7                   |7.0          |7.0                   |7     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+ij> delete from i2;
+14 rows inserted/updated/deleted
+ij> insert into i2 select i, t, s, l, r, dp, dc from tab1;
+2 rows inserted/updated/deleted
+ij> select * from i2;
+I          |T          |S     |L                   |R            |DP                    |DC    
+-----------------------------------------------------------------------------------------------
+1          |2          |3     |4                   |5.5          |6.6                   |7     
+NULL       |NULL       |NULL  |NULL                |NULL         |NULL                  |NULL  
+ij> -- get the rest
+create table i3 (b char(1) for bit data, 
+			bv varchar(1) for bit data, 
+			lbv long varchar for bit data,
+			c char(10),
+			cv varchar(10),
+			lvc long varchar,
+			dt date,
+			t time,
+			ts timestamp);
+0 rows inserted/updated/deleted
+ij> create table i4 (b char (1) for bit data, 
+			bv varchar(1) for bit data, 
+			lbv long varchar for bit data,
+			c char(10),
+			cv varchar(10),
+			lvc long varchar,
+			dt date,
+			t time,
+			ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into i3 values (X'11', X'22', X'25', '3', '4', '5', '1990-10-10', 
+			'11:11:11', 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1 row inserted/updated/deleted
+ij> insert into i3 values (null, null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into i4 select * from i3;
+2 rows inserted/updated/deleted
+ij> select * from i4;
+B   |BV  |LBV                                                                                                                             |C         |CV        |LVC                                                                                                                             |DT        |T       |TS                        
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+11  |22  |25                                                                                                                              |3         |4         |5                                                                                                                               |1990-10-10|11:11:11|xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL|NULL|NULL                                                                                                                            |NULL      |NULL      |NULL                                                                                                                            |NULL      |NULL    |NULL                      
+ij> delete from i4;
+2 rows inserted/updated/deleted
+ij> create table tab2 (
+	c char,
+	cv varchar(10),
+	lvc long varchar,
+	dt date,	
+	t time,	
+	ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into tab2 values ('3', '4', '5', '1990-10-10', 
+			'11:11:11', 'xxxxxxFILTERED-TIMESTAMPxxxxx);
+1 row inserted/updated/deleted
+ij> insert into tab2 values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into i4 (c, cv, lvc, dt, t, ts) select c, cv, lvc, dt, t, ts from tab2;
+2 rows inserted/updated/deleted
+ij> select * from i4;
+B   |BV  |LBV                                                                                                                             |C         |CV        |LVC                                                                                                                             |DT        |T       |TS                        
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL|NULL|NULL                                                                                                                            |3         |4         |5                                                                                                                               |1990-10-10|11:11:11|xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL|NULL|NULL                                                                                                                            |NULL      |NULL      |NULL                                                                                                                            |NULL      |NULL    |NULL                      
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table atom_test_target;
+0 rows inserted/updated/deleted
+ij> drop table atom_test_source;
+0 rows inserted/updated/deleted
+ij> drop table i1;
+0 rows inserted/updated/deleted
+ij> drop table i2;
+0 rows inserted/updated/deleted
+ij> drop table i3;
+0 rows inserted/updated/deleted
+ij> drop table i4;
+0 rows inserted/updated/deleted
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> drop table tab2;
+0 rows inserted/updated/deleted
+ij> -- test bug 4293, extremely huge insert statement, not using FileImport.
+create table POLICY_STATEMENTS (c1 int, c2 int, c3 int, c4 long varchar, c5 long varchar, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int);
+0 rows inserted/updated/deleted
+ij> INSERT INTO POLICY_STATEMENTS VALUES
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 104,1,null,'Unauthorized use, destruction, modification, and/or distribution of %%short_company_name%% information or information systems is prohibited.','This defines some of the many restrictions on the use of %%short_company_name%% information systems.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions to users who abuse company assets.',null,1,4,null,null,4);
+356 rows inserted/updated/deleted
+ij> select count(*) from POLICY_STATEMENTS;
+1          
+-----------
+356        
+ij> drop table POLICY_STATEMENTS;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/isolationLevels.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/isolationLevels.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,682 @@
+ij> -- single user test for the various isolation levels
+prepare getIsolation as 'values current isolation';
+ij> autocommit off;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- create a table
+create table t1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- insert a row
+insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> -- verify table scan gets row lock at read committed
+select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify table scan gets row lock at read committed
+select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- verify matching index scan gets row lock at read committed
+select * from t1 where c1 = 1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify matching index scan gets row lock at read committed
+select * from t1 where c1 = 1
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using share 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={0}
+	Number of columns fetched=1
+	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: 
+0 
+	stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	qualifiers:
+None
+ij> -- verify WITH clause works
+select * from t1 with rr;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify WITH clause works
+select * from t1 with rr
+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 Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- verify SET ISOLATION commits and changes isolation level
+set isolation RR;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RR  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation reset;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+ij> -- verify matching index scan gets row lock at read committed
+select * from t1 where c1 = 1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- verify matching index scan gets row lock at read committed
+select * from t1 where c1 = 1
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using share 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={0}
+	Number of columns fetched=1
+	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: 
+0 
+	stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	qualifiers:
+None
+ij> -- verify SET ISOLATION commits and changes isolation level
+set isolation read committed;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+CS  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set current isolation = reset;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+ij> -- verify SET ISOLATION commits and changes isolation level
+set current isolation = RS;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RS  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at repeatable read isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation to reset;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+ij> -- verify SET ISOLATION commits and changes isolation level
+set isolation = dirty read;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+UR  
+ij> -- rollback should find nothing to undo
+rollback;
+ij> select * from t1;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1
+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 Scan ResultSet for T1 using constraint ASDF at read uncommitted isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- test WITH clause
+set isolation serializable;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RR  
+ij> select * from t1 with cs;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with cs
+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 Scan ResultSet for T1 using constraint ASDF at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation cursor stability;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+CS  
+ij> select * from t1 with RR;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with RR
+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 Scan ResultSet for T1 using constraint ASDF at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+RR  
+ij> select * from t1 with RS;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with RS
+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 Scan ResultSet for T1 using constraint ASDF at repeatable read isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> set current isolation to read committed;
+0 rows inserted/updated/deleted
+ij> execute getIsolation;
+1   
+----
+CS  
+ij> select * from t1 with ur;
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from t1 with ur
+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 Scan ResultSet for T1 using constraint ASDF at read uncommitted isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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={0}
+	Number of columns fetched=1
+	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: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> -- unknown isolation level
+select * from t1 with rw;
+ERROR 42X01: Syntax error: Encountered "rw" at line 2, column 23.
+ij> -- check the db2 isolation levels can be used as identifiers
+create table db2iso(cs int, rr int, ur int, rs int);
+0 rows inserted/updated/deleted
+ij> select cs, rr, ur, rs from db2iso;
+CS         |RR         |UR         |RS         
+-----------------------------------------------
+ij> -- cleanup
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/arithmetic.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/arithmetic.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,645 @@
+ij> --
+-- Test the arithmetic operators
+--
+create table t (i int, j int);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 101);
+1 row inserted/updated/deleted
+ij> insert into t values (-2, -102);
+1 row inserted/updated/deleted
+ij> select i + j from t;
+1          
+-----------
+NULL       
+100        
+102        
+-104       
+ij> select i, i + 10 + 20, j, j + 100 + 200 from t;
+I          |2          |J          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |30         |100        |400        
+1          |31         |101        |401        
+-2         |28         |-102       |198        
+ij> select i - j, j - i from t;
+1          |2          
+-----------------------
+NULL       |NULL       
+-100       |100        
+-100       |100        
+100        |-100       
+ij> select i, i - 10 - 20, 20 - 10 - i, j, j - 100 - 200, 200 - 100 - j from t;
+I          |2          |3          |J          |5          |6          
+-----------------------------------------------------------------------
+NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+0          |-30        |10         |100        |-200       |0          
+1          |-29        |9          |101        |-199       |-1         
+-2         |-32        |12         |-102       |-402       |202        
+ij> select i, j, i * j, j * i from t;
+I          |J          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |0          
+1          |101        |101        |101        
+-2         |-102       |204        |204        
+ij> select i, j, i * 10 * -20, j * 100 * -200 from t;
+I          |J          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |-2000000   
+1          |101        |-200       |-2020000   
+-2         |-102       |400        |2040000    
+ij> -- try unary minus on some expressions
+select -i, -j, -(i * 10 * -20), -(j * 100 * -200) from t;
+1          |2          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |-100       |0          |2000000    
+-1         |-101       |200        |2020000    
+2          |102        |-400       |-2040000   
+ij> -- unary plus doesn't do anything
+select +i, +j, +(+i * +10 * -20), +(+j * +100 * -200) from t;
+1          |2          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |-2000000   
+1          |101        |-200       |-2020000   
+-2         |-102       |400        |2040000    
+ij> -- test null/null, constant/null, null/constant
+select i, j, i / j, 10 / j, j / 10 from t;
+I          |J          |3          |4          |5          
+-----------------------------------------------------------
+NULL       |NULL       |NULL       |NULL       |NULL       
+0          |100        |0          |0          |10         
+1          |101        |0          |0          |10         
+-2         |-102       |0          |0          |-10        
+ij> -- test for divide by 0
+select j / i from t;
+1          
+-----------
+NULL       
+ERROR 22012: Attempt to divide by zero.
+ij> select (j - 1) / (i + 4), 20 / 5 / 4, 20 / 4 / 5 from t;
+1          |2          |3          
+-----------------------------------
+NULL       |1          |1          
+24         |1          |1          
+20         |1          |1          
+-51        |1          |1          
+ij> -- test positive/negative, negative/positive and negative/negative
+select j, j / (0 - j), (0 - j) / j, (0 - j) / (0 - j) from t;
+J          |2          |3          |4          
+-----------------------------------------------
+NULL       |NULL       |NULL       |NULL       
+100        |-1         |-1         |1          
+101        |-1         |-1         |1          
+-102       |-1         |-1         |1          
+ij> -- test some "more complex" expressions
+select i, i + 10, i - (10 - 20), i - 10, i - (20 - 10) from t;
+I          |2          |3          |4          |5          
+-----------------------------------------------------------
+NULL       |NULL       |NULL       |NULL       |NULL       
+0          |10         |10         |-10        |-10        
+1          |11         |11         |-9         |-9         
+-2         |8          |8          |-12        |-12        
+ij> select 'The next 2 columns should agree', 2 + 3 * 4 + 5, 2 + (3 * 4) + 5 from t;
+1                              |2          |3          
+-------------------------------------------------------
+The next 2 columns should agree|19         |19         
+The next 2 columns should agree|19         |19         
+The next 2 columns should agree|19         |19         
+The next 2 columns should agree|19         |19         
+ij> select 'The next column should be 45', (2 + 3) * (4 + 5) from t;
+1                           |2          
+----------------------------------------
+The next column should be 45|45         
+The next column should be 45|45         
+The next column should be 45|45         
+The next column should be 45|45         
+ij> -- test overflow
+delete from t;
+4 rows inserted/updated/deleted
+ij> insert into t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 101);
+1 row inserted/updated/deleted
+ij> select i + 2147483647 from t;
+1          
+-----------
+NULL       
+2147483647 
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select i - 2147483647 - 1, 'This query should work' from t;
+1          |2                     
+----------------------------------
+NULL       |This query should work
+-2147483648|This query should work
+-2147483647|This query should work
+ij> select i - 2147483647 - 2, 'This query should fail' from t;
+1          |2                     
+----------------------------------
+NULL       |This query should fail
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select j * 2147483647 from t;
+1          
+-----------
+NULL       
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select j * -2147483647 from t;
+1          
+-----------
+NULL       
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> insert into t values (-2147483648, 0);
+1 row inserted/updated/deleted
+ij> select -i from t;
+1          
+-----------
+NULL       
+0          
+-1         
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table s (x char(10), y char(10));
+0 rows inserted/updated/deleted
+ij> select x + y from s;
+ERROR 42Y95: The '+' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select x - y from s;
+ERROR 42Y95: The '-' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select x * y from s;
+ERROR 42Y95: The '*' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select x / y from s;
+ERROR 42Y95: The '/' operator with a left operand type of 'CHAR' and a right operand type of 'CHAR' is not supported.
+ij> select -x from s;
+ERROR 42X37: The unary '-' operator is not allowed on the 'CHAR' type.
+ij> -- do the same thing with smallints
+-- except that integer constants are ints!
+create table smallint_t (i smallint, j smallint);
+0 rows inserted/updated/deleted
+ij> create table smallint_s (i smallint, j smallint);
+0 rows inserted/updated/deleted
+ij> insert into smallint_t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into smallint_t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into smallint_t values (1, 101);
+1 row inserted/updated/deleted
+ij> insert into smallint_t values (-2, -102);
+1 row inserted/updated/deleted
+ij> select i + j from smallint_t;
+1     
+------
+NULL  
+100   
+102   
+-104  
+ij> select i, j, i + i + j, j + j + i from smallint_t;
+I     |J     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |100   |100   |200   
+1     |101   |103   |203   
+-2    |-102  |-106  |-206  
+ij> select i - j, j - i from smallint_t;
+1     |2     
+-------------
+NULL  |NULL  
+-100  |100   
+-100  |100   
+100   |-100  
+ij> select i, i - j - j, j - j - i, j, j - i - i, i - i - j from smallint_t;
+I     |2     |3     |J     |5     |6     
+-----------------------------------------
+NULL  |NULL  |NULL  |NULL  |NULL  |NULL  
+0     |-200  |0     |100   |100   |-100  
+1     |-201  |-1    |101   |99    |-101  
+-2    |202   |2     |-102  |-98   |102   
+ij> select i, j, i * j, j * i from smallint_t;
+I     |J     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |100   |0     |0     
+1     |101   |101   |101   
+-2    |-102  |204   |204   
+ij> select i, j, i * i * (i - j), j * i * (i - j) from smallint_t;
+I     |J     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |100   |0     |0     
+1     |101   |-100  |-10100
+-2    |-102  |400   |20400 
+ij> select -i, -j, -(i * i * (i - j)), -(j * i * (i - j)) from smallint_t;
+1     |2     |3     |4     
+---------------------------
+NULL  |NULL  |NULL  |NULL  
+0     |-100  |0     |0     
+-1    |-101  |100   |10100 
+2     |102   |-400  |-20400
+ij> -- test for divide by 0
+select j / i from smallint_t;
+1     
+------
+NULL  
+ERROR 22012: Attempt to divide by zero.
+ij> -- test for overflow
+insert into smallint_s values (1, 32767);
+1 row inserted/updated/deleted
+ij> select i + j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select i - j - j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select j + j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select j * j from smallint_s;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> insert into smallint_s values (-32768, 0);
+1 row inserted/updated/deleted
+ij> select -i from smallint_s;
+1     
+------
+-1    
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- test mixed types: int and smallint
+create table smallint_r (y smallint);
+0 rows inserted/updated/deleted
+ij> insert into smallint_r values (2);
+1 row inserted/updated/deleted
+ij> select 65535 + y from smallint_r;
+1          
+-----------
+65537      
+ij> select y + 65535 from smallint_r;
+1          
+-----------
+65537      
+ij> select 65535 - y from smallint_r;
+1          
+-----------
+65533      
+ij> select y - 65535 from smallint_r;
+1          
+-----------
+-65533     
+ij> select 65535 * y from smallint_r;
+1          
+-----------
+131070     
+ij> select y * 65535 from smallint_r;
+1          
+-----------
+131070     
+ij> select 65535 / y from smallint_r;
+1          
+-----------
+32767      
+ij> select y / 65535 from smallint_r;
+1          
+-----------
+0          
+ij> -- do the same thing with bigints
+create table bigint_t (i bigint, j bigint);
+0 rows inserted/updated/deleted
+ij> create table bigint_s (i bigint, j bigint);
+0 rows inserted/updated/deleted
+ij> insert into bigint_t values (null, null);
+1 row inserted/updated/deleted
+ij> insert into bigint_t values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into bigint_t values (1, 101);
+1 row inserted/updated/deleted
+ij> insert into bigint_t values (-2, -102);
+1 row inserted/updated/deleted
+ij> select i + j from bigint_t;
+1                   
+--------------------
+NULL                
+100                 
+102                 
+-104                
+ij> select i, j, i + i + j, j + j + i from bigint_t;
+I                   |J                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |100                 |100                 |200                 
+1                   |101                 |103                 |203                 
+-2                  |-102                |-106                |-206                
+ij> select i - j, j - i from bigint_t;
+1                   |2                   
+-----------------------------------------
+NULL                |NULL                
+-100                |100                 
+-100                |100                 
+100                 |-100                
+ij> select i, i - j - j, j - j - i, j, j - i - i, i - i - j from bigint_t;
+I                   |2                   |3                   |J                   |5                   |6                   
+-----------------------------------------------------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                |NULL                |NULL                
+0                   |-200                |0                   |100                 |100                 |-100                
+1                   |-201                |-1                  |101                 |99                  |-101                
+-2                  |202                 |2                   |-102                |-98                 |102                 
+ij> select i, j, i * j, j * i from bigint_t;
+I                   |J                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |100                 |0                   |0                   
+1                   |101                 |101                 |101                 
+-2                  |-102                |204                 |204                 
+ij> select i, j, i * i * (i - j), j * i * (i - j) from bigint_t;
+I                   |J                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |100                 |0                   |0                   
+1                   |101                 |-100                |-10100              
+-2                  |-102                |400                 |20400               
+ij> select -i, -j, -(i * i * (i - j)), -(j * i * (i - j)) from bigint_t;
+1                   |2                   |3                   |4                   
+-----------------------------------------------------------------------------------
+NULL                |NULL                |NULL                |NULL                
+0                   |-100                |0                   |0                   
+-1                  |-101                |100                 |10100               
+2                   |102                 |-400                |-20400              
+ij> -- test for divide by 0
+select j / i from bigint_t;
+1                   
+--------------------
+NULL                
+ERROR 22012: Attempt to divide by zero.
+ij> -- test for overflow
+insert into bigint_s values (1, 9223372036854775807);
+1 row inserted/updated/deleted
+ij> select i + j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select i - j - j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select j + j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select j * j from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select 2 * (9223372036854775807 / 2 + 1) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select -2 * (9223372036854775807 / 2 + 2) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select 2 * (-9223372036854775808 / 2 - 1) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select -2 * (-9223372036854775808 / 2 - 1) from bigint_s;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> insert into bigint_s values (-9223372036854775808, 0);
+1 row inserted/updated/deleted
+ij> select -i from bigint_s;
+1                   
+--------------------
+-1                  
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select -j from bigint_s;
+1                   
+--------------------
+-9223372036854775807
+0                   
+ij> select i / 2 * 2 + 1 from bigint_s;
+1                   
+--------------------
+1                   
+-9223372036854775807
+ij> select j / 2 * 2 from bigint_s;
+1                   
+--------------------
+9223372036854775806 
+0                   
+ij> -- test mixed types: int and bigint
+create table bigint_r (y bigint);
+0 rows inserted/updated/deleted
+ij> insert into bigint_r values (2);
+1 row inserted/updated/deleted
+ij> select 2147483647 + y from bigint_r;
+1                   
+--------------------
+2147483649          
+ij> select y + 2147483647 from bigint_r;
+1                   
+--------------------
+2147483649          
+ij> select 2147483647 - y from bigint_r;
+1                   
+--------------------
+2147483645          
+ij> select y - 2147483647 from bigint_r;
+1                   
+--------------------
+-2147483645         
+ij> select 2147483647 * y from bigint_r;
+1                   
+--------------------
+4294967294          
+ij> select y * 2147483647 from bigint_r;
+1                   
+--------------------
+4294967294          
+ij> select 2147483647 / y from bigint_r;
+1                   
+--------------------
+1073741823          
+ij> select y / 2147483647 from bigint_r;
+1                   
+--------------------
+0                   
+ij> -- test precedence and associativity
+create table r (x int);
+0 rows inserted/updated/deleted
+ij> insert into r values (1);
+1 row inserted/updated/deleted
+ij> select 2 + 3 * 4 from r;
+1          
+-----------
+14         
+ij> select (2 + 3) * 4 from r;
+1          
+-----------
+20         
+ij> select 3 * 4 + 2 from r;
+1          
+-----------
+14         
+ij> select 3 * (4 + 2) from r;
+1          
+-----------
+18         
+ij> select 2 - 3 * 4 from r;
+1          
+-----------
+-10        
+ij> select (2 - 3) * 4 from r;
+1          
+-----------
+-4         
+ij> select 3 * 4 - 2 from r;
+1          
+-----------
+10         
+ij> select 3 * (4 - 2) from r;
+1          
+-----------
+6          
+ij> select 4 + 3 / 2 from r;
+1          
+-----------
+5          
+ij> select (4 + 3) / 2 from r;
+1          
+-----------
+3          
+ij> select 3 / 2 + 4 from r;
+1          
+-----------
+5          
+ij> select 3 / (2 + 4) from r;
+1          
+-----------
+0          
+ij> select 4 - 3 / 2 from r;
+1          
+-----------
+3          
+ij> select (4 - 3) / 2 from r;
+1          
+-----------
+0          
+ij> -- + and - are of equal precedence, so they should be evaluated left to right
+-- The result is the same regardless of order of evaluation, so test it
+-- by causing an overflow.  The first test should get an overflow, and the
+-- second one shouldn't.
+select 1 + 2147483647 - 2 from r;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select 1 + (2147483647 - 2) from r;
+1          
+-----------
+2147483646 
+ij> select 4 * 3 / 2 from r;
+1          
+-----------
+6          
+ij> select 4 * (3 / 2) from r;
+1          
+-----------
+4          
+ij> -- Test associativity of unary - versus the binary operators
+select -1 + 2 from r;
+1          
+-----------
+1          
+ij> select -(1 + 2) from r;
+1          
+-----------
+-3         
+ij> select -1 - 2 from r;
+1          
+-----------
+-3         
+ij> select -(1 - 2) from r;
+1          
+-----------
+1          
+ij> -- The test the associativity of unary - with respect to binary *, we must
+-- use a trick.  The value -1073741824 is the minimum integer divided by 2.
+-- So, 1073741824 * 2 will overflow, but (-1073741824) * 2 will not (because
+-- of two's complement arithmetic.
+select -1073741824 * 2 from r;
+1          
+-----------
+-2147483648
+ij> select -(1073741824 * 2) from r;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- This should not get an overflow
+select -2147483648 / 2 from r;
+1          
+-----------
+-1073741824
+ij> -- arithmetic on a numeric data type
+create table u (c1 int, c2 char(10));
+0 rows inserted/updated/deleted
+ij> insert into u (c2) values 'asdf';
+1 row inserted/updated/deleted
+ij> insert into u (c1) values null;
+1 row inserted/updated/deleted
+ij> insert into u (c1) values 1;
+1 row inserted/updated/deleted
+ij> insert into u (c1) values null;
+1 row inserted/updated/deleted
+ij> insert into u (c1) values 2;
+1 row inserted/updated/deleted
+ij> select c1 + c1 from u;
+1          
+-----------
+NULL       
+NULL       
+2          
+NULL       
+4          
+ij> select c1 / c1 from u;
+1          
+-----------
+NULL       
+NULL       
+1          
+NULL       
+1          
+ij> -- arithmetic between a numeric and a string data type fails
+select c1 + c2 from u;
+1          
+-----------
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> -- clean up after ourselves
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> drop table r;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> drop table smallint_t;
+0 rows inserted/updated/deleted
+ij> drop table smallint_s;
+0 rows inserted/updated/deleted
+ij> drop table smallint_r;
+0 rows inserted/updated/deleted
+ij> drop table bigint_t;
+0 rows inserted/updated/deleted
+ij> drop table bigint_s;
+0 rows inserted/updated/deleted
+ij> drop table bigint_r;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/distinct.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/distinct.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2482 @@
+ij> --
+-- tests for DISTINCT
+--
+-- these tests assume: no indexes, no order by, no grouping
+--
+-- test plan is represented by '.' items in comments. 
+-- the flavors of select are shown in distinct.subsql, which is
+-- run over a variety of data configurations.
+-- this file expects to be run from a directory under $WS/systest.
+-- speed up a fraction with autocommit off...
+autocommit off;
+ij> create table t (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+0 rows inserted/updated/deleted
+ij> -- data flavor:
+-- . no data at all (filtered out or just plain empty)
+run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+ij> select distinct s from t;
+S     
+------
+ij> select distinct r from t;
+R            
+-------------
+ij> select distinct f from t;
+F                     
+----------------------
+ij> select distinct d from t;
+D         
+----------
+ij> select distinct t from t;
+T       
+--------
+ij> select distinct ts from t;
+TS                        
+--------------------------
+ij> select distinct c from t;
+C         
+----------
+ij> select distinct v from t;
+V                   
+--------------------
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . 1 row
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . all rows the same
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+ij> select distinct s from t;
+S     
+------
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |2     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |2     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . variety of rows, some same and some different
+insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+2          
+ij> select distinct s from t;
+S     
+------
+1     
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+4.0          
+ij> select distinct f from t;
+F                     
+----------------------
+3.0                   
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |2     
+2          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |2     
+2          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+2          
+1          
+2          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+2          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . variety of rows, all different
+delete from t;
+3 rows inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+2          
+ij> select distinct s from t;
+S     
+------
+1     
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+4.0          
+ij> select distinct f from t;
+F                     
+----------------------
+3.0                   
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ERROR 22007: The syntax of the string representation of a datetime value is incorrect.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+2          |1     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+2          
+1          
+2          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+2          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|2          |1     |3.0                   |1992-01-01
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . variety of rows, some same in some columns but not others
+delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, 3, 4, '1992-01-02', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'goodbye', 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+1          
+ij> select distinct s from t;
+S     
+------
+1     
+2     
+ij> select distinct r from t;
+R            
+-------------
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+1992-01-01
+1992-01-02
+ij> select distinct t from t;
+T       
+--------
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+hello     
+goodbye   
+ij> select distinct v from t;
+V                   
+--------------------
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+1          
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . just nulls
+delete from t;
+2 rows inserted/updated/deleted
+ij> -- all the defaults are null, so just get a row in easily
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+NULL       
+ij> select distinct s from t;
+S     
+------
+NULL  
+ij> select distinct r from t;
+R            
+-------------
+NULL         
+ij> select distinct f from t;
+F                     
+----------------------
+NULL                  
+ij> select distinct d from t;
+D         
+----------
+NULL      
+ij> select distinct t from t;
+T       
+--------
+NULL    
+ij> select distinct ts from t;
+TS                        
+--------------------------
+NULL                      
+ij> select distinct c from t;
+C         
+----------
+NULL      
+ij> select distinct v from t;
+V                   
+--------------------
+NULL                
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from t where v < (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+NULL       
+NULL       
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . 1 null in the mix
+delete from t;
+2 rows inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, 3, 4, '1992-01-02', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'goodbye', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+NULL       
+1          
+ij> select distinct s from t;
+S     
+------
+NULL  
+1     
+2     
+ij> select distinct r from t;
+R            
+-------------
+NULL         
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+NULL                  
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+NULL      
+1992-01-01
+1992-01-02
+ij> select distinct t from t;
+T       
+--------
+NULL    
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+NULL                      
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+NULL      
+hello     
+goodbye   
+ij> select distinct v from t;
+V                   
+--------------------
+NULL                
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+NULL       
+1          
+NULL       
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . several nulls in the mix
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+NULL       
+1          
+ij> select distinct s from t;
+S     
+------
+NULL  
+1     
+2     
+ij> select distinct r from t;
+R            
+-------------
+NULL         
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+NULL                  
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+NULL      
+1992-01-01
+1992-01-02
+ij> select distinct t from t;
+T       
+--------
+NULL    
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+NULL                      
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+NULL      
+hello     
+goodbye   
+ij> select distinct v from t;
+V                   
+--------------------
+NULL                
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL         |NULL                  |NULL      |NULL    |NULL                      |NULL      |NULL                |NULL                      
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+NULL       
+1          
+NULL       
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+NULL    |NULL       |NULL  |NULL                  |NULL      
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> -- . nulls in some columns, not others
+delete from t where i is null;
+3 rows inserted/updated/deleted
+ij> insert into t values (null, 1, null, 4, null, '19:01:01',
+null, 'goodbye', null);
+1 row inserted/updated/deleted
+ij> insert into t values (1, null, 3, null, '1992-01-02', null,
+'xxxxxxFILTERED-TIMESTAMPxxxxx', null, 'planet');
+1 row inserted/updated/deleted
+ij> run resource 'distinct.subsql';
+ij> --
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+I          
+-----------
+NULL       
+1          
+ij> select distinct s from t;
+S     
+------
+NULL  
+1     
+2     
+ij> select distinct r from t;
+R            
+-------------
+NULL         
+3.0          
+ij> select distinct f from t;
+F                     
+----------------------
+NULL                  
+4.0                   
+ij> select distinct d from t;
+D         
+----------
+NULL      
+1992-01-01
+1992-01-02
+ij> select distinct t from t;
+T       
+--------
+NULL    
+19:01:01
+ij> select distinct ts from t;
+TS                        
+--------------------------
+NULL                      
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select distinct c from t;
+C         
+----------
+NULL      
+hello     
+goodbye   
+ij> select distinct v from t;
+V                   
+--------------------
+NULL                
+planet              
+ij> -- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+T       |I          |S     |F                     |D         
+-------------------------------------------------------------
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select distinct t.*,ts from t;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TS                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                |NULL                      
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where exists (select distinct * from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where not exists (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where s not in (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a quantified subquery
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> -- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+ij> select * from t where d >=any (select distinct d from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from t where t <=all (select distinct t from t);
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+ij> -- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from t where v < (select distinct d from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select * from (select distinct * from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> select * from (select distinct t.*,ts as tts from t) as s;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL       |1     |NULL         |4.0                   |NULL      |19:01:01|NULL                      |goodbye   |NULL                |NULL                      
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> -- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |TTS                       |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |xxxxxxFILTERED-TIMESTAMPxxxxx|1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> -- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> -- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+I          |S     
+------------------
+1          |2     
+1          |1     
+ij> select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+I          |S     
+------------------
+1          |1     
+1          |2     
+ij> -- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+I          
+-----------
+NULL       
+1          
+NULL       
+1          
+ij> -- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+I          
+-----------
+1          
+NULL       
+ij> -- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+A       |B          |C     |D                     |E         
+-------------------------------------------------------------
+19:01:01|NULL       |1     |4.0                   |NULL      
+NULL    |1          |NULL  |NULL                  |1992-01-02
+19:01:01|1          |1     |4.0                   |1992-01-02
+19:01:01|1          |2     |4.0                   |1992-01-01
+ij> -- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   |I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |1     |3.0          |4.0                   |1992-01-02|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|goodbye   |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              |1          |NULL  |3.0          |NULL                  |1992-01-02|NULL    |xxxxxxFILTERED-TIMESTAMPxxxxx|NULL      |planet              
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- sure would like to dump all those selects now...they are invalid, at least,
+-- maybe that frees up some space (FLW)
+-- here are other things to test:
+-- . select distinct over a values table
+-- three rows
+select distinct * from (values (1,2),(1,3),(1,2),(2,3)) as t(a,b);
+A          |B          
+-----------------------
+1          |2          
+1          |3          
+2          |3          
+ij> -- two rows
+select distinct a from (values (1,2),(1,3),(1,2),(2,3)) as t(a,b);
+A          
+-----------
+1          
+2          
+ij> -- . show that distinct is a keyword, not a column name
+select distinct from t;
+ERROR 42X01: Syntax error: Encountered "from" at line 2, column 17.
+ij> rollback;
+ij> -- . usertypes
+-- To test usertypes in a way that works with weblogic, we
+-- pick one we can construct with other functionality available to us
+-- (UUID won't work)
+-- At the time these tests were written, user type comparisons
+-- were not supported.
+create table userInt (u integer);
+0 rows inserted/updated/deleted
+ij> insert into userInt values (123);
+1 row inserted/updated/deleted
+ij> insert into userInt values (123);
+1 row inserted/updated/deleted
+ij> insert into userInt values (456);
+1 row inserted/updated/deleted
+ij> insert into userInt values (null);
+1 row inserted/updated/deleted
+ij> create table sqlInt (i int not null);
+0 rows inserted/updated/deleted
+ij> insert into sqlInt values(123);
+1 row inserted/updated/deleted
+ij> -- expect two rows, 123 and 456
+select distinct u from userInt where u is not null;
+U          
+-----------
+123        
+456        
+ij> -- two rows, 123 and 456
+select u from userInt where u is not null;
+U          
+-----------
+123        
+123        
+456        
+ij> -- multiple rows in subquery get correct complaint
+select distinct i 
+from sqlInt 
+where i = (select distinct u from userInt);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> drop table userInt;
+0 rows inserted/updated/deleted
+ij> drop table sqlInt;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- . varchar blank padding is ignored, length will vary depending on row selected
+create table v (v varchar(40));
+0 rows inserted/updated/deleted
+ij> insert into v values ('hello');
+1 row inserted/updated/deleted
+ij> insert into v values ('hello   ');
+1 row inserted/updated/deleted
+ij> insert into v values ('hello      ');
+1 row inserted/updated/deleted
+ij> -- the |'s are just for visual demarcation
+select distinct '|' as "|", v, '|' as "|" from v;
+||V                                       ||
+--------------------------------------------
+||hello                                   ||
+ij> select {fn length(c)} from (select distinct v from v) as t(c);
+1          
+-----------
+5          
+ij> drop table v;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- distinct bigint
+create table li (l bigint, i int);
+0 rows inserted/updated/deleted
+ij> insert into li values(1, 1);
+1 row inserted/updated/deleted
+ij> insert into li values(1, 1);
+1 row inserted/updated/deleted
+ij> insert into li values(9223372036854775807, 
+					  2147483647);
+1 row inserted/updated/deleted
+ij> select distinct l from li;
+L                   
+--------------------
+9223372036854775807 
+1                   
+ij> (select distinct l from li) union all (select distinct i from li) order by 1;
+1                   
+--------------------
+1                   
+1                   
+2147483647          
+9223372036854775807 
+ij> select distinct l from li union select distinct i from li;
+1                   
+--------------------
+1                   
+2147483647          
+9223372036854775807 
+ij> select distinct l 
+from (select l from li union all select i from li) a(l);
+L                   
+--------------------
+1                   
+2147483647          
+9223372036854775807 
+ij> drop table li;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> autocommit off;
+ij> -- was off above, ensure it stayed off for this part of test
+create table u (d date);
+0 rows inserted/updated/deleted
+ij> -- three rows
+insert into u values ('1997-09-09'),('1997-09-09');
+2 rows inserted/updated/deleted
+ij> insert into u values (null);
+1 row inserted/updated/deleted
+ij> -- . nexting past the last row of a distinct
+get cursor past as 'select distinct d from u';
+ij> next past;
+D         
+----------
+NULL      
+ij> next past;
+D         
+----------
+1997-09-09
+ij> -- should report no current row:
+next past;
+No current row
+ij> next past;
+No current row
+ij> close past;
+ij> -- . for update on a select distinct
+-- both should get errors, not updatable.
+select distinct d from u for update;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> select distinct d from u for update of d;
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- . positioned update/delete on a select distinct
+get cursor c1 as 'select distinct d from u';
+ij> next c1;
+D         
+----------
+NULL      
+ij> -- both should fail with cursor not updatable
+update u set d='1992-01-01' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> delete from u where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> close c1;
+ij> get cursor c1 as 'select distinct d from u';
+ij> -- both should fail with cursor not updatable (not no current row)
+update u set d='1992-01-01' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> delete from u where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> next c1;
+D         
+----------
+NULL      
+ij> next c1;
+D         
+----------
+1997-09-09
+ij> next c1;
+No current row
+ij> next c1;
+No current row
+ij> -- both should fail with cursor not updatable, or cursor closed/does not exist
+update u set d='1992-01-01' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> delete from u where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> close c1;
+ij> get cursor c1 as 'select distinct d from u';
+ij> close c1;
+ij> -- both should fail with cursor not updatable, or cursor closed/does not exist
+update u set d='1992-01-01' where current of c1;
+ERROR 42X30: Cursor 'C1' not found. Verify that autocommit is OFF.
+ij> delete from u where current of c1;
+ERROR 42X30: Cursor 'C1' not found. Verify that autocommit is OFF.
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- insert tests
+create table t (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+0 rows inserted/updated/deleted
+ij> create table insert_test (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'xxxxxxFILTERED-TIMESTAMPxxxxx', 'hello', 'planet');
+1 row inserted/updated/deleted
+ij> insert into insert_test select distinct * from t;
+2 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> delete from insert_test;
+2 rows inserted/updated/deleted
+ij> insert into insert_test select distinct * from t union select * from t;
+2 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |R            |F                     |D         |T       |TS                        |C         |V                   
+--------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |3.0          |4.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+2          |1     |4.0          |3.0                   |1992-01-01|19:01:01|xxxxxxFILTERED-TIMESTAMPxxxxx|hello     |planet              
+ij> delete from insert_test;
+2 rows inserted/updated/deleted
+ij> rollback;
+ij> -- for bug 4194, "insert into select distinct" into a table with a generated column
+create table destWithAI(c11 int generated always as identity, c12 int);
+0 rows inserted/updated/deleted
+ij> alter table destWithAI alter c11 set increment by 1;
+0 rows inserted/updated/deleted
+ij> create table destWithNoAI(c21 int, c22 int);
+0 rows inserted/updated/deleted
+ij> create table source(c31 int, c32 int, c33 int);
+0 rows inserted/updated/deleted
+ij> insert into source values(1,1,1);
+1 row inserted/updated/deleted
+ij> insert into source values(1,2,1);
+1 row inserted/updated/deleted
+ij> insert into source values(2,1,1);
+1 row inserted/updated/deleted
+ij> insert into source values(2,2,1);
+1 row inserted/updated/deleted
+ij> select distinct(c31) from source;
+C31        
+-----------
+1          
+2          
+ij> insert into destWithAI(c12) select distinct(c31) from source;
+2 rows inserted/updated/deleted
+ij> -- we will see gaps in the autoincrement column for all the duplicate rows from source
+select * from destWithAI;
+C11        |C12        
+-----------------------
+1          |1          
+3          |2          
+ij> insert into destWithNoAI(c22) select distinct(c31) from source;
+2 rows inserted/updated/deleted
+ij> select * from destWithNoAI;
+C21        |C22        
+-----------------------
+NULL       |1          
+NULL       |2          
+ij> -- test for beetle 4402
+-- problem with check that a  result set is in order since it is retrieved using
+-- an index
+CREATE TABLE netbutton1 (
+  lname                 varchar(128) not null,
+  name                  varchar(128),
+  summary               varchar(256),
+  lsummary              varchar(256),
+  description           varchar(2000),
+  ldescription          varchar(2000),
+  publisher_username    varchar(256),
+  publisher_lusername   varchar(256),
+  version               varchar(16),
+  source                
+ long varchar for bit data, 
+  updated               
+ timestamp, 
+  created               
+ timestamp DEFAULT current_timestamp,
+	primary key (lname)) 
+;
+0 rows inserted/updated/deleted
+ij> insert into netbutton1 values('lname1','name1','sum2','lsum1', 'des1','ldes1','pubu1', 'publu1', 'ver1', null, current_timestamp, default);
+1 row inserted/updated/deleted
+ij> insert into netbutton1 values('lname2','name2','sum2','lsum2', 'des2','ldes2','pubu2', 'publu2', 'ver2', null, current_timestamp, default);
+1 row inserted/updated/deleted
+ij> CREATE TABLE library_netbutton (
+  netbuttonlibrary_id   
+ int not null, 
+  lname         varchar(128) not null,
+	primary key (netbuttonlibrary_id, lname))
+;
+0 rows inserted/updated/deleted
+ij> insert into library_netbutton values(1, 'lname1');
+1 row inserted/updated/deleted
+ij> insert into library_netbutton values(2, 'lname2');
+1 row inserted/updated/deleted
+ij> -- this is the index which causes the bug to be exposed
+create unique index ln_library_id on library_netbutton(netbuttonlibrary_id);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE library_netbutton
+ADD CONSTRAINT ln_lname_fk
+FOREIGN KEY (lname) REFERENCES netbutton1(lname)
+;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE netbuttonlibraryrole1 (
+  lusername             varchar(512) not null,
+  netbuttonlibrary_id   
+ int not null, 
+  username              varchar(512),
+  role                  varchar(24),
+  created               
+ timestamp DEFAULT current_timestamp,
+	primary key (lusername, netbuttonlibrary_id)) 
+;
+0 rows inserted/updated/deleted
+ij> insert into netbuttonlibraryrole1 values('lusername1', 1,'user1', 'role1', default);
+1 row inserted/updated/deleted
+ij> insert into netbuttonlibraryrole1 values('lusername2', 2,'user2', 'role2', default);
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> prepare c1 as 'SELECT DISTINCT nb.name AS name, nb.summary AS summary
+               FROM netbutton1 nb, netbuttonlibraryrole1 nlr,
+                    library_netbutton ln
+              WHERE nlr.netbuttonlibrary_id = ln.netbuttonlibrary_id
+                AND nb.lname = ln.lname
+                AND (   nlr.lusername = ?
+                     OR nlr.lusername = ?)
+                AND nb.lname = ?
+           ORDER BY summary';
+ij> execute c1 using 'values(''lusername1'', ''lusername2'', ''lname1'')';
+NAME                                                                                                                            |SUMMARY                                                                                                                         
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+name1                                                                                                                           |sum2                                                                                                                            
+ij> rollback;
+ij> -- reset autocomiit
+autocommit on;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/ejbql.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/ejbql.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4324 @@
+ij> -- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABS/ABSVAL test.  For all valid types, un-escaped function.
+-- Integer has a range of -2147483648 to 2147483647
+-- Basic
+create table myint( a int );
+0 rows inserted/updated/deleted
+ij> create table myinteger( a integer );
+0 rows inserted/updated/deleted
+ij> select abs(a) from myint;
+1          
+-----------
+ij> select abs(a) from myinteger;
+1          
+-----------
+ij> insert into myint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (2147483647), (-2147483647);
+10 rows inserted/updated/deleted
+ij> insert into myinteger values (NULL), (+0), (-0), (+1), (-1), (1000), (-1000), (NULL), (2147483647), (-2147483647);
+10 rows inserted/updated/deleted
+ij> select a from myint;
+A          
+-----------
+NULL       
+0          
+0          
+1          
+-1         
+1000       
+-1000      
+NULL       
+2147483647 
+-2147483647
+ij> select a from myinteger;
+A          
+-----------
+NULL       
+0          
+0          
+1          
+-1         
+1000       
+-1000      
+NULL       
+2147483647 
+-2147483647
+ij> select abs(a) from myint;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> select abs(a) from myinteger;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> select -abs(a) from myint;
+1          
+-----------
+NULL       
+0          
+0          
+-1         
+-1         
+-1000      
+-1000      
+NULL       
+-2147483647
+-2147483647
+ij> select -abs(a) from myinteger;
+1          
+-----------
+NULL       
+0          
+0          
+-1         
+-1         
+-1000      
+-1000      
+NULL       
+-2147483647
+-2147483647
+ij> select abs(abs(-abs(-abs(a)))) from myint;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> select abs(abs(-abs(-abs(a)))) from myinteger;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYINT;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYINTEGER;
+1          
+-----------
+NULL       
+0          
+0          
+1          
+1          
+1000       
+1000       
+NULL       
+2147483647 
+2147483647 
+ij> insert into myint values (-2147483648);
+1 row inserted/updated/deleted
+ij> insert into myinteger values (-2147483648);
+1 row inserted/updated/deleted
+ij> select a from myint where a=-2147483648;
+A          
+-----------
+-2147483648
+ij> select a from myinteger where a=-2147483648;
+A          
+-----------
+-2147483648
+ij> -- Error
+select -a from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select -a from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-a) from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-a) from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(a) from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(a) from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-abs(a)) from myint where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select abs(-abs(a)) from myinteger where a=-2147483648;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> drop table myint;
+0 rows inserted/updated/deleted
+ij> drop table myinteger;
+0 rows inserted/updated/deleted
+ij> -- End of Integer test
+-- Smallint has a range of -32768 to 32767
+-- Basic
+create table mysmallint( a smallint );
+0 rows inserted/updated/deleted
+ij> select abs(a) from mysmallint;
+1     
+------
+ij> insert into mysmallint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (32767), (-32767);
+10 rows inserted/updated/deleted
+ij> select a from mysmallint;
+A     
+------
+NULL  
+0     
+0     
+1     
+-1    
+1000  
+-1000 
+NULL  
+32767 
+-32767
+ij> select abs(a) from mysmallint;
+1     
+------
+NULL  
+0     
+0     
+1     
+1     
+1000  
+1000  
+NULL  
+32767 
+32767 
+ij> select -abs(a) from mysmallint;
+1     
+------
+NULL  
+0     
+0     
+-1    
+-1    
+-1000 
+-1000 
+NULL  
+-32767
+-32767
+ij> select abs(abs(-abs(-abs(a)))) from mysmallint;
+1     
+------
+NULL  
+0     
+0     
+1     
+1     
+1000  
+1000  
+NULL  
+32767 
+32767 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYSMALLINT;
+1     
+------
+NULL  
+0     
+0     
+1     
+1     
+1000  
+1000  
+NULL  
+32767 
+32767 
+ij> insert into mysmallint values (-32768);
+1 row inserted/updated/deleted
+ij> select a from mysmallint where a=-32768;
+A     
+------
+-32768
+ij> -- Error
+select -a from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select abs(-a) from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select abs(a) from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select abs(-abs(a)) from mysmallint where a=-32768;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> drop table mysmallint;
+0 rows inserted/updated/deleted
+ij> -- End of Smallint test
+-- Bigint has a range of -9223372036854775808 to 9223372036854775807
+-- Basic
+create table mybigint( a bigint );
+0 rows inserted/updated/deleted
+ij> select abs(a) from mybigint;
+1                   
+--------------------
+ij> insert into mybigint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (9223372036854775807), (-9223372036854775807);
+10 rows inserted/updated/deleted
+ij> select a from mybigint;
+A                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+-1                  
+1000                
+-1000               
+NULL                
+9223372036854775807 
+-9223372036854775807
+ij> select abs(a) from mybigint;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+1                   
+1000                
+1000                
+NULL                
+9223372036854775807 
+9223372036854775807 
+ij> select -abs(a) from mybigint;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+-1                  
+-1                  
+-1000               
+-1000               
+NULL                
+-9223372036854775807
+-9223372036854775807
+ij> select abs(abs(-abs(-abs(a)))) from mybigint;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+1                   
+1000                
+1000                
+NULL                
+9223372036854775807 
+9223372036854775807 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYBIGINT;
+1                   
+--------------------
+NULL                
+0                   
+0                   
+1                   
+1                   
+1000                
+1000                
+NULL                
+9223372036854775807 
+9223372036854775807 
+ij> insert into mybigint values (-9223372036854775808);
+1 row inserted/updated/deleted
+ij> select a from mybigint where a=-9223372036854775808;
+A                   
+--------------------
+-9223372036854775808
+ij> -- Error
+select -a from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select abs(-a) from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select abs(a) from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select abs(-abs(a)) from mybigint where a=-9223372036854775808;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> drop table mybigint;
+0 rows inserted/updated/deleted
+ij> -- End of Bigint test
+-- REAL has a range of +/-1.175E-37 to +/-3.402E+38 
+-- Basic
+create table myreal( a real );
+0 rows inserted/updated/deleted
+ij> select abs(a) from myreal;
+1            
+-------------
+ij> insert into myreal values (null), (+0), (-0), (+1), (-1), (null), (100000000), (-100000000),
+(3.402E+38), (-3.402E+38),
+(1.175E-37), (-1.175E-37);
+12 rows inserted/updated/deleted
+ij> select a from myreal;
+A            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+-1.0         
+NULL         
+1.0E8        
+-1.0E8       
+3.402E38     
+-3.402E38    
+1.175E-37    
+-1.175E-37   
+ij> select -a from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+-1.0         
+1.0          
+NULL         
+-1.0E8       
+1.0E8        
+-3.402E38    
+3.402E38     
+-1.175E-37   
+1.175E-37    
+ij> select abs(a) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> select abs(-a) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> select -abs(a) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+-1.0         
+-1.0         
+NULL         
+-1.0E8       
+-1.0E8       
+-3.402E38    
+-3.402E38    
+-1.175E-37   
+-1.175E-37   
+ij> select abs(abs(-abs(-abs(a)))) from myreal;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYREAL;
+1            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+1.0          
+NULL         
+1.0E8        
+1.0E8        
+3.402E38     
+3.402E38     
+1.175E-37    
+1.175E-37    
+ij> select distinct abs(a) from myreal;
+1            
+-------------
+0.0          
+1.175E-37    
+1.0          
+1.0E8        
+3.402E38     
+NULL         
+ij> ---- There is nothing wrong with returning 1.0.  The float overflows and this is just the way it behaves.
+-- this used to work on CS, not any more when adopted to DB2 style floats
+-- since contant numbers are (parsed as) doubles
+select abs(-abs(a)) + 1 from myreal where a=1.175E-37;
+1            
+-------------
+ij> -- when casted to a real, it is found
+select abs(-abs(a)) + 1 from myreal where a=cast(1.175E-37 as real);
+1            
+-------------
+1.0          
+ij> -- Error
+insert into myreal values ( 3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into myreal values (-3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> drop table myreal;
+0 rows inserted/updated/deleted
+ij> -- End of Real test
+-- Double Precision has a range of +/-2.225E-307 to +/-1.79769E+308 
+-- Basic
+create table mydoubleprecision( a double precision );
+0 rows inserted/updated/deleted
+ij> select abs(a) from mydoubleprecision;
+1                     
+----------------------
+ij> insert into mydoubleprecision values (null), (+0), (-0), (+1), (-1), (100000000), (-100000000), (null),
+(1.79769E+308), (-1.79769E+308),
+(2.225E-307), (-2.225E-307);
+12 rows inserted/updated/deleted
+ij> select a from mydoubleprecision;
+A                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+-1.0                  
+1.0E8                 
+-1.0E8                
+NULL                  
+1.79769E308           
+-1.79769E308          
+2.225E-307            
+-2.225E-307           
+ij> select -a from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+1.0                   
+-1.0E8                
+1.0E8                 
+NULL                  
+-1.79769E308          
+1.79769E308           
+-2.225E-307           
+2.225E-307            
+ij> select abs(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> select abs(-a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> select -abs(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+-1.0                  
+-1.0E8                
+-1.0E8                
+NULL                  
+-1.79769E308          
+-1.79769E308          
+-2.225E-307           
+-2.225E-307           
+ij> select abs(abs(-abs(-abs(a)))) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYDOUBLEPRECISION;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0                   
+1.0E8                 
+1.0E8                 
+NULL                  
+1.79769E308           
+1.79769E308           
+2.225E-307            
+2.225E-307            
+ij> select distinct abs(a) from mydoubleprecision;
+1                     
+----------------------
+0.0                   
+2.225E-307            
+1.0                   
+1.0E8                 
+1.79769E308           
+NULL                  
+ij> -- There is nothing wrong with returning 1.0.  The double overflows and this is just the way it behaves.
+select abs(-abs(a)) + 1 from mydoubleprecision where a=2.225E-307;
+1                     
+----------------------
+1.0                   
+ij> -- Error
+insert into mydoubleprecision values ( 1.79769E+308 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into mydoubleprecision values (-1.79769E+308 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> drop table mydoubleprecision;
+0 rows inserted/updated/deleted
+ij> -- End of Double Precision test
+-- Float has a the range or a REAL or DOUBLE depending on
+-- the precision you specify.  Below a is a double, b is a float
+create table myfloat( a float, b float(23) );
+0 rows inserted/updated/deleted
+ij> select abs(a), abs(b) from myfloat;
+1                     |2            
+------------------------------------
+ij> select columnname, columndatatype
+from sys.syscolumns c, sys.systables t where c.referenceid = t.tableid and t.tablename='MYFLOAT';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+A                                                                                                                               |DOUBLE         
+B                                                                                                                               |REAL           
+ij> insert into myfloat values (null, null), (+0, +0), (-0, -0), (+1, +1), (-1, -1),
+(100000000, 100000000), (-100000000, -100000000), (null, null),
+(1.79769E+308, 3.402E+38),
+(-1.79769E+308, -3.402E+38),
+(2.225E-307, 1.175E-37),
+(-2.225E-307, -1.175E-37);
+12 rows inserted/updated/deleted
+ij> select a, b from myfloat;
+A                     |B            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+-1.0                  |-1.0         
+1.0E8                 |1.0E8        
+-1.0E8                |-1.0E8       
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+-1.79769E308          |-3.402E38    
+2.225E-307            |1.175E-37    
+-2.225E-307           |-1.175E-37   
+ij> select -a, -b from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+-1.0                  |-1.0         
+1.0                   |1.0          
+-1.0E8                |-1.0E8       
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+-1.79769E308          |-3.402E38    
+1.79769E308           |3.402E38     
+-2.225E-307           |-1.175E-37   
+2.225E-307            |1.175E-37    
+ij> select abs(a), abs(b) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> select abs(-a), abs(-b) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> select -abs(a), -abs(b) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+-1.0                  |-1.0         
+-1.0                  |-1.0         
+-1.0E8                |-1.0E8       
+-1.0E8                |-1.0E8       
+NULL                  |NULL         
+-1.79769E308          |-3.402E38    
+-1.79769E308          |-3.402E38    
+-2.225E-307           |-1.175E-37   
+-2.225E-307           |-1.175E-37   
+ij> select abs(abs(-abs(-abs(a)))), abs(abs(-abs(-abs(b)))) from myfloat;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))), ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(B)))) FROM MYFLOAT;
+1                     |2            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+2.225E-307            |1.175E-37    
+ij> select distinct abs(a) from myfloat;
+1                     
+----------------------
+0.0                   
+2.225E-307            
+1.0                   
+1.0E8                 
+1.79769E308           
+NULL                  
+ij> -- -- There is nothing wrong with returning 1.0.  The float overflows and this is just the way it behaves.
+-- this used to work in CS, but no more, = on floating point values isn't really useful
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307 AND b=1.175E-37;
+1                     |2            
+------------------------------------
+ij> select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where b=3.402E+38;
+1                     |2            
+------------------------------------
+ij> -- 'real =' works on DB2 and DB2 Cloudscape
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where b=cast(3.402E+38 as real);
+1                     |2            
+------------------------------------
+1.79769E308           |3.402E38     
+ij> select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307 AND b=cast(1.175E-37 as real);
+1                     |2            
+------------------------------------
+1.0                   |1.0          
+ij> select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307;
+1                     |2            
+------------------------------------
+1.0                   |1.0          
+ij> -- Error
+insert into myfloat values ( 1.79769E+308 *2, 3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into myfloat values (-1.79769E+308 *2, -3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into myfloat values ( 2.225E-307, 3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into myfloat values (-2.225E-307, -3.402E+38 *2);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> drop table myfloat;
+0 rows inserted/updated/deleted
+ij> -- End of Float test
+-- Decimal is java.math.BigDecimal
+-- Basic
+create table myDecimal( a decimal(31, 0), b decimal(31,31));
+0 rows inserted/updated/deleted
+ij> select abs(a) from myDecimal;
+1                               
+--------------------------------
+ij> insert into myDecimal values (null,0), (+0,0), (-0,0), (+1,0), (-1,0), 
+(100000000,.10000000), (-100000000,-.10000000), (null,null), 
+(1.0e30, 1.0e-30), 
+(-1.0e30, -1.0e-30);
+10 rows inserted/updated/deleted
+ij> select a from myDecimal;
+A                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+-1                              
+100000000                       
+-100000000                      
+NULL                            
+1000000000000000000000000000000 
+-1000000000000000000000000000000
+ij> select -a from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+-1                              
+1                               
+-100000000                      
+100000000                       
+NULL                            
+-1000000000000000000000000000000
+1000000000000000000000000000000 
+ij> select b from myDecimal;
+B                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000000000000000000 
+-0.1000000000000000000000000000000
+NULL                              
+0.0000000000000000000000000000010 
+-0.0000000000000000000000000000010
+ij> select -b from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+-0.1000000000000000000000000000000
+0.1000000000000000000000000000000 
+NULL                              
+-0.0000000000000000000000000000010
+0.0000000000000000000000000000010 
+ij> select abs(a) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000000000000000000 
+1000000000000000000000000000000 
+ij> select abs(-a) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000000000000000000 
+1000000000000000000000000000000 
+ij> select -abs(a) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+-1                              
+-1                              
+-100000000                      
+-100000000                      
+NULL                            
+-1000000000000000000000000000000
+-1000000000000000000000000000000
+ij> select abs(abs(-abs(-abs(a)))) from myDecimal;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000000000000000000 
+1000000000000000000000000000000 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYDECIMAL;
+1                               
+--------------------------------
+NULL                            
+0                               
+0                               
+1                               
+1                               
+100000000                       
+100000000                       
+NULL                            
+1000000000000000000000000000000 
+1000000000000000000000000000000 
+ij> select distinct abs(a) from myDecimal;
+1                               
+--------------------------------
+0                               
+1                               
+100000000                       
+1000000000000000000000000000000 
+NULL                            
+ij> select abs(b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000000000000000000 
+0.1000000000000000000000000000000 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> select abs(-b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000000000000000000 
+0.1000000000000000000000000000000 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> select -abs(b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+-0.1000000000000000000000000000000
+-0.1000000000000000000000000000000
+NULL                              
+-0.0000000000000000000000000000010
+-0.0000000000000000000000000000010
+ij> select abs(abs(-abs(-abs(b)))) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000000000000000000 
+0.1000000000000000000000000000000 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(B)))) FROM MYDECIMAL;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000000 
+0.1000000000000000000000000000000 
+0.1000000000000000000000000000000 
+NULL                              
+0.0000000000000000000000000000010 
+0.0000000000000000000000000000010 
+ij> select distinct abs(b) from myDecimal;
+1                                 
+----------------------------------
+0.0000000000000000000000000000000 
+0.0000000000000000000000000000010 
+0.1000000000000000000000000000000 
+NULL                              
+ij> -- There is nothing wrong with returning 1.0.  The decimal overflows and this is just the way it behaves.  Needs to make this compatible with jdk1.1.8(which had a bug).
+select abs(-abs(a)) + 1 from myDecimal;
+1                               
+--------------------------------
+NULL                            
+1                               
+1                               
+2                               
+2                               
+100000001                       
+100000001                       
+NULL                            
+1000000000000000000000000000001 
+1000000000000000000000000000001 
+ij> drop table myDecimal;
+0 rows inserted/updated/deleted
+ij> -- End of Decimal test
+-- Numeric java.math.BigDecimal
+-- Basic
+create table myNumeric( a decimal(31,0), b decimal(31,31 ));
+0 rows inserted/updated/deleted
+ij> select abs(a) from myNumeric;
+1                               
+--------------------------------
+ij> insert into myNumeric values (null), (+0), (-0), (+1), (-1),
+(100000000), (-100000000), (null),
+(1.0e31, ,1.0e-31),
+(-1.0e31, -1.0e-31 ), 
+select a from myNumeric;
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> select -a from myNumeric;
+1                               
+--------------------------------
+ij> select b from myNumeric;
+B                                 
+----------------------------------
+ij> select -b from myNumeric;
+1                                 
+----------------------------------
+ij> select abs(a), abs(b)from myNumeric;
+1                               |2                                 
+-------------------------------------------------------------------
+ij> select abs(-a), abs(-b) from myNumeric;
+1                               |2                                 
+-------------------------------------------------------------------
+ij> select -abs(a), -abs(b)  from myNumeric;
+1                               |2                                 
+-------------------------------------------------------------------
+ij> select abs(abs(-abs(-abs(a)))) from myNumeric;
+1                               
+--------------------------------
+ij> SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYNUMERIC;
+1                               
+--------------------------------
+ij> select distinct abs(a) from myNumeric;
+1                               
+--------------------------------
+ij> -- There is nothing wrong with returning 1.0.  The numeric overflows and this is just the way it behaves.  Needs to make this compatible with jdk1.1.8(which had a bug).
+select abs(-abs(a)) + 1 from myNumeric;
+1                               
+--------------------------------
+ij> drop table myNumeric;
+0 rows inserted/updated/deleted
+ij> -- End of Numeric test
+-- Test some different statements, just in case
+create table foo( a int );
+0 rows inserted/updated/deleted
+ij> insert into foo values ( abs( 1) );
+1 row inserted/updated/deleted
+ij> insert into foo values ( abs(-2) );
+1 row inserted/updated/deleted
+ij> insert into foo values (-abs(-3) );
+1 row inserted/updated/deleted
+ij> insert into foo values (-abs( 4) );
+1 row inserted/updated/deleted
+ij> insert into foo values (          -5  );
+1 row inserted/updated/deleted
+ij> insert into foo values (          -6  );
+1 row inserted/updated/deleted
+ij> insert into foo values (          -7  );
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> prepare p1 as 'select a from foo';
+ij> prepare p2 as 'select abs(a) from foo';
+ij> prepare p3 as 'insert into foo select a*(-1) from foo';
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+ij> execute p2;
+1          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+ij> execute p3;
+7 rows inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+ij> insert into foo values( abs( 8 ) );
+1 row inserted/updated/deleted
+ij> insert into foo values( abs(-9 ) );
+1 row inserted/updated/deleted
+ij> insert into foo values(-abs(-10) );
+1 row inserted/updated/deleted
+ij> insert into foo values( abs( 11) );
+1 row inserted/updated/deleted
+ij> insert into foo values(          -12  );
+1 row inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+-10        
+11         
+-12        
+ij> execute p2;
+1          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+10         
+11         
+12         
+ij> execute p3;
+19 rows inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+8          
+9          
+-10        
+11         
+-12        
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+-8         
+-9         
+10         
+-11        
+12         
+ij> rollback;
+ij> commit;
+ij> autocommit on;
+ij> insert into foo values( abs( 13) );
+1 row inserted/updated/deleted
+ij> insert into foo values( abs(-14) );
+1 row inserted/updated/deleted
+ij> insert into foo values(-abs(-15) );
+1 row inserted/updated/deleted
+ij> insert into foo values(-abs( 16) );
+1 row inserted/updated/deleted
+ij> insert into foo values(          -17  );
+1 row inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+13         
+14         
+-15        
+-16        
+-17        
+ij> execute p2;
+1          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+13         
+14         
+15         
+16         
+17         
+ij> execute p3;
+12 rows inserted/updated/deleted
+ij> execute p1;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+13         
+14         
+-15        
+-16        
+-17        
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+-13        
+-14        
+15         
+16         
+17         
+ij> select * from foo;
+A          
+-----------
+1          
+2          
+-3         
+-4         
+-5         
+-6         
+-7         
+13         
+14         
+-15        
+-16        
+-17        
+-1         
+-2         
+3          
+4          
+5          
+6          
+7          
+-13        
+-14        
+15         
+16         
+17         
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> -- End of ABS/ABSVAL test.  For all valid types.  Un-escaped function.
+-- abs is not a reserved word
+create table abs( a int );
+0 rows inserted/updated/deleted
+ij> drop table abs;
+0 rows inserted/updated/deleted
+ij> -- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABS test.  For escape function.
+-- Integer
+-- Basic
+-- beetle 5805 - support INT[EGER] built-in function
+values{fn abs(INT(' 0')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 7, column 15.
+ij> values{fn abs(INT('-0')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT(' 1')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT('-1')               )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT(' 1000000')         )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT('-1000000')         )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT(' 2147483647')      )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> values{fn abs(INT('-2147483648') + 1  )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> -- Error
+values{fn abs(INT('-2147483648')      )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 2, column 15.
+ij> values{fn abs(INT(' 2147483647') + 1  )};
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 15.
+ij> -- Smallint
+-- Basic
+-- beetle 5807 - support SMALLINT built-in function
+values{fn abs( SMALLINT(' 0')         )};
+1     
+------
+0     
+ij> values{fn abs( SMALLINT('-0')         )};
+1     
+------
+0     
+ij> values{fn abs( SMALLINT(' 1')         )};
+1     
+------
+1     
+ij> values{fn abs( SMALLINT('-1')         )};
+1     
+------
+1     
+ij> values{fn abs( SMALLINT(' 10000')     )};
+1     
+------
+10000 
+ij> values{fn abs( SMALLINT('-10000')     )};
+1     
+------
+10000 
+ij> values{fn abs( SMALLINT(' 32767')     )};
+1     
+------
+32767 
+ij> values{fn abs( SMALLINT('-32768') + 1 )};
+1          
+-----------
+32767      
+ij> values{fn abs(-SMALLINT('-32768')     )};
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- Error
+values{fn abs(-SMALLINT(' 32768')     )};
+ERROR 22003: The resulting value is outside the range for the data type SHORT.
+ij> values{fn abs( SMALLINT('-32768')     )};
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- Bigint
+-- Basic
+-- beetle 5809 - support BIGINT built-in function
+values{fn abs( BIGINT(' 0')                       )};
+1                   
+--------------------
+0                   
+ij> values{fn abs( BIGINT('-0')                       )};
+1                   
+--------------------
+0                   
+ij> values{fn abs( BIGINT(' 1')                       )};
+1                   
+--------------------
+1                   
+ij> values{fn abs( BIGINT('-1')                       )};
+1                   
+--------------------
+1                   
+ij> values{fn abs( BIGINT(' 100000000000')            )};
+1                   
+--------------------
+100000000000        
+ij> values{fn abs( BIGINT('-100000000000')            )};
+1                   
+--------------------
+100000000000        
+ij> values{fn abs( BIGINT(' 9223372036854775807')     )};
+1                   
+--------------------
+9223372036854775807 
+ij> values{fn abs( BIGINT('-9223372036854775808') + 1 )};
+1                   
+--------------------
+9223372036854775807 
+ij> -- Error
+values{fn abs(-BIGINT('-9223372036854775808')     )};
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> values{fn abs( BIGINT('-9223372036854775808')     )};
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> -- Real
+-- Basic
+-- beetle 5806 - support REAL built-in function
+values{fn abs( REAL( 0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 4, column 16.
+ij> values{fn abs( REAL(-0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL(-1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL(-1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 3.402E+38)               )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL(-3.402E+38) + 1           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> -- Error
+values{fn abs( REAL( 3.402E+38 * 2)           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 2, column 16.
+ij> values{fn abs(-REAL( NaN)                     )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 1.40129846432481707e-45) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> values{fn abs( REAL( 3.40282346638528860e+38) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 16.
+ij> -- Double Precision/Double
+-- Basic
+-- beetle 5803 - support DOUBLE_[PRECISION] built-in function
+values{fn abs( DOUBLE( 0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn abs( DOUBLE(-0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn abs( DOUBLE( 1)                      )};
+1                     
+----------------------
+1.0                   
+ij> values{fn abs( DOUBLE(-1)                      )};
+1                     
+----------------------
+1.0                   
+ij> values{fn abs( DOUBLE( 1000000.001)            )};
+1                     
+----------------------
+1000000.001           
+ij> values{fn abs( DOUBLE(-1000000.001)            )};
+1                     
+----------------------
+1000000.001           
+ij> values{fn abs( DOUBLE(-1.79769E+308)           )};
+1                     
+----------------------
+1.79769E308           
+ij> values{fn abs( DOUBLE( 1.79769E+308) + 1       )};
+1                     
+----------------------
+1.79769E308           
+ij> values{fn abs( DOUBLE( 2.225E-307 + 1)         )};
+1                     
+----------------------
+1.0                   
+ij> -- Error
+values{fn abs( DOUBLE( 1.79769E+308 * 2)       )};
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn abs(-DOUBLE( NaN)                    )};
+ERROR 42X04: Column 'NAN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NAN' is not a column in the target table.
+ij> values{fn abs( DOUBLE( 4.9E-324)               )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn abs( DOUBLE( 1.7976931348623157E308) )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- Decimal/Numeric
+-- Basic
+-- beetle 5802 - support DEC[IMAL] built-in function
+values{ fn abs(DEC( 0)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 4, column 16.
+ij> values{ fn abs(DEC(-0)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC( 1)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC(-1)             )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC( 1000000000000) )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> values{ fn abs(DEC(-1000000000000) )};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 1, column 16.
+ij> -- More generic test
+values{ fn abs( 0-1-.1 ) };
+1              
+---------------
+1.1            
+ij> values{ fn abs( -0-1.000000001 ) };
+1                      
+-----------------------
+1.000000001            
+ij> VALUES{ FN ABS( 100-200-300 ) };
+1          
+-----------
+400        
+ij> -- Error
+values{ fn abs('null') };
+ERROR 42X25: The 'ABS/ABSVAL' function is not allowed on the 'CHAR' type.
+ij> -- End of ABS test.  For escaped function.
+-- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABSVAL test.  For all valid types, un-escaped function.
+-- Integer has a range of -2147483648 to 2147483647
+-- Basic
+create table myint( a int );
+0 rows inserted/updated/deleted
+ij> select abs(a) from myint;
+1          
+-----------
+ij> insert into myint values (null);
+1 row inserted/updated/deleted
+ij> select abs(a) from myint;
+1          
+-----------
+NULL       
+ij> autocommit off;
+ij> -- Prepare Statements, should pass and return 1
+prepare p1 as 'select abs(?) from myint';
+ij> prepare p1 as 'select 1 from myint where ? <= 4';
+ij> execute p1 using 'values absval( 4 )';
+1          
+-----------
+1          
+ij> execute p1 using 'values absval( -4 )';
+1          
+-----------
+1          
+ij> execute p1 using 'values absval( 4.4 )';
+1          
+-----------
+1          
+ij> execute p1 using 'values absval( -4.4 )';
+1          
+-----------
+1          
+ij> -- Prepare Statements, should pass and return 1
+prepare p2 as 'select {fn abs(?)} from myint';
+ij> prepare p2 as 'select 1 from myint where ? <= 4';
+ij> execute p2 using 'values {fn abs( 4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( -4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( 4.4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( -4.4 )}';
+1          
+-----------
+1          
+ij> execute p2 using 'values {fn abs( -4.44444444444444444444444 )}';
+1          
+-----------
+1          
+ij> autocommit on;
+ij> drop table myint;
+0 rows inserted/updated/deleted
+ij> -- Using Strings in escape function
+create table myStr( a varchar(10) );
+0 rows inserted/updated/deleted
+ij> insert into myStr values ( '123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '-123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '-12 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( ' -2 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '1a3' );
+1 row inserted/updated/deleted
+ij> select * from myStr;
+A         
+----------
+123       
+-123      
+-12       
+ -2       
+1a3       
+ij> select abs(a) from myStr;
+ERROR 42X25: The 'ABS/ABSVAL' function is not allowed on the 'VARCHAR' type.
+ij> select {fn abs(a)} from myStr;
+ERROR 42X25: The 'ABS/ABSVAL' function is not allowed on the 'VARCHAR' type.
+ij> drop table myStr;
+0 rows inserted/updated/deleted
+ij> -- End of ABSVAL test
+-- This test EJBQL function, CONCAT. Resolve 3535
+-- Begin of CONCAT test
+-- Basic
+values{ fn concat( 'hello', ' world' ) };
+1          
+-----------
+hello world
+ij> VALUES{ FN CONCAT( 'HELLO', ' WORLD' ) };
+1          
+-----------
+HELLO WORLD
+ij> values{ fn concat( '' , '' )};
+1              
+---------------
+ij> values{ fn concat( CHAR(''), CHAR('') ) };
+1                             
+------------------------------
+ij> values{ fn concat( 45, 67 )};
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values{ fn concat( '45', 67 )};
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values{ fn concat( 45, '67' )};
+ERROR 42846: Cannot convert types 'INTEGER' to 'VARCHAR'.
+ij> values{ fn concat( CHAR('C'), CHAR('#') ) };
+1                             
+------------------------------
+C              #              
+ij> values{ fn concat( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\    [];,./ \'' |',
+                   'abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+|<>?:"{}     ''''''      ' ) };
+1                                                                                                                   
+--------------------------------------------------------------------------------------------------------------------
+ABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\    [];,./ \' |abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+|<>?:"{}     '''      
+ij> create table concat ( a int );
+0 rows inserted/updated/deleted
+ij> insert into concat values (1);
+1 row inserted/updated/deleted
+ij> select * from CONCAT;
+A          
+-----------
+1          
+ij> create table myconcat( a varchar(10) default null, b varchar(10) default null, c int);
+0 rows inserted/updated/deleted
+ij> insert into myconcat (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myconcat (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myconcat (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myconcat (b) values( 'world' );
+1 row inserted/updated/deleted
+ij> insert into myconcat (a,b) values( 'hello', 'world' );
+1 row inserted/updated/deleted
+ij> select * from myconcat;
+A         |B         |C          
+---------------------------------
+NULL      |NULL      |1          
+NULL      |NULL      |2          
+hello     |NULL      |NULL       
+NULL      |world     |NULL       
+hello     |world     |NULL       
+ij> select { fn concat( a, b ) } from myconcat;
+1                   
+--------------------
+NULL                
+NULL                
+NULL                
+NULL                
+helloworld          
+ij> drop table concat;
+0 rows inserted/updated/deleted
+ij> drop table myconcat;
+0 rows inserted/updated/deleted
+ij> -- End of CONCAT test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2 }; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+-- 2 args
+values{ fn locate( 'hello', 'hello' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'hellohello' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'helloworld' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'h?hello' ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'match me, hello now!' ) };
+1          
+-----------
+11         
+ij> values{ fn locate( '?', '?' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( '\', '\\') };
+1          
+-----------
+1          
+ij> values{ fn locate( '/', '//') };
+1          
+-----------
+1          
+ij> values{ fn locate( '\\', '\') };
+1          
+-----------
+0          
+ij> values{ fn locate( '//', '/') };
+1          
+-----------
+0          
+ij> values{ fn locate( '', 'test' ) };
+1          
+-----------
+1          
+ij> values{ fn locate( '', ''     ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'test', '' ) };
+1          
+-----------
+0          
+ij> -- 3 args 
+values{ fn locate( 'hello', 'hello',-1 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '-1'.  The string to search for is 'hello'.  The string to search from is 'hello'. 
+ij> values{ fn locate( 'hello', 'hello',-0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'hello'.  The string to search from is 'hello'. 
+ij> values{ fn locate( 'hello', 'hello', 0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'hello'.  The string to search from is 'hello'. 
+ij> values{ fn locate( 'hello', 'hello', 1 ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'hello', 2 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'hello', 5 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'hello', 9 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'hellohello', 0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'hello'.  The string to search from is 'hellohello'. 
+ij> values{ fn locate( 'hello', 'hellohello', 1 ) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'hello', 'hellohello', 2 ) };
+1          
+-----------
+6          
+ij> values{ fn locate( 'hello', 'hellohello', 5 ) };
+1          
+-----------
+6          
+ij> values{ fn locate( 'hello', 'hellohello', 6 ) };
+1          
+-----------
+6          
+ij> values{ fn locate( 'hello', 'hellohello', 7 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'h?hello', 1 ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'h?hello', 2 ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'h?hello', 3 ) };
+1          
+-----------
+3          
+ij> values{ fn locate( 'hello', 'h?hello', 4 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 'match me, hello now!',  7 ) };
+1          
+-----------
+11         
+ij> values{ fn locate( 'hello', 'match me, hello now!', 15 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( '?', '?',-1 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '-1'.  The string to search for is '?'.  The string to search from is '?'. 
+ij> values{ fn locate( '?', '?',-0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '?'.  The string to search from is '?'. 
+ij> values{ fn locate( '?', '?', 0 ) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '?'.  The string to search from is '?'. 
+ij> values{ fn locate( '?', '?', 1 ) };
+1          
+-----------
+1          
+ij> values{ fn locate( '?', '?', 2 ) };
+1          
+-----------
+0          
+ij> values{ fn locate( '\', '\\',0) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '\'.  The string to search from is '\\'. 
+ij> values{ fn locate( '\', '\\',1) };
+1          
+-----------
+1          
+ij> values{ fn locate( '\', '\\',2) };
+1          
+-----------
+2          
+ij> values{ fn locate( '\', '\\',3) };
+1          
+-----------
+0          
+ij> values{ fn locate( '/', '//',0) };
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is '/'.  The string to search from is '//'. 
+ij> values{ fn locate( '/', '//',1) };
+1          
+-----------
+1          
+ij> values{ fn locate( '/', '//',2) };
+1          
+-----------
+2          
+ij> values{ fn locate( '/', '//',3) };
+1          
+-----------
+0          
+ij> values{ fn locate( '\\', '\',1) };
+1          
+-----------
+0          
+ij> values{ fn locate( '//', '/',1) };
+1          
+-----------
+0          
+ij> values{ fn locate( '', 'test',1) };
+1          
+-----------
+1          
+ij> values{ fn locate( '', 'test',2) };
+1          
+-----------
+2          
+ij> values{ fn locate( '', 'test',3) };
+1          
+-----------
+3          
+ij> values{ fn locate( '', 'test',4) };
+1          
+-----------
+4          
+ij> values{ fn locate( '', 'test',5) };
+1          
+-----------
+5          
+ij> values{ fn locate( '', ''    ,1) };
+1          
+-----------
+1          
+ij> values{ fn locate( 'test', '',1) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'test', '',2) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'test', '',3) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'test', '',4) };
+1          
+-----------
+0          
+ij> values{ fn locate( 'hello', 1 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 'hello' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 'hello', 'hello', 'hello' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 'hello', 'hello', 1.99999999999 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 'hel1lo' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 1 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( 1, 1, '1' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( '1', 1, 1 ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values{ fn locate( '1', '1', '1' ) };
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- End of EJBQL function test for LOCATE.
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+create table locate( a varchar(20) );
+0 rows inserted/updated/deleted
+ij> -- create table myChar( a char(10), b char(20), c int default '1'  );
+create table myChar( a char(10), b char(20), c int );
+0 rows inserted/updated/deleted
+ij> insert into myChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+1 row inserted/updated/deleted
+ij> insert into myChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+1 row inserted/updated/deleted
+ij> insert into myChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+1 row inserted/updated/deleted
+ij> insert into myChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+1 row inserted/updated/deleted
+ij> insert into myChar values( '1234567890', 'abcde1234567890fghij', 2 );
+1 row inserted/updated/deleted
+ij> insert into myChar values( 'abcdefghij', 'abcdefghij1234567890', 1  );
+1 row inserted/updated/deleted
+ij> insert into myChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+1 row inserted/updated/deleted
+ij> insert into myChar (c) values( 0 );
+1 row inserted/updated/deleted
+ij> insert into myChar (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myChar (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myChar (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myChar (b) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+1 row inserted/updated/deleted
+ij> select a, b, c from myChar;
+A         |B                   |C          
+-------------------------------------------
+1234567890|abcde1234567890fghij|NULL       
+abcdefghij|abcdefghij1234567890|NULL       
+abcdefghij|1234567890abcdefghij|NULL       
+abcdefghij|1234567890!@#$%^&*()|NULL       
+1234567890|abcde1234567890fghij|2          
+abcdefghij|abcdefghij1234567890|1          
+abcdefghij|1234567890abcdefghij|15         
+NULL      |NULL                |0          
+NULL      |NULL                |1          
+NULL      |NULL                |2          
+hello     |NULL                |NULL       
+NULL      |hello               |NULL       
+abcdefghij|1234567890!@#$%^&*()|21         
+ij> select locate(a, b) from myChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+6          
+1          
+11         
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> select locate(a, b, c) from myChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+6          
+1          
+0          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> drop table myChar;
+0 rows inserted/updated/deleted
+ij> create table myLongVarChar( a long varchar, b long varchar, c int);
+0 rows inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcde', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcde', 'abcd' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( '', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( 'abcde', null );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a, b) values( null, 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcde', 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcde', 'abcd', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( '', 'abcde', 2 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcde', null, 1  );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( null, 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (c) values( 0 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar (b) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myLongVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+1 row inserted/updated/deleted
+ij> select a, b, c from myLongVarChar;
+A                                                                                                                               |B                                                                                                                               |C          
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1234567890                                                                                                                      |abcde1234567890fghij                                                                                                            |NULL       
+abcdefghij                                                                                                                      |abcdefghij1234567890                                                                                                            |NULL       
+abcdefghij                                                                                                                      |1234567890abcdefghij                                                                                                            |NULL       
+abcdefghij                                                                                                                      |1234567890!@#$%^&*()                                                                                                            |NULL       
+abcde                                                                                                                           |abcde                                                                                                                           |NULL       
+abcde                                                                                                                           |abcd                                                                                                                            |NULL       
+                                                                                                                                |abcde                                                                                                                           |NULL       
+abcde                                                                                                                           |NULL                                                                                                                            |NULL       
+NULL                                                                                                                            |abcde                                                                                                                           |NULL       
+1234567890                                                                                                                      |abcde1234567890fghij                                                                                                            |2          
+abcdefghij                                                                                                                      |abcdefghij1234567890                                                                                                            |1          
+abcdefghij                                                                                                                      |1234567890abcdefghij                                                                                                            |15         
+abcde                                                                                                                           |abcde                                                                                                                           |1          
+abcde                                                                                                                           |abcd                                                                                                                            |1          
+                                                                                                                                |abcde                                                                                                                           |2          
+abcde                                                                                                                           |NULL                                                                                                                            |1          
+NULL                                                                                                                            |abcde                                                                                                                           |1          
+NULL                                                                                                                            |NULL                                                                                                                            |0          
+NULL                                                                                                                            |NULL                                                                                                                            |1          
+NULL                                                                                                                            |NULL                                                                                                                            |2          
+hello                                                                                                                           |NULL                                                                                                                            |NULL       
+NULL                                                                                                                            |hello                                                                                                                           |NULL       
+abcdefghij                                                                                                                      |1234567890!@#$%^&*()                                                                                                            |21         
+ij> select locate(a, b) from myLongVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+11         
+1          
+0          
+1          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> select locate(a, b, c) from myLongVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+0          
+1          
+0          
+2          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> drop table myLongVarChar;
+0 rows inserted/updated/deleted
+ij> create table myVarChar( a varchar(10), b varchar(20), c int );
+0 rows inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcde', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcde', 'abcd' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( '', 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( 'abcde', null );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a, b) values( null, 'abcde' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcde', 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcde', 'abcd', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( '', 'abcde', 2 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcde', null, 1  );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( null, 'abcde', 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (c) values( 0 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (c) values( 1 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (c) values( 2 );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (a) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar (b) values( 'hello' );
+1 row inserted/updated/deleted
+ij> insert into myVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+1 row inserted/updated/deleted
+ij> select a, b, c from myVarChar;
+A         |B                   |C          
+-------------------------------------------
+1234567890|abcde1234567890fghij|NULL       
+abcdefghij|abcdefghij1234567890|NULL       
+abcdefghij|1234567890abcdefghij|NULL       
+abcdefghij|1234567890!@#$%^&*()|NULL       
+abcde     |abcde               |NULL       
+abcde     |abcd                |NULL       
+          |abcde               |NULL       
+abcde     |NULL                |NULL       
+NULL      |abcde               |NULL       
+1234567890|abcde1234567890fghij|2          
+abcdefghij|abcdefghij1234567890|1          
+abcdefghij|1234567890abcdefghij|15         
+abcde     |abcde               |1          
+abcde     |abcd                |1          
+          |abcde               |2          
+abcde     |NULL                |1          
+NULL      |abcde               |1          
+NULL      |NULL                |0          
+NULL      |NULL                |1          
+NULL      |NULL                |2          
+hello     |NULL                |NULL       
+NULL      |hello               |NULL       
+abcdefghij|1234567890!@#$%^&*()|21         
+ij> select locate(a, b) from myVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+11         
+1          
+0          
+1          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> select locate(a, b, c) from myVarChar;
+1          
+-----------
+6          
+1          
+11         
+0          
+1          
+0          
+1          
+NULL       
+NULL       
+6          
+1          
+0          
+1          
+0          
+2          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+0          
+ij> drop table myVarChar;
+0 rows inserted/updated/deleted
+ij> -- Negative cases. To match DB2 behaviour
+create table t1 (dt date, tm time, ts timestamp);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (current_date, current_time, current_timestamp);
+1 row inserted/updated/deleted
+ij> select locate (dt, ts) from t1;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> select locate (tm, ts) from t1;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> select locate (ts, ts) from t1;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> values locate('abc', 'dkabc', 1.4);
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> values locate('c', 'abcdedf', cast(1 as decimal(2,0)));
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> -- =========================================================================
+-- These test cases for national character types will fail until 
+-- until a future work around is implemented
+-- =========================================================================
+create table mynChar( a nchar(10), b nchar(20), c int );
+ERROR 0A000: Feature not implemented: NATIONAL CHAR.
+ij> insert into mynChar values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', 'abcdefghij1234567890', 1  );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (c) values( 0 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (c) values( 1 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (c) values( 2 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (a) values( 'hello' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar (b) values( 'hello' );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> insert into mynChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> select a, b, c from mynChar;
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> select locate(a, b) from mynChar;
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> select locate(a, b, c) from mynChar;
+ERROR 42X05: Table 'MYNCHAR' does not exist.
+ij> drop table mynChar;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYNCHAR' because it does not exist.
+ij> create table myLongnVarChar( a long nvarchar, b long nvarchar, c int );
+ERROR 0A000: Feature not implemented: LONG NVARCHAR.
+ij> insert into myLongnVarChar values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcde' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcd' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( '', 'abcde' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', null );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( null, 'abcde' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcde', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', 'abcd', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( '', 'abcde', 2 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcde', null, 1  );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( null, 'abcde', 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (c) values( 0 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (c) values( 1 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (c) values( 2 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (a) values( 'hello' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar (b) values( 'hello' );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> insert into myLongnVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> select a, b, c from myLongnVarChar;
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> select locate(a, b) from myLongnVarChar;
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> select locate(a, b, c) from myLongnVarChar;
+ERROR 42X05: Table 'MYLONGNVARCHAR' does not exist.
+ij> drop table myLongnVarChar;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYLONGNVARCHAR' because it does not exist.
+ij> create table mynVarChar( a nvarchar(10), b nvarchar(20), c int );
+ERROR 0A000: Feature not implemented: NATIONAL CHAR VARYING.
+ij> insert into mynVarChar values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcde' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcd' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( '', 'abcde' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', null );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( null, 'abcde' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcde', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', 'abcd', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( '', 'abcde', 2 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcde', null, 1  );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( null, 'abcde', 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (c) values( 0 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (c) values( 1 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (c) values( 2 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (a) values( 'hello' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar (b) values( 'hello' );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into mynVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> select a, b, c from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> select locate(a, b) from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> select locate(a, b, c) from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> create table myMixed( a char(10), b long nvarchar, c int );
+ERROR 0A000: Feature not implemented: LONG NVARCHAR.
+ij> insert into myMixed values( '1234567890', 'abcde1234567890fghij' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', 'abcdefghij1234567890' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890abcdefghij' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890!@#$%^&*()' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( '1234567890', 'abcde1234567890fghij', 2 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890abcdefghij', 15 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (c) values( 0 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (c) values( 1 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (c) values( 2 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (a) values( 'hello' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed (b) values( 'hello' );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> insert into myMixed values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> select a, b, c from myMixed;
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> select locate(a, b) from myMixed;
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> select locate(a, b, c) from myMixed;
+ERROR 42X05: Table 'MYMIXED' does not exist.
+ij> drop table myMixed;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYMIXED' because it does not exist.
+ij> create table foo( a int );
+0 rows inserted/updated/deleted
+ij> insert into foo select locate(a, b) from mynVarChar;
+ERROR 42X05: Table 'MYNVARCHAR' does not exist.
+ij> insert into foo values( {fn locate('hello', 'hello')} );
+1 row inserted/updated/deleted
+ij> select * from foo;
+A          
+-----------
+1          
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> drop table mynVarChar;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'MYNVARCHAR' because it does not exist.
+ij> -- =========================================================================
+-- Other types
+create table myBigInt( a bigint, b bigint );
+0 rows inserted/updated/deleted
+ij> insert into myBigInt values( 1234, 1234 );
+1 row inserted/updated/deleted
+ij> insert into myBigInt values( 4321, 1234 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myBigInt;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myBigInt;
+0 rows inserted/updated/deleted
+ij> create table myBit( a char for bit data, b char for bit data );
+0 rows inserted/updated/deleted
+ij> insert into myBit values( X'40', X'40' );
+1 row inserted/updated/deleted
+ij> insert into myBit values( X'01', X'40' );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myBit;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myBit;
+0 rows inserted/updated/deleted
+ij> -- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table myDate( a date, b date );
+0 rows inserted/updated/deleted
+ij> insert into myDate values( date('1970-01-08'), date('1970-01-08') );
+1 row inserted/updated/deleted
+ij> insert into myDate values( date('1979-08-30'), date('1978-07-28') );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myDate;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myDate;
+0 rows inserted/updated/deleted
+ij> create table myDecimal( a decimal, b decimal );
+0 rows inserted/updated/deleted
+ij> insert into myDecimal values( 2.2, 2.2 );
+1 row inserted/updated/deleted
+ij> insert into myDecimal values( 12.23, 3423 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myDecimal;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myDecimal;
+0 rows inserted/updated/deleted
+ij> create table myDouble( a double precision, b double precision );
+0 rows inserted/updated/deleted
+ij> insert into myDouble values( 2.2, 2.2 );
+1 row inserted/updated/deleted
+ij> insert into myDouble values( 12.23, 3423 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myDouble;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myDouble;
+0 rows inserted/updated/deleted
+ij> create table myInteger(a integer, b integer );
+0 rows inserted/updated/deleted
+ij> insert into myInteger values( 2, 2 );
+1 row inserted/updated/deleted
+ij> insert into myInteger values( 123, 3423 );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from myInteger;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table myInteger;
+0 rows inserted/updated/deleted
+ij> create table mylongvarbinary( a long varchar for bit data, b long varchar for bit data );
+0 rows inserted/updated/deleted
+ij> select locate(a, b) from mylongvarbinary;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table mylongvarbinary;
+0 rows inserted/updated/deleted
+ij> -- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table mytime( a time, b time );
+0 rows inserted/updated/deleted
+ij> insert into mytime values( time('10:00:00'), time('10:00:00') );
+1 row inserted/updated/deleted
+ij> insert into mytime values( time('10:00:00'), time('11:00:00') );
+1 row inserted/updated/deleted
+ij> select locate(a, b) from mytime;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table mytime;
+0 rows inserted/updated/deleted
+ij> -- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table mytimestamp( a timestamp, b timestamp );
+0 rows inserted/updated/deleted
+ij> insert into mytimestamp values( timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> insert into mytimestamp values( timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> select locate(a, b) from mytimestamp;
+ERROR 42884: No authorized routine named 'LOCATE' of type 'FUNCTION' having compatible arguments was found.
+ij> drop table mytimestamp;
+0 rows inserted/updated/deleted
+ij> -- End of ejbql_locate2.sql test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+-- AUTHOR'S NOTE: This test highlights the difference between Oracle8i,
+--    IBM DB2, and Cloudscape.
+create table foo( a varchar(10), b varchar(20) );
+0 rows inserted/updated/deleted
+ij> insert into foo values( 'abc', 'abcd' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'ABC', NULL );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( NULL, 'DEF' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'ABC', '') ;
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( '', 'DEF' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( '', '' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( NULL, NULL );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'GHJK', 'GHJ' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'QWE', 'QWERT' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'TYUI', 'RTYUI' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'IOP', 'UIOP[' );
+1 row inserted/updated/deleted
+ij> insert into foo (a,b) values ( 'ZXCV', 'ZXCV' );
+1 row inserted/updated/deleted
+ij> select * from foo;
+A         |B                   
+-------------------------------
+abc       |abcd                
+ABC       |NULL                
+NULL      |DEF                 
+ABC       |                    
+          |DEF                 
+          |                    
+NULL      |NULL                
+GHJK      |GHJ                 
+QWE       |QWERT               
+TYUI      |RTYUI               
+IOP       |UIOP[               
+ZXCV      |ZXCV                
+ij> select locate(a, b) from foo;
+1          
+-----------
+1          
+NULL       
+NULL       
+0          
+1          
+1          
+NULL       
+0          
+1          
+2          
+2          
+1          
+ij> select locate(a, b, 0) from foo;
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '0'.  The string to search for is 'abc'.  The string to search from is 'abcd'. 
+ij> select locate(a, b, -1) from foo;
+1          
+-----------
+ERROR 22014: The start positon for LOCATE is invalid; it must be a positive integer.  The index to start the search from is '-1'.  The string to search for is 'abc'.  The string to search from is 'abcd'. 
+ij> select locate(a, b, 1) from foo;
+1          
+-----------
+1          
+NULL       
+NULL       
+0          
+1          
+1          
+NULL       
+0          
+1          
+2          
+2          
+1          
+ij> select locate(a, b, 2) from foo;
+1          
+-----------
+0          
+NULL       
+NULL       
+0          
+2          
+2          
+NULL       
+0          
+0          
+2          
+2          
+0          
+ij> select locate(a, b, 200) from foo;
+1          
+-----------
+0          
+NULL       
+NULL       
+0          
+200        
+200        
+NULL       
+0          
+0          
+0          
+0          
+0          
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> -- End of ejbql_locate3.sql test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2 }; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+-- Begin of LOCATE test
+-- Basic
+create table loc( c varchar(20) default null, a int default null, b int default null);
+0 rows inserted/updated/deleted
+ij> insert into loc (c) values ('This world is crazy' );
+1 row inserted/updated/deleted
+ij> insert into loc (c) values ('nada' );
+1 row inserted/updated/deleted
+ij> insert into loc (b) values ( 3 );
+1 row inserted/updated/deleted
+ij> select * from loc;
+C                   |A          |B          
+--------------------------------------------
+This world is crazy |NULL       |NULL       
+nada                |NULL       |NULL       
+NULL                |NULL       |3          
+ij> select c, locate( 'crazy', c ) from loc;
+C                   |2          
+--------------------------------
+This world is crazy |15         
+nada                |0          
+NULL                |NULL       
+ij> autocommit off;
+ij> -- Prepare Statements
+prepare p1 as 'select locate( ''crazy'', c ) from loc';
+ij> execute p1;
+1          
+-----------
+15         
+0          
+NULL       
+ij> -- first arg ?
+prepare p2 as 'select locate( ?, c ) from loc';
+ij> execute p2 using 'values ( ''crazy'' )';
+1          
+-----------
+15         
+0          
+NULL       
+ij> execute p2 using 'values ( ''hahah'' )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- second arg ?
+prepare p3 as 'select locate( ''nada'', ? ) from loc';
+ij> execute p3 using 'values ( ''nada'' )';
+1          
+-----------
+1          
+1          
+1          
+ij> execute p3 using 'values ( ''haha'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> -- both first and second arguments ? ?
+prepare p4 as 'select locate( ?, ? ) from loc';
+ij> execute p4 using 'values ( ''dont'', ''match'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p4 using 'values ( ''match'', ''me match me'' )';
+1          
+-----------
+4          
+4          
+4          
+ij> -- thrid arg ?
+prepare p5 as 'select locate( c, c, ? ) from loc';
+ij> execute p5 using 'values ( 1 )';
+1          
+-----------
+1          
+1          
+NULL       
+ij> execute p5 using 'values ( 2 )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- all args ? ? ?
+prepare p6 as 'select locate( ?, ?, ? ) from loc';
+ij> execute p6 using 'values ( ''hello'', ''no match'', 1 )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p6 using 'values ( ''match'', ''me match me'', 2 )';
+1          
+-----------
+4          
+4          
+4          
+ij> -- Prepare Statements
+prepare p7 as 'select {fn locate( ''crazy'', c )} from loc';
+ij> execute p7;
+1          
+-----------
+15         
+0          
+NULL       
+ij> -- first arg ?
+prepare p7 as 'select {fn locate( ?, c )} from loc';
+ij> execute p7 using 'values ( ''crazy'' )';
+1          
+-----------
+15         
+0          
+NULL       
+ij> execute p7 using 'values ( ''hahah'' )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- second arg ?
+prepare p8 as 'select {fn locate( ''nada'', ? )} from loc';
+ij> execute p8 using 'values ( ''nada'' )';
+1          
+-----------
+1          
+1          
+1          
+ij> execute p8 using 'values ( ''haha'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> -- both first and second arguments ? ?
+prepare p9 as 'select {fn locate( ?, ? )} from loc';
+ij> execute p9 using 'values ( ''dont'', ''match'' )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p9 using 'values ( ''match'', ''me match me'' )';
+1          
+-----------
+4          
+4          
+4          
+ij> -- thrid arg ?
+prepare p10 as 'select {fn locate( c, c, ? )} from loc';
+ij> execute p10 using 'values ( 1 )';
+1          
+-----------
+1          
+1          
+NULL       
+ij> execute p10 using 'values ( 2 )';
+1          
+-----------
+0          
+0          
+NULL       
+ij> -- all args ? ? ?
+prepare p11 as 'select {fn locate( ?, ?, ? )} from loc';
+ij> execute p11 using 'values ( ''hello'', ''no match'', 1 )';
+1          
+-----------
+0          
+0          
+0          
+ij> execute p11 using 'values ( ''match'', ''me match me'', 2 )';
+1          
+-----------
+4          
+4          
+4          
+ij> autocommit on;
+ij> drop table loc;
+0 rows inserted/updated/deleted
+ij> -- End of LOCATE test
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.  For all valid types, un-escaped function.
+-- Real has a range of +/-1.4E-45 to +/-3.4028235E+38
+-- Basic
+create table myreal( a real );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from myreal;
+1                     
+----------------------
+ij> insert into myreal values (null), (+0), (-0), (+1), (null), (100000000),
+(3.402E+38), (1.175E-37);
+8 rows inserted/updated/deleted
+ij> select a from myreal;
+A            
+-------------
+NULL         
+0.0          
+0.0          
+1.0          
+NULL         
+1.0E8        
+3.402E38     
+1.175E-37    
+ij> select sqrt(a) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+NULL                  
+10000.0               
+1.844451138023282E19  
+3.427827260414494E-19 
+ij> select -sqrt(a) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+NULL                  
+-10000.0              
+-1.844451138023282E19 
+-3.427827260414494E-19
+ij> select sqrt(sqrt(-sqrt(-sqrt(a)))) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> SELECT SQRT(SQRT(-SQRT(-SQRT(A)))) FROM MYREAL;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> select sqrt(sqrt(sqrt(sqrt(a)))) from myreal;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+NULL                  
+3.1622776601683795    
+255.99612668910464    
+0.004919006155611499  
+ij> select distinct sqrt(a) from myreal;
+1                     
+----------------------
+0.0                   
+3.427827260414494E-19 
+1.0                   
+10000.0               
+1.844451138023282E19  
+NULL                  
+ij> drop table myreal;
+0 rows inserted/updated/deleted
+ij> -- End of Real test
+-- Double Precision has a range of +/-4.9E-324 to +/-1.7976931348623157E+308
+-- Basic
+create table mydoubleprecision( a double precision );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+ij> insert into mydoubleprecision values (null), (+0), (-0), (+1), (100000000), (null),
+(1.79769E+308), (2.225E-307);
+8 rows inserted/updated/deleted
+ij> select a from mydoubleprecision;
+A                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+1.0E8                 
+NULL                  
+1.79769E308           
+2.225E-307            
+ij> select sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+10000.0               
+NULL                  
+1.3407796239501852E154
+4.716990566028302E-154
+ij> select -sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+-1.0                  
+-10000.0              
+NULL                  
+-1.3407796239501852E1&
+-4.716990566028302E-1&
+ij> select sqrt(sqrt(-sqrt(-sqrt(a)))) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> SELECT SQRT(SQRT(-SQRT(-SQRT(A)))) FROM MYDOUBLEPRECISION;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> select sqrt(sqrt(sqrt(sqrt(a)))) from mydoubleprecision;
+1                     
+----------------------
+NULL                  
+0.0                   
+0.0                   
+1.0                   
+3.1622776601683795    
+NULL                  
+1.8446742063214512E19 
+6.826657681281494E-20 
+ij> select distinct sqrt(a) from mydoubleprecision;
+1                     
+----------------------
+0.0                   
+4.716990566028302E-154
+1.0                   
+10000.0               
+1.3407796239501852E154
+NULL                  
+ij> drop table mydoubleprecision;
+0 rows inserted/updated/deleted
+ij> -- End of Double Precision test
+-- Float has a the range or a java.lang.Float or java.lang.Double depending on
+-- the precision you specify.  Below a is a double, b is a float
+create table myfloat( a float, b float(23) );
+0 rows inserted/updated/deleted
+ij> select sqrt(a), sqrt(b) from myfloat;
+1                     |2                     
+---------------------------------------------
+ij> select columnname, columndatatype
+from sys.syscolumns c, sys.systables t where c.referenceid = t.tableid and t.tablename='MYFLOAT';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+A                                                                                                                               |DOUBLE         
+B                                                                                                                               |REAL           
+ij> insert into myfloat values (null, null), (+0, +0), (-0, -0), (+1, +1), (100000000, 100000000), (null, null),
+(1.79769E+308, 3.402E+38),
+(2.225E-307, 1.175E-37);
+8 rows inserted/updated/deleted
+ij> select a, b from myfloat;
+A                     |B            
+------------------------------------
+NULL                  |NULL         
+0.0                   |0.0          
+0.0                   |0.0          
+1.0                   |1.0          
+1.0E8                 |1.0E8        
+NULL                  |NULL         
+1.79769E308           |3.402E38     
+2.225E-307            |1.175E-37    
+ij> select sqrt(a), sqrt(b) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+1.0                   |1.0                   
+10000.0               |10000.0               
+NULL                  |NULL                  
+1.3407796239501852E154|1.844451138023282E19  
+4.716990566028302E-154|3.427827260414494E-19 
+ij> select -sqrt(a), -sqrt(b) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+-1.0                  |-1.0                  
+-10000.0              |-10000.0              
+NULL                  |NULL                  
+-1.3407796239501852E1&|-1.844451138023282E19 
+-4.716990566028302E-1&|-3.427827260414494E-19
+ij> select sqrt(sqrt(-sqrt(-sqrt(a)))), sqrt(sqrt(-sqrt(-sqrt(b)))) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> SELECT SQRT(SQRT(-SQRT(-SQRT(A)))), SQRT(SQRT(-SQRT(-SQRT(B)))) FROM MYFLOAT;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> select sqrt(sqrt(sqrt(sqrt(a)))), sqrt(sqrt(sqrt(sqrt(b)))) from myfloat;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+0.0                   |0.0                   
+0.0                   |0.0                   
+1.0                   |1.0                   
+3.1622776601683795    |3.1622776601683795    
+NULL                  |NULL                  
+1.8446742063214512E19 |255.99612668910464    
+6.826657681281494E-20 |0.004919006155611499  
+ij> select distinct sqrt(a) from myfloat;
+1                     
+----------------------
+0.0                   
+4.716990566028302E-154
+1.0                   
+10000.0               
+1.3407796239501852E154
+NULL                  
+ij> select distinct sqrt(b) from myfloat;
+1                     
+----------------------
+0.0                   
+3.427827260414494E-19 
+1.0                   
+10000.0               
+1.844451138023282E19  
+NULL                  
+ij> drop table myfloat;
+0 rows inserted/updated/deleted
+ij> -- End of Float test
+-- Test some different statements, just in case
+-- beetle 5804 - support FLOAT built-in function
+create table foo( a float );
+0 rows inserted/updated/deleted
+ij> insert into foo values ( sqrt(FLOAT( 1)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values ( sqrt(FLOAT( 2)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 3)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 4)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (     (FLOAT(-5)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- this insert should fail
+insert into foo values ( sqrt(FLOAT(-3)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 2, column 31.
+ij> autocommit off;
+ij> prepare p1 as 'select a from foo';
+ij> prepare p2 as 'insert into foo select a*(-1) from foo';
+ij> execute p1;
+A                     
+----------------------
+ij> execute p2;
+0 rows inserted/updated/deleted
+ij> execute p1;
+A                     
+----------------------
+ij> insert into foo values ( sqrt(FLOAT( 6)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 7)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 8)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values ( sqrt(FLOAT( 9)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (     (FLOAT(10)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- few negative tests
+-- insert should fail
+insert into foo values ( sqrt(FLOAT(-7)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 3, column 31.
+ij> prepare p3 as 'select sqrt(a) from foo';
+ij> -- executing p3 should fail
+execute p3;
+1                     
+----------------------
+ij> -- these should pass
+execute p1;
+A                     
+----------------------
+ij> execute p2;
+0 rows inserted/updated/deleted
+ij> execute p1;
+A                     
+----------------------
+ij> rollback;
+ij> commit;
+ij> autocommit on;
+ij> insert into foo values ( sqrt(FLOAT( 11)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 12)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 13)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (-sqrt(FLOAT( 14)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> insert into foo values (     (FLOAT( 15)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- these 2 inserts should fail
+insert into foo values (-sqrt(FLOAT(-12)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 2, column 31.
+ij> insert into foo values ( sqrt(FLOAT(-13)));
+ERROR 42X01: Syntax error: Encountered "FLOAT" at line 1, column 31.
+ij> -- these should pass
+autocommit off;
+ij> execute p1;
+A                     
+----------------------
+ij> execute p3;
+1                     
+----------------------
+ij> execute p1;
+A                     
+----------------------
+ij> -- executing p2 should fail
+execute p2;
+0 rows inserted/updated/deleted
+ij> autocommit on;
+ij> select * from foo;
+A                     
+----------------------
+ij> drop table foo;
+0 rows inserted/updated/deleted
+ij> -- End of SQRT test.  For all valid types.  Un-escaped function.
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.
+-- Integer, Smallint, Bigint, Decimal
+create table myint( a int );
+0 rows inserted/updated/deleted
+ij> create table myinteger( a Integer );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from myint;
+1                     
+----------------------
+ij> select sqrt(a) from myinteger;
+1                     
+----------------------
+ij> drop table myint;
+0 rows inserted/updated/deleted
+ij> drop table myinteger;
+0 rows inserted/updated/deleted
+ij> create table mysmallint( a smallint );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mysmallint;
+1                     
+----------------------
+ij> drop table mysmallint;
+0 rows inserted/updated/deleted
+ij> create table mybigint( a bigint );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mybigint;
+1                     
+----------------------
+ij> drop table mybigint;
+0 rows inserted/updated/deleted
+ij> create table mydecimal( a decimal );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from mydecimal;
+1                     
+----------------------
+ij> drop table mydecimal;
+0 rows inserted/updated/deleted
+ij> -- For escape function.
+-- Integer
+-- Basic
+values{ fn sqrt(INT('0'))};
+ERROR 42X01: Syntax error: Encountered "INT" at line 6, column 17.
+ij> -- Smallint
+-- Basic
+-- beetle 5805 - support INT[EGER] built-in function
+values{ fn sqrt(SMALLINT('0'))};
+1                     
+----------------------
+0.0                   
+ij> -- Bigint
+-- Basic
+-- beetle 5809 - support BIGINT built-in function
+values{ fn sqrt(BIGINT('0'))};
+1                     
+----------------------
+0.0                   
+ij> -- Real
+-- Basic
+-- beetle 5806 - support REAL built-in function
+values{fn sqrt( REAL( 0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 4, column 17.
+ij> values{fn sqrt( REAL(-0)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL(-1)                       )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL(-1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 3.402E+38)               )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL(-3.402E+38) + 1           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> -- Error
+values{fn sqrt( REAL( 3.402E+38 * 2)           )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 2, column 17.
+ij> values{fn sqrt(-REAL( NaN)                     )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 1.40129846432481707e-45) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> values{fn sqrt( REAL( 3.40282346638528860e+38) )};
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 17.
+ij> -- Double Precision/Double
+-- Basic
+-- beetle 5803 - support DOUBLE_[PRECISION] built-in function
+values{fn  sqrt( DOUBLE( 0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn  sqrt( DOUBLE(-0)                      )};
+1                     
+----------------------
+0.0                   
+ij> values{fn  sqrt( DOUBLE( 1)                      )};
+1                     
+----------------------
+1.0                   
+ij> values{fn -sqrt( DOUBLE(1)                       )};
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 11.
+ij> values{fn  sqrt( DOUBLE( 1000000.001)            )};
+1                     
+----------------------
+1000.0000005          
+ij> values{fn -sqrt( DOUBLE(1000000.001)             )};
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 11.
+ij> values{fn -sqrt( DOUBLE(1.79769E+308)            )};
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 11.
+ij> values{fn  sqrt( DOUBLE( 1.79769E+308) + 1       )};
+1                     
+----------------------
+1.3407796239501852E154
+ij> values{fn  sqrt( DOUBLE( 2.225E-307 + 1)         )};
+1                     
+----------------------
+1.0                   
+ij> -- Error
+values{fn  sqrt( DOUBLE(-1)                      )};
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.0'.
+ij> values{fn  sqrt( DOUBLE(-1000000.001)            )};
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1000000.001'.
+ij> values{fn  sqrt( DOUBLE(-1.79769E+308)           )};
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.79769E308'.
+ij> values{fn  sqrt( DOUBLE( 1.79769E+308 * 2)       )};
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn  sqrt(-DOUBLE( NaN)                    )};
+ERROR 42X04: Column 'NAN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NAN' is not a column in the target table.
+ij> values{fn  sqrt( DOUBLE( 4.9E-324)               )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values{fn  sqrt( DOUBLE( 1.7976931348623157E308) )};
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- Decimal/Numeric
+-- Basic
+-- beetle 5802 - support DEC[IMAL] built-in function
+values{ fn sqrt(DEC('0'))};
+ERROR 42X01: Syntax error: Encountered "DEC" at line 4, column 17.
+ij> -- More generic test
+values{ fn sqrt( 0+1+.1 ) };
+1                     
+----------------------
+1.0488088481701516    
+ij> values{ fn sqrt( +0+1.000000001 ) };
+1                     
+----------------------
+1.0000000005          
+ij> VALUES{ FN sqrt( 100+200+300 ) };
+1                     
+----------------------
+24.49489742783178     
+ij> values{ fn sqrt( 0-1-.1 ) };
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.1'.
+ij> values{ fn sqrt( -0-1.000000001 ) };
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-1.000000001'.
+ij> VALUES{ FN sqrt( 100-200-300 ) };
+1                     
+----------------------
+ERROR 22013: Attempt to take the square root of a negative number, '-400.0'.
+ij> -- Error
+values{ fn sqrt('null') };
+ERROR 42X25: The 'SQRT' function is not allowed on the 'CHAR' type.
+ij> -- sqrt as a keyword
+create table sqrt( a int );
+0 rows inserted/updated/deleted
+ij> -- End of SQRT test.
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.  For all valid types, un-escaped function.
+create table myreal( a real );
+0 rows inserted/updated/deleted
+ij> select sqrt(a) from myreal;
+1                     
+----------------------
+ij> insert into myreal values ( 3.402E+38 );
+1 row inserted/updated/deleted
+ij> select a from myreal;
+A            
+-------------
+3.402E38     
+ij> -- Prepare Statements, should pass
+-- beetle 5806 - support REAL built-in function
+autocommit off;
+ij> prepare p1 as 'select a from myreal where ? <> 1';
+ij> execute p1 using 'values  sqrt(REAL( 0 ))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> execute p1 using 'values -sqrt(REAL( 20))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> execute p1 using 'values  sqrt(REAL( 20))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> -- this should fail
+execute p1 using 'values  sqrt(REAL(-20))';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 14.
+ij> -- Prepare Statements, should pass
+-- beetle 5806 - support REAL built-in function
+prepare p2 as 'select a from myreal where ? <> 1';
+ij> execute p2 using 'values {fn sqrt (REAL( 0 ))}';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 18.
+ij> execute p2 using 'values {fn -sqrt(REAL( 20))}';
+ERROR 42X01: Syntax error: Encountered "-" at line 1, column 12.
+ij> execute p2 using 'values {fn sqrt (REAL( 20))}';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 18.
+ij> -- this should fail
+execute p2 using 'values {fn  sqrt(REAL(-20))}';
+ERROR 42X01: Syntax error: Encountered "REAL" at line 1, column 18.
+ij> autocommit on;
+ij> -- mod function
+create table modfn(s smallint, i int, b bigint, c char(10), d decimal(6,3), r real, dbl double);
+0 rows inserted/updated/deleted
+ij> insert into modfn values(0, 0, 0, '0', 0.0, 0.0, 0.0);
+1 row inserted/updated/deleted
+ij> insert into modfn values(5, 5, 5, '5', 5.0, 5.0, 5.0);
+1 row inserted/updated/deleted
+ij> insert into modfn values(null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> select { fn mod(s, 3) } from modfn;
+1          
+-----------
+0          
+2          
+NULL       
+ij> select { fn mod(i, 3) } from modfn;
+1          
+-----------
+0          
+2          
+NULL       
+ij> select { fn mod(b, 3) } from modfn;
+1                   
+--------------------
+0                   
+2                   
+NULL                
+ij> select { fn mod(c, 3) } from modfn;
+1          
+-----------
+0          
+2          
+NULL       
+ij> select { fn mod(d, 3) } from modfn;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'DECIMAL' and a right operand type of 'INTEGER' is not supported.
+ij> select { fn mod(r, 3) } from modfn;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'REAL' and a right operand type of 'INTEGER' is not supported.
+ij> select { fn mod(dbl, 3) } from modfn;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'DOUBLE' and a right operand type of 'INTEGER' is not supported.
+ij> select { fn mod(67, t) } from modfn where s <> 0;
+ERROR 42X04: Column 'T' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T' is not a column in the target table.
+ij> select { fn mod(67, s) } from modfn where s <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, i) } from modfn where s <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, b) } from modfn where s <> 0;
+1                   
+--------------------
+2                   
+ij> select { fn mod(67, c) } from modfn where s <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, d) } from modfn where s <> 0;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'INTEGER' and a right operand type of 'DECIMAL' is not supported.
+ij> select { fn mod(67, r) } from modfn where s <> 0;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'INTEGER' and a right operand type of 'REAL' is not supported.
+ij> select { fn mod(67, dbl) } from modfn where s <> 0;
+ERROR 42Y95: The 'mod' operator with a left operand type of 'INTEGER' and a right operand type of 'DOUBLE' is not supported.
+ij> select { fn mod(s, s) } from modfn where s = 0;
+1     
+------
+ERROR 22012: Attempt to divide by zero.
+ij> select { fn mod(i, i) } from modfn where s = 0;
+1          
+-----------
+ERROR 22012: Attempt to divide by zero.
+ij> select { fn mod(i, b) } from modfn where s = 0;
+1                   
+--------------------
+ERROR 22012: Attempt to divide by zero.
+ij> select { fn mod(s, s) } from modfn where s is null;
+1     
+------
+NULL  
+ij> select { fn mod(i, i) } from modfn where s is null;
+1          
+-----------
+NULL       
+ij> select { fn mod(i, b) } from modfn where s is null;
+1                   
+--------------------
+NULL                
+ij> select { fn mod(67, i) } from modfn where i <> 0;
+1          
+-----------
+2          
+ij> select { fn mod(67, b) } from modfn where b <> 0;
+1                   
+--------------------
+2                   
+ij> -- this query should fail because of incompatible arguments
+select { fn mod('rrrr', b) } from modfn  where b <> 0;
+1                   
+--------------------
+ERROR 22018: Invalid character string format for type BIGINT.
+ij> values { fn mod(23, 9)};
+1          
+-----------
+5          
+ij> values mod(23, 9);
+1          
+-----------
+5          
+ij> create table mod(mod int);
+0 rows inserted/updated/deleted
+ij> insert into mod values(1);
+1 row inserted/updated/deleted
+ij> select mod from mod;
+MOD        
+-----------
+1          
+ij> select mod(mod,mod) from mod;
+1          
+-----------
+0          
+ij> drop table mod;
+0 rows inserted/updated/deleted
+ij> drop table modfn;
+0 rows inserted/updated/deleted
+ij> -- Using Strings in escape function
+create table myStr( a varchar(10) );
+0 rows inserted/updated/deleted
+ij> insert into myStr values ( '123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( ' 123' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( ' 12 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '  2 ' );
+1 row inserted/updated/deleted
+ij> insert into myStr values ( '1a3' );
+1 row inserted/updated/deleted
+ij> select * from myStr;
+A         
+----------
+123       
+ 123      
+ 12       
+  2       
+1a3       
+ij> select sqrt(a) from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'VARCHAR' type.
+ij> select {fn sqrt(a)} from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'VARCHAR' type.
+ij> select {fn sqrt( '-12' ) } from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'CHAR' type.
+ij> select {fn sqrt( '-1a2' ) } from myStr;
+ERROR 42X25: The 'SQRT' function is not allowed on the 'CHAR' type.
+ij> drop table myreal;
+0 rows inserted/updated/deleted
+ij> drop table myStr;
+0 rows inserted/updated/deleted
+ij> -- End of SQRT test
+-- CHAR AND VARCHAR 
+--
+-- create some tables
+create table t1 (c15a char(15), c15b char(15), vc15a varchar(15),
+	vc15b varchar(15), lvc long varchar);
+0 rows inserted/updated/deleted
+ij> create table t2 (c20 char(20), c30 char(30), c40 char(40),
+				 vc20 varchar(20), vc30 varchar(30), vc40 varchar(40),
+				lvc long varchar);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 (c15a) values(null);
+1 row inserted/updated/deleted
+ij> insert into t1 values('1', '2', '3', '4', '5');
+1 row inserted/updated/deleted
+ij> insert into t1 values('111111', '222222222222222', 
+					  '333333', '444444444444444',
+					'555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555');
+1 row inserted/updated/deleted
+ij> insert into t1 values('555555    ', '66          ', 
+					  '777777    ', '88          ',
+					'99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     ');
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- mixing char and bit (illegal)
+values X'11' || 'asdf';
+ERROR 42884: No authorized routine named '||' of type 'FUNCTION' having compatible arguments was found.
+ij> values 'adsf' || X'11';
+ERROR 42884: No authorized routine named '||' of type 'FUNCTION' having compatible arguments was found.
+ij> -- ? parameter on both sides
+values ? || ?;
+ERROR 42X35: It is not allowed for both operands of '||' to be ? parameters.
+ij> -- simple positive
+values 'aaa' || 'bbb';
+1     
+------
+aaabbb
+ij> values X'aaaa' || X'bbbb';
+1       
+--------
+aaaabbbb
+ij> -- non-blank truncation error on char result
+insert into t2 (c20) select c15a || c15b from t1 where c15a = '111111';
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '111111         222222222222222' to length 20.
+ij> insert into t2 (vc20) select vc15a || vc15b from t1 where c15a= '111111';
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '333333444444444444444' to length 20.
+ij> insert into t2 (c20) select lvc || lvc from t1 where c15a = '111111';
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '555555555555555555555555555555555555555555555555555555555555&' to length 20.
+ij> maximumdisplaywidth 512;
+ij> -- positive tests
+-- blank truncation on varchar
+insert into t2 (c20) select vc15a || vc15b from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c20 from t2;
+C20                 
+--------------------
+777777    88        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- no blank truncation on char
+insert into t2 (c30) select c15a || c15b from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+555555         66             
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- long varchar
+insert into t2 (c30) select lvc || lvc from t1 where c15a = '1';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+55                            
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- vc || c -> vc
+insert into t2 (c30) select vc15a || c15a from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+777777    555555              
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- c || vc -> vc
+insert into t2 (c30) select c15a || vc15a || '9' from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select c30 from t2;
+C30                           
+------------------------------
+555555         777777    9    
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- vc || c -> lvc
+insert into t2 (lvc) select c15a || vc15a from t1 where c15a = '555555    ';
+1 row inserted/updated/deleted
+ij> select lvc from t2;
+LVC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+555555         777777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+ij> select length(lvc) from t2;
+1          
+-----------
+25         
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- lvc || lvc - > lvc
+insert into t2 (lvc) select lvc || lvc from t1;
+4 rows inserted/updated/deleted
+ij> select lvc from t2;
+LVC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+55                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
+555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555                                                                                                                                                                          
+99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                                                                                                                                                                                                                                     
+ij> delete from t2;
+4 rows inserted/updated/deleted
+ij> -- Parameters can be used in DB2 UDB if one operand is either CHAR(n) or VARCHAR(n), 
+-- where n is less than 128, then other is VARCHAR(254 - n). 
+-- In all other cases the data type is VARCHAR(254).
+autocommit off;
+ij> -- ? || c
+prepare pc as 'select ? || c15a from t1';
+ij> execute pc using 'values (''left'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+left1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+left111111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+left555555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+ij> -- c || ?
+prepare cp as 'select c15a || ? from t1';
+ij> execute cp using 'values (''right'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+1              right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+111111         right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+555555         right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+ij> -- ? || v
+prepare pv as 'select ? || vc15a from t1';
+ij> execute pv using 'values (''left'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+left3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+left333333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+left777777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
+ij> -- v || ?
+prepare vp as 'select vc15a || ? from t1';
+ij> execute vp using 'values (''right'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+3right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+333333right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
+777777    right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
+ij> -- Parameters cannot be used in DB2 UDB 
+-- if one operand is a long varchar [for bit data] data type. 
+-- An invalid parameter marker error is thrown in DB2 UDB (SQLSTATE 42610).
+-- lvc || ?
+prepare lvp as 'select lvc || ? from t1';
+ij> execute lvp using 'values (''right'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+5right                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555right                                                                                                                                                                                                                                                                                                                                                
+99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     right                                                                                                                                                                                                                                                                                                                                                                   
+ij> -- ? || lvc
+prepare plv as 'select ? || lvc from t1';
+ij> execute plv using 'values (''left'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+left5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+left555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555                                                                                                                                                                                                                                                                                                                                                 
+left99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                                                                                                                                                                                                                                                                                                                                                                                         
+ij> autocommit on;
+ij> -- multiple concatenations
+insert into t2 (c30, vc30) values ('111  ' || '222  ' || '333   ',
+								   '444  ' || '555  ' || '666   ');
+1 row inserted/updated/deleted
+ij> select c30, vc30 from t2;
+C30                           |VC30                          
+-------------------------------------------------------------
+111  222  333                 |444  555  666                 
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- concatenation on a long varchar
+create table t3 (c1 long varchar, c2 long varchar);
+0 rows inserted/updated/deleted
+ij> insert into t3 values ('c1   ', 'c2');
+1 row inserted/updated/deleted
+ij> insert into t2 (c30, vc30) select t3.c1 || t3.c2, t3.c2 || t3.c1 from t3;
+1 row inserted/updated/deleted
+ij> select c30, vc30 from t2;
+C30                           |VC30                          
+-------------------------------------------------------------
+c1   c2                       |c2c1                          
+ij> delete from t2;
+1 row inserted/updated/deleted
+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> ------------------------------------------------------------------------------------
+-- CHAR (n) FOR BIT DATA AND VARCHAR (n) FOR BIT DATA
+-- try some cases zero length cases
+values X''|| X'80';
+1 
+--
+80
+ij> values X'01'|| X'';
+1 
+--
+01
+ij> -- create some tables
+create table t1 (b16a char(2) for bit data, b16b char(2) for bit data, vb16a varchar(2) for bit data, vb16b varchar(2) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> create table t2 (b20 char(3) for bit data, b60 char(8) for bit data, b80 char(10) for bit data,
+				 vb20 varchar(3) for bit data, vb60 varchar(8) for bit data, vb80 varchar(10) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 (b16a) values(null);
+1 row inserted/updated/deleted
+ij> insert into t1 values(X'11', X'22', X'33', X'44', X'55');
+1 row inserted/updated/deleted
+ij> insert into t1 values(X'1111', X'2222', 
+					  X'3333', X'4444',
+					  X'5555');
+1 row inserted/updated/deleted
+ij> insert into t1 values(X'5555', X'66', 
+					  X'7777', X'88',
+					  X'9999');
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- non-blank truncation error on bit result
+insert into t2 (b20) select b16a || b16b from t1 where b16a = X'1111';
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA '11112222' to length 3.
+ij> insert into t2 (vb20) select vb16a || vb16b from t1 where b16a= X'1111';
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR () FOR BIT DATA '33334444' to length 3.
+ij> -- positive tests
+-- truncation on bit varying
+insert into t2 (b20) select vb16a || vb16b from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select b20 from t2;
+B20   
+------
+777788
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- bc || b -> vb
+insert into t2 (b80) select vb16a || b16a from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select b80 from t2;
+B80                 
+--------------------
+77775555202020202020
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- b || vb -> vb
+insert into t2 (b80) select b16a || vb16a || X'99' from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select b80 from t2;
+B80                 
+--------------------
+55557777992020202020
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- b || lbv -> lbv
+insert into t2 (lbv) select b16a || lbv from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+55559999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- lbv || b -> lbv
+insert into t2 (lbv) select lbv || b16a from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+99995555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- vb || lbv -> lbv
+insert into t2 (lbv) select vb16a || lbv from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+77779999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- lbv || vb -> lbv
+insert into t2 (lbv) select lbv || vb16a from t1 where b16a = X'5555';
+1 row inserted/updated/deleted
+ij> select lbv from t2;
+LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+99997777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- Parameters can be used in DB2 UDB 
+-- if one operand is either CHAR(n) [for bit data] or VARCHAR(n) [for bit data], 
+-- where n is less than 128, then other is VARCHAR(254 - n). 
+-- In all other cases the data type is VARCHAR(254).
+autocommit off;
+ij> -- ? || b
+prepare pb as 'select ? || b16a from t1';
+ij> execute pb using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+abcd1120                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd1111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd5555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- b || ?
+prepare bp as 'select b16a || ? from t1';
+ij> execute bp using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+1120abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+1111abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+5555abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- ? || vb
+prepare pvb as 'select ? || vb16a from t1';
+ij> execute pvb using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+abcd33                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+abcd3333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd7777                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- vb || ?
+prepare vbp as 'select vb16a || ? from t1';
+ij> execute vbp using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+33abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+3333abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+7777abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- Parameters cannot be used in DB2 UDB 
+-- if one operand is a long varchar [for bit data] data type. 
+-- An invalid parameter marker error is thrown in DB2 UDB (SQLSTATE 42610).
+-- ? || lbv
+prepare plbv as 'select ? || lbv from t1';
+ij> execute plbv using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+abcd55                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+abcd5555                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+abcd9999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> -- lbv || ?
+prepare lbvp as 'select lbv || ? from t1';
+ij> execute lbvp using 'values (X''ABCD'')';
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
+55abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
+5555abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+9999abcd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> autocommit on;
+ij> -- multiple concatenations
+insert into t2 (b80, vb80, lbv) values (X'e0' || X'A0' || X'20',
+								   X'10' || X'11' || X'e0',
+								   X'1234' || X'A0' || X'20');
+1 row inserted/updated/deleted
+ij> select b80, vb80, lbv from t2;
+B80                 |VB80                |LBV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+e0a02020202020202020|1011e0              |1234a020                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- concatenation on a byte
+create table t3 (b1 char(1) for bit data, b2 char(1) for bit data);
+0 rows inserted/updated/deleted
+ij> insert into t3 values (X'11', X'22');
+1 row inserted/updated/deleted
+ij> insert into t2 (b80, vb80) select t3.b1 || t3.b2, t3.b2 || t3.b1 from t3;
+1 row inserted/updated/deleted
+ij> select b80, vb80 from t2;
+B80                 |VB80                
+-----------------------------------------
+11222020202020202020|2211                
+ij> delete from t2;
+1 row inserted/updated/deleted
+ij> -- clean up the prepared statements
+remove pc;
+ij> remove cp;
+ij> remove vp;
+ij> remove pv;
+ij> remove pb;
+ij> remove bp;
+ij> remove pvb;
+ij> remove vbp;
+ij> remove lvp;
+ij> remove plv;
+ij> remove plbv;
+ij> remove lbvp;
+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> -- reset maximumdisplaywidth
+maximumdisplaywidth 128;
+ij> --
+--
+-- the like tests are all run through the unit test
+-- mechanism that is fired off with this test's
+-- properties file.  that test tests all the %, _ combinations
+-- to exhaustion.
+--
+-- we show that the language level support works, here, which is:
+-- the syntax
+-- char and varchar columns
+-- not can be applied and pushed around with it
+-- parameters (would need to be .java to show completely...)
+-- not other types of columns
+--
+create table t (c char(20), v varchar(20), lvc long varchar);
+0 rows inserted/updated/deleted
+ij> insert into t values('hello','world', 'nice day, huh?');
+1 row inserted/updated/deleted
+ij> insert into t values('goodbye','planet', 'see you later');
+1 row inserted/updated/deleted
+ij> insert into t values('aloha','orb', 'hang loose');
+1 row inserted/updated/deleted
+ij> -- subquery on left side
+select * from t where (select max(c) from t) like '%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+goodbye             |planet              |see you later                                                                                                                   
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where c like 'h%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+ij> select * from t where v like '%or%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where lvc like '%y%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+goodbye             |planet              |see you later                                                                                                                   
+ij> -- these four should all have the same results:
+select * from t where not v like '%or%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> select * from t where not (v like '%or%');
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> select * from t where 1=0 or not v like '%or%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> select * from t where not (1=0 or not v not like '%or%');
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+goodbye             |planet              |see you later                                                                                                                   
+ij> -- these two should have the same results:
+select * from t where c like '%lo%' or v like '%o%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where v like '%o%' or c like '%lo%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> -- these three should have the same results:
+select * from t where c like '%lo%' and 0=0;
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where c like '%lo%' and 1=1;
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> select * from t where 1=1 and c like '%lo%';
+C                   |V                   |LVC                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+hello               |world               |nice day, huh?                                                                                                                  
+aloha               |orb                 |hang loose                                                                                                                      
+ij> -- we can at least show the parameters compile...
+autocommit off;
+ij> prepare s as 'select * from t where v like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where ? like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where c like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where lvc like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> prepare s as 'select * from t where lvc like ?';
+ij> execute s;
+ERROR 07000: At least one parameter to the current statement is uninitialized.
+ij> autocommit on;
+ij> create table n (i int, r real, d date, u char(10));
+0 rows inserted/updated/deleted
+ij> -- these should succeed
+insert into n values (1, 1.1, date('1111-11-11'), '%');
+1 row inserted/updated/deleted
+ij> insert into n values (2, 2.2, date('2222-2-2'), 'haha');
+1 row inserted/updated/deleted
+ij> select * from n where u like 'haha______';
+I          |R            |D         |U         
+-----------------------------------------------
+2          |2.2          |2222-02-02|haha      
+ij> -- now, with an index
+create table m (i int, r real, d date, u varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into m select * from n;
+2 rows inserted/updated/deleted
+ij> select * from m where u like 'haha';
+I          |R            |D         |U         
+-----------------------------------------------
+ij> select * from m where u like 'haha______';
+I          |R            |D         |U         
+-----------------------------------------------
+2          |2.2          |2222-02-02|haha      
+ij> create index i1 on m(u);
+0 rows inserted/updated/deleted
+ij> select * from m where u like 'haha';
+I          |R            |D         |U         
+-----------------------------------------------
+ij> select * from m where u like 'haha______';
+I          |R            |D         |U         
+-----------------------------------------------
+2          |2.2          |2222-02-02|haha      
+ij> -- tests for column like constant optimization
+create table u (c char(10), vc varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into u values ('hello', 'hello');
+1 row inserted/updated/deleted
+ij> select * from u where c like 'hello';
+C         |VC        
+---------------------
+ij> select * from u where vc like 'hello';
+C         |VC        
+---------------------
+hello     |hello     
+ij> select * from u where c like 'hello     ';
+C         |VC        
+---------------------
+hello     |hello     
+ij> select * from u where vc like 'hello     ';
+C         |VC        
+---------------------
+ij> -- cleanup
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table n;
+0 rows inserted/updated/deleted
+ij> drop table m;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> -- testing JDBC escaped length function
+-- JDBC length is defined as the number of characters in a string without trailing blanks.
+values {FN LENGTH('hello     ') };
+1          
+-----------
+5          
+ij> values {FN LENGTH(rtrim('hello     ')) };
+1          
+-----------
+5          
+ij> -- defect 5749. rtrim() over substr() used to raise ASSERT failure.
+create table t1 (c1 char(10));
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('testing');
+1 row inserted/updated/deleted
+ij> select rtrim(substr(' asdf', 1, 3)) from t1;
+1   
+----
+ as 
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/errorCode.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/errorCode.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,56 @@
+ij> --
+-- this test shows the error code functionality
+--
+-- specify an invalid driver
+driver 'java.lang.Integer';
+IJ ERROR: Could not locate class java.lang.Integer
+ij> -- now a valid driver
+driver 'org.apache.derby.jdbc.EmbeddedDriver';
+ij> -- specify an invalid database
+connect 'asdfasdf';
+ERROR 08001: Driver not found: asdfasdf (errorCode = 0)
+ij> -- now a valid database, but no create
+connect 'jdbc:derby:wombat';
+ERROR XJ004: Database 'wombat' not found. (errorCode = 40000)
+ij> -- now a valid database
+connect 'jdbc:derby:wombat;create=true';
+ij> -- create the table
+create table t(i int, s smallint);
+0 rows inserted/updated/deleted
+ij> -- populate the table
+insert into t values (1,2);
+1 row inserted/updated/deleted
+ij> insert into t values (null,2);
+1 row inserted/updated/deleted
+ij> -- parser error
+-- bug 5701
+create table t(i nt, s smallint);
+ERROR 42X01: Syntax error: Encountered "" at line 3, column 18. (errorCode = 30000)
+ij> -- non-boolean where clause
+select * from t where i;
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression. (errorCode = 30000)
+ij> -- invalid correlation name for "*"
+select asdf.* from t;
+ERROR 42X10: 'ASDF' is not an exposed table name in the scope in which it appears. (errorCode = 30000)
+ij> -- execution time error
+select i/0 from t;
+1          
+-----------
+ERROR 22012: Attempt to divide by zero. (errorCode = 30000)
+ij> -- test ErrorMessages VTI
+select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '07000';
+SQL_&|MESSAGE                                                                                                                         |SEVERITY   
+--------------------------------------------------------------------------------------------------------------------------------------------------
+07000|At least one parameter to the current statement is uninitialized.                                                               |20000      
+ij> select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '22012';
+SQL_&|MESSAGE                                                                                                                         |SEVERITY   
+--------------------------------------------------------------------------------------------------------------------------------------------------
+22012|Attempt to divide by zero.                                                                                                      |20000      
+ij> select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '42X74';
+SQL_&|MESSAGE                                                                                                                         |SEVERITY   
+--------------------------------------------------------------------------------------------------------------------------------------------------
+42X74|Invalid CALL statement syntax.                                                                                                  |20000      
+ij> -- cleanup
+drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/floattypes.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2422 @@
+ij> -- ** insert decimal.sql
+--
+-- Test DECIMAL and NUMERIC.  Note that we
+-- know that DECIMAL and NUMERIC are pretty much the
+-- same thing, so we don't do much testing with
+-- the two types other than to make sure the 
+-- syntax is the same.
+-- test some of the meta data
+drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> create table tmp (tmpcoldecimal dec(8,4), tmpcolnumeric numeric);
+0 rows inserted/updated/deleted
+ij> select columndatatype 
+	from sys.syscolumns 
+	where columnname like 'TMPCOL%';
+COLUMNDATATYPE 
+---------------
+DECIMAL(8,4)   
+NUMERIC(5,0)   
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- Negative tests, bad precision/scale
+create table bad (d decimal(11,12));
+ERROR 42Y43: Scale '12' is not a valid scale with precision of '11'.
+ij> create table bad (d decimal(0,0));
+ERROR 42X48: Value '0' is not a valid precision for DECIMAL.
+ij> create table bad (d decimal(0));
+ERROR 42X48: Value '0' is not a valid precision for DECIMAL.
+ij> create table bade(d decimal(32));
+ERROR 42X48: Value '32' is not a valid precision for DECIMAL.
+ij> create table bade(d decimal(31,32));
+ERROR 42Y42: Scale '32' is not a valid scale for a DECIMAL.
+ij> create table bade(d decimal(32,32));
+ERROR 42X48: Value '32' is not a valid precision for DECIMAL.
+ij> -- Simple acceptance test
+values cast (1 as dec);
+1     
+------
+1     
+ij> values cast (1 as decimal);
+1     
+------
+1     
+ij> values cast (1 as decimal(5));
+1     
+------
+1     
+ij> values cast (1 as dec(5));
+1     
+------
+1     
+ij> values cast (1.1 as dec(5,3));
+1       
+--------
+1.100   
+ij> values cast (1.1 as numeric(5,3));
+1       
+--------
+1.100   
+ij> -- cast to all valid types
+values cast (1.1 as int);
+1          
+-----------
+1          
+ij> values cast (1.1 as bigint);
+1                   
+--------------------
+1                   
+ij> values cast (1.1 as smallint);
+1     
+------
+1     
+ij> values cast (1.1 as real);
+1            
+-------------
+1.1          
+ij> values cast (1.1 as float);
+1                     
+----------------------
+1.1                   
+ij> values cast (1.1 as char(10));
+1         
+----------
+1.1       
+ij> -- cast all valid types to dec
+values cast ((cast (1 as int)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as bigint)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as smallint)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as real)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as float)) as dec);
+1     
+------
+1     
+ij> values cast ((cast (1 as char(10))) as dec);
+1     
+------
+1     
+ij> -- cast overflow,
+-- make a number bigger than everything but 
+-- decimal, and then try to cast it
+drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> create table tmp(d decimal(31 ,0));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (cast (
+'100000000000000000000000000000' as dec(31,0)));
+1 row inserted/updated/deleted
+ij> update tmp set d = d * d;
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> select cast(d as int) from tmp;
+1          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select cast(d as smallint) from tmp;
+1     
+------
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> select cast(d as bigint) from tmp;
+1                   
+--------------------
+ERROR 22003: The resulting value is outside the range for the data type BIGINT.
+ij> select cast(d as float) from tmp;
+1                     
+----------------------
+1.0E29                
+ij> select cast(d as real) from tmp;
+1            
+-------------
+1.0E29       
+ij> select cast(d as double precision) from tmp;
+1                     
+----------------------
+1.0E29                
+ij> -- test alternative syntax
+select cast(d as double) from tmp;
+1                     
+----------------------
+1.0E29                
+ij> insert into tmp values (+1.79769E+308);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> select * from tmp;
+D                               
+--------------------------------
+100000000000000000000000000000  
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- try inserting various types into decimal.
+-- we expect silent truncation of the fraction
+drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> create table tmp (d decimal(5,2));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (100);
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as smallint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as bigint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as real));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100 as double precision));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (100.999 as real));
+1 row inserted/updated/deleted
+ij> insert into tmp values (100.999e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (100.999);
+1 row inserted/updated/deleted
+ij> --too big
+insert into tmp values (1000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as smallint));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as bigint));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as real));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000 as double precision));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (cast (1000.999 as real));
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000.999e0);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000.999);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> --try a few values that hit borders in how java.lang.Double work
+--(this is really tied to some details in the internals of
+-- SQLDecimal)
+insert into tmp values (1000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (1000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (10000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (100000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-1000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-10000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> insert into tmp values (-100000000000000);
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(5,2).
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> create table tmp(d dec(1,1));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (0.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.1e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.1e0);
+1 row inserted/updated/deleted
+ij> select * from tmp;
+D   
+----
+0.0 
+0.0 
+0.1 
+-0.1
+0.1 
+-0.1
+ij> delete from tmp;
+6 rows inserted/updated/deleted
+ij> insert into tmp values (0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (0.0e10);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-0.0e10);
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (0 as smallint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (0 as bigint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (0 as real));
+1 row inserted/updated/deleted
+ij> select * from tmp;
+D   
+----
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+0.0 
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> create table tmp(d dec(1,0));
+0 rows inserted/updated/deleted
+ij> insert into tmp values (1.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (1.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-1.0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-1);
+1 row inserted/updated/deleted
+ij> insert into tmp values (-1.0e0);
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (1 as smallint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (1 as bigint));
+1 row inserted/updated/deleted
+ij> insert into tmp values (cast (1 as real));
+1 row inserted/updated/deleted
+ij> select * from tmp;
+D   
+----
+1   
+1   
+1   
+-1  
+-1  
+-1  
+1   
+1   
+1   
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- Using the DOUBLE built-in function
+-- test that double maps to the double data type
+-- all of the following should work if DOUBLE appears in the COLUMNDATATYPE column
+create table tmp (x double);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (1);
+1 row inserted/updated/deleted
+ij> select columnname, columndatatype 
+       from sys.syscolumns c, sys.systables t 
+       where c.referenceid = t .tableid and t.tablename='TMP';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+X                                                                                                                               |DOUBLE         
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> -- cast dec as as a numeric type in a select list
+create table tmp (d decimal);
+0 rows inserted/updated/deleted
+ij> insert into tmp values (1.1);
+1 row inserted/updated/deleted
+ij> --should all pass
+insert into tmp values (1);
+1 row inserted/updated/deleted
+ij> select cast(d as int) from tmp;
+1          
+-----------
+1          
+1          
+ij> select cast(d as smallint) from tmp;
+1     
+------
+1     
+1     
+ij> select cast(d as bigint) from tmp;
+1                   
+--------------------
+1                   
+1                   
+ij> select cast(d as float) from tmp;
+1                     
+----------------------
+1.0                   
+1.0                   
+ij> select cast(d as real) from tmp;
+1            
+-------------
+1.0          
+1.0          
+ij> select cast(d as double precision) from tmp;
+1                     
+----------------------
+1.0                   
+1.0                   
+ij> select cast(d as dec(10,2)) from tmp;
+1            
+-------------
+1.00         
+1.00         
+ij> select cast(d as dec(10,8)) from tmp;
+1            
+-------------
+1.00000000   
+1.00000000   
+ij> drop table tmp;
+0 rows inserted/updated/deleted
+ij> drop table t;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T' because it does not exist.
+ij> create table t (i int, 
+				l bigint,
+				s smallint, 
+				d double precision,
+				r real,
+				dc decimal(10,2));
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (10,		-- int
+						10,		-- bigint
+						10,		-- smallint	
+						10,		-- double
+						10,		-- real
+						10		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> insert into t values (-10,		-- int
+						-10,	-- bigint
+						-10,	-- smallint	
+						-10,	-- double
+						-10,	-- real
+						-10		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> insert into t values (0,		-- int
+						0,		-- bigint
+						0,		-- smallint	
+						0,		-- double
+						0,		-- real
+						0		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> select dc from t;
+DC           
+-------------
+NULL         
+10.00        
+-10.00       
+0.00         
+ij> select dc + i, dc + s, dc + r, dc + dc from t;
+1               |2             |3            |4             
+------------------------------------------------------------
+NULL            |NULL          |NULL         |NULL          
+20.00           |20.00         |20.0         |20.00         
+-20.00          |-20.00        |-20.0        |-20.00        
+0.00            |0.00          |0.0          |0.00          
+ij> select dc - i, dc - s, dc - r, dc - dc from t;
+1               |2             |3            |4             
+------------------------------------------------------------
+NULL            |NULL          |NULL         |NULL          
+0.00            |0.00          |0.0          |0.00          
+0.00            |0.00          |0.0          |0.00          
+0.00            |0.00          |0.0          |0.00          
+ij> select dc * i, dc * s, dc * r, dc * dc from t;
+1                      |2                 |3            |4                      
+--------------------------------------------------------------------------------
+NULL                   |NULL              |NULL         |NULL                   
+100.00                 |100.00            |100.0        |100.0000               
+100.00                 |100.00            |100.0        |100.0000               
+0.00                   |0.00              |0.0          |0.0000                 
+ij> select dc / i, dc / s, dc / r, dc / dc from t;
+1                                 |2                                 |3            |4                                 
+----------------------------------------------------------------------------------------------------------------------
+NULL                              |NULL                              |NULL         |NULL                              
+1.00000000000000000000000         |1.00000000000000000000000         |1.0          |1.000000000000000000000           
+1.00000000000000000000000         |1.00000000000000000000000         |1.0          |1.000000000000000000000           
+ERROR 22012: Attempt to divide by zero.
+ij> -- try unary minus, plus
+select -(dc * 100 / 100e0 ), +(dc * 100e0 / 100 ) from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-10.0                 |10.0                  
+10.0                  |-10.0                 
+0.0                   |0.0                   
+ij> -- test null/null, constant/null, null/constant
+select dc, i / dc, 10 / dc, dc / 10e0 from t;
+DC           |2                                 |3                                 |4                     
+----------------------------------------------------------------------------------------------------------
+NULL         |NULL                              |NULL                              |NULL                  
+10.00        |1.0000000000000000000             |1.0000000000000000000             |1.0                   
+-10.00       |1.0000000000000000000             |-1.0000000000000000000            |-1.0                  
+ERROR 22012: Attempt to divide by zero.
+ij> -- test for divide by 0
+select dc / i from t;
+1                                 
+----------------------------------
+NULL                              
+1.00000000000000000000000         
+1.00000000000000000000000         
+ERROR 22012: Attempt to divide by zero.
+ij> select 20e0 / 5e0 / 4e0, 20e0 / 4e0 / 5 from t;
+1                     |2                     
+---------------------------------------------
+1.0                   |1.0                   
+1.0                   |1.0                   
+1.0                   |1.0                   
+1.0                   |1.0                   
+ij> -- test positive/negative, negative/positive and negative/negative
+select dc, dc / -dc, (-dc) / dc, (-dc) / -dc from t;
+DC           |2                                 |3                                 |4                                 
+----------------------------------------------------------------------------------------------------------------------
+NULL         |NULL                              |NULL                              |NULL                              
+10.00        |-1.000000000000000000000          |-1.000000000000000000000          |1.000000000000000000000           
+-10.00       |-1.000000000000000000000          |-1.000000000000000000000          |1.000000000000000000000           
+ERROR 22012: Attempt to divide by zero.
+ij> -- test some "more complex" expressions
+select dc, dc + 10e0, dc - (10 - 20e0), dc - 10, dc - (20 - 10) from t;
+DC           |2                     |3                     |4               |5               
+---------------------------------------------------------------------------------------------
+NULL         |NULL                  |NULL                  |NULL            |NULL            
+10.00        |20.0                  |20.0                  |0.00            |0.00            
+-10.00       |0.0                   |0.0                   |-20.00          |-20.00          
+0.00         |10.0                  |10.0                  |-10.00          |-10.00          
+ij> -- make sure we get the right scale/precision during arithmetic
+values (9.0 + 9.0);
+1     
+------
+18.0  
+ij> values (9.9 + 9.9);
+1     
+------
+19.8  
+ij> values (-9.0 - 9.0);
+1     
+------
+-18.0 
+ij> values (-9.9 - 9.9);
+1     
+------
+-19.8 
+ij> values (9.0 * 9.0);
+1      
+-------
+81.00  
+ij> values (9.9 * 9.9);
+1      
+-------
+98.01  
+ij> values (0.9 * 0.9);
+1    
+-----
+0.81 
+ij> values (0.9999 * 0.9);
+1       
+--------
+0.89991 
+ij> values (0.9 * 0.9999);
+1       
+--------
+0.89991 
+ij> values (0.9999 * 0.9999);
+1          
+-----------
+0.99980001 
+ij> values (1.0 / 3.0);
+1                                 
+----------------------------------
+0.33333333333333333333333333333   
+ij> values (1.0 / 0.3);
+1                                 
+----------------------------------
+3.33333333333333333333333333333   
+ij> values (1.0 / 0.03);
+1                                 
+----------------------------------
+33.3333333333333333333333333333   
+ij> values (1.0 / 0.000003);
+1                                 
+----------------------------------
+333333.333333333333333333333333   
+ij> values (10000.0 / 0.000003);
+1                                 
+----------------------------------
+3333333333.33333333333333333333   
+ij> values (0.0001 / 0.0003);
+1                                 
+----------------------------------
+0.333333333333333333333333333     
+ij> values (0.1 / 3.0);
+1                                 
+----------------------------------
+0.033333333333333333333333333333  
+ij> -- huge number
+values (
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)));
+1                               
+--------------------------------
+69757574410000000000000000      
+ij> values cast(1.7e30 as dec(31));
+1                               
+--------------------------------
+1700000000000000000000000000000 
+ij> --try a tiny number 
+-- the following seems to be asking a bit
+-- too much of poor old biginteger, so try
+-- something smaller
+--values (cast(1.7e-307 as dec(2147483647,2147483640)) /
+--		(cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647))));
+--
+values cast(1 as dec(31, 20));
+1                                 
+----------------------------------
+1.00000000000000000000            
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table w (x dec, y long varchar);
+0 rows inserted/updated/deleted
+ij> select x + y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> select x - y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> select x * y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> select x / y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DECIMAL'.
+ij> -- clean up after ourselves
+drop table w;
+0 rows inserted/updated/deleted
+ij> --
+-- comparisons
+--
+insert into t values (123,			-- int
+						123,		-- bigint
+						123,		-- smallint	
+						1234.56,	-- double
+						1234.56,	-- real
+						1234.56		-- decimal(10,2)		
+						 );
+1 row inserted/updated/deleted
+ij> -- test =
+select dc from t where dc is null;
+DC           
+-------------
+NULL         
+ij> select dc from t where dc = 10;
+DC           
+-------------
+10.00        
+ij> select dc from t where dc = -10;
+DC           
+-------------
+-10.00       
+ij> select dc from t where dc = 0;
+DC           
+-------------
+0.00         
+ij> select dc from t where dc = 1234.45;
+DC           
+-------------
+ij> select dc from t where dc = i;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc = l;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc = s;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc = r;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc = d;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc = dc;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> -- test >
+select dc from t where dc > 10;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > -10;
+DC           
+-------------
+10.00        
+0.00         
+1234.56      
+ij> select dc from t where dc > 0;
+DC           
+-------------
+10.00        
+1234.56      
+ij> select dc from t where dc > 1234.45;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > i;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > l;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > s;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc > r;
+DC           
+-------------
+ij> select dc from t where dc > d;
+DC           
+-------------
+ij> select dc from t where dc > dc;
+DC           
+-------------
+ij> -- test >=
+select dc from t where dc >= 10;
+DC           
+-------------
+10.00        
+1234.56      
+ij> select dc from t where dc >= -10;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= 0;
+DC           
+-------------
+10.00        
+0.00         
+1234.56      
+ij> select dc from t where dc >= 1234.45;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc >= i;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= l;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= s;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= r;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= d;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc >= dc;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> -- test <
+select dc from t where dc < 10;
+DC           
+-------------
+-10.00       
+0.00         
+ij> select dc from t where dc < -10;
+DC           
+-------------
+ij> select dc from t where dc < 0;
+DC           
+-------------
+-10.00       
+ij> select dc from t where dc < 1234.45;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc < i;
+DC           
+-------------
+ij> select dc from t where dc < l;
+DC           
+-------------
+ij> select dc from t where dc < s;
+DC           
+-------------
+ij> select dc from t where dc < r;
+DC           
+-------------
+ij> select dc from t where dc < d;
+DC           
+-------------
+ij> select dc from t where dc < dc;
+DC           
+-------------
+ij> -- test <=
+select dc from t where dc <= 10;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= -10;
+DC           
+-------------
+-10.00       
+ij> select dc from t where dc <= 0;
+DC           
+-------------
+-10.00       
+0.00         
+ij> select dc from t where dc <= 1234.45;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= i;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= l;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= s;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+ij> select dc from t where dc <= r;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <= d;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <= dc;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> -- test <>
+select dc from t where dc <> 10;
+DC           
+-------------
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <> -10;
+DC           
+-------------
+10.00        
+0.00         
+1234.56      
+ij> select dc from t where dc <> 0;
+DC           
+-------------
+10.00        
+-10.00       
+1234.56      
+ij> select dc from t where dc <> 1234.45;
+DC           
+-------------
+10.00        
+-10.00       
+0.00         
+1234.56      
+ij> select dc from t where dc <> i;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc <> l;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc <> s;
+DC           
+-------------
+1234.56      
+ij> select dc from t where dc <> r;
+DC           
+-------------
+ij> select dc from t where dc <> d;
+DC           
+-------------
+ij> select dc from t where dc <> dc;
+DC           
+-------------
+ij> --
+-- test a variety of inserts and updates
+--
+drop table t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> create table t2 (i int, 
+				l bigint,
+				s smallint, 
+				d double precision,
+				r real,
+				dc decimal(10,2));
+0 rows inserted/updated/deleted
+ij> insert into t2 select * from t;
+5 rows inserted/updated/deleted
+ij> -- add a few indexes
+create index dcindex on t2(dc);
+0 rows inserted/updated/deleted
+ij> create unique index dcuniqueindex on t2(dc);
+0 rows inserted/updated/deleted
+ij> -- now do updates and confirm they are ok
+update t2 set dc = dc + 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-8.90        
+1.10         
+11.10        
+1235.66      
+NULL         
+ij> update t2 set dc = dc - 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-10.00       
+0.00         
+10.00        
+1234.56      
+NULL         
+ij> update t2 set dc = dc / 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.09        
+0.00         
+9.09         
+1122.32      
+NULL         
+ij> update t2 set dc = dc * 1.1;
+5 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.99        
+0.00         
+9.99         
+1234.55      
+NULL         
+ij> -- try some deletes
+delete from t2 where dc > 0;
+2 rows inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.99        
+0.00         
+NULL         
+ij> delete from t2 where dc = 0;
+1 row inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+-9.99        
+NULL         
+ij> delete from t2 where dc < 0;
+1 row inserted/updated/deleted
+ij> select dc from t2;
+DC           
+-------------
+NULL         
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- test that we recycle values correctly
+-- when reading from a decimal table with
+-- variable length byte arrays stored
+-- via write external
+create table t (c1 char(1), d dec(20,4), c2 char(1));
+0 rows inserted/updated/deleted
+ij> create unique index tu on t(d);
+0 rows inserted/updated/deleted
+ij> insert into t values ('a', 1.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 11111.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 11111111.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 6.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 666.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', .6, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 0, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 666666.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 99999999999999.123, 'Z');
+1 row inserted/updated/deleted
+ij> insert into t values ('a', 9.123, 'Z');
+1 row inserted/updated/deleted
+ij> select * from t;
+C1  |D                      |C2  
+---------------------------------
+a   |1.1230                 |Z   
+a   |11111.1230             |Z   
+a   |11111111.1230          |Z   
+a   |6.1230                 |Z   
+a   |666.1230               |Z   
+a   |0.6000                 |Z   
+a   |0.0000                 |Z   
+a   |666666.1230            |Z   
+a   |99999999999999.1230    |Z   
+a   |9.1230                 |Z   
+ij> update t set d = d + .0007;
+10 rows inserted/updated/deleted
+ij> select * from t;
+C1  |D                      |C2  
+---------------------------------
+a   |1.1237                 |Z   
+a   |11111.1237             |Z   
+a   |11111111.1237          |Z   
+a   |6.1237                 |Z   
+a   |666.1237               |Z   
+a   |0.6007                 |Z   
+a   |0.0007                 |Z   
+a   |666666.1237            |Z   
+a   |99999999999999.1237    |Z   
+a   |9.1237                 |Z   
+ij> drop table tmp;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TMP' because it does not exist.
+ij> drop table bad;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'BAD' because it does not exist.
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- ** insert double.sql
+--
+-- Test the builtin type 'double precision'
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar
+--
+-- other things we might test:
+-- show how doubles lose precision on computations
+--
+-- Test the arithmetic operators
+--
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0);
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0);
+1 row inserted/updated/deleted
+ij> select d + d, i + d, s + d from t;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  
+400.0                 |200.0                 |300.0                 
+-400.0                |-201.0                |-300.0                
+ij> select d + d + d, d + 100 + 432e0 from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+600.0                 |732.0                 
+-600.0                |332.0                 
+ij> select d - i, i - d, d - s, s - d from t;
+1                     |2                     |3                     |4                     
+-------------------------------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  |NULL                  
+200.0                 |-200.0                |100.0                 |-100.0                
+-199.0                |199.0                 |-100.0                |100.0                 
+ij> select d - d - d, d - 100 - 432e0 from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-200.0                |-332.0                
+200.0                 |-732.0                
+ij> select i, d, i * d, d * i, d * d, d * 2, d * 2.0e0 from t;
+I          |D                     |3                     |4                     |5                     |6                     |7                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL                  |NULL                  |NULL                  |NULL                  |NULL                  
+0          |200.0                 |0.0                   |0.0                   |40000.0               |400.0                 |400.0                 
+-1         |-200.0                |200.0                 |200.0                 |40000.0               |-400.0                |-400.0                
+ij> -- try unary minus, plus
+select -(d * 100 / 100e0 ), +(d * 100e0 / 100 ) from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-200.0                |200.0                 
+200.0                 |-200.0                
+ij> -- test null/null, constant/null, null/constant
+select i, d, i / d, 10 / d, d / 10e0 from t;
+I          |D                     |3                     |4                     |5                     
+-------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL                  |NULL                  |NULL                  
+0          |200.0                 |0.0                   |0.05                  |20.0                  
+-1         |-200.0                |0.005                 |-0.05                 |-20.0                 
+ij> -- test for divide by 0
+select d / i from t;
+1                     
+----------------------
+NULL                  
+ERROR 22012: Attempt to divide by zero.
+ij> select 20e0 / 5e0 / 4e0, 20e0 / 4e0 / 5 from t;
+1                     |2                     
+---------------------------------------------
+1.0                   |1.0                   
+1.0                   |1.0                   
+1.0                   |1.0                   
+ij> -- test positive/negative, negative/positive and negative/negative
+select d, d / -d, (-d) / d, (-d) / -d from t;
+D                     |2                     |3                     |4                     
+-------------------------------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  |NULL                  
+200.0                 |-1.0                  |-1.0                  |1.0                   
+-200.0                |-1.0                  |-1.0                  |1.0                   
+ij> -- test some "more complex" expressions
+select d, d + 10e0, d - (10 - 20e0), d - 10, d - (20 - 10) from t;
+D                     |2                     |3                     |4                     |5                     
+------------------------------------------------------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  |NULL                  |NULL                  
+200.0                 |210.0                 |210.0                 |190.0                 |190.0                 
+-200.0                |-190.0                |-190.0                |-210.0                |-210.0                
+ij> -- show that decimals will go into doubles:
+select d+1.1 from t;
+1                     
+----------------------
+NULL                  
+201.1                 
+-198.9                
+ij> insert into t (d) values(1.1);
+1 row inserted/updated/deleted
+ij> select d from t where d=1.1;
+D                     
+----------------------
+1.1                   
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- test overflow
+create table s (d double precision, p double);
+0 rows inserted/updated/deleted
+ij> insert into s values (null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 101);
+1 row inserted/updated/deleted
+ij> select d + 1.7e+308 from s;
+1                     
+----------------------
+NULL                  
+1.7E308               
+1.7E308               
+ij> -- these are close enough to the infinities to overflow
+-- the null row will still get returned
+select 1.798e+308, - 1.798e+308, 'This query should not work' from s;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> select 1.8e+1000, - 1.8e+1000, 'This query should not work' from s;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- these are far enough from the infinities to work
+select 1.797e+308, - 1.797e+308, 'This query should work' from s;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+1.797E308             |-1.797E308            |This query should work
+1.797E308             |-1.797E308            |This query should work
+1.797E308             |-1.797E308            |This query should work
+ij> select 1.6e+308, - 1.6e+308, 'This query should work' from s;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+1.6E308               |-1.6E308              |This query should work
+1.6E308               |-1.6E308              |This query should work
+1.6E308               |-1.6E308              |This query should work
+ij> -- the null row will still get returned
+select d - 1.6e+308 - 0, 'This query should work' from s;
+1                     |2                     
+---------------------------------------------
+NULL                  |This query should work
+-1.6E308              |This query should work
+-1.6E308              |This query should work
+ij> select d - 1.6e+308 - 1.6e+308, 'This query should fail' from s;
+1                     |2                     
+---------------------------------------------
+NULL                  |This query should fail
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- these should fail
+select p * 1.6e+308 from s;
+1                     
+----------------------
+NULL                  
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> select p * -1.6e+308 from s;
+1                     
+----------------------
+NULL                  
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- these work
+insert into s values (-1.6e+308, 0);
+1 row inserted/updated/deleted
+ij> insert into s values (-1.797e+308, 0);
+1 row inserted/updated/deleted
+ij> -- these don't work
+insert into s values (-1.798e+308, 0);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into s values (-1.8e+308, 0);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- see two more rows
+select -d from s;
+1                     
+----------------------
+NULL                  
+0.0                   
+-1.0                  
+1.6E308               
+1.797E308             
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table w (x double precision, y long varchar);
+0 rows inserted/updated/deleted
+ij> select x + y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> select x - y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> select x * y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> select x / y from w;
+ERROR 42846: Cannot convert types 'LONG VARCHAR' to 'DOUBLE'.
+ij> -- clean up after ourselves
+drop table w;
+0 rows inserted/updated/deleted
+ij> --
+-- comparisons
+--
+create table c (i int, s smallint, d double precision, p double precision);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into c values (0, 0, 0e0, 0e0);
+1 row inserted/updated/deleted
+ij> insert into c values (null, null, 5e0, null);
+1 row inserted/updated/deleted
+ij> insert into c values (1, 1, 1e0, 2e0);
+1 row inserted/updated/deleted
+ij> insert into c values (1956475, 1956, 1956475e0, 1956475e0);
+1 row inserted/updated/deleted
+ij> -- select each one in turn
+select d from c where d = 0e0;
+D                     
+----------------------
+0.0                   
+ij> select d from c where d = 1e0;
+D                     
+----------------------
+1.0                   
+ij> select d from c where d = 1956475e0;
+D                     
+----------------------
+1956475.0             
+ij> -- now look for a value that isn't in the table
+select d from c where p = 2e0;
+D                     
+----------------------
+1.0                   
+ij> -- now test null = null semantics
+select d from c where d = d;
+D                     
+----------------------
+0.0                   
+5.0                   
+1.0                   
+1956475.0             
+ij> -- now test <>, <, >
+select d from c where d <> 0e0;
+D                     
+----------------------
+5.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d <> 1e0;
+D                     
+----------------------
+0.0                   
+5.0                   
+1956475.0             
+ij> select d from c where d < 1956475e0;
+D                     
+----------------------
+0.0                   
+5.0                   
+1.0                   
+ij> select d from c where d < 2e0;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> select d from c where d > d;
+D                     
+----------------------
+ij> select d from c where d > p;
+D                     
+----------------------
+ij> -- now test <=, >=
+select d from c where d <= 0e0;
+D                     
+----------------------
+0.0                   
+ij> select d from c where d <= 1e0;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> select d from c where d <= 2e0;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> select d from c where d >= 1956475e0;
+D                     
+----------------------
+1956475.0             
+ij> select d from c where d >= d;
+D                     
+----------------------
+0.0                   
+5.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d >= p;
+D                     
+----------------------
+0.0                   
+1956475.0             
+ij> -- test comparisons with int and smallint
+select d from c where d <= i;
+D                     
+----------------------
+0.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d < s;
+D                     
+----------------------
+ij> select d from c where d > i;
+D                     
+----------------------
+ij> select d from c where d >= s;
+D                     
+----------------------
+0.0                   
+1.0                   
+1956475.0             
+ij> select d from c where d <> i;
+D                     
+----------------------
+ij> select d from c where d = s;
+D                     
+----------------------
+0.0                   
+1.0                   
+ij> -- test that the smallint gets promoted to double, and not vice versa.  65537
+-- when converted to short becomes 1
+select d from c where s = 65537e0;
+D                     
+----------------------
+ij> -- test =SQ
+-- this gets cardinality error
+select d from c where d = (select d from c);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- this works
+select d from c where d = (select d from c where d=5);
+D                     
+----------------------
+5.0                   
+ij> -- show that double is comparable to real
+create table o (c char(10), v varchar(30), dc decimal);
+0 rows inserted/updated/deleted
+ij> select d from c,o where d <> dc;
+D                     
+----------------------
+ij> -- clean up
+drop table c;
+0 rows inserted/updated/deleted
+ij> drop table o;
+0 rows inserted/updated/deleted
+ij> --
+-- test alternate syntax: just double will work for DB2 compatibility
+--
+create table db2version (d double);
+0 rows inserted/updated/deleted
+ij> drop table db2version;
+0 rows inserted/updated/deleted
+ij> --
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50),
+	d double precision);
+0 rows inserted/updated/deleted
+ij> create table target (p double precision not null);
+0 rows inserted/updated/deleted
+ij> -- we have already tested inserting integer and double literals.
+insert into source values (1, 2, '3', '4', 5);
+1 row inserted/updated/deleted
+ij> -- these will all work:
+insert into target select i from source;
+1 row inserted/updated/deleted
+ij> insert into target select s from source;
+1 row inserted/updated/deleted
+ij> insert into target select d from source;
+1 row inserted/updated/deleted
+ij> -- these will all fail:
+delete from source;
+1 row inserted/updated/deleted
+ij> insert into source values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> -- these fail because the target won't take a null -- of any type
+insert into target values(null);
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> insert into target select i from source;
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> insert into target select s from source;
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> insert into target select d from source;
+ERROR 23502: Column 'P'  cannot accept a NULL value.
+ij> -- expect 4 rows in target: 1, 2, 5, and 1:
+select * from target;
+P                     
+----------------------
+1.0                   
+2.0                   
+5.0                   
+ij> update target set p = p + 1;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+2.0                   
+3.0                   
+6.0                   
+ij> update target set p = p - 1;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+1.0                   
+2.0                   
+5.0                   
+ij> update target set p = p / 10;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+0.1                   
+0.2                   
+0.5                   
+ij> update target set p = p * 10;
+3 rows inserted/updated/deleted
+ij> select * from target;
+P                     
+----------------------
+1.0                   
+2.0                   
+5.0                   
+ij> -- these should work
+update source set i = 1.4e8;
+1 row inserted/updated/deleted
+ij> update source set s = 1.4e4;
+1 row inserted/updated/deleted
+ij> select i, s from source where i=1.4e8 or s=1.4e4;
+I          |S     
+------------------
+140000000  |14000 
+ij> -- these should get overflow
+update source set i = 1.4e12;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> update source set s = 1.4e12;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> drop table source;
+0 rows inserted/updated/deleted
+ij> drop table target;
+0 rows inserted/updated/deleted
+ij> create table abcfloat (numtest float(20));
+0 rows inserted/updated/deleted
+ij> insert into abcfloat values (1.23456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (.123456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (-.123456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (0.223456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (-0.223456789);
+1 row inserted/updated/deleted
+ij> insert into abcfloat values (12345678.9);
+1 row inserted/updated/deleted
+ij> select * from abcfloat;
+NUMTEST      
+-------------
+1.2345679    
+0.12345679   
+-0.12345679  
+0.22345679   
+-0.22345679  
+1.2345679E7  
+ij> drop table abcfloat;
+0 rows inserted/updated/deleted
+ij> -- ** insert float.sql
+--
+-- Test the builtin type 'float'
+-- Float is a synonym for double or real, depending on
+-- the precision specified; so all we need to do is
+-- show the mapping here; the double and real tests
+-- show how well those types behave.
+--
+-- this shows several working versions of float, the default
+-- and all of the boundary values:
+create table t (d double precision, r real, f float, f1 float(1),
+	f23 float(23), f24 float(24), f53 float(52));
+0 rows inserted/updated/deleted
+ij> select columnname, columndatatype 
+from sys.syscolumns c, sys.systables t
+where c.referenceid = t.tableid and t.tablename='T';
+COLUMNNAME                                                                                                                      |COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------
+D                                                                                                                               |DOUBLE         
+F                                                                                                                               |DOUBLE         
+F1                                                                                                                              |REAL           
+F23                                                                                                                             |REAL           
+F24                                                                                                                             |DOUBLE         
+F53                                                                                                                             |DOUBLE         
+R                                                                                                                               |REAL           
+ij> -- invalid float values
+insert into t(r) values 'NaN';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> insert into t(r) values +3.4021E+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t(r) values -3.4021E+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> create table tt(c char(254));
+0 rows inserted/updated/deleted
+ij> insert into tt values -3.402E+38;
+ERROR 42821: Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+ij> insert into t(r) select * from tt;
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> insert into t(r) values '1.0';
+ERROR 42821: Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+ij> update t set r = NaN;
+ERROR 42X04: Column 'NAN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NAN' is not a column in the target table.
+ij> update t set r = +3.4021E+38;
+0 rows inserted/updated/deleted
+ij> update t set r = -3.4021E+38;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tt;
+0 rows inserted/updated/deleted
+ij> -- these get errors for invalid precision values:
+create table t1 (d double precision, r real, f float(-10));
+ERROR 42X01: Syntax error: Encountered "-" at line 2, column 54.
+ij> --
+create table t2 (d double precision, r real, f float(-1));
+ERROR 42X01: Syntax error: Encountered "-" at line 2, column 54.
+ij> create table t3 (d double precision, r real, f float(0));
+ERROR 42X48: Value '0' is not a valid precision for FLOAT.
+ij> create table t4 (d double precision, r real, f float(100));
+ERROR 42X48: Value '100' is not a valid precision for FLOAT.
+ij> create table t5 (d double precision, r real, f float(53));
+ERROR 42X48: Value '53' is not a valid precision for FLOAT.
+ij> create table t6 (d double precision, r real, f float(12.3));
+ERROR 42X49: Value '12.3' is not a valid integer literal.
+ij> -- ** insert real.sql
+--
+-- Test the builtin type 'real'
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, double precision
+--
+-- other things we might test:
+-- show how reals lose precision on computations
+--
+-- Test the arithmetic operators
+--
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real);
+0 rows inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0, 200.0e0);
+1 row inserted/updated/deleted
+ij> insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0, -200.0e0);
+1 row inserted/updated/deleted
+ij> select r + r, d + r, i + r, s + r, r + i from t;
+1            |2                     |3            |4            |5            
+------------------------------------------------------------------------------
+NULL         |NULL                  |NULL         |NULL         |NULL         
+400.0        |400.0                 |200.0        |300.0        |200.0        
+-400.0       |-400.0                |-201.0       |-300.0       |-201.0       
+ij> select r + r + r, r + 100 + 432e0 from t;
+1            |2                     
+------------------------------------
+NULL         |NULL                  
+600.0        |732.0                 
+-600.0       |332.0                 
+ij> select r - r, r - d, d - r, r - i, i - r, r - s, s - r from t;
+1            |2                     |3                     |4            |5            |6            |7            
+-------------------------------------------------------------------------------------------------------------------
+NULL         |NULL                  |NULL                  |NULL         |NULL         |NULL         |NULL         
+0.0          |0.0                   |0.0                   |200.0        |-200.0       |100.0        |-100.0       
+0.0          |0.0                   |0.0                   |-199.0       |199.0        |-100.0       |100.0        
+ij> select r - r - r, r - 100 - 432e0 from t;
+1            |2                     
+------------------------------------
+NULL         |NULL                  
+-200.0       |-332.0                
+200.0        |-732.0                
+ij> select i, d, s, r, i * r, r * i, s * r, d * r, r * r, r * 2, r * 2.0e0 from t;
+I          |D                     |S     |R            |5            |6            |7            |8                     |9            |10           |11                    
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL  |NULL         |NULL         |NULL         |NULL         |NULL                  |NULL         |NULL         |NULL                  
+0          |200.0                 |100   |200.0        |0.0          |0.0          |20000.0      |40000.0               |40000.0      |400.0        |400.0                 
+-1         |-200.0                |-100  |-200.0       |200.0        |200.0        |20000.0      |40000.0               |40000.0      |-400.0       |-400.0                
+ij> -- try unary minus, plus
+select -(r * 100 / 100e0 ), +(r * 100e0 / 100 ) from t;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+-200.0                |200.0                 
+200.0                 |-200.0                
+ij> -- test null/null, constant/null, null/constant
+select i, d, r, d / r, i / r, 10 / r, r / d, r / 10e0 from t;
+I          |D                     |R            |4                     |5            |6            |7                     |8                     
+-------------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL                  |NULL         |NULL                  |NULL         |NULL         |NULL                  |NULL                  
+0          |200.0                 |200.0        |1.0                   |0.0          |0.05         |1.0                   |20.0                  
+-1         |-200.0                |-200.0       |1.0                   |0.005        |-0.05        |1.0                   |-20.0                 
+ij> -- test for divide by 0
+select r / i from t;
+1            
+-------------
+NULL         
+ERROR 22012: Attempt to divide by zero.
+ij> -- test positive/negative, negative/positive and negative/negative
+select r, r / -r, (-r) / r, (-r) / -r from t;
+R            |2            |3            |4            
+-------------------------------------------------------
+NULL         |NULL         |NULL         |NULL         
+200.0        |-1.0         |-1.0         |1.0          
+-200.0       |-1.0         |-1.0         |1.0          
+ij> -- test some "more complex" expressions
+select r, r + 10e0, r - (10 - 20e0), r - 10, r - (20 - 10) from t;
+R            |2                     |3                     |4            |5            
+---------------------------------------------------------------------------------------
+NULL         |NULL                  |NULL                  |NULL         |NULL         
+200.0        |210.0                 |210.0                 |190.0        |190.0        
+-200.0       |-190.0                |-190.0                |-210.0       |-210.0       
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> -- test overflow
+create table s (d real, p real);
+0 rows inserted/updated/deleted
+ij> insert into s values (null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 100);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 101);
+1 row inserted/updated/deleted
+ij> select d + 3.4e+38 from s;
+1                     
+----------------------
+NULL                  
+3.4E38                
+3.4E38                
+ij> -- these are close enough to the infinities to overflow
+-- Can't test simple select of literal because literals are doubles
+insert into s values(3.403e+38, 3.403e+38);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into s values(- 3.403e+38, - 3.403e+38);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into s values(1.8e+100, 1.8e+100);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into s values(- 1.8e+100, - 1.8e+100);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from s;
+D            |P            
+---------------------------
+NULL         |NULL         
+0.0          |100.0        
+1.0          |101.0        
+ij> -- these are far enough from the infinities to work
+insert into s values(3.402e+38, - 3.402e+38);
+1 row inserted/updated/deleted
+ij> insert into s values(3.3e+38, - 3.3e+38);
+1 row inserted/updated/deleted
+ij> -- these show that math is promoted to double because of the double
+-- literals. If it was real math, it would fail
+select d - 3.3e+38 - 3.3e+38, p * 3.3e+38, p * -3.3e+38 from s;
+1                     |2                     |3                     
+--------------------------------------------------------------------
+NULL                  |NULL                  |NULL                  
+-6.6E38               |3.3E40                |-3.3E40               
+-6.6E38               |3.333E40              |-3.333E40             
+-3.1979999994446195E38|-1.1226600001832754E77|1.1226600001832754E77 
+-3.300000034517288E38 |-1.088999988609295E77 |1.088999988609295E77  
+ij> -- see two more rows
+select -d from s;
+1            
+-------------
+NULL         
+0.0          
+-1.0         
+-3.402E38    
+-3.3E38      
+ij> -- to do the math as reals, we have to keep it in the columns
+delete from s;
+5 rows inserted/updated/deleted
+ij> insert into s values (1,3.3e+38);
+1 row inserted/updated/deleted
+ij> -- these will fail, because the math is done as reals
+select d - p - p from s;
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select p * p from s;
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select p * -p from s;
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> delete from s;
+1 row inserted/updated/deleted
+ij> -- select values between 0 and 1
+insert into s values (.111, 1e-1);
+1 row inserted/updated/deleted
+ij> insert into s values (0.222, 0.222);
+1 row inserted/updated/deleted
+ij> select * from s;
+D            |P            
+---------------------------
+0.111        |0.1          
+0.222        |0.222        
+ij> delete from s;
+2 rows inserted/updated/deleted
+ij> insert into s values (10, 1e-10);
+1 row inserted/updated/deleted
+ij> -- underflow calculation doesn't round off, gives error.
+update s set d=d*1.4e-55, p=p*1.4e-45;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select d, p from s;
+D            |P            
+---------------------------
+10.0         |1.0E-10      
+ij> update s set d=d + 1.4e-46;
+1 row inserted/updated/deleted
+ij> select d from s;
+D            
+-------------
+10.0         
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> -- test the arithmetic operators on a type we know they don't work on
+create table w (x real, y char);
+0 rows inserted/updated/deleted
+ij> select x + y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> select x - y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> select x * y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> select x / y from w;
+ERROR 42846: Cannot convert types 'CHAR' to 'REAL'.
+ij> -- clean up after ourselves
+drop table w;
+0 rows inserted/updated/deleted
+ij> --
+-- comparisons
+--
+create table c (i int, s smallint, d double precision, r real, l real);
+0 rows inserted/updated/deleted
+ij> -- insert some values
+insert into c values (0, 0, 0e0, 0e0, 0e0);
+1 row inserted/updated/deleted
+ij> insert into c values (null, null, 5e0, null, null);
+1 row inserted/updated/deleted
+ij> insert into c values (1, 1, 1e0, 2e0, 3e0);
+1 row inserted/updated/deleted
+ij> insert into c values (1956475, 1956, 1956475e0, 1956475e0, 1956475e0);
+1 row inserted/updated/deleted
+ij> -- select each one in turn
+select r from c where r = 0e0;
+R            
+-------------
+0.0          
+ij> select r from c where r = 1e0;
+R            
+-------------
+ij> select r from c where r = 1956475e0;
+R            
+-------------
+1956475.0    
+ij> -- now look for a value that isn't in the table
+select r from c where l = 2e0;
+R            
+-------------
+ij> -- now test null = null semantics
+select r from c where r = r;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> -- now test <>, <, >, <=, >=
+select r from c where r <> 0e0;
+R            
+-------------
+2.0          
+1956475.0    
+ij> select r from c where r <> 1e0;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> select r from c where r < 1956475e0;
+R            
+-------------
+0.0          
+2.0          
+ij> select r from c where r < 2e0;
+R            
+-------------
+0.0          
+ij> select r from c where r > d;
+R            
+-------------
+2.0          
+ij> select r from c where r <= l;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> select r from c where r >= r;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> -- test comparisons with int and smallint and double
+select r from c where r <= i;
+R            
+-------------
+0.0          
+1956475.0    
+ij> select r from c where r < s;
+R            
+-------------
+ij> select r from c where r > i;
+R            
+-------------
+2.0          
+ij> select r from c where r >= s;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> select r from c where r <> i;
+R            
+-------------
+2.0          
+ij> select r from c where r = s;
+R            
+-------------
+0.0          
+ij> select r from c where r = d;
+R            
+-------------
+0.0          
+1956475.0    
+ij> select r from c where r >= d;
+R            
+-------------
+0.0          
+2.0          
+1956475.0    
+ij> -- show that real is comparable to decimal
+create table o (c char(10), v varchar(30), dc decimal);
+0 rows inserted/updated/deleted
+ij> select r from c,o where r <> dc;
+R            
+-------------
+ij> -- clean up
+drop table c;
+0 rows inserted/updated/deleted
+ij> drop table o;
+0 rows inserted/updated/deleted
+ij> --
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real);
+0 rows inserted/updated/deleted
+ij> create table target (t real not null);
+0 rows inserted/updated/deleted
+ij> -- we have already tested inserting integer and double literals.
+insert into source values (1, 2, '3', '4', 5, 6);
+1 row inserted/updated/deleted
+ij> -- these will all work:
+insert into target select i from source;
+1 row inserted/updated/deleted
+ij> insert into target select s from source;
+1 row inserted/updated/deleted
+ij> insert into target select d from source;
+1 row inserted/updated/deleted
+ij> insert into target select r from source;
+1 row inserted/updated/deleted
+ij> delete from source;
+1 row inserted/updated/deleted
+ij> insert into source values (null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into source values (1, 2, '3', '4', 5, 6);
+1 row inserted/updated/deleted
+ij> -- these fail because the target won't take a null -- of any type
+insert into target values(null);
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select i from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select s from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select d from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> insert into target select r from source;
+ERROR 23502: Column 'T'  cannot accept a NULL value.
+ij> -- expect 5 rows in target: 1, 2, 5, 6, and 1:
+select * from target;
+T            
+-------------
+1.0          
+2.0          
+5.0          
+6.0          
+ij> update target set t = t + 1;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+2.0          
+3.0          
+6.0          
+7.0          
+ij> update target set t = t - 1;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+1.0          
+2.0          
+5.0          
+6.0          
+ij> update target set t = t / 10;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+0.1          
+0.2          
+0.5          
+0.6          
+ij> update target set t = t * 10;
+4 rows inserted/updated/deleted
+ij> select * from target;
+T            
+-------------
+1.0          
+2.0          
+5.0          
+6.0          
+ij> -- these should work
+update source set r = 1.4e4;
+2 rows inserted/updated/deleted
+ij> update source set i = r, s=r, d=r;
+2 rows inserted/updated/deleted
+ij> select i, s, d from source where i=1.4e4 or s=1.4e4 or d=1.4e4;
+I          |S     |D                     
+-----------------------------------------
+14000      |14000 |14000.0               
+14000      |14000 |14000.0               
+ij> -- just curious, do columns see the before or after values, and
+-- does it matter if they are before or after the changed value?
+update source set i = r, r = 0, s = r;
+2 rows inserted/updated/deleted
+ij> select i, r, s from source where r = 0;
+I          |R            |S     
+--------------------------------
+14000      |0.0          |14000 
+14000      |0.0          |14000 
+ij> -- these should get overflow
+update source set r = 1.4e12;
+2 rows inserted/updated/deleted
+ij> update source set i = r;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> update source set s = r;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> drop table source;
+0 rows inserted/updated/deleted
+ij> drop table target;
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+--          TESTS FOR DB2 FLOAT/DOUBLEs LIMITS
+-- ============================================================
+create table fake(r real);
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+-- different errmsg for DB2: "value of of range", CS: "NumberFormatException"
+values 5e-325;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values 5e-324;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- --- TEST SPECIAL VALUES
+-- DB2 (should succed)
+insert into fake values( -3.402E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.402E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values -1;
+1 row inserted/updated/deleted
+ij> insert into fake values( -1.175E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values( +1.175E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values -2;
+1 row inserted/updated/deleted
+ij> -- CS (should fail)
+insert into fake values( -3.4028235E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.4028235E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -3;
+1 row inserted/updated/deleted
+ij> insert into fake values( -1.4E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.4E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -4;
+1 row inserted/updated/deleted
+ij> -- ============================================================
+-- variants of ZERO
+insert into fake values (+0);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0E-37);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0E-38);
+1 row inserted/updated/deleted
+ij> insert into fake values (+0.0E-500);
+1 row inserted/updated/deleted
+ij> values (+0.0E-500);
+1                     
+----------------------
+0.0                   
+ij> values (+1.0E-300);
+1                     
+----------------------
+1.0E-300              
+ij> -- approx ZERO (java rounds to zero, but not DB2)
+insert into fake values (+1.0E-300);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values (+1.0E-900);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into fake values (cast(+1.0E-900 as real));
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values (cast(+1.0E-300 as real));
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values (+1.0E-900);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values (cast(+1.0E-900 as real));
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into fake values -11;
+1 row inserted/updated/deleted
+ij> -- ============================================================
+-- DB2 MAX_VALUES (first succeed, second fail)
+insert into fake values( -3.4019E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values( -3.4021E+38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -21;
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.4019E+38 );
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.4021E+38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -22;
+1 row inserted/updated/deleted
+ij> -- DB2 MIN_VALUES (first fail, second succeed)
+insert into fake values( -1.1749E-37 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.1751E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values -23;
+1 row inserted/updated/deleted
+ij> insert into fake values( +1.1749E-37 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.1751E-37 );
+1 row inserted/updated/deleted
+ij> insert into fake values -24;
+1 row inserted/updated/deleted
+ij> -- CS (fail)
+insert into fake values( -3.4028234E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -3.40282349E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -3.40282351E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -3.4028236E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -25;
+1 row inserted/updated/deleted
+ij> insert into fake values( +3.4028234E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.40282349E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.40282351E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +3.4028236E38 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -26;
+1 row inserted/updated/deleted
+ij> insert into fake values( -1.39E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.399E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.401E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( -1.41E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -27;
+1 row inserted/updated/deleted
+ij> insert into fake values( +1.39E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.399E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.401E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values( +1.41E-45 );
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values -28;
+1 row inserted/updated/deleted
+ij> -- checkpoint
+select * from fake;
+R            
+-------------
+-3.402E38    
+3.402E38     
+-1.0         
+-1.175E-37   
+1.175E-37    
+-2.0         
+-3.0         
+-4.0         
+0.0          
+0.0          
+0.0          
+0.0          
+0.0          
+-11.0        
+-3.4019E38   
+-21.0        
+3.4019E38    
+-22.0        
+-1.1751E-37  
+-23.0        
+1.1751E-37   
+-24.0        
+-25.0        
+-26.0        
+-27.0        
+-28.0        
+ij> drop table fake;
+0 rows inserted/updated/deleted
+ij> create table fake(r real);
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+-- ---underflow aritmetic
+-- underflow to small real but / makes double!=0, so we catch
+-- ok
+values cast(5e-37/1e0 as real);
+1            
+-------------
+5.0E-37      
+ij> -- fail
+values cast(5e-37/1e1 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-37/1e300 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 as real)/cast(1e10 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> -- ok
+insert into fake values 5e-37/1e0;
+1 row inserted/updated/deleted
+ij> -- fail
+insert into fake values 5e-37/1e1;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into fake values 5e-37/1e300;
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> insert into fake values cast(5e-37 as real)/cast(1e10 as real);
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> drop table fake;
+0 rows inserted/updated/deleted
+ij> -- makes double to small, so java double rounds to 0. need to catch (fail)
+values 5e-37 / 1e300;
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 / 1e300 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- ok, zero result (succeed)
+values cast(cast(0.0e0 as real) - cast(0.0e0 as real) as real);
+1            
+-------------
+0.0          
+ij> values cast(cast(1.0e-30 as real) - cast(1.0e-30 as real) as real);
+1            
+-------------
+0.0          
+ij> -- java (and CS previously) rounded result to zero, but now gives errors like DB2 (fail)
+values cast(cast(5e-37 as real) - cast(4e-37 as real) as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-37 - 4e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-37 - 4.99e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-308 - 4e-308 as real);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 + -4e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(5e-324 - 4e-324 as real);
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values cast(5e-37 * 4e-37 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> values cast(cast(5e-37 as real) * cast(4e-37 as real) as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> -- double trouble, underflow detection (fail)
+values cast(5e-300 * 4e-300 as real);
+1            
+-------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- underflow aritmetic DOUBLE (fail)
+values -3e-305/1e100;
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> values -3e-305/1e100;
+1                     
+----------------------
+ERROR 22003: The resulting value is outside the range for the data type DOUBLE.
+ij> -- negative zeros not allowed (succeed)
+values 0.0e5/-1;
+1                     
+----------------------
+0.0                   
+ij> -- 30 characters limit to be enforced ) (first fail, second ok)
+values 01234567890123456789012345678e1;
+ERROR 42820: The floating point literal '01234567890123456789012345678e1' contains more than 30 characters.
+ij> values 0123456789012345678901234567e1;
+1                     
+----------------------
+1.2345678901234569E27 
+ij> -- ============================================================
+--- Marks tests
+-- Examples in Cloudscape 5.2:
+-- these 2 insert statements should raise error msgs in compat mode because 
+-- the values are between the -mpv and +mpv (fail)
+create table t1 (c1 real);
+0 rows inserted/updated/deleted
+ij> insert into t1 values -1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values +1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> -- these 2 insert statements should raise an error msg in compat mode
+-- because the values are greater db2's limits (fail)
+insert into t1 values 3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values -3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- Examples in DB2 UDB for LUW 8.1.4:
+-- these 2 insert statements raise ERROR 22003 because
+-- the values are between the -mpv and +mpv (fail)
+create table t1 (c1 real);
+0 rows inserted/updated/deleted
+ij> insert into t1 values -1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values +1.40129846432481700e-46;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> -- these 2 insert statements raise ERROR 22003 because
+-- the values are greater db2's limits (fail)
+insert into t1 values 3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> insert into t1 values -3.40282346638528860e+38;
+ERROR 22003: The resulting value is outside the range for the data type REAL.
+ij> select * from t1;
+C1           
+-------------
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- ============================================================
+-- bug 5704 - make sure we catch the overflow correctly for multiplication operator
+values cast(1e30 as decimal(31))*cast(1e30 as decimal(31));
+1                               
+--------------------------------
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> values cast('1e30' as decimal(31))*cast('1e30' as decimal(31));
+1                               
+--------------------------------
+ERROR 22003: The resulting value is outside the range for the data type DECIMAL/NUMERIC(31,0).
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/groupBy.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/groupBy.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,632 @@
+ij> -- negative tests for group by and having clauses
+create table t1 (a int, b int, c int);
+0 rows inserted/updated/deleted
+ij> create table t2 (a int, b int, c int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values (1,1,1), (2,2,2);
+2 rows inserted/updated/deleted
+ij> -- group by position
+select * from t1 group by 1;
+ERROR 42X01: Syntax error: Encountered "1" at line 2, column 27.
+ij> -- column in group by list not in from list
+select a as d from t1 group by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> -- column in group by list not in select list
+select a as b from t1 group by b;
+ERROR 42Y36: Column reference 'A' is invalid.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> select a from t1 group by b;
+ERROR 42Y36: Column reference 'A' is invalid.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> select a, char(b) from t1 group by a;
+ERROR 42Y36: Column reference 'B' is invalid.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> -- columns in group by list must be unique
+select a, b from t1 group by a, a;
+ERROR 42Y19: 'A' appears multiple times in the GROUP BY list. Columns in the GROUP BY list must be unambiguous.
+ij> select a, b from t1 group by a, t1.a;
+ERROR 42Y19: 'A' appears multiple times in the GROUP BY list. Columns in the GROUP BY list must be unambiguous.
+ij> -- cursor with group by is not updatable
+get cursor c1 as 'select a from t1 group by a for update';
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- noncorrelated subquery that returns too many rows
+select a, (select a from t2) from t1 group by a;
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- correlation on outer table
+select t2.a, (select b from t1 where t1.b = t2.b) from t1 t2 group by t2.a;
+ERROR 42Y30: The SELECT list of a grouped query contains at least 1 invalid expression.  For a SELECT with a GROUP BY, the SELECT list may only contain grouping columns and valid aggregate expressions.
+ij> -- having clause
+-- cannot contain column references which are not grouping columns
+select a from t1 group by a having c = 1;
+ERROR 42X04: Column 'C' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C' is not a column in the target table.
+ij> select a from t1 o group by a having a = (select a from t1 where b = b.o);
+ERROR 42X04: Column 'B.O' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'B.O' is not a column in the target table.
+ij> -- ?s in group by
+select a from t1 group by ?;
+ERROR 42X01: Syntax error: Encountered "?" at line 2, column 27.
+ij> -- group by on long varchar type
+create table unmapped(c1 long varchar);
+0 rows inserted/updated/deleted
+ij> select c1, max(1) from unmapped group by c1;
+ERROR X0X67: Columns of type 'LONG VARCHAR' may not be used in CREATE INDEX, ORDER BY, GROUP BY, UNION, or DISTINCT, because comparisons are not supported for that type.
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table unmapped;
+0 rows inserted/updated/deleted
+ij> -- Test group by and having clauses with no aggregates
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(2) for bit data, lbv long varchar for bit data);
+0 rows inserted/updated/deleted
+ij> create table tab1 (
+				i integer, 
+				s smallint, 
+				l bigint,
+				c char(30),
+				v varchar(30),
+				lvc long varchar,
+				d double precision,
+				r real,
+				dt date, 
+				t time, 
+				ts timestamp);
+0 rows inserted/updated/deleted
+ij> -- populate tables
+insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 200, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 2000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'goodbye', 'everyone is here', 'adios, muchachos',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'noone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0f0f', X'ABCD');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'ffff', X'0f0f', X'1234');
+1 row inserted/updated/deleted
+ij> insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'ffff', X'ABCD');
+1 row inserted/updated/deleted
+ij> -- bit maps to Byte[], so can't test for now
+insert into tab1
+select i, s, l, c, v, lvc, d, r, dt, t, ts from t;
+17 rows inserted/updated/deleted
+ij> -- simple grouping
+select i from t group by i order by i;
+I          
+-----------
+0          
+1          
+NULL       
+ij> select s from t group by s order by s;
+S     
+------
+100   
+200   
+NULL  
+ij> select l from t group by l order by l;
+L                   
+--------------------
+1000000             
+2000000             
+NULL                
+ij> select c from t group by c order by c;
+C         
+----------
+goodbye   
+hello     
+NULL      
+ij> select v from t group by v order by v;
+V                                                 
+--------------------------------------------------
+everyone is here                                  
+noone is here                                     
+NULL                                              
+ij> select d from t group by d order by d;
+D                     
+----------------------
+100.0                 
+200.0                 
+NULL                  
+ij> select r from t group by r order by r;
+R            
+-------------
+100.0        
+200.0        
+NULL         
+ij> select dt from t group by dt order by dt;
+DT        
+----------
+1992-01-01
+1992-09-09
+NULL      
+ij> select t from t group by t order by t;
+T       
+--------
+12:30:30
+12:55:55
+NULL    
+ij> select ts from t group by ts order by ts;
+TS                        
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+xxxxxxFILTERED-TIMESTAMPxxxxx
+NULL                      
+ij> select b from t group by b order by b;
+B   
+----
+12af
+ffff
+NULL
+ij> select bv from t group by bv order by bv;
+BV  
+----
+0f0f
+ffff
+NULL
+ij> -- grouping by long varchar [for bit data] cols should fail in db2 mode
+select lbv from t group by lbv order by lbv;
+LBV                                                                                                                             
+--------------------------------------------------------------------------------------------------------------------------------
+1234                                                                                                                            
+abcd                                                                                                                            
+NULL                                                                                                                            
+ij> -- multicolumn grouping
+select i, dt, b from t where 1=1 group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select i, dt, b from t group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select i, dt, b from t group by b, i, dt order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select i, dt, b from t group by dt, i, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- group by expression
+select expr1, expr2
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1 order by expr2,expr1;
+EXPR1      |EXPR2                                                       
+------------------------------------------------------------------------
+0          |goodbye   everyone is here                                  
+0          |hello     everyone is here                                  
+0          |hello     everyone is here                                  
+100        |hello     everyone is here                                  
+0          |hello     noone is here                                     
+NULL       |NULL                                                        
+ij> -- group by correlated subquery
+select i, expr1
+from (select i, (select distinct i from t m where m.i = t.i) from t) t (i, expr1)
+ group by i, expr1 order by i,expr1;
+I          |EXPR1      
+-----------------------
+0          |0          
+1          |1          
+NULL       |NULL       
+ij> -- distinct and group by
+select distinct i, dt, b from t group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- order by and group by
+-- same order
+select i, dt, b from t group by i, dt, b order by i, dt, b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- subset in same order
+select i, dt, b from t group by i, dt, b order by i, dt;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> -- different order
+select i, dt, b from t group by i, dt, b order by b, dt, i;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+1          |1992-01-01|12af
+0          |1992-09-09|12af
+0          |1992-01-01|ffff
+NULL       |NULL      |NULL
+ij> -- subset in different order
+select i, dt, b from t group by i, dt, b order by b, dt;
+I          |DT        |B   
+---------------------------
+1          |1992-01-01|12af
+0          |1992-01-01|12af
+0          |1992-09-09|12af
+0          |1992-01-01|ffff
+NULL       |NULL      |NULL
+ij> -- group by without having in from subquery
+select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-01-01|0          |1992-09-09
+0          |1992-01-01|1          |1992-01-01
+0          |1992-01-01|NULL       |NULL      
+0          |1992-09-09|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+0          |1992-09-09|1          |1992-01-01
+0          |1992-09-09|NULL       |NULL      
+1          |1992-01-01|0          |1992-01-01
+1          |1992-01-01|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+1          |1992-01-01|NULL       |NULL      
+NULL       |NULL      |0          |1992-01-01
+NULL       |NULL      |0          |1992-09-09
+NULL       |NULL      |1          |1992-01-01
+NULL       |NULL      |NULL       |NULL      
+ij> select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> select t.*, m.* from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,t.t_dt,m.t_i,m.t_dt;
+T_I        |T_DT      |T_I        |T_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> select t.t_i, t.t_dt, m.* from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,t.t_dt,m.t_i,m.t_dt;
+T_I        |T_DT      |T_I        |T_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|1          |1992-01-01
+ij> -- additional columns in group by list not in select list
+select i, dt, b from t group by i, dt, b order by i,dt,b;
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+1          |1992-01-01|12af
+NULL       |NULL      |NULL
+ij> select t.i from t group by i, dt, b order by i;
+I          
+-----------
+0          
+0          
+0          
+1          
+NULL       
+ij> select t.dt from t group by i, dt, b order by dt;
+DT        
+----------
+1992-01-01
+1992-01-01
+1992-01-01
+1992-09-09
+NULL      
+ij> select t.b from t group by i, dt, b order by b;
+B   
+----
+12af
+12af
+12af
+ffff
+NULL
+ij> select t.t_i, m.t_i from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,m.t_i;
+T_I        |T_I        
+-----------------------
+0          |0          
+0          |0          
+1          |1          
+ij> -- having
+-- parameters in having clause
+prepare p1 as 'select i, dt, b from t group by i, dt, b having i = ? order by i,dt,b';
+ij> execute p1 using 'values 0';
+IJ WARNING: Autocommit may close using result set
+I          |DT        |B   
+---------------------------
+0          |1992-01-01|12af
+0          |1992-01-01|ffff
+0          |1992-09-09|12af
+ij> remove p1;
+ij> -- group by with having in from subquery
+select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+ij> select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-01-01|0          |1992-09-09
+0          |1992-09-09|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+1          |1992-01-01|0          |1992-01-01
+1          |1992-01-01|0          |1992-09-09
+NULL       |NULL      |0          |1992-01-01
+NULL       |NULL      |0          |1992-09-09
+ij> select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt
+group by t_i, t_dt, m_i, m_dt
+having t_i * m_i = m_i * t_i order by t_i,t_dt,m_i,m_dt;
+T_I        |T_DT      |M_I        |M_DT      
+---------------------------------------------
+0          |1992-01-01|0          |1992-01-01
+0          |1992-09-09|0          |1992-09-09
+ij> -- correlated subquery in having clause
+select i, dt from t
+group by i, dt
+having i = (select distinct i from tab1 where t.i = tab1.i) order by i,dt;
+I          |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+ij> select i, dt from t
+group by i, dt
+having i = (select i from t m group by i having t.i = m.i) order by i,dt;
+I          |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+ij> -- column references in having clause match columns in group by list
+select i as outer_i, dt from t
+group by i, dt
+having i = (select i from t m group by i having t.i = m.i) order by outer_i,dt;
+OUTER_I    |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+ij> -- additional columns in group by list not in select list
+select i, dt from t group by i, dt order by i,dt;
+I          |DT        
+----------------------
+0          |1992-01-01
+0          |1992-09-09
+1          |1992-01-01
+NULL       |NULL      
+ij> select t.dt from t group by i, dt having i = 0 order by t.dt;
+DT        
+----------
+1992-01-01
+1992-09-09
+ij> select t.dt from t group by i, dt having i <> 0 order by t.dt;
+DT        
+----------
+1992-01-01
+ij> select t.dt from t group by i, dt having i != 0 order by t.dt;
+DT        
+----------
+1992-01-01
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> -- negative tests for selects with a having clause without a group by
+-- create a table
+create table t1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> -- binding of having clause
+select 1 from t1 having 1;
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> -- column references in having clause not allowed if no group by
+select * from t1 having c1 = 1;
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> select 1 from t1 having c1 = 1;
+ERROR 42X04: Column 'C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C1' is not a column in the target table.
+ij> -- correlated subquery in having clause
+select * from t1 t1_outer 
+having 1 = (select 1 from t1 where c1 = t1_outer.c1);
+ERROR 42Y35: Column reference 'T1_OUTER.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5653
+-- test (almost useful) restrictions on a having clause without a group by clause
+-- create the table
+create table t1 (c1 float);
+0 rows inserted/updated/deleted
+ij> -- populate the table
+insert into t1 values 0.0, 90.0;
+2 rows inserted/updated/deleted
+ij> -- this is the only query that should not fail
+-- filter out all rows
+select 1 from t1 having 1=0;
+1          
+-----------
+ij> -- all 6 queries below should fail after bug 5653 is fixed
+-- select * 
+select * from t1 having 1=1;
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- select column
+select c1 from t1 having 1=1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- select with a built-in function sqrt
+select sqrt(c1) from t1 having 1=1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- non-correlated subquery in having clause
+select * from t1 having 1 = (select 1 from t1 where c1 = 0.0);
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- expression in select list
+select (c1 * c1) / c1 from t1 where c1 <> 0 having 1=1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- between
+select * from t1 having 1 between 1 and 2;
+ERROR 42Y35: Column reference 'T1.C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5920
+-- test that HAVING without GROUPBY makes one group
+create table t(c int, d int);
+0 rows inserted/updated/deleted
+ij> insert into t(c,d) values (1,10),(2,20),(2,20),(3,30),(3,30),(3,30);
+6 rows inserted/updated/deleted
+ij> select avg(c) from t having 1 < 2;
+1          
+-----------
+2          
+ij> -- used to give several rows, now gives only one
+select 10 from t having 1 < 2;
+1          
+-----------
+10         
+ij> -- ok, gives one row
+select 10,avg(c) from t having 1 < 2;
+1          |2          
+-----------------------
+10         |2          
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/outparams.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/j9_13/outparams.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8995 @@
+==============================================
+TESTING BOUNDARY CONDITIONS
+==============================================
+Expected exception SQL Exception: Parameter 2 cannot be be registered as an OUT parameter because it is an IN parameter.
+Expected exception SQL Exception: The parameter position '9' is out of range.  The number of parameters for this prepared  statement is '2'.
+Expected exception SQL Exception: The parameter position '0' is out of range.  The number of parameters for this prepared  statement is '2'.
+Expected exception SQL Exception: Return output parameters cannot be set.
+Expected exception SQL Exception: Return output parameters cannot be set.
+Expected exception on setBigDecimal() on a return output param: SQL Exception: Return output parameters cannot be set.
+Expected exception on prepare of '? = call returnsNothing()': SQL Exception: 'RETURNSNOTHING' is not recognized as a function or procedure.
+==============================================
+TESTING NULLS
+==============================================
+Test for bug 4317, passing null value for a parameter
+==============================================
+TESTING UPDATE COUNT
+==============================================
+executeUpdate on ? = call returnsIntegerP returned -1
+getString(1) returned 666
+==============================================
+TESTING NORMAL OUTPUT PARAMETERS
+==============================================
+...starting doing setXXX for each type xxx
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12.0000
+			getBigDecimal(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 12.0000
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132.0000
+			getBigDecimal(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 132.0000
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	setBytes(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, VARBINARY)
+	setBytes(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, LONGVARBINARY)
+	setBytes(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+	Exception SQL Exception: The exception 'java.lang.Throwable: bad type 8' was thrown while evaluating an expression.
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, DATE)
+	setDate(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getDate(1) = 1933-03-03
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 1933-03-03
+	cs.registerOutParameter(1, TIME)
+	setTime(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:03:03
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 03:03:03
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1933-03-03
+			getTime(1) = 03:03:03
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setDate(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setDate(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	setTime(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+...now doing setObject on each type xxx
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getBigDecimal(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12.0000
+			getBigDecimal(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 12.0000
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132.0000
+			getBigDecimal(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 132.0000
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	setObject(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, VARBINARY)
+	setObject(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, LONGVARBINARY)
+	setObject(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+	Exception SQL Exception: The exception 'java.lang.Throwable: bad type 8' was thrown while evaluating an expression.
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, DATE)
+	setObject(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getDate(1) = 1933-03-03
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 1933-03-03
+	cs.registerOutParameter(1, TIME)
+	setObject(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:03:03
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 03:03:03
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1933-03-03
+			getTime(1) = 03:03:03
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setObject(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setObject(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	setObject(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+...not doing any setXXX, just OUT parameters, not IN/OUT
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+==============================================
+TESTING RETURN OUTPUT PARAMETERS
+==============================================
+------------------------------------
+{call returnsNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+{? = call returnsShortP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+{? = call returnsIntegerP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+{? = call returnsLongP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+{? = call returnsFloatP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+{? = call returnsDoubleP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+{? = call returnsBigDecimal(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{? = call returnsByteArray(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, VARBINARY)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, LONGVARBINARY)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+{? = call returnsString(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+	Exception SQL Exception: The exception 'java.lang.Throwable: bad type 8' was thrown while evaluating an expression.
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, DATE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getDate(1) = 1933-03-03
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 1933-03-03
+	cs.registerOutParameter(1, TIME)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:03:03
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 03:03:03
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1933-03-03
+			getTime(1) = 03:03:03
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{? = call returnsDate(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, DATE)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+{? = call returnsTimestamp(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, DATE)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{? = call returnsTime(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+------------------------------------
+==============================================
+TESTING OUTPUT PARAMETERS WITH register(OTHER)
+==============================================
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+------------------------------------
+start testManyOut
+Ten OUT parameters
+  a1 = 0
+  a2 = 0
+  a3 = 0
+  a4 = 0
+  a5 = 0
+  s1 = null
+  s2 = null
+  s3 = null
+  s4 = null
+  s5 = null
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+  a1 = 0
+  a2 = 0
+  a3 = 0
+  a4 = 0
+  a5 = 0
+  s1 = null
+  s2 = null
+  s3 = null
+  s4 = null
+  s5 = null
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+Ten INOUT parameters
+  a1 = 0
+  a2 = 0
+  a3 = 99
+  a4 = 103
+  a5 = 1456
+  s1 = null
+  s2 = null
+  s3 = hello
+  s4 = goodbye
+  s5 = welcome
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+  a1 = 0
+  a2 = 0
+  a3 = 99
+  a4 = 103
+  a5 = 1456
+  s1 = null
+  s2 = null
+  s3 = hello
+  s4 = goodbye
+  s5 = welcome
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+end testManyOut
+==============================================
+TESTING FIX OF 5116 -- VAR BIT VARYING INPUT
+==============================================
+Executed query
+i= 0
+UserInput = null
+resultSet wasNull
+Close result set.
+Executed query
+i= 0
+UserInput length  = 2 bytes
+0) = 1
+1) = 2
+Close result set.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joinDeadlock.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joinDeadlock.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,46 @@
+ij> disconnect;
+ij> connect 'jdbc:derby:wombat;user=U1' AS C1;
+ij> autocommit off;
+ij> connect 'jdbc:derby:wombat;user=U2' AS C2;
+ij(C2)> autocommit off;
+ij(C2)> set connection C1;
+ij(C1)> -- user 1 for bug 1573
+-- a deadlock when reopening a join gets an assertion
+-- violation in close()
+create table outer1(c1 int);
+0 rows inserted/updated/deleted
+ij(C1)> create index o1_i1 on outer1(c1);
+0 rows inserted/updated/deleted
+ij(C1)> insert into outer1 (c1) values 1, 2;
+2 rows inserted/updated/deleted
+ij(C1)> commit;
+ij(C1)> create table inner1(c1 int, c2 char(254));
+0 rows inserted/updated/deleted
+ij(C1)> create index i1_i1 on inner1(c1);
+0 rows inserted/updated/deleted
+ij(C1)> insert into inner1 (c1) values 1, 2;
+2 rows inserted/updated/deleted
+ij(C1)> commit;
+ij(C1)> create table inner2(c1 int, c2 char(254));
+0 rows inserted/updated/deleted
+ij(C1)> create index i2_i1 on inner2(c1);
+0 rows inserted/updated/deleted
+ij(C1)> insert into inner2 (c1) values 1, 2;
+2 rows inserted/updated/deleted
+ij(C1)> commit;
+ij(C1)> -- this user will get lock timeout in subquery on 2nd next
+get cursor c1 as 'select * from outer1 where c1 <= (select count(*) from inner1, inner2 where outer1.c1 = outer1.c1)';
+ij(C1)> next c1;
+C1         
+-----------
+1          
+ij(C1)> set connection C2;
+ij(C2)> update u1.inner1 set c1 = c1 where c1 = 1;
+1 row inserted/updated/deleted
+ij(C2)> set connection C1;
+ij(C1)> next c1;
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(C1)> disconnect;
+ij> set connection C2;
+ij> disconnect;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joins.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/joins.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,394 @@
+ij> --
+-- this test shows the current supported join functionality
+--
+-- create some tables
+create table t1 (t1_c1 int, t1_c2 char(10));
+0 rows inserted/updated/deleted
+ij> create table t2 (t2_c1 int, t2_c2 char(10));
+0 rows inserted/updated/deleted
+ij> create table t3 (t3_c1 int, t3_c2 char(10));
+0 rows inserted/updated/deleted
+ij> create table t4 (t4_c1 int, t4_c2 char(10));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values (1, 't1-row1');
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 't1-row2');
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 't2-row1');
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 't2-row2');
+1 row inserted/updated/deleted
+ij> insert into t3 values (1, 't3-row1');
+1 row inserted/updated/deleted
+ij> insert into t3 values (2, 't3-row2');
+1 row inserted/updated/deleted
+ij> insert into t4 values (1, 't4-row1');
+1 row inserted/updated/deleted
+ij> insert into t4 values (2, 't4-row2');
+1 row inserted/updated/deleted
+ij> -- negative test, same exposed name
+select * from t1, t1;
+ERROR 42X09: The table or alias name 'T1' is used more than once in the FROM list.
+ij> -- cartesian products
+-- full projection
+select * from t1, t2;
+T1_C1      |T1_C2     |T2_C1      |T2_C2     
+---------------------------------------------
+1          |t1-row1   |1          |t2-row1   
+1          |t1-row1   |2          |t2-row2   
+2          |t1-row2   |1          |t2-row1   
+2          |t1-row2   |2          |t2-row2   
+ij> select * from t1 a, t2 b, t3 cc, t4 d order by 1,2,3,4,5,6;
+T1_C1      |T1_C2     |T2_C1      |T2_C2     |T3_C1      |T3_C2     |T4_C1      |T4_C2     
+-------------------------------------------------------------------------------------------
+1          |t1-row1   |1          |t2-row1   |1          |t3-row1   |2          |t4-row2   
+1          |t1-row1   |1          |t2-row1   |1          |t3-row1   |1          |t4-row1   
+1          |t1-row1   |1          |t2-row1   |2          |t3-row2   |2          |t4-row2   
+1          |t1-row1   |1          |t2-row1   |2          |t3-row2   |1          |t4-row1   
+1          |t1-row1   |2          |t2-row2   |1          |t3-row1   |2          |t4-row2   
+1          |t1-row1   |2          |t2-row2   |1          |t3-row1   |1          |t4-row1   
+1          |t1-row1   |2          |t2-row2   |2          |t3-row2   |2          |t4-row2   
+1          |t1-row1   |2          |t2-row2   |2          |t3-row2   |1          |t4-row1   
+2          |t1-row2   |1          |t2-row1   |1          |t3-row1   |2          |t4-row2   
+2          |t1-row2   |1          |t2-row1   |1          |t3-row1   |1          |t4-row1   
+2          |t1-row2   |1          |t2-row1   |2          |t3-row2   |2          |t4-row2   
+2          |t1-row2   |1          |t2-row1   |2          |t3-row2   |1          |t4-row1   
+2          |t1-row2   |2          |t2-row2   |1          |t3-row1   |2          |t4-row2   
+2          |t1-row2   |2          |t2-row2   |1          |t3-row1   |1          |t4-row1   
+2          |t1-row2   |2          |t2-row2   |2          |t3-row2   |2          |t4-row2   
+2          |t1-row2   |2          |t2-row2   |2          |t3-row2   |1          |t4-row1   
+ij> -- reorder columns
+select t2.*, t1.* from t1, t2;
+T2_C1      |T2_C2     |T1_C1      |T1_C2     
+---------------------------------------------
+1          |t2-row1   |1          |t1-row1   
+2          |t2-row2   |1          |t1-row1   
+1          |t2-row1   |2          |t1-row2   
+2          |t2-row2   |2          |t1-row2   
+ij> select t2_c2, t1_c2, t1_c1, t2_c1 from t1, t2;
+T2_C2     |T1_C2     |T1_C1      |T2_C1      
+---------------------------------------------
+t2-row1   |t1-row1   |1          |1          
+t2-row2   |t1-row1   |1          |2          
+t2-row1   |t1-row2   |2          |1          
+t2-row2   |t1-row2   |2          |2          
+ij> -- project out columns
+select t2_c2, t1_c1 from t1, t2;
+T2_C2     |T1_C1      
+----------------------
+t2-row1   |1          
+t2-row2   |1          
+t2-row1   |2          
+t2-row2   |2          
+ij> select a.t1_c1, cc.t1_c1, e.t1_c1, g.t1_c1, i.t1_c1 from t1 a, t1 cc, t1 e, t1 g, t1 i;
+T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      
+-----------------------------------------------------------
+1          |1          |1          |1          |1          
+1          |1          |1          |1          |2          
+1          |1          |1          |2          |1          
+1          |1          |1          |2          |2          
+1          |1          |2          |1          |1          
+1          |1          |2          |1          |2          
+1          |1          |2          |2          |1          
+1          |1          |2          |2          |2          
+1          |2          |1          |1          |1          
+1          |2          |1          |1          |2          
+1          |2          |1          |2          |1          
+1          |2          |1          |2          |2          
+1          |2          |2          |1          |1          
+1          |2          |2          |1          |2          
+1          |2          |2          |2          |1          
+1          |2          |2          |2          |2          
+2          |1          |1          |1          |1          
+2          |1          |1          |1          |2          
+2          |1          |1          |2          |1          
+2          |1          |1          |2          |2          
+2          |1          |2          |1          |1          
+2          |1          |2          |1          |2          
+2          |1          |2          |2          |1          
+2          |1          |2          |2          |2          
+2          |2          |1          |1          |1          
+2          |2          |1          |1          |2          
+2          |2          |1          |2          |1          
+2          |2          |1          |2          |2          
+2          |2          |2          |1          |1          
+2          |2          |2          |1          |2          
+2          |2          |2          |2          |1          
+2          |2          |2          |2          |2          
+ij> -- project/restricts
+select a.t1_c1, b.t1_c1, cc.t1_c1, d.t1_c1, e.t1_c1, f.t1_c1, g.t1_c1, h.t1_c1, i.t1_c1, j.t1_c1
+from t1 a, t1 b, t1 cc, t1 d, t1 e, t1 f, t1 g, t1 h, t1 i, t1 j
+where a.t1_c2 = b.t1_c2 and b.t1_c2 = cc.t1_c2 and cc.t1_c2 = d.t1_c2 and
+      d.t1_c2 = e.t1_c2 and e.t1_c2 = f.t1_c2 and f.t1_c2 = g.t1_c2 and
+      g.t1_c2 = h.t1_c2 and h.t1_c2 = i.t1_c2 and i.t1_c2 = j.t1_c2;
+T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      
+-----------------------------------------------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |1          |1          |1          |1          |1          
+2          |2          |2          |2          |2          |2          |2          |2          |2          |2          
+ij> select a.t1_c1, b.t1_c1, cc.t1_c1, d.t1_c1, e.t1_c1, f.t1_c1, g.t1_c1, h.t1_c1, i.t1_c1, j.t1_c1
+from t1 a, t1 b, t1 cc, t1 d, t1 e, t1 f, t1 g, t1 h, t1 i, t1 j
+where a.t1_c1 = 1 and b.t1_c1 = 1 and cc.t1_c1 = 1 and d.t1_c1 = 1 and e.t1_c1 = 1 and
+	  f.t1_c1 = 1 and g.t1_c1 = 1 and h.t1_c1 = 1 and i.t1_c1 = 1 and
+	  a.t1_c2 = b.t1_c2 and b.t1_c2 = cc.t1_c2 and cc.t1_c2 = d.t1_c2 and
+      d.t1_c2 = e.t1_c2 and e.t1_c2 = f.t1_c2 and f.t1_c2 = g.t1_c2 and
+      g.t1_c2 = h.t1_c2 and h.t1_c2 = i.t1_c2 and i.t1_c2 = j.t1_c2;
+T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      |T1_C1      
+-----------------------------------------------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |1          |1          |1          |1          |1          
+ij> -- project out entire tables
+select 1, 2 from t1, t2;
+1          |2          
+-----------------------
+1          |2          
+1          |2          
+1          |2          
+1          |2          
+ij> select 1, t1.t1_c1 from t1, t2;
+1          |T1_C1      
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> select t2.t2_c2,1 from t1, t2;
+T2_C2     |2          
+----------------------
+t2-row1   |1          
+t2-row2   |1          
+t2-row1   |1          
+t2-row2   |1          
+ij> -- bug #306
+select c.t1_c1 from (select a.t1_c1 from t1 a, t1 b) c, t1 d where c.t1_c1 = d.t1_c1;
+T1_C1      
+-----------
+1          
+1          
+2          
+2          
+ij> -- create a table for testing inserts
+create table instab (instab_c1 int, instab_c2 char(10), instab_c3 int,
+		     instab_c4 char(10));
+0 rows inserted/updated/deleted
+ij> -- insert select with joins
+-- cartesian product
+insert into instab select * from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |t1-row1   |1          |t2-row1   
+1          |t1-row1   |2          |t2-row2   
+2          |t1-row2   |1          |t2-row1   
+2          |t1-row2   |2          |t2-row2   
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> insert into instab (instab_c1, instab_c2, instab_c3, instab_c4)
+	select * from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |t1-row1   |1          |t2-row1   
+1          |t1-row1   |2          |t2-row2   
+2          |t1-row2   |1          |t2-row1   
+2          |t1-row2   |2          |t2-row2   
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> insert into instab (instab_c1, instab_c2, instab_c3, instab_c4)
+	select t2_c1, t2_c2, t1_c1, t1_c2 from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |t2-row1   |1          |t1-row1   
+2          |t2-row2   |1          |t1-row1   
+1          |t2-row1   |2          |t1-row2   
+2          |t2-row2   |2          |t1-row2   
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> insert into instab (instab_c3, instab_c1, instab_c2, instab_c4)
+	select t2_c1, t1_c1, t1_c2, t2_c2 from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |t1-row1   |1          |t2-row1   
+1          |t1-row1   |2          |t2-row2   
+2          |t1-row2   |1          |t2-row1   
+2          |t1-row2   |2          |t2-row2   
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> -- projection
+insert into instab (instab_c1, instab_c3)
+	select t1_c1, t2_c1 from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |NULL      |1          |NULL      
+1          |NULL      |2          |NULL      
+2          |NULL      |1          |NULL      
+2          |NULL      |2          |NULL      
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> -- project out 1 or more tables from join
+insert into instab select 1, '2', 3, '4' from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |2         |3          |4         
+1          |2         |3          |4         
+1          |2         |3          |4         
+1          |2         |3          |4         
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> insert into instab select 1, t1.t1_c2, 3, t1.t1_c2 from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |t1-row1   |3          |t1-row1   
+1          |t1-row1   |3          |t1-row1   
+1          |t1-row2   |3          |t1-row2   
+1          |t1-row2   |3          |t1-row2   
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> insert into instab select t2.t2_c1, '2', t2.t2_c1, '4' from t1, t2;
+4 rows inserted/updated/deleted
+ij> select * from instab;
+INSTAB_C1  |INSTAB_C2 |INSTAB_C3  |INSTAB_C4 
+---------------------------------------------
+1          |2         |1          |4         
+2          |2         |2          |4         
+1          |2         |1          |4         
+2          |2         |2          |4         
+ij> delete from instab;
+4 rows inserted/updated/deleted
+ij> ------------------------------------------
+-- test optimizations where we push around
+-- predicates (remapColumnReferences)
+------------------------------------------
+-- case
+select t1_c1 from t1, t2 where (case when t1_c1 = 1 then t2_c2 end) = t2_c2;
+T1_C1      
+-----------
+1          
+1          
+ij> -- CHAR built-in function
+select t1_c1 from t1, t2 where CHAR(t1_c1) = t2_c2;
+T1_C1      
+-----------
+ij> -- logical operator OR
+select t1_c1 from t1, t2 where t1_c1 = 1 or t2_c1 = 2;
+T1_C1      
+-----------
+1          
+1          
+2          
+ij> -- logical operator AND
+select t1_c1 from t1, t2 where t1_c1 = 2147483647 and 2147483647 = t2_c1;
+T1_C1      
+-----------
+ij> -- beetle 5421
+-- INT built-in function
+select t1_c1 from t1, t2 where INT(t1_c1) = t2_c1;
+ERROR 42X01: Syntax error: Encountered "INT" at line 3, column 32.
+ij> select t1_c1 from t1, t2 where t1_c1 = INT(2147483647) and INT(2147483647) = t2_c1;
+ERROR 42X01: Syntax error: Encountered "INT" at line 1, column 40.
+ij> -- transitive closure - verify join condition doesn't get dropped
+create table x(c1 int);
+0 rows inserted/updated/deleted
+ij> create table y(c1 int);
+0 rows inserted/updated/deleted
+ij> insert into x values 1, 2, null;
+3 rows inserted/updated/deleted
+ij> insert into y values 1, 2, null;
+3 rows inserted/updated/deleted
+ij> select * from x,y where x.c1 = y.c1 and x.c1 = 1 and y.c1 = 2;
+C1         |C1         
+-----------------------
+ij> select * from x,y where x.c1 = y.c1 and x.c1 is null;
+C1         |C1         
+-----------------------
+ij> select * from x,y where x.c1 = y.c1 and x.c1 is null and y.c1 = 2;
+C1         |C1         
+-----------------------
+ij> select * from x,y where x.c1 = y.c1 and x.c1 is null and y.c1 is null;
+C1         |C1         
+-----------------------
+ij> -- Beetle task 5000. Bug found by Websphere. Should not return any rows.
+select t1_c1, t1_c2, t2_c1, t2_c2
+  from t1, t2
+  where t1_c1 = t2_c1
+    and t1_c1 = 1
+    and t2_c1 <> 1;
+T1_C1      |T1_C2     |T2_C1      |T2_C2     
+---------------------------------------------
+ij> -- Beetle task 4736
+create table a (a1 int not null primary key, a2 int, a3 int, a4 int, a5 int, a6 int);
+0 rows inserted/updated/deleted
+ij> create table b (b1 int not null primary key, b2 int, b3 int, b4 int, b5 int, b6 int);
+0 rows inserted/updated/deleted
+ij> create table c (c1 int not null, c2 int, c3 int not null, c4 int, c5 int, c6 int);
+0 rows inserted/updated/deleted
+ij> create table d (d1 int not null, d2 int, d3 int not null, d4 int, d5 int, d6 int);
+0 rows inserted/updated/deleted
+ij> alter table c add primary key (c1,c3);
+0 rows inserted/updated/deleted
+ij> alter table d add primary key (d1,d3);
+0 rows inserted/updated/deleted
+ij> insert into a values (1,1,3,6,NULL,2),(2,3,2,4,2,2),(3,4,2,NULL,NULL,NULL),
+                     (4,NULL,4,2,5,2),(5,2,3,5,7,4),(7,1,4,2,3,4),
+                     (8,8,8,8,8,8),(6,7,3,2,3,4);
+8 rows inserted/updated/deleted
+ij> insert into b values (6,7,2,3,NULL,1),(4,5,9,6,3,2),(1,4,2,NULL,NULL,NULL),
+                     (5,NULL,2,2,5,2),(3,2,3,3,1,4),(7,3,3,3,3,3),(9,3,3,3,3,3);
+7 rows inserted/updated/deleted
+ij> insert into c values (3,7,7,3,NULL,1),(8,3,9,1,3,2),(1,4,1,NULL,NULL,NULL),
+                     (3,NULL,1,2,4,2),(2,2,5,3,2,4),(1,7,2,3,1,1),(3,8,4,2,4,6);
+7 rows inserted/updated/deleted
+ij> insert into d values (1,7,2,3,NULL,3),(2,3,9,1,1,2),(2,2,2,NULL,3,2),
+                     (1,NULL,3,2,2,1),(2,2,5,3,2,3),(2,5,6,3,7,2);
+6 rows inserted/updated/deleted
+ij> select a1,b1,c1,c3,d1,d3 
+  from D join (A left outer join (B join C on b2=c2) on a1=b1) 
+    on d3=b3 and d1=a2;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+7          |7          |8          |9          |1          |3          
+ij> select a1,b1,c1,c3,d1,d3 
+  from D join ((B join C on b2=c2) right outer join A on a1=b1) 
+    on d3=b3 and d1=a2;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+7          |7          |8          |9          |1          |3          
+ij> -----------------------------------
+-- clean up
+----------------------------------
+drop table a;
+0 rows inserted/updated/deleted
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> drop table d;
+0 rows inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table instab;
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/langUnitTests.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/langUnitTests.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8 @@
+-- Unit Test TLike starting
+-- Unit Test TLike finished
+ij> -- just a simple query so that we have a .sql file
+values 1;
+1          
+-----------
+1          
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lockTable.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lockTable.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,209 @@
+ij> -- multiuser lock table tests
+disconnect;
+ij> connect 'jdbc:derby:wombat;user=U1' AS C1;
+ij> autocommit off;
+ij> connect 'jdbc:derby:wombat;user=U2' AS C2;
+ij(C2)> autocommit off;
+ij(C2)> set connection C1;
+ij(C1)> -- create a table and populate it
+create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij(C1)> insert into t1 values 1;
+1 row inserted/updated/deleted
+ij(C1)> commit;
+ij(C1)> -- test TX vs TX locks
+lock table u1.t1 in exclusive mode;
+0 rows inserted/updated/deleted
+ij(C1)> set connection C2;
+ij(C2)> lock table u1.t1 in exclusive mode;
+ERROR X0X02: Table 'U1.T1' cannot be locked in 'EXCLUSIVE' mode.
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(C2)> set connection C1;
+ij(C1)> -- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+ij(C1)> select 
+    cast(username as char(8)) as username,
+    cast(t.type as char(8)) as trantype,
+    cast(l.type as char(8)) as type,
+    cast(lockcount as char(3)) as cnt,
+    mode,
+    cast(tablename as char(12)) as tabname,
+    cast(lockname as char(10)) as lockname,
+    state,
+    status
+from 
+    new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() t
+on l.xid = t.xid where l.tableType <> 'S' 
+order by 
+    tabname, type desc, mode, cnt, lockname;
+USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  
+---------------------------------------------------------------------------
+U1      |UserTran|TABLE   |1   |X   |T1          |Tablelock |GRANT|ACTIVE  
+ij(C1)> -- verify that we can insert into the table
+insert into t1 values 2;
+1 row inserted/updated/deleted
+ij(C1)> select * from t1;
+C1         
+-----------
+1          
+2          
+ij(C1)> commit;
+ij(C1)> -- test TX vs TS locks
+lock table t1 in exclusive mode;
+0 rows inserted/updated/deleted
+ij(C1)> set connection C2;
+ij(C2)> lock table u1.t1 in share mode;
+ERROR X0X02: Table 'U1.T1' cannot be locked in 'SHARE' mode.
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(C2)> set connection C1;
+ij(C1)> -- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+ij(C1)> select 
+    cast(username as char(8)) as username,
+    cast(t.type as char(8)) as trantype,
+    cast(l.type as char(8)) as type,
+    cast(lockcount as char(3)) as cnt,
+    mode,
+    cast(tablename as char(12)) as tabname,
+    cast(lockname as char(10)) as lockname,
+    state,
+    status
+from 
+    new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() t
+on l.xid = t.xid where l.tableType <> 'S' 
+order by 
+    tabname, type desc, mode, cnt, lockname;
+USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  
+---------------------------------------------------------------------------
+U1      |UserTran|TABLE   |1   |X   |T1          |Tablelock |GRANT|ACTIVE  
+ij(C1)> -- verify that we can insert into the table
+insert into t1 values 3;
+1 row inserted/updated/deleted
+ij(C1)> select * from t1;
+C1         
+-----------
+1          
+2          
+3          
+ij(C1)> commit;
+ij(C1)> -- test TS vs TX locks
+lock table t1 in share mode;
+0 rows inserted/updated/deleted
+ij(C1)> set connection C2;
+ij(C2)> lock table u1.t1 in exclusive mode;
+ERROR X0X02: Table 'U1.T1' cannot be locked in 'EXCLUSIVE' mode.
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(C2)> set connection C1;
+ij(C1)> -- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+ij(C1)> select 
+    cast(username as char(8)) as username,
+    cast(t.type as char(8)) as trantype,
+    cast(l.type as char(8)) as type,
+    cast(lockcount as char(3)) as cnt,
+    mode,
+    cast(tablename as char(12)) as tabname,
+    cast(lockname as char(10)) as lockname,
+    state,
+    status
+from 
+    new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() t
+on l.xid = t.xid where l.tableType <> 'S' 
+order by 
+    tabname, type desc, mode, cnt, lockname;
+USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  
+---------------------------------------------------------------------------
+U1      |UserTran|TABLE   |1   |S   |T1          |Tablelock |GRANT|ACTIVE  
+ij(C1)> -- verify that we can insert into the table
+insert into t1 values 4;
+1 row inserted/updated/deleted
+ij(C1)> select * from t1;
+C1         
+-----------
+1          
+2          
+3          
+4          
+ij(C1)> commit;
+ij(C1)> -- test TS vs TS locks
+lock table t1 in share mode;
+0 rows inserted/updated/deleted
+ij(C1)> set connection C2;
+ij(C2)> lock table u1.t1 in share mode;
+0 rows inserted/updated/deleted
+ij(C2)> set connection C1;
+ij(C1)> -- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+ij(C1)> select 
+    cast(username as char(8)) as username,
+    cast(t.type as char(8)) as trantype,
+    cast(l.type as char(8)) as type,
+    cast(lockcount as char(3)) as cnt,
+    mode,
+    cast(tablename as char(12)) as tabname,
+    cast(lockname as char(10)) as lockname,
+    state,
+    status
+from 
+    new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() t
+on l.xid = t.xid where l.tableType <> 'S' 
+order by 
+    tabname, type desc, mode, cnt, lockname;
+USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  
+---------------------------------------------------------------------------
+U2      |UserTran|TABLE   |1   |S   |T1          |Tablelock |GRANT|ACTIVE  
+U1      |UserTran|TABLE   |1   |S   |T1          |Tablelock |GRANT|ACTIVE  
+ij(C1)> -- verify that we cannot insert into the table
+insert into t1 values 5;
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(C1)> select * from t1;
+C1         
+-----------
+1          
+2          
+3          
+4          
+ij(C1)> commit;
+ij(C1)> set connection C2;
+ij(C2)> commit;
+ij(C2)> set connection C1;
+ij(C1)> -- create another table
+create table t2(c1 int);
+0 rows inserted/updated/deleted
+ij(C1)> commit;
+ij(C1)> -- verify that user getting error on lock table doesn't get rolled back
+lock table t1 in share mode;
+0 rows inserted/updated/deleted
+ij(C1)> set connection C2;
+ij(C2)> lock table u1.t2 in share mode;
+0 rows inserted/updated/deleted
+ij(C2)> lock table u1.t1 in exclusive mode;
+ERROR X0X02: Table 'U1.T1' cannot be locked in 'EXCLUSIVE' mode.
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(C2)> set connection C1;
+ij(C1)> -- verify that other user still has the lock
+run resource 'LockTableQuery.subsql';
+ij(C1)> select 
+    cast(username as char(8)) as username,
+    cast(t.type as char(8)) as trantype,
+    cast(l.type as char(8)) as type,
+    cast(lockcount as char(3)) as cnt,
+    mode,
+    cast(tablename as char(12)) as tabname,
+    cast(lockname as char(10)) as lockname,
+    state,
+    status
+from 
+    new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() t
+on l.xid = t.xid where l.tableType <> 'S' 
+order by 
+    tabname, type desc, mode, cnt, lockname;
+USERNAME|TRANTYPE|TYPE    |CNT |MODE|TABNAME     |LOCKNAME  |STATE|STATUS  
+---------------------------------------------------------------------------
+U1      |UserTran|TABLE   |1   |S   |T1          |Tablelock |GRANT|ACTIVE  
+U2      |UserTran|TABLE   |1   |S   |T2          |Tablelock |GRANT|ACTIVE  
+ij(C1)> commit;
+ij(C1)> disconnect;
+ij> set connection C2;
+ij> disconnect;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logStream.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logStream.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,11 @@
+Start logStream
+derby.log exists ?       true
+derby.log is directory ? false
+derby.log has content ?  true
+SHUTDOWN Cloudscape
+SHUTDOWN :Derby system shutdown.
+derby.log exists ?       true
+derby.log is directory ? false
+derby.log has content ?  true
+deleted derby.log ?     true
+End logStream

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logop.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/logop.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,387 @@
+ij> --
+-- this test is for logical operators (AND, OR, etc.)
+--
+-- create a table. Logical operators work on the results of comparisons,
+-- which are tested in a separate test, so the types of the columns being
+-- compared are irrelevant here.
+create table t (x int, y int);
+0 rows inserted/updated/deleted
+ij> -- insert some values, including nulls
+insert into t values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t values (2, 2);
+1 row inserted/updated/deleted
+ij> insert into t values (null, 2);
+1 row inserted/updated/deleted
+ij> insert into t values (1, null);
+1 row inserted/updated/deleted
+ij> insert into t values (null, null);
+1 row inserted/updated/deleted
+ij> -- basic AND test
+select x, y from t where x = 1 and y = 2;
+X          |Y          
+-----------------------
+1          |2          
+ij> select x, y from t where y = 2 and x = 1;
+X          |Y          
+-----------------------
+1          |2          
+ij> select x, y from t where x = 1 and y = 3;
+X          |Y          
+-----------------------
+ij> select x, y from t where y = 3 and x = 1;
+X          |Y          
+-----------------------
+ij> create table s (x int);
+0 rows inserted/updated/deleted
+ij> insert into s values (1);
+1 row inserted/updated/deleted
+ij> -- there is no short-circuiting with AND: ie when the first operand is FALSE,
+-- the second operant still got evaluated for AND. Same behavior in DB2 as well.
+select x from s where x = 5 and 2147483647 + 10 = 2;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- Does not matter it in what order the 2 operands are. Both of them always gets evaluated.
+select x from s where 2147483647 + 10 = 2 and x = 5;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- Now try a chain of ANDs
+select x, y from t where x = 1 and x + 0 = 1 and y = 2 and y + 0 = 2;
+X          |Y          
+-----------------------
+1          |2          
+ij> -- basic OR test
+select x, y from t where x = 1 or y = 2;
+X          |Y          
+-----------------------
+1          |1          
+1          |2          
+2          |2          
+NULL       |2          
+1          |NULL       
+ij> select x, y from t where y = 2 or x = 1;
+X          |Y          
+-----------------------
+1          |1          
+1          |2          
+2          |2          
+NULL       |2          
+1          |NULL       
+ij> select x, y from t where x = 4 or y = 5;
+X          |Y          
+-----------------------
+ij> select x, y from t where y = 5 or x = 4;
+X          |Y          
+-----------------------
+ij> -- test short-circuiting: for OR, when the first operand is TRUE, the second
+-- operand should not be evaluated.  We test this by deliberately causing an
+-- error in one of the operands.
+select x from s where x = 1 or 2147483647 + 10 = 2;
+X          
+-----------
+1          
+ij> -- Now try it with the error on the left, just to be sure the error really
+-- happens.
+select x from s where 2147483647 + 10 = 2 or x = 1;
+X          
+-----------
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> -- Now try a chain of ORs
+select x, y from t where x = 1 or x + 0 = 1 or y = 2 or y + 0 = 2;
+X          |Y          
+-----------------------
+1          |1          
+1          |2          
+2          |2          
+NULL       |2          
+1          |NULL       
+ij> -- Test the precedence of AND versus OR.  AND is supposed to have a higher
+-- precedence that OR, i.e. "a OR b AND c" is equivalent to "a OR (b AND c)"
+-- First test TRUE OR TRUE AND FALSE.  This should evaluate to TRUE.  If
+-- the precedence is wrong, it will evaluate to FALSE.
+select x from s where (1 = 1) or (2 = 2) and (3 = 4);
+X          
+-----------
+1          
+ij> -- Now test FALSE AND TRUE OR TRUE.  This should evaluate to to TRUE.  If
+-- the precedence is wrong, it will evaluate to FALSE.
+select x from s where (1 = 2) and (3 = 3) or (4 = 4);
+X          
+-----------
+1          
+ij> -- Now test whether parenthesized expressions work.  Use the parentheses to
+-- force the OR to be evaluated before the AND.
+select x from s where ( (1 = 1) or (2 = 2) ) and (3 = 4);
+X          
+-----------
+ij> select x from s where (1 = 2) and ( (3 = 3) or (4 = 4) );
+X          
+-----------
+ij> -- More involved testing of expression normalization
+-- Ands under ands under ands ...
+select * from s where (	( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						  ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) and
+						( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						  ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) );
+X          
+-----------
+1          
+ij> -- Ors under ors under ors ...
+select * from s where (	( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						  ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) or
+						( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						  ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) );
+X          
+-----------
+1          
+ij> -- Ands under ors under ors ...
+select * from s where (	( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						  ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) or
+						( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						  ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) );
+X          
+-----------
+1          
+ij> -- Ors under ands under ands
+select * from s where ( ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						  ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) and
+						( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						  ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) );
+X          
+-----------
+1          
+ij> -- left deep with ands
+select * from s where ( ( ( ( ( ((1=1) and (1=1)) and (1=1)) and (1=1)) and (1=1))
+						and (1=1)) and (1=1));
+X          
+-----------
+1          
+ij> -- left deep with ors
+select * from s where ( ( ( ( ( ((1=1) or (1=1)) or (1=1)) or (1=1)) or (1=1))
+						or (1=1)) or (1=1));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( ((1=1) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=1)) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=1)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=1))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						or (1=1)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						or (1=2)) or (1=1));
+X          
+-----------
+1          
+ij> -- right deep with ors
+select * from s where ( ( ( ( ( (1=1) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( (1=2) or ((1=1) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=1)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=1)) or (1=2))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=1))
+						or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=1)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=1));
+X          
+-----------
+1          
+ij> -- ... and false and ... should get resolved to false
+select x from s where 2147483647 + 10 = 2 and (1=2);
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> select x from s where (1=2) and 2147483647 + 10 = 2;
+X          
+-----------
+ij> -- nots
+select x from s where not ( (1 = 1) or (2 = 2) ) and (3 = 4);
+X          
+-----------
+ij> select x from s where not ( ( (1 = 1) or (2 = 2) ) and (3 = 4) );
+X          
+-----------
+1          
+ij> select x from s where (1 = 2) and not ( (3 = 3) or (4 = 4) );
+X          
+-----------
+ij> select x from s where not ( (1 = 2) and ( (3 = 3) or (4 = 4) ) );
+X          
+-----------
+1          
+ij> -- following NOTs in select clause won't work because it results in a transient boolean datatype
+select not ( (1 = 1) or (2 = 2) ) and (3 = 4) from s;
+ERROR 42X01: Syntax error: Encountered "not" at line 2, column 8.
+ij> --
+select not ( ( (1 = 1) or (2 = 2) ) and (3 = 4) ) from s;
+ERROR 42X01: Syntax error: Encountered "not" at line 2, column 8.
+ij> --
+select (1 = 2) and not ( (3 = 3) or (4 = 4) ) from s;
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 11.
+ij> --
+select not ( (1 = 2) and ( (3 = 3) or (4 = 4) ) ) from s;
+ERROR 42X01: Syntax error: Encountered "not" at line 2, column 8.
+ij> -- Ands under ands under ands ...
+select * from s where not (	( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						      ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) and
+						    ( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						      ( ((1=1) and (1=1)) and ((1=1) and (1=2)) ) ) );
+X          
+-----------
+1          
+ij> -- Ors under ors under ors ...
+select * from s where not (	( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						      ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) or
+						    ( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						      ( ((1=1) or (1=1)) or ((1=1) or (1=2)) ) ) );
+X          
+-----------
+ij> -- Ands under ors under ors ...
+select * from s where not (	( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						      ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) or
+						    ( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						      ( ((1=1) and (1=1)) or ((1=1) and (1=2)) ) ) );
+X          
+-----------
+ij> -- Ors under ands under ands
+select * from s where not ( ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						      ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) and
+						    ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						      ( ((1=1) or (1=1)) and ((1=1) or (1=2)) ) ) );
+X          
+-----------
+ij> -- left deep with ands
+select * from s where not ( ( ( ( ( ((1=1) and (1=2)) and (1=1)) and (1=1)) and (1=1))
+						    and (1=1)) and (1=1));
+X          
+-----------
+1          
+ij> -- left deep with ors
+select * from s where not ( ( ( ( ( ((1=2) or (1=1)) or (1=1)) or (1=1)) or (1=1))
+						    or (1=1)) or (1=1));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=1)) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=1)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=1))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						    or (1=1)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						    or (1=2)) or (1=1));
+X          
+-----------
+ij> -- right deep with ors
+select * from s where not ( ( ( ( ( (1=1) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+1          
+ij> select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=1)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=1)) or (1=2))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=1))
+						    or (1=2)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=1)) or (1=2));
+X          
+-----------
+ij> select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=1));
+X          
+-----------
+ij> -- nots on nots
+select * from s where not ( not ( not ((1=2) or (1=1))) or (not ((1=2) or (1=2)) ) );
+X          
+-----------
+ij> -- following nots on nots won't work because they result in transient boolean datatype in the select clause
+select not ( not ( not ((1=2) or (1=1))) or (not ((1=2) or (1=2)) ) ) from s;
+ERROR 42X01: Syntax error: Encountered "not" at line 2, column 8.
+ij> -- negative testing
+-- non boolean where clauses
+select * from s where 1;
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> select * from s where 1 and (1=1);
+ERROR 42Y94: An AND or OR has a non-Boolean operand. The operands of AND and OR must evaluate to TRUE, FALSE, or UNKNOWN.
+ij> select * from s where (1=1) and 1;
+ERROR 42Y94: An AND or OR has a non-Boolean operand. The operands of AND and OR must evaluate to TRUE, FALSE, or UNKNOWN.
+ij> select * from s where 1 or (1=1);
+ERROR 42Y94: An AND or OR has a non-Boolean operand. The operands of AND and OR must evaluate to TRUE, FALSE, or UNKNOWN.
+ij> select * from s where (1=1) or 1;
+ERROR 42Y94: An AND or OR has a non-Boolean operand. The operands of AND and OR must evaluate to TRUE, FALSE, or UNKNOWN.
+ij> select * from s where not 1;
+ERROR 42X40: A NOT has a non-Boolean operand. The operand of NOT must evaluate to TRUE, FALSE, or UNKNOWN.
+ij> -- Clean up
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lojreorder.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,15734 @@
+ij> -- This test LOJ reordering.
+-- Many testcases are derived from DB2 UDB FVT testcases.
+-- Cliff Leung. 10/2002
+CREATE TABLE T (A INT NOT NULL, B DECIMAL(10,3) NOT NULL, C VARCHAR(5) NOT NULL);
+0 rows inserted/updated/deleted
+ij> INSERT INTO T VALUES (1, 1.0, '1'), (2, 2.0, '2'), (3, 3.0, '3');
+3 rows inserted/updated/deleted
+ij> CREATE TABLE S (D INT NOT NULL, E DECIMAL(10,3) NOT NULL, F VARCHAR(5) NOT NULL);
+0 rows inserted/updated/deleted
+ij> INSERT INTO S VALUES (2, 2.0, '2'), (3, 3.0, '3'), (4, 4.0, '4');
+3 rows inserted/updated/deleted
+ij> CREATE TABLE R (G INT NOT NULL, H DECIMAL(10,3) NOT NULL, I VARCHAR(5) NOT NULL);
+0 rows inserted/updated/deleted
+ij> INSERT INTO R VALUES (3, 3.0, '3'), (4, 4.0, '4'), (5, 5.0, '5');
+3 rows inserted/updated/deleted
+ij> CREATE TABLE TT (J INT NOT NULL, K DECIMAL(10,3) NOT NULL, L VARCHAR(5) NOT NULL);
+0 rows inserted/updated/deleted
+ij> INSERT INTO TT VALUES (2, 2.0, '2'), (3, 3.0, '3'), (4, 4.0, '4');
+3 rows inserted/updated/deleted
+ij> select * from t left outer join s on (b = e);
+A          |B            |C    |D          |E            |F    
+---------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    
+3          |3.000        |3    |3          |3.000        |3    
+ij> select a, e, f, a+e as "A+E" from t left outer join s on (b = e);
+A          |E            |F    |A+E              
+-------------------------------------------------
+1          |NULL         |NULL |NULL             
+2          |2.000        |2    |4.000            
+3          |3.000        |3    |6.000            
+ij> select * from t right outer join s on (b = e);
+A          |B            |C    |D          |E            |F    
+---------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    
+3          |3.000        |3    |3          |3.000        |3    
+NULL       |NULL         |NULL |4          |4.000        |4    
+ij> select a, e, f, a+e as "A+E" from t right outer join s on (b = e);
+A          |E            |F    |A+E              
+-------------------------------------------------
+2          |2.000        |2    |4.000            
+3          |3.000        |3    |6.000            
+NULL       |4.000        |4    |NULL             
+ij> select a, e, f, a+e as "A+E" from t left outer join s on (b = e) where d > 0;
+A          |E            |F    |A+E              
+-------------------------------------------------
+2          |2.000        |2    |4.000            
+3          |3.000        |3    |6.000            
+ij> select a, e, f, a+e as "A+E" from t right outer join s on (b = e) where d > 0;
+A          |E            |F    |A+E              
+-------------------------------------------------
+2          |2.000        |2    |4.000            
+3          |3.000        |3    |6.000            
+NULL       |4.000        |4    |NULL             
+ij> -- LOJ and LOJ
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i);
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+1          |NULL         |NULL |NULL             |NULL       
+2          |2.000        |2    |4.000            |NULL       
+3          |3.000        |3    |6.000            |3          
+ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where a>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+2          |2.000        |2    |4.000            |NULL       
+3          |3.000        |3    |6.000            |3          
+ij> select a, d, e, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where d>1;
+A          |D          |E            |A+E              |G          
+-------------------------------------------------------------------
+2          |2          |2.000        |4.000            |NULL       
+3          |3          |3.000        |6.000            |3          
+ij> select a, d, e, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where h>1;
+A          |D          |E            |A+E              |G          
+-------------------------------------------------------------------
+3          |3          |3.000        |6.000            |3          
+ij> -- LOJ and ROJ
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i);
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+NULL       |NULL         |NULL |NULL             |4          
+NULL       |NULL         |NULL |NULL             |5          
+ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where a>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where d>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+ij> select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where h>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+NULL       |NULL         |NULL |NULL             |4          
+NULL       |NULL         |NULL |NULL             |5          
+ij> -- ROJ and ROJ
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i);
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+NULL       |4.000        |4    |NULL             |4          
+NULL       |NULL         |NULL |NULL             |5          
+ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where a>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where d>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+NULL       |4.000        |4    |NULL             |4          
+ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where h>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+NULL       |4.000        |4    |NULL             |4          
+NULL       |NULL         |NULL |NULL             |5          
+ij> -- ROJ and LOJ
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i);
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+2          |2.000        |2    |4.000            |NULL       
+3          |3.000        |3    |6.000            |3          
+NULL       |4.000        |4    |NULL             |4          
+ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where a>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+2          |2.000        |2    |4.000            |NULL       
+3          |3.000        |3    |6.000            |3          
+ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where d>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+2          |2.000        |2    |4.000            |NULL       
+3          |3.000        |3    |6.000            |3          
+NULL       |4.000        |4    |NULL             |4          
+ij> select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where h>1;
+A          |E            |F    |A+E              |G          
+-------------------------------------------------------------
+3          |3.000        |3    |6.000            |3          
+NULL       |4.000        |4    |NULL             |4          
+ij> -- NO LOJ reordering
+select * from (t left outer join s on (b = e)) left outer join r on (f = i) where a > 0;
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from (t left outer join s on (b = e)) inner join r on (f = i);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from (t left outer join s on (b = e)) inner join r on (f = i) where a > 0;
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from (t inner join s on (b = e)) inner join r on (f = i) where a > 0;
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from (t inner join s on (b = e)) left outer join r on (f = i) where a > 0;
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t, s left outer join r on (d = g) where a = e;
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join s on (b = e), r where a = g;
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> -- bug 5658
+-- In DB2 UDB, any column referenced in an expression of the 
+-- join-condition must be a column of one of the operand tables of 
+-- the associated join (in the scope of the same joined-table clause).
+-- this query should fail
+select t1.*, s2.* from t t1 left outer join s on (b = e), t t2 left outer join s s2 on (b = e);
+ERROR 42X03: Column name 'B' is in more than one table in the FROM list.
+ij> -- a view of a regular join
+create view jv (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t, s where b = e);
+0 rows inserted/updated/deleted
+ij> select * from jv left outer join r on (fv = i);
+FV   |EV           |DV         |CV   |BV           |AV         |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+2    |2.000        |2          |2    |2.000        |2          |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    
+ij> select * from r left outer join jv on (fv = i);
+G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+4          |4.000        |4    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+5          |5.000        |5    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+ij> -- a view of LOJ
+create view lojv (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t left outer join s on b = e);
+0 rows inserted/updated/deleted
+ij> select * from r left outer join lojv on (fv = i);
+G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+4          |4.000        |4    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+5          |5.000        |5    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+ij> select * from r right outer join lojv on (fv = i);
+G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+NULL       |NULL         |NULL |NULL |NULL         |NULL       |1    |1.000        |1          
+NULL       |NULL         |NULL |2    |2.000        |2          |2    |2.000        |2          
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+ij> -- a view on top of a LOJ view
+create view vv as (select * from lojv);
+0 rows inserted/updated/deleted
+ij> select * from r left outer join vv on (fv = i);
+G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+4          |4.000        |4    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+5          |5.000        |5    |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+ij> select * from r right outer join vv on (fv = i);
+G          |H            |I    |FV   |EV           |DV         |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+NULL       |NULL         |NULL |NULL |NULL         |NULL       |1    |1.000        |1          
+NULL       |NULL         |NULL |2    |2.000        |2          |2    |2.000        |2          
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+ij> -- check for ON predicate for LOJ reordering: no reordering
+select * from t left outer join (s left outer join r on (f = i)) on (b = e and a > b);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3          |3.000        |3    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from t left outer join (s left outer join r on (f = i)) on (b = e and a = b);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join (s left outer join r on (f = i)) on (b = e and 1 = 1);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join (s left outer join r on (f = i)) on (b > e);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3          |3.000        |3    |2          |2.000        |2    |NULL       |NULL         |NULL 
+ij> select * from t left outer join (s left outer join r on (f = i)) on (a = a);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |2          |2.000        |2    |NULL       |NULL         |NULL 
+1          |1.000        |1    |3          |3.000        |3    |3          |3.000        |3    
+1          |1.000        |1    |4          |4.000        |4    |4          |4.000        |4    
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+2          |2.000        |2    |3          |3.000        |3    |3          |3.000        |3    
+2          |2.000        |2    |4          |4.000        |4    |4          |4.000        |4    
+3          |3.000        |3    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+3          |3.000        |3    |4          |4.000        |4    |4          |4.000        |4    
+ij> select * from t left outer join (s left outer join r on (f = i)) on (a = 1);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |2          |2.000        |2    |NULL       |NULL         |NULL 
+1          |1.000        |1    |3          |3.000        |3    |3          |3.000        |3    
+1          |1.000        |1    |4          |4.000        |4    |4          |4.000        |4    
+2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3          |3.000        |3    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from t left outer join (s left outer join r on (f = i)) on (1 = 1);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |2          |2.000        |2    |NULL       |NULL         |NULL 
+1          |1.000        |1    |3          |3.000        |3    |3          |3.000        |3    
+1          |1.000        |1    |4          |4.000        |4    |4          |4.000        |4    
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+2          |2.000        |2    |3          |3.000        |3    |3          |3.000        |3    
+2          |2.000        |2    |4          |4.000        |4    |4          |4.000        |4    
+3          |3.000        |3    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+3          |3.000        |3    |4          |4.000        |4    |4          |4.000        |4    
+ij> -- check for ON predicate for LOJ reordering: reordering is done
+select * from t left outer join (s left outer join r on (f = i)) on (a = d and b = e and c = f);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join (s left outer join r on (f = i)) on ((a = d and b = e) and c = f);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join (s left outer join r on (f = i)) on (a = d and (b = e and c = f));
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join (s left outer join r on (f = i)) on (not(a <> d or b <> e or c <> f));
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> -- check for LOJ reorder with subquery
+select * from t left outer join (s left outer join r on (f = i)) on (a = d) where a in (select j from tt);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> -- LOJ involving the same table
+select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.a)) on (t1.a=t2.a);
+A          |B            |C    |A          |B            |C    |A          |B            |C    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |1          |1.000        |1    |1          |1.000        |1    
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.a)) on (t1.b=t2.b);
+A          |B            |C    |A          |B            |C    |A          |B            |C    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |1          |1.000        |1    |1          |1.000        |1    
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.b)) on (t1.a=t2.b);
+A          |B            |C    |A          |B            |C    |A          |B            |C    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |1          |1.000        |1    |1          |1.000        |1    
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> -- comparing columns of different types.
+select t.a, s.d, r.g from t left outer join (s left outer join r on (e=g)) on (b=d);
+A          |D          |G          
+-----------------------------------
+1          |NULL       |NULL       
+2          |2          |NULL       
+3          |3          |3          
+ij> select r.g from t left outer join (s left outer join r on (e=g)) on (b=d);
+G          
+-----------
+NULL       
+NULL       
+3          
+ij> -- these seem to work
+select * from t left outer join (s left outer join r on (e=g)) on (b=d);
+A          |B            |C    |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select t.a from t left outer join (s left outer join r on (e=g)) on (b=d);
+A          
+-----------
+1          
+2          
+3          
+ij> select s.f, s.e, s.d, t.c, t.b, t.a from t left outer join (s left outer join r on (e=g)) on (b=d);
+F    |E            |D          |C    |B            |A          
+---------------------------------------------------------------
+NULL |NULL         |NULL       |1    |1.000        |1          
+2    |2.000        |2          |2    |2.000        |2          
+3    |3.000        |3          |3    |3.000        |3          
+ij> -- need to test more on changes deep inside...
+create view loj (a, b, c, d, e, f, g, h, i, ae) as (select a, b, c, d, e, f, g, h, i, a+e as "A+E" from t left outer join (s left outer join r on (f = i)) on (b = e));
+0 rows inserted/updated/deleted
+ij> select * from loj;
+A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
+-----------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
+2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+ij> select * from t left outer join loj on (t.a=loj.a);
+A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
+-------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+ij> select * from t left outer join loj on (t.a=loj.d);
+A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
+-------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+ij> select * from t right outer join loj on (t.a=loj.a);
+A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
+-------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+ij> select * from t inner join loj on (t.a=loj.a);
+A          |B            |C    |A          |B            |C    |D          |E            |F    |G          |H            |I    |AE               
+-------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |1          |1.000        |1    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL             
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL |4.000            
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |6.000            
+ij> -- 4 level deep
+-- b=e will be pushed first, one level down
+-- j=a will then be pushed next, 2 levels down (after b=e pushed)
+select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a);
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a) where j>0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a) where j>0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=d);
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> -- TT LOJ (T LOJ (S LOJ R))) becomes TT LOJ ((T LOJ S) LOJ R)
+select 1 from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=r.g);
+1          
+-----------
+1          
+1          
+1          
+ij> select 1 from tt right outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=g);
+1          
+-----------
+1          
+1          
+1          
+ij> -- okay
+select 1 from tt, (t left outer join (s left outer join r on (f = i)) on (b = e)) where (j=g);
+1          
+-----------
+1          
+ij> select 1 from tt right outer join (t left outer join (s inner join r on (f = i)) on (b = e)) on (j=g);
+1          
+-----------
+1          
+1          
+1          
+ij> select 1 from tt inner join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=g);
+1          
+-----------
+1          
+ij> -- LOJ w/ left-deep LOJ: LOJ will be pushed twice
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where j > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where b > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where e > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where g > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select j+1, k+2, L||'s', a+10, b+10, C||'t', d+20, e+20, f||'u', g+30, h+30, i||'v' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+1          |2                |3     |4          |5                |6     |7          |8                |9     |10         |11               |12    
+---------------------------------------------------------------------------------------------------------------------------------------------------
+3          |4.000            |2s    |12         |12.000           |2t    |22         |22.000           |2u    |NULL       |NULL             |NULL  
+4          |5.000            |3s    |13         |13.000           |3t    |23         |23.000           |3u    |33         |33.000           |3v    
+5          |6.000            |4s    |NULL       |NULL             |NULL  |NULL       |NULL             |NULL  |NULL       |NULL             |NULL  
+ij> select j, j+1, k, k+2, L, L||'s' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+J          |2          |K            |4                |L    |6     
+--------------------------------------------------------------------
+2          |3          |2.000        |4.000            |2    |2s    
+3          |4          |3.000        |5.000            |3    |3s    
+4          |5          |4.000        |6.000            |4    |4s    
+ij> select a, a+10, b, b+10, C, C||'t' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+A          |2          |B            |4                |C    |6     
+--------------------------------------------------------------------
+2          |12         |2.000        |12.000           |2    |2t    
+3          |13         |3.000        |13.000           |3    |3t    
+NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+ij> select d, d+20, e, e+20, f, f||'u' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+D          |2          |E            |4                |F    |6     
+--------------------------------------------------------------------
+2          |22         |2.000        |22.000           |2    |2u    
+3          |23         |3.000        |23.000           |3    |3u    
+NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+ij> select g, g+30, h, h+30, i, i||'v' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+G          |2          |H            |4                |I    |6     
+--------------------------------------------------------------------
+NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+3          |33         |3.000        |33.000           |3    |3v    
+NULL       |NULL       |NULL         |NULL             |NULL |NULL  
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d);
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where j > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where b > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where e > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |2          |2.000        |2    |2          |2.000        |2    |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where g > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g);
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where j > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2          |2.000        |2    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+4          |4.000        |4    |NULL       |NULL         |NULL |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where b > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where e > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where g > 0;
+J          |K            |L    |A          |B            |C    |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    |3          |3.000        |3    
+ij> --
+-- Create views of union, regular joins, subquery, group by, having clause,
+-- and use the view in the LOJ operands and yet the LOJ reordering is applicable.
+-- We need to test the join condition: LHS=RHS.
+create view v1 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t left outer join s on b = e);
+0 rows inserted/updated/deleted
+ij> create view v2 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t inner join s on b = e);
+0 rows inserted/updated/deleted
+ij> create view v3 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t right join s on b = e);
+0 rows inserted/updated/deleted
+ij> create view v4 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t, s where b = e);
+0 rows inserted/updated/deleted
+ij> create view v5 (cv, bv, cnt) as (select c, b, count(*) from t group by c, b);
+0 rows inserted/updated/deleted
+ij> create view v6 (cv, bv, cnt) as (select c, b, count(*) from t group by c, b having b > 0);
+0 rows inserted/updated/deleted
+ij> create view v7 (cv, bv, av) as (select c, b, a from t where b in (select e from s));
+0 rows inserted/updated/deleted
+ij> create view v8 (cv, bv, av) as (select c, b, a from t union select f, e, d from s);
+0 rows inserted/updated/deleted
+ij> -- All these test cases need table references to determine if the join condition is proper for LOJ
+-- reordering: LHS = RHS
+select * from v1 left outer join (s left outer join r on (f = i)) on (d=v1.av);
+FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+NULL |NULL         |NULL       |1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v2 left outer join (s left outer join r on (f = i)) on (d=v2.av);
+FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v3 left outer join (s left outer join r on (f = i)) on (d=v3.av);
+FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+4    |4.000        |4          |NULL |NULL         |NULL       |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+ij> select * from v4 left outer join (s left outer join r on (f = i)) on (d=v4.av);
+FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v5 left outer join (s left outer join r on (f = i)) on (e=v5.bv);
+CV   |BV           |CNT        |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2    |2.000        |1          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |1          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v6 left outer join (s left outer join r on (f = i)) on (e=v6.bv);
+CV   |BV           |CNT        |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2    |2.000        |1          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |1          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v7 left outer join (s left outer join r on (f = i)) on (e=v7.bv);
+CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v8 left outer join (s left outer join r on (f = i)) on (e=v8.bv);
+CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-----------------------------------------------------------------------------------------------
+1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2    |2.000        |2          |2          |2.000        |2    |NULL       |NULL         |NULL 
+3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+4    |4.000        |4          |4          |4.000        |4    |4          |4.000        |4    
+ij> select * from t left outer join (s left outer join v1 on (f = cv)) on (d=a);
+A          |B            |C    |D          |E            |F    |FV   |EV           |DV         |CV   |BV           |AV         
+-------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |1    |1.000        |1          |NULL |NULL         |NULL       
+2          |2.000        |2    |2          |2.000        |2    |2    |2.000        |2          |2    |2.000        |2          
+3          |3.000        |3    |3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+ij> select * from t left outer join (s left outer join v8 on (f = cv)) on (d=a);
+A          |B            |C    |D          |E            |F    |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |1    |1.000        |1          
+2          |2.000        |2    |2          |2.000        |2    |2    |2.000        |2          
+3          |3.000        |3    |3          |3.000        |3    |3    |3.000        |3          
+ij> select * from t left outer join (v1 left outer join s on (f = cv)) on (av=a);
+A          |B            |C    |FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    
+-------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |1    |1.000        |1          |NULL |NULL         |NULL       |NULL       |NULL         |NULL 
+2          |2.000        |2    |2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    
+ij> select * from t left outer join (v8 left outer join s on (f = cv)) on (av=a);
+A          |B            |C    |CV   |BV           |AV         |D          |E            |F    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |1    |1.000        |1          |NULL       |NULL         |NULL 
+2          |2.000        |2    |2    |2.000        |2          |2          |2.000        |2    
+3          |3.000        |3    |3    |3.000        |3          |3          |3.000        |3    
+ij> -- No LOJ reordering due to join conditions
+select * from v1 left outer join (s left outer join r on (f = i)) on (g=v1.av);
+FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+NULL |NULL         |NULL       |1    |1.000        |1          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+2    |2.000        |2          |2    |2.000        |2          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from v2 left outer join (s left outer join r on (f = i)) on (g=v2.av);
+FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    |G          |H            |I    
+-------------------------------------------------------------------------------------------------------------------------------
+2    |2.000        |2          |2    |2.000        |2          |NULL       |NULL         |NULL |NULL       |NULL         |NULL 
+3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    |3          |3.000        |3    
+ij> select * from t left outer join (s left outer join v1 on (f = cv)) on (av=a);
+A          |B            |C    |D          |E            |F    |FV   |EV           |DV         |CV   |BV           |AV         
+-------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL |NULL         |NULL       |NULL |NULL         |NULL       
+2          |2.000        |2    |2          |2.000        |2    |2    |2.000        |2          |2    |2.000        |2          
+3          |3.000        |3    |3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          
+ij> select * from t left outer join (s left outer join v8 on (f = cv)) on (av=a);
+A          |B            |C    |D          |E            |F    |CV   |BV           |AV         
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL       |NULL         |NULL |NULL |NULL         |NULL       
+2          |2.000        |2    |2          |2.000        |2    |2    |2.000        |2          
+3          |3.000        |3    |3          |3.000        |3    |3    |3.000        |3          
+ij> select * from t left outer join (v1 left outer join s on (f = cv)) on (d=a);
+A          |B            |C    |FV   |EV           |DV         |CV   |BV           |AV         |D          |E            |F    
+-------------------------------------------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL |NULL         |NULL       |NULL |NULL         |NULL       |NULL       |NULL         |NULL 
+2          |2.000        |2    |2    |2.000        |2          |2    |2.000        |2          |2          |2.000        |2    
+3          |3.000        |3    |3    |3.000        |3          |3    |3.000        |3          |3          |3.000        |3    
+ij> select * from t left outer join (v8 left outer join s on (f = cv)) on (d=a);
+A          |B            |C    |CV   |BV           |AV         |D          |E            |F    
+-----------------------------------------------------------------------------------------------
+1          |1.000        |1    |NULL |NULL         |NULL       |NULL       |NULL         |NULL 
+2          |2.000        |2    |2    |2.000        |2          |2          |2.000        |2    
+3          |3.000        |3    |3    |3.000        |3          |3          |3.000        |3    
+ij> -- values clause
+-- select * from table (values (1, 2, 3)) as q(a, b, c);
+drop view v1;
+0 rows inserted/updated/deleted
+ij> drop view v2;
+0 rows inserted/updated/deleted
+ij> drop view v3;
+0 rows inserted/updated/deleted
+ij> drop view v4;
+0 rows inserted/updated/deleted
+ij> drop view v5;
+0 rows inserted/updated/deleted
+ij> drop view v6;
+0 rows inserted/updated/deleted
+ij> drop view v7;
+0 rows inserted/updated/deleted
+ij> drop view v8;
+0 rows inserted/updated/deleted
+ij> drop view loj;
+0 rows inserted/updated/deleted
+ij> drop view vv;
+0 rows inserted/updated/deleted
+ij> drop view lojv;
+0 rows inserted/updated/deleted
+ij> drop view jv;
+0 rows inserted/updated/deleted
+ij> DROP TABLE T;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S;
+0 rows inserted/updated/deleted
+ij> DROP TABLE R;
+0 rows inserted/updated/deleted
+ij> DROP TABLE TT;
+0 rows inserted/updated/deleted
+ij> -- from the customer
+CREATE TABLE TNL1 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5));
+0 rows inserted/updated/deleted
+ij> insert into TNL1 values (1, 'abc', 1.1);
+1 row inserted/updated/deleted
+ij> insert into TNL1 values (2, 'bcd', 2.2);
+1 row inserted/updated/deleted
+ij> insert into TNL1 values (3, 'cde', 3.3);
+1 row inserted/updated/deleted
+ij> insert into TNL1 values (4, 'ABC', 1.1);
+1 row inserted/updated/deleted
+ij> insert into TNL1 values (5, 'BCD', 2.2);
+1 row inserted/updated/deleted
+ij> insert into TNL1 values (6, 'CDE', 3.3);
+1 row inserted/updated/deleted
+ij> CREATE TABLE TNL1_1 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5), ID2 INTEGER);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX I_TNL11 ON TNL1_1 (ID2 ASC);
+0 rows inserted/updated/deleted
+ij> insert into TNL1_1 values (3, 'cde', 3.3, 30);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1 values (4, 'xyz', 4.4, 40);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1 values (5, 'lmn', 5.5, 50);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1 values (6, 'CDE', 3.3, 30);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1 values (7, 'XYZ', 4.4, 40);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1 values (8, 'LMN', 5.5, 50);
+1 row inserted/updated/deleted
+ij> CREATE TABLE TNL1_1_1 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5));
+0 rows inserted/updated/deleted
+ij> insert into TNL1_1_1 values (2, 'bcd', 2.2);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1_1 values (3, 'cde', 3.3);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1_1 values (4, 'xyz', 4.4);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1_1 values (5, 'BCD', 2.2);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1_1 values (6, 'CDE', 3.3);
+1 row inserted/updated/deleted
+ij> insert into TNL1_1_1 values (7, 'XYZ', 4.4);
+1 row inserted/updated/deleted
+ij> CREATE TABLE TNL1_2 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5));
+0 rows inserted/updated/deleted
+ij> insert into TNL1_2 values (4, 'xyz', 4.4);
+1 row inserted/updated/deleted
+ij> insert into TNL1_2 values (5, 'lmn', 5.5);
+1 row inserted/updated/deleted
+ij> insert into TNL1_2 values (6, 'stu', 6.6);
+1 row inserted/updated/deleted
+ij> insert into TNL1_2 values (7, 'XYZ', 4.4);
+1 row inserted/updated/deleted
+ij> insert into TNL1_2 values (8, 'LMN', 5.5);
+1 row inserted/updated/deleted
+ij> insert into TNL1_2 values (9, 'STU', 6.6);
+1 row inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 8000;
+ij> SELECT * FROM TNL1 A LEFT OUTER JOIN TNL1_1 B ON A.ID = B.ID LEFT OUTER JOIN  TNL1_1_1 C ON B.ID2=C.ID LEFT OUTER JOIN TNL1_2 D ON A.ID=D.ID ORDER BY 1;
+ID         |COL_CHAR            |COL_DECIMAL    |ID         |COL_CHAR            |COL_DECIMAL    |ID2        |ID         |COL_CHAR            |COL_DECIMAL    |ID         |COL_CHAR            |COL_DECIMAL    
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |abc                 |1.10000        |NULL       |NULL                |NULL           |NULL       |NULL       |NULL                |NULL           |NULL       |NULL                |NULL           
+2          |bcd                 |2.20000        |NULL       |NULL                |NULL           |NULL       |NULL       |NULL                |NULL           |NULL       |NULL                |NULL           
+3          |cde                 |3.30000        |3          |cde                 |3.30000        |30         |NULL       |NULL                |NULL           |NULL       |NULL                |NULL           
+4          |ABC                 |1.10000        |4          |xyz                 |4.40000        |40         |NULL       |NULL                |NULL           |4          |xyz                 |4.40000        
+5          |BCD                 |2.20000        |5          |lmn                 |5.50000        |50         |NULL       |NULL                |NULL           |5          |lmn                 |5.50000        
+6          |CDE                 |3.30000        |6          |CDE                 |3.30000        |30         |NULL       |NULL                |NULL           |6          |stu                 |6.60000        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT * FROM TNL1 A LEFT OUTER JOIN TNL1_1 B ON A.ID = B.ID LEFT OUTER JOIN  TNL1_1_1 C ON B.ID2=C.ID LEFT OUTER JOIN TNL1_2 D ON A.ID=D.ID ORDER BY 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6
+Rows returned = 6
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6
+	Number of rows output=6
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Hash Left Outer Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 6
+	Rows seen from the right = 3
+	Empty right rows returned = 0
+	Rows filtered = 0
+	Rows returned = 6
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Hash Left Outer Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 6
+		Rows seen from the right = 0
+		Empty right rows returned = 0
+		Rows filtered = 0
+		Rows returned = 6
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Hash Left Outer Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 4
+			Empty right rows returned = 0
+			Rows filtered = 0
+			Rows returned = 6
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for TNL1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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=3
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Hash Scan ResultSet for TNL1_1 at read committed isolation level using instantaneous share row locking: 
+				Number of opens = 6
+				Hash table size = 6
+				Hash key is column number 0
+				Rows seen = 4
+				Rows filtered = 0
+					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=4
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					scan qualifiers:
+None
+					next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Hash Scan ResultSet for TNL1_1_1 at read committed isolation level using instantaneous share row locking: 
+			Number of opens = 6
+			Hash table size = 6
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=3
+				Number of pages visited=1
+				Number of rows qualified=6
+				Number of rows visited=6
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TNL1_2 at read committed isolation level using instantaneous share row locking: 
+		Number of opens = 6
+		Hash table size = 6
+		Hash key is column number 0
+		Rows seen = 3
+		Rows filtered = 0
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=6
+			Number of rows visited=6
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> SELECT * FROM TNL1 A LEFT OUTER JOIN (TNL1_1 B LEFT OUTER JOIN TNL1_1_1 C ON B.ID2=C.ID) ON A.ID=B.ID LEFT OUTER JOIN TNL1_2 D ON A.ID=D.ID ORDER BY 1;
+ID         |COL_CHAR            |COL_DECIMAL    |ID         |COL_CHAR            |COL_DECIMAL    |ID2        |ID         |COL_CHAR            |COL_DECIMAL    |ID         |COL_CHAR            |COL_DECIMAL    
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |abc                 |1.10000        |NULL       |NULL                |NULL           |NULL       |NULL       |NULL                |NULL           |NULL       |NULL                |NULL           
+2          |bcd                 |2.20000        |NULL       |NULL                |NULL           |NULL       |NULL       |NULL                |NULL           |NULL       |NULL                |NULL           
+3          |cde                 |3.30000        |3          |cde                 |3.30000        |30         |NULL       |NULL                |NULL           |NULL       |NULL                |NULL           
+4          |ABC                 |1.10000        |4          |xyz                 |4.40000        |40         |NULL       |NULL                |NULL           |4          |xyz                 |4.40000        
+5          |BCD                 |2.20000        |5          |lmn                 |5.50000        |50         |NULL       |NULL                |NULL           |5          |lmn                 |5.50000        
+6          |CDE                 |3.30000        |6          |CDE                 |3.30000        |30         |NULL       |NULL                |NULL           |6          |stu                 |6.60000        
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT * FROM TNL1 A LEFT OUTER JOIN (TNL1_1 B LEFT OUTER JOIN TNL1_1_1 C ON B.ID2=C.ID) ON A.ID=B.ID LEFT OUTER JOIN TNL1_2 D ON A.ID=D.ID ORDER BY 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6
+Rows returned = 6
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6
+	Number of rows output=6
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Hash Left Outer Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 6
+	Rows seen from the right = 3
+	Empty right rows returned = 0
+	Rows filtered = 0
+	Rows returned = 6
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Hash Left Outer Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 6
+		Rows seen from the right = 0
+		Empty right rows returned = 0
+		Rows filtered = 0
+		Rows returned = 6
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Hash Left Outer Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 4
+			Empty right rows returned = 0
+			Rows filtered = 0
+			Rows returned = 6
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for TNL1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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=3
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Hash Scan ResultSet for TNL1_1 at read committed isolation level using instantaneous share row locking: 
+				Number of opens = 6
+				Hash table size = 6
+				Hash key is column number 0
+				Rows seen = 4
+				Rows filtered = 0
+					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=4
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					scan qualifiers:
+None
+					next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Hash Scan ResultSet for TNL1_1_1 at read committed isolation level using instantaneous share row locking: 
+			Number of opens = 6
+			Hash table size = 6
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=3
+				Number of pages visited=1
+				Number of rows qualified=6
+				Number of rows visited=6
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TNL1_2 at read committed isolation level using instantaneous share row locking: 
+		Number of opens = 6
+		Hash table size = 6
+		Hash key is column number 0
+		Rows seen = 3
+		Rows filtered = 0
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=6
+			Number of rows visited=6
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(0);
+0 rows inserted/updated/deleted
+ij> DROP TABLE TNL1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE TNL1_1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE TNL1_1_1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE TNL1_2;
+0 rows inserted/updated/deleted
+ij> ---
+-- outerjn.db
+CREATE SCHEMA K55ADMIN;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PARTS
+      (PART     CHAR(10),
+       NUM    SMALLINT,
+       SUPPLIER CHAR(20));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PARTS_T
+      (PART     CHAR(10),
+       NUM1    SMALLINT,
+       NUM2    SMALLINT,
+       SUPPLIER CHAR(20));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PARTS_NOTNULL
+      (PART     CHAR(10)  NOT NULL,
+       NUM    SMALLINT  NOT NULL,
+       SUPPLIER CHAR(20)  NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PARTS_ALLNULL
+      (PART     CHAR(10),
+       NUM    SMALLINT,
+       SUPPLIER CHAR(20));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PARTS_EMPTY
+      (PART     CHAR(10),
+       NUM    SMALLINT,
+       SUPPLIER CHAR(20));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PARTS_EMPTY_NN
+      (PART     CHAR(10)  NOT NULL,
+       NUM    SMALLINT  NOT NULL,
+       SUPPLIER CHAR(20)  NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PRODUCTS
+      (NUM    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PRODUCTS_T
+      (NUM1    SMALLINT,
+       NUM2    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PRODUCTS_NOTNULL
+      (NUM    SMALLINT     NOT NULL,
+       PRODUCT  CHAR(15)     NOT NULL,
+       PRICE    DECIMAL(7,2) NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PRODUCTS_ALLNULL
+      (NUM    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PRODUCTS_EMPTY
+      (NUM    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.PRODUCTS_EMPTY_NN
+      (NUM    SMALLINT     NOT NULL,
+       PRODUCT  CHAR(15)     NOT NULL,
+       PRICE    DECIMAL(7,2) NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.S90
+      (DEPT     CHAR(3)      NOT NULL,
+       SALES    SMALLINT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.S91
+      (DEPT     CHAR(3),
+       SALES    SMALLINT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.S92
+      (DEPT     CHAR(3)      NOT NULL,
+       SALES    SMALLINT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.EMPLOYEES
+      (EMP_ID        CHAR(6)     NOT NULL,
+       EMP_NAME      VARCHAR(25),
+       SALARY        INTEGER,
+       COMM          SMALLINT);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX K55ADMIN.EMPLOYIX
+  ON K55ADMIN.EMPLOYEES(EMP_ID);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.OLD_OFFICES
+      (OLD_OFFICE    CHAR(4)     NOT NULL,
+       EMP_ID        CHAR(6));
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX k55ADMIN.OLD_OFFIX
+  ON K55ADMIN.OLD_OFFICES(OLD_OFFICE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.NEW_OFFICES
+      (NEW_OFFICE    CHAR(4)     NOT NULL,
+       EMP_ID        CHAR(6));
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX k55ADMIN.NEW_OFFIX
+  ON K55ADMIN.NEW_OFFICES(NEW_OFFICE);
+0 rows inserted/updated/deleted
+ij> --************************************************************************
+--*   This last group is for general usage throughout the tests          *
+--************************************************************************
+CREATE TABLE K55ADMIN.MANYTYPES
+      (INTCOL        INTEGER,
+       SMINTCOL      SMALLINT,
+       DEC62COL      DECIMAL(6,2),
+       DEC72COL      DECIMAL(7,2),
+       FLOATCOL      FLOAT,
+       CHARCOL       CHAR(10),
+       LCHARCOL      CHAR(250),
+       VCHARCOL      VARCHAR(100));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE K55ADMIN.MANYTYPES_NOTNULL
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL);
+0 rows inserted/updated/deleted
+ij> --* CREATE TABLE K55ADMIN.MANYTYPES_CTRL LIKE MANYTYPES_NOTNULL;
+CREATE TABLE K55ADMIN.MANYTYPES_CTRL
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL);
+0 rows inserted/updated/deleted
+ij> --************************************************************************
+--* Populate the tables created above                                    *
+--************************************************************************
+INSERT INTO K55ADMIN.PARTS VALUES ('Wire',     10,'ACWF');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES ('Oil',     160,'Western-Chem');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES ('Magnets',  10,'Bateman');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES ('Plastic',  30,'Plastik-Corp');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES ('Blades',  205,'Ace-Steel');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES ('Paper',    20,'Ace-Steel');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES ('Steel',    30,'ACWF');
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.PARTS_ALLNULL VALUES (NULL,NULL,NULL);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS_ALLNULL VALUES (NULL,NULL,NULL);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS_ALLNULL VALUES (NULL,NULL,NULL);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.PARTS_NOTNULL
+       SELECT * FROM K55ADMIN.PARTS;
+7 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS_T
+       SELECT PART, NUM, 10+NUM,SUPPLIER FROM K55ADMIN.PARTS WHERE K55ADMIN.PARTS.NUM>10;
+5 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS VALUES (NULL,    30,NULL);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PARTS_T VALUES ('Unknown', NULL, NULL, NULL);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.PRODUCTS VALUES (505, 'Screwdriver',  3.70);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES ( 30, 'Relay',        7.55);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES ( 50, 'Hammer',       5.75);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES (205, 'Saw',         18.90);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES ( 10, 'Generator',   45.75);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES ( 20, 'Sander',      35.75);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES ( 30, 'Ruler',        8.75);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.PRODUCTS_NOTNULL
+       SELECT * FROM K55ADMIN.PRODUCTS;
+7 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS_T
+       SELECT NUM, 10+NUM, PRODUCT, PRICE  FROM K55ADMIN.PRODUCTS WHERE PRICE>7;
+5 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS VALUES ( 20, NULL, NULL);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS_T VALUES ( NULL, NULL, 'Unknown', NULL);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.PRODUCTS_ALLNULL VALUES (NULL, NULL, NULL);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS_ALLNULL VALUES (NULL, NULL, NULL);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.PRODUCTS_ALLNULL VALUES (NULL, NULL, NULL);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.S90 VALUES ('M62',10);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S90 VALUES ('M09',99);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S90 VALUES ('J64',64);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S91 VALUES ('M62',100);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S91 VALUES ('M09',10);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S91 VALUES ('M03',500);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S92 VALUES ('M62',50);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S92 VALUES ('M03',10);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.S92 VALUES ('J64',50);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('711276','J. Thomas',75000,1500);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.EMPLOYEES VALUES ('480923','C. Manthey',33500, 500);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.EMPLOYEES VALUES ('368521','B. Ward',46700,0);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.EMPLOYEES VALUES ('966641','K. Woods',41300,350);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.EMPLOYEES VALUES ('537260',NULL,0,0);
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.EMPLOYEES VALUES ('216861','N. Baxter',52000,550);
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X124','480923');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X125','711276');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X126','988870');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X127','368521');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X128','537260');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X129','622273');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X130',NULL    );
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y124','537260');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y125','368521');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y126','711276');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y127',NULL    );
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y128','480923');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y129','216861');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y130','333666');
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.MANYTYPES VALUES (1,1,1.0,1.0,1E0,'One','One', 'One');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (2,2,2.0,2.0,2E0,'Two','Two', 'Two');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (3,3,3.0,3.0,3E0,'Three','Three', 'Three');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (4,4,4.0,4.0,4E0,'Four','Four', 'Four');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (5,5,5.0,5.0,5E0,'Five','Five', 'Five');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (6,6,6.0,6.0,6E0,'Six','Six', 'Six');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (7,7,7.0,7.0,7E0,'Seven','Seven', 'Seven');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (8,8,8.0,8.0,8E0,'Eight','Eight', 'Eight');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (9,9,9.0,9.0,9E0,'Nine','Nine', 'Nine');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (10,10,10.0,10.0,1E1,'Ten','Ten', 'Ten');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (11,11,11.0,11.0,1.1E1,'Eleven', 'Eleven','Eleven');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (12,12,12.0,12.0,1.2E1,'Twelve', 'Twelve','Twelve');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (13,13,13.0,13.0,1.3E1,'Thirteen', 'Thirteen','Thirteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (14,14,14.0,14.0,1.4E1,'Fourteen', 'Fourteen','Fourteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (15,15,15.0,15.0,1.5E1,'Fifteen', 'Fifteen','Fifteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (16,16,16.0,16.0,1.6E1,'Sixteen', 'Sixteen','Sixteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (17,17,17.0,17.0,1.7E1,'Seventeen', 'Seventeen','Seventeen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (18,18,18.0,18.0,1.8E1,'Eighteen', 'Eighteen','Eighteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (19,19,19.0,19.0,1.9E1,'Nineteen', 'Nineteen','Nineteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES VALUES (20,20,20.0,20.0,2E1,'Twenty', 'Twenty','Twenty');
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (11,11,11.0,11.0,1.1E1,'Eleven','Eleven', 'Eleven');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (12,12,12.0,12.0,1.2E1,'Twelve','Twelve', 'Twelve');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (13,13,13.0,13.0,1.3E1,'Thirteen', 'Thirteen','Thirteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (14,14,14.0,14.0,1.4E1,'Fourteen', 'Fourteen','Fourteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (15,15,15.0,15.0,1.5E1,'Fifteen', 'Fifteen','Fifteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (16,16,16.0,16.0,1.6E1,'Sixteen', 'Sixteen','Sixteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (17,17,17.0,17.0,1.7E1,'Seventeen', 'Seventeen','Seventeen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (18,18,18.0,18.0,1.8E1,'Eighteen', 'Eighteen','Eighteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (19,19,19.0,19.0,1.9E1,'Nineteen', 'Nineteen','Nineteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (20,20,20.0,20.0,2E1,'Twenty','Twenty', 'Twenty');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (21,21,21.0,21.0,2.1E1,'Twenty One','Twenty One', 'Twenty One');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (22,22,22.0,22.0,2.2E1,'Twenty Two','Twenty Two', 'Twenty Two');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (23,23,23.0,23.0,2.3E1,'Twenty Three','Twenty Three', 'Twenty Three');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (24,24,24.0,24.0,2.4E1,'Twenty Four','Twenty Four', 'Twenty Four');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (25,25,25.0,25.0,2.5E1,'Twenty Five','Twenty Five', 'Twenty Five');
+1 row inserted/updated/deleted
+ij> --*
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (2,2,2.0,2.0,2E0,'Two','Two', 'Two');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (4,4,4.0,4.0,4E0,'Four','Four', 'Four');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (6,6,6.0,6.0,6E0,'Six','Six', 'Six');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (8,8,8.0,8.0,8E0,'Eight','Eight', 'Eight');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (10,10,10.0,10.0,1E1,'Ten','Ten', 'Ten');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (12,12,12.0,12.0,1.2E1,'Twelve','Twelve', 'Twelve');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (14,14,14.0,14.0,1.4E1,'Fourteen', 'Fourteen','Fourteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (16,16,16.0,16.0,1.6E1,'Sixteen', 'Sixteen','Sixteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (18,18,18.0,18.0,1.8E1,'Eighteen', 'Eighteen','Eighteen');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (20,20,20.0,20.0,2E1,'Twenty','Twenty', 'Twenty');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (22,22,22.0,22.0,2.2E1,'Twenty Two','Twenty Two', 'Twenty Two');
+1 row inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (24,24,24.0,24.0,2.4E1,'Twenty Four','Twenty Four', 'Twenty Four');
+1 row inserted/updated/deleted
+ij> -- coj201.clp
+-- ---------------------------------------------------------------------;
+-- test unit 1. OUTER JOIN w/ correlated subquery;
+-- ---------------------------------------------------------------------;
+-- 101 - 'between' in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 102 - 'between' in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+NULL      |NULL  |Hammer         |50    |5.75      
+NULL      |NULL  |Screwdriver    |505   |3.70      
+ij> -- 103 - '='/like/in in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Oil       |160   |NULL           |NULL  |NULL      
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 104 - '='/like/in in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+NULL      |NULL  |Hammer         |50    |5.75      
+NULL      |NULL  |Screwdriver    |505   |3.70      
+ij> -- 105 - 'between' in LEFT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 106 - 'between' in RIGHT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 107 - '='/like/in in LEFT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 108 - '='/like/in in RIGHT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+NULL      |NULL  |Hammer         |50    |5.75      
+NULL      |NULL  |Screwdriver    |505   |3.70      
+ij> -- ---------------------------------------------------------------------;
+-- test unit 2. nested subquery: OUTER JOIN w/ correlated OUTER JOIN subquery;
+-- ---------------------------------------------------------------------;
+-- 201 - 'between' in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local pred on tuple-preserving operand, '=' join predicate, and, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.parts b LEFT JOIN k55admin.products a
+        on   b.num = a.num and b.part <> 'Wire'
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 202 - 'between' in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local pred on both operands, '=' join predicate, and, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on   a.num = b.num and (a.price>8 or b.part = 'Steel') and a.num > 20
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+NULL      |NULL  |Hammer         |50    |5.75      
+NULL      |NULL  |Screwdriver    |505   |3.70      
+ij> -- 203 - =/like/in in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: local '=' pred on null-producing operand OR '=' join predicate, right join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.parts b right join k55admin.products a
+        on   b.num = 10 OR a.num = b.num
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Oil       |160   |NULL           |NULL  |NULL      
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 204 - '='/like/in in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: local pred on both operands, '=' join predicate, and/or, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from   k55admin.parts b left join k55admin.products a
+        on     a.num = b.num and (a.price>8 or b.part = 'Steel' or b.num > 20)
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+NULL      |NULL  |Hammer         |50    |5.75      
+NULL      |NULL  |Screwdriver    |505   |3.70      
+ij> -- 205 - 'between' in LEFT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local '=' pred on tuple-preserving operand OR '=' join predicate, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from   k55admin.parts b left join k55admin.products a
+        on     b.num = 10 OR a.num = b.num
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 206 - 'between' in RIGHT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local '=' pred on tuple-preserving operand AND '<>' join predicate, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from   k55admin.parts b left join k55admin.products a
+        on     b.num = 1000 and a.num <> b.num
+        where a.num>=p.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+ij> -- 207 - '='/like/in in LEFT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: '=' join predicate and '2>1', left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on   a.num = b.num and 2>1
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |Saw            |205   |18.90     
+Magnets   |10    |Generator      |10    |45.75     
+Paper     |20    |Sander         |20    |35.75     
+Plastic   |30    |Relay          |30    |7.55      
+Plastic   |30    |Ruler          |30    |8.75      
+Steel     |30    |Relay          |30    |7.55      
+Steel     |30    |Ruler          |30    |8.75      
+Wire      |10    |Generator      |10    |45.75     
+NULL      |30    |Relay          |30    |7.55      
+NULL      |30    |Ruler          |30    |8.75      
+ij> -- 208 - '='/like/in in RIGHT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: '1=0' in ON condition, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. subquery in OUTER JOIN ON clause;
+-- Not allowed in DB2 compatibility mode
+-- ---------------------------------------------------------------------;
+-- 301 - '='/like/in in RIGHT JOIN ON condition with correlated IN subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- 302 - '='/like/in in LEFT JOIN ON condition with uncorrelated IN subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0)
+order by 1,2,3,4;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- 303 - '=' and inlist in RIGHT JOIN ON condition with correlated exists subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on pt.product in ('Bolt','Nuts') and p.num = pt.num
+and exists
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- 304 - '=' and inlist in LEFT JOIN ON condition with uncorrelated exists subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on pt.product in ('Bolt','Nuts') and p.num = pt.num
+and exists
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0)
+order by 1,2,3,4;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- 305 - '='/like/in in RIGHT JOIN ON condition with correlated '>=ALL' subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price >=ALL
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- 306 - '='/like/in in LEFT JOIN ON condition with uncorrelated scalar subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price =
+       (select max(a.price)
+        from k55admin.parts b left join k55admin.products a
+        on 1=0)
+order by 1,2,3,4;
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- coj202.clp
+---------------------------------------------------------------------
+--      inner join (105)
+---------------------------------------------------------------------
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins, different relops, conjunction;
+-- ---------------------------------------------------------------------;
+-- 101 - multiple '>=', '<=' in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM and K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 102 - 'between' in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+NULL      |30    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 103 - '>'/'<' in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 104 - '<>' in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- 105 - multiple '>=', '<=' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM and K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 106 - 'between' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+NULL      |30    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 107 - '>'/'<' in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |NULL           |20    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |NULL           |NULL  
+NULL      |30    |Generator      |10    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 108 - '<>' in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- 109 - multiple '>=', '<=' in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM and K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |NULL  |Hammer         |50    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 110 - 'between' in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+NULL      |30    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+NULL      |NULL  |Hammer         |50    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 111 - '>'/'<' in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+NULL      |NULL  |Saw            |205   
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 112 - '<>' in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 2. plain joins, different relops, and/or/not;
+-- ---------------------------------------------------------------------;
+-- 201 - '>='/'<='/OR in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- 202 - 'not between' in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON NOT(K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM AND K55ADMIN.PRODUCTS.NUM + 50)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+ij> -- 203 - '>'/'<'/OR in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 204 - not/'<>' in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON NOT( K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 205 - '>='/'<='/or in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PRODUCTS.NUM <= K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+NULL      |30    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 206 - 'not between' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON not (K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+ij> -- 207 - '>'/'<'/or in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |NULL           |20    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |NULL           |NULL  
+NULL      |30    |Generator      |10    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+ij> -- 208 - not/'<>' in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON NOT(K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 209 - '>='/'<='/OR in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM or K55ADMIN.PRODUCTS.NUM <= K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+NULL      |30    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 210 - 'not between' in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON not(K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+ij> -- 211 - '>'/'<'/or in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM or K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Steel     |30    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Sander         |20    
+NULL      |30    |NULL           |20    
+NULL      |NULL  |Saw            |205   
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 212 - not/'<>' in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON not(K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |NULL  |Hammer         |50    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. plain joins, like/in/is-null/is-not-null;
+-- ---------------------------------------------------------------------;
+-- 301 - '<>'/'=' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM or
+         K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- 302 - '='/like in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM 
+             or K55ADMIN.PRODUCTS.PRODUCT LIKE 'Screw%')
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Sander         |20    
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Screwdriver    |505   
+ij> -- 303 - '='/in in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT in ('Screwdriver','Saw') 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+ij> -- 304 - '='/is-null in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT is null 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |NULL           |20    
+Oil       |160   |NULL           |20    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |NULL           |20    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |NULL           |20    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |NULL           |20    
+ij> -- 305 - '='/is-not-null in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT is not null 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+ij> -- 306 - '='/'<' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM < K55ADMIN.PRODUCTS.NUM 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+ij> -- 307 - '='/like in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM 
+             or K55ADMIN.PRODUCTS.PRODUCT LIKE 'Nut%' )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 308 - '='/like/in in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT in ('Bolt','Nuts') 
+             or K55ADMIN.PRODUCTS.PRODUCT LIKE 'Power%' 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4. plain joins, only local predicates, no join predicate;
+-- ---------------------------------------------------------------------;
+-- 401 - local '=' pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |NULL           |NULL  
+ij> -- 402 - local IN pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM IN (160, 205)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |NULL  
+ij> -- 403 - local between pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between 150 and 250
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |NULL  
+ij> -- 404 - local '=' pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+ij> -- 405 - local IN pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM IN (10, 20)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+ij> -- 406 - local between pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between 10 and 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 5. plain joins, local predicate and join predicate;
+-- ---------------------------------------------------------------------;
+-- 501 - local pred on tuple-preserving operand, '=' join predicate, and;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       K55ADMIN.PARTS.PART <> 'Wire'
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |NULL  
+ij> -- 502 - local pred on both operands, '=' join predicate, and;
+SELECT K55ADMIN.PARTS.*, K55ADMIN.PRODUCTS.*
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       (K55ADMIN.PRODUCTS.PRICE>8 or K55ADMIN.PARTS.PART = 'Steel')
+        and K55ADMIN.PRODUCTS.NUM > 20
+    order by 1,2,3,4,5,6;
+PART      |NUM   |SUPPLIER            |NUM   |PRODUCT        |PRICE     
+------------------------------------------------------------------------
+Blades    |205   |Ace-Steel           |205   |Saw            |18.90     
+Magnets   |10    |Bateman             |NULL  |NULL           |NULL      
+Oil       |160   |Western-Chem        |NULL  |NULL           |NULL      
+Paper     |20    |Ace-Steel           |NULL  |NULL           |NULL      
+Plastic   |30    |Plastik-Corp        |30    |Ruler          |8.75      
+Steel     |30    |ACWF                |30    |Relay          |7.55      
+Steel     |30    |ACWF                |30    |Ruler          |8.75      
+Wire      |10    |ACWF                |NULL  |NULL           |NULL      
+NULL      |30    |NULL                |30    |Ruler          |8.75      
+ij> -- 503 - local pred on both operands, '=' join predicate, and/or;
+SELECT K55ADMIN.PARTS.*, K55ADMIN.PRODUCTS.*
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       (K55ADMIN.PRODUCTS.PRICE>8 or K55ADMIN.PARTS.PART = 'Steel'
+        or K55ADMIN.PRODUCTS.NUM > 20)
+    order by 1,2,3,4,5,6;
+PART      |NUM   |SUPPLIER            |NUM   |PRODUCT        |PRICE     
+------------------------------------------------------------------------
+Blades    |205   |Ace-Steel           |205   |Saw            |18.90     
+Magnets   |10    |Bateman             |10    |Generator      |45.75     
+Oil       |160   |Western-Chem        |NULL  |NULL           |NULL      
+Paper     |20    |Ace-Steel           |20    |Sander         |35.75     
+Plastic   |30    |Plastik-Corp        |30    |Relay          |7.55      
+Plastic   |30    |Plastik-Corp        |30    |Ruler          |8.75      
+Steel     |30    |ACWF                |30    |Relay          |7.55      
+Steel     |30    |ACWF                |30    |Ruler          |8.75      
+Wire      |10    |ACWF                |10    |Generator      |45.75     
+NULL      |30    |NULL                |30    |Relay          |7.55      
+NULL      |30    |NULL                |30    |Ruler          |8.75      
+ij> -- 504 - local '=' pred on null-producing operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10 OR
+       K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 505 - local '=' pred on tuple-preserving operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10 OR
+       K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 506 - local '=' pred on tuple-preserving operand AND '<>' join predicate;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 1000 AND
+       K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |NULL  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 6. plain joins, '1=0' or '2>1' predicate, w/ or w/o join predicate;
+-- ---------------------------------------------------------------------;
+-- 601 - '=' join predicate and '2>1';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       2>1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 602 - '=' join predicate and '1=0';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       1=0
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |NULL  
+ij> -- 603 - '=' join predicate or '2>1';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM or
+       2>1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- 604 - '=' join predicate or '1=0';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM or
+       1=0
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Paper     |20    |NULL           |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+ij> -- 605 - '2>1' in ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON 2>1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- 606 - '1=0' in ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON 1=0
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |NULL  
+ij> -- 607 - '1=1' in ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON 1=1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Blades    |205   |NULL           |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Ruler          |30    
+NULL      |30    |Sander         |20    
+NULL      |30    |Saw            |205   
+NULL      |30    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+ij> -- coj204.clp
+---------------------------------
+-- Creating a table;
+---------------------------------
+create table k55admin.stru (
+             cd_plant           varchar(5) not null,
+             in_reseq           varchar(1) not null,
+             no_level           integer    not null,
+             no_part_base_nxt_a varchar(9) not null,
+             no_part_pref_nxt_a varchar(7) not null,
+             no_part_suff_nxt_a varchar(8) not null,
+             no_part_cntl_nxt_a varchar(3) not null,
+             no_seq             integer    not null,
+             no_part_base       varchar(9) not null,
+             no_part_prefix     varchar(7) not null,
+             no_part_suffix     varchar(8) not null,
+             no_part_control    varchar(3) not null);
+0 rows inserted/updated/deleted
+ij> ---------------------------------
+-- Start of loading data into table;
+---------------------------------
+insert into k55admin.stru values('EE01A','N',0,'','','','',0,'BLPO','R','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',30,'M10A63','R','AH','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',40,'M10A55','R','AH','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',51,'M10A61','R','AH','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',55,'STH1008','R','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',61,'M99G124','R','AH','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',71,'STH1050','R','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',80,'PMIC3','R','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',90,'M99G24','R','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',100,'M10A57','R','BH','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',4,'9A937','D9AE','AA','',1,'9A301','RC5OF','A','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',130,'9J547','D9AE','CA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',140,'9J563','E0AE','BA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',141,'385338','','S2','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',150,'387155','R','S','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',160,'9E957','E2AE','P82','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',3,'9E957','E2AE','P82','',1,'9E957','E2AE','BB','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',3,'9E957','E2AE','P82','',2,'9S555','E37E','CA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',4,'9S555','E37E','CA','',1,'9S555','RE2AE','BA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',3,'9E957','E2AE','P82','',3,'9S554','D2AF','DA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',20,'N806017','','S40G','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',35,'10A318','PE2AF','BA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',6,'10A318','PE2AF','BA','',10,'10A318','E2AF','BA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',7,'10A318','E2AF','BA','',10,'10A318','RE2HF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',7,'10A318','E2AF','BA','',20,'48ZP42842','','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',40,'10A319','PD5VF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',6,'10A319','PD5VF','AA','',10,'10A319','D5VF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',7,'10A319','D5VF','AA','',10,'10A319','RD5VF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',50,'10B301','D2OF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',65,'384758','','S','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',4,'9E950','E6AE','AA','',1,'9E950','RE3EE','BR','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9E926','E8DE','FAIP','',61,'804064','N','S2','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9E926','E8DE','FAIP','',70,'803853','N','S100','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',2,'9E926','E8DE','FAIP','',80,'9A776','E6AE','DF','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',3,'9A776','E6AE','DF','',1,'9A794','E6AE','BD1','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',4,'9A794','E6AE','BD1','',1,'9A794','PE6AE','BD','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'9A794','PE6AE','BD','',1,'9A794','E6AE','BD','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',6,'9A794','E6AE','BD','',1,'9A794','RE69E','BB','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',4,'9A794','E6AE','BD1','',2,'9E551','PE0ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01A','N',5,'9E551','PE0ZE','AA','',1,'9E551','HE0ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',7,'9533','HD7ZE','AA','',1,'9533','D7ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',8,'9533','D7ZE','AA','',1,'9533','RD7ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',40,'9A574','D1AF','FA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'9A574','D1AF','FA','',1,'9A521','RC1AE','B','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',50,'390468','','S','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',60,'9A521','D0AF','AT','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'9A521','D0AF','AT','',1,'9A521','RC1AE','B','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',70,'390468','','S','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',80,'9A521','C9AF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'9A521','C9AF','AA','',1,'9A521','RD0AF','CV','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9C511','E3ZE','AA','',1,'9C511','RE3ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'9B559','E3ZE','AA','',60,'9834','E3TE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'9B559','E3ZE','AA','',70,'9B551','E3ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9B551','E3ZE','AA','',1,'9B551','RE3ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'9B559','E3ZE','AA','',80,'9934','E3ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',2,'9509','E4TE','AMA','',370,'9D587','E3TE','ABP1','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'9D587','E3TE','ABP1','',10,'9D587','E3TE','AB','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'9D587','E3TE','AB','',1,'9D587','','5','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'9D587','','5','',1,'SAE303','R','M','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'9D587','E3TE','ABP1','',20,'9529','E3AE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'17B517','E59F','AA','',20,'17C526','E0TF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'17B517','E59F','AA','',30,'17A530','E0TF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',5,'17B517','E59F','AA','',40,'17B559','E59F','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'17B443','E59F','AA','',35,'17B583','E2TF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'17B443','E59F','AA','',40,'63757','','S7','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',4,'17B443','E59F','AA','',50,'17A482','E0TF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',2,'17508','E69F','AA','',30,'17A425','E59F','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',2,'17508','E69F','AA','',50,'17B584','E59F','AB','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'17B584','E59F','AB','',10,'17B558','E5TF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01B','N',3,'17B584','E59F','AB','',20,'17C449','E0TF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','D5TE','EA1','',60,'9996','D5AE','CB','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','D5TE','EA1','',70,'6B608','D3AF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',20,'9A521','C9AF','AK','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9A521','C9AF','AK','',1,'9A521','RD0AF','CV','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',30,'9A521','E3AE','BA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',40,'9576','E3ZE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',50,'9A565','D5DE','BA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9A565','D5DE','BA','',10,'9E501','D5AE','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',4,'9E501','D5AE','AA','',1,'9E501','5','2V5','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',5,'9E501','5','2V5','',1,'SAE903','R','','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',10,'9513','E2ZE','MAPE','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',4,'9513','E2ZE','MAPE','',1,'9513','','2V136','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',5,'9513','','2V136','',1,'SAE303','R','M','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',11,'M4G238','RESH','A','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',12,'35','R14','760','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',20,'9A521','D0AF','FD','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',4,'9A521','D0AF','FD','',1,'9A521','RD0AF','CV','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',30,'9581','E2ZE','CA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',4,'9581','E2ZE','CA','',1,'9582','PD7AE','CA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',5,'9582','PD7AE','CA','',1,'9582','D7AE','CA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',5,'10379','E7AF','AA1','',10,'10379','E7AF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'10335','E7HF','AA','',55,'10328','E5AF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',3,'10335','E7HF','AA','',60,'10B302','E7HF','AA','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',4,'10B302','E7HF','AA','',20,'10B302','','2','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',5,'10B302','','2','',10,'SAE303','R','M','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',30,'351124','','S36','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',35,'391042','','S2','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',40,'389767','','S36','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',50,'375026','','S36','');
+1 row inserted/updated/deleted
+ij> insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',60,'10343','D0AF','A','');
+1 row inserted/updated/deleted
+ij> -- ---------------------------------------------------------------------;
+-- test unit 1. OJ in a scalar subquery in WHERE clause;
+--              inequality predicate in ON clause and a WHERE clause;
+-- ---------------------------------------------------------------------;
+-- 101 - LEFT JOIN in a scalar subquery in WHERE clause;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- 102 - RIGHT JOIN in a scalar subquery in WHERE clause;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. OJ in a correlated scalar subquery in WHERE clause;
+--              an equality predicate in ON clause and a WHERE clause;
+-- ---------------------------------------------------------------------;
+-- 301 - LEFT JOIN in a correlated scalar subquery in WHERE clause;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant = ( select  distinct a.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|0          |0          
+ij> -- 302 - RIGHT JOIN in a correlated scalar subquery in WHERE clause;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant = ( select  distinct a.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|0          |0          
+ij> -- 303 - INNER JOIN in a correlated scalar subquery in WHERE clause;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant = ( select  distinct a.cd_plant
+                   from k55admin.stru a inner join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|0          |0          
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4. OJ in a scalar subquery in the SELECT list;
+-- ---------------------------------------------------------------------;
+-- 401 - LEFT JOIN in a scalar subquery in the SELECT list;
+select no_level,
+       ( select  distinct a.cd_plant
+         from k55admin.stru a left join k55admin.stru b
+         on a.no_level = b.no_level
+         where a.no_level = 0
+       )
+from k55admin.stru
+where no_seq <= 4 and no_level < 2
+;
+NO_LEVEL   |2    
+-----------------
+0          |EE01A
+ij> -- 402 - RIGHT JOIN in a scalar subquery in the SELECT list;
+select no_level,
+       ( select  distinct a.cd_plant
+         from k55admin.stru a right join k55admin.stru b
+         on a.no_level = b.no_level
+         where a.no_level = 0
+       )
+from k55admin.stru
+where no_seq <= 4 and no_level < 2
+;
+NO_LEVEL   |2    
+-----------------
+0          |EE01A
+ij> -- ---------------------------------------------------------------------;
+-- test unit 6. OJ in a nested scalar subquery, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+-- 601 - LEFT JOIN in a nested scalar subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null and
+                         b.cd_plant = ( select  distinct b.cd_plant
+                                        from k55admin.stru a left join k55admin.stru b
+                                        on a.no_level = b.no_level and b.no_level>7
+                                        where a.cd_plant = 'EE01B' and b.cd_plant is not null)
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- 602 - RIGHT JOIN in a nested scalar subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null
+                    and  b.cd_plant = ( select  distinct b.cd_plant
+                                        from k55admin.stru a right join k55admin.stru b
+                                        on a.no_level = b.no_level and b.no_level>7
+                                        where a.cd_plant = 'EE01B' and b.cd_plant is not null)
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 7. OJ in a scalar subquery in an INLIST, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+-- 701 - LEFT JOIN in a scalar subquery in an INLIST, no correlation;
+select *
+from k55admin.stru
+where cd_plant in ('EE01B', ( select distinct b.cd_plant
+                              from k55admin.stru a left join k55admin.stru b
+                              on a.no_level = b.no_level and b.no_level>7
+                              where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+                            )
+      and no_level = 7
+;
+CD_P&|&|NO_LEVEL   |NO_PART_&|NO_PAR&|NO_PART&|NO&|NO_SEQ     |NO_PART_&|NO_PAR&|NO_PART&|NO&
+---------------------------------------------------------------------------------------------
+EE01B|N|7          |9533     |HD7ZE  |AA      |   |1          |9533     |D7ZE   |AA      |   
+ij> -- 702 - RIGHT JOIN in a scalar subquery in an INLIST, no correlation;
+select *
+from k55admin.stru
+where cd_plant in ('EE01B', ( select distinct b.cd_plant
+                              from k55admin.stru a right join k55admin.stru b
+                              on a.no_level = b.no_level and b.no_level>7
+                              where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+                            )
+      and no_level = 7
+;
+CD_P&|&|NO_LEVEL   |NO_PART_&|NO_PAR&|NO_PART&|NO&|NO_SEQ     |NO_PART_&|NO_PAR&|NO_PART&|NO&
+---------------------------------------------------------------------------------------------
+EE01B|N|7          |9533     |HD7ZE  |AA      |   |1          |9533     |D7ZE   |AA      |   
+ij> -- ---------------------------------------------------------------------;
+-- test unit 8. OJ in an EXISTS predicate subquery, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+-- 801 - LEFT JOIN in an EXISTS predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select distinct b.cd_plant
+               from k55admin.stru a left join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7
+               where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 2
+;
+CD_P&|NO_PART_&
+---------------
+EE01A|         
+EE01A|BLPO     
+ij> -- 802 - LEFT JOIN in an EXISTS predicate subquery, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select b.cd_plant
+               from k55admin.stru a left join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7)
+      and no_level < 2
+;
+CD_P&|NO_PART_&
+---------------
+EE01A|         
+EE01A|BLPO     
+ij> -- 803 - RIGHT JOIN in an EXISTS predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select distinct b.cd_plant
+               from k55admin.stru a right join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7
+               where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 2
+;
+CD_P&|NO_PART_&
+---------------
+EE01A|         
+EE01A|BLPO     
+ij> -- 804 - RIGHT JOIN in an EXISTS predicate subquery, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select b.cd_plant
+               from k55admin.stru a RIGHT join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7)
+      and no_level < 2
+;
+CD_P&|NO_PART_&
+---------------
+EE01A|         
+EE01A|BLPO     
+ij> -- 805 - LEFT JOIN in a correlated subquery in EXISTS predicate;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where exists ( select  distinct a.cd_plant
+                   from k55admin.stru a LEFT join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|0          |0          
+ij> -- 806 - RIGHT JOIN in a correlated subquery in EXISTS predicate;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where exists ( select  distinct a.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|0          |0          
+ij> -- 807 - LEFT JOIN in an IN subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant in ( select b.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B'
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- 808 - RIGHT JOIN in an IN subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant in ( select b.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B'
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- 809 - INNER JOIN in an IN subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant in ( select b.cd_plant
+                   from k55admin.stru a join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B'
+                 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|9509     
+EE01B|17508    
+EE01B|17508    
+ij> -- 810 - LEFT JOIN in a correlated in subquery;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant in ( select  distinct a.cd_plant
+                    from k55admin.stru a LEFT join k55admin.stru b
+                    on a.no_level = b.no_level and b.no_level>0
+                    where b.no_level = t.no_seq
+                 )
+order by no_level
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|3          |1          
+EE01A|3          |3          
+EE01A|3          |2          
+EE01A|3          |1          
+EE01A|4          |2          
+EE01A|4          |1          
+EE01A|4          |1          
+EE01A|4          |1          
+EE01A|4          |1          
+EE01A|5          |1          
+EE01A|5          |1          
+EE01A|6          |1          
+ij> -- 811 - RIGHT JOIN in a correlated in subquery;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant in  ( select  distinct a.cd_plant
+                     from k55admin.stru a right join k55admin.stru b
+                     on a.no_level = b.no_level and b.no_level>0
+                     where b.no_level = t.no_seq
+                 )
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|4          |1          
+EE01A|3          |1          
+EE01A|3          |2          
+EE01A|4          |1          
+EE01A|3          |3          
+EE01A|4          |1          
+EE01A|3          |1          
+EE01A|4          |1          
+EE01A|5          |1          
+EE01A|6          |1          
+EE01A|4          |2          
+EE01A|5          |1          
+ij> -- 812 - INNER JOIN in a correlated in subquery;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant in  ( select  distinct a.cd_plant
+                     from k55admin.stru a join k55admin.stru b
+                     on a.no_level = b.no_level and b.no_level>0
+                     where b.no_level = t.no_seq
+                 )
+;
+CD_P&|NO_LEVEL   |NO_SEQ     
+-----------------------------
+EE01A|4          |1          
+EE01A|3          |1          
+EE01A|3          |2          
+EE01A|4          |1          
+EE01A|3          |3          
+EE01A|4          |1          
+EE01A|3          |1          
+EE01A|4          |1          
+EE01A|5          |1          
+EE01A|6          |1          
+EE01A|4          |2          
+EE01A|5          |1          
+ij> -- ---------------------------------------------------------------------;
+-- test unit 9. OJ in a quantified predicate subquery, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+-- 901 - LEFT JOIN in '>=ALL' predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select distinct b.cd_plant
+                       from k55admin.stru a left join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|17508    
+EE01B|9509     
+EE01D|10C335   
+EE01D|9509     
+ij> -- 902 - LEFT JOIN in '>=ALL' predicate subquery, no correlation;
+--       empty subquery results;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select b.cd_plant
+                       from k55admin.stru a left join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null and 1>2)
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01A|         
+EE01A|9509     
+EE01A|9E926    
+EE01A|BLPO     
+EE01B|17508    
+EE01B|9509     
+EE01D|10C335   
+EE01D|9509     
+ij> -- 903 - LEFT JOIN in '>=ALL' predicate subquery, no correlation;
+--       null returned in the subquery;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select b.cd_plant
+                       from k55admin.stru a left join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B')
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+ij> -- 904 - RIGHT JOIN in '>=ALL' predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select distinct b.cd_plant
+                       from k55admin.stru a right join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01B|17508    
+EE01B|9509     
+EE01D|10C335   
+EE01D|9509     
+ij> -- 905 - RIGHT JOIN in '>=ALL' predicate subquery, no correlation;
+--       empty subquery results;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select b.cd_plant
+                       from k55admin.stru a right join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null and 1>2)
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+EE01A|         
+EE01A|9509     
+EE01A|9E926    
+EE01A|BLPO     
+EE01B|17508    
+EE01B|9509     
+EE01D|10C335   
+EE01D|9509     
+ij> -- 906 - RIGHT JOIN in '>=ALL' predicate subquery, no correlation;
+--       null returned in the subquery;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select a.cd_plant
+                       from k55admin.stru a right join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7 )
+      and no_level < 3
+;
+CD_P&|NO_PART_&
+---------------
+ij> ---------------------------------
+-- Dropping the table;
+---------------------------------
+drop table k55admin.stru;
+0 rows inserted/updated/deleted
+ij> -- coj205.clp
+---------------------------------------------------------------------
+--      inner join (105)
+---------------------------------------------------------------------
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins, different relops, conjunction;
+-- ---------------------------------------------------------------------;
+-- 101 - multiple '>=', '<=' in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 102 - 'between' in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PRODUCTS_NOTNULL.NUM + 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Wire      |10    |Generator      |10    
+ij> -- 103 - '>'/'<' in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+ij> -- 104 - '<>' in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 105 - multiple '>=', '<=' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 106 - 'between' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Wire      |10    |Generator      |10    
+ij> -- 107 - '>'/'<' in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Wire      |10    |NULL           |NULL  
+ij> -- 108 - '<>' in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 109 - multiple '>=', '<=' in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |NULL  |Hammer         |50    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 110 - 'between' in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Wire      |10    |Generator      |10    
+NULL      |NULL  |Hammer         |50    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 111 - '>'/'<' in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+NULL      |NULL  |Saw            |205   
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 112 - '<>' in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- ---------------------------------------------------------------------;
+-- test unit 2. plain joins, different relops, and/or/not;
+-- ---------------------------------------------------------------------;
+-- 201 - '>='/'<='/OR in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+        K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 202 - 'not between' in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON NOT(K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM AND
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 203 - '>'/'<'/OR in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+ij> -- 204 - not/'<>' in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON NOT( K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 205 - '>='/'<='/or in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+K55ADMIN.PRODUCTS_NOTNULL.NUM <= K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Wire      |10    |Generator      |10    
+ij> -- 206 - 'not between' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON not (K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 207 - '>'/'<'/or in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+Wire      |10    |NULL           |NULL  
+ij> -- 208 - not/'<>' in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON NOT(K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 209 - '>='/'<='/OR in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM or
+        K55ADMIN.PRODUCTS_NOTNULL.NUM <= K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Wire      |10    |Generator      |10    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 210 - 'not between' in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON not(K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 211 - '>'/'<'/or in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM or
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Paper     |20    |Generator      |10    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Sander         |20    
+NULL      |NULL  |Saw            |205   
+NULL      |NULL  |Screwdriver    |505   
+ij> -- 212 - not/'<>' in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON not(K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+NULL      |NULL  |Hammer         |50    
+NULL      |NULL  |Screwdriver    |505   
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. plain joins, like/in/is-null/is-not-null;
+-- ---------------------------------------------------------------------;
+-- 301 - '<>'/'=' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 302 - '='/like in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+             K55ADMIN.PRODUCTS_NOTNULL.PRODUCT LIKE 'Screw%')
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Sander         |20    
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Screwdriver    |505   
+ij> -- 303 - '='/in in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT in ('Screwdriver','Saw') or
+          K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 304 - '='/is-null in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT is null or
+             K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 305 - '='/is-not-null in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT is not null or
+          K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 306 - '='/'<' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM < K55ADMIN.PRODUCTS_NOTNULL.NUM or
+             K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 307 - '='/like in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+          K55ADMIN.PRODUCTS_NOTNULL.PRODUCT LIKE 'Nut%' )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 308 - '='/like/in in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT in ('Bolt','Nuts') or
+          K55ADMIN.PRODUCTS_NOTNULL.PRODUCT LIKE 'Power%' or
+          K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM  )
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4. plain joins, only local predicates, no join predicate;
+-- ---------------------------------------------------------------------;
+-- 401 - local '=' pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 402 - local IN pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM IN (160, 205)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+ij> -- 403 - local between pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between 150 and 250
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+ij> -- 404 - local '=' pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 405 - local IN pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM IN (10, 20)
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 406 - local between pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between 10 and 50
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- ---------------------------------------------------------------------;
+-- test unit 5. plain joins, local predicate and join predicate;
+-- ---------------------------------------------------------------------;
+-- 501 - local pred on tuple-preserving operand, '=' join predicate, and;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PARTS_NOTNULL.PART <> 'Wire'
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |NULL           |NULL  
+ij> -- 502 - local pred on both operands, '=' join predicate, and;
+SELECT K55ADMIN.PARTS_NOTNULL.*, K55ADMIN.PRODUCTS_NOTNULL.*
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       (K55ADMIN.PRODUCTS_NOTNULL.PRICE>8 or K55ADMIN.PARTS_NOTNULL.PART = 'Steel')
+        and K55ADMIN.PRODUCTS_NOTNULL.NUM > 20
+    order by 1,2,3,4,5,6;
+PART      |NUM   |SUPPLIER            |NUM   |PRODUCT        |PRICE     
+------------------------------------------------------------------------
+Blades    |205   |Ace-Steel           |205   |Saw            |18.90     
+Magnets   |10    |Bateman             |NULL  |NULL           |NULL      
+Oil       |160   |Western-Chem        |NULL  |NULL           |NULL      
+Paper     |20    |Ace-Steel           |NULL  |NULL           |NULL      
+Plastic   |30    |Plastik-Corp        |30    |Ruler          |8.75      
+Steel     |30    |ACWF                |30    |Relay          |7.55      
+Steel     |30    |ACWF                |30    |Ruler          |8.75      
+Wire      |10    |ACWF                |NULL  |NULL           |NULL      
+ij> -- 503 - local pred on both operands, '=' join predicate, and/or;
+SELECT K55ADMIN.PARTS_NOTNULL.*, K55ADMIN.PRODUCTS_NOTNULL.*
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       (K55ADMIN.PRODUCTS_NOTNULL.PRICE>8 or K55ADMIN.PARTS_NOTNULL.PART = 'Steel'
+        or K55ADMIN.PRODUCTS_NOTNULL.NUM > 20)
+    order by 1,2,3,4,5,6;
+PART      |NUM   |SUPPLIER            |NUM   |PRODUCT        |PRICE     
+------------------------------------------------------------------------
+Blades    |205   |Ace-Steel           |205   |Saw            |18.90     
+Magnets   |10    |Bateman             |10    |Generator      |45.75     
+Oil       |160   |Western-Chem        |NULL  |NULL           |NULL      
+Paper     |20    |Ace-Steel           |20    |Sander         |35.75     
+Plastic   |30    |Plastik-Corp        |30    |Relay          |7.55      
+Plastic   |30    |Plastik-Corp        |30    |Ruler          |8.75      
+Steel     |30    |ACWF                |30    |Relay          |7.55      
+Steel     |30    |ACWF                |30    |Ruler          |8.75      
+Wire      |10    |ACWF                |10    |Generator      |45.75     
+ij> -- 504 - local '=' pred on null-producing operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10 OR
+       K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 505 - local '=' pred on tuple-preserving operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10 OR
+       K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 506 - local '=' pred on tuple-preserving operand AND '<>' join predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 1000 AND
+       K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 6. plain joins, '1=0' or '2>1' predicate, w/ or w/o join predicate;
+-- ---------------------------------------------------------------------;
+-- 601 - '=' join predicate and '2>1';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       2>1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 602 - '=' join predicate and '1=0';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       1=0
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+ij> -- 603 - '=' join predicate or '2>1';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+       2>1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 604 - '=' join predicate or '1=0';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+       1=0
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Magnets   |10    |Generator      |10    
+Oil       |160   |NULL           |NULL  
+Paper     |20    |Sander         |20    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Wire      |10    |Generator      |10    
+ij> -- 605 - '2>1' in ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON 2>1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- 606 - '1=0' in ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON 1=0
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |NULL  
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |NULL  
+Paper     |20    |NULL           |NULL  
+Plastic   |30    |NULL           |NULL  
+Steel     |30    |NULL           |NULL  
+Wire      |10    |NULL           |NULL  
+ij> -- 607 - '1=1' in ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON 1=1
+    order by 1,2,3,4;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Generator      |10    
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Generator      |10    
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Ruler          |30    
+Steel     |30    |Sander         |20    
+Steel     |30    |Saw            |205   
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |Generator      |10    
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Screwdriver    |505   
+ij> -- coj206.clp
+-- ---------------------------------------------------------------------;
+-- test unit 2. Insert with OUTER JOIN subquery;
+-- ---------------------------------------------------------------------;
+-- create a table with nullable columns;
+create table k55admin.tmp_products
+      (num    smallint,
+       product  char(15),
+       price    decimal(7,2));
+0 rows inserted/updated/deleted
+ij> -- create a table with non-nullable columns;
+create table k55admin.tmp_nn_products
+      (num    smallint not null,
+       product  char(15) not null,
+       price    decimal(7,2) not null);
+0 rows inserted/updated/deleted
+ij> -- 101 - 'between' in LEFT JOIN ON condition;
+--       insert into table with nullable columns;
+insert into k55admin.tmp_products
+select pt.num, product, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5);
+12 rows inserted/updated/deleted
+ij> -- 102 - select from the table with newly insert tuples;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |45.75     
+10    |Generator      |45.75     
+20    |Sander         |35.75     
+20    |NULL           |NULL      
+30    |Relay          |7.55      
+30    |Relay          |7.55      
+30    |Relay          |7.55      
+30    |Ruler          |8.75      
+30    |Ruler          |8.75      
+30    |Ruler          |8.75      
+205   |Saw            |18.90     
+NULL  |NULL           |NULL      
+ij> -- 103 - delete the above inserted tuples;
+delete from k55admin.tmp_products;
+12 rows inserted/updated/deleted
+ij> -- 104 - 'between' in RIGHT JOIN ON condition;
+--       insert into table with nullable columns;
+insert into k55admin.tmp_products
+select pt.num, product, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5);
+13 rows inserted/updated/deleted
+ij> -- 105 - select from the table with newly insert tuples;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |45.75     
+10    |Generator      |45.75     
+20    |Sander         |35.75     
+20    |NULL           |NULL      
+30    |Relay          |7.55      
+30    |Relay          |7.55      
+30    |Relay          |7.55      
+30    |Ruler          |8.75      
+30    |Ruler          |8.75      
+30    |Ruler          |8.75      
+50    |Hammer         |5.75      
+205   |Saw            |18.90     
+505   |Screwdriver    |3.70      
+ij> -- 106 - delete the above inserted tuples;
+delete from k55admin.tmp_products;
+13 rows inserted/updated/deleted
+ij> -- 107 - 'between' in INNER JOIN ON condition;
+--       insert into table with nullable columns;
+insert into k55admin.tmp_products
+select pt.num, product, price
+from k55admin.parts p inner join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5);
+11 rows inserted/updated/deleted
+ij> -- 108 - select from the table with newly insert tuples;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |45.75     
+10    |Generator      |45.75     
+20    |Sander         |35.75     
+20    |NULL           |NULL      
+30    |Relay          |7.55      
+30    |Relay          |7.55      
+30    |Relay          |7.55      
+30    |Ruler          |8.75      
+30    |Ruler          |8.75      
+30    |Ruler          |8.75      
+205   |Saw            |18.90     
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. Update with OUTER JOIN subquery;
+-- ---------------------------------------------------------------------;
+-- populate the table;
+delete from k55admin.tmp_products;
+11 rows inserted/updated/deleted
+ij> insert into k55admin.tmp_products
+select * from k55admin.products;
+8 rows inserted/updated/deleted
+ij> -- 301 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price *1.1
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+6 rows inserted/updated/deleted
+ij> -- 302 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |50.32     
+20    |Sander         |39.32     
+20    |NULL           |NULL      
+30    |Relay          |8.30      
+30    |Ruler          |9.62      
+50    |Hammer         |5.75      
+205   |Saw            |20.79     
+505   |Screwdriver    |3.70      
+ij> -- 303 - 'between' in RIGHT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price /1.1
+where  num in (select p.num
+               from k55admin.parts p right join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+6 rows inserted/updated/deleted
+ij> -- 304 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |45.74     
+20    |Sander         |35.74     
+20    |NULL           |NULL      
+30    |Relay          |7.54      
+30    |Ruler          |8.74      
+50    |Hammer         |5.75      
+205   |Saw            |18.90     
+505   |Screwdriver    |3.70      
+ij> -- populate the table with non-nullable columns;
+delete from k55admin.tmp_nn_products;
+0 rows inserted/updated/deleted
+ij> insert into k55admin.tmp_nn_products
+select * from k55admin.products_notnull;
+7 rows inserted/updated/deleted
+ij> -- 305 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with non-nullable columns;
+update k55admin.tmp_nn_products
+set    price = price *1.1
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+5 rows inserted/updated/deleted
+ij> -- 306 - select from the updated table;
+select * from k55admin.tmp_nn_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |50.32     
+20    |Sander         |39.32     
+30    |Relay          |8.30      
+30    |Ruler          |9.62      
+50    |Hammer         |5.75      
+205   |Saw            |20.79     
+505   |Screwdriver    |3.70      
+ij> -- 307 - 'between' in RIGHT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_nn_products
+set    price = price /1.1
+where  num in (select p.num
+               from k55admin.parts p right join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+5 rows inserted/updated/deleted
+ij> -- 308 - select from the updated table;
+select * from k55admin.tmp_nn_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |45.74     
+20    |Sander         |35.74     
+30    |Relay          |7.54      
+30    |Ruler          |8.74      
+50    |Hammer         |5.75      
+205   |Saw            |18.90     
+505   |Screwdriver    |3.70      
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4. Update with OUTER JOIN subquery and with OUTER JOIN in set clause;
+-- ---------------------------------------------------------------------;
+-- populate the table;
+delete from k55admin.tmp_products;
+8 rows inserted/updated/deleted
+ij> insert into k55admin.tmp_products
+select * from k55admin.products;
+8 rows inserted/updated/deleted
+ij> -- 401 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price * (select min(pt.price)
+                      from   k55admin.parts p left join k55admin.products pt
+                      on   (p.num between pt.num and pt.num + 5))
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+6 rows inserted/updated/deleted
+ij> -- 402 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |345.41    
+20    |Sander         |269.91    
+20    |NULL           |NULL      
+30    |Relay          |57.00     
+30    |Ruler          |66.06     
+50    |Hammer         |5.75      
+205   |Saw            |142.69    
+505   |Screwdriver    |3.70      
+ij> -- 403 - 'between' in RIGHT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price * (select min(pt.price)
+                        from   k55admin.parts p right join k55admin.products pt
+                        on   (p.num between pt.num and pt.num + 5))
+where  num in (select p.num
+               from k55admin.parts p right join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+6 rows inserted/updated/deleted
+ij> -- 404 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |1278.01   
+20    |Sander         |998.66    
+20    |NULL           |NULL      
+30    |Relay          |210.90    
+30    |Ruler          |244.42    
+50    |Hammer         |5.75      
+205   |Saw            |527.95    
+505   |Screwdriver    |3.70      
+ij> -- populate the table;
+delete from k55admin.tmp_nn_products;
+7 rows inserted/updated/deleted
+ij> insert into k55admin.tmp_nn_products
+select * from k55admin.products_notnull;
+7 rows inserted/updated/deleted
+ij> -- 405 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with non-nullable columns;
+update k55admin.tmp_nn_products
+set    price = price * (select min(pt.price)
+                      from   k55admin.parts p left join k55admin.products pt
+                      on   (p.num between pt.num and pt.num + 5))
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+5 rows inserted/updated/deleted
+ij> -- 406 - select from the updated table;
+select * from k55admin.tmp_nn_products
+order by 1, 2, 3;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |345.41    
+20    |Sander         |269.91    
+30    |Relay          |57.00     
+30    |Ruler          |66.06     
+50    |Hammer         |5.75      
+205   |Saw            |142.69    
+505   |Screwdriver    |3.70      
+ij> -- drop the tables;
+drop table k55admin.tmp_products;
+0 rows inserted/updated/deleted
+ij> drop table k55admin.tmp_nn_products;
+0 rows inserted/updated/deleted
+ij> -- coj207.clp
+---------------------------------------------------------------------
+--      left outer join (111)
+---------------------------------------------------------------------
+-- ---------------------------------------------------------------------;
+-- test unit 1, plain simple join, different relational operators in ON condition;
+-- ---------------------------------------------------------------------;
+-- 101 - explicit LEFT JOIN keywords, '<>' ON predicate ;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |20    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Saw            |205   
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Ruler          |30    
+Paper     |20    |Generator      |10    
+Paper     |20    |Saw            |205   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Steel     |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Saw            |205   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+NULL      |30    |Sander         |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Saw            |205   
+NULL      |30    |Hammer         |50    
+NULL      |30    |Screwdriver    |505   
+ij> -- 102 - explicit OUTER keyword, '>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM K55ADMIN.PARTS A LEFT OUTER JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM > B.NUM
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |20    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Magnets   |10    |NULL           |NULL  
+Oil       |160   |NULL           |20    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Paper     |20    |Generator      |10    
+Plastic   |30    |NULL           |20    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Steel     |30    |NULL           |20    
+Steel     |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Wire      |10    |NULL           |NULL  
+NULL      |30    |NULL           |20    
+NULL      |30    |Sander         |20    
+NULL      |30    |Generator      |10    
+ij> -- 103 - AND operator in on condition, '<=' or '>=' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <= B.NUM and B.NUM >= A.NUM
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |Saw            |205   
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Generator      |10    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |Saw            |205   
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |NULL           |20    
+Paper     |20    |Ruler          |30    
+Paper     |20    |Sander         |20    
+Paper     |20    |Saw            |205   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |Ruler          |30    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Relay          |30    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |Ruler          |30    
+Steel     |30    |Saw            |205   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Relay          |30    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Generator      |10    
+Wire      |10    |Saw            |205   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |Ruler          |30    
+NULL      |30    |Saw            |205   
+NULL      |30    |Hammer         |50    
+NULL      |30    |Relay          |30    
+NULL      |30    |Screwdriver    |505   
+ij> -- 104.1 - Add arbitrary number of parenthesis, '<>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM ((((K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM))))
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |20    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Saw            |205   
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Ruler          |30    
+Paper     |20    |Generator      |10    
+Paper     |20    |Saw            |205   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Steel     |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Saw            |205   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+NULL      |30    |Sander         |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Saw            |205   
+NULL      |30    |Hammer         |50    
+NULL      |30    |Screwdriver    |505   
+ij> -- 104.2 - Add arbitrary number of parenthesis, '<>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM (K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM)
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |20    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Saw            |205   
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Ruler          |30    
+Paper     |20    |Generator      |10    
+Paper     |20    |Saw            |205   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Steel     |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Saw            |205   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+NULL      |30    |Sander         |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Saw            |205   
+NULL      |30    |Hammer         |50    
+NULL      |30    |Screwdriver    |505   
+ij> -- 104.3 - Add arbitrary number of parenthesis, '<>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM ((((((((((K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM))))))))))
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   
+----------------------------------------
+Blades    |205   |NULL           |20    
+Blades    |205   |Ruler          |30    
+Blades    |205   |Sander         |20    
+Blades    |205   |Generator      |10    
+Blades    |205   |Hammer         |50    
+Blades    |205   |Relay          |30    
+Blades    |205   |Screwdriver    |505   
+Magnets   |10    |NULL           |20    
+Magnets   |10    |Ruler          |30    
+Magnets   |10    |Sander         |20    
+Magnets   |10    |Saw            |205   
+Magnets   |10    |Hammer         |50    
+Magnets   |10    |Relay          |30    
+Magnets   |10    |Screwdriver    |505   
+Oil       |160   |NULL           |20    
+Oil       |160   |Ruler          |30    
+Oil       |160   |Sander         |20    
+Oil       |160   |Generator      |10    
+Oil       |160   |Saw            |205   
+Oil       |160   |Hammer         |50    
+Oil       |160   |Relay          |30    
+Oil       |160   |Screwdriver    |505   
+Paper     |20    |Ruler          |30    
+Paper     |20    |Generator      |10    
+Paper     |20    |Saw            |205   
+Paper     |20    |Hammer         |50    
+Paper     |20    |Relay          |30    
+Paper     |20    |Screwdriver    |505   
+Plastic   |30    |NULL           |20    
+Plastic   |30    |Sander         |20    
+Plastic   |30    |Generator      |10    
+Plastic   |30    |Saw            |205   
+Plastic   |30    |Hammer         |50    
+Plastic   |30    |Screwdriver    |505   
+Steel     |30    |NULL           |20    
+Steel     |30    |Sander         |20    
+Steel     |30    |Generator      |10    
+Steel     |30    |Saw            |205   
+Steel     |30    |Hammer         |50    
+Steel     |30    |Screwdriver    |505   
+Wire      |10    |NULL           |20    
+Wire      |10    |Ruler          |30    
+Wire      |10    |Sander         |20    
+Wire      |10    |Saw            |205   
+Wire      |10    |Hammer         |50    
+Wire      |10    |Relay          |30    
+Wire      |10    |Screwdriver    |505   
+NULL      |30    |NULL           |20    
+NULL      |30    |Sander         |20    
+NULL      |30    |Generator      |10    
+NULL      |30    |Saw            |205   
+NULL      |30    |Hammer         |50    
+NULL      |30    |Screwdriver    |505   
+ij> -- ---------------------------------------------------------------------;
+-- test unit 2, add where, aggregate, order by, group by, having;
+-- ---------------------------------------------------------------------;
+-- 201 - Use where clause with LEFT join, '>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM, PRICE
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.PRICE>15 or A.PART <> 'Wire'
+        and B.NUM > 10
+  order by 1,2;
+PART      |NUM   |PRODUCT        |NUM   |PRICE     
+---------------------------------------------------
+Blades    |205   |NULL           |20    |NULL      
+Blades    |205   |Ruler          |30    |8.75      
+Blades    |205   |Sander         |20    |35.75     
+Blades    |205   |Generator      |10    |45.75     
+Blades    |205   |Hammer         |50    |5.75      
+Blades    |205   |Relay          |30    |7.55      
+Oil       |160   |NULL           |20    |NULL      
+Oil       |160   |Ruler          |30    |8.75      
+Oil       |160   |Sander         |20    |35.75     
+Oil       |160   |Generator      |10    |45.75     
+Oil       |160   |Hammer         |50    |5.75      
+Oil       |160   |Relay          |30    |7.55      
+Paper     |20    |Generator      |10    |45.75     
+Plastic   |30    |NULL           |20    |NULL      
+Plastic   |30    |Sander         |20    |35.75     
+Plastic   |30    |Generator      |10    |45.75     
+Steel     |30    |NULL           |20    |NULL      
+Steel     |30    |Sander         |20    |35.75     
+Steel     |30    |Generator      |10    |45.75     
+NULL      |30    |Sander         |20    |35.75     
+NULL      |30    |Generator      |10    |45.75     
+NULL      |NULL  |Saw            |205   |18.90     
+ij> -- 202 - Use aggregate function in select list, '>' ON predicate;
+SELECT AVG(PRICE)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.NUM > 10 and A.PART <> 'Wire';
+1            
+-------------
+18.7100      
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- 203 - Use where clause and order by clause, '>' ON predicate;
+SELECT PART, PRODUCT, PRICE
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.PRICE>5
+  ORDER BY PART, PRICE DESC;
+PART      |PRODUCT        |PRICE     
+-------------------------------------
+Blades    |Generator      |45.75     
+Blades    |Sander         |35.75     
+Blades    |Ruler          |8.75      
+Blades    |Relay          |7.55      
+Blades    |Hammer         |5.75      
+Oil       |Generator      |45.75     
+Oil       |Sander         |35.75     
+Oil       |Ruler          |8.75      
+Oil       |Relay          |7.55      
+Oil       |Hammer         |5.75      
+Paper     |Generator      |45.75     
+Plastic   |Generator      |45.75     
+Plastic   |Sander         |35.75     
+Steel     |Generator      |45.75     
+Steel     |Sander         |35.75     
+NULL      |Generator      |45.75     
+NULL      |Sander         |35.75     
+NULL      |Saw            |18.90     
+ij> -- 204 - Use where clause and order by multiple columns, '>' ON predicate;
+SELECT PART, PRODUCT, PRICE
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  ORDER BY 1 DESC, 3 ASC;
+PART      |PRODUCT        |PRICE     
+-------------------------------------
+NULL      |Screwdriver    |3.70      
+NULL      |Saw            |18.90     
+NULL      |Sander         |35.75     
+NULL      |Generator      |45.75     
+NULL      |NULL           |NULL      
+Steel     |Sander         |35.75     
+Steel     |Generator      |45.75     
+Steel     |NULL           |NULL      
+Plastic   |Sander         |35.75     
+Plastic   |Generator      |45.75     
+Plastic   |NULL           |NULL      
+Paper     |Generator      |45.75     
+Oil       |Hammer         |5.75      
+Oil       |Relay          |7.55      
+Oil       |Ruler          |8.75      
+Oil       |Sander         |35.75     
+Oil       |Generator      |45.75     
+Oil       |NULL           |NULL      
+Blades    |Hammer         |5.75      
+Blades    |Relay          |7.55      
+Blades    |Ruler          |8.75      
+Blades    |Sander         |35.75     
+Blades    |Generator      |45.75     
+Blades    |NULL           |NULL      
+ij> -- 205 - Use where clause and group by clause, '>' ON predicate;
+SELECT B.NUM, count(*)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.PRICE>5
+  GROUP BY B.NUM
+  order by 1;
+NUM   |2          
+------------------
+10    |6          
+20    |5          
+30    |4          
+50    |2          
+205   |1          
+ij> -- 206 - Use where clause and having clause, '<>' ON predicate;
+SELECT B.NUM, count(*)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM <> B.NUM
+  GROUP BY B.NUM
+  HAVING B.NUM > 20
+  order by 1;
+NUM   |2          
+------------------
+30    |10         
+50    |8          
+205   |7          
+505   |8          
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3, create view of join result, inequality ON pred, and try to modify it;
+-- ---------------------------------------------------------------------;
+-- 301 - Create view with LEFT join clause, '<' or '<>' ON predicate;
+CREATE VIEW K55ADMIN.VW1 AS
+  SELECT PART, SUPPLIER, A.NUM, PRODUCT
+    FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+         ON A.NUM > B.NUM
+    WHERE PRICE>5;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW K55ADMIN.VW2 AS
+  SELECT PART, SUPPLIER, A.NUM, PRODUCT
+    FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+         ON A.NUM <> B.NUM
+    WHERE SUPPLIER <> 'ACWF';
+0 rows inserted/updated/deleted
+ij> -- 302 - Select from view with where clause;
+SELECT count(*) FROM K55ADMIN.VW1 WHERE PRODUCT <> 'Saw';
+1          
+-----------
+17         
+ij> -- 303 - Inner Join on views;
+SELECT K55ADMIN.VW1.PART, K55ADMIN.VW1.PRODUCT, K55ADMIN.VW2.PART, K55ADMIN.VW2.PRODUCT
+  FROM K55ADMIN.VW1 JOIN K55ADMIN.VW2 ON K55ADMIN.VW1.NUM=K55ADMIN.VW2.NUM
+  order by 1,2,3;
+PART      |PRODUCT        |PART      |PRODUCT        
+-----------------------------------------------------
+Blades    |Generator      |Blades    |NULL           
+Blades    |Generator      |Blades    |Ruler          
+Blades    |Generator      |Blades    |Sander         
+Blades    |Generator      |Blades    |Generator      
+Blades    |Generator      |Blades    |Hammer         
+Blades    |Generator      |Blades    |Relay          
+Blades    |Generator      |Blades    |Screwdriver    
+Blades    |Hammer         |Blades    |NULL           
+Blades    |Hammer         |Blades    |Ruler          
+Blades    |Hammer         |Blades    |Sander         
+Blades    |Hammer         |Blades    |Generator      
+Blades    |Hammer         |Blades    |Hammer         
+Blades    |Hammer         |Blades    |Relay          
+Blades    |Hammer         |Blades    |Screwdriver    
+Blades    |Relay          |Blades    |NULL           
+Blades    |Relay          |Blades    |Ruler          
+Blades    |Relay          |Blades    |Sander         
+Blades    |Relay          |Blades    |Generator      
+Blades    |Relay          |Blades    |Hammer         
+Blades    |Relay          |Blades    |Relay          
+Blades    |Relay          |Blades    |Screwdriver    
+Blades    |Ruler          |Blades    |NULL           
+Blades    |Ruler          |Blades    |Ruler          
+Blades    |Ruler          |Blades    |Sander         
+Blades    |Ruler          |Blades    |Generator      
+Blades    |Ruler          |Blades    |Hammer         
+Blades    |Ruler          |Blades    |Relay          
+Blades    |Ruler          |Blades    |Screwdriver    
+Blades    |Sander         |Blades    |NULL           
+Blades    |Sander         |Blades    |Ruler          
+Blades    |Sander         |Blades    |Sander         
+Blades    |Sander         |Blades    |Generator      
+Blades    |Sander         |Blades    |Hammer         
+Blades    |Sander         |Blades    |Relay          
+Blades    |Sander         |Blades    |Screwdriver    
+Oil       |Generator      |Oil       |NULL           
+Oil       |Generator      |Oil       |Ruler          
+Oil       |Generator      |Oil       |Sander         
+Oil       |Generator      |Oil       |Generator      
+Oil       |Generator      |Oil       |Saw            
+Oil       |Generator      |Oil       |Hammer         
+Oil       |Generator      |Oil       |Relay          
+Oil       |Generator      |Oil       |Screwdriver    
+Oil       |Hammer         |Oil       |NULL           
+Oil       |Hammer         |Oil       |Ruler          
+Oil       |Hammer         |Oil       |Sander         
+Oil       |Hammer         |Oil       |Generator      
+Oil       |Hammer         |Oil       |Saw            
+Oil       |Hammer         |Oil       |Hammer         
+Oil       |Hammer         |Oil       |Relay          
+Oil       |Hammer         |Oil       |Screwdriver    
+Oil       |Relay          |Oil       |NULL           
+Oil       |Relay          |Oil       |Ruler          
+Oil       |Relay          |Oil       |Sander         
+Oil       |Relay          |Oil       |Generator      
+Oil       |Relay          |Oil       |Saw            
+Oil       |Relay          |Oil       |Hammer         
+Oil       |Relay          |Oil       |Relay          
+Oil       |Relay          |Oil       |Screwdriver    
+Oil       |Ruler          |Oil       |NULL           
+Oil       |Ruler          |Oil       |Ruler          
+Oil       |Ruler          |Oil       |Sander         
+Oil       |Ruler          |Oil       |Generator      
+Oil       |Ruler          |Oil       |Saw            
+Oil       |Ruler          |Oil       |Hammer         
+Oil       |Ruler          |Oil       |Relay          
+Oil       |Ruler          |Oil       |Screwdriver    
+Oil       |Sander         |Oil       |NULL           
+Oil       |Sander         |Oil       |Ruler          
+Oil       |Sander         |Oil       |Sander         
+Oil       |Sander         |Oil       |Generator      
+Oil       |Sander         |Oil       |Saw            
+Oil       |Sander         |Oil       |Hammer         
+Oil       |Sander         |Oil       |Relay          
+Oil       |Sander         |Oil       |Screwdriver    
+Paper     |Generator      |Paper     |Ruler          
+Paper     |Generator      |Paper     |Generator      
+Paper     |Generator      |Paper     |Saw            
+Paper     |Generator      |Paper     |Hammer         
+Paper     |Generator      |Paper     |Relay          
+Paper     |Generator      |Paper     |Screwdriver    
+Plastic   |Generator      |Plastic   |NULL           
+Plastic   |Generator      |Plastic   |Sander         
+Plastic   |Generator      |Plastic   |Generator      
+Plastic   |Generator      |Plastic   |Saw            
+Plastic   |Generator      |Plastic   |Hammer         
+Plastic   |Generator      |Plastic   |Screwdriver    
+Plastic   |Sander         |Plastic   |NULL           
+Plastic   |Sander         |Plastic   |Sander         
+Plastic   |Sander         |Plastic   |Generator      
+Plastic   |Sander         |Plastic   |Saw            
+Plastic   |Sander         |Plastic   |Hammer         
+Plastic   |Sander         |Plastic   |Screwdriver    
+Steel     |Generator      |Plastic   |NULL           
+Steel     |Generator      |Plastic   |Sander         
+Steel     |Generator      |Plastic   |Generator      
+Steel     |Generator      |Plastic   |Saw            
+Steel     |Generator      |Plastic   |Hammer         
+Steel     |Generator      |Plastic   |Screwdriver    
+Steel     |Sander         |Plastic   |NULL           
+Steel     |Sander         |Plastic   |Sander         
+Steel     |Sander         |Plastic   |Generator      
+Steel     |Sander         |Plastic   |Saw            
+Steel     |Sander         |Plastic   |Hammer         
+Steel     |Sander         |Plastic   |Screwdriver    
+NULL      |Generator      |Plastic   |NULL           
+NULL      |Generator      |Plastic   |Sander         
+NULL      |Generator      |Plastic   |Generator      
+NULL      |Generator      |Plastic   |Saw            
+NULL      |Generator      |Plastic   |Hammer         
+NULL      |Generator      |Plastic   |Screwdriver    
+NULL      |Sander         |Plastic   |NULL           
+NULL      |Sander         |Plastic   |Sander         
+NULL      |Sander         |Plastic   |Generator      
+NULL      |Sander         |Plastic   |Saw            
+NULL      |Sander         |Plastic   |Hammer         
+NULL      |Sander         |Plastic   |Screwdriver    
+ij> -- 305 - Drop views created in this test unit;
+DROP VIEW K55ADMIN.VW1;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.VW2;
+0 rows inserted/updated/deleted
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4, test various mix of table references in FROM clause, inequality ON predicate;
+-- ---------------------------------------------------------------------;
+-- 401 - use derived table, '>' ON predicate;
+SELECT PART, SUPPLIER, A.NUM, PRODUCT, PRICE
+  FROM K55ADMIN.PARTS A LEFT JOIN
+    (SELECT * FROM K55ADMIN.PRODUCTS B WHERE PRICE>20) AS CHEAP_PRODUCTS
+    ON A.NUM > CHEAP_PRODUCTS.NUM
+  order by 1,3;
+PART      |SUPPLIER            |NUM   |PRODUCT        |PRICE     
+-----------------------------------------------------------------
+Blades    |Ace-Steel           |205   |Sander         |35.75     
+Blades    |Ace-Steel           |205   |Generator      |45.75     
+Magnets   |Bateman             |10    |NULL           |NULL      
+Oil       |Western-Chem        |160   |Sander         |35.75     
+Oil       |Western-Chem        |160   |Generator      |45.75     
+Paper     |Ace-Steel           |20    |Generator      |45.75     
+Plastic   |Plastik-Corp        |30    |Sander         |35.75     
+Plastic   |Plastik-Corp        |30    |Generator      |45.75     
+Steel     |ACWF                |30    |Sander         |35.75     
+Steel     |ACWF                |30    |Generator      |45.75     
+Wire      |ACWF                |10    |NULL           |NULL      
+NULL      |NULL                |30    |Sander         |35.75     
+NULL      |NULL                |30    |Generator      |45.75     
+ij> -- 402 - one join table ref and one non-join-table-ref and DISTINCT, '>' ON predicate;
+SELECT DISTINCT A.PART, B.NUM, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS as A, 
+       K55ADMIN.PARTS as B LEFT JOIN K55ADMIN.PRODUCTS ON B.NUM > K55ADMIN.PRODUCTS.NUM
+   order by 1,2,3;
+PART      |NUM   |NUM   
+------------------------
+Blades    |10    |NULL  
+Blades    |20    |10    
+Blades    |30    |10    
+Blades    |30    |20    
+Blades    |160   |10    
+Blades    |160   |20    
+Blades    |160   |30    
+Blades    |160   |50    
+Blades    |205   |10    
+Blades    |205   |20    
+Blades    |205   |30    
+Blades    |205   |50    
+Magnets   |10    |NULL  
+Magnets   |20    |10    
+Magnets   |30    |10    
+Magnets   |30    |20    
+Magnets   |160   |10    
+Magnets   |160   |20    
+Magnets   |160   |30    
+Magnets   |160   |50    
+Magnets   |205   |10    
+Magnets   |205   |20    
+Magnets   |205   |30    
+Magnets   |205   |50    
+Oil       |10    |NULL  
+Oil       |20    |10    
+Oil       |30    |10    
+Oil       |30    |20    
+Oil       |160   |10    
+Oil       |160   |20    
+Oil       |160   |30    
+Oil       |160   |50    
+Oil       |205   |10    
+Oil       |205   |20    
+Oil       |205   |30    
+Oil       |205   |50    
+Paper     |10    |NULL  
+Paper     |20    |10    
+Paper     |30    |10    
+Paper     |30    |20    
+Paper     |160   |10    
+Paper     |160   |20    
+Paper     |160   |30    
+Paper     |160   |50    
+Paper     |205   |10    
+Paper     |205   |20    
+Paper     |205   |30    
+Paper     |205   |50    
+Plastic   |10    |NULL  
+Plastic   |20    |10    
+Plastic   |30    |10    
+Plastic   |30    |20    
+Plastic   |160   |10    
+Plastic   |160   |20    
+Plastic   |160   |30    
+Plastic   |160   |50    
+Plastic   |205   |10    
+Plastic   |205   |20    
+Plastic   |205   |30    
+Plastic   |205   |50    
+Steel     |10    |NULL  
+Steel     |20    |10    
+Steel     |30    |10    
+Steel     |30    |20    
+Steel     |160   |10    
+Steel     |160   |20    
+Steel     |160   |30    
+Steel     |160   |50    
+Steel     |205   |10    
+Steel     |205   |20    
+Steel     |205   |30    
+Steel     |205   |50    
+Wire      |10    |NULL  
+Wire      |20    |10    
+Wire      |30    |10    
+Wire      |30    |20    
+Wire      |160   |10    
+Wire      |160   |20    
+Wire      |160   |30    
+Wire      |160   |50    
+Wire      |205   |10    
+Wire      |205   |20    
+Wire      |205   |30    
+Wire      |205   |50    
+NULL      |10    |NULL  
+NULL      |20    |10    
+NULL      |30    |10    
+NULL      |30    |20    
+NULL      |160   |10    
+NULL      |160   |20    
+NULL      |160   |30    
+NULL      |160   |50    
+NULL      |205   |10    
+NULL      |205   |20    
+NULL      |205   |30    
+NULL      |205   |50    
+ij> -- 403 - mixed implicit and explicit inner joins, '>' ON predicate;
+SELECT DISTINCT P1.PART, K55ADMIN.PARTS.NUM, K55ADMIN.PRODUCTS.PRICE, D1.PRODUCT, P1.NUM, D1.NUM
+FROM K55ADMIN.PARTS P1 LEFT JOIN K55ADMIN.PRODUCTS D1 ON P1.NUM>D1.NUM,
+     K55ADMIN.PARTS, K55ADMIN.PRODUCTS WHERE K55ADMIN.PARTS.NUM=K55ADMIN.PRODUCTS.NUM
+ order by 1,2,3,4;
+PART      |NUM   |PRICE     |PRODUCT        |NUM   |NUM   
+----------------------------------------------------------
+Blades    |10    |45.75     |Generator      |205   |10    
+Blades    |10    |45.75     |Hammer         |205   |50    
+Blades    |10    |45.75     |Relay          |205   |30    
+Blades    |10    |45.75     |Ruler          |205   |30    
+Blades    |10    |45.75     |Sander         |205   |20    
+Blades    |10    |45.75     |NULL           |205   |20    
+Blades    |20    |35.75     |Generator      |205   |10    
+Blades    |20    |35.75     |Hammer         |205   |50    
+Blades    |20    |35.75     |Relay          |205   |30    
+Blades    |20    |35.75     |Ruler          |205   |30    
+Blades    |20    |35.75     |Sander         |205   |20    
+Blades    |20    |35.75     |NULL           |205   |20    
+Blades    |20    |NULL      |Generator      |205   |10    
+Blades    |20    |NULL      |Hammer         |205   |50    
+Blades    |20    |NULL      |Relay          |205   |30    
+Blades    |20    |NULL      |Ruler          |205   |30    
+Blades    |20    |NULL      |Sander         |205   |20    
+Blades    |20    |NULL      |NULL           |205   |20    
+Blades    |30    |7.55      |Generator      |205   |10    
+Blades    |30    |7.55      |Hammer         |205   |50    
+Blades    |30    |7.55      |Relay          |205   |30    
+Blades    |30    |7.55      |Ruler          |205   |30    
+Blades    |30    |7.55      |Sander         |205   |20    
+Blades    |30    |7.55      |NULL           |205   |20    
+Blades    |30    |8.75      |Generator      |205   |10    
+Blades    |30    |8.75      |Hammer         |205   |50    
+Blades    |30    |8.75      |Relay          |205   |30    
+Blades    |30    |8.75      |Ruler          |205   |30    
+Blades    |30    |8.75      |Sander         |205   |20    
+Blades    |30    |8.75      |NULL           |205   |20    
+Blades    |205   |18.90     |Generator      |205   |10    
+Blades    |205   |18.90     |Hammer         |205   |50    
+Blades    |205   |18.90     |Relay          |205   |30    
+Blades    |205   |18.90     |Ruler          |205   |30    
+Blades    |205   |18.90     |Sander         |205   |20    
+Blades    |205   |18.90     |NULL           |205   |20    
+Magnets   |10    |45.75     |NULL           |10    |NULL  
+Magnets   |20    |35.75     |NULL           |10    |NULL  
+Magnets   |20    |NULL      |NULL           |10    |NULL  
+Magnets   |30    |7.55      |NULL           |10    |NULL  
+Magnets   |30    |8.75      |NULL           |10    |NULL  
+Magnets   |205   |18.90     |NULL           |10    |NULL  
+Oil       |10    |45.75     |Generator      |160   |10    
+Oil       |10    |45.75     |Hammer         |160   |50    
+Oil       |10    |45.75     |Relay          |160   |30    
+Oil       |10    |45.75     |Ruler          |160   |30    
+Oil       |10    |45.75     |Sander         |160   |20    
+Oil       |10    |45.75     |NULL           |160   |20    
+Oil       |20    |35.75     |Generator      |160   |10    
+Oil       |20    |35.75     |Hammer         |160   |50    
+Oil       |20    |35.75     |Relay          |160   |30    
+Oil       |20    |35.75     |Ruler          |160   |30    
+Oil       |20    |35.75     |Sander         |160   |20    
+Oil       |20    |35.75     |NULL           |160   |20    
+Oil       |20    |NULL      |Generator      |160   |10    
+Oil       |20    |NULL      |Hammer         |160   |50    
+Oil       |20    |NULL      |Relay          |160   |30    
+Oil       |20    |NULL      |Ruler          |160   |30    
+Oil       |20    |NULL      |Sander         |160   |20    
+Oil       |20    |NULL      |NULL           |160   |20    
+Oil       |30    |7.55      |Generator      |160   |10    
+Oil       |30    |7.55      |Hammer         |160   |50    
+Oil       |30    |7.55      |Relay          |160   |30    
+Oil       |30    |7.55      |Ruler          |160   |30    
+Oil       |30    |7.55      |Sander         |160   |20    
+Oil       |30    |7.55      |NULL           |160   |20    
+Oil       |30    |8.75      |Generator      |160   |10    
+Oil       |30    |8.75      |Hammer         |160   |50    
+Oil       |30    |8.75      |Relay          |160   |30    
+Oil       |30    |8.75      |Ruler          |160   |30    
+Oil       |30    |8.75      |Sander         |160   |20    
+Oil       |30    |8.75      |NULL           |160   |20    
+Oil       |205   |18.90     |Generator      |160   |10    
+Oil       |205   |18.90     |Hammer         |160   |50    
+Oil       |205   |18.90     |Relay          |160   |30    
+Oil       |205   |18.90     |Ruler          |160   |30    
+Oil       |205   |18.90     |Sander         |160   |20    
+Oil       |205   |18.90     |NULL           |160   |20    
+Paper     |10    |45.75     |Generator      |20    |10    
+Paper     |20    |35.75     |Generator      |20    |10    
+Paper     |20    |NULL      |Generator      |20    |10    
+Paper     |30    |7.55      |Generator      |20    |10    
+Paper     |30    |8.75      |Generator      |20    |10    
+Paper     |205   |18.90     |Generator      |20    |10    
+Plastic   |10    |45.75     |Generator      |30    |10    
+Plastic   |10    |45.75     |Sander         |30    |20    
+Plastic   |10    |45.75     |NULL           |30    |20    
+Plastic   |20    |35.75     |Generator      |30    |10    
+Plastic   |20    |35.75     |Sander         |30    |20    
+Plastic   |20    |35.75     |NULL           |30    |20    
+Plastic   |20    |NULL      |Generator      |30    |10    
+Plastic   |20    |NULL      |Sander         |30    |20    
+Plastic   |20    |NULL      |NULL           |30    |20    
+Plastic   |30    |7.55      |Generator      |30    |10    
+Plastic   |30    |7.55      |Sander         |30    |20    
+Plastic   |30    |7.55      |NULL           |30    |20    
+Plastic   |30    |8.75      |Generator      |30    |10    
+Plastic   |30    |8.75      |Sander         |30    |20    
+Plastic   |30    |8.75      |NULL           |30    |20    
+Plastic   |205   |18.90     |Generator      |30    |10    
+Plastic   |205   |18.90     |Sander         |30    |20    
+Plastic   |205   |18.90     |NULL           |30    |20    
+Steel     |10    |45.75     |Generator      |30    |10    
+Steel     |10    |45.75     |Sander         |30    |20    
+Steel     |10    |45.75     |NULL           |30    |20    
+Steel     |20    |35.75     |Generator      |30    |10    
+Steel     |20    |35.75     |Sander         |30    |20    
+Steel     |20    |35.75     |NULL           |30    |20    
+Steel     |20    |NULL      |Generator      |30    |10    
+Steel     |20    |NULL      |Sander         |30    |20    
+Steel     |20    |NULL      |NULL           |30    |20    
+Steel     |30    |7.55      |Generator      |30    |10    
+Steel     |30    |7.55      |Sander         |30    |20    
+Steel     |30    |7.55      |NULL           |30    |20    
+Steel     |30    |8.75      |Generator      |30    |10    
+Steel     |30    |8.75      |Sander         |30    |20    
+Steel     |30    |8.75      |NULL           |30    |20    
+Steel     |205   |18.90     |Generator      |30    |10    
+Steel     |205   |18.90     |Sander         |30    |20    
+Steel     |205   |18.90     |NULL           |30    |20    
+Wire      |10    |45.75     |NULL           |10    |NULL  
+Wire      |20    |35.75     |NULL           |10    |NULL  
+Wire      |20    |NULL      |NULL           |10    |NULL  
+Wire      |30    |7.55      |NULL           |10    |NULL  
+Wire      |30    |8.75      |NULL           |10    |NULL  
+Wire      |205   |18.90     |NULL           |10    |NULL  
+NULL      |10    |45.75     |Generator      |30    |10    
+NULL      |10    |45.75     |Sander         |30    |20    
+NULL      |10    |45.75     |NULL           |30    |20    
+NULL      |20    |35.75     |Generator      |30    |10    
+NULL      |20    |35.75     |Sander         |30    |20    
+NULL      |20    |35.75     |NULL           |30    |20    
+NULL      |20    |NULL      |Generator      |30    |10    
+NULL      |20    |NULL      |Sander         |30    |20    
+NULL      |20    |NULL      |NULL           |30    |20    
+NULL      |30    |7.55      |Generator      |30    |10    
+NULL      |30    |7.55      |Sander         |30    |20    
+NULL      |30    |7.55      |NULL           |30    |20    
+NULL      |30    |8.75      |Generator      |30    |10    
+NULL      |30    |8.75      |Sander         |30    |20    
+NULL      |30    |8.75      |NULL           |30    |20    
+NULL      |205   |18.90     |Generator      |30    |10    
+NULL      |205   |18.90     |Sander         |30    |20    
+NULL      |205   |18.90     |NULL           |30    |20    
+ij> -- ---------------------------------------------------------------------;
+-- test unit 5, use of join result in various places, inequality ON predicate;
+-- ---------------------------------------------------------------------;
+-- 501 - join result used in subquery, '>' ON predicate;
+SELECT  PART, PRICE
+FROM K55ADMIN.PRODUCTS, K55ADMIN.PARTS
+WHERE PRICE > (SELECT MIN(PRICE) FROM
+                 K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B ON A.NUM>B.NUM)
+order by 1,2;
+PART      |PRICE     
+---------------------
+Blades    |7.55      
+Blades    |8.75      
+Blades    |18.90     
+Blades    |35.75     
+Blades    |45.75     
+Magnets   |7.55      
+Magnets   |8.75      
+Magnets   |18.90     
+Magnets   |35.75     
+Magnets   |45.75     
+Oil       |7.55      
+Oil       |8.75      
+Oil       |18.90     
+Oil       |35.75     
+Oil       |45.75     
+Paper     |7.55      
+Paper     |8.75      
+Paper     |18.90     
+Paper     |35.75     
+Paper     |45.75     
+Plastic   |7.55      
+Plastic   |8.75      
+Plastic   |18.90     
+Plastic   |35.75     
+Plastic   |45.75     
+Steel     |7.55      
+Steel     |8.75      
+Steel     |18.90     
+Steel     |35.75     
+Steel     |45.75     
+Wire      |7.55      
+Wire      |8.75      
+Wire      |18.90     
+Wire      |35.75     
+Wire      |45.75     
+NULL      |7.55      
+NULL      |8.75      
+NULL      |18.90     
+NULL      |35.75     
+NULL      |45.75     
+ij> -- 502 - join result used in subquery, '<' ON predicate;
+SELECT  PART, PRICE
+FROM K55ADMIN.PRODUCTS, K55ADMIN.PARTS
+WHERE PRICE NOT IN (SELECT PRICE+1 FROM
+                      K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B ON A.NUM<B.NUM)
+order by 1,2;
+PART      |PRICE     
+---------------------
+ij> -- 503 - join appear in having clause, '>' ON predicate;
+SELECT B.NUM, count(*)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM = B.NUM
+  WHERE B.PRICE>5
+  GROUP BY B.NUM
+  HAVING B.NUM > (SELECT AVG(K55ADMIN.PRODUCTS_T.NUM1)
+                  FROM   K55ADMIN.PARTS_T LEFT JOIN K55ADMIN.PRODUCTS_T
+                  ON     K55ADMIN.PARTS_T.NUM1>K55ADMIN.PRODUCTS_T.NUM2)
+ order by 1;
+NUM   |2          
+------------------
+30    |6          
+50    |1          
+205   |1          
+ij> -- 504 - join appear in insert/update/delete;
+insert into k55admin.products
+select p1.num, product, price 
+from k55admin.parts p1 LEFT JOIN K55ADMIN.products_t p2 
+ON p1.num>p2.num2;
+14 rows inserted/updated/deleted
+ij> update k55admin.products
+set price=0 
+where price> (select avg(price) 
+              from k55admin.products_t left join k55admin.parts a
+              on K55ADMIN.products_t.num1>a.num);
+10 rows inserted/updated/deleted
+ij> delete from k55admin.products
+where price> any (select price
+                  from k55admin.products_t left join k55admin.parts a
+                  on K55ADMIN.products_t.num1>a.num);
+3 rows inserted/updated/deleted
+ij> select * from k55admin.products b order by 1,2;
+NUM   |PRODUCT        |PRICE     
+---------------------------------
+10    |Generator      |0.00      
+10    |NULL           |NULL      
+10    |NULL           |NULL      
+20    |Sander         |0.00      
+20    |NULL           |NULL      
+20    |NULL           |NULL      
+30    |Generator      |0.00      
+30    |Generator      |0.00      
+30    |Generator      |0.00      
+30    |Relay          |7.55      
+50    |Hammer         |5.75      
+160   |Generator      |0.00      
+160   |Relay          |7.55      
+160   |Sander         |0.00      
+205   |Generator      |0.00      
+205   |Relay          |7.55      
+205   |Sander         |0.00      
+205   |Saw            |0.00      
+505   |Screwdriver    |3.70      
+ij> -- ---------------------------------------------------------------------;
+-- test unit 6, test join of non-null, nulls, and  empty tables;
+-- ---------------------------------------------------------------------;
+-- 601 - test not nulls, '>' ON predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM
+ order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+Blades    |205   |30    
+Blades    |205   |20    
+Blades    |205   |10    
+Blades    |205   |50    
+Blades    |205   |30    
+Magnets   |10    |NULL  
+Oil       |160   |30    
+Oil       |160   |20    
+Oil       |160   |10    
+Oil       |160   |50    
+Oil       |160   |30    
+Paper     |20    |10    
+Plastic   |30    |20    
+Plastic   |30    |10    
+Steel     |30    |20    
+Steel     |30    |10    
+Wire      |10    |NULL  
+ij> -- 602.1 - test nulls, both sides all nulls, '<' ON predicate;
+SELECT PART, K55ADMIN.PARTS_ALLNULL.NUM, K55ADMIN.PRODUCTS_ALLNULL.NUM
+  FROM K55ADMIN.PARTS_ALLNULL LEFT JOIN K55ADMIN.PRODUCTS_ALLNULL
+    ON K55ADMIN.PARTS_ALLNULL.NUM > K55ADMIN.PRODUCTS_ALLNULL.NUM
+ order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+NULL      |NULL  |NULL  
+NULL      |NULL  |NULL  
+NULL      |NULL  |NULL  
+ij> -- 602.2 - test allnull table, left side null, '<>' ON predicate;
+SELECT PART, K55ADMIN.PARTS_ALLNULL.NUM, B.NUM
+  FROM K55ADMIN.PARTS_ALLNULL LEFT JOIN K55ADMIN.PRODUCTS B
+    ON K55ADMIN.PARTS_ALLNULL.NUM <> B.NUM
+ order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+NULL      |NULL  |NULL  
+NULL      |NULL  |NULL  
+NULL      |NULL  |NULL  
+ij> -- 602.3 - test allnull table, right side null, '>=' ON predicate;
+SELECT PART, A.NUM, K55ADMIN.PRODUCTS_ALLNULL.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS_ALLNULL
+    ON A.NUM >= K55ADMIN.PRODUCTS_ALLNULL.NUM
+ order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+Blades    |205   |NULL  
+Magnets   |10    |NULL  
+Oil       |160   |NULL  
+Paper     |20    |NULL  
+Plastic   |30    |NULL  
+Steel     |30    |NULL  
+Wire      |10    |NULL  
+NULL      |30    |NULL  
+ij> -- 603.1 - test empty table, both sides empty, '<=' ON predicate;
+SELECT PART, K55ADMIN.PARTS_EMPTY.NUM, K55ADMIN.PRODUCTS_EMPTY.NUM
+  FROM K55ADMIN.PARTS_EMPTY LEFT JOIN K55ADMIN.PRODUCTS_EMPTY
+    ON K55ADMIN.PARTS_EMPTY.NUM <= K55ADMIN.PRODUCTS_EMPTY.NUM
+  order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+ij> -- 603.2 - test empty table, left side empty, '<>' ON predicate;
+SELECT PART, K55ADMIN.PARTS_EMPTY.NUM, B.NUM
+  FROM K55ADMIN.PARTS_EMPTY LEFT JOIN K55ADMIN.PRODUCTS B
+    ON K55ADMIN.PARTS_EMPTY.NUM <> B.NUM
+ order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+ij> -- 603.3 - test empty table, right side empty, '>' ON predicate;
+SELECT PART, A.NUM, K55ADMIN.PRODUCTS_EMPTY.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS_EMPTY
+    ON A.NUM > K55ADMIN.PRODUCTS_EMPTY.NUM
+ order by 1,2;
+PART      |NUM   |NUM   
+------------------------
+Blades    |205   |NULL  
+Magnets   |10    |NULL  
+Oil       |160   |NULL  
+Paper     |20    |NULL  
+Plastic   |30    |NULL  
+Steel     |30    |NULL  
+Wire      |10    |NULL  
+NULL      |30    |NULL  
+ij> -- simulate left join;
+--SELECT PART, SUPPLIER, A.NUM, B.NUM, PRODUCT
+--  FROM PARTS, PRODUCTS
+--  WHERE A.NUM = B.NUM
+--UNION ALL
+--SELECT PART, SUPPLIER, NUM, 
+--       nullif(1,1),         -- null
+--       nullif('1','1')      -- null
+--  FROM PARTS
+--  WHERE NOT EXISTS(SELECT * FROM PRODUCTS
+--                     WHERE A.NUM = B.NUM);
+-- 604 - null padding for all data types, '>' ON predicate;
+SELECT K55ADMIN.MANYTYPES.intcol, K55ADMIN.MANYTYPES_NOTNULL.intcol,
+       K55ADMIN.MANYTYPES.DEC62COL, K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+  FROM K55ADMIN.MANYTYPES LEFT JOIN K55ADMIN.MANYTYPES_NOTNULL
+    ON K55ADMIN.MANYTYPES.DEC62COL > K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+ ORDER BY 1,2;
+INTCOL     |INTCOL     |DEC62COL |DEC72COL  
+--------------------------------------------
+1          |NULL       |1.00     |NULL      
+2          |NULL       |2.00     |NULL      
+3          |NULL       |3.00     |NULL      
+4          |NULL       |4.00     |NULL      
+5          |NULL       |5.00     |NULL      
+6          |NULL       |6.00     |NULL      
+7          |NULL       |7.00     |NULL      
+8          |NULL       |8.00     |NULL      
+9          |NULL       |9.00     |NULL      
+10         |NULL       |10.00    |NULL      
+11         |NULL       |11.00    |NULL      
+12         |11         |12.00    |11.00     
+13         |11         |13.00    |11.00     
+13         |12         |13.00    |12.00     
+14         |11         |14.00    |11.00     
+14         |12         |14.00    |12.00     
+14         |13         |14.00    |13.00     
+15         |11         |15.00    |11.00     
+15         |12         |15.00    |12.00     
+15         |13         |15.00    |13.00     
+15         |14         |15.00    |14.00     
+16         |11         |16.00    |11.00     
+16         |12         |16.00    |12.00     
+16         |13         |16.00    |13.00     
+16         |14         |16.00    |14.00     
+16         |15         |16.00    |15.00     
+17         |11         |17.00    |11.00     
+17         |12         |17.00    |12.00     
+17         |13         |17.00    |13.00     
+17         |14         |17.00    |14.00     
+17         |15         |17.00    |15.00     
+17         |16         |17.00    |16.00     
+18         |11         |18.00    |11.00     
+18         |12         |18.00    |12.00     
+18         |13         |18.00    |13.00     
+18         |14         |18.00    |14.00     
+18         |15         |18.00    |15.00     
+18         |16         |18.00    |16.00     
+18         |17         |18.00    |17.00     
+19         |11         |19.00    |11.00     
+19         |12         |19.00    |12.00     
+19         |13         |19.00    |13.00     
+19         |14         |19.00    |14.00     
+19         |15         |19.00    |15.00     
+19         |16         |19.00    |16.00     
+19         |17         |19.00    |17.00     
+19         |18         |19.00    |18.00     
+20         |11         |20.00    |11.00     
+20         |12         |20.00    |12.00     
+20         |13         |20.00    |13.00     
+20         |14         |20.00    |14.00     
+20         |15         |20.00    |15.00     
+20         |16         |20.00    |16.00     
+20         |17         |20.00    |17.00     
+20         |18         |20.00    |18.00     
+20         |19         |20.00    |19.00     
+ij> -- 605 - null padding for all data types, '<' ON predicate;
+SELECT K55ADMIN.MANYTYPES.intcol, K55ADMIN.MANYTYPES_NOTNULL.intcol,
+       K55ADMIN.MANYTYPES.DEC62COL+15, K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+  FROM K55ADMIN.MANYTYPES LEFT JOIN K55ADMIN.MANYTYPES_NOTNULL
+    ON K55ADMIN.MANYTYPES.DEC62COL+15 < K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+ WHERE K55ADMIN.MANYTYPES.INTCOL BETWEEN 5 AND 15
+ ORDER BY 1,2;
+INTCOL     |INTCOL     |3               |DEC72COL  
+---------------------------------------------------
+5          |21         |20.00           |21.00     
+5          |22         |20.00           |22.00     
+5          |23         |20.00           |23.00     
+5          |24         |20.00           |24.00     
+5          |25         |20.00           |25.00     
+6          |22         |21.00           |22.00     
+6          |23         |21.00           |23.00     
+6          |24         |21.00           |24.00     
+6          |25         |21.00           |25.00     
+7          |23         |22.00           |23.00     
+7          |24         |22.00           |24.00     
+7          |25         |22.00           |25.00     
+8          |24         |23.00           |24.00     
+8          |25         |23.00           |25.00     
+9          |25         |24.00           |25.00     
+10         |NULL       |25.00           |NULL      
+11         |NULL       |26.00           |NULL      
+12         |NULL       |27.00           |NULL      
+13         |NULL       |28.00           |NULL      
+14         |NULL       |29.00           |NULL      
+15         |NULL       |30.00           |NULL      
+ij> -- coj209.clp
+--**********************************************************************
+--* complex join tests
+--**********************************************************************
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins;
+-- multiple joins (219);
+-- ---------------------------------------------------------------------;
+-- 101 - Nest INNER join and RIGHT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+N. Baxter                |NULL|Y129
+ij> -- 102 - Nest INNER join and LEFT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+ij> -- 103 - Nest LEFT join and RIGHT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees LEFT JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3, 1;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+N. Baxter                |NULL|Y129
+K. Woods                 |NULL|NULL
+ij> -- 104 - Nest RIGHT join and LEFT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees RIGHT JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 2;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+C. Manthey               |X124|Y128
+J. Thomas                |X125|Y126
+NULL                     |X126|NULL
+B. Ward                  |X127|Y125
+NULL                     |X128|Y124
+NULL                     |X129|NULL
+NULL                     |X130|NULL
+ij> -- 105 - Nest COMMA join and LEFT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees,
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+           ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+  WHERE k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+ij> -- 106 - COMMA join 2 LEFT joins, with "or 1=0" predicate;
+SELECT T1.emp_id, T2.emp_id, T3.emp_id, T4.emp_id
+  FROM (K55ADMIN.old_offices T1 LEFT JOIN K55ADMIN.new_offices T2
+           ON T1.emp_id = T2.emp_id or 1=0),
+       (k55admin.old_offices T3 LEFT JOIN K55ADMIN.new_offices T4
+           ON T3.emp_id = T4.emp_id or 1=0)
+  WHERE T1.emp_id = T3.emp_id
+  ORDER BY 1;
+EMP_ID|EMP_ID|EMP_ID|EMP_ID
+---------------------------
+368521|368521|368521|368521
+480923|480923|480923|480923
+537260|537260|537260|537260
+622273|NULL  |622273|NULL  
+711276|711276|711276|711276
+988870|NULL  |988870|NULL  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 2. UNION of joins;
+-- ---------------------------------------------------------------------;
+-- 201 - UNION two LEFT joins, with "or 1=0" predicate;
+--                        UNION
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col or 1=0
+ORDER BY 2;
+CHARCOL        |INTCOL     |INTCOL     |DEC62COL |FLOATCOL              
+------------------------------------------------------------------------
+One            |1          |NULL       |NULL     |NULL                  
+Two            |2          |NULL       |NULL     |NULL                  
+Three          |3          |NULL       |NULL     |NULL                  
+Four           |4          |NULL       |NULL     |NULL                  
+Five           |5          |NULL       |NULL     |NULL                  
+Six            |6          |NULL       |NULL     |NULL                  
+Seven          |7          |NULL       |NULL     |NULL                  
+Eight          |8          |NULL       |NULL     |NULL                  
+Nine           |9          |NULL       |NULL     |NULL                  
+Ten            |10         |NULL       |NULL     |NULL                  
+Eleven         |11         |11         |11.00    |11.0                  
+Twelve         |12         |12         |12.00    |12.0                  
+Thirteen       |13         |13         |13.00    |13.0                  
+Fourteen       |14         |14         |14.00    |14.0                  
+Fifteen        |15         |15         |15.00    |15.0                  
+Sixteen        |16         |16         |16.00    |16.0                  
+Seventeen      |17         |17         |17.00    |17.0                  
+Eighteen       |18         |18         |18.00    |18.0                  
+Nineteen       |19         |19         |19.00    |19.0                  
+Twenty         |20         |20         |20.00    |20.0                  
+Twenty One     |21         |NULL       |21.00    |21.0                  
+Twenty Two     |22         |NULL       |22.00    |22.0                  
+Twenty Three   |23         |NULL       |23.00    |23.0                  
+Twenty Four    |24         |NULL       |24.00    |24.0                  
+Twenty Five    |25         |NULL       |25.00    |25.0                  
+ij> -- 202 - Again, with extended ON clauses to join on multiple columns, with "or 1=0" predicate;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol or 1=0
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.floatcol = T1.intcol
+               AND T2.smintcol = T1.smintcol or 1=0
+ORDER BY 1;
+CHARCOL        |INTCOL     |INTCOL     |FLOATCOL              
+--------------------------------------------------------------
+Eight          |8          |NULL       |NULL                  
+Eighteen       |18         |18         |18.0                  
+Eleven         |11         |11         |11.0                  
+Fifteen        |15         |15         |15.0                  
+Five           |5          |NULL       |NULL                  
+Four           |4          |NULL       |NULL                  
+Fourteen       |14         |14         |14.0                  
+Nine           |9          |NULL       |NULL                  
+Nineteen       |19         |19         |19.0                  
+One            |1          |NULL       |NULL                  
+Seven          |7          |NULL       |NULL                  
+Seventeen      |17         |17         |17.0                  
+Six            |6          |NULL       |NULL                  
+Sixteen        |16         |16         |16.0                  
+Ten            |10         |NULL       |NULL                  
+Thirteen       |13         |13         |13.0                  
+Three          |3          |NULL       |NULL                  
+Twelve         |12         |12         |12.0                  
+Twenty         |20         |20         |20.0                  
+Twenty Five    |25         |NULL       |25.0                  
+Twenty Four    |24         |NULL       |24.0                  
+Twenty One     |21         |NULL       |21.0                  
+Twenty Three   |23         |NULL       |23.0                  
+Twenty Two     |22         |NULL       |22.0                  
+Two            |2          |NULL       |NULL                  
+ij> -- 203 - UNION ALL two RIGHT joins, with "or 1=0" predicate;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col
+               AND T1.smintcol = T2.intcol or 1=0
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 RIGHT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.floatcol = T1.smintcol or 1=0
+ORDER BY 3;
+CHARCOL        |INTCOL     |INTCOL     |FLOATCOL              
+--------------------------------------------------------------
+NULL           |NULL       |1          |NULL                  
+NULL           |NULL       |2          |NULL                  
+NULL           |NULL       |3          |NULL                  
+NULL           |NULL       |4          |NULL                  
+NULL           |NULL       |5          |NULL                  
+NULL           |NULL       |6          |NULL                  
+NULL           |NULL       |7          |NULL                  
+NULL           |NULL       |8          |NULL                  
+NULL           |NULL       |9          |NULL                  
+NULL           |NULL       |10         |NULL                  
+Eleven         |11         |11         |11.0                  
+Eleven         |11         |11         |11.0                  
+Twelve         |12         |12         |12.0                  
+Twelve         |12         |12         |12.0                  
+Thirteen       |13         |13         |13.0                  
+Thirteen       |13         |13         |13.0                  
+Fourteen       |14         |14         |14.0                  
+Fourteen       |14         |14         |14.0                  
+Fifteen        |15         |15         |15.0                  
+Fifteen        |15         |15         |15.0                  
+Sixteen        |16         |16         |16.0                  
+Sixteen        |16         |16         |16.0                  
+Seventeen      |17         |17         |17.0                  
+Seventeen      |17         |17         |17.0                  
+Eighteen       |18         |18         |18.0                  
+Eighteen       |18         |18         |18.0                  
+Nineteen       |19         |19         |19.0                  
+Nineteen       |19         |19         |19.0                  
+Twenty         |20         |20         |20.0                  
+Twenty         |20         |20         |20.0                  
+NULL           |NULL       |21         |21.0                  
+NULL           |NULL       |22         |22.0                  
+NULL           |NULL       |23         |23.0                  
+NULL           |NULL       |24         |24.0                  
+NULL           |NULL       |25         |25.0                  
+ij> -- 204 - UNION ALL a RIGHT join with an INNER join, with "or 1=0" predicate;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol or 1=0
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 INNER JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.smintcol = T1.smintcol or 1=0
+ORDER BY 2, 3;
+CHARCOL        |INTCOL     |INTCOL     |FLOATCOL              
+--------------------------------------------------------------
+Eleven         |11         |11         |11.0                  
+Eleven         |11         |11         |11.0                  
+Twelve         |12         |12         |12.0                  
+Twelve         |12         |12         |12.0                  
+Thirteen       |13         |13         |13.0                  
+Thirteen       |13         |13         |13.0                  
+Fourteen       |14         |14         |14.0                  
+Fourteen       |14         |14         |14.0                  
+Fifteen        |15         |15         |15.0                  
+Fifteen        |15         |15         |15.0                  
+Sixteen        |16         |16         |16.0                  
+Sixteen        |16         |16         |16.0                  
+Seventeen      |17         |17         |17.0                  
+Seventeen      |17         |17         |17.0                  
+Eighteen       |18         |18         |18.0                  
+Eighteen       |18         |18         |18.0                  
+Nineteen       |19         |19         |19.0                  
+Nineteen       |19         |19         |19.0                  
+Twenty         |20         |20         |20.0                  
+Twenty         |20         |20         |20.0                  
+NULL           |NULL       |21         |21.0                  
+NULL           |NULL       |22         |22.0                  
+NULL           |NULL       |23         |23.0                  
+NULL           |NULL       |24         |24.0                  
+NULL           |NULL       |25         |25.0                  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. Nest joins;
+-- ---------------------------------------------------------------------;
+-- 301 - RIGHT join two LEFT joins, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+ORDER BY 7;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |21.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |22.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |23.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |24.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |25.0                  
+ij> -- 302 - LEFT join two RIGHT joins, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     RJ        RJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol or 1=0)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 RIGHT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+ORDER BY 3;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |21    |21         |21    |NULL     |NULL                  
+NULL      |NULL       |22    |22         |22    |NULL     |NULL                  
+NULL      |NULL       |23    |23         |23    |NULL     |NULL                  
+NULL      |NULL       |24    |24         |24    |NULL     |NULL                  
+NULL      |NULL       |25    |25         |25    |NULL     |NULL                  
+ij> -- 303 - LEFT join a RIGHT join and LEFT join, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+ORDER BY 4;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |21    |21         |21    |NULL     |NULL                  
+NULL      |NULL       |22    |22         |22    |NULL     |NULL                  
+NULL      |NULL       |23    |23         |23    |NULL     |NULL                  
+NULL      |NULL       |24    |24         |24    |NULL     |NULL                  
+NULL      |NULL       |25    |25         |25    |NULL     |NULL                  
+ij> -- 304 - LEFT join a RIGHT join and LEFT join - join on character column, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol or 1=0)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.charcol = T3.vcharcol or 1=0)
+     ON T1.charcol = T4.vcharcol or 1=0
+ORDER BY 2;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |25    |25         |25    |NULL     |NULL                  
+NULL      |NULL       |24    |24         |24    |NULL     |NULL                  
+NULL      |NULL       |23    |23         |23    |NULL     |NULL                  
+NULL      |NULL       |22    |22         |22    |NULL     |NULL                  
+NULL      |NULL       |21    |21         |21    |NULL     |NULL                  
+ij> -- 305 - LEFT join a RIGHT join and LEFT join on multiple columns, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col AND T4.charcol = T3.vcharcol or 1=0)
+     ON T1.intcol = T4.smintcol AND T1.charcol = T4.vcharcol or 1=0
+ORDER BY 7;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |21.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |22.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |23.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |24.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |25.0                  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4. Join a Nest join with a table;
+-- ---------------------------------------------------------------------;
+-- 401 - LEFT join a RIGHT join of two LEFT joins into another table, with "or 1=0" predicate;
+--                                 LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+11         |11    |NULL           
+12         |12    |Twelve         
+13         |13    |NULL           
+14         |14    |Fourteen       
+15         |15    |NULL           
+16         |16    |Sixteen        
+17         |17    |NULL           
+18         |18    |Eighteen       
+19         |19    |NULL           
+20         |20    |Twenty         
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+ij> -- 402 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t1.smintcol, t5.charcol, t5.intcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+  WHERE t5.intcol < 15 or t1.intcol IS NULL or 1=0
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        |INTCOL     
+----------------------------------------------
+12         |12    |Twelve         |12         
+14         |14    |Fourteen       |14         
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+ij> -- 403 - RIGHT join a RIGHT join of two LEFT joins into another table, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 404 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol < 15 or t1.intcol IS NULL or 1=0
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 405 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 406 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol < 15 or t5.intcol IS NOT NULL or 1=0
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 407 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on character column, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol or 1=0
+ORDER BY 1, 4;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        
+--------------------------------------------
+12         |12    |12.00    |Twelve         
+14         |14    |14.00    |Fourteen       
+16         |16    |16.00    |Sixteen        
+18         |18    |18.00    |Eighteen       
+20         |20    |20.00    |Twenty         
+NULL       |NULL  |NULL     |Eight          
+NULL       |NULL  |NULL     |Four           
+NULL       |NULL  |NULL     |Six            
+NULL       |NULL  |NULL     |Ten            
+NULL       |NULL  |NULL     |Twenty Four    
+NULL       |NULL  |NULL     |Twenty Two     
+NULL       |NULL  |NULL     |Two            
+ij> -- 408 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol or 1=0
+  WHERE t1.intcol between 12 and 18
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        
+--------------------------------------------
+12         |12    |12.00    |Twelve         
+14         |14    |14.00    |Fourteen       
+16         |16    |16.00    |Sixteen        
+18         |18    |18.00    |Eighteen       
+ij> -- 409 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on multiple columns, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+       k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol AND T5.intcol = T1.smintcol AND
+       T5.intcol = T3.intcol or 1=0
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- ---------------------------------------------------------------------;
+-- test unit 5. Join a table with a nest join;
+-- ---------------------------------------------------------------------;
+-- 501 - LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 502 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol IS NOT NULL
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+ij> -- 503 - RIGHT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col  or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+11         |NULL  |NULL           
+12         |12    |Twelve         
+13         |NULL  |NULL           
+14         |14    |Fourteen       
+15         |NULL  |NULL           
+16         |16    |Sixteen        
+17         |NULL  |NULL           
+18         |18    |Eighteen       
+19         |NULL  |NULL           
+20         |20    |Twenty         
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+ij> -- 504 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol IS NOT NULL and t1.intcol > 12
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+13         |NULL  |NULL           
+14         |14    |Fourteen       
+15         |NULL  |NULL           
+16         |16    |Sixteen        
+17         |NULL  |NULL           
+18         |18    |Eighteen       
+19         |NULL  |NULL           
+20         |20    |Twenty         
+ij> -- 505 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+ij> -- 506 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t1.smintcol, t1.dec62col
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol <= 20
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL 
+----------------------------
+12         |12    |12.00    
+14         |14    |14.00    
+16         |16    |16.00    
+18         |18    |18.00    
+20         |20    |20.00    
+ij> -- 507 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on character column, with "or 1=0" predicate;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.charcol = T1.vcharcol or 1=0
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        
+--------------------------------------------
+12         |12    |12.00    |Twelve         
+14         |14    |14.00    |Fourteen       
+16         |16    |16.00    |Sixteen        
+18         |18    |18.00    |Eighteen       
+20         |20    |20.00    |Twenty         
+ij> -- 508 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on multiple columns, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol or 1=0)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol or 1=0
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        |VCHARCOL                                                                                            |CHARCOL        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+11         |11    |NULL     |NULL           |Eleven                                                                                              |NULL           
+12         |12    |12.00    |Twelve         |Twelve                                                                                              |Twelve         
+13         |13    |NULL     |NULL           |Thirteen                                                                                            |NULL           
+14         |14    |14.00    |Fourteen       |Fourteen                                                                                            |Fourteen       
+15         |15    |NULL     |NULL           |Fifteen                                                                                             |NULL           
+16         |16    |16.00    |Sixteen        |Sixteen                                                                                             |Sixteen        
+17         |17    |NULL     |NULL           |Seventeen                                                                                           |NULL           
+18         |18    |18.00    |Eighteen       |Eighteen                                                                                            |Eighteen       
+19         |19    |NULL     |NULL           |Nineteen                                                                                            |NULL           
+20         |20    |20.00    |Twenty         |Twenty                                                                                              |Twenty         
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+ij> -- 509 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol or 1=0)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol or 1=0
+  WHERE t1.vcharcol like 'T%'
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        |VCHARCOL                                                                                            |CHARCOL        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+12         |12    |12.00    |Twelve         |Twelve                                                                                              |Twelve         
+13         |13    |NULL     |NULL           |Thirteen                                                                                            |NULL           
+20         |20    |20.00    |Twenty         |Twenty                                                                                              |Twenty         
+ij> -----------------------------------------------------------------------
+--      multiple joins (224)
+-----------------------------------------------------------------------
+-- ---------------------------------------------------------------------;
+-- test unit 6. Create Views needed for other testunit below;
+-- ---------------------------------------------------------------------;
+-- 602 - Create View on LEFT join, with "or 1=0" predicate;
+--                    View
+--                      |
+--                     LJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as t1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol or 1=0;
+0 rows inserted/updated/deleted
+ij> -- 603 - Create View on 2 LEFT joins, with "or 1=0" predicate;
+--                         View
+--                          |
+--                          LJ
+--                       /      \
+--                     LJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol or 1=0)
+           LEFT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol or 1=0;
+0 rows inserted/updated/deleted
+ij> -- 604 - Create View on RIGHT join, with "or 1=0" predicate;
+--                    View
+--                      |
+--                     RJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.RJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T2.charcol, T2.smintcol,
+           T1.intcol, T1.floatcol, T1.vcharcol
+      FROM K55ADMIN.manytypes_notnull as T1 RIGHT JOIN K55ADMIN.manytypes as T2
+        ON T2.smintcol = T1.intcol or 1=0;
+0 rows inserted/updated/deleted
+ij> -- 605 - Create View on 2 RIGHT joins, with "or 1=0" predicate;
+--                         View
+--                          |
+--                          RJ
+--                       /      \
+--                     RJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55admin.RJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 RIGHT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol or 1=0)
+           RIGHT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol or 1=0;
+0 rows inserted/updated/deleted
+ij> -- 606 - Create View on INNER join, with "or 1=0" predicate;
+--                    View
+--                      |
+--                     IJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.IJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as T1 INNER JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol or 1=0;
+0 rows inserted/updated/deleted
+ij> -- 607 - Check data in the Views;
+SELECT * FROM K55ADMIN.LJview1 ORDER BY smintcol;
+CHARCOL   |SMINT&|INTCOL     |FLOATCOL              |VCHARCOL                                                                                            
+---------------------------------------------------------------------------------------------------------------------------------------------------------
+One       |1     |NULL       |NULL                  |NULL                                                                                                
+Two       |2     |NULL       |NULL                  |NULL                                                                                                
+Three     |3     |NULL       |NULL                  |NULL                                                                                                
+Four      |4     |NULL       |NULL                  |NULL                                                                                                
+Five      |5     |NULL       |NULL                  |NULL                                                                                                
+Six       |6     |NULL       |NULL                  |NULL                                                                                                
+Seven     |7     |NULL       |NULL                  |NULL                                                                                                
+Eight     |8     |NULL       |NULL                  |NULL                                                                                                
+Nine      |9     |NULL       |NULL                  |NULL                                                                                                
+Ten       |10    |NULL       |NULL                  |NULL                                                                                                
+Eleven    |11    |11         |11.0                  |Eleven                                                                                              
+Twelve    |12    |12         |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |13.0                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |15.0                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |17.0                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |19.0                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.0                  |Twenty                                                                                              
+ij> SELECT * FROM K55ADMIN.LJview2 ORDER BY smintcol;
+CHARCOL   |SMINT&|INTCOL     |DEC62COL |FLOATCOL              |VCHARCOL                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------
+One       |1     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Two       |2     |NULL       |2.00     |2.0                   |NULL                                                                                                
+Three     |3     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Four      |4     |NULL       |4.00     |4.0                   |NULL                                                                                                
+Five      |5     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Six       |6     |NULL       |6.00     |6.0                   |NULL                                                                                                
+Seven     |7     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Eight     |8     |NULL       |8.00     |8.0                   |NULL                                                                                                
+Nine      |9     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Ten       |10    |NULL       |10.00    |10.0                  |NULL                                                                                                
+Eleven    |11    |11         |NULL     |NULL                  |Eleven                                                                                              
+Twelve    |12    |12         |12.00    |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |NULL     |NULL                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.00    |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |NULL     |NULL                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.00    |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |NULL     |NULL                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.00    |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |NULL     |NULL                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.00    |20.0                  |Twenty                                                                                              
+ij> SELECT * FROM K55ADMIN.RJview1 ORDER BY smintcol;
+CHARCOL   |SMINT&|INTCOL     |FLOATCOL              |VCHARCOL                                                                                            
+---------------------------------------------------------------------------------------------------------------------------------------------------------
+One       |1     |NULL       |NULL                  |NULL                                                                                                
+Two       |2     |NULL       |NULL                  |NULL                                                                                                
+Three     |3     |NULL       |NULL                  |NULL                                                                                                
+Four      |4     |NULL       |NULL                  |NULL                                                                                                
+Five      |5     |NULL       |NULL                  |NULL                                                                                                
+Six       |6     |NULL       |NULL                  |NULL                                                                                                
+Seven     |7     |NULL       |NULL                  |NULL                                                                                                
+Eight     |8     |NULL       |NULL                  |NULL                                                                                                
+Nine      |9     |NULL       |NULL                  |NULL                                                                                                
+Ten       |10    |NULL       |NULL                  |NULL                                                                                                
+Eleven    |11    |11         |11.0                  |Eleven                                                                                              
+Twelve    |12    |12         |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |13.0                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |15.0                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |17.0                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |19.0                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.0                  |Twenty                                                                                              
+ij> SELECT * FROM K55ADMIN.RJview2 ORDER BY floatcol;
+CHARCOL   |SMINT&|INTCOL     |DEC62COL |FLOATCOL              |VCHARCOL                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL      |NULL  |NULL       |2.00     |2.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |4.00     |4.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |6.00     |6.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |8.00     |8.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |10.00    |10.0                  |NULL                                                                                                
+Twelve    |12    |12         |12.00    |12.0                  |Twelve                                                                                              
+Fourteen  |14    |14         |14.00    |14.0                  |Fourteen                                                                                            
+Sixteen   |16    |16         |16.00    |16.0                  |Sixteen                                                                                             
+Eighteen  |18    |18         |18.00    |18.0                  |Eighteen                                                                                            
+Twenty    |20    |20         |20.00    |20.0                  |Twenty                                                                                              
+NULL      |NULL  |NULL       |22.00    |22.0                  |NULL                                                                                                
+NULL      |NULL  |NULL       |24.00    |24.0                  |NULL                                                                                                
+ij> SELECT * FROM K55ADMIN.IJview1 ORDER BY intcol;
+CHARCOL   |SMINT&|INTCOL     |FLOATCOL              |VCHARCOL                                                                                            
+---------------------------------------------------------------------------------------------------------------------------------------------------------
+Eleven    |11    |11         |11.0                  |Eleven                                                                                              
+Twelve    |12    |12         |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |13.0                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |15.0                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |17.0                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |19.0                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.0                  |Twenty                                                                                              
+ij> -- ---------------------------------------------------------------------;
+-- test unit 7. Joins on view;
+-- ---------------------------------------------------------------------;
+-- 701 - Select from LJ view and base table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+   FROM K55ADMIN.LJview2 T1, k55admin.manytypes_notnull T2
+   WHERE T1.intcol IS NOT NULL
+   ORDER BY 1, 2;
+SMINT&|SMINT&|INTCOL     |INTCOL     
+-------------------------------------
+11    |11    |11         |11         
+11    |12    |11         |12         
+11    |13    |11         |13         
+11    |14    |11         |14         
+11    |15    |11         |15         
+11    |16    |11         |16         
+11    |17    |11         |17         
+11    |18    |11         |18         
+11    |19    |11         |19         
+11    |20    |11         |20         
+11    |21    |11         |21         
+11    |22    |11         |22         
+11    |23    |11         |23         
+11    |24    |11         |24         
+11    |25    |11         |25         
+12    |11    |12         |11         
+12    |12    |12         |12         
+12    |13    |12         |13         
+12    |14    |12         |14         
+12    |15    |12         |15         
+12    |16    |12         |16         
+12    |17    |12         |17         
+12    |18    |12         |18         
+12    |19    |12         |19         
+12    |20    |12         |20         
+12    |21    |12         |21         
+12    |22    |12         |22         
+12    |23    |12         |23         
+12    |24    |12         |24         
+12    |25    |12         |25         
+13    |11    |13         |11         
+13    |12    |13         |12         
+13    |13    |13         |13         
+13    |14    |13         |14         
+13    |15    |13         |15         
+13    |16    |13         |16         
+13    |17    |13         |17         
+13    |18    |13         |18         
+13    |19    |13         |19         
+13    |20    |13         |20         
+13    |21    |13         |21         
+13    |22    |13         |22         
+13    |23    |13         |23         
+13    |24    |13         |24         
+13    |25    |13         |25         
+14    |11    |14         |11         
+14    |12    |14         |12         
+14    |13    |14         |13         
+14    |14    |14         |14         
+14    |15    |14         |15         
+14    |16    |14         |16         
+14    |17    |14         |17         
+14    |18    |14         |18         
+14    |19    |14         |19         
+14    |20    |14         |20         
+14    |21    |14         |21         
+14    |22    |14         |22         
+14    |23    |14         |23         
+14    |24    |14         |24         
+14    |25    |14         |25         
+15    |11    |15         |11         
+15    |12    |15         |12         
+15    |13    |15         |13         
+15    |14    |15         |14         
+15    |15    |15         |15         
+15    |16    |15         |16         
+15    |17    |15         |17         
+15    |18    |15         |18         
+15    |19    |15         |19         
+15    |20    |15         |20         
+15    |21    |15         |21         
+15    |22    |15         |22         
+15    |23    |15         |23         
+15    |24    |15         |24         
+15    |25    |15         |25         
+16    |11    |16         |11         
+16    |12    |16         |12         
+16    |13    |16         |13         
+16    |14    |16         |14         
+16    |15    |16         |15         
+16    |16    |16         |16         
+16    |17    |16         |17         
+16    |18    |16         |18         
+16    |19    |16         |19         
+16    |20    |16         |20         
+16    |21    |16         |21         
+16    |22    |16         |22         
+16    |23    |16         |23         
+16    |24    |16         |24         
+16    |25    |16         |25         
+17    |11    |17         |11         
+17    |12    |17         |12         
+17    |13    |17         |13         
+17    |14    |17         |14         
+17    |15    |17         |15         
+17    |16    |17         |16         
+17    |17    |17         |17         
+17    |18    |17         |18         
+17    |19    |17         |19         
+17    |20    |17         |20         
+17    |21    |17         |21         
+17    |22    |17         |22         
+17    |23    |17         |23         
+17    |24    |17         |24         
+17    |25    |17         |25         
+18    |11    |18         |11         
+18    |12    |18         |12         
+18    |13    |18         |13         
+18    |14    |18         |14         
+18    |15    |18         |15         
+18    |16    |18         |16         
+18    |17    |18         |17         
+18    |18    |18         |18         
+18    |19    |18         |19         
+18    |20    |18         |20         
+18    |21    |18         |21         
+18    |22    |18         |22         
+18    |23    |18         |23         
+18    |24    |18         |24         
+18    |25    |18         |25         
+19    |11    |19         |11         
+19    |12    |19         |12         
+19    |13    |19         |13         
+19    |14    |19         |14         
+19    |15    |19         |15         
+19    |16    |19         |16         
+19    |17    |19         |17         
+19    |18    |19         |18         
+19    |19    |19         |19         
+19    |20    |19         |20         
+19    |21    |19         |21         
+19    |22    |19         |22         
+19    |23    |19         |23         
+19    |24    |19         |24         
+19    |25    |19         |25         
+20    |11    |20         |11         
+20    |12    |20         |12         
+20    |13    |20         |13         
+20    |14    |20         |14         
+20    |15    |20         |15         
+20    |16    |20         |16         
+20    |17    |20         |17         
+20    |18    |20         |18         
+20    |19    |20         |19         
+20    |20    |20         |20         
+20    |21    |20         |21         
+20    |22    |20         |22         
+20    |23    |20         |23         
+20    |24    |20         |24         
+20    |25    |20         |25         
+ij> -- 702 - LEFT JOIN a table with a LJ view, with "or 1=0" predicate;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol or 1=0
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3,4;
+CHARCOL   |CHARCOL   |SMINT&|INTCOL     
+----------------------------------------
+Five      |Five      |5     |NULL       
+Six       |Six       |6     |NULL       
+Seven     |Seven     |7     |NULL       
+Eight     |Eight     |8     |NULL       
+Nine      |Nine      |9     |NULL       
+Ten       |Ten       |10    |NULL       
+Eleven    |Eleven    |11    |11         
+Twelve    |Twelve    |12    |12         
+Thirteen  |Thirteen  |13    |13         
+Fourteen  |Fourteen  |14    |14         
+Fifteen   |Fifteen   |15    |15         
+ij> -- 703 - RIGHT JOIN K55ADMIN.a table with a LJ view, with "or 1=0" predicate;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 RIGHT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol or 1=0
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+CHARCOL        |CHARCOL   |SMINT&|INTCOL     
+---------------------------------------------
+NULL           |Five      |5     |NULL       
+Six            |Six       |6     |NULL       
+NULL           |Seven     |7     |NULL       
+Eight          |Eight     |8     |NULL       
+NULL           |Nine      |9     |NULL       
+Ten            |Ten       |10    |NULL       
+NULL           |Eleven    |11    |11         
+Twelve         |Twelve    |12    |12         
+NULL           |Thirteen  |13    |13         
+Fourteen       |Fourteen  |14    |14         
+NULL           |Fifteen   |15    |15         
+ij> -- 704 - Apply Aggregate function on RJ view;
+SELECT intcol, COUNT(*)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          
+-----------------------
+11         |1          
+12         |1          
+13         |1          
+14         |1          
+15         |1          
+16         |1          
+17         |1          
+18         |1          
+19         |1          
+20         |1          
+NULL       |10         
+ij> -- 705 - Apply Aggregate function on LJ view;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.LJview2
+  GROUP BY intcol;
+INTCOL     |2          |3          
+-----------------------------------
+11         |1          |1          
+12         |1          |1          
+13         |1          |1          
+14         |1          |1          
+15         |1          |1          
+16         |1          |1          
+17         |1          |1          
+18         |1          |1          
+19         |1          |1          
+20         |1          |1          
+NULL       |10         |0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- 706 - RIGHT JOIN a LJ view with a table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+  FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+    ON T1.smintcol = T2.smintcol
+  WHERE T1.intcol IS NOT NULL
+  ORDER BY 1, 3;
+SMINT&|SMINT&|INTCOL     |INTCOL     
+-------------------------------------
+11    |11    |11         |11         
+12    |12    |12         |12         
+13    |13    |13         |13         
+14    |14    |14         |14         
+15    |15    |15         |15         
+16    |16    |16         |16         
+17    |17    |17         |17         
+18    |18    |18         |18         
+19    |19    |19         |19         
+20    |20    |20         |20         
+ij> -- 707 - RIGHT join a RJ view with a table;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.RJview1 T2 RIGHT JOIN K55ADMIN.manytypes T1
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3, 4;
+CHARCOL   |CHARCOL   |SMINT&|INTCOL     
+----------------------------------------
+Five      |Five      |5     |NULL       
+Six       |Six       |6     |NULL       
+Seven     |Seven     |7     |NULL       
+Eight     |Eight     |8     |NULL       
+Nine      |Nine      |9     |NULL       
+Ten       |Ten       |10    |NULL       
+Eleven    |Eleven    |11    |11         
+Twelve    |Twelve    |12    |12         
+Thirteen  |Thirteen  |13    |13         
+Fourteen  |Fourteen  |14    |14         
+Fifteen   |Fifteen   |15    |15         
+ij> -- 708 - LEFT join a table with a RJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 LEFT JOIN K55ADMIN.RJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+CHARCOL        |CHARCOL   |SMINT&|INTCOL     
+---------------------------------------------
+Six            |Six       |6     |NULL       
+Eight          |Eight     |8     |NULL       
+Ten            |Ten       |10    |NULL       
+Twelve         |Twelve    |12    |12         
+Fourteen       |Fourteen  |14    |14         
+Twenty Four    |NULL      |NULL  |NULL       
+Twenty Two     |NULL      |NULL  |NULL       
+ij> -- 709 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          |4          |5          |6          
+-----------------------------------------------------------------------
+11         |1          |11         |11         |11         |11         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+12         |1          |12         |12         |12         |12         
+13         |1          |13         |13         |13         |13         
+14         |1          |14         |14         |14         |14         
+15         |1          |15         |15         |15         |15         
+16         |1          |16         |16         |16         |16         
+17         |1          |17         |17         |17         |17         
+18         |1          |18         |18         |18         |18         
+19         |1          |19         |19         |19         |19         
+20         |1          |20         |20         |20         |20         
+NULL       |10         |NULL       |NULL       |NULL       |NULL       
+ij> -- 710 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          
+-----------------------------------
+12         |1          |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+14         |1          |1          
+16         |1          |1          
+18         |1          |1          
+20         |1          |1          
+NULL       |5          |0          
+ij> -- 711 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+ij> -- 712 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) = 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 713 - LEFT join a RJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 714 - RIGHT join an IJ view with a RJ view  - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+ij> -- 715 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 716 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 722 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          |4          |5          |6          
+-----------------------------------------------------------------------
+11         |1          |11         |11         |11         |11         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+12         |1          |12         |12         |12         |12         
+13         |1          |13         |13         |13         |13         
+14         |1          |14         |14         |14         |14         
+15         |1          |15         |15         |15         |15         
+16         |1          |16         |16         |16         |16         
+17         |1          |17         |17         |17         |17         
+18         |1          |18         |18         |18         |18         
+19         |1          |19         |19         |19         |19         
+20         |1          |20         |20         |20         |20         
+NULL       |10         |NULL       |NULL       |NULL       |NULL       
+ij> -- 724 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          
+-----------------------------------
+12         |1          |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+14         |1          |1          
+16         |1          |1          
+18         |1          |1          
+20         |1          |1          
+NULL       |5          |0          
+ij> -- 804 - LEFT JOIN a table with a LJ view, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol or 1=0
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+6          |Six            
+8          |Eight          
+10         |Ten            
+12         |Twelve         
+14         |Fourteen       
+ij> -- 805 - RIGHT JOIN a LJ view with a table, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol or 1=0
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+12         |Twelve         
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+ij> -- 806 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+22         |Twenty Two     
+24         |Twenty Four    
+ij> -- 807 - RIGHT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+22         |Twenty Two     
+24         |Twenty Four    
+ij> -- 808 - RIGHT join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+ij> -- 809 - INNER join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+2          |Two            
+4          |Four           
+6          |Six            
+8          |Eight          
+10         |Ten            
+ij> -- 810 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+22         |Twenty Two     
+24         |Twenty Four    
+ij> -- 815 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 LEFT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) IN (4, 6, 8) )
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+12         |Twelve         
+14         |Fourteen       
+18         |Eighteen       
+20         |Twenty         
+ij> -- 817 - LEFT join 2 views - with 1-level correlated subquery, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  WHERE smintcol = (
+    SELECT T2.smintcol + 2
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol or 1=0
+      WHERE T2.floatcol = T1.floatcol - 2 )
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+22         |Twenty Two     
+ij> -- ---------------------------------------------------------------------;
+-- test unit 9. Joins tables used in HAVING clause;
+-- ---------------------------------------------------------------------;
+-- 904 - LEFT JOIN a table with a LJ view, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol or 1=0
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+6          |Six            
+8          |Eight          
+10         |Ten            
+12         |Twelve         
+14         |Fourteen       
+ij> -- 905 - RIGHT JOIN a LJ view with a table, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol or 1=0
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+12    |Twelve         
+14    |Fourteen       
+16    |Sixteen        
+18    |Eighteen       
+20    |Twenty         
+ij> -- 906 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+16    |Sixteen        
+18    |Eighteen       
+20    |Twenty         
+22    |Twenty Two     
+24    |Twenty Four    
+ij> -- 907 - RIGHT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+14    |Fourteen       
+16    |Sixteen        
+18    |Eighteen       
+20    |Twenty         
+22    |Twenty Two     
+24    |Twenty Four    
+ij> -- 908 - RIGHT join an IJ view with a RJ view -join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+ij> -- 909 - INNER join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+2     |Two            
+4     |Four           
+6     |Six            
+8     |Eight          
+10    |Ten            
+ij> -- 910 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+22    |Twenty Two     
+24    |Twenty Four    
+ij> -- 915 - LEFT join 2 views - with 1-level correlated subquery, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol - 1
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol or 1=0
+      WHERE T2.floatcol = T1.smintcol + 1 )
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+10    |Ten            
+12    |Twelve         
+14    |Fourteen       
+16    |Sixteen        
+18    |Eighteen       
+ij> -- 919 - LEFT join 2 views - with 2-level correlated subquery, with "or 1=0" predicate;
+SELECT smintcol, dec62col, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, dec62col, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol 
+      FROM K55ADMIN.IJview1 T2 INNER JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol or 1=0
+      WHERE T3.charcol = T1.charcol AND
+            T2.floatcol = (
+              SELECT T4.smintcol
+                FROM K55ADMIN.LJview2 T4 LEFT JOIN K55ADMIN.RJview1 T5
+                       ON T4.dec62col = T5.floatcol or 1=0
+                WHERE T5.floatcol = T1.dec62col ) )
+  ORDER BY 1;
+SMINT&|DEC62COL |CHARCOL        
+--------------------------------
+12    |12.00    |Twelve         
+14    |14.00    |Fourteen       
+16    |16.00    |Sixteen        
+18    |18.00    |Eighteen       
+20    |20.00    |Twenty         
+ij> -- ---------------------------------------------------------------------;
+-- test unit 10. Joins tables used in INSERT, UPDATE or DELETE subquery;
+-- ---------------------------------------------------------------------;
+-- 1001 - Create table needed for the test;
+CREATE TABLE k55admin.iud_tbl (c1 int,
+                      c2 char(15),
+                      c3 char(15));
+0 rows inserted/updated/deleted
+ij> -- 1011 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6;
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+14         |Fourteen       |Fourteen       
+16         |Sixteen        |Sixteen        
+18         |Eighteen       |Eighteen       
+ij> -- 1012 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+14         |NULL           |Fourteen       
+16         |NULL           |Sixteen        
+18         |Eighteen       |Eighteen       
+ij> -- 1013 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+ij> -- 1014 - RIGHT join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.charcol) > 6;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+12         |Twelve         |Twelve         
+14         |Fourteen       |Fourteen       
+16         |Sixteen        |Sixteen        
+18         |Eighteen       |Eighteen       
+20         |Twenty         |Twenty         
+ij> -- 1015 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+12         |NULL           |Twelve         
+14         |NULL           |Fourteen       
+16         |NULL           |Sixteen        
+18         |Eighteen       |Eighteen       
+20         |Twenty         |Twenty         
+ij> -- 1016 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+12         |NULL           |Twelve         
+20         |Twenty         |Twenty         
+ij> -- 1017 - Clean up table iud_tbl;
+DELETE FROM K55ADMIN.iud_tbl;
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c3;
+C1         |C2             |C3             
+-------------------------------------------
+ij> -- 1019 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+C1         |C2             |C3             
+-------------------------------------------
+12         |Twelve         |Twelve         
+14         |Fourteen       |Fourteen       
+16         |Sixteen        |Sixteen        
+18         |Eighteen       |Eighteen       
+20         |Twenty         |Twenty         
+ij> -- 1021 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6);
+4 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+C1         |C2             |C3             
+-------------------------------------------
+12         |Twelve         |Twelve         
+14         |NULL           |Fourteen       
+16         |NULL           |Sixteen        
+18         |NULL           |Eighteen       
+20         |NULL           |Twenty         
+ij> -- 1023 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6);
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+ij> -- ---------------------------------------------------------------------;
+-- test unit 11. Joins tables used in INSERT, UPDATE or DELETE subquery. tables have ;
+-- ---------------------------------------------------------------------;
+-- 1102 - Create tables and populate data needed for the test;
+CREATE TABLE k55admin.iud_tbl_P (c1 float,
+                        c2 char(15),
+                        c3 char(15)) ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE k55admin.MANYTYPES_P
+      (INTCOL        INTEGER,
+       SMINTCOL      SMALLINT,
+       DEC62COL      DECIMAL(6,2),
+       DEC72COL      DECIMAL(7,2),
+       FLOATCOL      FLOAT,
+       CHARCOL       CHAR(10),
+       LCHARCOL      CHAR(250),
+       VCHARCOL      VARCHAR(100)) ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE k55admin.MTYPES_NOTNULL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE k55admin.MTYPES_CTRL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+0 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.manytypes_P SELECT * from k55admin.manytypes;
+20 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.mtypes_notnull_P SELECT * from k55admin.manytypes_notnull;
+15 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.mtypes_ctrl_P SELECT * from k55admin.manytypes_ctrl;
+12 rows inserted/updated/deleted
+ij> -- 1104- LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+INSERT INTO K55ADMIN.iud_tbl_P
+  SELECT t1.floatcol, t1.charcol, t6.vcharcol
+    FROM K55ADMIN.mtypes_ctrl_P T6
+       LEFT JOIN
+        ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+              ON T1.intcol = T2.dec62col)
+         RIGHT JOIN
+           (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+                ON T4.smintcol = T3.dec62col or 1=0)
+         ON T1.intcol = T4.smintcol
+         LEFT JOIN
+          k55admin.mtypes_ctrl_P T5
+        ON T5.intcol = T1.smintcol)
+      ON T6.intcol = T1.smintcol
+    WHERE t1.intcol IS NOT NULL;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1106 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol or 1=0
+      WHERE t1.floatcol IS NOT NULL);
+4 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |NULL           |Eighteen       
+20.0                  |NULL           |Twenty         
+ij> -- 1108 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol or 1=0
+      WHERE t1.floatcol IS NOT NULL);
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1116 - Clean up table iud_tbl_P;
+DELETE FROM K55ADMIN.iud_tbl_P;
+0 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c3;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1118 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6;
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+ij> -- 1120 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+ij> -- 1122 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1124 - RIGHT join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6 OR T2.charcol LIKE 'T%';
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1126 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |NULL           |Twelve         
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1128 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE substr(T2.vcharcol, 1, 1) = 'T');
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+ij> -- 1130 - Clean up table iud_tbl_P;
+DELETE FROM K55ADMIN.iud_tbl_P;
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1132 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1134 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE T1.vcharcol LIKE 'T_e%');
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |NULL           |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |NULL           |Twenty         
+ij> -- 1136 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE T1.vcharcol NOT LIKE 'Tw%' OR substr(T2.vcharcol, 1, 1) = 'T');
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- some bugs found during development
+SELECT t1.floatcol
+  FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN
+      ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+            ON T1.floatcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.floatcol = T4.smintcol
+       LEFT JOIN
+        k55admin.mtypes_ctrl_P T5
+      ON T5.floatcol = T1.smintcol)
+    ON T6.floatcol = T1.smintcol or 1=0
+WHERE t1.floatcol IS NOT NULL;
+FLOATCOL              
+----------------------
+12.0                  
+14.0                  
+16.0                  
+18.0                  
+20.0                  
+ij> SELECT *
+FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2 ON T1.floatcol = T2.dec62col or 1=0)
+                 RIGHT JOIN k55admin.mtypes_notnull_P T4 ON T1.floatcol = T4.smintcol)
+     ON T6.floatcol = T1.smintcol or 1=0;
+INTCOL     |SMINT&|DEC62COL |DEC72COL  |FLOATCOL              |CHARCOL        |LCHARCOL                                                                                                                                                                                                                                                  |VCHARCOL                                                                                            |INTCOL     |SMINT&|DEC62COL |DEC72COL  |FLOATCOL              |CHARCOL   |LCHARCOL                                                                                                                                                                                                                                                  |VCHARCOL                                                                                            |INTCOL     |SMINT&|DEC62COL |DEC72COL  |FLOATCOL              |CHARCOL        |LCHARCOL                                                                                
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |2     |2.00     |2.00      |2.0                   |Two            |Two                                                                                                                                                                                                                                                       |Two                                                                                                 |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+4          |4     |4.00     |4.00      |4.0                   |Four           |Four                                                                                                                                                                                                                                                      |Four                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+6          |6     |6.00     |6.00      |6.0                   |Six            |Six                                                                                                                                                                                                                                                       |Six                                                                                                 |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+8          |8     |8.00     |8.00      |8.0                   |Eight          |Eight                                                                                                                                                                                                                                                     |Eight                                                                                               |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+10         |10    |10.00    |10.00     |10.0                  |Ten            |Ten                                                                                                                                                                                                                                                       |Ten                                                                                                 |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+12         |12    |12.00    |12.00     |12.0                  |Twelve         |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              |12         |12    |12.00    |12.00     |12.0                  |Twelve    |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              |12         |12    |12.00    |12.00     |12.0                  |Twelve         |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              |12         |12    |12.00    |12.00     |12.0                  |Twelve         |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              
+14         |14    |14.00    |14.00     |14.0                  |Fourteen       |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            |14         |14    |14.00    |14.00     |14.0                  |Fourteen  |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            |14         |14    |14.00    |14.00     |14.0                  |Fourteen       |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            |14         |14    |14.00    |14.00     |14.0                  |Fourteen       |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            
+16         |16    |16.00    |16.00     |16.0                  |Sixteen        |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             |16         |16    |16.00    |16.00     |16.0                  |Sixteen   |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             |16         |16    |16.00    |16.00     |16.0                  |Sixteen        |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             |16         |16    |16.00    |16.00     |16.0                  |Sixteen        |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             
+18         |18    |18.00    |18.00     |18.0                  |Eighteen       |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            |18         |18    |18.00    |18.00     |18.0                  |Eighteen  |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            |18         |18    |18.00    |18.00     |18.0                  |Eighteen       |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            |18         |18    |18.00    |18.00     |18.0                  |Eighteen       |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            
+20         |20    |20.00    |20.00     |20.0                  |Twenty         |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              |20         |20    |20.00    |20.00     |20.0                  |Twenty    |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              |20         |20    |20.00    |20.00     |20.0                  |Twenty         |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              |20         |20    |20.00    |20.00     |20.0                  |Twenty         |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              
+22         |22    |22.00    |22.00     |22.0                  |Twenty Two     |Twenty Two                                                                                                                                                                                                                                                |Twenty Two                                                                                          |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+24         |24    |24.00    |24.00     |24.0                  |Twenty Four    |Twenty Four                                                                                                                                                                                                                                               |Twenty Four                                                                                         |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+ij> DROP VIEW K55ADMIN.LJview1;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.LJview2;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.RJview1;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55admin.RJview2;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.IJview1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.iud_tbl;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.iud_tbl_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MANYTYPES_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MTYPES_NOTNULL_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MTYPES_CTRL_P;
+0 rows inserted/updated/deleted
+ij> -- coj211.clp
+--**********************************************************************
+--* complex join tests
+--**********************************************************************
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins;
+-- multiple joins (219);
+-- ---------------------------------------------------------------------;
+-- 101 - Nest INNER join and RIGHT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+N. Baxter                |NULL|Y129
+ij> -- 102 - Nest INNER join and LEFT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+ij> -- 103 - Nest LEFT join and RIGHT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees LEFT JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3, 1;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+N. Baxter                |NULL|Y129
+K. Woods                 |NULL|NULL
+ij> -- 104 - Nest RIGHT join and LEFT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees RIGHT JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 2;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+C. Manthey               |X124|Y128
+J. Thomas                |X125|Y126
+NULL                     |X126|NULL
+B. Ward                  |X127|Y125
+NULL                     |X128|Y124
+NULL                     |X129|NULL
+NULL                     |X130|NULL
+ij> -- 105 - Nest COMMA join and LEFT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees,
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+           ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+  WHERE k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3;
+EMP_NAME                 |OLD&|NEW&
+-----------------------------------
+NULL                     |X128|Y124
+B. Ward                  |X127|Y125
+J. Thomas                |X125|Y126
+C. Manthey               |X124|Y128
+ij> -- 106 - COMMA join 2 LEFT joins;
+SELECT T1.emp_id, T2.emp_id, T3.emp_id, T4.emp_id
+  FROM (K55ADMIN.old_offices T1 LEFT JOIN K55ADMIN.new_offices T2
+           ON T1.emp_id = T2.emp_id),
+       (k55admin.old_offices T3 LEFT JOIN K55ADMIN.new_offices T4
+           ON T3.emp_id = T4.emp_id)
+  WHERE T1.emp_id = T3.emp_id
+  ORDER BY 1;
+EMP_ID|EMP_ID|EMP_ID|EMP_ID
+---------------------------
+368521|368521|368521|368521
+480923|480923|480923|480923
+537260|537260|537260|537260
+622273|NULL  |622273|NULL  
+711276|711276|711276|711276
+988870|NULL  |988870|NULL  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 2. UNION of joins;
+-- ---------------------------------------------------------------------;
+-- 201 - UNION two LEFT joins;
+--                        UNION
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+ORDER BY 2;
+CHARCOL        |INTCOL     |INTCOL     |DEC62COL |FLOATCOL              
+------------------------------------------------------------------------
+One            |1          |NULL       |NULL     |NULL                  
+Two            |2          |NULL       |NULL     |NULL                  
+Three          |3          |NULL       |NULL     |NULL                  
+Four           |4          |NULL       |NULL     |NULL                  
+Five           |5          |NULL       |NULL     |NULL                  
+Six            |6          |NULL       |NULL     |NULL                  
+Seven          |7          |NULL       |NULL     |NULL                  
+Eight          |8          |NULL       |NULL     |NULL                  
+Nine           |9          |NULL       |NULL     |NULL                  
+Ten            |10         |NULL       |NULL     |NULL                  
+Eleven         |11         |11         |11.00    |11.0                  
+Twelve         |12         |12         |12.00    |12.0                  
+Thirteen       |13         |13         |13.00    |13.0                  
+Fourteen       |14         |14         |14.00    |14.0                  
+Fifteen        |15         |15         |15.00    |15.0                  
+Sixteen        |16         |16         |16.00    |16.0                  
+Seventeen      |17         |17         |17.00    |17.0                  
+Eighteen       |18         |18         |18.00    |18.0                  
+Nineteen       |19         |19         |19.00    |19.0                  
+Twenty         |20         |20         |20.00    |20.0                  
+Twenty One     |21         |NULL       |21.00    |21.0                  
+Twenty Two     |22         |NULL       |22.00    |22.0                  
+Twenty Three   |23         |NULL       |23.00    |23.0                  
+Twenty Four    |24         |NULL       |24.00    |24.0                  
+Twenty Five    |25         |NULL       |25.00    |25.0                  
+ij> -- 202 - Again, with extended ON clauses to join on multiple columns;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.floatcol = T1.intcol
+               AND T2.smintcol = T1.smintcol
+ORDER BY 1;
+CHARCOL        |INTCOL     |INTCOL     |FLOATCOL              
+--------------------------------------------------------------
+Eight          |8          |NULL       |NULL                  
+Eighteen       |18         |18         |18.0                  
+Eleven         |11         |11         |11.0                  
+Fifteen        |15         |15         |15.0                  
+Five           |5          |NULL       |NULL                  
+Four           |4          |NULL       |NULL                  
+Fourteen       |14         |14         |14.0                  
+Nine           |9          |NULL       |NULL                  
+Nineteen       |19         |19         |19.0                  
+One            |1          |NULL       |NULL                  
+Seven          |7          |NULL       |NULL                  
+Seventeen      |17         |17         |17.0                  
+Six            |6          |NULL       |NULL                  
+Sixteen        |16         |16         |16.0                  
+Ten            |10         |NULL       |NULL                  
+Thirteen       |13         |13         |13.0                  
+Three          |3          |NULL       |NULL                  
+Twelve         |12         |12         |12.0                  
+Twenty         |20         |20         |20.0                  
+Twenty Five    |25         |NULL       |25.0                  
+Twenty Four    |24         |NULL       |24.0                  
+Twenty One     |21         |NULL       |21.0                  
+Twenty Three   |23         |NULL       |23.0                  
+Twenty Two     |22         |NULL       |22.0                  
+Two            |2          |NULL       |NULL                  
+ij> -- 203 - UNION ALL two RIGHT joins;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col
+               AND T1.smintcol = T2.intcol
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 RIGHT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.floatcol = T1.smintcol
+ORDER BY 3;
+CHARCOL        |INTCOL     |INTCOL     |FLOATCOL              
+--------------------------------------------------------------
+NULL           |NULL       |1          |NULL                  
+NULL           |NULL       |2          |NULL                  
+NULL           |NULL       |3          |NULL                  
+NULL           |NULL       |4          |NULL                  
+NULL           |NULL       |5          |NULL                  
+NULL           |NULL       |6          |NULL                  
+NULL           |NULL       |7          |NULL                  
+NULL           |NULL       |8          |NULL                  
+NULL           |NULL       |9          |NULL                  
+NULL           |NULL       |10         |NULL                  
+Eleven         |11         |11         |11.0                  
+Eleven         |11         |11         |11.0                  
+Twelve         |12         |12         |12.0                  
+Twelve         |12         |12         |12.0                  
+Thirteen       |13         |13         |13.0                  
+Thirteen       |13         |13         |13.0                  
+Fourteen       |14         |14         |14.0                  
+Fourteen       |14         |14         |14.0                  
+Fifteen        |15         |15         |15.0                  
+Fifteen        |15         |15         |15.0                  
+Sixteen        |16         |16         |16.0                  
+Sixteen        |16         |16         |16.0                  
+Seventeen      |17         |17         |17.0                  
+Seventeen      |17         |17         |17.0                  
+Eighteen       |18         |18         |18.0                  
+Eighteen       |18         |18         |18.0                  
+Nineteen       |19         |19         |19.0                  
+Nineteen       |19         |19         |19.0                  
+Twenty         |20         |20         |20.0                  
+Twenty         |20         |20         |20.0                  
+NULL           |NULL       |21         |21.0                  
+NULL           |NULL       |22         |22.0                  
+NULL           |NULL       |23         |23.0                  
+NULL           |NULL       |24         |24.0                  
+NULL           |NULL       |25         |25.0                  
+ij> -- 204 - UNION ALL a RIGHT join with an INNER join;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 INNER JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.smintcol = T1.smintcol
+ORDER BY 2, 3;
+CHARCOL        |INTCOL     |INTCOL     |FLOATCOL              
+--------------------------------------------------------------
+Eleven         |11         |11         |11.0                  
+Eleven         |11         |11         |11.0                  
+Twelve         |12         |12         |12.0                  
+Twelve         |12         |12         |12.0                  
+Thirteen       |13         |13         |13.0                  
+Thirteen       |13         |13         |13.0                  
+Fourteen       |14         |14         |14.0                  
+Fourteen       |14         |14         |14.0                  
+Fifteen        |15         |15         |15.0                  
+Fifteen        |15         |15         |15.0                  
+Sixteen        |16         |16         |16.0                  
+Sixteen        |16         |16         |16.0                  
+Seventeen      |17         |17         |17.0                  
+Seventeen      |17         |17         |17.0                  
+Eighteen       |18         |18         |18.0                  
+Eighteen       |18         |18         |18.0                  
+Nineteen       |19         |19         |19.0                  
+Nineteen       |19         |19         |19.0                  
+Twenty         |20         |20         |20.0                  
+Twenty         |20         |20         |20.0                  
+NULL           |NULL       |21         |21.0                  
+NULL           |NULL       |22         |22.0                  
+NULL           |NULL       |23         |23.0                  
+NULL           |NULL       |24         |24.0                  
+NULL           |NULL       |25         |25.0                  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 3. Nest joins;
+-- ---------------------------------------------------------------------;
+-- 301 - RIGHT join two LEFT joins;
+--                          RJ
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+ORDER BY 7;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |21.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |22.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |23.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |24.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |25.0                  
+ij> -- 302 - LEFT join two RIGHT joins;
+--                          LJ
+--                       /      \
+--                     RJ        RJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 RIGHT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+ORDER BY 3;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |21    |21         |21    |NULL     |NULL                  
+NULL      |NULL       |22    |22         |22    |NULL     |NULL                  
+NULL      |NULL       |23    |23         |23    |NULL     |NULL                  
+NULL      |NULL       |24    |24         |24    |NULL     |NULL                  
+NULL      |NULL       |25    |25         |25    |NULL     |NULL                  
+ij> -- 303 - LEFT join a RIGHT join and LEFT join;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+ORDER BY 4;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |21    |21         |21    |NULL     |NULL                  
+NULL      |NULL       |22    |22         |22    |NULL     |NULL                  
+NULL      |NULL       |23    |23         |23    |NULL     |NULL                  
+NULL      |NULL       |24    |24         |24    |NULL     |NULL                  
+NULL      |NULL       |25    |25         |25    |NULL     |NULL                  
+ij> -- 304 - LEFT join a RIGHT join and LEFT join - join on character column;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.charcol = T3.vcharcol)
+     ON T1.charcol = T4.vcharcol
+ORDER BY 2;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |25    |25         |25    |NULL     |NULL                  
+NULL      |NULL       |24    |24         |24    |NULL     |NULL                  
+NULL      |NULL       |23    |23         |23    |NULL     |NULL                  
+NULL      |NULL       |22    |22         |22    |NULL     |NULL                  
+NULL      |NULL       |21    |21         |21    |NULL     |NULL                  
+ij> -- 305 - LEFT join a RIGHT join and LEFT join on multiple columns;
+--                          RJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col AND T4.charcol = T3.vcharcol)
+     ON T1.intcol = T4.smintcol AND T1.charcol = T4.vcharcol
+ORDER BY 7;
+CHARCOL   |INTCOL     |SMINT&|INTCOL     |SMINT&|DEC62COL |FLOATCOL              
+---------------------------------------------------------------------------------
+Eleven    |11         |11    |11         |11    |11.00    |11.0                  
+Twelve    |12         |12    |12         |12    |12.00    |12.0                  
+Thirteen  |13         |13    |13         |13    |13.00    |13.0                  
+Fourteen  |14         |14    |14         |14    |14.00    |14.0                  
+Fifteen   |15         |15    |15         |15    |15.00    |15.0                  
+Sixteen   |16         |16    |16         |16    |16.00    |16.0                  
+Seventeen |17         |17    |17         |17    |17.00    |17.0                  
+Eighteen  |18         |18    |18         |18    |18.00    |18.0                  
+Nineteen  |19         |19    |19         |19    |19.00    |19.0                  
+Twenty    |20         |20    |20         |20    |20.00    |20.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |21.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |22.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |23.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |24.0                  
+NULL      |NULL       |NULL  |NULL       |NULL  |NULL     |25.0                  
+ij> -- ---------------------------------------------------------------------;
+-- test unit 4. Join a Nest join with a table;
+-- ---------------------------------------------------------------------;
+-- 401 - LEFT join a RIGHT join of two LEFT joins into another table;
+--                                 LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+11         |11    |NULL           
+12         |12    |Twelve         
+13         |13    |NULL           
+14         |14    |Fourteen       
+15         |15    |NULL           
+16         |16    |Sixteen        
+17         |17    |NULL           
+18         |18    |Eighteen       
+19         |19    |NULL           
+20         |20    |Twenty         
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+ij> -- 402 - Add WHERE clause to previous query;
+SELECT t1.intcol, t1.smintcol, t5.charcol, t5.intcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+  WHERE t5.intcol < 15 or t1.intcol IS NULL
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        |INTCOL     
+----------------------------------------------
+12         |12    |Twelve         |12         
+14         |14    |Fourteen       |14         
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+NULL       |NULL  |NULL           |NULL       
+ij> -- 403 - RIGHT join a RIGHT join of two LEFT joins into another table;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 404 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+  WHERE t1.intcol < 15 or t1.intcol IS NULL
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 405 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 406 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+  WHERE t1.intcol < 15 or t5.intcol IS NOT NULL
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 407 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on character column;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol
+ORDER BY 1, 4;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        
+--------------------------------------------
+12         |12    |12.00    |Twelve         
+14         |14    |14.00    |Fourteen       
+16         |16    |16.00    |Sixteen        
+18         |18    |18.00    |Eighteen       
+20         |20    |20.00    |Twenty         
+NULL       |NULL  |NULL     |Eight          
+NULL       |NULL  |NULL     |Four           
+NULL       |NULL  |NULL     |Six            
+NULL       |NULL  |NULL     |Ten            
+NULL       |NULL  |NULL     |Twenty Four    
+NULL       |NULL  |NULL     |Twenty Two     
+NULL       |NULL  |NULL     |Two            
+ij> -- 408 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol
+  WHERE t1.intcol between 12 and 18
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        
+--------------------------------------------
+12         |12    |12.00    |Twelve         
+14         |14    |14.00    |Fourteen       
+16         |16    |16.00    |Sixteen        
+18         |18    |18.00    |Eighteen       
+ij> -- 409 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on multiple columns;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+       k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol AND T5.intcol = T1.smintcol AND
+       T5.intcol = T3.intcol
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- ---------------------------------------------------------------------;
+-- test unit 5. Join a table with a nest join;
+-- ---------------------------------------------------------------------;
+-- 501 - LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+--                          LJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+ORDER BY 1, 3;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+NULL       |NULL  |Eight          
+NULL       |NULL  |Four           
+NULL       |NULL  |Six            
+NULL       |NULL  |Ten            
+NULL       |NULL  |Twenty Four    
+NULL       |NULL  |Twenty Two     
+NULL       |NULL  |Two            
+ij> -- 502 - Add WHERE clause to previous query;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol IS NOT NULL
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+ij> -- 503 - RIGHT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col )
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+11         |NULL  |NULL           
+12         |12    |Twelve         
+13         |NULL  |NULL           
+14         |14    |Fourteen       
+15         |NULL  |NULL           
+16         |16    |Sixteen        
+17         |NULL  |NULL           
+18         |18    |Eighteen       
+19         |NULL  |NULL           
+20         |20    |Twenty         
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+NULL       |NULL  |NULL           
+ij> -- 504 - Add WHERE clause to previous query;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol IS NOT NULL and t1.intcol > 12
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+13         |NULL  |NULL           
+14         |14    |Fourteen       
+15         |NULL  |NULL           
+16         |16    |Sixteen        
+17         |NULL  |NULL           
+18         |18    |Eighteen       
+19         |NULL  |NULL           
+20         |20    |Twenty         
+ij> -- 505 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+ORDER BY 1;
+INTCOL     |SMINT&|CHARCOL        
+----------------------------------
+12         |12    |Twelve         
+14         |14    |Fourteen       
+16         |16    |Sixteen        
+18         |18    |Eighteen       
+20         |20    |Twenty         
+ij> -- 506 - Add WHERE clause to previous query;
+SELECT t1.intcol, t1.smintcol, t1.dec62col
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol <= 20
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL 
+----------------------------
+12         |12    |12.00    
+14         |14    |14.00    
+16         |16    |16.00    
+18         |18    |18.00    
+20         |20    |20.00    
+ij> -- 507 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on character column;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.charcol = T1.vcharcol
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        
+--------------------------------------------
+12         |12    |12.00    |Twelve         
+14         |14    |14.00    |Fourteen       
+16         |16    |16.00    |Sixteen        
+18         |18    |18.00    |Eighteen       
+20         |20    |20.00    |Twenty         
+ij> -- 508 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on multiple columns;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        |VCHARCOL                                                                                            |CHARCOL        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+11         |11    |NULL     |NULL           |Eleven                                                                                              |NULL           
+12         |12    |12.00    |Twelve         |Twelve                                                                                              |Twelve         
+13         |13    |NULL     |NULL           |Thirteen                                                                                            |NULL           
+14         |14    |14.00    |Fourteen       |Fourteen                                                                                            |Fourteen       
+15         |15    |NULL     |NULL           |Fifteen                                                                                             |NULL           
+16         |16    |16.00    |Sixteen        |Sixteen                                                                                             |Sixteen        
+17         |17    |NULL     |NULL           |Seventeen                                                                                           |NULL           
+18         |18    |18.00    |Eighteen       |Eighteen                                                                                            |Eighteen       
+19         |19    |NULL     |NULL           |Nineteen                                                                                            |NULL           
+20         |20    |20.00    |Twenty         |Twenty                                                                                              |Twenty         
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+NULL       |NULL  |NULL     |NULL           |NULL                                                                                                |NULL           
+ij> -- 509 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol
+  WHERE t1.vcharcol like 'T%'
+ORDER BY 1;
+INTCOL     |SMINT&|DEC62COL |CHARCOL        |VCHARCOL                                                                                            |CHARCOL        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------
+12         |12    |12.00    |Twelve         |Twelve                                                                                              |Twelve         
+13         |13    |NULL     |NULL           |Thirteen                                                                                            |NULL           
+20         |20    |20.00    |Twenty         |Twenty                                                                                              |Twenty         
+ij> -----------------------------------------------------------------------
+--      multiple joins (224)
+-----------------------------------------------------------------------
+-- ---------------------------------------------------------------------;
+-- test unit 6. Create Views needed for other testunit below;
+-- ---------------------------------------------------------------------;
+-- 602 - Create View on LEFT join;
+--                    View
+--                      |
+--                     LJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as t1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol;
+0 rows inserted/updated/deleted
+ij> -- 603 - Create View on 2 LEFT joins;
+--                         View
+--                          |
+--                          LJ
+--                       /      \
+--                     LJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol)
+           LEFT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol;
+0 rows inserted/updated/deleted
+ij> -- 604 - Create View on RIGHT join;
+--                    View
+--                      |
+--                     RJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.RJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T2.charcol, T2.smintcol,
+           T1.intcol, T1.floatcol, T1.vcharcol
+      FROM K55ADMIN.manytypes_notnull as T1 RIGHT JOIN K55ADMIN.manytypes as T2
+        ON T2.smintcol = T1.intcol;
+0 rows inserted/updated/deleted
+ij> -- 605 - Create View on 2 RIGHT joins;
+--                         View
+--                          |
+--                          RJ
+--                       /      \
+--                     RJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55admin.RJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 RIGHT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol)
+           RIGHT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol;
+0 rows inserted/updated/deleted
+ij> -- 606 - Create View on INNER join;
+--                    View
+--                      |
+--                     IJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.IJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as T1 INNER JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol;
+0 rows inserted/updated/deleted
+ij> -- 607 - Check data in the Views;
+SELECT * FROM K55ADMIN.LJview1 ORDER BY smintcol;
+CHARCOL   |SMINT&|INTCOL     |FLOATCOL              |VCHARCOL                                                                                            
+---------------------------------------------------------------------------------------------------------------------------------------------------------
+One       |1     |NULL       |NULL                  |NULL                                                                                                
+Two       |2     |NULL       |NULL                  |NULL                                                                                                
+Three     |3     |NULL       |NULL                  |NULL                                                                                                
+Four      |4     |NULL       |NULL                  |NULL                                                                                                
+Five      |5     |NULL       |NULL                  |NULL                                                                                                
+Six       |6     |NULL       |NULL                  |NULL                                                                                                
+Seven     |7     |NULL       |NULL                  |NULL                                                                                                
+Eight     |8     |NULL       |NULL                  |NULL                                                                                                
+Nine      |9     |NULL       |NULL                  |NULL                                                                                                
+Ten       |10    |NULL       |NULL                  |NULL                                                                                                
+Eleven    |11    |11         |11.0                  |Eleven                                                                                              
+Twelve    |12    |12         |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |13.0                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |15.0                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |17.0                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |19.0                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.0                  |Twenty                                                                                              
+ij> SELECT * FROM K55ADMIN.LJview2 ORDER BY smintcol;
+CHARCOL   |SMINT&|INTCOL     |DEC62COL |FLOATCOL              |VCHARCOL                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------
+One       |1     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Two       |2     |NULL       |2.00     |2.0                   |NULL                                                                                                
+Three     |3     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Four      |4     |NULL       |4.00     |4.0                   |NULL                                                                                                
+Five      |5     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Six       |6     |NULL       |6.00     |6.0                   |NULL                                                                                                
+Seven     |7     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Eight     |8     |NULL       |8.00     |8.0                   |NULL                                                                                                
+Nine      |9     |NULL       |NULL     |NULL                  |NULL                                                                                                
+Ten       |10    |NULL       |10.00    |10.0                  |NULL                                                                                                
+Eleven    |11    |11         |NULL     |NULL                  |Eleven                                                                                              
+Twelve    |12    |12         |12.00    |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |NULL     |NULL                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.00    |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |NULL     |NULL                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.00    |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |NULL     |NULL                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.00    |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |NULL     |NULL                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.00    |20.0                  |Twenty                                                                                              
+ij> SELECT * FROM K55ADMIN.RJview1 ORDER BY smintcol;
+CHARCOL   |SMINT&|INTCOL     |FLOATCOL              |VCHARCOL                                                                                            
+---------------------------------------------------------------------------------------------------------------------------------------------------------
+One       |1     |NULL       |NULL                  |NULL                                                                                                
+Two       |2     |NULL       |NULL                  |NULL                                                                                                
+Three     |3     |NULL       |NULL                  |NULL                                                                                                
+Four      |4     |NULL       |NULL                  |NULL                                                                                                
+Five      |5     |NULL       |NULL                  |NULL                                                                                                
+Six       |6     |NULL       |NULL                  |NULL                                                                                                
+Seven     |7     |NULL       |NULL                  |NULL                                                                                                
+Eight     |8     |NULL       |NULL                  |NULL                                                                                                
+Nine      |9     |NULL       |NULL                  |NULL                                                                                                
+Ten       |10    |NULL       |NULL                  |NULL                                                                                                
+Eleven    |11    |11         |11.0                  |Eleven                                                                                              
+Twelve    |12    |12         |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |13.0                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |15.0                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |17.0                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |19.0                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.0                  |Twenty                                                                                              
+ij> SELECT * FROM K55ADMIN.RJview2 ORDER BY floatcol;
+CHARCOL   |SMINT&|INTCOL     |DEC62COL |FLOATCOL              |VCHARCOL                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------
+NULL      |NULL  |NULL       |2.00     |2.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |4.00     |4.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |6.00     |6.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |8.00     |8.0                   |NULL                                                                                                
+NULL      |NULL  |NULL       |10.00    |10.0                  |NULL                                                                                                
+Twelve    |12    |12         |12.00    |12.0                  |Twelve                                                                                              
+Fourteen  |14    |14         |14.00    |14.0                  |Fourteen                                                                                            
+Sixteen   |16    |16         |16.00    |16.0                  |Sixteen                                                                                             
+Eighteen  |18    |18         |18.00    |18.0                  |Eighteen                                                                                            
+Twenty    |20    |20         |20.00    |20.0                  |Twenty                                                                                              
+NULL      |NULL  |NULL       |22.00    |22.0                  |NULL                                                                                                
+NULL      |NULL  |NULL       |24.00    |24.0                  |NULL                                                                                                
+ij> SELECT * FROM K55ADMIN.IJview1 ORDER BY intcol;
+CHARCOL   |SMINT&|INTCOL     |FLOATCOL              |VCHARCOL                                                                                            
+---------------------------------------------------------------------------------------------------------------------------------------------------------
+Eleven    |11    |11         |11.0                  |Eleven                                                                                              
+Twelve    |12    |12         |12.0                  |Twelve                                                                                              
+Thirteen  |13    |13         |13.0                  |Thirteen                                                                                            
+Fourteen  |14    |14         |14.0                  |Fourteen                                                                                            
+Fifteen   |15    |15         |15.0                  |Fifteen                                                                                             
+Sixteen   |16    |16         |16.0                  |Sixteen                                                                                             
+Seventeen |17    |17         |17.0                  |Seventeen                                                                                           
+Eighteen  |18    |18         |18.0                  |Eighteen                                                                                            
+Nineteen  |19    |19         |19.0                  |Nineteen                                                                                            
+Twenty    |20    |20         |20.0                  |Twenty                                                                                              
+ij> -- ---------------------------------------------------------------------;
+-- test unit 7. Joins on view;
+-- ---------------------------------------------------------------------;
+-- 701 - Select from LJ view and base table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+   FROM K55ADMIN.LJview2 T1, k55admin.manytypes_notnull T2
+   WHERE T1.intcol IS NOT NULL
+   ORDER BY 1, 2;
+SMINT&|SMINT&|INTCOL     |INTCOL     
+-------------------------------------
+11    |11    |11         |11         
+11    |12    |11         |12         
+11    |13    |11         |13         
+11    |14    |11         |14         
+11    |15    |11         |15         
+11    |16    |11         |16         
+11    |17    |11         |17         
+11    |18    |11         |18         
+11    |19    |11         |19         
+11    |20    |11         |20         
+11    |21    |11         |21         
+11    |22    |11         |22         
+11    |23    |11         |23         
+11    |24    |11         |24         
+11    |25    |11         |25         
+12    |11    |12         |11         
+12    |12    |12         |12         
+12    |13    |12         |13         
+12    |14    |12         |14         
+12    |15    |12         |15         
+12    |16    |12         |16         
+12    |17    |12         |17         
+12    |18    |12         |18         
+12    |19    |12         |19         
+12    |20    |12         |20         
+12    |21    |12         |21         
+12    |22    |12         |22         
+12    |23    |12         |23         
+12    |24    |12         |24         
+12    |25    |12         |25         
+13    |11    |13         |11         
+13    |12    |13         |12         
+13    |13    |13         |13         
+13    |14    |13         |14         
+13    |15    |13         |15         
+13    |16    |13         |16         
+13    |17    |13         |17         
+13    |18    |13         |18         
+13    |19    |13         |19         
+13    |20    |13         |20         
+13    |21    |13         |21         
+13    |22    |13         |22         
+13    |23    |13         |23         
+13    |24    |13         |24         
+13    |25    |13         |25         
+14    |11    |14         |11         
+14    |12    |14         |12         
+14    |13    |14         |13         
+14    |14    |14         |14         
+14    |15    |14         |15         
+14    |16    |14         |16         
+14    |17    |14         |17         
+14    |18    |14         |18         
+14    |19    |14         |19         
+14    |20    |14         |20         
+14    |21    |14         |21         
+14    |22    |14         |22         
+14    |23    |14         |23         
+14    |24    |14         |24         
+14    |25    |14         |25         
+15    |11    |15         |11         
+15    |12    |15         |12         
+15    |13    |15         |13         
+15    |14    |15         |14         
+15    |15    |15         |15         
+15    |16    |15         |16         
+15    |17    |15         |17         
+15    |18    |15         |18         
+15    |19    |15         |19         
+15    |20    |15         |20         
+15    |21    |15         |21         
+15    |22    |15         |22         
+15    |23    |15         |23         
+15    |24    |15         |24         
+15    |25    |15         |25         
+16    |11    |16         |11         
+16    |12    |16         |12         
+16    |13    |16         |13         
+16    |14    |16         |14         
+16    |15    |16         |15         
+16    |16    |16         |16         
+16    |17    |16         |17         
+16    |18    |16         |18         
+16    |19    |16         |19         
+16    |20    |16         |20         
+16    |21    |16         |21         
+16    |22    |16         |22         
+16    |23    |16         |23         
+16    |24    |16         |24         
+16    |25    |16         |25         
+17    |11    |17         |11         
+17    |12    |17         |12         
+17    |13    |17         |13         
+17    |14    |17         |14         
+17    |15    |17         |15         
+17    |16    |17         |16         
+17    |17    |17         |17         
+17    |18    |17         |18         
+17    |19    |17         |19         
+17    |20    |17         |20         
+17    |21    |17         |21         
+17    |22    |17         |22         
+17    |23    |17         |23         
+17    |24    |17         |24         
+17    |25    |17         |25         
+18    |11    |18         |11         
+18    |12    |18         |12         
+18    |13    |18         |13         
+18    |14    |18         |14         
+18    |15    |18         |15         
+18    |16    |18         |16         
+18    |17    |18         |17         
+18    |18    |18         |18         
+18    |19    |18         |19         
+18    |20    |18         |20         
+18    |21    |18         |21         
+18    |22    |18         |22         
+18    |23    |18         |23         
+18    |24    |18         |24         
+18    |25    |18         |25         
+19    |11    |19         |11         
+19    |12    |19         |12         
+19    |13    |19         |13         
+19    |14    |19         |14         
+19    |15    |19         |15         
+19    |16    |19         |16         
+19    |17    |19         |17         
+19    |18    |19         |18         
+19    |19    |19         |19         
+19    |20    |19         |20         
+19    |21    |19         |21         
+19    |22    |19         |22         
+19    |23    |19         |23         
+19    |24    |19         |24         
+19    |25    |19         |25         
+20    |11    |20         |11         
+20    |12    |20         |12         
+20    |13    |20         |13         
+20    |14    |20         |14         
+20    |15    |20         |15         
+20    |16    |20         |16         
+20    |17    |20         |17         
+20    |18    |20         |18         
+20    |19    |20         |19         
+20    |20    |20         |20         
+20    |21    |20         |21         
+20    |22    |20         |22         
+20    |23    |20         |23         
+20    |24    |20         |24         
+20    |25    |20         |25         
+ij> -- 702 - LEFT JOIN a table with a LJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3,4;
+CHARCOL   |CHARCOL   |SMINT&|INTCOL     
+----------------------------------------
+Five      |Five      |5     |NULL       
+Six       |Six       |6     |NULL       
+Seven     |Seven     |7     |NULL       
+Eight     |Eight     |8     |NULL       
+Nine      |Nine      |9     |NULL       
+Ten       |Ten       |10    |NULL       
+Eleven    |Eleven    |11    |11         
+Twelve    |Twelve    |12    |12         
+Thirteen  |Thirteen  |13    |13         
+Fourteen  |Fourteen  |14    |14         
+Fifteen   |Fifteen   |15    |15         
+ij> -- 703 - RIGHT JOIN K55ADMIN.a table with a LJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 RIGHT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+CHARCOL        |CHARCOL   |SMINT&|INTCOL     
+---------------------------------------------
+NULL           |Five      |5     |NULL       
+Six            |Six       |6     |NULL       
+NULL           |Seven     |7     |NULL       
+Eight          |Eight     |8     |NULL       
+NULL           |Nine      |9     |NULL       
+Ten            |Ten       |10    |NULL       
+NULL           |Eleven    |11    |11         
+Twelve         |Twelve    |12    |12         
+NULL           |Thirteen  |13    |13         
+Fourteen       |Fourteen  |14    |14         
+NULL           |Fifteen   |15    |15         
+ij> -- 704 - Apply Aggregate function on RJ view;
+SELECT intcol, COUNT(*)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          
+-----------------------
+11         |1          
+12         |1          
+13         |1          
+14         |1          
+15         |1          
+16         |1          
+17         |1          
+18         |1          
+19         |1          
+20         |1          
+NULL       |10         
+ij> -- 705 - Apply Aggregate function on LJ view;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.LJview2
+  GROUP BY intcol;
+INTCOL     |2          |3          
+-----------------------------------
+11         |1          |1          
+12         |1          |1          
+13         |1          |1          
+14         |1          |1          
+15         |1          |1          
+16         |1          |1          
+17         |1          |1          
+18         |1          |1          
+19         |1          |1          
+20         |1          |1          
+NULL       |10         |0          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> -- 706 - RIGHT JOIN a LJ view with a table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+  FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+    ON T1.smintcol = T2.smintcol
+  WHERE T1.intcol IS NOT NULL
+  ORDER BY 1, 3;
+SMINT&|SMINT&|INTCOL     |INTCOL     
+-------------------------------------
+11    |11    |11         |11         
+12    |12    |12         |12         
+13    |13    |13         |13         
+14    |14    |14         |14         
+15    |15    |15         |15         
+16    |16    |16         |16         
+17    |17    |17         |17         
+18    |18    |18         |18         
+19    |19    |19         |19         
+20    |20    |20         |20         
+ij> -- 707 - RIGHT join a RJ view with a table;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.RJview1 T2 RIGHT JOIN K55ADMIN.manytypes T1
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3, 4;
+CHARCOL   |CHARCOL   |SMINT&|INTCOL     
+----------------------------------------
+Five      |Five      |5     |NULL       
+Six       |Six       |6     |NULL       
+Seven     |Seven     |7     |NULL       
+Eight     |Eight     |8     |NULL       
+Nine      |Nine      |9     |NULL       
+Ten       |Ten       |10    |NULL       
+Eleven    |Eleven    |11    |11         
+Twelve    |Twelve    |12    |12         
+Thirteen  |Thirteen  |13    |13         
+Fourteen  |Fourteen  |14    |14         
+Fifteen   |Fifteen   |15    |15         
+ij> -- 708 - LEFT join a table with a RJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 LEFT JOIN K55ADMIN.RJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+CHARCOL        |CHARCOL   |SMINT&|INTCOL     
+---------------------------------------------
+Six            |Six       |6     |NULL       
+Eight          |Eight     |8     |NULL       
+Ten            |Ten       |10    |NULL       
+Twelve         |Twelve    |12    |12         
+Fourteen       |Fourteen  |14    |14         
+Twenty Four    |NULL      |NULL  |NULL       
+Twenty Two     |NULL      |NULL  |NULL       
+ij> -- 709 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          |4          |5          |6          
+-----------------------------------------------------------------------
+11         |1          |11         |11         |11         |11         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+12         |1          |12         |12         |12         |12         
+13         |1          |13         |13         |13         |13         
+14         |1          |14         |14         |14         |14         
+15         |1          |15         |15         |15         |15         
+16         |1          |16         |16         |16         |16         
+17         |1          |17         |17         |17         |17         
+18         |1          |18         |18         |18         |18         
+19         |1          |19         |19         |19         |19         
+20         |1          |20         |20         |20         |20         
+NULL       |10         |NULL       |NULL       |NULL       |NULL       
+ij> -- 710 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          
+-----------------------------------
+12         |1          |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+14         |1          |1          
+16         |1          |1          
+18         |1          |1          
+20         |1          |1          
+NULL       |5          |0          
+ij> -- 711 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+ij> -- 712 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) = 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 713 - LEFT join a RJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 714 - RIGHT join an IJ view with a RJ view  - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+ij> -- 715 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 716 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+SMINT&|CHARCOL   |3              |SMINT&|CHARCOL   |6              
+-------------------------------------------------------------------
+12    |Twelve    |Twelve         |12    |Twelve    |Twelve         
+14    |Fourteen  |Fourteen       |14    |Fourteen  |Fourteen       
+16    |Sixteen   |Sixteen        |16    |Sixteen   |Sixteen        
+18    |Eighteen  |Eighteen       |18    |Eighteen  |Eighteen       
+20    |Twenty    |Twenty         |20    |Twenty    |Twenty         
+ij> -- 722 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          |4          |5          |6          
+-----------------------------------------------------------------------
+11         |1          |11         |11         |11         |11         
+WARNING 01003: Null values were eliminated from the argument of a column function.
+12         |1          |12         |12         |12         |12         
+13         |1          |13         |13         |13         |13         
+14         |1          |14         |14         |14         |14         
+15         |1          |15         |15         |15         |15         
+16         |1          |16         |16         |16         |16         
+17         |1          |17         |17         |17         |17         
+18         |1          |18         |18         |18         |18         
+19         |1          |19         |19         |19         |19         
+20         |1          |20         |20         |20         |20         
+NULL       |10         |NULL       |NULL       |NULL       |NULL       
+ij> -- 724 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+INTCOL     |2          |3          
+-----------------------------------
+12         |1          |1          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+14         |1          |1          
+16         |1          |1          
+18         |1          |1          
+20         |1          |1          
+NULL       |5          |0          
+ij> -- 804 - LEFT JOIN a table with a LJ view;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+6          |Six            
+8          |Eight          
+10         |Ten            
+12         |Twelve         
+14         |Fourteen       
+ij> -- 805 - RIGHT JOIN a LJ view with a table;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+12         |Twelve         
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+ij> -- 806 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+22         |Twenty Two     
+24         |Twenty Four    
+ij> -- 807 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+22         |Twenty Two     
+24         |Twenty Four    
+ij> -- 808 - RIGHT join an IJ view with a RJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+ij> -- 809 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+2          |Two            
+4          |Four           
+6          |Six            
+8          |Eight          
+10         |Ten            
+ij> -- 810 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+22         |Twenty Two     
+24         |Twenty Four    
+ij> -- 815 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 LEFT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) IN (4, 6, 8) )
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+12         |Twelve         
+14         |Fourteen       
+18         |Eighteen       
+20         |Twenty         
+ij> -- 817 - LEFT join 2 views - with 1-level correlated subquery;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  WHERE smintcol = (
+    SELECT T2.smintcol + 2
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol
+      WHERE T2.floatcol = T1.floatcol - 2 )
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+20         |Twenty         
+22         |Twenty Two     
+ij> -- ---------------------------------------------------------------------;
+-- test unit 9. Joins tables used in HAVING clause;
+-- ---------------------------------------------------------------------;
+-- 904 - LEFT JOIN a table with a LJ view;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+6          |Six            
+8          |Eight          
+10         |Ten            
+12         |Twelve         
+14         |Fourteen       
+ij> -- 905 - RIGHT JOIN a LJ view with a table;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+12    |Twelve         
+14    |Fourteen       
+16    |Sixteen        
+18    |Eighteen       
+20    |Twenty         
+ij> -- 906 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+16    |Sixteen        
+18    |Eighteen       
+20    |Twenty         
+22    |Twenty Two     
+24    |Twenty Four    
+ij> -- 907 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+14    |Fourteen       
+16    |Sixteen        
+18    |Eighteen       
+20    |Twenty         
+22    |Twenty Two     
+24    |Twenty Four    
+ij> -- 908 - RIGHT join an IJ view with a RJ view -join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+INTCOL     |CHARCOL        
+---------------------------
+14         |Fourteen       
+16         |Sixteen        
+18         |Eighteen       
+ij> -- 909 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+2     |Two            
+4     |Four           
+6     |Six            
+8     |Eight          
+10    |Ten            
+ij> -- 910 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+22    |Twenty Two     
+24    |Twenty Four    
+ij> -- 915 - LEFT join 2 views - with 1-level correlated subquery;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol - 1
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol
+      WHERE T2.floatcol = T1.smintcol + 1 )
+  ORDER BY 1;
+SMINT&|CHARCOL        
+----------------------
+10    |Ten            
+12    |Twelve         
+14    |Fourteen       
+16    |Sixteen        
+18    |Eighteen       
+ij> -- 919 - LEFT join 2 views - with 2-level correlated subquery;
+SELECT smintcol, dec62col, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, dec62col, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol 
+      FROM K55ADMIN.IJview1 T2 INNER JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol
+      WHERE T3.charcol = T1.charcol AND
+            T2.floatcol = (
+              SELECT T4.smintcol
+                FROM K55ADMIN.LJview2 T4 LEFT JOIN K55ADMIN.RJview1 T5
+                       ON T4.dec62col = T5.floatcol
+                WHERE T5.floatcol = T1.dec62col ) )
+  ORDER BY 1;
+SMINT&|DEC62COL |CHARCOL        
+--------------------------------
+12    |12.00    |Twelve         
+14    |14.00    |Fourteen       
+16    |16.00    |Sixteen        
+18    |18.00    |Eighteen       
+20    |20.00    |Twenty         
+ij> -- ---------------------------------------------------------------------;
+-- test unit 10. Joins tables used in INSERT, UPDATE or DELETE subquery;
+-- ---------------------------------------------------------------------;
+-- 1001 - Create table needed for the test;
+CREATE TABLE k55admin.iud_tbl (c1 int,
+                      c2 char(15),
+                      c3 char(15));
+0 rows inserted/updated/deleted
+ij> -- 1011 - LEFT join a RJ view with a LJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6;
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+14         |Fourteen       |Fourteen       
+16         |Sixteen        |Sixteen        
+18         |Eighteen       |Eighteen       
+ij> -- 1012 - UPDATE rows inserted in previous statement;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+14         |NULL           |Fourteen       
+16         |NULL           |Sixteen        
+18         |Eighteen       |Eighteen       
+ij> -- 1013 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+ij> -- 1014 - RIGHT join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.charcol) > 6;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+12         |Twelve         |Twelve         
+14         |Fourteen       |Fourteen       
+16         |Sixteen        |Sixteen        
+18         |Eighteen       |Eighteen       
+20         |Twenty         |Twenty         
+ij> -- 1015 - UPDATE rows inserted in previous statement;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+12         |NULL           |Twelve         
+14         |NULL           |Fourteen       
+16         |NULL           |Sixteen        
+18         |Eighteen       |Eighteen       
+20         |Twenty         |Twenty         
+ij> -- 1016 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+12         |NULL           |Twelve         
+20         |Twenty         |Twenty         
+ij> -- 1017 - Clean up table iud_tbl;
+DELETE FROM K55ADMIN.iud_tbl;
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c3;
+C1         |C2             |C3             
+-------------------------------------------
+ij> -- 1019 - INNER join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+C1         |C2             |C3             
+-------------------------------------------
+12         |Twelve         |Twelve         
+14         |Fourteen       |Fourteen       
+16         |Sixteen        |Sixteen        
+18         |Eighteen       |Eighteen       
+20         |Twenty         |Twenty         
+ij> -- 1021 - UPDATE rows inserted in previous statement;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6);
+4 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+C1         |C2             |C3             
+-------------------------------------------
+12         |Twelve         |Twelve         
+14         |NULL           |Fourteen       
+16         |NULL           |Sixteen        
+18         |NULL           |Eighteen       
+20         |NULL           |Twenty         
+ij> -- 1023 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6);
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+C1         |C2             |C3             
+-------------------------------------------
+ij> -- ---------------------------------------------------------------------;
+-- test unit 11. Joins tables used in INSERT, UPDATE or DELETE subquery. tables have ;
+-- ---------------------------------------------------------------------;
+-- 1102 - Create tables and populate data needed for the test;
+CREATE TABLE k55admin.iud_tbl_P (c1 float,
+                        c2 char(15),
+                        c3 char(15)) ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE k55admin.MANYTYPES_P
+      (INTCOL        INTEGER,
+       SMINTCOL      SMALLINT,
+       DEC62COL      DECIMAL(6,2),
+       DEC72COL      DECIMAL(7,2),
+       FLOATCOL      FLOAT,
+       CHARCOL       CHAR(10),
+       LCHARCOL      CHAR(250),
+       VCHARCOL      VARCHAR(100)) ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE k55admin.MTYPES_NOTNULL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE k55admin.MTYPES_CTRL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+0 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.manytypes_P SELECT * from k55admin.manytypes;
+20 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.mtypes_notnull_P SELECT * from k55admin.manytypes_notnull;
+15 rows inserted/updated/deleted
+ij> INSERT INTO K55ADMIN.mtypes_ctrl_P SELECT * from k55admin.manytypes_ctrl;
+12 rows inserted/updated/deleted
+ij> -- 1104- LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+INSERT INTO K55ADMIN.iud_tbl_P
+  SELECT t1.floatcol, t1.charcol, t6.vcharcol
+    FROM K55ADMIN.mtypes_ctrl_P T6
+       LEFT JOIN
+        ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+              ON T1.intcol = T2.dec62col)
+         RIGHT JOIN
+           (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+                ON T4.smintcol = T3.dec62col)
+         ON T1.intcol = T4.smintcol
+         LEFT JOIN
+          k55admin.mtypes_ctrl_P T5
+        ON T5.intcol = T1.smintcol)
+      ON T6.intcol = T1.smintcol
+    WHERE t1.intcol IS NOT NULL;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1106 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol
+      WHERE t1.floatcol IS NOT NULL);
+4 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |NULL           |Eighteen       
+20.0                  |NULL           |Twenty         
+ij> -- 1108 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol
+      WHERE t1.floatcol IS NOT NULL);
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1116 - Clean up table iud_tbl_P;
+DELETE FROM K55ADMIN.iud_tbl_P;
+0 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c3;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1118 - LEFT join a RJ view with a LJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6;
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+ij> -- 1120 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+ij> -- 1122 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1124 - RIGHT join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6 OR T2.charcol LIKE 'T%';
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1126 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |NULL           |Twelve         
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1128 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE substr(T2.vcharcol, 1, 1) = 'T');
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+14.0                  |NULL           |Fourteen       
+16.0                  |NULL           |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+ij> -- 1130 - Clean up table iud_tbl_P;
+DELETE FROM K55ADMIN.iud_tbl_P;
+3 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- 1132 - INNER join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6;
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |Twelve         |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |Twenty         |Twenty         
+ij> -- 1134 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE T1.vcharcol LIKE 'T_e%');
+2 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+12.0                  |NULL           |Twelve         
+14.0                  |Fourteen       |Fourteen       
+16.0                  |Sixteen        |Sixteen        
+18.0                  |Eighteen       |Eighteen       
+20.0                  |NULL           |Twenty         
+ij> -- 1136 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE T1.vcharcol NOT LIKE 'Tw%' OR substr(T2.vcharcol, 1, 1) = 'T');
+5 rows inserted/updated/deleted
+ij> SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+C1                    |C2             |C3             
+------------------------------------------------------
+ij> -- some bugs found during development
+SELECT t1.floatcol
+  FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN
+      ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+            ON T1.floatcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.floatcol = T4.smintcol
+       LEFT JOIN
+        k55admin.mtypes_ctrl_P T5
+      ON T5.floatcol = T1.smintcol)
+    ON T6.floatcol = T1.smintcol
+WHERE t1.floatcol IS NOT NULL;
+FLOATCOL              
+----------------------
+12.0                  
+14.0                  
+16.0                  
+18.0                  
+20.0                  
+ij> SELECT *
+FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2 ON T1.floatcol = T2.dec62col)
+                 RIGHT JOIN k55admin.mtypes_notnull_P T4 ON T1.floatcol = T4.smintcol)
+     ON T6.floatcol = T1.smintcol;
+INTCOL     |SMINT&|DEC62COL |DEC72COL  |FLOATCOL              |CHARCOL        |LCHARCOL                                                                                                                                                                                                                                                  |VCHARCOL                                                                                            |INTCOL     |SMINT&|DEC62COL |DEC72COL  |FLOATCOL              |CHARCOL   |LCHARCOL                                                                                                                                                                                                                                                  |VCHARCOL                                                                                            |INTCOL     |SMINT&|DEC62COL |DEC72COL  |FLOATCOL              |CHARCOL        |LCHARCOL                                                                                
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2          |2     |2.00     |2.00      |2.0                   |Two            |Two                                                                                                                                                                                                                                                       |Two                                                                                                 |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+4          |4     |4.00     |4.00      |4.0                   |Four           |Four                                                                                                                                                                                                                                                      |Four                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+6          |6     |6.00     |6.00      |6.0                   |Six            |Six                                                                                                                                                                                                                                                       |Six                                                                                                 |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+8          |8     |8.00     |8.00      |8.0                   |Eight          |Eight                                                                                                                                                                                                                                                     |Eight                                                                                               |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+10         |10    |10.00    |10.00     |10.0                  |Ten            |Ten                                                                                                                                                                                                                                                       |Ten                                                                                                 |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+12         |12    |12.00    |12.00     |12.0                  |Twelve         |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              |12         |12    |12.00    |12.00     |12.0                  |Twelve    |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              |12         |12    |12.00    |12.00     |12.0                  |Twelve         |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              |12         |12    |12.00    |12.00     |12.0                  |Twelve         |Twelve                                                                                                                                                                                                                                                    |Twelve                                                                                              
+14         |14    |14.00    |14.00     |14.0                  |Fourteen       |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            |14         |14    |14.00    |14.00     |14.0                  |Fourteen  |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            |14         |14    |14.00    |14.00     |14.0                  |Fourteen       |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            |14         |14    |14.00    |14.00     |14.0                  |Fourteen       |Fourteen                                                                                                                                                                                                                                                  |Fourteen                                                                                            
+16         |16    |16.00    |16.00     |16.0                  |Sixteen        |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             |16         |16    |16.00    |16.00     |16.0                  |Sixteen   |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             |16         |16    |16.00    |16.00     |16.0                  |Sixteen        |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             |16         |16    |16.00    |16.00     |16.0                  |Sixteen        |Sixteen                                                                                                                                                                                                                                                   |Sixteen                                                                                             
+18         |18    |18.00    |18.00     |18.0                  |Eighteen       |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            |18         |18    |18.00    |18.00     |18.0                  |Eighteen  |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            |18         |18    |18.00    |18.00     |18.0                  |Eighteen       |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            |18         |18    |18.00    |18.00     |18.0                  |Eighteen       |Eighteen                                                                                                                                                                                                                                                  |Eighteen                                                                                            
+20         |20    |20.00    |20.00     |20.0                  |Twenty         |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              |20         |20    |20.00    |20.00     |20.0                  |Twenty    |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              |20         |20    |20.00    |20.00     |20.0                  |Twenty         |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              |20         |20    |20.00    |20.00     |20.0                  |Twenty         |Twenty                                                                                                                                                                                                                                                    |Twenty                                                                                              
+22         |22    |22.00    |22.00     |22.0                  |Twenty Two     |Twenty Two                                                                                                                                                                                                                                                |Twenty Two                                                                                          |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+24         |24    |24.00    |24.00     |24.0                  |Twenty Four    |Twenty Four                                                                                                                                                                                                                                               |Twenty Four                                                                                         |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL      |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                |NULL       |NULL  |NULL     |NULL      |NULL                  |NULL           |NULL                                                                                                                                                                                                                                                      |NULL                                                                                                
+ij> DROP VIEW K55ADMIN.LJview1;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.LJview2;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.RJview1;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55admin.RJview2;
+0 rows inserted/updated/deleted
+ij> DROP VIEW K55ADMIN.IJview1;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.iud_tbl;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.iud_tbl_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MANYTYPES;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MANYTYPES_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MANYTYPES_CTRL;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MANYTYPES_NOTNULL;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MTYPES_NOTNULL_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.MTYPES_CTRL_P;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.NEW_OFFICES;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.OLD_OFFICES;
+0 rows inserted/updated/deleted
+ij> DROP TABLE k55admin.EMPLOYEES;
+0 rows inserted/updated/deleted
+ij> -- OJqrw.pre
+create table a (a1 int not null primary key, a2 int, a3 int, a4 int, a5 int, a6 int);
+0 rows inserted/updated/deleted
+ij> create table b (b1 int not null primary key, b2 int, b3 int, b4 int, b5 int, b6 int);
+0 rows inserted/updated/deleted
+ij> create table c (c1 int not null, c2 int, c3 int not null, c4 int, c5 int, c6 int);
+0 rows inserted/updated/deleted
+ij> create table d (d1 int not null, d2 int, d3 int not null, d4 int, d5 int, d6 int);
+0 rows inserted/updated/deleted
+ij> create table e (e1 int not null primary key, e2 int, e3 int, e4 int, e5 int, e6 int);
+0 rows inserted/updated/deleted
+ij> create table f (f1 int not null, f2 int, f3 int, f4 int, f5 int, f6 int);
+0 rows inserted/updated/deleted
+ij> create table g (g1 int not null, g2 int, g3 int not null, g4 int, g5 int, g6 int);
+0 rows inserted/updated/deleted
+ij> create table h (h1 int not null, h2 int, h3 int not null, h4 int, h5 int, h6 int);
+0 rows inserted/updated/deleted
+ij> alter table c add primary key (c1,c3);
+0 rows inserted/updated/deleted
+ij> alter table d add primary key (d1,d3);
+0 rows inserted/updated/deleted
+ij> alter table h add primary key (h3,h1);
+0 rows inserted/updated/deleted
+ij> create index f_id1 on f(f1);
+0 rows inserted/updated/deleted
+ij> create index f_id2 on f(f2);
+0 rows inserted/updated/deleted
+ij> create unique index f_uid1 on f(f4);
+0 rows inserted/updated/deleted
+ij> create unique index f_uid2 on f(f5);
+0 rows inserted/updated/deleted
+ij> create unique index g_uid1 on g(g2,g4);
+0 rows inserted/updated/deleted
+ij> create unique index g_uid2 on g(g3,g1);
+0 rows inserted/updated/deleted
+ij> insert into a values (1,1,3,6,NULL,2),(2,3,2,4,2,2),(3,4,2,NULL,NULL,NULL),
+                     (4,NULL,4,2,5,2),(5,2,3,5,7,4),(7,1,4,2,3,4),
+                     (8,8,8,8,8,8),(6,7,3,2,3,4);
+8 rows inserted/updated/deleted
+ij> insert into b values (6,7,2,3,NULL,1),(4,5,9,6,3,2),(1,4,2,NULL,NULL,NULL),
+                     (5,NULL,2,2,5,2),(3,2,3,3,1,4),(7,3,3,3,3,3),(9,3,3,3,3,3);
+7 rows inserted/updated/deleted
+ij> insert into c values (3,7,7,3,NULL,1),(8,3,9,1,3,2),(1,4,1,NULL,NULL,NULL),
+                     (3,NULL,1,2,4,2),(2,2,5,3,2,4),(1,7,2,3,1,1),(3,8,4,2,4,6);
+7 rows inserted/updated/deleted
+ij> insert into d values (1,7,2,3,NULL,3),(2,3,9,1,1,2),(2,2,2,NULL,3,2),
+                     (1,NULL,3,2,2,1),(2,2,5,3,2,3),(2,5,6,3,7,2);
+6 rows inserted/updated/deleted
+ij> insert into e values (1,1,3,6,NULL,2),(2,3,2,4,2,2),(3,4,2,NULL,NULL,NULL),
+                     (4,NULL,4,2,5,2),(5,2,3,5,7,4),(7,1,4,2,3,4),
+                     (8,8,8,8,8,8),(6,7,3,2,3,4);
+8 rows inserted/updated/deleted
+ij> insert into f values (6,7,2,3,NULL,1),(4,5,9,6,3,2),(1,4,2,NULL,9,NULL),
+                     (5,NULL,2,2,5,2),(3,2,3,7,1,4),(7,3,3,0,0,3);
+6 rows inserted/updated/deleted
+ij> insert into g values (3,7,7,3,NULL,1),(8,3,9,1,3,2),(1,4,1,NULL,NULL,NULL),
+                     (3,NULL,1,2,4,2),(2,2,5,3,2,4),(1,7,2,0,1,1),(3,8,4,2,4,6);
+7 rows inserted/updated/deleted
+ij> insert into h values (1,7,2,3,NULL,3),(2,3,9,1,1,2),(2,2,2,NULL,3,2),
+                     (1,NULL,3,2,2,1),(2,2,5,3,2,3);
+5 rows inserted/updated/deleted
+ij> -- OJqrw001.clp
+-- *****************************************************************;
+-- Group 1: LOJ linearization                                       ;
+-- *****************************************************************;
+-- -----------------------------------------------------------------;
+-- Case 1.1 : Right Deep tree to Left Deep tree                     ;
+--            Double Linearization                                  ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree  to  Left Deep Tree        
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ a3=b3              LJ  D  c1=d1
+--     / | \                 / | \
+--    B  LJ b2=c2          LJ  C  b2=c2
+--     / | \             / | \
+--    C  D  c1=d1       A  B  a3=b3
+--
+select a1,b1,c1,c3,d1,d3 
+  from A left join (B left join (C left join D on c1=d1) on b2=c2) on a3=b3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |1          |1          |1          |1          |2          
+3          |1          |1          |1          |1          |2          
+2          |6          |1          |2          |1          |2          
+3          |6          |1          |2          |1          |2          
+1          |3          |2          |5          |2          |2          
+5          |3          |2          |5          |2          |2          
+6          |3          |2          |5          |2          |2          
+2          |1          |1          |1          |1          |3          
+3          |1          |1          |1          |1          |3          
+2          |6          |1          |2          |1          |3          
+3          |6          |1          |2          |1          |3          
+1          |3          |2          |5          |2          |5          
+5          |3          |2          |5          |2          |5          
+6          |3          |2          |5          |2          |5          
+1          |3          |2          |5          |2          |6          
+5          |3          |2          |5          |2          |6          
+6          |3          |2          |5          |2          |6          
+1          |3          |2          |5          |2          |9          
+5          |3          |2          |5          |2          |9          
+6          |3          |2          |5          |2          |9          
+2          |6          |3          |7          |NULL       |NULL       
+3          |6          |3          |7          |NULL       |NULL       
+1          |7          |8          |9          |NULL       |NULL       
+5          |7          |8          |9          |NULL       |NULL       
+6          |7          |8          |9          |NULL       |NULL       
+1          |9          |8          |9          |NULL       |NULL       
+5          |9          |8          |9          |NULL       |NULL       
+6          |9          |8          |9          |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       
+3          |5          |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.2 : Right Deep tree - No linearization for table A        ;
+--            because of b3=d3                                      ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ b3=d3       to      A  IJ b3=d3  (LJ to IJ by OJ2SEL)
+--     / | \                     / | \
+--    B  LJ b2=c2               D  IJ c1=d1  (LJ to IJ by OJ2SEL)
+--     / | \                     / | \
+--    C  D  c1=d1               B  C  b2=c2
+--
+-- we had a bug here...
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b2=c2) on b3=d3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+2          |1          |1          |1          |1          |2          
+3          |1          |1          |1          |1          |2          
+4          |1          |1          |1          |1          |2          
+5          |1          |1          |1          |1          |2          
+6          |1          |1          |1          |1          |2          
+7          |1          |1          |1          |1          |2          
+8          |1          |1          |1          |1          |2          
+1          |6          |1          |2          |1          |2          
+2          |6          |1          |2          |1          |2          
+3          |6          |1          |2          |1          |2          
+4          |6          |1          |2          |1          |2          
+5          |6          |1          |2          |1          |2          
+6          |6          |1          |2          |1          |2          
+7          |6          |1          |2          |1          |2          
+8          |6          |1          |2          |1          |2          
+ij> -- new query: linearization for table A
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b2=c2) on b3=a3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |1          |1          |1          |1          |2          
+3          |1          |1          |1          |1          |2          
+2          |6          |1          |2          |1          |2          
+3          |6          |1          |2          |1          |2          
+1          |3          |2          |5          |2          |2          
+5          |3          |2          |5          |2          |2          
+6          |3          |2          |5          |2          |2          
+2          |1          |1          |1          |1          |3          
+3          |1          |1          |1          |1          |3          
+2          |6          |1          |2          |1          |3          
+3          |6          |1          |2          |1          |3          
+1          |3          |2          |5          |2          |5          
+5          |3          |2          |5          |2          |5          
+6          |3          |2          |5          |2          |5          
+1          |3          |2          |5          |2          |6          
+5          |3          |2          |5          |2          |6          
+6          |3          |2          |5          |2          |6          
+1          |3          |2          |5          |2          |9          
+5          |3          |2          |5          |2          |9          
+6          |3          |2          |5          |2          |9          
+2          |6          |3          |7          |NULL       |NULL       
+3          |6          |3          |7          |NULL       |NULL       
+1          |7          |8          |9          |NULL       |NULL       
+5          |7          |8          |9          |NULL       |NULL       
+6          |7          |8          |9          |NULL       |NULL       
+1          |9          |8          |9          |NULL       |NULL       
+5          |9          |8          |9          |NULL       |NULL       
+6          |9          |8          |9          |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       
+3          |5          |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.3 : Right Deep tree - Partial linearization because of    ;
+--            b2=d2                                                 ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ b3=a3       to      /  |  b2=d2
+--     / | \                 LJ    LJ 
+--    B  LJ b2=d2          / | \ / | \
+--     / | \              A  B | C D  c1=d1
+--    C  D  c1=d1            b3=a3 
+--
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b2=d2) on b3=a3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |6          |1          |1          |1          |2          
+3          |6          |1          |1          |1          |2          
+2          |6          |1          |2          |1          |2          
+3          |6          |1          |2          |1          |2          
+1          |3          |2          |5          |2          |2          
+5          |3          |2          |5          |2          |2          
+6          |3          |2          |5          |2          |2          
+1          |3          |2          |5          |2          |5          
+5          |3          |2          |5          |2          |5          
+6          |3          |2          |5          |2          |5          
+1          |7          |2          |5          |2          |9          
+5          |7          |2          |5          |2          |9          
+6          |7          |2          |5          |2          |9          
+1          |9          |2          |5          |2          |9          
+5          |9          |2          |5          |2          |9          
+6          |9          |2          |5          |2          |9          
+2          |1          |NULL       |NULL       |NULL       |NULL       
+3          |1          |NULL       |NULL       |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       
+3          |5          |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.4 : Right Deep tree - Partial linearization because of    ;
+--            no join predicate between A and B                     ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ 1=0         to      A  LJ 1=0
+--     / | \                     / | \
+--    B  LJ b2=c2              LJ  D  c1=d1
+--     / | \                 / | \   
+--    C  D  c1=d1           B  C  b2=c2
+--
+select a1,b1,c1,c3,d1,d3 
+  from A left join (B left join (C left join D on c1=d1) on b2=c2) on 1=0
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.5 : Right Deep tree - Partial linearization because of    ;
+--            self-join only                                        ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ a1=a3       to      A  LJ a1=a3
+--     / | \                     / | \
+--    B  LJ b2=c2              LJ  D  c1=d1
+--     / | \                 / | \   
+--    C  D  c1=d1           B  C  b2=c2
+--
+select a1,b1,c1,c3,d1,d3 
+  from A left join (B left join (C left join D on c1=d1) on b2=c2) on a1=a3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |1          |1          |1          |1          |2          
+4          |1          |1          |1          |1          |2          
+8          |1          |1          |1          |1          |2          
+2          |6          |1          |2          |1          |2          
+4          |6          |1          |2          |1          |2          
+8          |6          |1          |2          |1          |2          
+2          |3          |2          |5          |2          |2          
+4          |3          |2          |5          |2          |2          
+8          |3          |2          |5          |2          |2          
+2          |1          |1          |1          |1          |3          
+4          |1          |1          |1          |1          |3          
+8          |1          |1          |1          |1          |3          
+2          |6          |1          |2          |1          |3          
+4          |6          |1          |2          |1          |3          
+8          |6          |1          |2          |1          |3          
+2          |3          |2          |5          |2          |5          
+4          |3          |2          |5          |2          |5          
+8          |3          |2          |5          |2          |5          
+2          |3          |2          |5          |2          |6          
+4          |3          |2          |5          |2          |6          
+8          |3          |2          |5          |2          |6          
+2          |3          |2          |5          |2          |9          
+4          |3          |2          |5          |2          |9          
+8          |3          |2          |5          |2          |9          
+2          |6          |3          |7          |NULL       |NULL       
+4          |6          |3          |7          |NULL       |NULL       
+8          |6          |3          |7          |NULL       |NULL       
+2          |7          |8          |9          |NULL       |NULL       
+4          |7          |8          |9          |NULL       |NULL       
+8          |7          |8          |9          |NULL       |NULL       
+2          |9          |8          |9          |NULL       |NULL       
+4          |9          |8          |9          |NULL       |NULL       
+8          |9          |8          |9          |NULL       |NULL       
+2          |4          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+8          |4          |NULL       |NULL       |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       
+4          |5          |NULL       |NULL       |NULL       |NULL       
+8          |5          |NULL       |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.6 : Single linearization                                  ;
+--            Balance Tree to Left Deep tree in one step            ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       to      Left Deep Tree
+--
+--         LJ                       LJ
+--       /  | \                    / | \
+--      /   |  a2=c2 ^ b3=c3     LJ  D  c1=d1
+--   LJ     LJ                 / | \ 
+-- / | \  / | \              LJ  C  a2=c2 ^ b3=c3    
+-- A B |  C D c1=d1        / | \   
+--   a1=b1                A  B  a1=b1
+--
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on a2=c2 and b3=c3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+6          |6          |1          |2          |1          |2          
+6          |6          |1          |2          |1          |3          
+1          |1          |NULL       |NULL       |NULL       |NULL       
+3          |3          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.7 : No Linearization because the ON clause only has a join;
+--            between two tuple-producing tables                    ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       
+--
+--         LJ           
+--       /  | \         
+--      /   |  a2=b2    No transformation because of a2=b2
+--   LJ     LJ          
+-- / | \  / | \         
+-- A B |  C D c1=d1     
+--   a1=b1              
+--
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on a2=b2
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+6          |6          |1          |1          |1          |2          
+6          |6          |1          |2          |1          |2          
+6          |6          |2          |5          |2          |2          
+6          |6          |1          |1          |1          |3          
+6          |6          |1          |2          |1          |3          
+6          |6          |2          |5          |2          |5          
+6          |6          |2          |5          |2          |6          
+6          |6          |2          |5          |2          |9          
+6          |6          |3          |1          |NULL       |NULL       
+6          |6          |3          |4          |NULL       |NULL       
+6          |6          |3          |7          |NULL       |NULL       
+6          |6          |8          |9          |NULL       |NULL       
+1          |1          |NULL       |NULL       |NULL       |NULL       
+3          |3          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.8 : No linearization because of missing join predicate    ;
+--            between A and C or B and C                            ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       
+--
+--         LJ           
+--       /  | \         
+--      /   |  1=0      No transformation because of no join between
+--   LJ     LJ          A and C or join between between B and C
+-- / | \  / | \         
+-- A B |  C D c1=d1     
+--   a1=b1              
+--
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on 1=0
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |NULL       |NULL       |NULL       |NULL       
+3          |3          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+6          |6          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.9 : No linearization because of d1=2                      ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       No linearization because of d1=2
+--
+--         LJ                        LJ
+--       /  | \                    /  | \
+--      /   |  c2=b2 ^ d1=2       /   |  c2=b2 ^ d1=2
+--   LJ     LJ                 LJ     IJ     LJ to IJ because of OJ2SEL
+-- / | \  / | \              / | \  / | \
+-- A B |  C D c1=d1          A B |  D C c1=d1
+--   a1=b1                     a1=b1
+--
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on c2=b2 and d1=2
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+3          |3          |2          |5          |2          |2          
+3          |3          |2          |5          |2          |5          
+3          |3          |2          |5          |2          |6          
+3          |3          |2          |5          |2          |9          
+1          |1          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+6          |6          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.10: No linearization because of d1=d4                     ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       No linearization because of d1=d4
+--
+--         LJ                        LJ
+--       /  | \                    /  | \
+--      /   |  c2=b2 ^ d1=d4      /   |  c2=b2 ^ d1=d4
+--   LJ     LJ                 LJ     IJ     LJ to IJ because of OJ2SEL
+-- / | \  / | \              / | \  / | \
+-- A B |  C D c1=d1          A B |  C D c1=d1
+--   a1=b1                     a1=b1
+--
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on c2=b2 and d1=d4
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |NULL       |NULL       |NULL       |NULL       
+3          |3          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+6          |6          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.11: Same as case 1.10 except no d1=d4                     ;
+--            Linearization performed even with LJ                  ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       to      Left Deep Tree
+--
+--         LJ                       LJ
+--       /  | \                    / | \
+--      /   |  c2=b2             LJ  D  c1=d1
+--   LJ     LJ                 / | \ 
+-- / | \  / | \              LJ  C  c2=b2            
+-- A B |  C D c1=d1        / | \   
+--   a1=b1                A  B  a1=b1
+--
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on c2=b2
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+6          |6          |1          |2          |1          |2          
+3          |3          |2          |5          |2          |2          
+1          |1          |1          |1          |1          |3          
+6          |6          |1          |2          |1          |3          
+3          |3          |2          |5          |2          |5          
+3          |3          |2          |5          |2          |6          
+3          |3          |2          |5          |2          |9          
+6          |6          |3          |7          |NULL       |NULL       
+7          |7          |8          |9          |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.12: No linearization because of a3=d3                     ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       No linearization because of a3=d3
+--
+--         LJ                        LJ
+--       /  | \                    /  | \
+--      /   |  c2=b2 ^ a3=d3      /   |  c2=b2 ^ a3=d3
+--   LJ     LJ                 LJ     IJ     LJ to IJ because of OJ2SEL
+-- / | \  / | \              / | \  / | \
+-- A B |  C D c1=d1          A B |  D C c1=d1
+--   a1=b1                     a1=b1
+--
+select a1,b1,c1,c3,d1,d3 
+  from (A left join B on a1=b1) left join (C left join D on c1=d1) on c2=b2 and a3=d3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+3          |3          |2          |5          |2          |2          
+1          |1          |1          |1          |1          |3          
+6          |6          |1          |2          |1          |3          
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.13: Linearization with always true predicate              ;
+-- -----------------------------------------------------------------;
+--   Balance Tree      to       Left Deep Tree
+--
+--         LJ                       LJ
+--       /  | \                   / | \
+--      /   |  c2=b2 ^ 1=1      LJ  D  c1=d1
+--   LJ     LJ                / | \                                    
+-- / | \  / | \             LJ  C c2=b2 ^ 1=1
+-- A B |  C D c1=d1       / | \                  
+--   a1=b1                A B a1=b1
+--
+select a1,b1,c1,c3,d1,d3 
+  from A left join B on a1=b1 left join (C left join d on c1=d1) on b2=c2 and 1=1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+6          |6          |1          |2          |1          |2          
+3          |3          |2          |5          |2          |2          
+1          |1          |1          |1          |1          |3          
+6          |6          |1          |2          |1          |3          
+3          |3          |2          |5          |2          |5          
+3          |3          |2          |5          |2          |6          
+3          |3          |2          |5          |2          |9          
+6          |6          |3          |7          |NULL       |NULL       
+7          |7          |8          |9          |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.14: No linearization with true predicate alone            ;
+-- -----------------------------------------------------------------;
+--   Balance Tree      
+--
+--         LJ          
+--       /  | \        
+--      /   |  1=1     
+--   LJ     LJ         
+-- / | \  / | \        
+-- A B |  C D c1=d1    
+--   a1=b1             
+--
+select a1,b1,c1,c3,d1,d3 
+  from A left join B on a1=b1 left join (C left join d on c1=d1) on 1=1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+3          |3          |1          |1          |1          |2          
+4          |4          |1          |1          |1          |2          
+5          |5          |1          |1          |1          |2          
+6          |6          |1          |1          |1          |2          
+7          |7          |1          |1          |1          |2          
+2          |NULL       |1          |1          |1          |2          
+8          |NULL       |1          |1          |1          |2          
+1          |1          |1          |2          |1          |2          
+3          |3          |1          |2          |1          |2          
+4          |4          |1          |2          |1          |2          
+5          |5          |1          |2          |1          |2          
+6          |6          |1          |2          |1          |2          
+7          |7          |1          |2          |1          |2          
+2          |NULL       |1          |2          |1          |2          
+8          |NULL       |1          |2          |1          |2          
+1          |1          |2          |5          |2          |2          
+3          |3          |2          |5          |2          |2          
+4          |4          |2          |5          |2          |2          
+5          |5          |2          |5          |2          |2          
+6          |6          |2          |5          |2          |2          
+7          |7          |2          |5          |2          |2          
+2          |NULL       |2          |5          |2          |2          
+8          |NULL       |2          |5          |2          |2          
+1          |1          |1          |1          |1          |3          
+3          |3          |1          |1          |1          |3          
+4          |4          |1          |1          |1          |3          
+5          |5          |1          |1          |1          |3          
+6          |6          |1          |1          |1          |3          
+7          |7          |1          |1          |1          |3          
+2          |NULL       |1          |1          |1          |3          
+8          |NULL       |1          |1          |1          |3          
+1          |1          |1          |2          |1          |3          
+3          |3          |1          |2          |1          |3          
+4          |4          |1          |2          |1          |3          
+5          |5          |1          |2          |1          |3          
+6          |6          |1          |2          |1          |3          
+7          |7          |1          |2          |1          |3          
+2          |NULL       |1          |2          |1          |3          
+8          |NULL       |1          |2          |1          |3          
+1          |1          |2          |5          |2          |5          
+3          |3          |2          |5          |2          |5          
+4          |4          |2          |5          |2          |5          
+5          |5          |2          |5          |2          |5          
+6          |6          |2          |5          |2          |5          
+7          |7          |2          |5          |2          |5          
+2          |NULL       |2          |5          |2          |5          
+8          |NULL       |2          |5          |2          |5          
+1          |1          |2          |5          |2          |6          
+3          |3          |2          |5          |2          |6          
+4          |4          |2          |5          |2          |6          
+5          |5          |2          |5          |2          |6          
+6          |6          |2          |5          |2          |6          
+7          |7          |2          |5          |2          |6          
+2          |NULL       |2          |5          |2          |6          
+8          |NULL       |2          |5          |2          |6          
+1          |1          |2          |5          |2          |9          
+3          |3          |2          |5          |2          |9          
+4          |4          |2          |5          |2          |9          
+5          |5          |2          |5          |2          |9          
+6          |6          |2          |5          |2          |9          
+7          |7          |2          |5          |2          |9          
+2          |NULL       |2          |5          |2          |9          
+8          |NULL       |2          |5          |2          |9          
+1          |1          |3          |1          |NULL       |NULL       
+3          |3          |3          |1          |NULL       |NULL       
+4          |4          |3          |1          |NULL       |NULL       
+5          |5          |3          |1          |NULL       |NULL       
+6          |6          |3          |1          |NULL       |NULL       
+7          |7          |3          |1          |NULL       |NULL       
+2          |NULL       |3          |1          |NULL       |NULL       
+8          |NULL       |3          |1          |NULL       |NULL       
+1          |1          |3          |4          |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       
+4          |4          |3          |4          |NULL       |NULL       
+5          |5          |3          |4          |NULL       |NULL       
+6          |6          |3          |4          |NULL       |NULL       
+7          |7          |3          |4          |NULL       |NULL       
+2          |NULL       |3          |4          |NULL       |NULL       
+8          |NULL       |3          |4          |NULL       |NULL       
+1          |1          |3          |7          |NULL       |NULL       
+3          |3          |3          |7          |NULL       |NULL       
+4          |4          |3          |7          |NULL       |NULL       
+5          |5          |3          |7          |NULL       |NULL       
+6          |6          |3          |7          |NULL       |NULL       
+7          |7          |3          |7          |NULL       |NULL       
+2          |NULL       |3          |7          |NULL       |NULL       
+8          |NULL       |3          |7          |NULL       |NULL       
+1          |1          |8          |9          |NULL       |NULL       
+3          |3          |8          |9          |NULL       |NULL       
+4          |4          |8          |9          |NULL       |NULL       
+5          |5          |8          |9          |NULL       |NULL       
+6          |6          |8          |9          |NULL       |NULL       
+7          |7          |8          |9          |NULL       |NULL       
+2          |NULL       |8          |9          |NULL       |NULL       
+8          |NULL       |8          |9          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.15: No linearization with non-colequiv class              ;
+-- -----------------------------------------------------------------;
+--   Balance Tree      
+--
+--         LJ          
+--       /  | \        
+--      /   |  b1>c1     
+--   LJ     LJ         
+-- / | \  / | \        
+-- A B |  C D c1=d1    
+--   a1=b1             
+--
+select a1,b1,c1,c3,d1,d3 
+  from A left join B on a1=b1 left join (C left join d on c1=d1) on b1>c1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+3          |3          |1          |1          |1          |2          
+4          |4          |1          |1          |1          |2          
+5          |5          |1          |1          |1          |2          
+6          |6          |1          |1          |1          |2          
+7          |7          |1          |1          |1          |2          
+3          |3          |1          |2          |1          |2          
+4          |4          |1          |2          |1          |2          
+5          |5          |1          |2          |1          |2          
+6          |6          |1          |2          |1          |2          
+7          |7          |1          |2          |1          |2          
+3          |3          |2          |5          |2          |2          
+4          |4          |2          |5          |2          |2          
+5          |5          |2          |5          |2          |2          
+6          |6          |2          |5          |2          |2          
+7          |7          |2          |5          |2          |2          
+3          |3          |1          |1          |1          |3          
+4          |4          |1          |1          |1          |3          
+5          |5          |1          |1          |1          |3          
+6          |6          |1          |1          |1          |3          
+7          |7          |1          |1          |1          |3          
+3          |3          |1          |2          |1          |3          
+4          |4          |1          |2          |1          |3          
+5          |5          |1          |2          |1          |3          
+6          |6          |1          |2          |1          |3          
+7          |7          |1          |2          |1          |3          
+3          |3          |2          |5          |2          |5          
+4          |4          |2          |5          |2          |5          
+5          |5          |2          |5          |2          |5          
+6          |6          |2          |5          |2          |5          
+7          |7          |2          |5          |2          |5          
+3          |3          |2          |5          |2          |6          
+4          |4          |2          |5          |2          |6          
+5          |5          |2          |5          |2          |6          
+6          |6          |2          |5          |2          |6          
+7          |7          |2          |5          |2          |6          
+3          |3          |2          |5          |2          |9          
+4          |4          |2          |5          |2          |9          
+5          |5          |2          |5          |2          |9          
+6          |6          |2          |5          |2          |9          
+7          |7          |2          |5          |2          |9          
+4          |4          |3          |1          |NULL       |NULL       
+5          |5          |3          |1          |NULL       |NULL       
+6          |6          |3          |1          |NULL       |NULL       
+7          |7          |3          |1          |NULL       |NULL       
+4          |4          |3          |4          |NULL       |NULL       
+5          |5          |3          |4          |NULL       |NULL       
+6          |6          |3          |4          |NULL       |NULL       
+7          |7          |3          |4          |NULL       |NULL       
+4          |4          |3          |7          |NULL       |NULL       
+5          |5          |3          |7          |NULL       |NULL       
+6          |6          |3          |7          |NULL       |NULL       
+7          |7          |3          |7          |NULL       |NULL       
+1          |1          |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.16: Partial Left Deep tree becomes Left Left Deep tree    ;
+-- -----------------------------------------------------------------;
+--  Partial Left Deep Tree  to   Left Left Deep Tree
+--
+--       LJ                           LJ
+--     / | \                        /  | \
+--   A   LJ a3=b3                 LJ   D  c2=d2 & b3>0
+--     / | \                    / | \         
+--   LJ  D  c2=d2 & b3>0      LJ  C c1=b1
+-- / | \                    / | \                
+-- B C c1=b1               A  B a3=b3
+--
+select a1,b1,c1,c3,d1,d3 
+  from a left join ((B left join C on c1=b1) left join d on c2=d2 and b3>0) on a3=b3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          
+3          |1          |1          |2          |1          |2          
+1          |3          |3          |7          |1          |2          
+5          |3          |3          |7          |1          |2          
+6          |3          |3          |7          |1          |2          
+2          |1          |1          |1          |NULL       |NULL       
+3          |1          |1          |1          |NULL       |NULL       
+1          |3          |3          |1          |NULL       |NULL       
+5          |3          |3          |1          |NULL       |NULL       
+6          |3          |3          |1          |NULL       |NULL       
+1          |3          |3          |4          |NULL       |NULL       
+5          |3          |3          |4          |NULL       |NULL       
+6          |3          |3          |4          |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       
+3          |5          |NULL       |NULL       |NULL       |NULL       
+2          |6          |NULL       |NULL       |NULL       |NULL       
+3          |6          |NULL       |NULL       |NULL       |NULL       
+1          |7          |NULL       |NULL       |NULL       |NULL       
+5          |7          |NULL       |NULL       |NULL       |NULL       
+6          |7          |NULL       |NULL       |NULL       |NULL       
+1          |9          |NULL       |NULL       |NULL       |NULL       
+5          |9          |NULL       |NULL       |NULL       |NULL       
+6          |9          |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.17: Complicated case                                      ;
+--            Cannot lefty linearize because of a3=c3               ;
+-- -----------------------------------------------------------------;
+--  Zig-Zag tree           to   Partial left Deep Tree
+--
+--         LJ                           LJ
+--       / | \                        /  | \
+--     A   LJ a3=c3                 LJ   E  d2=e2
+--       / | \                    / | \         
+--     LJ  E  d2=e2             LJ  D  c1=d1
+--   / | \                    / | \                    
+--  B  LJ b2=c2              A  IJ a3=c3    
+--   / | \                    / | \
+--  C  D  c1=d1              C  B  b2=c2
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join (C left join D on c1=d1) on b2=c2) left join E on d2=e2) on a3=c3
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+2          |6          |1          |2          |1          |2          |6          
+3          |6          |1          |2          |1          |2          |6          
+2          |6          |1          |2          |1          |3          |NULL       
+3          |6          |1          |2          |1          |3          |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.18: Double linearization.                                 ;
+--            Same as case 1.15 but lefty linearize                 ;
+-- -----------------------------------------------------------------;
+--  Zig-Zag tree             to   left Deep Tree
+--
+--         LJ                           LJ
+--       / | \                        /  | \
+--     A   LJ a3=b3                 LJ   E  d2=e2
+--       / | \                    / | \         
+--     LJ  E  d2=e2             LJ  D  c1=d1
+--   / | \                    / | \                    
+--  B  LJ b2=c2             LJ  C  b2=c2    
+--   / | \                / | \    
+--  C  D  c1=d1          A  B  a3=b3    
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from a left join ((b left join (c left join d on c1=d1) on b2=c2) left join e on d2=e2) on a3=b3
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |3          |2          |5          |2          |9          |2          
+5          |3          |2          |5          |2          |9          |2          
+6          |3          |2          |5          |2          |9          |2          
+1          |3          |2          |5          |2          |2          |5          
+5          |3          |2          |5          |2          |2          |5          
+6          |3          |2          |5          |2          |2          |5          
+1          |3          |2          |5          |2          |5          |5          
+5          |3          |2          |5          |2          |5          |5          
+6          |3          |2          |5          |2          |5          |5          
+2          |1          |1          |1          |1          |2          |6          
+3          |1          |1          |1          |1          |2          |6          
+2          |6          |1          |2          |1          |2          |6          
+3          |6          |1          |2          |1          |2          |6          
+2          |1          |1          |1          |1          |3          |NULL       
+3          |1          |1          |1          |1          |3          |NULL       
+2          |6          |1          |2          |1          |3          |NULL       
+3          |6          |1          |2          |1          |3          |NULL       
+1          |3          |2          |5          |2          |6          |NULL       
+5          |3          |2          |5          |2          |6          |NULL       
+6          |3          |2          |5          |2          |6          |NULL       
+2          |6          |3          |7          |NULL       |NULL       |NULL       
+3          |6          |3          |7          |NULL       |NULL       |NULL       
+1          |7          |8          |9          |NULL       |NULL       |NULL       
+5          |7          |8          |9          |NULL       |NULL       |NULL       
+6          |7          |8          |9          |NULL       |NULL       |NULL       
+1          |9          |8          |9          |NULL       |NULL       |NULL       
+5          |9          |8          |9          |NULL       |NULL       |NULL       
+6          |9          |8          |9          |NULL       |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |5          |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.19: Linearization in two branches of LJ                   ;
+-- -----------------------------------------------------------------;
+--
+--                 LJ                             LJ -- d3=e3
+--               /  | \                        /    \
+--              /   LJ d3=e3                  /      LJ
+--             /  / | \        to            /      / | \
+--          LJ   E  LJ e2=f2              LJ       LJ G  f1=g1
+--        / | \   / | \                 / | \     / | \      
+--       /  |  \ F  G  f1=g1         LJ   D c1=d1 E F e2=f2     
+--    LJ    LJ b2=c2               / | \                 
+--  / | \ / | \                 LJ   C b2=c2               
+-- A  B | C D c1=d1           / | \                  
+--    a1=b1                  A  B a1=b1
+--
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from ((A left join B on a1=b1) left join (C left join D on c1=d1) on b2=c2)
+       left join
+       (e left join (f left join g on f1=g1) on e2=f2) on d3=e3
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          |3          |NULL       |1          |1          
+6          |6          |1          |2          |1          |2          |3          |NULL       |1          |1          
+3          |3          |2          |5          |2          |2          |3          |NULL       |1          |1          
+1          |1          |1          |1          |1          |3          |5          |7          |3          |1          
+6          |6          |1          |2          |1          |3          |5          |7          |3          |1          
+1          |1          |1          |1          |1          |2          |3          |NULL       |1          |2          
+6          |6          |1          |2          |1          |2          |3          |NULL       |1          |2          
+3          |3          |2          |5          |2          |2          |3          |NULL       |1          |2          
+1          |1          |1          |1          |1          |3          |5          |7          |3          |4          
+6          |6          |1          |2          |1          |3          |5          |7          |3          |4          
+1          |1          |1          |1          |1          |3          |5          |7          |3          |7          
+6          |6          |1          |2          |1          |3          |5          |7          |3          |7          
+1          |1          |1          |1          |1          |2          |2          |0          |NULL       |NULL       
+6          |6          |1          |2          |1          |2          |2          |0          |NULL       |NULL       
+3          |3          |2          |5          |2          |2          |2          |0          |NULL       |NULL       
+1          |1          |1          |1          |1          |3          |6          |3          |NULL       |NULL       
+6          |6          |1          |2          |1          |3          |6          |3          |NULL       |NULL       
+1          |1          |1          |1          |1          |3          |1          |NULL       |NULL       |NULL       
+6          |6          |1          |2          |1          |3          |1          |NULL       |NULL       |NULL       
+3          |3          |2          |5          |2          |5          |NULL       |NULL       |NULL       |NULL       
+3          |3          |2          |5          |2          |6          |NULL       |NULL       |NULL       |NULL       
+3          |3          |2          |5          |2          |9          |NULL       |NULL       |NULL       |NULL       
+6          |6          |3          |7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |7          |8          |9          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.20: Linearization in two branches of inner join           ;
+-- -----------------------------------------------------------------;
+--
+--                 IJ                             IJ -- a1=d2
+--               /  | \                        /    \
+--              /   LJ a1=d2                  /      LJ
+--             /  / | \        to            /      / | \
+--          LJ   A  LJ a2=b2              LJ       LJ C  b1=c1
+--        / | \   / | \                 / | \     / | \      
+--       /  |  \ B  C  b1=c1         LJ   G f1=g1 A B a2=b2     
+--    LJ    LJ e2=f2               / | \                 
+--  / | \ / | \                 LJ   F e2=f2               
+-- D  E | F G f1=g1           / | \                  
+--    d1=e1                  D  E d1=e1
+--
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from (A left join (b left join c on b1=c1) on a2=b2) 
+       inner join 
+       ((D left join E on d1=e1) left join (F left join G on f1=g1) on e2=f2)
+       on a1=d2
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+2          |7          |NULL       |NULL       |2          |2          |2          |0          |NULL       |NULL       
+2          |9          |NULL       |NULL       |2          |2          |2          |0          |NULL       |NULL       
+2          |7          |NULL       |NULL       |2          |5          |2          |0          |NULL       |NULL       
+2          |9          |NULL       |NULL       |2          |5          |2          |0          |NULL       |NULL       
+5          |3          |3          |1          |2          |6          |2          |0          |NULL       |NULL       
+5          |3          |3          |4          |2          |6          |2          |0          |NULL       |NULL       
+5          |3          |3          |7          |2          |6          |2          |0          |NULL       |NULL       
+3          |1          |1          |1          |2          |9          |2          |0          |NULL       |NULL       
+3          |1          |1          |2          |2          |9          |2          |0          |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |1          |2          |1          |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.21: Linearization in two branches of inner join           ;
+--            Inner join ON predicate a1=e1 has no effect on        ;
+--            linearization                                         ;
+-- -----------------------------------------------------------------;
+--
+--                 IJ                             IJ -- a1=e3
+--               /  | \                        /    \
+--              /   LJ a1=e3                  /      LJ
+--             /  / | \        to            /      / | \
+--          LJ   A  LJ a2=b2              LJ       LJ C  b1=c1
+--        / | \   / | \                 / | \     / | \      
+--       /  |  \ B  C  b1=c1         LJ   G f1=g1 A B a2=b2     
+--    LJ    LJ e2=f2               / | \                 
+--  / | \ / | \                 LJ   F e2=f2               
+-- D  E | F G f1=g1           / | \                  
+--    d1=e1                  D  E d1=e1
+--
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from (A left join (b left join c on b1=c1) on a2=b2) 
+       inner join 
+       ((D left join E on d1=e1) left join (F left join G on f1=g1) on e2=f2)
+       on a1=e3
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+2          |7          |NULL       |NULL       |2          |2          |2          |0          |NULL       |NULL       
+2          |9          |NULL       |NULL       |2          |2          |2          |0          |NULL       |NULL       
+2          |7          |NULL       |NULL       |2          |5          |2          |0          |NULL       |NULL       
+2          |9          |NULL       |NULL       |2          |5          |2          |0          |NULL       |NULL       
+2          |7          |NULL       |NULL       |2          |6          |2          |0          |NULL       |NULL       
+2          |9          |NULL       |NULL       |2          |6          |2          |0          |NULL       |NULL       
+2          |7          |NULL       |NULL       |2          |9          |2          |0          |NULL       |NULL       
+2          |9          |NULL       |NULL       |2          |9          |2          |0          |NULL       |NULL       
+3          |1          |1          |1          |1          |2          |1          |NULL       |NULL       |NULL       
+3          |1          |1          |2          |1          |2          |1          |NULL       |NULL       |NULL       
+3          |1          |1          |1          |1          |3          |1          |NULL       |NULL       |NULL       
+3          |1          |1          |2          |1          |3          |1          |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.22: Inner composite is a long left deep tree              ;
+--            Lefty linearized                                      ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join (b left join c on b1=c1 left join D on c2=d2 
+       left join E on d1=e1 left join F on f2=e2 left join G on f1=g1)
+       on a1=b2
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+4          |1          |1          |2          |1          |2          |1          |NULL       |NULL       |NULL       
+2          |3          |3          |7          |1          |2          |1          |NULL       |NULL       |NULL       
+4          |1          |1          |1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |3          |3          |1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |3          |3          |4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |9          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.23: Inner composite is a long left deep tree              ;
+--            Partially linearized because of a1=c3                 ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join (b left join c on b1=c1 left join D on c2=d2 
+       left join E on d1=e1 left join F on f2=e2 left join G on f1=g1)
+       on a1=c3
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          |1          |NULL       |NULL       |NULL       
+7          |3          |3          |7          |1          |2          |1          |NULL       |NULL       |NULL       
+1          |1          |1          |1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+1          |3          |3          |1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |3          |3          |4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.24: Inner composite is a long left deep tree              ;
+--            Partially linearized because of a1=d3                 ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join (b left join c on b1=c1 left join D on c2=d2 
+       left join E on d1=e1 left join F on f2=e2 left join G on f1=g1)
+       on a1=d3
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          |1          |NULL       |NULL       |NULL       
+2          |3          |3          |7          |1          |2          |1          |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.25: Left join in inner composite                          ;
+--            A case for future extension because the LJ is         ;
+--            converted to LJ later                                 ;
+-- -----------------------------------------------------------------;
+--
+-- Maximum linearization:
+--
+--                 LJ                           LJ
+--               / | \                        / | \
+--              A  LJ a1=b3                 LJ  D c2=d2
+--               / | \        to          / | \        
+--             LJ  D c2=d2              LJ  C b1=c1          
+--           / | \                    / | \                
+--          B  C b1=c1               A  B a1=b3                
+--                                                       
+--  A <-- (B <-> C <-- D)         A <-- B <-- C <-- D    
+--  =====================  ==>    ===================
+--  Y      Y     Y     Y          Y     Y     Y     Y
+--  Y      Y     Y     N          Y     Y     Y     N
+--         N     Y     Y          Y     Y     N     N
+--         N     Y     N          Y     N     N     N
+--  Y      Y     N     N
+--  Y      N     N     N
+--                
+-- Current optimization:
+--                               
+--         LJ                  LJ                         LJ
+--       / | \               / | \                       / | \
+--      A  LJ a1=b3        LJ  D c2=d2                 LJ  D c2=d2
+--       / | \      to   / | \         later LJ      / | \       
+--     LJ  D c2=d2      A  LJ a1=b3    becomes LJ   A  LJ a1=b3
+--   / | \               / | \                       / | \
+--  B  C b1=c1          B  C b1=c1                  B  C b1=c1                
+--                                                     
+select a1,b1,c1,c3,d1,d3
+  from A left join (b left join c on b1=c1 left join D on c2=d2) on a1=b3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          
+3          |3          |3          |7          |1          |2          
+2          |1          |1          |1          |NULL       |NULL       
+3          |3          |3          |1          |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       
+2          |6          |NULL       |NULL       |NULL       |NULL       
+3          |7          |NULL       |NULL       |NULL       |NULL       
+3          |9          |NULL       |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.26: Inner join in inner composite                         ;
+--            Partially linearizaed because of the inner            ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3
+  from A left join (B join C on b1=c1 left join D on c2=d2) on a1=b3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          
+3          |3          |3          |7          |1          |2          
+2          |1          |1          |1          |NULL       |NULL       
+3          |3          |3          |1          |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.27: Left join in inner composite null-producing side      ;
+--            A case for future extension because the LJ is         ;
+--            converted to LJ later                                 ;
+-- -----------------------------------------------------------------;
+--
+-- Maximum linearization:
+--
+--                 LJ                          LJ
+--               /  | \                      / | \
+--             A   LJ  a1=b3              LJ   E d1=e1
+--               /  | \       to        / | \             
+--              /   |  c2=d2          LJ  D c2=d2        
+--           LJ     LJ              / | \          
+--         / | \   / | \           LJ C b1=c1                
+--        B  C  | D  E d1=e1     / | \  
+--            b1=c1             A  B a1=b3
+--                                    
+--                                                       
+--  A <-- ((B <-- C) <-- (D <-> E))      A <-- B <-- C <-- D <-- E
+--  =============================  ==>  ==========================
+--  Y       Y     Y       Y     Y        Y     Y     Y     Y     Y
+--  Y       Y     Y       Y     N        Y     Y     Y     Y     N
+--  Y       Y     Y       N     N        Y     Y     Y     N     N
+--  Y       Y     N       N     N        Y     Y     N     N     N
+--  Y       N     N       N     N        Y     N     N     N     N  
+--                        N     Y
+--                
+-- Current optimization:
+--                               
+--                                       LJ                                 LJ
+--          LJ                          / | \                             / | \ 
+--        /  | \                      /   |  c2=d2                      /   |  c2=d2
+--      A   LJ a1=b3              LJ     LJ                         LJ     LJ
+--        /  | \       to       / | \  / | \      Later LJ        / | \  / | \     
+--       /  LJ c2=d2         LJ   C  | D E d1=e1  becomes LJ   LJ   C  | D E d1=e1  becomes LJ
+--    LJ   / | \           / | \    b1=c1                    / | \    b1=c1 
+--   / | \ D E d1=e1      A  B a1=b3                        A  B a1=b3                
+--  B  C  |                       
+--      b1=c1                     
+--                                    
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D left join E on d1=e1) on c2=d2) on a1=b3
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          |1          
+3          |3          |3          |7          |1          |2          |1          
+2          |1          |1          |1          |NULL       |NULL       |NULL       
+3          |3          |3          |1          |NULL       |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |6          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |7          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |9          |NULL       |NULL       |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.28: Inner join in inner composite null-producing side     ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on a1=b3
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+2          |1          |1          |2          |1          |2          |1          
+3          |3          |3          |7          |1          |2          |1          
+2          |1          |1          |1          |NULL       |NULL       |NULL       
+3          |3          |3          |1          |NULL       |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       |NULL       
+2          |5          |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |6          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |7          |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |9          |NULL       |NULL       |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.29: No linearization because local predicate only         ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on b2=2
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |3          |3          |7          |1          |2          |1          
+2          |3          |3          |7          |1          |2          |1          
+3          |3          |3          |7          |1          |2          |1          
+4          |3          |3          |7          |1          |2          |1          
+5          |3          |3          |7          |1          |2          |1          
+6          |3          |3          |7          |1          |2          |1          
+7          |3          |3          |7          |1          |2          |1          
+8          |3          |3          |7          |1          |2          |1          
+1          |3          |3          |1          |NULL       |NULL       |NULL       
+2          |3          |3          |1          |NULL       |NULL       |NULL       
+3          |3          |3          |1          |NULL       |NULL       |NULL       
+4          |3          |3          |1          |NULL       |NULL       |NULL       
+5          |3          |3          |1          |NULL       |NULL       |NULL       
+6          |3          |3          |1          |NULL       |NULL       |NULL       
+7          |3          |3          |1          |NULL       |NULL       |NULL       
+8          |3          |3          |1          |NULL       |NULL       |NULL       
+1          |3          |3          |4          |NULL       |NULL       |NULL       
+2          |3          |3          |4          |NULL       |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       |NULL       
+4          |3          |3          |4          |NULL       |NULL       |NULL       
+5          |3          |3          |4          |NULL       |NULL       |NULL       
+6          |3          |3          |4          |NULL       |NULL       |NULL       
+7          |3          |3          |4          |NULL       |NULL       |NULL       
+8          |3          |3          |4          |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.30: No linearization because local predicate only         ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on a1=1 and b2=2
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |3          |3          |7          |1          |2          |1          
+1          |3          |3          |1          |NULL       |NULL       |NULL       
+1          |3          |3          |4          |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.31: Linearization with local predicate                    ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on a1=b1 and b2=2
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+3          |3          |3          |7          |1          |2          |1          
+3          |3          |3          |1          |NULL       |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 1.32: No linearization because join is between the tables in;
+--            inner row-preserving side                             ;
+-- -----------------------------------------------------------------;
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on b2=c2
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |1          |1          |1          |NULL       |NULL       |NULL       
+2          |1          |1          |1          |NULL       |NULL       |NULL       
+3          |1          |1          |1          |NULL       |NULL       |NULL       
+4          |1          |1          |1          |NULL       |NULL       |NULL       
+5          |1          |1          |1          |NULL       |NULL       |NULL       
+6          |1          |1          |1          |NULL       |NULL       |NULL       
+7          |1          |1          |1          |NULL       |NULL       |NULL       
+8          |1          |1          |1          |NULL       |NULL       |NULL       
+ij> -- *****************************************************************;
+-- Group 2: Inner Join Reordering                                   ;
+-- *****************************************************************;
+-- -----------------------------------------------------------------;
+-- Case 2.1 : Simple case - Right branch has LJ                     ;
+--            Single unique key (a1)                                ;
+--            Reordered as ON predicate contains unique keypart     ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    A  LJ a1=b1              IJ  C  b2=c2
+--     / | \                 / | \
+--    B  C  b2=c2           B  A  a1=b1
+--
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=b1
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+6          |6          |1          |2          
+3          |3          |2          |5          
+6          |6          |3          |7          
+7          |7          |8          |9          
+4          |4          |NULL       |NULL       
+5          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.2 : Simple case - Right branch has LJ                     ;
+--            Single unique key (a1) with local predicate           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    A  LJ a1=2               IJ  C  b2=c2
+--     / | \                 / | \
+--    B  C  b2=c2           B  A  a1=2
+--
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=2
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+2          |1          |1          |1          
+2          |6          |1          |2          
+2          |3          |2          |5          
+2          |6          |3          |7          
+2          |7          |8          |9          
+2          |9          |8          |9          
+2          |4          |NULL       |NULL       
+2          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.3 : Simple case - right branch has LJ                     ;
+--            Single unique key (a1), ON clause has self-join only  ;
+--            No reordering because of self-join only               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree 
+--
+--       IJ          
+--     / | \         
+--    A  LJ a1=a3
+--     / | \         
+--    B  C  b2=c2    
+--
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=a3
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+2          |1          |1          |1          
+4          |1          |1          |1          
+8          |1          |1          |1          
+2          |6          |1          |2          
+4          |6          |1          |2          
+8          |6          |1          |2          
+2          |3          |2          |5          
+4          |3          |2          |5          
+8          |3          |2          |5          
+2          |6          |3          |7          
+4          |6          |3          |7          
+8          |6          |3          |7          
+2          |7          |8          |9          
+4          |7          |8          |9          
+8          |7          |8          |9          
+2          |9          |8          |9          
+4          |9          |8          |9          
+8          |9          |8          |9          
+2          |4          |NULL       |NULL       
+4          |4          |NULL       |NULL       
+8          |4          |NULL       |NULL       
+2          |5          |NULL       |NULL       
+4          |5          |NULL       |NULL       
+8          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.4 : Simple case - Right branch has LJ                     ;
+--            Single unique key (a1)                                ;
+--            No reordering because of a1=c1                        ;
+--            OJ2SEL will convert the B LJ C to B IJ C              ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree 
+--
+--       IJ          
+--     / | \         
+--    A  LJ a1=c1    
+--     / | \         
+--    B  C  b2=c2    
+--
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=c1
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+1          |6          |1          |2          
+2          |3          |2          |5          
+3          |6          |3          |7          
+8          |7          |8          |9          
+8          |9          |8          |9          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.5 : Simple case - Right branch has LJ                     ;
+--            Composite unique key (d1,d3), ON clause has local prd ;
+--            Reordered as ON predicate contains all unique keyparts;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    D  LJ d1=1 & d3=b3       IJ  C  b2=c2
+--     / | \                 / | \
+--    B  C  b2=c2           B  D  d1=1 & d3=b3
+--
+select b1,c1,c3,d1,d3 
+  from D join (B left join C on b2=c2) on d1=1 and d3=b3
+ order by 5,4,3,2,1;
+B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------
+1          |1          |1          |1          |2          
+6          |1          |2          |1          |2          
+6          |3          |7          |1          |2          
+5          |NULL       |NULL       |1          |2          
+3          |2          |5          |1          |3          
+7          |8          |9          |1          |3          
+9          |8          |9          |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.6 : Simple case - Right branch has LJ                     ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            No reordering because of ON clause does not have non- ;
+--            selLJoin predicates that contain all unique keyparts  ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                 
+--     / | \                
+--    D  LJ d1=b3 & d3=d2   
+--     / | \                
+--    B  C  b2=c2           
+--
+select b1,c1,c3,d1,d3 
+  from D join (B left join C on b2=c2) on d1=b3 and d3=d2
+ order by 5,4,3,2,1;
+B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------
+1          |1          |1          |2          |2          
+6          |1          |2          |2          |2          
+6          |3          |7          |2          |2          
+5          |NULL       |NULL       |2          |2          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.7 : Simple case - Right branch has LJ                     ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            Reordered because all unique keyparts are involved in ;
+--            non-selLJoin predicates                               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    D  LJ d1=b3 & d1=d6      IJ  C  b2=c2
+--     / | \      & d3=b3    / | \
+--    B  C  b2=c2           B  D  d1=b3 & d1=d6 & d3=b3
+--
+select b1,c1,c3,d1,d3 
+  from D join (B left join C on b2=c2) on d1=b3 and d1=d6 and d3=b3
+ order by 5,4,3,2,1;
+B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------
+1          |1          |1          |2          |2          
+6          |1          |2          |2          |2          
+6          |3          |7          |2          |2          
+5          |NULL       |NULL       |2          |2          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.8 : Simple case - Left branch has LJ                      ;
+--            Single unique key (a1)                                ;
+--            Reordered as ON predicate contains unique keypart     ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                     LJ
+--     / | \                  / | \
+--    LJ A a1=b1   to       IJ  C  b2=c2
+--  / | \                 / | \
+-- B  C  b2=c2           B  A  a1=b1
+--
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=b1
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+6          |6          |1          |2          
+3          |3          |2          |5          
+6          |6          |3          |7          
+7          |7          |8          |9          
+4          |4          |NULL       |NULL       
+5          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.9 : Simple case - Left branch has LJ                      ;
+--            Single unique key (a1) with local predicate           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                     LJ
+--     / | \                  / | \
+--    LJ A a1=2    to       IJ  C  b2=c2
+--  / | \                 / | \
+-- B  C  b2=c2           B  A  a1=2 
+--
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=2
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+2          |1          |1          |1          
+2          |6          |1          |2          
+2          |3          |2          |5          
+2          |6          |3          |7          
+2          |7          |8          |9          
+2          |9          |8          |9          
+2          |4          |NULL       |NULL       
+2          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.10: Simple case - Left branch has LJ                      ;
+--            Single unique key (a1), ON clause has self-join only  ;
+--            No reordering because of self-join only               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ        
+--     / | \       
+--    LJ A a1=a3    
+--  / | \          
+-- B  C  b2=c2     
+--
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=a3
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+2          |1          |1          |1          
+4          |1          |1          |1          
+8          |1          |1          |1          
+2          |6          |1          |2          
+4          |6          |1          |2          
+8          |6          |1          |2          
+2          |3          |2          |5          
+4          |3          |2          |5          
+8          |3          |2          |5          
+2          |6          |3          |7          
+4          |6          |3          |7          
+8          |6          |3          |7          
+2          |7          |8          |9          
+4          |7          |8          |9          
+8          |7          |8          |9          
+2          |9          |8          |9          
+4          |9          |8          |9          
+8          |9          |8          |9          
+2          |4          |NULL       |NULL       
+4          |4          |NULL       |NULL       
+8          |4          |NULL       |NULL       
+2          |5          |NULL       |NULL       
+4          |5          |NULL       |NULL       
+8          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.11: Simple case - Left branch has LJ                      ;
+--            Single unique key (a1)                                ;
+--            No reordering because of a1=c1                        ;
+--            OJ2SEL will convert the B LJ C to B IJ C              ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ        
+--     / | \       
+--    LJ A a1=c1    
+--  / | \          
+-- B  C  b2=c2     
+--
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=c1
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+1          |6          |1          |2          
+2          |3          |2          |5          
+3          |6          |3          |7          
+8          |7          |8          |9          
+8          |9          |8          |9          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.12: Simple case - Left branch has LJ                      ;
+--            Composite unique key (d1,d3), ON clause has local prd ;
+--            Reordered as ON predicate contains all unique keyparts;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    LJ D d1=1 & d3=b3  to    IJ  C  b2=c2
+--  / | \                    / | \
+-- B  C  b2=c2              B  D  d1=1 & d3=b3
+--
+select b1,c1,c3,d1,d3 
+  from B left join C on b2=c2 join D on d1=1 and d3=b3
+ order by 5,4,3,2,1;
+B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------
+1          |1          |1          |1          |2          
+6          |1          |2          |1          |2          
+6          |3          |7          |1          |2          
+5          |NULL       |NULL       |1          |2          
+3          |2          |5          |1          |3          
+7          |8          |9          |1          |3          
+9          |8          |9          |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.13: Simple case - Left branch has LJ                      ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            No reordering because of ON clause does not have non- ;
+--            selLJoin predicates that contain all unique keyparts  ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ               
+--     / | \              
+--    LJ D d1=b3 & d3=d2  
+--  / | \                 
+-- B  C  b2=c2            
+--
+select b1,c1,c3,d1,d3 
+  from B left join C on b2=c2 join D on d1=b3 and d3=d2
+ order by 5,4,3,2,1;
+B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------
+1          |1          |1          |2          |2          
+6          |1          |2          |2          |2          
+6          |3          |7          |2          |2          
+5          |NULL       |NULL       |2          |2          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.14: Simple case - Left branch has LJ                      ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            Reordered because all unique keyparts are involved in ;
+--            non-selLJoin predicates                               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                         LJ
+--     / | \                      / | \
+--    LJ D d1=b3 & d1=d6  to    IJ  C  b2=c2
+--  / | \        & d3=b3      / | \
+-- B  C  b2=c2               B  D  d1=b3 & d1=d6 & d3=b3
+--
+select b1,c1,c3,d1,d3 
+  from B left join C on b2=c2 join D on d1=b3 and d1=d6 and d3=b3
+ order by 5,4,3,2,1;
+B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------
+1          |1          |1          |2          |2          
+6          |1          |2          |2          |2          
+6          |3          |7          |2          |2          
+5          |NULL       |NULL       |2          |2          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.15: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of non-colequiv class           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1>b1     
+--     / | \          
+--    B  C  b2=c2     
+--
+select a1,b1,c1,c3 
+  from A join (B left join C on b2=c2) on a1>b1
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+2          |1          |1          |1          
+3          |1          |1          |1          
+4          |1          |1          |1          
+5          |1          |1          |1          
+6          |1          |1          |1          
+7          |1          |1          |1          
+8          |1          |1          |1          
+7          |6          |1          |2          
+8          |6          |1          |2          
+4          |3          |2          |5          
+5          |3          |2          |5          
+6          |3          |2          |5          
+7          |3          |2          |5          
+8          |3          |2          |5          
+7          |6          |3          |7          
+8          |6          |3          |7          
+8          |7          |8          |9          
+5          |4          |NULL       |NULL       
+6          |4          |NULL       |NULL       
+7          |4          |NULL       |NULL       
+8          |4          |NULL       |NULL       
+6          |5          |NULL       |NULL       
+7          |5          |NULL       |NULL       
+8          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.16: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of OR predicates                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1=b1 or a1=3
+--     / | \          
+--    B  C  b2=c2     
+--
+select a1,b1,c1,c3 
+  from A join (B left join C on b2=c2) on a1=b1 or a1=3
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+3          |1          |1          |1          
+3          |6          |1          |2          
+6          |6          |1          |2          
+3          |3          |2          |5          
+3          |6          |3          |7          
+6          |6          |3          |7          
+3          |7          |8          |9          
+7          |7          |8          |9          
+3          |9          |8          |9          
+3          |4          |NULL       |NULL       
+4          |4          |NULL       |NULL       
+3          |5          |NULL       |NULL       
+5          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.17: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of c1=c2                        ;
+--            Later, OJ2SEL convert B LJ C to B IJ C                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1=b1 and c1=c2
+--     / | \          
+--    B  C  b3=c2     
+--
+select a1,b1,c1,c3 
+  from A join (B left join C on b3=c2) on a1=b1 and c1=c2
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |2          |5          
+5          |5          |2          |5          
+6          |6          |2          |5          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.18: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of b3=c3                        ;
+--            Later, OJ2SEL convert B LJ C to B IJ C                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1=b1 and b3=c3
+--     / | \          
+--    B  C  b3=c3     
+--
+select a1,b1,c1,c3 
+  from A join (B left join C on b3=c3) on a1=b1 and b3=c3
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |2          
+5          |5          |1          |2          
+6          |6          |1          |2          
+4          |4          |8          |9          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.19: Double inner join reordering                          ;
+--            Simple case                                           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                          LJ
+--     / | \                       / | \
+--    D  IJ d1=1 & d3=b3  to      IJ  C  b2=c2
+--     / | \                    / | \
+--    A  LJ a1=b1             IJ  A  a1=b1
+--     / | \                / | \
+--    B  C  b2=c2          B  D  d1=1 & d3=b3
+--
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b2=c2) on a1=b1) on d1=1 and d3=b3
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+6          |6          |1          |2          |1          |2          
+6          |6          |3          |7          |1          |2          
+5          |5          |NULL       |NULL       |1          |2          
+3          |3          |2          |5          |1          |3          
+7          |7          |8          |9          |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.20: Double inner join reordering                          ;
+--            Upper IJ reference lower IJ column                    ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                          LJ
+--     / | \                       / | \
+--    D  IJ d1=a4 & d3=b3 to      IJ  C  b2=c2
+--     / | \                    / | \
+--    A  LJ a1=b1             IJ  A  a1=b1
+--     / | \                / | \
+--    B  C  b2=c2          B  D  d3=b3 & d1=a4
+--
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b2=c2) on a1=b1) on d3=b3 and d1=a4
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+6          |6          |1          |2          |2          |2          
+6          |6          |3          |7          |2          |2          
+4          |4          |NULL       |NULL       |2          |9          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.21: No reordering because the lower inner join            ;
+--            failed to reorder and upper inner join has d1=a1      ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ       
+--     / | \              
+--    D  IJ d1=a1 & d3=b2 
+--     / | \              
+--    A  LJ a3=b3         
+--     / | \              
+--    B  C  b1=c1         
+--
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b1=c1) on a3=b3) on d3=b2 and d1=a1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |3          |3          |1          |1          |2          
+1          |3          |3          |4          |1          |2          
+1          |3          |3          |7          |1          |2          
+1          |7          |NULL       |NULL       |1          |3          
+1          |9          |NULL       |NULL       |1          |3          
+ij> -- the following query (similar to above) should only return 5 rows, beetle 5055
+select a1,b1,c1,c3,d1,d3,a3,b3,b2 from D
+join (A join (B left join C on b1=c1) on a3=b3) on d3=b2 
+and d1=a1 order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |A3         |B3         |B2         
+-----------------------------------------------------------------------------------------------------------
+1          |3          |3          |1          |1          |2          |3          |3          |2          
+1          |3          |3          |4          |1          |2          |3          |3          |2          
+1          |3          |3          |7          |1          |2          |3          |3          |2          
+1          |7          |NULL       |NULL       |1          |3          |3          |3          |3          
+1          |9          |NULL       |NULL       |1          |3          |3          |3          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.22: Upper inner reordered but not the lower inner         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                                IJ
+--     / | \                             / | \
+--    D  IJ d1=1 & d3=b2   to           A  LJ a3=b3
+--     / | \                             / | \
+--    A  LJ a3=b3                      IJ  C  b1=c1
+--     / | \                         / | \
+--    B  C  b1=c1                   B  D  d1=1 & d3=b2
+--
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b1=c1) on a3=b3) on d3=b2 and d1=1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |3          |3          |1          |1          |2          
+5          |3          |3          |1          |1          |2          
+6          |3          |3          |1          |1          |2          
+1          |3          |3          |4          |1          |2          
+5          |3          |3          |4          |1          |2          
+6          |3          |3          |4          |1          |2          
+1          |3          |3          |7          |1          |2          
+5          |3          |3          |7          |1          |2          
+6          |3          |3          |7          |1          |2          
+1          |7          |NULL       |NULL       |1          |3          
+5          |7          |NULL       |NULL       |1          |3          
+6          |7          |NULL       |NULL       |1          |3          
+1          |9          |NULL       |NULL       |1          |3          
+5          |9          |NULL       |NULL       |1          |3          
+6          |9          |NULL       |NULL       |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.23: Left branch has LJ and IJ                             ;
+--            On predicates are d1=a1 & d3=a3                       ;
+--            Reordered D to join with A first                      ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--         IJ                             LJ
+--        / | \                        /  | \
+--      LJ  D d1=a1 & d3=a3 to      IJ    IJ a1=b1
+--     / | \                      / | \ / | \
+--    A  IJ a1=b1                A  D | B C  b2=c2 
+--     / | \                         d1=a1 
+--    B  C  b2=c2                  & d3=a3
+--
+select a1,b1,c1,c3,d1,d3 
+  from D join (A left join (B join C on b2=c2) on a1=b1) on d3=a3 and d1=a1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+2          |NULL       |NULL       |NULL       |2          |2          
+1          |1          |1          |1          |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.24: Left branch has LJ and IJ                             ;
+--            no inner join reordering because of d3=b3 where B     ;
+--            is not the leftmost table                             ;
+--            Later, OJ2SEL ccnverts A LJ comp to A IJ comp         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--         IJ               
+--        / | \             
+--      LJ  D d1=a2 & d3=b3 
+--     / | \                
+--    A  IJ a1=b1           
+--     / | \                
+--    B  C  b2=c2          
+--
+-- select a1,b1,c1,c3,d1,d3 
+--   from D join (A left join (B join C on b2=c2) on a1=b1) on d3=b3 and d1=a2
+--  order by 6,5,4,3,2,1;
+select a1,b1,c1,c3,d1,d3 
+  from D left join (A left join (B left join C on b2=c2) on a1=b1) on d3=b3 and d1=a2
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+5          |5          |NULL       |NULL       |2          |2          
+7          |7          |8          |9          |1          |3          
+NULL       |NULL       |NULL       |NULL       |2          |5          
+NULL       |NULL       |NULL       |NULL       |2          |6          
+NULL       |NULL       |NULL       |NULL       |2          |9          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.25: Left branch has LJ and IJ                             ;
+--            Single inner join reordering                          ;
+--            Upper IJ reordered as e1 and c3 belongs to lower IJ   ;
+--            Later, OJ2SEL converts C LJ E to C IJ E               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--              IJ                               LJ
+--            / | \                            / | \
+--          LJ  D d1=e1 & d3=c3   to         IJ  A  a1=b1
+--        / | \                            / | \
+--       IJ A a1=b1                      IJ  D d1=e1 & d3=c3
+--     / | \                           / | \
+--    B  LJ b2=c2                     B  LJ b2=c2
+--     / | \                           / | \
+--    C  E c1=e1                      C  E  c1=e1
+--
+select a1,b1,c1,c3,d1,d3,e1,e3
+  from B join (C left join E on c1=e1) on b2=c2 left join A on a1=b1 join D on d1=e1 and d3=c3
+ order by 8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |E3         
+-----------------------------------------------------------------------------------------------
+3          |3          |2          |5          |2          |5          |2          |2          
+6          |6          |1          |2          |1          |2          |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.26: Left branch has LJ and IJ - not optimum reordering    ;
+--            lower IJ reordered                                    ;
+--            upper IJ not reordered as lower IJ null-producing     ;
+--            side is E                                             ;
+--            Had the logic is top-down, the upper IJ would         ;
+--            reordered below upper LJ                              ;
+--            Also unfortunately, OJ2SEL failed to convert C LJ E   ;
+--            to C IJ E                                             ;
+--            The is a case where OJ demotion logic will help       ;
+--            achieving the best solution.                          ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--              IJ                               IJ
+--            / | \                            / | \
+--          LJ  D d3=e3 & d1=c1   to         LJ  D  d3=e3 & d1=c1
+--        / | \                            / | \
+--       IJ A a1=b1                      LJ  A a1=b1        
+--     / | \                           / | \
+--    B  LJ b1=c2                    IJ  E  c1=e1
+--     / | \                       / | \
+--    C  E c1=e1                  C  B  b1=c2
+--
+--   The best result should be:
+--
+--              LJ     
+--            / | \    
+--          IJ  A a1=b1
+--        / | \              
+--       IJ D d3=e3 & d1=c1  
+--     / | \                 
+--    B  IJ b1=c2            
+--     / | \                 
+--    C  E c1=e1             
+--
+select a1,b1,c1,c3,d1,d3,e1,e3
+  from B join (C left join E on c1=e1) on b1=c2 left join A on a1=b1 join D on d3=e3 and d1=c1
+ order by 8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |E3         
+-----------------------------------------------------------------------------------------------
+4          |4          |1          |1          |1          |3          |1          |3          
+7          |7          |1          |2          |1          |3          |1          |3          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.27: Balance tree                                          ;
+--            No reordering                                         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ        
+--              / | \       
+--          LJ    LJ a1=b1
+--        / | \  / | \      
+--       A  C | B  D b2=d1
+--           a2=c1
+--
+select a1,b1,c1,c3,d1,d3
+  from (A left join C on a2=c1) join (B left join D on b2=d1) on a1=b1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+3          |3          |NULL       |NULL       |2          |2          
+3          |3          |NULL       |NULL       |2          |5          
+3          |3          |NULL       |NULL       |2          |6          
+3          |3          |NULL       |NULL       |2          |9          
+1          |1          |1          |1          |NULL       |NULL       
+7          |7          |1          |1          |NULL       |NULL       
+1          |1          |1          |2          |NULL       |NULL       
+7          |7          |1          |2          |NULL       |NULL       
+5          |5          |2          |5          |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+6          |6          |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.28: Right Deep tree - No reordering for now               ;
+--            Reordering will take place when OJ demotion is        ;
+--            available                                             ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                          1st linearization        2nd Linearization
+--
+--       LJ                     LJ                            LJ
+--     / | \                  / | \                         / | \
+--    A  LJ a1=c2     to     A  LJ a1=c2     to           LJ  D  c1=d1 
+--     / | \                  / | \                     / | \
+--    B  LJ b1=c2           LJ  D  c1=d1               A  LJ a1=c2 
+--     / | \               / | \                        / | \
+--    C  D  c1=d1         B  C  b1=c2                  B  C  b1=c2
+--  
+--   OJ2SEL
+--
+--         LJ
+--       / | \ 
+--     LJ  D  c1=d1 
+--   / | \
+--  A  IJ a1=c2 
+--   / | \
+--  B  C  b1=c2
+--
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b1=c2) on a1=c2
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+4          |4          |1          |1          |1          |2          
+7          |7          |1          |2          |1          |2          
+4          |4          |1          |1          |1          |3          
+7          |7          |1          |2          |1          |3          
+7          |7          |3          |7          |NULL       |NULL       
+3          |3          |8          |9          |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.29: Balance tree - one branch has IJ only                 ;
+--            No reordering                                         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ        
+--              / | \       
+--          IJ    LJ a1=b1
+--        / | \  / | \      
+--       A  C | B  D b2=d1
+--           a2=c1
+--
+select a1,b1,c1,c3,d1,d3
+  from (A join C on a2=c1) join (B left join D on b2=d1) on a1=b1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |NULL       |NULL       
+7          |7          |1          |1          |NULL       |NULL       
+1          |1          |1          |2          |NULL       |NULL       
+7          |7          |1          |2          |NULL       |NULL       
+5          |5          |2          |5          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.30: 2 IJs                                                 ;
+--            Lower IJ not reordered because condition not satisfied;
+--            Upper IJ reordered in 2 steps                         ;
+--            1st step reordered to above lower IJ                  ;
+--            2nd step reordered pass above lower IJ                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ1                            LJ1        
+--              / | \                          / | \       
+--             A  LJ1 c1=a1                  IJ1 E  d1=e1
+--              / | \         1st step     / | \
+--            IJ2 E  d1=e1    ========>  IJ2 A  c1=a1
+--          / | \                      / | \             
+--         B  LJ2 b2=c1               B  LJ2 b2=c1
+--          / | \                      / | \  
+--         C  D  c1=d1                C  D  c1=d1
+--
+--  2nd step:
+--                LJ1        
+--              / | \       
+--            IJ2 E  d1=e1
+--          / | \
+--         B  LJ2 b2=c1
+--          / | \       
+--        IJ1 D  c1=d1  
+--      / | \           
+--     C  A  c1=a1
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from a join ((b join (c left join d on c1=d1) on b2=c1) left join e on d1=e1) on c1=a1
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+2          |3          |2          |5          |2          |2          |2          
+2          |3          |2          |5          |2          |5          |2          
+2          |3          |2          |5          |2          |6          |2          
+2          |3          |2          |5          |2          |9          |2          
+3          |7          |3          |1          |NULL       |NULL       |NULL       
+3          |9          |3          |1          |NULL       |NULL       |NULL       
+3          |7          |3          |4          |NULL       |NULL       |NULL       
+3          |9          |3          |4          |NULL       |NULL       |NULL       
+3          |7          |3          |7          |NULL       |NULL       |NULL       
+3          |9          |3          |7          |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.31: 2 IJs - same as 2,30 except LJ2 is left of IJ2        ;
+--            Lower IJ not reordered because condition not satisfied;
+--            Upper IJ reordered in 2 steps                         ;
+--            1st step reordered to above lower IJ                  ;
+--            2nd step reordered pass above lower IJ                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ1                            LJ1        
+--              / | \                          / | \       
+--             A  LJ1 c1=a1                  IJ1 E  d1=e1
+--              / | \         1st step     / | \
+--            IJ2 E  d1=e1    ========>  IJ2 A  c1=a1
+--          / | \                      / | \             
+--       LJ2  B b2=c1               LJ2  B  b2=c1
+--      / | \                      / | \  
+--     C  D  c1=d1                C  D  c1=d1
+--
+--  2nd step:
+--                LJ1        
+--              / | \       
+--            IJ2 E  d1=e1
+--          / | \
+--       LJ2  B  b2=c1
+--      / | \       
+--   IJ1  D  c1=d1  
+--  / | \           
+-- C  A  c1=a1
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from a join (((c left join d on c1=d1) join b on b2=c1) left join e on d1=e1) on c1=a1
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+2          |3          |2          |5          |2          |2          |2          
+2          |3          |2          |5          |2          |5          |2          
+2          |3          |2          |5          |2          |6          |2          
+2          |3          |2          |5          |2          |9          |2          
+3          |7          |3          |1          |NULL       |NULL       |NULL       
+3          |9          |3          |1          |NULL       |NULL       |NULL       
+3          |7          |3          |4          |NULL       |NULL       |NULL       
+3          |9          |3          |4          |NULL       |NULL       |NULL       
+3          |7          |3          |7          |NULL       |NULL       |NULL       
+3          |9          |3          |7          |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.32: 3 IJs in a row - Only the top IJ reordered in 1 step  ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--               IJ1                     IJ2        
+--              / | \                   / | \       
+--             A IJ2 a1=d1             B IJ3 b1=c1
+--              / | \                   / | \
+--             B IJ3 b1=c1    ==>      C LJ1 c1=d1
+--              / | \                   / | \             
+--             C LJ1 c1=d1           IJ1  E  d1=e1
+--              / | \               / | \  
+--             D  E  d1=e1         D  A  a1=d1
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from a join (b join (c join (d left join e on d1=e1) on c1=d1) on b1=c1) on a1=d1
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          |1          
+1          |1          |1          |2          |1          |2          |1          
+1          |1          |1          |1          |1          |3          |1          
+1          |1          |1          |2          |1          |3          |1          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.33: 3 IJs in a row - upper 2 IJs each reordered in 1 step ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--               IJ1                            IJ3        
+--              / | \                          / | \       
+--             A IJ2 a1=d1                    C LJ1 c1=d1
+--              / | \                          / | \
+--             B IJ3 b1=d1    ==>           IJ1  E  d1=e1
+--              / | \                      / | \             
+--             C LJ1 c1=d1              IJ2  A  a1=d1
+--              / | \                  / | \  
+--             D  E  d1=e1            D  B  b1=d1
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from a join (b join (c join (d left join e on d1=e1) on c1=d1) on b1=d1) on a1=d1
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          |1          
+1          |1          |1          |2          |1          |2          |1          
+1          |1          |1          |1          |1          |3          |1          
+1          |1          |1          |2          |1          |3          |1          
+ij> -- -----------------------------------------------------------------;
+-- Case 2.34: LJs under IJ                                          ;
+--            Reorder allowed above LJ                              ;
+--            Later OJ2SEL change LJ1 to IJ3 and LJ2 to LJ1         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--               IJ1                            LJ1        
+--              / | \                          / | \
+--             A LJ1 a1=b1                  IJ1  F  e1=f1
+--              / | \                      / | \
+--           IJ2  F  e1=f1    ==>       IJ2  A  a1=b1
+--         / |  \                    /  |  \                    
+--     LJ1   LJ2 c1=d1           LJ1   LJ2 c1=d1               
+--    / | \ / | \               / | \ / | \                    
+--   B  C | D E  d1=e1         B  C | D E  d1=e1               
+--      b1=c1                     b1=c1
+--
+-- After OJ2SEL
+--                     LJ1        
+--                    / | \
+--                 IJ1  F  e1=f1
+--                / | \
+--             IJ2  A  a1=b1
+--          /  |  \                    
+--       IJ3   LJ2 c1=d1               
+--      / | \ / | \                    
+--     B  C | D E  d1=e1               
+--        b1=c1
+--
+--
+--  A --- (((B <-> C) --- (D <-> E)) <-- F)      A --- B --- C --- D <-- E <-- F
+--  =======================================      ===============================
+--  Y        Y     Y       Y     Y       Y       Y     Y     Y     Y     Y     Y
+--  Y        Y     Y       Y     Y       N   ==> Y     Y     Y     Y     Y     N
+--  Y        Y     Y       Y     N       N       Y     Y     Y     Y     N     N
+--           N     Y       Y     Y       Y
+--           N     Y       Y     Y       N
+--           N     Y       Y     N       N
+--           Y     N 
+--                         N     Y      
+--
+-- select a1,b1,c1,c3,d1,d3,e1,f4
+--   from a join (((b left join c on b1=c1) join (d left join e on d1=e1) on c1=d1) left join f on e1=f1) on a1=b1
+-- order by 8,7,6,5,4,3,2,1;
+select a1,b1,c1,c3,d1,d3,e1,f4
+  from a left join (((b left join c on b1=c1) left join (d left join e on d1=e1) on c1=d1) left join f on e1=f1) on a1=b1
+ order by 8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         
+-----------------------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          |1          |NULL       
+1          |1          |1          |2          |1          |2          |1          |NULL       
+1          |1          |1          |1          |1          |3          |1          |NULL       
+1          |1          |1          |2          |1          |3          |1          |NULL       
+3          |3          |3          |1          |NULL       |NULL       |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       |NULL       |NULL       
+3          |3          |3          |7          |NULL       |NULL       |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+2          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.35: LJs under IJ                                          ;
+--            Reordered                                             ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--              IJ1                             LJ1        
+--             / | \                          /  |  \
+--           LJ1 C a1=c1 and c3=1         IJ1    LJ2 b1=d1
+--         /  |  \                       / | \  / | \
+--      LJ1   LJ2  b1=d1     ==>       LJ1 C |  D E d1=e1
+--     / | \ / | \                    / | \ a1=c1 and c3=1
+--    A  B | D E  d1=e1              A  B | 
+--       a1=b1                          a1=b1
+--
+select a1,b1,c1,c3,d1,d3,e1
+  from ((A left join B on a1=b1) left join (D left join E on d1=e1) on b1=d1) join C on a1=c1 and c3=1
+ order by 7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         
+-----------------------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          |1          
+1          |1          |1          |1          |1          |3          |1          
+3          |3          |3          |1          |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.36: No reordering because of LJ                           ;
+-- -----------------------------------------------------------------;
+--
+--               IJ1         
+--              / | \        
+--             A LJ1 a1=b1   
+--              / | \        
+--             B  C  b1=c1   
+--
+select a1,b1,c1,c3
+  from a join (b left join c on b1=c1) on a1=b1
+ order by 4,3,2,1;
+A1         |B1         |C1         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+3          |3          |3          |1          
+1          |1          |1          |2          
+3          |3          |3          |4          
+3          |3          |3          |7          
+4          |4          |NULL       |NULL       
+5          |5          |NULL       |NULL       
+6          |6          |NULL       |NULL       
+7          |7          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.37: LJ under IJ - no reordering                           ;
+-- -----------------------------------------------------------------;
+--
+--              IJ1       
+--             / | \      
+--           A  LJ1 a1=b1 
+--             / | \      
+--           LJ1 D c1=d1  
+--          / | \ 
+--         B  C b1=c1
+--
+select a1,b1,c1,c3,d1,d3
+  from a join ((b left join c on b1=c1) left join d on c1=d1) on a1=b1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+1          |1          |1          |2          |1          |2          
+1          |1          |1          |1          |1          |3          
+1          |1          |1          |2          |1          |3          
+3          |3          |3          |1          |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       
+3          |3          |3          |7          |NULL       |NULL       
+4          |4          |NULL       |NULL       |NULL       |NULL       
+5          |5          |NULL       |NULL       |NULL       |NULL       
+6          |6          |NULL       |NULL       |NULL       |NULL       
+7          |7          |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.38: LJ over IJ                                            ;
+--            Reordered OK                                          ;
+-- -----------------------------------------------------------------;
+--
+--              LJ1                  LJ1
+--             / | \                / | \
+--           IJ1 D  c1=d1         LJ1 D  c1=d1
+--          / | \          ===>  / | \
+--        LJ1 C a1=c1 & c3=0   IJ1 B a1=b1
+--       / | \                / | \
+--      A  B  a1=b1          A  C a1=c1 & c3=0
+--
+select a1,b1,c1,c3,d1,d3
+  from a left join b on a1=b1 join C on a1=c1 and c3=0 left join d on c1=d1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+ij> -- -----------------------------------------------------------------;
+-- Case 2.39: Future extension                                      ;
+--            IJ1 cannot be reordered.  However, if linearization   ;
+--            first, then IJ1 can be reordered                      ;
+-- -----------------------------------------------------------------;
+--
+--            IJ1                     LJ2
+--           / | \       should      / | \
+--          A LJ1 a1=c1  be       LJ1  D  c1=d1
+--           / | \       ===>    / | \
+--          B LJ2 b1=c1       IJ1  B  a1=b1
+--           / | \           / | \
+--          C  D  c1=d1     A  C  a1=c1
+--
+select a1,b1,c1,c3,d1,d3
+  from A join (B left join (C left join D on c1=d1) on b1=c1) on a1=c1
+ order by 6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |2          
+1          |1          |1          |2          |1          |2          
+1          |1          |1          |1          |1          |3          
+1          |1          |1          |2          |1          |3          
+3          |3          |3          |1          |NULL       |NULL       
+3          |3          |3          |4          |NULL       |NULL       
+3          |3          |3          |7          |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.40: Reordered with skip IJ                                ;
+-- -----------------------------------------------------------------;
+--
+--              IJ1                        IJ2             
+--             / | \                     /  |  \            
+--            A IJ2 a1=c1            IJ3    IJ4 b1=e1
+--            /  |  \       ===>    / | \  /  | \
+--        IJ3    IJ4 b1=e1         B LJ1| E   LJ2 e2=f1
+--       / | \  /  | \              / |\b2=c1 / | \
+--      B LJ1|  E  LJ2 e2=f1      IJ1 D |    F  G f1=g1 
+--       / |\b2=c1 / | \         / | \ c1=d1
+--      C  D |    F  G  f1=g1   C  A a1=c1
+--         c1=d1
+-- 
+-- select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+--  from A join ((B join (C left join D on c1=d1) on b2=c1) join
+--               (E join (F left join G on f1=g1) on e2=f1) on b1=e1) on a1=c1
+-- order by 10,9,8,7,6,5,4,3,2,1;
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join ((B left join (C left join D on c1=d1) on b2=c1) left join
+               (E left join (F left join G on f1=g1) on e2=f1) on b1=e1) on a1=c1
+ order by 10,9,8,7,6,5,4,3,2,1;
+A1         |B1         |C1         |C3         |D1         |D3         |E1         |F4         |G1         |G3         
+-----------------------------------------------------------------------------------------------------------------------
+3          |7          |3          |1          |NULL       |NULL       |7          |NULL       |1          |1          
+3          |7          |3          |4          |NULL       |NULL       |7          |NULL       |1          |1          
+3          |7          |3          |7          |NULL       |NULL       |7          |NULL       |1          |1          
+3          |7          |3          |1          |NULL       |NULL       |7          |NULL       |1          |2          
+3          |7          |3          |4          |NULL       |NULL       |7          |NULL       |1          |2          
+3          |7          |3          |7          |NULL       |NULL       |7          |NULL       |1          |2          
+2          |3          |2          |5          |2          |2          |3          |6          |NULL       |NULL       
+2          |3          |2          |5          |2          |5          |3          |6          |NULL       |NULL       
+2          |3          |2          |5          |2          |6          |3          |6          |NULL       |NULL       
+2          |3          |2          |5          |2          |9          |3          |6          |NULL       |NULL       
+3          |9          |3          |1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |9          |3          |4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+3          |9          |3          |7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+1          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+4          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+5          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+6          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+7          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+8          |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       |NULL       
+ij> -- -----------------------------------------------------------------;
+-- Case 2.41: Opportunity missed                                    ;
+-- -----------------------------------------------------------------;
+--
+--              IJ1             
+--             / | \            
+--            A IJ2 a1=f1       
+--            /  |  \       IJ1 should be reordered to below LJ2
+--        IJ3    IJ4 b1=e1      
+--       / | \  /  | \          
+--      B LJ1|  E  LJ2 e2=f1    
+--       / |\b2=c1 / | \        
+--      C  D |    F  G  f1=g1   
+--         c1=d1
+-- 
+-- select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+--  from A join ((B join (C left join D on c1=d1) on b2=c1) join
+--               (E join (F left join G on f1=g1) on e2=f1) on b1=e1) on a1=f1
+-- order by 10,9,8,7,6,5,4,3,2,1;
+drop table a;
+0 rows inserted/updated/deleted
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> drop table d;
+0 rows inserted/updated/deleted
+ij> drop table e;
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> drop table g;
+0 rows inserted/updated/deleted
+ij> drop table h;
+0 rows inserted/updated/deleted
+ij> -- ojel001.clp
+create table a (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table b (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table c (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table d (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table e (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table f (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table g (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table h (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table i (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table j (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table aa (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table bb (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table cc (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table dd (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table ee (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table ff (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table gg (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table hh (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table ii (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table jj (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table kk (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table t1 (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create view v1 (c1, c2, c3) as (select c1, c2, c3 from t1);
+0 rows inserted/updated/deleted
+ij> create view v2 (c1, c2, c3) as (select c1, c2, c3
+                                from t2
+                                group by c1, c2, c3);
+0 rows inserted/updated/deleted
+ij> create unique index aa_idx1 on aa (c1);
+0 rows inserted/updated/deleted
+ij> create unique index bb_idx1 on bb (c1);
+0 rows inserted/updated/deleted
+ij> create unique index cc_idx1 on cc (c2);
+0 rows inserted/updated/deleted
+ij> create unique index dd_idx1 on dd (c3);
+0 rows inserted/updated/deleted
+ij> create unique index ee_idx1 on ee (c1);
+0 rows inserted/updated/deleted
+ij> create unique index ff_idx1 on ff (c2);
+0 rows inserted/updated/deleted
+ij> create unique index gg_idx1 on gg (c3);
+0 rows inserted/updated/deleted
+ij> create unique index jj_idx1 on jj (c1, c2);
+0 rows inserted/updated/deleted
+ij> create unique index kk_idx1 on kk (c1, c2, c3);
+0 rows inserted/updated/deleted
+ij> insert into a values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into b values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into c values (1, 1, 1), (1, 2, 3), (2, 2, 2), (3, 3, 3);
+4 rows inserted/updated/deleted
+ij> insert into d values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+3 rows inserted/updated/deleted
+ij> insert into e values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into f values (1, 1, 1), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into g values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into h values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into i values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into j values (1, 1, 1), (1, 2, 3), (2, 3, 4), (3, 4, 5);
+4 rows inserted/updated/deleted
+ij> insert into aa values (1, 1, 1), (2, 3, 4), (5, 5, 5);
+3 rows inserted/updated/deleted
+ij> insert into bb values (1, 2, 3), (2, 2, 2), (3, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into cc values (1, 1, 1), (1, 2, 3), (2, 3, 2), (3, 5, 3);
+4 rows inserted/updated/deleted
+ij> insert into dd values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+3 rows inserted/updated/deleted
+ij> insert into ee values (1, 2, 3), (2, 2, 2), (4, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into ff values (1, 1, 1), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into gg values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into hh values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into ii values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+4 rows inserted/updated/deleted
+ij> insert into jj values (1, 1, 1), (1, 2, 3), (2, 2, 2), (3, 3, 3);
+4 rows inserted/updated/deleted
+ij> insert into kk values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+3 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1, 1), (1, 2, 3), (2, 2, 2), (3, 3, 3);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+3 rows inserted/updated/deleted
+ij> --
+--                         LJ
+--                        /  \
+--                       /    \
+--                      A      B
+--
+------------------------------------------------------------------------------
+select distinct a.* 
+from a left outer join b on a.c1 = b.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.02: A simple case with only one right join                        ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       /    \
+--                      A      B
+--
+------------------------------------------------------------------------------
+select distinct b.* 
+from a right outer join b on a.c1 = b.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.03.1: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   G
+--                      /  \
+--                     LJ   F
+--                    /  \
+--                   LJ   E
+--                  /  \
+--                 IJ   D
+--                /  \
+--               LJ   C
+--              /  \
+--             A    B
+--
+------------------------------------------------------------------------------
+select distinct a.* 
+from a left outer join b on a.c1 = b.c1 
+       inner join c on a.c2 = c.c2 
+       left outer join d on a.c3 = d.c3
+       left outer join e on a.c1 = e.c1
+       inner join f on a.c2 = f.c2
+       left outer join g on a.c3 = g.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.03.2: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   G
+--                      /  \
+--                     LJ   F
+--                    /  \
+--                   LJ   E
+--                  /  \
+--                 IJ   D
+--                /  \
+--               LJ   C
+--              /  \
+--             A    B
+--
+------------------------------------------------------------------------------
+select distinct e.* 
+from a left outer join b on a.c1 = b.c1 
+       inner join c on a.c2 = c.c2 
+       left outer join d on a.c3 = d.c3
+       left outer join e on a.c1 = e.c1
+       inner join f on a.c2 = f.c2
+       left outer join g on a.c3 = g.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+2          |3          |4          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.04.1: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       G   RJ     
+--                          /  \
+--                         F   RJ
+--                            /  \
+--                           E   IJ
+--                              /  \
+--                             D   IJ
+--                                /  \
+--                               C   RJ
+--                                  /  \
+--                                 B    A
+--
+------------------------------------------------------------------------------
+select distinct a.* 
+from g right outer join 
+     (f right outer join 
+      (e right outer join 
+       (d inner join 
+        (c inner join 
+         (b right outer join a on b.c3 = a.c3) 
+                                on c.c2 = a.c2) 
+                                 on d.c1 = a.c1) 
+                                  on e.c3 = a.c3) 
+                                   on f.c2 = a.c2) 
+                                    on g.c1 = a.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.04.2: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       G   RJ     
+--                          /  \
+--                         F   RJ
+--                            /  \
+--                           E   IJ
+--                              /  \
+--                             D   IJ
+--                                /  \
+--                               C   RJ
+--                                  /  \
+--                                 B    A
+--
+------------------------------------------------------------------------------
+select distinct f.* 
+from g right outer join 
+     (f right outer join 
+      (e right outer join 
+       (d inner join 
+        (c inner join 
+         (b right outer join a on b.c3 = a.c3) 
+                                on c.c2 = a.c2) 
+                                 on d.c1 = a.c1) 
+                                  on e.c3 = a.c3) 
+                                   on f.c2 = a.c2) 
+                                    on g.c1 = a.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |2          |2          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.05.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      E    F 
+--
+------------------------------------------------------------------------------
+select distinct a.* 
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        (e left outer join f on e.c1 = f.c1) 
+                                              on d.c3 = e.c3) 
+                                               on a.c3 = e.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.05.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      E    F 
+--
+------------------------------------------------------------------------------
+select distinct e.* 
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        (e left outer join f on e.c1 = f.c1) 
+                                              on d.c3 = e.c3) 
+                                               on a.c3 = e.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |3          |4          
+5          |5          |5          
+NULL       |NULL       |NULL       
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.06.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      RJ   G 
+--                              /  \
+--                             E    F
+--
+------------------------------------------------------------------------------
+select distinct a.*
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        ((e right outer join f on e.c1 = f.c1) left outer join g on f.c1 = g.c1) 
+                                                                                  on d.c3 = f.c3) 
+                                                                                   on a.c3 = f.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.06.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      RJ   G 
+--                              /  \
+--                             E    F
+--
+------------------------------------------------------------------------------
+select distinct f.*
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        ((e right outer join f on e.c1 = f.c1) left outer join g on f.c1 = g.c1) 
+                                                                                  on d.c3 = f.c3) 
+                                                                                   on a.c3 = f.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+5          |5          |5          
+NULL       |NULL       |NULL       
+ij> ---- -------------------------------------------------------------------------;
+---- Case 1.07: A complex case with right joins, left joins and inner joins   ;
+---- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LJ      RJ
+--                      /  \    /  \
+--                     IJ   C  D   RJ
+--                    /  \        /  \
+--                   A    B      RJ   G 
+--                              /  \
+--                             E    F
+--
+------------------------------------------------------------------------------
+select distinct e.*
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        ((e right outer join f on e.c1 = f.c1) right outer join g on f.c1 = g.c1) 
+                                                                                   on d.c3 = f.c3) 
+                                                                                    on a.c3 = f.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+2          |3          |4          
+5          |5          |5          
+NULL       |NULL       |NULL       
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.08: A simple view                                                 ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  V1(T1)
+--                    /  \
+--                   H    I
+--
+------------------------------------------------------------------------------
+select distinct h.*
+from h inner join i on h.c1 = i.c1
+       left outer join v1 on h.c1 = v1.c1 and h.c2 = v1.c2;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.9.1: No OJEL because of group-by view                            ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  V2(T2)
+--                    /  \
+--                   H    I
+--
+------------------------------------------------------------------------------
+select distinct h.*
+from h inner join i on h.c1 = i.c1
+       left outer join v2 on h.c1 = v2.c1 and h.c2 = v2.c2;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 1.9.2: No OJEL because of hxp columns                              ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ   J
+--                    /  \
+--                   H    I
+--
+------------------------------------------------------------------------------
+select distinct h.c1, j.c2
+from h inner join i on h.c1 = i.c1
+       left outer join j on h.c1 = j.c1 and h.c2 = j.c2;
+C1         |C2         
+-----------------------
+1          |2          
+2          |3          
+2          |NULL       
+5          |NULL       
+ij> -- =========================================================================;
+-- Group 2: OJEL - UNIQUE KEY (INDEX)                                       ;
+-- =========================================================================;
+-- -------------------------------------------------------------------------;
+-- Case 2.01.1: A simple case with only one left join                       ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       /    \
+--                      AA    BB
+--
+------------------------------------------------------------------------------
+select aa.* 
+from aa left outer join bb on aa.c1 = bb.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.01.2: A simple case with only one right join                      ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       /    \
+--                      AA    BB
+--
+------------------------------------------------------------------------------
+select bb.* 
+from aa right outer join bb on aa.c1 = bb.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+3          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.02.1: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   GG
+--                      /  \
+--                     LJ   FF
+--                    /  \
+--                   LJ   EE
+--                  /  \
+--                 IJ   DD
+--                /  \
+--               LJ   CC
+--              /  \
+--             AA   BB
+--
+------------------------------------------------------------------------------
+select aa.* 
+from aa left outer join bb on aa.c1 = bb.c1 
+        inner join cc on aa.c2 = cc.c2 
+        left outer join dd on aa.c3 = dd.c3
+        left outer join ee on aa.c1 = ee.c1
+        inner join ff on aa.c2 = ff.c2
+        left outer join gg on aa.c3 = gg.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.02.2: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   GG
+--                      /  \
+--                     LJ   FF
+--                    /  \
+--                   LJ   EE
+--                  /  \
+--                 IJ   DD
+--                /  \
+--               LJ   CC
+--              /  \
+--             AA   BB
+--
+------------------------------------------------------------------------------
+select ee.* 
+from aa left outer join bb on aa.c1 = bb.c1 
+        inner join cc on aa.c2 = cc.c2 
+        left outer join dd on aa.c3 = dd.c3
+        left outer join ee on aa.c1 = ee.c1
+        inner join ff on aa.c2 = ff.c2
+        left outer join gg on aa.c3 = gg.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.03.1: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       GG  RJ     
+--                          /  \
+--                         FF  RJ
+--                            /  \
+--                           EE  IJ
+--                              /  \
+--                             DD  IJ
+--                                /  \
+--                               CC  RJ
+--                                  /  \
+--                                 BB   AA
+--
+------------------------------------------------------------------------------
+select aa.* 
+from gg right outer join 
+     (ff right outer join 
+      (ee right outer join 
+       (dd inner join 
+        (cc inner join 
+         (bb right outer join aa on bb.c1 = aa.c1)
+                                  on cc.c2 = aa.c2)
+                                   on dd.c3 = aa.c3)
+                                    on ee.c1 = aa.c1)
+                                     on ff.c2 = aa.c2)
+                                      on gg.c3 = aa.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.03.2: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       GG  RJ     
+--                          /  \
+--                         FF  RJ
+--                            /  \
+--                           EE  IJ
+--                              /  \
+--                             DD  IJ
+--                                /  \
+--                               CC  RJ
+--                                  /  \
+--                                 BB   AA
+--
+------------------------------------------------------------------------------
+select ff.* 
+from gg right outer join 
+     (ff right outer join 
+      (ee right outer join 
+       (dd inner join 
+        (cc inner join 
+         (bb right outer join aa on bb.c1 = aa.c1)
+                                  on cc.c2 = aa.c2)
+                                   on dd.c3 = aa.c3)
+                                    on ee.c1 = aa.c1)
+                                     on ff.c2 = aa.c2)
+                                      on gg.c3 = aa.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.04.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  LJ
+--                    /  \        /  \
+--                   AA  BB      EE  FF 
+--
+------------------------------------------------------------------------------
+select aa.* 
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        (ee left outer join ff on ee.c2 = ff.c2) 
+                                                on dd.c3 = ee.c3) 
+                                                 on aa.c1 = ee.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.04.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  LJ
+--                    /  \        /  \
+--                   AA  BB      EE  FF 
+--
+------------------------------------------------------------------------------
+select ee.* 
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        (ee left outer join ff on ee.c2 = ff.c2) 
+                                                on dd.c3 = ee.c3) 
+                                                 on aa.c1 = ee.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+2          |2          |2          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.05.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD   LJ
+--                    /  \        /  \
+--                   AA  BB      RJ  GG 
+--                              /  \
+--                             EE  FF
+--
+------------------------------------------------------------------------------
+select aa.*
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        ((ee right outer join ff on ee.c1 = ff.c1) left outer join gg on ff.c3 = gg.c3) 
+                                                                                       on dd.c3 = ff.c3) 
+                                                                                        on aa.c2 = ff.c2;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.05.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  LJ
+--                    /  \        /  \
+--                   AA  BB      RJ  GG 
+--                              /  \
+--                             EE  FF
+--
+------------------------------------------------------------------------------
+select ff.*
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        ((ee right outer join ff on ee.c1 = ff.c1) left outer join gg on ff.c3 = gg.c3) 
+                                                                                       on dd.c3 = ff.c3) 
+                                                                                        on aa.c2 = ff.c2;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.06: A complex case with right joins, left joins and inner joins   ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LJ      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  RJ
+--                    /  \        /  \
+--                   AA  BB      RJ  GG 
+--                              /  \
+--                             EE  FF
+--
+------------------------------------------------------------------------------
+select ee.*
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        ((ee right outer join ff on ee.c2 = ff.c2) right outer join gg on ff.c3 = gg.c3) 
+                                                                                        on dd.c3 = ff.c3) 
+                                                                                         on aa.c2 = ff.c2;
+C1         |C2         |C3         
+-----------------------------------
+NULL       |NULL       |NULL       
+4          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.07.1: A composite unique index                                    ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and hh.c2 = jj.c2
+        left outer join kk on hh.c1 = kk.c1 and hh.c2 = kk.c2 and kk.c3 = 5;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.07.2: A composite unique index                                    ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on jj.c1 = 0 and jj.c2 is null
+        left outer join kk on hh.c1 = kk.c1 and kk.c2 is null and kk.c3 = 5;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.07.3: A composite unique index                                    ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on jj.c1 = 0
+        left outer join kk on hh.c1 = kk.c1 and hh.c2 = kk.c2 and kk.c3 = 5;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.08.1: No OJEL because of wrong types of ON predicates             ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on jj.c1 = 0 and jj.c2 is not null
+        left outer join kk on hh.c1 = kk.c1 and hh.c2 = kk.c2 and kk.c3 <> 5;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.08.2: No OJEL because of wrong types of ON predicates             ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and jj.c2 is not null
+        left outer join kk on hh.c1 = kk.c1 and kk.c3 <= 5;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |1          |1          
+1          |1          |1          
+1          |1          |1          
+1          |2          |3          
+1          |2          |3          
+1          |2          |3          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.08.3: No OJEL because of wrong types of ON predicates             ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and jj.c2 is not null
+        left outer join kk on hh.c1 = kk.c1 and kk.c2 = kk.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |1          |1          
+1          |2          |3          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.08.4: No OJEL because of view                                     ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  V1
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join v1 on hh.c1 = v1.c1 and hh.c2 = v1.c2;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+2          |3          |4          
+2          |3          |4          
+5          |5          |5          
+ij> -- -------------------------------------------------------------------------;
+-- Case 2.08.5: No OJEL because of hxp columns                              ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+select jj.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and hh.c2 = jj.c2;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+1          |2          |3          
+NULL       |NULL       |NULL       
+NULL       |NULL       |NULL       
+NULL       |NULL       |NULL       
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> drop table d;
+0 rows inserted/updated/deleted
+ij> drop table e;
+0 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> drop table g;
+0 rows inserted/updated/deleted
+ij> drop table h;
+0 rows inserted/updated/deleted
+ij> drop table i;
+0 rows inserted/updated/deleted
+ij> drop table j;
+0 rows inserted/updated/deleted
+ij> drop table aa;
+0 rows inserted/updated/deleted
+ij> drop table bb;
+0 rows inserted/updated/deleted
+ij> drop table cc;
+0 rows inserted/updated/deleted
+ij> drop table dd;
+0 rows inserted/updated/deleted
+ij> drop table ee;
+0 rows inserted/updated/deleted
+ij> drop table ff;
+0 rows inserted/updated/deleted
+ij> drop table gg;
+0 rows inserted/updated/deleted
+ij> drop table hh;
+0 rows inserted/updated/deleted
+ij> drop table ii;
+0 rows inserted/updated/deleted
+ij> drop table jj;
+0 rows inserted/updated/deleted
+ij> drop table kk;
+0 rows inserted/updated/deleted
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> drop view v2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PARTS;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PARTS_T;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PARTS_NOTNULL;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PARTS_ALLNULL;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PARTS_EMPTY;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PARTS_EMPTY_NN;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PRODUCTS;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PRODUCTS_T;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PRODUCTS_NOTNULL;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PRODUCTS_ALLNULL;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PRODUCTS_EMPTY;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.PRODUCTS_EMPTY_NN;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.S90;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.S91;
+0 rows inserted/updated/deleted
+ij> DROP TABLE K55ADMIN.S92;
+0 rows inserted/updated/deleted
+ij> DROP SCHEMA K55ADMIN RESTRICT;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/longStringColumn.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/longStringColumn.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,48 @@
+Test longStringColumn starting
+... 0
+... 10000
+... 20000
+... 30000
+... 40000
+... 50000
+... 60000
+i = 65521, testing length: 65526
+i = 65522, testing length: 65527
+i = 65523, testing length: 65528
+i = 65524, testing length: 65529
+i = 65525, testing length: 65530
+i = 65526, testing length: 65531
+i = 65527, testing length: 65532
+i = 65528, testing length: 65533
+i = 65529, testing length: 65534
+i = 65530, testing length: 65535
+i = 65531, testing length: 65536
+i = 65532, testing length: 65537
+i = 65533, testing length: 65538
+i = 65534, testing length: 65539
+i = 65535, testing length: 65540
+i = 65536, testing length: 65541
+i = 65537, testing length: 65542
+i = 65538, testing length: 65543
+i = 65539, testing length: 65544
+i = 65540, testing length: 65545
+i = 65541, testing length: 65546
+i = 65542, testing length: 65547
+i = 65543, testing length: 65548
+i = 65544, testing length: 65549
+i = 65545, testing length: 65550
+i = 65546, testing length: 65551
+i = 65547, testing length: 65552
+i = 65548, testing length: 65553
+i = 65549, testing length: 65554
+i = 65550, testing length: 65555
+i = 65551, testing length: 65556
+i = 65552, testing length: 65557
+i = 65553, testing length: 65558
+i = 65554, testing length: 65559
+i = 65555, testing length: 65560
+i = 65556, testing length: 65561
+i = 65557, testing length: 65562
+i = 65558, testing length: 65563
+i = 65559, testing length: 65564
+Test longStringColumn finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxMemPerTab.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxMemPerTab.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,187 @@
+ij> autocommit off;
+ij> create table tab1 (c1 int, c2 varchar(20000));
+0 rows inserted/updated/deleted
+ij> create table tab2 (c1 int, c2 varchar(20000));
+0 rows inserted/updated/deleted
+ij> create table tab3 (c1 int, c2 varchar(2000));
+0 rows inserted/updated/deleted
+ij> create table tab4 (c1 int, c2 varchar(2000));
+0 rows inserted/updated/deleted
+ij> create procedure INSERTDATA() language java parameter style java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.maxMemPerTabTest';
+0 rows inserted/updated/deleted
+ij> call INSERTDATA();
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2500;
+ij> -- should use nested loop join due to maxMemoryPerTable property setting
+select * from tab1, tab2 where tab1.c2 = tab2.c2;
+C1         |C2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&|1          |aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&
+3          |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc&|2          |ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc&
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use nested loop join due to maxMemoryPerTable property setting
+select * from tab1, tab2 where tab1.c2 = tab2.c2
+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: 
+Nested Loop Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 3
+Rows seen from the right = 2
+Rows filtered = 0
+Rows returned = 2
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TAB1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 3
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of rows qualified=3
+		Number of rows visited=3
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+Right result set:
+	Table Scan ResultSet for TAB2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 3
+	Rows seen = 2
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of rows qualified=2
+		Number of rows visited=9
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- should use hash join, maxMemoryPerTable property value is big enough
+select * from tab3, tab4 where tab3.c2 = tab4.c2;
+C1         |C2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|1          |aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+3          |cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|2          |cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should use hash join, maxMemoryPerTable property value is big enough
+select * from tab3, tab4 where tab3.c2 = tab4.c2
+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: 
+Hash Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 3
+Rows seen from the right = 2
+Rows filtered = 0
+Rows returned = 2
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TAB3 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 3
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of rows qualified=3
+		Number of rows visited=3
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+Right result set:
+	Hash Scan ResultSet for TAB4 at read committed isolation level using instantaneous share row locking: 
+	Number of opens = 3
+	Hash table size = 3
+	Hash key is column number 1
+	Rows seen = 2
+	Rows filtered = 0
+		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=3
+		Number of rows qualified=3
+		Number of rows visited=3
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		scan qualifiers:
+None
+		next qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> rollback;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxthreads.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/maxthreads.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,34 @@
+Testing maxthreads
+org.apache.derby.drda.NetworkServerControl maxthreads 0 
+Max threads changed to 0.
+PASS - max threads value, 0 is correct
+org.apache.derby.drda.NetworkServerControl maxthreads -1 -h localhost -p 1527 
+Max threads changed to 0.
+PASS - max threads value, 0 is correct
+org.apache.derby.drda.NetworkServerControl maxthreads -12 
+Invalid value, -12, for maxthreads.
+Usage: NetworkServerControl <commands> 
+Commands:
+start [-h <host>] [-p <portnumber>]
+shutdown [-h <host>][-p <portnumber>]
+ping [-h <host>][-p <portnumber>]
+sysinfo [-h <host>][-p <portnumber>]
+runtimeinfo [-h <host>][-p <portnumber>]
+logconnections {on |off}[-h <host>][-p <portnumber>]
+maxthreads <max>[-h <host>][-p <portnumber>]
+timeslice <milliseconds>[-h <host>][-p <portnumber>]
+trace {on |off} [-s <session id>][-h <host>][-p <portnumber>]
+tracedirectory <traceDirectory>[-h <host>][-p <portnumber>]
+PASS - max threads value, 0 is correct
+org.apache.derby.drda.NetworkServerControl maxthreads 2147483647 
+Max threads changed to 2147483647.
+PASS - max threads value, 2147483647 is correct
+org.apache.derby.drda.NetworkServerControl maxthreads 9000 
+Max threads changed to 9000.
+PASS - max threads value, 9000 is correct
+PASS - max threads value, 0 is correct
+PASS - max threads value, 0 is correct
+DRDA_InvalidValue.U:Invalid value, -2, for maxthreads.
+PASS - max threads value, 2147483647 is correct
+PASS - max threads value, 9000 is correct
+End test

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadata.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,471 @@
+Test metadata starting
+Column display size of the union result is: 13
+dec(10,2) -- precision: 10 scale: 2 display size: 13 type name: DECIMAL
+dec(10,2) -- precision: 10 scale: 2 display size: 13 type name: DECIMAL
+real + dec(10,2) -- precision: 7 scale: 0 display size: 13 type name: REAL
+double precision - dec(10,2) -- precision: 15 scale: 0 display size: 22 type name: DOUBLE
+dec(10,2) - double precision -- precision: 15 scale: 2 display size: 22 type name: DOUBLE
+result row: 11.10 11.10 14.4 -6.699999999999999 6.699999999999999
+Column result scale after division is: 23
+dc / 2 = 5.55000000000000000000000
+dc / 2 = 5.55500000000000000000000
+JDBC Driver 'Apache Derby Embedded JDBC Driver', version 10.0 (10.0.2.1)
+The URL is: jdbc:derby:wombat
+allTablesAreSelectable(): true
+maxColumnNameLength(): 30
+getSchemas():
+TABLE_SCHEM
+APP
+NULLID
+SQLJ
+SYS
+SYSCAT
+SYSCS_DIAG
+SYSCS_UTIL
+SYSFUN
+SYSIBM
+SYSPROC
+SYSSTAT
+getCatalogs():
+TABLE_CAT
+getSearchStringEscape(): 
+getSQLKeywords(): ALIAS,BIGINT,BOOLEAN,CALL,CLASS,COPY,DB2J_DEBUG,EXECUTE,EXPLAIN,FILE,FILTER,GETCURRENTCONNECTION,INDEX,INSTANCEOF,METHOD,NEW,OFF,PROPERTIES,PUBLICATION,RECOMPILE,REFRESH,RENAME,RUNTIMESTATISTICS,STATEMENT,STATISTICS,TIMING,WAIT
+getDefaultTransactionIsolation(): 2
+getProcedures():
+PROCEDURE_CAT,PROCEDURE_SCHEM,PROCEDURE_NAME,RESERVED1,RESERVED2,RESERVED3,REMARKS,PROCEDURE_TYPE
+,APP,GETPCTEST1,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST2,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST3A,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST3B,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc,1
+,APP,GETPCTEST4A,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4a,1
+,APP,GETPCTEST4B,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4b,1
+,APP,GETPCTEST4BX,null,null,null,org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4b,1
+allProceduresAreCallable(): true
+getUserName(): APP
+isReadOnly(): false
+nullsAreSortedHigh(): true
+nullsAreSortedLow(): false
+nullsAreSortedAtStart(): false
+nullsAreSortedAtEnd(): false
+getDatabaseProductName(): Apache Derby
+getDatabaseProductVersion(): 10.0.2.1
+getDriverVersion(): 10.0.2.1
+usesLocalFiles(): true
+usesLocalFilePerTable(): true
+supportsMixedCaseIdentifiers(): false
+storesUpperCaseIdentifiers(): true
+storesLowerCaseIdentifiers(): false
+storesMixedCaseIdentifiers(): false
+supportsMixedCaseQuotedIdentifiers(): true
+storesUpperCaseQuotedIdentifiers(): false
+storesLowerCaseQuotedIdentifiers(): false
+storesMixedCaseQuotedIdentifiers(): true
+getIdentifierQuoteString(): "
+getNumericFunctions(): ABS,SQRT
+getStringFunctions(): LENGTH,LOWER,LTRIM,RTRIM,SUBSTR,SUBSTRING,UPPER
+getSystemFunctions(): CURRENT_USER,getCurrentConnection,runTimeStatistics,SESSION_USER,USER,CURRENT SCHEMA
+getTimeDateFunctions(): CURDATE,CURTIME,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,EXTRACT
+getExtraNameCharacters(): 
+supportsAlterTableWithAddColumn(): true
+supportsAlterTableWithDropColumn(): true
+supportsColumnAliasing(): true
+nullPlusNonNullIsNull(): true
+supportsConvert(): true
+supportsConvert(Types.INTEGER, Types.SMALLINT): false
+supportsTableCorrelationNames(): true
+supportsDifferentTableCorrelationNames(): true
+supportsExpressionsInOrderBy(): false
+supportsOrderByUnrelated(): false
+supportsGroupBy(): true
+supportsGroupByUnrelated(): true
+supportsGroupByBeyondSelect(): true
+supportsLikeEscapeClause(): true
+supportsMultipleResultSets(): true
+supportsMultipleTransactions(): true
+supportsNonNullableColumns(): true
+supportsMinimumSQLGrammar(): true
+supportsCoreSQLGrammar(): false
+supportsExtendedSQLGrammar(): false
+supportsANSI92EntryLevelSQL(): false
+supportsANSI92IntermediateSQL(): false
+supportsANSI92FullSQL(): false
+supportsIntegrityEnhancementFacility(): false
+supportsOuterJoins(): true
+supportsFullOuterJoins(): false
+supportsLimitedOuterJoins(): true
+getSchemaTerm(): SCHEMA
+getProcedureTerm(): PROCEDURE
+getCatalogTerm(): CATALOG
+isCatalogAtStart(): false
+getCatalogSeparator(): 
+supportsSchemasInDataManipulation(): true
+supportsSchemasInProcedureCalls(): true
+supportsSchemasInTableDefinitions(): true
+supportsSchemasInIndexDefinitions(): true
+supportsSchemasInPrivilegeDefinitions(): true
+supportsCatalogsInDataManipulation(): false
+supportsCatalogsInProcedureCalls(): false
+supportsCatalogsInTableDefinitions(): false
+supportsCatalogsInIndexDefinitions(): false
+supportsCatalogsInPrivilegeDefinitions(): false
+supportsPositionedDelete(): true
+supportsPositionedUpdate(): true
+supportsSelectForUpdate(): true
+supportsStoredProcedures(): true
+supportsSubqueriesInComparisons(): true
+supportsSubqueriesInExists(): true
+supportsSubqueriesInIns(): true
+supportsSubqueriesInQuantifieds(): true
+supportsCorrelatedSubqueries(): true
+supportsUnion(): true
+supportsUnionAll(): true
+supportsOpenCursorsAcrossCommit(): false
+supportsOpenCursorsAcrossRollback(): false
+supportsOpenStatementsAcrossCommit(): true
+supportsOpenStatementsAcrossRollback(): false
+getMaxBinaryLiteralLength(): 0
+getMaxCharLiteralLength(): 0
+getMaxColumnsInGroupBy(): 0
+getMaxColumnsInIndex(): 0
+getMaxColumnsInOrderBy(): 0
+getMaxColumnsInSelect(): 0
+getMaxColumnsInTable(): 0
+getMaxConnections(): 0
+getMaxCursorNameLength(): 18
+getMaxIndexLength(): 0
+getMaxSchemaNameLength(): 30
+getMaxProcedureNameLength(): 128
+getMaxCatalogNameLength(): 0
+getMaxRowSize(): 0
+doesMaxRowSizeIncludeBlobs(): true
+getMaxStatementLength(): 0
+getMaxStatements(): 0
+getMaxTableNameLength(): 128
+getMaxTablesInSelect(): 0
+getMaxUserNameLength(): 30
+supportsTransactions(): true
+supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE): false
+supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ): true
+supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE): true
+supportsDataDefinitionAndDataManipulationTransactions(): true
+supportsDataManipulationTransactionsOnly(): false
+dataDefinitionCausesTransactionCommit(): false
+dataDefinitionIgnoredInTransactions(): false
+getConnection(): same connection
+getProcedureColumns():
+PROCEDURE_CAT,PROCEDURE_SCHEM,PROCEDURE_NAME,COLUMN_NAME,COLUMN_TYPE,DATA_TYPE,TYPE_NAME,PRECISION,LENGTH,SCALE,RADIX,NULLABLE,REMARKS,METHOD_ID,PARAMETER_ID
+null,APP,GETPCTEST1,OUTB,4,12,VARCHAR,3,3,0,10,1,null,12,0
+null,APP,GETPCTEST1,A,1,12,VARCHAR,3,3,0,10,1,null,12,1
+null,APP,GETPCTEST1,B,1,2,NUMERIC,5,6,0,10,1,null,12,2
+null,APP,GETPCTEST1,C,1,5,SMALLINT,5,2,0,10,1,null,12,3
+null,APP,GETPCTEST1,E,1,5,SMALLINT,5,2,0,10,1,null,12,4
+null,APP,GETPCTEST1,F,1,4,INTEGER,10,4,0,10,1,null,12,5
+null,APP,GETPCTEST1,G,1,-5,BIGINT,19,8,0,10,1,null,12,6
+null,APP,GETPCTEST1,H,1,8,DOUBLE,52,8,0,2,1,null,12,7
+null,APP,GETPCTEST1,I,1,8,DOUBLE,52,8,0,2,1,null,12,8
+null,APP,GETPCTEST1,K,1,91,DATE,10,-1,0,10,1,null,12,9
+null,APP,GETPCTEST1,L,1,92,TIME,8,-1,0,10,1,null,12,10
+null,APP,GETPCTEST1,T,1,93,TIMESTAMP,26,-1,0,10,1,null,12,11
+null,APP,GETPCTEST2,PA,1,4,INTEGER,10,4,0,10,1,null,2,0
+null,APP,GETPCTEST2,PB,1,-5,BIGINT,19,8,0,10,1,null,2,1
+null,APP,GETPCTEST3A,STRING1,1,12,VARCHAR,5,5,0,10,1,null,2,0
+null,APP,GETPCTEST3A,STRING2,4,12,VARCHAR,5,5,0,10,1,null,2,1
+null,APP,GETPCTEST3B,STRING3,1,12,VARCHAR,5,5,0,10,1,null,2,0
+null,APP,GETPCTEST3B,STRING4,2,12,VARCHAR,5,5,0,10,1,null,2,1
+null,APP,GETPCTEST4BX,RETPARAM,4,4,INTEGER,10,4,0,10,1,null,1,0
+getTables() with TABLE_TYPE in ('SYSTEM TABLE') :
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+,SYS,SYSALIASES,SYSTEM TABLE,
+,SYS,SYSCHECKS,SYSTEM TABLE,
+,SYS,SYSCOLUMNS,SYSTEM TABLE,
+,SYS,SYSCONGLOMERATES,SYSTEM TABLE,
+,SYS,SYSCONSTRAINTS,SYSTEM TABLE,
+,SYS,SYSDEPENDS,SYSTEM TABLE,
+,SYS,SYSFILES,SYSTEM TABLE,
+,SYS,SYSFOREIGNKEYS,SYSTEM TABLE,
+,SYS,SYSKEYS,SYSTEM TABLE,
+,SYS,SYSSCHEMAS,SYSTEM TABLE,
+,SYS,SYSSTATEMENTS,SYSTEM TABLE,
+,SYS,SYSSTATISTICS,SYSTEM TABLE,
+,SYS,SYSTABLES,SYSTEM TABLE,
+,SYS,SYSTRIGGERS,SYSTEM TABLE,
+,SYS,SYSVIEWS,SYSTEM TABLE,
+,SYSIBM,SYSDUMMY1,SYSTEM TABLE,
+getTables() with no types:
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+,SYS,SYSALIASES,SYSTEM TABLE,
+,SYS,SYSCHECKS,SYSTEM TABLE,
+,SYS,SYSCOLUMNS,SYSTEM TABLE,
+,SYS,SYSCONGLOMERATES,SYSTEM TABLE,
+,SYS,SYSCONSTRAINTS,SYSTEM TABLE,
+,SYS,SYSDEPENDS,SYSTEM TABLE,
+,SYS,SYSFILES,SYSTEM TABLE,
+,SYS,SYSFOREIGNKEYS,SYSTEM TABLE,
+,SYS,SYSKEYS,SYSTEM TABLE,
+,SYS,SYSSCHEMAS,SYSTEM TABLE,
+,SYS,SYSSTATEMENTS,SYSTEM TABLE,
+,SYS,SYSSTATISTICS,SYSTEM TABLE,
+,SYS,SYSTABLES,SYSTEM TABLE,
+,SYS,SYSTRIGGERS,SYSTEM TABLE,
+,SYS,SYSVIEWS,SYSTEM TABLE,
+,SYSIBM,SYSDUMMY1,SYSTEM TABLE,
+,APP,ALLTYPES,TABLE,
+,APP,INFLIGHT,TABLE,
+,APP,LOUIE,TABLE,
+,APP,REFTAB,TABLE,
+,APP,REFTAB2,TABLE,
+,APP,T,TABLE,
+,APP,SCREWIE,VIEW,
+getTables() with TABLE_TYPE in ('VIEW','TABLE') :
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE,REMARKS
+,APP,ALLTYPES,TABLE,
+,APP,INFLIGHT,TABLE,
+,APP,LOUIE,TABLE,
+,APP,REFTAB,TABLE,
+,APP,REFTAB2,TABLE,
+,APP,T,TABLE,
+,APP,SCREWIE,VIEW,
+getTableTypes():
+TABLE_TYPE
+SYSTEM TABLE
+TABLE
+VIEW
+getColumns():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+getColumns('SYSTABLES'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,SYS,SYSTABLES,TABLEID,1,CHAR,36,null,null,10,0,,null,null,null,72,1,NO
+,SYS,SYSTABLES,TABLENAME,12,VARCHAR,128,null,null,10,0,,null,null,null,256,2,NO
+,SYS,SYSTABLES,TABLETYPE,1,CHAR,1,null,null,10,0,,null,null,null,2,3,NO
+,SYS,SYSTABLES,SCHEMAID,1,CHAR,36,null,null,10,0,,null,null,null,72,4,NO
+,SYS,SYSTABLES,LOCKGRANULARITY,1,CHAR,1,null,null,10,0,,null,null,null,2,5,NO
+getColumns('ALLTYPES'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,APP,ALLTYPES,SMALLINTCOL,5,SMALLINT,5,null,null,10,1,,null,null,null,null,1,YES
+,APP,ALLTYPES,INTCOL,4,INTEGER,10,null,null,10,1,,20,null,null,null,2,YES
+,APP,ALLTYPES,BIGINTCOL,-5,BIGINT,19,null,null,10,1,,null,null,null,null,3,YES
+,APP,ALLTYPES,REALCOL,7,REAL,23,null,null,2,1,,null,null,null,null,4,YES
+,APP,ALLTYPES,DOUBLEPRECCOL,8,DOUBLE,52,null,null,2,1,,10,null,null,null,5,YES
+,APP,ALLTYPES,DECIMALCOL10P4S,3,DECIMAL,10,null,4,10,1,,null,null,null,null,6,YES
+,APP,ALLTYPES,NUMERICCOL20P2S,2,NUMERIC,20,null,2,10,1,,null,null,null,null,7,YES
+,APP,ALLTYPES,CHAR8COL___,1,CHAR,8,null,null,10,1,,null,null,null,16,8,YES
+,APP,ALLTYPES,VARCHAR9COL,12,VARCHAR,9,null,null,10,1,,null,null,null,18,9,YES
+,APP,ALLTYPES,LONGVARCHARCOL,-1,LONG VARCHAR,32700,null,null,10,1,,null,null,null,null,10,YES
+,APP,ALLTYPES,BLOBCOL,2004,BLOB,3072,null,null,10,1,,null,null,null,null,11,YES
+getColumns('LOUIE'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,APP,LOUIE,I,4,INTEGER,10,null,null,10,0,,10,null,null,null,1,NO
+,APP,LOUIE,S,5,SMALLINT,5,null,null,10,0,,null,null,null,null,2,NO
+,APP,LOUIE,C30,1,CHAR,30,null,null,10,0,,null,null,null,60,3,NO
+,APP,LOUIE,VC10,12,VARCHAR,10,null,null,10,0,,'asdf',null,null,20,4,NO
+,APP,LOUIE,AI,-5,BIGINT,19,null,null,10,0,,AUTOINCREMENT: start -10 increment 2001,null,null,null,5,NO
+getColumns('INFLIGHT'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,APP,INFLIGHT,FLT_NUM,1,CHAR,20,null,null,10,0,,null,null,null,40,1,NO
+,APP,INFLIGHT,FLT_ORIGIN,1,CHAR,6,null,null,10,1,,null,null,null,12,2,YES
+,APP,INFLIGHT,FLT_DEST,1,CHAR,6,null,null,10,1,,null,null,null,12,3,YES
+,APP,INFLIGHT,FLT_AIRCRAFT,1,CHAR,20,null,null,10,1,,null,null,null,40,4,YES
+,APP,INFLIGHT,FLT_FLYING_TIME,12,VARCHAR,22,null,null,10,1,,null,null,null,44,5,YES
+,APP,INFLIGHT,FLT_DEPT_TIME,1,CHAR,8,null,null,10,1,,null,null,null,16,6,YES
+,APP,INFLIGHT,FLT_ARR_TIME,1,CHAR,8,null,null,10,1,,null,null,null,16,7,YES
+,APP,INFLIGHT,FLT_NOTES,12,VARCHAR,510,null,null,10,1,,null,null,null,1020,8,YES
+,APP,INFLIGHT,FLT_DAYS_OF_WK,1,CHAR,14,null,null,10,1,,null,null,null,28,9,YES
+,APP,INFLIGHT,FLT_CRAFT_PIC,12,VARCHAR,32672,null,null,10,1,,null,null,null,65344,10,YES
+getColumnPrivileges():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,GRANTOR,GRANTEE,PRIVILEGE,IS_GRANTABLE
+getTablePrivileges():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,GRANTOR,GRANTEE,PRIVILEGE,IS_GRANTABLE
+getBestRowIdentifier("",null,"LOUIE"):
+SCOPE,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,PSEUDO_COLUMN
+2,I,4,INTEGER,4,null,10,1
+2,VC10,12,VARCHAR,10,null,0,1
+getBestRowIdentifier("","SYS","SYSTABLES"):
+SCOPE,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,PSEUDO_COLUMN
+2,TABLEID,1,CHAR,36,null,0,1
+getVersionColumns():
+SCOPE,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,PSEUDO_COLUMN
+getPrimaryKeys():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,KEY_SEQ,PK_NAME
+,APP,LOUIE,I,2,PRIMKEY
+,APP,LOUIE,VC10,1,PRIMKEY
+getPrimaryKeys(null, null, tablename):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,KEY_SEQ,PK_NAME
+,APP,LOUIE,I,2,PRIMKEY
+,APP,LOUIE,VC10,1,PRIMKEY
+getImportedKeys():
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getExportedKeys():
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+---------------------------------------
+getCrossReference('',null,'louie','',null,'reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+getCrossReference('','APP','reftab','',null,'reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getCrossReference('',null,null,'','APP','reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getImportedKeys('',null,null,'','APP','reftab' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,REFTAB,DPRIM,,APP,REFTAB,DFOR,1,3,3,FKEYSELF,PKEY_REFTAB,7
+getCrossReference('',null,'louie','','APP',null):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+getExportedKeys('',null,'louie,'','APP',null ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,LOUIE,VC10,,APP,REFTAB,VC10,1,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB,I,2,3,3,FKEY1,PRIMKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S2,2,3,3,FKEY2,UNIQUEKEY,7
+,APP,LOUIE,C30,,APP,REFTAB,C30,1,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,S,,APP,REFTAB,S,2,3,3,FKEY3,UNIQUEKEY,7
+,APP,LOUIE,VC10,,APP,REFTAB2,T2_VC10,1,3,3,T2_FKEY1,PRIMKEY,7
+,APP,LOUIE,I,,APP,REFTAB2,T2_I,2,3,3,T2_FKEY1,PRIMKEY,7
+getCrossReference('','badschema','LOUIE','','APP','REFTAB' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+getTypeInfo():
+TYPE_NAME,DATA_TYPE,PRECISION,LITERAL_PREFIX,LITERAL_SUFFIX,CREATE_PARAMS,NULLABLE,CASE_SENSITIVE,SEARCHABLE,UNSIGNED_ATTRIBUTE,FIXED_PREC_SCALE,AUTO_INCREMENT,LOCAL_TYPE_NAME,MINIMUM_SCALE,MAXIMUM_SCALE,SQL_DATA_TYPE,SQL_DATETIME_SUB,NUM_PREC_RADIX
+BIGINT,-5,19,null,null,null,1,false,2,false,false,true,BIGINT,0,0,null,null,10
+LONG VARCHAR FOR BIT DATA,-4,32700,X',',null,1,false,2,true,false,false,LONG VARCHAR FOR BIT DATA,0,0,null,null,0
+VARCHAR () FOR BIT DATA,-3,32762,X',',length,1,false,2,true,false,false,VARCHAR () FOR BIT DATA,0,0,null,null,2
+CHAR () FOR BIT DATA,-2,254,X',',length,1,false,2,true,false,false,CHAR () FOR BIT DATA,0,0,null,null,2
+LONG VARCHAR,-1,32700,',',null,1,true,3,true,false,false,LONG VARCHAR,0,0,null,null,0
+LONG NVARCHAR,-1,32700,',',null,1,true,3,true,false,false,LONG NVARCHAR,0,0,null,null,0
+CHAR,1,254,',',length,1,true,3,true,false,false,CHAR,0,0,null,null,0
+NATIONAL CHAR,1,2147483647,',',length,1,true,3,true,false,false,NATIONAL CHAR,0,0,null,null,0
+NUMERIC,2,31,null,null,precision,scale,1,false,2,false,true,false,NUMERIC,0,32767,null,null,10
+DECIMAL,3,31,null,null,precision,scale,1,false,2,false,true,false,DECIMAL,0,32767,null,null,10
+INTEGER,4,10,null,null,null,1,false,2,false,false,true,INTEGER,0,0,null,null,10
+SMALLINT,5,5,null,null,null,1,false,2,false,false,true,SMALLINT,0,0,null,null,10
+FLOAT,6,52,null,null,precision,1,false,2,false,false,false,FLOAT,0,0,null,null,2
+REAL,7,23,null,null,null,1,false,2,false,false,false,REAL,0,0,null,null,2
+DOUBLE,8,52,null,null,null,1,false,2,false,false,false,DOUBLE,0,0,null,null,2
+VARCHAR,12,32672,',',length,1,true,3,true,false,false,VARCHAR,0,0,null,null,0
+NATIONAL CHAR VARYING,12,2147483647,',',length,1,true,3,true,false,false,NATIONAL CHAR VARYING,0,0,null,null,0
+DATE,91,10,DATE',',null,1,false,2,true,false,false,DATE,0,0,null,null,0
+TIME,92,0,TIME',',null,1,false,2,true,false,false,TIME,0,0,null,null,0
+TIMESTAMP,93,0,TIMESTAMP',',null,1,false,2,true,false,false,TIMESTAMP,0,0,null,null,0
+BLOB,2004,2147483647,null,null,length,1,false,1,null,false,null,BLOB,null,null,null,null,null
+CLOB,2005,2147483647,',',length,1,true,1,null,false,null,CLOB,null,null,null,null,null
+getIndexInfo():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,NON_UNIQUE,INDEX_QUALIFIER,INDEX_NAME,TYPE,ORDINAL_POSITION,COLUMN_NAME,ASC_OR_DESC,CARDINALITY,PAGES,FILTER_CONDITION
+,SYS,SYSCOLUMNS,false,,SYSCOLUMNS_INDEX1,3,1,REFERENCEID,A,null,null,null
+,SYS,SYSCOLUMNS,false,,SYSCOLUMNS_INDEX1,3,2,COLUMNNAME,A,null,null,null
+getIndexInfo():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,NON_UNIQUE,INDEX_QUALIFIER,INDEX_NAME,TYPE,ORDINAL_POSITION,COLUMN_NAME,ASC_OR_DESC,CARDINALITY,PAGES,FILTER_CONDITION
+,SYS,SYSCOLUMNS,false,,SYSCOLUMNS_INDEX1,3,1,REFERENCEID,A,null,null,null
+,SYS,SYSCOLUMNS,false,,SYSCOLUMNS_INDEX1,3,2,COLUMNNAME,A,null,null,null
+,SYS,SYSCOLUMNS,true,,SYSCOLUMNS_INDEX2,3,1,COLUMNDEFAULTID,A,null,null,null
+getIndexInfo():
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,NON_UNIQUE,INDEX_QUALIFIER,INDEX_NAME,TYPE,ORDINAL_POSITION,COLUMN_NAME,ASC_OR_DESC,CARDINALITY,PAGES,FILTER_CONDITION
+,SYS,SYSTABLES,false,,SYSTABLES_INDEX1,3,1,TABLENAME,A,null,null,null
+,SYS,SYSTABLES,false,,SYSTABLES_INDEX1,3,2,SCHEMAID,A,null,null,null
+,SYS,SYSTABLES,false,,SYSTABLES_INDEX2,3,1,TABLEID,A,null,null,null
+getColumns('SYSTABLES'):
+TABLE_CAT,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,BUFFER_LENGTH,DECIMAL_DIGITS,NUM_PREC_RADIX,NULLABLE,REMARKS,COLUMN_DEF,SQL_DATA_TYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE
+,SYS,SYSTABLES,TABLEID,1,CHAR,36,null,null,10,0,,null,null,null,72,1,NO
+,SYS,SYSTABLES,TABLENAME,12,VARCHAR,128,null,null,10,0,,null,null,null,256,2,NO
+,SYS,SYSTABLES,TABLETYPE,1,CHAR,1,null,null,10,0,,null,null,null,2,3,NO
+,SYS,SYSTABLES,SCHEMAID,1,CHAR,36,null,null,10,0,,null,null,null,72,4,NO
+,SYS,SYSTABLES,LOCKGRANULARITY,1,CHAR,1,null,null,10,0,,null,null,null,2,5,NO
+---------------------------------------
+Referential action values
+RESTRICT = 1
+NO ACTION = 3
+CASCADE = 0
+SETNULL = 2
+SETDEFAULT = 4
+getCrossReference('','APP','REFACTION1','','APP','REFACTIONNONE' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTNONE,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTRESTRICT' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTRESTRICT,A,1,3,1,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTNOACTION' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTCASCADE' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTCASCADE,A,1,3,0,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTSETNULL' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTSETNULL,A,1,3,2,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTUPDRESTRICT' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTUPDRESTRICT,A,1,1,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getCrossReference('','APP','REFACTION1','','APP','REFACTUPDNOACTION' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTUPDNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+getImportedKeys - none update Passed
+getImportedKeys - none delete Passed
+getImportedKeys - delete Restrict Passed
+getImportedKeys - delete NO ACTION Passed
+getImportedKeys - delete CASCADE Passed
+getImportedKeys - delete SET NULL Passed
+getImportedKeys - update Restrict Passed
+getImportedKeys - update NO ACTION Passed
+getExportedKeys('',null,null,'','APP','REFACTION1' ):
+PKTABLE_CAT,PKTABLE_SCHEM,PKTABLE_NAME,PKCOLUMN_NAME,FKTABLE_CAT,FKTABLE_SCHEM,FKTABLE_NAME,FKCOLUMN_NAME,KEY_SEQ,UPDATE_RULE,DELETE_RULE,FK_NAME,PK_NAME,DEFERRABILITY
+,APP,REFACTION1,A,,APP,REFACTCASCADE,A,1,3,0,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTNONE,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTRESTRICT,A,1,3,1,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTSETNULL,A,1,3,2,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTUPDNOACTION,A,1,3,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+,APP,REFACTION1,A,,APP,REFACTUPDRESTRICT,A,1,1,3,xxxxGENERATED-IDxxxx,xxxxGENERATED-IDxxxx,7
+---------------------------------------
+getColumns for 'T1'
+  Next line is real null.
+defval for col C1 type INTEGER DEFAULT 'null' wasnull true
+  Next line is real null.
+defval for col C2 type INTEGER DEFAULT 'null' wasnull true
+defval for col C3 type INTEGER DEFAULT 'NULL' wasnull false
+  Next line is real null.
+defval for col C4 type CHAR DEFAULT 'null' wasnull true
+defval for col C5 type CHAR DEFAULT 'NULL' wasnull false
+defval for col C6 type CHAR DEFAULT ''NULL'' wasnull false
+defval for col C7 type INTEGER DEFAULT '88' wasnull false
+Test metadata finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadataMultiConn.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/metadataMultiConn.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+Test metadataMultiConn starting
+A new connection is doing metadata calls, but never commit...
+Submitted getTypeInfo request
+Getting column info for %
+A new connection is doing metadata calls, but never commit...
+Submitted getTypeInfo request
+Getting column info for %
+A new connection is doing metadata calls, but never commit...
+Submitted getTypeInfo request
+Getting column info for %
+All tables are consistent.
+Test metadataMultiConn finishes.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/miscerrors.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/miscerrors.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,31 @@
+ij> --
+-- this test is for miscellaneous errors
+--
+-- lexical error
+select @#^%*&! from swearwords;
+ERROR 42X02: Lexical error at line 6, column 8.  Encountered: "@" (64), after : "".
+ij> --
+-- try to create duplicate table
+--
+create table a (one int);
+0 rows inserted/updated/deleted
+ij> create table a (one int, two int);
+ERROR X0Y32: Table/View 'A' already exists in Schema 'APP'.
+ij> create table a (one int);
+ERROR X0Y32: Table/View 'A' already exists in Schema 'APP'.
+ij> drop table a ;
+0 rows inserted/updated/deleted
+ij> create table a (one int, two int, three int);
+0 rows inserted/updated/deleted
+ij> insert into a values (1,2,3);
+1 row inserted/updated/deleted
+ij> select * from a;
+ONE        |TWO        |THREE      
+-----------------------------------
+1          |2          |3          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- set isolation to repeatable read
+set isolation serializable;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/modifyColumn.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/modifyColumn.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,157 @@
+ij> -- Testing changing the length of a column.
+-- Also testing the new syntax for generated column spec and identity attribute
+create table alltypes (i int, tn int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				nc char(10), nvc varchar(10),
+				d double precision, r real, f float,
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(2) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2), n numeric(8,4), o bigint);
+0 rows inserted/updated/deleted
+ij> -- lets start with negative tests first.
+alter table alltypes alter c set data type char(20);
+ERROR 42Z16: Only columns of type VARCHAR may have their length altered. 
+ij> alter table alltypes alter b set data type char(4) for bit data;
+ERROR 42Z16: Only columns of type VARCHAR may have their length altered. 
+ij> alter table alltypes alter nc set data type char(20);
+ERROR 42Z16: Only columns of type VARCHAR may have their length altered. 
+ij> alter table alltypes alter dc set data type decimal (8,2);
+ERROR 42Z16: Only columns of type VARCHAR may have their length altered. 
+ij> alter table alltypes alter n set data type numeric (12,8);
+ERROR 42Z16: Only columns of type VARCHAR may have their length altered. 
+ij> alter table alltypes alter c set data type varchar(10);
+ERROR 42Z15: Invalid Type specified for column 'C'. The type of a column may not be changed.
+ij> alter table alltypes alter b set data type varchar(2) for bit data;
+ERROR 42Z15: Invalid Type specified for column 'B'. The type of a column may not be changed.
+ij> alter table alltypes alter dc set data type numeric(8,2);
+ERROR 42Z15: Invalid Type specified for column 'DC'. The type of a column may not be changed.
+ij> alter table alltypes alter tn set data type int;
+ERROR 42Z16: Only columns of type VARCHAR may have their length altered. 
+ij> alter table alltypes alter v set data type varchar(1);
+ERROR 42Z17: Invalid Length specified for Column 'V'. Length must be greater than the current column length
+ij> alter table alltypes alter v set data type varchar(49);
+ERROR 42Z17: Invalid Length specified for Column 'V'. Length must be greater than the current column length
+ij> alter table alltypes alter bv set data type varchar(1) for bit data;
+ERROR 42Z17: Invalid Length specified for Column 'BV'. Length must be greater than the current column length
+ij> alter table alltypes alter bv set data type varchar(2) for bit data;
+0 rows inserted/updated/deleted
+ij> alter table alltypes alter nvc set data type varchar(0);
+ERROR 42X44: Invalid length '0' in column specification.
+ij> alter table alltypes alter nvc set data type varchar(9);
+ERROR 42Z17: Invalid Length specified for Column 'NVC'. Length must be greater than the current column length
+ij> drop table alltypes;
+0 rows inserted/updated/deleted
+ij> create table t0 (i int not null, v varchar(1) not null, constraint pk primary key(v,i));
+0 rows inserted/updated/deleted
+ij> -- this should work. primary key constraint has no referencing fkey
+-- constraints.
+alter table t0 alter v set data type varchar(2);
+0 rows inserted/updated/deleted
+ij> create table t1 (i int, v varchar(2), constraint fk foreign key  (v,i) references t0(v,i));
+0 rows inserted/updated/deleted
+ij> alter table t0 alter v set data type varchar(3);
+ERROR 42Z19: Column 'V' is being referenced by atleast one foreign key constraint 'FK'. To alter the length of this column, you should drop referencing constraints, perform the ALTER TABLE and then recreate the constraints.
+ij> -- should fail; can't muck around with fkey constraints.
+alter table t1 alter v set data type varchar(3);
+ERROR 42Z18: Column 'V' is part of a foreign key constraint 'FK'. To alter the length of this column, you should drop the constraint first, perform the ALTER TABLE and then recreate the constraint.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t0;
+0 rows inserted/updated/deleted
+ij> -- do the same thing over again with a unique key constraint this time.
+create table t0 (i int not null, v varchar(1) not null, constraint  uq unique(v,i));
+0 rows inserted/updated/deleted
+ij> -- this should work. unique constraint has no referencing fkey
+-- constraints.
+alter table t0 alter v set data type varchar(2);
+0 rows inserted/updated/deleted
+ij> create table t1 (i int, v varchar(2), constraint fk foreign key  (v,i) references t0(v,i));
+0 rows inserted/updated/deleted
+ij> -- this should fail-- someone is referencing me.
+alter table t0 alter v set data type varchar(3);
+ERROR 42Z19: Column 'V' is being referenced by atleast one foreign key constraint 'FK'. To alter the length of this column, you should drop referencing constraints, perform the ALTER TABLE and then recreate the constraints.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t0;
+0 rows inserted/updated/deleted
+ij> --
+-- test that we can't alter a column with an autoincrement default to nullable
+create table t1(a int generated always as identity (start with 1, increment by 1));
+0 rows inserted/updated/deleted
+ij> insert into t1 values(DEFAULT);
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+ij> -- this should fail
+alter table t1 modify a null;
+ERROR 42X01: Syntax error: Encountered "modify" at line 2, column 16.
+ij> insert into t1 values(DEFAULT);
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- lets get to positive tests.
+create table t1 (vc varchar(1) not null, nvc varchar(1) not null, bv varchar(1) for bit data not null);
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint uq unique (vc, nvc, bv);
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('p', 'p', x'01');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('pe', 'p', x'01');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR 'pe' to length 1.
+ij> alter table t1 alter vc set data type varchar(2);
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('pe', 'p', x'01');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('pe', 'pe', x'01');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR 'pe' to length 1.
+ij> alter table t1 alter nvc set data type varchar(2);
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('pe', 'pe', x'01');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('pe', 'pe', x'1000');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR () FOR BIT DATA '1000' to length 1.
+ij> alter table t1 alter bv set data type varchar(2) for bit data;
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('pe', 'pe', x'1000');
+1 row inserted/updated/deleted
+ij> -- make sure constraints aren't lost due to an alter.
+insert into t1 values ('pe','pe', x'01');
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'UQ' defined on 'T1'.
+ij> -- do some selects to ensure consistency of data.
+select * from t1 where vc='pe';
+VC  |NVC |BV  
+--------------
+pe  |p   |01  
+pe  |pe  |01  
+pe  |pe  |1000
+ij> select * from t1 where vc='pe';
+VC  |NVC |BV  
+--------------
+pe  |p   |01  
+pe  |pe  |01  
+pe  |pe  |1000
+ij> alter table t1 alter vc set data type varchar(3);
+0 rows inserted/updated/deleted
+ij> select * from t1 where vc='pe';
+VC  |NVC |BV  
+--------------
+pe  |p   |01  
+pe  |pe  |01  
+pe  |pe  |1000
+ij> select * from t1 where vc='pe';
+VC  |NVC |BV  
+--------------
+pe  |p   |01  
+pe  |pe  |01  
+pe  |pe  |1000
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nestedCommit.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nestedCommit.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,103 @@
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> -- make sure that we cannot do a commit/rollback
+-- on a nested connection when we are in the middle
+-- of something that has to be atomic (e.g. DML).
+-- commit/rollback on a nested connection is only
+-- permitted when we are doing something simple
+-- like CALL myMethod() or VALUES myMethod()
+CREATE PROCEDURE doConnCommit() 
+       DYNAMIC RESULT SETS 0 LANGUAGE JAVA 
+       EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnCommit' 
+	   CONTAINS SQL
+       PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE doConnRollback() 
+       DYNAMIC RESULT SETS 0 LANGUAGE JAVA 
+       EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnRollback' 
+	   CONTAINS SQL
+       PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE doConnStmt(IN TEXT CHAR(50)) 
+       DYNAMIC RESULT SETS 0 LANGUAGE JAVA 
+       EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnStmtNoRS' 
+	   CONTAINS SQL
+       PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION doConnCommitInt() 
+       RETURNS INT EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnCommitInt' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE FUNCTION doConnStmtInt(TEXT CHAR(50)) 
+       RETURNS INT EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnStmtIntNoRS' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> create table x (x int);
+0 rows inserted/updated/deleted
+ij> insert into x values 1,2,3,4;
+4 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- all the following calls should succeed 
+call doConnCommit();
+0 rows inserted/updated/deleted
+ij> call doConnRollback();
+0 rows inserted/updated/deleted
+ij> -- No longer supported as language statements.
+-- call doConnStmt('commit');
+-- call doConnStmt('rollback');
+call doConnStmt('call doConnCommit()');
+0 rows inserted/updated/deleted
+ij> call doConnStmt('call doConnRollback()');
+0 rows inserted/updated/deleted
+ij> -- call doConnStmt('call doConnStmt(''call doConnStmt(''''commit'''')'')');
+values doConnCommitInt();
+1          
+-----------
+1          
+ERROR XCL16: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+ij> -- values doConnStmtInt('commit');
+-- values doConnStmtInt('rollback');
+-- values doConnStmtInt('call doConnStmt(''call doConnStmt(''''commit'''')'')');
+values doConnStmtInt('values doConnCommitInt()');
+1          
+-----------
+1          
+ij> -- fail
+insert into x select x+doConnCommitInt() from x;
+ERROR 38000: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.
+ERROR X0Y66: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.
+ij> delete from x where x in (select x+doConnCommitInt() from x);
+ERROR 38000: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.
+ERROR X0Y66: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.
+ij> delete from x where x = doConnCommitInt();
+ERROR 38000: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.
+ERROR X0Y66: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.
+ij> update x set x = doConnCommitInt();
+ERROR 38000: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.
+ERROR X0Y66: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.
+ij> -- insert into x values doConnStmtInt('call doConnStmt(''call doConnStmt(''''commit'''')'')');
+-- select doConnStmtInt('call doConnStmt(''call doConnStmt(''''rollback'''')'')') from x;
+select doConnStmtInt('call doConnStmt(''call doConnCommit()'')') from x;
+1          
+-----------
+ERROR 38000: The exception 'SQL Exception: The exception 'SQL Exception: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.' was thrown while evaluating an expression.' was thrown while evaluating an expression.
+ERROR 38000: The exception 'SQL Exception: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.' was thrown while evaluating an expression.
+ERROR 38000: The exception 'SQL Exception: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.' was thrown while evaluating an expression.
+ERROR X0Y66: Cannot issue commit in a nested connection when there is a pending operation in the parent connection.
+ij> -- isolation level always fails in a nested connection
+call doConnStmt('set isolation serializable');
+0 rows inserted/updated/deleted
+ij> -- clean up
+drop table x;
+0 rows inserted/updated/deleted
+ij> drop procedure doConnCommit;
+0 rows inserted/updated/deleted
+ij> drop procedure doConnRollback;
+0 rows inserted/updated/deleted
+ij> drop function doConnCommitInt;
+0 rows inserted/updated/deleted
+ij> drop procedure doConnStmt;
+0 rows inserted/updated/deleted
+ij> drop function doConnStmtInt;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nonreserved.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nonreserved.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,404 @@
+ij> -- This tests that SQL92 formally reserved words are now unreserved
+--
+-- INTERVAL
+create table interval(interval int);
+0 rows inserted/updated/deleted
+ij> prepare interval as 'select * from interval';
+ij> execute interval;
+INTERVAL   
+-----------
+ij> create index interval on interval(interval);
+0 rows inserted/updated/deleted
+ij> drop table interval;
+0 rows inserted/updated/deleted
+ij> remove interval;
+ij> -- MODULE
+create table module(module int);
+0 rows inserted/updated/deleted
+ij> prepare module as 'select * from module';
+ij> execute module;
+MODULE     
+-----------
+ij> create index module on module(module);
+0 rows inserted/updated/deleted
+ij> drop table module;
+0 rows inserted/updated/deleted
+ij> remove module;
+ij> -- NAMES
+create table names(names int);
+0 rows inserted/updated/deleted
+ij> prepare names as 'select * from names';
+ij> execute names;
+NAMES      
+-----------
+ij> create index names on names(names);
+0 rows inserted/updated/deleted
+ij> drop table names;
+0 rows inserted/updated/deleted
+ij> remove names;
+ij> -- PRECISION
+create table precision(precision int);
+0 rows inserted/updated/deleted
+ij> prepare precision as 'select * from precision';
+ij> execute precision;
+PRECISION  
+-----------
+ij> create index precision on precision(precision);
+0 rows inserted/updated/deleted
+ij> drop table precision;
+0 rows inserted/updated/deleted
+ij> remove precision;
+ij> -- POSITION
+create table position(position int);
+0 rows inserted/updated/deleted
+ij> prepare position as 'select * from position';
+ij> execute position;
+POSITION   
+-----------
+ij> create index position on position(position);
+0 rows inserted/updated/deleted
+ij> drop table position;
+0 rows inserted/updated/deleted
+ij> remove position;
+ij> -- SECTION
+create table section(section int);
+0 rows inserted/updated/deleted
+ij> prepare section as 'select * from section';
+ij> execute section;
+SECTION    
+-----------
+ij> create index section on section(section);
+0 rows inserted/updated/deleted
+ij> drop table section;
+0 rows inserted/updated/deleted
+ij> remove section;
+ij> -- VALUE
+create table value(value int);
+0 rows inserted/updated/deleted
+ij> prepare value as 'select * from value';
+ij> execute value;
+VALUE      
+-----------
+ij> create index value on value(value);
+0 rows inserted/updated/deleted
+ij> drop table value;
+0 rows inserted/updated/deleted
+ij> remove value;
+ij> -- DATE
+create table date (date date);
+0 rows inserted/updated/deleted
+ij> insert into date(date) values (date('2001-01-01'));
+1 row inserted/updated/deleted
+ij> select date from date;
+DATE      
+----------
+2001-01-01
+ij> select date( '2001-02-02'), date "2001-02-02" from date;
+1         |2001-02-02
+---------------------
+2001-02-02|2001-01-01
+ij> select date date from date;
+DATE      
+----------
+2001-01-01
+ij> select date as date from date;
+DATE      
+----------
+2001-01-01
+ij> select date.date as date from date date;
+DATE      
+----------
+2001-01-01
+ij> select date.date as date from date as date;
+DATE      
+----------
+2001-01-01
+ij> delete from date where date = date('2001-01-01');
+1 row inserted/updated/deleted
+ij> create index date on date(date);
+0 rows inserted/updated/deleted
+ij> drop table date;
+0 rows inserted/updated/deleted
+ij> remove date;
+IJ ERROR: Unable to establish prepared statement DATE
+ij> -- TIME
+create table time (time time);
+0 rows inserted/updated/deleted
+ij> insert into time(time) values (time('01:01:01'));
+1 row inserted/updated/deleted
+ij> select time from time;
+TIME    
+--------
+01:01:01
+ij> select time( '02:02:02'), time "02:02:02" from time;
+1       |02:02:02
+-----------------
+02:02:02|01:01:01
+ij> select time time from time;
+TIME    
+--------
+01:01:01
+ij> select time as time from time;
+TIME    
+--------
+01:01:01
+ij> select time.time as time from time time;
+TIME    
+--------
+01:01:01
+ij> select time.time as time from time as time;
+TIME    
+--------
+01:01:01
+ij> delete from time where time = time('01:01:01');
+1 row inserted/updated/deleted
+ij> create index time on time(time);
+0 rows inserted/updated/deleted
+ij> drop table time;
+0 rows inserted/updated/deleted
+ij> remove time;
+IJ ERROR: Unable to establish prepared statement TIME
+ij> -- TIMESTAMP
+create table timestamp (timestamp timestamp);
+0 rows inserted/updated/deleted
+ij> insert into timestamp(timestamp) values (timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx'));
+1 row inserted/updated/deleted
+ij> select timestamp from timestamp;
+TIMESTAMP                 
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select timestamp( 'xxxxxxFILTERED-TIMESTAMPxxxxx'), timestamp "xxxxxxFILTERED-TIMESTAMPxxxxx" from timestamp;
+1                         |xxxxxxFILTERED-TIMESTAMPxxxxx
+-----------------------------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select timestamp timestamp from timestamp;
+TIMESTAMP                 
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select timestamp as timestamp from timestamp;
+TIMESTAMP                 
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select timestamp.timestamp as timestamp from timestamp timestamp;
+TIMESTAMP                 
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> select timestamp.timestamp as timestamp from timestamp as timestamp;
+TIMESTAMP                 
+--------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx
+ij> delete from timestamp where timestamp = timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx');
+1 row inserted/updated/deleted
+ij> create index timestamp on timestamp(timestamp);
+0 rows inserted/updated/deleted
+ij> drop table timestamp;
+0 rows inserted/updated/deleted
+ij> remove timestamp;
+IJ ERROR: Unable to establish prepared statement TIMESTAMP
+ij> -- 
+create table DOMAIN (domain int);
+0 rows inserted/updated/deleted
+ij> insert into domain values (1);
+1 row inserted/updated/deleted
+ij> select domain from domain where domain > 0;
+DOMAIN     
+-----------
+1          
+ij> select domain from domain domain where domain > 0;
+DOMAIN     
+-----------
+1          
+ij> select domain.domain from domain domain where domain.domain > 0;
+DOMAIN     
+-----------
+1          
+ij> prepare domain as 'select * from domain';
+ij> execute domain;
+DOMAIN     
+-----------
+1          
+ij> create index domain on domain(domain);
+0 rows inserted/updated/deleted
+ij> drop table DOMAIN;
+0 rows inserted/updated/deleted
+ij> remove domain;
+ij> create table CATALOG (catalog int);
+0 rows inserted/updated/deleted
+ij> insert into catalog values (1);
+1 row inserted/updated/deleted
+ij> select catalog from catalog where catalog > 0;
+CATALOG    
+-----------
+1          
+ij> select catalog from catalog catalog where catalog > 0;
+CATALOG    
+-----------
+1          
+ij> prepare catalog as 'select * from catalog';
+ij> execute catalog;
+CATALOG    
+-----------
+1          
+ij> create index catalog on catalog(catalog);
+0 rows inserted/updated/deleted
+ij> drop table CATALOG;
+0 rows inserted/updated/deleted
+ij> remove catalog;
+ij> create table TIME (time int);
+0 rows inserted/updated/deleted
+ij> insert into time values (1);
+1 row inserted/updated/deleted
+ij> select time from time where time > 0;
+TIME       
+-----------
+1          
+ij> select time from time time where time > 0;
+TIME       
+-----------
+1          
+ij> prepare time as 'select * from time';
+ij> execute time;
+TIME       
+-----------
+1          
+ij> create index time on time(time);
+0 rows inserted/updated/deleted
+ij> drop table TIME;
+0 rows inserted/updated/deleted
+ij> remove time;
+ij> create table ACTION (action int);
+0 rows inserted/updated/deleted
+ij> insert into action values (1);
+1 row inserted/updated/deleted
+ij> select action from action where action > 0;
+ACTION     
+-----------
+1          
+ij> select action from action action where action > 0;
+ACTION     
+-----------
+1          
+ij> prepare action as 'select * from action';
+ij> create index action on action(action);
+0 rows inserted/updated/deleted
+ij> drop table ACTION;
+0 rows inserted/updated/deleted
+ij> create table DAY (day int);
+0 rows inserted/updated/deleted
+ij> insert into day values (1);
+1 row inserted/updated/deleted
+ij> select day from day where day > 0;
+DAY        
+-----------
+1          
+ij> select day from day day where day > 0;
+DAY        
+-----------
+1          
+ij> prepare day as 'select * from day';
+ij> create index day on day(day);
+0 rows inserted/updated/deleted
+ij> drop table DAY;
+0 rows inserted/updated/deleted
+ij> create table MONTH (month int);
+0 rows inserted/updated/deleted
+ij> insert into month values (1);
+1 row inserted/updated/deleted
+ij> select month from month where month > 0;
+MONTH      
+-----------
+1          
+ij> select month from month month where month > 0;
+MONTH      
+-----------
+1          
+ij> select month.month from month month where month.month > 0;
+MONTH      
+-----------
+1          
+ij> prepare month as 'select * from month';
+ij> execute month;
+MONTH      
+-----------
+1          
+ij> create index month on month(month);
+0 rows inserted/updated/deleted
+ij> drop table MONTH;
+0 rows inserted/updated/deleted
+ij> remove month;
+ij> create table USAGE (usage int);
+0 rows inserted/updated/deleted
+ij> insert into usage values (1);
+1 row inserted/updated/deleted
+ij> select usage from usage where usage > 0;
+USAGE      
+-----------
+1          
+ij> select usage from usage usage where usage > 0;
+USAGE      
+-----------
+1          
+ij> select usage.usage from usage usage where usage.usage > 0;
+USAGE      
+-----------
+1          
+ij> prepare usage as 'select * from usage';
+ij> create index usage on usage(usage);
+0 rows inserted/updated/deleted
+ij> drop table USAGE;
+0 rows inserted/updated/deleted
+ij> remove usage;
+ij> create table LANGUAGE (language int);
+0 rows inserted/updated/deleted
+ij> insert into language values (1);
+1 row inserted/updated/deleted
+ij> select language from language where language > 0;
+LANGUAGE   
+-----------
+1          
+ij> select language from language language where language > 0;
+LANGUAGE   
+-----------
+1          
+ij> select language.language from language language where language.language > 0;
+LANGUAGE   
+-----------
+1          
+ij> prepare language as 'select * from language';
+ij> create index language on language(language);
+0 rows inserted/updated/deleted
+ij> drop table LANGUAGE;
+0 rows inserted/updated/deleted
+ij> remove language;
+ij> -- making LOCKS keyword nonreserved as fix for Derby-38
+create table LOCKS (c11 int);
+0 rows inserted/updated/deleted
+ij> drop table LOCKS;
+0 rows inserted/updated/deleted
+ij> create table t1 (LOCKS int);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table LOCKS (locks int);
+0 rows inserted/updated/deleted
+ij> insert into locks values (1);
+1 row inserted/updated/deleted
+ij> select locks from locks where locks > 0;
+LOCKS      
+-----------
+1          
+ij> select locks from locks locks where locks > 0;
+LOCKS      
+-----------
+1          
+ij> select locks.locks from locks locks where locks.locks > 0;
+LOCKS      
+-----------
+1          
+ij> prepare locks as 'select * from locks';
+ij> create index locks on locks(locks);
+0 rows inserted/updated/deleted
+ij> drop table LOCKS;
+0 rows inserted/updated/deleted
+ij> remove locks;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nulls.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/nulls.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,227 @@
+ij> --
+-- this test shows the current supported null value functionality
+--
+autocommit off;
+ij> -- trying to define null and not null for a column
+create table a(a1 int null not null);
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 23.
+ij> -- same as above, except that it's in reverse order
+create table a(a1 int not null null);
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 32.
+ij> -- defining null constraint for a column now does not work
+create table a(a1 int not null , a2 int not null);
+0 rows inserted/updated/deleted
+ij> -- alter table adding explicitly nullable column and primary key column
+-- constraint on it fails
+alter table a add column a3 int null constraint ap1 primary key;
+ERROR 42X01: Syntax error: Encountered "null" at line 3, column 33.
+ij> -- alter table table level primary key constraint on nullable column
+-- doesn't give an error
+alter table a add constraint ap1 primary key(a1,a2);
+0 rows inserted/updated/deleted
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- create table with not null column and unique key should work
+create table a (a int not null unique );
+0 rows inserted/updated/deleted
+ij> insert into a values (1);
+1 row inserted/updated/deleted
+ij> -- second insert should fail
+insert into a values (1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'A'.
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- alter nullability on a unique column should fail
+create table a ( a int not null unique);
+0 rows inserted/updated/deleted
+ij> alter table a modify a null;
+ERROR 42X01: Syntax error: Encountered "modify" at line 1, column 15.
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- try adding a primary key where there is null data
+-- this should error
+create table a (a1 int not null, a2 int);
+0 rows inserted/updated/deleted
+ij> insert into a values(1, NULL);
+1 row inserted/updated/deleted
+ij> alter table a add constraint ap1 primary key(a1, a2);
+ERROR 42831: 'A2' cannot be a column of a primary key or unique key because it can contain null values.
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- try with multiple columns
+create table a (a1 int, a2 int, a3 int);
+0 rows inserted/updated/deleted
+ij> -- This is an error in DB2 compatibility mode
+alter table a add constraint ap1 primary key(a1, a2, a3);
+ERROR 42831: 'A1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- try with multiple null columns
+create table a (a1 int not null, a2 int, a3 int);
+0 rows inserted/updated/deleted
+ij> insert into a values(1,1,1);
+1 row inserted/updated/deleted
+ij> -- table with no null data should work
+alter table a add constraint ap1 primary key(a1, a2, a3);
+ERROR 42831: 'A2' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- insert a null into one of the primary key columns should fail
+insert into a values(1, NULL, 1);
+1 row inserted/updated/deleted
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- try with multiple null columns
+create table a (a1 int not null, a2 int default null, a3 int default null);
+0 rows inserted/updated/deleted
+ij> insert into a values(1,NULL,1);
+1 row inserted/updated/deleted
+ij> -- table with some null data should fail
+alter table a add constraint ap1 primary key(a1, a2, a3);
+ERROR 42831: 'A2' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- defining primarykey column constraint for explicitly nullable column
+-- gives error
+create table a1(ac1 int null primary key);
+ERROR 42X01: Syntax error: Encountered "null" at line 3, column 25.
+ij> -- defining primarykey table constraint on explicitly nullable columns
+-- give error
+create table a1(ac1 int null, ac2 int not null, primary key(ac1,ac2));
+ERROR 42X01: Syntax error: Encountered "null" at line 3, column 25.
+ij> -- should fail because
+-- not null must explicitly be specified for columns that have primary keys
+create table a1(ac1 int, ac2 int not null, primary key(ac1,ac2));
+ERROR 42831: 'AC1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- say null twice should fail
+create table a2(ac1 int null null);
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 25.
+ij> -- say not null, null and no null for a column. This is to make sure the flags
+-- stay proper for a column
+create table a3(ac1 int not null null not null);
+ERROR 42X01: Syntax error: Encountered "null" at line 3, column 34.
+ij> -- first statement says null and second one says not null. This is to make sure
+-- the flag for the first one doesn't affect the second one
+create table a3(ac1 int default null);
+0 rows inserted/updated/deleted
+ij> create table a4(ac1 int not null);
+0 rows inserted/updated/deleted
+ij> -- one column says null and second one says not null
+create table a5(ac1 int default null, ac2 int not null);
+0 rows inserted/updated/deleted
+ij> -- statement1 says null, 2nd says nothing but says primary key
+create table a6(ac1 int default null);
+0 rows inserted/updated/deleted
+ij> create table a7(ac1 int not null primary key);
+0 rows inserted/updated/deleted
+ij> -- create a table with null and non-null columns
+create table t (i int, i_d int default null, i_n int not null,
+		s smallint, s_d smallint default null, s_n smallint not null);
+0 rows inserted/updated/deleted
+ij> -- insert non-nulls into null and non-null columns
+insert into t (i, i_d, i_n, s, s_d, s_n) values (1, 1, 1, 1, 1, 1);
+1 row inserted/updated/deleted
+ij> -- insert nulls into those columns that take nulls
+insert into t values (null, null, 2, null, null, 2);
+1 row inserted/updated/deleted
+ij> -- insert a null as a default value into the first default null column
+insert into t (i, i_n, s, s_d, s_n) values (3, 3, 3, 3, 3);
+1 row inserted/updated/deleted
+ij> -- insert a null as a default value into the other default null columns
+insert into t (i, i_d, i_n, s, s_n) values (4, 4, 4, 4, 4);
+1 row inserted/updated/deleted
+ij> -- insert nulls as default values into all default null columns
+insert into t (i, i_n, s, s_n) values (5, 5, 5, 5);
+1 row inserted/updated/deleted
+ij> -- attempt to insert default values into the columns that don't accept nulls
+insert into t (i, i_d, s, s_d) values (6, 6, 6, 6);
+ERROR 23502: Column 'I_N'  cannot accept a NULL value.
+ij> -- insert default nulls into nullable columns that have no explicit defaults
+insert into t (i_d, i_n, s_d, s_n) values (7, 7, 7, 7);
+1 row inserted/updated/deleted
+ij> -- attempt to insert an explicit null into a column that doesn't accept nulls
+insert into t values (8, 8, null, 8, 8, 8);
+ERROR 23502: Column 'I_N'  cannot accept a NULL value.
+ij> -- attempt to insert an explicit null into the other columns
+-- that doesn't accept nulls
+insert into t values (9, 9, 9, 9, 9, null);
+ERROR 23502: Column 'S_N'  cannot accept a NULL value.
+ij> -- select all the successfully inserted rows
+select * from t;
+I          |I_D        |I_N        |S     |S_D   |S_N   
+--------------------------------------------------------
+1          |1          |1          |1     |1     |1     
+NULL       |NULL       |2          |NULL  |NULL  |2     
+3          |NULL       |3          |3     |3     |3     
+4          |4          |4          |4     |NULL  |4     
+5          |NULL       |5          |5     |NULL  |5     
+NULL       |7          |7          |NULL  |7     |7     
+ij> -- create a table with a non-null column with a default value of null
+-- and verify that nulls are not allowed
+create table s (x int default null not null, y int);
+0 rows inserted/updated/deleted
+ij> insert into s (y) values(1);
+ERROR 23502: Column 'X'  cannot accept a NULL value.
+ij> select * from s;
+X          |Y          
+-----------------------
+ij> -- is null/is not null on an integer type
+create table u (c1 integer);
+0 rows inserted/updated/deleted
+ij> insert into u values null;
+1 row inserted/updated/deleted
+ij> insert into u values 1;
+1 row inserted/updated/deleted
+ij> insert into u values null;
+1 row inserted/updated/deleted
+ij> insert into u values 2;
+1 row inserted/updated/deleted
+ij> select * from u where c1 is null;
+C1         
+-----------
+NULL       
+NULL       
+ij> select * from u where c1 is not null;
+C1         
+-----------
+1          
+2          
+ij> -- is [not] null and parameters
+prepare p1 as 'select * from u where cast (? as varchar(1)) is null';
+ij> execute p1 using 'values (''a'')';
+C1         
+-----------
+ij> prepare p2 as 'select * from u where cast (? as varchar(1)) is not null';
+ij> execute p2 using 'values (''a'')';
+C1         
+-----------
+NULL       
+1          
+NULL       
+2          
+ij> select count(*) from u where c1 is null;
+1          
+-----------
+2          
+ij> insert into u select * from (values null) as X;
+1 row inserted/updated/deleted
+ij> select count(*) from u where c1 is null;
+1          
+-----------
+3          
+ij> -- cleanup
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> drop table a3;
+0 rows inserted/updated/deleted
+ij> drop table a4;
+0 rows inserted/updated/deleted
+ij> drop table a5;
+0 rows inserted/updated/deleted
+ij> drop table a6;
+0 rows inserted/updated/deleted
+ij> drop table a7;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/openScans.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/openScans.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,85 @@
+ij> -- minimal testing to verify no scans left open
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> autocommit off;
+ij> create table t1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> insert into t1 values (1, 1);
+1 row inserted/updated/deleted
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> create index i1 on t1(c1);
+0 rows inserted/updated/deleted
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> create index i2 on t1(c2);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (2, 2);
+1 row inserted/updated/deleted
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> -- scan heap
+select * from t1;
+C1         |C2         
+-----------------------
+1          |1          
+2          |2          
+ij> -- scan covering index
+select c1 from t1;
+C1         
+-----------
+1          
+2          
+ij> -- index to base row
+select * from t1;
+C1         |C2         
+-----------------------
+1          |1          
+2          |2          
+ij> select * from t1 where c1 = 1;
+C1         |C2         
+-----------------------
+1          |1          
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> commit;
+ij> -- test cursor which doesn't get drained
+get cursor c1 as 'select c1 + c2 from t1 order by 1';
+ij> next c1;
+1          
+-----------
+2          
+ij> close c1;
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> commit;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderby.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderby.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,899 @@
+ij> -- order by tests
+-- in V52, we allow "select a from t order by b" where the ORDERBY column doesn't necessarily appear in the SELECT list.
+autocommit off;
+ij> -- . order by on values
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 1,2,3;
+1          |2          |3          
+-----------------------------------
+0          |0          |1          
+0          |1          |0          
+1          |0          |0          
+1          |0          |1          
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 1,3;
+1          |2          |3          
+-----------------------------------
+0          |1          |0          
+0          |0          |1          
+1          |0          |0          
+1          |0          |1          
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 2,1;
+1          |2          |3          
+-----------------------------------
+0          |0          |1          
+1          |0          |0          
+1          |0          |1          
+0          |1          |0          
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 2;
+1          |2          |3          
+-----------------------------------
+0          |0          |1          
+1          |0          |0          
+1          |0          |1          
+0          |1          |0          
+ij> -- . order by on position < 1, > range (error)
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 0;
+ERROR 42X77: Column position '0' is out of range for the query expression.
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 4;
+ERROR 42X77: Column position '4' is out of range for the query expression.
+ij> -- . order by doesn't see generated names
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0);
+1          |2          |3          
+-----------------------------------
+1          |0          |1          
+1          |0          |0          
+0          |0          |1          
+0          |1          |0          
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by "SQLCol1";
+ERROR 42X78: Column 'SQLCol1' is not in the result of the query expression.
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by "SQLCol2";
+ERROR 42X78: Column 'SQLCol2' is not in the result of the query expression.
+ij> values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 1,1,2,3;
+1          |2          |3          
+-----------------------------------
+0          |0          |1          
+0          |1          |0          
+1          |0          |0          
+1          |0          |1          
+ij> -- rollback should release the prepared statements
+rollback;
+ij> -- . order by on select
+-- . order by with duplicate rows in source
+set schema app;
+0 rows inserted/updated/deleted
+ij> create table obt (i int, v varchar(40));
+0 rows inserted/updated/deleted
+ij> insert into obt (i) values (null);
+1 row inserted/updated/deleted
+ij> insert into obt values (1, 'hello');
+1 row inserted/updated/deleted
+ij> insert into obt values (2, 'planet');
+1 row inserted/updated/deleted
+ij> insert into obt values (1, 'world');
+1 row inserted/updated/deleted
+ij> insert into obt values (3, 'hello');
+1 row inserted/updated/deleted
+ij> -- save the data we've created
+commit;
+ij> select * from obt order by i;
+I          |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> select * from obt order by v;
+I          |V                                       
+----------------------------------------------------
+3          |hello                                   
+1          |hello                                   
+2          |planet                                  
+1          |world                                   
+NULL       |NULL                                    
+ij> -- . order by all select columns
+select * from obt order by i,v;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+1          |world                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> select * from obt order by v,i;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+3          |hello                                   
+2          |planet                                  
+1          |world                                   
+NULL       |NULL                                    
+ij> -- . order by asc/desc mix
+select * from obt order by v desc, i asc;
+I          |V                                       
+----------------------------------------------------
+NULL       |NULL                                    
+1          |world                                   
+2          |planet                                  
+1          |hello                                   
+3          |hello                                   
+ij> -- reverse prior order
+select * from obt order by i asc, v desc;
+I          |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- . order by with duplicates but different asc/desc attributes (ok)
+select * from obt order by i asc, i desc;
+I          |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> select * from obt order by i, v, i;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+1          |world                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> select v from obt order by i, v, i;
+V                                       
+----------------------------------------
+hello                                   
+world                                   
+planet                                  
+hello                                   
+NULL                                    
+ij> select v from obt order by i desc, v, i;
+V                                       
+----------------------------------------
+NULL                                    
+hello                                   
+planet                                  
+hello                                   
+world                                   
+ij> -- . order by on position < 1, > range (error)
+select * from obt order by 1, 0;
+ERROR 42X77: Column position '0' is out of range for the query expression.
+ij> select * from obt order by 1,2,3,4,5,6,7,8,9;
+ERROR 42X77: Column position '3' is out of range for the query expression.
+ij> select * from obt order by 32767;
+ERROR 42X77: Column position '32767' is out of range for the query expression.
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- . order by on union all
+create table obt2 (i2 int, v varchar(40));
+0 rows inserted/updated/deleted
+ij> insert into obt2 values (3, 'hello'), (4, 'planet'), (1, 'shoe'), (3, 'planet');
+4 rows inserted/updated/deleted
+ij> -- save the data we've created
+commit ;
+ij> select * from obt union all select * from obt2 order by v;
+1          |V                                       
+----------------------------------------------------
+3          |hello                                   
+3          |hello                                   
+1          |hello                                   
+3          |planet                                  
+4          |planet                                  
+2          |planet                                  
+1          |shoe                                    
+1          |world                                   
+NULL       |NULL                                    
+ij> select * from obt union all select * from obt order by i;
+I          |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+2          |planet                                  
+3          |hello                                   
+3          |hello                                   
+NULL       |NULL                                    
+NULL       |NULL                                    
+ij> select * from obt union all select * from obt order by i, i;
+I          |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+2          |planet                                  
+3          |hello                                   
+3          |hello                                   
+NULL       |NULL                                    
+NULL       |NULL                                    
+ij> -- . order by on union with differing column names on sources. Error
+select * from obt union all select * from obt2 order by i;
+ERROR 42X78: Column 'I' is not in the result of the query expression.
+ij> select * from obt union all values (1,'hello') order by i;
+ERROR 42X78: Column 'I' is not in the result of the query expression.
+ij> values (1,'hello') union all select * from obt order by i;
+ERROR 42X78: Column 'I' is not in the result of the query expression.
+ij> -- . order by can not see generated names, though OK by position
+values (1,'hello') union all select * from obt;
+1          |2                                       
+----------------------------------------------------
+1          |hello                                   
+NULL       |NULL                                    
+1          |hello                                   
+2          |planet                                  
+1          |world                                   
+3          |hello                                   
+ij> values (1,'hello') union all select * from obt order by "SQLCol1";
+ERROR 42X78: Column 'SQLCol1' is not in the result of the query expression.
+ij> values (1,'hello') union all select * from obt order by 1;
+1          |2                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> values (1,'hello') union all select * from obt order by 1, 1;
+1          |2                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> select i from obt union all values (1) order by 1;
+1          
+-----------
+1          
+1          
+1          
+2          
+3          
+NULL       
+ij> -- sees noname on both sides although second side is named
+values (1) union all select i from obt order by i;
+ERROR 42X78: Column 'I' is not in the result of the query expression.
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- i2's name is hidden by obt, fails
+select * from obt union all select * from obt2 order by i2;
+ERROR 42X78: Column 'I2' is not in the result of the query expression.
+ij> -- . order by position/name mix
+select * from obt order by 1,i;
+I          |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> select * from obt order by 1,v;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+1          |world                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- . order by with duplicate positions
+select * from obt order by 1,2,1;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+1          |world                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- . order by with duplicate names
+select * from obt order by v,i,v;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+3          |hello                                   
+2          |planet                                  
+1          |world                                   
+NULL       |NULL                                    
+ij> -- . order by name gets select name, not underlying name
+select i as i2, v from obt order by i2;
+I2         |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- error, i is not seen by order by
+select i as i2, v from obt order by i;
+I2         |V                                       
+----------------------------------------------------
+1          |world                                   
+1          |hello                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- . order without by (error)
+select i, v from obt order i;
+ERROR 42X01: Syntax error: Encountered "i" at line 2, column 28.
+ij> select i, v from obt by i;
+ERROR 42X01: Syntax error: Encountered "by" at line 1, column 22.
+ij> -- . show order, by are reserved keywords
+select order from obt;
+ERROR 42X01: Syntax error: Encountered "order" at line 2, column 8.
+ij> select by from obt;
+ERROR 42X01: Syntax error: Encountered "by" at line 1, column 8.
+ij> -- . order by on column not in query (error)
+select i from obt order by c;
+ERROR 42X04: Column 'C' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'C' is not a column in the target table.
+ij> -- . order by on column not in select, in table (error)
+select i from obt order by v;
+I          
+-----------
+3          
+1          
+2          
+1          
+NULL       
+ij> -- . order by on expression (not allowed)
+select i from obt order by i+1;
+ERROR 42X01: Syntax error: Encountered "+" at line 2, column 29.
+ij> -- . order by on qualified column name, incorrect correlation name (not allowed)
+select i from obt t order by obt.i;
+ERROR 42X04: Column 'OBT.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OBT.I' is not a column in the target table.
+ij> -- . order by on qualified column name, incorrect column name (not allowed)
+select i from obt t order by obt.notexists;
+ERROR 42X04: Column 'OBT.NOTEXISTS' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OBT.NOTEXISTS' is not a column in the target table.
+ij> -- . order by on qualified column name
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t3(c3 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 2, 1;
+2 rows inserted/updated/deleted
+ij> insert into t2 values 4, 3;
+2 rows inserted/updated/deleted
+ij> insert into t3 values 6, 5;
+2 rows inserted/updated/deleted
+ij> select t1.c1, t2.c1 from t1, t2 order by t1.c1;
+C1         |C1         
+-----------------------
+1          |3          
+1          |4          
+2          |3          
+2          |4          
+ij> select t1.c1, t2.c1 from t1, t2 order by t2.c1;
+C1         |C1         
+-----------------------
+1          |3          
+2          |3          
+1          |4          
+2          |4          
+ij> select t1.c1, t2.c1 from t1, t1 t2 order by t2.c1;
+C1         |C1         
+-----------------------
+1          |1          
+2          |1          
+1          |2          
+2          |2          
+ij> select t1.c1, t2.c1 from t1, t1 t2 order by t1.c1;
+C1         |C1         
+-----------------------
+1          |1          
+1          |2          
+2          |1          
+2          |2          
+ij> -- bug 5716 - qualified column name not allowed in order by when union/union all is used - following 4 test cases for that
+select c1 from t1 union select c3 as c1 from t3 order by t1.c1;
+ERROR 42877: A qualified column name 'T1.C1' is not allowed in the ORDER BY clause.
+ij> select * from obt union all select * from obt2 order by obt.v;
+ERROR 42877: A qualified column name 'OBT.V' is not allowed in the ORDER BY clause.
+ij> select * from obt union all select * from obt2 order by obt2.v;
+ERROR 42877: A qualified column name 'OBT2.V' is not allowed in the ORDER BY clause.
+ij> select * from obt union all select * from obt2 order by abc.v;
+ERROR 42877: A qualified column name 'ABC.V' is not allowed in the ORDER BY clause.
+ij> select * from t1 inner join t2 on 1=1 order by t1.c1;
+C1         |C1         
+-----------------------
+1          |3          
+1          |4          
+2          |3          
+2          |4          
+ij> select * from t1 inner join t2 on 1=1 order by t2.c1;
+C1         |C1         
+-----------------------
+1          |3          
+2          |3          
+1          |4          
+2          |4          
+ij> select c1 from t1 order by app.t1.c1;
+C1         
+-----------
+1          
+2          
+ij> select c1 from app.t1 order by app.t1.c1;
+C1         
+-----------
+1          
+2          
+ij> select c1 from app.t1 order by t1.c1;
+C1         
+-----------
+1          
+2          
+ij> select c1 from app.t1 order by c1;
+C1         
+-----------
+1          
+2          
+ij> select c1 from app.t1 c order by c1;
+C1         
+-----------
+1          
+2          
+ij> select c1 from app.t1 c order by c.c1;
+C1         
+-----------
+1          
+2          
+ij> select c1 from t1 order by c1;
+C1         
+-----------
+1          
+2          
+ij> -- negative
+-- shouldn't find exposed name
+select c1 from t1 union select c3 from t3 order by t3.c3;
+ERROR 42877: A qualified column name 'T3.C3' is not allowed in the ORDER BY clause.
+ij> select c1 from t1 union select c3 from t3 order by asdf.c3;
+ERROR 42877: A qualified column name 'ASDF.C3' is not allowed in the ORDER BY clause.
+ij> select c1 from t1 order by sys.t1.c1;
+ERROR 42X10: 'SYS.T1' is not an exposed table name in the scope in which it appears.
+ij> select c1 from app.t1 order by sys.t1.c1;
+ERROR 42X04: Column 'SYS.T1.C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'SYS.T1.C1' is not a column in the target table.
+ij> select c1 from t1 c order by app.c.c1;
+ERROR 42X10: 'APP.C' is not an exposed table name in the scope in which it appears.
+ij> select c1 from app.t1 c order by app.t1.c1;
+ERROR 42X04: Column 'APP.T1.C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'APP.T1.C1' is not a column in the target table.
+ij> -- a is not a column in t1
+select 1 as a from t1 order by t1.a;
+ERROR 42X04: Column 'T1.A' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T1.A' is not a column in the target table.
+ij> -- t3.c1 does not exist
+select * from t1, t3 order by t3.c1;
+ERROR 42X04: Column 'T3.C1' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T3.C1' is not a column in the target table.
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- . order by on join
+select obt.i, obt2.i2+1, obt2.v from obt, obt2 order by 2, 3;
+I          |2          |V                                       
+----------------------------------------------------------------
+3          |2          |shoe                                    
+1          |2          |shoe                                    
+2          |2          |shoe                                    
+1          |2          |shoe                                    
+NULL       |2          |shoe                                    
+3          |4          |hello                                   
+1          |4          |hello                                   
+2          |4          |hello                                   
+1          |4          |hello                                   
+NULL       |4          |hello                                   
+3          |4          |planet                                  
+1          |4          |planet                                  
+2          |4          |planet                                  
+1          |4          |planet                                  
+NULL       |4          |planet                                  
+3          |5          |planet                                  
+1          |5          |planet                                  
+2          |5          |planet                                  
+1          |5          |planet                                  
+NULL       |5          |planet                                  
+ij> select obt.i, obt2.i2+1, obt2.v from obt2, obt where obt.i=obt2.i2 order by 2, 3;
+I          |2          |V                                       
+----------------------------------------------------------------
+1          |2          |shoe                                    
+1          |2          |shoe                                    
+3          |4          |hello                                   
+3          |4          |planet                                  
+ij> -- . order by with spaces at end of values
+values 'hello ', 'hello    ', 'hello  ', 'hello' order by 1;
+1        
+---------
+hello    
+hello    
+hello    
+hello    
+ij> -- . order by on select items that are expressions
+select i+1, v, {fn length(v)} from obt order by 2, 1 desc, 3;
+1          |V                                       |3          
+----------------------------------------------------------------
+4          |hello                                   |5          
+2          |hello                                   |5          
+3          |planet                                  |6          
+2          |world                                   |5          
+NULL       |NULL                                    |NULL       
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- . redundant order by on distinct, ?non-redundant (different ordering)
+select distinct i from obt order by i;
+I          
+-----------
+1          
+2          
+3          
+NULL       
+ij> select distinct i,v from obt order by v;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+3          |hello                                   
+2          |planet                                  
+1          |world                                   
+NULL       |NULL                                    
+ij> select distinct i,v from obt order by v desc, i desc, v desc;
+I          |V                                       
+----------------------------------------------------
+NULL       |NULL                                    
+1          |world                                   
+2          |planet                                  
+3          |hello                                   
+1          |hello                                   
+ij> -- . redundant order by on distinct, redundant (subset/prefix)
+select distinct i,v from obt order by i;
+I          |V                                       
+----------------------------------------------------
+1          |hello                                   
+1          |world                                   
+2          |planet                                  
+3          |hello                                   
+NULL       |NULL                                    
+ij> -- . redundant order by on index scan (later)
+-- rollback should release the prepared statements
+rollback ;
+ij> -- . order by with empty source, nulls in source, etc.
+delete from obt;
+5 rows inserted/updated/deleted
+ij> select * from obt order by 1;
+I          |V                                       
+----------------------------------------------------
+ij> select * from obt order by v;
+I          |V                                       
+----------------------------------------------------
+ij> rollback ;
+ij> -- . order by with close values (doubles)
+create table d (d double precision);
+0 rows inserted/updated/deleted
+ij> insert into d values 1e-300,2e-300;
+2 rows inserted/updated/deleted
+ij> select d,d/1e5 as dd from d order by dd,d;
+D                     |DD                    
+---------------------------------------------
+1.0E-300              |1.0E-305              
+2.0E-300              |2.0E-305              
+ij> rollback ;
+ij> -- . order by with long values (varchars)
+create table v (v varchar(1200));
+0 rows inserted/updated/deleted
+ij> insert into v values 'itsastart';
+1 row inserted/updated/deleted
+ij> insert into v values 'hereandt';
+1 row inserted/updated/deleted
+ij> update v set v = v || v || v;
+2 rows inserted/updated/deleted
+ij> update v set v = v || v || v;
+2 rows inserted/updated/deleted
+ij> update v set v = v || v;
+2 rows inserted/updated/deleted
+ij> update v set v = v || v;
+2 rows inserted/updated/deleted
+ij> update v set v = v || v;
+2 rows inserted/updated/deleted
+ij> update v set v = v || v;
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR 'itsastartitsastartitsastartitsastartitsastartitsastartitsast&' to length 1200.
+ij> update v set v = v || v;
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR 'itsastartitsastartitsastartitsastartitsastartitsastartitsast&' to length 1200.
+ij> select v from v order by v desc;
+V                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+itsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastartitsastarti&
+hereandthereandthereandthereandthereandthereandthereandthereandthereandthereandthereandthereandthereandthereandthereandthereand&
+ij> rollback ;
+ij> drop table v;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'V' because it does not exist.
+ij> -- . order by on all data types
+create table missed (s smallint, r real, d date, t time, ts timestamp, c char(10), l bigint);
+0 rows inserted/updated/deleted
+ij> insert into missed values (1,1.2e4, '1992-01-01','23:01:01', 'xxxxxxFILTERED-TIMESTAMPxxxxx', 'theend', 2222222222222);
+1 row inserted/updated/deleted
+ij> insert into missed values (1,1.2e4, '1992-01-01', '23:01:01', 'xxxxxxFILTERED-TIMESTAMPxxxxx', 'theend', 3333333333333);
+1 row inserted/updated/deleted
+ij> insert into missed values (2,1.0e4, '1992-01-01', '20:01:01', 'xxxxxxFILTERED-TIMESTAMPxxxxx', 'theend', 4444444444444);
+1 row inserted/updated/deleted
+ij> insert into missed values (2,1.0e4, '1992-01-01', '20:01:01', 'xxxxxxFILTERED-TIMESTAMPxxxxx', null,     2222222222222);
+1 row inserted/updated/deleted
+ij> select s from missed order by s;
+S     
+------
+1     
+1     
+2     
+2     
+ij> select r from missed order by r;
+R            
+-------------
+10000.0      
+10000.0      
+12000.0      
+12000.0      
+ij> select d,c from missed order by c,d;
+D         |C         
+---------------------
+1992-01-01|theend    
+1992-01-01|theend    
+1992-01-01|theend    
+1992-01-01|NULL      
+ij> select ts,t from missed order by ts desc, t;
+TS                        |T       
+-----------------------------------
+xxxxxxFILTERED-TIMESTAMPxxxxx|20:01:01
+xxxxxxFILTERED-TIMESTAMPxxxxx|20:01:01
+xxxxxxFILTERED-TIMESTAMPxxxxx|23:01:01
+xxxxxxFILTERED-TIMESTAMPxxxxx|23:01:01
+ij> select l from missed order by l;
+L                   
+--------------------
+2222222222222       
+2222222222222       
+3333333333333       
+4444444444444       
+ij> select l from missed order by l desc;
+L                   
+--------------------
+4444444444444       
+3333333333333       
+2222222222222       
+2222222222222       
+ij> rollback ;
+ij> -- . order by on char column
+create table ut (u char(10));
+0 rows inserted/updated/deleted
+ij> insert into ut values (null);
+1 row inserted/updated/deleted
+ij> insert into ut values (cast ('hello' as char(10)));
+1 row inserted/updated/deleted
+ij> insert into ut values ('world');
+1 row inserted/updated/deleted
+ij> insert into ut values ('hello');
+1 row inserted/updated/deleted
+ij> insert into ut values ('world  ');
+1 row inserted/updated/deleted
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- . order by and explicit for update (no, some cols)
+get cursor c1 as 'select i from obt order by i for update of v';
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- . order by and explicit read only (ok)
+get cursor c1 as 'select i from obt order by i for read only';
+ij> next c1;
+I          
+-----------
+1          
+ij> close c1;
+ij> -- . order by is implicitly read only
+get cursor c1 as 'select i from obt order by i';
+ij> next c1;
+I          
+-----------
+1          
+ij> -- error
+update obt set v='newval' where current of c1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> close c1;
+ij> -- no rows
+select v from obt where v='newval';
+V                                       
+----------------------------------------
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- . order by only allowed on cursor spec, not subquerys (error) 
+select v from obt where i in (select i from obt2 order by i);
+ERROR 42X01: Syntax error: Encountered "order" at line 2, column 50.
+ij> select v from obt where i = (select i from obt2 order by i);
+ERROR 42X01: Syntax error: Encountered "order" at line 1, column 49.
+ij> select v from (select i,v from obt2 order by i);
+ERROR 42X01: Syntax error: Encountered "order" at line 1, column 37.
+ij> -- rollback should release the prepared statements
+rollback ;
+ij> -- order by allowed on datatypes, 
+-- but not non-mapped user types
+-- bit maps to Byte[], so can't test for now
+create table tab1 (
+				i integer, 
+				tn integer, 
+				s integer, 
+				l integer,
+				c char(10), 
+				v char(10),
+				lvc char(10),
+				d double precision,
+				r real,
+				dt date,
+				t time,
+				ts timestamp,
+				dc decimal(2,1));
+0 rows inserted/updated/deleted
+ij> insert into tab1 values (1, cast(1 as int), cast(1 as smallint), cast(1 as bigint), '1', '1', '1', cast(1.1 as double precision), cast(1.1 as real), '1996-01-01', '11:11:11','xxxxxxFILTERED-TIMESTAMPxxxxx', cast(1.1 as decimal(2,1)));
+1 row inserted/updated/deleted
+ij> insert into tab1 values (2, cast(2 as int), cast(2 as smallint), cast(2 as bigint), '2', '2', '2', cast(2.2 as double precision), cast(2.2 as real), '1995-02-02', '12:12:12', 'xxxxxxFILTERED-TIMESTAMPxxxxx', cast(2.2 as decimal(2,1)));
+1 row inserted/updated/deleted
+ij> select * from tab1 order by 1;
+I          |TN         |S          |L          |C         |V         |LVC       |D                     |R            |DT        |T       |TS                        |DC   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |1          |1          |1          |1         |1         |1         |1.1                   |1.1          |1996-01-01|11:11:11|xxxxxxFILTERED-TIMESTAMPxxxxx|1.1  
+2          |2          |2          |2          |2         |2         |2         |2.2                   |2.2          |1995-02-02|12:12:12|xxxxxxFILTERED-TIMESTAMPxxxxx|2.2  
+ij> rollback;
+ij> -- bug 2769 (correlation columns, group by and order by)
+create table bug2769(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into bug2769 values (1, 1), (1, 2), (3, 2), (3, 3);
+4 rows inserted/updated/deleted
+ij> select a.c1, sum(a.c1) from bug2769 a group by a.c1 order by a.c1;
+C1         |2          
+-----------------------
+1          |2          
+3          |6          
+ij> rollback;
+ij> -- reset autocommit
+autocommit on;
+ij> -- cleanup
+drop table obt;
+0 rows inserted/updated/deleted
+ij> drop table obt2;
+0 rows inserted/updated/deleted
+ij> create table t (a int, b int, c int);
+0 rows inserted/updated/deleted
+ij> insert into t values (1, 2, null), (2, 3, null), (3, 0, null), (1, 3, null);
+4 rows inserted/updated/deleted
+ij> select * from t order by a;
+A          |B          |C          
+-----------------------------------
+1          |3          |NULL       
+1          |2          |NULL       
+2          |3          |NULL       
+3          |0          |NULL       
+ij> select * from t order by a, a;
+A          |B          |C          
+-----------------------------------
+1          |3          |NULL       
+1          |2          |NULL       
+2          |3          |NULL       
+3          |0          |NULL       
+ij> select * from t order by a, a, a;
+A          |B          |C          
+-----------------------------------
+1          |3          |NULL       
+1          |2          |NULL       
+2          |3          |NULL       
+3          |0          |NULL       
+ij> select * from t order by a, b;
+A          |B          |C          
+-----------------------------------
+1          |2          |NULL       
+1          |3          |NULL       
+2          |3          |NULL       
+3          |0          |NULL       
+ij> select a, b, c from t order by a, a;
+A          |B          |C          
+-----------------------------------
+1          |3          |NULL       
+1          |2          |NULL       
+2          |3          |NULL       
+3          |0          |NULL       
+ij> select a, b, c from t order by a, b;
+A          |B          |C          
+-----------------------------------
+1          |2          |NULL       
+1          |3          |NULL       
+2          |3          |NULL       
+3          |0          |NULL       
+ij> select a, c from t order by b;
+A          |C          
+-----------------------
+3          |NULL       
+1          |NULL       
+1          |NULL       
+2          |NULL       
+ij> select a, c from t order by b, b;
+A          |C          
+-----------------------
+3          |NULL       
+1          |NULL       
+1          |NULL       
+2          |NULL       
+ij> select a, b, c from t order by b;
+A          |B          |C          
+-----------------------------------
+3          |0          |NULL       
+1          |2          |NULL       
+1          |3          |NULL       
+2          |3          |NULL       
+ij> select a from t order by b, c;
+A          
+-----------
+3          
+1          
+1          
+2          
+ij> select a, c from t order by b, c;
+A          |C          
+-----------------------
+3          |NULL       
+1          |NULL       
+1          |NULL       
+2          |NULL       
+ij> select a, c from t order by b, c, b, c;
+A          |C          
+-----------------------
+3          |NULL       
+1          |NULL       
+1          |NULL       
+2          |NULL       
+ij> select a, b, c from t order by b, c;
+A          |B          |C          
+-----------------------------------
+3          |0          |NULL       
+1          |2          |NULL       
+1          |3          |NULL       
+2          |3          |NULL       
+ij> select b, c from t order by app.t.a;
+B          |C          
+-----------------------
+3          |NULL       
+2          |NULL       
+3          |NULL       
+0          |NULL       
+ij> -- error case
+select * from t order by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select t.* from t order by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select t.* from t order by t.d;
+ERROR 42X04: Column 'T.D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T.D' is not a column in the target table.
+ij> select s.* from t s order by s.d;
+ERROR 42X04: Column 'S.D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'S.D' is not a column in the target table.
+ij> select *, d from t order by d;
+ERROR 42X01: Syntax error: Encountered "," at line 1, column 9.
+ij> select t.*, d from t order by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select t.*, d from t order by t.d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select t.*, d from t order by app.t.d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select s.*, d from t s order by s.d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select t.*, t.d from t order by t.d;
+ERROR 42X04: Column 'T.D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T.D' is not a column in the target table.
+ij> select s.*, s.d from t s order by s.d;
+ERROR 42X04: Column 'S.D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'S.D' is not a column in the target table.
+ij> select a, b, c from t order by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select a from t order by d;
+ERROR 42X04: Column 'D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'D' is not a column in the target table.
+ij> select t.a from t order by t.d;
+ERROR 42X04: Column 'T.D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'T.D' is not a column in the target table.
+ij> select s.a from t s order by s.d;
+ERROR 42X04: Column 'S.D' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'S.D' is not a column in the target table.
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderbyElimination.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/orderbyElimination.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1481 @@
+ij> -- test elimination of sort for order by
+set isolation to rr;
+0 rows inserted/updated/deleted
+ij> -- test combining of sorts for distinct and order by
+-- create some tables
+create table t1(c1 int, c2 int, c3 int, c4 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3, 4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 3, 4, 5);
+1 row inserted/updated/deleted
+ij> insert into t1 values (-1, -2, -3, -4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (-2, -3, -4, -5);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 2, 4, 3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 3, 2, 4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 3, 4, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 4, 2, 3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 4, 3, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 1, 4, 3);
+1 row inserted/updated/deleted
+ij> maximumdisplaywidth 7000;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> -- no index on t1
+-- full match
+select distinct c1, c2, c3, c4 from t1 order by 1, 2, 3, 4;
+C1         |C2         |C3         |C4         
+-----------------------------------------------
+-2         |-3         |-4         |-5         
+-1         |-2         |-3         |-4         
+1          |2          |3          |4          
+1          |2          |4          |3          
+1          |3          |2          |4          
+1          |3          |4          |2          
+1          |4          |2          |3          
+1          |4          |3          |2          
+2          |1          |4          |3          
+2          |3          |4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- no index on t1
+-- full match
+select distinct c1, c2, c3, c4 from t1 order by 1, 2, 3, 4
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10
+Rows returned = 10
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=10
+	Number of rows output=10
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 10
+	Rows filtered = 0
+	Fetch Size = 16
+		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=4
+		Number of pages visited=1
+		Number of rows qualified=10
+		Number of rows visited=10
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> select distinct c1, c2, c3, c4 from t1 order by c1, c2, c3, c4;
+C1         |C2         |C3         |C4         
+-----------------------------------------------
+-2         |-3         |-4         |-5         
+-1         |-2         |-3         |-4         
+1          |2          |3          |4          
+1          |2          |4          |3          
+1          |3          |2          |4          
+1          |3          |4          |2          
+1          |4          |2          |3          
+1          |4          |3          |2          
+2          |1          |4          |3          
+2          |3          |4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c1, c2, c3, c4 from t1 order by c1, c2, c3, c4
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10
+Rows returned = 10
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=10
+	Number of rows output=10
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 10
+	Rows filtered = 0
+	Fetch Size = 16
+		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=4
+		Number of pages visited=1
+		Number of rows qualified=10
+		Number of rows visited=10
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> -- in order prefix
+select distinct c3, c4 from t1 order by 1, 2;
+C3         |C4         
+-----------------------
+-4         |-5         
+-3         |-4         
+2          |3          
+2          |4          
+3          |2          
+3          |4          
+4          |2          
+4          |3          
+4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- in order prefix
+select distinct c3, c4 from t1 order by 1, 2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10
+Rows returned = 9
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=10
+	Number of rows output=9
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 10
+	Rows filtered = 0
+	Fetch Size = 16
+		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={2, 3}
+		Number of columns fetched=2
+		Number of pages visited=1
+		Number of rows qualified=10
+		Number of rows visited=10
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> select distinct c3, c4 from t1 order by c3, c4;
+C3         |C4         
+-----------------------
+-4         |-5         
+-3         |-4         
+2          |3          
+2          |4          
+3          |2          
+3          |4          
+4          |2          
+4          |3          
+4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c3, c4 from t1 order by c3, c4
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10
+Rows returned = 9
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=10
+	Number of rows output=9
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 10
+	Rows filtered = 0
+	Fetch Size = 16
+		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={2, 3}
+		Number of columns fetched=2
+		Number of pages visited=1
+		Number of rows qualified=10
+		Number of rows visited=10
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> -- no prefix
+select distinct c3, c4 from t1 order by 2;
+C3         |C4         
+-----------------------
+-4         |-5         
+-3         |-4         
+3          |2          
+4          |2          
+2          |3          
+4          |3          
+2          |4          
+3          |4          
+4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- no prefix
+select distinct c3, c4 from t1 order by 2
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 9
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Sort ResultSet:
+	Number of opens = 1
+	Rows input = 10
+	Rows returned = 9
+	Eliminate duplicates = true
+	In sorted order = false
+	Sort information: 
+		Number of rows input=10
+		Number of rows output=9
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			Fetch Size = 16
+				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={2, 3}
+				Number of columns fetched=2
+				Number of pages visited=1
+				Number of rows qualified=10
+				Number of rows visited=10
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+ij> select distinct c3, c4 from t1 order by c4;
+C3         |C4         
+-----------------------
+-4         |-5         
+-3         |-4         
+3          |2          
+4          |2          
+2          |3          
+4          |3          
+2          |4          
+3          |4          
+4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c3, c4 from t1 order by c4
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 9
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Sort ResultSet:
+	Number of opens = 1
+	Rows input = 10
+	Rows returned = 9
+	Eliminate duplicates = true
+	In sorted order = false
+	Sort information: 
+		Number of rows input=10
+		Number of rows output=9
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			Fetch Size = 16
+				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={2, 3}
+				Number of columns fetched=2
+				Number of pages visited=1
+				Number of rows qualified=10
+				Number of rows visited=10
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+ij> -- expression
+select distinct c3, 1 from t1 order by 1;
+C3         |2          
+-----------------------
+-4         |1          
+-3         |1          
+2          |1          
+3          |1          
+4          |1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- expression
+select distinct c3, 1 from t1 order by 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10
+Rows returned = 5
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=10
+	Number of rows output=5
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 10
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		Fetch Size = 16
+			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={2}
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=10
+			Number of rows visited=10
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> select distinct c3, 1 from t1 order by 2;
+C3         |2          
+-----------------------
+-4         |1          
+-3         |1          
+2          |1          
+3          |1          
+4          |1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c3, 1 from t1 order by 2
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 5
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Sort ResultSet:
+	Number of opens = 1
+	Rows input = 10
+	Rows returned = 5
+	Eliminate duplicates = true
+	In sorted order = false
+	Sort information: 
+		Number of rows input=10
+		Number of rows output=5
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			Fetch Size = 16
+				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={2}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=10
+				Number of rows visited=10
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+ij> -- verify that a sort is still done when a unique index 
+-- exists
+create unique index i1 on t1(c1, c2, c3, c4);
+0 rows inserted/updated/deleted
+ij> select distinct c4, c3 from t1 where c1 = 1 and c2 = 2 order by c4, c3;
+C4         |C3         
+-----------------------
+3          |4          
+4          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c4, c3 from t1 where c1 = 1 and c2 = 2 order by c4, c3
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 2
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2
+	Number of rows output=2
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for T1 using index I1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1, 2, 3}
+			Number of columns fetched=4
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=3
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+			stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+			qualifiers:
+None
+ij> select distinct c3, c4 from t1 where c1 = 1 and c2 = 2 order by c4;
+C3         |C4         
+-----------------------
+4          |3          
+3          |4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select distinct c3, c4 from t1 where c1 = 1 and c2 = 2 order by c4
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 2
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2
+	Number of rows output=2
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for T1 using index I1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1, 2, 3}
+			Number of columns fetched=4
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=3
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+			stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+			qualifiers:
+None
+ij> -- order by and union
+select c1 from t1 union select c2 from t1 order by 1;
+1          
+-----------
+-3         
+-2         
+-1         
+1          
+2          
+3          
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- order by and union
+select c1 from t1 union select c2 from t1 order by 1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 20
+Rows returned = 7
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=20
+	Number of rows output=7
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Union ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 10
+	Rows seen from the right = 10
+	Rows returned = 20
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=10
+			Number of rows visited=10
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		Fetch Size = 16
+			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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=10
+			Number of rows visited=10
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+ij> select c1 from t1 union select c2 as c1 from t1 order by c1;
+C1         
+-----------
+-3         
+-2         
+-1         
+1          
+2          
+3          
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c1 from t1 union select c2 as c1 from t1 order by c1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 20
+Rows returned = 7
+Eliminate duplicates = true
+In sorted order = false
+Sort information: 
+	Number of rows input=20
+	Number of rows output=7
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Union ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 10
+	Rows seen from the right = 10
+	Rows returned = 20
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=10
+			Number of rows visited=10
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10
+		Rows filtered = 0
+		Fetch Size = 16
+			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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=10
+			Number of rows visited=10
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+ij> -- RESOLVE: next 2 will do 2 sorts (bug 58)
+select c3, c4 from t1 union select c2, c1 from t1 order by 2;
+1          |2          
+-----------------------
+-4         |-5         
+-3         |-4         
+-3         |-2         
+-2         |-1         
+4          |1          
+3          |1          
+2          |1          
+4          |2          
+3          |2          
+1          |2          
+4          |3          
+2          |3          
+3          |4          
+2          |4          
+4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- RESOLVE: next 2 will do 2 sorts (bug 58)
+select c3, c4 from t1 union select c2, c1 from t1 order by 2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 15
+Rows returned = 15
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=15
+	Number of rows output=15
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Sort ResultSet:
+	Number of opens = 1
+	Rows input = 20
+	Rows returned = 15
+	Eliminate duplicates = true
+	In sorted order = false
+	Sort information: 
+		Number of rows input=20
+		Number of rows output=15
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Union ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 10
+		Rows seen from the right = 10
+		Rows returned = 20
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			Fetch Size = 16
+				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={2, 3}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=10
+				Number of rows visited=10
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (5):
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 10
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0, 1}
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=10
+					Number of rows visited=10
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+ij> select c3, c4 from t1 union select c2, c1 as c4 from t1 order by c4;
+1          |C4         
+-----------------------
+-4         |-5         
+-3         |-4         
+-3         |-2         
+-2         |-1         
+4          |1          
+3          |1          
+2          |1          
+4          |2          
+3          |2          
+1          |2          
+4          |3          
+2          |3          
+3          |4          
+2          |4          
+4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c3, c4 from t1 union select c2, c1 as c4 from t1 order by c4
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 15
+Rows returned = 15
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=15
+	Number of rows output=15
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Sort ResultSet:
+	Number of opens = 1
+	Rows input = 20
+	Rows returned = 15
+	Eliminate duplicates = true
+	In sorted order = false
+	Sort information: 
+		Number of rows input=20
+		Number of rows output=15
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Union ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 10
+		Rows seen from the right = 10
+		Rows returned = 20
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			Fetch Size = 16
+				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={2, 3}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=10
+				Number of rows visited=10
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (5):
+			Number of opens = 1
+			Rows seen = 10
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Scan ResultSet for T1 using index I1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 10
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0, 1}
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=10
+					Number of rows visited=10
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+ij> -- test recognition of single row tables
+-- even when scanning heap
+create table u1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create table u2(c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table u3(c3 int, c4 int);
+0 rows inserted/updated/deleted
+ij> insert into u1 values (1, 1), (2, 2);
+2 rows inserted/updated/deleted
+ij> insert into u2 values (1, 1), (2, 2);
+2 rows inserted/updated/deleted
+ij> insert into u3 values (1, 1), (2, 2);
+2 rows inserted/updated/deleted
+ij> create unique index u1_i1 on u1(c1);
+0 rows inserted/updated/deleted
+ij> create unique index u2_i1 on u2(c2);
+0 rows inserted/updated/deleted
+ij> create unique index u3_i1 on u3(c3);
+0 rows inserted/updated/deleted
+ij> select * from
+u1,
+u2,
+u3
+where u1.c1 = 1 and u1.c1 = u2.c2
+order by u3.c3;
+C1         |C2         |C2         |C3         |C3         |C4         
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |1          
+1          |1          |1          |1          |2          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from
+u1,
+u2,
+u3
+where u1.c1 = 1 and u1.c1 = u2.c2
+order by u3.c3
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2
+Rows returned = 2
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2
+	Number of rows output=2
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for U1:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {1}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for U1 using index U1_I1 at serializable isolation level using share 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
+		Right result set:
+			Index Row to Base Row ResultSet for U2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {1}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for U2 using index U2_I1 at serializable isolation level using share 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
+	Right result set:
+		Table Scan ResultSet for U3 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+ij> -- clean up
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table u1;
+0 rows inserted/updated/deleted
+ij> drop table u2;
+0 rows inserted/updated/deleted
+ij> drop table u3;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1954 @@
+ij> -- test outer joins
+-- (NO NATURAL JOIN)
+autocommit off;
+ij> -- create some tables
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2(c1 int);
+0 rows inserted/updated/deleted
+ij> create table t3(c1 int);
+0 rows inserted/updated/deleted
+ij> create table tt1(c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table tt2(c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table tt3(c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table empty_table(c1 int);
+0 rows inserted/updated/deleted
+ij> create table insert_test(c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> -- following is verifying that oj is not a keyword
+create table oj(oj int);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values 1, 2, 2, 3, 4;
+5 rows inserted/updated/deleted
+ij> insert into t2 values 1, 3, 3, 5, 6;
+5 rows inserted/updated/deleted
+ij> insert into t3 values 2, 3, 5, 5, 7;
+5 rows inserted/updated/deleted
+ij> insert into tt1 select c1, c1, c1 from t1;
+5 rows inserted/updated/deleted
+ij> insert into tt2 select c1, c1, c1 from t2;
+5 rows inserted/updated/deleted
+ij> insert into tt3 select c1, c1, c1 from t3;
+5 rows inserted/updated/deleted
+ij> -- verifying that oj is not a keyword
+insert into oj(oj) values (1);
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- no outer join type
+select * from t1 outer join t2;
+ERROR 42X01: Syntax error: Encountered "outer" at line 4, column 18.
+ij> -- no join clause
+select * from t1 left outer join t2;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 2, column 35.
+ij> select * from t1 right outer join t2;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 1, column 36.
+ij> -- positive tests
+select t1.c1 from t1 left outer join t2 on t1.c1 = t2.c1;
+C1         
+-----------
+1          
+2          
+2          
+3          
+3          
+4          
+ij> select t2.c1 from t1 right outer join t2 on t1.c1 = t2.c1;
+C1         
+-----------
+1          
+3          
+3          
+5          
+6          
+ij> select a.x from t1 a (x) left outer join t2 b (x) on a.x = b.x;
+X          
+-----------
+1          
+2          
+2          
+3          
+3          
+4          
+ij> -- verify that selects from inner table work
+select b.* from (values 9) a left outer join t2 b on 1=1;
+C1         
+-----------
+1          
+3          
+3          
+5          
+6          
+ij> select b.* from (values 9) a left outer join t2 b on 1=0;
+C1         
+-----------
+NULL       
+ij> select b.* from (values 9) a right outer join t2 b on 1=0;
+C1         
+-----------
+1          
+3          
+3          
+5          
+6          
+ij> select a.* from (values 9) a right outer join t2 b on 1=1;
+1          
+-----------
+9          
+9          
+9          
+9          
+9          
+ij> select a.* from (values 9) a right outer join t2 b on 1=0;
+1          
+-----------
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+ij> select a.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1;
+1   |2   
+---------
+a   |b   
+ij> select b.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1;
+1   |2   
+---------
+c   |d   
+ij> select c.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1;
+1   |2   
+---------
+e   |f   
+ij> -- verifying that oj is not a keyword
+select * from oj where oj = 1;
+OJ         
+-----------
+1          
+ij> --verifying both regular and {oj } in 
+select * from t1 left outer join {oj t2 left outer join t3 on t2.c1=t3.c1} on t1.c1=t3.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |NULL       |NULL       
+2          |NULL       |NULL       
+2          |NULL       |NULL       
+3          |3          |3          
+3          |3          |3          
+4          |NULL       |NULL       
+ij> -- left and right outer join with an empty table
+select t1.c1 from t1 left outer join empty_table et on t1.c1 = et.c1;
+C1         
+-----------
+1          
+2          
+2          
+3          
+4          
+ij> select t1.c1 from t1 right outer join empty_table et on t1.c1 = et.c1;
+C1         
+-----------
+ij> select t1.c1 from empty_table et right outer join t1 on et.c1 = t1.c1;
+C1         
+-----------
+1          
+2          
+2          
+3          
+4          
+ij> -- this query may make no sense at all, but it's just trying to show that parser works
+-- fine with both regular tableexpression and tableexpression with {oj }
+select * from t1, {oj t2 join t3 on t2.c1=t3.c1};
+C1         |C1         |C1         
+-----------------------------------
+1          |3          |3          
+1          |3          |3          
+1          |5          |5          
+1          |5          |5          
+2          |3          |3          
+2          |3          |3          
+2          |5          |5          
+2          |5          |5          
+2          |3          |3          
+2          |3          |3          
+2          |5          |5          
+2          |5          |5          
+3          |3          |3          
+3          |3          |3          
+3          |5          |5          
+3          |5          |5          
+4          |3          |3          
+4          |3          |3          
+4          |5          |5          
+4          |5          |5          
+ij> -- parameters and join clause
+prepare asdf as 'select * from t1 left outer join t2 on 1=? and t1.c1 = t2.c1';
+ij> execute asdf using 'values 1';
+C1         |C1         
+-----------------------
+1          |1          
+2          |NULL       
+2          |NULL       
+3          |3          
+3          |3          
+4          |NULL       
+ij> remove asdf;
+ij> prepare asdf as 'select * from t1 left outer join t2 on t1.c1 = t2.c1 and t1.c1 = ?';
+ij> execute asdf using 'values 1';
+C1         |C1         
+-----------------------
+1          |1          
+2          |NULL       
+2          |NULL       
+3          |NULL       
+4          |NULL       
+ij> remove asdf;
+ij> -- additional predicates outside of the join clause
+-- egs of using {oj --} syntax
+select * from t1 left outer join t2 on t1.c1 = t2.c1 where t1.c1 = 1;
+C1         |C1         
+-----------------------
+1          |1          
+ij> select * from {oj t1 left outer join t2 on t1.c1 = t2.c1} where t1.c1 = 1;
+C1         |C1         
+-----------------------
+1          |1          
+ij> select * from t1 right outer join t2 on t1.c1 = 1 where t2.c1 = t1.c1;
+C1         |C1         
+-----------------------
+1          |1          
+ij> select * from {oj t1 right outer join t2 on t1.c1 = 1} where t2.c1 = t1.c1;
+C1         |C1         
+-----------------------
+1          |1          
+ij> -- subquery in join clause. Not allowed in the DB2 compatibility mode. ERROR.
+-- egs of using {oj --} syntax
+select * from t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 = 1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> select * from {oj t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 = 1)};
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> select * from t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 <> 2);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> select * from {oj t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 <> 2)};
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> select * from t1 a right outer join t2 b 
+on a.c1 = b.c1 and a.c1 in (select c1 from t1 where a.c1 = t1.c1);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- outer join in subquery
+-- egs of using {oj --} syntax
+select * from t1 a
+where exists (select * from t1 left outer join t2 on t1.c1 = t2.c1);
+C1         
+-----------
+1          
+2          
+2          
+3          
+4          
+ij> select * from t1 a
+where exists (select * from {oj t1 left outer join t2 on t1.c1 = t2.c1});
+C1         
+-----------
+1          
+2          
+2          
+3          
+4          
+ij> select * from t1 a
+where exists (select * from t1 left outer join t2 on 1=0);
+C1         
+-----------
+1          
+2          
+2          
+3          
+4          
+ij> -- nested joins
+-- egs of using {oj --} syntax
+select * from t1 left outer join t2 on t1.c1 = t2.c1 left outer join t3 on t1.c1 = t3.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+2          |NULL       |2          
+2          |NULL       |2          
+3          |3          |3          
+3          |3          |3          
+4          |NULL       |NULL       
+ij> select * from {oj t1 left outer join t2 on t1.c1 = t2.c1 left outer join t3 on t1.c1 = 
+t3.c1};
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+2          |NULL       |2          
+2          |NULL       |2          
+3          |3          |3          
+3          |3          |3          
+4          |NULL       |NULL       
+ij> select * from t1 left outer join t2 on t1.c1 = t2.c1 left outer join t3 on t2.c1 = t3.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+2          |NULL       |NULL       
+2          |NULL       |NULL       
+3          |3          |3          
+3          |3          |3          
+4          |NULL       |NULL       
+ij> select * from t3 right outer join t2 on t3.c1 = t2.c1 right outer join t1 on t1.c1 = t2.c1;
+C1         |C1         |C1         
+-----------------------------------
+NULL       |1          |1          
+NULL       |NULL       |2          
+NULL       |NULL       |2          
+3          |3          |3          
+3          |3          |3          
+NULL       |NULL       |4          
+ij> -- parens
+select * from (t1 left outer join t2 on t1.c1 = t2.c1) left outer join t3 on t1.c1 = t3.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+2          |NULL       |2          
+2          |NULL       |2          
+3          |3          |3          
+3          |3          |3          
+4          |NULL       |NULL       
+ij> select * from t1 left outer join (t2 left outer join t3 on t2.c1 = t3.c1) on t1.c1 = t2.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+2          |NULL       |NULL       
+2          |NULL       |NULL       
+3          |3          |3          
+3          |3          |3          
+4          |NULL       |NULL       
+ij> -- left/right outer join combinations
+select * from t1 a right outer join t2 b on a.c1 = b.c1 left outer join t3 c on a.c1 = b.c1 and b.c1 = c.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+3          |3          |3          
+3          |3          |3          
+NULL       |5          |NULL       
+NULL       |6          |NULL       
+ij> select * from (t1 a right outer join t2 b on a.c1 = b.c1) left outer join t3 c on a.c1 = b.c1 and b.c1 = c.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+3          |3          |3          
+3          |3          |3          
+NULL       |5          |NULL       
+NULL       |6          |NULL       
+ij> select * from t1 a left outer join t2 b on a.c1 = b.c1 right outer join t3 c on c.c1 = a.c1 where a.c1 is not null;
+C1         |C1         |C1         
+-----------------------------------
+2          |NULL       |2          
+2          |NULL       |2          
+3          |3          |3          
+3          |3          |3          
+ij> select * from (t1 a left outer join t2 b on a.c1 = b.c1) right outer join t3 c on c.c1 = a.c1 where a.c1 is not null;
+C1         |C1         |C1         
+-----------------------------------
+2          |NULL       |2          
+2          |NULL       |2          
+3          |3          |3          
+3          |3          |3          
+ij> select * from t1 a left outer join (t2 b right outer join t3 c on c.c1 = b.c1) on a.c1 = c.c1 where c.c1=b.c1;
+C1         |C1         |C1         
+-----------------------------------
+3          |3          |3          
+3          |3          |3          
+ij> -- test insert/update/delete
+insert into insert_test
+select * from t1 a left outer join t2 b on a.c1 = b.c1 left outer join t3 c on a.c1 <> c.c1;
+26 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |2          
+1          |1          |3          
+1          |1          |5          
+1          |1          |5          
+1          |1          |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+4          |NULL       |2          
+4          |NULL       |3          
+4          |NULL       |5          
+4          |NULL       |5          
+4          |NULL       |7          
+ij> update insert_test
+set c1 = (select 9 from t1 a left outer join t1 b on a.c1 = b.c1 where a.c1 = 1)
+where c1 = 1;
+5 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+9          |1          |2          
+9          |1          |3          
+9          |1          |5          
+9          |1          |5          
+9          |1          |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+4          |NULL       |2          
+4          |NULL       |3          
+4          |NULL       |5          
+4          |NULL       |5          
+4          |NULL       |7          
+ij> delete from insert_test
+where c1 = (select 9 from t1 a left outer join t1 b on a.c1 = b.c1 where a.c1 = 1);
+5 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+4          |NULL       |2          
+4          |NULL       |3          
+4          |NULL       |5          
+4          |NULL       |5          
+4          |NULL       |7          
+ij> delete from insert_test;
+21 rows inserted/updated/deleted
+ij> insert into insert_test
+select * from (select * from t1 a left outer join t2 b on a.c1 = b.c1 left outer join t3 c on a.c1 <> c.c1) d (c1, c2, c3);
+26 rows inserted/updated/deleted
+ij> select * from insert_test;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |2          
+1          |1          |3          
+1          |1          |5          
+1          |1          |5          
+1          |1          |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+2          |NULL       |3          
+2          |NULL       |5          
+2          |NULL       |5          
+2          |NULL       |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+3          |3          |2          
+3          |3          |5          
+3          |3          |5          
+3          |3          |7          
+4          |NULL       |2          
+4          |NULL       |3          
+4          |NULL       |5          
+4          |NULL       |5          
+4          |NULL       |7          
+ij> delete from insert_test;
+26 rows inserted/updated/deleted
+ij> -- verify that right outer join xforms don't get result columns
+-- confused
+create table a (c1 int);
+0 rows inserted/updated/deleted
+ij> create table b (c2 float);
+0 rows inserted/updated/deleted
+ij> create table c (c3 char(30));
+0 rows inserted/updated/deleted
+ij> insert into a values 1;
+1 row inserted/updated/deleted
+ij> insert into b values 3.3;
+1 row inserted/updated/deleted
+ij> insert into c values 'asdf';
+1 row inserted/updated/deleted
+ij> select * from a left outer join b on 1=1 left outer join c on 1=1;
+C1         |C2                    |C3                            
+-----------------------------------------------------------------
+1          |3.3                   |asdf                          
+ij> select * from a left outer join b on 1=1 left outer join c on 1=0;
+C1         |C2                    |C3                            
+-----------------------------------------------------------------
+1          |3.3                   |NULL                          
+ij> select * from a left outer join b on 1=0 left outer join c on 1=1;
+C1         |C2                    |C3                            
+-----------------------------------------------------------------
+1          |NULL                  |asdf                          
+ij> select * from a left outer join b on 1=0 left outer join c on 1=0;
+C1         |C2                    |C3                            
+-----------------------------------------------------------------
+1          |NULL                  |NULL                          
+ij> select * from c right outer join b on 1=1 right outer join a on 1=1;
+C3                            |C2                    |C1         
+-----------------------------------------------------------------
+asdf                          |3.3                   |1          
+ij> select * from c right outer join b on 1=1 right outer join a on 1=0;
+C3                            |C2                    |C1         
+-----------------------------------------------------------------
+NULL                          |NULL                  |1          
+ij> select * from c right outer join b on 1=0 right outer join a on 1=1;
+C3                            |C2                    |C1         
+-----------------------------------------------------------------
+NULL                          |3.3                   |1          
+ij> select * from c right outer join b on 1=0 right outer join a on 1=0;
+C3                            |C2                    |C1         
+-----------------------------------------------------------------
+NULL                          |NULL                  |1          
+ij> -- multicolumn tests
+-- c1, c2, and c3 all have the same values
+select tt1.c1, tt1.c2, tt1.c3, tt2.c2, tt2.c3 from tt1 left outer join tt2 on tt1.c1 = tt2.c1;
+C1         |C2         |C3         |C2         |C3         
+-----------------------------------------------------------
+1          |1          |1          |1          |1          
+2          |2          |2          |NULL       |NULL       
+2          |2          |2          |NULL       |NULL       
+3          |3          |3          |3          |3          
+3          |3          |3          |3          |3          
+4          |4          |4          |NULL       |NULL       
+ij> select tt1.c1, tt1.c2, tt1.c3, tt2.c3 from tt1 left outer join tt2 on tt1.c1 = tt2.c1;
+C1         |C2         |C3         |C3         
+-----------------------------------------------
+1          |1          |1          |1          
+2          |2          |2          |NULL       
+2          |2          |2          |NULL       
+3          |3          |3          |3          
+3          |3          |3          |3          
+4          |4          |4          |NULL       
+ij> select tt1.c1, tt1.c2, tt1.c3 from tt1 left outer join tt2 on tt1.c1 = tt2.c1;
+C1         |C2         |C3         
+-----------------------------------
+1          |1          |1          
+2          |2          |2          
+2          |2          |2          
+3          |3          |3          
+3          |3          |3          
+4          |4          |4          
+ij> -- nested outer joins
+select tt1.c2, tt1.c1, tt1.c3, tt2.c1, tt2.c3 from t1 left outer join tt1 on t1.c1 = tt1.c1 left outer join tt2 on tt1.c2 = tt2.c2;
+C2         |C1         |C3         |C1         |C3         
+-----------------------------------------------------------
+1          |1          |1          |1          |1          
+2          |2          |2          |NULL       |NULL       
+2          |2          |2          |NULL       |NULL       
+2          |2          |2          |NULL       |NULL       
+2          |2          |2          |NULL       |NULL       
+3          |3          |3          |3          |3          
+3          |3          |3          |3          |3          
+4          |4          |4          |NULL       |NULL       
+ij> -- make sure that column reordering is working correctly 
+-- when there's an ON clause
+create table x (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table y (c3 int, c4 int, c5 int);
+0 rows inserted/updated/deleted
+ij> insert into x values (1, 2, 3), (4, 5, 6);
+2 rows inserted/updated/deleted
+ij> insert into y values (3, 4, 5), (666, 7, 8);
+2 rows inserted/updated/deleted
+ij> -- qualfied * will return all of the columns of the qualified table
+-- including join columns
+select x.* from x join y on x.c3 = y.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> select x.* from x left outer join y on x.c3 = y.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+ij> select x.* from x right outer join y on x.c3 = y.c3;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+NULL       |NULL       |NULL       
+ij> select y.* from x join y on x.c3 = y.c3;
+C3         |C4         |C5         
+-----------------------------------
+3          |4          |5          
+ij> select y.* from x left outer join y on x.c3 = y.c3;
+C3         |C4         |C5         
+-----------------------------------
+3          |4          |5          
+NULL       |NULL       |NULL       
+ij> select y.* from x right outer join y on x.c3 = y.c3;
+C3         |C4         |C5         
+-----------------------------------
+3          |4          |5          
+666        |7          |8          
+ij> -- * will return all of the columns of all joined tables
+select * from x join y on x.c3 = y.c3;
+C1         |C2         |C3         |C3         |C4         |C5         
+-----------------------------------------------------------------------
+1          |2          |3          |3          |4          |5          
+ij> select * from x left outer join y on x.c3 = y.c3;
+C1         |C2         |C3         |C3         |C4         |C5         
+-----------------------------------------------------------------------
+1          |2          |3          |3          |4          |5          
+4          |5          |6          |NULL       |NULL       |NULL       
+ij> select * from x right outer join y on x.c3 = y.c3;
+C1         |C2         |C3         |C3         |C4         |C5         
+-----------------------------------------------------------------------
+1          |2          |3          |3          |4          |5          
+NULL       |NULL       |NULL       |666        |7          |8          
+ij> commit;
+ij> -- test outer join -> inner join xform
+delete from tt1;
+5 rows inserted/updated/deleted
+ij> delete from tt2;
+5 rows inserted/updated/deleted
+ij> delete from tt3;
+5 rows inserted/updated/deleted
+ij> insert into tt1 values (1, 2, 3), (2, 3, 4), (3, 4, 5);
+3 rows inserted/updated/deleted
+ij> insert into tt2 values (1, 2, 3), (2, 3, 4), (3, 4, 5);
+3 rows inserted/updated/deleted
+ij> insert into tt3 values (1, 2, 3), (2, 3, 4), (3, 4, 5);
+3 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 4500;
+ij> -- no xform, predicate on outer table
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt1.c1 = 3;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+3          |4          |5          |2          |3          |4          
+ij> -- various predicates on inner table
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c2 = 3;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+3          |4          |5          |2          |3          |4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- various predicates on inner table
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c2 = 3
+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: 
+Nested Loop Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 1
+Rows filtered = 0
+Rows returned = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of pages visited=1
+		Number of rows qualified=1
+		Number of rows visited=8
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Table Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of pages visited=1
+		Number of rows qualified=1
+		Number of rows visited=8
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c1 + 1= tt2.c2;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+2          |3          |4          |1          |2          |3          
+3          |4          |5          |2          |3          |4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c1 + 1= tt2.c2
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 3
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		restriction = true
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 3
+			Rows filtered = 0
+			Fetch Size = 16
+				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=3
+				Number of pages visited=1
+				Number of rows qualified=3
+				Number of rows visited=8
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 3
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=24
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c1 + 1= 3;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+3          |4          |5          |2          |3          |4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c1 + 1= 3
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 2
+		restriction = true
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 3
+			Rows filtered = 0
+			Fetch Size = 16
+				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=3
+				Number of pages visited=1
+				Number of rows qualified=3
+				Number of rows visited=8
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select * from tt2 right outer join tt1 on tt1.c1 = tt2.c2 where tt2.c1 + 1= 3;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+2          |3          |4          |3          |4          |5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from tt2 right outer join tt1 on tt1.c1 = tt2.c2 where tt2.c1 + 1= 3
+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: 
+Nested Loop Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 1
+Rows filtered = 0
+Rows returned = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 3
+	Rows filtered = 2
+	restriction = true
+	projection = false
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Table Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=3
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+Right result set:
+	Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of pages visited=1
+		Number of rows qualified=1
+		Number of rows visited=8
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 left outer join tt3 on tt2.c2 = tt3.c3 where tt3.c3 = 3;
+C1         |C2         |C3         |C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------------------------------------------
+3          |4          |5          |2          |3          |4          |1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 left outer join tt3 on tt2.c2 = tt3.c3 where tt3.c3 = 3
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TT3 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 2
+		restriction = true
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Left Outer Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 3
+			Rows seen from the right = 2
+			Empty right rows returned = 0
+			Rows filtered = 0
+			Rows returned = 3
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 3
+				Rows filtered = 0
+				Fetch Size = 16
+					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=3
+					Number of pages visited=1
+					Number of rows qualified=3
+					Number of rows visited=8
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Hash Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking: 
+				Number of opens = 3
+				Hash table size = 3
+				Hash key is column number 1
+				Rows seen = 2
+				Rows filtered = 0
+					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=3
+					Number of pages visited=1
+					Number of rows qualified=3
+					Number of rows visited=8
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					scan qualifiers:
+Non&
+ij> select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 left outer join tt3 on tt2.c2 = tt3.c3 where tt2.c2 = 3;
+C1         |C2         |C3         |C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------------------------------------------
+3          |4          |5          |2          |3          |4          |1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 left outer join tt3 on tt2.c2 = tt3.c3 where tt2.c2 = 3
+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: 
+Nested Loop Left Outer Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 1
+Empty right rows returned = 0
+Rows filtered = 0
+Rows returned = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 3
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=3
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking: 
+		Number of opens = 3
+		Hash table size = 1
+		Hash key is column number 1
+		Rows seen = 1
+		Rows filtered = 0
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			next qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Table Scan ResultSet for TT3 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=3
+		Number of pages visited=1
+		Number of rows qualified=1
+		Number of rows visited=8
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- make sure predicates are null tolerant 
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 
+where char(tt2.c2) is null;
+C1         |C2         |C3         |C1         |C2         |C3         
+-----------------------------------------------------------------------
+1          |2          |3          |NULL       |NULL       |NULL       
+ij> -- where java.lang.Integer::toString(tt2.c2) = '2';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- make sure predicates are null tolerant 
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 
+where char(tt2.c2) is null
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 3
+Rows filtered = 2
+restriction = true
+projection = false
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Left Outer Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 3
+	Rows seen from the right = 2
+	Empty right rows returned = 0
+	Rows filtered = 0
+	Rows returned = 3
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TT1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 3
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=3
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TT2 at read committed isolation level using instantaneous share row locking: 
+		Number of opens = 3
+		Hash table size = 3
+		Hash key is column number 1
+		Rows seen = 2
+		Rows filtered = 0
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=3
+			Number of rows visited=8
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- bug 2924, cross join under an outer join
+CREATE TABLE inventory(itemno INT NOT NULL PRIMARY KEY, capacity INT);
+0 rows inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (1, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (3, 2);
+1 row inserted/updated/deleted
+ij> CREATE TABLE timeslots (slotno INT NOT NULL PRIMARY KEY);
+0 rows inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES(1);
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES(2);
+1 row inserted/updated/deleted
+ij> create table reservations(slotno INT CONSTRAINT timeslots_fk REFERENCES timeslots, 
+itemno INT CONSTRAINT inventory_fk REFERENCES inventory, 
+name VARCHAR(100), resdate DATE);
+0 rows inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(1, 1, 'Joe', '2000-04-14');
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(1, 1, 'Fred', '2000-04-13');
+1 row inserted/updated/deleted
+ij> -- This query used to cause a null pointer exception
+select name, resdate 
+from reservations left outer join (inventory join timeslots on inventory.itemno = timeslots.slotno)
+on inventory.itemno = reservations.itemno and timeslots.slotno = reservations.slotno
+where resdate = '2000-04-14';
+NAME                                                                                                |RESDATE   
+---------------------------------------------------------------------------------------------------------------
+Joe                                                                                                 |2000-04-14
+ij> rollback;
+ij> -- bug 2923, cross join under an outer join
+create table inventory(itemno INT NOT NULL PRIMARY KEY, capacity INT);
+0 rows inserted/updated/deleted
+ij> INSERT into inventory values (1, 4);
+1 row inserted/updated/deleted
+ij> INSERT into inventory values (2, 2);
+1 row inserted/updated/deleted
+ij> INSERT into inventory values (3, 2);
+1 row inserted/updated/deleted
+ij> CREATE TABLE timeslots (slotno INT NOT NULL PRIMARY KEY);
+0 rows inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES(1);
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES(2);
+1 row inserted/updated/deleted
+ij> create table reservations(slotno INT CONSTRAINT timeslots_fk REFERENCES timeslots,
+itemno INT CONSTRAINT inventory_fk REFERENCES inventory,
+name VARCHAR(100));
+0 rows inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(1, 1, 'Joe');
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(2, 2, 'Fred');
+1 row inserted/updated/deleted
+ij> -- This query used to get incorrect results
+-- when name is null was the 2nd predicate
+-- due to a bug in OJ->IJ xform code.
+select timeslots.slotno, inventory.itemno, capacity, name
+from inventory left outer join timeslots
+on inventory.capacity = timeslots.slotno
+left outer join reservations
+on timeslots.slotno = reservations.slotno
+where capacity > 3 and name is null;
+SLOTNO     |ITEMNO     |CAPACITY   |NAME                                                                                                
+----------------------------------------------------------------------------------------------------------------------------------------
+NULL       |1          |4          |NULL                                                                                                
+ij> select timeslots.slotno, inventory.itemno, capacity, name
+from inventory left outer join timeslots
+on inventory.capacity = timeslots.slotno
+left outer join reservations
+on timeslots.slotno = reservations.slotno
+where name is null and capacity > 3;
+SLOTNO     |ITEMNO     |CAPACITY   |NAME                                                                                                
+----------------------------------------------------------------------------------------------------------------------------------------
+NULL       |1          |4          |NULL                                                                                                
+ij> rollback;
+ij> -- bug 2930, cross join under outer join
+CREATE TABLE properties (
+	name VARCHAR(50),
+	value VARCHAR(200));
+0 rows inserted/updated/deleted
+ij> INSERT INTO properties VALUES ('businessName', 'Cloud 9 Cafe');
+1 row inserted/updated/deleted
+ij> INSERT INTO properties VALUES ('lastReservationDate', '2001-12-31');
+1 row inserted/updated/deleted
+ij> CREATE TABLE inventory (
+	itemno INT NOT NULL PRIMARY KEY,
+	capacity INT
+);
+0 rows inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (1, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (3, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (4, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (5, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (6, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (7, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (8, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (9, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (10, 4);
+1 row inserted/updated/deleted
+ij> CREATE TABLE timeslots (
+	slot TIME NOT NULL PRIMARY KEY
+);
+0 rows inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('17:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('17:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('18:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('18:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('19:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('19:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('20:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('20:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('21:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('21:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('22:00:00');
+1 row inserted/updated/deleted
+ij> CREATE TABLE reservations (
+	itemno INT CONSTRAINT inventory_fk REFERENCES inventory,
+	slot TIME CONSTRAINT timeslots_fk REFERENCES timeslots,
+	resdate DATE NOT NULL,
+	name VARCHAR(100) NOT NULL,
+	quantity INT,
+	CONSTRAINT reservations_u UNIQUE(name, resdate));
+0 rows inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(6, '17:00:00', '2000-07-13', 'Williams', 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(7, '17:00:00', '2000-07-13', 'Johnson',  4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(8, '17:00:00', '2000-07-13', 'Allen',    3);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(9, '17:00:00', '2000-07-13', 'Dexmier',  4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(1, '17:30:00', '2000-07-13', 'Gates', 	 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(2, '17:30:00', '2000-07-13', 'McNealy',  2);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(3, '17:30:00', '2000-07-13', 'Hoffman',  1);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(4, '17:30:00', '2000-07-13', 'Sippl',    2);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(6, '17:30:00', '2000-07-13', 'Yang',     4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(7, '17:30:00', '2000-07-13', 'Meyers',   4);
+1 row inserted/updated/deleted
+ij> select max(name), max(resdate) from inventory join timeslots on inventory.capacity is not null
+left outer join reservations on inventory.itemno = reservations.itemno and reservations.slot = timeslots.slot;
+1                                                                                                   |2         
+---------------------------------------------------------------------------------------------------------------
+Yang                                                                                                |2000-07-13
+WARNING 01003: Null values were eliminated from the argument of a column function.
+ij> rollback;
+ij> -- bug 2931, cross join under outer join
+CREATE TABLE properties (
+	name VARCHAR(50),
+	value VARCHAR(200));
+0 rows inserted/updated/deleted
+ij> INSERT INTO properties VALUES ('businessName', 'Cloud 9 Cafe');
+1 row inserted/updated/deleted
+ij> INSERT INTO properties VALUES ('lastReservationDate', '2001-12-31');
+1 row inserted/updated/deleted
+ij> CREATE TABLE inventory (
+	itemno INT NOT NULL PRIMARY KEY,
+	capacity INT
+);
+0 rows inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (1, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (2, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (3, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (4, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (5, 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (6, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (7, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (8, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (9, 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO inventory VALUES (10, 4);
+1 row inserted/updated/deleted
+ij> CREATE TABLE timeslots (
+	slot TIME NOT NULL PRIMARY KEY
+);
+0 rows inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('17:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('17:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('18:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('18:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('19:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('19:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('20:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('20:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('21:00:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('21:30:00');
+1 row inserted/updated/deleted
+ij> INSERT INTO timeslots VALUES('22:00:00');
+1 row inserted/updated/deleted
+ij> CREATE TABLE reservations (
+	itemno INT CONSTRAINT inventory_fk REFERENCES inventory,
+	slot TIME CONSTRAINT timeslots_fk REFERENCES timeslots,
+	resdate DATE NOT NULL,
+	name VARCHAR(100) NOT NULL,
+	quantity INT,
+	CONSTRAINT reservations_u UNIQUE(name, resdate));
+0 rows inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(6, '17:00:00', '2000-07-13', 'Williams', 4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(7, '17:00:00', '2000-07-13', 'Johnson',  4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(8, '17:00:00', '2000-07-13', 'Allen',    3);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(9, '17:00:00', '2000-07-13', 'Dexmier',  4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(1, '17:30:00', '2000-07-13', 'Gates', 	 2);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(2, '17:30:00', '2000-07-13', 'McNealy',  2);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(3, '17:30:00', '2000-07-13', 'Hoffman',  1);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(4, '17:30:00', '2000-07-13', 'Sippl',    2);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(6, '17:30:00', '2000-07-13', 'Yang',     4);
+1 row inserted/updated/deleted
+ij> INSERT INTO reservations VALUES(7, '17:30:00', '2000-07-13', 'Meyers',   4);
+1 row inserted/updated/deleted
+ij> -- this query should return values from the 'slot' column (type date)
+-- but it seems to be returning integers!
+select max(timeslots.slot) from inventory inner join timeslots on inventory.capacity is not null
+left outer join reservations on inventory.capacity = reservations.itemno and reservations.slot = timeslots.slot;
+1       
+--------
+22:00:00
+ij> rollback;
+ij> -- bug 2897 Push join predicates from where clause
+-- to right
+select * from t1 inner join t2 on 1=1 left outer join t3 on t1.c1 = t3.c1
+where t1.c1 = t2.c1;
+C1         |C1         |C1         
+-----------------------------------
+1          |1          |NULL       
+3          |3          |3          
+3          |3          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- bug 2897 Push join predicates from where clause
+-- to right
+select * from t1 inner join t2 on 1=1 left outer join t3 on t1.c1 = t3.c1
+where t1.c1 = t2.c1
+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: 
+Nested Loop Left Outer Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 3
+Rows seen from the right = 2
+Empty right rows returned = 1
+Rows filtered = 0
+Rows returned = 3
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 5
+	Rows seen from the right = 3
+	Rows filtered = 0
+	Rows returned = 3
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for T1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 5
+		Rows filtered = 0
+		Fetch Size = 16
+			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=1
+			Number of pages visited=1
+			Number of rows qualified=5
+			Number of rows visited=5
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (5):
+		Number of opens = 5
+		Rows seen = 3
+		Rows filtered = 0
+		restriction = false
+		projection = false
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Scan ResultSet for T2 at read committed isolation level using instantaneous share row locking: 
+			Number of opens = 5
+			Hash table size = 4
+			Hash key is column number 0
+			Rows seen = 3
+			Rows filtered = 0
+				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=1
+				Number of pages visited=1
+				Number of rows qualified=5
+				Number of rows visited=5
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Table Scan ResultSet for T3 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 3
+	Rows seen = 2
+	Rows filtered = 0
+	Fetch Size = 16
+		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=1
+		Number of pages visited=1
+		Number of rows qualified=2
+		Number of rows visited=15
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Test fix for bug 5659
+create table xxx (a int not null);
+0 rows inserted/updated/deleted
+ij> create table yyy (a int not null);
+0 rows inserted/updated/deleted
+ij> insert into xxx values (1);
+1 row inserted/updated/deleted
+ij> select * from xxx left join yyy on (xxx.a=yyy.a);
+A          |A          
+-----------------------
+1          |NULL       
+ij> insert into xxx values (null);
+ERROR 23502: Column 'A'  cannot accept a NULL value.
+ij> select * from xxx;
+A          
+-----------
+1          
+ij> drop table xxx;
+0 rows inserted/updated/deleted
+ij> drop table yyy;
+0 rows inserted/updated/deleted
+ij> -- Defect 5658. Disable querries with ambiguous references.
+create table ttab1 (a int, b int);
+0 rows inserted/updated/deleted
+ij> insert into ttab1 values (1,1),(2,2);
+2 rows inserted/updated/deleted
+ij> create table ttab2 (c int, d int);
+0 rows inserted/updated/deleted
+ij> insert into ttab2 values (1,1),(2,2);
+2 rows inserted/updated/deleted
+ij> -- this statement should raise an error because 
+-- more than one object table includes column "b"
+select cor1.*, cor2.* from ttab1 cor1 left outer join ttab2 on (b = d),
+		ttab1 left outer join ttab2 cor2 on (b = d);
+ERROR 42X03: Column name 'B' is in more than one table in the FROM list.
+ij> select cor1.*, cor2.* from ttab1 cor1 left outer join ttab2 on (b = d),
+		ttab1 left outer join ttab2 cor2 on (b = cor2.d);
+ERROR 42X03: Column name 'B' is in more than one table in the FROM list.
+ij> -- This should pass
+select cor1.*, cor2.* from ttab1 left outer join ttab2 on (b = d), 
+		ttab1 cor1 left outer join ttab2 cor2 on (cor1.b = cor2.d);
+A          |B          |C          |D          
+-----------------------------------------------
+1          |1          |1          |1          
+2          |2          |2          |2          
+1          |1          |1          |1          
+2          |2          |2          |2          
+ij> -- These should fail too
+select * from ttab1, ttab1 left outer join ttab2 on (a=c);
+ERROR 42X03: Column name 'TTAB1.A' is in more than one table in the FROM list.
+ij> select * from ttab1 cor1, ttab1 left outer join ttab2 on (cor1.a=c);
+ERROR 42972: An ON clause associated with a JOIN operator is not valid.
+ij> -- This should pass
+select * from ttab1, ttab1 cor1 left outer join ttab2 on (cor1.a=c);
+A          |B          |A          |B          |C          |D          
+-----------------------------------------------------------------------
+1          |1          |1          |1          |1          |1          
+2          |2          |1          |1          |1          |1          
+1          |1          |2          |2          |2          |2          
+2          |2          |2          |2          |2          |2          
+ij> drop table ttab1;
+0 rows inserted/updated/deleted
+ij> drop table ttab2;
+0 rows inserted/updated/deleted
+ij> -- Test 5164
+CREATE TABLE "APP"."GOVT_AGCY" ("GVA_ID" NUMERIC(20,0) NOT NULL, "GVA_ORL_ID" NUMERIC(20,0) NOT NULL, "GVA_GAC_ID" NUMERIC(20,0));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE "APP"."GEO_STRC_ELMT" ("GSE_ID" NUMERIC(20,0) NOT NULL, "GSE_GSET_ID" NUMERIC(20,0) NOT NULL, "GSE_GA_ID_PRNT" NUMERIC(20,0) NOT NULL, "GSE_GA_ID_CHLD" NUMERIC(20,0) NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE "APP"."GEO_AREA" ("GA_ID" NUMERIC(20,0) NOT NULL, "GA_GAT_ID" NUMERIC(20,0) NOT NULL, "GA_NM" VARCHAR(30) NOT NULL, "GA_ABRV_NM" VARCHAR(5));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE "APP"."REG" ("REG_ID" NUMERIC(20,0) NOT NULL, "REG_NM" VARCHAR(60) NOT NULL, "REG_DESC" VARCHAR(240), "REG_ABRV_NM" VARCHAR(15), "REG_CD" NUMERIC(8,0) NOT NULL, "REG_STRT_DT" TIMESTAMP NOT NULL, "REG_END_DT" TIMESTAMP NOT NULL DEFAULT 'xxxxxxFILTERED-TIMESTAMPxxxxx, "REG_EMPR_LIAB_IND" CHAR(1) NOT NULL DEFAULT 'N', "REG_PAYR_TAX_SURG_CRTF_IND" CHAR(1) NOT NULL DEFAULT 'N', "REG_PYT_ID" NUMERIC(20,0), "REG_GA_ID" NUMERIC(20,0) NOT NULL, "REG_GVA_ID" NUMERIC(20,0) NOT NULL, "REG_REGT_ID" NUMERIC(20,0) NOT NULL, "REG_PRNT_ID" NUMERIC(20,0));
+0 rows inserted/updated/deleted
+ij> -- This should not get ArrayIndexOutofBound exception
+SELECT 1
+FROM reg
+     JOIN geo_area jrsd ON (jrsd.ga_id = reg.reg_ga_id)
+     LEFT OUTER
+JOIN geo_strc_elmt gse ON (gse.gse_ga_id_chld =
+reg.reg_ga_id)
+     LEFT OUTER
+JOIN geo_area prnt ON (prnt.ga_id =
+reg.reg_ga_id)
+     JOIN govt_agcy gva ON (reg.reg_gva_id = gva.gva_id);
+1          
+-----------
+ij> DROP TABLE "APP"."GOVT_AGCY";
+0 rows inserted/updated/deleted
+ij> DROP TABLE "APP"."GEO_STRC_ELMT";
+0 rows inserted/updated/deleted
+ij> DROP TABLE "APP"."GEO_AREA";
+0 rows inserted/updated/deleted
+ij> DROP TABLE "APP"."REG";
+0 rows inserted/updated/deleted
+ij> -- reset autocommit
+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> drop table tt1;
+0 rows inserted/updated/deleted
+ij> drop table tt2;
+0 rows inserted/updated/deleted
+ij> drop table tt3;
+0 rows inserted/updated/deleted
+ij> drop table insert_test;
+0 rows inserted/updated/deleted
+ij> drop table empty_table;
+0 rows inserted/updated/deleted
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> drop table oj;
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outparams.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/outparams.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8995 @@
+==============================================
+TESTING BOUNDARY CONDITIONS
+==============================================
+Expected exception SQL Exception: Parameter 2 cannot be be registered as an OUT parameter because it is an IN parameter.
+Expected exception SQL Exception: The parameter position '9' is out of range.  The number of parameters for this prepared  statement is '2'.
+Expected exception SQL Exception: The parameter position '0' is out of range.  The number of parameters for this prepared  statement is '2'.
+Expected exception SQL Exception: Return output parameters cannot be set.
+Expected exception SQL Exception: Return output parameters cannot be set.
+Expected exception on setBigDecimal() on a return output param: SQL Exception: Return output parameters cannot be set.
+Expected exception on prepare of '? = call returnsNothing()': SQL Exception: 'RETURNSNOTHING' is not recognized as a function or procedure.
+==============================================
+TESTING NULLS
+==============================================
+Test for bug 4317, passing null value for a parameter
+==============================================
+TESTING UPDATE COUNT
+==============================================
+executeUpdate on ? = call returnsIntegerP returned -1
+getString(1) returned 666
+==============================================
+TESTING NORMAL OUTPUT PARAMETERS
+==============================================
+...starting doing setXXX for each type xxx
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12.0000
+			getBigDecimal(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 12.0000
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132.0000
+			getBigDecimal(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 132.0000
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	setBytes(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, VARBINARY)
+	setBytes(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, LONGVARBINARY)
+	setBytes(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, BIT)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, BOOLEAN)
+	setBoolean(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, TINYINT)
+	setByte(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, SMALLINT)
+	setShort(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, INTEGER)
+	setInt(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, BIGINT)
+	setLong(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, FLOAT)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, REAL)
+	setFLoat(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DOUBLE)
+	setDouble(1, 666)
+	cs.execute()
+	Exception SQL Exception: The exception 'java.lang.Throwable: bad type 8' was thrown while evaluating an expression.
+	cs.registerOutParameter(1, NUMERIC)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DECIMAL)
+	setBigDecimal(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, DATE)
+	setDate(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getDate(1) = 1933-03-03
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 1933-03-03
+	cs.registerOutParameter(1, TIME)
+	setTime(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:03:03
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 03:03:03
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1933-03-03
+			getTime(1) = 03:03:03
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setDate(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setDate(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setString(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	setTime(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, TIMESTAMP)
+	setTimestamp(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+...now doing setObject on each type xxx
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type SMALLINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type INTEGER.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getString(1) = 2
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 2
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getString(1) = 12
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 12
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getString(1) = 132
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 132
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getString(1) = 1332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 1332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type BIGINT.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getBigDecimal(1) = 1333.33203125
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type REAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2
+			getBigDecimal(1) = 2
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getString(1) = 2.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 2.0
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12
+			getBigDecimal(1) = 12
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getString(1) = 12.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 12.0
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132
+			getBigDecimal(1) = 132
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getString(1) = 132.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 132.0
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332
+			getBigDecimal(1) = 1332
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getString(1) = 1332.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1332.0
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getBigDecimal(1) = 1333.332000000000107320374809205532073974609375
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getString(1) = 1333.332
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 1333.332
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DOUBLE.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 2
+			getShort(1) = 2
+			getInt(1) = 2
+			getLong(1) = 2
+			getFloat(1) = 2.0
+			getFloat(1) = 2.0
+			getDouble(1) = 2.0
+			getBigDecimal(1) = 2.0000
+			getBigDecimal(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getString(1) = 2.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 2.0000
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 12
+			getShort(1) = 12
+			getInt(1) = 12
+			getLong(1) = 12
+			getFloat(1) = 12.0
+			getFloat(1) = 12.0
+			getDouble(1) = 12.0
+			getBigDecimal(1) = 12.0000
+			getBigDecimal(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getString(1) = 12.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 12.0000
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 132
+			getInt(1) = 132
+			getLong(1) = 132
+			getFloat(1) = 132.0
+			getFloat(1) = 132.0
+			getDouble(1) = 132.0
+			getBigDecimal(1) = 132.0000
+			getBigDecimal(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getString(1) = 132.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 132.0000
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1332
+			getInt(1) = 1332
+			getLong(1) = 1332
+			getFloat(1) = 1332.0
+			getFloat(1) = 1332.0
+			getDouble(1) = 1332.0
+			getBigDecimal(1) = 1332.0000
+			getBigDecimal(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getString(1) = 1332.0000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1332.0000
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 1333
+			getInt(1) = 1333
+			getLong(1) = 1333
+			getFloat(1) = 1333.332
+			getFloat(1) = 1333.332
+			getDouble(1) = 1333.332
+			getBigDecimal(1) = 1333.3320
+			getBigDecimal(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getString(1) = 1333.3320
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 1333.3320
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: Invalid character string format for type DECIMAL.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	setObject(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, VARBINARY)
+	setObject(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, LONGVARBINARY)
+	setObject(1, byte[])
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, BIT)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, BOOLEAN)
+	setObject(1, true)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, TINYINT)
+	setObject(1, 6)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, SMALLINT)
+	setObject(1, 66)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, INTEGER)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, BIGINT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, FLOAT)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, REAL)
+	setObject(1, 666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DOUBLE)
+	setObject(1, 666)
+	cs.execute()
+	Exception SQL Exception: The exception 'java.lang.Throwable: bad type 8' was thrown while evaluating an expression.
+	cs.registerOutParameter(1, NUMERIC)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DECIMAL)
+	setObject(1, 666.666)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, DATE)
+	setObject(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getDate(1) = 1933-03-03
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 1933-03-03
+	cs.registerOutParameter(1, TIME)
+	setObject(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:03:03
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 03:03:03
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1933-03-03
+			getTime(1) = 03:03:03
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setObject(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	setObject(1, Date.valueOf(1999-09-09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, VARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	setObject(1, "Set via setString()")
+	Exception SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	setObject(1, Time.valueOf(09:09:09))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, TIMESTAMP)
+	setObject(1, Timestamp.valueOf(xxxxxxFILTERED-TIMESTAMPxxxxx))
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+...not doing any setXXX, just OUT parameters, not IN/OUT
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, BIT)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	...no setXXX(1) at all
+	cs.execute()
+	Exception SQL Exception: At least one parameter to the current statement is uninitialized.
+------------------------------------
+==============================================
+TESTING RETURN OUTPUT PARAMETERS
+==============================================
+------------------------------------
+{call returnsNothing()}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+{? = call returnsShortP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'SMALLINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'SMALLINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'SMALLINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+{? = call returnsIntegerP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'INTEGER'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'INTEGER'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'INTEGER'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+{? = call returnsLongP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getString(1) = 666
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'BIGINT'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'BIGINT'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'BIGINT'.
+			getObject(1) = 666
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+{? = call returnsFloatP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'REAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'REAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'REAL'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+{? = call returnsDoubleP(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666
+			getBigDecimal(1) = 666
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getString(1) = 666.0
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DOUBLE'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DOUBLE'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DOUBLE'.
+			getObject(1) = 666.0
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+{? = call returnsBigDecimal(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: The resulting value is outside the range for the data type TINYINT.
+			getShort(1) = 666
+			getInt(1) = 666
+			getLong(1) = 666
+			getFloat(1) = 666.0
+			getFloat(1) = 666.0
+			getDouble(1) = 666.0
+			getBigDecimal(1) = 666.00
+			getBigDecimal(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getString(1) = 666.00
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'DECIMAL'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DECIMAL'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DECIMAL'.
+			getObject(1) = 666.00
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{? = call returnsByteArray(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, VARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, LONGVARCHAR)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARCHAR because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIMESTAMP because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, BINARY)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, VARBINARY)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, LONGVARBINARY)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getString(1) = ff000000000000000000000000000000
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getTimestamp(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Timestamp' from a data value of type 'VARCHAR () FOR BIT DATA'.
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getBytes(1) = -1000000000000000
+			getObject(1) = -1000000000000000
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+{? = call returnsString(?)}
+	cs.registerOutParameter(1, BIT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, BOOLEAN)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = true
+			getString(1) = true
+			getString(1) = true
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = true
+	cs.registerOutParameter(1, TINYINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, SMALLINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, INTEGER)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, BIGINT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = 3
+			getShort(1) = 3
+			getInt(1) = 3
+			getLong(1) = 3
+			getFloat(1) = 3.0
+			getFloat(1) = 3.0
+			getDouble(1) = 3.0
+			getBigDecimal(1) = 3
+			getBigDecimal(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getString(1) = 3
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3
+	cs.registerOutParameter(1, FLOAT)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, REAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DOUBLE)
+	cs.execute()
+	Exception SQL Exception: The exception 'java.lang.Throwable: bad type 8' was thrown while evaluating an expression.
+	cs.registerOutParameter(1, NUMERIC)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, DECIMAL)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = 3.33
+			getFloat(1) = 3.33
+			getDouble(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getBigDecimal(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getString(1) = 3.33
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:33:00
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 3.33
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getString(1) = I am a string
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = I am a string
+	cs.registerOutParameter(1, DATE)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getString(1) = 1933-03-03
+			getDate(1) = 1933-03-03
+			getTime(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 1933-03-03
+	cs.registerOutParameter(1, TIME)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getString(1) = 03:03:03
+			getDate(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getTime(1) = 03:03:03
+			getTimestamp(1) = SQL Exception: The syntax of the string representation of a datetime value is incorrect.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = 03:03:03
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = true
+			getBoolean(1) = true
+			getByte(1) = SQL Exception: Invalid character string format for type byte.
+			getShort(1) = SQL Exception: Invalid character string format for type short.
+			getInt(1) = SQL Exception: Invalid character string format for type int.
+			getLong(1) = SQL Exception: Invalid character string format for type long.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getFloat(1) = SQL Exception: Invalid character string format for type float.
+			getDouble(1) = SQL Exception: Invalid character string format for type double.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getBigDecimal(1) = SQL Exception: Invalid character string format for type java.math.BigDecimal.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1933-03-03
+			getTime(1) = 03:03:03
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'VARCHAR'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{? = call returnsDate(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, DATE)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'DATE'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'DATE'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'DATE'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'DATE'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'DATE'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'DATE'.
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getString(1) = 1966-06-06
+			getDate(1) = 1966-06-06
+			getTime(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Time' from a data value of type 'DATE'.
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'DATE'.
+			getObject(1) = 1966-06-06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+{? = call returnsTimestamp(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, DATE)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, TIME)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TIME because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIMESTAMP'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIMESTAMP'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIMESTAMP'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIMESTAMP'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIMESTAMP'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIMESTAMP'.
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getString(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getDate(1) = 1966-06-06
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIMESTAMP'.
+			getObject(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{? = call returnsTime(?)}
+	cs.registerOutParameter(1, BIT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type CHAR () FOR BIT DATA because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BOOLEAN)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BOOLEAN because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TINYINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type TINYINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, SMALLINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type SMALLINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, INTEGER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type INTEGER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, BIGINT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BIGINT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, FLOAT)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type FLOAT because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, REAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type REAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DOUBLE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DOUBLE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, NUMERIC)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type NUMERIC because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, DECIMAL)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DECIMAL because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, CHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, VARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, LONGVARCHAR)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, DATE)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type DATE because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, TIME)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, TIMESTAMP)
+	cs.execute()
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getBoolean(1) = SQL Exception: An attempt was made to get a data value of type 'boolean' from a data value of type 'TIME'.
+			getByte(1) = SQL Exception: An attempt was made to get a data value of type 'byte' from a data value of type 'TIME'.
+			getShort(1) = SQL Exception: An attempt was made to get a data value of type 'short' from a data value of type 'TIME'.
+			getInt(1) = SQL Exception: An attempt was made to get a data value of type 'int' from a data value of type 'TIME'.
+			getLong(1) = SQL Exception: An attempt was made to get a data value of type 'long' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getFloat(1) = SQL Exception: An attempt was made to get a data value of type 'float' from a data value of type 'TIME'.
+			getDouble(1) = SQL Exception: An attempt was made to get a data value of type 'double' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getBigDecimal(1) = SQL Exception: An attempt was made to get a data value of type 'java.math.BigDecimal' from a data value of type 'TIME'.
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getString(1) = 06:06:06
+			getDate(1) = SQL Exception: An attempt was made to get a data value of type 'java.sql.Date' from a data value of type 'TIME'.
+			getTime(1) = 06:06:06
+			getTimestamp(1) = xxxxxxFILTERED-TIMESTAMPxxxxx
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getBytes(1) = SQL Exception: An attempt was made to get a data value of type 'byte[]' from a data value of type 'TIME'.
+			getObject(1) = 06:06:06
+	cs.registerOutParameter(1, BINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type BINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, VARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type VARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, LONGVARBINARY)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type LONGVARBINARY because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+------------------------------------
+==============================================
+TESTING OUTPUT PARAMETERS WITH register(OTHER)
+==============================================
+------------------------------------
+{call takesNothing()}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: No input parameters.
+------------------------------------
+call takesShortPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type SMALLINT and they are incompatible.
+------------------------------------
+call takesIntegerPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type INTEGER and they are incompatible.
+------------------------------------
+call takesLongPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type BIGINT and they are incompatible.
+------------------------------------
+call takesFloatPrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type REAL and they are incompatible.
+------------------------------------
+call takesDoublePrimitive(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DOUBLE and they are incompatible.
+------------------------------------
+call takesBigDecimal(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DECIMAL and they are incompatible.
+------------------------------------
+{call takesByteArray(?,?)}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR () FOR BIT DATA and they are incompatible.
+------------------------------------
+call takesString(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type VARCHAR and they are incompatible.
+------------------------------------
+{call takesDate(?,?)}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type DATE and they are incompatible.
+------------------------------------
+call takesTimestamp(?,?)
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIMESTAMP and they are incompatible.
+------------------------------------
+{call takesTime(?,?)}
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+	cs.registerOutParameter(1, Types.OTHER)
+	Exception SQL Exception: Parameter 1 cannot be registered to be of type OTHER because it maps to type TIME and they are incompatible.
+------------------------------------
+start testManyOut
+Ten OUT parameters
+  a1 = 0
+  a2 = 0
+  a3 = 0
+  a4 = 0
+  a5 = 0
+  s1 = null
+  s2 = null
+  s3 = null
+  s4 = null
+  s5 = null
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+  a1 = 0
+  a2 = 0
+  a3 = 0
+  a4 = 0
+  a5 = 0
+  s1 = null
+  s2 = null
+  s3 = null
+  s4 = null
+  s5 = null
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+Ten INOUT parameters
+  a1 = 0
+  a2 = 0
+  a3 = 99
+  a4 = 103
+  a5 = 1456
+  s1 = null
+  s2 = null
+  s3 = hello
+  s4 = goodbye
+  s5 = welcome
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+  a1 = 0
+  a2 = 0
+  a3 = 99
+  a4 = 103
+  a5 = 1456
+  s1 = null
+  s2 = null
+  s3 = hello
+  s4 = goodbye
+  s5 = welcome
+  1 = 0 was null false
+  2 = 0 was null false
+  3 = 77 was null false
+  4 = 4 was null false
+  5 = 2003 was null false
+  6 = null was null true
+  7 = null was null true
+  8 = cloudscape was null false
+  9 = jbms was null false
+  10 = IBM CS was null false
+end testManyOut
+==============================================
+TESTING FIX OF 5116 -- VAR BIT VARYING INPUT
+==============================================
+Executed query
+i= 0
+UserInput = null
+resultSet wasNull
+Close result set.
+Executed query
+i= 0
+UserInput length  = 2 bytes
+0) = 1
+1) = 2
+Close result set.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/paramij.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/paramij.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,102 @@
+ij> --
+-- test that we do not allow incorrect where <boolean> syntax
+create table t1 (c11 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1);
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> -- positive tests
+-- In following test cases, where clause results in a boolean value
+prepare p1 as 'select * from t1 where ?=1';
+ij> execute p1 using 'values(1)';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where ? like ''2'' ';
+ij> execute p1 using 'values(''a'')';
+C11        
+-----------
+ij> prepare p1 as 'select * from t1 where not ? > 1';
+ij> execute p1 using 'values(1)';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where lower(?) = ''a''';
+ij> execute p1 using 'values(''a'')';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where {fn length(?)} > 1';
+ij> execute p1 using 'values(''a'')';
+C11        
+-----------
+ij> prepare p1 as 'select * from t1 where {fn locate(?,''a'',1)} = 1';
+ij> execute p1 using 'values(''a'')';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where ? between 1 and 3';
+ij> execute p1 using 'values(2)';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where ? in (1, ?)';
+ij> execute p1 using 'values(2,1)';
+C11        
+-----------
+ij> prepare p1 as 'select * from t1 where ? is null';
+ij> execute p1 using 'values(1)';
+C11        
+-----------
+ij> prepare p1 as 'select * from t1 where ? is not null';
+ij> execute p1 using 'values(1)';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where ? <> ALL (values(1))';
+ij> execute p1 using 'values(3)';
+C11        
+-----------
+1          
+ij> prepare p1 as 'select * from t1 where exists (select c11 from t1 where 1=?)';
+ij> execute p1 using 'values(3)';
+C11        
+-----------
+ij> prepare p1 as 'select * from t1 where cast(? as int) = 1';
+ij> execute p1 using 'values(1)';
+C11        
+-----------
+1          
+ij> -- negative tests
+-- In following test cases, there is no way to ensure where with ? will result in a boolean value
+prepare p1 as 'select * from t1 where c11';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where c11+1';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where 1';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where ?';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'PARAMETER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where ? for update';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'PARAMETER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where (?)';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'PARAMETER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where ? and 1=1';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'PARAMETER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where ? and 1=? or 2=2';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'PARAMETER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where not ?';
+ERROR 42X36: The 'not' operator is not allowed to take a ? parameter as an operand.
+ij> prepare p1 as 'select * from t1 where lower(?)';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'VARCHAR' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where lower(?) and 1=1';
+ERROR 42Y94: An AND or OR has a non-Boolean operand. The operands of AND and OR must evaluate to TRUE, FALSE, or UNKNOWN.
+ij> prepare p1 as 'select * from t1 where {fn length(?)}';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where {fn locate(?,''a'',1)}';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where cast(? as int)';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> prepare p1 as 'select * from t1 where (?||''1'')';
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'LONG VARCHAR' expression.  It must be a BOOLEAN expression.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/partdml.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/partdml.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,657 @@
+ij> --
+-- Test partial row access for update and delete
+--
+maximumdisplaywidth 2000;
+ij> drop function getScanCols;
+ERROR 42Y55: 'DROP FUNCTION' cannot be performed on 'GETSCANCOLS' because it does not exist.
+ij> drop table basic;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'BASIC' because it does not exist.
+ij> drop table p;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'P' because it does not exist.
+ij> CREATE FUNCTION getScanCols(value VARCHAR(32672)) 
+       RETURNS VARCHAR (32672) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StatParser.getScanCols' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL;
+0 rows inserted/updated/deleted
+ij> create table p (ccharForBitData char(1) for bit data not null, cdec dec(6,2) not null, unindexed smallint, cchar char(10) not null, 
+		constraint pk1 primary key (cchar, ccharForBitData), constraint pk2 unique (cdec));
+0 rows inserted/updated/deleted
+ij> insert into p values (x'00', 0.0, 11, '00');
+1 row inserted/updated/deleted
+ij> insert into p values (x'11', 1.1, 22, '11');
+1 row inserted/updated/deleted
+ij> insert into p values (x'22', 2.2, 33, '22');
+1 row inserted/updated/deleted
+ij> insert into p values (x'33', 3.3, 44, '33');
+1 row inserted/updated/deleted
+ij> create table basic (cint int, cchar char(10), 
+		ctime time, cdec dec(6,2), 
+		ccharForBitData char(1) for bit data, unindexed int);
+0 rows inserted/updated/deleted
+ij> create index b1 on basic (cchar, ccharForBitData, cint);
+0 rows inserted/updated/deleted
+ij> create index b2 on basic (ctime);
+0 rows inserted/updated/deleted
+ij> create index b3 on basic (ctime, cint);
+0 rows inserted/updated/deleted
+ij> create index b4 on basic (cint);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 200;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> -- the extra 33s are so we can ensure we'll use an index when looking for the others
+insert into basic values (11, '11', TIME('11:11:11'), 1.1, x'11', 11);
+1 row inserted/updated/deleted
+ij> insert into basic values (22, '22', TIME('22:22:22'), 2.2, x'22', 22);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+1 row inserted/updated/deleted
+ij> -- simple update of each column
+update basic set cint = cint;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> update basic set cchar = cchar;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> update basic set ctime = ctime;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B3 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2}
+ij> update basic set cdec = cdec;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={3}
+ij> update basic set ccharForBitData = ccharForBitData;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> update basic set unindexed = unindexed;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={5}
+ij> -- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+CCH&|CTIME   |CDEC     |CINT       |CCHAR     
+----------------------------------------------
+11  |11:11:11|1.10     |11         |11        
+22  |22:22:22|2.20     |22         |22        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+ij> values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+1          
+-----------
+1          
+ij> update basic set cint = cint where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> update basic set cchar = cchar where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> update basic set ctime = ctime where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> update basic set ctime = ctime where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> update basic set cdec = cdec where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> update basic set ccharForBitData = ccharForBitData where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> -- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+CCH&|CTIME   |CDEC     |CINT       |CCHAR     
+----------------------------------------------
+11  |11:11:11|1.10     |11         |11        
+22  |22:22:22|2.20     |22         |22        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+ij> values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+1          
+-----------
+1          
+ij> update basic set cint = cint where ccharForBitData = x'11';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> update basic set cchar = cchar where ccharForBitData = x'11';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> update basic set ctime = ctime where ccharForBitData = x'11';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 2, 4}
+ij> update basic set cdec = cdec where ccharForBitData = x'11';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={3, 4}
+ij> update basic set ccharForBitData = ccharForBitData where ccharForBitData = x'11';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> -- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+CCH&|CTIME   |CDEC     |CINT       |CCHAR     
+----------------------------------------------
+11  |11:11:11|1.10     |11         |11        
+22  |22:22:22|2.20     |22         |22        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+ij> values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+1          
+-----------
+1          
+ij> autocommit off;
+ij> update basic set cdec = cint;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 3}
+ij> -- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+CCH&|CTIME   |CDEC     |CINT       |CCHAR     
+----------------------------------------------
+11  |11:11:11|11.00    |11         |11        
+22  |22:22:22|22.00    |22         |22        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+33  |03:33:33|33.00    |33         |33        
+ij> values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+1          
+-----------
+1          
+ij> rollback;
+ij> update basic set cchar = cchar where cdec = 3.3 and ctime = TIME('03:33:33');
+10 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 3, 4}
+ij> update basic set ctime = ctime, cchar = cchar, cint = cint, cdec = cdec, ccharForBitData = ccharForBitData;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 3, 4}
+ij> -- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+CCH&|CTIME   |CDEC     |CINT       |CCHAR     
+----------------------------------------------
+11  |11:11:11|1.10     |11         |11        
+22  |22:22:22|2.20     |22         |22        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+33  |03:33:33|3.30     |33         |33        
+ij> values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+1          
+-----------
+1          
+ij> --------------------------------------------------------------------------
+-- deletes
+--------------------------------------------------------------------------
+--
+-- index scans
+--
+delete from basic where cchar = '22';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where cint = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where ctime = TIME('22:22:22');
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B2 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where ccharForBitData = x'22';
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> rollback;
+ij> delete from basic where cdec = 2.2;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 3, 4}
+ij> rollback;
+ij> --
+-- index row to base row 
+--
+delete from basic where cchar = '22' and unindexed = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where cint = 22 and unindexed = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where ctime = TIME('22:22:22') and unindexed = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B2 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where ccharForBitData = x'22' and unindexed = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4, 5}
+ij> rollback;
+ij> delete from basic where cdec = 2.2 and unindexed = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> --
+-- table scans
+--
+delete from basic where cchar > '00';
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> rollback;
+ij> delete from basic where cint > 1;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> rollback;
+ij> delete from basic where ctime > TIME('00:00:01');
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> rollback;
+ij> delete from basic where ccharForBitData > x'11';
+11 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4}
+ij> rollback;
+ij> delete from basic where cdec > 2;
+11 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 3, 4}
+ij> rollback;
+ij> delete from basic where unindexed = 22;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 4, 5}
+ij> rollback;
+ij> --
+-- some checks on deferred deletes
+--
+delete from basic where unindexed = (select min(cint) from basic);
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Bit set of columns fetched={2}
+Bit set of columns fetched&
+ij> rollback;
+ij> delete from basic where cint = (select min(cint) from basic);
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Bit set of columns fetched={2}
+Bit set of columns fetched&
+ij> rollback;
+ij> delete from basic where cdec = (select min(cdec) from basic);
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={3}
+Bit set of columns fetched={0, 1, 2, 3, 4}
+ij> rollback;
+ij> delete from basic where cdec = 1.1 and cchar = (select min(cchar) from basic);
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using share row locking chosen by the optimizer
+Bit set of columns fetched={0}
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> --
+-- quickly confirm that we get all columns for updateable cursors
+--
+get cursor c as 'select cint from basic for update';
+ij> next c;
+CINT       
+-----------
+11         
+ij> ----------------------------------------------------------------- 
+-- now lets try some constraints
+----------------------------------------------------------------- 
+--
+-- check constraints
+--
+alter table basic add constraint ck check (unindexed > cdec);
+ERROR X0X95: Operation 'ALTER TABLE' cannot be performed on object 'BASIC' because there is an open ResultSet dependent on that object.
+ij> commit;
+ij> update basic set unindexed = unindexed where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> update basic set unindexed = unindexed;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={5}
+ij> rollback;
+ij> update basic set cdec = cdec where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> delete from basic where cint = 11;
+1 row inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B4 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched=All
+	
+ij> rollback;
+ij> -- one that isn't affected by contstraint
+update basic set ctime = ctime;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B3 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2}
+ij> rollback;
+ij> -- confirm it is working ok
+update basic set unindexed = 0;
+12 rows inserted/updated/deleted
+ij> rollback;
+ij> --
+-- foreign keys
+--
+alter table basic add constraint fk1 foreign key (cchar, ccharForBitData) references p;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> update basic set cchar = cchar, ccharForBitData = ccharForBitData;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> update basic set cchar = cchar;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> update basic set ccharForBitData = ccharForBitData;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for BASIC using index B1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2, 3}
+ij> rollback;
+ij> --pk update
+-- only this update should fail, does not satisfy fk1
+update p set ccharForBitData = x'22', cchar = CAST(unindexed as CHAR(10));
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK1' for key (11        ,11).  The statement has been rolled back.
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 2, 3}
+ij> rollback;
+ij> update p set cdec = cdec + 1.1;
+4 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for P using constraint PK2 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1}
+ij> rollback;
+ij> update p set unindexed = 666, cchar = 'fail';
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK1' for key (11        ,11).  The statement has been rolled back.
+ij> rollback;
+ij> -- only this update should fail, does not satisfy fk1
+update p set ccharForBitData = x'66' where ccharForBitData = x'22';
+ERROR 23503: UPDATE on table 'P' caused a violation of foreign key constraint 'FK1' for key (22        ,22).  The statement has been rolled back.
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for P using constraint PK1 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1, 2}
+ij> rollback;
+ij> alter table basic add constraint fk2 foreign key (cdec) references p(cdec);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> update p set cdec = cdec + 1.1;
+4 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Index Scan ResultSet for P using constraint PK2 at read committed isolation level using exclusive row locking chosen by the optimizer
+Bit set of columns fetched={0, 1}
+ij> rollback;
+ij> update basic set cdec = cdec, cint = cint, ccharForBitData = ccharForBitData, cchar = cchar;
+12 rows inserted/updated/deleted
+ij> values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+1                                                                                                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TableScan
+Bit set of columns fetched={0, 1, 2, 3, 4}
+ij> rollback;
+ij> update basic set cdec = cdec+1.1, cint = cint, ccharForBitData = ccharForBitData, cchar = cchar;
+ERROR 23503: UPDATE on table 'BASIC' caused a violation of foreign key constraint 'FK2' for key (4.40).  The statement has been rolled back.
+ij> rollback;
+ij> delete from p where cdec = 1.1;
+ERROR 23503: DELETE on table 'P' caused a violation of foreign key constraint 'FK1' for key (11        ,11).  The statement has been rolled back.
+ij> rollback;
+ij> -- clean up
+drop function getScanCols;
+0 rows inserted/updated/deleted
+ij> drop table basic;
+0 rows inserted/updated/deleted
+ij> drop table p;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/positionedDelUpd.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/positionedDelUpd.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1151 @@
+ij> -- ** insert positionedDelete.sql
+--
+-- tests for positioned delete
+--
+-- 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:
+-- 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 t1_copy ( 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> -- populate the first table and copy
+insert into t1 values (1, '1111111111', 11e11, time('11:11:11'));
+1 row inserted/updated/deleted
+ij> insert into t1_copy select * from t1;
+1 row 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> -- empty table tests
+-- .no table name given
+-- this should fail with a syntax error
+delete;
+ERROR 42X01: Syntax error: Encountered "<EOF>" at line 5, column 6.
+ij> -- this should succeed
+get cursor c0 as 'select * from t1 for update';
+ij> next c0;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c0;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c0;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .same table name
+-- .cursor before 1st row
+get cursor c1 as 'select * from t2 for update';
+ij> -- 'cursor not on a row' expected
+delete from t2 where current of c1;
+ERROR XCL08: Cursor 'C1' is not on a row.
+ij> -- .different table name
+delete from t1 where current of c1;
+ERROR 42X28: Delete table 'T1' is not target of cursor 'C1'.
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .non-existant table
+delete from not_exists where current of c1;
+ERROR 42X28: Delete table 'NOT_EXISTS' is not target of cursor 'C1'.
+ij> close c1;
+ij> -- .delete from  base table, not exposed table name
+-- (this one should work, since base table)
+get cursor c2 as 'select * from t2 asdf for update';
+ij> delete from t2 where current of c2;
+ERROR XCL08: Cursor 'C2' is not on a row.
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .match correlation name
+-- (this one should fail, since correlation name)
+delete from asdf where current of c2;
+ERROR 42X28: Delete table 'ASDF' is not target of cursor 'C2'.
+ij> close c2;
+ij> -- .non-updatable cursor
+-- NOTE - forupdate responsible for extensive tests
+get cursor c3 as 'select * from t2 for read only';
+ij> delete from t2 where current of c3;
+ERROR 42X23: Cursor C3 is not updatable.
+ij> close c3;
+ij> -- .target cursor does not exist
+delete from t2 where current of c44;
+ERROR 42X30: Cursor 'C44' not found. Verify that autocommit is OFF.
+ij> -- .target cursor after last row
+get cursor c4 as 'select * from t1 for update';
+ij> next c4;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> next c4;
+No current row
+ij> next c4;
+No current row
+ij> delete from t1 where current of c4;
+ERROR XCL08: Cursor 'C4' is not on a row.
+ij> close c4;
+ij> -- .target cursor exists, closed
+get cursor c5 as 'select * from t1';
+ij> close c5;
+ij> delete from t1 where current of c5;
+ERROR 42X30: Cursor 'C5' not found. Verify that autocommit is OFF.
+ij> -- .target cursor on row
+get cursor c6 as 'select * from t1 for update';
+ij> next c6;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c6;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c6;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .target cursor on row deleted by another cursor
+get cursor c7 as 'select * from t1 for update';
+ij> next c7;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> get cursor c8 as 'select * from t1 for update';
+ij> next c8;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c7;
+1 row inserted/updated/deleted
+ij> delete from t1 where current of c8;
+ERROR XCL08: Cursor 'C8' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c7;
+ij> close c8;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .target cursor on already deleted row
+get cursor c9 as 'select * from t1 for update';
+ij> next c9;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c9;
+1 row inserted/updated/deleted
+ij> delete from t1 where current of c9;
+ERROR XCL08: Cursor 'C9' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c9;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- delete to row which was subject to searched update
+-- (row still within cursor qualification)
+get cursor c10 as 'select * from t1 for update';
+ij> next c10;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c10;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c10;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- delete to row which was subject to searched update
+-- (row becomes outside of cursor qualification)
+get cursor c10a as 'select * from t1 where i = 1 for update';
+ij> next c10a;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c10a;
+ERROR XCL08: Cursor 'C10A' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> close c10a;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- delete to row which was subject to positioned update
+-- (row becomes outside of cursor qualification)
+get cursor c11 as 'select * from t1 where i = 1 for update';
+ij> next c11;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1 where current of c11;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c11;
+ERROR XCL08: Cursor 'C11' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> close c11;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- delete to row which was subject to 2 searched updates
+-- (1st puts row outside of cursor qualification, 2nd restores it)
+get cursor c12 as 'select * from t1 where i = 1 for update';
+ij> next c12;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1;
+1 row inserted/updated/deleted
+ij> update t1 set i = 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c12;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c12;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- positioned delete on table with index (#724)
+create table t5 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t5 values (1, 1), (2, 2), (3, 3), (4, 4);
+4 rows inserted/updated/deleted
+ij> commit;
+ij> create index i5 on t5(c1);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+ij> next c1;
+C1         |C2         
+-----------------------
+2          |2          
+ij> delete from t5 where current of c1;
+1 row inserted/updated/deleted
+ij> next c1;
+C1         |C2         
+-----------------------
+3          |3          
+ij> next c1;
+C1         |C2         
+-----------------------
+4          |4          
+ij> delete from t5 where current of c1;
+1 row inserted/updated/deleted
+ij> select * from t5;
+C1         |C2         
+-----------------------
+1          |1          
+3          |3          
+ij> close c1;
+ij> rollback;
+ij> create index i5 on t5(c2);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+ij> next c1;
+C1         |C2         
+-----------------------
+2          |2          
+ij> delete from t5 where current of c1;
+1 row inserted/updated/deleted
+ij> next c1;
+C1         |C2         
+-----------------------
+3          |3          
+ij> next c1;
+C1         |C2         
+-----------------------
+4          |4          
+ij> delete from t5 where current of c1;
+1 row inserted/updated/deleted
+ij> select * from t5;
+C1         |C2         
+-----------------------
+1          |1          
+3          |3          
+ij> close c1;
+ij> rollback;
+ij> -- reset autocommit
+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 t5;
+0 rows inserted/updated/deleted
+ij> drop table t1_copy;
+0 rows inserted/updated/deleted
+ij> -- ** insert positionedUpdate.sql
+--
+-- tests for positioned update
+--
+-- 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:
+-- 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 t1_copy ( 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> -- populate the first table and copy
+insert into t1 values (1, '1111111111', 11e11, time('11:11:11'));
+1 row inserted/updated/deleted
+ij> insert into t1_copy select * from t1;
+1 row 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> -- empty table tests
+-- .no table name given
+-- this should fail with a syntax error
+update set c1 = c1;
+ERROR 42X01: Syntax error: Encountered "set" at line 5, column 8.
+ij> -- this should succeed
+get cursor c0 as 'select * from t1 for update';
+ij> next c0;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = 999 where current of c0;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+999        |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = 1 where current of c0;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> close c0;
+ij> -- .same table name
+-- .cursor before 1st row
+get cursor c1 as 'select * from t2 for update';
+ij> -- 'cursor not on a row' expected
+update t2 set s = s where current of c1;
+ERROR XCL08: Cursor 'C1' is not on a row.
+ij> -- .different table name
+update t1 set i = i where current of c1;
+ERROR 42X29: Update table 'T1' is not target of cursor 'C1'.
+ij> -- .non-existant table
+update not_exists set i = i where current of c1;
+ERROR 42X29: Update table 'NOT_EXISTS' is not target of cursor 'C1'.
+ij> close c1;
+ij> -- .update base table, not exposed table name
+-- (this one should work, since base table)
+get cursor c2 as 'select * from t2 asdf for update';
+ij> update t2 set s = s where current of c2;
+ERROR XCL08: Cursor 'C2' is not on a row.
+ij> -- .match correlation name
+-- (this one should fail, since correlation name)
+update asdf set s = s where current of c2;
+ERROR 42X29: Update table 'ASDF' is not target of cursor 'C2'.
+ij> close c2;
+ij> -- .non-updatable cursor
+-- NOTE - forupdate responsible for extensive tests
+get cursor c3 as 'select * from t2 for read only';
+ij> update t2 set s = s where current of c3;
+ERROR 42X23: Cursor C3 is not updatable.
+ij> close c3;
+ij> -- .target cursor does not exist
+update t2 set s = s where current of c44;
+ERROR 42X30: Cursor 'C44' not found. Verify that autocommit is OFF.
+ij> -- .target cursor after last row
+get cursor c4 as 'select * from t1 for update';
+ij> next c4;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> next c4;
+No current row
+ij> next c4;
+No current row
+ij> update t1 set i = i where current of c4;
+ERROR XCL08: Cursor 'C4' is not on a row.
+ij> close c4;
+ij> -- .target cursor exists, closed
+get cursor c5 as 'select * from t1';
+ij> close c5;
+ij> update t1 set i = i where current of c5;
+ERROR 42X30: Cursor 'C5' not found. Verify that autocommit is OFF.
+ij> -- .target cursor on row
+get cursor c6 as 'select * from t1 for update';
+ij> next c6;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1 where current of c6;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> -- .consecutive updates to same row in cursor, keeping it in the cursor qual
+update t1 set i = i + 1 where current of c6;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+3          |1111111111|1.1E12                |11:11:11
+ij> close c6;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .target cursor on row deleted by another cursor
+get cursor c7 as 'select * from t1 for update';
+ij> next c7;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> get cursor c8 as 'select * from t1 for update';
+ij> next c8;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c7;
+1 row inserted/updated/deleted
+ij> update t1 set i = i + 1 where current of c8;
+ERROR XCL08: Cursor 'C8' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c7;
+ij> close c8;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .target cursor on already deleted row
+get cursor c9 as 'select * from t1 for update';
+ij> next c9;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> delete from t1 where current of c9;
+1 row inserted/updated/deleted
+ij> update t1 set i = i + 1 where current of c9;
+ERROR XCL08: Cursor 'C9' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+ij> close c9;
+ij> -- restore t1
+delete from t1;
+0 rows inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- update to row which was subject to searched update
+-- (row still within cursor qualification)
+get cursor c10 as 'select * from t1 for update';
+ij> next c10;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 2 where current of c10;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+4          |1111111111|1.1E12                |11:11:11
+ij> close c10;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- update to row which was subject to searched update
+-- (row becomes outside of cursor qualification)
+get cursor c10a as 'select * from t1 where i = 1 for update';
+ij> next c10a;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 2 where current of c10a;
+ERROR XCL08: Cursor 'C10A' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> close c10a;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- update to row which was subject to positioned update
+-- (row becomes outside of cursor qualification)
+get cursor c11 as 'select * from t1 where i = 1 for update';
+ij> next c11;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1 where current of c11;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 2 where current of c11;
+ERROR XCL08: Cursor 'C11' is not on a row.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+2          |1111111111|1.1E12                |11:11:11
+ij> close c11;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- update to row which was subject to 2 searched updates
+-- (1st puts row outside of cursor qualification, 2nd restores it)
+get cursor c12 as 'select * from t1 where i = 1 for update';
+ij> next c12;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 1;
+1 row inserted/updated/deleted
+ij> update t1 set i = 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> update t1 set i = i + 2 where current of c12;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+3          |1111111111|1.1E12                |11:11:11
+ij> -- negative test - try to update a non-existant column
+update t1 set notacolumn = i + 1 where current of c12;
+ERROR 42X14: 'NOTACOLUMN' is not a column in table or VTI 'APP.T1'.
+ij> close c12;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- update column not in SELECT list, but in FOR UPDATE OF list
+get cursor c13 as 'select i from t1 for update of v';
+ij> next c13;
+I          
+-----------
+1          
+ij> update t1 set v = '999' where current of c13;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |999       |1.1E12                |11:11:11
+ij> -- update column not in FOR UPDATE OF list (negative test)
+update t1 set i = 999 where current of c13;
+ERROR 42X31: Column 'I' is not in FOR UPDATE list of cursor 'C13'.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |999       |1.1E12                |11:11:11
+ij> close c13;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- update a non-referenced column
+get cursor c14 as 'select i from t1 for update';
+ij> next c14;
+I          
+-----------
+1          
+ij> update t1 set v = '999' where current of c14;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |999       |1.1E12                |11:11:11
+ij> close c14;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .update columns in list in order different from the list's
+get cursor c15 as 'select i, v from t1 for update of i, v';
+ij> next c15;
+I          |V         
+----------------------
+1          |1111111111
+ij> update t1 set v = '999', i = 888 where current of c15;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+888        |999       |1.1E12                |11:11:11
+ij> -- . show that target table name must be used as qualifier, other names not allowed
+update t1 set t1.v = '998' where current of c15;
+1 row inserted/updated/deleted
+ij> update t1 set t2.v = '997' where current of c15;
+ERROR 42X55: Table name 'T2' should be the same as 'T1'.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+888        |998       |1.1E12                |11:11:11
+ij> close c15;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .update only 1 column in the list
+get cursor c16 as 'select i, v from t1 for update of i, v';
+ij> next c16;
+I          |V         
+----------------------
+1          |1111111111
+ij> update t1 set v = '999' where current of c16;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |999       |1.1E12                |11:11:11
+ij> close c16;
+ij> -- restore t1
+delete from t1;
+1 row inserted/updated/deleted
+ij> insert into t1 select * from t1_copy;
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- .try to update through a closed cursor
+get cursor c17 as 'select i, v from t1 for update of i, v';
+ij> next c17;
+I          |V         
+----------------------
+1          |1111111111
+ij> close c17;
+ij> update t1 set v = '999' where current of c17;
+ERROR 42X30: Cursor 'C17' not found. Verify that autocommit is OFF.
+ij> select * from t1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> -- a positioned update requires a named target table.
+-- if we prepare the positioned update, close the underlying cursor
+-- and reopen it on a different table, then the positioned update
+-- should fail 
+create table t3(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t3 values (1,1), (2, 1), (3,3);
+3 rows inserted/updated/deleted
+ij> create table t4(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t4 select * from t3;
+3 rows inserted/updated/deleted
+ij> get cursor c1 as 'select c1 from t3 for update of c1';
+ij> next c1;
+C1         
+-----------
+1          
+ij> prepare u1 as 'update t3 set c1 = c1 + 1 where current of c1';
+ij> execute u1;
+1 row inserted/updated/deleted
+ij> next c1;
+C1         
+-----------
+2          
+ij> select * from t3;
+C1         |C2         
+-----------------------
+2          |1          
+2          |1          
+3          |3          
+ij> close c1;
+ij> get cursor c1 as 'select c1 from t4 for update of c1';
+ij> next c1;
+C1         
+-----------
+1          
+ij> execute u1;
+ERROR 42X29: Update table 'T3' is not target of cursor 'C1'.
+ij> select * from t4;
+C1         |C2         
+-----------------------
+1          |1          
+2          |1          
+3          |3          
+ij> select * from t3;
+C1         |C2         
+-----------------------
+2          |1          
+2          |1          
+3          |3          
+ij> close c1;
+ij> -- now, reopen c1 on a table without column c1 and see
+-- what happens on an attempted positioned update
+get cursor c1 as 'select * from t1 for update';
+ij> next c1;
+I          |V         |D                     |T       
+------------------------------------------------------
+1          |1111111111|1.1E12                |11:11:11
+ij> execute u1;
+ERROR 42X29: Update table 'T3' is not target of cursor 'C1'.
+ij> close c1;
+ij> -- now, reopen c1 on t3, but as a read only cursor
+select * from t3;
+C1         |C2         
+-----------------------
+2          |1          
+2          |1          
+3          |3          
+ij> get cursor c1 as 'select c1 from t3 ';
+ij> next c1;
+C1         
+-----------
+2          
+ij> execute u1;
+ERROR 42X23: Cursor C1 is not updatable.
+ij> select * from t3;
+C1         |C2         
+-----------------------
+2          |1          
+2          |1          
+3          |3          
+ij> close c1;
+ij> -- positioned update on table with index (#724)
+create table t5 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t5 values (1, 1), (2, 2), (3, 3), (4, 4);
+4 rows inserted/updated/deleted
+ij> commit;
+ij> create index i5 on t5(c1);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+ij> next c1;
+C1         |C2         
+-----------------------
+2          |2          
+ij> update t5 set c2 = 9 where current of c1;
+1 row inserted/updated/deleted
+ij> next c1;
+C1         |C2         
+-----------------------
+3          |3          
+ij> next c1;
+C1         |C2         
+-----------------------
+4          |4          
+ij> update t5 set c2 = 9 where current of c1;
+1 row inserted/updated/deleted
+ij> select * from t5;
+C1         |C2         
+-----------------------
+1          |1          
+2          |9          
+3          |3          
+4          |9          
+ij> close c1;
+ij> rollback;
+ij> create index i5 on t5(c2);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+ij> next c1;
+C1         |C2         
+-----------------------
+2          |2          
+ij> update t5 set c2 = 9 where current of c1;
+1 row inserted/updated/deleted
+ij> next c1;
+C1         |C2         
+-----------------------
+3          |3          
+ij> next c1;
+C1         |C2         
+-----------------------
+4          |4          
+ij> update t5 set c2 = 9 where current of c1;
+1 row inserted/updated/deleted
+ij> select * from t5;
+C1         |C2         
+-----------------------
+1          |1          
+2          |9          
+3          |3          
+4          |9          
+ij> close c1;
+ij> rollback;
+ij> -- reset autocommit
+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> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t5;
+0 rows inserted/updated/deleted
+ij> drop table t1_copy;
+0 rows inserted/updated/deleted
+ij> -- tests for beetle 4417, schema and correlation name not working with
+-- current of
+create schema ejb;
+0 rows inserted/updated/deleted
+ij> create table ejb.test1
+	(primarykey varchar(41) not null primary key,
+	name varchar(200),
+	parentkey varchar(41));
+0 rows inserted/updated/deleted
+ij> insert into ejb.test1 values('0','jack','jill');
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> -- test update with schema name
+get cursor c1 as 'select primarykey, parentkey, name from ejb.test1 where primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |jack                                                                                                                            
+ij> prepare p1 as 'update ejb.test1 set name = ''john'' where current of c1';
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |john                                                                                                                            
+ij> close c1;
+ij> -- test update with schema name and correlation name
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |john                                                                                                                            
+ij> prepare p1 as 'update ejb.test1 set name = ''joe'' where current of c1';
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |joe                                                                                                                             
+ij> close c1;
+ij> -- test update with set schema
+set schema ejb;
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select primarykey, parentkey, name from test1 where primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |joe                                                                                                                             
+ij> prepare p1 as 'update test1 set name = ''john'' where current of c1';
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |john                                                                                                                            
+ij> close c1;
+ij> -- test update with set schema and correlation name
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |john                                                                                                                            
+ij> prepare p1 as 'update test1 set name = ''joe'' where current of c1';
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |joe                                                                                                                             
+ij> close c1;
+ij> -- test update with set schema and correlation name and schema name
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |joe                                                                                                                             
+ij> prepare p1 as 'update ejb.test1 set name = ''joe'' where current of c1';
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |joe                                                                                                                             
+ij> close c1;
+ij> -- 
+-- reset schema name
+set schema app;
+0 rows inserted/updated/deleted
+ij> -- test delete with schema name 
+get cursor c1 as 'select primarykey, parentkey, name from ejb.test1 where primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |joe                                                                                                                             
+ij> prepare p2 as 'delete from ejb.test1 where current of c1';
+ij> execute p2;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> close c1;
+ij> -- test delete with schema name and correlation name
+insert into ejb.test1 values('0','jack','jill');
+1 row inserted/updated/deleted
+ij> get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |jack                                                                                                                            
+ij> prepare p2 as 'delete from ejb.test1 where current of c1';
+ij> execute p2;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> close c1;
+ij> -- test delete with set schema 
+set schema ejb;
+0 rows inserted/updated/deleted
+ij> insert into test1 values('0','jack','jill');
+1 row inserted/updated/deleted
+ij> get cursor c1 as 'select primarykey, parentkey, name from test1 where primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |jack                                                                                                                            
+ij> prepare p2 as 'delete from test1 where current of c1';
+ij> execute p2;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> close c1;
+ij> -- test delete with set schema and correlation name
+insert into test1 values('0','jack','jill');
+1 row inserted/updated/deleted
+ij> get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |jack                                                                                                                            
+ij> prepare p2 as 'delete from test1 where current of c1';
+ij> execute p2;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> close c1;
+ij> -- test delete with set schema and correlation name and schema name
+insert into test1 values('0','jack','jill');
+1 row inserted/updated/deleted
+ij> get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |jack                                                                                                                            
+ij> prepare p2 as 'delete from ejb.test1 where current of c1';
+ij> execute p2;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from ejb.test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> close c1;
+ij> commit;
+ij> -- clean up
+autocommit on;
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> drop table ejb.test1;
+0 rows inserted/updated/deleted
+ij> --drop schema ejb restrict; - can't drop this because it will fail SPS tests since
+--statements are created and would need to be dropped
+-- test correlation on select in current of cursor in current schema
+-- this was also broken
+create table test1
+	(primarykey varchar(41) not null primary key,
+	name varchar(200),
+	parentkey varchar(41));
+0 rows inserted/updated/deleted
+ij> -- make sure a cursor will work fine in this situation
+insert into test1 values('0','jack','jill');
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from test1 t1 where t1.primarykey = ''0'' for update';
+ij> next c1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0                                        |jill                                     |jack                                                                                                                            
+ij> prepare p2 as 'delete from test1 where current of c1';
+ij> execute p2;
+1 row inserted/updated/deleted
+ij> select primarykey, parentkey, name from test1;
+PRIMARYKEY                               |PARENTKEY                                |NAME                                                                                                                            
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> close c1;
+ij> commit;
+ij> -- clean up
+autocommit on;
+ij> drop table test1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/precedence.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/precedence.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,23 @@
+ij> -- this tests precedence of operators.
+-- test precedence of operators other than and, or, and not
+-- that return boolean.
+-- expect 'true' row:
+create table t1(c11 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> select c11 from t1 where 1 in (1,2,3) = (1=1);
+C11        
+-----------
+1          
+ij> --
+select c11 from t1 where 'acme widgets' like 'acme%' in (1=1);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 59.
+ij> select c11 from t1 where 1 between -100 and 100 is not null;
+C11        
+-----------
+1          
+ij> --
+select c11 from t1 where exists(select * from (values 1) as t) not in (1=2);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 73.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/predicatesIntoViews.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/predicatesIntoViews.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5744 @@
+ij> -- test the pushing of predicates into unflattened views
+-- and derived tables
+set isolation to rr;
+0 rows inserted/updated/deleted
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> -- set up
+create table t1(c1 int, c2 int, c3 varchar(2000));
+0 rows inserted/updated/deleted
+ij> -- simple views
+create view sv1 (c1, c2, c3) as select c1, c2, c3 || '$' from t1;
+0 rows inserted/updated/deleted
+ij> create view sv2 (x1, x2, x3) as select c1, c2, c3  || '$' from t1;
+0 rows inserted/updated/deleted
+ij> create view sv3 (y1, y2, y3) as select x1, x2, x3  || '$' from sv2;
+0 rows inserted/updated/deleted
+ij> create view sv4 (z1, z2, z3, z4, z5, z6) as
+select a.c1, a.c2, a.c3 || '$', b.c1, b.c2, b.c3 || '$' from t1 a, t1 b;
+0 rows inserted/updated/deleted
+ij> -- more complex views
+create view av1 (c1, c2) as select c1, max(c2) from t1 group by c1;
+0 rows inserted/updated/deleted
+ij> create view av2 (x1, x2) as select c1, max(c2) from av1 group by c1;
+0 rows inserted/updated/deleted
+ij> create view av3 (y1, y2, y3, y4) as
+select a.c1, b.c1, max(a.c2), max(b.c2) from t1 a, t1 b group by a.c1, b.c1;
+0 rows inserted/updated/deleted
+ij> -- non-flattenable derived table in a non-flattenable view
+create view cv1 (c1, c2) as
+select c1, max(c2) from (select c1, c2 + 1 from t1) t(c1, c2) group by c1;
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values (1, 1, ''), (1, 1, ''), (1, 2, ''), (1, 2, ''),
+		      (2, 2, ''), (2, 2, ''), (2, 3, ''), (2, 3, '');
+8 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- predicate should get pushed into scan
+select c1, c2 from sv1 where c1 = 1 order by c1, c2;
+C1         |C2         
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- predicate should get pushed into scan
+select c1, c2 from sv1 where c1 = 1 order by c1, c2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (2):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time&
+ij> select c1, c2 from sv1 where c1 = 1  + 1 order by c1, c2;
+C1         |C2         
+-----------------------
+2          |2          
+2          |2          
+2          |3          
+2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c1, c2 from sv1 where c1 = 1  + 1 order by c1, c2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (2):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (mi&
+ij> select x1, x2 from sv2 where x1 = 1 order by x1, x2;
+X1         |X2         
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select x1, x2 from sv2 where x1 = 1 order by x1, x2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (2):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (millise&
+ij> select y1, y2 from sv3 where y1 = 1 order by y1, y2;
+Y1         |Y2         
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select y1, y2 from sv3 where y1 = 1 order by y1, y2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (2):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				res&
+ij> select z1, z2, z4, z5 from sv4 where z1 = z4 and z2 = z5
+order by z1, z2, z4, z5;
+Z1         |Z2         |Z4         |Z5         
+-----------------------------------------------
+1          |1          |1          |1          
+1          |1          |1          |1          
+1          |1          |1          |1          
+1          |1          |1          |1          
+1          |2          |1          |2          
+1          |2          |1          |2          
+1          |2          |1          |2          
+1          |2          |1          |2          
+2          |2          |2          |2          
+2          |2          |2          |2          
+2          |2          |2          |2          
+2          |2          |2          |2          
+2          |3          |2          |3          
+2          |3          |2          |3          
+2          |3          |2          |3          
+2          |3          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select z1, z2, z4, z5 from sv4 where z1 = z4 and z2 = z5
+order by z1, z2, z4, z5
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 16
+Rows returned = 16
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=16
+	Number of rows output=16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 16
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 16
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 8
+			Rows seen from the right = 16
+			Rows filtered = 0
+			Rows returned = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseco&
+ij> select * from av1 where c1 = 1;
+C1         |C2         
+-----------------------
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from av1 where c1 = 1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+	Has distinct aggregate = false
+	In sorted order = false
+	Sort information: 
+		Number of rows input=4
+		Number of rows output=1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close ti&
+ij> select * from av2 where x1 = 2;
+X1         |X2         
+-----------------------
+2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from av2 where x1 = 2
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+	Has distinct aggregate = false
+	In sorted order = false
+	Sort information: 
+		Number of rows input=1
+		Number of rows output=1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (5):
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (millisec&
+ij> select * from av3;
+Y1         |Y2         |Y3         |Y4         
+-----------------------------------------------
+1          |1          |2          |2          
+1          |2          |2          |3          
+2          |1          |3          |2          
+2          |2          |3          |3          
+ij> select y1, y2, y3, y4 + 0 from av3 where y1 = y2;
+Y1         |Y2         |Y3         |4          
+-----------------------------------------------
+1          |1          |2          |2          
+2          |2          |3          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select y1, y2, y3, y4 + 0 from av3 where y1 = y2
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Grouped Aggregate ResultSet:
+		Number of opens = 1
+		Rows input = 32
+		Has distinct aggregate = false
+		In sorted order = false
+		Sort information: 
+			Number of rows input=32
+			Number of rows output=2
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (5):
+			Number of opens = 1
+			Rows seen = 32
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				rest&
+ij> select * from cv1;
+C1         |C2         
+-----------------------
+1          |3          
+2          |4          
+ij> select * from cv1 where c1 = 1;
+C1         |C2         
+-----------------------
+1          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from cv1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+	Has distinct aggregate = false
+	In sorted order = false
+	Sort information: 
+		Number of rows input=4
+		Number of rows output=1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (3):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (millisec&
+ij> create index t1_c1 on t1(c1);
+0 rows inserted/updated/deleted
+ij> select c1, c2 from sv1 where c1 = 1 order by c1, c2;
+C1         |C2         
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select c1, c2 from sv1 where c1 = 1 order by c1, c2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			Number of opens = 1
+			Rows seen = 4
+			Columns accessed from heap = {1, 2}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				optimizer estimated r&
+ij> select x1, x2 from sv2 where x1 = 1 order by x1, x2;
+X1         |X2         
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select x1, x2 from sv2 where x1 = 1 order by x1, x2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (4):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			Number of opens = 1
+			Rows seen = 4
+			Columns accessed from heap = {1, 2}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				optimizer estimated r&
+ij> select y1, y2 from sv3 where y1 = 1 order by y1, y2;
+Y1         |Y2         
+-----------------------
+1          |1          
+1          |1          
+1          |2          
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select y1, y2 from sv3 where y1 = 1 order by y1, y2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 4
+Rows returned = 4
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=4
+	Number of rows output=4
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 4
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (3):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				res&
+ij> select z1, z2, z4, z5 from sv4 where z1 = z4 and z2 = z5
+order by z1, z2, z4, z5;
+Z1         |Z2         |Z4         |Z5         
+-----------------------------------------------
+1          |1          |1          |1          
+1          |1          |1          |1          
+1          |1          |1          |1          
+1          |1          |1          |1          
+1          |2          |1          |2          
+1          |2          |1          |2          
+1          |2          |1          |2          
+1          |2          |1          |2          
+2          |2          |2          |2          
+2          |2          |2          |2          
+2          |2          |2          |2          
+2          |2          |2          |2          
+2          |3          |2          |3          
+2          |3          |2          |3          
+2          |3          |2          |3          
+2          |3          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select z1, z2, z4, z5 from sv4 where z1 = z4 and z2 = z5
+order by z1, z2, z4, z5
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 16
+Rows returned = 16
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=16
+	Number of rows output=16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 16
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 16
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 8
+			Rows seen from the right = 16
+			Rows filtered = 0
+			Rows returned = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseco&
+ij> select * from av1 where c1 = 1;
+C1         |C2         
+-----------------------
+1          |2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from av1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+	Has distinct aggregate = false
+	In sorted order = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			Number of opens = 1
+			Rows seen = 4
+			Columns accessed from heap = {1}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for T1 using index T1&
+ij> select * from av2 where x1 = 2;
+X1         |X2         
+-----------------------
+2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from av2 where x1 = 2
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+	Has distinct aggregate = false
+	In sorted order = false
+	Sort information: 
+		Number of rows input=1
+		Number of rows output=1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (millisec&
+ij> select y1, y2, y3, y4 + 0 from av3 where y1 = y2;
+Y1         |Y2         |Y3         |4          
+-----------------------------------------------
+1          |1          |2          |2          
+2          |2          |3          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select y1, y2, y3, y4 + 0 from av3 where y1 = y2
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 2
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Grouped Aggregate ResultSet:
+		Number of opens = 1
+		Rows input = 32
+		Has distinct aggregate = false
+		In sorted order = false
+		Sort information: 
+			Number of rows input=32
+			Number of rows output=2
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (5):
+			Number of opens = 1
+			Rows seen = 32
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				rest&
+ij> select * from cv1 where c1 = 1;
+C1         |C2         
+-----------------------
+1          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from cv1 where c1 = 1
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Grouped Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+	Has distinct aggregate = false
+	In sorted order = false
+	Sort information: 
+		Number of rows input=4
+		Number of rows output=1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (5):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (4):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (millisec&
+ij> -- cleanup
+drop view cv1;
+0 rows inserted/updated/deleted
+ij> drop view av3;
+0 rows inserted/updated/deleted
+ij> drop view av2;
+0 rows inserted/updated/deleted
+ij> drop view av1;
+0 rows inserted/updated/deleted
+ij> drop view sv4;
+0 rows inserted/updated/deleted
+ij> drop view sv3;
+0 rows inserted/updated/deleted
+ij> drop view sv2;
+0 rows inserted/updated/deleted
+ij> drop view sv1;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- Beetle 4983, customer case, complex query involving views, wrong column remapping
+-- after view flattening, NullPointerException, and didn't get predicate pushed down
+-- all the way to base table.
+autocommit off;
+ij> create schema xr;
+0 rows inserted/updated/deleted
+ij> create table xr.businessentity 
+			 ( 	ID    		varchar(48) not null primary key ,
+				type		varchar(24) not null,
+                           	name    	varchar(128) not null ,
+			   	uname		varchar(128) ,
+--GENERATED ALWAYS AS (ucase(name)),
+			   	description	varchar(256),
+                           	createdate   	timestamp  not null,
+                           	changedate   	timestamp  not null,
+                           	deletedate   	timestamp,
+			   	-- for type=BUSINESS this is the delegate owner
+			   	-- for type=USER this is their userID
+				AuthID	    	varchar(48) not null,  
+			       	ownerUserUUID 	varchar(48),
+				-- for type=BUSINESS -- in subclass 
+			       	businessTypeID  varchar(48)
+                         );
+0 rows inserted/updated/deleted
+ij> create trigger xr.be_uname_i after insert on xr.businessentity
+referencing new as n
+for each row mode db2sql
+update xr.businessentity set uname = upper( n.name ) where name = n.name;
+0 rows inserted/updated/deleted
+ij> create trigger xr.be_unane_u after update of name, uname on xr.businessentity
+referencing new as n
+for each row mode db2sql
+update xr.businessentity set uname = upper( n.name )
+  where name = n.name and uname <> upper( n.name );
+0 rows inserted/updated/deleted
+ij> create unique index xr.bus1 on xr.businessentity (ownerUserUUID, uname, deletedate);
+0 rows inserted/updated/deleted
+ij> create table xr.BEMembers(
+	beid			varchar(48) not null,
+	memberid		varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> create unique index xr.bem1 on xr.BEMembers (beid, memberid);
+0 rows inserted/updated/deleted
+ij> alter table xr.BEMembers add constraint bem_beid
+	foreign key (beid)
+	references xr.businessentity(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.BEMembers add constraint bem_memberid
+	foreign key (memberid)
+	references xr.businessentity(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.xruser 
+			 ( 	businessentityID   	varchar(48) not null primary key ,
+				userid			varchar(48) not null, 
+				deletedate   		timestamp
+                    	);
+0 rows inserted/updated/deleted
+ij> create unique index xr.user1 on xr.xruser (userID, deletedate);
+0 rows inserted/updated/deleted
+ij> alter table xr.xruser add constraint u_busent foreign key (businessentityID)
+                            references xr.businessentity(ID)
+                            on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.locator 
+			(ownerID		varchar(48) not null,
+			type	      		varchar(48) not null,
+			useTypeID	      	varchar(48) ,
+			value			varchar(256),
+			street1			varchar(48),
+			street2			varchar(48),
+			city			varchar(48),
+			state			varchar(48),
+			country			varchar(48),
+			postalcode		varchar(48)	
+			);
+0 rows inserted/updated/deleted
+ij> create unique index xr.loc1 on xr.locator ( ownerID,type,usetypeID );
+0 rows inserted/updated/deleted
+ij> alter table xr.locator add constraint l_busent foreign key (ownerID)
+                            references xr.businessentity(ID)
+                            on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.BusinessEntityAssociation
+			(ID			varchar(48) not null primary key ,
+			sourceID		varchar(48) not null,
+			targetID	      	varchar(48) not null,
+			ownerID		 	varchar(48) not null,
+			assoctypeID		varchar(48) not null,
+                  	createdate   		timestamp  not null,
+                    	changedate   		timestamp  not null,
+			deletedate   		timestamp, 
+			description		varchar(256)
+			);
+0 rows inserted/updated/deleted
+ij> alter table xr.BusinessEntityAssociation 
+add constraint bea_sourceID foreign key (sourceID)
+                            references xr.businessentity(ID)
+                            on delete restrict;
+0 rows inserted/updated/deleted
+ij> alter table xr.BusinessEntityAssociation 
+add constraint bea_targetID foreign key (targetID)
+                            references xr.businessentity(ID)
+                            on delete restrict;
+0 rows inserted/updated/deleted
+ij> alter table xr.BusinessEntityAssociation 
+add constraint bea_ownerID foreign key (ownerID)
+                            references xr.businessentity(ID)
+                            on delete restrict;
+0 rows inserted/updated/deleted
+ij> create unique index xr.BEA1 
+on xr.BusinessEntityAssociation( sourceid, targetid, ownerID, assoctypeID, deletedate);
+0 rows inserted/updated/deleted
+ij> create table xr.repositoryobjectresource (
+	id			varchar(48)	not null primary key,
+	type			varchar(48)	not null,
+	subtype		varchar(48),
+	creatorid		varchar(48)	not null,
+	createdate		timestamp	not null,
+	currentVersion	varchar(48),
+	versionControlled smallint	not null with default 0,
+	checkedOut		smallint	not null with default 0,
+	checkForLock	smallint	not null with default 0
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryobjectresource add constraint ror_creatorid
+	foreign key (creatorid)
+	references xr.xruser(businessentityid)
+	on delete restrict;
+0 rows inserted/updated/deleted
+ij> create table xr.repositoryobjectversion (
+	id			varchar(48)		not null primary key,
+	resourceid		varchar(48)		not null,
+	name			varchar(128)	not null,
+	uname			varchar(128),
+--	GENERATED ALWAYS AS (ucase(name)),
+	folderid		varchar(48),
+	versionName		varchar(128)	not null,
+	uri			varchar(255)	not null,
+	versionuri		varchar(255)	not null,
+	description		varchar(256),
+	versionComment	varchar(256),
+	ownerid		varchar(48)	not null,
+	creatorid		varchar(48)	not null,
+	versiondate		timestamp	not null,
+	changedate		timestamp	not null,
+	deletedate		timestamp, 
+	previousversion	varchar(48)
+	);
+0 rows inserted/updated/deleted
+ij> create trigger xr.rov_uname_i after insert on xr.repositoryobjectversion
+referencing new as n
+for each row mode db2sql
+update xr.repositoryobjectversion set uname = upper( n.name ) where name = n.name;
+0 rows inserted/updated/deleted
+ij> create trigger xr.rov_unane_u after update of name, uname on xr.repositoryobjectversion
+referencing new as n
+for each row mode db2sql
+update xr.repositoryobjectversion set uname = upper( n.name )
+  where name = n.name and uname <> upper( n.name );
+0 rows inserted/updated/deleted
+ij> create unique index xr.versionname on xr.repositoryobjectversion (resourceid, versionName);
+0 rows inserted/updated/deleted
+ij> -- Don't think I want this constraint with versioning.
+-- Object could have been deleted in a later version.
+-- create unique index xr.versionuri on xr.repositoryobjectversion (versionuri, deletedate);
+alter table xr.repositoryobjectversion add constraint rov_previousvers
+	foreign key (previousversion)
+	references xr.repositoryobjectversion(id)
+	on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryobjectversion add constraint rov_folderid
+	foreign key (folderid)
+	references xr.repositoryobjectresource(id)
+	on delete restrict;
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryobjectversion add constraint rov_ownerid
+	foreign key (ownerid)
+	references xr.businessentity(id)
+	on delete restrict;
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryobjectversion add constraint rov_creatorid
+	foreign key (creatorid)
+	references xr.xruser(businessentityid)
+	on delete restrict;
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryobjectresource add constraint ror_currentVersion
+	foreign key (currentVersion)
+	references xr.repositoryobjectversion(id)
+	on delete restrict;
+0 rows inserted/updated/deleted
+ij> create table xr.lock (
+	locktoken		varchar(48)	not null,
+	resourceid		varchar(48)	not null,
+	ownerid		varchar(48) not null,
+	exclusive		smallint 	not null,
+	timeoutSeconds	bigint	not null,
+	expirationDate	timestamp	not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.lock add primary key (locktoken, resourceid);
+0 rows inserted/updated/deleted
+ij> alter table xr.lock add constraint l_resourceid
+	foreign key (resourceid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.lock add constraint l_ownerid
+	foreign key (ownerid)
+	references xr.xruser(businessentityid)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.keyword (
+	versionid			varchar(48)		not null,
+	keyword			varchar(128)	not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.keyword add constraint k_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.slot (
+	versionid			varchar(48)		not null,
+	name				varchar(128)	not null,
+	value				varchar(256)
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.slot add constraint s_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.versionlabel (
+	versionid			varchar(48)		not null,
+	label				varchar(128)	not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.versionlabel add constraint vl_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.repositoryentry (
+	versionid		varchar(48)		not null primary key,
+	versioncontentid	varchar(48),
+	mimetype		varchar(48),
+	stability		varchar(48),
+	status		varchar(48),
+	startdate		timestamp,
+	expirationdate	timestamp,
+	isopaque		smallint		not null with default 0
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryentry add constraint re_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.repositoryentrycontent (
+ 	versionid			varchar(48)		not null primary key,
+	contentchangedate	timestamp,
+	content				long varchar
+--blob(1M)
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.repositoryentry add constraint re_versioncontent
+	foreign key (versioncontentid)
+	references xr.repositoryentrycontent(versionid)
+	on delete set null;
+0 rows inserted/updated/deleted
+ij> create table xr.objectgroup_content (
+	versionid		varchar(48) not null,
+	memberid		varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.objectgroup_content add constraint ogc_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.objectgroup_content add constraint ogc_memberid
+	foreign key (memberid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.externaldependency_content (
+	versionid		varchar(48) not null,
+	objectid		varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.externaldependency_content add constraint edc_objectid
+	foreign key (objectid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.objectassociation (
+	id			varchar(48) not null primary key,
+	sourceid		varchar(48) not null,
+	targetid		varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.objectassociation add constraint oa_id
+	foreign key (id)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.objectassociation add constraint oa_sourceid
+	foreign key (sourceid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.objectassociation add constraint oa_targetid
+	foreign key (targetid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.classificationscheme (
+	id			varchar(48) not null primary key,
+	structuretype	varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.classificationscheme add constraint cs_id
+	foreign key (id)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.classification_values (
+	versionid		varchar(48) not null,
+	valueid		varchar(48) not null,
+	value			varchar(128) not null,
+	description		varchar(256),
+	parentvalueid	varchar(48)
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.classification_values add primary key (versionid, valueid);
+0 rows inserted/updated/deleted
+ij> alter table xr.classification_values add constraint cv_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.classification_values add constraint cv_parentvalueid
+	foreign key (versionid, parentvalueid)
+	references xr.classification_values(versionid, valueid)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.classification_value_ancestors (
+	versionid		varchar(48) not null,
+	valueid		varchar(48) not null,
+	ancestorid		varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> alter table xr.classification_value_ancestors add constraint cva_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.classification_value_ancestors add constraint cva_valueid
+	foreign key (versionid, valueid)
+	references xr.classification_values(versionid, valueid)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table xr.classification_value_ancestors add constraint cva_ancestorid
+	foreign key (versionid, ancestorid)
+	references xr.classification_values(versionid, valueid)
+	on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table xr.classifications (
+	objectversionid	varchar(48) not null,
+	valueid		varchar(48) not null
+	);
+0 rows inserted/updated/deleted
+ij> create view  xr.classificationcurrentvalueview (
+	valueid,
+	value
+) as select 
+	v.valueid,
+	v.value
+from  xr.classification_values v, xr.repositoryobjectresource ror
+where v.versionid = ror.currentversion;
+0 rows inserted/updated/deleted
+ij> create view  xr.classificationschemecurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	structuretype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	cls.structuretype,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.classificationscheme cls on (ror.id = cls.id)
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.classificationschemeallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	structuretype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	cls.structuretype,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.classificationscheme cls on (ror.id = cls.id)
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.classificationschemelifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	structuretype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	cls.structuretype,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.classificationscheme cls on (ror.id = cls.id)
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid);
+0 rows inserted/updated/deleted
+ij> create view  xr.classificationvalueview (
+	id,
+	value,
+	description,
+	parentid,
+	parentvalue,
+	schemeid,
+	schemeversionid,
+	schemename
+) as select 
+	v.valueid,
+	v.value,
+	v.description,
+	p.valueid,
+	p.value,
+	rov.resourceid,
+	rov.id,
+	rov.name	
+from  xr.classification_values v 
+	inner join xr.repositoryobjectversion rov on (v.versionid = rov.id)
+	left outer join xr.classification_values p on (v.parentvalueid = p.valueid)
+where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.classification_direct_view (
+	objectversionid,
+	valueid,
+	schemeversionid,
+	value
+) as select 
+	c.objectversionid,
+	cv.valueid,
+	cv.versionid,
+	cv.value
+from  xr.classifications c, xr.classification_values cv, 
+	xr.repositoryobjectresource ror
+	where c.valueid = cv.valueid and cv.versionid = ror.currentversion;
+0 rows inserted/updated/deleted
+ij> create view  xr.classification_indirect_view (
+	objectversionid,
+	valueid,
+	schemeversionid,
+	value
+) as select 
+	c.objectversionid,
+	cv.valueid,
+	cv.versionid,
+	cv.value
+from  xr.classifications c, xr.classification_values cv, 
+	xr.classification_value_ancestors cva, xr.repositoryobjectresource ror
+	where c.valueid = cva.valueid and 
+	cva.ancestorid = cv.valueid and cva.versionid = cv.versionid and
+	cv.versionid = ror.currentversion;
+0 rows inserted/updated/deleted
+ij> create view  xr.businessentityqueryview (
+	id,
+	name,
+	uname,
+	type,
+	createdate,
+	changedate,
+	description,
+	authID,	
+	ownerid,
+	ownername,
+	uownername,
+	businessTypeID,
+	businessType
+) as select 
+	be.id, 
+	be.name,
+	be.uname,
+	be.type,
+	be.createdate,
+	be.changedate,
+	be.description,  
+	be.authID , 
+	o.id,  
+	o.name, 
+	o.uname,
+	be.businessTypeID, 
+	cv.value 
+from  xr.businessentity be left outer join xr.businessentity o on be.owneruserUUID = o.id  
+left outer join xr.classificationcurrentvalueview cv on cv.valueid = be.businessTypeID 
+where be.deletedate is null and o.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.businessassociationqueryview (
+	id,
+	sourceid,
+	sourcename,
+	usourcename,
+	sourcetype,
+	targetid,
+	targetname,
+	utargetname,
+	targettype,
+	createdate,
+	changedate,
+	description,
+	ownerid,
+	ownername,
+	uownername,
+	associationTypeID,
+	associationType
+) as select 
+	bea.id,
+	bea.sourceid,
+	s.name,
+	s.uname,
+	s.type,
+	bea.targetid, 
+	t.name,
+	t.uname,
+	t.type,
+	bea.createdate,
+	bea.changedate,
+	bea.description,  
+	o.id,  
+	o.name, 
+	o.uname,
+	bea.assoctypeID, 
+	cv.value 	
+from  xr.businessentityassociation bea 
+left outer join xr.businessentity s on bea.sourceID = s.ID 
+left outer join xr.businessentity t on bea.targetID = t.ID 
+left outer join xr.businessentity o on bea.ownerID = o.ID  
+left outer join xr.classificationcurrentvalueview cv on cv.valueid = bea.assoctypeID 
+where bea.deletedate is null and s.deletedate is null and t.deletedate is null and o.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryobjectcurrentversionview (
+	id, versionid, name, uname, versionName, 
+	uri, versionuri, folderid, 
+	ownerid, ownerdeletedate, ownername, uownername, ownerauthid, creatorname,
+	description, versionComment, objecttype, subtypeid, subtype, 
+	checkforlock, createdate, versiondate, changedate, deletedate,
+	versioncontrolled, currentversion, previousversion, checkedout,
+	-- from RepositoryEntry
+	stability, statusid, status, isopaque,
+	startdate, expirationdate, contentchangedate, versioncontentid,
+	-- from ObjectAssociation
+	sourceid, targetid,
+	-- from ClassificationScheme
+	structuretype
+) as select 
+	ror.id, rov.id, rov.name, rov.uname, rov.versionName, 
+	rov.uri, rov.versionuri, rov.folderid,
+	rov.ownerid, beo.deletedate, beo.name, beo.uname, beo.authid, bec.name,
+	rov.description, rov.versionComment, ror.type, ror.subtype, cvsubt.value,  
+	ror.checkforlock, ror.createdate, rov.versiondate, rov.changedate, rov.deletedate,
+	ror.versioncontrolled, ror.currentversion, rov.previousversion, ror.checkedout,
+	-- from RepositoryEntry
+	re.stability, re.status, cvstatus.value, re.isopaque,
+	re.startdate, re.expirationdate, rec.contentchangedate, re.versioncontentid,
+	-- from ObjectAssociation
+	oa.sourceid, oa.targetid,
+	-- from ClassificationScheme
+	cs.structuretype
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.classificationcurrentvalueview cvsubt on (ror.subtype = cvsubt.valueid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.repositoryentry re on (ror.currentversion = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	left outer join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.classificationscheme cs on (ror.id = cs.id)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryobjectallversionview (
+	id, versionid, name, uname, versionName, 
+	uri, versionuri, folderid, 
+	ownerid, ownerdeletedate, ownername, uownername, ownerauthid, creatorname,
+	description, versionComment, objecttype, subtypeid, subtype, 
+	checkforlock, createdate, versiondate, changedate, deletedate,
+	versioncontrolled, currentversion, previousversion, checkedout, 
+	-- from RepositoryEntry
+	stability, statusid, status, isopaque,
+	startdate, expirationdate, contentchangedate, versioncontentid,
+	-- from ObjectAssociation
+	sourceid, targetid,
+	-- from ClassificationScheme
+	structuretype
+) as select 
+	ror.id, rov.id, rov.name, rov.uname, rov.versionName, 
+	rov.uri, rov.versionuri, rov.folderid,
+	rov.ownerid, beo.deletedate, beo.name, beo.uname, beo.authid, bec.name,
+	rov.description, rov.versionComment, ror.type, ror.subtype, cvsubt.value,  
+	ror.checkforlock, ror.createdate, rov.versiondate, rov.changedate, rov.deletedate,
+	ror.versioncontrolled, ror.currentversion, rov.previousversion, ror.checkedout, 
+	-- from RepositoryEntry
+	re.stability, re.status, cvstatus.value, re.isopaque,
+	re.startdate, re.expirationdate, rec.contentchangedate, re.versioncontentid,
+	-- from ObjectAssociation
+	oa.sourceid, oa.targetid,
+	-- from ClassificationScheme
+	cs.structuretype
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.classificationcurrentvalueview cvsubt on (ror.subtype = cvsubt.valueid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.repositoryentry re on (ror.currentversion = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	left outer join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.classificationscheme cs on (ror.id = cs.id)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryobjectlifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerauthid,
+	ownername,
+	ownerdeletedate,
+	description,
+	objecttype,
+	subtypeid,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.authid,
+	beo.name,
+	beo.deletedate,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id);
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryobjectlabelview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerauthid,
+	ownername,
+	ownerdeletedate,
+	description,
+	objecttype,
+	subtypeid,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.authid,
+	beo.name,
+	beo.deletedate,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id);
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryentrycurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	versioncontentid,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	createdate,
+	versiondate,
+	changedate,
+	contentchangedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,
+	checkedout,
+	subtypeid,
+	subtype,
+	stability,
+	statusid,
+	status,
+	startdate,
+	expirationdate,
+	isopaque
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	re.versioncontentid,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rec.contentchangedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,
+	ror.checkedout,
+	re.mimetype,
+	cvmime.value,
+	re.stability,
+	re.status,
+	cvstatus.value,
+	re.startdate,
+	re.expirationdate,
+	re.isopaque
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryentryallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	versioncontentid,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	createdate,
+	versiondate,
+	changedate,
+	contentchangedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,
+	checkedout,
+	subtypeid,
+	subtype,
+	stability,
+	statusid,
+	status,
+	startdate,
+	expirationdate,
+	isopaque
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	re.versioncontentid,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rec.contentchangedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,		
+	rov.previousversion,
+	ror.checkedout,
+	re.mimetype,
+	cvmime.value,
+	re.stability,
+	re.status,
+	cvstatus.value,
+	re.startdate,
+	re.expirationdate,
+	re.isopaque
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)	
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryentrylifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	versioncontentid,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	contentchangedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion	
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	re.versioncontentid,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	re.mimetype,
+	cvmime.value,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rec.contentchangedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid);
+0 rows inserted/updated/deleted
+ij> create view  xr.repositoryentrycontentview (
+	id,
+	versionid,
+	versioncontentid,
+	uri,
+	versionuri,
+	content,
+	contentchangedate,
+	currentversion,
+	mimetypeid,
+	mimetype
+) as select 
+	ror.id,
+	rov.id,
+	re.versioncontentid,
+	rov.uri,
+	rov.versionuri,
+	rec.content,
+	rec.contentchangedate,
+	ror.currentversion,
+	re.mimetype,
+	cvmime.value
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)	
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.objectgroupcurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'COLLECTION' and rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.objectgroupallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'COLLECTION' and rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.objectgrouplifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'COLLECTION';
+0 rows inserted/updated/deleted
+ij> create view  xr.externaldependencycurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'EXTERNAL_DEPENDENCY' and rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.externaldependencyallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,	
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	dependencytypeid,
+	dependencytype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,	
+	checkedout,
+	currentversion,
+	previousversion	
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion	
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'EXTERNAL_DEPENDENCY' and rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.objectassociationcurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout,
+	sourceid,
+	targetid
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout,
+	oa.sourceid,
+	oa.targetid
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.objectassociationallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout,
+	sourceid,
+	targetid
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.valueid,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout,
+	oa.sourceid,
+	oa.targetid
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.objectassociationlifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion,
+	sourceid,
+	targetid
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion,
+	oa.sourceid,
+	oa.targetid
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid);
+0 rows inserted/updated/deleted
+ij> create view  xr.objectassociationcurrentversionqueryview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout,
+	sourceid,
+	sourcename,
+	usourcename,
+	sourcetype,
+	targetid,
+	targetname,
+	utargetname,
+	targettype
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout,
+	oa.sourceid,
+	s.name,
+	s.uname,
+	s.objecttype,
+	oa.targetid,
+	t.name,
+	t.uname,
+	t.objecttype	
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.repositoryobjectcurrentversionview s on (oa.sourceid = s.id)
+	left outer join xr.repositoryobjectcurrentversionview t on (oa.targetid = t.id)		
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+0 rows inserted/updated/deleted
+ij> create view  xr.lockview (
+	locktoken,
+	resourceid,
+	resourcename,
+	userid,
+	username,
+	exclusive,
+	timeoutseconds,
+	expirationdate
+) as select 
+	l.locktoken,
+	l.resourceid,
+	rov.name,
+	l.ownerid,
+	be.name,
+	l.exclusive,
+	l.timeoutseconds,
+	l.expirationdate
+from  xr.lock l, xr.repositoryobjectresource ror, xr.repositoryobjectversion rov, 
+	xr.businessentity be 	
+where l.resourceid = ror.id and ror.currentversion = rov.id and l.ownerid = be.id;
+0 rows inserted/updated/deleted
+ij> --echo === Create Users ================================================;
+-- if we don't commit, the following insert will block due to fix of beetle 4821
+commit;
+ij> -- The following insert statement shouldn't block for 2 minutes!! The compile of the trigger
+-- shouldn't wait for timeout!!
+insert into xr.businessentity ( ID, type, name, authID, createdate, changedate )
+	values ('xxxxFILTERED-UUIDxxxx', 
+		'USER', 
+		'Administrator', 		
+		'xradmin', 
+		CURRENT TIMESTAMP, CURRENT TIMESTAMP);
+1 row inserted/updated/deleted
+ij> insert into xr.xruser 
+		(businessentityid, 
+		userid)
+	values ('xxxxFILTERED-UUIDxxxx',	
+		'xradmin');
+1 row inserted/updated/deleted
+ij> insert into xr.businessentity ( ID, type, name, authID, createdate, changedate )
+	values ('xxxxFILTERED-UUIDxxxx', 
+		'USER', 
+		'Sample XR User', 
+		'xrguest', CURRENT TIMESTAMP, CURRENT TIMESTAMP);
+1 row inserted/updated/deleted
+ij> insert into xr.xruser (businessentityid, userid)
+	values ('xxxxFILTERED-UUIDxxxx',	
+		'xrguest');
+1 row inserted/updated/deleted
+ij> --echo == Create locators ==============================================;
+insert into xr.locator ( 
+	ownerID,
+	type, 
+	usetypeID, 
+	value, 
+	street1, 
+	street2, 
+	city, 
+	state, 
+	country, 
+	postalcode
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'EMAIL',
+	'xxxxFILTERED-UUIDxxxx',
+	'xradmin@xr.com',
+	'',
+	'',
+	'',
+	'',
+	'',
+	'');
+1 row inserted/updated/deleted
+ij> insert into xr.locator ( 
+	ownerID,
+	type, 
+	usetypeID, 
+	value, 
+	street1, 
+	street2, 
+	city, 
+	state, 
+	country, 
+	postalcode
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'EMAIL',
+	'xxxxFILTERED-UUIDxxxx',
+	'xrguest@yourmail.com',
+	'',
+	'',
+	'',
+	'',
+	'',
+	'');
+1 row inserted/updated/deleted
+ij> --echo =============================================================================;
+--echo xr database insert script
+--echo =============================================================================;
+--XRADMIN ID 'xxxxFILTERED-UUIDxxxx' 
+-- repositoryobjectversion.folderid references xr.repositoryobjectresource(id)
+--ROOT FolderID foreign 'xxxxFILTERED-UUIDxxxx' 
+--echo == ROOT Folder ====================================;
+--echo == ROOT Folder ====================================;
+insert into xr.repositoryobjectversion (
+	id, resourceid, name, versionName, uri, versionuri, description,
+	ownerid, creatorid, versiondate, changedate, previousversion
+	) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'', '1.0', '/',
+	'1.0/',
+	'Root XR folder',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> -- Root folder
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'COLLECTION', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This ObjectGroup classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==================================================;
+--echo =============================================================================;
+--echo xr database insert script
+--echo =============================================================================;
+--XRADMIN ID 'xxxxFILTERED-UUIDxxxx' 
+-- repositoryobjectversion.folderid references xr.repositoryobjectresource(id)
+--ROOT FolderID foreign 'xxxxFILTERED-UUIDxxxx' 
+--echo == Business types =======================================;
+--echo =========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Business Types', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Business+Types',
+	'1.0/Business+Types/1.0',
+	'Valid values for the Business TYpe property of a Business',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =======================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'CORPORATION',
+	'CORPORATION');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'ORGANIZATION',
+	'ORGANIZATION');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'DIVISION',
+	'DIVISION');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'GROUP',
+	'GROUP');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'PARTNERSHIP',
+	'PARTNERSHIP');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == Locator Use types ====================================;
+--echo =========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Locator Use Types', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Locator+Use+Types',
+	'1.0/Locator+Use+Types/1.0',
+	'Valid values for the Use Type property of a Locator',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'HOME',
+	'HOME');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'OFFICE',
+	'OFFICE');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'MOBILE',
+	'MOBILE');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'PAGER',
+	'PAGER');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == Create Association types ClassificationScheme ====================================;
+--echo =====================================================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Business Relationship Types', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Business+Relationship+Types',
+	'1.0/Business+Relationship+Types/1.0',
+	'Valid values for the Type property of a Business Relationship',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'CUSTOMER',
+	'CUSTOMER');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'SUPPLIER',
+	'SUPPLIER');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'PARTNER',
+	'PARTNER');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'MANAGER',
+	'MANAGER');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo == Create Scheme Types ClassificationScheme ====================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Classification Scheme Types', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Classification+Scheme+Types',
+	'1.0/Classification+Scheme+Types/1.0',
+	'Valid values for the ClassificationSchemeType property of a Classification Scheme',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'VALUE_LIST');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo == Create MimeTypes ClassificationScheme ====================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Mime Types', '1.0', 
+	'xxxxFILTERED-UUIDxxxx',
+	 'Mime+Types',
+	'1.0/Mime+Types/1,0',
+	'Valid values for the MimeType property of a Registry Entry',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'TEXT/S-SSI-HTML',
+	'For: htmls and shtml file types');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'TEXT/PLAIN',
+	'For: htmls and shtml file types');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'APPLICATION/OCTET-STREAM',
+	'For: htmls and shtml file types');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'APPLICATION/XML',
+	'For: xsl file type');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'TEXT/RICHTEXT',
+	'For: rtx file type');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'TEXT/CSS',
+	'For: css and s file type');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'APPLICATION/X-TEXTINFO',
+	'For: texi and texinfo file types');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'TEXT/HTML',
+	'For: htm and html file types');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'TEXT/XML',
+	'For: xml and dtd file types');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo == Create Group Types ClassificationScheme ====================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Collection Types', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Collection+Types',
+	'1.0/Collection+Types/1.0',
+	'Valid values for the CollectionType property of a Collection',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==================================================================================;
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'FOLDER');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'PROJECT');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo == Create Object Relationship Types ClassificationScheme ====================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Object Relationship Types','1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Object+Relationship+Types',
+	'1.0/Object+Relationship+Types/1.0',
+	'Valid values for the RelationshipType property of an Object Relationship',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'INCLUDES',
+	'INCLUDES');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'IMPORTS',
+	'IMPORTS');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo =====================================================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'REDEFINES',
+	'REDEFINES');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo == Create Scheme Usage ClassificationScheme ====================================;
+--echo ================================================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Classification Scheme Uses', '1.0', 
+	'xxxxFILTERED-UUIDxxxx',
+	'Classification+Scheme+Uses',
+	'1.0/Classification+Scheme+Uses/1.0',
+	'Usage categories for Classification Schemes',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as CLASSIFIES_CLASSIFICATION_SCHEME
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+-- Values
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFIES_ALL',
+	'Values in this ClassificationScheme can classify objects of any type.',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'INTERNAL_USE',
+	'This ClassificationScheme has a special use in XR.',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFIES_ORGANIZATION',
+	'Values in this ClassificationScheme can classify objects of type ORGANIZATION.',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFIES_REGISTRY_OBJECTS',
+	'Values in this ClassificationScheme can classify objects of type REGISTRY_OBJECT.',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFIES_REGISTRY_ENTRIES',
+	'Values in this ClassificationScheme can classify objects of type REGISTRY_ENTRY.',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFIES_COLLECTIONS',
+	'Values in this ClassificationScheme can classify objects of type COLLECTIONS.',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFIES_CLASSIFICATION_SCHEMES',
+	'values in this ClassificationScheme can classify objects of type CLASSIFICATION_SCHEMES',
+	null);
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ================================================================================;
+--echo ================================================================================;
+--echo == RepositoryEntry Status values ClassificationScheme ====================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Status Values', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Status+Values',
+	'1.0/Status+Values/1.0',
+	'Valid values for the Status property of a Registry Entry',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Submitted');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Approved');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Deprecated');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Withdrawn');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo == Create Industries ClassificationScheme ====================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Industries', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'Industries', '1.0/industries/1.0',
+	'North American Industry Classification Scheme',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (id, structuretype) 
+	values ('xxxxFILTERED-UUIDxxxx', 'TREE');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as CLASSIFIES_ALL
+	insert into xr.classifications ( objectversionid, valueid )
+	values ('xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Wholesale Trade');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Wholesale Trade, Durable Goods',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- Wholesale Trade is ancestor of Wholesale Trade, Durable Goods
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Manufacturing');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Food Manufacturing',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- Manufacturing is ancestor of Food Manufacturing
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Computer and Electronic Product Manufacturing',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- Manufacturing is ancestor of Computer and Electronic Product Manufacturing
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Utilities');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Construction');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Retail Trade');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Finance and Insurance');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Insurance Carriers and Related Activities',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- Finance and Insurance is ancestor of Insurance Carriers and Related Activities
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'Funds, Trusts, and Other Financial Vehicles',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- Finance and Insurance is ancestor of Funds, Trusts, and Other Financial Vehicles
+	insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( 'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == Web Service Schemes ===================================;
+--echo ==========================================================;
+--XRADMIN ID 'xxxxFILTERED-UUIDxxxx' 
+-- repositoryobjectversion.folderid references xr.repositoryobjectresource(id)
+--ROOT FolderID foreign 'xxxxFILTERED-UUIDxxxx' 
+--echo ==========================================================;
+--echo == WSDL Function =========================================;
+--echo ==========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'WSDL Function', '1.0',   
+	'xxxxFILTERED-UUIDxxxx',
+	'WSDL+Function',
+	'1.0/WSDL+Function/1.0',
+	'The function that this wsdl provides, (interface/implementation/both/etc) ',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'INTERFACE',
+	'INTERFACE');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'IMPLEMENTAION',
+	'IMPLEMENTAION');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'ALL',
+	'This WSDL doc stands alone and has all of the information in one file');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'BINDING',
+	'BINDING');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'SERVICE',
+	'SERVICE');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == Web Service Creation Toolkit ==========================;
+--echo ==========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'Web Service Toolkit', '1.0',   
+	'xxxxFILTERED-UUIDxxxx',
+	'Web+Service+Toolkit',
+	'1.0/Web+Service+Toolkit/1.0',
+	'Web Service toolkit used to create this Document',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'MICROSOFT',
+	'MICROSOFT');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'WSAD',
+	'WSAD');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'WSTK',
+	'WSTK');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'WSIF',
+	'WSIF');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == WSDL Binding Schema ===================================;
+--echo ==========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'WSDL Binding Schema', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	 'WSDL+Binding+Schema',
+	'1.0/WSDL+Binding+Schema/1.0',
+	'Valid types of soap binding style, see www.w3c.org wsdl/soap spec',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'SOAP',
+	'SOAP');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'HTTP',
+	'HTTP');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'MIME',
+	'MIME');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == SOAP Binding Style ====================================;
+--echo ==========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'SOAP Binding Style', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'SOAP+Binding+Style',
+	'1.0/SOAP+Binding+Style/1.0',
+	'Valid types of soap binding style, see www.w3c.org wsdl/soap spec',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'RPC',
+	'RPC');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'DOCUMENT',
+	'DOCUMENT');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+--echo == WSDL Port types ====================================;
+--echo =========================================================;
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx', 
+	'WSDL Port Type Operations', '1.0',  
+	'xxxxFILTERED-UUIDxxxx',
+	'WSDL+Port+Type+Operations',
+	'1.0/WSDL+Port+Type+Operations/1.0',
+	'Valid types for port type operation, see www.w3c.org wsdl spec',
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+1 row inserted/updated/deleted
+ij> insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'CLASSIFICATION_SCHEME', 
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx',
+	CURRENT TIMESTAMP,
+	'xxxxFILTERED-UUIDxxxx', 
+	0);
+1 row inserted/updated/deleted
+ij> -- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx'
+);
+1 row inserted/updated/deleted
+ij> insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'xxxxFILTERED-UUIDxxxx', 
+	'LIST');
+1 row inserted/updated/deleted
+ij> -- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'xxxxFILTERED-UUIDxxxx',
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'ONE-WAY',
+	'ONE-WAY');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'REQUEST-RESPONSE',
+	'REQUEST-RESPONSE');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'SOLICIT-RESPONSE',
+	'SOLICIT-RESPONSE');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> --echo ==========================================================;
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'NOTIFICATION',
+	'NOTIFICATION');
+1 row inserted/updated/deleted
+ij> insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx', 
+	'xxxxFILTERED-UUIDxxxx');
+1 row inserted/updated/deleted
+ij> -- Now do really what I wanted (this gets NullPointerException before the fix):
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 20000;
+ij> SELECT id, versionid, name, versionName, folderid, uri, versionuri, ownerid, ownername, ownerauthid,
+       description, versionComment, objecttype, subtypeid, subtype, createdate,versiondate,
+       changedate, deletedate, versioncontrolled, currentversion, previousversion, checkedout,
+       statusid, status, startdate, expirationdate, contentchangedate, versioncontentid, sourceid,
+       targetid, structuretype 
+FROM xr.repositoryobjectallversionview rov 
+where (uname = UPPER('two') or uname = UPPER('my project'))
+and (versionid in
+      (select versionid
+       from xr.versionlabel
+       where UPPER(label) = UPPER('Snapshot')))
+  and deletedate is null
+order by versionname asc;
+ID                                              |VERSIONID                                       |NAME                                                                                                                            |VERSIONNAME                                                                                                                     |FOLDERID                                        |URI                                                                                                                                                                                                                                                            |VERSIONURI                                                                                                                                                                                                                                                     |OWNERID                                         |OWNERNAME                                                 
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- NOTE: EXCEPT THE FIRST TWO TABLES IN OUTPUT (REPOSITORYOBJECTRESOURCE AND REPOSITORYOBJECTVERSION),
+-- ALL OTHER TABLES SHOULD HAVE: Number of opens = 0 AND Rows seen = 0.  THIS IS BECAUSE PREDICATE
+-- ON UNAME OF REPOSITORYOBJECTVERSION SHOULD BE PUSHED DOWN ALL THE WAY TO BASE TABLE ! bug 4983
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT id, versionid, name, versionName, folderid, uri, versionuri, ownerid, ownername, ownerauthid,
+       description, versionComment, objecttype, subtypeid, subtype, createdate,versiondate,
+       changedate, deletedate, versioncontrolled, currentversion, previousversion, checkedout,
+       statusid, status, startdate, expirationdate, contentchangedate, versioncontentid, sourceid,
+       targetid, structuretype 
+FROM xr.repositoryobjectallversionview rov 
+where (uname = UPPER('two') or uname = UPPER('my project'))
+and (versionid in
+      (select versionid
+       from xr.versionlabel
+       where UPPER(label) = UPPER('Snapshot')))
+  and deletedate is null
+order by versionname asc
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 0
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=0
+	Number of rows output=0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (32):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Hash Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 0
+		Rows seen from the right = 0
+		Rows filtered = 0
+		Rows returned = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Hash Left Outer Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 0
+			Rows seen from the right = 0
+			Empty right rows returned = 0
+			Rows filtered = 0
+			Rows returned = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Hash Left Outer Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 0
+				Rows seen from the right = 0
+				Empty right rows returned = 0
+				Rows filtered = 0
+				Rows returned = 0
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Nested Loop Left Outer Join ResultSet:
+					Number of opens = 1
+					Rows seen from the left = 0
+					Rows seen from the right = 0
+					Empty right rows returned = 0
+					Rows filtered = 0
+					Rows returned = 0
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+					Left result set:
+						Hash Left Outer Join ResultSet:
+						Number of opens = 1
+						Rows seen from the left = 0
+						Rows seen from the right = 0
+						Empty right rows returned = 0
+						Rows filtered = 0
+						Rows returned = 0
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+						Left result set:
+							Hash Left Outer Join ResultSet:
+							Number of opens = 1
+							Rows seen from the left = 0
+							Rows seen from the right = 0
+							Empty right rows returned = 0
+							Rows filtered = 0
+							Rows returned = 0
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+							Left result set:
+								Hash Left Outer Join ResultSet:
+								Number of opens = 1
+								Rows seen from the left = 0
+								Rows seen from the right = 0
+								Empty right rows returned = 0
+								Rows filtered = 0
+								Rows returned = 0
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								Left result set:
+									Hash Left Outer Join ResultSet:
+									Number of opens = 1
+									Rows seen from the left = 0
+									Rows seen from the right = 0
+									Empty right rows returned = 0
+									Rows filtered = 0
+									Rows returned = 0
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+									Left result set:
+										Nested Loop Left Outer Join ResultSet:
+										Number of opens = 1
+										Rows seen from the left = 0
+										Rows seen from the right = 0
+										Empty right rows returned = 0
+										Rows filtered = 0
+										Rows returned = 0
+											constructor time (milliseconds) = 0
+											open time (milliseconds) = 0
+											next time (milliseconds) = 0
+											close time (milliseconds) = 0
+										Left result set:
+											Hash Join ResultSet:
+											Number of opens = 1
+											Rows seen from the left = 16
+											Rows seen from the right = 0
+											Rows filtered = 0
+											Rows returned = 0
+												constructor time (milliseconds) = 0
+												open time (milliseconds) = 0
+												next time (milliseconds) = 0
+												close time (milliseconds) = 0
+											Left result set:
+												Table Scan ResultSet for REPOSITORYOBJECTRESOURCE at serializable isolation level using share table locking chosen by the optimizer
+												Number of opens = 1
+												Rows seen = 16
+												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={0, 1, 2, 4, 5, 6, 7, 8}
+													Number of columns fetched=8
+													Number of pages visited=2
+													Number of rows qualified=16
+													Number of rows visited=16
+													Scan type=heap
+													start position: 
+null													stop position: 
+null													qualifiers:
+None
+											Right result set:
+												Project-Restrict ResultSet (13):
+												Number of opens = 16
+												Rows seen = 16
+												Rows filtered = 16
+												restriction = true
+												projection = false
+													constructor time (milliseconds) = 0
+													open time (milliseconds) = 0
+													next time (milliseconds) = 0
+													close time (milliseconds) = 0
+													restriction time (milliseconds) = 0
+													projection time (milliseconds) = 0
+												Source result set:
+													Hash Scan ResultSet for REPOSITORYOBJECTVERSION at serializable isolation level using share table locking: 
+													Number of opens = 16
+													Hash table size = 16
+													Hash key is column number 1
+													Rows seen = 16
+													Rows filtered = 0
+														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=16
+														Number of pages visited=2
+														Number of rows qualified=16
+														Number of rows visited=16
+														Scan type=heap
+														start position: 
+null														stop position: 
+null														scan qualifiers:
+Column[0][0] Id: 14
+Operator: =
+Ordered nulls: true
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 14
+Operator: =
+Ordered nulls: true
+Unknown return value: false
+Negate comparison result: false
+														next qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+										Right result set:
+											Project-Restrict ResultSet (18):
+											Number of opens = 0
+											Rows seen = 0
+											Rows filtered = 0
+											restriction = true
+											projection = true
+												constructor time (milliseconds) = 0
+												open time (milliseconds) = 0
+												next time (milliseconds) = 0
+												close time (milliseconds) = 0
+												restriction time (milliseconds) = 0
+												projection time (milliseconds) = 0
+											Source result set:
+												Project-Restrict ResultSet (17):
+												Number of opens = 0
+												Rows seen = 0
+												Rows filtered = 0
+												restriction = false
+												projection = true
+													constructor time (milliseconds) = 0
+													open time (milliseconds) = 0
+													next time (milliseconds) = 0
+													close time (milliseconds) = 0
+													restriction time (milliseconds) = 0
+													projection time (milliseconds) = 0
+												Source result set:
+													Hash Join ResultSet:
+													Number of opens = 0
+													Rows seen from the left = 0
+													Rows seen from the right = 0
+													Rows filtered = 0
+													Rows returned = 0
+														constructor time (milliseconds) = 0
+														open time (milliseconds) = 0
+														next time (milliseconds) = 0
+														close time (milliseconds) = 0
+													Left result set:
+														Table Scan ResultSet for CLASSIFICATION_VALUES at serializable isolation level using share table locking chosen by the optimizer
+														Number of opens = 0
+														Rows seen = 0
+														Rows filtered = 0
+														Fetch Size = 1
+															constructor time (milliseconds) = 0
+															open time (milliseconds) = 0
+															next time (milliseconds) = 0
+															close time (milliseconds) = 0
+														scan information: 
+															start position: 
+null															stop position: 
+null															qualifiers:
+None
+													Right result set:
+														Hash Scan ResultSet for REPOSITORYOBJECTRESOURCE using constraint ROR_CURRENTVERSION at serializable isolation level using share table locking: 
+														Number of opens = 0
+														Hash table size = 0
+														Hash key is column number 0
+														Rows seen = 0
+														Rows filtered = 0
+															constructor time (milliseconds) = 0
+															open time (milliseconds) = 0
+															next time (milliseconds) = 0
+															close time (milliseconds) = 0
+														scan information: 
+															start position: 
+	None
+															stop position: 
+	None
+															scan qualifiers:
+None
+															next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+									Right result set:
+										Hash Scan ResultSet for BUSINESSENTITY at serializable isolation level using share table locking: 
+										Number of opens = 0
+										Hash table size = 0
+										Hash key is column number 0
+										Rows seen = 0
+										Rows filtered = 0
+											constructor time (milliseconds) = 0
+											open time (milliseconds) = 0
+											next time (milliseconds) = 0
+											close time (milliseconds) = 0
+										scan information: 
+											start position: 
+null											stop position: 
+null											scan qualifiers:
+None
+											next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+								Right result set:
+									Hash Scan ResultSet for BUSINESSENTITY at serializable isolation level using share table locking: 
+									Number of opens = 0
+									Hash table size = 0
+									Hash key is column number 0
+									Rows seen = 0
+									Rows filtered = 0
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+									scan information: 
+										start position: 
+null										stop position: 
+null										scan qualifiers:
+None
+										next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+							Right result set:
+								Hash Scan ResultSet for REPOSITORYENTRY at serializable isolation level using share table locking: 
+								Number of opens = 0
+								Hash table size = 0
+								Hash key is column number 0
+								Rows seen = 0
+								Rows filtered = 0
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								scan information: 
+									start position: 
+null									stop position: 
+null									scan qualifiers:
+None
+									next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+						Right result set:
+							Hash Scan ResultSet for REPOSITORYENTRYCONTENT at serializable isolation level using share table locking: 
+							Number of opens = 0
+							Hash table size = 0
+							Hash key is column number 0
+							Rows seen = 0
+							Rows filtered = 0
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+							scan information: 
+								start position: 
+null								stop position: 
+null								scan qualifiers:
+None
+								next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+					Right result set:
+						Project-Restrict ResultSet (27):
+						Number of opens = 0
+						Rows seen = 0
+						Rows filtered = 0
+						restriction = true
+						projection = true
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+							restriction time (milliseconds) = 0
+							projection time (milliseconds) = 0
+						Source result set:
+							Project-Restrict ResultSet (26):
+							Number of opens = 0
+							Rows seen = 0
+							Rows filtered = 0
+							restriction = false
+							projection = true
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+								restriction time (milliseconds) = 0
+								projection time (milliseconds) = 0
+							Source result set:
+								Hash Join ResultSet:
+								Number of opens = 0
+								Rows seen from the left = 0
+								Rows seen from the right = 0
+								Rows filtered = 0
+								Rows returned = 0
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								Left result set:
+									Table Scan ResultSet for CLASSIFICATION_VALUES at serializable isolation level using share table locking chosen by the optimizer
+									Number of opens = 0
+									Rows seen = 0
+									Rows filtered = 0
+									Fetch Size = 1
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+									scan information: 
+										start position: 
+null										stop position: 
+null										qualifiers:
+None
+								Right result set:
+									Hash Scan ResultSet for REPOSITORYOBJECTRESOURCE using constraint ROR_CURRENTVERSION at serializable isolation level using share table locking: 
+									Number of opens = 0
+									Hash table size = 0
+									Hash key is column number 0
+									Rows seen = 0
+									Rows filtered = 0
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+									scan information: 
+										start position: 
+	None
+										stop position: 
+	None
+										scan qualifiers:
+None
+										next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+				Right result set:
+					Hash Scan ResultSet for OBJECTASSOCIATION at serializable isolation level using share table locking: 
+					Number of opens = 0
+					Hash table size = 0
+					Hash key is column number 0
+					Rows seen = 0
+					Rows filtered = 0
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseco&
+ij> rollback;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/prepStmt.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,65 @@
+prepStmt Test Starts
+executeUpdate() without parameters
+Update count is: 0
+executeUpdate() with parameters
+Update count is: 1
+execute() with parameters, no result set returned
+Update count is: 2
+executQuery() without parameters
+got row:  99 5 9
+got row:  2 6 10
+got row:  7 5 8
+end of rows
+executQuery() with parameters
+got row:  99 5 9
+got row:  7 5 8
+end of rows
+execute() with parameters with result set returned
+got row:  99 5 9
+got row:  7 5 8
+end of rows
+test different data types for input parameters of a Prepared Statement
+Update count is: 0
+Update count is: 1
+test setObject on different data types for input  parameters of a Prepared Statement
+Update count is: 1
+test setNull on different data types for input  parameters of a Prepared Statement
+Update count is: 1
+got row:  1 2 3 4.0 5.0 6.0 77.77 8.100 column9string        column10vcstring column11lvcstring 0123456789abcdef10111213202020 0123456789abcdef10111213 0123456789abcdef10111213 xxxxxxFILTERED-TIMESTAMPxxxxx-04-12 11:44:30.0
+Timestamp match!
+got row:  1 2 3 4.0 5.0 6.0 77.77 8.100 column11string       column10vcstring column11lvcstring 0123456789abcdef10111213202020 0123456789abcdef10111213 0123456789abcdef10111213 xxxxxxFILTERED-TIMESTAMPxxxxx-04-12 11:44:30.0
+Timestamp match!
+got row:  0 0 0 0.0 0.0 0.0 null null null null null null null null null null 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 wrong column name
+insertTab ( bigtab,1001)
+SQLState: 42X14 message: 'C1001' is not a column in table or VTI 'CS.BIGTAB'.
+Expected Syntax error 
+insertTab ( bigtab,0)
+SQLState: 42X01 message: Syntax error: Encountered "<EOF>" at line 1, column 29.
+Expected Table does not exist 
+insertTab ( wrongtab,1000)
+SQLState: 42X05 message: Table 'WRONGTAB' does not exist.
+Minimum BigDecimal Value: 0.000000000000001
+Prepared Statement String: update Numeric_Tab set NULL_VAL=?
+Select NULL_VAL from Numeric_Tab
+Returned BigDecimal Value after Updation: 0.000000000000001
+Value returned from ctssql.stmt: 0.000000000000001
+setObject Method sets the designated parameter with the Object
+Negative test setString with Invalid Timestamp:20
+SQLState: 22007 message: The syntax of the string representation of a datetime value is incorrect.
+prepStmt Test Ends

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/primarykey.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/primarykey.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,262 @@
+ij> -- tests for primary/unique key
+-- most testing currently deferred since we have extensive index tests
+-- and no foreign keys yet.
+-- negative tests
+-- duplicate primary keys
+create table neg (c1 int not null primary key, c2 int, c3 int not null constraint asdf primary key);
+ERROR 42X90: More than 1 primary key constraint specified for table 'NEG'.
+ij> create table neg (c1 int not null primary key, c2 int, c3 int not null constraint asdf primary key);
+ERROR 42X90: More than 1 primary key constraint specified for table 'NEG'.
+ij> create table neg (c1 int not null primary key, c2 int not null, primary key(c1, c2));
+ERROR 42X90: More than 1 primary key constraint specified for table 'NEG'.
+ij> -- duplicate constraint names
+create table neg (c1 int not null constraint asdf primary key, c2 int, c3 int constraint asdf unique);
+ERROR 42X91: Constraint name 'ASDF' appears more than once in the create table statement.
+ij> -- duplicate column names in same constraint column list
+create table neg (c1 int not null, c2 int not null, primary key(c1, c2, c1));
+ERROR 42X92: Column name 'C1' appears more than once in a constraint's column list.
+ij> -- non-existant columns in constraint column list
+create table neg (c1 int not null, c2 int not null, primary key(c1, c2, cx));
+ERROR 42X93: Table 'NEG' contains a constraint definition with column 'CX' which is not in the table.
+ij> -- invalid constraint schema name
+create table neg (c1 int not null, c2 int not null, constraint bar.pkneg primary key(c1, c2));
+ERROR 42X85: Constraint 'BAR.PKNEG'is required to be in the same schema as table 'APP.NEG'.
+ij> create table neg (c1 int not null, c2 int not null, constraint sys.pkneg primary key(c1, c2));
+ERROR 42X85: Constraint 'SYS.PKNEG'is required to be in the same schema as table 'APP.NEG'.
+ij> create table neg (c1 int not null constraint bar.pkneg primary key, c2 int);
+ERROR 42X85: Constraint 'BAR.PKNEG'is required to be in the same schema as table 'APP.NEG'.
+ij> create table neg (c1 int not null constraint sys.pkneg primary key, c2 int);
+ERROR 42X85: Constraint 'SYS.PKNEG'is required to be in the same schema as table 'APP.NEG'.
+ij> -- constraint names must be unique within a schema
+create table neg1(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> create table neg2(c1 int not null constraint asdf primary key);
+ERROR X0Y32: Constraint 'ASDF' already exists in Schema 'APP'.
+ij> drop table neg1;
+0 rows inserted/updated/deleted
+ij> create table neg2(c1 int not null constraint asdf primary key);
+0 rows inserted/updated/deleted
+ij> drop table neg2;
+0 rows inserted/updated/deleted
+ij> -- again with explict schema names, should fail
+create table neg1(c1 int not null constraint app.asdf primary key);
+0 rows inserted/updated/deleted
+ij> create table neg2(c1 int not null constraint app.asdf primary key);
+ERROR X0Y32: Constraint 'ASDF' already exists in Schema 'APP'.
+ij> create table neg2(c1 int not null constraint app.asdf primary key);
+ERROR X0Y32: Constraint 'ASDF' already exists in Schema 'APP'.
+ij> -- again with mixing schema names
+create table neg1(c1 int not null constraint asdf primary key);
+ERROR X0Y32: Table/View 'NEG1' already exists in Schema 'APP'.
+ij> create table neg2(c1 int not null constraint app.asdf primary key);
+ERROR X0Y32: Constraint 'ASDF' already exists in Schema 'APP'.
+ij> drop table neg1;
+0 rows inserted/updated/deleted
+ij> create table neg2(c1 int not null constraint app.asdf primary key);
+0 rows inserted/updated/deleted
+ij> -- primary key cannot be explicitly nullable
+create table neg2(c1 int null constraint asdf primary key);
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 26.
+ij> create table neg2(c1 int null, c2 int, constraint asdf primary key(c1, c2));
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 26.
+ij> -- verify that you can not create a primary key column with default null
+-- a primary key column can only be create if the column is explicitly not null
+create table neg1 (c1 int default null primary key);
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> create table neg1 (c1 int default null, c2 int not null, primary key(c2, c1));
+ERROR 42831: 'C1' cannot be a column of a primary key or unique key because it can contain null values.
+ij> -- test that a unique key can be not be explicitly nullable
+create table neg1(c1 int null unique);
+ERROR 42X01: Syntax error: Encountered "null" at line 2, column 26.
+ij> create table neg1(c1 int null, c2 int, constraint asdf unique(c1));
+ERROR 42X01: Syntax error: Encountered "null" at line 1, column 26.
+ij> -- positive tests
+-- verify that a unique key can not contain nulls
+create table pos1 (c1 int not null unique, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into pos1 (c1) values(null);
+ERROR 23502: Column 'C1'  cannot accept a NULL value.
+ij> insert into pos1 (c1) values(null);
+ERROR 23502: Column 'C1'  cannot accept a NULL value.
+ij> select * from pos1;
+C1         |C2         
+-----------------------
+ij> drop table pos1;
+0 rows inserted/updated/deleted
+ij> -- verify that you can combine not null and unique/primary key constraints
+create table pos1 (c1 int not null unique, c2 int not null primary key);
+0 rows inserted/updated/deleted
+ij> insert into pos1 (c1) values (null);
+ERROR 23502: Column 'C1'  cannot accept a NULL value.
+ij> insert into pos1 (c2) values (null);
+ERROR 23502: Column 'C1'  cannot accept a NULL value.
+ij> drop table pos1;
+0 rows inserted/updated/deleted
+ij> -- verify that you can combine multiple column constraints
+select count(*) from sys.sysconstraints;
+1          
+-----------
+1          
+ij> select count(*) from sys.syskeys;
+1          
+-----------
+1          
+ij> -- we will be adding 6 rows to both sysconstraints and syskeys
+create table pos1 (c1 int not null unique, c2 int not null primary key);
+0 rows inserted/updated/deleted
+ij> insert into pos1 (c1) values (null);
+ERROR 23502: Column 'C1'  cannot accept a NULL value.
+ij> insert into pos1 (c2) values (null);
+ERROR 23502: Column 'C1'  cannot accept a NULL value.
+ij> insert into pos1 values (1, 1), (1, 2);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'POS1'.
+ij> insert into pos1 values (1, 1), (2, 1);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'POS1'.
+ij> select count(*) from sys.sysconstraints;
+1          
+-----------
+3          
+ij> select count(*) from sys.syskeys;
+1          
+-----------
+3          
+ij> drop table pos1;
+0 rows inserted/updated/deleted
+ij> -- verify that you can delete from a primary key
+create table pos1 (c1 int not null, c2 int not null, primary key(c2, c1));
+0 rows inserted/updated/deleted
+ij> insert into pos1 values (1, 2);
+1 row inserted/updated/deleted
+ij> select * from pos1;
+C1         |C2         
+-----------------------
+1          |2          
+ij> delete from pos1;
+1 row inserted/updated/deleted
+ij> select * from pos1;
+C1         |C2         
+-----------------------
+ij> -- create a table with lots key columns
+create table pos2 (i int not null, s smallint not null, r real not null, dp double precision not null,
+				   c30 char(30) not null, vc10 varchar(10) not null, d date not null, t time not null,
+				   ts timestamp not null,
+				   primary key(ts, t, d, vc10, c30, dp, r, s, i));
+0 rows inserted/updated/deleted
+ij> insert into pos2 values(111111, 1, 1.11, 11111.1111, 'char(30)',
+					    'vc(10)', '1999-9-9',
+					    '8:08:08', '1999-9-9 8:08:08');
+1 row inserted/updated/deleted
+ij> insert into pos2 values(111111, 1, 1.11, 11111.1111, 'char(30)',
+					    'vc(10)', '1999-9-9',
+					    '8:08:08', '1999-9-9 8:08:08');
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'POS2'.
+ij> -- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> -- drop tables
+drop table pos1;
+0 rows inserted/updated/deleted
+ij> drop table pos2;
+0 rows inserted/updated/deleted
+ij> -- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> -- test that a unique key can be explicitly not nullable
+create table pos1(c1 int not null unique);
+0 rows inserted/updated/deleted
+ij> drop table pos1;
+0 rows inserted/updated/deleted
+ij> create table pos1(c1 int not null, c2 int, constraint asdf unique(c1));
+ERROR X0Y32: Constraint 'ASDF' already exists in Schema 'APP'.
+ij> create table t1 (c1 int, c2 int, c3 int not null);
+0 rows inserted/updated/deleted
+ij> create unique index i11 on t1 (c3);
+0 rows inserted/updated/deleted
+ij> create unique index i12 on t1 (c1, c3 desc);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1,2,3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (null, 4,5);
+1 row inserted/updated/deleted
+ij> create table t2 (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values (1,2,3), (null, 4,5), (7,8,9);
+3 rows inserted/updated/deleted
+ij> create unique index i21 on t2 (c3);
+0 rows inserted/updated/deleted
+ij> create unique index i22 on t2 (c1, c3 desc);
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- bug 5520 - constraint names in new schemas.
+create table B5420_1.t1 (c1 int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table B5420_2.t2 (c2 int not null constraint c2pk primary key);
+0 rows inserted/updated/deleted
+ij> -- two part constraint names are not allowed
+create table B5420_3.t3 (c3 int not null constraint B5420_3.c3pk primary key);
+0 rows inserted/updated/deleted
+ij> create table B5420_4.t4 (c4 int not null, primary key (c4));
+0 rows inserted/updated/deleted
+ij> create table B5420_5.t5 (c5 int not null, constraint c5pk primary key (c5));
+0 rows inserted/updated/deleted
+ij> -- two part constraint names are not allowed
+create table B5420_6.t6 (c6 int not null, constraint B5420_6.c6pk primary key (c6));
+0 rows inserted/updated/deleted
+ij> SELECT CAST (S.SCHEMANAME AS VARCHAR(12)), CAST (C.CONSTRAINTNAME AS VARCHAR(36)), CAST (T.TABLENAME AS VARCHAR(12)) FROM SYS.SYSCONSTRAINTS C , SYS.SYSTABLES T, SYS.SYSSCHEMAS S
+WHERE C.SCHEMAID = S.SCHEMAID AND C.TABLEID = T.TABLEID AND T.SCHEMAID = S.SCHEMAID
+AND S.SCHEMANAME LIKE 'B5420_%' ORDER BY 1,2,3;
+1           |2                                   |3           
+--------------------------------------------------------------
+B5420_1     |xxxxGENERATED-IDxxxx                  |T1          
+B5420_2     |C2PK                                |T2          
+B5420_3     |C3PK                                |T3          
+B5420_4     |xxxxGENERATED-IDxxxx                  |T4          
+B5420_5     |C5PK                                |T5          
+B5420_6     |C6PK                                |T6          
+ij> -- clean up
+drop table B5420_1.t1;
+0 rows inserted/updated/deleted
+ij> drop table B5420_2.t2;
+0 rows inserted/updated/deleted
+ij> drop table B5420_4.t4;
+0 rows inserted/updated/deleted
+ij> drop table B5420_5.t5;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/procedure.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/procedure.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,986 @@
+testNegative
+create procedure asdf() language java external name 'asdfasdf' parameter style java
+EXPECTED SQL Exception: (42Y04) Cannot create a procedure or function with EXTERNAL NAME 'asdfasdf' because it is not a dot separated list. The expected format is <full java path>.<method name> .
+create procedure asdf() language java external name 'asdfasdf.' parameter style java
+EXPECTED SQL Exception: (42Y04) Cannot create a procedure or function with EXTERNAL NAME 'asdfasdf.' because it is not a dot separated list. The expected format is <full java path>.<method name> .
+create procedure a23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789() language java external name 'asdf.asdf' parameter style java
+EXPECTED SQL Exception: (42622) The name 'A23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' is too long. The maximum length is '128'.
+create procedure asdf language java external name java.lang.Thread.currentThread parameter style java
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "language" at line 1, column 23.
+CREATE PROCEDURE ASSEMBLY_PARTS (IN ASSEMBLY_NUM INTEGER, OUT NUM_PARTS INTEGER, OUT COST DOUBLE) EXTERNAL NAME 'parts!assembly' DYNAMIC RESULT SETS 1 LANGUAGE C PARAMETER STYLE GENERAL
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "C" at line 1, column 161.
+create procedure sys.proc1() language java external name 'java.lang.System.gc' parameter style java
+EXPECTED SQL Exception: (42X62) 'CREATE PROCEDURE' is not allowed in the 'SYS' schema.
+create procedure noclass() language java external name 'asdf.asdf' parameter style java language java
+EXPECTED SQL Exception: (42613) Multiple or conflicting keywords involving the 'LANGUAGE' clause are present.
+create procedure noclass() parameter style java language java external name 'asdf.asdf' parameter style java
+EXPECTED SQL Exception: (42613) Multiple or conflicting keywords involving the 'PARAMETER STYLE' clause are present.
+create procedure noclass() external name 'asdf.xxxx' language java external name 'asdf.asdf' parameter style java
+EXPECTED SQL Exception: (42613) Multiple or conflicting keywords involving the 'EXTERNAL NAME' clause are present.
+create procedure noclass() parameter style java language java external name 'asdf.asdf' parameter style derby_rs_collection
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "derby_rs_collection" at line 1, column 105.
+create procedure missing01()
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "<EOF>" at line 1, column 28.
+create procedure missing02() language java
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing03() language java parameter style java
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing04() language java external name 'foo.bar'
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing05() parameter style java
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing06() parameter style java external name 'foo.bar'
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing07() external name 'goo.bar'
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure missing08() dynamic result sets 1
+EXPECTED SQL Exception: (42X01) Syntax error: MISSING ELEMENT.
+create procedure NO_BLOB(IN P1 BLOB(3k)) language java parameter style java external name 'no.blob'
+EXPECTED SQL Exception: (42962) Long column type column or parameter 'P1' not permitted in declared global temporary tables or procedure definitions. 
+create procedure NO_CLOB(IN P1 CLOB(3k)) language java parameter style java external name 'no.clob'
+EXPECTED SQL Exception: (42962) Long column type column or parameter 'P1' not permitted in declared global temporary tables or procedure definitions. 
+create procedure NO_LVC(IN P1 LONG VARCHAR) language java parameter style java external name 'no.lvc'
+EXPECTED SQL Exception: (42962) Long column type column or parameter 'P1' not permitted in declared global temporary tables or procedure definitions. 
+create procedure DUP_P1(IN FRED INT, OUT RON CHAR(10), IN FRED INT) language java parameter style java external name 'no.dup1'
+EXPECTED SQL Exception: (42734) Name 'FRED' specified in context 'DUP_P1' is not unique.
+create procedure D2.DUP_P2(IN "FreD" INT, OUT RON CHAR(10), IN "FreD" INT) language java parameter style java external name 'no.dup2'
+EXPECTED SQL Exception: (42734) Name 'FreD' specified in context 'D2.DUP_P2' is not unique.
+create procedure D3.DUP_P3(IN "FRED" INT, OUT RON CHAR(10), IN fred INT) language java parameter style java external name 'no.dup3'
+EXPECTED SQL Exception: (42734) Name 'FRED' specified in context 'D3.DUP_P3' is not unique.
+CALL APP.NSP(?, ?)
+EXPECTED SQL Exception: (42Y03) 'APP.NSP' is not recognized as a function or procedure.
+call syscs_util.syscs_set_database_property("foo", "bar")
+EXPECTED SQL Exception: (42X15) Column name 'foo' appears in a statement without a FROM list.
+testDelayedClassChecking
+call noclass()
+EXPECTED SQL Exception: (42X51) The class 'asdf' does not exist or is inaccessible. This can happen if the class is not public.
+call nomethod()
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call java.lang.Integer.asdf(), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+call notstatic()
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call java.lang.Integer.equals(), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+call notvoid()
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call void java.lang.Runtime.getRuntime(), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+testDuplicates
+create procedure PROCDUP() language java external name 'failAPP.fail0' parameter style java
+EXPECTED SQL Exception: (X0Y68) PROCEDURE 'PROCDUP' already exists.
+create procedure s1.PROCDUP() language java external name 'fails1.fail0' parameter style java
+EXPECTED SQL Exception: (X0Y68) PROCEDURE 'PROCDUP' already exists.
+create procedure s2.PROCDUP() language java external name 'fails2.fail0' parameter style java
+EXPECTED SQL Exception: (X0Y68) PROCEDURE 'PROCDUP' already exists.
+DEFINED PROCEDURES FOR PROCDUP
+  APP.PROCDUP AS okAPP.ok0() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  S1.PROCDUP AS oks1.ok0() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  S2.PROCDUP AS oks2.ok0() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR PROCDUP
+  APP.PROCDUP AS okAPP.ok0 type procedureNoResult
+  S1.PROCDUP AS oks1.ok0 type procedureNoResult
+  S2.PROCDUP AS oks2.ok0 type procedureNoResult
+------------
+create procedure S1.NOTYET() SPECIFIC fred language java external name 'failAPP.fail0' parameter style java
+EXPECTED SQL Exception: (0A000) Feature not implemented: SPECIFIC identifier.
+ambigiousMethods
+call AMBIGIOUS01(?, ?)
+EXPECTED SQL Exception: (42X73) Method resolution for signature org.apache.derbyTesting.functionTests.util.ProcedureTest.ambigious1(int, java.lang.String, [Ljava.sql.ResultSet;) was ambiguous. (No single maximally specific method.)
+call AMBIGIOUS02(?, ?)
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call org.apache.derbyTesting.functionTests.util.ProcedureTest.ambigious2(int, int, java.sql.ResultSet[]), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+zeroArgProcedures
+zeroArg() called
+UPDATE COUNT 0
+zeroArg() called
+UPDATE COUNT 0
+zeroArg() called
+UPDATE COUNT 0
+EXPECTED SQL Exception: 'ZA' is not recognized as a function or procedure.
+zeroArg() called
+UPDATE COUNT 0
+zeroArg() called
+UPDATE COUNT 0
+DEFINED PROCEDURES FOR ZA
+  APP.ZA AS org.apache.derbyTesting.functionTests.util.ProcedureTest.zeroArg() LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR ZA
+  APP.ZA AS org.apache.derbyTesting.functionTests.util.ProcedureTest.zeroArg type procedureNoResult
+------------
+DEFINED PROCEDURES FOR ZA
+DATABASE METATDATA PROCEDURES FOR ZA
+------------
+sqlProcedures()
+DEFINED PROCEDURES FOR IR%
+  APP.IR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow(IN P1 INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  APP.IR2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow(IN P1 INTEGER,IN P2 CHAR(10)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR IR%
+  APP.IR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow type procedureNoResult
+    procedureColumnIn P1 INTEGER
+  APP.IR2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow type procedureNoResult
+    procedureColumnIn P1 INTEGER
+    procedureColumnIn P2 CHAR
+------------
+CALL IR()
+EXPECTED SQL Exception: (42Y03) 'IR' is not recognized as a function or procedure.
+UPDATE COUNT 0
+UPDATE COUNT 0
+EXPECTED SQL Exception: The exception 'SQL Exception: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.' was thrown while evaluating an expression.
+UPDATE COUNT 0
+UPDATE COUNT 0
+UPDATE COUNT 0
+UPDATE COUNT 0
+UPDATE COUNT 0
+I          |B              
+---------------------------
+1          |int            
+2          |int            
+3          |int            
+7          |int            
+4          |4              
+5          |ir2            
+6          |'012345678     
+CALL IR2(2, 'no way')
+EXPECTED SQL Exception: (38000) The exception 'SQL Exception: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T1'.' was thrown while evaluating an expression.
+CALL IR2(?, 'no way')
+EXPECTED SQL Exception: (07000) At least one parameter to the current statement is uninitialized.
+CALL IR2(2, ?)
+EXPECTED SQL Exception: (07000) At least one parameter to the current statement is uninitialized.
+dynamicResultSets - parameter style JAVA
+create procedure DRS(p1 int) parameter style JAVA READS SQL DATA dynamic result sets -1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'
+EXPECTED SQL Exception: (42X01) Syntax error: Encountered "-" at line 1, column 86.
+DEFINED PROCEDURES FOR DRS
+  APP.DRS AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows(IN P1 INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA DYNAMIC RESULT SETS 1
+DATABASE METATDATA PROCEDURES FOR DRS
+  APP.DRS AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows type procedureNoResult
+    procedureColumnIn P1 INTEGER
+------------
+CALL DRS()
+EXPECTED SQL Exception: (42Y03) 'DRS' is not recognized as a function or procedure.
+CALL DRS(?,?)
+EXPECTED SQL Exception: (42Y03) 'DRS' is not recognized as a function or procedure.
+selectRows - 1 arg - 1 rs
+I          |B              
+---------------------------
+3          |int            
+DEFINED PROCEDURES FOR DRS2
+  APP.DRS2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows(IN P1 INTEGER,IN P2 INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA DYNAMIC RESULT SETS 2
+DATABASE METATDATA PROCEDURES FOR DRS2
+  APP.DRS2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows type procedureNoResult
+    procedureColumnIn P1 INTEGER
+    procedureColumnIn P2 INTEGER
+------------
+selectRows - 2 arg - 2 rs
+I          |B              
+---------------------------
+2          |int            
+I          |B              
+---------------------------
+6          |'012345678     
+7          |int            
+selectRows - 2 arg - 2 rs
+I          |B              
+---------------------------
+2          |int            
+selectRows - 2 arg - 2 rs
+UPDATE COUNT 0
+selectRows - 2 arg - 2 rs
+I          |B              
+---------------------------
+2          |int            
+I          |B              
+---------------------------
+selectRows - 2 arg - 2 rs
+pass 1 got result set true
+EXPECTED : ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+pass 2 got result set true
+EXPECTED : ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+pass 3 got result set false
+auto commit is true
+lock count before execution 0
+selectRows - 2 arg - 2 rs
+lock count after execution 1
+lock count after next on first rs 3
+Is there a second result ? true
+lock count after first getMoreResults() 2
+lock count after next on second rs 7
+more results (should be false) false
+lock count after second getMoreResults() 0
+auto commit is false
+lock count before execution 0
+selectRows - 2 arg - 2 rs
+lock count after execution 1
+lock count after next on first rs 3
+Is there a second result ? true
+lock count after first getMoreResults() 2
+lock count after next on second rs 7
+more results (should be false) false
+lock count after second getMoreResults() 7
+auto commit is true
+lock count before execution 0
+selectRows - 2 arg - 2 rs
+lock count after execution 1
+lock count after next on first rs 3
+executing statement to force auto commit on open CALL statement
+lock count after statement execution 0
+Expected - ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+Is there a second result ? true
+lock count after first getMoreResults() 0
+Expected - ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+lock count after next on second rs 0
+more results (should be false) false
+lock count after second getMoreResults() 0
+selectRows - 2 arg - 2 rs
+I          |B              
+---------------------------
+2          |int            
+I          |B              
+---------------------------
+6          |'012345678     
+7          |int            
+CALL IRDRS(?)
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call org.apache.derbyTesting.functionTests.util.ProcedureTest.missingDynamicParameter(int, java.sql.ResultSet[]), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+CALL rsi(?)
+EXPECTED SQL Exception: (42X50) No method was found to be able to match method call org.apache.derbyTesting.functionTests.util.ProcedureTest.badDynamicParameter(int, java.sql.ResultSet[]), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have.  It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible.
+no dynamic result sets
+zeroArgDynamicResult called
+UPDATE COUNT 0
+Testing too many result sets
+... too many result sets
+selectRows - 2 arg - 2 rs
+WARNING 0100E: XX Attepmt to return too many result sets
+I          |B              
+---------------------------
+2          |int            
+... one additional closed result set
+selectRows - 2 arg - 2 rs
+I          |B              
+---------------------------
+2          |int            
+Stored Procedure w/ CLOB in result set.
+C                             
+------------------------------
+yayorsomething                
+yayorsomething2               
+1          
+-----------
+2          
+C                             
+------------------------------
+yayorsomething                
+yayorsomething2               
+Stored Procedure w/ BLOB in result set.
+B                                                           
+------------------------------------------------------------
+003100300031003000310030003000300031003100300031            
+003100300031003000310030003000300031003100300031            
+parameterTypes
+DEFINED PROCEDURES FOR PT1
+  APP.PT1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter1(IN A INTEGER,IN B CHAR(10),IN C VARCHAR(20)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA DYNAMIC RESULT SETS 1
+DATABASE METATDATA PROCEDURES FOR PT1
+  APP.PT1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter1 type procedureNoResult
+    procedureColumnIn A INTEGER
+    procedureColumnIn B CHAR
+    procedureColumnIn C VARCHAR
+------------
+PT1 a=20 b=<abc       >(10) c=<efgh>(4)
+A          |B         |3          |C                   |5          
+-------------------------------------------------------------------
+20         |abc       |10         |efgh                |4          
+PT1 a=30 b=<abc       >(10) c=<efgh  >(6)
+A          |B         |3          |C                   |5          
+-------------------------------------------------------------------
+30         |abc       |10         |efgh                |6          
+PT1 a=40 b=<abc       >(10) c=<efgh                >(20)
+A          |B         |3          |C                   |5          
+-------------------------------------------------------------------
+40         |abc       |10         |efgh                |20         
+PT1 a=50 b=<0123456789>(10) c=<efgh  >(6)
+A          |B         |3          |C                   |5          
+-------------------------------------------------------------------
+50         |0123456789|10         |efgh                |6          
+DEFINED PROCEDURES FOR PT2
+  APP.PT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter2(IN A INTEGER,IN B DECIMAL(4,0),IN C DECIMAL(7,3)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA DYNAMIC RESULT SETS 1
+DATABASE METATDATA PROCEDURES FOR PT2
+  APP.PT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter2 type procedureNoResult
+    procedureColumnIn A INTEGER
+    procedureColumnIn B DECIMAL
+    procedureColumnIn C DECIMAL
+------------
+A          |B         |C                   
+-------------------------------------------
+60         |34        |54.100              
+A          |B         |C                   
+-------------------------------------------
+70         |831       |45.700              
+EXPECTED SQL Exception: The resulting value is outside the range for the data type DECIMAL/NUMERIC(4,0).
+A          |B         |C                   
+-------------------------------------------
+80         |993       |1234.567            
+DEFINED PROCEDURES FOR PTSMALLINT%
+  APP.PTSMALLINT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.pSMALLINT(IN P_IN SMALLINT,INOUT P_INOUT SMALLINT,OUT P_OUT SMALLINT) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+DATABASE METATDATA PROCEDURES FOR PTSMALLINT%
+  APP.PTSMALLINT2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.pSMALLINT type procedureNoResult
+    procedureColumnIn P_IN SMALLINT
+    procedureColumnInOut P_INOUT SMALLINT
+    procedureColumnOut P_OUT SMALLINT
+------------
+EXPECTED SQL Exception: (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'short'.
+EXPECTED SQL Exception: (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'short'.
+p_inout 9 p_out 6
+p_inout 9 null?false p_out 6 null?false
+p_inout 9 null?false p_out 6 null?false
+outparams
+DEFINED PROCEDURES FOR OP1
+  APP.OP1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.outparams1(OUT A INTEGER,IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP1
+  APP.OP1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.outparams1 type procedureNoResult
+    procedureColumnOut A INTEGER
+    procedureColumnIn B INTEGER
+------------
+EXPECTED SQL Exception: Use of CallableStatement required for stored procedure call or use of output parameters: CALL OP1(?, ?)
+EXPECTED SQL Exception: Use of CallableStatement required for stored procedure call or use of output parameters: CALL OP1(?, ?)
+UPDATE COUNT 0
+OP1 14 null ? false
+DEFINED PROCEDURES FOR OP2
+  APP.OP2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams2(INOUT A INTEGER,IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP2
+  APP.OP2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams2 type procedureNoResult
+    procedureColumnInOut A INTEGER
+    procedureColumnIn B INTEGER
+------------
+EXPECTED SQL Exception: Use of CallableStatement required for stored procedure call or use of output parameters: CALL OP2(?, ?)
+EXPECTED SQL Exception: Use of CallableStatement required for stored procedure call or use of output parameters: CALL OP2(?, ?)
+UPDATE COUNT 0
+OP2 17 null ? false
+DEFINED PROCEDURES FOR OP3
+  APP.OP3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3(INOUT A CHAR(10),IN B INTEGER) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP3
+  APP.OP3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3 type procedureNoResult
+    procedureColumnInOut A CHAR
+    procedureColumnIn B INTEGER
+------------
+p1= >dan       < length 10
+UPDATE COUNT 0
+OP3 >nad       < null ? false
+DEFINED PROCEDURES FOR OP4
+  APP.OP4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4(OUT A DECIMAL(4,2),IN B VARCHAR(255)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP4
+  APP.OP4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4 type procedureNoResult
+    procedureColumnOut A DECIMAL
+    procedureColumnIn B VARCHAR
+------------
+UPDATE COUNT 0
+OP4 null >null< null ? true
+UPDATE COUNT 0
+OP4 14 >31.00< null ? false
+UPDATE COUNT 0
+OP4 11.3 >28.30< null ? false
+UPDATE COUNT 0
+OP4 39.345 >56.34< null ? false
+EXPECTED SQL Exception: The resulting value is outside the range for the data type DECIMAL/NUMERIC(4,2).
+EXPECTED SQL Exception: At least one parameter to the current statement is uninitialized.
+EXPECTED SQL Exception: Return output parameters cannot be set.
+EXPECTED SQL Exception: Return output parameters cannot be set.
+EXPECTED SQL Exception: Return output parameters cannot be set.
+UPDATE COUNT 0
+OP4 49.345 >66.34< null ? false
+EXPECTED SQL Exception: Parameter 2 is not an output parameter.
+EXPECTED SQL Exception: (07004) Parameter 1 is an OUT procedure parameter and must be registered with CallableStatement.registerOutParameter before execution.
+DEFINED PROCEDURES FOR OP4INOUT
+  APP.OP4INOUT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4(INOUT A DECIMAL(4,2),IN B VARCHAR(255)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR OP4INOUT
+  APP.OP4INOUT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4 type procedureNoResult
+    procedureColumnInOut A DECIMAL
+    procedureColumnIn B VARCHAR
+------------
+UPDATE COUNT 0
+OP4INOUT null >null< null ? true
+UPDATE COUNT 0
+OP4INOUT null(2) >null< null ? true
+UPDATE COUNT 0
+OP4INOUT 14+23.5 >37.50< null ? false
+UPDATE COUNT 0
+OP4INOUT 9+23.505 >32.50< null ? false
+UPDATE COUNT 0
+OP4INOUT 32.50+23.505 >56.00< null ? false
+EXPECTED SQL Exception: The resulting value is outside the range for the data type DECIMAL/NUMERIC(4,2).
+EXPECTED SQL Exception: The resulting value is outside the range for the data type DECIMAL/NUMERIC(4,2).
+EXPECTED SQL Exception: At least one parameter to the current statement is uninitialized.
+EXPECTED SQL Exception: At least one parameter to the current statement is uninitialized.
+EXPECTED SQL Exception: (07000) At least one parameter to the current statement is uninitialized.
+EXPECTED SQL Exception: (07004) Parameter 1 is an INOUT procedure parameter and must be registered with CallableStatement.registerOutParameter before execution.
+SQL Control
+CREATE PROCEDURE SQLC.SQLCONTROL1_0 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_0 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_0 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_0 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128))  PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_1 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) NO SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_2 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) CONTAINS SQL PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_3 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_3 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_3 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_3 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) READS SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+CREATE PROCEDURE SQLC.SQLCONTROL1_4 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'
+CREATE PROCEDURE SQLC.SQLCONTROL2_4 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'
+CREATE PROCEDURE SQLC.SQLCONTROL3_4 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'
+CREATE PROCEDURE SQLC.SQLCONTROL4_4 (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) MODIFIES SQL DATA PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'
+DEFINED PROCEDURES FOR SQLCONTROL1_%
+  SQLC.SQLCONTROL1_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL1_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL1_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL1_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL1_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL1_%
+  SQLC.SQLCONTROL1_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL1_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+------------
+DEFINED PROCEDURES FOR SQLCONTROL2_%
+  SQLC.SQLCONTROL2_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL2_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL2_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL2_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL2_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL2_%
+  SQLC.SQLCONTROL2_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL2_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+------------
+DEFINED PROCEDURES FOR SQLCONTROL3_%
+  SQLC.SQLCONTROL3_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL3_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL3_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL3_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL3_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3(OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL3_%
+  SQLC.SQLCONTROL3_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+  SQLC.SQLCONTROL3_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3 type procedureNoResult
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+------------
+DEFINED PROCEDURES FOR SQLCONTROL4_%
+  SQLC.SQLCONTROL4_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+  SQLC.SQLCONTROL4_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  SQLC.SQLCONTROL4_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA CONTAINS SQL
+  SQLC.SQLCONTROL4_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA
+  SQLC.SQLCONTROL4_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4(IN SQLC INTEGER,OUT E1 VARCHAR(128),OUT E2 VARCHAR(128),OUT E3 VARCHAR(128),OUT E4 VARCHAR(128),OUT E5 VARCHAR(128),OUT E6 VARCHAR(128),OUT E7 VARCHAR(128),OUT E8 VARCHAR(128)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA
+DATABASE METATDATA PROCEDURES FOR SQLCONTROL4_%
+  SQLC.SQLCONTROL4_0 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_1 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_2 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_3 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+  SQLC.SQLCONTROL4_4 AS org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4 type procedureNoResult
+    procedureColumnIn SQLC INTEGER
+    procedureColumnOut E1 VARCHAR
+    procedureColumnOut E2 VARCHAR
+    procedureColumnOut E3 VARCHAR
+    procedureColumnOut E4 VARCHAR
+    procedureColumnOut E5 VARCHAR
+    procedureColumnOut E6 VARCHAR
+    procedureColumnOut E7 VARCHAR
+    procedureColumnOut E8 VARCHAR
+------------
+** SQL ** DEFAULT (MODIFIES SQL DATA)
+    CREATE TABLE SQ-UPDATE 0-EXECUTE OK
+    ALTER TABLE SQL-UPDATE 0-EXECUTE OK
+    INSERT INTO SQL-UPDATE 1-EXECUTE OK
+    UPDATE SQLC.SQL-UPDATE 2-EXECUTE OK
+    SELECT * FROM S- ROW(15)- ROW(12)-EXECUTE OK
+    DELETE FROM SQL-UPDATE 2-EXECUTE OK
+    DROP TABLE SQLC-UPDATE 0-EXECUTE OK
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-X0X05
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+    DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1- ROW(1)-EXECUTE OK
+    VALUES 1- ROW(1)-EXECUTE OK
+** SQL ** NO SQL
+    CREATE TABLE SQ-38001
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-38001
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3-38001
+    SET SCHEMA SQLC-38001
+    CREATE SCHEMA S-38001
+    DROP SCHEMA SQL-38001
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-38001
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1-38001
+    VALUES 1-38001
+** SQL ** CONTAINS SQL
+    CREATE TABLE SQ-38002
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-38002
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3-38004
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-38002
+    DROP SCHEMA SQL-38002
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1-38004
+    VALUES 1-38004
+** SQL ** READS SQL DATA
+    CREATE TABLE SQ-38002
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-38002
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-38002
+    DROP SCHEMA SQL-38002
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1- ROW(1)-EXECUTE OK
+    VALUES 1- ROW(1)-EXECUTE OK
+** SQL ** MODIFIES SQL DATA
+    CREATE TABLE SQ-UPDATE 0-EXECUTE OK
+    ALTER TABLE SQL-42Y55
+    INSERT INTO SQL-42X05
+    UPDATE SQLC.SQL-42X05
+    SELECT * FROM S-42X05
+    DELETE FROM SQL-42X05
+    DROP TABLE SQLC-42Y55
+    CREATE VIEW SQL-42X05
+    DROP VIEW SQLCO-X0X05
+    LOCK TABLE SQLC-42X05
+    VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+    SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+    CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+    DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    IBM CS FEATURE
+    IBM CS FEATURE
+    SET ISOLATION C-UPDATE 0-EXECUTE OK
+    SET RUNTIMESTAT-42X01
+    SET STATISTICS -42X01
+    VALUES 1- ROW(1)-EXECUTE OK
+    VALUES 1- ROW(1)-EXECUTE OK
+CALL ** DEFAULT (MODIFIES SQL DATA)
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+CALL ** NO SQL
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38001
+CALL ** CONTAINS SQL
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38004
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+CALL ** READS SQL DATA
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         STATE-38002
+CALL ** MODIFIES SQL DATA
+    CALLLING DEFAULT (MODIFIES SQL DATA)
+         CALL SQLC.SQLCONTROL2_0 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+    CALLLING NO SQL
+         CALL SQLC.SQLCONTROL2_1 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38001
+         DROP VIEW SQLCO-38001
+         LOCK TABLE SQLC-38001
+         VALUES 1,2,3-38001
+         SET SCHEMA SQLC-38001
+         CREATE SCHEMA S-38001
+         DROP SCHEMA SQL-38001
+    CALLLING CONTAINS SQL
+         CALL SQLC.SQLCONTROL2_2 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3-38004
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING READS SQL DATA
+         CALL SQLC.SQLCONTROL2_3 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-38002
+         DROP VIEW SQLCO-38002
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-38002
+         DROP SCHEMA SQL-38002
+    CALLLING MODIFIES SQL DATA
+         CALL SQLC.SQLCONTROL2_4 (?, ?, ?, ?, ?, ?, ?) 
+         CREATE VIEW SQL-UPDATE 0-EXECUTE OK
+         DROP VIEW SQLCO-UPDATE 0-EXECUTE OK
+         LOCK TABLE SQLC-UPDATE 0-EXECUTE OK
+         VALUES 1,2,3- ROW(1)- ROW(2)- ROW(3)-EXECUTE OK
+         SET SCHEMA SQLC-UPDATE 0-EXECUTE OK
+         CREATE SCHEMA S-UPDATE 0-EXECUTE OK
+         DROP SCHEMA SQL-UPDATE 0-EXECUTE OK
+CALL SQLCONTROL3_0 (?, ?, ?, ?, ?, ?, ?)
+EXPECTED SQL Exception: (07004) Parameter 1 is an OUT procedure parameter and must be registered with CallableStatement.registerOutParameter before execution.
+literals
+DEFINED PROCEDURES FOR TY_%
+  LITT.TY_BIGINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 BIGINT,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_CHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 CHAR(10),OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_DECIMAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 DECIMAL(5,2),OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_DOUBLE AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 DOUBLE,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_INTEGER AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 INTEGER,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_REAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 REAL,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_SMALLINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 SMALLINT,OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+  LITT.TY_VARCHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest(IN P1 VARCHAR(10),OUT P2 VARCHAR(256)) LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL
+DATABASE METATDATA PROCEDURES FOR TY_%
+  LITT.TY_BIGINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 BIGINT
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_CHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 CHAR
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_DECIMAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 DECIMAL
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_DOUBLE AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 DOUBLE
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_INTEGER AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 INTEGER
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_REAL AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 REAL
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_SMALLINT AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 SMALLINT
+    procedureColumnOut P2 VARCHAR
+  LITT.TY_VARCHAR AS org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest type procedureNoResult
+    procedureColumnIn P1 VARCHAR
+    procedureColumnOut P2 VARCHAR
+------------
+CALL LITT.TY_SMALLINT (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'short'.
+CALL LITT.TY_INTEGER (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'int'.
+CALL LITT.TY_BIGINT (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'long'.
+CALL LITT.TY_REAL (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'float'.
+CALL LITT.TY_DOUBLE (null, ?) (39004) A NULL value cannot be passed to a method which takes a parameter of primitive type 'double'.
+CALL LITT.TY_DECIMAL (null, ?)=>NULL<
+CALL LITT.TY_CHAR (null, ?)=>NULL<
+CALL LITT.TY_VARCHAR (null, ?)=>NULL<
+CALL LITT.TY_SMALLINT (12, ?)=>12<
+CALL LITT.TY_INTEGER (12, ?)=>12<
+CALL LITT.TY_BIGINT (12, ?)=>12<
+CALL LITT.TY_REAL (12, ?)=>12.0<
+CALL LITT.TY_DOUBLE (12, ?)=>12.0<
+CALL LITT.TY_DECIMAL (12, ?)=>12.00<
+CALL LITT.TY_CHAR (12, ?) (42821) Columns of type 'CHAR' cannot hold values of type 'INTEGER'. 
+CALL LITT.TY_VARCHAR (12, ?) (42821) Columns of type 'VARCHAR' cannot hold values of type 'INTEGER'. 
+CALL LITT.TY_SMALLINT (23.43e1, ?)=>234<
+CALL LITT.TY_INTEGER (23.43e1, ?)=>234<
+CALL LITT.TY_BIGINT (23.43e1, ?)=>234<
+CALL LITT.TY_REAL (23.43e1, ?)=>234.3<
+CALL LITT.TY_DOUBLE (23.43e1, ?)=>234.3<
+CALL LITT.TY_DECIMAL (23.43e1, ?)=>234.30<
+CALL LITT.TY_CHAR (23.43e1, ?) (42821) Columns of type 'CHAR' cannot hold values of type 'DOUBLE'. 
+CALL LITT.TY_VARCHAR (23.43e1, ?) (42821) Columns of type 'VARCHAR' cannot hold values of type 'DOUBLE'. 
+CALL LITT.TY_SMALLINT (176.3, ?)=>176<
+CALL LITT.TY_INTEGER (176.3, ?)=>176<
+CALL LITT.TY_BIGINT (176.3, ?)=>176<
+CALL LITT.TY_REAL (176.3, ?)=>176.3<
+CALL LITT.TY_DOUBLE (176.3, ?)=>176.3<
+CALL LITT.TY_DECIMAL (176.3, ?)=>176.30<
+CALL LITT.TY_CHAR (176.3, ?) (42821) Columns of type 'CHAR' cannot hold values of type 'DECIMAL'. 
+CALL LITT.TY_VARCHAR (176.3, ?) (42821) Columns of type 'VARCHAR' cannot hold values of type 'DECIMAL'. 
+CALL LITT.TY_SMALLINT ('12.34', ?) (42821) Columns of type 'SMALLINT' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_INTEGER ('12.34', ?) (42821) Columns of type 'INTEGER' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_BIGINT ('12.34', ?) (42821) Columns of type 'BIGINT' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_REAL ('12.34', ?) (42821) Columns of type 'REAL' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_DOUBLE ('12.34', ?) (42821) Columns of type 'DOUBLE' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_DECIMAL ('12.34', ?) (42821) Columns of type 'DECIMAL' cannot hold values of type 'CHAR'. 
+CALL LITT.TY_CHAR ('12.34', ?)=>12.34     <
+CALL LITT.TY_VARCHAR ('12.34', ?)=>12.34<

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2961 @@
+ij> --no cascade delete , just default check
+create table t1(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(b int references t1(a));
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> delete from t1;
+ERROR 23503: DELETE on table 'T1' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --simple cascade delete
+create table t2(b int references t1(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> delete from t1 where a =2 ;
+1 row inserted/updated/deleted
+ij> select * from t2;
+B          
+-----------
+1          
+3          
+4          
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t2;
+B          
+-----------
+ij> --multiple rows in the dependent table for a single row in the parent
+insert into t1 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> delete from t1 where a = 3 ;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+4          
+ij> delete from t1;
+3 rows inserted/updated/deleted
+ij> select * from t2;
+B          
+-----------
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --chain of cascade delete 
+--every table has one depedent table referencing it
+create table t1 (a int not null primary key ) ;
+0 rows inserted/updated/deleted
+ij> create table t2 (b int not null primary key  references t1(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> create table t3 (c int not null primary key  references t2(b) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t4 (d int not null primary key  references t3(c) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t5 (e int not null primary key  references t4(d) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> delete from t1 where a = 5;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t3;
+C          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t4;
+D          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t5;
+E          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> delete from t1 ;
+7 rows inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+ij> select * from t2;
+B          
+-----------
+ij> select * from t3;
+C          
+-----------
+ij> select * from t4;
+D          
+-----------
+ij> select * from t5;
+E          
+-----------
+ij> --check the prepared statement cascade delete
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?';
+ij> execute sdelete using 'values (2)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t3;
+C          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t4;
+D          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t5;
+E          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> prepare sdelete1 as 'delete from t2 where b = ?';
+ij> execute sdelete1 using 'values (3)';
+1 row inserted/updated/deleted
+ij> --Make sure the ps recompile on a DDL action
+drop table t5 ;
+0 rows inserted/updated/deleted
+ij> execute sdelete using 'values (5)';
+1 row inserted/updated/deleted
+ij> execute sdelete1 using 'values (6)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+4          
+7          
+8          
+ij> select * from t3;
+C          
+-----------
+1          
+4          
+7          
+8          
+ij> select * from t4;
+D          
+-----------
+1          
+4          
+7          
+8          
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3 ;
+0 rows inserted/updated/deleted
+ij> execute sdelete using 'values (7)';
+1 row inserted/updated/deleted
+ij> execute sdelete1 using 'values (8)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+3          
+4          
+6          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+4          
+ij> remove sdelete;
+ij> remove sdelete1;
+ij> autocommit on;
+ij> delete from t1 ;
+5 rows inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+ij> select * from t2;
+B          
+-----------
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --two foreign keys and less number of columns on the dependent table.
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t1(a) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+3 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9) ;
+3 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (4) , (7) ;
+3 rows inserted/updated/deleted
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2;
+X          
+-----------
+ij> select * from t3;
+Y          
+-----------
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --triggers on the  dependen tables 
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t1(a) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t4(z int , op char(2));
+0 rows inserted/updated/deleted
+ij> --create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+create trigger trig_delete after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+insert into t4 values(deletedrow.x , 'bd');
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+3 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9) ;
+3 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (4) , (7) ;
+3 rows inserted/updated/deleted
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t4;
+Z          |OP  
+----------------
+3          |bd  
+6          |bd  
+9          |bd  
+ij> select * from t1;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2;
+X          
+-----------
+ij> select * from t3;
+Y          
+-----------
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --test for multiple fkeys on the same table referrring to
+--different columns on the parent table.
+create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE CASCADE ,
+y int references t1(b) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+4 rows inserted/updated/deleted
+ij> insert into t2 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+4 rows inserted/updated/deleted
+ij> delete from t1;
+4 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+ij> select * from t2;
+X          |Y          
+-----------------------
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --check for the unique nulls case
+--check for sefl referencing
+---ON DELETE SET NULL TEST CASES
+--simple cascade delete set to null
+create table t1(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(b int references t1(a) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> delete from t1 where a =2 ;
+1 row inserted/updated/deleted
+ij> select * from t2;
+B          
+-----------
+1          
+3          
+4          
+NULL       
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t2;
+B          
+-----------
+NULL       
+NULL       
+NULL       
+NULL       
+ij> --multiple rows in the dependent table for a single row in the parent
+insert into t1 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4);
+4 rows inserted/updated/deleted
+ij> delete from t1 where a = 3 ;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+4          
+ij> delete from t1;
+3 rows inserted/updated/deleted
+ij> select * from t2;
+B          
+-----------
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --chain of cascade delete 
+--every table has one depedent table referencing it
+create table t1 (a int not null primary key ) ;
+0 rows inserted/updated/deleted
+ij> create table t2 (b int not null primary key  references t1(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> create table t3 (c int not null primary key  references t2(b) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t4 (d int not null primary key  references t3(c) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t5 (e int references t4(d) ON DELETE SET NULL) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> delete from t1 where a = 5;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t3;
+C          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t4;
+D          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t5;
+E          
+-----------
+1          
+2          
+3          
+4          
+6          
+7          
+8          
+NULL       
+ij> delete from t1 ;
+7 rows inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+ij> select * from t2;
+B          
+-----------
+ij> select * from t3;
+C          
+-----------
+ij> select * from t4;
+D          
+-----------
+ij> select * from t5;
+E          
+-----------
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+ij> --check the prepared statement cascade delete
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?';
+ij> execute sdelete using 'values (2)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t3;
+C          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t4;
+D          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> select * from t5;
+E          
+-----------
+1          
+3          
+4          
+5          
+6          
+7          
+8          
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+ij> prepare sdelete1 as 'delete from t2 where b = ?';
+ij> execute sdelete1 using 'values (3)';
+1 row inserted/updated/deleted
+ij> --Make sure the ps recompile on a DDL action
+drop table t5 ;
+0 rows inserted/updated/deleted
+ij> execute sdelete using 'values (5)';
+1 row inserted/updated/deleted
+ij> execute sdelete1 using 'values (6)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+3          
+4          
+6          
+7          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+4          
+7          
+8          
+ij> select * from t3;
+C          
+-----------
+1          
+4          
+7          
+8          
+ij> select * from t4;
+D          
+-----------
+1          
+4          
+7          
+8          
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3 ;
+0 rows inserted/updated/deleted
+ij> execute sdelete using 'values (7)';
+1 row inserted/updated/deleted
+ij> execute sdelete1 using 'values (8)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+3          
+4          
+6          
+8          
+ij> select * from t2;
+B          
+-----------
+1          
+4          
+ij> remove sdelete;
+ij> remove sdelete1;
+ij> autocommit on;
+ij> delete from t1 ;
+5 rows inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+ij> select * from t2;
+B          
+-----------
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --two foreign keys and less number of columns on the dependent table.
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t1(a) ON DELETE SET NULL ) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+3 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9) ;
+3 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (4) , (7) ;
+3 rows inserted/updated/deleted
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2;
+X          
+-----------
+ij> select * from t3;
+Y          
+-----------
+NULL       
+NULL       
+NULL       
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --triggers on the  dependen tables 
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int references t1(c) ON DELETE SET NULL ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t1(a) ON DELETE SET NULL) ;
+0 rows inserted/updated/deleted
+ij> create table t4(z int , op char(2));
+0 rows inserted/updated/deleted
+ij> --create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+create trigger trig_update after UPDATE on t2
+referencing old as updatedrow
+for each row mode db2sql
+insert into t4 values(updatedrow.x , 'bu');
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+3 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9) ;
+3 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (4) , (7) ;
+3 rows inserted/updated/deleted
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t4;
+Z          |OP  
+----------------
+3          |bu  
+6          |bu  
+9          |bu  
+ij> select * from t1;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2;
+X          
+-----------
+NULL       
+NULL       
+NULL       
+ij> select * from t3;
+Y          
+-----------
+NULL       
+NULL       
+NULL       
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --test for multiple fkeys on the same table referrring to
+--different columns on the parent table.
+create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+4 rows inserted/updated/deleted
+ij> insert into t2 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+4 rows inserted/updated/deleted
+ij> delete from t1;
+4 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+ij> select * from t2;
+X          |Y          
+-----------------------
+NULL       |4          
+NULL       |3          
+NULL       |2          
+NULL       |1          
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+4 rows inserted/updated/deleted
+ij> insert into t2 values(1 , 3) , (2,3) , (3, 4) , (4, 1);
+4 rows inserted/updated/deleted
+ij> delete from t1 where a =1 ;
+1 row inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --following is ACTAULL CASCADE DELETE CASE
+create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE CASCADE ,
+y int references t1(b) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+4 rows inserted/updated/deleted
+ij> insert into t2 values(1 , 3) , (2,3) , (3, 4) , (4, 1);
+4 rows inserted/updated/deleted
+ij> delete from t1 where a =1 ;
+1 row inserted/updated/deleted
+ij> --Above delete should delete two rows.
+drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (a int not null primary key ) ;
+0 rows inserted/updated/deleted
+ij> create table t2 (b int not null primary key  references t1(a) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+8 rows inserted/updated/deleted
+ij> delete from t1;
+ERROR 23503: DELETE on table 'T1' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> select * from t2;
+B          
+-----------
+1          
+2          
+3          
+4          
+5          
+6          
+7          
+8          
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --test for DELETE RESTRICT
+--first check with an after trigger and NO ACTION
+create table t1(a int not null unique, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE NO ACTION , y int);
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete after DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+delete from t2 where x = deletedrow.a;
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1 , 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2 , 3);
+1 row inserted/updated/deleted
+ij> insert into t2 values(1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(2, 3);
+1 row inserted/updated/deleted
+ij> -- should fail
+-- parent row can not be deleted because of a dependent relationship from another table
+delete from t1 where a =1;
+ERROR 23503: DELETE on table 'T1' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --do the same case as above with RESTRICT
+--we should get error, because RESTRICT rules are checked before firing triggers
+create table t2(x int references t1(a) ON DELETE RESTRICT , y int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values(1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(2, 3);
+1 row inserted/updated/deleted
+ij> --following delete should throw constraint violations error
+delete from t1 where a =1;
+ERROR 23503: DELETE on table 'T1' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --test for ON UPDATE RESTRICT
+--first check with a trigger and NO ACTION
+autocommit off ;
+ij> create table t1(a int not null unique, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON UPDATE NO ACTION , y int);
+0 rows inserted/updated/deleted
+ij> create trigger trig_update after UPDATE on t1
+referencing old as old for each  row mode db2sql
+update t2 set x = 2 where x = old.a;
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1 , 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2 , 3);
+1 row inserted/updated/deleted
+ij> insert into t2 values(1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(2, 3);
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- this update should fail
+-- parent row can not be deleted because of a dependent relationship from another table
+update t1 set a = 7 where a =1;
+ERROR 23503: UPDATE on table 'T1' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> -- should pass because no foreign key constraints are violated
+update t1 set b = 7 where a =1;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+1          |7          
+2          |3          
+ij> select * from t2 ;
+X          |Y          
+-----------------------
+2          |2          
+2          |3          
+ij> rollback;
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> --do the same case as above with RESTRICT
+--we should get error, because RESTRICT is check before firing triggers
+create table t2(x int references t1(a) ON UPDATE RESTRICT , y int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values(1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(2, 3);
+1 row inserted/updated/deleted
+ij> commit;
+ij> --following update should throw an error
+update t1 set a = 7 where a =1;
+ERROR 23503: UPDATE on table 'T1' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (1).  The statement has been rolled back.
+ij> select * from t1 ;
+A          |B          
+-----------------------
+1          |2          
+2          |3          
+ij> select * from t2;
+X          |Y          
+-----------------------
+1          |2          
+2          |3          
+ij> autocommit on;
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --After ROW triggers on the  dependen tables
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t1(a) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t4(z int , op char(2));
+0 rows inserted/updated/deleted
+ij> --create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+create trigger trig_delete after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+insert into t4 values(deletedrow.x , 'ad');
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+3 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9) ;
+3 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (4) , (7) ;
+3 rows inserted/updated/deleted
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t4;
+Z          |OP  
+----------------
+3          |ad  
+6          |ad  
+9          |ad  
+ij> select * from t1;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2;
+X          
+-----------
+ij> select * from t3;
+Y          
+-----------
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --After Statement triggers on the  dependen tables
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t1(a) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create table t4(z int , op char(2));
+0 rows inserted/updated/deleted
+ij> --create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+create trigger trig_delete after DELETE on t2
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into t4 select x, 'ad' from deletedrows;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+3 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9) ;
+3 rows inserted/updated/deleted
+ij> insert into t3 values (1) , (4) , (7) ;
+3 rows inserted/updated/deleted
+ij> delete from t1 ;
+3 rows inserted/updated/deleted
+ij> select * from t4;
+Z          |OP  
+----------------
+3          |ad  
+6          |ad  
+9          |ad  
+ij> select * from t1;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2;
+X          
+-----------
+ij> select * from t3;
+Y          
+-----------
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --After triggers on a self referencing table
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete cascade);
+0 rows inserted/updated/deleted
+ij> create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+0 rows inserted/updated/deleted
+ij> insert into emp values('e1', null);
+1 row inserted/updated/deleted
+ij> insert into emp values('e2', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e3', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e4', 'e2');
+1 row inserted/updated/deleted
+ij> insert into emp values('e5', 'e4');
+1 row inserted/updated/deleted
+ij> insert into emp values('e6', 'e5');
+1 row inserted/updated/deleted
+ij> insert into emp values('e7', 'e6');
+1 row inserted/updated/deleted
+ij> insert into emp values('e8', 'e7');
+1 row inserted/updated/deleted
+ij> insert into emp values('e9', 'e8');
+1 row inserted/updated/deleted
+ij> create trigger trig_emp_delete after DELETE on emp
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'ad' from deletedrows;
+0 rows inserted/updated/deleted
+ij> delete from emp where empno = 'e1';
+1 row inserted/updated/deleted
+ij> select * from emp;
+E&|MGR 
+-------
+ij> select * from tempemp;
+EMP&|MGR |OP  
+--------------
+e1  |NULL|ad  
+e2  |e1  |ad  
+e3  |e1  |ad  
+e4  |e2  |ad  
+e5  |e4  |ad  
+e6  |e5  |ad  
+e7  |e6  |ad  
+e8  |e7  |ad  
+e9  |e8  |ad  
+ij> drop table emp;
+0 rows inserted/updated/deleted
+ij> drop table tempemp;
+0 rows inserted/updated/deleted
+ij> -- triggers on a self referencing table
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete cascade);
+0 rows inserted/updated/deleted
+ij> create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+0 rows inserted/updated/deleted
+ij> insert into emp values('e1', null);
+1 row inserted/updated/deleted
+ij> insert into emp values('e2', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e3', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e4', 'e2');
+1 row inserted/updated/deleted
+ij> insert into emp values('e5', 'e4');
+1 row inserted/updated/deleted
+ij> insert into emp values('e6', 'e5');
+1 row inserted/updated/deleted
+ij> insert into emp values('e7', 'e6');
+1 row inserted/updated/deleted
+ij> insert into emp values('e8', 'e7');
+1 row inserted/updated/deleted
+ij> insert into emp values('e9', 'e8');
+1 row inserted/updated/deleted
+ij> create trigger trig_emp_delete AFTER DELETE on emp
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'bd' from deletedrows;
+0 rows inserted/updated/deleted
+ij> delete from emp where empno = 'e1';
+1 row inserted/updated/deleted
+ij> select * from emp;
+E&|MGR 
+-------
+ij> select * from tempemp;
+EMP&|MGR |OP  
+--------------
+e1  |NULL|bd  
+e2  |e1  |bd  
+e3  |e1  |bd  
+e4  |e2  |bd  
+e5  |e4  |bd  
+e6  |e5  |bd  
+e7  |e6  |bd  
+e8  |e7  |bd  
+e9  |e8  |bd  
+ij> drop table emp;
+0 rows inserted/updated/deleted
+ij> drop table tempemp;
+0 rows inserted/updated/deleted
+ij> --After triggers on a cyclic referential actions
+create table t1(a int not null primary key, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null primary key, y int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t2 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t1 values (7, 6);
+1 row inserted/updated/deleted
+ij> insert into t2 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t2 values (7, 6);
+1 row inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b) 
+                             references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y) 
+                              references t1(b) on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table t1temp(l int , m int, op char(2));
+0 rows inserted/updated/deleted
+ij> create trigger trig_cyclic_del after DELETE on t1
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into t1temp  select a, b,  'ad' from deletedrows;
+0 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+1          |2          
+2          |1          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+1          |2          
+2          |1          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> ---following delete should delete all the rows
+delete from t1 where a = 3;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+1          |2          
+2          |1          
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+1          |2          
+2          |1          
+6          |7          
+7          |6          
+ij> select * from t1temp;
+L          |M          |OP  
+----------------------------
+3          |4          |ad  
+4          |3          |ad  
+ij> delete from t1;
+4 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+ij> select * from t2;
+X          |Y          
+-----------------------
+ij> select * from t1temp;
+L          |M          |OP  
+----------------------------
+3          |4          |ad  
+4          |3          |ad  
+1          |2          |ad  
+2          |1          |ad  
+6          |7          |ad  
+7          |6          |ad  
+ij> drop table t1temp;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- triggers on a cyclic referential actions
+create table t1(a int not null primary key, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null primary key, y int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t2 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t1 values (7, 6);
+1 row inserted/updated/deleted
+ij> insert into t2 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t2 values (7, 6);
+1 row inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b) 
+                             references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y) 
+                              references t1(b) on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table t1temp(l int , m int, op char(2));
+0 rows inserted/updated/deleted
+ij> create trigger trig_cyclic_del AFTER DELETE on t1
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into t1temp  select a, b,  'bd' from deletedrows;
+0 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+1          |2          
+2          |1          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+1          |2          
+2          |1          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> ---following delete should delete all the rows
+delete from t1 where a = 3;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+1          |2          
+2          |1          
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+1          |2          
+2          |1          
+6          |7          
+7          |6          
+ij> select * from t1temp;
+L          |M          |OP  
+----------------------------
+3          |4          |bd  
+4          |3          |bd  
+ij> delete from t1;
+4 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+ij> select * from t2;
+X          |Y          
+-----------------------
+ij> select * from t1temp;
+L          |M          |OP  
+----------------------------
+3          |4          |bd  
+4          |3          |bd  
+1          |2          |bd  
+2          |1          |bd  
+6          |7          |bd  
+7          |6          |bd  
+ij> drop table t1temp;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --ROW triggers on a cyclic referential actions
+create table t1(a int not null primary key, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null primary key, y int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t2 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t1 values (7, 6);
+1 row inserted/updated/deleted
+ij> insert into t2 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t2 values (7, 6);
+1 row inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b) 
+                             references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y) 
+                              references t1(b) on delete cascade;
+0 rows inserted/updated/deleted
+ij> create table t1temp(l int , m int, op char(2));
+0 rows inserted/updated/deleted
+ij> create trigger trig_cyclic_del1 after DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+insert into t1temp values(deletedrow.a , deletedrow.b, 'ad');
+0 rows inserted/updated/deleted
+ij> create trigger trig_cyclic_del2 AFTER DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+insert into t1temp values(deletedrow.a , deletedrow.b, 'bd');
+0 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+1          |2          
+2          |1          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+1          |2          
+2          |1          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> ---following delete should delete all the rows
+delete from t1 where a = 1;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+ij> select * from t1temp;
+L          |M          |OP  
+----------------------------
+1          |2          |ad  
+2          |1          |ad  
+1          |2          |bd  
+2          |1          |bd  
+ij> delete from t1;
+4 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+ij> select * from t2;
+X          |Y          
+-----------------------
+ij> select * from t1temp;
+L          |M          |OP  
+----------------------------
+1          |2          |ad  
+2          |1          |ad  
+1          |2          |bd  
+2          |1          |bd  
+3          |4          |ad  
+4          |3          |ad  
+6          |7          |ad  
+7          |6          |ad  
+3          |4          |bd  
+4          |3          |bd  
+6          |7          |bd  
+7          |6          |bd  
+ij> drop table t1temp;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --SET NULL UPDATE  STETEMENT triggers on a self referencing table
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete set null);
+0 rows inserted/updated/deleted
+ij> create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+0 rows inserted/updated/deleted
+ij> insert into emp values('e1', null);
+1 row inserted/updated/deleted
+ij> insert into emp values('e2', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e3', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e4', 'e2');
+1 row inserted/updated/deleted
+ij> insert into emp values('e5', 'e4');
+1 row inserted/updated/deleted
+ij> insert into emp values('e6', 'e5');
+1 row inserted/updated/deleted
+ij> insert into emp values('e7', 'e6');
+1 row inserted/updated/deleted
+ij> insert into emp values('e8', 'e7');
+1 row inserted/updated/deleted
+ij> insert into emp values('e9', 'e8');
+1 row inserted/updated/deleted
+ij> create trigger trig_emp_delete AFTER UPDATE on emp
+REFERENCING OLD_Table AS updatedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'bu' from updatedrows;
+0 rows inserted/updated/deleted
+ij> create trigger trig_emp_delete1 AFTER UPDATE on emp
+REFERENCING NEW_Table AS updatedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'au' from updatedrows;
+0 rows inserted/updated/deleted
+ij> delete from emp where empno = 'e1';
+1 row inserted/updated/deleted
+ij> select * from emp;
+E&|MGR 
+-------
+e2|NULL
+e3|NULL
+e4|e2  
+e5|e4  
+e6|e5  
+e7|e6  
+e8|e7  
+e9|e8  
+ij> select * from tempemp;
+EMP&|MGR |OP  
+--------------
+e2  |e1  |bu  
+e3  |e1  |bu  
+e2  |NULL|au  
+e3  |NULL|au  
+ij> drop table emp;
+0 rows inserted/updated/deleted
+ij> drop table tempemp;
+0 rows inserted/updated/deleted
+ij> --SET NULL UPDATE  ROW triggers on a self referencing table
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete set null);
+0 rows inserted/updated/deleted
+ij> create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+0 rows inserted/updated/deleted
+ij> insert into emp values('e1', null);
+1 row inserted/updated/deleted
+ij> insert into emp values('e2', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e3', 'e1');
+1 row inserted/updated/deleted
+ij> insert into emp values('e4', 'e2');
+1 row inserted/updated/deleted
+ij> insert into emp values('e5', 'e4');
+1 row inserted/updated/deleted
+ij> insert into emp values('e6', 'e5');
+1 row inserted/updated/deleted
+ij> insert into emp values('e7', 'e6');
+1 row inserted/updated/deleted
+ij> insert into emp values('e8', 'e7');
+1 row inserted/updated/deleted
+ij> insert into emp values('e9', 'e8');
+1 row inserted/updated/deleted
+ij> create trigger trig_emp_delete after UPDATE on emp
+REFERENCING OLD AS updatedrow
+for each row mode db2sql
+insert into tempemp values(updatedrow.empno, updatedrow.mgr, 'bu');
+0 rows inserted/updated/deleted
+ij> create trigger trig_emp_delete1 AFTER UPDATE on emp
+REFERENCING NEW AS updatedrow
+for each  row mode db2sql
+insert into tempemp values(updatedrow.empno, updatedrow.mgr, 'au');
+0 rows inserted/updated/deleted
+ij> delete from emp where empno = 'e1';
+1 row inserted/updated/deleted
+ij> select * from emp;
+E&|MGR 
+-------
+e2|NULL
+e3|NULL
+e4|e2  
+e5|e4  
+e6|e5  
+e7|e6  
+e8|e7  
+e9|e8  
+ij> select * from tempemp;
+EMP&|MGR |OP  
+--------------
+e2  |e1  |bu  
+e3  |e1  |bu  
+e2  |NULL|au  
+e3  |NULL|au  
+ij> delete from emp;
+8 rows inserted/updated/deleted
+ij> select * from emp;
+E&|MGR 
+-------
+ij> select * from tempemp;
+EMP&|MGR |OP  
+--------------
+e2  |e1  |bu  
+e3  |e1  |bu  
+e2  |NULL|au  
+e3  |NULL|au  
+e4  |e2  |bu  
+e5  |e4  |bu  
+e6  |e5  |bu  
+e7  |e6  |bu  
+e8  |e7  |bu  
+e9  |e8  |bu  
+e4  |NULL|au  
+e5  |NULL|au  
+e6  |NULL|au  
+e7  |NULL|au  
+e8  |NULL|au  
+e9  |NULL|au  
+ij> drop table emp;
+0 rows inserted/updated/deleted
+ij> drop table tempemp;
+0 rows inserted/updated/deleted
+ij> -- prepared statements check like in cview
+create table t1(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(b int references t1(a) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) ;
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4) ;
+4 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (2)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> select * from t2;
+B          
+-----------
+3          
+4          
+NULL       
+NULL       
+ij> execute sdelete using 'values (3)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (4)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> remove sdelete;
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(b int references t1(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) ;
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1) , (2) , (3) , (4) ;
+4 rows inserted/updated/deleted
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (2)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> select * from t2;
+B          
+-----------
+3          
+4          
+ij> execute sdelete using 'values (3)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (4)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> remove sdelete;
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> autocommit on;
+ij> --make sure prepared statements are recompiled after a DDL changes works
+create table t1(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(b int references t1(a) ON DELETE CASCADE, c int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) ;
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1, 1) , (2, 2) , (3, 3) , (4, 4) ;
+4 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (2)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> select * from t2;
+B          |C          
+-----------------------
+3          |3          
+4          |4          
+ij> create index idx1 on t2(c) ;
+0 rows inserted/updated/deleted
+ij> execute sdelete using 'values (3)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (4)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> insert into t1 values(5);
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (5)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+ij> remove sdelete;
+ij> autocommit on;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> --do some rollbacks that involved prepared statement executtions
+create table t1(a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(b int references t1(a) ON DELETE CASCADE, c int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1) , (2) , (3) , (4) ;
+4 rows inserted/updated/deleted
+ij> insert into t2 values (1, 1) , (2, 2) , (3, 3) , (4, 4) ;
+4 rows inserted/updated/deleted
+ij> commit;
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (2)';
+1 row inserted/updated/deleted
+ij> rollback;
+ij> select * from t2;
+B          |C          
+-----------------------
+1          |1          
+2          |2          
+3          |3          
+4          |4          
+ij> execute sdelete using 'values (3)';
+1 row inserted/updated/deleted
+ij> create index idx1 on t2(c) ;
+0 rows inserted/updated/deleted
+ij> execute sdelete using 'values (4)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+ij> select * from t2;
+B          |C          
+-----------------------
+1          |1          
+2          |2          
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> insert into t1 values(5);
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (5)';
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          
+-----------
+1          
+2          
+ij> select * from t2;
+B          |C          
+-----------------------
+1          |1          
+2          |2          
+ij> remove sdelete;
+ij> autocommit on;
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> ---UNIQUE COLUMN NOT NULL VALUE CHECKS
+--delete cascade on non-nullable unique column
+create table t1 ( a int not null unique) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values(0) ;
+1 row inserted/updated/deleted
+ij> insert into t1 values(1) ;
+1 row inserted/updated/deleted
+ij> insert into t1 values(2) ;
+1 row inserted/updated/deleted
+ij> create table t2(b int references t1(a) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values(null) ;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          
+-----------
+0          
+1          
+2          
+ij> select * from t2 ;
+B          
+-----------
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+ij> delete from t1 where a = 0 ;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          
+-----------
+1          
+2          
+ij> -- null values from t1 are not deleted
+select * from t2 ;
+B          
+-----------
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+NULL       
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --self ref foreign key without null values
+create table t1( a int not null unique , b int references t1(a) 
+ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> insert into t1 values ( 1 , null) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where b is null ;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+ij> drop table t1 ;
+0 rows inserted/updated/deleted
+ij> create table t1( a int not null unique , b int references t1(a) 
+ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into t1 values ( 1 , null) ;
+1 row inserted/updated/deleted
+ij> insert into t1 values ( 0 , 1) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where b is null ;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+ij> drop table t1 ;
+0 rows inserted/updated/deleted
+ij> --mutiple tables
+create table parent( a int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table child1(b int not null unique references parent(a)
+ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> create table child2(c int not null unique references child1(b)
+ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into parent values(0) ;
+1 row inserted/updated/deleted
+ij> insert into parent values(1) ;
+1 row inserted/updated/deleted
+ij> insert into parent values(2) ;
+1 row inserted/updated/deleted
+ij> insert into child1 values(0) ;
+1 row inserted/updated/deleted
+ij> insert into child1 values(1) ;
+1 row inserted/updated/deleted
+ij> insert into child1 values(2) ;
+1 row inserted/updated/deleted
+ij> insert into child2 values(0) ;
+1 row inserted/updated/deleted
+ij> insert into child2 values(1) ;
+1 row inserted/updated/deleted
+ij> insert into child2 values(2) ;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+0          
+1          
+2          
+ij> select * from child1;
+B          
+-----------
+0          
+1          
+2          
+ij> select * from child2 ;
+C          
+-----------
+0          
+1          
+2          
+ij> delete from parent where a = 1 ;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+0          
+2          
+ij> select * from child1;
+B          
+-----------
+0          
+2          
+ij> select * from child2 ;
+C          
+-----------
+0          
+2          
+ij> delete from parent where a = 0 ;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+2          
+ij> select * from child1;
+B          
+-----------
+2          
+ij> --delete all the rows
+delete from parent;
+1 row inserted/updated/deleted
+ij> drop table child2;
+0 rows inserted/updated/deleted
+ij> create table child2(c int references child1(b)
+ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> insert into parent values(0) ;
+1 row inserted/updated/deleted
+ij> insert into parent values(1) ;
+1 row inserted/updated/deleted
+ij> insert into parent values(2) ;
+1 row inserted/updated/deleted
+ij> insert into child1 values(0) ;
+1 row inserted/updated/deleted
+ij> insert into child1 values(1) ;
+1 row inserted/updated/deleted
+ij> insert into child1 values(2) ;
+1 row inserted/updated/deleted
+ij> insert into child2 values(null) ;
+1 row inserted/updated/deleted
+ij> insert into child2 values(1) ;
+1 row inserted/updated/deleted
+ij> insert into child2 values(2) ;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+0          
+1          
+2          
+ij> select * from child1;
+B          
+-----------
+0          
+1          
+2          
+ij> select * from child2 ;
+C          
+-----------
+1          
+2          
+NULL       
+ij> delete from parent where a = 1 ;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+0          
+2          
+ij> select * from child1;
+B          
+-----------
+0          
+2          
+ij> select * from child2;
+C          
+-----------
+2          
+NULL       
+NULL       
+ij> delete from parent where a = 0;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+2          
+ij> select * from child1;
+B          
+-----------
+2          
+ij> select * from child2;
+C          
+-----------
+2          
+NULL       
+NULL       
+ij> delete from child2 where c is null;
+2 rows inserted/updated/deleted
+ij> delete from child2 where c is not null;
+1 row inserted/updated/deleted
+ij> delete from parent where a = 2 ;
+1 row inserted/updated/deleted
+ij> select * from parent ;
+A          
+-----------
+ij> select * from child1;
+B          
+-----------
+ij> select * from child2;
+C          
+-----------
+ij> delete from parent;
+0 rows inserted/updated/deleted
+ij> delete from child1;
+0 rows inserted/updated/deleted
+ij> delete from child2;
+0 rows inserted/updated/deleted
+ij> drop table child2;
+0 rows inserted/updated/deleted
+ij> drop table child1;
+0 rows inserted/updated/deleted
+ij> drop table parent;
+0 rows inserted/updated/deleted
+ij> --foreign key on two non-nullable unique keys
+create table t1(a int not null unique , b int not null unique) ;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c2 unique(a , b ) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x1 int , x2 int , constraint c1 foreign key (x1, x2)
+references t1(a , b ) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (0 , 1) ;
+1 row inserted/updated/deleted
+ij> insert into t1 values (1 , 2) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values (0 , 1) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values (1 , 2) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where a = 0;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+1          |2          
+ij> select * from t2 ;
+X1         |X2         
+-----------------------
+1          |2          
+ij> insert into t1 values (0 , 0) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values (0 , 0) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where a = 0;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+1          |2          
+ij> select * from t2 ;
+X1         |X2         
+-----------------------
+1          |2          
+ij> delete from t1;
+1 row inserted/updated/deleted
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> create table t2( x1 int , x2 int , constraint c1 foreign key (x1, x2)
+references t1(a , b ) ON DELETE SET NULL ) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (0 , 1) ;
+1 row inserted/updated/deleted
+ij> insert into t1 values (1 , 2) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values (0 , 1) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values (1 , 2) ;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+0          |1          
+1          |2          
+ij> select * from t2 ;
+X1         |X2         
+-----------------------
+0          |1          
+1          |2          
+ij> delete from t1 where a = 0;
+1 row inserted/updated/deleted
+ij> select * from t1 ;
+A          |B          
+-----------------------
+1          |2          
+ij> select * from t2 ;
+X1         |X2         
+-----------------------
+1          |2          
+NULL       |NULL       
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --cyclic non-nulls case
+create table t1(a int not null unique, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int not null unique);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (0, 2);
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 0);
+1 row inserted/updated/deleted
+ij> insert into t2 values (0, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values (2, 0);
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t1 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 4);
+1 row inserted/updated/deleted
+ij> insert into t2 values (4, 3);
+1 row inserted/updated/deleted
+ij> insert into t1 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t1 values (7, 6);
+1 row inserted/updated/deleted
+ij> insert into t2 values (6, 7);
+1 row inserted/updated/deleted
+ij> insert into t2 values (7, 6);
+1 row inserted/updated/deleted
+ij> insert into t1 values (9, 10);
+1 row inserted/updated/deleted
+ij> insert into t1 values (10, 9);
+1 row inserted/updated/deleted
+ij> insert into t2 values (9, 10);
+1 row inserted/updated/deleted
+ij> insert into t2 values (10, 9);
+1 row inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b)
+			      references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete cascade;
+0 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+0          |2          
+2          |0          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+9          |10         
+10         |9          
+ij> select * from t2;
+X          |Y          
+-----------------------
+0          |2          
+2          |0          
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+9          |10         
+10         |9          
+ij> delete from t1 where a = 0 ;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+9          |10         
+10         |9          
+ij> select * from t2;
+X          |Y          
+-----------------------
+3          |4          
+4          |3          
+6          |7          
+7          |6          
+9          |10         
+10         |9          
+ij> delete from t2 where x=3 ;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+6          |7          
+7          |6          
+9          |10         
+10         |9          
+ij> select * from t2;
+X          |Y          
+-----------------------
+6          |7          
+7          |6          
+9          |10         
+10         |9          
+ij> delete from t1 where b = 9;
+1 row inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+6          |7          
+7          |6          
+ij> select * from t2;
+X          |Y          
+-----------------------
+6          |7          
+7          |6          
+ij> delete from t2;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+A          |B          
+-----------------------
+ij> select * from t2;
+X          |Y          
+-----------------------
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --END OF NULL CHECK
+--BEGIN NON NULL ERROR CHECK FOR ON DELETE SET NULL
+--do not allow ON DELETE SET NULL on non nullable foreign key columns
+create table n1 ( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table n2 ( b int not null primary key references n1(a) ON DELETE SET NULL);
+ERROR 42834: SET NULL cannot be specified because FOREIGN KEY 'xxxxGENERATED-IDxxxx'  cannot contain null values.  
+ij> drop table n1;
+0 rows inserted/updated/deleted
+ij> create table n1 ( a int not null unique);
+0 rows inserted/updated/deleted
+ij> create table n2 ( b int not null references n1(a) ON DELETE SET NULL);
+ERROR 42834: SET NULL cannot be specified because FOREIGN KEY 'xxxxGENERATED-IDxxxx'  cannot contain null values.  
+ij> drop table n1;
+0 rows inserted/updated/deleted
+ij> --multi column foreign key reference
+create table n1(a int not null , b int not null);
+0 rows inserted/updated/deleted
+ij> create table n2(x int not null, y int not null) ;
+0 rows inserted/updated/deleted
+ij> alter table n1 add constraint c1 unique(a, b) ;
+0 rows inserted/updated/deleted
+ij> alter table n2 add constraint c2 foreign key(x, y) 
+references n1(a,b) ON  DELETE SET NULL ;
+ERROR 42834: SET NULL cannot be specified because FOREIGN KEY 'C2'  cannot contain null values.  
+ij> drop table n1;
+0 rows inserted/updated/deleted
+ij> drop table n2;
+0 rows inserted/updated/deleted
+ij> --just make sure we are allowing SET NULL on nullable columns
+create table n1(a int not null , b int not null);
+0 rows inserted/updated/deleted
+ij> create table n2(x int, y int) ;
+0 rows inserted/updated/deleted
+ij> alter table n1 add constraint c1 unique(a, b) ;
+0 rows inserted/updated/deleted
+ij> alter table n2 add constraint c2 foreign key(x, y) 
+references n1(a,b) ON  DELETE SET NULL ;
+0 rows inserted/updated/deleted
+ij> drop table n2;
+0 rows inserted/updated/deleted
+ij> drop table n1;
+0 rows inserted/updated/deleted
+ij> --make sure  ON DELETE CASCADE works fine
+create table n1(a int not null , b int not null);
+0 rows inserted/updated/deleted
+ij> create table n2(x int not null, y int not null) ;
+0 rows inserted/updated/deleted
+ij> alter table n1 add constraint c1 unique(a, b) ;
+0 rows inserted/updated/deleted
+ij> alter table n2 add constraint c2 foreign key(x, y) 
+references n1(a,b) ON  DELETE CASCADE;
+0 rows inserted/updated/deleted
+ij> drop table n2;
+0 rows inserted/updated/deleted
+ij> drop table n1;
+0 rows inserted/updated/deleted
+ij> --only some coulmns of foreign key are nullable
+create table n1(a int not null , b int not null, c int not null , 
+               d int not null , e int not null);
+0 rows inserted/updated/deleted
+ij> create table n2(c1 int not null, c2 int not null, c3 int , c4 int,
+                c5 int not null, c6 int ) ;
+0 rows inserted/updated/deleted
+ij> alter table n1 add constraint c1 unique(b, c, d, e) ;
+0 rows inserted/updated/deleted
+ij> alter table n2 add constraint c2 foreign key(c2, c3, c4, c5)
+references n1(b, c, d, e) ON  DELETE SET NULL ;
+0 rows inserted/updated/deleted
+ij> insert into n1 values(1 , 2, 3, 4, 5);
+1 row inserted/updated/deleted
+ij> insert into n1 values(21, 22, 23, 24, 25);
+1 row inserted/updated/deleted
+ij> insert into n1 values(6, 7 , 8, 9, 10);
+1 row inserted/updated/deleted
+ij> insert into n1 values(100 , 101, 102, 103, 104);
+1 row inserted/updated/deleted
+ij> insert into n2 values(111, 2, 3, 4, 5, 0);
+1 row inserted/updated/deleted
+ij> insert into n2 values(212, 22, 23, 24, 25, 0);
+1 row inserted/updated/deleted
+ij> insert into n2 values(6, 7 , 8, 9, 10, 0);
+1 row inserted/updated/deleted
+ij> select * from n1;
+A          |B          |C          |D          |E          
+-----------------------------------------------------------
+1          |2          |3          |4          |5          
+21         |22         |23         |24         |25         
+6          |7          |8          |9          |10         
+100        |101        |102        |103        |104        
+ij> select * from n2;
+C1         |C2         |C3         |C4         |C5         |C6         
+-----------------------------------------------------------------------
+111        |2          |3          |4          |5          |0          
+212        |22         |23         |24         |25         |0          
+6          |7          |8          |9          |10         |0          
+ij> delete from n1 where e =10;
+1 row inserted/updated/deleted
+ij> select * from n1 ;
+A          |B          |C          |D          |E          
+-----------------------------------------------------------
+1          |2          |3          |4          |5          
+21         |22         |23         |24         |25         
+100        |101        |102        |103        |104        
+ij> select * from n2;
+C1         |C2         |C3         |C4         |C5         |C6         
+-----------------------------------------------------------------------
+111        |2          |3          |4          |5          |0          
+212        |22         |23         |24         |25         |0          
+6          |7          |NULL       |NULL       |10         |0          
+ij> delete from n1 where a =1;
+1 row inserted/updated/deleted
+ij> select * from n1;
+A          |B          |C          |D          |E          
+-----------------------------------------------------------
+21         |22         |23         |24         |25         
+100        |101        |102        |103        |104        
+ij> select * from n2;
+C1         |C2         |C3         |C4         |C5         |C6         
+-----------------------------------------------------------------------
+111        |2          |NULL       |NULL       |5          |0          
+212        |22         |23         |24         |25         |0          
+6          |7          |NULL       |NULL       |10         |0          
+ij> delete from n1;
+2 rows inserted/updated/deleted
+ij> select * from n1;
+A          |B          |C          |D          |E          
+-----------------------------------------------------------
+ij> select * from n2;
+C1         |C2         |C3         |C4         |C5         |C6         
+-----------------------------------------------------------------------
+111        |2          |NULL       |NULL       |5          |0          
+212        |22         |NULL       |NULL       |25         |0          
+6          |7          |NULL       |NULL       |10         |0          
+ij> drop table n2;
+0 rows inserted/updated/deleted
+ij> drop table n1;
+0 rows inserted/updated/deleted
+ij> --END NON NULL ERROR CHECK
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int not null unique references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t2(x) ON DELETE CASCADE) ;
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete after DELETE on t1
+referencing old as deletedrow
+for each  row mode db2sql
+delete from t2;
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete1 after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+delete from t3;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) , (10,11,12), 
+       (13,14,15), (16,17,18), (19, 20, 21), (22, 23, 24), (25,26,27);
+9 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+9 rows inserted/updated/deleted
+ij> insert into t3 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+9 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (4)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (7)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (10)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (13)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (16)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (19)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (22)';
+1 row inserted/updated/deleted
+ij> execute sdelete using 'values (25)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> autocommit on;
+ij> select * from t1 ;
+A          |B          |C          
+-----------------------------------
+ij> select * from t2 ;
+X          
+-----------
+ij> select * from t3;
+Y          
+-----------
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --checks for bug fix for 4743
+create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int not null unique references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t2(x) ON DELETE NO ACTION) ;
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete after DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+delete from t2;
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete1 after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+delete from t3;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) , (10,11,12), 
+       (13,14,15), (16,17,18), (19, 20, 21), (22, 23, 24), (25,26,27);
+9 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+9 rows inserted/updated/deleted
+ij> insert into t3 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+9 rows inserted/updated/deleted
+ij> -- should fail
+-- parent row can not be deleted because of a dependent relationship from another table
+autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3).  The statement has been rolled back.
+ij> execute sdelete using 'values (4)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (6).  The statement has been rolled back.
+ij> execute sdelete using 'values (7)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (9).  The statement has been rolled back.
+ij> execute sdelete using 'values (10)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (12).  The statement has been rolled back.
+ij> execute sdelete using 'values (13)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (15).  The statement has been rolled back.
+ij> execute sdelete using 'values (16)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (18).  The statement has been rolled back.
+ij> execute sdelete using 'values (19)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (21).  The statement has been rolled back.
+ij> execute sdelete using 'values (22)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (24).  The statement has been rolled back.
+ij> execute sdelete using 'values (25)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (27).  The statement has been rolled back.
+ij> commit;
+ij> autocommit on;
+ij> select * from t1 ;
+A          |B          |C          
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+7          |8          |9          
+10         |11         |12         
+13         |14         |15         
+16         |17         |18         
+19         |20         |21         
+22         |23         |24         
+25         |26         |27         
+ij> select * from t2 ;
+X          
+-----------
+3          
+6          
+9          
+12         
+15         
+18         
+21         
+24         
+27         
+ij> select * from t3;
+Y          
+-----------
+3          
+6          
+9          
+12         
+15         
+18         
+21         
+24         
+27         
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1( a int not null primary key , b int , c int not null unique) ;
+0 rows inserted/updated/deleted
+ij> create table t2( x int not null unique references t1(c) ON DELETE CASCADE ) ;
+0 rows inserted/updated/deleted
+ij> create table t3( y int references t2(x) ON DELETE NO ACTION) ;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) , (10,11,12), 
+       (13,14,15), (16,17,18), (19, 20, 21), (22, 23, 24), (25,26,27);
+9 rows inserted/updated/deleted
+ij> insert into t2 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+9 rows inserted/updated/deleted
+ij> insert into t3 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+9 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare sdelete as 'delete from t1 where a = ?' ;
+ij> execute sdelete using 'values (1)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3).  The statement has been rolled back.
+ij> execute sdelete using 'values (4)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (6).  The statement has been rolled back.
+ij> execute sdelete using 'values (7)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (9).  The statement has been rolled back.
+ij> execute sdelete using 'values (10)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (12).  The statement has been rolled back.
+ij> execute sdelete using 'values (13)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (15).  The statement has been rolled back.
+ij> execute sdelete using 'values (16)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (18).  The statement has been rolled back.
+ij> execute sdelete using 'values (19)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (21).  The statement has been rolled back.
+ij> execute sdelete using 'values (22)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (24).  The statement has been rolled back.
+ij> execute sdelete using 'values (25)';
+ERROR 23503: DELETE on table 'T2' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (27).  The statement has been rolled back.
+ij> commit;
+ij> autocommit on;
+ij> select * from t1 ;
+A          |B          |C          
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+7          |8          |9          
+10         |11         |12         
+13         |14         |15         
+16         |17         |18         
+19         |20         |21         
+22         |23         |24         
+25         |26         |27         
+ij> select * from t2 ;
+X          
+-----------
+3          
+6          
+9          
+12         
+15         
+18         
+21         
+24         
+27         
+ij> select * from t3;
+Y          
+-----------
+3          
+6          
+9          
+12         
+15         
+18         
+21         
+24         
+27         
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --bug5186; mutiple cascade paths , execute a delete where
+--one path does not qualify any rows.
+create table t1 (c1 int not null primary key ) ;
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int not null primary key  references t1(c1) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> create table t3 (c1 int references t2(c1) ON DELETE CASCADE,
+                 c2 int references t1(c1) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(2);
+1 row inserted/updated/deleted
+ij> insert into t3 values(2, 1) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where c1 = 1 ;
+1 row inserted/updated/deleted
+ij> --now make sure that we havw rows in both the paths and get meged properly
+insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(3);
+1 row inserted/updated/deleted
+ij> insert into t2 values(1);
+1 row inserted/updated/deleted
+ij> insert into t3 values(2, 1) ;
+1 row inserted/updated/deleted
+ij> insert into t3 values(1, 2) ;
+1 row inserted/updated/deleted
+ij> insert into t3 values(2, 3) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where c1 = 1 ;
+1 row inserted/updated/deleted
+ij> select * from t3 ;
+C1         |C2         
+-----------------------
+2          |3          
+ij> delete from t1 ;
+2 rows inserted/updated/deleted
+ij> ---now create a statement trigger and see what happens on a empty delete.
+create table t4(c1 char (20));
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete after DELETE on t3
+for each statement mode db2sql
+insert into t4 values('ad');
+0 rows inserted/updated/deleted
+ij> delete from t1 ;
+0 rows inserted/updated/deleted
+ij> select * from t4 ;
+C1                  
+--------------------
+ij> drop trigger trig_delete;
+0 rows inserted/updated/deleted
+ij> delete from t4 ;
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete after DELETE on t3
+for each statement mode db2sql
+insert into t4 values('bd');
+0 rows inserted/updated/deleted
+ij> delete from t1 ;
+0 rows inserted/updated/deleted
+ij> delete from t1 ;
+0 rows inserted/updated/deleted
+ij> select * from t4 ;
+C1                  
+--------------------
+ij> drop trigger trig_delete;
+0 rows inserted/updated/deleted
+ij> delete from t4 ;
+0 rows inserted/updated/deleted
+ij> --row level trigger case
+drop table t4;
+0 rows inserted/updated/deleted
+ij> create table t4(z int not null primary key , op char(2));
+0 rows inserted/updated/deleted
+ij> create trigger trig_delete after DELETE on t3
+referencing old as deletedrow
+for each row mode db2sql
+insert into t4 values(deletedrow.c1 , 'bd');
+0 rows inserted/updated/deleted
+ij> delete from t1 ;
+0 rows inserted/updated/deleted
+ij> delete from t1 ;
+0 rows inserted/updated/deleted
+ij> select * from t4 ;
+Z          |OP  
+----------------
+ij> insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(2);
+1 row inserted/updated/deleted
+ij> insert into t3 values(2, 1) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where c1 = 1 ;
+1 row inserted/updated/deleted
+ij> select * from t4 ;
+Z          |OP  
+----------------
+2          |bd  
+ij> delete from t4;
+1 row inserted/updated/deleted
+ij> insert into t1 values(1);
+1 row inserted/updated/deleted
+ij> insert into t1 values(3);
+1 row inserted/updated/deleted
+ij> insert into t2 values(1);
+1 row inserted/updated/deleted
+ij> insert into t3 values(2, 1) ;
+1 row inserted/updated/deleted
+ij> insert into t3 values(1, 2) ;
+1 row inserted/updated/deleted
+ij> insert into t3 values(2, 3) ;
+1 row inserted/updated/deleted
+ij> delete from t1 where c1 = 1 ;
+1 row inserted/updated/deleted
+ij> select * from t4 ;
+Z          |OP  
+----------------
+1          |bd  
+2          |bd  
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> ---multiple foreign keys pointing to the same table and has  dependens
+-- first foreign key path has zero rows qualified(bug 5197 from webshphere)
+CREATE SCHEMA DB2ADMIN;
+0 rows inserted/updated/deleted
+ij> SET SCHEMA DB2ADMIN;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE DB2ADMIN.PAGE_INST
+   (
+      OID BIGINT NOT NULL ,
+      IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL ,
+      IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL ,
+      IS_SHARED CHAR(1) DEFAULT 'N' NOT NULL ,
+      ALL_PORT_ALLOWED CHAR(1) DEFAULT 'Y' NOT NULL ,
+      PARENT_OID BIGINT,
+      CONT_PARENT_OID BIGINT,
+      SKIN_DESC_OID BIGINT,
+      THEME_DESC_OID BIGINT,
+      CREATE_TYPE CHAR(1) DEFAULT 'E' NOT NULL ,
+      TYPE INT NOT NULL ,
+      CREATED BIGINT NOT NULL ,
+      MODIFIED BIGINT NOT NULL
+   );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE DB2ADMIN.PORT_WIRE
+   (
+      OID BIGINT NOT NULL ,
+      CREATED BIGINT NOT NULL ,
+      MODIFIED BIGINT NOT NULL ,
+      USER_DESC_OID BIGINT NOT NULL ,
+      ORDINAL INT NOT NULL ,
+      SRC_COMPOS_OID BIGINT NOT NULL ,
+      SRC_PORT_INST_OID BIGINT NOT NULL ,
+      SRC_PORT_PARM_OID BIGINT,
+      SRC_PORT_PROP_OID BIGINT,
+      TGT_COMPOS_OID BIGINT NOT NULL ,
+      TGT_PORT_INST_OID BIGINT NOT NULL ,
+      TGT_PORT_PARM_OID BIGINT,
+      TGT_PORT_PROP_OID BIGINT,
+      VERSION VARCHAR(255),
+      EXTRA_DATA VARCHAR(1024)
+   );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE DB2ADMIN.PORT_WIRE_LOD
+   (
+      PORT_WIRE_OID BIGINT NOT NULL ,
+      LOCALE VARCHAR(64) NOT NULL ,
+      TITLE VARCHAR(255),
+      DESCRIPTION VARCHAR(1024)
+   );
+0 rows inserted/updated/deleted
+ij> ALTER TABLE DB2ADMIN.PAGE_INST
+   ADD CONSTRAINT PK280 Primary Key (
+      OID);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE DB2ADMIN.PORT_WIRE
+   ADD CONSTRAINT PK930 Primary Key (
+      OID);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE DB2ADMIN.PORT_WIRE
+   ADD CONSTRAINT FK930B Foreign Key (
+      SRC_COMPOS_OID)
+   REFERENCES PAGE_INST (
+      OID)
+      ON DELETE CASCADE
+      ON UPDATE NO ACTION;
+0 rows inserted/updated/deleted
+ij> ALTER TABLE DB2ADMIN.PORT_WIRE
+   ADD CONSTRAINT FK930F Foreign Key (
+      TGT_COMPOS_OID)
+   REFERENCES PAGE_INST (
+      OID)
+      ON DELETE CASCADE
+      ON UPDATE NO ACTION;
+0 rows inserted/updated/deleted
+ij> ALTER TABLE DB2ADMIN.PORT_WIRE_LOD
+   ADD CONSTRAINT FK940 Foreign Key (
+      PORT_WIRE_OID)
+   REFERENCES PORT_WIRE (
+      OID)
+      ON DELETE CASCADE
+      ON UPDATE NO ACTION;
+0 rows inserted/updated/deleted
+ij> INSERT INTO DB2ADMIN.PAGE_INST (OID, CREATED, MODIFIED, TYPE)
+    VALUES (1301, 0, 0, 5555);
+1 row inserted/updated/deleted
+ij> INSERT INTO DB2ADMIN.PAGE_INST (OID, CREATED, MODIFIED, TYPE)
+    VALUES (1302, 0, 0, 5555);
+1 row inserted/updated/deleted
+ij> INSERT INTO DB2ADMIN.PORT_WIRE (OID, CREATED, MODIFIED, 
+    USER_DESC_OID, ORDINAL, SRC_COMPOS_OID, SRC_PORT_INST_OID, 
+    TGT_COMPOS_OID, TGT_PORT_INST_OID)
+    VALUES (2001, 0, 0, 1401, 1, 1301, 1202, 1302, 1203);
+1 row inserted/updated/deleted
+ij> INSERT INTO DB2ADMIN.PORT_WIRE_LOD (PORT_WIRE_OID, 
+                        LOCALE, TITLE, DESCRIPTION)
+    VALUES (2001, 'en', 'TestPortletWire', 'blahblah');
+1 row inserted/updated/deleted
+ij> DELETE FROM DB2ADMIN.PAGE_INST WHERE OID = 1302;
+1 row inserted/updated/deleted
+ij> select * from DB2ADMIN.PAGE_INST;
+OID                 |&|&|&|&|PARENT_OID          |CONT_PARENT_OID     |SKIN_DESC_OID       |THEME_DESC_OID      |&|TYPE       |CREATED             |MODIFIED            
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1301                |Y|N|N|Y|NULL                |NULL                |NULL                |NULL                |E|5555       |0                   |0                   
+ij> select * from DB2ADMIN.PORT_WIRE;
+OID                 |CREATED             |MODIFIED            |USER_DESC_OID       |ORDINAL    |SRC_COMPOS_OID      |SRC_PORT_INST_OID   |SRC_PORT_PARM_OID   |SRC_PORT_PROP_OID   |TGT_COMPOS_OID      |TGT_PORT_INST_OID   |TGT_PORT_PARM_OID   |TGT_PORT_PROP_OID   |VERSION                                                                                                                         |EXTRA_DATA                                                                                                                      
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from DB2ADMIN.PORT_WIRE_LOD;
+PORT_WIRE_OID       |LOCALE                                                          |TITLE                                                                                                                           |DESCRIPTION                                                                                                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> INSERT INTO DB2ADMIN.PAGE_INST (OID, CREATED, MODIFIED, TYPE)
+    VALUES (1302, 0, 0, 5555);
+1 row inserted/updated/deleted
+ij> INSERT INTO DB2ADMIN.PORT_WIRE (OID, CREATED, MODIFIED, 
+    USER_DESC_OID, ORDINAL, SRC_COMPOS_OID, SRC_PORT_INST_OID, 
+    TGT_COMPOS_OID, TGT_PORT_INST_OID)
+    VALUES (2001, 0, 0, 1401, 1, 1301, 1202, 1302, 1203);
+1 row inserted/updated/deleted
+ij> INSERT INTO DB2ADMIN.PORT_WIRE_LOD (PORT_WIRE_OID, 
+                        LOCALE, TITLE, DESCRIPTION)
+    VALUES (2001, 'en', 'TestPortletWire', 'blahblah');
+1 row inserted/updated/deleted
+ij> DELETE FROM DB2ADMIN.PAGE_INST WHERE OID = 1301;
+1 row inserted/updated/deleted
+ij> select * from DB2ADMIN.PAGE_INST;
+OID                 |&|&|&|&|PARENT_OID          |CONT_PARENT_OID     |SKIN_DESC_OID       |THEME_DESC_OID      |&|TYPE       |CREATED             |MODIFIED            
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1302                |Y|N|N|Y|NULL                |NULL                |NULL                |NULL                |E|5555       |0                   |0                   
+ij> select * from DB2ADMIN.PORT_WIRE;
+OID                 |CREATED             |MODIFIED            |USER_DESC_OID       |ORDINAL    |SRC_COMPOS_OID      |SRC_PORT_INST_OID   |SRC_PORT_PARM_OID   |SRC_PORT_PROP_OID   |TGT_COMPOS_OID      |TGT_PORT_INST_OID   |TGT_PORT_PARM_OID   |TGT_PORT_PROP_OID   |VERSION                                                                                                                         |EXTRA_DATA                                                                                                                      
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> select * from DB2ADMIN.PORT_WIRE_LOD;
+PORT_WIRE_OID       |LOCALE                                                          |TITLE                                                                                                                           |DESCRIPTION                                                                                                                     
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> drop table DB2ADMIN.PORT_WIRE_LOD;
+0 rows inserted/updated/deleted
+ij> drop table DB2ADMIN.PORT_WIRE;
+0 rows inserted/updated/deleted
+ij> drop table DB2ADMIN.PAGE_INST;
+0 rows inserted/updated/deleted
+ij> drop schema DB2ADMIN restrict;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions1.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8811 @@
+ij> -- #########################################################################
+--- some Test cases from IBM DB2. Reusing them to test Cloudscape
+-- # MODIFIED BY      :     WHO       WHEN             WHY
+-- #                  : ----------- ------- -------------------------------
+-- #                  : P. Selinger 950128  new testcase
+-- #                  : M. Snowbell 970716  beef up for better MPP coverage  
+-- #                  :                     - add first column for partition
+-- #                  :                     - add rows
+-- #                  : Suresh T    020616  - Modified for Cloudscape
+-- #                  : Mark C      040309  - Modified for DB2 Cloudscape
+-- #########################################################################
+-- # TEST CASE        : cself301.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table also appears in a
+-- #                  : subquery that qualifies which rows are changed
+-- #                  : and the deleted table has a self-ref'g RI const.
+-- *************************************************************************
+create schema db2test;
+0 rows inserted/updated/deleted
+ij> set schema db2test;
+0 rows inserted/updated/deleted
+ij> -- "START OF TESTCASE: cself301.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete
+  cascade, dno char(3) references db2test.dept on delete
+  set null);
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.origemp on delete
+  cascade, dno char(3) references db2test.origdept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- "END OF TESTUNIT: 01";
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN') order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> delete from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN');
+2 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> -- "END OF TESTUNIT: 02";
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN')) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> -- "END OF TESTUNIT: 03";
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK')) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK'));
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 04";
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno))) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 05";
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vemp (vc0, vname, vmgrname, vdno) as
+  select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+0 rows inserted/updated/deleted
+ij> select * from db2test.vemp order by 2, 3, 4;
+VC0        |VNAME     |VMGRNAME  |VDNO
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.vemp;
+ERROR 42Y24: View 'DB2TEST.VEMP' is not updatable. (Views are currently not updateable.)
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 06";
+-- "cleanup";
+drop view db2test.vemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> --
+rollback;
+ij> -- #########################################################################
+-- # TESTCASE NAME    : cself302.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by cascade on delete.
+-- #                  : shape of the RI tree is a 1 level star fanout.
+-- #########################################################################
+-- "START OF TESTCASE: cself302.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> create table db2test.secondemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete cascade,
+  dno char(3)  references db2test.origdept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 01";
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN') order by 2,3;
+C0         |DNO|DNAME     
+--------------------------
+1          |K55|DB        
+ij> delete from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN');
+1 row inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> -- "END OF TESTUNIT: 02";
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+2 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in (select dno from
+   db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55')) order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+1          |K55|DB        
+ij> delete from db2test.dept where dno in (select dno
+   from db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55'));
+1 row inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> -- "END OF TESTUNIT: 03";
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : child table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+2 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK')) order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK'));
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+ij> -- "END OF TESTUNIT: 04";
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : above -- 7 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept dtop where exists
+  (select * from db2test.secondemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = dtop.dno and dno in
+         (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+         (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+         (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+         (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+         (select dno from db2test.emp E6 where E5.dno = E6.dno)
+      )))))) order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> -- begin RJC950405 (commented out and added ; to the following line as I think we're fixed?)
+-- -- testcase commented out pending defect fix;
+-- end RJC950405
+ delete from db2test.dept where exists
+  (select * from db2test.secondemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = db2test.dept.dno and dno in
+         (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+         (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+         (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+         (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+         (select dno from db2test.emp E6 where E5.dno = E6.dno)
+      ))))));
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+ij> -- "END OF TESTUNIT: 05";
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete cascade on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> -- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where Dtop.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno))
+    order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno));
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 06";
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete cascade on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2,3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept  where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 07";
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete cascade on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 08";
+-- *************************************************************************
+-- TESTUNIT         : 09
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 09";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52') order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> -- "END OF TESTUNIT: 09";
+-- *************************************************************************
+-- TESTUNIT         : 10
+-- DESCRIPTION      : delete on iudt where SQ on
+--                  : view with join on 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 10";
+-- reset to original rows
+delete from db2test.emp;
+5 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+5 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+1 row inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> -- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 7th child table like emp
+create table db2test.emp7 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp7 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 8th child table like emp
+create table db2test.emp8 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp8 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 9th child table like emp
+create table db2test.emp9 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp9 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 10th child table like emp
+create table db2test.emp10 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp10 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 11th child table like emp
+create table db2test.emp11 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp11 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 12th child table like emp
+create table db2test.emp12 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp12 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 13th child table like emp
+create table db2test.emp13 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp13 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 14th child table like emp
+create table db2test.emp14 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp14 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 15th child table like emp
+create table db2test.emp15 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp15 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vempjoin12 (vname1, vname2, vname3, vname4, vname5,
+   vname6, vname7, vname8, vname9, vname10, vname11, vname12,
+   vmgrname, vdno) as
+  select e.name, e2.name, e3.name, e4.name, e5.name, e6.name, e7.name,
+   e8.name, e9.name, e10.name, e11.name, e12.name,
+   e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2, db2test.emp3 e3, db2test.emp4 e4,
+  db2test.emp5 e5, db2test.emp6 e6, db2test.emp7 e7, db2test.emp8 e8,
+  db2test.emp9 e9, db2test.emp10 e10, db2test.emp11 e11,
+  db2test.emp12 e12
+  where e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e3.dno
+  and e.dno = e4.dno
+  and e.dno = e5.dno
+  and e.dno = e6.dno
+  and e.dno = e7.dno
+  and e.dno = e8.dno
+  and e.dno = e9.dno
+  and e.dno = e10.dno
+  and e.dno = e11.dno
+  and e.dno = e12.dno;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- FOLLOWING TWO QUERIES HANG IN CLOUDSCAPE NOW ..
+-- UNCOMMENT once they pass.
+-- select * from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52') order by 2, 3;
+--delete from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp6 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp7 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp8 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp9 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp10 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp11 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp12 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp13 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp14 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp15 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 10";
+-- *************************************************************************
+-- TESTUNIT         : 11
+-- DESCRIPTION      : delete with many SQ levels correl'd on child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 11";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp6;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp7;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp8;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp9;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp10;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp11;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp12;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp13;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp14;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp15;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp7 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp8 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp9 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp10 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp11 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp12 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp13 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp14 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp15 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept d where
+  dno in (select dno from db2test.emp e where
+ e.dno = d.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))))
+ order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept  where
+  dno in (select dno from db2test.emp e where
+ e.dno = db2test.dept.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))));
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp6 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp7 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp8 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp9 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp10 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp11 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp12 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp13 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp14 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp15 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> -- "END OF TESTUNIT: 11";
+-- *************************************************************************
+-- TESTUNIT         : 12
+-- DESCRIPTION      : delete on view with union of 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 12";
+-- reset to original rows
+delete from db2test.dept;
+1 row inserted/updated/deleted
+ij> delete from db2test.secondemp;
+1 row inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp6;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp7;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp8;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp9;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp10;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp11;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp12;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp13;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp14;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp15;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp7 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp8 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp9 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp10 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp11 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp12 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp13 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp14 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp15 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vempunion15 (vname,
+   vmgrname, vdno) as
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp2 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp3 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp4 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp5 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp6 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp7 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp8 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp9 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp10 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp11 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp12 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp13 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp14 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp15 e);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52') order by 1, 2;
+C0         |DNO|DNAME     
+--------------------------
+1          |K55|DB        
+2          |K52|OFC       
+ij> delete from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp6 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp7 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp8 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp9 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp10 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp11 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp12 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp13 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp14 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp15 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> -- "END OF TESTUNIT: 12";
+-- "cleanup";
+drop view VEMPUNION15;
+0 rows inserted/updated/deleted
+ij> drop view VEMPJOIN12;
+0 rows inserted/updated/deleted
+ij> drop view VEMPJOIN;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp15;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp14;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp13;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp12;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp11;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp10;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp9;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp8;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp7;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp6;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp5;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp4;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp3;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp2;
+0 rows inserted/updated/deleted
+ij> drop table db2test.secondemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "cself302.sql ENDED";
+-- #########################################################################
+-- # TESTCASE NAME    : cself303.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by cascade on delete.
+-- #                  : shape of the RI tree is a 6 level chain.
+-- #########################################################################
+-- "START OF TESTCASE: cself303.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- "END OF TESTUNIT: 01";
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.mgrname = e2.mgrname)) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp  where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.mgrname = e2.mgrname));
+10 rows inserted/updated/deleted
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> -- "END OF TESTUNIT: 02";
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete where SQ on child table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN')) order by 2,3,4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> -- "END OF TESTUNIT: 03";
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))))
+    order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = db2test.emp.mgrname and 
+                  e1.mgrname = 'JOHN')))));
+0 rows inserted/updated/deleted
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 04";
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> --FOLLOWING TWO QUERIES are giving syntax errors currently
+--select * from db2test.emp e
+--  where dno in (select dno from db2test.emp5 e5
+--   where e5.dno in (select dno from db2test.emp4 e4 where
+--   e5.name = e4.mgrname group by dno having dno in
+--     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+--       e3.dno in (select dno from db2test.emp2 e2
+--                  where e3.name = e2.mgrname group by dno having
+--                  e2.dno in (select dno from db2test.emp e1
+--                  where e1.mgrname = e.mgrname and
+--                  e1.mgrname = 'JOHN'))))) order by 2, 3, 4;
+-- delete from db2test.emp 
+--  where dno in (select dno from db2test.emp5 e5
+--   where e5.dno in (select dno from db2test.emp4 e4 where
+--   e5.name = e4.mgrname group by dno having dno in
+--     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+--       e3.dno in (select dno from db2test.emp2 e2
+--                  where e3.name = e2.mgrname group by dno having
+--                  e2.dno in (select dno from db2test.emp  e1
+--                  where e1.mgrname = e.mgrname and
+--                  e1.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 05";
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to iudt
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.mgrname = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where db2test.emp.mgrname = 'JOHN'))))) order by 2,3,4;
+ERROR 42X04: Column 'DB2TEST.EMP.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'DB2TEST.EMP.NAME' is not a column in the target table.
+ij> delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where db2test.emp.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.mgrname = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN')))));
+ERROR 42X04: Column 'DB2TEST.EMP.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'DB2TEST.EMP.NAME' is not a column in the target table.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 06";
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : SQL commands should get error -119
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2, 3, 4;
+ERROR 42X04: Column 'E.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'E.NAME' is not a column in the target table.
+ij> delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where db2test.emp.mgrname = 'JOHN')))));
+ERROR 42X04: Column 'DB2TEST.EMP.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'DB2TEST.EMP.NAME' is not a column in the target table.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 07";
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : select should get -119, delete should get ???
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2, 3, 4;
+ERROR 42X04: Column 'E.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'E.NAME' is not a column in the target table.
+ij> -- select should get -119;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                  where db2test.emp.mgrname = 'JOHN')))));
+ERROR 42X04: Column 'DB2TEST.EMP.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'DB2TEST.EMP.NAME' is not a column in the target table.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 08";
+-- *************************************************************************
+-- TESTUNIT         : 09
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 09";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2, 3, 4;
+ERROR 42X04: Column 'E.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'E.NAME' is not a column in the target table.
+ij> delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN')))));
+ERROR 42X04: Column 'DB2TEST.EMP.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'DB2TEST.EMP.NAME' is not a column in the target table.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 09";
+-- "cleanup";
+drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp6;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp5;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp4;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp3;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp2;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- "cself303.clp ENDED";
+-- #########################################################################
+-- # TESTCASE NAME    : cself304.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # COMPONENT(S)     : SQN and SQR
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by cascade on delete.
+-- #                  : shape of the RI tree is a 3-way cycle to parent
+-- #########################################################################
+-- "START OF TESTCASE: cself304.sql";
+autocommit off ;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB', 'JOHN');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC', 'ROBIN');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS', 'ASHOK');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete cascade,
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 01";
+-- ************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+6          |HAMID     |JOHN      |K55 
+7          |TRUONG    |HAMID     |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+10         |BOBBIE    |HAMID     |K55 
+16         |GUY       |JOHN      |K55 
+17         |DON       |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+ij> delete from db2test.emp where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 02";
+-- ************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : same as 02, but with correlation to top table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where d.dmgrname = 'john' and e2.name = d.dmgrname));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where mgrname = 'john' and e2.name = d.dmgrname));
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 03";
+-- ************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : same as 02 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'JOHN')) order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp  where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 04";
+-- ************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : same as 03 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN')) order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp  where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 05";
+-- ************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : same as 05 but extra table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN'))) order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN')));
+10 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 06";
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete on parent with SQ on join view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+1 row inserted/updated/deleted
+ij> delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52') order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 07";
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete on parent with SQ on union view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+5 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+1 row inserted/updated/deleted
+ij> delete from db2test.dept;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create view db2test.vempunion (vname, vmgrname, vdno) as
+  (select e.name,  e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e2.name, e2.mgrname, e2.dno from db2test.emp2 e2);
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52') order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> delete from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 08";
+-- "cleanup";
+drop view VEMPJOIN;
+0 rows inserted/updated/deleted
+ij> drop view VEMPUNION;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp2;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> --drop view db2test.vempjoin;
+--drop view db2test.vempunion;
+commit;
+ij> -- "cself304.sql ENDED";
+-- #########################################################################
+-- # TESTCASE NAME    : cself311.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table also appears in a
+-- #                  : subquery that qualifies which rows are changed
+-- #                  : and the deleted table has a self-ref'g RI const.
+-- # EXPECTED RESULTS : File should run successfully with no errors.
+-- #########################################################################
+-- "START OF TESTCASE: cself311.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete
+  set null, dno char(3) references db2test.dept on delete
+  set null);
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.origemp on delete
+  set null, dno char(3) references db2test.origdept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- "END OF TESTUNIT: 01";
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN') order by 2,3,4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+ij> delete from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN');
+2 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+10         |BOBBIE    |NULL      |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |NULL      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |NULL      |K55 
+9          |LARRY2    |NULL      |K55 
+19         |LILY1     |NULL      |K55 
+20         |LILY2     |NULL      |K55 
+18         |MONICA    |NULL      |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |NULL      |K55 
+ij> -- "END OF TESTUNIT: 02";
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+18 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN')) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> -- "END OF TESTUNIT: 03";
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK')) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK'));
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 04";
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno))) order by 2, 3, 4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> -- "END OF TESTUNIT: 05";
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vemp (vc0, vname, vmgrname, vdno) as
+  select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+0 rows inserted/updated/deleted
+ij> select * from db2test.vemp order by 2, 3, 4;
+VC0        |VNAME     |VMGRNAME  |VDNO
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.vemp;
+ERROR 42Y24: View 'DB2TEST.VEMP' is not updatable. (Views are currently not updateable.)
+ij> select * from db2test.emp order by name, mgrname, dno;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+10         |BOBBIE    |HAMID     |K55 
+13         |DAN       |ROGER     |K52 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+12         |JIM       |ROGER     |K52 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+3          |ROBIN     |ASHOK     |K51 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 06";
+-- "cleanup";
+drop view db2test.vemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- "cself311.clp ENDED";
+-- #########################################################################
+-- # TESTCASE NAME    : cself312.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by set null on delete.
+-- #                  : shape of the RI tree is a 1 level star fanout.
+-- #########################################################################
+-- "START OF TESTCASE: cself312.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> create table db2test.secondemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete set null,
+  dno char(3)  references db2test.origdept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 01";
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN') order by 2,3;
+C0         |DNO|DNAME     
+--------------------------
+1          |K55|DB        
+ij> delete from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN');
+1 row inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 02";
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+2 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in (select dno from
+   db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55')) order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+1          |K55|DB        
+ij> delete from db2test.dept where dno in (select dno
+   from db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55'));
+1 row inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 03";
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : child table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+2 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK')) order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK'));
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 04";
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : above -- 7 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept dtop where exists
+  (select * from db2test.secondemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = dtop.dno and dno in
+        (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+         (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+         (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+         (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+         (select dno from db2test.emp E6 where E5.dno = E6.dno)
+      )))))) order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists
+  (select * from db2test.origemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = db2test.dept.dno and dno in
+       (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+       (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+       (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+       (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+       (select dno from db2test.emp E6 where E5.dno = E6.dno)
+    ))))));
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 05";
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete set null on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> -- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where Dtop.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno))
+    order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno));
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> -- "END OF TESTUNIT: 06";
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete set null on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2,3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> -- "END OF TESTUNIT: 07";
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete set null on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+3 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |NULL
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+4          |JOE1      |ASHOK     |NULL
+5          |JOE2      |ASHOK     |NULL
+2          |JOHN      |ASHOK     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+3          |ROBIN     |ASHOK     |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> -- "END OF TESTUNIT: 08";
+-- *************************************************************************
+-- TESTUNIT         : 09
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 09";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+0 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52') order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> -- "END OF TESTUNIT: 09";
+-- *************************************************************************
+-- TESTUNIT         : 10
+-- DESCRIPTION      : delete on iudt where SQ on
+--                  : view with join on 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 10";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+1 row inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> -- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 7th child table like emp
+create table db2test.emp7 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp7 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 8th child table like emp
+create table db2test.emp8 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp8 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 9th child table like emp
+create table db2test.emp9 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp9 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 10th child table like emp
+create table db2test.emp10 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp10 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 11th child table like emp
+create table db2test.emp11 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp11 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 12th child table like emp
+create table db2test.emp12 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp12 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 13th child table like emp
+create table db2test.emp13 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp13 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 14th child table like emp
+create table db2test.emp14 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp14 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 15th child table like emp
+create table db2test.emp15 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp15 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> create view db2test.vempjoin12 (vname1, vname2, vname3, vname4, vname5,
+   vname6, vname7, vname8, vname9, vname10, vname11, vname12,
+   vmgrname, vdno) as
+  select e.name, e2.name, e3.name, e4.name, e5.name, e6.name, e7.name,
+   e8.name, e9.name, e10.name, e11.name, e12.name,
+   e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2, db2test.emp3 e3, db2test.emp4 e4,
+  db2test.emp5 e5, db2test.emp6 e6, db2test.emp7 e7, db2test.emp8 e8,
+  db2test.emp9 e9, db2test.emp10 e10, db2test.emp11 e11,
+  db2test.emp12 e12
+  where e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e3.dno
+  and e.dno = e4.dno
+  and e.dno = e5.dno
+  and e.dno = e6.dno
+  and e.dno = e7.dno
+  and e.dno = e8.dno
+  and e.dno = e9.dno
+  and e.dno = e10.dno
+  and e.dno = e11.dno
+  and e.dno = e12.dno;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> --CURRENTLY These queries hang in Cloudscape 
+--have to uncomment once they start passing
+--select * from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52') order by 2, 3;
+--delete from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp6 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp7 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp8 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp9 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp10 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp11 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp12 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp13 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp14 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp15 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 10";
+-- *************************************************************************
+-- TESTUNIT         : 11
+-- DESCRIPTION      : delete with many SQ levels correl'd on child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 11";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp6;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp7;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp8;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp9;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp10;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp11;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp12;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp13;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp14;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp15;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp7 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp8 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp9 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp10 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp11 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp12 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp13 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp14 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp15 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.dept d where
+  dno in (select dno from db2test.emp e where
+ e.dno = d.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))))
+ order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept d where
+  dno in (select dno from db2test.emp e where
+ e.dno = d.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))));
+ERROR 42X01: Syntax error: Encountered "d" at line 1, column 26.
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+2          |K52|OFC       
+1          |K55|DB        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp6 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp7 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp8 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp9 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp10 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp11 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp12 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp13 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp14 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp15 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 11";
+-- *************************************************************************
+-- TESTUNIT         : 12
+-- DESCRIPTION      : delete on view with union of 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 12";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.secondemp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp6;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp7;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp8;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp9;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp10;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp11;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp12;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp13;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp14;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp15;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.secondemp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp7 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp8 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp9 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp10 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp11 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp12 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp13 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp14 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp15 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> commit;
+ij> create view db2test.vempunion15 (vname,
+   vmgrname, vdno) as
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp2 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp3 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp4 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp5 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp6 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp7 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp8 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp9 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp10 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp11 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp12 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp13 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp14 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp15 e);
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52') order by 2, 3;
+C0         |DNO|DNAME     
+--------------------------
+2          |K52|OFC       
+1          |K55|DB        
+ij> delete from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     
+--------------------------
+3          |K51|CS        
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.secondemp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp6 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp7 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp8 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp9 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp10 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp11 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp12 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp13 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp14 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp15 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> -- "END OF TESTUNIT: 12";
+-- "cleanup";
+drop view db2test.vempunion15;
+0 rows inserted/updated/deleted
+ij> drop view db2test.vempjoin12;
+0 rows inserted/updated/deleted
+ij> drop view db2test.vempjoin;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp15;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp14;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp13;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp12;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp11;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp10;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp9;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp8;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp7;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp6;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp5;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp4;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp3;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp2;
+0 rows inserted/updated/deleted
+ij> drop table db2test.secondemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> --drop view db2test.vempjoin;
+--drop view db2test.vempjoin12;
+--drop view db2test.vempunion15;
+-- *************************************************************************
+--     NO MORE TESTUNITS. SUMMARIZE TESTCASE RESULTS AND HOUSE KEEPING
+-- *************************************************************************
+commit;
+ij> -- #########################################################################
+-- # TESTCASE NAME    : cself313.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by set null on delete.
+-- #                  : shape of the RI tree is a 6way star.
+-- #########################################################################
+-- "START OF TESTCASE: cself313.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp6 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- "END OF TESTUNIT: 01";
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.name = e2.mgrname));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.name = e2.mgrname));
+0 rows inserted/updated/deleted
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 02";
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete where SQ on child table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN')) order by 2,3,4;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp  where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |NULL      |K55 
+17         |DON       |NULL      |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |NULL      |K55 
+9          |LARRY2    |NULL      |K55 
+19         |LILY1     |NULL      |K55 
+20         |LILY2     |NULL      |K55 
+18         |MONICA    |NULL      |K55 
+7          |TRUONG    |NULL      |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |NULL      |K55 
+17         |DON       |NULL      |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |NULL      |K55 
+9          |LARRY2    |NULL      |K55 
+19         |LILY1     |NULL      |K55 
+20         |LILY2     |NULL      |K55 
+18         |MONICA    |NULL      |K55 
+7          |TRUONG    |NULL      |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |NULL      |K55 
+17         |DON       |NULL      |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |NULL      |K55 
+9          |LARRY2    |NULL      |K55 
+19         |LILY1     |NULL      |K55 
+20         |LILY2     |NULL      |K55 
+18         |MONICA    |NULL      |K55 
+7          |TRUONG    |NULL      |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |NULL      |K55 
+17         |DON       |NULL      |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |NULL      |K55 
+9          |LARRY2    |NULL      |K55 
+19         |LILY1     |NULL      |K55 
+20         |LILY2     |NULL      |K55 
+18         |MONICA    |NULL      |K55 
+7          |TRUONG    |NULL      |K55 
+ij> -- "END OF TESTUNIT: 03";
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))))
+   order by  1,2,3;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = db2test.emp.mgrname and
+                  e1.mgrname = 'JOHN')))));
+0 rows inserted/updated/deleted
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 04";
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))))
+   order by 2,3,4;
+ERROR 42X04: Column 'E5.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'E5.NAME' is not a column in the target table.
+ij> delete from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))));
+ERROR 42X01: Syntax error: Encountered "e" at line 1, column 25.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 05";
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to iudt
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2,3,4;
+ERROR 42X04: Column 'E.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'E.NAME' is not a column in the target table.
+ij> delete from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN')))));
+ERROR 42X01: Syntax error: Encountered "e" at line 1, column 25.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 06";
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp3;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp4;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp5;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp3 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp4 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp5 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2,3,4;
+ERROR 42X04: Column 'E.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'E.NAME' is not a column in the target table.
+ij> delete from db2test.emp
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where db2test.emp.mgrname = 'JOHN')))));
+ERROR 42X04: Column 'DB2TEST.EMP.NAME' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'DB2TEST.EMP.NAME' is not a column in the target table.
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp3 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp4 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp5 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> -- "END OF TESTUNIT: 07";
+-- "cleanup";
+drop table db2test.emp6;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp5;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp4;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp3;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp2;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> -- "cself313.clp ENDED";
+-- #########################################################################
+-- # TESTCASE NAME    : cself314.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # COMPONENT(S)     : SQN and SQR
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by set null on delete.
+-- #                  : shape of the RI tree is a 3-way cycle to parent
+-- "START OF TESTCASE: cself314.sql";
+autocommit off;
+ij> -- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+0 rows inserted/updated/deleted
+ij> create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+0 rows inserted/updated/deleted
+ij> insert into db2test.dept values (1, 'K55', 'DB', 'JOHN');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (2, 'K52', 'OFC', 'ROBIN');
+1 row inserted/updated/deleted
+ij> insert into db2test.dept values (3, 'K51', 'CS', 'ASHOK');
+1 row inserted/updated/deleted
+ij> insert into db2test.origdept select * from db2test.dept;
+3 rows inserted/updated/deleted
+ij> create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete set null );
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+1 row inserted/updated/deleted
+ij> create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.origemp select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> -- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete set null,
+  dno char(3));
+0 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.emp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 01";
+-- ************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'))
+   order by name;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> delete from db2test.emp  where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'));
+10 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |NULL      |K55 
+17         |DON       |NULL      |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |NULL      |K55 
+9          |LARRY2    |NULL      |K55 
+19         |LILY1     |NULL      |K55 
+20         |LILY2     |NULL      |K55 
+18         |MONICA    |NULL      |K55 
+7          |TRUONG    |NULL      |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 02";
+-- ************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : same as 02, but with correlation to top table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+10 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where mgrname = 'john' and e2.name = d.dmgrname));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp  where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where mgrname = 'john' and e2.name = d.dmgrname));
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 03";
+-- ************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : same as 02 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'john'));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp  where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'john'));
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 04";
+-- ************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : same as 03 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john'));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john'));
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 05";
+-- ************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : same as 05 but extra table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from db2test.emp e where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john')));
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+ij> delete from db2test.emp  where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john')));
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname, dmgrname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 06";
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete on parent with SQ on join view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+0 rows inserted/updated/deleted
+ij> select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin) 
+  and dno in ('K55', 'K52')
+  order by dno;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 07";
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete on parent with SQ on union view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+20 rows inserted/updated/deleted
+ij> delete from db2test.emp2;
+20 rows inserted/updated/deleted
+ij> delete from db2test.dept;
+1 row inserted/updated/deleted
+ij> insert into db2test.dept select * from db2test.origdept;
+3 rows inserted/updated/deleted
+ij> insert into db2test.emp select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> insert into db2test.emp2 select * from db2test.origemp;
+20 rows inserted/updated/deleted
+ij> alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create view db2test.vempunion (vname, vmgrname, vdno) as
+  (select e.name,  e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e2.name, e2.mgrname, e2.dno from db2test.emp2 e2);
+0 rows inserted/updated/deleted
+ij> -- #BEGIN;
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52');
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+2          |K52|OFC       |ROBIN     
+1          |K55|DB        |JOHN      
+ij> -- #END;
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52');
+2 rows inserted/updated/deleted
+ij> select * from db2test.dept order by dno, dname;
+C0         |DNO|DNAME     |DMGRNAME  
+-------------------------------------
+3          |K51|CS        |ASHOK     
+ij> select * from db2test.emp order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+10         |BOBBIE    |HAMID     |NULL
+13         |DAN       |ROGER     |NULL
+17         |DON       |GUY       |NULL
+16         |GUY       |JOHN      |NULL
+6          |HAMID     |JOHN      |NULL
+12         |JIM       |ROGER     |NULL
+8          |LARRY1    |HAMID     |NULL
+9          |LARRY2    |HAMID     |NULL
+19         |LILY1     |GUY       |NULL
+20         |LILY2     |GUY       |NULL
+18         |MONICA    |GUY       |NULL
+11         |ROGER     |ROBIN     |NULL
+14         |SAM1      |ROGER     |NULL
+15         |SAM2      |ROGER     |NULL
+7          |TRUONG    |HAMID     |NULL
+ij> select * from db2test.emp2 order by dno, name, mgrname;
+C0         |NAME      |MGRNAME   |DNO 
+--------------------------------------
+1          |ASHOK     |NULL      |K51 
+4          |JOE1      |ASHOK     |K51 
+5          |JOE2      |ASHOK     |K51 
+2          |JOHN      |ASHOK     |K51 
+3          |ROBIN     |ASHOK     |K51 
+13         |DAN       |ROGER     |K52 
+12         |JIM       |ROGER     |K52 
+11         |ROGER     |ROBIN     |K52 
+14         |SAM1      |ROGER     |K52 
+15         |SAM2      |ROGER     |K52 
+10         |BOBBIE    |HAMID     |K55 
+17         |DON       |GUY       |K55 
+16         |GUY       |JOHN      |K55 
+6          |HAMID     |JOHN      |K55 
+8          |LARRY1    |HAMID     |K55 
+9          |LARRY2    |HAMID     |K55 
+19         |LILY1     |GUY       |K55 
+20         |LILY2     |GUY       |K55 
+18         |MONICA    |GUY       |K55 
+7          |TRUONG    |HAMID     |K55 
+ij> alter table db2test.dept drop constraint dmgr;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- "END OF TESTUNIT: 08";
+-- "cleanup";
+drop view db2test.vempjoin ;
+0 rows inserted/updated/deleted
+ij> drop view db2test.vempunion;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp2;
+0 rows inserted/updated/deleted
+ij> drop table db2test.emp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origemp;
+0 rows inserted/updated/deleted
+ij> drop table db2test.dept;
+0 rows inserted/updated/deleted
+ij> drop table db2test.origdept;
+0 rows inserted/updated/deleted
+ij> -- "cself314.clp ENDED";
+drop schema db2test restrict;
+0 rows inserted/updated/deleted
+ij> -- END OF REFACTIONS1.sql --
+;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions2.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions2.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1278 @@
+ij> --Unsupported cases for referential actions , some of these are not supported currently in db2 udb also.
+--SQL0632N
+--FOREIGN KEY "<name>" is not valid because the table cannot be defined as a dependent of 
+--table "<table-name>" because of del--ete rule restrictions (reason code = "<reason-code>").  
+--Explanation: A referential constraint cannot be defined because the object table of the CREATE TABLE or 
+--ALTER TABLE statement cannot be defined as a dependent of table "<table-name>" for one of the following reason codes: 
+--(01) The relationship is self-referencing and a self-referencing relationship already exists
+-- with the SET NULL delete rule. 
+--(02) The relationship forms a cycle of two or more tables that cause the table to be delete-connected 
+--to itself (all other delete rules in the cycle would be CASCADE). 
+--(03) The relationship causes the table to be delete-connected to the indicated table through 
+--multiple relationships and the delete rule of the existing relationship is SET NULL. 
+--The delete rules of the existing relationships cause an error, not the delete rule specified in 
+--the FOREIGN KEY clause of the CREATE TABLE or ALTER TABLE statement. 
+--sqlcode: -632 
+-- sqlstate: 42915 
+-- case sql0632-01
+create table t1(a int not null primary key , b int references t1(a) ON DELETE SET NULL, 
+                c int references t1(a) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.T1 because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.TSELF because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.TSELF because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE RESTRICT);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.TSELF because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE NO ACTION);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.TSELF because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> -- case sql0632 -02 (c2 fails)
+create table t1(a int not null primary key, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null primary key, y int);
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+ERROR 42915: Foreign  Key 'C2' is invalid because 'The table cannot be defined as a dependent of table APP.T1 because of delete rule restrictions. (The relationship forms a cycle of two or more tables that cause the table to be delete-connected to itself (all other delete rules in the cycle would be CASCADE)).  '. 
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- constraint c4 fails
+create table t1( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c2 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m)
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c4 foreign key (k)
+                              references t2(y) on delete set null;
+ERROR 42915: Foreign  Key 'C4' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> 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> create table t1( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique, z int);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> create table t4(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> create table t5(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> create table t6(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> --delete connected cycle
+--different path from t2
+alter table t2 add constraint c3 foreign key (z)
+                              references t4(c1) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c2)
+                              references t5(c1) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t5 add constraint c5 foreign key (c2)
+                              references t6(c1) on delete cascade;
+0 rows inserted/updated/deleted
+ij> --cycle forming alter -- c6 should fail
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c6 foreign key (k)
+                              references t2(y) on delete SET NULL;
+ERROR 42915: Foreign  Key 'C6' is invalid because 'The table cannot be defined as a dependent of table APP.T2 because of delete rule restrictions. (The relationship forms a cycle of two or more tables that cause the table to be delete-connected to itself (all other delete rules in the cycle would be CASCADE)).  '. 
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t5 drop constraint c5;
+0 rows inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t5;
+0 rows inserted/updated/deleted
+ij> drop table t6;
+0 rows inserted/updated/deleted
+ij> -- case sql0632 - 3 (c2 fails) 
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int );
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'The table cannot be defined as a dependent of table APP.T2 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> 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> --SQL0633N The delete rule of FOREIGN KEY "<name>" must be "<delete-rule>" (reason code = "<reason-code>").  
+--Explanation: The delete rule specified in a FOREIGN KEY clause of the CREATE TABLE or ALTER TABLE 
+--statement is not valid. The indicated delete rule is required for one of the following reason codes: 
+--(01) The referential constraint is self-referencing and an existing self-referencing constraint has the
+-- indicated delete rule (NO ACTION, RESTRICT or CASCADE). 
+--(02) The referential constraint is self-referencing and the table is dependent in a relationship with
+-- a delete rule of CASCADE. 
+--(03) The relationship would cause the table to be delete-connected to the same table through multiple 
+--relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE). 
+-- case sql0633-01 (t1 creation should fail)
+create table t1(a int not null primary key , b int references t1(a) ON DELETE CASCADE, 
+                c int references t1(a) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "RESTRICT". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE NO ACTION);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "RESTRICT". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "RESTRICT". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "NO ACTION". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE RESTRICT);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "NO ACTION". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "NO ACTION". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE NO ACTION);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE RESTRICT);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> --FOLLOWING CASES SHOULD PASS
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table tself;
+0 rows inserted/updated/deleted
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table tself;
+0 rows inserted/updated/deleted
+ij> create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table tself;
+0 rows inserted/updated/deleted
+ij> -- END PASS CASES
+-- case sql0633-02 (t2 fails)
+create table t1(a int not null primary key) ;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and the table is dependent in a relationship with a delete rule of CASCADE.)'. 
+ij> create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and the table is dependent in a relationship with a delete rule of CASCADE.)'. 
+ij> create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and the table is dependent in a relationship with a delete rule of CASCADE.)'. 
+ij> --START  PASS CASES
+--These cases is to make sure we don;t throw errors for the valid cases.
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --END PASS CASES
+-- case sql0633-03 (c3 fails)
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int );
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> 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> -- table t3 creation should fail.
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE CASCADE, 
+                                       y int not null constraint c1 unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+ERROR X0Y25: Operation 'DROP CONSTRAINT' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'xxxxGENERATED-IDxxxx' is dependent on that object.
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- SQL0634N The delete rule of FOREIGN KEY "<name>" must not be CASCADE (reason-code = "<reason-code>").  
+-- Explanation: The CASCADE delete rule specified in the FOREIGN KEY clause of the CREATE TABLE 
+-- or ALTER TABLE statement is not valid for one of the following reason codes: 
+-- (01) A self-referencing constraint exists with a delete rule of SET NULL, NO ACTION or RESTRICT. 
+-- (02) The relationship would form a cycle that would cause a table to be delete-connected to itself. 
+-- One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable 
+-- if the delete rule is not CASCADE. 
+-- (03) The relationship would cause another table to be delete-connected to the same table through
+--  multiple paths with different delete rules or with delete rule equal to SET NULL. 
+-- case sql0634 - 01
+create table t1( a int not null primary key, b int , c int );
+ERROR X0Y32: Table/View 'T1' already exists in Schema 'APP'.
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b) 
+                             references t1(a) on delete set null;
+ERROR 42X14: 'B' is not a column in table or VTI 'T1'.
+ij> alter table t1 add constraint c2 foreign key (c) 
+                              references t2(y) on delete cascade;
+ERROR 42X14: 'C' is not a column in table or VTI 'T1'.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- t2 should fail
+create table t1(a int not null primary key) ;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE SET NULL, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key can not be CASCADE. (A self-referencing constraint exists with a delete rule of SET NULL, NO ACTION or RESTRICT.) '. 
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key can not be CASCADE. (A self-referencing constraint exists with a delete rule of SET NULL, NO ACTION or RESTRICT.) '. 
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key can not be CASCADE. (A self-referencing constraint exists with a delete rule of SET NULL, NO ACTION or RESTRICT.) '. 
+ij> --START  SHOULD PASS CASES
+create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE NO ACTION);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> --END PASS CASES
+drop table t1;
+0 rows inserted/updated/deleted
+ij> -- case sql0634 - 02 (c1 fails)
+create table t1(a int not null primary key, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null primary key, y int);
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+ERROR 42915: Foreign  Key 'C1' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would form a cycle that would cause a table to be delete-connected to itself. One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable if the delete rule is not CASCADE.) '. 
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- case sql0634 - 03 
+create table t1( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique, z int);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> create table t4(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> -- error scenario 1: adding constraint c4 will make t2 get two paths from t1 with SET NULLS
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+ERROR 42915: Foreign  Key 'C4' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would cause another table to be delete-connected to the same table through multiple paths with different delete rules or with delete rule equal to SET NULL.) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- error scenario 2: adding constraint c4 will make t2 get two paths from t1 with a SET NULL and
+--- a CASCADE.
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+ERROR 42915: Foreign  Key 'C4' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would cause another table to be delete-connected to the same table through multiple paths with different delete rules or with delete rule equal to SET NULL.) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- error scenario 3: adding constraint c4 will make t2 get two paths from t1 with a NO ACTION 
+--- and a CASCADE.
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete NO ACTION;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+ERROR 42915: Foreign  Key 'C4' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would cause another table to be delete-connected to the same table through multiple paths with different delete rules or with delete rule equal to SET NULL.) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- error scenario 4: adding constraint c4 will make t2 get two paths from t1 with a CASCADE
+--- and a RESTRICT.
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete RESTRICT;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+ERROR 42915: Foreign  Key 'C4' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would cause another table to be delete-connected to the same table through multiple paths with different delete rules or with delete rule equal to SET NULL.) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> --FOLLOWING SHOULD PASS
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete RESTRICT;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete RESTRICT;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete RESTRICT;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> --- END OF ACTUAL ERROR CASES
+--- MISC CASES 
+--Following should give error because of delete-rule restrictions
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE CASCADE, 
+                                       y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> drop table t3 ;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T3' because it does not exist.
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --DB21034E  The command was processed as an SQL statement because it was not a
+--valid Command Line Processor command.  During SQL processing it returned:
+--SQL0633N  The delete rule of FOREIGN KEY "M..." must be "CASCADE" (reason code
+--= "3").  SQLSTATE=42915
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE SET NULL, 
+                                       y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t3 ;
+0 rows inserted/updated/deleted
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> drop table t1 ;
+0 rows inserted/updated/deleted
+ij> --Following should pass.
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t4(s int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t4(s) ON DELETE CASCADE, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --Following should give error because of delete-rule restrictions
+create table t1( a int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int );
+0 rows inserted/updated/deleted
+ij> -- all should pass
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- c3 fails: sql0633N - 3
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C3' on table 'APP.T3'.
+ij> -- c3 fails; sql0632N - 3 
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'The table cannot be defined as a dependent of table APP.T2 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C3' on table 'APP.T3'.
+ij> -- passes
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- succeds
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- succeds
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- passes 
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> -- c3 fails - sql0632 - 3
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'The table cannot be defined as a dependent of table APP.T2 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> alter table t2 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C3' on table 'APP.T3'.
+ij> 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> --cyclic case with two tables.
+create table t1(a int not null primary key, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int not null primary key, y int);
+0 rows inserted/updated/deleted
+ij> --passes
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete NO ACTION;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete cascade;
+ERROR 42915: Foreign  Key 'C2' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would form a cycle that would cause a table to be delete-connected to itself. One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable if the delete rule is not CASCADE.) '. 
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C2' on table 'APP.T2'.
+ij> --c2 fails - sql0632N - reason code 2
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+ERROR 42915: Foreign  Key 'C2' is invalid because 'The table cannot be defined as a dependent of table APP.T1 because of delete rule restrictions. (The relationship forms a cycle of two or more tables that cause the table to be delete-connected to itself (all other delete rules in the cycle would be CASCADE)).  '. 
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C2' on table 'APP.T2'.
+ij> --c1 fails - sql0634N - reason code 2
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+ERROR 42915: Foreign  Key 'C1' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would form a cycle that would cause a table to be delete-connected to itself. One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable if the delete rule is not CASCADE.) '. 
+ij> alter table t1 drop constraint c1;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C1' on table 'APP.T1'.
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> -- c1 fails : column b can not contain null values
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete NO ACTION;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- should pass
+create table t1(a int not null unique, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int unique not null  , y int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE CASCADE ,
+                y int references t3(l) ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --creating t2 should fail
+create table t1(a int not null unique, b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int unique not null  ,
+               y int references t1(b) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE CASCADE ,
+                y int references t3(l) ON DELETE RESTRICT);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> drop table t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- cyclic references
+-- t1 refs  t3 refs t2 refs t1
+create table t1( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> insert into t1  values (1  , 1) ;
+1 row inserted/updated/deleted
+ij> insert into t2 values ( 1 , 1) ;
+1 row inserted/updated/deleted
+ij> insert into t3 values (1 , 1, 1) ;
+1 row inserted/updated/deleted
+ij> --delete connected cycle 
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (m)
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> --c3 should fail SQL0632N - 2
+--delete connected cycle all refactions inside the cycle should be same
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete set null;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'The table cannot be defined as a dependent of table APP.T2 because of delete rule restrictions. (The relationship forms a cycle of two or more tables that cause the table to be delete-connected to itself (all other delete rules in the cycle would be CASCADE)).  '. 
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C3' on table 'APP.T3'.
+ij> --c3 should fail SQL0634N - 2 -- PROBLEMATIC CASE
+-- DELETE CONNECTED CYCLE
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete cascade;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would form a cycle that would cause a table to be delete-connected to itself. One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable if the delete rule is not CASCADE.) '. 
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C3' on table 'APP.T3'.
+ij> --c3 should fail - SQL0634N - 2
+--DELETE CONNECTED CYCLE
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete cascade;
+ERROR 42915: Foreign  Key 'C3' is invalid because 'the delete rule of foreign key can not be CASCADE. (The relationship would form a cycle that would cause a table to be delete-connected to itself. One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable if the delete rule is not CASCADE.) '. 
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+ERROR 42X86: ALTER table failed. There is no constraint 'APP.C3' on table 'APP.T3'.
+ij> -- passes
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> --passes
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> --passes
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> 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> -- self referencing errors
+create table tself(a int not null primary key , 
+               b int references tself(a) ON DELETE SET NULL,  
+               c int references tself(a) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.TSELF because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> create table tself(a int not null primary key , 
+               b int references tself(a) ON DELETE CASCADE,  
+               c int references tself(a) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tself(a int not null primary key , 
+               b int references tself(a) ON DELETE SET NULL,  
+               c int references tself(a) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.TSELF because of delete rule restrictions. (The relationship is self-referencing and a self-referencing relationship already exists with the SET NULL delete rule.) '. 
+ij> create table tself(a int not null primary key , 
+               b int references tself(a) ,  
+               c int references tself(a) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "NO ACTION". (The referential constraint is self-referencing and an existing self-referencing constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> create table tparent( a int not null  primary key);
+0 rows inserted/updated/deleted
+ij> --THIS ONE SHOULD PASS , but currently we are throwing ERRROR
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE SET NULL ,  
+               c int references tself(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table tself;
+0 rows inserted/updated/deleted
+ij> --should pass
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE CASCADE ,  
+               c int references tself(a) ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> drop table tself;
+0 rows inserted/updated/deleted
+ij> --should throw error
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE CASCADE ,  
+               c int references tself(a) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "CASCADE". (The referential constraint is self-referencing and the table is dependent in a relationship with a delete rule of CASCADE.)'. 
+ij> drop table tself;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'TSELF' because it does not exist.
+ij> --should pass
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE SET NULL,  
+               c int references tself(a) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> drop table tself;
+0 rows inserted/updated/deleted
+ij> drop table tparent;
+0 rows inserted/updated/deleted
+ij> --two consectuvie set null  CYCLE
+create table t1( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> create table t4(s int, t int not null unique , y int );
+0 rows inserted/updated/deleted
+ij> --all should pass
+--two consectuvie set null  CYCLE , but not a delete connected cylcle
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c3 foreign key (s)
+                              references t2(y) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c4 foreign key (k)
+                              references t4(t) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t1 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> --two continuos set nulls , but not a cycle
+alter table t3 add constraint c1 foreign key (l)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c3 foreign key (s)
+                              references t2(y) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (y)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c4;
+0 rows inserted/updated/deleted
+ij> --c4 fails error case NULL followed by a cascade in the path
+alter table t3 add constraint c1 foreign key (l)
+                              references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c3 foreign key (s)
+                              references t2(y) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (y)
+                              references t3(m) on delete cascade;
+ERROR 42915: Foreign  Key 'C4' is invalid because 'The table cannot be defined as a dependent of table APP.T3 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> alter table t3 drop constraint c1;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t4 drop constraint c3;
+0 rows inserted/updated/deleted
+ij> drop table t4 ;
+0 rows inserted/updated/deleted
+ij> drop table t3 ;
+0 rows inserted/updated/deleted
+ij> drop table t2 ;
+0 rows inserted/updated/deleted
+ij> drop table t1 ;
+0 rows inserted/updated/deleted
+ij> -- t2 should fail for these 4 cases below
+create table t1( a int not null primary key, b int not null  unique);
+0 rows inserted/updated/deleted
+ij> create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t1(b) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'the delete rule of foreign key  must be "RESTRICT". (The relationship would cause the table to be delete-connected to the same table through multiple relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE).) '. 
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int references t1(b) ON DELETE CASCADE);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.T1 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int references t1(b) ON DELETE SET NULL);
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.T1 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table  t1(a int not null unique , b int not null unique);
+0 rows inserted/updated/deleted
+ij> create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int references t1(b));
+ERROR 42915: Foreign  Key 'xxxxGENERATED-IDxxxx' is invalid because 'The table cannot be defined as a dependent of table APP.T1 because of delete rule restrictions. (The relationship causes the table to be delete-connected to the indicated table through multiple relationships and the delete rule of the existing relationship is SET NULL.).  '. 
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions3.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/refActions3.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1715 @@
+ij> -- webSphere Portal Server Development test cases 
+CREATE TABLE ID_TABLE (
+    TABLE_NAME VARCHAR(128) NOT NULL,
+    LAST_ID INTEGER NOT NULL,
+    CONSTRAINT PK10 PRIMARY KEY (TABLE_NAME)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE APP_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    RESOURCE_ROOT VARCHAR(255),
+    CONTEXT_ROOT VARCHAR(255),
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_REMOVABLE CHAR(1) DEFAULT 'Y' NOT NULL,
+    SYSTEM_ACCESS CHAR(1) NOT NULL,
+    GUID VARCHAR(255),
+    MAJOR_VERSION INTEGER,
+    MINOR_VERSION INTEGER,
+    PARENT_OID INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK20 PRIMARY KEY ( OID ),
+    CONSTRAINT FK20 FOREIGN KEY ( PARENT_OID ) REFERENCES APP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX20A ON APP_DESC ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX20B ON APP_DESC ( GUID );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX20C ON APP_DESC ( PARENT_OID );
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> CREATE TABLE APP_DESC_DD (
+    APP_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_LARGE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_STRING CHAR(1) DEFAULT 'Y' NOT NULL,
+    VALUE VARCHAR(255) FOR BIT DATA,
+    LARGE_VALUE LONG VARCHAR FOR BIT DATA,
+    CONSTRAINT PK30 PRIMARY KEY ( APP_DESC_OID , NAME ),
+    CONSTRAINT FK30 FOREIGN KEY ( APP_DESC_OID ) REFERENCES APP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PORT_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    SERVLET_MAPPING VARCHAR(255),
+    IS_ACTIVE CHAR(1) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    WINDOW_STATES INTEGER NOT NULL,
+    LISTENERS INTEGER NOT NULL,
+    SM_ICON_URL VARCHAR(255),
+    LG_ICON_URL VARCHAR(255),
+    EXPIRES INTEGER NOT NULL,
+    IS_SHARED CHAR(1) NOT NULL,
+    APP_DESC_OID INTEGER NOT NULL,
+    DEFAULT_LOCALE VARCHAR(64),
+    IS_REMOTE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_PUBLISHED CHAR(1) DEFAULT 'N' NOT NULL,
+    REFERENCE_ID VARCHAR(64),
+    MAJOR_VERSION INTEGER,
+    MINOR_VERSION INTEGER,
+    PARENT_OID INTEGER,
+    CONSTRAINT PK40 PRIMARY KEY (OID),
+    CONSTRAINT FK40A FOREIGN KEY ( APP_DESC_OID ) REFERENCES APP_DESC (OID) ON DELETE CASCADE,
+    CONSTRAINT FK40B FOREIGN KEY ( PARENT_OID ) REFERENCES PORT_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX40A ON PORT_DESC ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX40D ON PORT_DESC ( REFERENCE_ID, APP_DESC_OID );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX40E ON PORT_DESC ( APP_DESC_OID );
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> CREATE TABLE PORT_DESC_LOD (
+    PORT_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    TITLE_SHORT VARCHAR(128),
+    DESCRIPTION VARCHAR(1024),
+    KEYWORDS VARCHAR(1024),
+    CONSTRAINT PK50 PRIMARY KEY ( PORT_DESC_OID, LOCALE ),
+    CONSTRAINT FK50 FOREIGN KEY (PORT_DESC_OID) REFERENCES PORT_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PORT_DESC_MAD (
+    PORT_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    MODES INTEGER NOT NULL,
+    CONSTRAINT PK60 PRIMARY KEY ( PORT_DESC_OID, MARKUP ),
+    CONSTRAINT FK60 FOREIGN KEY (PORT_DESC_OID) REFERENCES PORT_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PORT_DESC_DD (
+    PORT_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_LARGE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_STRING CHAR(1) DEFAULT 'Y' NOT NULL,
+    VALUE VARCHAR(255) FOR BIT DATA,
+    LARGE_VALUE LONG VARCHAR FOR BIT DATA,
+    CONSTRAINT PK70 PRIMARY KEY ( PORT_DESC_OID , NAME ),
+    CONSTRAINT FK70 FOREIGN KEY ( PORT_DESC_OID ) REFERENCES PORT_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CLASS_NAME VARCHAR(128) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_HIDDEN CHAR(1) NOT NULL,
+    SM_ICON_URL VARCHAR(255),
+    LG_ICON_URL VARCHAR(255),
+    CONSTRAINT PK100 PRIMARY KEY (OID)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_DESC_LOD (
+    COMP_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    CONSTRAINT PK110 PRIMARY KEY ( COMP_DESC_OID , LOCALE ),
+    CONSTRAINT FK110 FOREIGN KEY ( COMP_DESC_OID ) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_DESC_MAD (
+    COMP_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    MODES INTEGER NOT NULL,
+    CONSTRAINT PK120 PRIMARY KEY ( COMP_DESC_OID , MARKUP ),
+    CONSTRAINT FK120 FOREIGN KEY ( COMP_DESC_OID ) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_DESC_DD (
+    COMP_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+    CONSTRAINT PK130 PRIMARY KEY ( COMP_DESC_OID , NAME ),
+    CONSTRAINT FK130 FOREIGN KEY ( COMP_DESC_OID ) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE SKIN_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    RESOURCE_ROOT VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_DEFAULT CHAR(1) DEFAULT 'N' NOT NULL,
+    DEFAULT_LOCALE VARCHAR(64),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK140 PRIMARY KEY (OID)
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX140 ON SKIN_DESC ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE SKIN_DESC_LOD (
+    SKIN_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(1024),
+    CONSTRAINT PK150 PRIMARY KEY ( SKIN_DESC_OID, LOCALE ),
+    CONSTRAINT FK150 FOREIGN KEY (SKIN_DESC_OID) REFERENCES SKIN_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE SKIN_DESC_MAD (
+    SKIN_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    CONSTRAINT PK160 PRIMARY KEY ( SKIN_DESC_OID, MARKUP ),
+    CONSTRAINT FK160 FOREIGN KEY (SKIN_DESC_OID) REFERENCES SKIN_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE THEME_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    RESOURCE_ROOT VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_DEFAULT CHAR(1) DEFAULT 'N' NOT NULL,
+    DEFAULT_LOCALE VARCHAR(64),
+    DEFAULT_SKIN INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK170 PRIMARY KEY (OID),
+    CONSTRAINT FK170 FOREIGN KEY (DEFAULT_SKIN) REFERENCES SKIN_DESC (OID) ON DELETE SET NULL
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX170 ON THEME_DESC ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE THEME_DESC_LOD (
+    THEME_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(1024),
+    CONSTRAINT PK180 PRIMARY KEY ( THEME_DESC_OID, LOCALE ),
+    CONSTRAINT FK180 FOREIGN KEY (THEME_DESC_OID) REFERENCES THEME_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE THEME_DESC_MAD (
+    THEME_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    CONSTRAINT PK190 PRIMARY KEY ( THEME_DESC_OID, MARKUP ),
+    CONSTRAINT FK190 FOREIGN KEY (THEME_DESC_OID) REFERENCES THEME_DESC (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PAGE_INST (
+    OID INTEGER NOT NULL,
+    OWNERID VARCHAR(255) NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL,
+    ALL_PORT_ALLOWED CHAR(1) DEFAULT 'N' NOT NULL,
+    PARENT_OID INTEGER,
+    SKIN_DESC_OID INTEGER,
+    THEME_DESC_OID INTEGER,
+    CREATE_TYPE CHAR(1) DEFAULT 'E' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK280 PRIMARY KEY (OID),
+    CONSTRAINT FK280B FOREIGN KEY ( PARENT_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK280C FOREIGN KEY ( SKIN_DESC_OID) REFERENCES SKIN_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT FK280D FOREIGN KEY ( THEME_DESC_OID) REFERENCES THEME_DESC ( OID ) ON DELETE SET NULL
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX280A ON PAGE_INST ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PAGE_INST_LOD (
+    PAGE_INST_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(1024),
+    CONSTRAINT PK281 PRIMARY KEY ( PAGE_INST_OID , LOCALE ),
+    CONSTRAINT FK281 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PAGE_INST_MAD (
+    PAGE_INST_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    CONSTRAINT PK260 PRIMARY KEY ( PAGE_INST_OID , MARKUP ),
+    CONSTRAINT FK260 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PAGE_INST_DD (
+    PAGE_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+    CONSTRAINT PK282 PRIMARY KEY ( PAGE_INST_OID , NAME ),
+    CONSTRAINT FK282 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PAGE_INST_ALIAS (
+    PAGE_INST_OID INTEGER NOT NULL,
+    ALIAS VARCHAR(255) NOT NULL,
+    CONSTRAINT PK283 PRIMARY KEY ( PAGE_INST_OID , ALIAS ),
+    CONSTRAINT FK283 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT UN283 UNIQUE ( ALIAS )
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE APP_INST (
+    OID INTEGER NOT NULL,
+    APP_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK290 PRIMARY KEY (OID),
+    CONSTRAINT FK290 FOREIGN KEY ( APP_DESC_OID) REFERENCES APP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PORT_INST (
+    OID INTEGER NOT NULL,
+    PORT_DESC_OID INTEGER NOT NULL,
+    APP_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK300 PRIMARY KEY (OID),
+    CONSTRAINT FK300A FOREIGN KEY ( PORT_DESC_OID) REFERENCES PORT_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK300B FOREIGN KEY ( APP_INST_OID) REFERENCES APP_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PORT_INST_DD (
+    PORT_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_LARGE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_STRING CHAR(1) DEFAULT 'Y' NOT NULL,
+    VALUE VARCHAR(255) FOR BIT DATA,
+    LARGE_VALUE LONG VARCHAR FOR BIT DATA,
+    CONSTRAINT PK310 PRIMARY KEY ( PORT_INST_OID , NAME ),
+    CONSTRAINT FK310 FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_INST (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255),
+    COMP_DESC_OID INTEGER NOT NULL,
+    PORT_INST_OID INTEGER,
+    PAGE_INST_OID INTEGER NOT NULL,
+    COMPOS_REF INTEGER,
+    PARENT_OID INTEGER,
+    ORIENTATION CHAR(1),
+    EXPAND_STATE CHAR(1),
+    URL VARCHAR(255),
+    ALL_MARK_ALLOWED CHAR(1) DEFAULT 'Y' NOT NULL,
+    ORDINAL INTEGER,
+    MAX_SIZE INTEGER,
+    SHADOW_OID INTEGER,
+    IS_EDITABLE CHAR(1),
+    IS_DELETABLE CHAR(1),
+    IS_MODIFIABLE CHAR(1),
+    IS_NESTABLE CHAR(1),
+    IS_MOVABLE CHAR(1),
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    WIDTH VARCHAR(32),
+    ICON_URL VARCHAR(255),
+    THEME_DESC_OID INTEGER,
+    SKIN_DESC_OID INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK320 PRIMARY KEY (OID),
+    CONSTRAINT FK320A FOREIGN KEY ( COMP_DESC_OID) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320B FOREIGN KEY ( PAGE_INST_OID) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320C FOREIGN KEY ( PORT_INST_OID) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320D FOREIGN KEY ( PARENT_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320E FOREIGN KEY ( SHADOW_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320F FOREIGN KEY ( THEME_DESC_OID) REFERENCES THEME_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT FK320G FOREIGN KEY ( SKIN_DESC_OID) REFERENCES SKIN_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT FK320H FOREIGN KEY ( COMPOS_REF ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX320A ON COMP_INST ( PAGE_INST_OID );
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> CREATE INDEX IX320B ON COMP_INST ( PORT_INST_OID );
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> CREATE TABLE COMP_INST_LOD (
+    COMP_INST_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    TITLE_SHORT VARCHAR(128),
+    DESCRIPTION VARCHAR(1024),
+    KEYWORDS VARCHAR(1024),
+    CONSTRAINT PK331 PRIMARY KEY ( COMP_INST_OID , LOCALE ),
+    CONSTRAINT FK331 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_INST_DD (
+    COMP_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+    CONSTRAINT PK330 PRIMARY KEY ( COMP_INST_OID , NAME ),
+    CONSTRAINT FK330 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_INST_MAD (
+    COMP_INST_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    URL VARCHAR(255),
+    CONSTRAINT PK333 PRIMARY KEY ( COMP_INST_OID , MARKUP ),
+    CONSTRAINT FK333 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_INST_ALIAS (
+    COMP_INST_OID INTEGER NOT NULL,
+    ALIAS VARCHAR(255) NOT NULL,
+    CONSTRAINT PK332 PRIMARY KEY ( COMP_INST_OID , ALIAS ),
+    CONSTRAINT FK332 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT UN332 UNIQUE ( ALIAS )
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE USER_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    TYPE INTEGER NOT NULL,
+    LAST_LOGIN BIGINT,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK340 PRIMARY KEY ( OID ),
+    CONSTRAINT UN340 UNIQUE ( NAME, TYPE )
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX340 ON USER_DESC ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE USER_DESC_DD (
+    USER_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+    CONSTRAINT PK350 PRIMARY KEY ( USER_DESC_OID, NAME ),
+    CONSTRAINT FK350 FOREIGN KEY ( USER_DESC_OID ) REFERENCES USER_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE USER_SESSION (
+    OID INTEGER NOT NULL,
+    USER_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    USER_LOGGED_OUT CHAR(1) DEFAULT 'Y' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK360 PRIMARY KEY ( OID ),
+    CONSTRAINT UN360 UNIQUE ( USER_DESC_OID, MARKUP ),
+    CONSTRAINT FK360 FOREIGN KEY ( USER_DESC_OID ) REFERENCES USER_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE SELECTION_STATE (
+    USER_SESSION_OID INTEGER NOT NULL,
+    ROOT_OID INTEGER NOT NULL,
+    SELECTION_OID INTEGER NOT NULL,
+    CONSTRAINT PK370 PRIMARY KEY ( USER_SESSION_OID , ROOT_OID ),
+    CONSTRAINT FK370A FOREIGN KEY ( USER_SESSION_OID ) REFERENCES USER_SESSION ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK370B FOREIGN KEY ( ROOT_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK370C FOREIGN KEY ( SELECTION_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PORT_INST_STATE (
+    USER_SESSION_OID INTEGER NOT NULL,
+    PORT_INST_OID INTEGER NOT NULL,
+    MODES INTEGER NOT NULL,
+    CONSTRAINT PK380 PRIMARY KEY ( USER_SESSION_OID , PORT_INST_OID ),
+    CONSTRAINT FK380A FOREIGN KEY ( USER_SESSION_OID ) REFERENCES USER_SESSION ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK380B FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE COMP_INST_STATE (
+    USER_SESSION_OID INTEGER NOT NULL,
+    COMP_INST_OID INTEGER NOT NULL,
+    STATE INTEGER NOT NULL,
+    CONSTRAINT PK390 PRIMARY KEY ( USER_SESSION_OID , COMP_INST_OID ),
+    CONSTRAINT FK390A FOREIGN KEY ( USER_SESSION_OID ) REFERENCES USER_SESSION ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK390B FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CRED_SEGMENT (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(255),
+    USER_MAPPED CHAR(1) NOT NULL,
+    ADAPTER_TYPE VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK400 PRIMARY KEY ( OID ),
+    CONSTRAINT UN400 UNIQUE ( NAME )
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX400 ON CRED_SEGMENT ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CRED_SLOT (
+    OID INTEGER NOT NULL,
+    SLOT_KEY VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_SYSTEM CHAR(1) NOT NULL,
+    SECRET_TYPE INTEGER NOT NULL,
+    RESOURCE_NAME VARCHAR(255),
+    SEGMENT_OID INTEGER NOT NULL,
+    USER_DESC_OID INTEGER,
+    PORT_INST_OID INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK410 PRIMARY KEY ( OID ),
+    CONSTRAINT UN410 UNIQUE ( SLOT_KEY ),
+    CONSTRAINT FK410A FOREIGN KEY ( SEGMENT_OID ) REFERENCES CRED_SEGMENT ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK410B FOREIGN KEY ( USER_DESC_OID ) REFERENCES USER_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK410C FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX410A ON CRED_SLOT ( USER_DESC_OID, PORT_INST_OID );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX410B ON CRED_SLOT ( RESOURCE_NAME );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX410C ON CRED_SLOT ( SEGMENT_OID );
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> CREATE TABLE CRED_SLOT_LOD (
+    CRED_SLOT_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    DESCRIPTION VARCHAR(255),
+    KEYWORDS VARCHAR(1024),
+    CONSTRAINT PK420 PRIMARY KEY ( CRED_SLOT_OID , LOCALE ),
+    CONSTRAINT FK420 FOREIGN KEY ( CRED_SLOT_OID ) REFERENCES CRED_SLOT ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE LNK_PAGE_PORT (
+    PAGE_INST_OID INTEGER NOT NULL,
+    PORT_DESC_OID INTEGER NOT NULL,
+    CONSTRAINT PK430 PRIMARY KEY ( PAGE_INST_OID, PORT_DESC_OID ),
+    CONSTRAINT FK430A FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK430B FOREIGN KEY ( PORT_DESC_OID ) REFERENCES PORT_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE LNK_THEME_SKIN (
+    THEME_DESC_OID INTEGER NOT NULL,
+    SKIN_DESC_OID INTEGER NOT NULL,
+    CONSTRAINT PK450 PRIMARY KEY ( THEME_DESC_OID, SKIN_DESC_OID ),
+    CONSTRAINT FK450A FOREIGN KEY ( THEME_DESC_OID ) REFERENCES THEME_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK450B FOREIGN KEY ( SKIN_DESC_OID ) REFERENCES SKIN_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE MARKUP_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    MIMETYPE VARCHAR(255) NOT NULL,
+    DEFAULT_CHARSET VARCHAR(64) DEFAULT 'UTF-8' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK470 PRIMARY KEY ( OID ),
+    CONSTRAINT UN470 UNIQUE ( NAME )
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE MARKUP_DESC_LOD (
+    MARKUP_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    CHARSET VARCHAR(64),
+    CONSTRAINT PK480 PRIMARY KEY ( MARKUP_DESC_OID , LOCALE ),
+    CONSTRAINT FK480 FOREIGN KEY ( MARKUP_DESC_OID ) REFERENCES MARKUP_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CLIENT_DESC (
+    OID INTEGER NOT NULL,
+    ORDINAL INTEGER NOT NULL,
+    MANUFACTURER VARCHAR(64),
+    MODEL VARCHAR(255),
+    VERSION VARCHAR(16),
+    USERAGENT_PATTERN VARCHAR(255) NOT NULL,
+    MARKUP_NAME VARCHAR(255) NOT NULL,
+    MARKUP_VERSION VARCHAR(16),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK490 PRIMARY KEY (OID)
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX490 ON CLIENT_DESC ( ORDINAL );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CLIENT_DESC_CAPS (
+    CLIENT_DESC_OID INTEGER NOT NULL,
+    CAPABILITY VARCHAR(255) NOT NULL,
+    CONSTRAINT PK500 PRIMARY KEY ( CLIENT_DESC_OID , CAPABILITY ),
+    CONSTRAINT FK500 FOREIGN KEY ( CLIENT_DESC_OID ) REFERENCES CLIENT_DESC ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE UDDI_REG_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    PUBLISH_URL VARCHAR(255),
+    INQUIRY_URL VARCHAR(255) NOT NULL,
+    PORTLET_TMODEL VARCHAR(255),
+    URL_TMODEL VARCHAR(255),
+    CRED_SLOT_ID VARCHAR(255),
+    IS_DELETED CHAR(1) DEFAULT 'N' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK510 PRIMARY KEY ( OID )
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX510 ON UDDI_REG_DESC ( IS_DELETED );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE UDDI_REG_DESC_PD (
+    UDDI_REG_DESC_OID INTEGER NOT NULL,
+    REMOTE_ID VARCHAR(255) NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    PORT_DESC_OID INTEGER,
+    CONSTRAINT PK520 PRIMARY KEY ( UDDI_REG_DESC_OID , REMOTE_ID ),
+    CONSTRAINT FK520A FOREIGN KEY ( UDDI_REG_DESC_OID ) REFERENCES UDDI_REG_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK520B FOREIGN KEY ( PORT_DESC_OID ) REFERENCES PORT_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT UN520 UNIQUE ( REMOTE_ID )
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX520 ON UDDI_REG_DESC_PD ( REMOTE_ID, PORT_DESC_OID );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE BIND_CTX (
+    OID INTEGER NOT NULL,
+    HANDLE_ID VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK530 PRIMARY KEY ( OID )
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX530 ON BIND_CTX ( HANDLE_ID );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE BIND_CTX_DD (
+    BIND_CTX_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+    CONSTRAINT PK540 PRIMARY KEY ( BIND_CTX_OID , NAME ),
+    CONSTRAINT FK540 FOREIGN KEY ( BIND_CTX_OID ) REFERENCES BIND_CTX ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE BIND_CTX_PI (
+    BIND_CTX_OID INTEGER NOT NULL,
+    PORT_INST_OID INTEGER NOT NULL,
+    LAST_USED BIGINT NOT NULL,
+    CONSTRAINT PK550 PRIMARY KEY ( BIND_CTX_OID , PORT_INST_OID ),
+    CONSTRAINT FK550A FOREIGN KEY ( BIND_CTX_OID ) REFERENCES BIND_CTX ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK550B FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CLI_BIND (
+    OID INTEGER NOT NULL,
+    ACCESS_POINT_URL VARCHAR(255) NOT NULL,
+    HANDLE_ID VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK560 PRIMARY KEY ( OID ),
+    CONSTRAINT UN560 UNIQUE ( ACCESS_POINT_URL )
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CLI_BIND_HANDLES (
+    CLI_BIND_OID INTEGER NOT NULL,
+    HANDLE_ID VARCHAR(255) NOT NULL,
+    PORT_INST_OID INTEGER,
+    CONSTRAINT PK570 PRIMARY KEY ( CLI_BIND_OID , HANDLE_ID ),
+    CONSTRAINT FK570A FOREIGN KEY ( CLI_BIND_OID ) REFERENCES CLI_BIND ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK570B FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE SET NULL
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE MAG_DATA (
+    OID INTEGER NOT NULL,
+    USERID VARCHAR(255) NOT NULL,
+    SUBNO VARCHAR(255),
+    CLID VARCHAR(255),
+    FORCE_PROMPT CHAR(1) DEFAULT 'N' NOT NULL,
+    CONSTRAINT PK580 PRIMARY KEY ( USERID )
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX580A ON MAG_DATA ( SUBNO );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX580B ON MAG_DATA ( CLID );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE PUB_CLIP_DEF (
+    OID INTEGER NOT NULL,
+    UDDI_REG_DESC_OID INTEGER NOT NULL,
+    REMOTE_ID VARCHAR(255) NOT NULL,
+    CLIP_DEF VARCHAR(1024) NOT NULL,
+    SERVICE_KEY VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK650 PRIMARY KEY (OID),
+    CONSTRAINT FK650 FOREIGN KEY ( UDDI_REG_DESC_OID) REFERENCES UDDI_REG_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT UN650 UNIQUE ( REMOTE_ID )
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE ACL (
+    SUBJECTTYPE INTEGER NOT NULL,
+    SUBJECTID   INTEGER NOT NULL,
+    ACTIONS     INTEGER NOT NULL,
+    OBJECTTYPE  INTEGER NOT NULL,
+    OBJECTID    INTEGER NOT NULL
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX2000A ON ACL ( OBJECTTYPE, SUBJECTTYPE, SUBJECTID, OBJECTID, ACTIONS );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX IX2000B ON ACL ( SUBJECTTYPE, OBJECTTYPE, OBJECTID );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE VAULT_RESOURCES (
+     RESOURCE_NAME VARCHAR(255) NOT NULL,
+     CONSTRAINT PK2010 PRIMARY KEY (RESOURCE_NAME)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE VAULT_DATA (
+    RESOURCE_NAME VARCHAR(255) NOT NULL,
+    USER_DN VARCHAR(255) NOT NULL,
+    USERID VARCHAR(255),
+    PWD VARCHAR(255),
+    BINARY_DATA LONG VARCHAR FOR BIT DATA,
+    CONSTRAINT PK2020 PRIMARY KEY (RESOURCE_NAME, USER_DN),
+    CONSTRAINT FK2020 FOREIGN KEY (RESOURCE_NAME) REFERENCES VAULT_RESOURCES (RESOURCE_NAME) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE SCHEMA WPSPCO;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.FORMAT (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(100) NOT NULL,
+    IS_INDEX_CONTENT CHAR(1) DEFAULT 'N' NOT NULL,
+    USE_SMODE_PLUGIN CHAR(1) DEFAULT 'N' NOT NULL,
+    MGR_CLASSNAME VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK1000 PRIMARY KEY (OID),
+    CONSTRAINT UN1000 UNIQUE (NAME)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.FORMAT_TAG (
+    FORMAT_OID INTEGER NOT NULL,
+    TAG_NAME VARCHAR(255) NOT NULL,
+    COLUMN_NAME VARCHAR(255) NOT NULL,
+    METHOD_NAME VARCHAR(255) NOT NULL,
+    CONSTRAINT PK1010 PRIMARY KEY (FORMAT_OID, TAG_NAME),
+    CONSTRAINT FK1010 FOREIGN KEY ( FORMAT_OID ) REFERENCES WPSPCO.FORMAT ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.FORMAT_ATTR (
+    FORMAT_OID INTEGER NOT NULL,
+    ATTRIBUTE_NAME VARCHAR(255) NOT NULL,
+    IS_INITIAL CHAR(1) DEFAULT 'N' NOT NULL,
+    VIEWABLE_SMODE CHAR(1) DEFAULT 'N' NOT NULL,
+    VIEWABLE_TMODE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_INDEXED CHAR(1) DEFAULT 'N' NOT NULL,
+    CONSTRAINT PK1020 PRIMARY KEY (FORMAT_OID, ATTRIBUTE_NAME),
+    CONSTRAINT FK1020 FOREIGN KEY ( FORMAT_OID ) REFERENCES WPSPCO.FORMAT ( OID ) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.RES_COLLECTION (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(64) NOT NULL,
+    STATE INTEGER NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK1030 PRIMARY KEY (OID)
+);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX WPSPCO.IX1030A ON WPSPCO.RES_COLLECTION ( OID, NAME );
+0 rows inserted/updated/deleted
+ij> CREATE INDEX WPSPCO.IX1030B ON WPSPCO.RES_COLLECTION ( NAME );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.WORKINGSET (
+    URI VARCHAR(255) NOT NULL,
+    RESOURCEID VARCHAR(155) NOT NULL,
+    TITLE VARCHAR(100),
+    DESCRIPTION VARCHAR(1000),
+    CREATOR VARCHAR(100),
+    CONTRIBUTOR VARCHAR(100),
+    SOURCE VARCHAR(100),
+    DCDATE DATE,
+    COVERAGE VARCHAR(100),
+    IDENTIFIER VARCHAR(255),
+    LANG VARCHAR(100),
+    PUBLISHER VARCHAR(100),
+    RELATION VARCHAR(100),
+    RIGHTS VARCHAR(100),
+    SUBJECT VARCHAR(100),
+    FORMAT VARCHAR(100),
+    DCTYPE VARCHAR(100),
+    CONTENTSIZE BIGINT,
+    FULLCONTENT LONG VARCHAR FOR BIT DATA,
+    ISINDEXED CHAR(1) DEFAULT '0' NOT NULL,
+    MARKEDFORDEL CHAR(1) DEFAULT '0' NOT NULL,
+    CONSTRAINT PK1040 PRIMARY KEY (URI)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.URI_LIST (
+    URI VARCHAR(255) NOT NULL,
+    CONTENTURI VARCHAR(255) NOT NULL,
+    CONSTRAINT FK1050 FOREIGN KEY (URI) REFERENCES WPSPCO.WORKINGSET (URI) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.RSS_ITEM (
+    TITLE VARCHAR(155) NOT NULL,
+    DESCRIPTION VARCHAR(1000),
+    LINK VARCHAR(512),
+    CHANNELTITLE VARCHAR(512),
+    CONTENT VARCHAR(1000),
+    ISINDEXED CHAR(1) DEFAULT '0',
+    MARKEDFORDEL CHAR(1) DEFAULT '0',
+    CONSTRAINT PK1060 PRIMARY KEY (TITLE)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.RES_UPDATES (
+    RESCOLLNAME VARCHAR(100),
+    RESOURCEID VARCHAR(155) NOT NULL,
+    STATE INTEGER NOT NULL,
+    CONTENTFORMAT VARCHAR(100) NOT NULL
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.PATH (
+    PATH VARCHAR(105) NOT NULL,
+    RESCOLLNAME VARCHAR(100) NOT NULL
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.RES_INFO (
+    OID INTEGER NOT NULL,
+    URI VARCHAR(255) NOT NULL,
+    RESOURCE_ID VARCHAR(155) NOT NULL,
+    CONTENT_FORMAT VARCHAR(100) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK1090 PRIMARY KEY (OID),
+    CONSTRAINT UN1090 UNIQUE (URI)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.RES_INFO_CAT (
+    RESOURCE_INFO_OID INTEGER NOT NULL,
+    CATEGORY_NUMBER INTEGER  NOT NULL,
+    IS_MEMBER CHAR(1) DEFAULT 'N' NOT NULL,
+    CONSTRAINT PK1100 PRIMARY KEY (RESOURCE_INFO_OID, CATEGORY_NUMBER),
+    CONSTRAINT FK1100 FOREIGN KEY (RESOURCE_INFO_OID) REFERENCES WPSPCO.RES_INFO (OID) ON DELETE CASCADE
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.CONTENT_CAT (
+    OID INTEGER NOT NULL,
+    CATEGORY_NUMBER INTEGER NOT NULL,
+    CATEGORY_NAME VARCHAR(100) NOT NULL,
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK1110 PRIMARY KEY (OID),
+    CONSTRAINT UN1110 UNIQUE (CATEGORY_NUMBER)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE WPSPCO.PUBLISH_STATUS (
+    OID INTEGER NOT NULL,
+    N_PUBLISHED INTEGER NOT NULL,
+    N_DOCUMENTS INTEGER NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CONSTRAINT PK1120 PRIMARY KEY (OID)
+);
+0 rows inserted/updated/deleted
+ij> --END OF WEBSPERE PORTTAL CASES
+---SOME TEST CASES GOT FROM DB2 TESTS.
+--some test cases got from db2 tests.
+CREATE SCHEMA refint;
+0 rows inserted/updated/deleted
+ij> set schema refint ;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E010_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              C3  INTEGER NOT NULL,
+                              C4  INTEGER,
+                              C5  DECIMAL(9,3) NOT NULL,
+                              C6  FLOAT,
+                              C7  VARCHAR(20) NOT NULL,
+                              C8  LONG VARCHAR,
+                              C9  DATE NOT NULL,
+                              C10 TIME,
+                              C11 TIMESTAMP,
+                              PRIMARY KEY (C0, C1, C3, C9),
+                              CONSTRAINT E010_T1_SELFREF 
+                              FOREIGN KEY (C0b, C2, C4, C9)
+                              REFERENCES refint.E010_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E010_V1 AS SELECT * FROM refint.E010_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E020_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              C0c  CHAR(3),
+                              C3 CHAR(3),
+                              PRIMARY KEY (C0, C1),
+                              CONSTRAINT E020_T1_SELFREF  FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E020_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E030_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0, C1),
+                              CONSTRAINT E030_T1_SELFREF FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E030_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E110_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0, C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E110_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b CHAR(3),
+                              C2  CHAR(3)  ,
+                              CONSTRAINT E110_T1_T2 FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E110_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E110_V1 AS SELECT * FROM refint.E110_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E110_V2 AS SELECT * FROM refint.E110_T2;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E210_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E210_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E210_T1_T2  FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E210_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E210_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              CONSTRAINT FK12 FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E210_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E210_V1 AS SELECT * FROM refint.E210_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E210_V2 (C1, C2) AS
+    SELECT refint.E210_T2.C1, refint.E210_T3.C1
+    FROM refint.E210_T2, refint.E210_T3
+    WHERE refint.E210_T2.C1 = refint.E210_T3.C1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E120_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0, C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E120_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b CHAR(3),
+                              C2 CHAR(3),
+                              CONSTRAINT E120_T1_T2  FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E120_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E120_V1 AS SELECT * FROM refint.E120_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E120_V2 AS SELECT * FROM refint.E120_V1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.RJCE120_T1 (C0 INTEGER NOT NULL,
+                                 C1 INTEGER NOT NULL,
+                                 C2 INTEGER,
+                                 PRIMARY KEY (C0, C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.RJCE120_T2 (C0 INTEGER NOT NULL,
+                                 C1 INTEGER NOT NULL,
+                                 C0b   INTEGER,
+                                 C2   INTEGER,
+                                 PRIMARY KEY (C0, C1),
+                                 CONSTRAINT RJCE120_T1_T2 FOREIGN KEY (C0b, C2)
+                                 REFERENCES refint.RJCE120_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.RJCE120_V1 AS SELECT * FROM refint.RJCE120_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.RJCE120_V2 AS SELECT * FROM refint.RJCE120_V1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E130_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0, C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E130_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2   CHAR(3),
+                              CONSTRAINT E130_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E130_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E130_V1 AS SELECT * FROM refint.E130_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E140_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E140_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT E140_T1_T2  FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E140_T1 ON UPDATE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E140_V1 AS SELECT * FROM refint.E140_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E220_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0, C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E220_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT FK13 FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E220_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E220_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT FK32 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E220_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E230_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E230_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK14 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E230_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E230_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT FK33 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E230_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E230_V1 AS SELECT * FROM refint.E230_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E230_V2 (C1, C2) AS
+    SELECT refint.E230_T2.C1, refint.E230_T3.C2
+    FROM refint.E230_T2, refint.E230_T3;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E240_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3),
+                              C2  CHAR(3)   NOT NULL,
+                              C3  SMALLINT NOT NULL,
+                              C4  INTEGER,
+                              C5  DECIMAL(9,3) NOT NULL,
+                              C6  VARCHAR(20) NOT NULL,
+                              C7  DATE NOT NULL,
+                              PRIMARY KEY (C0, C2, C6, C7));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E240_T2 (C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3)  ,
+                              C3  SMALLINT NOT NULL,
+                              C4  DECIMAL(9,3) NOT NULL,
+                              C5  VARCHAR(20),
+                              C6  TIME,
+                              C7  DATE NOT NULL,
+                              PRIMARY KEY (C0,C1,C3),
+                              CONSTRAINT E240_T1_T2_A FOREIGN KEY (C0a,C1,C5,C7)
+                              REFERENCES refint.E240_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E240_T3 (C0 CHAR(3),
+                              C0a CHAR(3),
+                              C1 CHAR(3),
+                              C2  CHAR(3)  ,
+                              C3  SMALLINT NOT NULL,
+                              C4  DECIMAL(9,3) NOT NULL,
+                              C5  VARCHAR(20),
+                              C6  TIME,
+                              C7  DATE NOT NULL,
+                              CONSTRAINT E240_T1_T2_B
+                              FOREIGN KEY (C0a, C1, C5, C7)
+                              REFERENCES refint.E240_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E240_V1 AS SELECT * FROM refint.E240_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E240_V2 (C1,C2,C3,C4,C5,C6,C7) AS
+    SELECT refint.E240_T2.C1, refint.E240_T2.C2, refint.E240_T3.C3,
+    refint.E240_T3.C4, refint.E240_T3.C5, refint.E240_T2.C6,
+    refint.E240_T2.C7
+    FROM refint.E240_T2,refint.E240_T3;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E250_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E250_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E250_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E250_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E250_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT  E250_T1_T3 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E250_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E250_V1 AS SELECT * FROM refint.E250_T1;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E250_V2 (C1 ,C2) AS
+    SELECT refint.E250_T2.C1, refint.E250_T3.C2
+    FROM refint.E250_T2, refint.E250_T3
+    WHERE refint.E250_T2.C1 = refint.E250_T3.C1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E260_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E260_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT E260_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E260_T1);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E260_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT E260_T1_T3  FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E260_T1);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E260_V1 AS SELECT * FROM refint.E260_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E310_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E310_T2 (C0 INTEGER NOT NULL,
+                              C1 INTEGER NOT NULL,
+                              C2  CHAR(3)  ,
+                              C0b  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK15 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E310_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E310_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  INTEGER,
+                              C2  INTEGER,
+                              CONSTRAINT FK34 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E310_T2 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E310_V1 AS SELECT * FROM refint.E310_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E360_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E360_T2 (C0 INT NOT NULL,
+                              C1 DECIMAL(9,3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E360_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E360_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E360_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b INT,
+                              C2  DECIMAL(9,3),
+                              CONSTRAINT E360_T2_T3 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E360_T2 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E360_V1 AS SELECT * FROM refint.E360_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E370_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E370_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK16 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E370_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E370_T3 (C1 CHAR(3),
+                              C0 CHAR(3),
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              CONSTRAINT FK35 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E370_T2 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E370_V1 AS SELECT * FROM refint.E370_T1;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E340_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E340_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK17 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E340_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E340_T3 (C1 CHAR(3),
+                              C0 CHAR(3),
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              CONSTRAINT FK36 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E340_T2 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E410_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E410_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3) NOT NULL,
+                              C0b  CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK18 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E410_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E410_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C2  CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK37 FOREIGN KEY (C0a,C1)
+                              REFERENCES refint.E410_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E410_T4 (C0a CHAR(3),
+                              C1 CHAR(3),
+                              C0 CHAR(3),
+                              C0b CHAR(3),
+                              C2  CHAR(3),
+                              C3  CHAR(3),
+                              CONSTRAINT FK7 FOREIGN KEY (C0b,C2,C3)
+                              REFERENCES refint.E410_T2 ON DELETE CASCADE,
+                              CONSTRAINT FK8 FOREIGN KEY (C0a,C1,C2)
+                              REFERENCES refint.E410_T3 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E450_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E450_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3) NOT NULL,
+                              C0c  CHAR(3),
+                              C3  CHAR(3),
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK20 FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E450_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E450_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3) NOT NULL,
+                              C0c  CHAR(3),
+                              C3  CHAR(3),
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK38 FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E450_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E450_T4 (C1 CHAR(3),
+                              C0 CHAR(3),
+                              C0a CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              C3  CHAR(3),
+                              CONSTRAINT FK3 FOREIGN KEY (C0b,C2,C3)
+                              REFERENCES refint.E450_T2 ON DELETE SET NULL,
+                              CONSTRAINT FK4 FOREIGN KEY (C0a,C1,C2)
+                              REFERENCES refint.E450_T3 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E510_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E510_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK21 FOREIGN KEY (c0b,C2)
+                              REFERENCES refint.E510_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E510_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY(C0,C1),
+                              CONSTRAINT FK39 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E510_T2 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> alter table refint.E510_T1 add CONSTRAINT CYC FOREIGN KEY (C0a,C1)
+                REFERENCES refint.E510_T3 ON DELETE CASCADE;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E510_V1 AS SELECT * FROM refint.E510_T3;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E540_T1 (C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C1 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E540_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E540_T1_T2  FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E540_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E540_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E540_T2_T3 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E540_T2 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> alter table refint.E540_T1 add CONSTRAINT E540_T3_T1 FOREIGN KEY (C0a,C1)
+                              REFERENCES refint.E540_T3 ON DELETE RESTRICT;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E560_T1 (C1 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E560_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E560_T2_T1 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E560_T1 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E560_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E560_T3_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E560_T2 ON DELETE RESTRICT);
+0 rows inserted/updated/deleted
+ij> alter table refint.E560_T1  add CONSTRAINT E560_T1_T3  FOREIGN KEY (C0a,C1)
+               REFERENCES refint.E560_T3 ON DELETE CASCADE;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E550_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b CHAR(3),
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E550_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E550_T1 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E550_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E550_T2 ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> alter table refint.E550_T1 add  CONSTRAINT F550 FOREIGN KEY (C0b,C2)
+                             REFERENCES refint.E550_T3 ON DELETE SET NULL;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E570_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E570_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E570_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b CHAR(3),
+                              PRIMARY KEY (C0,C1));
+0 rows inserted/updated/deleted
+ij> alter table refint.E570_T1 add CONSTRAINT E570_T1_T3  FOREIGN KEY (C0a,C1)
+                              REFERENCES refint.E570_T3 ON DELETE CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table refint.E570_T2 add CONSTRAINT E570_T2_T1 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E570_T1 ON DELETE RESTRICT;
+0 rows inserted/updated/deleted
+ij> alter table  refint.E570_T3 add CONSTRAINT E570_T3_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E570_T2 ON DELETE SET NULL;
+0 rows inserted/updated/deleted
+ij> CREATE VIEW refint.E570_V1 AS SELECT * FROM refint.E570_T3;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E710_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              C0b CHAR(3),
+                              C3 CHAR(3),
+                              C0c CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E710_T1 ON DELETE CASCADE,
+                              FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E710_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E720_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              C0b CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E720_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E720_T2 (X1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              X3 CHAR(3),
+                              C0d CHAR(3),
+                              C3 CHAR(3),
+                              C0c CHAR(3),
+                              PRIMARY KEY (C0,X1),
+                              FOREIGN KEY (C0d,X3)
+                              REFERENCES refint.E720_T2 ON DELETE CASCADE,
+                              FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E720_T1 ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E610_T1 (C0 CHAR(3) NOT NULL,
+                              P1 CHAR(3) NOT NULL,
+                              P2 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,P1,P2));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E610_T2 (P1 CHAR(3),
+                              C0 CHAR(3) NOT NULL,
+                              P4  CHAR(3) NOT NULL,
+                              P5  CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,P4,P5));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE refint.E610_T3 (F1 CHAR(3),
+                              C0 CHAR(3),
+                              C0e CHAR(3),
+                              F2  CHAR(3),
+                              C0g CHAR(3),
+                              F3  CHAR(3),
+                              CONSTRAINT E610_T1_T3 FOREIGN KEY (C0e,F1,F2)
+                              REFERENCES refint.E610_T1,
+                              CONSTRAINT E610_T2_T3 FOREIGN KEY (C0g,F2,F3)
+                              REFERENCES refint.E610_T2)
+                              ;
+0 rows inserted/updated/deleted
+ij> ---END OF TEST CASES GOT FROM DB2 Tests.
+--START RANDOM COMPLEX LINKS
+create table t1( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t2(x int, y int not null unique, z int);
+0 rows inserted/updated/deleted
+ij> create table t3(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> create table t4(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> create table t5(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> create table t6(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> --cycle
+alter table t2 add constraint c3 foreign key (z)
+                              references t4(c1) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t4 add constraint c4 foreign key (c2)
+                              references t5(c1) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t5 add constraint c5 foreign key (c2)
+                              references t6(c1) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+0 rows inserted/updated/deleted
+ij> alter table t3 add constraint c6 foreign key (k)
+                              references t2(y) on delete cascade;
+0 rows inserted/updated/deleted
+ij> --link a self referencing table to above cycle with a SET NULL
+create table t7( a int not null primary key, b int not null  unique,
+                  x int references t7(a) ON DELETE CASCADE,
+                  z int references t7(b) ON DELETE CASCADE,
+			      w int references t6(c1) ON DELETE SET NULL);
+0 rows inserted/updated/deleted
+ij> --valide multiple paths
+create table t8( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t9(x int, y int not null unique, z int);
+0 rows inserted/updated/deleted
+ij> create table t10(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> create table t11(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> alter table t9 add constraint c7 foreign key (x)
+                              references t8(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t9 add constraint c8 foreign key (z)
+                              references t11(c1) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t10 add constraint c9 foreign key (l)
+                              references t8(a) on delete set null;
+0 rows inserted/updated/deleted
+ij> alter table t11 add constraint c10 foreign key (c1)
+                              references t10(m) on delete cascade;
+0 rows inserted/updated/deleted
+ij> --link this one first cycle case
+alter table t9 add constraint c11 foreign key (z)
+                              references t5(c1) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> --valide multiple paths
+create table t12( a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table t13(x int, y int not null unique, z int);
+0 rows inserted/updated/deleted
+ij> create table t14(l int, m int not null unique , k int );
+0 rows inserted/updated/deleted
+ij> create table t15(c1 int not null unique , c2 int);
+0 rows inserted/updated/deleted
+ij> alter table t13 add constraint c12 foreign key (x)
+                              references t12(a) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t13 add constraint c13 foreign key (z)
+                              references t15(c1) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> alter table t14 add constraint c14 foreign key (l)
+                              references t12(a) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t15 add constraint c15 foreign key (c2)
+                              references t14(m) on delete SET NULL;
+0 rows inserted/updated/deleted
+ij> --link this one to first cycle case
+alter table t12 add constraint c16 foreign key (b)
+                              references t2(y) on delete CASCADE;
+0 rows inserted/updated/deleted
+ij> alter table t2 drop constraint c2;
+0 rows inserted/updated/deleted
+ij> alter table t3 drop constraint c6;
+0 rows inserted/updated/deleted
+ij> alter table t12 drop constraint c16;
+0 rows inserted/updated/deleted
+ij> alter table t9 drop constraint c11;
+0 rows inserted/updated/deleted
+ij> alter table t9 drop constraint c7;
+0 rows inserted/updated/deleted
+ij> alter table t10 drop constraint c9;
+0 rows inserted/updated/deleted
+ij> alter table t11 drop constraint c10;
+0 rows inserted/updated/deleted
+ij> alter table t13 drop constraint c12;
+0 rows inserted/updated/deleted
+ij> alter table t14 drop constraint c14;
+0 rows inserted/updated/deleted
+ij> alter table t15 drop constraint c15;
+0 rows inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> drop table t5;
+0 rows inserted/updated/deleted
+ij> drop table t7;
+0 rows inserted/updated/deleted
+ij> drop table t6;
+0 rows inserted/updated/deleted
+ij> drop table t8;
+0 rows inserted/updated/deleted
+ij> drop table t9;
+0 rows inserted/updated/deleted
+ij> drop table t10;
+0 rows inserted/updated/deleted
+ij> drop table t11;
+0 rows inserted/updated/deleted
+ij> drop table t12;
+0 rows inserted/updated/deleted
+ij> drop table t13;
+0 rows inserted/updated/deleted
+ij> drop table t14;
+0 rows inserted/updated/deleted
+ij> drop table t15;
+0 rows inserted/updated/deleted
+ij> --END OF RANDOM COMPLEX CASE
+--FOLLOWING SQL SHOULD PASS
+CREATE TABLE Employee (
+  ssn INTEGER NOT NULL,
+  name VARCHAR(30),
+  salary INTEGER,
+  address VARCHAR(50),
+  constraint EmployeeKey PRIMARY KEY (ssn)
+);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Manages (manager_ssn INTEGER NOT NULL unique,
+  employee_ssn INTEGER NOT NULL,
+  constraint ManagesKey PRIMARY KEY (manager_ssn,employee_ssn),
+  FOREIGN KEY (employee_ssn) REFERENCES Employee(ssn)        
+  ON DELETE CASCADE ON UPDATE NO ACTION,
+  FOREIGN KEY (manager_ssn) REFERENCES Employee(ssn)
+  ON DELETE CASCADE ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Shop( 
+  shop_name VARCHAR(20)NOT NULL,
+  open_closed_times TIME,   
+  department VARCHAR(20),
+  location INTEGER CHECK(location BETWEEN 1 AND 50),
+  floor INTEGER CHECK(floor BETWEEN 1 AND 4), 
+  shift char(20), 
+  rent INTEGER,
+  tel_no INTEGER,
+  income INTEGER,
+  expenditure INTEGER,
+  manager_ssn INTEGER,
+  FOREIGN KEY (manager_ssn) REFERENCES Manages(manager_ssn)
+  ON DELETE SET NULL ON UPDATE NO ACTION,
+  constraint ShopKey PRIMARY KEY (shop_name));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Works_in (
+   ssn INTEGER NOT NULL,
+   shop_name VARCHAR(20)NOT NULL,
+   since DATE,
+   task VARCHAR(20),
+   constraint WorksInKey PRIMARY KEY (ssn, shop_name),
+   constraint fkey1 FOREIGN KEY (ssn) REFERENCES Employee
+   ON DELETE CASCADE ON UPDATE RESTRICT,
+   constraint fkey2 FOREIGN KEY (shop_name) REFERENCES Shop
+   ON DELETE NO ACTION ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Owns(ssn INTEGER NOT NULL,
+     shop_name VARCHAR(20)NOT NULL,
+     date1 DATE,
+     constraint OwnsKey PRIMARY KEY (ssn, shop_name),
+     FOREIGN KEY (ssn) REFERENCES Employee            
+     ON DELETE CASCADE ON UPDATE NO ACTION,
+     FOREIGN KEY (shop_name) REFERENCES Shop
+     ON DELETE CASCADE ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Item(item_id INTEGER NOT NULL,
+     Supplier VARCHAR(20),
+     price INTEGER,
+     department VARCHAR(20),
+     constraint ItemKey PRIMARY KEY (item_id));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Producer(producer_name VARCHAR(20) NOT NULL,
+  city VARCHAR(20),
+  address VARCHAR(50),
+  department VARCHAR(20),
+  constraint ProducerKey PRIMARY KEY (producer_name));
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Supplies (producer_name VARCHAR(20) NOT NULL,
+   item_id INTEGER NOT NULL,
+   constraint SuppliesKey PRIMARY KEY (producer_name, item_id),
+   FOREIGN KEY (item_id) REFERENCES Item              
+   ON DELETE CASCADE ON UPDATE NO ACTION,
+   FOREIGN KEY (producer_name) REFERENCES Producer
+   ON DELETE RESTRICT ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Sells( item_id INTEGER NOT NULL,
+	shop_name VARCHAR(20)NOT NULL,
+	constraint SellsKey PRIMARY KEY (item_id, shop_name),
+	FOREIGN KEY (item_id) REFERENCES Item                 
+    ON DELETE NO ACTION ON UPDATE NO ACTION,
+    FOREIGN KEY (shop_name) REFERENCES Shop
+    ON DELETE CASCADE ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Commerce(item_id INTEGER NOT NULL,
+  shop_name VARCHAR(20)NOT NULL,
+  cost INTEGER,
+  date1 DATE,
+  constraint CommerceKey PRIMARY KEY (item_id, shop_name),
+  FOREIGN KEY (item_id) REFERENCES Item               
+  ON DELETE CASCADE ON UPDATE NO ACTION,
+  FOREIGN KEY (shop_name) REFERENCES Shop
+  ON DELETE RESTRICT ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Stocks(  item_id INTEGER NOT NULL,
+  shop_name VARCHAR(20) NOT NULL,
+  available INTEGER,
+  purchased_date DATE,
+  ordered INTEGER,
+  constraint StocksKey PRIMARY KEY (item_id, shop_name),
+  FOREIGN KEY (item_id) REFERENCES Item               
+  ON DELETE CASCADE ON UPDATE NO ACTION,
+  FOREIGN KEY (shop_name) REFERENCES Shop
+  ON DELETE RESTRICT ON UPDATE NO ACTION);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Orders(  
+  producer_name VARCHAR(20) NOT NULL,
+  shop_name VARCHAR(20)NOT NULL,
+  item_id INTEGER NOT NULL,
+  receival_date DATE,
+  order_date DATE,
+  item_amount INTEGER,
+  cost INTEGER,
+  constraint OrdersKey PRIMARY KEY (item_id, shop_name, producer_name),
+  FOREIGN KEY (shop_name) REFERENCES Shop
+  ON DELETE RESTRICT ON UPDATE NO ACTION,
+  FOREIGN KEY (item_id) REFERENCES Item               
+  ON DELETE CASCADE ON UPDATE NO ACTION );
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Food(
+  item_id INTEGER NOT NULL,
+  type VARCHAR(20),
+  expiration_date DATE,
+  constraint FoodKey PRIMARY KEY (item_id),
+  FOREIGN KEY (item_id) REFERENCES Item
+  ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Media(
+    item_id INTEGER NOT NULL,
+    type VARCHAR(20),
+    author VARCHAR(50),
+    publisher VARCHAR(50),
+    title VARCHAR(20),
+    published_date DATE,
+    constraint MediaKey PRIMARY KEY (item_id),
+    FOREIGN KEY (item_id) REFERENCES Item
+    ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Clothing(
+     item_id INTEGER NOT NULL,
+     type VARCHAR(20),
+     color VARCHAR(20),
+	 cloth_size char(2),
+     brand VARCHAR(30),
+     constraint ClothingKey PRIMARY KEY (item_id),
+     FOREIGN KEY (item_id) REFERENCES Item
+     ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE Accessories(
+           item_id INTEGER NOT NULL,
+           type VARCHAR(20),
+           constraint AccessoriesKey PRIMARY KEY (item_id),
+           FOREIGN KEY (item_id) REFERENCES Item
+           ON DELETE CASCADE);
+0 rows inserted/updated/deleted
+ij> ---END
+;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/releaseCompileLocks.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/releaseCompileLocks.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,209 @@
+ij> autocommit off;
+ij> -- move static initializer tests to front, hoping to avoid class garbage
+-- collection in jdk18.  Sometimes the static initializer in the 
+-- DMLInStaticInitializer and InsertInStaticInitializer classes gets called
+-- twice in jdk118 - causing a diff.  This can happen if for some reason the
+-- JVM decides to garbage collect the class between references to the class
+-- in the course of executing the query.
+-- static initializers.
+create table t1 (s int);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create function dmlstatic() returns INT
+parameter style java language java
+external name 'org.apache.derbyTesting.functionTests.util.StaticInitializers.DMLInStaticInitializer.getANumber'
+no sql;
+0 rows inserted/updated/deleted
+ij> create function insertstatic() returns INT
+parameter style java language java
+external name 'org.apache.derbyTesting.functionTests.util.StaticInitializers.InsertInStaticInitializer.getANumber'
+no sql;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- the static initializer in DMLInStaticInitializer will select from t1 
+-- the DML will be executed within a nested query-- however all locks 
+-- on system tables which the static initializer gets should be released.
+select 
+(dmlstatic()) 
+from sys.systables where tablename = 'SYSCONGLOMERATES';
+1          
+-----------
+Caught exception SQL Exception: The external routine is not allowed to execute SQL statements.
+ERROR 38001: The external routine is not allowed to execute SQL statements.
+1          
+ij> select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> commit;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (s int);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select 
+(insertstatic()) 
+from sys.systables where tablename = 'SYSCONGLOMERATES';
+1          
+-----------
+Caught exception SQL Exception: The external routine is not allowed to execute SQL statements.
+ERROR 38001: The external routine is not allowed to execute SQL statements.
+1          
+ij> -- only two locks!
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- verify that the row went into t1.
+select * from t1;
+S          
+-----------
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> commit;
+ij> -- some really simple tests to start off.
+create table test_tab (x int);
+0 rows inserted/updated/deleted
+ij> insert into test_tab values (1);
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- earlier we would get a bunch of locks on the system catalogs 
+-- when trying to resolve the method alias.
+select count(*) from new org.apache.derby.diag.LockTable() l;
+1          
+-----------
+0          
+ij> -- select from a system catalog.
+select count(*) from sys.sysviews;
+1          
+-----------
+0          
+ij> -- look ma, no locks.
+select count(*) from new org.apache.derby.diag.LockTable() l;
+1          
+-----------
+0          
+ij> insert into test_tab values (2);
+1 row inserted/updated/deleted
+ij> -- only see locks on test_tab, none on system catalogs
+-- 
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l
+order by 1;
+TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ROW  |X   |TEST_TAB                                                                                                                        |(1,8)               |GRANT
+TABLE|IX  |TEST_TAB                                                                                                                        |Tablelock           |GRANT
+ij> -- bugid 3214, atlas case: 962505
+-- selecting from a table would hold locks which would disallow creating
+-- another table.
+drop table t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> create table t1 (x int);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> select * from t1;
+X          
+-----------
+ij> connect 'wombat' as conn1;
+ij(CONN1)> -- this should not time out waiting for locks.
+create table t2 (x int);
+0 rows inserted/updated/deleted
+ij(CONN1)> drop table t2;
+0 rows inserted/updated/deleted
+ij(CONN1)> set connection connection0;
+ij(CONNECTION0)> disconnect conn1;
+ij> commit;
+ij> show connections;
+CONNECTION0* - 	jdbc:derby:wombat
+* = current connection
+ij> -- create table again to force scanning system catalogs.
+drop table test_tab;
+0 rows inserted/updated/deleted
+ij> create table test_tab (x int);
+0 rows inserted/updated/deleted
+ij> insert into test_tab values (1);
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- prepare a statement-- no locks.
+prepare cursor1 as 'update test_tab set x=2 where x=?';
+ij> select count(*) from new org.apache.derby.diag.LockTable() l;
+1          
+-----------
+0          
+ij> -- now execute it-- should see locks on test_tab
+execute cursor1 using 'values (1)';
+1 row inserted/updated/deleted
+ij> select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ROW  |X   |TEST_TAB                                                                                                                        |(1,7)               |GRANT
+TABLE|IX  |TEST_TAB                                                                                                                        |Tablelock           |GRANT
+ij> commit;
+ij> -- problem with backing index scans.
+create table t (c1 int not null primary key, c2 int references t);
+0 rows inserted/updated/deleted
+ij> insert into t values (1,1);
+1 row inserted/updated/deleted
+ij> insert into t values (2,1);
+1 row inserted/updated/deleted
+ij> commit;
+ij> prepare ps as 'select * from t where c1 = ? and c2 = ?';
+ij> -- no locks, no locks at all.
+select * from new org.apache.derby.diag.LockTable() l;
+XID            |TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE|TABLETYPE|LOCK&|INDEXNAME                                                                                                                       
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> -- clear DataDictionary cache
+create table x(c1 int);
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- try inserting into the table; no locks on system catalogs.
+prepare pi as 'insert into t values (3,2)';
+ij> select * from new org.apache.derby.diag.LockTable() l;
+XID            |TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE|TABLETYPE|LOCK&|INDEXNAME                                                                                                                       
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> commit;
+ij> -- clear DataDictionary cache
+create table x(c1 int);
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- try updating the table; no locks on system catalogs.
+prepare p1 as 'update t set c2 = c1, c1 = c2';
+ij> select * from new org.apache.derby.diag.LockTable() l;
+XID            |TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE|TABLETYPE|LOCK&|INDEXNAME                                                                                                                       
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> commit;
+ij> -- clear DataDictionary cache
+create table x(c1 int);
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- try deleting from the table; no locks on system catalogs.
+prepare p1 as 'delete from t';
+ij> select * from new org.apache.derby.diag.LockTable() l;
+XID            |TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE|TABLETYPE|LOCK&|INDEXNAME                                                                                                                       
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> commit;
+ij> -- create some triggers.
+create trigger update_of_t after update on t for each row mode db2sql values 2;
+0 rows inserted/updated/deleted
+ij> create trigger insert_of_t after insert on t for each row mode db2sql values 3;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- t has (1,1) (2,1) (3,2)
+prepare pu as 'update t set c2=2 where c1=2';
+ij> select * from new org.apache.derby.diag.LockTable() l;
+XID            |TYPE |MODE|TABLENAME                                                                                                                       |LOCKNAME            |STATE|TABLETYPE|LOCK&|INDEXNAME                                                                                                                       
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> commit;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameIndex.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameIndex.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,165 @@
+ij> -- rename index tests
+--
+autocommit off;
+ij> --
+-- negative tests
+--
+-- rename a non-existing index
+-- should fail because there is no index by name i1t1
+rename index i1t1 to i1rt1;
+ERROR 42X65: Index 'I1T1' does not exist.
+ij> --
+-- rename as some existing index name
+create table t1(c11 int, c12 int);
+0 rows inserted/updated/deleted
+ij> create index i1t1 on t1(c11);
+0 rows inserted/updated/deleted
+ij> create index i2t1 on t1(c12);
+0 rows inserted/updated/deleted
+ij> rename index i1t1 to i2t1;
+ERROR X0Y32: Index 'I2T1' already exists in Schema 'APP'.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --
+-- rename a system table's index
+set schema sys;
+0 rows inserted/updated/deleted
+ij> -- will fail because it is a system table
+rename index syscolumns_index1 to newName;
+ERROR X0Y56: 'RENAME INDEX' is not allowed on the System table 'SYS.SYSCOLUMNS'.
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> --
+-- rename an index when a view is on a table
+create table t1(c11 int, c12 int);
+0 rows inserted/updated/deleted
+ij> create index t1i1 on t1(c11);
+0 rows inserted/updated/deleted
+ij> create view v1 as select * from t1;
+0 rows inserted/updated/deleted
+ij> select * from v1;
+C11        |C12        
+-----------------------
+ij> -- this succeeds with no exceptions
+rename index t1i1 to t1i1r;
+0 rows inserted/updated/deleted
+ij> -- this succeeds with no exceptions
+select * from v1;
+C11        |C12        
+-----------------------
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- another test for views
+create table t1(c11 int not null primary key, c12 int);
+0 rows inserted/updated/deleted
+ij> create index i1t1 on t1(c11);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> create view v1 as select * from t1;
+0 rows inserted/updated/deleted
+ij> -- following rename shouldn't fail
+rename index i1t1 to i1rt1;
+ERROR 42X65: Index 'I1T1' does not exist.
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> -- even though there is no index i1t1 it still doesn't fail
+create view v1 as select * from t1;
+0 rows inserted/updated/deleted
+ij> -- this succeeds with no exceptions
+select * from v1;
+C11        |C12        
+-----------------------
+ij> rename index i1rt1 to i1t1;
+ERROR 42X65: Index 'I1RT1' does not exist.
+ij> -- now succeeds
+select * from v1;
+C11        |C12        
+-----------------------
+ij> drop view v1;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --
+-- cannot rename an index when there is an open cursor on it
+create table t1(c11 int, c12 int);
+0 rows inserted/updated/deleted
+ij> create index i1 on t1(c11);
+0 rows inserted/updated/deleted
+ij> get cursor c1 as 'select * from t1';
+ij> -- following rename should fail because of the cursor c1
+rename index i1 to i1r;
+ERROR X0X95: Operation 'RENAME INDEX' cannot be performed on object 'T1' because there is an open ResultSet dependent on that object.
+ij> close c1;
+ij> -- following rename should pass because cursor c1 has been closed
+rename index i1 to i1r;
+0 rows inserted/updated/deleted
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --
+-- creating a prepared statement on a table
+create table t1(c11 int not null primary key, c12 int);
+0 rows inserted/updated/deleted
+ij> -- bug 5685
+create index i1 on t1(c11);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> autocommit off;
+ij> prepare p1 as 'select * from t1 where c11 > ?';
+ij> execute p1 using 'values (1)';
+C11        |C12        
+-----------------------
+ij> -- doesn't fail
+rename index i1 to i1r;
+ERROR 42X65: Index 'I1' does not exist.
+ij> -- statement passes
+execute p1 using 'values (1)';
+C11        |C12        
+-----------------------
+ij> remove p1;
+ij> autocommit on;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --
+-- positive tests
+-- a column with an index on it can be renamed
+create table t3(c31 int not null primary key, c32 int);
+0 rows inserted/updated/deleted
+ij> create index i1_t3 on t3(c32);
+0 rows inserted/updated/deleted
+ij> rename index i1_t3 to i1_3r;
+0 rows inserted/updated/deleted
+ij> -- make sure that i1_t3 did get renamed. Following rename should fail to prove that.
+rename index i1_t3 to i1_3r;
+ERROR 42X65: Index 'I1_T3' does not exist.
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> --
+-- creating a prepared statement on a table
+autocommit off;
+ij> create table t3(c31 int not null primary key, c32 int);
+0 rows inserted/updated/deleted
+ij> create index i1_t3 on t3(c32);
+0 rows inserted/updated/deleted
+ij> prepare p3 as 'select * from t3 where c31 > ?';
+ij> execute p3 using 'values (1)';
+C31        |C32        
+-----------------------
+ij> -- can rename with no errors
+rename index i1_t3 to i1_t3r;
+0 rows inserted/updated/deleted
+ij> execute p3 using 'values (1)';
+C31        |C32        
+-----------------------
+ij> rename index i1_t3r to i1_t3;
+0 rows inserted/updated/deleted
+ij> -- this should pass know because we restored the original index name
+execute p3 using 'values (1)';
+C31        |C32        
+-----------------------
+ij> remove p3;
+ij> autocommit on;
+ij> drop table t3;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameTable.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameTable.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,164 @@
+ij> -- rename table tests
+-- create some database objects
+create table t1(c11 int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t2(c21 int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t3(c31 int not null primary key);
+0 rows inserted/updated/deleted
+ij> create table t4(c41 int not null primary key);
+0 rows inserted/updated/deleted
+ij> -- create table with foreign key constraint
+create table t5 (c51 int, constraint fk foreign key(c51) references t4);
+0 rows inserted/updated/deleted
+ij> create view v1 as select * from t1;
+0 rows inserted/updated/deleted
+ij> -- bug 5685
+create index i1_t3 on t3(c31);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: xxxxGENERATED-IDxxxx.
+ij> -- do some population
+insert into t1 values 11;
+1 row inserted/updated/deleted
+ij> insert into t2 values 21;
+1 row inserted/updated/deleted
+ij> insert into t2 values 22;
+1 row inserted/updated/deleted
+ij> insert into t3 values 31;
+1 row inserted/updated/deleted
+ij> insert into t3 values 32;
+1 row inserted/updated/deleted
+ij> insert into t3 values 33;
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> -- negative tests
+-- rename a non-existing table
+rename table notexists to notexists1;
+ERROR 42Y55: 'RENAME TABLE' cannot be performed on 'NOTEXISTS' because it does not exist.
+ij> -- the new table name for rename already exists
+rename table t1 to t2;
+ERROR X0Y32: Table/View 'T2' already exists in Schema 'APP'.
+ij> -- rename a system table
+rename table sys.systables to fake;
+ERROR 42X62: 'RENAME TABLE' is not allowed in the 'SYS' schema.
+ij> -- rename a view
+rename table v1 to fake;
+ERROR 42Y62: 'RENAME TABLE' is not allowed on 'APP.V1' because it is a view.
+ij> -- cannot rename a table when there is an open cursor on it
+get cursor c1 as 'select * from t2';
+ij> rename table t2 to fake;
+ERROR X0X95: Operation 'RENAME' cannot be performed on object 'T2' because there is an open ResultSet dependent on that object.
+ij> close c1;
+ij> -- cannot rename a table when there is a view on it
+rename table t1 to fake;
+ERROR X0Y23: Operation 'RENAME' cannot be performed on object 'T1' because VIEW 'V1' is dependent on that object.
+ij> -- cannot rename because t5's foreign key depends on t4
+rename table t4 to fake;
+ERROR X0Y25: Operation 'RENAME' cannot be performed on object 'xxxxGENERATED-IDxxxx' because CONSTRAINT 'FK' is dependent on that object.
+ij> -- only dropping the fk constraint can allow the table to be renamed
+alter table t5 drop constraint fk;
+0 rows inserted/updated/deleted
+ij> -- this statement should not fail
+rename table t4 to realTab;
+0 rows inserted/updated/deleted
+ij> -- positive tests
+select * from t3;
+C31        
+-----------
+31         
+32         
+33         
+ij> -- can rename a table when there is an index defined on it
+rename table t3 to t3r;
+0 rows inserted/updated/deleted
+ij> select * from t3r;
+C31        
+-----------
+31         
+32         
+33         
+ij> -- creating a prepared statement on a table
+autocommit off;
+ij> prepare p3 as 'select * from t3r where c31 > ?';
+ij> execute p3 using 'values (30)';
+C31        
+-----------
+31         
+32         
+33         
+ij> -- can rename with no errors
+rename table t3r to t3;
+0 rows inserted/updated/deleted
+ij> -- but the execute statement will fail
+execute p3 using 'values (30)';
+ERROR 42X05: Table 'T3R' does not exist.
+ij> remove p3;
+ij> autocommit on;
+ij> -- creating a table with triggers defined on it
+create table t6 (c61 int default 1);
+0 rows inserted/updated/deleted
+ij> create table t7(c71 int);
+0 rows inserted/updated/deleted
+ij> -- bug 5684
+create trigger t7insert after insert on t7 referencing new as NEWROW for each row mode db2sql insert into t6 values(NEWROW.c71);
+0 rows inserted/updated/deleted
+ij> insert into t7 values(1);
+1 row inserted/updated/deleted
+ij> -- bug 5683. Should fail
+rename table t7 to t7r;
+ERROR X0Y25: Operation 'RENAME' cannot be performed on object 'T7' because TRIGGER 'T7INSERT' is dependent on that object.
+ij> select * from t7r;
+ERROR 42X05: Table 'T7R' does not exist.
+ij> select * from t7;
+C71        
+-----------
+1          
+ij> rename table t6 to t6r;
+0 rows inserted/updated/deleted
+ij> insert into t7 values(3);
+ERROR 42X05: Table 'T6' does not exist.
+ij> select * from t6r;
+C61        
+-----------
+1          
+ij> select * from t7r;
+ERROR 42X05: Table 'T7R' does not exist.
+ij> -- Rename should fail if there is a check constraint
+create table tcheck (i int check(i>5));
+0 rows inserted/updated/deleted
+ij> rename table tcheck to tcheck1;
+ERROR X0Y25: Operation 'RENAME' cannot be performed on object 'TCHECK' because CONSTRAINT 'xxxxGENERATED-IDxxxx' is dependent on that object.
+ij> drop table tcheck;
+0 rows inserted/updated/deleted
+ij> -- Rename should pass after dropping the check constriant
+create table tcheck (i int, j int, constraint tcon check (i+j>2));
+0 rows inserted/updated/deleted
+ij> rename table tcheck to tcheck1;
+ERROR X0Y25: Operation 'RENAME' cannot be performed on object 'TCHECK' because CONSTRAINT 'TCON' is dependent on that object.
+ij> alter table tcheck drop constraint tcon;
+0 rows inserted/updated/deleted
+ij> rename table tcheck to tcheck1;
+0 rows inserted/updated/deleted
+ij> select * from tcheck1;
+I          |J          
+-----------------------
+ij> drop table tcheck1;
+0 rows inserted/updated/deleted
+ij> -- clean up
+drop view v1;
+0 rows inserted/updated/deleted
+ij> 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> drop table realTab;
+0 rows inserted/updated/deleted
+ij> drop table t5;
+0 rows inserted/updated/deleted
+ij> drop table t6r;
+0 rows inserted/updated/deleted
+ij> drop table t7r;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T7R' because it does not exist.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/reopenScan.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/reopenScan.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,226 @@
+ij> --
+-- Test reopening scans.  A in subquery generates
+-- a lot of reopen requests to the underlying scan.
+-- We are used to having to reopen something like a
+-- base table scan, but we need to be careful reopening
+-- things like join nodes.  This test is to ensure
+-- that we don't leave around any state when reopening
+-- various complex nodes.
+drop table x;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'X' because it does not exist.
+ij> drop table y;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'Y' because it does not exist.
+ij> drop table z;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'Z' because it does not exist.
+ij> create table x (x int);
+0 rows inserted/updated/deleted
+ij> create table y (x int);
+0 rows inserted/updated/deleted
+ij> create table z (x int);
+0 rows inserted/updated/deleted
+ij> insert into x values 1,2,3;
+3 rows inserted/updated/deleted
+ij> insert into y values 1,2,3;
+3 rows inserted/updated/deleted
+ij> insert into z values 3,2,3,2;
+4 rows inserted/updated/deleted
+ij> select x from y where x in (select x from x);
+X          
+-----------
+1          
+2          
+3          
+ij> select x from z where x in (1,2,3);
+X          
+-----------
+3          
+2          
+3          
+2          
+ij> --
+-- nested loop
+--
+-- one row right side
+select x from z where x in (select x from y where x in (select x from x));
+X          
+-----------
+3          
+2          
+3          
+2          
+ij> -- not one row right side
+select x from z where x in (select x.x from x,y where x.x=y.x);
+X          
+-----------
+3          
+2          
+3          
+2          
+ij> --
+-- hash join
+--
+select x from z where x in (select x.x from x,y where x.x=y.x);
+X          
+-----------
+3          
+2          
+3          
+2          
+ij> --
+-- outer join
+--
+select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+X          
+-----------
+3          
+2          
+3          
+2          
+ij> delete from y;
+3 rows inserted/updated/deleted
+ij> insert into y values 0,1,5,2,2;
+5 rows inserted/updated/deleted
+ij> select x.x from x left outer join y on (y.x=x.x);
+X          
+-----------
+1          
+2          
+2          
+3          
+ij> select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+X          
+-----------
+3          
+2          
+3          
+2          
+ij> delete from x;
+3 rows inserted/updated/deleted
+ij> insert into x values 0,1,5,2,2;
+5 rows inserted/updated/deleted
+ij> delete from y;
+5 rows inserted/updated/deleted
+ij> insert into y values 1,2,3;
+3 rows inserted/updated/deleted
+ij> select x.x from x left outer join y on (y.x=x.x);
+X          
+-----------
+0          
+1          
+5          
+2          
+2          
+ij> select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+X          
+-----------
+2          
+2          
+ij> insert into z values 1,5;
+2 rows inserted/updated/deleted
+ij> select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+X          
+-----------
+2          
+2          
+1          
+5          
+ij> --
+-- aggregate result set
+--
+delete from x;
+5 rows inserted/updated/deleted
+ij> delete from y;
+3 rows inserted/updated/deleted
+ij> delete from z;
+6 rows inserted/updated/deleted
+ij> insert into x values 1,2,3;
+3 rows inserted/updated/deleted
+ij> insert into y values 1,2,3;
+3 rows inserted/updated/deleted
+ij> insert into z values 3,2,666,3,2,null,2;
+7 rows inserted/updated/deleted
+ij> select x from z where x in (select x from x group by x);
+X          
+-----------
+3          
+2          
+3          
+2          
+2          
+ij> select x from z where x in (select max(x) from x group by x);
+X          
+-----------
+3          
+2          
+3          
+2          
+2          
+ij> select x from z where x in (select max(x) from x);
+X          
+-----------
+3          
+3          
+ij> select x from z where x in (select sum(distinct x) from x group by x);
+X          
+-----------
+3          
+2          
+3          
+2          
+2          
+ij> insert into x values 1,1,2,2,2,5,5,null,6;
+9 rows inserted/updated/deleted
+ij> select x from z where x in (select sum(distinct x) from x group by x);
+X          
+-----------
+3          
+WARNING 01003: Null values were eliminated from the argument of a column function.
+2          
+3          
+2          
+2          
+ij> --
+-- union
+--
+delete from x;
+12 rows inserted/updated/deleted
+ij> delete from y;
+3 rows inserted/updated/deleted
+ij> delete from z;
+7 rows inserted/updated/deleted
+ij> insert into x values null,2,3;
+3 rows inserted/updated/deleted
+ij> insert into y values 1,2,null;
+3 rows inserted/updated/deleted
+ij> insert into z values 3,2,666,3,2,null,2;
+7 rows inserted/updated/deleted
+ij> select x from z where x in (select x from x union select x from y);
+X          
+-----------
+3          
+2          
+3          
+2          
+2          
+ij> --
+-- normalize
+--
+delete from x;
+3 rows inserted/updated/deleted
+ij> delete from y;
+3 rows inserted/updated/deleted
+ij> delete from z;
+7 rows inserted/updated/deleted
+ij> create table n (x smallint);
+0 rows inserted/updated/deleted
+ij> insert into n values 1,2,3;
+3 rows inserted/updated/deleted
+ij> insert into x values 1,2,3;
+3 rows inserted/updated/deleted
+ij> select * from x where x in (select x from n);
+X          
+-----------
+1          
+2          
+3          
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/repeat.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/repeat.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+Test repeat starting
+PASS
+Test repeat finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/runtimeinfo.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/runtimeinfo.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,65 @@
+Testing Runtimeinfo
+org.apache.derby.drda.NetworkServerControl runtimeinfo 
+----- Derby Network Server Runtime Information ---
+----- Session Information ---------------
+Session # :2
+Database :wombat;create=true
+User :APP
+# Statements:0
+Prepared Statement Information: 
+	Stmt ID		SQLText
+	-------------	-----------
+Session # :3
+-----
+# Connection Threads : 2
+# Active Sessions : 2
+# Waiting  Sessions : 0
+Total Memory : #####	Free Memory : #####
+End test
+Testing Runtimeinfo (locale)
+-----Duser.language=err -Duser.country=DE org.apache.derby.drda.NetworkServerControl runtimeinfo 
+----- Derby Network Server Runtime Information ---
+----- Session Information ---------------
+Session # :2
+Database :wombat;create=true
+User :APP
+# Statements:2
+Prepared Statement Information: 
+	Stmt ID		SQLText
+	-------------	-----------
+	SYSSH2001	SELECT count(*) from sys.systables
+	SYSSH2002	VALUES(1)
+Session # :4
+Database :wombat;create=true
+User :APP
+# Statements:2
+Prepared Statement Information: 
+	Stmt ID		SQLText
+	-------------	-----------
+	SYSSH2001	SELECT count(*) from sys.systables
+	SYSSH2002	VALUES(2)
+Session # :5
+Database :wombat;create=true
+User :APP
+# Statements:0
+Prepared Statement Information: 
+	Stmt ID		SQLText
+	-------------	-----------
+Session # :6
+-----
+# Connection Threads : 4
+# Active Sessions : 4
+# Waiting  Sessions : 0
+Total Memory : #####	Free Memory : #####
+End test (locale)
+Testing Runtimeinfo after closing connectiosn
+org.apache.derby.drda.NetworkServerControl runtimeinfo 
+----- Derby Network Server Runtime Information ---
+----- Session Information ---------------
+Session # :7
+-----
+# Connection Threads : 4
+# Active Sessions : 1
+# Waiting  Sessions : 0
+Total Memory : #####	Free Memory : #####
+End test

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/schemas.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/schemas.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,943 @@
+ij> --
+-- this test shows the current supported schema functionality, which
+-- isn't much.  Currently, we have no CREATE SCHEMA statement, though
+-- we do understand schema names in table names
+--
+-- Catalog names are not supported, and result in syntax errors when used.
+--
+create table myschem.t(c int);
+0 rows inserted/updated/deleted
+ij> insert into t values (1);
+ERROR 42X05: Table 'T' does not exist.
+ij> insert into blah.t values (2);
+ERROR 42Y07: Schema 'BLAH' does not exist
+ij> insert into blah.blah.t values (3);
+ERROR 42X01: Syntax error: Encountered "." at line 1, column 22.
+ij> insert into blah.blah.blah.t values (3);
+ERROR 42X01: Syntax error: Encountered "." at line 1, column 22.
+ij> select "goofy name".t.c  from "goofy name".t;
+ERROR 42Y07: Schema 'goofy name' does not exist
+ij> -- catalog name not supported:
+create table mycat.myschem.s(c int);
+ERROR 42X01: Syntax error: Encountered "." at line 2, column 27.
+ij> -- name too long:
+create table myworld.mycat.myschem.s(c int);
+ERROR 42X01: Syntax error: Encountered "." at line 2, column 27.
+ij> create table myschem.s(c int);
+0 rows inserted/updated/deleted
+ij> insert into s values (1);
+ERROR 42X05: Table 'S' does not exist.
+ij> insert into honk.s values (2);
+ERROR 42Y07: Schema 'HONK' does not exist
+ij> insert into honk.blat.s values (3);
+ERROR 42X01: Syntax error: Encountered "." at line 1, column 22.
+ij> insert into loud.honk.blat.s values (4);
+ERROR 42X01: Syntax error: Encountered "." at line 1, column 22.
+ij> -- Catalog names in column expressions cause syntax errors.  Rather than
+-- fix this, I am checking it in this way, considering that no client we
+-- know of uses catalogs.
+--							-	Jeff
+--
+-- select honk.blat.s.c from honk.blat.s;
+drop table xyzzy.t;
+ERROR 42Y07: Schema 'XYZZY' does not exist
+ij> -- catalog name not supported:
+drop table goodness.gosh.s;
+ERROR 42X01: Syntax error: Encountered "." at line 2, column 25.
+ij> -- finds s, schema name ignored:
+drop table gosh.s;
+ERROR 42Y07: Schema 'GOSH' does not exist
+ij> -- tests for qualified names in select, relative to method invocations
+create table mytab (i int);
+0 rows inserted/updated/deleted
+ij> create table APP.mytab2 (i int);
+0 rows inserted/updated/deleted
+ij> insert into mytab values 1,2,3;
+3 rows inserted/updated/deleted
+ij> insert into APP.mytab2 values 1,2,3;
+3 rows inserted/updated/deleted
+ij> -- plain and just table names match up fine
+select i, mytab.i from mytab;
+I          |I          
+-----------------------
+1          |1          
+2          |2          
+3          |3          
+ij> -- schema names on columns
+select APP.mytab2.i from APP.mytab2;
+I          
+-----------
+1          
+2          
+3          
+ij> select APP.mytab2.i from mytab2;
+I          
+-----------
+1          
+2          
+3          
+ij> select mytab2.i from APP.mytab2;
+I          
+-----------
+1          
+2          
+3          
+ij> -- schema names correlation names:
+select m.i from APP.mytab2 m;
+I          
+-----------
+1          
+2          
+3          
+ij> -- syntax errors on catalog names
+select nocatalogs.APP.mytab.i from mytab2;
+ERROR 42X04: Column 'NOCATALOGS.APP.MYTAB' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NOCATALOGS.APP.MYTAB' is not a column in the target table.
+ij> drop table mytab;
+0 rows inserted/updated/deleted
+ij> drop table APP.mytab2;
+0 rows inserted/updated/deleted
+ij> ------------------------------------------------
+--
+-- Now, we'll try to create and drop some schemas
+--
+------------------------------------------------
+create schema app;
+ERROR X0Y68: Schema 'APP' already exists.
+ij> create schema sys;
+ERROR 42939: An object cannot be created with the schema name 'SYS'.
+ij> -- negative drop test
+drop schema does_not_exist RESTRICT;
+ERROR 42Y07: Schema 'DOES_NOT_EXIST' does not exist
+ij> -- negative create test - should not be able to create existing system schemas;
+create schema app;
+ERROR X0Y68: Schema 'APP' already exists.
+ij> create schema APP;
+ERROR X0Y68: Schema 'APP' already exists.
+ij> create schema sys;
+ERROR 42939: An object cannot be created with the schema name 'SYS'.
+ij> create schema SYS;
+ERROR 42939: An object cannot be created with the schema name 'SYS'.
+ij> create schema sysibm;
+ERROR 42939: An object cannot be created with the schema name 'SYSIBM'.
+ij> create schema SYSIBM;
+ERROR 42939: An object cannot be created with the schema name 'SYSIBM'.
+ij> create schema syscat;
+ERROR 42939: An object cannot be created with the schema name 'SYSCAT'.
+ij> create schema SYSCAT;
+ERROR 42939: An object cannot be created with the schema name 'SYSCAT'.
+ij> create schema sysfun;
+ERROR 42939: An object cannot be created with the schema name 'SYSFUN'.
+ij> create schema SYSFUN;
+ERROR 42939: An object cannot be created with the schema name 'SYSFUN'.
+ij> create schema sysproc;
+ERROR 42939: An object cannot be created with the schema name 'SYSPROC'.
+ij> create schema SYSPROC;
+ERROR 42939: An object cannot be created with the schema name 'SYSPROC'.
+ij> create schema sysstat;
+ERROR 42939: An object cannot be created with the schema name 'SYSSTAT'.
+ij> create schema SYSSTAT;
+ERROR 42939: An object cannot be created with the schema name 'SYSSTAT'.
+ij> create schema syscs_diag;
+ERROR 42939: An object cannot be created with the schema name 'SYSCS_DIAG'.
+ij> create schema SYSCS_DIAG;
+ERROR 42939: An object cannot be created with the schema name 'SYSCS_DIAG'.
+ij> create schema syscs_util;
+ERROR 42939: An object cannot be created with the schema name 'SYSCS_UTIL'.
+ij> create schema SYSCS_UTIL;
+ERROR 42939: An object cannot be created with the schema name 'SYSCS_UTIL'.
+ij> create schema nullid;
+ERROR X0Y68: Schema 'NULLID' already exists.
+ij> create schema NULLID;
+ERROR X0Y68: Schema 'NULLID' already exists.
+ij> create schema sqlj;
+ERROR X0Y68: Schema 'SQLJ' already exists.
+ij> create schema SQLJ;
+ERROR X0Y68: Schema 'SQLJ' already exists.
+ij> -- negative create test - should not be able to objects in system schemas
+create table syscat.foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCAT' schema.
+ij> create table sysfun.foo2 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSFUN' schema.
+ij> create table sysproc.foo3 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSPROC' schema.
+ij> create table sysstat.foo4 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSSTAT' schema.
+ij> create table syscs_diag.foo6 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_DIAG' schema.
+ij> create table nullid.foo7 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'NULLID' schema.
+ij> create table sysibm.foo8 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSIBM' schema.
+ij> create table sqlj.foo8 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SQLJ' schema.
+ij> create table syscs_util.foo9 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_UTIL' schema.
+ij> create table SYSCAT.foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCAT' schema.
+ij> create table SYSFUN.foo2 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSFUN' schema.
+ij> create table SYSPROC.foo3 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSPROC' schema.
+ij> create table SYSSTAT.foo4 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSSTAT' schema.
+ij> create table SYSCS_DIAG.foo6 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_DIAG' schema.
+ij> create table SYSIBM.foo8 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSIBM' schema.
+ij> create table SQLJ.foo8 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SQLJ' schema.
+ij> create table SYSCS_UTIL.foo9 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_UTIL' schema.
+ij> -- negative drop test - should not be able to drop system schema's
+drop schema app RESTRICT;
+0 rows inserted/updated/deleted
+ij> drop schema APP RESTRICT;
+ERROR 42Y07: Schema 'APP' does not exist
+ij> drop schema sys RESTRICT;
+ERROR 42Y67: Schema 'SYS' cannot be dropped.
+ij> drop schema SYS RESTRICT;
+ERROR 42Y67: Schema 'SYS' cannot be dropped.
+ij> drop schema sysibm RESTRICT;
+ERROR 42Y67: Schema 'SYSIBM' cannot be dropped.
+ij> drop schema SYSIBM RESTRICT;
+ERROR 42Y67: Schema 'SYSIBM' cannot be dropped.
+ij> drop schema syscat RESTRICT;
+ERROR 42Y67: Schema 'SYSCAT' cannot be dropped.
+ij> drop schema SYSCAT RESTRICT;
+ERROR 42Y67: Schema 'SYSCAT' cannot be dropped.
+ij> drop schema sysfun RESTRICT;
+ERROR 42Y67: Schema 'SYSFUN' cannot be dropped.
+ij> drop schema SYSFUN RESTRICT;
+ERROR 42Y67: Schema 'SYSFUN' cannot be dropped.
+ij> drop schema sysproc RESTRICT;
+ERROR 42Y67: Schema 'SYSPROC' cannot be dropped.
+ij> drop schema SYSPROC RESTRICT;
+ERROR 42Y67: Schema 'SYSPROC' cannot be dropped.
+ij> drop schema sysstat RESTRICT;
+ERROR 42Y67: Schema 'SYSSTAT' cannot be dropped.
+ij> drop schema SYSSTAT RESTRICT;
+ERROR 42Y67: Schema 'SYSSTAT' cannot be dropped.
+ij> drop schema syscs_diag RESTRICT;
+ERROR 42Y67: Schema 'SYSCS_DIAG' cannot be dropped.
+ij> drop schema SYSCS_DIAG RESTRICT;
+ERROR 42Y67: Schema 'SYSCS_DIAG' cannot be dropped.
+ij> drop schema syscs_util RESTRICT;
+ERROR 42Y67: Schema 'SYSCS_UTIL' cannot be dropped.
+ij> drop schema SYSCS_UTIL RESTRICT;
+ERROR 42Y67: Schema 'SYSCS_UTIL' cannot be dropped.
+ij> drop schema nullid RESTRICT;
+ERROR 42Y67: Schema 'NULLID' cannot be dropped.
+ij> drop schema NULLID RESTRICT;
+ERROR 42Y67: Schema 'NULLID' cannot be dropped.
+ij> drop schema sqlj RESTRICT;
+ERROR 42Y67: Schema 'SQLJ' cannot be dropped.
+ij> drop schema SQLJ RESTRICT;
+ERROR 42Y67: Schema 'SQLJ' cannot be dropped.
+ij> create schema app;
+0 rows inserted/updated/deleted
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> create table test (a int);
+0 rows inserted/updated/deleted
+ij> -- negative create test - should not be able to objects in system schemas
+set schema syscat;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCAT' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSCAT' schema.
+ij> set schema sysfun;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSFUN' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSFUN' schema.
+ij> set schema sysproc;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSPROC' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSPROC' schema.
+ij> set schema sysstat;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSSTAT' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSSTAT' schema.
+ij> set schema sysstat;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSSTAT' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSSTAT' schema.
+ij> set schema syscs_diag;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_DIAG' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSCS_DIAG' schema.
+ij> set schema syscs_util;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_UTIL' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSCS_UTIL' schema.
+ij> set schema nullid;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'NULLID' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'NULLID' schema.
+ij> set schema sysibm;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSIBM' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSIBM' schema.
+ij> set schema sqlj;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SQLJ' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SQLJ' schema.
+ij> set schema SYSCAT;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCAT' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSCAT' schema.
+ij> set schema SYSFUN;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSFUN' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSFUN' schema.
+ij> set schema SYSPROC;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSPROC' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSPROC' schema.
+ij> set schema SYSSTAT;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSSTAT' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSSTAT' schema.
+ij> set schema SYSSTAT;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSSTAT' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSSTAT' schema.
+ij> set schema SYSCS_DIAG;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_DIAG' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSCS_DIAG' schema.
+ij> set schema SYSCS_UTIL;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSCS_UTIL' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSCS_UTIL' schema.
+ij> set schema NULLID;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'NULLID' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'NULLID' schema.
+ij> set schema SYSIBM;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYSIBM' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SYSIBM' schema.
+ij> set schema SQLJ;
+0 rows inserted/updated/deleted
+ij> create table foo1 (a int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SQLJ' schema.
+ij> create view foo1 as select * from app.test;
+ERROR 42X62: 'CREATE VIEW' is not allowed in the 'SQLJ' schema.
+ij> -- Negative tests. Disable use of schemas starting with SYS
+set schema app;
+0 rows inserted/updated/deleted
+ij> create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create trigger sysblah.trig1 after update of c1 on t1 for each row mode db2sql insert into t1 values 1;
+ERROR 42X62: 'CREATE TRIGGER' is not allowed in the 'SYSBLAH' schema.
+ij> create procedure sysblah.dummy() language java external name 'NotReallyThere.NoMethod' parameter style java;
+ERROR 42X62: 'CREATE PROCEDURE' is not allowed in the 'SYSBLAH' schema.
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> -- create a schema
+create schema test;
+0 rows inserted/updated/deleted
+ij> -- create it again, should fail
+create schema test;
+ERROR X0Y68: Schema 'TEST' already exists.
+ij> -- verify it
+select schemaname, authorizationid 
+	from sys.sysschemas 
+	where schemaname = 'TEST';
+SCHEMANAME                                                                                                                      |AUTHORIZATIONID                                                                                                                 
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TEST                                                                                                                            |APP                                                                                                                             
+ij> -- create a table in test
+set schema test;
+0 rows inserted/updated/deleted
+ij> create table sampletab (c1 int check (c1 > 1), c2 char(20));
+0 rows inserted/updated/deleted
+ij> insert into sampletab values (1,'in schema: TEST');
+ERROR 23513: The check constraint 'xxxxGENERATED-IDxxxx' was violated while performing an INSERT or UPDATE on table 'TEST.SAMPLETAB'.
+ij> insert into sampletab values (2,'in schema: TEST');
+1 row inserted/updated/deleted
+ij> -- verify it
+select schemaname, tablename, descriptor
+	from sys.sysschemas s, sys.sysconglomerates c , sys.systables t
+	where t.tablename = 'SAMPLETAB' 
+		and s.schemaid = c.schemaid
+		and c.tableid = t.tableid;
+SCHEMANAME                                                                                                                      |TABLENAME                                                                                                                       |DESCRIPTOR     
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TEST                                                                                                                            |SAMPLETAB                                                                                                                       |NULL           
+ij> -- do some ddl on said table
+create index ixsampletab on sampletab(c1);
+0 rows inserted/updated/deleted
+ij> create index ix2sampletab on test.sampletab(c1);
+0 rows inserted/updated/deleted
+WARNING 01504: The new index is a duplicate of an existing index: IXSAMPLETAB.
+ij> create view vsampletab as select * from sampletab;
+0 rows inserted/updated/deleted
+ij> create view v2sampletab as select * from test.sampletab;
+0 rows inserted/updated/deleted
+ij> alter table sampletab add column c3 int;
+0 rows inserted/updated/deleted
+ij> -- switch schemas
+set schema APP;
+0 rows inserted/updated/deleted
+ij> -- create table with same name in APP
+create table sampletab (c1 int check(c1 > 1), c2 char(20));
+0 rows inserted/updated/deleted
+ij> insert into sampletab values (2,'in schema: APP');
+1 row inserted/updated/deleted
+ij> -- verify it
+--
+select schemaname, tablename, descriptor as descr
+from sys.sysschemas s, sys.sysconglomerates c , sys.systables t
+where t.tablename = 'SAMPLETAB' 
+	and s.schemaid = c.schemaid
+	and c.tableid = t.tableid
+order by schemaname, tablename;
+SCHEMANAME                                                                                                                      |TABLENAME                                                                                                                       |DESCR          
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+APP                                                                                                                             |SAMPLETAB                                                                                                                       |NULL           
+TEST                                                                                                                            |SAMPLETAB                                                                                                                       |BTREE (1)      
+TEST                                                                                                                            |SAMPLETAB                                                                                                                       |NULL           
+ij> -- select from both the tables
+select * from sampletab;
+C1         |C2                  
+--------------------------------
+2          |in schema: APP      
+ij> select * from test.sampletab;
+C1         |C2                  |C3         
+--------------------------------------------
+2          |in schema: TEST     |NULL       
+ij> -- switch to the test schema
+set schema test;
+0 rows inserted/updated/deleted
+ij> select * from sampletab;
+C1         |C2                  |C3         
+--------------------------------------------
+2          |in schema: TEST     |NULL       
+ij> select * from app.sampletab;
+C1         |C2                  
+--------------------------------
+2          |in schema: APP      
+ij> -- try a drop, should fail since we haven't
+-- cleaned out everything in the schema
+drop schema test RESTRICT;
+ERROR X0Y54: Schema 'TEST' cannot be dropped because it is not empty.
+ij> -- make sure use the correct schema for various ddl
+drop view vsampletab;
+0 rows inserted/updated/deleted
+ij> drop view v2sampletab;
+0 rows inserted/updated/deleted
+ij> drop index ixsampletab;
+0 rows inserted/updated/deleted
+ij> drop index ix2sampletab;
+ERROR 42X65: Index 'IX2SAMPLETAB' does not exist.
+ij> alter table sampletab add column c4 int;
+0 rows inserted/updated/deleted
+ij> select * from sampletab;
+C1         |C2                  |C3         |C4         
+--------------------------------------------------------
+2          |in schema: TEST     |NULL       |NULL       
+ij> -- get rid of last object in test
+drop table sampletab;
+0 rows inserted/updated/deleted
+ij> -- try a drop now, should be ok
+drop schema test RESTRICT;
+0 rows inserted/updated/deleted
+ij> -- use quoted id
+create schema "heLLo";
+0 rows inserted/updated/deleted
+ij> create schema "sys";
+0 rows inserted/updated/deleted
+ij> -- should fail
+drop schema "hello" RESTRICT;
+ERROR 42Y07: Schema 'hello' does not exist
+ij> -- ok
+drop schema "heLLo" RESTRICT;
+0 rows inserted/updated/deleted
+ij> drop schema "sys" RESTRICT;
+0 rows inserted/updated/deleted
+ij> -- try prepared statements, should fail
+prepare createSchema as 'create schema ?';
+ERROR 42X01: Syntax error: Encountered "?" at line 1, column 15.
+ij> prepare dropSchema as 'drop schema ? RESTRICT';
+ERROR 42X01: Syntax error: Encountered "?" at line 1, column 13.
+ij> --
+-- specific drop schema tests, all should fail
+--
+create schema x;
+0 rows inserted/updated/deleted
+ij> set schema x;
+0 rows inserted/updated/deleted
+ij> create view vx as select * from sys.sysschemas;
+0 rows inserted/updated/deleted
+ij> drop schema x RESTRICT;
+ERROR X0Y54: Schema 'X' cannot be dropped because it is not empty.
+ij> drop view x.vx;
+0 rows inserted/updated/deleted
+ij> create table x (x int);
+0 rows inserted/updated/deleted
+ij> drop schema x restrict;
+ERROR X0Y54: Schema 'X' cannot be dropped because it is not empty.
+ij> drop table x.x;
+0 rows inserted/updated/deleted
+ij> -- syntax not supported yet (but is in the parser)
+drop schema x cascade;
+ERROR 42X01: Syntax error: Encountered "cascade" at line 2, column 15.
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> drop schema x restrict;
+0 rows inserted/updated/deleted
+ij> --
+-- test using schema names and correlation names
+-- first test simple use of schema names
+create schema test;
+0 rows inserted/updated/deleted
+ij> set schema test;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- create the all type tables
+create table s (i int, s smallint, c char(30), vc char(30));
+0 rows inserted/updated/deleted
+ij> create table t (i int, s smallint, c char(30), vc char(30));
+0 rows inserted/updated/deleted
+ij> create table tt (ii int, ss smallint, cc char(30), vcvc char(30));
+0 rows inserted/updated/deleted
+ij> create table ttt (iii int, sss smallint, ccc char(30), vcvcvc char(30));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into s values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 0, '0', '0');
+1 row inserted/updated/deleted
+ij> insert into s values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> insert into t values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 0, '0', '0');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> insert into tt values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into tt values (0, 0, '0', '0');
+1 row inserted/updated/deleted
+ij> insert into tt values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> insert into tt values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> insert into tt values (2, 2, '2', '2');
+1 row inserted/updated/deleted
+ij> insert into ttt values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into ttt values (11, 11, '11', '11');
+1 row inserted/updated/deleted
+ij> insert into ttt values (11, 11, '11', '11');
+1 row inserted/updated/deleted
+ij> insert into ttt values (22, 22, '22', '22');
+1 row inserted/updated/deleted
+ij> commit;
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> -- test simple statements which use schema names
+insert into test.t values (2, 2, '2', '2');
+1 row inserted/updated/deleted
+ij> update test.t set s = 2 where i = 2;
+1 row inserted/updated/deleted
+ij> update test.t set s = 2 where test.t.i = 2;
+1 row inserted/updated/deleted
+ij> delete from test.t where i = 1;
+2 rows inserted/updated/deleted
+ij> select * from test.t;
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+2          |2     |2                             |2                             
+ij> insert into test.t values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> insert into test.t values (1, 1, '1', '1');
+1 row inserted/updated/deleted
+ij> -- test correlated names with tables and schema names
+select * from test.t t1;
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+2          |2     |2                             |2                             
+1          |1     |1                             |1                             
+1          |1     |1                             |1                             
+ij> -- test subqueries
+select * from test.s where exists (select test.s.* from test.t);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> select * from test.s t where exists (select t.* from test.t);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> select * from test.s u where exists (select u.* from test.t);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> -- column reference in select list
+select * from test.s where exists (select i from test.t);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> select * from test.s where exists (select test.t.i from test.t);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> -- derived table in the from list
+select 1 from test.s where exists (select * from (select * from test.t) x);
+1          
+-----------
+1          
+1          
+1          
+ij> select 1 from test.s where exists (select * from (select * from test.t) x (i, s, c, vc) );
+1          
+-----------
+1          
+1          
+1          
+ij> -- subquery in derived table
+select * from 
+(select * from test.s where exists (select * from test.t) and i = 0) a;
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+0          |0     |0                             |0                             
+ij> -- exists under an OR
+select * from test.s where (1=2) or exists (select * from test.t);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> select * from test.s where (1=1) or exists (select * from test.t where (1=2));
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> -- expression subqueries
+-- non-correlated
+select * from test.s where i = (select i from test.t where i = 0);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+0          |0     |0                             |0                             
+ij> -- ? parameter on left hand side of expression subquery
+prepare subq1 as 'select * from test.s where ? = (select i from test.t where i = 0)';
+ij> execute subq1 using 'values (0)';
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> remove subq1;
+ij> -- subquery = subquery
+select * from test.s where
+(select i from test.t where i = 0) = (select s from test.t where s = 0);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> select * from test.s t1 where
+(select i from test.t t2 where i = 0) = (select s from test.t t3 where s = 0);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> -- multiple subqueries at the same level
+select * from test.s 
+where i = (select s from test.t where s = 0) and
+	  s = (select i from test.t where i = 2);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+ij> -- nested subqueries
+select * from test.s 
+where i = (select i from test.t where s = (select i from test.t where s = 2));
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+ij> select * from test.s  t1
+where i = (select i from test.t t2 where s = (select i from test.t t3 where s = 2));
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+ij> -- correlated subqueries
+-- negative tests
+-- exists disallowed in select clause
+select (exists (select * from test.ttt 
+				where iii = (select 11 from test.tt where ii = i and ii <> 1)) ) from test.s;
+ERROR 42X01: Syntax error: Encountered "exists" at line 6, column 9.
+ij> -- multiple matches at parent level
+select * from test.s, test.t where exists (select i from test.tt);
+ERROR 42X03: Column name 'I' is in more than one table in the FROM list.
+ij> -- match is against base table, but not derived column list
+select * from test.s ss (c1, c2, c3, c4) where exists (select i from test.tt);
+ERROR 42X04: Column 'I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'I' is not a column in the target table.
+ij> select * from test.s ss (c1, c2, c3, c4) where exists (select ss.i from test.tt);
+ERROR 42X04: Column 'SS.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'SS.I' is not a column in the target table.
+ij> -- correlation name exists at both levels, but only column match is at
+-- parent level
+select * from test.s where exists (select s.i from test.tt s);
+ERROR 42X04: Column 'S.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'S.I' is not a column in the target table.
+ij> -- only match is at peer level
+select * from test.s where exists (select * from test.tt) and exists (select ii from test.t);
+ERROR 42X04: Column 'II' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'II' is not a column in the target table.
+ij> -- correlated column in a derived table
+select * from test.s, (select * from test.tt where test.s.i = ii) a;
+ERROR 42X04: Column 'TEST.S.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'TEST.S.I' is not a column in the target table.
+ij> -- positive tests
+-- skip levels to find match
+select * from test.s where exists (select * from test.ttt where iii = 
+								(select 11 from test.tt where ii = i and ii <> 1));
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+0          |0     |0                             |0                             
+ij> -- join in subquery
+select * from test.s where i in (select i from test.t, test.tt where test.s.i <> i and i = ii);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+ij> select * from test.s t1 where i in (select i from test.t t2, test.tt t3 where t1.i <> i and i = ii);
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+ij> -- joins in both query blocks
+select test.s.i, test.t.i from test.s, test.t 
+where test.t.i = (select ii from test.ttt, test.tt where test.s.i = test.t.i and test.t.i = test.tt.ii and iii = 22 and ii <> 1);
+I          |I          
+-----------------------
+0          |0          
+ij> select t1.i, t2.i from test.s t1, test.t t2 
+where t2.i = (select ii from test.ttt t3, test.tt t4 where t1.i = t2.i and t2.i = t4.ii and iii = 22 and ii <> 1);
+I          |I          
+-----------------------
+0          |0          
+ij> ----------------------------------
+-- update
+create table test.u (i int, s smallint, c char(30), vc char(30));
+0 rows inserted/updated/deleted
+ij> insert into test.u select * from test.s;
+3 rows inserted/updated/deleted
+ij> select * from test.u;
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+0          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> update test.u set i = 2
+where vc <> (select vc from test.s where vc = '1');
+1 row inserted/updated/deleted
+ij> select * from test.u;
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+2          |0     |0                             |0                             
+1          |1     |1                             |1                             
+ij> delete from test.u;
+3 rows inserted/updated/deleted
+ij> insert into test.u select * from test.s;
+3 rows inserted/updated/deleted
+ij> -- delete
+delete from test.u where c < (select c from test.t where c = '2');
+2 rows inserted/updated/deleted
+ij> select * from test.u;
+I          |S     |C                             |VC                            
+--------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          
+ij> -- reset autocommit
+autocommit on;
+ij> -- bug 5146 - drop schema did not invalidate plan for create table.
+-- now schemas are implictly created.
+create schema B5146;
+0 rows inserted/updated/deleted
+ij> create table B5146.DT(i int);
+0 rows inserted/updated/deleted
+ij> insert into B5146.DT values 5146, 6415;
+2 rows inserted/updated/deleted
+ij> create schema A5146;
+0 rows inserted/updated/deleted
+ij> prepare PS5146_TABLE as 'create table A5146.I(i int)';
+ij> drop schema A5146 restrict;
+0 rows inserted/updated/deleted
+ij> execute PS5146_TABLE;
+0 rows inserted/updated/deleted
+ij> insert into A5146.I values 3;
+1 row inserted/updated/deleted
+ij> select * from A5146.I;
+I          
+-----------
+3          
+ij> drop table A5146.I;
+0 rows inserted/updated/deleted
+ij> prepare PS5146_VIEW as 'create view A5146.V AS SELECT * FROM B5146.DT';
+ij> drop schema A5146 restrict;
+0 rows inserted/updated/deleted
+ij> execute PS5146_VIEW;
+0 rows inserted/updated/deleted
+ij> select * from A5146.V;
+I          
+-----------
+5146       
+6415       
+ij> drop view A5146.V;
+0 rows inserted/updated/deleted
+ij> prepare PS5146_TRIGGER as 'create trigger A5146.DT_TRIG AFTER INSERT ON B5146.DT FOR EACH STATEMENT MODE DB2SQL UPDATE  B5146.DT SET I = I + 1';
+ij> drop schema A5146 restrict;
+0 rows inserted/updated/deleted
+ij> execute PS5146_TRIGGER;
+0 rows inserted/updated/deleted
+ij> drop trigger A5146.DT_TRIG;
+0 rows inserted/updated/deleted
+ij> prepare PS5146_PROCEDURE as 'create procedure A5146.DUMMY() language java external name ''asdf.asdf'' parameter style java';
+ij> drop schema A5146 restrict;
+0 rows inserted/updated/deleted
+ij> execute PS5146_PROCEDURE;
+0 rows inserted/updated/deleted
+ij> drop procedure A5146.DUMMY;
+0 rows inserted/updated/deleted
+ij> -- check implicit schema creation for all CREATE statements that create schema objects.
+-- TABLE,VIEW,PROCEDURE TRIGGER, STATEMENT
+-- Cloudscape requires that the INDEX schema matches the (existing) table schema so
+-- there is no implict schema creation for CREATE INDEX.
+prepare ISC_TABLE as 'create table ISC.I(i int)';
+ij> execute ISC_TABLE;
+0 rows inserted/updated/deleted
+ij> insert into ISC.I values 3;
+1 row inserted/updated/deleted
+ij> select * from ISC.I;
+I          
+-----------
+3          
+ij> drop table ISC.I;
+0 rows inserted/updated/deleted
+ij> drop schema ISC restrict;
+0 rows inserted/updated/deleted
+ij> prepare ISC_VIEW as 'create view ISC.V AS SELECT * FROM B5146.DT';
+ij> execute ISC_VIEW;
+0 rows inserted/updated/deleted
+ij> select * from ISC.V;
+I          
+-----------
+5146       
+6415       
+ij> drop view ISC.V;
+0 rows inserted/updated/deleted
+ij> drop schema ISC restrict;
+0 rows inserted/updated/deleted
+ij> prepare ISC_TRIGGER as 'create trigger ISC.DT_TRIG AFTER INSERT ON B5146.DT FOR EACH STATEMENT MODE DB2SQL UPDATE  B5146.DT SET I = I + 1';
+ij> execute ISC_TRIGGER;
+0 rows inserted/updated/deleted
+ij> insert into B5146.DT values 999;
+1 row inserted/updated/deleted
+ij> drop trigger ISC.DT_TRIG;
+0 rows inserted/updated/deleted
+ij> drop schema ISC restrict;
+0 rows inserted/updated/deleted
+ij> select * from B5146.DT;
+I          
+-----------
+5147       
+6416       
+1000       
+ij> prepare ISC_PROCEDURE as 'create procedure ISC.DUMMY() language java external name ''asdf.asdf'' parameter style java';
+ij> execute ISC_PROCEDURE;
+0 rows inserted/updated/deleted
+ij> CALL ISC.DUMMY();
+ERROR 42X51: The class 'asdf' does not exist or is inaccessible. This can happen if the class is not public.
+ERROR XJ001: Java exception: 'asdf: java.lang.ClassNotFoundException'.
+ij> drop procedure ISC.DUMMY;
+0 rows inserted/updated/deleted
+ij> drop schema ISC restrict;
+0 rows inserted/updated/deleted
+ij> -- check declare of a temp table does not create a SESSION schema.
+DECLARE GLOBAL TEMPORARY TABLE SESSION.ISCT(c21 int) on commit delete rows not logged;
+0 rows inserted/updated/deleted
+ij> select count(*) from SYS.SYSSCHEMAS WHERE SCHEMANAME = 'SESSION';
+1          
+-----------
+0          
+ij> drop table SESSION.ISCT;
+0 rows inserted/updated/deleted
+ij> drop table B5146.DT;
+0 rows inserted/updated/deleted
+ij> drop schema B5146 restrict;
+0 rows inserted/updated/deleted
+ij> create schema SYSDJD;
+ERROR 42939: An object cannot be created with the schema name 'SYSDJD'.
+ij> drop schema SYSDJD restrict;
+ERROR 42Y07: Schema 'SYSDJD' does not exist
+ij> create schema "sys";
+0 rows inserted/updated/deleted
+ij> drop schema "sys" restrict;
+0 rows inserted/updated/deleted
+ij> set schema test;
+0 rows inserted/updated/deleted
+ij> -- drop the tables
+drop table s;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tt;
+0 rows inserted/updated/deleted
+ij> drop table ttt;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> drop schema test restrict;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/select.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/select.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,163 @@
+ij> --
+-- this test shows the current supported select functionality
+--
+create table t(i int, s smallint);
+0 rows inserted/updated/deleted
+ij> insert into t (i,s) values (1956,475);
+1 row inserted/updated/deleted
+ij> -- select a subset of the columns
+select i from t;
+I          
+-----------
+1956       
+ij> -- select all columns in order
+select i,s from t;
+I          |S     
+------------------
+1956       |475   
+ij> -- select columns out of order
+select s,i from t;
+S     |I          
+------------------
+475   |1956       
+ij> -- select with repeating columns
+select i,i,s,s,i,i from t;
+I          |I          |S     |S     |I          |I          
+-------------------------------------------------------------
+1956       |1956       |475   |475   |1956       |1956       
+ij> -- select with constants
+select 10 from t;
+1          
+-----------
+10         
+ij> -- select with table name
+select t.i from t;
+I          
+-----------
+1956       
+ij> -- select with correlation name
+select b.i from t b;
+I          
+-----------
+1956       
+ij> -- select *
+select * from t;
+I          |S     
+------------------
+1956       |475   
+ij> -- select * and constants and columns 
+select *, 10, i from t;
+ERROR 42X01: Syntax error: Encountered "," at line 2, column 9.
+ij> -- select correlation name dot star
+select b.* from t b;
+I          |S     
+------------------
+1956       |475   
+ij> -- select table name dot star
+select t.* from t;
+I          |S     
+------------------
+1956       |475   
+ij> -- believe it or not, the next query is valid
+(select * from t);
+I          |S     
+------------------
+1956       |475   
+ij> -- negative testing
+-- non-boolean where clause
+-- (only put here due to small size of this test)
+select * from t where i;
+ERROR 42X19: The WHERE or HAVING clause or CHECK CONSTRAINT definition is a 'INTEGER' expression.  It must be a BOOLEAN expression.
+ij> -- invalid correlation name for "*"
+select asdf.* from t;
+ERROR 42X10: 'ASDF' is not an exposed table name in the scope in which it appears.
+ij> -- cleanup
+drop table t;
+0 rows inserted/updated/deleted
+ij> -- Beetle 5019.  We had a failure in V5.1.20.
+CREATE SCHEMA CONTENT;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CONTENT.CONTENT (ID INTEGER NOT NULL, CREATOR VARCHAR(128) NOT NULL, CREATION_DATE DATE NOT NULL, URL VARCHAR(256) NOT NULL, TITLE VARCHAR(128) NOT NULL, DESCRIPTION VARCHAR(512) NOT NULL, HEIGHT INTEGER NOT NULL, WIDTH INTEGER NOT NULL);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE CONTENT.CONTENT ADD CONSTRAINT CONTENT_ID PRIMARY KEY (ID);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CONTENT.STYLE (ID INTEGER NOT NULL,DESCRIPTION VARCHAR(128) NOT NULL);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE CONTENT.STYLE ADD CONSTRAINT STYLE_ID PRIMARY KEY (ID);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CONTENT.CONTENT_STYLE  (CONTENT_ID INTEGER NOT NULL, STYLE_ID INTEGER NOT NULL);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE CONTENT.CONTENT_STYLE ADD CONSTRAINT CONTENTSTYLEID PRIMARY KEY (CONTENT_ID, STYLE_ID);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CONTENT.KEYGEN (KEYVAL INTEGER NOT NULL, KEYNAME VARCHAR(256) NOT NULL);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE CONTENT.KEYGEN  ADD CONSTRAINT PK_KEYGEN PRIMARY KEY (KEYNAME);
+0 rows inserted/updated/deleted
+ij> CREATE TABLE CONTENT.RATING  (ID INTEGER NOT NULL,RATING DOUBLE PRECISION NOT NULL,ENTRIES DOUBLE PRECISION NOT NULL);
+0 rows inserted/updated/deleted
+ij> ALTER TABLE CONTENT.RATING ADD CONSTRAINT PK_RATING PRIMARY KEY (ID);
+0 rows inserted/updated/deleted
+ij> INSERT INTO CONTENT.STYLE VALUES (1, 'BIRD');
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.STYLE VALUES (2, 'CAR');
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.STYLE VALUES (3, 'BUILDING');
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.STYLE VALUES (4, 'PERSON');
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT values(1, 'djd', CURRENT DATE, 'http://url.1', 'title1', 'desc1', 100, 100);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT values(2, 'djd', CURRENT DATE, 'http://url.2', 'title2', 'desc2', 100, 100);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT values(3, 'djd', CURRENT DATE, 'http://url.3', 'title3', 'desc3', 100, 100);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT values(4, 'djd', CURRENT DATE, 'http://url.4', 'title4', 'desc4', 100, 100);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT values(5, 'djd', CURRENT DATE, 'http://url.5', 'title5', 'desc5', 100, 100);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(1,1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(1,2);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(2,1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(2,4);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(3,3);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(3,4);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(3,1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(4,4);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.CONTENT_STYLE VALUES(5,1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.RATING VALUES(1, 4.5, 1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.RATING VALUES(2, 4.0, 1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.RATING VALUES(3, 3.9, 1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.RATING VALUES(4, 4.1, 1);
+1 row inserted/updated/deleted
+ij> INSERT INTO CONTENT.RATING VALUES(5, 4.0, 1);
+1 row inserted/updated/deleted
+ij> select S.DESCRIPTION, FAV.MAXRATE, C.TITLE, C.URL FROM CONTENT.RATING R, CONTENT.CONTENT C, CONTENT.STYLE S, CONTENT.CONTENT_STYLE CS, (select S.ID, max(rating) from CONTENT.RATING R, CONTENT.CONTENT C, CONTENT.STYLE S, CONTENT.CONTENT_STYLE CS group by S.ID) AS FAV(FID,MAXRATE) where R.ID = C.ID AND C.ID = CS.CONTENT_ID AND CS.STYLE_ID = FAV.FID AND FAV.FID = S.ID AND FAV.MAXRATE = R.RATING;
+DESCRIPTION                                                                                                                     |MAXRATE               |TITLE                                                                                                                           |URL                                                                                                                             
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+BIRD                                                                                                                            |4.5                   |title1                                                                                                                          |http://url.1                                                                                                                    
+CAR                                                                                                                             |4.5                   |title1                                                                                                                          |http://url.1                                                                                                                    
+ij> drop table content.rating;
+0 rows inserted/updated/deleted
+ij> drop table content.content_style;
+0 rows inserted/updated/deleted
+ij> drop table content.content;
+0 rows inserted/updated/deleted
+ij> drop table content.style;
+0 rows inserted/updated/deleted
+ij> drop table content.keygen;
+0 rows inserted/updated/deleted
+ij> drop schema content restrict;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleScroll.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleScroll.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,151 @@
+ij> -- simple scroll cursor tests
+create table t (a int);
+0 rows inserted/updated/deleted
+ij> insert into t values (1),(2),(3),(4),(5);
+5 rows inserted/updated/deleted
+ij> get scroll insensitive cursor c1 as 'select * from t';
+ij> -- should be 1
+first c1;
+A          
+-----
+1          
+ij> -- should be 2
+next c1;
+A          
+-----
+2          
+ij> -- should be 1
+previous c1;
+A          
+-----
+1          
+ij> -- should be 5
+last c1;
+A          
+-----
+5          
+ij> -- should be 2
+absolute 2 c1;
+A          
+-----
+2          
+ij> -- should be 4
+relative 2 c1;
+A          
+-----
+4          
+ij> close c1;
+ij> -- since JCC gets 64 results and then scrolls within them
+----- lets try each positioning command as the first command for the cursor
+get scroll insensitive cursor c1 as 'select * from t';
+ij> -- should be 1
+next c1;
+A          
+-----
+1          
+ij> close c1;
+ij> get scroll insensitive cursor c1 as 'select * from t';
+ij> -- should be 5
+last c1;
+A          
+-----
+5          
+ij> close c1;
+ij> get scroll insensitive cursor c1 as 'select * from t';
+ij> -- should be 3
+absolute 3 c1;
+A          
+-----
+3          
+ij> -- should be 4
+next c1;
+A          
+-----
+4          
+ij> close c1;
+ij> -- let's try a table with more than 64 rows
+create table t1 (a int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+10 rows inserted/updated/deleted
+ij> insert into t1 values (11),(12),(13),(14),(15),(16),(17),(18),(19),(20);
+10 rows inserted/updated/deleted
+ij> insert into t1 values (21),(22),(23),(24),(25),(26),(27),(28),(29),(30);
+10 rows inserted/updated/deleted
+ij> insert into t1 values (31),(32),(33),(34),(35),(36),(37),(38),(39),(40);
+10 rows inserted/updated/deleted
+ij> insert into t1 values (41),(42),(43),(44),(45),(46),(47),(48),(49),(50);
+10 rows inserted/updated/deleted
+ij> insert into t1 values (51),(52),(53),(54),(55),(56),(57),(58),(59),(60);
+10 rows inserted/updated/deleted
+ij> insert into t1 values (61),(62),(63),(64),(65),(66),(67),(68),(69),(70);
+10 rows inserted/updated/deleted
+ij> get scroll insensitive cursor c1 as 'select * from t1';
+ij> -- should be 1
+first c1;
+A          
+-----
+1          
+ij> -- should be 70
+last c1;
+A          
+-----
+70         
+ij> -- should be 65
+absolute 65 c1;
+A          
+-----
+65         
+ij> -- should be 70
+absolute -1 c1;
+A          
+-----
+70         
+ij> close c1;
+ij> -- try sensitive scroll cursors bug 4677
+get scroll sensitive cursor c1 as 'select * from t';
+ij> close c1;
+ij> get scroll sensitive cursor c1 as 'select * from t for update';
+ij> close c1;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- defect 5225, outer joins returning NULLs
+create table t1 (i1 bigint not null, c1 varchar(64) not null);
+0 rows inserted/updated/deleted
+ij> create table t2 (i2 bigint not null, c2 varchar(64) not null);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1, 'String 1');
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 'String 2');
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 'String 1');
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 'String 3');
+1 row inserted/updated/deleted
+ij> -- Outer joins can return NULLs on the non-outer side of the join
+select c1 from t1 right outer join t2 on (i1=i2);
+C1                                                              
+-----
+String 1                                                        
+NULL                                                            
+ij> select c2 from t1 right outer join t2 on (i1=i2);
+C2                                                              
+-----
+String 1                                                        
+String 3                                                        
+ij> -- Left outer join
+select c1 from t1 left outer join t2 on (i1=i2);
+C1                                                              
+-----
+String 1                                                        
+String 2                                                        
+ij> select c2 from t1 left outer join t2 on (i1=i2);
+C2                                                              
+-----
+String 1                                                        
+NULL                                                            
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleThreadWrapper.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/simpleThreadWrapper.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+Starting simpleThread
+End of simpleThread

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/specjPlans.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/specjPlans.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4432 @@
+ij> -- Test prints query plans for SpecjAppServer2001 benchmark queries.
+-- Specifically this test checks for plans generated for tables with no rows to 
+-- ensure that 
+-- Index scan must be chosen over table scan for searched update/delete even when there are 
+-- 0 rows in table
+-- Also see Beetle task id : 5006
+-- Test does the following
+-- 1. First creates the necessary schema (tables, indexes)
+-- 2. Executes and prints the query plan for all the queries in specjappserver2001 benchmark
+--    Makes sure that the insert stmts are in the end to ensure that there are no
+--    rows in the tables
+-- 3. Drops the tables
+-- Let's start with something light...
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> drop table t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> create table t1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> -- create non-unique index first, then unique, to make sure non-unique is looked at first, and so
+-- in case of tie, the first (nonunique) would be chosen by the cost-based optimizer.  But we need
+-- to make sure such tie never happens, and unique index is always chosen (if the only difference
+-- between the two is "uniqueness").  Well the beetle bug 5006 itself is about, first of all,
+-- table scan should never be chosen, no matter the index is covering ot not.
+create index i11 on t1(c1);
+0 rows inserted/updated/deleted
+ij> create unique index i12 on t1(c1);
+0 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 3500;
+ij> -- In the following statement, optimizer thinks we have a covering index (only referenced column is
+-- c1), make sure we are using unique index (I12), not table scan, not I11.
+delete from t1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- In the following statement, optimizer thinks we have a covering index (only referenced column is
+-- c1), make sure we are using unique index (I12), not table scan, not I11.
+delete from t1 where c1 = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 2
+Execute Time = 0
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (1):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for T1 using index I12 at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={0, 1}
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				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> -- In the following statement, optimizer thinks we have a non-covering index (referenced columns are
+-- c1 and c2), make sure we are still using unique index (I12), not table scan, not I11.
+update t1 set c2 = 1 where c1 = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- In the following statement, optimizer thinks we have a non-covering index (referenced columns are
+-- c1 and c2), make sure we are still using unique index (I12), not table scan, not I11.
+update t1 set c2 = 1 where c1 = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for T1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for T1 using index I12 at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 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=0
+				Number of rows visited=0
+				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> -- The following select should use TABLE SCAN, no predicate at all, and index not covering, no reason
+-- to use index!!!
+select * from t1;
+C1         |C2         
+-----------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- The following select should use TABLE SCAN, no predicate at all, and index not covering, no reason
+-- to use index!!!
+select * from t1
+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 T1 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=2
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+None
+ij> -- This one should use index, since it is covered, really doesn't matter which one, since no predicate,
+-- It will choose the first one -- I11.
+select c1 from t1;
+C1         
+-----------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- This one should use index, since it is covered, really doesn't matter which one, since no predicate,
+-- It will choose the first one -- I11.
+select c1 from t1
+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 Scan ResultSet for T1 using index I11 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=1
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=1
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> -- end of something light...
+DROP TABLE C_customer;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C_CUSTOMER' because it does not exist.
+ij> CREATE TABLE C_customer
+(
+	c_id		integer not null,
+	c_first		char(16),
+	c_last		char(16),
+	c_street1	char(20),	
+	c_street2	char(20),	
+	c_city		char(20),	
+	c_state		char(2),	
+	c_country	char(10),	
+	c_zip		char(9),	
+	c_phone		char(16),
+	c_contact	char(25),	
+	c_since		date,
+	c_balance	numeric(9,2),
+	c_credit	char(2),
+	c_credit_limit	numeric(9,2),
+	c_ytd_payment	numeric(9,2)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX C_c_idx ON C_customer (c_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_supplier;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C_SUPPLIER' because it does not exist.
+ij> CREATE TABLE C_supplier
+(
+	supp_id			integer not null,
+	supp_name		char(16),
+	supp_street1	char(20),	
+	supp_street2	char(20),	
+	supp_city		char(20),	
+	supp_state		char(2),	
+	supp_country	char(10),	
+	supp_zip		char(9),	
+	supp_phone		char(16),
+	supp_contact	char(25)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX C_supp_idx ON C_supplier (supp_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_site;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C_SITE' because it does not exist.
+ij> CREATE TABLE C_site
+(
+	site_id			integer not null,
+	site_name		char(16),
+	site_street1	char(20),	
+	site_street2	char(20),	
+	site_city		char(20),	
+	site_state		char(2),	
+	site_country	char(10),	
+	site_zip		char(9)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX C_site_idx ON C_site (site_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_parts;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C_PARTS' because it does not exist.
+ij> CREATE TABLE C_parts
+(
+	p_id			char(15) not null,
+	p_name			char(10),
+	p_desc			varchar(100),
+	p_rev			char(6),
+	p_unit			char(10),
+	p_cost			numeric(9,2),
+	p_price			numeric(9,2),
+	p_planner		integer,
+	p_type			integer,
+	p_ind			integer,
+        p_lomark                integer,
+        p_himark                integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX C_p_idx ON C_parts (p_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_rule;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C_RULE' because it does not exist.
+ij> CREATE TABLE C_rule
+(
+	r_id		varchar(20) not null,
+	r_text		long varchar
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX C_r_idx on C_rule (r_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_discount;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'C_DISCOUNT' because it does not exist.
+ij> CREATE TABLE C_discount
+(	
+	d_id		varchar(64) not null,
+	d_percent	integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX C_d_idx on C_discount (d_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_parts;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'M_PARTS' because it does not exist.
+ij> CREATE TABLE M_parts
+(
+	p_id			char(15) not null,
+	p_name			char(10),
+	p_desc			varchar(100),
+	p_rev			char(6),
+	p_planner		integer,
+	p_type			integer,
+	p_ind			integer,
+	p_lomark		integer,
+	p_himark		integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX M_parts_idx ON M_parts (p_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_bom;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'M_BOM' because it does not exist.
+ij> CREATE TABLE M_bom
+(
+	b_comp_id		char(15) not null,
+	b_assembly_id		char(15) not null,
+	b_line_no		integer,
+	b_qty			integer,
+	b_ops			integer,	
+	b_eng_change		char(10),	
+	b_ops_desc		varchar(100)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX M_bom_idx ON M_bom (b_assembly_id, b_comp_id, b_line_no);
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_workorder;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'M_WORKORDER' because it does not exist.
+ij> CREATE TABLE M_workorder
+(
+	wo_number		integer not null,
+	wo_o_id			integer,
+	wo_ol_id		integer,
+	wo_status		integer,
+	wo_assembly_id	char(15),
+	wo_orig_qty		integer,
+	wo_comp_qty		integer,
+	wo_due_date		date,
+	wo_start_date		timestamp
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX M_wo_idx ON M_workorder (wo_number);
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_largeorder;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'M_LARGEORDER' because it does not exist.
+ij> CREATE TABLE M_largeorder
+(
+	lo_id			integer not null,
+	lo_o_id			integer,
+	lo_ol_id		integer,
+	lo_assembly_id	char(15),
+	lo_qty			integer,
+	lo_due_date		date
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX M_lo_idx ON M_largeorder (lo_id);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX M_OL_O_idx ON M_largeorder (lo_o_id, lo_ol_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_inventory;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'M_INVENTORY' because it does not exist.
+ij> CREATE TABLE M_inventory
+(
+	in_p_id			char(15) not null,
+	in_qty			integer,
+	in_ordered		integer,
+	in_location		char(20),	
+	in_acc_code		integer,
+	in_act_date		date
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX M_inv_idx ON M_inventory (in_p_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_customer;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'O_CUSTOMER' because it does not exist.
+ij> CREATE TABLE O_customer
+(
+	c_id		integer not null,
+	c_first		char(16),
+	c_last		char(16),
+	c_street1	char(20),	
+	c_street2	char(20),	
+	c_city		char(20),	
+	c_state		char(2),	
+	c_country	char(10),	
+	c_zip		char(9),	
+	c_phone		char(16),
+	c_contact	char(25),
+	c_since		date
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX O_c_idx ON O_customer (c_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_orders;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'O_ORDERS' because it does not exist.
+ij> CREATE TABLE O_orders
+(
+	o_id		integer not null,
+	o_c_id		integer,
+	o_ol_cnt	integer,
+	o_discount	numeric(4,2),
+	o_total		numeric(9,2),
+	o_status	integer,
+	o_entry_date	timestamp,
+	o_ship_date	date
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX O_ords_idx ON O_orders (o_id);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX O_oc_idx ON O_orders (o_c_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_orderline;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'O_ORDERLINE' because it does not exist.
+ij> CREATE TABLE O_orderline
+(
+	ol_id		integer not null,
+	ol_o_id		integer not null,
+	ol_i_id		char(15),
+	ol_qty		integer,
+	ol_status	integer,
+	ol_ship_date	date
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX O_ordl_idx ON O_orderline (ol_o_id, ol_id);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX O_ordl_idx2 ON O_orderline (ol_o_id, ol_i_id);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX O_ordl_idx3 ON O_orderline (ol_o_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_item;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'O_ITEM' because it does not exist.
+ij> CREATE TABLE O_item
+(
+	i_id			char(15) not null,
+	i_name			char(20),
+	i_desc			varchar(100),
+	i_price			numeric(9,2),
+	i_discount		numeric(6,4)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX O_i_idx ON O_item (i_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_component;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S_COMPONENT' because it does not exist.
+ij> CREATE TABLE S_component
+(
+	comp_id			char(15) not null,
+	comp_name		char(10),
+	comp_desc		varchar(100),
+	comp_unit		char(10),
+	comp_cost		numeric(9,2),
+	qty_on_order		integer,
+	qty_demanded		integer,
+	lead_time		integer,
+	container_size		integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX S_comp_idx ON S_component (comp_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_supp_component;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S_SUPP_COMPONENT' because it does not exist.
+ij> CREATE TABLE S_supp_component
+(
+	sc_p_id			char(15) not null,
+	sc_supp_id		integer not null,
+	sc_price		numeric(9,2),
+	sc_qty			integer,
+	sc_discount		numeric(6,4),
+	sc_del_date		integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX S_sc_idx ON S_supp_component (sc_p_id, sc_supp_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_supplier;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S_SUPPLIER' because it does not exist.
+ij> CREATE TABLE S_supplier
+(
+	supp_id			integer not null,
+	supp_name		char(16),
+	supp_street1	char(20),	
+	supp_street2	char(20),	
+	supp_city		char(20),	
+	supp_state		char(2),	
+	supp_country	char(10),	
+	supp_zip		char(9),	
+	supp_phone		char(16),
+	supp_contact	char(25)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX S_supp_idx ON S_supplier (supp_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_site;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S_SITE' because it does not exist.
+ij> CREATE TABLE S_site
+(
+	site_id			integer not null,
+	site_name		char(16),
+	site_street1	char(20),	
+	site_street2	char(20),	
+	site_city		char(20),	
+	site_state		char(2),	
+	site_country	char(10),	
+	site_zip		char(9)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX S_site_idx ON S_site (site_id);
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_purchase_order;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S_PURCHASE_ORDER' because it does not exist.
+ij> CREATE TABLE S_purchase_order
+(
+	po_number		integer not null,
+	po_supp_id		integer,
+	po_site_id		integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX S_po_idx ON S_purchase_order (po_number);
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_purchase_orderline;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'S_PURCHASE_ORDERLINE' because it does not exist.
+ij> CREATE TABLE S_purchase_orderline
+(
+	pol_number		integer not null,
+	pol_po_id		integer not null,
+	pol_p_id		char(15),
+	pol_qty			integer,
+	pol_balance		numeric(9,2),
+	pol_deldate		date,
+	pol_message		varchar(100)
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX S_pol_idx ON S_purchase_orderline (pol_po_id, pol_number);
+0 rows inserted/updated/deleted
+ij> DROP TABLE U_sequences;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'U_SEQUENCES' because it does not exist.
+ij> CREATE TABLE U_sequences
+(
+	s_id		varchar(50) not null,
+	s_nextnum	integer,
+	s_blocksize	integer
+);
+0 rows inserted/updated/deleted
+ij> CREATE UNIQUE INDEX U_s_idx ON U_sequences (s_id);
+0 rows inserted/updated/deleted
+ij> -- set the runtimestatistics to check the query plans generated
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 3500;
+ij> SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID 
+ FROM O_ORDERS  T1 WHERE o_c_id = 0 FOR UPDATE ;
+O_STATUS   |O_SHIP_DA&|O_ENTRY_DATE              |O_TOTAL     |O_DISC&|O_OL_CNT   |O_C_ID     |O_ID       
+----------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID 
+ FROM O_ORDERS  T1 WHERE o_c_id = 0 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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for O_ORDERS:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for O_ORDERS using index O_OC_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			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> -- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT COUNT (*) FROM O_orders WHERE o_entry_date >= '01/10/2003' AND o_entry_date <= '01/09/2003' ;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT COUNT (*) FROM O_orders WHERE o_entry_date >= '01/10/2003' AND o_entry_date <= '01/09/2003' 
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for O_ORDERS at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={6}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 6
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 6
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> SELECT T1.WO_NUMBER, T1.WO_O_ID, T1.WO_OL_ID, T1.WO_STATUS, T1.WO_ORIG_QTY, T1.WO_COMP_QTY, T1.WO_ASSEMBLY_ID, 
+ T1.WO_DUE_DATE, T1.WO_START_DATE FROM M_WORKORDER  T1 WHERE T1.WO_NUMBER = 1 FOR UPDATE;
+WO_NUMBER  |WO_O_ID    |WO_OL_ID   |WO_STATUS  |WO_ORIG_QTY|WO_COMP_QTY|WO_ASSEMBLY_ID |WO_DUE_DA&|WO_START_DATE             
+-----------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.WO_NUMBER, T1.WO_O_ID, T1.WO_OL_ID, T1.WO_STATUS, T1.WO_ORIG_QTY, T1.WO_COMP_QTY, T1.WO_ASSEMBLY_ID, 
+ T1.WO_DUE_DATE, T1.WO_START_DATE FROM M_WORKORDER  T1 WHERE T1.WO_NUMBER = 1 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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for M_WORKORDER:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for M_WORKORDER using index M_WO_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> -- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER  T1 WHERE 1=1;
+LO_ID      |LO_O_ID    |LO_OL_ID   |LO_ASSEMBLY_ID |LO_QTY     |LO_DUE_DA&
+--------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER  T1 WHERE 1=1
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = false
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for M_LARGEORDER at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=6
+		Number of pages visited=1
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> UPDATE M_INVENTORY  SET IN_QTY = 1, IN_LOCATION = 'sanfrancisco', IN_ACC_CODE = 1, IN_ACT_DATE = '01/01/2003', IN_ORDERED = 1 WHERE IN_P_ID = 'abcdefghijklm';
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE M_INVENTORY  SET IN_QTY = 1, IN_LOCATION = 'sanfrancisco', IN_ACC_CODE = 1, IN_ACT_DATE = '01/01/2003', IN_ORDERED = 1 WHERE IN_P_ID = 'abcdefghijklm'
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Normalize ResultSet:
+	Number of opens = 1
+	Rows seen = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for M_INVENTORY:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for M_INVENTORY using index M_INV_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 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=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=1
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> SELECT COUNT (*) FROM S_component;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM S_component
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for S_COMPONENT using index S_COMP_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.R_ID, T1.R_TEXT FROM C_RULE  T1 WHERE T1.R_ID = 'abcdefghijlkmijklmnopqrstuvwxyz';
+R_ID                |R_TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.R_ID, T1.R_TEXT FROM C_RULE  T1 WHERE T1.R_ID = 'abcdefghijlkmijklmnopqrstuvwxyz'
+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 C_RULE:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for C_RULE using index C_R_IDX at read committed isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> SELECT COUNT (*) FROM C_site;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM C_site
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for C_SITE using index C_SITE_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.IN_P_ID, T1.IN_QTY, T1.IN_LOCATION, T1.IN_ACC_CODE, T1.IN_ACT_DATE, T1.IN_ORDERED FROM M_INVENTORY  T1 WHERE T1.IN_P_ID = 'abcdefghijkl' FOR UPDATE;
+IN_P_ID        |IN_QTY     |IN_LOCATION         |IN_ACC_CODE|IN_ACT_DA&|IN_ORDERED 
+-----------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.IN_P_ID, T1.IN_QTY, T1.IN_LOCATION, T1.IN_ACC_CODE, T1.IN_ACT_DATE, T1.IN_ORDERED FROM M_INVENTORY  T1 WHERE T1.IN_P_ID = 'abcdefghijkl' 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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for M_INVENTORY:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for M_INVENTORY using index M_INV_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE  T1 WHERE ol_o_id = 1 FOR UPDATE ;
+OL_SHIP_D&|OL_QTY     |OL_I_ID        |OL_O_ID    |OL_ID      
+--------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE  T1 WHERE ol_o_id = 1 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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for O_ORDERLINE:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for O_ORDERLINE using index O_ORDL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> DELETE FROM M_LARGEORDER  WHERE LO_ID = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	DELETE FROM M_LARGEORDER  WHERE LO_ID = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 2
+Execute Time = 0
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for M_LARGEORDER:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for M_LARGEORDER using index M_LO_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 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=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> -- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT COUNT (*) FROM M_workorder WHERE wo_start_date >= '01/10/2003' AND wo_start_date <= '01/10/2003';
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT COUNT (*) FROM M_workorder WHERE wo_start_date >= '01/10/2003' AND wo_start_date <= '01/10/2003'
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for M_WORKORDER at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={8}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 8
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 8
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> SELECT T1.I_DISCOUNT, T1.I_DESC, T1.I_NAME, T1.I_PRICE, T1.I_ID FROM O_ITEM  T1 WHERE T1.I_ID = 'abcdefghijk';
+I_DISCOU&|I_DESC                                                                                              |I_NAME              |I_PRICE     |I_ID           
+----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.I_DISCOUNT, T1.I_DESC, T1.I_NAME, T1.I_PRICE, T1.I_ID FROM O_ITEM  T1 WHERE T1.I_ID = 'abcdefghijk'
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for O_ITEM:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for O_ITEM using index O_I_IDX at read committed isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> SELECT T1.P_ID, T1.P_NAME, T1.P_DESC, T1.P_REV, T1.P_PLANNER, T1.P_TYPE, T1.P_IND, T1.P_LOMARK, T1.P_HIMARK FROM M_PARTS  T1 WHERE T1.P_ID = 'abcdefghijl';
+P_ID           |P_NAME    |P_DESC                                                                                              |P_REV |P_PLANNER  |P_TYPE     |P_IND      |P_LOMARK   |P_HIMARK   
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.P_ID, T1.P_NAME, T1.P_DESC, T1.P_REV, T1.P_PLANNER, T1.P_TYPE, T1.P_IND, T1.P_LOMARK, T1.P_HIMARK FROM M_PARTS  T1 WHERE T1.P_ID = 'abcdefghijl'
+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 M_PARTS:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for M_PARTS using index M_PARTS_IDX at read committed isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> SELECT COUNT (*) FROM S_purchase_orderline;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM S_purchase_orderline
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for S_PURCHASE_ORDERLINE using index S_POL_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.S_ID, T1.S_NEXTNUM, T1.S_BLOCKSIZE FROM U_SEQUENCES  T1 WHERE T1.S_ID = 'abcdefghijklmnopqrstuvwxyz' FOR UPDATE;
+S_ID                                              |S_NEXTNUM  |S_BLOCKSIZE
+--------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.S_ID, T1.S_NEXTNUM, T1.S_BLOCKSIZE FROM U_SEQUENCES  T1 WHERE T1.S_ID = 'abcdefghijklmnopqrstuvwxyz' 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 U_SEQUENCES:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for U_SEQUENCES using index U_S_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> SELECT T1.SC_P_ID, T1.SC_SUPP_ID, T1.SC_PRICE, T1.SC_QTY, T1.SC_DISCOUNT, T1.SC_DEL_DATE FROM S_SUPP_COMPONENT  T1 WHERE T1.SC_P_ID = 'abcdefgjikl' AND T1.SC_SUPP_ID = 1;
+SC_P_ID        |SC_SUPP_ID |SC_PRICE    |SC_QTY     |SC_DISCO&|SC_DEL_DATE
+--------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.SC_P_ID, T1.SC_SUPP_ID, T1.SC_PRICE, T1.SC_QTY, T1.SC_DISCOUNT, T1.SC_DEL_DATE FROM S_SUPP_COMPONENT  T1 WHERE T1.SC_P_ID = 'abcdefgjikl' AND T1.SC_SUPP_ID = 1
+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 S_SUPP_COMPONENT:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {2, 3, 4, 5}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for S_SUPP_COMPONENT using index S_SC_IDX at read committed isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=3
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+		stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+		qualifiers:
+None
+ij> SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID FROM O_ORDERS  T1 WHERE T1.O_ID = 1 FOR UPDATE;
+O_STATUS   |O_SHIP_DA&|O_ENTRY_DATE              |O_TOTAL     |O_DISC&|O_OL_CNT   |O_C_ID     |O_ID       
+----------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID FROM O_ORDERS  T1 WHERE T1.O_ID = 1 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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for O_ORDERS:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for O_ORDERS using index O_ORDS_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> SELECT COUNT (*) FROM M_workorder;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM M_workorder
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for M_WORKORDER using index M_WO_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM S_purchase_order;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM S_purchase_order
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for S_PURCHASE_ORDER using index S_PO_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM M_bom;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM M_bom
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for M_BOM using index M_BOM_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER  T1 WHERE T1.PO_NUMBER = 1;
+PO_NUMBER  |PO_SUPP_ID |PO_SITE_ID 
+-----------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER  T1 WHERE T1.PO_NUMBER = 1
+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 S_PURCHASE_ORDER:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1, 2}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for S_PURCHASE_ORDER using index S_PO_IDX at read committed isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> SELECT COUNT (*) FROM O_orderline;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM O_orderline
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for O_ORDERLINE using index O_ORDL_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.D_ID, T1.D_PERCENT FROM C_DISCOUNT  T1 WHERE T1.D_ID = 'abcdefghijklmnopqrstuvwz';
+D_ID                                                            |D_PERCENT  
+----------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.D_ID, T1.D_PERCENT FROM C_DISCOUNT  T1 WHERE T1.D_ID = 'abcdefghijklmnopqrstuvwz'
+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 C_DISCOUNT:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for C_DISCOUNT using index C_D_IDX at read committed isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> UPDATE O_ORDERLINE  SET OL_SHIP_DATE = '2/28/2000', OL_QTY = 10, OL_I_ID = 'abcdefghijkl' WHERE OL_O_ID = 1 AND OL_ID = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE O_ORDERLINE  SET OL_SHIP_DATE = '2/28/2000', OL_QTY = 10, OL_I_ID = 'abcdefghijkl' WHERE OL_O_ID = 1 AND OL_ID = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 1
+Execute Time = 0
+	Normalize ResultSet:
+	Number of opens = 1
+	Rows seen = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for O_ORDERLINE:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {2, 3, 5}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for O_ORDERLINE using index O_ORDL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=3
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=1
+					start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+					stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+					qualifiers:
+None
+ij> SELECT T1.COMP_ID, T1.COMP_NAME, T1.COMP_DESC, T1.COMP_UNIT, T1.COMP_COST, T1.QTY_ON_ORDER, T1.QTY_DEMANDED, T1.LEAD_TIME, T1.CONTAINER_SIZE FROM S_COMPONENT  T1 WHERE T1.COMP_ID = 'abcdefghijk' FOR UPDATE;
+COMP_ID        |COMP_NAME |COMP_DESC                                                                                           |COMP_UNIT |COMP_COST   |QTY_ON_ORD&|QTY_DEMAND&|LEAD_TIME  |CONTAINER_&
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.COMP_ID, T1.COMP_NAME, T1.COMP_DESC, T1.COMP_UNIT, T1.COMP_COST, T1.QTY_ON_ORDER, T1.QTY_DEMANDED, T1.LEAD_TIME, T1.CONTAINER_SIZE FROM S_COMPONENT  T1 WHERE T1.COMP_ID = 'abcdefghijk' 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 S_COMPONENT:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for S_COMPONENT using index S_COMP_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> SELECT COUNT (*) FROM O_customer;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM O_customer
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for O_CUSTOMER using index O_C_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER  T1 WHERE lo_o_id = 1 AND lo_ol_id = 1;
+LO_ID      |LO_O_ID    |LO_OL_ID   |LO_ASSEMBLY_ID |LO_QTY     |LO_DUE_DA&
+--------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER  T1 WHERE lo_o_id = 1 AND lo_ol_id = 1
+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 M_LARGEORDER:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 3, 4, 5}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for M_LARGEORDER using index M_OL_O_IDX at read committed isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=3
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> UPDATE O_ORDERS  SET O_STATUS = 1, O_SHIP_DATE = '01/01/9004', O_ENTRY_DATE = NULL, O_TOTAL = 1000, O_DISCOUNT =100, O_OL_CNT = 1, O_C_ID = 1 WHERE O_ID = 2;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE O_ORDERS  SET O_STATUS = 1, O_SHIP_DATE = '01/01/9004', O_ENTRY_DATE = NULL, O_TOTAL = 1000, O_DISCOUNT =100, O_OL_CNT = 1, O_C_ID = 1 WHERE O_ID = 2
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 1
+Execute Time = 0
+	Normalize ResultSet:
+	Number of opens = 1
+	Rows seen = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for O_ORDERS:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for O_ORDERS using index O_ORDS_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 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=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=1
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> SELECT COUNT (*) FROM C_customer;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM C_customer
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for C_CUSTOMER using index C_C_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM M_inventory;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM M_inventory
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for M_INVENTORY using index M_INV_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT T1.SUPP_ID, T1.SUPP_NAME, T1.SUPP_STREET1, T1.SUPP_STREET2, T1.SUPP_CITY, T1.SUPP_STATE, T1.SUPP_COUNTRY, T1.SUPP_ZIP, T1.SUPP_PHONE, T1.SUPP_CONTACT FROM S_SUPPLIER  T1 WHERE 1=1;
+SUPP_ID    |SUPP_NAME       |SUPP_STREET1        |SUPP_STREET2        |SUPP_CITY           |SUP&|SUPP_COUN&|SUPP_ZIP |SUPP_PHONE      |SUPP_CONTACT             
+----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT T1.SUPP_ID, T1.SUPP_NAME, T1.SUPP_STREET1, T1.SUPP_STREET2, T1.SUPP_CITY, T1.SUPP_STATE, T1.SUPP_COUNTRY, T1.SUPP_ZIP, T1.SUPP_PHONE, T1.SUPP_CONTACT FROM S_SUPPLIER  T1 WHERE 1=1
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = false
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for S_SUPPLIER at read committed isolation level using instantaneous share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=10
+		Number of pages visited=1
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+ij> UPDATE U_SEQUENCES  SET S_NEXTNUM = 1	, S_BLOCKSIZE = 1000 WHERE S_ID = 'abcdefghijklmnopqrstuvwxyz';
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE U_SEQUENCES  SET S_NEXTNUM = 1	, S_BLOCKSIZE = 1000 WHERE S_ID = 'abcdefghijklmnopqrstuvwxyz'
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for U_SEQUENCES:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for U_SEQUENCES using index U_S_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 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=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM M_parts ;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM M_parts 
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for M_PARTS using index M_PARTS_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM O_item;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM O_item
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for O_ITEM using index O_I_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> UPDATE M_WORKORDER  SET WO_O_ID = 11, WO_OL_ID = 11, WO_STATUS = 11, WO_ORIG_QTY = 11, WO_COMP_QTY = 11, WO_ASSEMBLY_ID = 'abcdefghijk', WO_DUE_DATE = '01/01/2000', WO_START_DATE = '01/01/00' WHERE WO_NUMBER = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE M_WORKORDER  SET WO_O_ID = 11, WO_OL_ID = 11, WO_STATUS = 11, WO_ORIG_QTY = 11, WO_COMP_QTY = 11, WO_ASSEMBLY_ID = 'abcdefghijk', WO_DUE_DATE = '01/01/2000', WO_START_DATE = '01/01/00' WHERE WO_NUMBER = 1
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Normalize ResultSet:
+	Number of opens = 1
+	Rows seen = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for M_WORKORDER:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for M_WORKORDER using index M_WO_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 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=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=1
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE  T1 WHERE T1.POL_NUMBER = 100 AND T1.POL_PO_ID = 200 FOR UPDATE;
+POL_NUMBER |POL_PO_ID  |POL_P_ID       |POL_QTY    |POL_BALANCE |POL_DELDA&|POL_MESSAGE                                                                                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE  T1 WHERE T1.POL_NUMBER = 100 AND T1.POL_PO_ID = 200 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 S_PURCHASE_ORDERLINE:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for S_PURCHASE_ORDERLINE using index S_POL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=3
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+		stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+		qualifiers:
+None
+ij> SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE  T1 WHERE ol_o_id = 100 AND ol_i_id = 'abcdefgh'  FOR UPDATE;
+OL_SHIP_D&|OL_QTY     |OL_I_ID        |OL_O_ID    |OL_ID      
+--------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE  T1 WHERE ol_o_id = 100 AND ol_i_id = 'abcdefgh'  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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (3):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = true
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for O_ORDERLINE:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for O_ORDERLINE using index O_ORDL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE  T1 WHERE pol_po_id = 11 FOR UPDATE;
+POL_NUMBER |POL_PO_ID  |POL_P_ID       |POL_QTY    |POL_BALANCE |POL_DELDA&|POL_MESSAGE                                                                                         
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE  T1 WHERE pol_po_id = 11 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 S_PURCHASE_ORDERLINE:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for S_PURCHASE_ORDERLINE using index S_POL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=3
+		Number of deleted rows visited=0
+		Number of pages visited=1
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> DELETE FROM O_ORDERS  WHERE O_ID = 1;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	DELETE FROM O_ORDERS  WHERE O_ID = 1
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 2
+Execute Time = 0
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for O_ORDERS:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for O_ORDERS using index O_ORDS_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 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=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM O_orders;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM O_orders
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for O_ORDERS using index O_ORDS_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM S_supplier;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM S_supplier
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for S_SUPPLIER using index S_SUPP_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.C_ID, T1.C_SINCE, T1.C_BALANCE, T1.C_CREDIT, T1.C_CREDIT_LIMIT, T1.C_YTD_PAYMENT FROM C_CUSTOMER  T1 WHERE T1.C_ID = 1111 FOR UPDATE;
+C_ID       |C_SINCE   |C_BALANCE   |C_C&|C_CREDIT_LI&|C_YTD_PAYME&
+------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.C_ID, T1.C_SINCE, T1.C_BALANCE, T1.C_CREDIT, T1.C_CREDIT_LIMIT, T1.C_YTD_PAYMENT FROM C_CUSTOMER  T1 WHERE T1.C_ID = 1111 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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for C_CUSTOMER:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for C_CUSTOMER using index C_C_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> -- MAKE SURE THE FOLLOWING DELETE STATEMENT USES UNIQUE INDEX "O_ORDL_IDX", NOT NON-UNIQUE INDEX "O_ORDL_IDX2",
+-- EVEN THOUGH WE ARE COMPILING WITH EMPTY TABLE!!! beetle 5006.
+ DELETE FROM O_ORDERLINE  WHERE OL_O_ID = 11111 AND OL_ID = 111111;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- MAKE SURE THE FOLLOWING DELETE STATEMENT USES UNIQUE INDEX "O_ORDL_IDX", NOT NON-UNIQUE INDEX "O_ORDL_IDX2",
+-- EVEN THOUGH WE ARE COMPILING WITH EMPTY TABLE!!! beetle 5006.
+ DELETE FROM O_ORDERLINE  WHERE OL_O_ID = 11111 AND OL_ID = 111111
+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: 
+Delete ResultSet using row locking:
+deferred: false
+Rows deleted = 0
+Indexes updated = 3
+Execute Time = 0
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for O_ORDERLINE:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {2}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for O_ORDERLINE using index O_ORDL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=3
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+				stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+				qualifiers:
+None
+ij> SELECT COUNT (*) FROM C_supplier;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM C_supplier
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for C_SUPPLIER using index C_SUPP_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.B_ASSEMBLY_ID, T1.B_COMP_ID, T1.B_LINE_NO, T1.B_QTY, T1.B_ENG_CHANGE, T1.B_OPS, T1.B_OPS_DESC FROM M_BOM  T1 WHERE b_assembly_id = 'specjstuff';
+B_ASSEMBLY_ID  |B_COMP_ID      |B_LINE_NO  |B_QTY      |B_ENG_CHA&|B_OPS      |B_OPS_DESC                                                                                          
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.B_ASSEMBLY_ID, T1.B_COMP_ID, T1.B_LINE_NO, T1.B_QTY, T1.B_ENG_CHANGE, T1.B_OPS, T1.B_OPS_DESC FROM M_BOM  T1 WHERE b_assembly_id = 'specjstuff'
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for M_BOM:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for M_BOM using index M_BOM_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 3}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=1
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> UPDATE S_COMPONENT  SET COMP_NAME = 'abc', COMP_DESC = 'book', COMP_UNIT = '100', COMP_COST = 1000, QTY_ON_ORDER = 1000, QTY_DEMANDED = 111, LEAD_TIME = 11, CONTAINER_SIZE = 11 WHERE COMP_ID = 'rudyardkipling';
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE S_COMPONENT  SET COMP_NAME = 'abc', COMP_DESC = 'book', COMP_UNIT = '100', COMP_COST = 1000, QTY_ON_ORDER = 1000, QTY_DEMANDED = 111, LEAD_TIME = 11, CONTAINER_SIZE = 11 WHERE COMP_ID = 'rudyardkipling'
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Normalize ResultSet:
+	Number of opens = 1
+	Rows seen = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for S_COMPONENT:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for S_COMPONENT using index S_COMP_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 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=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=1
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER  T1 WHERE T1.PO_NUMBER = 100 FOR UPDATE;
+PO_NUMBER  |PO_SUPP_ID |PO_SITE_ID 
+-----------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER  T1 WHERE T1.PO_NUMBER = 100 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 S_PURCHASE_ORDER:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for S_PURCHASE_ORDER using index S_PO_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 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=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=1
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> UPDATE S_PURCHASE_ORDERLINE  SET POL_P_ID = 'teacup', POL_QTY = 2, POL_BALANCE = 2, POL_DELDATE = '01/01/2000', POL_MESSAGE = 'tintin shooting star' WHERE POL_NUMBER = 1 AND POL_PO_ID = 1111;
+0 rows inserted/updated/deleted
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	UPDATE S_PURCHASE_ORDERLINE  SET POL_P_ID = 'teacup', POL_QTY = 2, POL_BALANCE = 2, POL_DELDATE = '01/01/2000', POL_MESSAGE = 'tintin shooting star' WHERE POL_NUMBER = 1 AND POL_PO_ID = 1111
+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: 
+Update ResultSet using row locking:
+deferred: false
+Rows updated = 0
+Indexes updated = 0
+Execute Time = 0
+	Normalize ResultSet:
+	Number of opens = 1
+	Rows seen = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for S_PURCHASE_ORDERLINE:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {2, 3, 4, 5, 6}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for S_PURCHASE_ORDERLINE using index S_POL_IDX at read committed isolation level using exclusive row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=3
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=1
+					start position: 
+	>= on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+					stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+					qualifiers:
+None
+ij> SELECT COUNT (*) FROM S_site ;
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT COUNT (*) FROM S_site 
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for S_SITE using index S_SITE_IDX at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched={}
+				Number of columns fetched=0
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> SELECT T1.C_SINCE, T1.C_STREET1, T1.C_STREET2, T1.C_CITY, T1.C_STATE, T1.C_COUNTRY, T1.C_ZIP, T1.C_PHONE, T1.C_CONTACT, T1.C_LAST, T1.C_FIRST, T1.C_ID FROM O_CUSTOMER  T1 WHERE T1.C_ID = 23456;
+C_SINCE   |C_STREET1           |C_STREET2           |C_CITY              |C_S&|C_COUNTRY |C_ZIP    |C_PHONE         |C_CONTACT                |C_LAST          |C_FIRST         |C_ID       
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	SELECT T1.C_SINCE, T1.C_STREET1, T1.C_STREET2, T1.C_CITY, T1.C_STATE, T1.C_COUNTRY, T1.C_ZIP, T1.C_PHONE, T1.C_CONTACT, T1.C_LAST, T1.C_FIRST, T1.C_ID FROM O_CUSTOMER  T1 WHERE T1.C_ID = 23456
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for O_CUSTOMER:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for O_CUSTOMER using index O_C_IDX at read committed isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 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=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=1
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> SELECT COUNT (*) FROM C_parts;
+1          
+-----------
+0          
+ij> INSERT INTO O_ORDERLINE (OL_O_ID, OL_ID, OL_SHIP_DATE, OL_QTY, OL_I_ID) VALUES (1, 1,NULL, 1,'abcdefghijklmn') ;
+1 row inserted/updated/deleted
+ij> INSERT INTO M_LARGEORDER (LO_ID, LO_O_ID, LO_OL_ID, LO_ASSEMBLY_ID, LO_QTY, LO_DUE_DATE) VALUES (2, 2, 2,'id', 2, date('2000-02-29'));
+1 row inserted/updated/deleted
+ij> INSERT INTO O_ORDERS (O_ID, O_STATUS, O_SHIP_DATE, O_ENTRY_DATE, O_TOTAL, O_DISCOUNT, O_OL_CNT, O_C_ID) VALUES (111, 11, date('1999-01-01'),timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx), 10, 10, 10, 10);
+1 row inserted/updated/deleted
+ij> INSERT INTO M_WORKORDER (WO_NUMBER, WO_O_ID, WO_OL_ID, WO_STATUS, WO_ORIG_QTY, WO_COMP_QTY, WO_ASSEMBLY_ID, WO_DUE_DATE, WO_START_DATE) VALUES (10,10 ,10, 10,10, 10, 'abcd', date('2099-10-10'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx));
+1 row inserted/updated/deleted
+ij> INSERT INTO O_CUSTOMER (C_ID, C_SINCE, C_STREET1, C_STREET2, C_CITY, C_STATE, C_COUNTRY, C_ZIP, C_PHONE, C_CONTACT, C_LAST, C_FIRST) VALUES (1, date('2000-01-01'), 'berkeley', 'berkeley','berkeley','ca', 'usofa', '94703', '01191797897', 'calvinandhobbes', 'watterson','bill');
+1 row inserted/updated/deleted
+ij> INSERT INTO S_PURCHASE_ORDER (PO_NUMBER, PO_SUPP_ID, PO_SITE_ID) VALUES (100, 100, 100);
+1 row inserted/updated/deleted
+ij> INSERT INTO S_PURCHASE_ORDERLINE (POL_NUMBER, POL_PO_ID, POL_P_ID, POL_QTY, POL_BALANCE, POL_DELDATE, POL_MESSAGE) VALUES (121,987 ,'snowsnowsnow',11 , 999, date('2003-1-01'),'wow, it really snowed last night isnt it wonderful  last calvin and hobbes');
+1 row inserted/updated/deleted
+ij> INSERT INTO C_CUSTOMER (C_ID, C_SINCE, C_BALANCE, C_CREDIT, C_CREDIT_LIMIT, C_YTD_PAYMENT) VALUES (11, date('2000-10-01'), 1000, 'ab', 10000,1000.20);
+1 row inserted/updated/deleted
+ij> -- Cleanup : Drop all the tables created as part of this test
+DROP TABLE C_customer;
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_supplier;
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_site;
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_parts;
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_rule;
+0 rows inserted/updated/deleted
+ij> DROP TABLE C_discount;
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_parts;
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_bom;
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_workorder;
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_largeorder;
+0 rows inserted/updated/deleted
+ij> DROP TABLE M_inventory;
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_customer;
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_orders;
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_orderline;
+0 rows inserted/updated/deleted
+ij> DROP TABLE O_item;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_component;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_supp_component;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_supplier;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_site;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_purchase_order;
+0 rows inserted/updated/deleted
+ij> DROP TABLE S_purchase_orderline;
+0 rows inserted/updated/deleted
+ij> DROP TABLE U_sequences;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/staleplans.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/staleplans.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1167 @@
+ij> -- This is the test for stale plan invalidation.  The system determines
+-- at execution whether the tables used by a DML statement have grown or
+-- shrunk significantly, and if so, causes the statement to be recompiled
+-- at the next execution.
+run resource 'createTestProcedures.subsql';
+ij> CREATE FUNCTION  PADSTRING (DATA VARCHAR(32000), LENGTH INTEGER) RETURNS VARCHAR(32000) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Formatters.padString' LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- Create and populate a table to be used for flushing the cache.
+-- Flushing the cache causes all row count changes to be written,
+-- which is necessary for the results of this test to be stable
+-- (because otherwise the row count changes would be written
+-- asynchronously)
+create table flusher (c1 varchar(3000));
+0 rows inserted/updated/deleted
+ij> insert into flusher values (PADSTRING('a',3000));
+1 row inserted/updated/deleted
+ij> -- 1 row
+insert into flusher select c1 from flusher;
+1 row inserted/updated/deleted
+ij> -- 2 rows
+insert into flusher select c1 from flusher;
+2 rows inserted/updated/deleted
+ij> -- 4 rows
+insert into flusher select c1 from flusher;
+4 rows inserted/updated/deleted
+ij> -- 8 rows
+insert into flusher select c1 from flusher;
+8 rows inserted/updated/deleted
+ij> -- 16 rows
+insert into flusher select c1 from flusher;
+16 rows inserted/updated/deleted
+ij> -- 32 rows
+insert into flusher select c1 from flusher;
+32 rows inserted/updated/deleted
+ij> -- 64 rows
+commit;
+ij> -- Negative test - try setting stalePlanCheckInterval to a value out of range
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.stalePlanCheckInterval', '2');
+ERROR XCY00: Invalid value for property 'derby.language.stalePlanCheckInterval'='2'.
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 3500;
+ij> -- Make it check for stale plans every 10th execution.  The default is 100,
+-- which would force the test to take a lot longer to run, due to more
+-- executions.
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.stalePlanCheckInterval', '10');
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create table t1 (c1 int, c2 int, c3 varchar(255));
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create index t1x on t1(c1);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> insert into t1 values (1, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- Make sure row count from insert is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> prepare s1 as 'select count(c1 + c2) from t1 where c1 = 1';
+ij> execute s1;
+1          
+-----------
+1          
+ij> -- Expect this to do a table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			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 T1 using index T1X at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1
+				Rows filtered = 0
+				Fetch Size = 16
+					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> -- Execute 11 more times, the plan should not change
+execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> -- Expect this to do a table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			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 T1 using index T1X at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1
+				Rows filtered = 0
+				Fetch Size = 16
+					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> commit;
+ij> -- Now increase the size of the table
+insert into t1 values (2, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (3, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (4, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (5, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (6, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (7, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (8, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (9, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t1 values (10, 100, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> -- Execute 11 times, the plan should change
+execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> -- Expect this to use index
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			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 T1 using index T1X at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1
+				Rows filtered = 0
+				Fetch Size = 16
+					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> commit;
+ij> -- Now shrink the table back to its original size
+delete from t1 where c1 >= 2;
+9 rows inserted/updated/deleted
+ij> commit;
+ij> -- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> -- Execute 11 times, the plan should change
+execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> execute s1;
+1          
+-----------
+1          
+ij> -- Expect this to do a table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t1 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T1:
+			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 T1 using index T1X at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1
+				Rows filtered = 0
+				Fetch Size = 16
+					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> commit;
+ij> -- Now do the same thing with a table that has many rows
+create table t2 (c1 int, c2 int, c3 varchar(255));
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create index t2x on t2(c1);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> insert into t2 values (1, 1, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 select c1 + 1, c2 + 1, c3 from t2;
+1 row inserted/updated/deleted
+ij> insert into t2 select c1 + 2, c2 + 2, c3 from t2;
+2 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 4, c2 + 4, c3 from t2;
+4 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 8, c2 + 8, c3 from t2;
+8 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 16, c2 + 16, c3 from t2;
+16 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 32, c2 + 32, c3 from t2;
+32 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 64, c2 + 64, c3 from t2;
+64 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 128, c2 + 128, c3 from t2;
+128 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 256, c2 + 256, c3 from t2;
+256 rows inserted/updated/deleted
+ij> insert into t2 select c1 + 512, c2 + 512, c3 from t2;
+512 rows inserted/updated/deleted
+ij> commit;
+ij> -- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> prepare s2 as 'select count(c1 + c2) from t2 where c1 = 1';
+ij> execute s2;
+1          
+-----------
+1          
+ij> -- Expect this to use index
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t2 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T2:
+			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 T2 using index T2X at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=1
+					Number of rows visited=2
+					Scan type=btree
+					Tree height=2
+					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> commit;
+ij> -- Change the row count a little bit
+insert into t2 values (1025, 1025, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1026, 1026, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1027, 1027, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1028, 1028, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1029, 1029, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1030, 1030, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1031, 1031, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1032, 1032, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1033, 1033, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> insert into t2 values (1034, 1034, PADSTRING('abc',255));
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- Change the data so a table scan would make more sense.
+-- Use a qualifier to convince TableScanResultSet not to
+-- update the row count in the store (which would make it
+-- hard for this test to control when recompilation takes
+-- place).
+update t2 set c1 = 1 where c1 > 0;
+1034 rows inserted/updated/deleted
+ij> -- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> -- Execute 11 more times, the plan should not change
+execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> execute s2;
+1          
+-----------
+1034       
+ij> -- Expect this to use tables scan, as the above update has basically made
+-- all the rows in the table be equal to "1", thus using the index does not
+-- help if all the rows are going to qualify.
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t2 where c1 = 1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1034
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 1034
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1034
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1}
+				Number of columns fetched=2
+				Number of pages visited=87
+				Number of rows qualified=1034
+				Number of rows visited=1034
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Change the row count significantly
+insert into t2 select c1, c2, c3 from t2 where c1 < 128;
+1034 rows inserted/updated/deleted
+ij> -- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> -- Execute 11 times, the plan should change
+execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> execute s2;
+1          
+-----------
+2068       
+ij> -- Expect this to do table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t2 where c1 = 1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2068
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 2068
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Table Scan ResultSet for T2 at read committed isolation level using instantaneous share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2068
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0, 1}
+				Number of columns fetched=2
+				Number of pages visited=173
+				Number of rows qualified=2068
+				Number of rows visited=2068
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Change the distribution back to where an index makes sense.
+update t2 set c1 = c2;
+2068 rows inserted/updated/deleted
+ij> -- Change the row count significantly
+insert into t2 select c1, c2, c3 from t2;
+2068 rows inserted/updated/deleted
+ij> -- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+1          
+-----------
+64         
+ij> -- Execute 11 times, the plan should change
+execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> execute s2;
+1          
+-----------
+4          
+ij> -- Expect this to do index to baserow.
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select count(c1 + c2) from t2 where c1 = 1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (4):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for T2:
+			Number of opens = 1
+			Rows seen = 4
+			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 T2 using index T2X at read committed isolation level using instantaneous share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 4
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2066
+					Number of pages visited=23
+					Number of rows qualified=4
+					Number of rows visited=2071
+					Scan type=btree
+					Tree height=2
+					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> rollback;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache0.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache0.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,50 @@
+ij> --
+-- testing a cache size of 0
+--
+-- see that it starts out empty; 
+select count(*) from new org.apache.derby.diag.StatementCache() as SC;
+1          
+-----------
+0          
+ij> CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> autocommit off;
+ij> -- set up aliases
+run resource 'stmtCacheAliases.subsql';
+ij> --
+-- this script registers the various consistency checks for
+-- statement caching as simple aliases for ease of scripting
+--
+create view SC_CONTENTS as select CAST (SUBSTR (CAST (SQL_TEXT as char(200)), 1, 30) AS CHAR(30)) AS SQL_TEXT from new org.apache.derby.diag.StatementCache() as SCVD;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- see that it starts out empty; 
+select count(*) from SC_CONTENTS;
+1          
+-----------
+0          
+ij> -- see that it stays empty; 
+select count(*) from SC_CONTENTS;
+1          
+-----------
+0          
+ij> -- expect everything to be okay
+values consistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> commit;
+ij> -- clear aliases
+run resource 'stmtCacheAliasesRemove.subsql';
+ij> --
+-- this script de-registers the various consistency checks for
+-- statement caching
+--
+drop view SC_CONTENTS;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache1.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache1.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,82 @@
+ij> --
+-- testing a cache size of 1
+-- a little bit self-defeating since you can never remove
+-- the emptyCache statement from the cache and the
+-- statement to test what is in removes the previous one...
+--
+autocommit off;
+ij> -- set up aliases
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> CREATE PROCEDURE EC()
+EXTERNAL NAME 'org.apache.derby.diag.StatementCache.emptyCache'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> run resource 'stmtCacheAliases.subsql';
+ij> --
+-- this script registers the various consistency checks for
+-- statement caching as simple aliases for ease of scripting
+--
+create view SC_CONTENTS as select CAST (SUBSTR (CAST (SQL_TEXT as char(200)), 1, 30) AS CHAR(30)) AS SQL_TEXT from new org.apache.derby.diag.StatementCache() as SCVD;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- see that it starts out almost empty; well, just us...
+select count(*) from SC_CONTENTS;
+1          
+-----------
+1          
+ij> -- see if we can detect ourselves in the cache;
+-- again, because the size is one, this is the
+-- only statement we can look for...
+select SQL_TEXT from SC_CONTENTS;
+SQL_TEXT                      
+------------------------------
+-- see if we can detect oursel
+ij> prepare p1 as 'values 1';
+ij> select SQL_TEXT from SC_CONTENTS;
+SQL_TEXT                      
+------------------------------
+select SQL_TEXT from SC_CONTEN
+ij> -- kick 'em all out and then test the size
+call EC();
+0 rows inserted/updated/deleted
+ij> select count(*) from SC_CONTENTS;
+1          
+-----------
+1          
+ij> execute p1;
+1          
+-----------
+1          
+ij> select SQL_TEXT from SC_CONTENTS;
+SQL_TEXT                      
+------------------------------
+select SQL_TEXT from SC_CONTEN
+ij> remove p1;
+ij> call EC();
+0 rows inserted/updated/deleted
+ij> select count(*) from SC_CONTENTS;
+1          
+-----------
+1          
+ij> -- expect everything to be okay
+-- is a dependency on EMPTYCACHE
+values ConsistencyChecker();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+ij> commit;
+ij> -- clean up aliases
+run resource 'stmtCacheAliasesRemove.subsql';
+ij> --
+-- this script de-registers the various consistency checks for
+-- statement caching
+--
+drop view SC_CONTENTS;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache3.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stmtCache3.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+Test stmtCache3 starting
+PASS
+Test stmtCache3 finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/streams.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/streams.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,50 @@
+Test streams starting
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+Start testing
+setCharacterStream 8465 chars
+materialized insert: got reader stack level
+setCharacterStream 8465 chars
+materialized insert (for trigger): got reader stack level
+SUCCEED!! stack level as expected.
+setCharacterStream 8465 chars
+self ref foreign key insert(should not materialize): got reader stack level
+SUCCEED!! levels expected.
+setCharacterStream 8465 chars
+materialized for multiple row update: got reader stack level
+setCharacterStream 8465 chars
+single row update: got reader stack level
+SUCCEED!! single row update materialized stream.
+setCharacterStream 6417 chars
+setCharacterStream 5393 chars
+id = 3 longcol = aaaaabbbbbb
+id = 4 longcol = bbbbbb
+id = 2 longcol length = 5393 longcol = bbbbb...bbbbb
+id = 2 longcol length = 6417 longcol = bbbbb...bbbbb
+id = 1 longcol = ccccc
+number of rows ok
+setCharacterStream 5393 chars
+setCharacterStream 7441 chars
+t4 id = 4 t4 longcol length = 6 t5 id = 1 t5 longcol length = 6
+t4 id = 2 t4 longcol length = 5393 t5 id = 2 t5 longcol length = 5393
+Start testing long var binary
+setBinaryStream 8465 bytes
+non materialized insert: got reader stack level
+setBinaryStream 8465 bytes
+materialized insert (for trigger): got reader stack level
+SUCCEED, level difference expected.
+setBinaryStream 8465 bytes
+self ref foreign key insert(should not materialize): got reader stack level
+SUCCEED!! levels expected.
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+teardown complete
+Test streams finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stringtypes.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/stringtypes.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,423 @@
+ij> --
+-- this test shows the current supported char, varchar, and long varchar
+-- functionality
+--
+-- create a table with null and non-null char columns of different lengths
+create table ct (c1 char, c2 char(5) not null, c3 char(30) default null);
+0 rows inserted/updated/deleted
+ij> -- insert some rows
+-- first, try values that fill each column with non-blanks
+insert into ct values ('1', '11111', '111111111111111111111111111111');
+1 row inserted/updated/deleted
+ij> -- now try some values that are shorter than the columns
+insert into ct values ('', '22', '222');
+1 row inserted/updated/deleted
+ij> -- now try some values that are longer than the columns, where the excess
+-- characters are blanks
+insert into ct values ('3         ', '33333      ', '333333333333333333333333333333          ');
+1 row inserted/updated/deleted
+ij> -- now try some values that are longer than the columns, where the excess
+-- characters are non-blanks.  These should get errors
+insert into ct values ('44', '4', '4');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '44' to length 1.
+ij> insert into ct values ('5', '555555', '5');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '555555' to length 5.
+ij> insert into ct values ('6', '66666', '6666666666666666666666666666666');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '6666666666666666666666666666666' to length 30.
+ij> -- now try inserting some nulls, first in columns that accept them
+insert into ct values (null, '77777', null);
+1 row inserted/updated/deleted
+ij> -- now try inserting nulls into columns that don't accept them
+insert into ct values ('8', null, '8');
+ERROR 23502: Column 'C2'  cannot accept a NULL value.
+ij> -- now check the rows that made it into the table successfully
+select * from ct;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- now try the char_length function on the columns
+select {fn length(c1)}, {fn length(c2)}, {fn length(c3)} from ct;
+1          |2          |3          
+-----------------------------------
+1          |5          |30         
+0          |2          |3          
+1          |5          |30         
+NULL       |5          |NULL       
+ij> -- now create a table with varchar columns
+create table vt (c1 varchar(1), c2 varchar(5) not null, c3 varchar(30) default null);
+0 rows inserted/updated/deleted
+ij> -- insert some rows
+-- first, try values that fill each column with non-blanks
+insert into vt values ('1', '11111', '111111111111111111111111111111');
+1 row inserted/updated/deleted
+ij> -- now try some values that are shorter than the columns
+insert into vt values ('', '22', '222');
+1 row inserted/updated/deleted
+ij> -- now try some values that are longer than the columns, where the excess
+-- characters are blanks
+insert into vt values ('3         ', '33333      ', '333333333333333333333333333333          ');
+1 row inserted/updated/deleted
+ij> -- now try some values that are longer than the columns, where the excess
+-- characters are non-blanks.  These should get errors
+insert into vt values ('44', '4', '4');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '44' to length 1.
+ij> insert into vt values ('5', '555555', '5');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '555555' to length 5.
+ij> insert into vt values ('6', '66666', '6666666666666666666666666666666');
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '6666666666666666666666666666666' to length 30.
+ij> -- now try inserting some nulls, first in columns that accept them
+insert into vt values (null, '77777', null);
+1 row inserted/updated/deleted
+ij> -- now try inserting nulls into columns that don't accept them
+insert into vt values ('8', null, '8');
+ERROR 23502: Column 'C2'  cannot accept a NULL value.
+ij> -- now check the rows that made it into the table successfully
+select * from vt;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- now try the char_length function on the columns
+select {fn length(c1)}, {fn length(c2)}, {fn length(c3)} from vt;
+1          |2          |3          
+-----------------------------------
+1          |5          |30         
+0          |2          |3          
+1          |5          |30         
+NULL       |5          |NULL       
+ij> -- now create a table with long varchar columns
+create table lvt (c1 long varchar, c2 long varchar not null, c3 long varchar default null);
+0 rows inserted/updated/deleted
+ij> -- insert some rows
+-- first, some short values
+insert into lvt values ('1', '11', '111');
+1 row inserted/updated/deleted
+ij> -- now some values with trailing blanks (which should be preserved)
+insert into lvt values ('2 ', '22  ', '222   ');
+1 row inserted/updated/deleted
+ij> -- now some long values
+insert into lvt values (
+'3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333',
+'333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333',
+'33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333');
+1 row inserted/updated/deleted
+ij> -- now try inserting nulls into columns that accept them
+insert into lvt values (null, '4444', null);
+1 row inserted/updated/deleted
+ij> -- now try inserting nulls into columns that do not accept them
+insert into lvt values ('5', null, '55555');
+ERROR 23502: Column 'C2'  cannot accept a NULL value.
+ij> -- now check the rows that made it into the table successfully
+select * from lvt;
+C1                                                                                                                              |C2                                                                                                                              |C3                                                                                                                              
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1                                                                                                                               |11                                                                                                                              |111                                                                                                                             
+2                                                                                                                               |22                                                                                                                              |222                                                                                                                             
+3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&|3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&|3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&
+NULL                                                                                                                            |4444                                                                                                                            |NULL                                                                                                                            
+ij> -- now try the char_length function on the columns
+select {fn length(c1)}, {fn length(c2)}, {fn length(c3)} from lvt;
+1          |2          |3          
+-----------------------------------
+1          |2          |3          
+1          |2          |3          
+247        |432        |821        
+NULL       |4          |NULL       
+ij> -- insert-select from varchar columns into char columns
+insert into ct select * from vt;
+4 rows inserted/updated/deleted
+ij> select * from ct;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- insert-select from char columns into varchar columns
+insert into vt select * from ct;
+8 rows inserted/updated/deleted
+ij> select * from vt;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- insert-select from varchar columns into char columns with truncation errors
+insert into ct select c3, c2, c1 from vt;
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '111111111111111111111111111111' to length 1.
+ij> select * from ct;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- insert-select from char columns into varchar columns with truncation errors
+insert into vt select c3, c2, c1 from ct;
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '111111111111111111111111111111' to length 1.
+ij> select * from vt;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- insert-select from char columns into long varchar columns
+insert into lvt select * from ct;
+8 rows inserted/updated/deleted
+ij> select * from lvt;
+C1                                                                                                                              |C2                                                                                                                              |C3                                                                                                                              
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1                                                                                                                               |11                                                                                                                              |111                                                                                                                             
+2                                                                                                                               |22                                                                                                                              |222                                                                                                                             
+3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&|3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&|3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&
+NULL                                                                                                                            |4444                                                                                                                            |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+ij> -- insert-select from varchar columns into long varchar columns
+insert into lvt select * from vt;
+12 rows inserted/updated/deleted
+ij> select * from lvt;
+C1                                                                                                                              |C2                                                                                                                              |C3                                                                                                                              
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1                                                                                                                               |11                                                                                                                              |111                                                                                                                             
+2                                                                                                                               |22                                                                                                                              |222                                                                                                                             
+3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&|3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&|3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333&
+NULL                                                                                                                            |4444                                                                                                                            |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+1                                                                                                                               |11111                                                                                                                           |111111111111111111111111111111                                                                                                  
+                                                                                                                                |22                                                                                                                              |222                                                                                                                             
+3                                                                                                                               |33333                                                                                                                           |333333333333333333333333333333                                                                                                  
+NULL                                                                                                                            |77777                                                                                                                           |NULL                                                                                                                            
+ij> -- insert-select from long varchar columns into char columns with trunc. errors
+insert into ct select * from lvt;
+ERROR 22001: A truncation error was encountered trying to shrink CHAR '333333333333333333333333333333333333333333333333333333333333&' to length 1.
+ij> select * from ct;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- insert-select from long varchar columns into char columns without trunc errs
+insert into ct select * from lvt where cast(substr(c1,1,30) as varchar(30)) = '1' or cast(substr(c1,1,30) as varchar(30)) = '2';
+7 rows inserted/updated/deleted
+ij> select * from ct;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11   |111                           
+2   |22   |222                           
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+ij> -- insert-select from long varchar columns into varchar columns with trunc. errs
+insert into vt select * from lvt;
+ERROR 22001: A truncation error was encountered trying to shrink VARCHAR '333333333333333333333333333333333333333333333333333333333333&' to length 1.
+ij> select * from vt;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+ij> -- insert-select from long varchar columns into varchar cols without trunc errs
+insert into vt select * from lvt where cast(substr(c1,1,30) as varchar(30)) = '1' or cast(substr(c1,1,30) as varchar(30)) = '2';
+7 rows inserted/updated/deleted
+ij> select * from vt;
+C1  |C2   |C3                            
+-----------------------------------------
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11111|111111111111111111111111111111
+    |22   |222                           
+3   |33333|333333333333333333333333333333
+NULL|77777|NULL                          
+1   |11   |111                           
+2   |22   |222                           
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+1   |11111|111111111111111111111111111111
+ij> -- Now try insert-select with type conversion where column lengths don't match
+-- but there are no truncation errors.  Need new tables for this.
+create table ct2 (c1 char(5), c2 char(10));
+0 rows inserted/updated/deleted
+ij> insert into ct2 values ('111', '111');
+1 row inserted/updated/deleted
+ij> create table vt2 (c1 varchar(5), c2 varchar(10));
+0 rows inserted/updated/deleted
+ij> insert into vt2 values ('222', '222');
+1 row inserted/updated/deleted
+ij> create table lvt2 (c1 long varchar, c2 long varchar);
+0 rows inserted/updated/deleted
+ij> insert into lvt2 values ('333', '333');
+1 row inserted/updated/deleted
+ij> insert into ct2 select * from vt2;
+1 row inserted/updated/deleted
+ij> insert into ct2 select * from lvt2;
+1 row inserted/updated/deleted
+ij> select * from ct2;
+C1   |C2        
+----------------
+111  |111       
+222  |222       
+333  |333       
+ij> insert into vt2 select * from ct2;
+3 rows inserted/updated/deleted
+ij> insert into vt2 select * from lvt2;
+1 row inserted/updated/deleted
+ij> select * from vt2;
+C1   |C2        
+----------------
+222  |222       
+111  |111       
+222  |222       
+333  |333       
+333  |333       
+ij> insert into lvt2 select * from ct2;
+3 rows inserted/updated/deleted
+ij> insert into lvt2 select * from vt2;
+5 rows inserted/updated/deleted
+ij> select * from lvt2;
+C1                                                                                                                              |C2                                                                                                                              
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+333                                                                                                                             |333                                                                                                                             
+111                                                                                                                             |111                                                                                                                             
+222                                                                                                                             |222                                                                                                                             
+333                                                                                                                             |333                                                                                                                             
+222                                                                                                                             |222                                                                                                                             
+111                                                                                                                             |111                                                                                                                             
+222                                                                                                                             |222                                                                                                                             
+333                                                                                                                             |333                                                                                                                             
+333                                                                                                                             |333                                                                                                                             
+ij> -- Now try string constants that contain the ' character
+delete from vt;
+19 rows inserted/updated/deleted
+ij> insert into vt values ('''', '12''34', '123''456''''''789');
+1 row inserted/updated/deleted
+ij> -- RESOLVE: Would like to do a test of non-terminated string (i.e. string
+-- ending with ''), like this:
+--
+-- insert into vt values ('1', '12345', '12345'');
+--
+-- However, the unterminated string confuses the ij parser.  ij has to know
+-- where string boundaries are, so it can tell whether the ; is a terminator
+-- or a character in the string.  So, this test won't work with ij, because
+-- it will think the ; is just a character inside the string.
+--
+-- This test could be done from within a java program, but it would take
+-- a fair amount of work for the benefit.
+select * from vt;
+C1  |C2   |C3                            
+-----------------------------------------
+'   |12'34|123'456'''789                 
+ij> -- Try creating a column with an illegal length
+create table badtab (x char(10.2));
+ERROR 42X44: Invalid length '10.2' in column specification.
+ij> create table badtab2 (x varchar(0));
+ERROR 42X44: Invalid length '0' in column specification.
+ij> create table badtab3 (x long varchar(3));
+ERROR 42X01: Syntax error: Encountered "(" at line 1, column 37.
+ij> -- JDBC escape syntax for string functions
+create table trash(c1 char(10));
+0 rows inserted/updated/deleted
+ij> insert into trash values 'asdf', 'asdfasdf';
+2 rows inserted/updated/deleted
+ij> select {fn length(c1)}, length(c1) from trash;
+1          |2          
+-----------------------
+4          |10         
+8          |10         
+ij> drop table trash;
+0 rows inserted/updated/deleted
+ij> --- Test for really big literals. Throw an error for now. beetle 2758
+CREATE TABLE "LVC"
+(
+	"LV"     		long varchar
+);
+0 rows inserted/updated/deleted
+ij> INSERT INTO LVC VALUES ('4749463837617201db01f70000000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde321f90400000000002c000000007201db01c7000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde308fe005fc122f6ac20b483d0a61d5488b021428510a74dabb64d62b68ad5b265cc7691e3b68f1e417edcc67163c98c26298e1cc9f1e4c58dd734a2ac4653664d943637ce4449b21ab59a2d6952d3a651e6499f34932a556ab428509c41c7219dfad3e9ce9b49ad465b2af4a7cfad3fa979f5aa34ec57b1d4ac45a306566c34b570d52265bb96ee5bb668e9ba45ba36dad66a6bf99af59937b0dfbb78dfaa55ecb799356b6c21d3f509b7ad5fc297d112462bb099ac8205254a7c26d19ae869a64d9f3ead2de1b569d7b45d9b4d7b5ab6d719afaddca6f223cd91d37a92bc982e5b717a248b6b2c97eea3f26c52398ebb58ae9cc671e98a37bfcebc79f66ae3bafe674f97b11c76e8d8c763379f3eddf4e9e0b795d3872f9df572e17857f3768df974f3cc5597dd38edb5474f3af498e75e35ee8de3cd7ed901e8cd84ec95838e79e079535d390f4ab51f35133a88d4350f7a03a2583499d895581a1246d883fb7d882252d2ec774d383f3d88a25926ea58a38b3ee9586238d584a3628d138a45a4892896b86259d44813d68c30a69894542186281068ab89a65a97afd966db6cb7bdc61b6ddbc4149b6d6992b41b482a9523df36086a37e078f020080f3c09eec96776748e176177cca123e8a175de999e37d7a5e3cd8108423a6036ddd1931e73f4a063683a9bb6939da6a0a6e3a9a8f18c63cea68612c8a9a7ecd8d7dda8fee6a4d36a76ed808a8e39a69a638e79b7a6b36b75bf6a585d351896189e8421eee7203538ee37618f317a138d942456230d937e4929e58348ee28cdb552e2982393ded41865394a4ee86c8f2612192d8846629324bb4c1a096289cfc2fbac83b83ac85c37dee88aab39dde8ba2569a475295198625aa41146afcd169c6dd5e846d135b98d24276f72a6a30e9d2079974e9e7456f79180238b971da4b6b667a8a65215370eaaf6853a73a69cc263ab3a86c6331e3af2c8934e3cf16c0a4e783e7bda4e3b44677a2a3a45dfea8e3cf1047dab3c57d383b53c4c6b4db5cfe864caced6eca823cfd8f3786d0e3bec68aaabdbe1b82db0c0e18423ce8613d64d61fe39bbe6ed6c86319bc3a283cf1ad96394135e6bedb3dc52f30d93cc96786f90d0e6cbf8e3f87a6338bac6e2caf8e71a0accef38e0146c9ee7bb022cad39edf4dbce38ad8f33f63becb873f069dc2c0cdb34dac016316d1267039b6c64f634114b69ea0612a5cef5345ea0d8494a0f3d3c4f3f9ea42b6f9aa9a1f49c5a0da43823ea1e39435f7868f4e3c583333d3e97c33e3baa66433d3a3c8b0ab43aa21e5875d8e8c04374d1f1a855dba036b5788c2d68f390c7a9e0e10e0312ed6c611bda3c6ea52976e8ca57e6209ad26aa52b0bad0d5fc40a0787cc53b0104985401a0ad8bd1c141e2c858771e1b08f37b00423c3ad2b1c844b8791c465b880996386fe75630fe1d405b071000c448feb21bfbec1c26e3471864723503796063bd64d917504c2d5eb60b7b42d767169016cc7c112b2b0dfed4e6268049ef02e129cd9a4891aca4b1e4d30d61f8ca548631b12dfcf46b62904a9431dd1c31ff774a62979b0cf569aa2073ba2160f9e152d5655d3d9f69ea6a9aa550d6bb72ac7d60c4935a0854a54080c9a2847090faa7d4d6bee609a01bf6649774c0d3ba25ce522e5e18e030a7091010c87c0cab18e5aa2a3606ccba4ae74192b700cec83ba721038cad10dd525891a585ad7e78c649ebc01cc4848bad60fbd010e6e1a0e89d2e8e6e7a8d10d1035f39c009b623a27d40e2786e868ed14a7379ad94d78427186affedb22ecb8083b799063916c6b0738bed88e45d6a30f1d60c10b00b10a24bce0a10a5d682bdea0501bfc6361d6e086431ffa503a70431ad7d0873efcf18f8ac0668ed3108748f7e18f95eae34c23b5877e6e7423feeca31ff6988d3df4d10f78f48739b309c735cc71d37ef4c31ffe382a3cd43152a426d5a8fbd813cfe4c133b7b15487e960e93cf4b10f9672751ffab0873a74358f7e2002065c482b0c5e100c7c74d51bc530c63df6314074b8031d0954c75dcde10ebd9aa3970a64073dfc518a17c000ad5c80011df6f10e7158f01de660c637be618cca0a0319e8b0073e8c310b5ecce3afee30c73184710c6320e318c7e88537c4610e718870a7bca8fe45243e310b6fe88317bde0452ec491a3fda06318863dec5a1521d26364021179b08431e8f1ad6f7c4b4ad12857b9eec5ac7074cb1e71486c62d74a077d54c31cd940831ad08006405c437191c80372f3c05ef62aa319edcdc319cc60097714a99bd2b087373661062f74e1bf60a0432dd4010f7394ae74dd00873de00b062f38980eb9880418268c0bae2d4d20b2484632b8a1058e729414dc68084350c30d2178f80574c00634fcc1841383011b1391c634b0818d663c74ad8765ab3df6c48d2255831b5f08ee61c3a00f8cd903133110f20b48a10f387a031e8515ee5a2db18fe00861bb871d833bc873b77dec41ca3088012ed611c36d7841b8891dc3fe3d5ccb2165c00311c14d2b5bd5118e615c59bb2f18833f5ce98e798c95af7caedd5f7565c17db8c2b0dae5c218ece158bdb6e31dfbc8c40bb0fc824bf443a0e000076b2dc80e7dd001ada0b60136de018e7588c31dfa50051a6e2ce5c4be2011eb68ad91d6616334c3201124da8717840c031e28431c977bae341e873918ea230f607ec11cf6618f66dbe0bf5d48f1b50c470f332036b1b8d005a82f018f1e4ea80b69957325649a0e71eca91c4bdd0637b959307f60c31473a88190c32d66764c718cdcf887beb991ef7ff0bb4b09d946bfb9610f82c3a3e0d8e0863e0efe8f9dca141b743cb8c3452a52b1062a5087ba063c28ded5b0c2631d20f7d51ffe6318214ead9490402be53c0e3e8f79a403e463f5953e8a718dad6e75b360e0f50b2cf159d6fe796a545587a9cdf18ed0d2afb5d961eda9feda8ebbd6ae960a8c15dbf84ccbb11970eaae94c73cd8b134be12e88bb2bbab2bdbc137778083eb047dc73bbade5a5db972e806ce74a605d63a0373539e136ae6e7a4590d711629497a2ff684109c387b6d137413b23b38dcc15f30849b0b3dc006ae4a670e2319b31df3bcbb81059a60708443ee053370c10e6cc1d61174696867874092111a32c25822d0a8068c4d730d6c08efa4ba8178c5ce54b1da5cc33bcd1bcf3a3c06a8a5fe117fc41fd9f105a933755808e5e5387ef4ff68fca2b5cd63bb0a15cf4efe75d7aa0a0d414f5347db969aa7b3d1a381b5acda3cee0aaaa79f2a986b53a002c56f0efc59d0ae86a265ade2b1fe82a61257e830366c737f4b27686c630e67333659b7807c35750758505a574bea90407cc533b5434b7ae53653b736f8172b75a72b05552b51a70ead33776ba32bebd00ebd3456aeb436ffc736ddf4799a0382e2d04c02034ff2148357c43a9ba745a4e30d98774510c876a64730582450a6b234c674845d947af5c00ef5500fabc77a0ba130af570d1201636d9226b2973cc0d37bca930eba7123cdb10e69c20de69027eb803fc8677c7fe431042655dbd77c3cc386cb477df2500dc48035dba3293af33428c70eefe07d58833fba524afef1600e2de7679c7235a5b4495475741dc833ee106bbd344102732b6b33369a924a03b8487af589beb434bea282b5b37ed5712b0c543b01c8356e273501f847ee373790554b7587356d333509244ae2573676458284c67520d80e2ca80e05b357f2c05aad534bc1c482a9742bf5d44c3d2442bad279967779331830dd54304ed44dad03838f6384a5f375edd4755d345097b783acc30ef834504dd80e52080b1af60c64a43013711a18830d60881bbd973c1f114772d21ffff87b1e9327eac00d04b60d04867cca178766230fcda73386840e15b77004260fcd564a7488805aa70f1d29527e1634f6800ed58049cdd7729d64219db47f63a372417375b4d4fe482f792bb9c80e36a775866241a7523453b353a6623541f334b8f88a1f3835dde74a42573615d83675f77301858095e876ad928b0545687c75959ff581efb73675b70e4a493772b78e73f3366ee70eb2437402b30ea4038260b96eba6483e2d00e753396c4642ab09360733377ed744599962b71177a4d374575573b05453b82580f6b8798ab6710339685ab217b65a48f1331476e043c6e648680f2316bd83c6fe831f2d17c1e836e4b951dc3d78888f447a8e20f6540076a6106a4b00fd4072a7cd53f8b3006fd60576d230ffab007c1b07e4b950d91f00d40330fda905ea4904028390ca5500ff0100d99e00d016893f2600c88a0077490077d9569fafe600697b00f7c557454d50decb00fa5d0036be729a1d50ef7d00c89b00f4d770fd9900791f008b59040d1590b5e1009b4e005b4500b745003b7a00f57790c66f005b7400b745095ba620fc6900789d00b605009f3a077b5d00579700b790006ca105a3fa40b601009bed240d5590c91300b02aa2bc700065d6009bef00579b00f9a63383f9469fb700677500d29c8a066700ae0f008c7c9743ac967a2e77957597703850eed006c63b9a4bad2977b090ea2c23a751795053550c2c88ca64750418398f5d04518061a0b7110af077ba7518fbba38fc003716e2470b3611f6d3a7cead01fcf237cc9877c0ba9299c122b4b577f89b47d6ec37e04c67e67232bfe9e2435f5c7297d6557ad437fcec86968838bef200ff5004156879b092888f3b08ca1350f45577f4ce9674ba74b4a984a1fc8353a290d9f7783ac530ec6146b73a70f99c008de295063e97929383766477701e82b5ca7931da42b71694c7f3637c0684c6cf67975634cf2647987c74c7869604dea439547304ba82b3ed4a99fe779319aaa0636971caa8dac939e4d57508e7a8081c675b6d874f2709e6cc335ef300f5d1aa9ad000bcfc07a06e110f87a8fb3014774241170745203491bdef13104b90da5291f78c23385f22974e886b142483cb37204269b55052a88884b10297e4067358db48867a375a2747e0884925a879c097449a294404d175a50c7fe362d974ae27735eb175ae9300f063468553956add34b52caa183363716145a7fb686ae3a9b07483b5d84824a3b8ce48a9bc6c46701188b95a8954b1a30e9f40df4644cd6983783074332684c85334dcf026c99668304932b99567702a5842518aee91a50a6b4769bd8740145b7fcb4346ad784f34a10f4380d09d398602211282563f758314a318662083cce510ec4d21c27432742f7312bd3866b7821fdb32b751836b10934a384b210490e54669389ca0efec006a0d00f8f20077be6678d34350f39b2bbb88b68b37ea2b4b107840f55800bfb204a9d08417cb53f2f5968b5a00cb403ab60600ff7900878c00fdff005ff500fca2a3051a789902603b7fe000fa526304f17976d27adafc383734341562930ec4796c7060d5c9360b08a0bd66a7756344ff2e4388ce34c3218b685732d8c336ccd0543cfda0de1a077ea040ebf248ec9e4445b040ed4c09645d836e6da0e67f38e03e8a5f278afd0f07a644446694263b0e18596f985954927eb307dcee190d4b70e7e427eef2056c7970eba889c7be2b11e3b81f0b08b586394f6100db5700a9f500b2ad557f3b00a89400bdf9040c690098d200cf7300c906009ed600f5ab70fbc6009b9500396a00fed8092fa300c9cf009b7000ef5600ff4500a9ff009c6403bbaf90d9f200ab440099f200c88c98c50f759b6500b5dbc0ff3d00cb5c00ab5b00c4f080fbe400bfee0f0b2724c0bca500fa7a20e73876aeb000cb6700bccf00ef790b4ad030cbd800df7106b7c650fd6d00bca000dca900c8d150ec0e0c9d2e02ba5662ad17010449a7973c74de9a00ccae02b32280ee2548393f52cb71c0df48bbf49542edf702f46f238008377f49b789dc74d9c375005b3b677b9b64bc34dac83cc2748ae63c7365d3a80ecbab7f54a8f0dc1cda89185581831e14c1b2a61476b1a7c66c80d6bf8470829551fb7863b76c27e869a6613872be7b1a1b48833dc72b9f947673381b1ab75f6d07203bd88068d9ca344d07d8692070daf7df69225ab0f266bb2258b92fc77401eab80231ba990d5367a554ba1c58aa617a5809694ed6b8e3cf8fe7f7c45b57339377563243f547961bb439f4322d7620ca1b00b99c0c681d00848d00748f0011780032e90021e900119d0011d800114a00119400343400349900469a00ac3b00bbed024cf42ad79f72d1f9279cdd44e680b824b18805f24a565f97feb403b525a8e86f98486897aaab725c9d00c07f11809610d09510d0961a682eb461793268e1b4798e99922539a7e12cff14cd0e4d77279329c8ecdd008a491290b74f8b088f850d1246bd03b15d15128d1606573305c0f1e3ba9a6edae1f1b34e4990b60f5c5fb300c54f6aea1a4d90c4ddaf0aadaf90006eb30a9413335ed2a88bd7a81fee7db99e84afe90099730a133b84c3ff4bfa9da4dd61aa3d2fe6d387a2354df100dbe000aa6a0086ee0076210021e70011550012730032390010fb0031d20024600020f400114b0000cb0000f90011640010f40df16e0010ee00014d0010fa001e17d014330034840033870042c70011da0011db0df3930042330023310e14740036fe008bed00cd7327550533b30597502c8a9911ac121e8c09f98e24fb80a0743c17d1d7b55080d843b1b60887b74d41c02ab90e9c00dd91187dce0867168c2c7b7867e82929c4b558ff8882be70e1a79404029d9b4bd88125dd02d1785cda60f5f2c5251b8e5f07a0f595e0ffb60db936ad0e04057b4e40fcdc004c2b00fae340ff85006cbe09e0f3d0ffb200479600cb7700ffa10a9fe604e0b3c10e65bd50c34200e2cb50778e00f55b70f71e009f7700fce700797dc0efa00096a760fde5003c1905307b684b45c24c0a64b504aa4d0aa213bd40cbe600c73d0011480010ff0001500dfefed011ef0eaadee00ef6d010f80000bb0eb0cc0000880001cd0021e4001f33ddf08c000f85d01bbee00befeebbbbeeb0f0001b4ceec145001e25ded4afd000e90d41870014fc0df0fc0e01d40032400047ee00ad1e01e18dd3a097440a728a9505835f5100f51088550f80ef57e021aa0024b200558a00552e00977ed0aae600869e008ac400c786d0dcaf0180eafd76a117b74740de29026e2f07b77f3722f377cc3c71ceb4ccfc73788a889579dd8fe57b39975b7a257250bb2f92cc8073db2254be5b6cdd0f350d0cd964033fff21b0df39c9a4a0bdde6330b416deeaea298407cb634e959ad57097246caa44ddf5a4e0addf69b8df81b0dca202dbe40094970043ae0022320024d80dfbdce012ef0000ce000f2fdecbd6eeb0be00026100410a0edf18d024440ec1af0ec19e0011840eb15d0ea679ff66b6febf5dddff3cdeb0e7001f87d01887fdf0c6001191002e27d011f6001fb2deb1d50047530042640021d40024e500582900a5b4120ed2aa9a2148566dca55118000f7002fa7e024ba0034650077050074b40033bb00682600886b0041990044650012a500438400886e0076e200785a00cca638614feff11dcf0133a240dd6f00a8f600cd2000dc6f00bbf600c3b0487c7a789874c7d080db24037f411384a08d467a43df392eae5241b85f09af3bc9db29b0daf2819a95b6a0fa45db288b9ae0021afdd3b79f3eacd2b38cfdd3b76eeccb9533810a13c76efdcb163d7ae9db986eeda81d3d82ee34673edc4950457d25cb78d2dcd8103e90d5c376f3561d60c07ce5bce6edfa8499366ccd829244b90ac998226d01310399c40a1b1a10205070c2854a8e0800206060b1c3c7050f5c1850b152e74f0d0e143060d182870f09001c2820374172040b0806edeae78173c6010f882050c1516046670a0abe20b143260e8802143071233dcb8624483c205101a407cfed83a020409291fb0386ac326902f6a14d9c993578f5d3ddaec7464d192a50e962546926881038790a13e70961021518202050b101e3cc662c84d9f4083804ddb96fd9ab56be5b297bbb6cbd4ab357f4c55238649542a5fd1ca51032694983975e9807102e62bd02762ded099834d1e740284679e78d889679e892682cd9e830e5250c1000b4aa842792c7a679ed734ac0843d75e7b274481421431c07ada812dc4852ad268c38636c2481e8f34baa8a391301aa91d965e8249239840eae6c71d5ffae8239d64ba69a79c94fce61b659431a69847a62c659659fe68a103102a7800b0b01870202faf0c434cab07f43a2ccc34c15aae4b0c1c48f32a0a107bfe2e03103c70ab4b06c0fa2aaca9e0eceaaeaebafccab10fb202b45038c7eaa0830bc07a80022d5bf8e0d1c0223d6b082794482515518a4107a377ea79a7040d88d0a20e2b4850e108238ae02d8ae28c98a18a43b0d080cb072ae8400d4f3859a5934e5281e69a6daeb9261d71b649071a62acb1c69b74aa790410638861a49868a4d9c51878d251275c78cc9956144e8c91169d79d4a9491c77d491471d88e40170c284e20950c27c332448417b604388a0143772882370a289c61884a16cd21b731e2a685e86440c31238f6a84d11c7140faefe187426aa91d77dc49699d8dc01927c894c431324895610aa726736c3a52a626c3f9a6a69b85f1e61b638efe51e69b5e1e11e594395a7840890bfeaa2a2c42cf44f33006f8a2e001c8aa0a2c6a040ea8abcbbfae024bafa92f3d8c4f38a5d61a310658f08005aaaebaa0aa053ac8a04fb018c8aa020b2a6db44b0d4af06004127000a1510b0a6f8c83465ba0c1053f3831251a73c669e79b22722364923e96484105133ce060010a96c0020e2c8650a1041c00f74087340c314410473ae1a49367ad91a69a64b759075c75b689a65363d678e21163aaa9461a627629459554380985975038a982925d02912390424209a51037d8d8c30d35d240c38f5ea229a61863a84147de8bf24568647702cc10a101f59de7615fb078c283e45ad8d205303040b794000d43c8920bfe5c908641dcc21b2c79cd412c4230818c6c1d3cf2188e4ae2918778a4470f79c93a48f630710429241afb914e7492339aed642737f946cc8c6187442882146a508228ca909623b8c12c57d1c005862083af20060160f28a5ecef20004102a2c66129bd4bae42640e9a52a7c79229bb814b75d15265060fa93063a00a7aa5ce589722ba257e614a9aa05ca6e5daa000b2a0004cd2ca70218184d095c200537f82114d6e806e532f20323600105cfd1011c0e51883ebca10e7e08161fb45085223ca1084d8083201a49883a2c2110a630842a3a6108544c631ad0880f3590558d42d0000d8e7802119c508528bce10d4dd0810e2ae9062810e1094d20821c9cfe80851c54a1094e90020d88a08321e4e00943a0410e98a08432b4210ad1a4c1348f90863520c1096e6883f8fe608747d0a23f0fa3463130b18841ecc1097668c11d50410c62b4a111c650820b4a10854e4ccf14a51885121ad5031170460725c0400ebea00324e0a03068a1db0846f098c744e6063350c2204c810a60b823540d89116c46322371e4e8632751493b6a528c3264530e7fd8031bd49008467c2217bc108afa8c310b271cca399b314207ac622a0660e0803480005996a315b454606c598b9a57fa22a6239e6d504f545b540f80003262006a0cb080062ce0950e540d3073bae2d8b472c62ecd496a97929bdaf88429b48289500cc8c0593853feb807786006332001000e90010b6845075a78031cb48085294c010b5870031cfa00bb3ed461387e10c42108918513cce00d9520841ffc70cf69e88e188e0004240401074324010420a08120ea000712384a32b04d810e9c70041dd0c0031ee8e510244a0312fc162d1f20c10872801c1de0a0050705600e94400837d0e00e69e840096860840f48a6053968c21fe6d0810db880061dd8c11370000a5e14c317f9e905307ab10b5fa40215a6d8052a06b10637acc10934d8811e6f00c0b5c425321a48cb0870e082168c400724b8130d3c010c5ea082178fb043199a900436bc410d7f780430e061b29476a31b2f1147cfbc418d5c1c412d2ee8aea41ac582fe11386a5733e0010890c00646b0610d65702608ccf6a53ddd353076a34a9ac2042626dfc52f6ffdd2619e1c3526e30d6a690acc5297eaa84445caaba2ebca9ec416e6a934594f4cd6d303c2da340dd458044c008255f496dd35e860061ea8c0119ad0881338e0020d48cc5729b001082459ce6b8c94596860021060610622c04227e0d0cc3714221084301d1b045188e034b20834480211d0f00643d0405369a8420548c0bf35d8b20d6fb8a4f6e0508552a72532cec581081c35821610214b1860dc0daa808510908004341801056480841e84602a66490b82477081628b713217b8c3271e618a63f04215a040452e4e610a5184c217bce845288eb08640fe3042118d30c52c4ec18a5e9c0214a408052548318a4f908214aa30c52946f10848704214a6b0c52c4ac1881e6f89021fa0d407b40402c091200a4748020d4ef0043ba4210a8e22cb00b1b21c014aaa6a9b290b06361e8510b080063a2803129440830cfc894b0ec04a61aac6252b86892f53cb4bd00545d5a91d266a6b657258fcd2b42b8ac92a5f05d35740409629eefc2a58c15a5b1f05165d7d00e70e6800d32055164b85458dbc12c1002990840edccdec5df90a00024000a1a3094c667540b141800322bcbc0daa58052104918a551802137da84262470dbb4a3802729ee8042620c70943d48111b413842138513b55a0a2539e57052b54310a4734fe82138e1004231ce10857bbc110801844250af18770a201d979e515640e4c832820c105c5dd41082263010f9c052b2248811886508954e0d717b6f8052f52b10b5eec8216bb38c529d4470c63f82217a45044c7ffa08836cca113b498052aee8d8a59dc6216be40052ae26b0bfacf82beb6488513045898a960e02c18f8801c880231280322a8319d9b8a5d699305049bab6b130d80b8c299011950a01070000be8001c90031d08bbb3313a2bba8bc3582ac0609323db0aaea822bb83aa293ba2a7b22bacd18b160cb322fa922c421448710ba9f90a2fea93a55980ac6080c670ab23c2b2a659932772ab250bc1ac69000b98bb030014a852413f738c2428fe021dc0024d588228800229588226c08226908221480329280341e004d53384306c833e10043fc8822768033b7082656a811368140a00811398a80cf00010b8813df00334f80343d8833558033650847e1a1660d80555f0033b60044aa0043910010710b93c8c0c0a80800c8030000401c8680bb2d83d25608a2920055bc80f5f08854f98056020060adb8554f803357884628092624838fbf305f7ca8f4f60834a300539688447f8045338c65f980553a0055bf08567e4055b388540408212b0b1c978ad11e0bfafa8ba488914a749c06eccb236a9806b23c54d5c226fa4003c79801180042c10930bb4802ea9aaad2b1b049bba2b33babbcb0a41c19a41fe3993b8f212b86b321de446ad48b9c6709a40598e19a413aa7080b8180b01ea80bc298b6f1c41c088c132d91318343ac0600001088002a80bae093abc38b2c0c8805e539c13a81b0a6882d9ba4220c8023720843e600311d8800b380126780329100434c08224580334680334308434980127588211f8430dd080b6aa131c30021e700224782541380231800322b8a6d18282820a812c210b21cc3db3380b897b2d06f3001798011cd8011dc0231ce800e23b0b2958455ee0044018055b08855288af38f0001a50822120859c02062be9455fe88567cc810e308421c0803bf0855f408579a3af5dd04c74db0559fc839adb8cd7c233aa904a2dfa126f141dfe339922a42b0cb078149cbbbab3f0c4976b0212300242d0812c9928aba99baf98b61070011cf8023c988335700b21eb13c488a2ac21b2bef8c8a6e948a641c2c6f09ae5fc8bd5c40006432b3f038b37a932b121c222e293a85b4da50b1bb1b932be101bb9093a01104902d82a933c80022880a87a0c0b98819a9325293881e0d0822280022ca80320980aaab8940728814a7a2622088236c082371084264803624a832220cd07d08010380108600112c80065020100822d29e083369801349082756c145d719a3699a2b3f0801380b031a21b0ca0cb4999b60122019e748351008480038546a80479d3cceb6b8324980352e03e63c8c55ee8055b403f65f0fe830e200439e8803b50c55d684c5e988584a30554108540080435d88339f882639a8302f480be53b511f025241003407083285003992a0335304a6e6a142eda0c25680225580326008335f88228100436180126408229f882236001bd5ac72f78822708818672012750833690031b7082a264033b98c340f0839eea002538534580a53500843b90031aa880502c012250020f2881133801af940324208219c88124480234108439c0023670021cc03127e0011a780227880234508337d0b02770832a40833450032728543798553c7922359a824280820af8ab118c41bf989aba0894b4f140be10133491bb02804f27ab0b270b3abb0a8137c0021da82538fe78022ca0811928825a8135d2244f07f8d028788213e8032bc8813440202268023264021c088122c8b826d8831370010d4d011a0881b2c801bd2b8b3bc20a4861a3a7d90c14e0123b410b04c393ffbb003b01b61aeb8013f82dcb08044e488441008453f0855d38c44718a747a08447208563501f9f491f5ae0859f1586530805404803468004f6b2855c984551a00447400285c4b904bc8a0e4082276801bd09011ec0b38772811c70033a40827f750123f8021c48011e40441df82d6c720340b0833b28ca3658833bb08339000446680434e01b1070011e30011c588323000342508345a5810f488221b8814329011d50821040032270012208011ae02dfe677a02847d822310843f100131aa9a0bc8011ab800b8a0013160821658ca37f0033660c7102d9c0c508eaf20acc2900127688332c8b81dd0803b74001238820f10becd505626e0812070ad347a2b34c18bad41497915baa2eb8bad8a470028000e6880f3758014188215f81b0bc8001d50817f0582c79ad02680822638823ee8033e90822288ac2a50022c98d027482c36c8021338813718e028f0d02d29142eba31cd081c0d75499b0d1c108000b87a9b442b8baf3894b050b01908ce12b8013c62013fbc80b6ec00e1db95c1c8929123813758c644f88550f8035a800425908332c8b642f8b14af0d9fc9883c19583364804f9eb456160ccf40b3854a0fe843d9003db2d9c0e688116c0a36cf40362e8855280044618a72f58833940385ac83e6d0384d4ab29506845703b0554b08552a0844f080552a85a50d0b753488547508444b8375268465e188416b800b674adccd5811a28023108820e98811a888219180125b8812750201240ae1c182047f1001e480224c80a05ac0aacc880cdc01a08f0008e1b4434a883b9ea13ae2a930e180116408b373081bba9b2306b1d42280454d8830c083bbb5a2a9f9bb272a58b02d8de78cc8bb3a12abd2800e2bbd54995820c000b08001c10e83b3e6d0eff09010de00014b88069038b0e78022330812818a62010011d380224d0015f058d30bc8ae2bb230f10018f05de1dfe5d0e2d098119f88221d80119380111980cb3d30b8c748bfd1b01de82ad2400200cd0001290230758dc3b690124c8b820c813ffe3153760844008855de0043170023f58e7267839f07a023fd8034944831e905653f00579a3056130069a3686ef4b8440108438500212609cee82d1df525c2670d263a085e9e3d2593806fa13865930dc5310da2610833d20052b0106f9fa052d15060b4b854588463a00044aa85a4ba004f6cbafeb8b695e405c47f90025e8e92438820c508323c000e24a610f48815106c2dc23411b458237180208f4c49a8b8ca7a90a08700239b08340a0bd2ff0aa4bc18aacf1462048031688821c4003b93450e6ec122ce004410804fe4a4804110833af788006d8800d384f41594fb9d19a1094c1300b94b948d0cbad8225a80222705f4bb200126802157800301c0229a8808d838224c0823290020d281d20e8df0e902622a0a48b4a822780822750832448812a98813162000e28ae13708334b08006c001cc05011e988110300224600229e8b010e0001c184c1df813588e9b05c8800cd880c3f000908cb22fea48d714a097745f48010135a084e7fb84997a044658042218023d4382a3648437000121b08335c08136f80346180433708334b50339e0b1387882647501be828cb06d940f18cc25158a732b86f642da62e8054550843d2803b7540216708199a3034310833710da3f68044010fe835028066140031e702640f85440484552f8844628ab50a66f1ab801206f011e10011590012540c329c081c6013916e093bf888c14be8023102842db804ad10121e3934273802a789e4f500fb21d021098c7b1b89b05b80006a80343280331888221f0b529a8c80de8ee9a83801048834260d656651b0a0033f12dbaad518c0520c993e45e512f80740d0caa0a000718022550010f8000073880cba9032798822138a40aa0012c208113c00227b00014200160d3012280821c28be1380821960f457c70013e06f2090a827280111388108d8131968330e08012c8802845d02293802882d0227e88113082b1c48824a19811028be0c505e23e881979b0136fe82800aa82a118c1401b79403754dacb0006d24024648044c60ec5160045168c64180045b38ca65ebbd39e0045f480439508327e030d45044394083129f0313d7543970044a08846ee2351cf0831cf8035be80539188124908335306246900337f8823d30761d4383157f8ec8a8280c0801c5058110e8014ece4db40030f58ef797e3812948033140033668821e600217d815c535810e90652b1283394802aec28a239877c3c0b2bba9002578ef1608812858f112a0142df92dc93826b54c0220407b16a0d80f1801df23afdeacf7a9f193a60142a96a57abb08a24dbdefa0cb363e6de3d39a2bcd82a34a9cfee155f0090bb037875ba700008408008f881fe21d0744f47d713d880fd8634289001387002763f94c3d87523200226a0011a28014013de9e640111e01a42970108388006b8406353ed2ee900ca2e2ea936821698c73f739a9fcf802748837f06c726005c1a58000bb00015e0810c2042bb5bc2af721a08900213c00a0d587117280319d80c2068023bc87928700386b6804aca00acc4680d6082dd0d021c285c4cc0122768a92700881c5368ccc041d00509171c8ef030d20404082251be94f000220da741343ab8305203078b166ed0cc18912309120f1d2e0c99f1e101051c62403869f3448d9a275fa4b879f244cc4f315f9420412206a7132453c0889182048d98286aecb471c3068d9a3569dc3c82fec488d19f4073e4f801bbe7aa93a36dd09471f2a50d5c35729c946933e38183070b2a5058e0c00105bc0e16305860f8b083c20b0e1026cc80f102048f1148464098f201cb080e642ec0d97266caa0196b166d18800002010ab0667da08061d1a1173c3041a141862148b2a4c13283c489161636a021a26188943d7dfa0ce1800002080b25188078d2e6c4850a0c2c50b0d0c143410e2ad2b481e3a2438a2326fe56d020c24285c87b5b80a880778694073a480c89a243c910349440821b4ebc57820915d1a04203793df0c005224421c2021b98a001051d8ca017842134214206347ca1835f8131f000061dd04083071774d00108219c60c71f8270c2c923fe7bc801c81f72bcb1c71c76c861c71c8028c24820896402ca238f80220a254f5af26428a17cf2152080e8a84822803442c9278f24a2c8238d3c4209259058c209988f7002899990381226258c08f9c71c78b6c1e31a73c865e420810c62871f82c8c148236edc71871d761ce5861f81d811481d7394a1044a4a28f1861b82a421030b25e8408312589401a91f743831c50c2d50c0011339d4d04007264aa61703b9c6c640622736c6986294c947da6b9169b69868986d36db61cb1a8b4001278050c20926a8c04108347090810958fc804002226040010216146181051acc10c20622d49a441117d4e7800c4c380104041760514406191066c10844d09041fe050473808508345451c51a490838601228b5d0c41a8dda8147144e4481c41238b43003114b4cb1861a62d4b1c6c6524095861868acf145cb6aa4e1c4134414a50413531cc184144e30b1f1534f44f1c71f813242881c813832881f610df207205f2dd295578f5402ca27a170828928a290a27598673692c823985c5934989428f2492aa4d042cb29b9d832cb2e73cf8dca29a23092a31c72b0b1e7908dfe8168936a63024a23647ef249238c001208989d80824a288f384289999650620b2a8f7c02881b767ca548207f1412c71c5f1c61c71d7f1cc1c20e4020e1d4df4f94b1d31a4f3031830b493881460e6cb891c61032e4c0c30c347c3c03133bd0e7fe824b3a60c1c6132d8cc07c134720d1041632d210630725385041050e6470030e3cf840030f3a20e1160550c401c265cb7ec61967adc1165901ca2ef6ac053c4002e04cab041d20c10c72f0842a142164250042139e00852440010b7080831be0f086e92d810d7ed0601f9a500538a4e10d6d608306abe287f2a4010d706844201a110a47fc81129cd8431be24088a709c21043825a2022e50841086a108258431ba0260837c8e1884998011292601024e460083c58510f92f004a21ca1074860020fbeb0b12028a10a5f78025bdc1088233102128f08c4e302b13724f981489d1ac45706a1083792e2118ca89c1ccf9408413022118b608420fed0343b00fe225081fa4322dac0084a888216b348c52c6c518a5a9ce2146f3b052848e1355490a214a4f0a42d48810abbe12d15abec05307c018c60144318bdb8c52e76c10b5ef88217b3c88528dc084a3479254aa0d05c25e6648a51ccf02b7e5b83189cb00697f9010f8dbcc39112810735a0c10d6ea8c3202a310a5084829498700420be90849344650a2769431566903c128000460671420f64d0810d9ce004df29c1072e0001826d200709a3c06032f3bfff55e6599c890d021c803fd8e06f33c9ca1f02962085254081085ab8a01a96f3863e1082537038841f0cd1074318c2119c60a9213ad10953984215a960c52b6e8ad35dfc2297b3e0c52be866d365ce94fe4da148852d7ee10b5ffc6218bf786a3178718ca502a3174b5d6a31b25a0c622c751857f5452e75d9cb5d90021294b01223803487390c221181f01c2438c1083524e1084a788234770408469ab572935c5c2844618a53e24d14abccc52e96ba4b5ee4b2178c9d0564219b4bc5323697bb742c63176b0ba9ee8216b6981bdd12bbd8cb32361753fda52e77910b5ef44297bfb4c52e226b8bb7d1e216bea01b2f67eb49545c32159d3d8529baf60934598999a2e86460c10458b3510914667bc422e0e4d63d40926c90e81b1a98900639fc618f85405220f6508635f8810ddcdcee1eec4032391802127f700370360018c93c343215cd0c7e1b63bffb11e033fefa7b0d013cd39ad03080329e59c02160cad24eac4215ad50c52a4cd1094f98621532ed84210a51083f10a20f29e544272a31535384621498e0444d51618a5da4a2c5aa08452744a18a5ef87617aed8e55295aad4abee98c7bcd4aa56a7ca545f2016acadad1bdd7a21b7599862719f6066296671ca54848216b94c6a62637b8b597856ac61e5a52f75c98b549c42159ef3453176814b5f6096cb491eeb6273910bdcf2f2b4968ced627be158c7fed417b0f5c531c0fcd853b86d6e6a861b334f414ac22a5acdb9a02ddd220d5c51640d15b4e0ada56791694b7ab2939f0c2e262021ea448c254f904844dfe0229408a2a18552588356d6f0be34c4010d47fe38021a9e908639202104fbbc400840040422ac04073a204f1569100539b4610f6761c21128d40106540058c2eadf6b4453188c5a14c0015e0db6f38bbf87e24f0b7528448297d38711fae1c2aa788527163c094774c211a678852a70fa8a5de03b15f8b6692adebdef5c3eb5a736b6692e6cca8a82ef1818c0f8452c7f918a5f8422965b8d25c681bc0b6064f5ab608dad2a4e9149ab7efc1797a41b264f5125377da214648e328b238b49329ba214a54045308f54e252300913658344d64cf13615d382c49d4c799953410b5ee672ce64b6c555815ccb5e523daabc4473551deb53d83e7695b2dd85d6456ec9482315b2a60065d7402174d9ba3215a2a8fe5227ac048941d8d00f7ee0d18ef2d83848c891ef81d870eecab06c392881084d20c21072000226008504221041bb44f0800870400317f840f2547201f6e0a50223a0810938e0039a31e10b33c0c00632f09d0e54c0034038c2c00a7c80fe8e3bc0048096806fef1a710f983508d0821658aa85379cdb101d3604880de1895560421018e6442cd080ee42d481101d2684217ac8895520921337e5a95237ee0b53f8f615a7b045c05591cb54b8e217ae106ac8435173f5b738975ee5454f5531e6392716ac2817394fcd0d2dcc59685d992b7dcd99ec8d95cc900d71422894c2db0996cdd50923600d39a91c4d9d9228b0c266a15f26a1dfdc9cddf925192ffecc96288d821b39c92960d24f2516301c43c77d553100da5739564fe19f2fe1126c65526c8dc2279082d2b91629b4912a415627515a2894951f490e261cd2228cc5212192e820921cd4c15ad4c11bc801c9a0011ad4d5ad8d00056400070c4705a00b0994000554000424c606b84407585e09801e7c20d403908f6038808b7c00077c8076648008304007f84b0574400890400eb8805e5c867c58c6ed1d46ff78c644dd8f8165db6b089880f1cfecf5418269c2f24118f3618221604227b04227684286d58121c0814ae58421ac8216380121c08120385b27c001bc400125fc9b2ae49b29f8010e5002293202e934822a485829788295cd42291802e5a882fe2740821f3c4270a9821c74422060c21f8c422a040227ec025b059c13b49b2330028eacd825754d28281a8971822870829585c22204dccc411626a15fdd24d5c7edd22f3096c87d56dbf0563d7e962db0020f321699d10d9be1d62c28d66c85c97115e0d50943d52d952d5d1d45ded64f5d5d2f48d667811997d9422f709d67f5162b90192aa0022b00a46f99029a8c1393c0918e50d71fec811c21c9551cc1131c811c24011170211cb0819fa8c00a6840068c4006e8c01348c1140cc8b694cf03f0ca0940c11094005f50800e2c41112c81c0a880807800073c880394866184a5663046b61d0b6804186640a2ed41e26b9086251280ed55e24411c01268fe412c780221f8412c10021fc04125a842271c82119000f415822724664dbd42270081131c4213a4c1049d800554422a6481bc2801f209c21bd81d1ab008f700010de0805210411a4cc11cbcc1107c000eecc110e8007eec000a38810ed0260d088d095c80c2a800060c01141c010e384158ae801bc00516008229cc411d40c11bf8840810c113f81306544009a8c0090442130042146c1723a0022f90df2e8098039e4229b0022f24a3259d1d2af01463d942277d2407e69225e9a095c596a1a516dc04d327089da295c2d169dad2f9824466169bc1126409a4dbdc822bd10d303cd607821d6b95e02c6c592adcc2a35dc91cec81d9f81c2644c2de5c171afe24111bc4c11ad0851a944e6a2ac25e8ac17eec800ee40011f08012188112f08414b8800a94400ab8000e149ecad08018c8414ee64020924f055c408b50401a3e4844e9859296cf8980c008e8807a68c0080c810f7825ba2c40b86506043c48034cc62442a26c9c657fd9cf80bd650140c012f4011668c110ac812140011ca04227c40223545828684220740288ad82bfb15f2c04c22ac001f70c410898407b09421638000a8c571314411d24810eac531620410a78001148c155d653063c4113ec80901a90077c9e0e64c0056080098840098440751401062c40114881061846ff4806097440035c401d6648613c480600c109300004005807d4c009cc40fe09f440149c0009380123b8c127a8423455c11d7080a8e60239f2026ff5023108c32f94524fa10223686467cd426bf54254f919cf7dd62d541553a9eb5409195859122f715c900183301483631568849220bab6d66c191a64b1d99cd556678da47ce2922725569a85646c9d42989402dc0416e5400213b5d12228c21ec4811fbc41196c8f1adc5a1a0809160e4e1bb8400b044112a0011290800738255e3c080530000558a90ba0ea03ac2104a4cb06b880d0d4411d00c51a2c8a18200118b4c0649046595214b22c46616c865b4e94b2404bfee017b450c62168c1061c8006c0412cd4c112484f21744221b0542160011664c121d84b09ac0121b041210cfe028369c11ad0db2110810e180138f5c156f441164401f7201e0e9c80a8944016f49316546a1de8c00814022610421ae8c014b8011610a20ebcc12b18c1057ccc1138eb1018c1117ce5018880121c00afccde013c6581ad467f3dc625ce1e97e64f017480442dc6094801011458775066208402170ac220e44029f0541d3841063d811bb8a72388c236569c9f595a2af412bad62063f1d9544964f60a289b1dc3be1e8355e99945fe98f7ee592f69e42e49592ee859a6ddc27b5e5d2c2d15c416ac7b8ec2d9318930f69da8c91f9a94028e380925f811a208c22250c2d278052318912378c223986d10cc40e8bd48a97e400bf40b012d5015ec41a4f84176fe29411078d311e8008ef2133f6d4602b8a50100cb0308cb58264645051843e11e5db2a5672c0b6634001114810a48411fa880099441047dd40669411274401540a32168c10980870ee88005884012c8ed72920010648011d00009bc811160c12e4a0107748701494f0a44010ee0c008688012f8c12444db08e828080c411f248111c0260e0c220954800910410e6441c7e0c007a0c001a0c01c98c08b8c406104805caa2997b2865a32f26ad0a508f026053422611c40008c1b9782480274c0093041a034c01320c1020882da56e076954223f8c239791242e26bfc4a6483c2ebd5d90228d8eb46266496750d29800228cc0d798a02285012a589829390c2fe2929a829a0422f0803317416c42916589d821b4c5229700db79ed2c1ae523227d52f0ce42c289ad2f5d11add1d201091b3fd08d104c22858c224e001a3ac8114ccc005a421056447b680cc09b58113c84019e34052d6410b1d228cd24015151e0dd4411f348a1b4481120041d1b241e5910005ac6106b8c049a82cbb40805f3854ff9c694549866b84740100400994001c1082162cc11a608114c0011624011c60581f68c113430002a0000af88d1600010264c01710c2244481de0ec11ec0c11f1c021428d0a66ac0048d407466406f68000de8401d584813f8f0136041199f400a0490ed96401ab4a62f044325582e0b6cc0037cc120c85a1b18810580fe0012b0411fb800129c40e75500066000b0a4a1b3b40602a0b51a6680d55a2dea3240ee25546610ebf850c66304db03740010d44c2700821ca8012c81552e98c28f19c3be769c3074b69e65dd9e6de42e742b29c80128f0023081025508232840422a988222ecc223b40137b5811988811d34c2f99982987c0523c01e57a0029935c21a8002075e1a2a2c021b24429a7c02e79442937d02d68c8299f8209b3c02303f821d1c92e638b71f110d700b23d158cc1f2cc21a394e20acf75b7d02e9881a25104d123142d3d8dd1e2452d10c4e2008821fcc414be8ce1ac8411fa88176294106984f13701823284183cc2144098bb08486fd6c06b958e709144247fe19c2212c814aaf1b16640016f4411da4400e1401274c42128000e845c0026080c294411540810818c2127c80f31941cd5c4006e0800c50c00c448111ac8106ac812760811b604258938005fc8507544127b80113a801123c8120a84121d0000588c01cb440076041a17842162c400914c50650800ab4800720c11eec023546411988810c08480660c08658726ac8a55e37c7ea3e88b1f8f5b61d40cd4a54ff28c6a0472d64b478039cc027d801113001207c02a1ed563dce020c1683c35de455e9d92e0433ce35424e908011e0c111d400438b011128b94a3ce513a4c00218800ae4c00880400b54c00938c4131cb80a54f617344227dc81a24cc523c841fe228c6c1c588523588a30be1d2794c228f05cd484924b220a750733277c029ca48903ee329b3082cf3d8222ac81124c929374c223448d22f8011ed9761b5c111330411b24825c9dda222c0226b81c2d60c21e9881797d811308c1e9b50012241e121cd00d7cc08610064c08d45fe005039c4011c4c7b4e145b344ed6278800840800e10810870c055364113b4407f680216a8400668c00300410930766664800c9cc0553a01f720c11114011aa00011589011388121c09a21a081114c504b9c000d0c41138400420da207987c6194401c2441cd1698132c0104b0a68ad04005700060fc45074008d67f80126080bcc48127844220dc810c044109b4011dacfe0111c8013ff403dc9742d33cc10e7c40523a001f38033ff0033968420334006d48860368423e38433e0c830424400218062036c00f6c423ef4433ef4810440000e200009908c18400239ecc3313cc237ec0339f802dc809d30c4563118433dec83e8db021b84422f94c110a4c111b0c12664422614021aa0c21ea8741205011464423364c22188c22ef80112a8c120c40116f74011b441df48791070391b3402e4d2c230d0c2a9f0800c14c1114c931a00423ff0432fec1139a91d2d9c922991027573822514921e41022ffb91572442e2fcc156d088a899571cb0411a240140b838f1c4c913357b123d62a48851a3858cecfc91d306cd11274a822079c3fe260d921c69be30c182660e92164f70b42041810102040c0a1458f0e00283991c1c3470e0e041cb030b1a04ed2993039013168cf0d461428405040b2ee468f1a64f1d385838a83041e1c2893a2736f42124b60f87256bfa9ca060818485237504194a1b2205132216349400a123c389133ade4479f326501b1a6b9c2c9143c4434d070b9e4266e3cf9f3e7ec914f1dbd78f9fa6071b8668d0f0804283155bb64861c4c44ea74a6ad248dcc7af5f294c6e90fc79824407962d932649b1500104850a182ec8202142cda42d53b4a8a84001f2634dfcf8c5a23229568e1127d26030c2a4932556bf2ab122c66810a8536a403d7a94aad4a0477f70ec01844097febf61b40fe16718ce5cd9a00e4a8e58e29336ecb8451a659651a617524cf904945b669965367e7cf9c41b7e8cf9e4145a6c4965165b7891e69e7dee01e61353441185944f3e01c61e719439051e7bec0145913f0051e491351a59c71e6258f9e70e25d050a30d251ae18c1f66f0c0c30d34f090e34a31d6f043a235e670a38d39d2d8c30e36105a04924738f984425340c1443e4812f9e38fc2d6102490421a81841141e6c82184370a91838d39e690c38e39da18139236d2c8028b369a100183e93a088204971a5080a706367060030b1c00028d131a3880810368d882831cb0680082122cd0218a080ed800820a44600981031cc8e000083cc0829049d6fe58a1830c4680620a0a4898018a32eca8438a0e4c30c1820ed878c2af13903041861692f0638a070eb0a0859d4e288184111680ac001fa008c001081a000285a70a380001074ca0018b411d71430737eec082040fd66863da144868c39013f85021041a4273a0881338e8c081045e72c0054392288383139878808312d0f5f7829d7ed5a003112240e081052ab020081502e1639127806e2310419c40430c0d38f882810a3e3600a803123020819f0ef0d704142a80c0042880a0c18a2f54b0e084294a61c489548cb14594537ae1859339d470c4945268d9c5976278998517bb77d9c5965972b10514504c3925155a4ee9dbefbf4d79441140ec4058cb44fe460985924a0651a4914adc5023a236fe58d3145350998594504621a5124a1c7a44944f4209c53545d69802893d18c9fdce3fd860430e3f7367a4903ff650638a3682108106340251e88f349eb0930d348610a1841028e8e0830b3c00576038a0386188f0331001091a0086a208000028008226aad0a28f21ea58e2010fa0a8e30707a45842051a4e40041d64410b2750011696b081271461098d3884093c908442a4c10982c082ae20f098542d6008274040aa5c40030bf080109dc0820b407018208080691808810c3a90c22560c10825f080056885830d2ce000112882082003999fb88401376b010f9a30041c3c210a75600309ead0842810410953f8fe032738b13c23c40b0d38798a074ac0819638a0004fb9570968000190fdaa0004a85ad50a70010c1ca05f1440012a5600b025a0c0021b388069b0e00113acaa6a0430644c16d0af98f8eb293fb1894bfc55b5c7a0cc0498d8032604a184404062108098c10cd8d08846a4821124d8832f6cb18b5ff80215a0e885df78b1b762ccb218bee0852d50610947700214342a45284e418ac3998214a8f8442950818a539c4215946044274251cc501cb3149c6844f33a018a4e34c2118f704423e4a34d4650c2998160c49a5047894f24424c7650881d1201092fe5ae506e98831dd0c0913288210a73f8031cdc20882b25210319e0000a4e500426f8650839a0c1fe13d2c00635a8800106a06301b2f7011270ac2b28d840064c00811e5ac00243f4000720b08012a4e0012518c2121cd0862530e0041da8c2053340041a100107405842f706013e3ea0e10f8750031680d0812770e0025850810344d0ae85b5a400060800d40c400004148001296d000a1e50863788e000064040061e80562554a17a1b90c20642700227c8a1376ea88013faa08435d4e1024f58831120802d41846a0dc0f240cb18094996b8f129bf3a40005cd22f020420008a244001ae4a59cc06800002a0ac6741ebd9000840b4949d2c654d1001249ce0009735240a0058862170c00244c8c109c4d080251481062b50411938d1b75480829b7dc2c488feee564b61142343737b51864ea1375390731081c0042d78115d5ef882bbc0e0ee2ffed68b59a0029aa433c52c444109730642119c201d253841894774e2119600842108518951a46e9b8cb06620a2300523ac010e7898820ed6d004341402107f1844ee06b18886ace93e7e40c30c4210042bc8e10f73d84320ee84d4213061099890f01fe2a00308e880093898c11156d08099908a010da84011d0f00519e060630a98951168a081297462156c28421fa08085122080b20990021b1840012c9ca002d31141af36802e14b0410b38b0c00218e003422cc1041b83431548b5bd0670200588740a986db2000a303926fde2ec411b10ad053cb46a13c0990816feaa2e27b0550d6c2002098a4032117400080da080124ee0809728400d47a0f2031430840e80b98d31e16c9ddd48593a7eba8d9cadec6949bdd9d6767aabbf62c0ababf6af7fbdda016ba180087680032518e10b37f840073ce0810ee0e00821d0000632d08232e0e1098ca804b540518afb8c621090c845dfb8bb5deef6c216a4e804264811cb57669b16cae46e2d79d18b5ef862ddc038462f6e810a6fcb08126b50031a6203293afcc111af8b9d7983390a55d06216bbd86f2300e108863c02149c50841bc490064138e2df0a6104261c91083c21ca0f8cf0833901b1c9466042148fa85319a8d8bb44c5410e4ca8c21bf6208739c4210d71a842062a90feadad15620e1bd98323fc540841ac21073a98821520b001f679b6a57d3082054ce0830c3c610a50f8c1014ca0027fa94002feda40031e30d94e63c0013f2901046c42c703a4f5010d60c006d2808205406103a5494002704683327c850218b854129ed0841bec10031f104d94dd2e82211cd601af16810766b0afb232c00411f503b11650d9027c40ed859c2c930f496a439a96000c0041044a4b5a01b4d18d6f5cc04e16d0010b5ca0031c50c20e3ad081242881136bc87dc4a2a804242ca272a140452a1cf187479c1715b6184525144e8834a8a1094f3802e0a3a08639d481bd0f66c4233ee1ba529082447fd39b2d7d718ce5ce726fb388ae3267c1ddfe5dec0d15154a262966f18b5d1c2e15a9783f294e419964a4744ca1dc4861144ca1ff1ec12120819c02c11128211546a176766008ee844d44611438414638a1100e410b0ae1fbfc84bdecc00f046a0fd644a06e27781c410e942009cee708ca604ce2600f88676804610fca000e9a8009d6a00c98e006686006688f03ca675ae480100aa30664e009784e0ccca009dc080a9c6e06c20801b6450ba68003b4606576a8016860036402012e2bf3342f26c8a8d312600908c0d11eebb20260ce1ea002b68a0050000b2420260ca0015ca00836a003e68c8e28800522e0015c2001e2b004ee6005e48c0892a00f964007f84d05202004fe488c3400082a800550fee0ee12e931124900e0d0d4c4eeb216e90d4f0bb33aabb2464bb328800232680d76e0067000077440075c200552c005a6e006a4400c6ee0068c000d08c10e72000d00214f14c2701821103821bae06b3e7c416f66a172c6eb1106c19946f00e00e111fe0f1340a1f9668116b86d16c42bddd28dddd68dddb8cb177261dd02e714d26dfefea61e4fe4164c81130a8edb2844bb6cc11610e7144687140607142aa714045211c2841346e113c08912bc4d1108c1c054800434e085aa207406c10ff6e00de4404f16210403a1113841e1026168d48411802e1abf4fc2cea99b280113cea94f1e011320610f0ac111d0000880000aaac00a9c200aaa80098a8003fe7c6024e220106cd0e698400842e01560211992e119a8f219a6e12ab1322bafd21aa6c11ab8922bbb522baf921aae321ba6e11aaee12ad1122da7211bb6611bdab21acc522ee5321bdc721bb2e11adcd22ef9f22ddf921beed22f05132fed122faba11a08331be43231fbd22ec7812f117331f1d23021d32ecb211df8d22ee5721c08f3311d331b3c331bca611c0e5331cba11a46132f49133415f330bde1321f731cc66134dd721c30d31b0a7333ab2136d3611bca01344b331b70d31ba8e1307793348bf330a921398d93345dd33897b338a5931aa4211aaac11a94333a97331ab8b31aa8813ba3133c8b933badd33bbdf33bcbf33cb3733a0f331a96b3fe34b53339a3133a8bd31bced33adfd31adef33be5d33bc9533a95d33ce9323b49d33eed731ca0b21964812ab1d22a1b342cc5722ba7411bb2b21aa6412ed7f22cb5e11a28741bae6130df1231f5721b7a932eb74132f79244d3211de8a1375bb437dd72457b731bc6a1456df3377f733751b31c2ed33739134767734751f3382f73451fd3486573377f331d66934999141d98b4469d141dd061346593475f934757331d8af44ad3c11ccac14699544bd3613765d41c56144de3011de8c11ca0544667d31c66f335c7211cbcc11bc2c11caac11b0a1431eb731ce8f434ab414fedf44ef7143a0f753989531af8b338bf811a0c943da58151a5c140f7144f13fe15520f9351bd331cec941a46734f01744f79943aa36152ab211ccac1500d341c8a9351e7d33cbd411a94f31aa83355ed1352ed54400f345549535565731cd0012aab522cd35243d5b22cd9322f27f42cd79243d17230353330cb61307b7346657445b7011e48d4378bb445d5211de06145e9615ce1e15cd9944a9d9445d3814ae9411da8f44db9b41bb2351dda8145a1541edc555dcb014ae3211ee80160df341edc011d847545d1014ce55446d37545d7144acd811ed4f55edba14ded1561db011de2411ee2811d1e56633d565fd1811d1c961d38561e38961da8b460db754dcde15ecd2166c3e14bc3011ce2944a01f54e5f736657b51cec74557bd53efe2f955517951ac0c15021f53b2b555429f51b2e15564d15565d9338759655cd8155a9211c06f54e21155021954f65f335f95467d34167af964fcb811ac6216647b31be4746d5fd66dbda11bbce16dbb616ddb014ddb616fc7811d88f52aa1012b8f352d093743f3f25911d7433f54301173321b373055b45b655445599472ebb55d57141e24565dd1011ed2b573dd1561d5c173c3744de1a148dbd54d5b9473d1015e5bd464e14160d1b45de5b55d45161df89464ff156551166045164c357664379677637763d36163d9811de6e15fe761797bd7644d76633b161d38f65f3dd61d4c7664939764bf7445ef3561d94166af5658ad14507d3667e7341caa14fe6de9746d81b64e0b1568abb61c62b64eef14507f966b55154f89f36bc35667df37675715543d554eab5667d1a11bf2d61ce8f66edbe16ec7216fbbc181db2182e7761c6c568223f865db617b2b786f41381ef63679db81581d3459d99270cf728511f742d7d22c43d443f1f243afa11c16f71a1033372bb7373953465b941e4eb45fc7b5733d57643d775c31d77337576257b448d95465e9218aa1741cd65465b3e115c88176e1756413967a35164d67371eccc1737d57631f567745b8623bb677ff557aab777845586339f67877571e967763e7411ee82182e34136fff58bcd217ce5017bad377cd38177ef3579d15491fbf535e5346621b96ef1d41cc0fe216671f76a81764f73d66cb9561cb8d63ebb4151c3a11b8ef64e0bf5522ff553ab76930b759575d64ebf61951bd88231d86d2318836fb9826df64ef7769723f881fbf68391b71d445884d9819889b91e3a368ffb20a33e80059ef903a49905a0999aadd91eae921bf8e099ad999ad5801b9c1587ab61710f33867db337ab75467d331bd2a186cf994b2f535e41b776b9541dec195edb151ef4b55f13767493d788f5951e54f661e5a15ddf759ee3c1760b9a1d24b66e3d171df461185e0006b8a0a26100065e6019127a8d03b677a99477a9778e2d994bc1814aed611862e0a2559a0b28fa052c611fbe778ccd611dc0214fe58184551692e1c11dccc11efe7281052adaa26b8019d4411c3cb56ef3b46cb5d65371551a3e551c42d90b545aa55f2011d6a1520df454a9d394f9371abec15351f51b26f51a2a551d8661aad13aad2f5a0cece180c3615227356bf7b452e9b69667b566ef94ae8f961cc0a194fbba921f181cc401921d981d64337c01fb6593b7635b01169e612ab9410b5e60b25960b249811ba0811b343b70ad011aa0e11a9060b2457bb449fb05ee009c5dd81a6a60a2479b07c060a231da06ec81acaf811bd800b62ffa056a00096280b52f3a0658411dd0b25a8500b773db12f4e1b68dfb05c6201dc461451d3a0e707bb2630009565bad63c0126ee432f50111d09aa5d51aa349411fdc81a71336fe1dc2571d02f990ddd490cd611f4a61a2c11b06c6c01edcd41cc2c1a7692006e69ba2fbfb0b6ec41ce461186a20ad798019e0614fed210e301aa335441ffa011afee00e28dc934f591c9ac1b82fba0678c006d21a0cae6156f9b7529796381ff554bdc1abbf011ee2a0bfa7fa055a21c5b9531ac41a4f2141aa57ba0b062119a2a110ba00bcf10015b6811abe411dbc3ba861000ff4411cfac10c901c0670011e4cf918c09b0b62800e122117c8611e347b1ac4611dde21cc1b9b18a0e1153e40b42b5bb4c36019a0a1b3a7c1b3b9a110d2bcb4efa01f9260b4735b0fec411ab6011bbc60b21b1cd0614011eca11ac4e11ab8f41af46115449baa053db7e9fe801bdaf94b2f931ecc40c31b5cad5f8014ee214de1411b5e3bad311d06c0e01ec48147235abefd5ba56d4019a22108283ad66120067a411ef234612d99a7d7811d0a5684eda119ba20d62dbaa25fe012f6a1bcef41a2597ad92f9a0b325a1fdaa1bc13f6a46dc0c5677d19de211cd461165e1c06bae0c7631db8e1211cf2561dc020ad59fa052aa11f701cadc7c01fbe7657f9d71b62d994a5611da821d89b5dd3a9fa0bb081ab75561fbea0d9c11b0cfc6168ed946ed9411f189ce0fd3bddc5601912dc68bd011d9cdcd11fdd0660611ed6d66fa3922a03f784df1c1b46feb323342d03571a2e141b2cb4e5d7729c7b1387c3612d2f731d7a731dde121efec275e7d5c1e6c37545c3b575eff99ea154bdd1b475e7a175e3e1a1fb591d06194c57344fd9c19ecd411daaa113c0c0066c80bf035debf1c018f4415f9ddee9f5d51de6a1bc5956c0b177eadd211ee03590a134da85f7ecdde1a6cd5e1ec8fea6513663eb1e65c357da4d16ed793d8fedbeee93378f79dd6451b6eeb1f7a6139fa7d1bebc5516ed1396a7d5a1bc63761d2079edc3573641181c269881411f9221b9afcf9694199894ddb6504b79a9f114af63b6afc3411cdae17ebb011dd0a3133ca13c92615cf3f66849f9af33d8f441786e3b5881d98194dba1affb9683011584df6184e5a11eb6b71ea0722a03171b48fe2a597efbb97f1a545ee5d112fe1b0e375a9d751ada99864914e755541db8c19ecf99449f1be7b3d59ed361e8897e74b778e8a9541d54b67301c29c3975e80ab273074f1e41740be199439790204178eae8a95ba74ede3c7402096a4c78d09d398df2e4997ba7ee614179e8d8b1e358d09d3c911bd1b94327cfa5cc97f372c69b19b29d3b91431faa6b27909db9970cddb18b7710a84e77ef8ace1bea14ebc1aaeee2b95b674eabcca20fb30ee528302b3b71ead8ad739712abd3901c45ae13cab1eac0b0e0040a6cd7cd5b3881e8baf915074ea94070decc01f6bb14a950c0ddba493607ceb24bc0ed904276dc6e9c50767dcd89ee8cbaddbbd59debbd8295ecd93368d0a64dab0d0ddb6dfeddb67b4fab66bb5ab56bd8b64ddb766df8b5e5cb9197db069d9bb86de9d2ad839e6e9b3a75db28a6db5e9ddbf672eae0515467fdfb42ebe2ca854b872e9d3978f20b1634970eaeca72e5d4dbbf2f5f7583fd67d34808ada3943c09c135933ae59863cf4b508555133b2c11745039f7a5b59d4b21e5a4215a2f29269252ee3c269239609506565c7e3df8553beb88e318618d81231f453339150f38eb80038e53e2b0e34d35611195e2419221061947ebdc2510582a3a76979343bd33cf51eb5416ce605d82534e66407a23a637deb463a6995f32e6cd838b4953da5fed80338e617f61668e9d408233273b4889c6276a91a9560f9faf25135b6dbed9561bfe6fc94d730da49062930d73cc0d87dc35d041a7ce70d55d071d7fe9d0775175f0a147113cf135845e79f310338b3e32aab84e3af6e8e3062ecdcc71cf4219ddf7523f8600b24f7b2dcd33cc2df3a8cace3cc650c312423fe564ce4f4f9564525d396914d64b6531640e3e6560338f5268b5840e3e7154b2cf3b9d99134e2e8fdc82cf62537a76a263eab83b508a22d9e7d7bbe128154e69f9be43a34d7342c61266340e368e19bee8e3cd359ef975578a988153f043dd746ce79cfad442ca3c4b691ca55f768613663771de6999484062d69837e33816a762998d03a4cb9879569acddd8c53146a22b5e5a19f1ed6b3da3bec1c9a286db6f1e6686fcb2947fea970965eaddc72dc5487dd77a6a2672a75e58d6aeaa8e8c56791aae9d0538b3ee5e9034f1c94e8338e3ec378610f3c183154537eeeccc3082bfbdc4a4f22a4e8f3ce4cfea8f2453d2ce9238a30fe6cc3833de5ea138918fdec630c18ebe833133d485cc28f3fa57ce14fbffb3463833df6ccf4905f2d99f32a18c61caecf3cf844a28a3c7d8df3c53bfa90538622f78cee0c0fcaec530b1aed3a130933eab813ce3e88c4b04f3de40861c93d276913c32dc77b71893cd4d8448e17c1f41e092cfaa4d53e2bf60cc64e2e7aecf33b18d8cc898f45b4011ff0684622b2518e3635061de3680c3d2291088e91c91df2b24733cc40887ba0a93299f14b9786d6fe17c140663253ca93370c2394871c6431efea136742d392ceb8242c3512c93872622179a4a61df5e8613bb07528d9d00637b751d46d8eb82848714d6b960ac735d2f1c44d65873f66ab0ed9d2d19f5571043e05f90eb860729ff818e57af4b1cf5390b6146ce5041d1a0a8b4d4a0217b8b4a42d3391c79346228f78f4641e7c8cca1e5942bb92bc045b8384e33c22842e76a423859e69898712e917c598c61c8d91e4c2ee24491afa854f6b49cbcb4a531a1a998346dd208d9438c21881cce35deee8cb9e3616a73ad529302e63d3f04c2334cb98b06066aa8ccbccb44b3331864eaea4a440c2b449c7f8e94f9d39915464929376f8e944d394a60e5593b4fecdb48687ef68052c60214468cc66888cfa0d34a2111ce000e737c9594e36aa810d4c696a9ed4491bd8caa1292b52471cf61c5b7500249f7514a43c1ab9081e0dd2168340441fd1806022e6000630d0410e89b0442d7811097ae5702638b956497e92916df1f18fd66a89202df43b5ad04219265be1503ca4c690ce831a99a8052d6e310b53d8010c5f98032266f10d6f648216a2a005caf6e297e3e94111c1409832c4318c1a7c632882ba893137e4189174c62630a16481ce352274082542c2cc9368f254993449231a69529337a4418db6bab5ad70954638d2c4986f4803af77f5655bc3e1b3b25e4c20375bd8bbba753191c8e31d8659e60e65d89977febc8618b2994d391715a9ccea0639d680863a93b30de50ca71ad0690e72b6f19cb4b58a3ed7f9db40fe599e85d88722e5c8123c6c9b918428448d6e1b884bcae58e7e20620cfbd8073fe8708b7d0c651efad8031dfce18f66f02d21fec8c413acd10f7f940115fe70c73eb451857ff0c3196558c63e7ad28f4c8cc11e279a69192cd10f7e2c820eedf25349bae8a1ceec231362b0c77ef1005d2190c25dd2ac47336a800d86082318f7604737fc218a30d8e33310cac4e2c0818f2f58c21fedd8870d8a218f71fc771eef68de3584078e7be8620ccab087385a8c1479988114fb000bcf6849266fc063befba0875cddfacba07a23ae7b7d6bcdbc11d4bd76fee9c7421e8ccb0233cc8219c63299f15965506398be5ca6467ec9976920eb58a7c95069eca8473b268b28720ed18853cb063622a5357636273b9bda06023925c56d60a43ceb308f3dd6d1373f9bc7cfcbda4e795693909edc76a4f8d8634f48c2478af031a425d1ada32fcddc5bd5a377ccd5873efc710a3cdc83d33dd11c3eee218f7acc43d56ac496aa25a791473f9a24cdc2564f7e8843352e975a78e1e8415c928e9028052f6169875887dd16a72045248311c8222183a080a1c5ab791248651af863c1dc5530358b6b358c518c6888db179f988531c09d084694a214bc28062d4e618c59144319d4a08634be510d24ebdb4c704dd392853ce57134d0fe324ff68c684e23c323f5c59927124a34d92166a6e5579a1ef22665a3b666cf1e1138d250e2a398735a286a6a1bd22179dab4d39f51d9831b820eb4ece021bb432e6be6b74d48cd6ddd1357f1517323e5a33c1aad11cd713ad69dae873d8caee991aadae7586235a657fde8a5b3ba872496873e8abb0f4f770fd5238d35ce4bd24335364e1faa8e075486a243aad47195682fd15388b26cd590385ffe8a12901023419a01966398b9abdfcd410d63f48216bf28c6291c010955fca1052df000083ad0810f64c0020e7840073c30020b74a002917fc007484003c97ba00318a800052c000217e0800623f000164cc1eeb51ac3178b7041063a30822ae8a004fe2d48022754310b629069406991d16273c89583f4c45d3b51fe3ea4497197f4d0cc4ef3109a9f111b213ea3b3d5f0aca28013a9df78bc9d231ff9a6ae719d4f71a756ead1f37618a28e65d59c222879b48e12ed735b0f6ea3fa47bbd7ff481283c3733bc75caba66964c75c92b374f9e76825c14753e70d91705eeee00f9af05caa5112c6f00dcd900b3c240ffe350fb9500b88b03b8ba51166b061580271fbe00c36550bc6500f4e810ef4700cc6a00b91600c57a122f7d00c9180089910095ef00fed8018dc06587ec73278c226cdb66d5d022f6fa50c7370044d20088c100444f00434900444d0021fd0011450010e400163f801ade70161c8000ba086fe0cf0000ee0000c70000c90860910870fc0791ed0860b208795f70014f0000fc0006ed8866eb8006df8871470011e400434a001279006585008a6600ccdd6766b37131362898de34c3961662ed1349d280f27a00252800586f00a9de008afd05952b366eb247ed6601b99251c72961d4fc41c50941dadc27ea8c27e6a231129b11d034111e8000e36611ef4a083d7631337b11d71044db666765e076903d83832d773f9976a08586a4a375239e4471ab119723114f0801259a14657715b2b54128d334debd84c699742a0a1659d4123ead0188181184508581cb46dfef657642241da160db630074640031e800117508862188810a07918e0866ff8867a28fe8708c0000870000880911ab99108407a17500179a8870b70000e009169780019799124e98618198871c89108c07915108876d80019e00132e0011a900123d00245f0046980066c1089c4c05640261038243916d24365467d4fc90e0fa0035a800545400458a0053be00486b00a5a40011e200586c0078650041960044370014fa00146e0087d4008473005ac300dc5618bdc100ed8b10ed8804fc3a10cc6300de1500debe01e5dd24503551ec4300daa822eefc710807411d0145254316b6bd77544778d50d775abc634a9868dcb471282e4808bb56a0e582eecb8584ef3167bd41939f11574672254111662361355c148e0204a9df14b7c7227d2d47721fe531934737746e87747f656be40098a3004b777043a900433600abbb0046ee00886b0044cf0042a50013479910840910b3091db098870a891299992de9987dcb9923199910bb0916a88007698866ae8879577017de80020e0000840011d200218b0010ea002aae00b90f0044fd0097ed0042d30059f10042e80041f30032d000250f0069cc0097f900ad6806b50510f4b2343f1c0013970049ec00a46400122800382d0098660087590067d00074f500770300367f89525a0037e600884e00784c008c6a029c3311d22170de0360de0960a8e600aa1400cc4e00bbe300bd2700d84110ed130109d820abb800ac5706e4ce80d364162d7489a78f247ab917ffed5c794ebd87499f98057b28e39b11aa9d6384be93444b7583f047160d7384d537583c31558214d54157dbfa65538334cf22826b809903dc3277b0290c2f40d4b6826df100e4125647b250c8fb00643b00a77300484a0049807911480015f28877f28889be79d62389272789182e8866c2886a5670176989d38397a19f0007ad8010e0092634801acba000560910ea0866a58000c108662288607c00120a0012470021f30047d2007393003fb09792030038fb7791b60902d00791df07839c00942e327efc034ef700ff570001690058670083ae0045ae0967dd0077e500755f0045a000758b0042710927f88936bd0099cc0a39d400c6f961cc2b10dc530fe0de6401d7e390e982007a7200dc68009a0400cd4500de9100e7dc90eef570ed2900aa5d00b47f920d9f2107d34381ff10e9aa339c7f78097591558e27318086b26b8583bc17ceea03955c19a10e7124427664c6921ee62a6ab1119c7c78e9dc127acd170ef3224a3941a7b6219cd9419503b27500b65e2c041c3b427df200e645ba9dff00dcaf00dbc600b2bf50db30009a8b00849e0a9ae5a796be89e23c99e0ce0877fd887163079900786197001bdcab7a35701a56a010b700118b00088780163689216800180e8877cfb9de1c986f12987de89b9904b011920025f58047040015ab00722700189d8028d0b02a6278663989d1780058d300a6a700358fec00676000cd4b06a4e530f2860045aa0054f00077040085a100575800543b0043250022a10023800075a90011ff0869c37049db00aa6900aafb00bd0401ccc012ad0810dc6900ad3900dd6f00683e008a0000c520a1fd5d11f02951c8fa006c0900ed3e00b93b856d130a501520e7f733d24d116f0a07cb6a66a63d176479199aca90ee2400c9020075f9003ab270669800434e0023340049c900acf690c48460d890171e5226c661112ade4120b176d2eb3247477495a56309e31307342a91cc326dcd656cac031681ba9965aa9cad00bc5500aa29008a1200a73e00451a0061500011a707a7a480181f8867618ba17c08712d987ca9a9dbb9a91dc4991fe6fe8aaf119917df8001650c59ebb01dd8a877a68ac0e10927ceb87555c01528cc6be8ab77ab8baa5f7008f67acc1daaaa607ac18f001c12ac71550b83290901d600270e00bd9b049d204014b70085a50044b409559a0054e8005587002348003a15c952480054910085a70021910ad3bb0043ac0c14fe004acf00cbe200dd0711ddcb11ce950086de004371005518005cba9033a8003c57ccc4af00443a0046f80066e90065160076d400424d00452a0034d80066b700751c0046e60075fa0cc4fa0066cf008a5500ca2c0088fc008a7e00d32d113e9608d167213d1500a6dd006a9000c9fa0068d200749f00129c00658f0064dd00444e0781f50011e10fe023460048db70334f00480b00780f0099c200aaa200a8ef00790b006354002b8370234e004da2c0683500cddb20eac19a731381483d1b55a3633d536278191264d8664db060e948a64df600cb4400c74d00138f0ba85eb87163002f549790f807925f09597db869ddbb97ad8c556ec9e1ab9c7566cacc5ba9d6a587935e9abf9e9b9dc899e7b589116a9ab1c399116c986eee9aa80b8ac124992f299b8950b867cd886150002af9b9382f00bc680ce6cf50d01c00133508a3b3a092c1a0b8250084b50c50c00012a800211900145700258500116d0022150024f300569c0098660078ef00cba410cbb600a45ca0aa9f0c95170904a90067e000743800319fe30bd38900443c09c09ba0634807b39a00444b0cd4fc00462800551d002335002abb70344c0043940032d40022de00239d07b6970045130021dd0878858036b80057380962400076970032100021e3005904009be500cbd700abba00aa5200883b00bbc700cbf900b4d30ae1d90881e8090a437b81de0022c5002151002357aab85fb7837f008a8400ca9400a82f0056bd0067f00088f000c1a180e7541254488319e414ade100abe3d7a98f77888b8064f80068220088eb0064e80032600096a10b96dc804449001f3c9865accac649c8658cd012760aa5f8d00b10a86884801eca98671b8876388aab21a88f1899ec6ca9e1679e562cce4991b9e6c5d88fe2069ac6918889c17b9b0fb00914b9f217901872cc87228b9a5caad8dfb011790057f3d0c749001025000047000702c861530041bb0ab82687a6ce801b747038490af4b800581d00744d0077620d176e0079d000cbf110d82f0044a80036870ca97d704499006088d01889890857b0339600475b0063930056c40cd34a003d25d022320034a30033820ae1770022e30aed07d0333c00483f006d609cb38500360d8011a000221a0011e7002fbe9ad208003a04009aa400cc5c00bb3f0a4bdc00bbbe00bbcf0a46af00462f0046d900672c00669b00672100572000a8f400980a0067270077fc0ee7200087660078ab00772400994800aa6800aa83008d00afe793b10023ad00639e0048b80099ff00548a0cc5f200668d0036ae0068080048d7bea3839bbe94dae209090da4abb6c30031dd0024f80042310ac797db9c62a926b08d66f68910fc09d2a4988627ee4539de5e8b9b7640cd7f59986befa871a509f7eab013c59b9dd7d7a3b1eac1d900189ebaa6e1de4e80988dcf9d5a607886ea8c6cc5e01dbedc7fbc9e0d1cd8683ce9e02c0e7614c911709e56d088689580217b0964d10052c5a0965b9048610054b40db4e50df86f004067902c76c90113a036a80054d900682600858f0016b30ea68900494ef0276300881100872a00639d00478c0041e50028f97066f40d422b0011e20ae24a0046d50063be0df7efe78797bbd7add0a02db5d862d80042a50023c29ca1d2007a6600bee0da5bbb00ba4200aa7900aa9a00aa8700ae2eeeda3f00541b0069f40f0215c0ab6700bbc400ba3c0098920f0b6300baa100a021f0a4e700144d008a1300a4830aee74dedd43d0333e0a039e001f37fc71c607a038bc67f48c87f0e100f28387020f002860b192e6878e0a003881a6a8670c040e10103070b163060b09163c78f2035625c8000c18281081850e8f06024c79325398edc28b3a1cb981a6bd66420706505071480f6c458a1830e131a2e10bc40a12641812e67f2248991a0830d100c66a8f0c02b468e150676741020008103211d80e4e8f5810815437490186208131428fe6f5254385184868e143372104982244a9111489210214144898e245870b87041e4c30d1a20708c682222890b1d68a23869810309612762ececf1d3668f9a284fa2b411d4a64c94161d3a54e0cdfbc2850a1e4068e8a041a1520c1930e4e8906183880d3b443031456b562f5fd97d192b962bd7ae5da14e15e34e9e942853a7689142d58bd72e5ab666a19ab53e95ad5db67a51424309982f6078e9659728840a4aacde3a68610a1e7413cbadab08b20a2381a0baa8020c7aa360a00cb802e1030b2cea2921e59ef8a3290c33fa282d9d664aaba305d6b24a278f348ae9a4b56a3a60a38c4a4260ad98acf2aa26931678e0828bd64a72239508c2e02d1740fe4811c9a118e08d20de1ee8a0470790cca8200c38baa0a78b606c88460004200081030ab011c61a55e0a08321a4c08284c83459c30a277498a184118ac0a20c433a3184903dfa48630e430449030d278c688106229e48228d273c20c1030a327081b4143cc8218a37de48031042d6800d092744cb81915d54e1a4144afcd8e38407800a0a830c3d4088380f3a180107109abbc002a330e8c089134cf0e0011ac4db85185e5219e5186a8839861755ca40a30c537ce945185380d965966276f185175e66f14518521861a4935042b1e597596609255f5b46f9a411506649e50f175a3ad2a80c3a686ac386281cc8ab82ac92702d822ca26061a130bc18c5aefe0e5438030d0a12c8830f3298e18828d05863060f34184827932ac640c28fde64e0c79a6df6882319993ce9661a5bfcf9a4866104cbe8aa78467243257bb2a82b9d2886736a9566bc196806cc2a0081ad8b3ca0489e29f060030714ea1204151e0061b1136668628d22081a49200a3448e2092ca4a0c18d288e30220743b4a0610a4e39908a020bbae4c08526e060228a241674e20834d038c185672fae28282cbdbad8a20b5800b40312742082860e520841d90a2e28d9031a94c0e0833a3c09c20d39fc684494535021a5945442596388345029665d77850166c05d7831068b11f648c3833f7ee9e5945bd67daf175bd825cf1753f61076841128e86843fea60b92b0210a70c82062f8d5efa9208b64e0ad83297408810831a210430e3bb4e10b6d704214fec0862738410eb96b031a1ae81a35a4c109691842088ed002241ce1012488020e8ca001ad982f241871cace42d2901e4d25464fe9598c30f2b3b1686004643b53d5da6210928828573d73988c66f2b3165d056b2dd28853d2148003b4c96b2651498cd867810e48c10f6f580211965085c80d610a58c042133a90b8a0082405280bc110b250821218010d75e84314dc20972434c10821c800093210a25c8140043720c1082e1082cd3c410939f8c00868c0a98358c4010fd250418cb28327a4a1092e735d0b4030072c7800074c90c20832f0012504c20ffe9ce08422043107548cc214a6f803241e710a53b48112ca308631a2514b5fb82b97e3d9051ed0c00841280215ebfa857c6851af46a0a141ba61a6c240d0821628610d65680323e6908326e0410e73b8c31cbea00424784007dffc4219e4d0863fb8a10c5310c31724c5821ed0000337280ce4c480063fe0610e68e0d40334f0846fedc10d6898030d72900448edc60332d894092687862f8ca039c23ac2109e50862f2421094a001107683084289480034938a410b0e08642d8610a2e2015134630041e8885044808010520d0ba0f84c00842885d1a945051243c81094a581d0e7010bb267cc1093458c3173c403e10d0e07d14734a471ef0b522a9844d6ffe7a498e8086a3051cb1005f5bc0d76024238aed800f27580210a408873a18e20d4670420998d0072358c0030eb0801d83d2014a89a004431801099880831284a0422bb9888290204717e0e004ad12c1033c10040e5cec2a0f63ca863e20966045e502c18aea0c40a09c191c523908ca50c28c72810ea8c1117f60c4274e715b46d0800662d8832318e106dabc9217c528862d18b1064ee46216e7eac52c3e519f50a4425fa6f804283af8815cfde6371598e9081a118a3f88610d7fb0431964c00334b8e1117270032814f18844d80110f19dc31c1af187405442117448c21c2891085726420e95384f2312418a50ec41117790831ad0d0830f20242162a0fe8105d070041c74a0047038016c64103b1ab0940649e8d3137030031d7c807435504c07da2294865420044a10e9068790833db4e1064d2004134a68a40a8c10234db140068e5008143cec7d3b529a4b6804a79d6cf52525f1d18e9898c49c3091893e5a00074e70022cf4410a4e80820636f500b6d200085368421144d002239cc07d1838810670b0452c40ee0423d0810c866019079420086a6882073c9081124c4a073920c10982a0830a80120b5364830b72c00642c0a1082d3074eb0452010d84402c41e14010f63a312bfd190938f80df9903002108086094d608107302783167c7643ba812d161ec10852f8c2117280c41b90d08224fce1092ec80dfe0dd8b08660f741368f68c323c4e50b628ccb18cd3d85731fd108318861071d105b7340000258b7600dc53846f77af109529c8716bcc8ce2d4c4189f524c20d76782f2d80010c5ba0423ef4b19e2d6c616ff1d04a14a8a084299a3b0bfccc420d1fa04c106e20a51b20bb031e48c210ca708319b4a0b04d2801065a505310c8a0032668410d483003424041444bc988da34d0248e18d90f8cb083200661870b18c97c0de389113cf107cd90a00d1c8891dc788691285462119c78051d9224b2a0204923ebd3c007a8fca382b0c92423b461475462812f8fa0042438d2055c1001066020b3c8f200072040010484a00955d8c0022cb0d53f9260072dd0010efe86b0841358a001e8963b0918b2032098d6030bc0d00864b08319902e085200d1a1a180051da4610d41e88a095a42810fcc74060b6b4a4584b2140b14ac2bb9d210dd20463fcd46c52b1e58032354f987367022146cc8411a98f005640fda117340c2b772e0864084e278c2e805768aab085208d07f017c825431a49b0f9c1b0462f0c5b9c4551f741d8379b378c42344f1df3628c20ecee5c11a50010c6af52217a4f8c41f46e18b5c68023b20053748044578822f38977c518286a1802731b410d0806219815ccb8116789f0db1000d008a8ca19b0b88b551510226b0241c708224c0815c43219e70002510049f63044590010f20b29a28320a61001a70feaa44130c22700124081306b880902b0135e0044680043b70319e093207d0aaa0d108b232bb93c0b2276412b660000ee0225ce91ace883312a81b1df8011cd08228e0800e090ac4c10a1da0012928021dc082343824c16ab43a78822658bd13f83311e800bc998131d38113a08114508a1c90024eeb801c08272dd980dfa0008f02012d990236f0831ca0812718bc60e914c578a619d0000bd808f6e1912419880d79908b4190ae70027b719752f80446380550188535b8b02708023b583e24f8a9274884563c055bb01652682a46108316b8b81bc00331508426680110ca433678844a608440700352000f776117573a06e212105f10051d188129f8901bfe60018a8b351ec0283f50033b80843f508446280331788227b00336080446d88345180555088559a101ac30021a900120680107000116583d4bd48c2690920580001e20c8063081244821e038012220990d018171a480678a0aa2408008e0af5090834eb80322b0a41018bc8ec1081a38811f30843a100343188541e00113889817f30a85a8001ce0a98219829668221b8119acb21120ca2a2dfba1aff99ab3380b11e84112d814117080b47800bd3a8a2a80032cd0001da88228208eab88910de080107808d9808215b83b0d90a10d34820ce8093a838c2608c41d208220eb8028c002137b0238500212708121b0b5f033810c8000beca810a803322c801fe3b6c822420011a2895356802b23192abf08016680235300323980b21018aa8789a277084d93a826a4b0339c004452884369003271882240882276883e8328545f8044e00047d622f4e78043f00a8095282739a0226508338fa034110010fe84165f980d2780246688326c02829c0812f7802c578820542a89dd3042520821a88822a20853fc0811ca8b635a08367cb2824d8ad21781c17a08193b10325b0a81c80a91e78b4a87a0c962913120a8a0c0081c4090ea0b0910658090df88b1670811db84edd528219988121a0816842833410043b98033fb0832440881b380239744005f9028bf33819508a0eb8bb8ba03291081a1ba21104b82a2ed38924c2feb298202baaa4b29d3109013800640934b2090e0b80800b00b322e080906b022670032920811690511fd9800d2981ca0a0a1ae00015a08104009220618911230211b080a5282b139001cf3101bd21012970032710010e400114280222c0bb209412457a801688242760033b20011988822828031d1003e2bb209c78938aa1980df0010e508225f8c4a07052f904027f120d2400010610812f98ce280001fa11881360823608313b40033b080436d0812890c634c801234002315082f4b2833498821a181c3698033c00ae0dbd0340700445500418f4ad41080445f00340302539982f61658446800448688467fd84f67b0448384246f8354af8b547a0846dfe6d844060b039708227880337f0033908a63910841c93833d588339600331680225180d411aaa28d8d426b83027c84524e0811d48821970811a480226408281dda8d1b81454150313c881d3faa2240109b07391459a9a283b899c904293f89a02b819af59cab1b2322ac3aa24aa32b23289135800b3088002182bb428000278d9241ad9b3da000ce98ac45c02ddcab308304a4f3c0008409d3ddb800c70022c78218dd8001778800c180214d8b80b80000b808c3230826351824c293209a13ca77b0bd4c9802ad803c89183be118184390a36300d2490202730c123c8812310a42130ce484283e2e4d337a82f27608227682a796c8359440329f882f46283fe3f188446683f48a8045202856a7d045292dc6b35b04460843f008440080447f88486fb1df5a805ebd885db42bf7c11b8f940b04e5004da52845f6d84f7820450008545909744b8dd40b8d64418047909844468bf44f8833f488435d803f2da832f388239d8033e75033538573428442750d21bc80127500322e0814b5935839d811a98011e900117784825785b41a0843f68021e2082457b8221a08c1ce0814dd1943dbb801228822328ac20a0811da0d00a881a08e0000d60448eb00036449d1258011428811fe0000740811f8880085001b2c9888e15bb1a8d1136212b94cdaa1d31022c280108608011b64abc838001060113308226580243d201c8c0fe82298003286802d980032d48822c380222785f1a408225b0432c7803ade4612c20b128800336a88337a803ce3595746d0447e8044ae0844e00055318855402057ee4044c70044e2884dcb1472394175762043570822f10043f284e37082a31b028c56803e34c991b9b01cc708c200054806a4ddfeadd45180445e0dd40f8834500beccfddd47508433660450f05c4b904679e9564ab8e250a004d8558406cb503f780457b42d53108559c885ec3817eba005f5e8b65df8844450b03958d639500339e053e19de4de04055128054ef05d79c9d64f80b74f5ea54f5884cefde55f368552100551788450f8044c70c5564603a14282326802246002ca7001f2fe610158db0124d80110e00012e0803d3c340d230229d05a6d0681c25b1d43cb000f28010f108113d8801260288e84a6ae538224e84c1a2881e9c4811a38012abd9a92a8d12b53090ec6aa8e2d4a1bd5d8b24a59263a812cc0822ca8e82c80832c406738200443e8833ac89b29688323b6a834e8033b8003796c0222e0a237708335a8c3d47894348003369ea23b984954608554e88441105c3bd8d042508440308450300552b86253f8055608856f1b6a4e00055278846295174100844aee4dcc555c47a00450103e231c04c5358436d83747a8846163033a86d70562023108044a7084c51d84dc992f47780454f01d2aa6e4470005fae89d476ebf46f056fe512085de21055a400551f8654a58b8deb1055a90ea59a037f87017763b8663008663009075692eebb8465e908fc95617ecf08562a0b7511e65c84685db326c716197f7a005d9b68e532805a90e855108855248655456855498ea3b08044038df780b85a97e84bd4e843b9097f7cad646900378b503463040dbc55c4178047ba4846b9d6541900395895548b2833580be40b8cd5cae021f10811f40030941caad59ca0358932ba30985de609385ef97e59ab1da6ffe46803ef8ef3ef08343f0833e78034120844a30144398844ee8844930044370044c10844010044708054fe8042ff684a37e855460855740855d788559f80512ff855ff0855f000f1457fe71574005ca66f161e085156f1e628a1555a00555109854488f50f0eddd5697f780ed5c601705946de582ec54e8365b400f5458a553b86452406aa946055a4885c5b6844f58a5520838886b1e301f65018138d9ce977c097383cb975b50ae5df80eec1890228ff322e78522df16ee710f016117f9908fda4665d62e055428f2c48e38fcc8853d47e5db42e5cfbef252208559388fc25eec4f286c53105d487f665784845148e66d75e66ce58444a0845088c5eaf2d62394dcf6c3cd41f803df5a046b4d0463a56b264803378883068be52370528f938337688340a0d53558837e6d81f32c043f08043ec8808140e899a5d936594afdde9afcc6b21a7d7636fe19ab05785999d5f6993d803e38044328843e28940887f04228944ec00443e00342c0042b8670172c8444318454708555ea0448e8841e37055578855cf88561f885604071dfde8517af771467f15f00861467f85d70f85d68f862089086dfec75010f6b8cf225ef9d541890f7e8715a687451c00465e60457ea84c2de477fb1e26e858436780339a8ad49e7472e2e05a4a66dc8c6785f3805d4a6852ceeb67cb9addf5666e3e6c75c560f5358aefba0b77551bf63288f5ca2b7cd3e178c6797ec1090ea53c0d13e17116f1e43f70efc888f01199033576cfa30b8534885f5c065508025c46e45af0e05df717b51e0e2bac7f7e94e5c79698445d8dc40e05dfe0a0f04f6222f4360849f135c38cc820612f63ae85500a24727800334d85f179801926ac91f9601e570b163c183538a822c780325f8c40370886c1f2bb11bd93631001f300193400bac1ad986fef605ef840ce7770f5f05dd57055600f154e0fd7ee7fd0fe77d104f0f55500553a01753f00451e8f75c5872de47850f5f711577f18867855fa0716cc397882f8654780f5b388515c73fede016b587f3ee59715bc88e222f3f1a6f9e51286ca7c6dc40a8030b9d835f1f8d3588794ef8044fd8728030f5295425489f483d7a444994a950a248853a850ad52e5ab35891fa24ea13a381a644950a9550e12754a966edf2d5cb97af59b976f15ac992174c5ec0fe8e152b662ca72f5bbb7aed4239cb22cd59a766b9b4452b57aea1274f59cc758a61a952a418ce1265ebd42950221f610aa448d01a232c46b4683184070d1e21643c4952464d1b3f8618050a24e7489426204c90a050e141850c0c1c58d0f0c308070f2368b400f100c3850e1f540c81a2a2888e132e963849e2a1c2051c68a284f08043c4030a1a3664b0d0414386d1101c6c10e100f1860bbb17304070a0c07004c203102f905c3972e207081c103e9c8016438762755ab5aa13f7eddbb373f7d4870d9621dc31194a2fc5501f39a60ced7124c8912955bf76953295bf7eaafeaf5485a28a2ab6d8124a7daaf4374b43a9a8c20928a5a4f2d12ea988c2cafe2fb37012e127a9a0a28a289c04f288288e0cd20827a670f2c720a00cc4891c7ed851871d89744449235e39c20929a850c248289c50c20924229e42ca29b6b4345128a180b2232ab464d42493254578e42e3e1168122a503d399450b49cb4d23137f5c24b312c1de34b9abd94c95245b3f8f4e68e34d9c24b9db694f2899e111d550a2da7a8625429a818258aa19f08240a28a284021128a074c2c82084e08185143bdc30820b2e80a0810521b85002116bac51c71d80d431c50723b04a83136530414319b00eb101030c3c508209145c4081030838f08003b7f9ea4007190cb6db03874160016cbb1de62b020bec66dcb40b1007ed02c00137dc01d11987fe2d710410a05c74df2a972eb6d1657188219ac0d107279dc4c2c92a9e68d7097b86c041082aacb0f20a87fa1a220824863451c4137dac710813337cc187219d38d249214e30c1461f68ac52481a4ebcc119677f14b2061a6e38c24825819401c7114f18e2442a869461881b6c741216237bb891c61e6b8070c2107e08f2c722a138f2871f8a2c02a01f83d861445d767032341a7534c208208c2c12082522215aca29a99c520a238c3c028a29a6a00d0a2594ece8d546a29c328adba6d43d252927d982529c2815858ad8b6e422932fbbbc19534d31c5b4d22eb794694b2fb7fc62619d40c9c40b4b529d52b851b67cd24829b9fc828a29595152c9238ea4fe5c49239510a2c8208afc0148229528f24827a2ecbc871c815452c8226dccd18618472841c4144ae850420614dccac0021ba07082f534cc40020a430c01040d442071040f1f50d04107c26ebbecb6db1af7c0fae14a0f5cfc0b08870071f52ff0edb7f61750ae72c211c0380118ce00fb079de790ab007d3844270e818542f4a110134b4f1f06d1094f98423b28328423e46008f4148208753004219250821d1481082668c21b9c9006848de009256383115c300322fc610f688083114e8084243c8108522044f640d0010f6480086ac0820e3240820a7480083818421d8820aa2274400415c8df065ac0843b18020d49b043154ab0010f6880083a988105fea4e0812350e0032d20c11b1a010727b8811389e0444278118a36d8c10d7308912a184109506c4573bcc8058b98240a4b0ca9510622c5554e470b5ba4c2274d41ca2501c78b4ffaa2294dd11c2dc446c951d0e24f792245df6ca10a54906248703b054cd2040c5f803217a0dc4553523921ae882d220f39922d6a61371b35e26d8c5044231ea1084040d30d62708312d640354aa42d1436a2941c0229852964c10d7830551d0441883ab4610d6948c31ade608742b0e1092de8000604f38023ae000416b04006e0a73e0650405817b00004a8652d0654c001d46a0042a3772be1d08f7edfa2dfb4ce5500e9106701013457720e80052d68010a1c5842bcb0fe102f4148101385200404eb00052cbc010b1010811304d1872c4881034dd88116867002412c41073a78431db080031d60410955c04113e0308423a421a63940831a429003cee480065858020974f0041a78000424f040406b130213642003436802137220020848ef000c3800fd8283ad8ad2d5030d58400b1280d183ce550310784012ea42840dbce1044e3801024e908a4ed881069c1805247c71264ab42114be60841b34c7125b0402492ae9054a68818a5ed8624b4149052d4671949494c94c67b26c316c520c61a4e918bd48136e7b2b0c962065474951644cd4a4b95fa096402719652f52c90b8b1c454142811398b674ba89a46214a418052c4d31fe8ab491a213a95b44cae4b0073bf0e10f7390031bfc5086273cc1096840420e861087f4aaa8108d088420e4400843dc21094e9082118620852f24610a5288111e9e90030fa8000d4530c10948d081dd38007aece35ffda44357e3e8cf39e7820effd0251d04f8cf024458425009d10738d4e1104e08411bd3338542acc2106fc8c20946d0842c60c1085878c2094040832848a108ee1b42157450841717010d4cd8c03d9150820a9440076d7803213cf001afd24007833142133590830f5420a104f8c00ca0e0811978000533e840083220d70a0447380c2840000a381c0316605d7ffe9fff0a7d0007ecb97c012097740c108138a8a0021ea0010e18f107fe46bcc10834b04009fcb08b4ac801b994f8c52f18f113affce4969665094b80c10b51f4a22bac46d39866ad5b36f54218bdf80454bc849295909693b3e8455390b40b89f4c4b448f989e68081124824824fd6d5d2414c17b74770e2139d780420fcf0873fb48109697043209c30043b4cc17c37287013f8a2e9289401094d7842199ce004b06a40031e80f01380b06f1054000227d843159a20030dac40073bf881058c208593adc10f75884254f7308841a86c106a2841097000020790e601eecbdfb93aacbffd15a77e133df11654b004159c000b5888791a664e8313e4cf04553884144e6004f6b0c1044628c2147610e40d54808e7d28c20c66e00438fe1081094480420b9a7c020d5cb80134100d04025107086420cc0fb840c0ab508725a400081be000064840820b6c400947188220a6800336f43c35400042148eaa011040605a1448c20d9a9580e824d001d3790e88a725bde65cd401feebdfb62ee01c063c810d245041072e0a2cf0c9c10d6e385d205081c850ccc2182db9654e76d2ea5a034318c0d82de1587d2596b00996c77e042312b1888d3842114e98439330018a53842210741385420e69a4d43e84169f50c4552cb2a55950124e48c1a44466e136487dc246b25384220c51893548210a7608c41ad4c0863828a2f7d8c6c4275204c432f8012c8d60c317329f0636d80116900a1adc0127fc0827fe649b787147250c0220d8c11dac57cfb441c1ecc11cccc11bc84121d88113344f0968c007a019dc41000578400754000678c009505806905db2e41947950b7438c75ed98a0868411184809059871ff4c1cb08421574c20f88402018c20a680014e0c01cac8112a0800500810690001110c10adcdc063480c0c1012640c19d8dc0092c4115184104b4460344070730c11ae0c00a944f0764811270000d88405a2cc10ca80127e04019144109448111b4800794400d108112348106a000c28c5b13a081f95c180e5c1d0b20c03d59c0b458cbb74846fe209afdc460bac895712c87fe4c467138474545800e0d411a5082304c5631cc829958d64e140330b49efeebfdd6e118c451d08228cc011bb8cd1ce8801ac8801675000d20010eac0113e88021a8c1137000085c000370801400421a9800405100097640099cc02f92c020f51f33014227fcc11a74422ec4d2322502f9a50d8b7805253d8aeaa4a3a3a88d772584dc8002d78c4537fd81207444ca30027b15cf1eecc1ac98d71e048223605bfd81c81a0c810c60011bb0c11e2c420e69e0ac08a3c1b180078c550624410e3023657cc05c8961f44c8f05885c5a4180091cc00afc0013d0810698000d3c80e7e50f0a184046394006b0c013348113f0c121f8401118422ca48108600109254110f0c1066c40084c810ae09f27f8c11ab4411f60411f7c952074c21234fe801f1ac10ea04004f8210870c00928010efcc009544f092cc00324000a54c014400113a440063c011220810ef40adda95006c018135040633c80054081126440a0210003784008b8811340c22e04c2b8b5c11dd8c11e10810608023ff00336b4820ff8400ec8c00240cf0ac8026662e63ffc400050d4052c4027f4033ff40337f0c3161800b5289402c0023fe84333f043329c00067cc01a4401127c0269b2833b60a631ec836bfac26ff1c231cc423160a63fb4263f00c2b085821aa8972f60e63db8e6128c800700011610c11db4663f4c0366c2c359e9d4f1e4400780000e1c81859dc01ab841a9e0836b5643792293ca34c229446729b46634288247fe084e28748875990294b0162a6c04fd8d424330041ff58823e405233482224042286042ee4002da70c2d980e8ec2cc2202442f005c23281e81f2442202cc27e8d4538ba5f1bb4815da2011aa4c113e8c01ad0c063f0c00ef00016a8410b9c001478a0c889400750c00290e1b418c07030000af0190dc0c11c6ed105700a026c4013c0618595c06e640004540008800003348008e8800a542304d0001b38014ba541c13d5015a45911380116c881201801c0e1802150c1a179400f71c0108c806c7cc0133041153041414507a205c70630c1112814b72cc00860c00fd44109c880af88800830011228c108740012b8810ef8017c35c22088011b0cc21cb841fe253002294c4210ac81209c000ef4c00880c00788c007d09305948fc8dd9309da8a037cc0052ccb61e40f0434c06e3400f42066100dc10e0d818aa0811099c8deec8246f4442fa1822f28e127c40105fc411344010a04cb071441155401076cd103b8412108a30ea00100fe418dae01208881130402202c181ea4d723644446348adb3c4232f1de237c42231909a1b0231f718228b816299882415082220402244042907c42c65202fd2d53c1ca811cb44137d9811d1802867e42420c4429386cb661829018a4a260931d1c016400c111308119c801c900821bdc411df44b1d3cc19c65c077d280acb00e23a0211b0402cf3093123cc11fb841cf81a60538fe800ab00005fc990398000a00000004000430e2053041cec04170dce409f84116e08013ac022130019452cb6d2c000a30d00f3401501d811f40c15e7140109c406c844007cc40f738c15539c005880079146e03f4501b5442c148410e6042168000952d4007041e0158801f2c8227f8033f50c12af0c336bcc13f60662c14c0ad0007756026151c026626831b7c41210082333d02691a031ea8811d3c41200d836b5ec12b60e62b4c8109346b06acc11edce7361c823ef48316206b010c8b3e6026376c0166f603162c0b0258c012ac2269024313504d1aa08111f80127ac4112f8411560401170000310c00f60a63e4c403ef4c30f8c26664a8011e4c01cfe88c00f88826ef2c33e24673740c2f141c229dcc2291cc37462e63e14892d305f027fc27d92663f1c03254082252c0223a88d3168ef74eec3078b023689023590a60493c28db88e23008208bba651c012447c88286082818642298842d3ca811a94c122a841121cc117384114cc412248a51d080220c45fd2e6c588328223ec172100821aacc117b4d7b7ad0109dcca07840010b4800898c0039c001328c10eb4000ed497430ac22240c21fbc0c2040010008400834cc2148800390000e70001440c0d489d912548220acc2125840059cc021c0c1bb188109de060a3c4116a8000df4c10f6c4f5a69c011bcc12268c1092c42103a4009840071005433a2c0feb25646097880093c811fb081e21e410fd140ad90c00c4ca9e6968bb2aeaefd740bc91d66091c8b0e20c11b240112cc400e3c410adc5c1d344123480112b40116d00004a04121b48603e0c005a0400d0807713cc013a4f21e44804259cb00d9cfad0400ff980bb5049a08e44feb468120b88104cc47135800067c0b6a92614621c0a229870c4a94fd4cd40140c00e2001116c2ac5312623a0c11a20412780428adc2e26202c44a0c2281848affdc42f34b0e4d8024288c269018572754542d00d879c022becc22b850277354227809a13a8c1205c2c26308241080428609b8696822a546c1be8eb23e445d3b68120546b4396ac1db0c11f9caa1c34581038fe41e609422041341ad4a50ec0a7121871124819c6a8c117748005888014600124a8010d84c009ac000aac405b5b0007a0c00f48c0581ede12389008440003d4321aa80255fa0005d0800430809032001008024a6d551ff48115702d6357411fc4020d3c01168c1508484116a06109042a1b54f21350cb1b08020a680010f0011cc88069b0c121f8811ad4c11e40c20e204011948714e0400be880083040113001016c4019308608780a04740003146d0b18c107c840063022039480573f411a48411360c120080211f8411428325815010a1c1e024440042040039c40099021701847fc6800192650023d87b75cd47400f4a02d470118c0ad38470c4a8fb9fef8cfa24587f4a4777a03471a2c810844a4a804c10e84564f4c4e8498c9ed19438447383010434e004355d08265f99128a4842f004330d8824403c21f9c829b70c4c51e447f8c02258c42033ac4143fc292605b420c022418df28748201a2c28f98c23c82028e63935e64cdab768246f73827e4889e7ce8cedee91edc2855d5811fec411dcc01411ac2222c0226c0b020bcc11ab0411b542b9d31411298c18db27168244115b8c112c8c01258c102008116f0181cf0c10fd41c9541c12144e2149cc05e218006dcca11e55909cc1114f04127404106f0711d708216a88007ec8127fce013c48213cc5412cc000478cb61decf01f4d937a34b7f33dab66c80fe052c005a46c00184401db06d14e4800b6c000b888a2318820a64401b2802214441103501043001e795412570c001fc8022a080445954b980b744111a7210409f95cb00c5e0a235c73f078000904b7bf7590000009ff5590160fbb66fbba82b9eb86f620298a00c28410ef41008b8005adcc0ffa2c11e30822810852f905a2d29838447783050c21c94024ee844850343c11383ec4d8edd50044ce09e4ad8024b230e4a00ca2c64922ab88ea55d6c2288822a7442220cc21f1464267c82450f02cc3a2c24cccbc1328220044222ccc11f54d0c59e302850a8a42402c8df0c13781c103c811b24e31420c11c2c42fda5411148017c45c1105c800914c11140fe8109404110cc00a53663024480af30400790a1006cbbb38800d235c07797400ea00004700004148008a82074ecd501a81d4635694d220004c8c0091874f4502f0810011bc04111540005a481f594c1067c0b1465400ecc00705080fd10b4fd90dd58db412aa0410214c0086c40e0218013ac406c38b721fcc003c8b50b9080dd6f4bffa0801108400160c1b11f4002289e013c3bb5073401dcd5ba38fba21100b6a3d8a20910ed5f1445410770a4d9110dc6057c8009848a1f4c821c600221a001f27d442544a5187493856d8ac7b9c00decc00c10b31300c2203c824693c48e1c052950c2e91cc52978d62d1517fb9b8e9d200e2669df2c5c8829a49690fe6002264002869f046b21df760184233b77fcd871f344491224377410b92327ce9f3d7f02b15903e9d1a3458c182d12f4e70f274c8f1cad9122474e23518fecf851344811254e8f08ad4922671127508c9e24d9d3f1cf9a416dd2489981c3050912384e5840e080c2860a0f162c70d0a10390130b44d008c1048b0f155ad6185911006d5ab4270c61d274088505235a921c7a1062c58105010e14a8504142dfaa070e20b8b0a070050c141e30401000c1020688297b307184c382132b4e883801a20305c854117328b12184030b1e3c9c38a1a30404081d0eac386221901113487e607973800185020108e84d80b64081e27b93077080e071dae168050448fe3e9d005f04c50b1c60e141858b111e3a78984162040e2c8eb0a450e2c8d09a376be2f87183a6899d3d8e4c314a658a924a18a1c417626c1985934e40e9449139fe68a4a082007104144e1411a4119d1e514414544e3965971067f1c597637c018644128b31c6975d66392595541aa1e4145250e984924f52a185164b48310515534801c511484609451140da9823904f30818494409e602314565211b01353544185144f1c01e411531ca18411473009e527482099e90ff8f8d0c29042ca6c84114e4281a4cc4718c9a8133d1919649082e4b0e38f001301040f2da49882a927045924113474c820030fa0e0e38f45407a84133698680284139230a1021ffed878630f3992780596676479e699699eb186565aa799c6566b709da6995a6fd57557686e1d369b69b499e61a6493ad669a6ab699a65862a1bd269b6caea196d96ab3d9a69a6aaaf5d6db6cc0d5b6db6fcbfd165a6fb711b7db6aa8a9765d72b3a1a6d96db9dd16de6adfd5365f7dbf1597df70a9a186db6db83d77dd70ff8db79c72da75b75b6dc669379b7112a606dc83c7f9975d8c07e6d6e38745c618626fa379989a68a2a1c69a814f86381a6b549e796595077699e695615e396495a5a946e566305eb9e5908176f7e5965176b91aa5812639e5987596da656b2036badb81b31659dc89ab615596666085555663633dfbd6586f3d566d608f2d561bfe6c6eb5f65a6593a5e65a6aad7ddbe08401ee7bdd7803b7b76f7e03df269d74b4ddc6e170cbd9d6618bd3f1d6e28a2757789cc413df66e38dab55bcf3aee16d789c72d219a7f46dc2a9b81cce1df6e6f16c483fbd1cd453973cf3dacb4127f18d49f746f174bcb19df5d251afa69ce16d9f18f66abc19d81b76bd715ee4e94b0e67fa9b8fa6b9dd94a9f959eb9bb5ce5a1a8fa529bffcf0497637fba5a9991e7ef8b59e3e9c6b7e0ee7ea6ad2bff96577a1f6567c187b5ed6a0a6b57150a373d51807ecbcc1aa66bc4a6d6a1bd6ae26b8b60a0e0b1bd7881bb4eca60d6e28ab5ad402dc080937c2d36d831e29449cc510a7b974208e7399a347f018273bd7fe292e76386c583a5af7c217ba6e862e4c073d50970ddaf14e73a64b62e294b8c3c9d50e79be3be138ccb14026260e1de34047f294980ede75518854fc22ecaa9839d4edae1ce6305df278388e70f0b061c8735e39c2f13ee099c31be77b9f00db15bdd751a31bcf7b9ef8b2e70dec0d0c7ff0eb9621e9e73ce875ab7cdd0a87341aa7bce981e392d408873934798df98d4f9024f3c628e177bef279d279d218a0feaa718de151af8ac953e0025127c8d299c38164bb60d986658d635db058adbc9506a7f1ac6469a36f1ad4db089d65308091ab613d7ca11113070f7aa0301df0d0dc3585b844272ab173bd0be2e9c8e9c2d699ce8cb5eb9df112474d2d9afe139d8933073a90884630662e1e6df4c6166b57c57454518dbba3dd2dd368c672b203893cf4223cccd13b06ea8e96ded846f3b458bbe9956e78891c25f90c49bd3cbecf91370be52207a6c7f20d321ae1785d249f278d6e600f7d21c3a3d6eae82efce9ef1a0f93461dc1773f45a6d295f19b9ffe3aea8d68905279d83324f6b8f8525cb64a9713fc65ddae9541bd71705ac9ba16ddb6b1d5c38db07506bb86c1ce09c36aba7086f4a02612ad994474d043a08923e2e932e74572beb39a48aceb5c87888e800a1489f118c7385338c3c07a31a1ed48473be841cf79b243b1f190073df2b9d876e4331e419407efda210fc1a6831df1a027efe281507678d1fe1c98dd223a36fb5674a883b5a245073bcc515bbf9a43a578c4de3f6bf9bc348ef27d0b446a3940bac872a89294fa53a526f738c05196ef1bfadbe31e3dfa48e78d347e8c64a05205f90d3b2a3579dec023529df70dd80dec8c4c2d5d2087d78d8652718105ad6d37da318efab6a3b64f155b042f38d5613d4b5bd828168045582c6b75b56fcd5457c1eca538cb698e1bdcd49cc1e49a4ddec1439bd9c4f05b83d861c4c2d11cf0e86216a9a83bb9369677f4842d6ba1385a166796b2b34d473e79f7de19ab111e0885c7681b9b4f84a6431eff5cac6c67ebd9d0c236c68a652d3bd8210f79c0c3b3a38dab3936eb0e84ce9377f2a86d34857bba51067478fe197d9fc3e878d38b26778fd1306ffa06494ae67ed490e17beefbd2773e41eacc91481520f4c431cae40937ccf115e428c1315e52d6528dbc436aa0f1080e5a567194e3a06f3bdac10efb521a165015d634b0c18d0f6ab598d112d7b30cd6cc6b6d831bf0fa2a85478838d331eed5ea40e1e34a67ce6ed263c7691de2aefb9ac20dd313b1af45f18c5328da19ee4eb4081d2d62b5d9587a6c961ef888323a244bcf1d67d6c8d48ec7b613278fcb2adbb3f468f2b725eb5979ccc3c9979dac93e3915a20bb03dd9295b793675bee26cb4389902dad3b5c1ccb2d637287f9bd25ec789b5d592e3acca3cceda1fdccbee4223c65d560ef52952a0df32295a9d8fe132e35fecc403bd656d220cfefe9ba11c86ec0b7be816cc7c9258d3a70e017bf54cca762297dd99a3319de998eaab23eadd563e5ed5a3f5796ddf2d62c7595ab9580dbd6365dd8426a0ad1d9bc6bac5d993e6c2cd23385542776431bea455da315893caeeb38449bb86da30eb499d52242b31e5a278bdbdce2de7669a98dee6753dbb3f160acdef1ce0e74bb711c50962c424b4b0f73287b9e41a6a7b7659bb8cbca96b65826a31891b8f2e1a5317900156e6f11aeddd285d7926ebcbc1d0f8ddc4326571c5c2c9dc6259d8e40d2928ae31d072617e8dee539da1b8e465d7d5137e92a521a8f54acb9f0db6d5fbd77d6dbf54d3e935925c1611d931b45a7fedb34a27f6a526790d3cdba57c2c62ad652775f898c63dc597d98577460b8b1ea98ec8e770c6c60cb15ca52dfa2d767acce6e8ad6769acb67adb72d0fd4c1361e448cb528ebc78688ee36abb4b62db44a6b1e44cb1da0ccc92230b4ea2d1ed0eddce441dadc81ddee4ddb22501efc6e1e98ec03956db1e8a9c9986cb6fccaaf682b8d6acb90f2ab05210d78326ae2b82bd216c8df1688a9e8aaf36c10e3146ed0240e08398e81dc0cb8160df4d82bb880afe4280d935ece76c081be4eeef5c40bf6ea8b1d3490d28ecfe6d8add2e4a1f974296fb841e8848eaa94c9ab9aa598d4b099eca55b0ac6625a29ac9a89ac6867d78228a1d2aac35eebad9cacc252fe48ea168bfeb8ed0e4fcbb00cafb05e6b88a6ee9f0ccfb5660b1e24cbf0cc618688ac1ceeed02e701ee3cd0dc2250de426b1e1ab00123101fbe70db1ab0ff9c2c1455d1b30e8fc9e649b4aaa8c966cbb4d0a11d6e0be4c2a1d0ca08e462af61c20c9d8007d0fc2cbf8c30d28e71d1942ae3cca1e4122e1915eee490ea1bf0e71b6a4fb8826f78560ef8bc810a676ff6bec1d128cdbe2c0dbeaae8e4202be65ece0b6b8ed2d0911deaa11e5e816ce4c6d3ead11eed31596ea51ee1c1d3f8111eba0ae890a55bc6ea0dafc1614a8dcc90279ac84a729c8811812d88560c8bb0cc8b600bd97011b1e2c11dd4a1fd862d1e566cd9160aeb800c1e562cb3fc6a1efee0611ef4411ff0011ef4219f18cfdc240bb4e8a9dce28ddd1290022dede24689bdbec1bcea21b450d00461d11c2a2dd8dc01bf60cb1ef4a1162221112ca118f4411cc0211c98eacbc62bbfaaa1b6ae12d0b281166a412cc7b2167c01f4164d93182e8f4cc9f4060d1d9a2112e2522ee7522e11012a11211398919430c91ca4b01ba410a9c231f70209b9c0019346a91d22cd3017d330dbb1d2daf11d988c1d8f121de34128eba0035840335f80055ec0333f13345fc006f4411f05a13343730d3ee8f99ae56780ee5a5ae95aace71aeae75ac201d64ecd20a509d65c4da5984889d6e19c7c53c8d2611d1a8a9faaa1225d6c77dc411c340778d24805fdaafe1cd6211d604b1d1a461f74810560200cba0006bef3059641cb80e79fcce11dfcea9f9c4c1d7e0ccbcc01b6d6811dd4411dec611864e03bb9800b60003fb9e0052ae11ed8611df0abb6c4211cd6611ddc81eba4e1b5e0d33d0f141e0a21063c933b97011ec28140c9e82a81d079b007a6faec90c02006be53446140112629b954498ff2c8a8366a2d55091ba67165bc411d86214445343fbf330622b446f9530cb88194bc4be1bee17c604abb4c0e93b84b95fe12f8faf2b974311cdaa1390d33bfd0ed1de601f8de412995b21dea011cfa2033592015b8410b3cf334598014fe41133e8033ed4158a0011ab8210842130f60e10b4e93335fe013ece156bafee5836a804cc9b406b04115fc5434ed2136abc11eb6c11122744441f30b70411fcae1351f47083e13063ed312f6810d24f405c0730cd4a13989d34049d30b3a55443dd33b4d153ccdd41ebace1e10e1056ef45215a15455f5522d411f666b1edc612379f503ddd304e54129fd6a1f4a2106f2f346c7c01ec46123cd53176cf53bc7a01abac054bfa055cd813e6bd446798019d64117d5a119bc133c73b4536fd4060c157b9c671d86015ab9e05847544497011d2c0e6880f27caac15e95611a53268fa2811ee2005945b40be8c00cc0c016f20828a9c15ee1c10c6e34606d60199ae15df11306f4001e78661e36415b61c0069020446f340c96811ea68719fec9c10c04d60de4c00c3e363f5be11d6a8e5588211992414c3ff33449811b9ec14d77f656a0e11a982034bf2018b8a11968003461000c7c361a58f31a9e81532f954c3b3350c3611ae0610e3ad554632018f4211df4c10c6c350628b45dec4115e0f50570b56bbda051c720f54c271ceca1146cf505f4401fd4411f7e4155f3730cf6e13ad9e855cb553f5f0052ed211764f552c9601f88d33ddf61046b0b1c90ecb1fe491fe2763ff5b655d501a0c4c11f3e810528f63e5f8007e8a011488159fbd21df6810ef453446da05b75d11ce2d646473406c04014ec21bc942a1d9a416e13011eae411fd4f63eb9200ca021bc14568f80f279ec155f47e91ae001fe60e1950e928118828178ebc890904b95e0010c8217061a611eca211302b712ecc1ce9ea772f5b30bbc207d371606c6001eae8b1e1061473d1747e9401cec0166614116a4f7159ce04f39530f6c4167ddb46709186841730c60c51f0ef852913619de3459b0c11a602144b1f60514011ba4411c6a33a7eca11054d53349611ff4e11a90005ec3c01e98281cd42117d8b70b6e011512015ac3c0169421a1ac61635fa0068401c3e2005ac1e01e1ac63ca321131a5675f9530f6ae11b9a210802963b6b4119e401b678d5ca16cfcaaecc1cee6118bc20601d9644efc1cadea11916e164f5f346e9200fb001418bb3b6dca119f2405c65950e9401bfdea118f2fe400ef22012ee811ffc2119f2407591f642a7270ed4967ed31714fa01788fb80bf2401f766ad1544919b1e71bc4a119b6337603d75245740cb8017955491ce0e10bba5844f1601d9617b9d48116ce970b6e211df00156f5130cccc017f0c8794cf633c1201af6a11ffce10ccc587089881d72e9152a80053ee098911999592018aa6167dd941bfa609935f3988ff90efa0109a6999af5404faf011a6a6033a9993359809baf21710c3470f0e119e4c006eeb4333bf30b68c11ed4e18a16521f5c01093ed306c66017f001446d00a0013a0644581cd838c42ef61308960ea4921b4af55481789ecc411f981809c0a0a2c1000c8e000cc46019a8a10cc08009fe301a0cbe000c82411e76b1b6dee13af34bc5d0418cd5e00bbe800ebe600cd040a6bfc012ec61b6daa119ca60a6e9800ec600a8c7e00bc4b38dfdca8de5400fe6400fee400f9a5a0f9601b2dcc117cc80a8e7806c675aa82de119eee11d706b1741a11240c113ca9aacc93a18e6411546a1ac83a41546e115d44193ae321cd88b433749e1f0e715820116f89aafa79718608118065b7a832119aee130976a7ae86194f7530c3238f748a9b6dac12aa98c7c7dc1143aa113588118b8a155f7921bd9416a8c011bf4211ba2c1189e219443b01ddee11de21116920156360d1ba0416ee466979065828489595a8959ba0a3661d320f3063901873a45553ee959fe73d6a12413473e79c81ca8932393bb3ae9999edfe89f101473cdd9af3057544d27c45a0b1df6011362353f257444f1f36cf5612395cdb444eb71cd0141e353dc76f1b6462b0279b5d2e0cd57435058db410b85d503af5803b3d0a5d5e131e53b0b47908a79151cc6cd1d2233c221ebbfdb18a178f528b57440115440ff52bcf2ab1bd8e1e5a470e5feb22f0bade4ba411c4edc30730f934cee2f09d4c3970a93f02bf7ae32b12dd4c4e52112cc383f63001b18ea285d8e19a7f0e5606ed228ad091bcdf79891c48fbcd2988cc95efb045945b679f656705b5870fbb69965597c3ba75c93e870b3756c731db6813a0db43a8f5b54ab5b1db8c13dab53c330feecb961ab24e31c244bb2bbf9b03d31171d8a73c7a25b3e5f6b77cecd1ef601d159b21ee6a12fb9f2c9045c586bcbc922af8a69ebc231d7c27b958ad71313cd2d0bad4c587d3502e7a14a110abf680b4ba3fc032dd0cacc2114f9dbca443d045f1dd6694b1d5adda5d1cd5771314027fb1629530303b4e6e6cbbd301c1d7691b2e5db303729bfac52e19cfdc4cd61c58fb22f4baed10aed48b971313f7c0abf61e546fcc16b2ec91d17bfa490da17f3bed29dd25e3632bf81c9607b6c360d8308381fe506d438ad1a32081bb8c5355d53accacf9c27eccc89b3cd658d3893fbb5e473c70efeb95f0b1ece731df870d05d7d9e4052390bd438dd7323776c3dfe47abe35bf1f0fa7015674bbe594bfd606b71adacdd160f7307fdb6f8ed23a9cca5474bbed50f41e51bd4694b40192ae28b93df10ab8d9bf5d2353032694b2943ec1de87c5737525877959eb51b5825d01d0cbae4279bea1114c3273bbabb1254a33beb132dba0d494addab2fa51ddbafd2c3cbc1c45d1c1c8ebddaed6bf61a6d498ff2e6ccc1db8f721731491c5e4f0a8f9cee29bbe6de21dc8739b6675bdee57d1ab67ce85a091b9ce51aac8adf7113e8c4aafbccb985949be0ad3bc39cfb85a65bae544ce111bea513feb5a478f4f950c5e6c1b15450fd485ffdce4d1d1a8bb6e6611f3e70f1508c576d3105991ef1541aa14c3f725f8ba52bddf699acfeb45ed115f1eb9f2a8d0115111d8c9de45d51d9fc2aca21cb3cf90d3a35f0e5afd81645f0039d4cc18f9eda6d4bbc5650eb1b3cf2a494572d1d06533c9038f4a596aa617471e21c77ecbd91ecaf9deeff92b60a8d1ddd0b20bab53347b05d3770e304b61b080edc4276ed202e8cc84e62bb57b0923d7b360ddb3468d3428af4786d5ac969db445ebb866d5bb56adb566e9bb9f29ab898e568964b976e5bcf74e2d2a91b0a4fdd4e75458daa43474f5ed2a448979a2b8a8e283a73e8d2a1bbca95de56785fe7c9bbaa0e6b56a15bd3c17307af2d5874f2e2ce53278f1edbb870e50d1d2acf1d5c77ecbeeaad888e1d5e76f1d8a5231cd81de08aecfc422eebfece5cbbb2e6d61526686e294471ea2a9b732796606575ede261bd6c98dde8cae2b03e56ed2e34607915e5cd7b0778dd63d7a2079a8bcd79345688c6d759beeaceb7efcaec308bf3262e5cb970debc9903473d5cb7ece1c28133e74d3c38f1deba591638bebdf0810adb8153bfdd5c42cbf539b71b5770613d70ef0008593d1869f40c48208df49148d354135235359974cd4c30a534e184dbac43534ceaf0948e861daea3ce361d22e5965a51b985d43c626535545573b565223af0e856d766442556db525bc135d43c3bc683ce3a506dc596634ec5e58e5cf298a3978e7105664e64a42dd91790bee166ce3c5ca143513c8e4176956b9d5d3565611125b6fe0e3be50cd59c5f804127d9681455166664e3ad05986554f6551141f3ac79de509dbde64e3b762ef41a6653be13119dcdb5d3e676cf7959d96ef09d474d79e285175e79eaa5f7e740e58d279065f7993ade55ea2df41d7df82d349f70e34d291144efe45a4f3dedbc4360461a79844d821e3dc8a0842c4918d285d7c064d24c31f534d34f3995b313373cad23948c68a148558a6dd1d396287ad0f2ca226080f1c41773dc528b2991ec53588ffa88e28b3cdeec924a1eccd8b3953c9988d3235c64d698583970c163988dea8835565c7d9959986bccb133cf38777c238e32b8cd135845fad0b34725bcc983683a422c4366399d216a593bbe4de958c5af8dfe46a671db79532b670e994550643793c94e38a669b9a768fa61a69c3901aa67dd78b4ca6c1041b52ae7d84087e6fc29d1587186dd78e110572b77e0a4f3507bdc71d6cddae22864d97963b7a35dac0e41b6d03b76f71a57811a2178ac82d8407852e02b75d46cb235412bd34dd04a7b8d8723eeb4ad8747a5130e5a557de58b30f0f0b49337fa9442873fd920818dbf03d358153e6590b20f8f65f9138732ef2c853084469a938e908469a5706da947c7995f5b75b60e3e48e0528f633bbb364f10ae8b331073eea856263ae504b5733b5c333d0f41f6a8b326cbf581a38e3de68897fe78e5ad63cf3be25c333641e7c3b3746604c1a34f8044eb6f8fa45dfe9bce3ac4b10f7b54033b07198778c6d11073ec0311add8477bc2610f7da06f1dc2b1cfceb2e30df2a96f3b0d645471b0b31d718c233b0d59dbdbb6338e0c864339ea990f41583610ac4da4228ea2083bde218f026dc46f1d5996104b42446c10d14113125c4d9ad5389ef8445b3c194a864654a2ce55318a3c519d165f64167b58a306cbd8873e72f1857d74461d5e190c3ae2418f32dc021f8841c73cf4310765a0ce1eb940c23df481a46620011cfab0d13e32b1863d662308e2b0873cf0110f26a0621f831c8305d9318e7d7c420cfb03129520338f66b000403cba8a3e74710909ce230e8ae8473bf611875be0cd1de3f8022efad10c30ee910dadb8fec740f411873bece31de4100229be678f4c88011ff2d88730edd11076041317fad0072de8a01c7020060c8f74922e6a708d2de9020cfe508e3e32f105f4c9c30cc1c017da1002c84c8cc11ee318473d4a214971f863135fd007d58856996a508d20d929087b56a836f660106bcfe19370c671b34309471c8e3ad544060211c7244687bcead5af92d13768242824c5fa9b481cf49223168b26177222b434e4136ef8642842c1224f3ae7139e8cc32b6fc98a3d7e810a5b88421afa10ca3c8c710a51f482784b89ca58d8a1bf68a08216b4b8873ddc21b079a46316a7988532e661177bf88216b3b8475f84b48faf16a317bc30060f17b90f6090a218bcc885fe30eab19d59dc0218c6a81ea288171874b8a31bf198873fa2310b5b28e31ebc4a8769f4610c5bac631fe5884834c2218dea5c63b253395d65f6510a4c5ec318f698470377698f6b14501cda320735ec618fcea5c38298a9863df6f138ce94631efa0baa7d2e03c9ca4433a81ce4a0390ea28f7ecca31c07194f05fd510f050e37a0e1b81967f8135006d68a38f6294e71aaa29f894c4966963994941e03338b200a2215494c457a85b78a6cb4a31efd6848a4d12006116e252545227e6b22ad9a6aeb711e1291e43ca43b1a81c58a8ae50956e051e01e25f547a13407cb1ae617882da946ea1052672cdad72db9e31ddf9b1897aa971b88c5a51d108b875cfe00e3d7ac00c9af92e10d4470438f3a61061de33954f18ae7a7fc1444bbf87307352c1133df984934b1418ecbfec91f0c6a575014854e43cc141aecd66a20e6194f39bc418d8664471a016d606504d20d067a071cd5491f7908120f145623cc0df4b13a1a1267fbb4b067583b1ad00c73a7f02e861dddd8e40e7b3511bc51e457c4f8617c41628d8f5823411f7d093492f5920695542634b989b47ee2219f3c2e7b68e9dc564a34b0a2d02fa967b198585ee4d7b1f4682c7469b53c7827c7daf485495732b18d70ad1b87f93a31609a75619444a525f146347f5aafc528d617b36969789bc10fced6a11d10bf4c34e359936df4a3ddf780303019ac92ccfafe8237dc98cd1de12108d7e6571c8334703e6b2b0f4051b89db5adcdcbd9a90677829b1d6a78073cb33a4f0c77869f7540ad86f299128af3166ca0fd86a2b879887c1e629177b40216b0d8c833ac71a0472f3a241eadef499a15c4972811263091494ea6f5936a780e7bd721b08762aabb2c0a65295ef94a281dbc1567c08377f428cbbfe6810fdcb2982ef208645cc0b254879918d82c22fa3c02ebf45e2f8c3f70c1873d2c56e12641cc4863a24b457c5341482a322b652248556a5430bfd06f35e0b3a0dcf59198e2c5b1326431936cfc9ae73f7dd734ae594cbb5ba5dd329b8a3cdff0f777f80d9e837c4367e9593ce375963ec283a3cbeae9867832c5fe9076bfec51a332dbad7478c3e800c65719bd21de3092e88d1cab58463489472084c406158ef631d9ef4a24a7386f68cb2755d9498620a795aa105f28b67e51f1ab8214bcc483e9bb4e6624587ba80ae3631fd378833fe6200c3e22e9eb4e9af5c274ddeb5e477dea1e93873df00186748436d77d71cc521ec3d77dd04218f778c73dbe39867bb05211fcc00f99a00cf5700ff720303f5318b7e10ee9500696a04a0b310fd2500b88000bccd4107b3210be21250ae81ae34126a1a10ede200d9c4119f21009ca3034f6400b354009fa84103af32af08642e0c1658f971ddf801d5f3679603679def01235481d904735f296293df36335441002011de87543fe89f232b762110df10e18d10c06b2200a22122061210e6212220721265152b9170e1ba23837b70d0316530496192fd2213b813055a1172ba2174b07168195620ef373108361fae049ae544be1b05649470dcd700c89d07d62611862c40b91500b8ea80f530789b4100974f009fb2016ed203b8ab00f56325bd4b009911009b3a00f8cc12602b1153cc40efb500b41b00ffd9009a3d30c60800d5e130ed2b408b4100cdcf73dfbb0085eb00fd3c119eb200fb9400afaa05ce48008a5200abcf03d00550b91f03dc78008ca7015ebf00db0580ba76006b3600fde000fcd600394200d33d80bf0a13b89300b79000cae112a1c140dc105663d7883e9118423f8fe8368d60df4c841f1468f64636f07011e6fb336352411d3f533f941118f1211b801190e794318210bcf900cf1055241d411b1b70d2d911229510d81735f98561310e20d3555531f222243c10df623237b411465d116625123bd060fab36162c522379817448670fc7a00c905841c67004cab00fc9140797e00f72c10f66600990a40d772055e6e00fb57004feb00ff0c004b8b00feb300facf40589c45ce4e60fc3500352451afbc002c0e00faf8807fb40112c926b865141e35006a85095b08894fec004cb4057dee00efb900b35703ac47854e9301efa600a74e09380f13f98c00a1e630fdad006a1450e5ed009f6d00deea00b53e07fc38004ccb034e3fed47ff6805dde800e88900c54b565fba633eaa00be5d40f4ba90e94658f8b270df2d883def00dd2a083fcf666f6981df1e68301f52ab2d21014056f64932ab2f21d548370b1f21bec604dd1b943bc12911a1772f65512c5a25fd8900d319172d9802189937b2f45221fb22d6e919ef6e03e44e116e1d39e2cd25a3729167311754e419f74a81be3b71ba13517a42116ff499ff3500fa1451afdd917fa800f4c700bbf747ef6b02bf2500fbb31a00ffa0e2a861b106318be727e6f8918775211a49143b912199a5425cfe10e0ee1187e415191018586e670ebe510ed101b65531de080a29c3137fb561c2ca379fba46fbcf91de1510ddfa19b90178fd8210dfed4208fd1d0a4d4a00cf0689bb6191e4a1a5cfba89bdfb08f3ac31d07315c32649cffe4813d4378e1b5102b4a7f0c9943bdb25e1181371797681df511d0e0111e357b0dd212282138df19922b852d3d510d4a919226929e847a936e31170d835b34c9a181d4165ab76b7304a086d1a102ca2290c8a805c85af350415c690bb51046966a7e101375f5804ce767626fc922042aa171510f36421a72e1aa7eb256f409ab4be2a10b6761b7ba243644a28ee1317e37a3de351afcc11f3f235de9931ed2c63d60033635b82960b6a43b280dd1400cbcc00989e0049dc0062ca0026c90043910055520032470024c30034b10084f70044ba00a4bda838bb729dfc1fe1d8fd729a5722a2f8336d226a30a654ddd155eae4171515271bb3211bb727106c2118bc668f4f537b897721852863f312d13922d83aa22174b9330090ff2a9a874e16b34f97e3429aa45679fbd76a9261b9f125a0ffa40a0acf5a02dcba9913aa095dab2144ab310e3aaf6690f62b5b2aa1a9f6f692341db6bae0a621c8a1b3cb45787726c7ea2b47e51375eb25735241930631a4b835db0220eb1216fe9501e1d841d3a986edc619ba5f00776500843e0023490012350023870021e00011f80011960011d40011550011a50011ed00118d0012d4002821b023a00022d80059c000cd4600cf21aafbcc00685600a9ff009be600c8cfb78072933d5f3a14afe8635c68128b7f661eff0a0f5908a3a942b01f20d16070bc4c0511bb7688f360d8d06121ea91247a44489437b3d016035d5214f41a81ceb9ea115bcb8c5a19b9a87963abc419baa352917c6bba9a1a5a99bbab2ab4ab3141a5ab2fab3e4b7bdf5b00faed9053c1006634089aaebbca5cb249b3a6bb2ba9f91700ba4e00d321626a978358e611c95e16dc3610efb6709d1600ce28066e791ac60eb1d0ca4a3dbb1355cd6419c821dc5f0076840043880053440047080032030032350010c40010cc0000eb00010500114e0012070b714f00028ec001490011060010f80b71580c21a600114a0012300079c500873e00434d0024800023aa0013340021a4002fe3910022980066cd009cda01dd2d3320eb95e7fe6578316888e1225ed35510e897a11f10aaf400cad7b9d1ee771724a5fd540bbf7457b10ab3864a838394145dc502224021a2ab2a945c192a151236ba11b8bba6a5431aa19f674c6cb6bbe667e962aa1fd79b4ea679f036a31bc16a1f5600c0caa4983a4079ce8bc4e2716169a2ba21aa1e410989c081889b1258ad1616302a2532278f8630ef680099274280d510e0d31c012f629d9431d40e1b5e1b0a4d4f066b6490dd140adc0c00bb3200a73f0012370010f5001757b011a00022060011c600422e0001dfc000c8001caec0028ecc1d8cc000b500118f0000820ce1ed0022d90cc1b4001175001734bfe01ec6c0116a0013830021ee0013470021d1002333004472008aee00dc69a0e0dd990c7b124c781a13a1471a73ba285c67a090b0d1e17728f16522375441722218d730debc0d11f42452ef9142f19bc6db19573b1956db1744af52f71d114266b25566218772817256bb2ea27a1aada9fd85b412cbb2b7384d33a3bb411ca2289a11bf5a00ccce00f7b4007fd60d4b0490611fa08b8800ff7d00c6d700dfd900f4c800d44c90efc90076cc91bf6400e5f100af6c00f888007a41811fa600664a00ffb300c61803ed5e30596e00ff7900d31800bcc0433e7a133d5b1a5d821cb33040e2c33c05c465876400320f00119a0b71e90018ffd0017e000edacc2d6fe5c000ba0c28fcdc10c40d917c00071ebd99ffd011f80cd0bb0001eecc11fbc0007d0c1aacd0008f0d90fe000965ddb15e0b714e0001030c22440032350c43480099c300cd4b0130b439fe5167ff2908ab9911ba99851bb429df51002500007add07a070272d8595f5d28212647126b7c0d2bf7382dd5193d213e2202162759d2e213154321b24e511bf4fd6a48e118ef5023b68aaa986cbca5fbbc431b75fd49bd62b1aaa48bc8ffbd829b500b8940646d0962ee900b711007b5802895ba0f9d400779800a266d0c8840077a800c53954caf4007899008639008bc8028baa00777700bf3400b77d00862a30fc4f00889004dd810c0f2711e3aa88490a73efe1cb465bca90c7440034320021710021840019bfdcd0b60c317c0cee56acdaa9ddaae8db7afcd00cc8cb7f0bc000500ce9badc2276ce5278ce50b8000078000b12de66caedabbbd0019e0022220022590068b300325ec0019f0db4c4008a9500ca7100d2ce31aeb0518a0cb43ae6a18ae5a0fece0e8bb02e9f2a00122b0045950056f600a5ffcba1ef50cc5d00c1b77c624250dcd4252c8b2444bf4212d2522e91d15c4b7de6901dfa88674c0c37c53114a91416ebbdac9f4c967a22aa0277baa2eeb74ee90c8465dc88238aaaf8a1b56d2eb71b1dc5833ab306a27c0211c9b51bf4883281934cb7203379a77a44403b65e9b1de9200dc6a00c23580cb690fe086bf00662700233d00338a0019f0dcfd8bce5b18de56bbee66a9eda6a0ece2b9ce6575ec31e8001245c0116300348e0021f20021d30e51d30022090011d60db56bee61560cd945db721a0011d00021a4001807b0117d0011de001cfbc047e70044d1004387004388c0434e007af400d516c62bcc22bbef2e88661012750022a500424500447e0066fd0091c650a8460085af0067b60088650087050052aa0039d80096f80057e100abb601237a121e2c00d9ae621e6fd38f63373532123cca72232b2167d1582883a1a19ba2413cabca77a25bb61c8cfebbce50718f8a91b8144a08114e01003624a727ee3e7eb2abaf8a4516cb73aba2afa324f1cb050fe631ade9570287a6fc8090e39d82950e38c611b0da4400369b00765b0066ca0061da0014df00433b00027f0052a80cd0e80001f8c006c9efbe5ecda0760d9969df1b0bd001730dbd7acdaf8eeefa8fdefe02cdb1eacd90bf0c2259f01debcccdc4c0110a0028640048ead023400dc5a000caee00b124e032e60044c80033400079db00872f009c580dc11caf390ce5e2ab6011c90011e10c14b400443800553a0020091e2848e3e6f3819825261c9120d5054b8d042a88f1b419c9e5ddbc6eddab5751ad3a5bb966edbb66aca76fd2a56cdd83563d1a4492b974e1d3a75eaccc13337939dba79ea76aa93e7539d3b77f3881e75874e9e3b79f2ccc963c754fede3caa55e741a5fa6e2ad57a4debcdab67af6ad377f3b436e57ab5a9bc7a65b5729557366ed3a354974625ba342f52b474dbfd6d07ce9c3b73ecd699fb8bd81c6277e3bab55b6cae1b3b73e0be790397b932386fe2bc850b87d95b65d0a1a579f316ad579c3a25a000817082c389297e448d0236ac4d070a1b305c008ee1f7050c28203870b000418107173220a740e1c18205144c746080a1020304070e285f70a00003ea07102020bf20b98307e4db7347a09ec17ce41a3c6ce8c0a148942733ee9320a184293ee8c005e13208010438d848421563d2018c1da8d8a9871d0b2d4ca001072c2862893a8a80600529b430a20e2d6878a30f3eb220420711fe2ac800041dfc20c4903dfa18849869360aa9c76baa91a61a71a021c6174e1829d21860aaf1a525d06492499d75bc31a6ca6a6842a79cc5d479471d78eaaa6b2baad869e79d76a492509e76d25c4bc2aeb6eaca2abbda518bacbedad48a1db9da7ae71d37d9322b2e3ddd896ac23507b3d09d322324944cc02013471cc4c85c2cb0c010e30c9cc034cb2c53ce50fb1435d4be09cd9b6ebaf9269a62e6d8e10b419a486208348888c2850a2af86d04104090ee810a28708001e828c8e001631fa0a082609503963d632f7080020b768daf3cf9c0430f5bf2be139602eace730001f6166060031e4a70218421b0c0a28d233c80228311d67042860b42e8c083fe224868c2853e3091c3091e9a78a518c4e2a9b0420beba9e7072c0e81038e3aa698c2082d0429a4903ed2286288214eb0205ae9280061843a08f1a30f461cf185c769a2d9e6a372542ac6186c54f9a410458a198612579054261a63aab9469a68c241271c6b18e1049562a231a71c63a499e9a899ac9a0aada2b4ae53ceb5bc024bcc0bf1dc2a2ab3cceaf32caf2c4cdbab3ed912d4ecb7ed6c74cd3ec97414b24405832cb24a2fed26b376446d2770cd2a0b2c70503fe3ec9bcbbc713c1cc7952906943fd0408514374e4802840c9435963ef62a2097021d1aa84e58d593238f3be518a0a075d831606fbe073ab81d02068a9d6f3e72c91b97dcf8be1357febd918d95ae8e38b04316020b2e00c103029545ce020f6e000204da77ef20030a3020a183264c81a41663be29932d0a435ec3903e9ee8c39043d2a8a30e4308a9a38f254e30a204ef917340074660874e18421095a8c42fb0c1a3744c6317d2f8c846acf10c5508c211bfd8c62f42610b62100334c650063584848e8f14e311356b0935d6e10e9f14a626ec90d3d9d46295b75c651e62c9ca56c464c3abbc232f682b0b67ce048e7830854ceee81312cbd2c3777c454e6923caddd0169576a88928674acc5f14b51877744a7099c10c623685194d8183525df4e2a72cf30d71908a54a15186301ef10951404218b440c31a8c308436cc80063a7840b09053fe2dea042b3dad73400540c0826219123dad3b80ec64871cd819f27617e88020b9a3ba0518cb7a1720cf79a8c3800ee0aa021ac880f72e103b1428e1011b8000751600011e90e00381bc55b42e802c5f5140054c00811154910a5aecc21ae6d04a85de01bb29400c0b7d38841fde800528408108703844084840031578c002c08200073080854e74c214a608c52f76c4c06d4c636a4453c636aeb10b35388217c5708429d45992a1a1c39f5e4a47354a410a6abcc418be88863250230d73acf0286859a254e232967980832945b94a5b0295b58da2e52a89d29b380483183f11052f6ad38a9fd8565293ae29316c539460140518c56c2a32221562e1fe9299fec7742a70dff02219bb212a51818319e20807364605396f284314a23805207a91083bac01046830c41c42d0bb6f75b590c2a2247880b72c06f82a5c842c6b599bd301edd0475914d0c0032c803aef9ce791cdf1000692e501683d40041aea6b5931e0016fc5c70119f8c02a018881127ce0571d60c1052ad09c0c60c10d86f0053574418a4cec81149f30c664d8b6843ea860060fab5f168a00072340010e45f815043a40cde7cce7564a30842138c1897c42639debd8464d44c2125528a31ad320461b88318a47a86216c4a88639d0618e8fe4241d330bc41f8226aa70446626dff5c90ff542141edae32b73d9da45ab92442312a5a9c5a819358a218a44fe50c214b4a0c4223e418c687c868b78b2db84f0b2a6c0f9704d12eadba3186318c88ce3525ddca9a6705a19c4103534a5fad4652c132ad158261c41139a32bec10b549c22146a28d0ad8c25c860a12790b08b4e074a092c0644b290c9898f5aadd71e59660b76b79b1eae4a89800764c00210680f7a1c20db5de66b042a16d6afd8333a19770f9389958e20dbc39e0eacd2032e201006408049f02541061df84008ea908b5c58c31b166a4a3c385082138c200b5848d134eda7053bc0410a0bc1731faaa082273c410b4f38c11308810a55784215bee51137c42112e01acd18a9b0c6340cc1063f00c31ae1b84638ca31b3d094e31ad430c61c02610c6b50fe2326e190863178e10b23052214a6288637d25198e9b250a24d29140e6738438faa851de830c61ef81a9d0a281659149882229c200734ec01138fe0842f4cf597af118a50e83069a530838e0bb9343290d9226436f59775744a1c97ea546832532a6f48835422ed8c673ee3b8372a4319bc488414eca0861bd0a0056ff0031268908437e4353a0ec0c0285f7c81c402473a3f7ea4efc6651ef3a05576b224572763079d0b6840387a056bb41e701efaa8a7031690258c9b4d9fd819ef7614f031f034ce8013ac7cc515e8000e92f005253c81094938c21a42518cc9b4030558c8421f0a81053faa96085800d90cac69842938a70f4ec0c212081b480a5cfdfe444a08421d8ccb91e072431d31db06300a618c4224010d8568037fdec0a02430c10d4f40431adaf00437b4210d511882129c808628fc91082d68021192b006411c1d095168c32780410de96e4929325cca54980296b02cc51cd120852f8a318b5f30620638f0c0ad48a003fee860571568810b709083293c410d8d38052fa2018e718c033383e354bda3e18b52fc0114c5f84637d071a62b46c5428071c761deadb77688b4a789fb62a94ec39970801154e687b53168218720b0950634c024c52fe001de5c60f6934d0eb7aa13f2904fd2accddea5e42097df109d1cf31ddfc9b1df510fd609974ec2240d3840dbf116e5a8960348166b29254dfa9d1c9bfe32b52aab5f4916e7903fc80a812460033540824a389abfe0ba2c58022da08013580222c802f7c10238901f41e8831dac831421042820010f38011cf8a325708349f08334100462b8066590868d00896b988657e0031c40821c880239f89028200224488323980123700225888235a095fc4903349801179082f7338223c8a3594981cbdb0124d88142e38121f0c2c25b833f908324700250f80560f0062e21afa840877518873f209029783ef8ba343f980217a0813548034f400548908213889e16c800f1c18155b280511c42172082271802109081f723900ef8a30c68813460021de84335a00470cb0b3db91b759394323187edab0cc3110cf37b8984fe0a1a7fab9284fa869758c67f4305693005253002ffd000123081da618055f201ab9a2cda419e5f5140e5f80eaf1217632117165b969833a442ea3161f19ede11160b688f9a9b0f94a38002998eaf6ab96ce13fea28000ad447e8408ed07900bdba1d342381550a814fcc000f68012000022cd0022dd01f2320844380a637a8114f28842228a51268821118c55db98e138082f631a754788546188495d89157d0116870844e488536d4011740833e608234588223d88104d18116c8012cc8491a50022c00021d900236780384ab3c1d38810fb801221802227002a41b022330b81c408226400224283a36700431c8000cd08142308540480339f8045e6884fe16a0012470816d728136400562380553f0855f78022c28821c800345e0045bf8855968827cc1150c8811dba3bf5d612b0cd8bd1b6001cf79cce8b8811150823668034e2886cc2a865da8855d8886c7983e0989a92ba229c018a9c5f0066aa0031090b16281c528d803250081cb5b0439980334400312208293230111600fe9501613288225f396b06a39e490ac407231c98a0e48fa8e037000fd23b264210f83c4a4118096da91250ad8250a4c0eb2eb2b0d28a5d89b2cc1da0e8d1b4895430eeaf89e666916d8d9a5c94216c97280558a0ebdea801908822578827c918100e08029388144dbc169d202fe29810d39813ed0821030010fb8264230021528fe02f3e4001c68022d70043f58034f9006df828654f80562500527d0810f288110180122500337a8820ca0c413a0c41d80cb136881d91a020f804d1798011dd081c44b900e100113c881a253821c1801dd33021cd0bd3408ca19f89c0fb09518a30038a00442688219108354bc011cb08328608254300662f84c5a50055538855df0855998b55fb0831628011c5083508c0e0dd000e7f815f3b49e5d695210b895bdc2171a300560f885bc84043fe04d2628834e308666280665e09bec238cbe0907913287d230864f680141fd80b2fc0d19bb8055bc011770813590033b3c821c10c591011665e9a4f608a4f61440ef6439f8f0b142028eb2ba47e1988ef8feb82be0e0b10444a403448e5fa10fdf510fbd0acf951b25618180e3488fef044f68998fee69010f50ab07f001376083103800631954e2d80116201010c08226908125a8020a000001e8380dd8010f20011d5502384083d72a822600827bc502266002417b0238a88235780337c8824040b841a80463da11267903256c8203958219688124c80137888277c9170f188212881e0f08bb21f5cd2118811998811400811620021a900222889e0e18021c9001874c1012400227b0834130844560822e44023f72810c6001e9100117280124c08120c80194250244b585622006615012d5f3055e98855d28865450034198034060044148843f180446308546f883fe24980235880225508235c82e40b083badd03b54c032590030d22855440031aa80122d801369883416804b6e422e20b07135283365803c2d54d34a03fc9ba95f92b990f3038e1208e5ff1001c7883b8ac4b3f788226f09ee85831640120f7e816d641a4e019c78e8bb91ab32b907b9d737c8f046c3669b9a5f530dd54b2cff600ba5f1945f5780f4a9ab27304a0e40da4226b16958b8e4542330f608152fa001c008122f80223d540062880748c000b10165f19c20f880e66ab001da802f364024220844228a74ac0822730048a700326988251780663d8054c308437a01736e8034728040fa0818889820c200eedf00029a80341f00307760241d88327b8fe8119f09c92891e1028811cd8bd19200119018119d8811b00810fd8d6111882369c811be0010d98960f881e1768810f304fe86952120801411c855000065fd8850806865c608423500550488345100337d8834790034618843f5c0334700352a0044668033ba084463084424885dd320550788441080546a08447088554d88542c8011ac000f304012580820f10811976812850033450832738823240023460831c883d5f592510ec150c90e12adb1517988225354531e8012548c86ed54f5f798f8b6bb97f14c0ef60dd05440f636d47d111a4f92cde50ba16069cac0d00820f20c06e29160a108117d3b806004fde70a4ef7c240a48ac5fa9dc41ed1ef8fe9b2c15eb1e08049de908240008806f192b08b815d5d9b25b110112c0012280021ca0883ec09ff93d82695a833ef0834a308412c05812d8978513ba37700494711fc06b033f68433690822348823460db34200125608321f08f13288112581722d0023920d312d0150d2801a3248116c0815f86c597d5bd1cc0d8111881c9f49c1956e02650024660b459b0855da08559b3055e48855398055440855e603e3750023778044a50bd5e70535a40855de08547d861fb4205330e055408854610055a488550780445480440c01731fb9c2e1b811698811ce060b04c8228f00339708319c01dd3ed155fb9155d0e5e210301d8938e52ba808ca5813123c815734ffefbec9640122bf0601daf5addf78cdd509a8f471ac82dabe5df192bf9e81d58063ac66a01d2e9a42a935506982c0e68011a8347218b16650ddf64a9800d381e9a13a46633160108000298dd5b0e1d6f69c812b03f1010013b588537d08110c002f78103de32043840e724f4c127484a3c83831c20822640033b00bc40f00312b8bb3e44034108043698b6b37584417803b55483291898de6b01da6b0281be43251001c756b1efa9803f4ad988de53c594310f108327108e1398830c0084124b8559e885adcd055b486f8d26855dc8853fb8055ae3053f088135008546600439f80239c8e95fe88447e804f6668340100550b00560b0855918851d1e855db0fe852440330c40d72aeb32197b51c79a01343801bd4adeea98c75d32ebc9a2b1c3122017608112386cf6d0802728031c008312b0ebb27a397e34ac60d9b2430a3942da401c7b9dbc9e6b78d439e50cc7685dd64a0aa00c5c00caee3264996b225b00fadb8eafd26baee2255a658f557a31e18939f4a0800008004d7616e25516eda0000fd081d71b42fac1c12788157649112c48033748831d90813ea8031248831a3184a87e8339a88323b003419083467004dd46b81e4c03c1338436b83592e6844230f445688495060551408551808440a0845018630e6f8e114082f011e854e280a34b33fa83e830a3dc812001aa4e0313f5056040d3f4b6852ac9da5efe380593ae19f8020654680448a0844ad0e3a6d9855d98054af88406b78554b0055bc80560e0855ee085679fb554288311784c009c3f17d859857301b622d7d31dd458dd25e22c5ff2241616f051558e1121131f2610848fc1bf06d000256356b6161d27cff295531d2167d6d6e9727e24977c9cb2b012c0df31a4dea1a4b212f10ab00013d88060d9001c2825db6d0eeaf944cd05964e4acf5122def6d880dda531f5288fcbc677ae3224c7c6800e288229200256208657e8031328e02720021200822468022c48023770833e28202cc8d737c88235a03a2890822480e63a70820bd8801120811849967461023ff83b36608335a8832758834570023d3484fe4760843b908337b08336b8031ab81552bd9596c71519b0cd0bd076edd065c9ca001c100157cc810e3082363d7663288653f0856330691f4e854f68835b17fc62e885cea485f99e755f58700827055240058dee855bf8055bf88450d87560f0e95d28052720e4acbe000b804b55a66cf034dfe575165c7ab6e13c7dc5fa95b5ea325c117134509723204210d83258667861c1a424575e4a12a55062c096cbf7945b8f035c72c842395c29241e1ba5d1798f1e4fa44ffc80c8128e7b84acc5cef8dfc8324e2aab73dceb68a56b630e001e97a548529d12c01df3d4001dd0483868823780832518812430022200082544d618ea6448501b419cd6d479f364cdfe91357066442993064b142c49b088e0406206060c20a2b87192c451213b9890c8f1c52bd4a93fa65c8562c48953274e43283ce0f9a10584900f666ca8d00104880b143064a0b0b402850b1b5a70a81064d4ae62be7c9dda95b518ad53b6e4a0994389983263c78a8105560c18af62c468cd421528078f35a44ef122c6cb5657547c4389a295ca8f870e1d3c6400310244070c1d78f67cf0c0010506969d52beece03303d00e942a855ae14205a3151e28b59cfa8151c515b2fc416387861225338e5e5800da7268d8a11730f05dbcb80306ca971f4780803874070f8a2f40a01cc181eace9f6f57ee3bc309101f3213074d5db903df9fd75f769a3a79f0e9fed293974fcf7d017efccf91270f40204001d839579d760728b75907453c71421269f0f1c61b590ca1c41234440147168e78624a217e68e44414451041030d6fb4a1d10c3b5448041127cc0002540f607081052010d1871f6a44f1841d75f090038b3dc8610a2983f851c7132158265d54905da058648c7dd0c1071e801082075366d0c1051a7440c4111cd0e0092fbb1053cc29aab8650c2d8fb09144136dd8810a5b6b6ae5522ec518330b24a7e482c92e7bd222d82cb6ecd28b30bbf862cc27812482c38c1524e6c18c18388599749779c6d37a3c85a61905c97196410516904a0154a89db6da66177c80810c1958c013058b7590810b4160c14483689cfeb080a9042e00d5719f0ec71c7ee88526dda7966dd65e07f0218b1e70dec1272d7dc4ed67dc74507920dc74c8190b9f75f931576e7efa2d1b40000b1c606075070c081d7110902045081988b08108331491441d708c30c41a6f4871ab710c50404213389440b0204fa4f1c4208720f1041634e82042059f79c6c00523109103166fecc189204cf450861b6d9491c16f9185ca5a66516530e30520e07014521db8404207b1d9acd89615945089315c3512c827a87cf24828a8a4c2c9136294f18931c69cf2c41d2ef1d28ba2d1403142254d68004830bf3462e631bd94d98b4bbef4d28b2da2ecc002085672b91a66f16dca64a8f339355da8a8c2a6aa693dfe85e00211493ca1460b4f30e2061b7fb811c71c83ccc1c61e8cf8c186186e48cc06092534a6c4171c2c40b012d132071f71c8267bddeb0c58b75c7dfa3d47dfb2993ac0010b8ca5471c6797a1b69e66f3d977dcccc9f5444179b75f679c0509c43baf03000840c0010514d07db9fb2d8b818a279440c10e50c0b106165a14a1c31255686142b9a1956aa5117024e1040d3b40e8849c8c002912900054a3e980c27ed28327e0200a6850820e6e108540c8c909384055533833b3d45ce001b221011370d082168cc00590c9000117c3945a79c00369b0431b18418853a4e2178ae2c52c48418a5d30820d7350c4298ca1a7ace94918c7289431de400246d4a1fe0377d885328ea12897ec8217c2f81a2f5c728a4788e10f7250c31f9260a9c1f144041af00009ca708229a801097e80a023a4300517b087018b51c21322f640452462108d20c2075c3082191c41093460820e3050011e34410d6838c208488084d095610d5f50422002718735b420074d20e00ed4e0493c1c01040ec8c0034e20830a7cea33f97180976616b807446008382095052ce0000b40c0012dd84009403083257ce103a64bcc10a4200622b03276a1894ae034838103453339e6810e77bc831efc58735bd8c44f000400a077ed4e3bc659c003489004436881414430c21280b084218ce0044e90021a8c001cccf0240325c8271088a083272cc109fe75700213b0308334bca1116bd0e5527000048551c00533784c6216d7042c604106168dcc072e40d125adca5916c8810814a348d670e009373042de3c90cb0a70a00548594326d9308847dc2214b30894293ee18b52e80009a0304634b22644610c8a14b330861d3a60074078400da120c6116dd18b5ca02214a408451b7480862f808004fdb3901ce640083ffc81108df8431bfc200736c8c10d6b88c320dac084193c8e0e6bd041093aa0010ad0400c29e04112ca80063534410c62604307482006353c810d48008122576301b3b2010d3918a412d8e0874180c0044ab0651abef0041d24610432804c08b2300741e0a1ae7678021a0491863588c1094ffe68c31cd6808684c8210d69380216fee004254084064e48031a80d0021284a0a8434883139af08124a0810741c0c10d98d0862a0c970d6d68031aa21005350ce102d9a54112921004ef24abbee9e22603e0559cdbe5c79bb803000002404edbe9aebec9218121e090812160a1106f70021cb0708214d0000e6f008205a67319cd5480065818421288905e38e84fc23978031640948625e020072718c1051c50040b9c80061d280109a63b839d658001a729dc813053994b59d303afdd010906fb000b8c2005501181073486591d34f00b81a0041a16c188539c8216b4d8c52932410a54cc62168b6a0633b2b616adf46216b428452070c0084a7ca2cba800fec65051218a47dca10997a21505b6841a12f0c00317a0c117484403bc518906bc45820758808111b401126848c20d6620061edc606433e0b4074a308249c6770d80f04322328904178801096500441b54db5d10d0400a6b80f4097860420f8c80064f70c345230b840fe4c00491c18187d740840bb42036cc3672133436032059040d4868c214049b01168c60041ff0f66922ad8424c840096a98181276d00227b841061de8750e5c708427d0a0932d3061076a84c00321a73a073a8003d03520dbe16e7af70df07fb2d3df78d1d7015f3ac1c63ce0074708a20f5a9801119a90052ca840b01e44256666a0821ae3c0032d48021c9a3003198c20095168c2fe748549022340a8116fd852de6a358320ccc003a89acce052639aa574e0067c8b8a625cd002223ce1ddb74aca696c59a5270c2135341004231e11883fd88218bd80040d8e1005b3d260ac8028465289288a3684622bbeb0052a1a6187b034cd50a998c52738a10616ac47328cf1600790a0042410a1128a1804107ca6811b2821076ef80323146107398c02159500041a1a718739b8810824d0014e1b41094824420e9078c42328f108485082138048430b7c368316f0fd02b832822375e38229d0018094a581e065f08440b841093d488218f0820316b460816888967a9423194b1127036278421daad002b19621071d649666c25f811995800944180113fede90049f4f8595a111090e5eab99d9a5c783fb2510edcc19f0ec38475edbb99ec2258bf6f8477678d81034c02b21c7032c588461011030c10990401164171160411f08c28749010dbcd8fb78000ecc4012b0961a2401131801898cc0ad384ba9ecc0825c000e34c16969800b7c98068c80080c07a6504b4f60c007740ca6b04606d85b0b79802081c008751b086440c86009a95c40ce00422a988229ccc25b70c527c8407ca9022360821ac8c1277c19dc3c4222fcc129ec414bf0422eec022994c2293c4d619c0226e4c813e400944c9f226dc920cc42eb9d0228c0d064c90125a8822880c22734821c409e1c004223600229d002292842ea3582232802fe28e8d0eaa95e2980422810092880022a34d51fe0c0ab1c45d83dc113989c0e7c807321c111cc000d8c80070401bd81800c5245078440ecf14407e4008c5c8a65c458f22cc767449668395a15841f7f6893726816953cc10660c67bc4ceee74400460c1147c000450c77350c073f89f811c87ee2040806cc7bbb88b39f9d702f8530988801100d662e880136041849d000648c11330c12791ccc861411318c1ccc9401ac0411f64411a689c139c8007305811e4801188800ce040153c011cbc180db8011c7c9e3acd80060c810e78d2423d81130cc10cac4664b0ca7b7c46e0684048f11305c8400ef4400e44590be8cd0ce00d0911e162449a22f95c6988fe0012fc412870c22994022d884221b800bb8141213c410da4011b24422a9c022988d71dfcc11750c2a10843d6c04d16fd052a8042204c010fcc9e052446d141069760412f482529400220fc0126d419a2f0c2279ec22c804222f841e47d022674d929b4d92cb4992d78992dd4c52778551bb60928146615d9822d7cc10ed4002e769229f25ade308c0b28c6acb54015e80066614009408a06688074588018e840b84c86039c8648494b2a61811c3002232c82215a5330ce8ec290c010a8818d45c1092c8ba75847a8444121b4811c70021a0023878d1f0d60d674dc1774bacb73a44b7714087e4040a06d491160010a68008b388008980005e800106cc08dfe61c009781ecc78c0b59d0004b4940a4041e96864de70c009945cb44080ce640120b5001e9d8012348114000d0e24411b10010e4c521d100212248114f8960b28811bd8c15ab5c1b4359bb2b046d078c0a72d46669a9ccf004dde60406288002abdc6472861ad00822150ded6cd0123ec0112200116e400127c006ee551d6cd41071ca21dc0cda218432f00c32d7885d3685d1b20012c8e80647009947c000bd4c115b919607c59a1d882dccc02e4cdc22930021d3481e8918228fc5415ed425dd0c52e3c822d7c021b348225d49926dae52d70292dd80230308220b5c00ec8400b71e451e04b8731010910e11ad0db0cdc4c0584146c88401330811c88c1fe07cc0a97808afdacc76744811fd8c11f38821dccc10394c7a5b49274bc012744810eb49c09544bb128cc120cc21f044225c4416614077050c094748c73d866743a93b960137d21002f35c00eeccbac54800658881178c4104c810ab88a62a0910b7cc0090cc144b1522a45801d69000478200744d609d8e882644013600c0d54c0a142054a3e40110cc1107cc0e7b900af05cd930c416686c007049c6fc0867b440a0f865410bac01324c11048260d6c000f1ca1cfac012f4686a5640aaa90801fa4412098d923d8815ce1001330810820452775021aece60db84120b0012ac08d31b8853068450e7d826c2ac21fac4112d04062209b957c9bc818833200fe035c14c32e785916cd422dd802254442272cc21cf0001a00a528c4e527d8421699a92f140325584299fd412260991b9c02259c029981190d64862fc98cab6cdf1700d208949c4d7dc00d1050add1800b04da08b0c06b71802025c11b88c16360814b5540037c2a81ed070dec412000c223300203e5400eec585328cb4a5180080c0108e4c5aa7d806738c008a824262d422704421060c07aa013c16107ee4ce7aff6d7bc4c27bd6c8b056c000770408659809874801148e413a880090e011438c10f34400690e7091801147040037c491518c11134c109040d11a4c11440c003984013248112944005b45c0b7c6a0be99206cc00095887747c00cc3c800cfece8012e0800a208505a8260558007a3e411394801376c69380dc36c94734d98fb3648aa6246a08405e207c115cce421bf89ad54c1b0b88c12324e90c0c4119548e1ff0429dbad9d328c221a601168e0809388662a06064280608e4406116a695c28d56260d29c84122a4b0e83c0173595b1280822f1cca2cf04223a8c11a800231508212d88100ff0125348253f9c22fa002122c89c2c86cc80c410b84400e04416ee0d610440b6b38000690404869066a806605b4c0c49c0694b8200fec1bb6108142a8c2233802a47110e55a8b90bd8907ac860c34c18c5c066350c008e840bd49811fa0c114d000cc08a373e4177ef89fb60c48fffd1f75c64bb2ec07fe0abd8f0ac8ec069cd11b6bc0479840046cc006b640419d1f110cc1c5b1d1465581f9b600ec96400512013e464115a840308180411981b65ac0058840104c811ff0011618810be8800e344509e8c00ec46b590081068855b852c046a2c17325410b18010f74cc493a8f652cc0067cc1ac1ec886e9eb533c800bb8412330c29866dd27b00296b5411db48085bc25e9294228fcf02132010f64700e884128c8811d3842bc99100b6800663d491300ca2038012cba802a98e90d7d0dcef28215f1c22dc8c10818411058140b14d51af80124d4301bd0811fa442eaa9a928b440cf89417725ad2fd04220808222e8c060c9200dd48121052c082441296549085cfe801f1081a87c000fe8407a0ccf7e74400b30810b0cc117b0000d94c0bdb152e144066c3c812154c21f94425a11f58cca80f3848a729c80217c011368210d7cc0c676d0e03cc006e840102401ee8d9bc6c45bcde887ff89630114c8ffdd47af7287213300f72c00089c40476470f43e01149880ac58c0cf1401eba6670890001614c10590c01240800c0c41604d2016a44112dc62e308e81ba40160ed8f0e5080c9d1800c944009f40fc7ccc003200007e8800a3c23e8664006f886ed69000fec488332d2099ca853d4d4acd0cac778cc6a72066ab4476a6446d0448168a1422e44015cc2a129a8422e3c81d2cd0012a05e28a40223c8411bb0c117384220fe94456db44120084213a441e308d01198440e54c009b0a0234c2223a40261a0416ecd8111ac0dd79a82a1800223048211a8d608184e4f6840f3e5000d00c21a581689c4de07721b1218a76f6d59972ec21d987753c4880890406a2f000a90001bb801cc484a0b8804e5bad2fa42c0b07840082992974cc6b651c96af886056cc4170c4c13589609e080ce2081923c2ff440802040c1300a764dd38a135e8b7c60460788c0ac10dc2b0d32810888b000e039daf57e790f3742c009f8c009a4d2066c400434c0c3b82e04bca7f376c97488e3013440087ceb1a548130150110e880f084401fefd20370800c7cdeb021e403888008a00a68e7c01ac8c00c38c1fe0c58c0698840c162064222010ee0400d1093287f40273bc1f9ada24df9adaaaa761178c06758400f506e0584c006a00a5440c00c5002200c8270c9667aa39e20fcc1224841192cc21194801e930225b4811adcc11ed8011bac811b38921a0cae1da8d7251d012024621ad43481839e5e31822df84119d80142c9f4c5b41a0f94c11378570fb87220388106f4840e34816280750f98001cec088894c11424c228500227e9c01744411ae4c0baa14113acc11f44812bea801b1c2d08f4c4f09c4020d08075dccc0e78ee86e5474fe40caef00011b8620bb54009780010dcc0885f800c1001088c7610d21a0d64f05e8f500b7c3c67272409d45ff36886dfcefe8ef420cff084c6745a0722e7d7ff2987816007feed0e02000802d0006936c07504083a41c08014000390001040c13c15411370000264400350400888c91294401564010d34418560ac845d06c066414f4c011a543c126cc0032081b2ad4116acd68ee500091cc12dbd52b4cc073f5b80294701e135ce0e5400093cc117a1407bac87c308484d2d4003d4d1b538c0062c821f44c11e8c55212c650734c122b8c11704810e90001164c00700c11bd0000ebc50842fad224c21240cc213743218c1c143f80125ecc0b318ab93b6c014204127256e12f4800bb080a635c14eeb801828c14c06c11af4402b26684d4a06648487ecf20008006ca2295dde340e13fef88c293d80af1dc1a95e571284002da63c52f4da13484110281f0fd0c0a759881bc8951fecc1a909c21a18a70fb5c1f5f18011c455220602400c4aa36304850b2180547050412185050e183078b82022030a0f1c505c806041478e1c171c40f071e4488a070e74f4584024ca922f456edc58720100000216e830a26388112c5848804042c3c14888141050a0c060c38e0f434e88d071a00082044a45881852e649860d2d2a3c60702143091a1638903801828358860f3274981125898e8538de1899c1e0c1870e1b3a5c40d10203030d14308068f2e402850a4b3db840b28688830b479820c901b163448a7c315c7860418383070b38b818b1e3090f0a1efe3424b060a20308134dec8c2831a242861c207238a2f4a5458b286a8ed429a3444d2046473c5cb820a38998273972a40944a44d9b3482d4204133a545e00a3754bb51a3c4c5871c6890284192a44d99356ee60072d306cf1e418a120944913f14b1e30f4616a18412461869440e40ec98a30e35d668430c31dc700310fdfc60a49241e45043bd07e5b00342390401c4b940f668830d35d06022071a8600238d288eb04f091e8678228a35f62004c541fc6083061168a0a183b01e683223068e920801cf3c1389238924524923064cbab22294c004d3a32b113880cb915ada88803503102000965c72408490527a49840d3220018b81d2a8a203071c70c184fe0492c2a0000e86c84185224ef08c238c286a8001083c98620a2268d0a0020d2c4800021aa4f8c18207649822041c1ea020501e24bdd234d33e30c18940fc10e40d1318608884103cc0410d2c6880402c2e1fc2724b065640a392220c8a6e840b2a182103072c68c103081e8bce01263ef1a185102e00818728d0c0e18326d448a4103fda78a38d35e4a8304337ec60a34439e6704391461479e4114a1e69e4914f28010514481e0185113bee68518e3f00f9c38f410e5c9091052101b89144484c3140451a4c449102bf88820e34acbbc30d362a6c430d36f6d8838d36e48843bb452496f98932d078828d34be40a38d4012b1e3dd3290e84106177290e1fe861e63cc218af99028c3092478f853ac549b8cc84ccf16580a2492402276a39652429b25040810a9aa3ac33469ed324342b3aa926c729380370be89ba5b04d9369a4becbf472530d22c8005a0728b04004066648c2893e94384b030f4ea0a102064050220917769521048722d8203ace81b02023073480b283879e548971402948c2761a8840030d233e682189207230e40818d5f8a2c1359870e169ecda70c2893476f882a80a3c9896718c3600e1af19a648a105eefa0064904a02712310880704c4df05137184e84136fce30f39daf8439007896604125266a1e51453fc370b5bd00215b4a0452af8774056808212fd1a052944410a098a821214f4d7fe2310f6094c00ec118ca815c81831880031e20f734803cd1231073494e10b340bc41c8226879ef1006b39e0c10e5ae0021ee400074810030fd220872848413e3b6ac10c9ad01e121c91042598010da750b924f4800920f0cb123b200213d040061dc0001074d002110ccb58c58add4b22f2912c8d0925336963e1ba24a505bc2d4c3141800a72208513c08d220e4840044e53b69240a9021bb0c0481850160b5000088e69c1061070822c90c0031500c1149ab001116cca2015a0c806baa8010d906549b40b01114e00110440200538208427bea084c358000318404c0f5da0843698100d69f083f30a71be97a5c10947988f128680042cb42049394c520efe90e04334ccc17e82284423f6200714dd210d6b88c217e83507780542458c00c527fc250a4e600214a120c52842f1097752629da118050521c1884f44f014b540852d7a018c63f4cf16bba0852f66b18b5394e29d1134c5291a81cf8ba1f313f9f497fe20a108a2fda17e1cb34322f6e008460808628090438b9e808687f9c10f7368c317e887864138480e8ad8032314c10631d8219b277599eed830845dfae109b61b8213d000042e9aa0083488021182800422d480884f68c30c40408498d5e10b41d41dba7230821c9840031018810b4e50021724c1985ecc95432a2702839cc0054e5883094e73263095a90073b4d2dc104936936c400522d8c1e34cfea3aa4951200221b0c009d0b084199040052110c112325001b328212c2a7800069e7082089ce0043b20ed129630852328610a4885831392c0843528a10a70e0191cd0a0863494210d69e8431decd08842d4410c69788213dae00716d921108330c4babab386deca6f666a70821a14c1073130410929fdc213beb00635acc7876b78831dd61034f07eb34425fd4320ee67878719ed4110cb98bff6e9ce53846283174c1807fd9508402857102ed2ad360f248a4f948216b7e0452f7a610b090b9016b338c52924d83f52a013120252102532ca310127825f1093df1deeb58744fc2161b40045231836b246200c409568c41fee00a13d0042a3e85d031bd833fe0322fc080f7760981a5094304e708211730043128830032934a1093dcc4113bef086f4fa6185446841544230a39e3181096f60037d1601893fc4a13e6080c21188000422e080064868c226339081a550e00410a0d3d9dc4891bbcd0d25772b9c4bea56120e9ca00845c0810e6860da1928010b6f78731140c0130f9400084d1dc211a0b20320e480085878c2137e92842854c13e6eb84f1aec508736c0210a5830442008d1083648210dee6a83201851084638229f7b30841c983085e4ba4b10f3fbc31e0e144c3fb488673e3dd0205c842f35bc410da746c2718f00e9e2b4800537c0c1116780834439e1d46c1830bbe4c08699bda8db482d0392edb7e2fe00f9ab118cb820272cf8085a9198c58a98c31c049188207e970d7360842844718a7372e29ce7449825409c888ca639a32a8e98f82216213f68f30e89203109470ab1440ce25f064bd8272c0e8946f0f861ce71c43a1ff1076163d45f8b90618c7820061af8920d5d6502788920741e2841b6f859c31aece006342421074c38c2ced090a42100e10877f240070c028211ec0a041ef0c00e5c2d862162a1093be8210e54b925347d64262f798946ea2e12bd8ead70a425810e4e3084258456074f68ea9b87a083346841094de84316b000ea2434a10a5878de6f09e1873eccfa0d8d7084700b61885e2f8609f796f71bd280047bbb61117b506e2002510953fe88f40d7370843a4dc109cf5342a48d108472fdcd08157542118bf0f7bf1b118842e8f60b4950a985981e08a3a5813bf31b0427f620dd3f0c82fbe7fb837c4d643f3748ec0fbb67104e1bc1098235e8fc0403050541dca07bfe6b9f1157c52e72318b59f0e2c1bdd8852f0010188ae11804501806101804ca1784e1187ca117189017f46fbf42a1c25281161e8a164401155481603e01e60c68176e01c34e81804e01154881a14281e2206e142841fad4203f4046fa820bc4fe85f8568441a40ff6184110d840100261110221de5e460dec401032a49b7ee5c700619d1ca112162198e4000798c00f8ec004cc8e2990c0023ee3b300a501bea64e38a28de0fea624f4ae70e8c46da8e20008a04cd0706d8c6009b4000eea400bea801008e1100c21f3cc6c0998000bb4a0096a0d0bb2000dfa8010fae0b57ea20acccb10926fc93a411538e1113a61145e61165821154c611446411554e117303114542115540115f48f1752c1156c2115fe47144201805231a1120a007701ff140a82286e167c41a1402111fee5113250152cac14de8f1328a114502115208c177cc1144301123e0f1238e1a1f8e714140c1332c61214ac8276c1162030157241c2264c8066211548b17f12aa16549116945119fd4fff76a1171af01892b1178ac1178aa11804b000d9d116128aff76e11866311772f1c1fc711bf52f157661ff12921ffef9f11d139280b691161212802ecc044f01e658b1142eecc24ce104370c831644e510247ff4c75f14c11144a6df0281d8002111fc000fe2e008a0a90ddc800694e0479420044ac0089e600ab0000dc8e5e998200aa6e009904055c664ee040b8ea6e4cffc2a4c3ca26e10cd6dce1001dea6000c21163cc11362c1102aa1133c61154c01134de1155461143ea1133a011338412c3d412d4d411558c1144c611546412c43819e38211452a12f5f61167f611677e1177e811708f317120a30ff6f190733177e21177681ff7841a17241200daa02213321f52f1724921f7b0102f54f80f0cf1780a1016781144610c34401322d0c81226e0443f332c7111550c1fe14f6093547908042b31ff98f3127531c0bea33473319dd31160190208f01347981019393017da1a01272167961807873372b8ca07ed380f4afc2f8511c2bac164e411c670115fa49f78ccfdf408114dc098236ac03150c9d2e6a1112413e2101124c2e11fc4d2d3b10133a68119ef0d9e44762d4200a4e8d2b9c2068eca545d0c00c7ac90f2ae40966000930a001d48822968803fea008f66a6dc0044ee8280da9c26f3a740d43d46ffa264451020f63412d3bc11026811256412c57811355611538e12d379115ce52155c41156c132c39e1f338a11342412d1fe114fa52150aaa1223731b1d73300313307d810109931886a11e73511524121e7de117eefef1188e011cffef1eeb110219b232f58f1f232e162d8c16186a14ac319e1861df4c0115041300fb273a01b001bb144d6133ff04c816beb17f9691ff128a21b9912027d320fd4f32a79320ff31393f93206dc1c17ae1162e7580fc8780f212c4f6c5dfdccf14d2941bc79316a0f31b0daa3bfb67045351143a92144db02333414114ecfd44213d2b2a127d9113e6f31130813f7d757df2c9df288ef710e4430081105204101a449b00a1e1e020b942640d4e4d096a808be6e3030e8050cec625e0a425aa82000a405c4df44459c243fba66d2020024e945cd3952afae0103a211686344663d4143ce1573b6115d6725f3ba11444512c3b6148e9721369d415fe44b1465b911553e117feb214ce722c21b34b0b733077a14777e115963115007617860118582115a5b33027b32fffaf3719931a3f419f04ec0fd0c009c40085fcc5191b21a2428111821412e4692f178413c23318058ee5ee8b123e418260b39f261350310c35b9334f0dd5c264911bf7b41816303297714ae55119a9561826731901ca312df0c2206e3b5d13c30008154aa115aff3804690a2e48914605582de16e2962c635cf523f91340004486e20d3f46c69cd669d83a4810ecc00e2e640da4a00eb18020ca030448e00968600666440666a0f0d2400da06d0fbcac089cc06a9a00084ca00fd3c00a88200420e03028c22a5d820130202316c0964040fe8cd8900dc775444bc700088d8f320225e2150f0de17709e1770ba10f9a200980c0ef04850800510ae0c00d82172cf935463bc1113c614767f1157221155ea1641192300713007f8162031315a1333273411506d21e0792172a5119673117e1174b0bd3166cf39e688115d0b62f493117c7114ee5a983dac00ee0c70f04662f3b281410d814ece914b47417547137dd7116098a6d2df018433017205082ddb1a0fc51328fd30185c118ee51840150184a93348f53c21e4ca158d15403f53ac3f3642313344911ff38d8ff44a1144c61245fa87ee2e0e0e6e07c1e611044449b602f10d880ccd0a0e1d8c00c1a2e0d9240b73005776860dc5a602886420702fea3036ea0ec706004c4ce03b41877a405033ac02c40e0023ec0311e83012c004a3802501c600346a0033ac00330820c07c76eceb544d3a66d0e2d44c3f044fdb00f0ca1133461123ce11558a115f8d5110e79153c81132681453b8110e4b0562a792c55e1155e812e3919813b011238594721f32f73e12fbb9418a21461555115efcf140ab34bbf97344bf33151619605f31472c115c671800a881c75f8c2c611816b531470161402a10dd000103a61659b8d1180d51110981246812e1fc1a462cfdffe29300df3376318340f12e68075588d6f6074586b8b811d95b162b954014fb801dd571953781b3fb3a02c0cff6e213a17753c490180c6911a412c9ffe10a6604821127b9668fd456d67e166db4009c4001008f76a5c40713a20054e600470000848c02066657ef6c347e0000966e00128544eda82023e40039c443a3460039240492aa003702007ca400c5c60032a80035aa0045060913240044e000a80c0074cc00554a00454e00474800848a03442e25c4fd44a50945c51c2aae748aa0f412bed354659c12c57a1155741143421f47e1713d452107e15134241140636ac3d61133151154441a4c6d2141ec11430c11152211406b33481e13033b64bbbf4a14ca1a0e2297c4f56b167f114782114c7744f5b938163d18153a17f5801c3cea94803a10e40468484832e2b81132e31034761e24281975121141ec1fe676f36a3460a6130a883446660f84715d5732347e1112a2182f68f63637151fd914fef51018f411816907f11ca043be88230e1134ca11434523b135215189822f16f0361eec26c4161ee60bc5ac83928814808c1c8c003098ea805aa200e94ab0c8872065c00032ae00482800320024a64c22218e2552ca0037ae70448e0023a80963a600436cd7438c0075460030065014e80c1a1c4223040048a00d472c0f9da200e9e208c6820041462effa8a0d0bad70a41a444fd42a4b1c90c1355ec1f22dc1d2926314130ca12d53c12bd5f2903f412c0dc190fba00f0ae12b3bc139d4cf2f5359227f41813f8163717614504147c7721cf14f87f952a14e61172efef1177474308be1145861173a212107f017f82b14de9930fd718334b015410113660e42d2400a1cce11fc2062ece7242fc8f702819ede0f81378c82604e54132a3067a1171eb8211d58220b521c21739e51167c131202d5794ae191ff267d31a713d1731149cf3433c7b31466a114022612474a10fc855725e6a560560ac20b0f9860066e800572c0095cea086ae0099ae0085c8409bec0097882098ca0f9ba4b0ab0433e22e7085aa031c282715a77012c20048c20094a00302a402b686003c48222fec82b0083053c40bee59bd9b510015ee54cf6b8d0a85a6e3ab4d058624dd4b06da6baddd3505c97000e0c212c25795f67945fd5721530410ba0000afea24010f210134ca113dec0d6faa0080ca11538c1109640105e6115a0600df4a9e015b8141c212e51e12d93fc121338156ca11458c111464114a9991154c19e1028f77861b5bd1c14010621e3a0104c01e20435151f8a1ae992ae1f2114da09214d11a21a2114363833f3ef811f5d4f23133a27aca0a053807e41c234b831dfb1a04856823bf838af164bf7744f81c1840170529511a0d6f73895111850763adfb701a3d4165021879bf47e4df09f32719f28c17e9c63101824f904780d7840ddd6400c5ac004e4ca8e37c0048ee0c7c4a0073ec0025ca00896e0074000042e6203842505b80e3e72f204880009c0002c7a83064ea0023020035a80f22d80fe046ca9223e634ab8240dc3d024e2064d5c420d3be234dc46aaaff25b51220e673c92637414d6f277ad092886c01004610f420f0e92a0101c810f4e6006f8400b68446a0821e3e3d21138b11266bc417890c9d8722fdfcbf92f32c8658f2e992c0ad88013dc40cbc8c70904e11438410e18e1d8e8bf13746009a88f0904811252beb501a2d1a350ac18090c040ad3a35da21c515a342a942a509c4271fa246ad4ac54a240994a550a552853b366890a85aa64ca53a850993a35cb16af5dbb78f5f2e52bd72955a74e912a15ca23ad92bb6ee20486d317afa44c95e2b4491367af5db3a8ee72faf4d6ac96a24e823a45cb142d52a21e952af5e8d3275089e4fe00fa3367cea2478c12313aab2aefa73f4f9c947172e44b9b408bfc04e18124c70e1c334a9c20714203850611162c886081438819271ca3409141448915243470c0a183040507962d2338500041eb0bac193070609b010206960f2c38007c81ecd708641f780d1b780102c98bbf2eb01cba74e0d41140efa365d2a43e8656a15ad5297c78438508b18193b7952b58bf58790ac409ce122345521079f386908814764cb132c589299dac0184112044d1061a82fc51851b6c8860881c82b091441a6cd010c511123661c410349c40c40e6880d0c41a4d3cf1852075fce0c6641b38e2c81a7b38f247217320b1471a8cf8b1461b6c3ca1c30c3430410316204cfe81061b8f40f24728a5a4120a2681ecf147208224e2c71e8f04920825a2b4440b2d3d6d05d32ca4d842149a54f5321555b7f8a2a64dbcc4b9cb2f33cd32d552beb0b9d431c01cb3e79ebd0083942f48d9044c2f36d9a2664c25313ae75030d1340b2da1a855ca276285120a29a690f508271991f209238c04f2c71e6eb85186144aac9146136aa8d106206b3c61040b1ec8d00208467c71c71a821802c81e6f3cd1461d5f38d1c71e6a3401441586ecf1c413397450c105143ce040050e7cfbed6dbc2df0006fbbe1769c65b709d71b71b151770073c7c10b9bbbca15405d74041c124b27e079b24a2aadacb24a775898e086219cac8289219d98f28a2a95fe7452081c7e1062880a1ae8c0010d24ac31491d4590d0c72a8518928620409090181b8448a1431372e43804124f1c01c21051283103147b1c7c810e4c28510209230cd1810311ecb0c31b289050dc107bd43184b0800012c50327b8d082148da0a106233a9c0085113244e1862068a32147288f34228a2986fc616a288370920a28668662cb54b7ec728b2d34a1f94b4db9e432f82934b149132a34456593a033e5e20ba084166ae831c56cceb930be1483792ebf08becb5829295a524cbc3c5ad229a67435d229a93ce22549b6d082ca28a050f249a76351d409248ab471c41b7b04d208248c50f2c820556619881c7f38e2071b6808c1041034d0904308fed85aa0c1051754b0ab061574e041051450303e05158c303eb6db967b9bf8147470030d3ab4d0020d2d38e13f16740003e7fb96ba78332e06f84681e9d20d727e731ce8dccb3ad021c01262d1872564a1137de80327aa70023884073f7d2084bf54b18abc4804167590821188a0826365300333e860112ca083243481435800820e32500125d0c0054940030eb2b0841c3c41093a38020e3e74020f78000947c0c2104e600110e4c0434708419144208321c8e6370ca0c00cd070042224810539585f0910408314e0c00349380104d86581211c2c0369784223da300441a802134478821c06c1883594ea118fa0c5284c01c953744211a11805a900f18951fe0cc44ca590c92e6492945df4c42ba2e0042846418933f94218c530c6e62ab73963180350816aca9f126594ca294570aa5b655156b7a7a5cc0427949a052f4ef1884424e20e7368831ce6529740d025541419854b3e410a4e24620e826084f2e4e08636b4610d47d8810ea250073460c10d6b90431a7000020f60c0031d18c10dfa97863644010dec74a61c0a11883bc801557f58431242e0010d40c05cf342ce186533ae7325b038c2194ebd62832f7cd5ab38b0c1977308501c2360010a5238c41ed660c28679c2138ec8201a3ac18942686212ab784527d820374174c210aee8840938d0020e28a11358c8421f52630423c001074d48020e90a083218cfe8008a829010874b0831ce4a00d4d9d02083230441080800834c041093c40010b74e0042748c21c4ec01c040440820b48c06b1e0081e11460011df8000728c0510822600316b0000d2c2002d814810d9310c30e9e70873610210348080523a6f7895364024fb6e0042496428a390853707f5004297ec90b9b28ae2946b909528a91949bd42926a760542e6671b863684e19b22c869f0425a85fb089509ebb89a27a81bb4ff5042ca01085eb3ed1884400a20e8d6804281ca108ba75e411a0e05477b329dd99b9816e95300421dc1005a61961074a50c20e68b00336ccc10d6240c20e8eb0064360425495fcc423c8438940bc010d8999023b0131083bf8e1fe647e1004c6aa24883688810622e800185ba001045aa0a21c3d0e729a132f0268f439115c80bc3a4c00e6144002072881053ca085299c000d6f90c3213066883a14550a5858421ae45384f014a20f83788521aa5004424cc103452a42134a5004673ae2100ea0c00d3c60840e34c004753882141e50ae0d504d0717b0c0642a50810cb0b5044f80c30c7488031cb4e004291001022a00e6d51c0037ea4a0e7540ca1a0f03a7384064406c16a081061400032578800c4470be1958a0022608452e0c2186de31e22abfa04b2354e12c4eece2b4b380444ac4b4119f54457048b98aa13cb794cd0d8a5049d1d3e680218c44adb2b894aa094e72cd2645a5f6b6feab1b8ae0105715a580a526684a9d4f5c7712539442146bf9d44838d5154e306249a6d4362748c1c8477402106858031ec4d08329f0c00319b8003d6990041ea0210d34b8013c4fa00329e041104ee88b1ba650060263a10c7e90831dd650ee232081c66bf8c2177810042408517f327081b7cc4551e1d0cb39839e9747e7951c7cc90b052f566a1d0cc187432c81064bd0c106340005ee14a10555c0c213d8401e4c9814927c28821a2ed60957f8e1c78548431ca63c041510e101eea3c11ad860841490400758808311e680051a544003298040d01c731ab5426003197001041c900134b03507510881030afb000c8c7139217f4d00f64c1cd82c408222fe664e6fb6dc04df14e0697bc7822926cb04469ce00fa53005208af8862530c116a458c42c8a216a63f8426f9c18456d8fa21463562a159000852d72c10b5cbf9673aedc9c308e210c5632a550c53d6eb3658b389bc47e17b9bf1d9a58027c52349714a89876a7c8422abad821108a50c4ee0201083688e10e80c043381b61aa4e008f13305a0420e8dd8319b840072aa0411adc9006343c410a6d50c31ad690852888610d524841129055883decc10f4808c10d74a004ddc36e34f0044cf01741d002ded3012640031a40025540041d3069e2d31b10042fadd1511c472fefa2510410000e50058480054c8005dcf1066dc52c1552754b507559500755d004fe3ef6047ce0094b806f3d960527b000273002278003448005456301537704ff660126700219d08337100243600434500775260345400345a3014a20087c80031a40044e10054f5856ea831b0f400411c0001b40020d202f224677f22241d0810029161b29661dbee12d1ea51b01e08615100568c7000f20027230046e900a3280063fc0008d100a683008bb6059bb600aa8500c90400a33610bc0e07ab8065bc0700ba7d01160d1378ad214b0853a95f2088a804d31710bbcb039c4204bc2d00bb7b311c6a413946017d8d413d9e4299f541280d008a4d00876f007ca632a3952066ca00865c0044c90033a200333900334d004786007d448088480078070fe0776400877e0044ad06fdf580685102a9d604d9e4009d5550995300a9c60077fa10633a3064c20058f50099e30080685041e52055fb08c44500447a00340d00120400352402b5180011df08468c51a1dd0022e40023cd001605604357001dcf22dbe012f79c7512336682aa0056db6534b400236e704abc01d37b50486800553800227d0044ea80240000557d4011a70001780021e10244fb00144a0055150021910652750013210022270224f900216860122e07458a01868c64427006f6c86020740017f585815705621400459b60351800327e0942570042a400121f68627961c71150077f71b01d0001db000166000c711001d106229362fb8c10078fe366f4d000114b0010f4003282018a0d0067130129ce006b3505b555115af450cc5e05abef0494b614c48817ac6441533d1120c212a82630bfea58da2f00794900a5b810ab6f029a49708ac8026c2833b8a331494f90980c008b41012b7b515985026a7500acb253ba8400a63f212fe411615510981b06d8fb0088dc0099940187e800641205645401f53600458253459b2079f900999200701f70434400421b090ded200ab210241a00416225f605306555005cb080448a91bdb72980c700119560009201c164040bc012f19f51a22061b7d271dd3a10227f0002690044b70633350071954022e600146a0021080025010054ea0033fa4034590038da022fe75d0023a4004273004696004520007a9710220e00493a00348102238905f86d03d3ad0064ed0046f30052270011c00021f30036e60044c5005dbd201499004430083193067553004fde30445700124e00217d0015d880624e0016a258181051cb6711c20e551c201012e30028af6a015141d1d6568b081010e50025de7010b800104d000b6e1066f900483200894d04c80b00bc2f00bb7f00b9cc90bc7106c84124baf874bc7955a450127c654798d500b7f130a94c01695801296e05f9d400a6c8007a6220a8c300876c14899120abd804c4d9008900029b6000a8c700abc900ac3ba9cd0460ac7da15a00816cab99ca61014d8240acb297c96e40903d1fe5de1c109da76358ca008d8176ed8c7ad72800451900675102c46d00344300346b00653f00458400880e008a0d0087340ae6ae004f6c5011f70033980034fe002a8c10152d7014dd006494001eac21a81f52e77c7401de750076001e6e4721f200545e01849008e6f50077ee0067d30044fd0852150052a500445209549905044d0095a20022ee001453004dad20152400426d00225f0530b801b08e0015a450104a806523067e0633e1d900124300424504516b00122a00654b0001b500662240227f0010e40026fe02051a0011ec05e7ee00747803e1dc03e3c8b66acd19686861c0560025d59000a9451f982017b671dc5f12e0cf0014973b70b700107fef0001780036560591d8006a65027a1020c936a0c98284baec44aac177bb04515ba699cb4b00789505a1ef27073b0074870024af00632f30772d00414104565d6048200097b40045f502d6060076f76b8dc450b77500a62920ab9500ad24309907011c4b86d94c029d2661171032a79016ea6f207696307cbe70774b32589807dc25317de4409a6c23c8bc0089890bd54f20789b00772d00676b0078a804878207f52f0043df20453200772205072702b25f05851400239e00458c006f15b0346402147c00337f0011f80011450c04470044940030ec00143b0011ed751b0e10001e0b33a60041ee0065a40021730037000074510424ba0022d3002191002fe92b7040e209674360884500775d0931a50025310225330554b50020c804347600828109520ac3108f01917b0b75b3b0517108360a50221bb060f50012200882620022f33360c50a827800433c0036a20085fd0083946446b70a237b02dba812d14e55050ec1c1df61cf85265cce1007bc54071ab40b7f1501585011700029fc00b4524074e000a48010c4b916bbda54bb0155ba56329ce53ba7fe0041f20039c50094a700347a00417fb048610047bdb2d25e03d4cd701d802011fb006832007398002ff1a0883e00703612a97c53bdb060a4ce20673903c89f0089fe27924010a8f207ccb49afdbd609d9db096a010a8ae00876e14d90608bcba34c9fa0fe08bfcb4894e059e2c67dd9ab08b6320762400220c003496004c3b2064a40041eba2d4e9b433b40a71d303e3dd00244300766a0031810b81f200245500665f00565700343c00416870110004467773ebc7176ee521c4088954ec0047d0007fc0bd159270325540526e00125f0851b40c51da3b53480d13af0064e200569300453c0064500561a40034530032020023870047e50055e4602f036034d3036b4f10029f0079d20083af0550fe0411bd07645490122000919520640900352c00116f087cf881b3f5007b7f2056290af0a7c045c93015ac00f612dd6fca00516702e80359773e9a0c331401e385719a840c291b005100002f0b62760086e500249fe7004904012373113be3515b3e00b99f939c5e0398272138f20289c5050ba0c241ec00134b41ab711771ab0017de00ffca00e64f704323002d148036ce0064ac0023f2803cc9809616d0d4a307d6d80040395063cb0034950056dc04eed2b086ea108def4091591bd8fd015c70a149ce236a6225d89b00881c0dc80c02572302bf0010a3005099900098bb00890406dc04b176ef0087f2008a83c50d03d2bd1fb0784a008ce62258150707bd04c8fa9605fc0b571900341e0832d9003093802348004fbb97517b094dd1293ec2602997102499aa485f58353000547700825386427100221c0044eb0677b26036e26055000424ca5031e800590801f405001fe1bc072f285317e000731992046400244506615a0a09621031cf0aea80b026556ca34802d18b0901d40023d000106da0089d9006737984fd5025f0009ec6d076d1070e384032e000861fd0a58900433004f03fa00a6c00ffd400513b0d9b06000bc51012de00006400c61bd040360a0e1820060cd0fb0a009756e052860211670027bb008f2c00ffbd00ffac00ffeb00ffa50a99cf939a5100f5f6e0bc510d6c6200abcf00833b0066ed30f5fbe042e700451300743503d8510d6abf00382ae0f00196734600657f3072a5b9643a304202ee8f6b006c910d6bd792a7600086e90089b2d0efc700a89d0dbb4030a9f4009c54eafd2a5087310bd77f0078070fe700747da8420ec905009b423108da0085cb26da1509c97f209b62c07baec4d8c104eda180830527d6970357e30088310053960074cd006af9e01697586cbe804682006555002a3cc3f4dd00393d6a4d8f200be717619906115cc0101b0015000010c183e1d50021000013a3009ad00050ea0022ee000c5c11a41f60abb400ccd800516c0632edb727db0032d4009d640084b50014050088540560e5da3653005329001e843c340300444e03e2b80042e40031b401c0f50024d7002335061232002bab100eb720108d0950870026e9004ce14077bb00135900681f004ca8e5e5aa50447508469a0044ff0076850062f2e0303440120c002eb0366b4514614fe10011470761020e30880760d00f810600167d70096e1028d31078e702981f029811007900009a78038b9b008a7c0268052a99420079098cf7e80034a10041da0b76bc00719100572b004484f04f94302622b066a840119b0c9cb722b4f20063c2005543405458406b23207ce0d7dcaaccc5e820ff8c00b8ab024a2a00a2f910a60310ba17012b8b816a0500980507082000873602a8c3408e234076960bedf9d08c238afca6707daf40777d0cacd14bf6ee1dc8290ed8a909eb25225e17b07d98d0973e08f692007f295066000104e8ee4203283c8131a399e30c9a1430d9b1610163ca040e14207192a7e6c28d080008d25451014e030c54d96141d8c64fed951c4040713298870e870820202040b166c98712283882133b070d0e1c4d01b2810182098e2b3c3932a271e60d0106489830b2e3e882851a44f9a252a981882a3a6c10613142616588093c2922d71a948c8b0a58e16439e966c3861614107080e2ce4909183c69a47901eed5205a8532f56a800bd9922a6511a25476e24e12145c9071720283c6030bac38d94532f8c6670e041850c86264d9262a183031d323aecc8306204963d6cf0902a43c9d6a94f8cecdc91138851a953b34e49c902290d2c6ccba61d2270089b2c6efa220469d268ce8e4048fc049a8326cda046893e9182a44811a060f7faed13e70fd87c5168e9c5965950896e165a0c34e594fe536831a514501e092514514c218514531244e51350401965c250461905150b3f4425944f58c106b947387984124a30e1a4124618718491401249649044e6f8a33e4504d9438e3dfef82310482071a410481a29440e34d890430e410091c38f3902012387320a1184860e3a10018513723841040c484ba0239cf82a2284052870e0001482a880010730b8e0810518b860092c2c0881060b20780081074a502102074230e28412e030a413430ec1628929fa38010735a050430d270a3102010a80a8030e1432a0c10719fa90a2040b6410c102394ba0218b219ea8a904378c48e1892c2ab860860a1280b5809c1e6882917df4e1839f7ef899e4157ef8c9a2fe058a48a360023804b9c295687d1105154648e1441037f4a99611392a79820d41e460e3134ea868a6da3704c9802a0f4090a2da67aed0859c2b12604027070cd0a2da6634a936990b9e30e403203418265a56e0e0c79a27fe208406468a28421146da60448d2344f86309004ae1e7877bf981e58a6a3b298d06310291e1046cf8f1a79652c8e125915372412e945ea2e587175a94c18616520c24e5134a88a9d61851f6e1679f1345098594c4e8f1591467aaa54514061b3c5b5d7e8cc9a48927be6823903fdeb8d71e3ada004411475ca444114e2849ac91451819e40f40f66ee491c513a9a4454a40f9e4c5501a09048d36f6b0630d267a58430df7d2c0fe43108fff90238d36feb0438eb91d31c40e3cd600418321907829873798283508143ac069a90356c86285000c4800881238e8eb00065edba008084810c1092b88407853c01ed080863d0e29018103eac822038a2c008b0434968060040a3850c28807324001810c6428e30d0c6490028bf9336082932a68a0010e98c30f18c08321d0e00319f08116b400052820020526e08319e2e08301b4458306f0011ff650883d64220e65c84115dce08745302117a54004263a610422d4817b6940831fac80822a58c10709a00003f0a4842f6cc0075630831544c0a7a514c0011598000a2620812258010d5340810e1a00010fa86111a150073f9ea18135b8e11176fef8841b9480860828010801d00216087080040460000390c01c0720c70128c088111804104ed0084e7ce2136a88432244218a4594410d9420452f80e10b5bd8c217d299c52d4e810a56f06217bd0806817a710c5ef0e216bb28502948310b525802121c7a112518918840248e119c680420dc30874f988244a8f0042300d1084300c20e6e48c31c3e3787452ce20f837884e100c1883fec61119090518d00b186402c22107e10431de4f0852738010d2d20811a8404883ba4210a7ec003167050062520010a7168030f9230073e14ce10978b42143af6850c6c000272a20013aa6002388ae00434f8420d64108005308f032b884003127080023000051648fec2131040000a286109167080037670021d78400450d800fd90c0be05a8800832c180514a7082193c81041ab0c0063870800a54c4010cb8010722301122b06109236880110851083b3cc10f4d3801139e000111348158853a58462dd09a0a20f10018055f0964a5031fa0010eeb79431a4c60813bac21084760831dd8d0863e90a00d25e8c3ac8052840390400708f0210332900627d080588c3a4b44ffe200f01d000124e080444612d403d0800620d0c10942b001364042091ce883289c0082071ce08d912d406b095000d54a76ac0530806c6183030804140538cbc009d4008965de619f7ff8db20dc000852687240b3f8452f7ee10b4eeea245b49845fe287de10b5e9c82140c32457547b90b5e607716b6001b2328f1094850c2459c40052a46910a5630a213a3f89b1ca4403af8b4a70a7f704493a06907402ce21132ead07dfc60073bec610d6bf8832208c91e3f6049107650c3148aa003128400084860021a9010820ed0000727e0000bc4a0061d40c00250a8428be790894cfca1096b18d21bbec084131ca0010038400002d08036bce25124c8011bb050040f5480062480c312387001150894028011810838508007f8c1105580020738a0812618a20f25d89e082ed05ba52a0002479082092452650b1c010b3220c21aaaf0be353c41063ac00112ec4c8288ac390553b0800726c1872188400171c2536afe93f597296cc001b8e5801c8890e40b24a10d4dd8c01e84c4092344811311200110022191053cc105023dd8521c20820e3060042468400522aada37c29601c8d2c947714200c2c609031aacc01569800614d87aace06b2d46612bdb65e704270b70000174c200c09c601023a0811ddad0821310c109699825791981091c852210be78e42e6e518a5d1c8318bd48052a40710a4a40a241457bee7579d10b5ed84293bbb0052a4411495b5022118f48448039918a542c0815a5582f284c41afbe8182138e68048e06b11e4604e90d7280e61f0c81237911690f6e884334a79989c404a2108018d21efaf6063b10a20d4a48d3027c000526b0a1e58538d23845fe50041f94611168384219c0f085328080031938800122a0001408a0013e960004cea25028a0a001723804107e50021d3c6a224c3855157430049f9880081da060270e31854260217e346802ac3b50011108228c6e60422854a1050ba8800da8789d1468d0873a90742a4640410020b0072c9c200520f0c00834c00411c061063dac80071c000117f02002b039d8031ee0000a6800031d20021ade80833ae0e109a1b00305e4d0080b54c1103ff02c642f20d9a142a003a4d1494461bb80024060d9183dc0ad0900ec0504c0d9046000125e3b561410218e1e3059002a80d1efbbb600d79f2d6c610bbe053480b5d876c00800ff064ee4200ab9d8c51fa2b0fe0334708313280455f0854d62056200865d70b75900858ecb905d408505c42e49ba2e5f38865db82e54b2055aa0055020055ab0855ca0ae5918af5920b8f1da8554b82454a0855f18854ee8044b68af5000854ef88446d883407084449812cd718e574a8473bb263440033978913ff08c37f0031a5b032c508336280446209d2941831a40292010822368022b4803384083275cb921680234688223c0300d38823ed8833888833938021af0890d40810d50342cd08224c8823aa88335d02c1f383211b0b505c000072882135800114803141001c552a9a6800023d8001af0832a20843ac8010b4000c832a92648034d9982c73b8428080149690229e8800cfe501e1220011928049db28021280426a00125488323a01dd2308123b03d0b68800c088208b08019e00007d000158b9e13e8002718a91438c3ce3a0142f83f19408219c80113f0012548001598820048009c48000b208d4df4a15f0b808cd209f46b2d7574b6d61a09f423001f8b470088477a8c470280801a688013300206d0802218959ce8314db4358a68807094011e6801d16881e4d1813a100448188662f085e732066530066328068d548666508668b8c88c2c068c34865e10855f008679030660388550381155a02e5bb80554101c4c7884e86010fa02043660b941109c4768a64fa890898b9c51f8042221243f708441708e66ea1b4cc0046d2a84fe2a68032cc8010f688229600226c8023670822740031af303411012477891661a8436500325f8c73a781f1d18010be0000f308125e8309770822460023ef8820a282913208c2668828858000348a0abab3a125081030002148083127080be2800883a9805a0012328020e780012e0030e28149890022370838d3a014d5881edc1010dd08135d001321b8236888004588013700235b0820cd080a1d2800cf0800e182b06b000d56aad0078233e912c0648021550a20c00ce07b8000e908124d08126c80013d88313488211d0813f20021d50011d20023838813740000888034358013d41032748ad0cd0890bc0896673acd6688db18aa8effba824924c78f4feb191f0b1fd1cce7814800010d079a44778240001385005f54fd73a80d3a4809df98010e00a0f28016e2bc23f600453a8c05ba08561b0c05b10054eb01053108552b8c08964376300865e1805502004243185f0c22e60109c152c055150051c3da4668a26463811e7a084533085471885a9a110b0e10411a50451208540e0844e6804189990668a10c379844ea004baf98338908323b103e5b0033f700339001d2869823200b036580325f8011a28010fc0812798091a2082b03bbd0c18022d8803298097692a0424210462bab132300431f8023450822110d000700013c0022c3001c5ea03432084a180800de83a0b28800888003c019f0d00020e58022dfe803c4a1d0a2c10815d83bd13308126a883379800cd638b148000b75800607b2dc3e2002768810a083602e0802018ad43c989b6d8802f28011c70833558810a6083221081f7c1012378821020c3ce42011468820fd0012888b216d8811270021d581337c082368b80e19cadebf39d8832c7d842001fcba8e0944c7b1480f5f3b104bdbeeb53c79150c7064596ea8b2c726c35c2b2880b983d0cf8808b600224280334d82741e8494ef0849fa4af4e304bb4f10546f8048b2c866310866200065e40c95e38855e20068d84a482030566658345e0844c3805037c0440484b1afb84991d2f5e9805486084662ad20e011152a804dd2b833918d15318054510d2fe52600448a09b3d6883221882321004462884c2f9594e08854a08842b01213b980337788340108445589c7c532fc619263f288418514a664d033548832a88833770821948022c78033418813e11012c68022448a04189823280d490b08225e88a2958813b94d422208126e08312280117280209a800298800293801a5c0b25dfb4d14d8012330020bd00149e41f08280226700213b0b607880023980229d83c242081b0c2556411015a7b3f785cbf204003112080389244dccc800fa800154801dc02012528032468823b80031598011d600442989f5d930027308204c8800ca8460d20cc0010010830c70fd8cf66f3310c6000f60dded77a2d8035c7e0b5fedf9180bfb6c08a3b212c3ca900dd040117f0802750023b50c1b365021e500337d0810e18811b18012248481db80117d88139a8033f6884417004aaa11c5038af5408a55ef08514f50562f0b75e00385620b80cb4c049a2855d98480261b712de855ce8850efc8504196160f8855960055b18854a88ab2950831ff9400631d150b090b4313c5200910539851036affea20453081118a98435300445b80341088428e03034d80324a03b2b28022148023130832730822680424210844278048de3043b68023178022ce04322308450e00437308444d280501d0245ad0343a8832f18022b70020000000198e49c783b1218b1c775833a381313008206308137fe6829077880aca281c98c80d70a8cfa4b008ac089926a8b0bd880e689a94ee883483b000e48834948028e483fe9cba815188207c022bf90be5ecbdf60430058eb012910017af98a25a03ec9c2d500009f3bb9be1488801e5bbf5cc335fbb535d81a4e7bfd4f7cd53eec7bad9ce0dfd2b80006f00012b0d011b80007488237d0011d608342108541b00354900301db05188c522af1833f50021cc88124400210b8011a60022560822860831df41b48e084aefd9a54e0c01344c10cd4a4ea229059189753a2c0893b055b4885130cb812dca428861aa6ed04a0f50327a0a6c4581053e804394884b5fd9b46f09a0ca937548862199411a3550271da833de003fe40f0833468823dc004575a044c80049adb8347e8af4160843df0034f930300331d3f6803ab5283392092f6f88234788236680327c892451884bdf90295a2543b9082e9150326e83b5ad900819ac30cb8a8cc8a800ec00458988412808237d88213d002e8c1a8f6d93a2c72009f728d0350800da08006d0b15eacd7747cbf92522d04709f7044001588021148821338bfc98200b618aaace2471c98021538290fa0361a400164a90016580322a84a0a682d0ec081d6b8b591c03ee194ac37d23ec95c3fc9dc66fb658beb6350d8ba3eacc08add24010af000eda680273023ceb35b3930841c40021af283b85a8390cbe2541805ac25855458615472c09f0cfe85a5bc83cd39a33a080429b5833f78918d8b9c05b18512beae151ef01386e15ed8850e1c610eec2e54220546686253fa0453eadaf96826a19c050a410525b505517884ac8e9a5480114ae88496acb70bd1250669c1a5fd0413778443d0044de8032fd15e1ab383993b1221098e3f2804457884686a382f65844c701146a8841b21048f710423590f296c041aa904579203457d82857082c4c28126700222482008400136308215f8014635800698323e28d53e2014813a813e10042c9881559d9513f00144690d152bdf3e7147632d802e67bf89688bb1e2553848832cc8446a23a92728822b7200389c811dd0818a828031d481cc50312798820c403411fef02324380156de81ca03ed8f3a50633400e6a6dfd772807c7d2dff8ceeeb7b80fd3c0056a7880a30681ec0dccbb5e01198028356831c50d45a9483707b033748826e69834748054ef8034e08c1400a8559b0405b7004a4a18f6722852cfd847d2a52960c0518311154908ee8584081b3c04d9ad17f4305a8f66946da057c6b844f40054b68d255bac950b0630ca1e2f60a6a1269495628da3c530470af03374003d0f98352102446885998c384267da5b2941060ea848de304a0fdc946e8b84400d44520999f95918c15425f4aeb1dd0ac19a081279082a62382cdaa82372804470804dede4725980222f8c72930453c88823abf923bc882f8a3001cd802fe09200007201303d0441438042d7800bea6b5d5626e7374bf039d578c025070943f1d538000b8899c80ad08d82103b8be15508b0dd0010e6000615994624c4deaa0020e28845598023898042c8083dac86c1dc3819b9808f84c80a3fa28715622060d5ed51ace370acee8164e78dcd7e8eec624b3800b40821d38f91cc8811bc0011ca83dbce49c24688236f0db2da7123b40124ab8034818f147c8a509f90447fa05d98f0c7bb304282d714b2005237daf5bc8e80504af12ec40e9e03f82e3c00459c0124c69523277734f851054c1132cc15b9885545005ed3238163710edd2fdb4c9621751043155031d6c04a876844ed03817078510a117f5d25e9328fe84aef51b4a000442b2bdb345b0816e8339c81c1d6f0eb09d128090d3864d9434668a78f0c08143850c24a0b41164088b060a164a1ce980c2099a3527501829626449080e2760a16cf60c9a356bd0a6c18cd9b225cc97d3a8c5c4392d5a4c6dd3aec1bc26745bb66cd3b6553bba8d68d16cd58a5e73da749ab66a4f894ebbcab4a954a7569f5a2d4acd29b5af45ab95cd160dec53a966db6e4b77966d5bab5b9d120d3baeebd7b2d5e47add5b94e838c166b97ab5eaf76ad3af56cb396e0ab96eb5718e2f978d66adec62ce68ab69ae662d1ab5966b15838ea659356bc59a47bf568d991a35d2a53fd3064d3bf7dac59f15731e3d1a34ecd137550ba7cdfafe36dae159d74ecbc67937dab161bd517b95f2d9339930ad7d9f367366789adf751a8d0954285568d95e469d6a34bd516d51975edb76ed69f4a5fe89fad7d4566dcd7556635cdd252054da64b354537b3135a0547935959b53e5585699537b59964d3a859583d738725583e15ee978e3215295b1988d602e86655538d940b6d45e8ed13697677e25e6d835d4ec075c6ed551a79c35cdacc6996db581260d5ad2f8450d94d54029656e577ad61b5a3f0ed99b976841475d5fca8169cd57da28175b73438e895636de5c568d37da25238b4adce1d99d9ed370175377e281275e4cd3d8a40d4f30d9e7135045fd84df7cfe45975435db448717850e36d820a644fed1e36058963eb55788000ef61fa634fee762511cc6e5df885dc9155739211a06593a90cdfad836857918a2541fcefa613ae9ec2a2b86909de84d39c01635ab8be520358e374891484d86654d0b276ae5c0498db6db8423e74d56a9c659b7b88186ee6de50e99d974d5fcc8eebb4212f995b6a8e1f89bbeb521d71a989d1d77da6fd6bdf9d4b9707a83dd38dac9924c9fcf68f3a7a0cf58d31d78125be3937a41adb71e554209555f7e212315a181a5de976aa999925a72ac1b36482062718d93a0c9457d48b3871f16a6cdb08585fa14b4afde7aacb2e8040bd9aa63f18a61af956138acd4bba623e788b74a4debaee5d003edae85653d0e861a6257228bfe638f832d5a08a3e65bd9fc56865d94dabe4d1d76da4e176534704e29a7b971ff553652087beb77d993a10519bfede28b6569ef865b96b49e79337989e114a61d2c2a35c3274c120f3a284d81f634a8a21ddb975f56d9e467eaa40102482a37fe498df3b00ddeda2aee59535de2b152573d8e39d7c8b56c88c32efba187235a5673cdab224fd4acc98b6de2d6cba233e2b2defcac70d163034f8fb0c3d203b6d457470da2b2d3b35f79dae598732cb785555e4d38e6084d369ca439c976e156c9ed375ca24db71026376918f06e775b9b9caaf10d0226ac7084f356c2ace224ab48cb8000646003bd110eb915c96f4e92d293a8631938492b6d09abdf093ffeb83058c8224f9f0b9d9f04151e1a6a8c631e638fa21ce4ba49214865ff21565c86b514f1e9ae663aa3cb6356c595ac09681c9582965c7ee6a2db5d9167271255f546143ff1c5a379710bd1f4b651b9e971f1445233c7cf90073f61210d784933073aaae6c6c98d0d6d29aadcc1bc15bf72fc4d6d721b6403bd250d04d66b37b679d294d876af022eb09065094759ca41c9c85d033bd2d88f5fbc51a57055703add9ad26e76833710864b6cca3220b7e2a6ac71a0032531dc130d6b59baf4c02453d3c046ea42f693a198ca3f937a1dec1ad4ba6515711bf0480712e1213ee04ded67c10a5ef5ce374d22220f796213d633e598454b260f9ae880c788d081fe34a499436c6c3447f9ae06ac0f416d5685694761d2c9ad338e281ec613de1a81173f3afe719fd3f360069525a7f5250c949009e541af04275cc9c894721a6126e5160d695cf4338fcc8d2639f38d1f918b1a944c8d480f69c1b59954a4543269b91e38d19576cb903f2225dfece78d6bcc2f9409831fb7e08792cd79ce96371c1450b21213d6b1ee97516914c84a05bba5d8455344dc06158157c465aa431d4884a6f84c44c6ab5d0d1df4501633eb78b56782154551b3d538ca07cd5bd5b18dc3122b2ce117d7b9960369e1a0473cb096b574b0d1ac264a8739bd6a3cc0be351ef130271b7f26b6b8a6b372b7ca6006678530cc59966d9fb1247628c937fece38e98386fb0c25317a378796d05b51821276cc71d38856509332428d3848e8c96e5dc3a4543a68262958b691aef0a07012c70783eb3ecb2290a0e3e88637ccf15387d9325045cda17a84020d90619775aad354cbf0921f687dd78dc85447558d988e659e37bd77e5aab0e4294ea9c59579e4239f58b9658d72d2a31def8c5a1dd979b575d223b08445873bccb9d8f82d161df4e499d4f20b36f3cdf567edd06f5fdbc14efdb223c1e64cc781d101d070007656ff44673a53b9c284a510591ebcec413b68b8d3628b82a825a094407851196b34825602d265577c59082e70c5367524058b0b0ee1aed2852bccac399a9c42e135399dcb354737c0e15c58fee0a99645fd4950b88c0da360d79751692a316357b2a578cd55453462a780875e78c043abf065e65ceb58be67e2198cf4106b9de3da4d66e2399b7766665fdd4a58760c58bf74944718fbba58767878cf58d36a80d3c9e174e817d3ecc86f3a181d0f79b0431ef23070863ddc0e44773a1e8a1e07a4e948d8266f785851f630fcd8c83d74b00343779396aee98742d72610802af520474ffb0d497ad2a1d8c9a4fd26b942b51129b677fb6071b955dc0f0eebc4e0ac1f8a57282d272fabc967ac9c820bc3dc0c76838df4ec46374ecd0e59ee891b5de67250a0415d9824253a3fc1e5c87ca81f4b99ca6b6526d6796986e6352f2bce525b263ab46a4ec69efe37ac817df8b2b20adf787475c0e2332b3d0c0d587ac0031d8a9daf5b2bfea105437ad374dcf0c309dbd74d435a58a3ee2ba3192b565c73381ee660873946ae5873b2c31d7dcd2bcc010b6b44ff13d6e0c86badedd7d3a737978f52a76007a93ec8c27936d9c9f656690338c8bd59dd1bc79613674f8cee67db14c97ca4f672298ba276b7ddb5e95eba6bd3a9f37a8e63c2503ef584d9d10e51c31b741b1bbc5107651478b58e514e51ca7f26f55dfd40553f465cca645b5544e35175bec0abe3c3d1bbe7c286fc7be52c6c5ee337a28d3b3c9c7c86af9d5d8e0e7990537890e5703b74ce357a205d1d0d1735ee31dd574c8fbec9a28e4786db41e0998b5cfe1ee650873c98cf0e78809af8ecc8b5acd3a17b3ab67a59e1d83e1b072ab6e22a0b1c7463764257084a1947b0817eebe069dff60d182b104ee0a0e424212827d74a90a0f72c3fb697eced24274c3a7403b7589afb7443617c5b39f01ce644d684191faeb9c3f44ddf76940e9781cc51149e59e452c8e407a8e0877fe4c7eb001cb4a843324915d6c88a1b695ec7d5d99ec1d9cda9033be8dee7fd5e5ff517e771de9ec58333119d87715e5e719839e9e062e9dc035a1fa8a583d00dcb627118a4851c3d345f3cb8035f211af479daf07198f231daf4bd1ef1c503f3cddca789dacc5118a26d98ec295fc3fd91392cdd64ecd4fa58965d9503bb718f9229cbfe071ddb8911d007f916b7181235e461fead18fa09d7dfcc9ff9191005e521f831e09379c3219e58423519731d2073794325b65dba35d7fd39a0de4d9839fc5da8a10477bc84bcfd12c7ec5bbe050936508a7e7020776dca60c045ab2053a7505e36111c7b610f9dd9193c6c8358759c33b1e0a8cd17ce89dce791cf1b855c5e0123149ed7f41196eef1decd411c618ddac3891a3acc03a345df80bd5e86399a6271635f4923c65da1a749df186ee3a8c5e0f0d5dca755d8cebd5e81e51aae251dd26c53930116afa15893b95017155441951d02f2110559e2b3456238348335dc936fad107301db38848325b26141495665748321710f26b6034452a2f02cfe57e560e2b72dd727ee5cded5133de51d39a0a4279eda28f64951c96497758c520945eaf452c9b40ebcb40ce5c505cb140bc885cf5bf1d9ea8d93a41156e8e1d9c3711e611116329ed7eabd135c31250b6e9893119a7e89dc87d8192c3d9c627d5aa771e3a56ddaebe183a8111a87ed99dfd1c33c4c1fef5de318129f3cccc3a26da139815a04f695d059d884611a1dd193b885435e09cf0a15e0191dd92a2514656516b6ec1f1ff91a011214b0c59fb544a20761ce65724ffc19664426ccd221603b5c221de6ddbaaddb01e6dd01822226a6133d7d4394f51d3b9466edb5c33b48204c0a1e50288a055a2036508505dee47d3886a77017b1dcc754ad19f0feec4cf83853cb695e8375530e3ae553529cf8884f6351983b21cf51621a33815ac785d15632a3cf7c9ec8891cc6cd171966185f29963361dc792a5686a1a3aa3963a62996f16d1af1f960cfbd9a58159aa21d18f6199d2ac993baede3fc885bf52c14c26490b55016c2d05102e59462ee54665da66b65a6b2b816864496611addfe11a437945bbab50338480b3d5da2898e83894a1960a9e48289a66c0a8f4b76a23c38a08de22651d5243798e27ad88751404a7076e057940c78c50c804cde9999971109e3796595c3011a9fb120c86d1c3c0021c4751cac85151c25189d615ac7dddaa5e1da568a9c39285f1082a7f5251ff0e817a861a318cec33a8ae5fea3c9a53a46dfcee19e17325a3bb8835b82633ac820aae1da5c0a9f87a19a93358f3f4699e9a19b02aa9db2784b4f451d83a6d0fdb84ff9499bf965a8f8259707a108d9c95d401a66244a0b1d02e26a7a4389160638bcdf8ad2938a426438f09c95f99d9539a0aa75e28dd603aeca438ecadb0e01272ab207a56cd791b24ec9d8c577c18b650c11b36e439bbd1533bde038c1c33cbc605b96e795c2d9e7491a14e2e0533658614de716fedeb0c8c387d8a0ee611cf34161ed7d9a33c19ea086daa8355fc3cda5a8fddd3ba2ab3c9ce5a74d9f3b0c1ff1e5ab3542dadf1998a8a91b1db5635f0de0a22a18ac99c360eee381c2aa61d613861acd89815f7309fe8f95958338f8df68f15f6721227331a2661ee441dd0f9599db72a9a6de8183deb96a695262c2b0db01268c9439a0dfa91a3b9003aeee2af1bd433df42a96ad444cfc6ac7b0c774291598450a4f266be4f1246464125e10d1f4e4e236a8037a0dcb0c5a9f34920fc8855c7352235f0d98cbb9e780315f5c1de3cffae0da4aa9ee7da362412118e11a3da8c3cfbd1e5eca67d0f96b9c82dabc7eda368aa1188e61c0aee3f0c9a762012c5a861aa06618a0f29d9b4edfe0caa6a8f19c6b59d98c7e48ae5918c446d96582df3d6ddf2502dbfd50246a529b66b2ae248eeeb745221d3657251e6047a2e48996660aa96aaacee6a9ed5c5f3657f1f59daad5c35bfeb6c3aeeeaadf011e2c388c4d10156f9ee235d8c7be19155238c50566977ea8c37eb00e919603f11c5cb4aae9733a5c5c551cc3ddad7fde5cc83d5c3e711e7a46e39e7ddef5a9c3a53d25c64d9c397ea71856a5388ada36ce83189ea59b7a9abb66183e2856e2622ea3a55a3c0430371e6ee6e21acff19c8789031b01ece71adda272b08749594642993c55193f42266612d4929588b765d035501b92e95a42b66eb7ddec0c9f6647caae89c2aaf8e9b0894e98d4498b8aea2e3df1ece49eda3be46a6c162d31b884f3d25be9d4e4d21e1e4ff65b90a48ad90409e214e9ac144b38452b0baed1334d2b75ca4555ca1a30caad101298a4c19e399d719d8a9afe56415a0c9e1714766917b6035fd1651ecb03148a1ac00270f46d61f17d1a189ea53dcc033ec429d156eee0e29a3c44e0a9a59af2ad033c341918c6a93ee8c33cbc031b82d8cace9aa2d2aa4452d91989d5b5321f8abc2122e62cce86c3211d92cdaa12f8355c56c1d91e6b239ccd833a002c3cc8e60a8103bbc12c0fc72c4a8a1fbb811fbbe5ddfbd1138af2f06c9ae8f4b95bad1eb1bbd5662bac82e6fc942fbcc22fc0c22f0cc336bfc22eb802bdf9022dbc822ba4423a9bc22facc865acc54e82ccc15946eb508b7b154de66d5e37e51532b2535336160cfa19258f9354beedfc2e6339b0ef1bb36fded6913ee882178041444bb4172cc3b91eaea88dfe0301bb43c8912b40455981cdc330808117744149933449db0028e8c380416cded2a58551b0c2b2c33aa8c32123020ce03417708125e8036682c33578253a2454710150e92a4b3478c10be0340c28f50b24c236249749d5942fb7f26e4943b8bcf2ddc8c330bc4057e374537775587b350c8c813d4462a776ea37ec4d4976c3375c757125176589df238ee62f8bdf6a76a427ae26289a430442f33bf4c107b0000bbc00618bf5612b750dfc035570031f20f60bd0c1f6c28b55d8e430752f08e6c551a4c33181d3f480d8b0fc85f57555f2545c1dd52f1d2d5339e85e56e160619d71c8b1f662c9ad6a8f53baeed9cac1ad3e0c030c70810d70016f73c10bfe2c0302d311ee6518a469e33646205e9ea9a2228d3d0c830d00f76f53370c58c23e4cdffcad833950722507ee5b567256d9832ec4007507f7185cf0f6d15df9d9d4f685436ead9895658317fcf652077722a4c30579d221d5d89049d02b23909460b53b0c430cd8f752233853fff60b8801373864c220928fd9eccd42b834885f71311738c4ac9565a4076978375c70955159dfc5ecdced9cdf156ff1d681600ff66017b658b77857dbc03f4003347043211c0162d381bc25053438495660435208c5642745386405e25d833820deb0b0304e154d381491ee7d88c4a643388843955bd2f6b5b7fd8018f700967b7bb03aa0b63ed6515ec1833d5032883d9cfe3b88f96a37d93c34432480814e2fb570cbc388cc833e18f2ced1b42e03ae3b007a98bb435fd3ab31240218f0f67487c11cdc425d5a983bd8833e54ab3d44ba3d44ac3960b23db8c33a0cfa3be8033fe8c333040336f8833e709f95476c3aa039a5df033a88c3aacfc39061ce3f10835203f70b28427e33df769b436d7d902bab758523d0b04b835b47902f98019d7f351d24033110032c78f50b4881385c7839b0b998f7fa3888c3b6afc33cda2865fa1838f4d53720c331188337d0e52a3f221d76833dd4433b7c83317c0326072e354fd88ab3400c10833ea8816177350bb0823fc4828c2f768d5b033708c161ef38371043228c4119e801316cef2665fe456e298222e841c66bfc33a803341cba18ec47b880af3d6c03257c0118f04017f00018d04130c099670fe636c8c118d041cdd3c11888012be8c3228cc117d0bccf7f811e58ba0747d93295821874810d74011844c234d001189cfcc947342ae843f7d9c34d57f70b28033ec8b974c7401888823ea4e1bc069d2eabc33a2037c09aa139ec4326d8fa5297b539f0ba3de4024e1b38757f813f340318c4c00b7c81a5834348273853db8032c0c3f695039c838158c340178c0153bf8062af2e9c3483ad2f7824e802a28b751758023c98d2fb65f5b0af508043893cd081b2e3341dd883b5c1833b60b23a3c493c2475587f750c248333d8baadcb013c0c3b35fed8c3267841a2d77770c3c01718038abc1fbbcd832e7441a223b84eff762be88386b7c32184c00cd4c02b70831abcf8bf9bc23fac020d2081127083c13f033730c161db800d3c760c2cc38a6060f0d3fe0b80012cd48057778183ff0837c0c317bcfde003040c183648d9f3766d5c3a6e60043684f182d4be380e05be1803cf5cba70e9ccc1abf6e50545915c6070e112a3603973e6f4217a41b2a4488736a4cd43e7ce9d3977e8e4b163878e9d3a75f17c9a0bba2fd34b8763ec995ba7ce9cbd6102610afc926869d36eee86c5a01ad3063379e1c2d94bdad013b15f7262bc706b839b376fe1e6966bf6b26a49930f1bbed0938e9ab46fdfa415f6f6cd9bfee0c282a3518b164d1e9daa796190aa66585ab86fd4f07989f995c5b2bb31b9bc90638f9ab76ecdbcec85118395ba539f5fb8d117d81bb866aee9f0eba78f579018365c587207ae1d3b58b064257bc60dcb0b166ea5a3e2f66c1a34eddbad7163421dfc131be0dd82b9767e5a76396af886a4ded006b66bd5d4b96aebf0cb3378ab6c547c0dc6a06bb2c986123342ea8b147d3e49c4abbec648279d722044071a9162b8859b6818a2280c4b845147a374e04144af86c088e4910dfbd2639f8ee441071d736294112a19638c911d7d4aa18a248beca9b11c77aab16611a528720f0c6c5692511b333864661db9ec71e9b32ec0c8a39662f6d9079d6bbca946fe2e6fd219e6c08ac620661bfb1ce20209650e4bad30c7a2c96cb339bda106cc6ae8a14326b75820e51b65a2196c316af42113a693b0a9a69c63ba30a9077dd0c16d1ccffa6a049f66f639c3b5172a81c79b71bc69a60bd21ae2e2c463f699a79b765c7d0516629291859b34a4a3ee4f6ea0c90e1a6bb6dbf53bf0e8e0669a7fc0202f0cf9d293669a6b8879af221e12b9c51a65e6bb861b90faea02b569f0c1a4cc876ad1e79a70f42c25dc182cc1671b7a84a0e8c17096f4a7488a6a8147426ade3d150c7d362a471cce5caaea85606c1aa65487e868519e77dc116a1e77d8c9899d79de318a9d17f741572f922ed2c99d782ef62729d760e8a2957efad9fe471f73d4c9491d7c9c4c34be79c431671e7830f18a32932cbac61cbae4b22b24924a4be41a6afcb1d44437e5122cb1a88596e66971e442278f5305a2c323d58c69c698638ad10c4e7c72e9988b30a0a9b4241eb0a146e8c34c722d8c31c010e38b2fc610438d31f008079cabf5c9c48b038d9edb226ecc01c71c58657de61f38a6c395957f78dd55bb699e0bd6cf618b3df63d24e42bac9a6ab679d6a11716e6a6f46bb7e1c640b71e824b9d69f429a44cb770d167ae6de0e1d82145fa81a73378f551a71ab2900af7054bf429071e6bc28581297324cc689f454a2c6d197dd231266198c8e8479e881fe60946761c166af176d4414747b4b918632589a1fe52871f8e618aa1177fdea99171e810873c24f2191884411cfa108738c2a10e7bac6c1ba6f8820d786622a085491dcdf88a40f4000f692ced546c520654a8f634aa416d2e61825b3436a122bd8021138b884424a8f2822f78a919259c47296230372ecc210f2fa94132c6919a30c5230e3e84011e78970e7218c31be69087a8724345647cad19f2e0063138e14218b4621ede68472b60e19c56c8603a93a34e188cc12b5e6143134c680b786c808449f80374ee81010f14a18f6641e30b48e00b7c785009759ca71ce5c056336ae09f17d8a012a1d0d68abc172109112308479aa38520628f8da4031f712813497800866389640c2d0b47390e6524ca2883fe1aa54a144970d1149dc0e865334a078eda610f4692c6648a68113be041268ac02434f6c88900d1618f63f02c510209863cc4310f5b80670cbc68473e2ce11a32ac031c742987a57cd8234bf083697d21833f342317dc08e61bd8400c62bc218f66346883a9c38f38ba119868c8051eb9c04ba70c66c41476231e7bc08b40bc604a87c4a007d0581c38c6310e33b8a60b7988c4191e55122560631ce06007ac64f18c57a4913c2f084332b4e3ab697407770f492921fa9147d9c5400f7edcc6348270203d86440ff6b8c636cab18d086d431f9da881ec8ee4163afc031e0cb4245287b154dac0600e5675c89fbc979172e0031f73180f78624087462ea565fe2a69a54c65f796653863a9ef79410c70218f95dc64251cb96b8c7a320f468247a6306081307722959452e703cbc0c74ad8b19278dc135ab2c3c53ca4480bead80024d3e10b0f3ce149c665a47083748fa7f81186b6c4e0b4aadb0798e46235c1982b4c6489623328885adbde16b5b58d8118b0919812ca651eb9e821e25a418fb9042e37dd908b39f0318b387401b50f190e181cc10d5001ae1be620471c86d3824b64020cc3b1010feed03df5f96439259585273cb18a55b46215a668052958b1abf464a73bb050052bf8fb8afebe8218dcf8c52b76f18a5fece2c06882c65087d10b60f8e2c1c110463080010d78a4e31a208250227de78f2d9a821394fe08452f3e680f089d982342414738f4a10f63fc8218d7f0c785b3a11075585721e2784a4776420f74cc431ffe50d996a6b226262e092afad8923ffcb1a52ddde3454a66729099dc9375e8c47a2f8bd84d6ee48ef2f5831fbe09739887dc139ce8436564167398f7e113fb05ad1e2a133298e53c8f76ace481727ec73ee4ec0f7c30ee668bc3733df6718f7ad4e31ef6a8873cda514f79d4631ef39047c31a2d17a12137b9962e876acc911c76dc79623e4947638364147120379c5443ce3cc80186b9c1c012ac8a22aa91db8dc031eed1fa8074d072030e5fdf7a71d945875e3fedaa4ffbe41ddd7807499ff10c68383b3bf7cd5c7ab0c1acfb56e3bed3c0fe46b69b750d696bfb3cd538cf35b0b18d6dc8671ddb388f5121f494106978c3896c373ca0726519ed321ce28090f562c4a88c6059464bd2c8cdd4218f9cd8031f48b0121df4900730f4e7335ce882c1d0a18e2896435eea68ec9264e48ee4dc55d052c4c94e728293f299dce013f3f2c8232d6989b563d26ec649a40dce688979fc966e36763bde41e98659eccaeb98c7a75d761c8a713c682bf1353a72b3b85e8fa3d3dd50ae6ae462eb7092e5d7e6903aa0e5528d5bfb3a4c5ea70b0385d658ba00ced752c74726ca09834ae8e3d75befb56ada91dd95dcf9b3e050aed66d3dd1c0b94aeaad12a94f08efaa778cb48ccdb62f3676b5edec78fbbed78006feb6b1ddacf4607bdcd310b7e6afa1c8752bd2dc435d77bad3c16e755c581deb80905050bccbfb09e5f4c3cec884d0713d18ade4ca41b93dc66befb2959cfeaf3c32a0742f610f8ce01246e593345066548e9ef45e46cb8591c46e829389c9a3e0934eb951528e8e75f4a41d5cd689c175726cc287dae3279fb999452d3199afa3fa94354ac9358e91e4b8e3622b11c79ddd31eab4d71df0262ab9ec4eefae0e1c1848ef94ab1b0007e30027852c8d71e4257016b0e92ccd1ce2211272070ff6218a3aad1d9043ea5ca5005da51d2a0af04630049704efc4a85548f0d3ea811d601006df21bd9c433b9e61db3067dab2cd5ad203f2aa61dbc2cddb98a5f386fe2a1cd6ed3cd6e11ac4c1a8ccadf4d621ddacebc2b641f55a2f1d600f0b87ed7daef07d54ec7d60040c2b0e46aeb0f62024e374e27de6611f98cc597a81166ac11688a11a84ccae5e64e478e27ed8812346cec7026e46d641e526a67e76e26570e21d860ee62ae626868efbb44f8a1a2b4634cecddaeffc78c21d24ad620ceefe64ce629cc21de0ef277e6299eacdfd3cce553a6de38c8271ee6c49c6a11b4e4dd0f02ea4e445e904cdd7022e9c1ed01c4eed1663d1d6c86271b0ee0215ad1eec611f8e63e3a44e35024f0443ce054d31ea908371b24b04abb1d878ae1dea21391a06566c30dab4cd07218fdab241f3ba2ddc4ce75a346f51c44ddc860a1dfe9d701bd0811b40c4dcd4611b4e0f44604f44604f1ee84128e4011e2a4e28e82120d521672a6e972a8edebe100c7d2f0c910f975e041d0292232a8ef0766222f5301e78c2e038521ee2418ad241d2260d2331a2fc982ff96e8e288082e6b4cf2577c927b4cffd32466246cdfa2631637ce26526661dbc8c2439f1127342e8548e2762d26146aeb18aadfc58d1147709d498f21477e227eeac1d826e490830d8ae0ceb6891e3a4ee2a432a4c1847ef90eeee4a50ef3e30374ef10377ce0391a3a2ec4e8c3a0d39762e39c00106b3f1bc6870396cd0bed2a32fd3033bb8cd07b16d51c451dcd44d081153dd420f5be081dda8d0c6ec5132f3f1c2f6710cbbf0fe0ae1611a7c070caf8cdec60146366225c6211c7049dfac2791baf0c2e82142ac478af0454620f1466e62238d42256aef46540c28742f4620e462984f0f6f13ea960428184d4686f3ee7c020a918e621a4be3706610f36f1dee6c3737ae1061c6e36e62277162492886287452e9eace2856a21c3e0baf1a2b2738eeca72821519ebe5540270948e71c252e9a0ae00d36eec5622b956c2ee26aa05e98e71bc2c395ab0b14a30bb7ced0391e3ee908328e69204491006d12bf170101cc1d1f1c8ad1c238f1dbd6da810733eda71dc8c2ac3d22ddd584ff5a850f5e6511fed71f5e0c126604f218582dee0814665b420e90d0cb7f06130b2e238ee7e14d26558fe132a2612fb2272247bc24527ed65fc7046266dfe9cf36182c261c62f14b9532a2711e0dce7e62606234a8e62b674e4189227c1af277a226376120a0dd2e34411270a1164c28f280f0fe90a4f1c2e5127da415e2e1227f08ee3d813fe402ee9ea33ebc472a2c8723f6b51eb5c651c3e50d8a8921a49b0d36ab1b17c2da4163500e5921d10d455eae11df0b21b15ef2fa92d432d0f08330ff3d60d44b92144cd8d55cdedcab881dde6f11e21a432aff01e6b54c5d241484faf462bae1cbe90202792216924283e3247191247c5d01d02f2465cb4470df220d341fb5c4efb12f22644ed267a02cbbc2c2657327d084f5a3531d43026145f64496e4614c7f35afeafafffaeb5faf6341dbc8cb1ca14fbaeb31ddc8f28468d26250624efead888cdae92d27d3aed7d40c6ae706e108b8e60cd21b696445e8e2bee26703a03473f03ef163f6e2d1955a494ceee4ad0d3ccd22b95cb635d71e77cc2f03a95d1780ef19a2330453507b36dc1c2d1f29ae530af054445143115891b308c0a63951e598fdeae3033179220df8746e101fe602f596fef0bc3011a24122573741d308259d5e1573b122061c459edeaf4ca27e6de872631912756f212d9a15f71c60e97146380425f77534648f24e71ae4ad313af9c343d6dc2e6482ed4546225ec0c28c2541daaf296f00afe24468aca276346f25acd745ec32f529912e0f6d0def8b6fe2647cede4ed1e9f4b30369b1ef28b003bbe11bf66f2d5350b93eabeeb24bea44b70545d65247962a2135391e34760b4f1b9743569e0d732cf4be762a089b453ecacddc367331c7ad1d1153214a2f1c6095dd746c1e655568335346653467d4c11f69540b31b3e2b25637e38121c7f0f92eb36a71140bd5a1e768ce45254dd2e0410fb14ffbe00171bd2c46468e38abb4fa8654623a127e3f52622286f0b4d55c47937154ce0ee5a127576e27e2a1fba4d2e0e49526adf265da41d2c2412a83063db595fff4945c2335168fa3eee4c5e30051101bd21c2e6659d170e930edb85a65eac2012c53289c96a4ea18ab00ebb37407b455e4924f8d423c9b6e2c65fe5751f13242f532199c033b7e2573fa525906f3da36b36669f65ad68da8e0910a97b01e4b94f5504c28d6017a68b4232e2c464fcf29acd54674f30b89490f7b542033827bfbf066c6e166a6cf6594b560d3101327784899ef6118d15725172a284a2ad3530f5dc64ced95cb362e7ef7cade4cf759b90f80523129b9f366b8f25e63b34c77c2f782461c0e2f53a548835de5ca4e8de93e4b05f52f5255cee370a27057509c92ceee2850efce4eefc2442e5eb8ef6a515377ceeada33d01876eb38965c49d605359904498a88a12d54bf31dbdad1f2e4231bc66d554b4f3159f5097b1632eb311f9556698fb62085f5f53a62686fcfc7ca410cc330f6b23797fed0817b87347addc1c76ec27d3972e45c3246866ed8220d4ecbcfe4b2155a83c220fd157dc8170c8902646293e3d0c17d8a220f73e262a0d072ed6c5b3d90fbd8c1de60e639a733280e303697492e9634ff3cb1d3d2331c722fe94450c7d8134fbd2146f294109764521956b6c472b924702e00871d36cdea44b9961956416b11769724ebf0eeb36ad9413dedd848501ef6d239b8ed8845b51c37cf07cf8df2d083f1440f918c7067a5b909e14d1f17b2f4a2d746bd101f33e27d0092acb59738e1216478130cbd1646c4399c2b3264ac157e352e1e08b127b22f6ccd75d4a6af4d95d428fc51e3dcf602dd335d3bee27628471dec770c1417d57c2e6e681fe7c1f86499bb3275e11cb00e71399ef1435bbfa7a12137b12638873171f114fd3b31dd2e11681c2d33498b17a52a23f11e7d04194e106ec024702a76e50233580a308f0382d8a645b3f77faeeee8e1aa3cee3161563e8f21a91cd7114cf2f0533892d6f3ed4d19941f43c94b755a3381b18a543f5910b45446b17722217927d657422f5211a32211112c1128c411dbce71860a916be2f0ce5011f22216fee20123e0115d8471480c12632f245dcf745268d1e520e2a96d525278d283af25b9fb37e9ae91b44a116946190193646ec411f74211268c1c3692114102115eb5b5bd7d6cb6a64af8654224b903903d4299ce2627ce26f23d5f9dea1a3374e60bbfe53b70bfab30c39762315618fae7e88ee03918e166159a759b17461f886a1aeb1aaae1bf4101c0c5a51275554e822d816f0661e14344dd6d86c9ce7166d65150fda2a5430a78108bb6df39e9866a3017843af5541a4a886eac42413c56ab5adc5590cdb191ee8e1bf9bec1e844c1fecc11ff421129441119401b263447dd36116e02f1efc011282a1456ec21ea2a117e8992706bd0bd1199d532c250b6e23cdd64cd77736efccae06c7128e113d11b86fc7a10c5e611feeafd19c010ca4e16c6b2429b12c84756297384e3c67c4a7f513901727483c8e6f41ee5eed4d90e58fb1426eb8c512bb94eeb834381dde211e6a411a7262ff6071ffb48e615d5818fe0388dae772b4bb923f1d96163b3001a54e68e8621ac7f2627fdc148b1accc31cf188c1d990d8f12eafdb22ef079d1809456f3159b5db9cb0f424a4f4165ec356d48b135237dd97167c81b24e2c20f5210e14811fe8605cd0a19d2512fb0e8507ae21c0356e1f44e116349d1ee4200ffc211e7ef57ee36123c5f9e4b43564d839620a0e237f622590c20d8ed1aec0b0b106e70beee1623e2e63a2623c7d0fd482c671750ccb0cba2302b5ee42caa75371ff9653e94cf2dc1516e912c1c2552380d881ddc7525e1650a76bf1153d731ce8e0475602ad815d3e034e73bd61526f263d052d1d022def93930255b1e9a89315519c2a0347e3dc38bbf07ee8088ffe28f0ddc6d30b54b98d3097d80739af1cc96dba9d99aaa538e1159ede7c47c36634685313f50aee8ad5211ca4e17e68d51abe4019fcc115c2601f60cf21df471f7ea106ece147364e1f9a2195de561d58462aa58c4b64deae80cce0d4d0ce0edb8154a61ffc6162d4011c0ec506661de9ead4af62001bfeb738a188801ddbe5e5c11edc8716f94c1fc8c11b58c619726449ae011e9e1f1972e17826ca83fd811c74e11bc6c21b746c4be6e11b360120bee93347109c3d7fcec0b5eb060e612d63f3089a0b77d0dbb84db5d4992be76d22387004d7c943c4e297c479fb6a45eab5af5d3b73eb082e94b811a44475eec2790be74e62c77212c17504c7d0dcc7fe6e48877e34d74e1cc897dd8c46ed2833663b772e5db2dbcaae1dd757b0922583f66cda3468d0cc629b86adda34b7d5b05d7b1bf7da5cb973ed56ab66779b5fbfead2714b1778dbba6dea10a72b97ae31ba748f03434647199e3a74972f53d618785f2625c67c89b2b1cc9e6673ea2ed343878f8e257feae451de376ccebe78977905d1734fb63d578ff4d991c64e1ebe5c356ee98bf7e58e3d74ecf479db93085bbe2fa09e839b478d89327cf3dc8967d7d3dcbe5261decd233f2f1dbb7bcec6f83327af99135c07e5045b8f6ede231ecbf463c618d8f8c38622fb80444f2931e0b2cf3e5fcc620f41f84412c732faf0020636e678030e3d88e480a13600feca338e4588f4808d3cede093071eebecd38c1afebc340f395d5c82522264f8438d37de5433148560ec7715396078b28f3fc78c31214d3c51d3934d5431c55037dfd02451542f5df5124d2e7dd48e4d2e31259339e374d32553ee6c95d53b5cbd538f3c5d65050b2cc43cf34c5a6999c5965a6655d3e734d9bcf51636dbd865575b8adad5d836e95c3318a4dcf8d518379649069939e8c0d398649b3d065935999a030f3c6584b2cf38fab061c97394b9a3ce6ae898c30e3c6604a30f3aeecce3a2832ca243cf17afb533cf3cf0e883c918b7b9638f363560a38f3e7128e24f9bfb9881473fee8c53644bd0edc38425fbf4da933b9815a78e3ed895bb15affef1c4a10c9dd578b14e8bc5f0a0cc3cedf8b3c81dfeccf3452bfed8338b22f58c539c3136aca84f2d37cccb0e3d31f4328f3eba2861cf89e6e8930919fb9883cf19c1c403143e993c311f38f26482873edb69bb8f37e878e3c532ee3c5c093e0475e46147ee7823c68a44e9a38925fad883632bf08c23145004b163944d277e6954d4122d54944c5875c9a54b6a7219b53bee6165ab4b5d47b5953c747ad5ce9c6eb6f3ce3b6025a3e79ecfacc5d63686ea6d175b73b9f5b7598dda154ea590427ad8a38a35e6693aeba4e3a9a99f7e9a4da7c23e660f31b544e3cd317190b20f3cf36483041ed770161bdbf0c8caf633797cd30c2f8908a38f3c1ac5434dfe0d7288c4ce3ca444d24c267aec4327c66018134d0d6080130fdbfb2ce2452db5b030462efb9a730c13613043e7a640a5632b74fa54f34724b31ca34b22c4c8030e50ee88524b2e7bbcdad53174f0200c394ce8918b3c89084322c2d1297cd4a011a2a0451c5a618ff2e803125f40041d9030875a48231dd1c803b1ec710c30e4c11804f9461e9410896f2cc61bf2a845261061896dc4c325b5f8c21c84110f4410ab66e1c821484ef48d3ba08115ee28c747e0a1123d04a38104e98637c4e1132546251c27f25051bab4940e11241c5203479ba4b610978cc3566df24a57c8c329f1c8242b5d641b57b8c2a2b9b5836d74c3d3ddd032a8429dc52d6b81c6fe5c02358dbf5d032e7f54d45fd2c197c4a50352d5400c3752c318c835e691a9a94c6a90b5197a206b1ef67852a7f4b18fdb2d063381b98cba78250f7b5cac271151c73ce4a10f7fdce339a93107266fa746b671f241fb6820db4a89cb07e92322d179d0b1d8368f775006776d728f39c481927ad4e31d5a3187788ca58f77102456c79266af08e20e3889a3575fc0902add61936e384d9b9c7a4938a4a98e9894a329d78c674fd821beab7d91261c114aad80b4ce7170c41bdd08875094f84525aed31c4801874e4002249b80436a3481683b6aa5a5741c544b36e95a56c0f492adb48945dad4e83ac2439e313e736d727a9b47c192a73dd1f12cd0c0065afefc44d33ffa692f7271cb5bfe98286c88e390878494a412b78d725c8331915b4c2809f3a9c794031d4f4d0d3c403999d4a8031eb8a3cc6662b319b6a1231ebc6a933bd6010f73d00a1d6485077b38258f36a9f258f3006b5bdb7aac5aedb2ad75120f9cc8d34e8dd80aa25a52c7fbc0684d5b4d641ebc5aa644d6c944ab1dd443f3d00525ec118ff149539a5cecc93abfa4932b9ae9b2b2e2e665298a8e3171b31d56311343d4a9938ee8a4b50d258a8792c81090e870224cec9042d29150aa0054a0aedd0913bbc144818284213c614a99aec645e894943ce7ba0a57c6c315adb0039a2e991b58c262b799fa894fdfc52320f5d247bee4452f9302aa51affe01297414159295438d63268319cad04a7c5b9daa5449171ed95c06770066dbf350c3abb21266aeb87b07ee9e8a2e7958063af160476c8639ccbbfe8e4eb57c1e56e4119e361dcb2be82a0e3b78b50ef1608645211ef144394c138a86749e67d38778ee85b5f24c542620118f3aa4268e8d7ef625e5314a5bad18e4cf2294b634218a4181c4e47282e4b801fd4640a9015ca93c392a1f398a91a796e4cba2ada33d916e1811dce1f080182bc5f18a8259243797d4638c0a66a9dd5c2ad33e41435068d1a99e03b596bdd42552d700b4a58caa5ec8a526d089710c65201318513166aa99d32a6620433acdc895321bd1aa47efba19acae72978895076ec8b3fecb63eef2799fe6703c9e87b6314b4dd4111ea678cc85e9add80a2721911a74b0d66373c4434db6062c377bf2c5d28a96c7dc1ca3365ff294731ad6af1bcd3157f6e9e2829869a0399cc850180250a42c13486952b26c998d9485263148b4dd89129bcc50707c33264c418743691ca6ae51b72b747aae75371a3739d509bb7263c776e74c9699da791ad2a0a94e6fcac746f985bd91fa8b211799547534123284799c56a36ad56b3e661e577547eb2c83aed5f81a3a9bb9f05c57292bcca8956d937cdeea2a2c600ed7dc1ec4bceb5d5fc81e770c79c4251d0f49812e62d44c848cda5cc756ac592b854a84a2e2c0f5442e03138c2ac4b467baac96aca68efe7688d2d4b346ad963a5b902c5f6ddd49711a52d6cde4deb2bb1ae1e8863460eb0d69ec6489e1908694c3d6ed2e89c3294cb95737d2f14db44993455c6c473a14561cac8ca7a360bc8a1bb3123785c8798ed0b0864be9680d4189379074b1a9e01e0ee870b0f72f7629473920d518d53f92a9af6734a6b59a299ce0e4549cd26a28b15aab637e54d45f2df0b15eaef3e23c8f6df8e0305ce301d7e6df95e63db1f92a993f499d47986db9576357760d0e6582f1d612e98946e8244d636d05ded3fcbdd4d6b6c52293cd6c9419b13c9edea66b4a58d832892255a4b676255b04484af40dfcc4640dd55a6b570e3ae40d3fb26e44514e9ee30d5aa344e9c614fe64b2765ca2266264266e52277fa54d7532466bb4742e71797893797474826741536d81700c6753ec655e7d7154a70729ab5754869454924378ad8768910113b8a7199da21a92242ce38055ee400fea806af8400dbeb00bbe200dc9820f35a30ed4400dc8d256f1900e36a77336470fa24673eb016a23c62bfdc10ebc600c22c729a2c5295b213e6338513e770cb5204188200abcf00df8f04b75c50b9bb00c81713512210eddd61fbea012d4430b91400911f1742f213e4eb77d5a522bb2a2113543186463748088630aa530e684500b418075078a406277a0d85aadf52379075be1f0234ab66e08458002651440d150f79489d55626eb7715d7541e5f83fe4668c415ad10167a32537ae32772d1279ec7828d1228a22748e2e0168b51547d0155aef77a4985399fc229d79819b9871a96413aa4a373e8b04becf03cecb008cc704bf0300dc4200cd7e00cc27307fbc07239474c154673caa787c7520fcc976aece00fb9402ebd51616e95661c366bc5010f91a00cf7b00ffd900f92d02f48a20872f0053c300691500b4a871ae86246c5712368400ad3c22ff3e00ff80006e2e05160346b925852681276103525eb141bf5e70ee4700cd06193b5101116684e422180770724020894a7d864a038773f4265a678770bd57648310e3ab4146182141de51556e2213cd125eb471e5f12465209705a815d5d31707a92827afe2317c6a8537bc417844328cd585ea6678386913884f648ab270e87f138f3d51864b518e213495a852e24471959b83af5d834e4328e53d518f3300e6bb00cf1d11b9db273f4548ecaa7736b966af61857e5781e74e00f74727c3ab7456d8515a5e50f254492f30006adb00fce8004e200908a600feb8013eb34625be7194ef259c5810dca600fb9d511fc02156604795c244df2b6863e0746f2700c8de00f4a642cc41009f3109d5ad38a1f012442e20ddf808a420994a20880048825def080a29850bad57f6507885d5295f7b45b6544796ae4365d3137d5e5260f0516b2d0528342536ab10d7aa42874d1707e1648a6974889b40dde70547e1918aef75efe851113b1471881010f8fd67b21772a0e367f9d1286e481556cc3419c060f9ef199fe2006b4502ec4f44bf6f04b39370f963492e0314cbfa30fe0e1a25f980b61e00fc581612dca49b7f3a128071dea604dc6c061fb8004ac201d48c00cf81007e4126498240f16916fed701e3c200ef3a75c4c410ddfa011ebb44a00b58855f71c048173348149a5752288c55688300663f245f3500b96300f3b5133c7400dec106e6c579e4c065b4309807dfaa703f80d768776570250a0e84469e22168e4a8687426653264e6004de3f025f7f981624479fa497031e59fd8d0168892177b61287bf1478914487c91a036784884a60e8b148d6515abb0c7298e4389f535fe61b1a1a15e883b20ea7300a6a138e10eab368ec6c1067a600ba4000674404bf3f00d99100389a00cb3800423654bc3600696b00ede3006c2907cfa600c79200cfd9009cc4227be5203c6a00f5b711b8b8007340406e4226ac5216f5ed71fc4940f60c00afb701dcbc00f71e01c6ad80dcaa206e2500fc25003c4c02fd103062113135c390fbc50092d310fcd0006b8c04960e00de2930ebc6003ad206adac2ae04310f662006e2100f60600bd2a10fc77004382780e3a07600650ed41006f6f00bb8400f1e225be1490d7af723dcf9a7df50b477f70dd5805044498a6b37806d9726a6754f9bd50e1ca35c50c1815ed658e9d09e70e2365a410e6eb61524fe481630e59f6a215e6e91707fa217319828a72a8341652988811881210e9e7271a9f14869056941f860fb05a296d15627867da662acf4a00fcd002017d30c358073e2610fd4d003caf02098a007faa00ef6400f41c0129ee1b0e1113d5e700c918007c1603cf3500ff8500648434ffb10077ae00ffaa0b9cb800fe5514b8a1763f48004a51b0f48b00cb75103c11076fe500a3c1032e8f04b69e62b2c000c1121882f910ff2f236cdf004e2c02a8c8b0decb00edf1004fbb10f88208fe1c044f860060c14a6dd60851963a605311304410d871b06a8300edd498ae2397748ab80df100dd210b4a408b442bbbf41c264864abf842ac04dab1457a210afe821fe5fb45cba2513186826b9b56f5ad166622b47c398166b518c88d2476fc10d85c3b6a9aa28d51029e1c07a8af32856455657b5b7a7f2c2f0600ff04056c8f25698d47c384c57bb241eab3421b4e03de3700a72e0bbac540a2c00429f360c34a02be34007b770c3fb600c47800bde80083bfa69fe300c3cf008c6c00ba2304ccdf005382b6af290a474500c9bc0027a200cd2801aa5e973f5d00cc7600cb34007a85023ba600374700cefd00f981009c6f00968e80e1032062a740be47775fbc00a79500bc7a03e94e00b03c114f54009b5a00b7240b10a250fc63006b3a00b03220cf0b010baf0056bcc44b59b0b4fa007d1d07450795bf39091997009d830fea8dd268a4369a80a08244a498a39b4cbdf09504231b4e1a9a8de165052a410ec701460c30e625326be48c15d5b0f62745d2ac552196c16e075536b5128e4b58cdb50487df1282a2c18dbf0c298821830fcc27b6b4aa423c3efac87323c7c970486f4c83abcd490f3a87c28d1499954c64b92340ee90ff5d02bc7b20ffc400b62f04ac8520f07ed0f0f624af6500f037d3b7372bab804d1fab885bb744b6df50ef6b00f0d790fed10610d393755e70ef7f04a5b24614f2179fa00375be412f732274b210eeba410e1814ede500e6663138bc5a50db5113e4365670324faebbf0b1a24a40894fbfb23dda90c762724d2700d4d2d0de090bf4249800238cc8bfeaa260d585b58966563e236dd804aa675754046c1d7050e6f869f6e5237c9400c27085e1b9c9688c23782d41712f770449518edc45e69c50d329c492f0ccfeb2c55c8722acd674a397c2cb703576cc3c39b49619964d0fc85490e8dc3a6c44a88f0ba38270f72c2cfceb78ff2b0d9bb74d1385c613d2ada3ddada73f3693e87901d0574b38d907f25464ce4926b2d13e8905b5a1264179564ddd0745bd2500ab84e43218ab0b5bf76a70c5e6a77df500abc500ccad00cd2600cca600cc640c0dd59c0464bcc021c8be99950e684756643812f515afc76152dfd506d834662e96f24380d796382d6e05d7e5228d91017abbad77c3db787a40e091a68e73cc3feeb00cf577555f37c558cfd60e0b84ae098d9a50dd9e101a2c3a461fd987cabbd4a70550f138d12cc700ce3a00a7a200ef3782c335ad9eb416aa73b2706bda20e0d6aab74613daa99a04627629562a25d62a48678d1e715bb065d3e574f12712f65f245405d6d1875642f410de0909c1db213e9208a82c8cbbc2c0dd1300cbef00bc5200a439006a2c1068220087fe0068210086af006a100099fb00bdc1d0ddffddd028cdcc0d5765642145682756aed8b401d665cf946ebd14d5d2b376fb657d45c1cdb75377a92df756db62bb8168d92d77f24177f911894020f8ab10e9c6e199d1ec32f5ccf0d9e19a9c1cf1c16e1cd4748f5282b14a6991dea2b17d3fee1d954c6fdb0cfa72bd9fc5c0f319d6ac7e261a47d8f9ff669dc94e3a4c936c6b2c3d6146608291b2158a9f1b6a5f4d11567e41534666d21117e55e7a854f2cbad8580cb1d940a180dc6500cdc6d0cc7f00885c00622e0016a30042490011e300224e0012000ef23e0025190067ea0031eb006c4a00c9eb39dad4514421b94e1f00d02b576f9b7bed2bea9d7b5cc6664362fb1576c9d6f7353e84b47969bc7272f95821eac1778615ea897287fb138861168b59929295f7b877d2c85ed60e1c87bc327d18d4d3a1c8e49a1ed2cad4e59e3d87c313da349733199b4daeae17caaedd0a634e3bb7eeb92edd8baeed0330e47c574ba34cef470451f1e594cb2fe341e3ace4eefe0786042e45e52955a0213310112c00d0e494b1442f2cb01fccb551e8ac5400cc5900873300444600226f0043a70041850022d50023240021870011d9001178001196001f40e021cd0012580054df0044fd009cda0bf702750caed0da1510c5a1e0dd4f0800c714e5bf1146c08643221356186caba88591ed54d2a659f85eed6f240960607531caf676bc9b67c2d29a7175411578db07ad8a01eea858dea11ee60cde7698e5d6123e9f239fcebfb78eb1c06e2219e4920fef4747531f27cba131de2de3f27c424fee22f7dcdb7d950dfe15bd826b1ad60ec7039843ee862251bb366627fb50e6d4c4e98551e1c281e4c04dc0061ce5c3870fee0c279fb762d9dbb81de0e863be88d9a3469debcf9ea654b111b364940b8f05062c68c131d289c3c590143860c3788102171c1028e102048d018796248153f9038f93246ed9bc562c784d0c041a309933d722001ab36ce1cb881e6e4b973c70e5c3b79efb2b26bc7102bbb79eedab57bd78e1dbb7afaf4cd5b1b77edbb776cc1b67b050b56b267d6fa42033c0d70b56984a71dc6560ddbb56ad5185f837c6d9b386ed7c2454eb72ddde674dcd2a953b76e1d3c78f6489b263d6f5ee9d3f3eccd93a73a356c75ae6dabc63d0fdf3c74f262e7cefd5b75bd7ab9dfb6758dfcedbce2b8e52167cedcb76fd8f584d7f3b78f1cb36fdfc87963f73afa73eac3bbfec646cf4e9ebe76c78ca96687f5aa3c76f1b0debf6fceac3974f1190a94e7985a8c11681d73c411c7a0830c1a271c73bc29079c6ea6b268a0051d14c79b688c39e50f531619a291409ca0e182072ec0800107566400020f3a18c1020d2c80e001061ea8e002963cd000840e2e70c0820c4400c9832194c0e2976176e125133472c0a0831274202187a48aa0c18f618ca926c276f48b4fadb9ca52cb1dbac86aa79b79de91c79e7bd202ab9ebbe462a7aeb35a81859864f6fc0b303f0583863068a659ac31c6b6d9e631c8102dc7b17424cb4c9ccfd4f94c34d1e0198db5d250634d35dfe0016d35d956130eb6e96073a73cea4a3515b77aec791536f19883fe15d6e46895cebae9d49b6ed7e7f059e40e6ceed9671f7f6a11661ff4748d4d57d8de218e38f5d8e927135cfaa9e79db2c2c4efacacccf1ef2c70d951c7ac76e649678e75ce02c71b81082a289c6a0c9ad01b70ca39d05d8b14b4e8a1a18aa1c511268e7882890b7a24c1031c8630c981072870a0020b1860a003072850898207307080e20756fcf88107845c80820b3c980184139e48b8051d6af28004103cf080081a9830a2094c88a9281c74cc5107acf8e8844d2e6de9422b5b39eb93ab1d3993560fcf3cf784e619c0acf173b0410f6bccd0c216ad261c6e1045b4b3b23bcb8cd249411b8d1bd64c83bb5379e0a1673678e4a90d9ed5d491079dbb3ffee50f1dbecb826d38dcf429cf39e15e6bae3ac3555b8ed95e799d4e9f7122d9a7f171d610a7b8e73ca55c37537f23af1e4d2ed927d5f95265271d3abf72d02ab0d41148a077c8f1029a79ba71c82181fa9dea2181782728a283a489a81ae4a5f9861a65943106943646f83162943f08618612b008018e4246c0f1a41b29d698020628105245071670b8030f44d021a4358e20224a0f1ee820830e4020020912523802094630821d00410e9d28c634cc910efe08ad3e6169da5ad0429fbac0294e7672e05dde81275910e3191fcc9a350035a8681ce63091298c63242399c5248a6c907ad43ab6a10e4c6d0634340c0d0d3b650f75bc466f7f1b556ef84643fedee0ed6fe839551255a3bac201c756c5b1d5e370c3b8c2cd273671698e3e8a718bd49d6b1f4858863eec131b37ed6374f129d63e10e79b77ec43145fe8c79ad6640e7bd8a358f6c08a40d4718f32dea375ec10083cee0134797cc112faa04a431e0291a998a31b04f18638a8f13b8810c41cd5f046358c518c62e42218be28052544310825e4600415c0182a3fc6009554a0020f58000216503207e80f481a5b400336c0be9364e095ebf365053ca0b155460c6210eb18053ac0800ce8800640c081085a80832774821aee32473be201c8ac98a52b63a91358e4110f31d5c96975ca565c9ca62da925c318c9b0463cfb22986948e330836a4c0a21e31815fe5e636c32944ca2203543b4d97052a40115693285d0d4fc4d6f7ceb0ddee6e68e72e56d7456ec9570324ac6dbb8e689cc69cbab88731de4c48a3cbfd1966af6c18b01edc3193608236ce2918918e8c1185fd0c33ed8b18f6324e216d2f0822294c50e7d34a306f6e81b51dbb1083dd0421736c0859ce4f10d44c4e012c680040fec01167de4020cad58873f5ea0077b88234d0eb217f122f2a0d80d845f11b108358c218a278c000424f180903c008211980c622aba51062c8081bd5aac63b33c800556b4008a2180628c75188e44b63e15399662807518c8888901887d2c022d20420ef6378327bcc218d2904a5662a3da796cd33fda3acfb4b822a76cd1fe6569e394c72af4920c0f5a0d6b81d99a094d88c27e2a6a519089a1402735434add906da1c1d4a5180a2abcd5063647e49b462fea1cf5b40a388d6b9c6a60651d2812471f216dcb78cf2b52e9e4a68ecbea072d94600f7d60651fba78c23e7653ac79f4030c7920072de2b08cccc9e31ef940022ecca88f7d808112feb887336ac08c7964f3be3c409c3fe660890aeb231353b88738fc818831d8c320edb257ed12543be06985ad10e9978678b1081c7400032802c1073af0309684ef61153089c6567481573e0c042d30898d1eeb8011b820048f65802c65b98003dc48622b32dfc524cb630c888c012990c106067be30a64e0996b480578c2821eb89803fe55a61a299b7c639d78d0165ab5558f1662a10a3d25a36ac0cd5a3da781357b4e2332fc3c6e6420739919ae6333f0f88c6604f7994a8de6867d33877449e5dcd8c42354fa41073a50451df95c74ce9e020e738e836af6de23bd6dd1077da3959c55a37a40d9b9ef189461c654ed231761f04759dc612a7f2c220ccde807326a51167de4030c8ae847aaecd10c16d4621fb578c1328c110e77f8431747f8c63cc841076350e55cc390423ac8c1064bd8c35e12b2e443bcf1c878c50e22fc2a07449af1083578020d14f801082a70d9c5aea8033bbe91c340008103c4f200b2b472c670e480031cc0619655112e11d0b188ad6f961a3b1f2cd94731542e6063fe1db0401644c08125fc287f18b8091c76d10c6a4cb2576b5a2d5ae8b2a691d2f63976aec73635408225f80116c680c52f88f1db3fd1b33081224c620cc318c7b850a0c8d5cc66449336d04c4aebeba094e028251ad09046707ac31b3dc895aa35c1e31dfa7187a8d97e7354b3aa3ad7396fe166e5aae1b8a9a3c171cd3db2829c61e37c1dfbe023aa52aa5206cfea1df6f0c75bd8b89ef332b81e82d7d67929e8eaff50052b750cdebcdb45958714c422fd8a1d8a8fe78d66d0020d4328d15f19cb8006cc880132c218054e20048d397696082800045654f116c55245031f390256a9222523c0f9b364c0c36739fb074cd90117c85f095654e6134421041cfe70c10362060229f001138f68c396aa11ea2f65132cb09d0e79b3754edaea8a0345c84216dea0db57a0c2cf809106a6db9ae0220c41312ee4820c7140c0acdb06196aae74703403013be75a1bfe5007b1bb2176408775b88a1b029ab88b8f6d62334f290f391bc1f2b095cf7115ea800ebd9b87e5a8a2ab80bfab903636c18fac4095356b15fca00eafd08fba588baff8128a1a88b73b0b71a89dfff88fa9288807091e7983247c7108e1c9246ac0a462580425688123380193e100903911f51939e8a3b858428086733e29ab38c77200e783b2828b250b7001226b808ef91808909817f93d8a73c3f539890b60260a1812c1d21f1bcb801008091a50033ffe78024858043958849f288554108562f0866df28aa0db26a7491aebb88b79f80123588225288125800336f084a5f30b68500538688454f83fc1a806acb9276b9086025434c91087b2d906465b0785b8867220a872682ea0011a50c121d0888750531d78101cc1c19bda41078ac228ba9b0fc541a253c90d68119de6280ecf39a9e8009d2a6293f1988f72c10aebf20d10148b4e7307d7199ab5083579c8a669dc0ffea81d813037aa1087756088760007030107247c10aae8860981248b1007793b3d6fd8248a90066248843688823248021ac08242a00121b3000b001206983e90744333ac2c33acb808608002304304b000bb1238bf7a800c1826915132fe8cb100845b9f34ec98842b3399391f10108193b93141bcb10e2081349003eab18923508341888242f8854b14c1f8630b36aa3febd08013589924c8022c800347788561788657580543200443308557503a63f80553c08442e0045ec0044cd8056230066bc8c5c81028cdf00cce70b40704bb50134cd0103b7079c650bbc0b7aba872f90c895ac7541b9d264a35bb730ec8b48ee108afe6b80a53f314339187733195fb5847860897d15cbbafc08afe380b7f040b03f947b35ac24c63088264c2e12908de89b14562428490860d318562980550d8855e508421f000208100e8a3988f8ca5dfabb2c89a25113001c12ab31d89b228dbc98761ac8ff1b8c362feace933b90b8098e98b2c1389ac8b5109f15426434411ec338234c0824660842fc0812829010f6802b46c0663880677898b9f9b8e75aaad1bc9bf25500122c8992948056b80852720023810844380032318023858821348021d00cb4e50054168835f588c804a94ccd88c72404071900685a034cef80cb113bb75d84f7c41ccf800bb16cdae55e19bc2239dc499a2565915be938e9bd315d5da39c381165e191dcfa18be7c00ab4c0a372548f6ed140d41c8b5d31936eca26fdd0c746a2cd2f01c877a99d262c88311dbdd2333db892865e900324c0010fa00112d0001d70812c500531d0011cd8010c2501c61ab8027838c7b2bec65a800a382c1571b88afe33b9364443e873be0278ac3f35be28fb3d06b8804a3db89378000880008ab1001d388135909829108532f88024c0045fc8843718855378021070022618010f808352f883326883553086729813117cbfb5f00d11308222208122288124d00227d0022c09011120024298044338041fa0802458020b20820e200243788325580341e0046538aecc988cb1e10c79a98662b0cbde949769b0c27478c61cda34c11ccc7920cc74f48d7291cc54b18fc20b0e7e0d8feb68afca44351264137094c1937accc963a332d11633f10a71528b76089afff00fd5a28fbbd88a209c462ffd92ad60c2f673a46c3a48143b4871e09d07e99d83e8860c4188d3fb0663a085fe27f88013308532f080227883395002a8dc0553c0833f588387d1980a20012f53be9dfcbd8d0349335c2c04c0c33d8cbe29ab3895244332a42ce5641f3bac808d23d413d1009141812578833d803d1a08811108012c4082372d01beba8926f0045a08845fb0b9aac42209aa9302a8a514188225700212300228f054edd1813ee8834230041fc08029000208d08121d0013f30843e480343f856047c14617434e42a076830865408059e31866df885d3824006028d774046667407b71bb6d78d5251c38d741c36d2299c785041cc4422d528d8f1b00ed07c96f1280be43829c9890ef2babbb428d2cd1c0b7b548d78a08bacf00afa500b38398beb45427169fe07b30a8beb9d8aeb0d0b261cd3949d4288404283f8868888866af8865e18054e688124388112b0803a308552408334688462d8051ab03154ca18ec0bb2263009ceaa800f104f0f6801ec1b4a417c001998ace78bb28793be349c251651914a0592c59abd8bbb9187f1001d08021d488234f0044ef802fd1981130882166881e3cc119ac18015f09e5168066f1013a0b3db0250261c38011c68822528822a780238c00223c082343884b384820ec88225a88010c0811ca803b314843a0804701d5746315179510869d8cf5d68046090066a40d75f5086c6b088b80b1c7408076a8806709846a0018dda4da2fb682de728c7cf0407dc8807c04bd254fb4638fedb28c7692fe2e039df200bc9491cebb8d286d58fa0898f259d96540127ffc847093a8b6ed88a811c17ad0087fdd864d343316fa80883383d92e59dee308647a4843fb80348380211708219e8001628011479a55f4209548a920ef0655402c9903b11f73938971c891ca0803f3dc3a34554c4722c939154f549c3a5fd4eecd3800e4801c532023770811678834790011a2881fcf1ab4a1d819b810355808432a0012978056ac0220aaa87753a0115e0002a388451340222b0835830cb37c00237d00238788364a5810ca000c202e7c325044168846450b4176a8c68282165208654e0844ef0855d780662a8065be092742887fe283b779886593086d382b1fecf180874541cf9f80d5e4995b0884c37132f719ca0cf6195d8a064aea8a0253d8fa07e0eba389aa306429b6693e8b5c75411eaae9893eb0de5ebb5977fcc52167397317da4f60348d37308d5eb97a1188a86f4066538850f20814e380242cd80253882fbfc110ca8000de011f34c389383acec749881bbace72b1920ebacfc7198fb393e423509318c32290bc9e6643e8b19e60e60e12378d537d88545a0812e339224c8810f00810b908027c8813e90822640025bee80165083571887ad80961cce960d20012900e86a550110580343e80442f0833ec0022c488222e8420cb00054728119e80343d86d4270046208d112ba865fbc0c6b2086126a4b4130fe855430865df88550f885decc348198a405320647180546f005615086757088fe70077f040ee1308b3ae98ad78096530bd2662947387b96090a27f25813db821638b958faf0695d610ba39613af306aa30e0baf90deb010c2f085f0ee3d90ad10976cead8db74abade0e482e8eaae46b1041187a158c870188ae391066338065f38053f980336908252a81fe1ee5aee8c2cf729810f3eace56bceeff4189a641f91a9321b7991f544a6edc418f2a1326b1ee6ac2d328dc1802f48020c303963bee516900104e6980c68812070011cf80064fa001d033295e88368d8cfebad2d6d51011518821380823ed0823430c53a28844e88053890822580028639cf8afef180363004e4360446808543d98614dd06616c8c6750856770054678686868cb4e5084baac069ea1865d40056f20e963f8034620866128860d290669e0951cc5d7c4e157cf299cc6212346561c136c95b9980fbcbd0b00ed0a13dcf5053f9a32b9a2b3189a9abe0f07ca526f41078ff5de82481009e964329d9034e1e44dc64d7b096be6e90e84f8866878d963f80427b80362b0053530446016b215414f90aca50868381be9328a19be299bbedccbce1bf92bb9164f0b103887114979873e343c8002d838368c9887d111318377643a3e1381a5f3b9be8fd080cea2c932530a272082b8f405654027a35e0229388449c0f341ef8335d0022c3884428003fe38a0811f2e1f9131190dc00242e80338f08341f085167a146b8886cc607465d8055ff0834700866d30064e60855f28066b4887683805e889867220e98c568662f84d65089cda0de5ab905d4b76073cea2eac58a252b15dde35b5493e8f8bf555799c1620f475a8aee7a5469a5d179af3d81640e28fac107640ba0b81302b0c1fbd346917bfe71de21953801c65af6e1713ef8eb1560688308601f1055e68044758843418824140052410011250aced5c5a4145771671980688800b4e6c884377561a6674371f878b1810d0800c602cf391a5573a090c6801e15b66e5bc1816c96691916b0640011cf87c41fc801b18b887b1182003e6c87a000e701f10a0fe5348b0835f18975d17782c985c0dc8024348832c1804c3ed8337306223a0012310810a10be8a19813ee8844e08844618056238b460240665c8ba72308669208636f8035600086ac44c7132262d5cb86ad5a2995387cea1b547c06611f3264e9d3c79e8d0b99b276fde3c781eedad7b0712a43c93f6ea7d9c570fa4c977ef5eb27c97911d4b79ee74ce63e7ae9dcd79ee30ba6367f49dbb9d32e7c964273365c6a64065267d67d4e84e77e6daad6bd76eebbaade6b482f36a0edc56afe0d8950587d66d3b70ddc0892bdb6e2e386fdedcbaddcb0c5cb86f81037ff3f6cdd8274a8f4819a3f4e4d31f25446440a0e0e001030708362f5880a0f382cb141850fea0f0e081850b203a3cc8f0013303cf9e3f3ba84dda7205d2b51f60a870213385cea5773378901b346807a54d53e8505a830b0f14a43412216149090b1f40b8a850c103ebe5a73b8018b246c9094f991641f2e54d9ed37aef1658c072c8901641860cc98103e70d166b404104164de0408307153cd781148e18d24927a6f852cd36d7a4734d35d728238d85d34483e12f769042cc2f8dfc528c32e2a4138d31e9a8f3a23aef54c30b63d148736339e684638e37e1b8630f52309d34a4502799d48e9043cad34e4a2c3935934d4c7ee453525bf9a41395ecb4e38e4d51c9570f4e3121c5a54e4cb6a3e5555f7905d44f6669a5a639e6d405175c5fb5e55638fe5ee9c5975e7deaf50d38827d33e837e20c06e82cb490328b31b34032c71333146142050f389019030c7c966967081ce0c002b1758669a8c5558081051a5c50a9031e8ce05c071528875968178067eb0797968a00a90e64300206a55960db020784961b03be618001a8a4b1a05a06985d10ec050f5040ed72196421431fc414930913837c024928c57803143bf258604115f84d510513599c90c1114bfcd784061e9c302007a6418083066bacd209268e54f20b34155e130e371642e38b41c654530e2c69c8f1cb338ea0424c3ad61c234d431b39844e358ca0120e350851a35739e58485ce581ea51b124a4cb5640f533287b3d4472679e4d15350c1e453fe9c72f1e84d37ca78334eba3a71d94e4e298989d49663118d9557636e95d49a7689f39558d2f045575c6da925d75cde9c35769f79019ad79f830a33a832d17c730c25b38052cc1c653c9186092aa0000168c5c576e9a697620adb67a5c6f619ada15eca9b69a02e706aa6a759db81032d58d078e3a38e7aedaa0b74e0c206c55d90ab6e0ec86ae9e595b24a020d2e74d0c105b63f70c1724360514a2ea2c49144087560528a3757b15302041a1491c514fa4281857f70a441bd09179c00071619d8b66a139df8d1c928a5b0c2e135e26c930efbdb84630d30c06c43612a7658334c20c418b38b2fd7a0e3e28be0818e727883116b304639d2a1a36aa40c1dfe42d148523642259dc0272b2d7189cc32f81196bcc423f2a8093bc2218d3fb5a319bcf0852f8e518c5cd80218d1a006c88a5295a058654c5b6a9396cc921674aca987e288535aee4297b3cc256d6fa9139ffaa297b41566507bda53a10aa317bb7d4319c62886301e0109483c410714e09d6d3275a9d23cae71ba72dcb59893293142c0029ae294e14853810ec8e60217505cb136b3c65085e634a341400634a081dd596a90a771c0b22c759b6a3d000210304e0646b300d48ce003aa01010832e0821680800652c0400794208736100215c6489e51c081052d60e10425c0c2240e0107222ca1083ac0c20f4e901a1264a1091bb0cd6588c089550cac12a8feb0c635d2c78d6d30737dcc7cc52f92690c399cc2117d284430aa01c075b0cf1ce5d846395ca1064b3050193b5a888a8008b38d0c45234e63074674e2339450b02357da49466e920ead7883179fe0c42718118832b4e10f9890831ad6f0075f14036286f94a98327226acfca44d6fd2d23bac2416be80ad1d3f0462d1fa3236bc74632fe1d0cb4947f88d6884036e07f1d3db9cc80c63d03417bc38c63112e187417c80029114236c60e7ba584dab370cb080730ed929e4c42653649ccd24617399588906022308816a5853a9e250a00216f080712e4082e874c002a7c9c00524e700085c20037374ce073090b9355ee6545f5c160b8265ad0a848004b8ebfe400b8a608809252f6befb00007b45084261ca20f75e8031cf04384262cc10949f04011faf0867991200224d00009dea01f55a46217cf48a6c29a99cc6a4c6363d930c61c04e186f34d837db66d598eaa218d40b881b0d15086cba841d31bbd30470dc90a956c8295965cd0693c314a3e9bf691768cc3186a0801083ce081ec960003e041c21adcc0883fec0d8bc6f82174a59694ab88254eec18873900a58e33bda36b5f539338b4c296b279742c3ce2534b7bb4a7c0a0d44f7f328c6108230c4a30410e72d88323ec20074aa081063950430bc06aa9d13c8e0119c09d1f31a59c0598c65a6be495a74257aaa5620a3898e92a063e50c9e06446afb6394dfee61459aaae6a2e338774ddaa382c46a766a65964ac6b05408004229c8004388043278a618c9479851d2798020d5450882560a10a5200020a9e5085285c93106c58c210a6976632af210d9df0842952d18950282343c9bcc63ad6d7be6840c316c4b0c61e7460875f48831a16f24602c7518d9356c317e29dd12e6c448d627022b682504314d0a00445584381f0dc893a6ae691787c0467ebed880749ad24f854a3144dd8ae07449020def9a6024708441a2c4b832734410d9f20c656ba94cfa2f8c42cecd84a37acc4c3762cfb2b3fd99a58eae28e23d2052e6be3d34ba5280d71f4c918790187320a15a86f040f149048020ddc20860fcc20092da00010fea090810f9ba6a997b994eb6ad3550e97a652c68171058ad54705e95854cdba8c713a6c29deb9e6379dd155b31eb7bbc3f9d80177749d897343815c7d86572d660004542083126c205aa6f90e0d98108420a43c109ee00431a8d10da3a8200b5a9884210eb1842568e1043758820528e0021dd060092aa08109b290842663a0044d00c20cea608842b8c10d7f680430509b67756c431d18524528ace18723f8e117a5fd841f72cd8437e41a0e6b604314da207736a8e1096c7083139e3084263c81084f58c31bfe100839b06110bbe8d1461ec294a47ca4f1f1407546ecd1917ccac31bd4e0c51fe480831990c003ab3a5506c093010c9840071ef85512d8fee0074818231a334757d5aa5ca5b308576c6789d39ab454943585e5d874b9af10e532c4b87c4530dceed349f37252012f7fa5b748851cd0c0ee37e0000320c042192ed08148ce9b06bf8c7853e1384950296e728a14d55165b5471f63a636c02c4d68f60dbb0de3d8fdbbeb40ae40c3614b69a654ba32ceee48526cd4dfe134c75fddce1cb540088c401abc82313483ddd8053b34c01434161648411d2c410e3c412d999e08e8c0090c8116a8c61bfc8020f4c110ac8a0664009955010e44811ba88232400385e4593ad8e03644c31fbc8220d080db3581124081134841133441121c411238411aa4c111d8411fa0411aa0011ac0c11c30810e0c1d1a9441fe14240112a4011b7c8112b840eac981232883394803c4284331504343b0c3495c1048449037400220144331fc82283482128040058c8018a4c11e08821f30c108f06107d04012e0400ddc0011a0c11a3c420a5d118a581e8b284333948220b0c1138480df950127a4827b6c4d528ca2519cc996381b755d1beea1453794d4f2bd229eb88560049880794331448614b44077e04eb07807282908ede8d88aed8a6c0c205d3d80e3d415f959cea868caa6849ff61d5271fc5b67f01fefacd15125081f898a674852a82892e6e0dba86cc6bfc58ae6588a71ccd1076c5f0bd0401ab4411d3c822954c3388cc3092c411f2c41122c810ee8801140c11248011604fe241664c12abd811418641f1c017880d61112c10e3c411dd401304c83fe4cc3322d133345c330a8811124c113c0c11118c8101041140c410ee440113201114261132041153c811202410e44411a04821d1c48de111d16a0411ba881134441dcbd812d40c2287d811c009b39c0039774843d604937a40324e4c00dcc002958034128c32e0c020d5c400ef8a41bccc11a7480abd891068c400ecc4059a10a097c800b3c011aa88112a8010f2041128c40e781070848811278d21dfcc12328c3043945ba141b5798c557a8cdedd945d9c8c55e78038740a661dc489f489130144323884227d4810c4c4b5e95405981807735c707588026910706a0231e1d8033fe764a6d8486e4888e8ffd8652c151f825876e18ce38f2d1058c8082389520194bfc61a36e2407ffb59f6e6a0a897d1118d5156668c0ed04c109a480dd31c110ec412818032da8c0f4fc0014544012bc411d1042cec1812074822110c21b98a76389561de08007908009e00021ac422554822024c11dd4993110c3345cc3fc6c033174c21b0c811200c114ac0113ac411be000ed180111d0801234c1114441babd0113a4011c20c13fde000e18e81194c10ee4400918c11f0802163041110ec114fc0d1f7c4112c41d14de9d1c2803cc0c853a94c308f108260cc15b3e022aecc22e94c22870020d38c11e24c6279c02243c022724c18771800794c0104887fe26ed4019ece1767955e881c00880470be4c0262d5d2801c21f8c023e2557947c0d4555145938e6b5b98d2dcec22c9c022d94822894c22e1843dd58913444833718830afd4108144107a08a6956ce2455001e2441701c8b1d9187063c5c19a1d8a770caa56686e3885f6c0ee3c339c0ba789c18290e8e6506ab7c07051c00e4e09b82884ea8785cc785ce5cb98e82041c699cc66bb4800c70e96a504009f8550760c1406a813ff6c109be4114ec8727c4422114010760c009688003142a106401297102271882c19802813282c4708332fc8231d0a02ab8011638c11b14010d64c11a4841ae49c10cb4c00cb45b8536c186da24b23e811bbc011bac011670fe5209a0258bf2000d188113a0410b84290ed424133cc106da81202c421a4481225442283c4276ae8c2f38c111d0800e24811a74001aa84231908221eca913b8c0073c0127a80227d8422a84c217ace3e84d4b0e24c1ed24ecc24e8b0be40027bd4a6f98a30b90000fc081228cc22e14433ae885cca5c555b8e928aec90fe1175ac497373c42595580bcaa811db4411422c117fc8129a8c2319cc227c4c11ef20e6c041d69780004d44606888082749568f8db6ff6d81a81e36c7006af78c6505d00023447d059cbdb860603a86aa6689f6620c003b00667284789dddba8f0c66d264be45c46670827033440b460eeac58c6ad1299b520520b908021d20010fe94010a18c116d4c11d68011cd4412174c22a18c224680216344b046c000284000754c020f98a07c88014f001841482215402345c833454c32e84c234fc0294b90226e04008cc4013a00111765e08e4c008d40b0ee8001338410b60810e80400bf81d1324c11ca427bf1a010df868fa22010f10c110e8c0e611413bee801838811bc88109580b05cc40dc0d41140c821a90c008e0c009804008e8400828c1277c0243990229f0422aa842143cc128a4821dfac21260c087adc6dc6a9f69f0ce08c86b258d800b041d28758006dc00faae811ff0cf90665e2070829d52433be8c5ee8185b3e15e9cbc6938340324848008404b6b64000eb0c1114cc11bd081fe20388118b4c11ce0811380c01da5001098d568d4060a88c10634c0bd110b674cd21df5edb1909f7770ce66b0266bead1e4da8665302ead0c9972bea6bd55e3e180d26fcc15031895a8e85189055c57d5aa683007ee2887e2cc26065c0052699f0764012ae4421b00c10704800580800af4c17ed42e1f0802119880655c8a0e1c010e488007f86f1fe00e5af155114c811c788223500230b016fc98c2b83e43210cc10eb84003e3401dbcc113b4c0afaa400b34b00b88c00b12011fd080f5e940192cc1132001129cab13d0400798400e1cc113585810ccc010d08002b2000ee8a40397d5c695c60ebc0223a4c1a182c00ee8404aee0008400127b002305cfe1131d8822dfc822dec0231f8c244144207b08031df0e5299e6b434eeedb8ca76fdac77681777b0302ac40f27848222448118d81d1b8402309893953cdb56bc8556a8c359b4542b86acf5c5180baca3add4dd11a4c11a080220444a074c4108544a6f88800894c68ba1638b61c61b6f8609c8806548d5344ece653c23a8b0e6e1bce62469aae3acd86634f26d76a3501787542b676844dcbdcdd10368d7866192ed5c86f6558b539d46b0f8940e204109681f0364c12f2c4221984106080007789f036c00f5f48140c2011494800e40c13f66810eec0014bf012b0db3d191800e2cc12038c220bc41192eef35a48229b84227a4010ef400075c8006ec801dfe68c11bb48020f5e6817840083c70098461077ca976c5f65595405c91c70223c114e80010dc400958982e16615aa6c10c8087e9469203888013b0012108421514b707b80012e0801198c244cc822dd4e92ea4022fe0a12af04f26b40113880112d0806886de8779802569c0079c1e79b04076e50b740a5206dc002700832fd8022900021af400123c011e3c822850022400439cac43950c51f2bd4538440324c8c0a1deceb468df077c805b81120fe4401908821da8c110b0c10c9c000d1432233187fbb91f57376e6a220e3722c7a8d02a66a0e303f06ddf9ed1192547b314f59031b2ac24f21de5861e65460620f5e4e6c665648a7330c7dbceca03fc80fe21e4c21714476ae04e057c18594241e088400700c18803800010400240400790401150cf121c8116f4819a178220c0011b4c1d1c78b21ff44120f8817f60c11318c21bbc811f38c2334c038560832b18821f10021c58210e94c00c3801f594c0e941b483b6c00e9000a36f1722c2a7976a806f90003fbac0ab7c800ec42b0804010e60d214a081eaf90123100212b8000e10810b68ba7454801bb04106b84120ecb61a10811140cc3e3794b7a0102f9cc22e88022a80c222f881e0455f1418211cb4410e4c810b20c85b798011448112a4811b68fb1a2481a7330289a4c22ffcc1134c018cba411b14de8880d40f054a25db542930c21625c10b6fdfed60fed26c8b70a558406fa4705c3e81127c4114a8c1ebf09f8fb1ca8d8deae236b26ca871f8710a6c924a33aab167189c6fe4cbb2cc516a92400bf446a584caaad006689891e218b9655c4b918dd1176971a680122875e957c1b00c90c07fa301108800b4fe00af80ca03004000180b0388d55da9ab966f807768406a6ac006745e15ac5214c89a163c011310421d34411afcc1c98eab456241082c010924c12d95ba81f6811384806982d20c68b307cc80117052552e5949a62479942e0dd0c09776800ce8e243a73012e4c01a388220e42209dc4086d955570d4b068000bff7e526814027c86343f9c2095dd12ef002ff34141b74741370c223544220b4811dfe50c222700223000220f8419f3f02251842e9937b14d8412010c289a242cb86c2118c000dcc00fa96012308021a70826134c3293cc222a8011b9481264afd1cccc10c04d9849f0af082000914f707a8caaadcc0dfbcf40e746c0f8880fb816e917163f81d3957c3268a171954598e57370e327ef557fb91e1ce915a070b36fa945b69006eb406087cc01c05c7ede80a403010c8604141810e1e105c30900285070f1c4464e0a145870e202a3ec07081440b10241e567020100102010c1c94448012c1020f2a2e5868c8a0c2850b1a7464a8b0634d9a3e820855c1b2c65015234dd2a4e9446c1ab6669e3a61aa63c80f1c1d1ea4a04953a443060c16316030fea2c650a54ea6ea24914263878712248810191262840e24495a78f030a3830710386858cc31e449132744903c4992c1830b17347ae0005123acc5c73858854205aa18b059a548fdda656a962948a29cd07063070d923a63d444f9a2e4cb273b8a00b9f9d2640da04a8c143582c4a80d2045aa489d4a65cb118910315d74d061c7450b174dd83cd1de064d99354ec4188ae38142870a353736ecf0c1a2870b1b2d8ee820c204080f3a68e4b850defc850717448ac88185248268a1054a5a60c0010d22a825020f52284105577280029428a8c0bc07103c50200a04bc2884131c8a883f16281041830c2e8468a4824a42a9c30651f20f839922bac03cf32c10fe09220a00a460861a34b0d0bf9656b200a5074ec0e1bc0e204831260b1e0092021afa288284359a78631047a86aa392570c11a40e2cdc30a5184ed26023102c80d02107370c31a40522d240638d0a309881041286484390a4bc5c638d4afac841be0e30c860841e68b8c105227008c1830c42d0610635dc38c283113e1a8206504dc0c1abaf3a286154199eec6b4746521184135f7639650d466cd925142c50d96594590271028d41ec4884134afe6884115236e30490404001251450481125144a1e6164145b4001a413544e31059023747a6f04173cb8d103163268818d3fbee0a187237a502cba86f8b4d22187d043f5031094682493234668330a2c58fee8a0ca87047a88e1ff6642692082283e7021810e5049a1035b92c843052916a8208314c480419b06e44006af1ee07343871352f03d0fced3f1830b3ce8604006325820210b2d32efbc8732bc60519b30a08144870c24d081005642b062a7190011a1862e509588269a4061082c9a58a28928fa78c3ec3ad6f0c310299878220a2448d0018824d230e4a73adc48038427aa4aa30e399890e289359e48e3090f9628c2be0e3400c1a62a45d8410943c40015041d94608206c066c8c0820b5298c1b1164a1881050d1a5b1c871616cd19104a48e985185f68b1c5175b72414595704f2986173f6640c38e4018d9c5185e78f1e593506ca1c58f474c79e4145bfe30514414524009a4114a404905954fe468c3891b6ccec0260f48d861049c5bb02b0a29e6b003affd20aab202a2f9bd5fa49a181bc17f1232a0810e20610d5118810704c4802a45a45120ca1703101091032164641d5b48fdfc03a38b49ec6713db208750b23382bc4841075060cbf6b530893146400ab2df851cb01f0f58a02503f159051cd801108dd0420e100112d8d310872c69214c7b80000a10c29db9108608a149053c70829c95402d9c988421d800874e18e20449280c1c0cc109430001042e38410b4e1082211ca10a4df083d9040189b20dea083a18420e96009737a041106d58031644e5821c18a10533180211927002c75120807d7141129afe90041ae8e8021998c1137230831bf84f09ff2a0146d2c5272822210a954805296cf18b5cedc217e19a0529aa350b56ee82148910c3b27691cb63f0c216a898052f4c810a6c49cb14a938052b44210855a0c2113df1c3f69ed002eb80e022eda141229da004241c0109db3c8279246635845409401a6a880370a8218be8e43c14d0806adc5002f228e8421b54e0c80ce2800368b00007e867851ad232842c4864521b490d1f842191486c42130b21881252350a5cf0011da001463e9001883040870772d83947b2209f99a87e2105908eee374e0b45348428110001fa6990087ee82126f24a253140823e18020b4b7843270e1105135c710d4b9002510a71fe88276041319c330212746084c1156e2a6818811d3a71364364610a7b5056212ab1083a41c20f43d00111ee438411cc807520a041fb3667a9f39ce7661890260e667029f6f8a5035298c21a4cd001259480028268de2f7c91d85dd8a297a8a8dd274e318b36307617aa488206dc008947606f11a030052d7af189473c2211a078842850810a5b2c47147248021e96770a206000041f18010eaae30210fcc505331841bbf0e3028d6248a2e3245a954ae44405d9473e1048888e76909d0eb4e0031b1d49d53aa490835c68630e4a508c24b60013e273640e2ac88bb41bb20d6a7049e44c888b7ee4000b6880431d95e0481c32c3175190641b0de1035cb001fe8454e003371ae240067a5d00082000fd1cafd388c6000b8ce0048d0b410e08b18a3339a10f9c78831bfae0932ab8811082e803200461083912620d76704489fd00883e88af6e8db0831f7ec3094134a2128300841fd4f0074704c20f89f043a7a6d0842fa441076208c41cf0a00626a4a1098bba594dc03205cd15b2735ff9974566b081fbcde00d1a10442a5291cb5de482176a564ef378510c561a43ce90c8c114e6e00639cc6610be9c852d60893c3b8c22148a40859c47e33d52ec221534380f0634400199d4e43c24c0413649e0021298ecc0c61de7be52682106e0cc2b2d404275dc5a13197cc704038aa8cf32c4a0f2c65789187098c516923105fe4ee84108ea75c80afaa0908a6c633b2369d5cca9a00159202c9d76510f231ab38b45649fd71550fd808d50f13644002f1d50426106d1289e60084528820ac8dc8942ece1108528021ce010c9341881048670c420dc50084eecdb117e70442702f1064638c211a1e8442502a16f4e38a211812074275481e65070a2e10c6744b238d109529882129dc87825fc2087213ce0031e10c1bafc4481af28617338e8005de473528be8e00948c04009e4400b53d88218c9f345294ce10b39ab6217b3f085308a91f4629426118d68c41e0461875018bde8c8f1652e41eb8b5ee4ca16b24cac2ac6971efbbd47032eb8c111caa0041068a002548259fd7e84c39aa2fef30216621a9f481004179cab3f3873032398204e0542e020df2ea8c49e08020efd87410d6390ac37a6929139f1ba36ac9a8c18604208a6e4200bfc7686147801c2e3f0baf4b3bb86105cd3871908c18f0b50e695d8809d018000e31550c742721e4b126109432041145e51082c60c108e5ee031ae04065273441ad5078830e6490063eb46128516802f187a00627b8010d4f10c313de70041af02607a44cb18af790063f1c59118ee044281ee108461822598d00931c9e10342290a03d19fa40472a408004d00232a00354e00356442f460003d6c0146487178421b178c11814eb168021176e41e984e1187ae11436cb03ff801250819768011592035c28fe6b1790a7134221b166a7959ee07eecc7d66e820686c00df0c222eaee6a9ead8748cf42ee47814024a018e952dce3733e4049c6c903f0220dc460a204a8860eca625642644888674482bdf6c99e648dbcd0aba52064841c4a22460841202ac180c4732e8001204004ce89bb46cd641c204aee67be3ea4f27e66a0fec3028ced675a8200a0a6da0a4a6a9684024aa0058c40077040100ea11380600862a108d2e8088ce008d4e20888800da4a00ffa000788000bde800d74200500e5098880dc94a02388e0733c2004286004ccaa0dde600d72200db0a006a44a0dfa206fa2400ee4600fe4400dd2060d986004b0e63dfa030370280332aa7cdc237f2ec02efe86400992e00294009550e1178a41186681188a61767269161e0110e24c19e8cc9748811672411d7b81564ee1166821394e815952e11778e11718410e766e978c2e159c60683224a02ce003a4493e70488816c6b892cbeee02e7f160848aaa49aeace216c4205d6630a2c45059490a12aa8642ea4ee2606bd48c6d71204d8882dbcee29414682e42a40a642ea9ce0ebdb1a04877ce00104484718635f2ca02ffc03482e4f087f04c126a69ecaab0b032000b63042444808c30203a2200de0801586618bb6a0049a40704ec08e94a009b2a04c0cc1141aa10f0a07c4dce00d72400ae0c00866800666c02219c53a72c60350a705b28070dca00ee6600e1841fe101c810ddc400d388115468113eca00cfc40c8e660228ff1020a2c039ae0094e00670a6c3ddc43193be03df04a9190801558a91d77e11378a117ec9156728113d000158c21358ba11d79e11478011884c1188861169627174c81114281d14ea1574e29b2e2ac56fe6c0e4640ee28b28ce252881eed7e32c4ba7e045f4a0a3983e4a46c82519ad22b06ec01548007d660083ca462c209a2982662322f9f5a26837c6d672a6410c36b212208461262685a46805a84bb422a8282100c1d40f6aa2467e8477f48cff4de6e10a9262524c8ba1c80c1626a6a0c2a2274e24a54e00142200b980007e0a00fe000084ae008a080e654030e0821e4a0d28ffca00ec4fe8708d0a00ea2a00c926c088c208da4800452e074186906e0000d9e9212064110fca00700e1157ec10173c11576e1110261101e01140c2107c0a2a2faee0144c002f4629d34e446cc09402a11042a400954011864b3183e01146ce11b69c51608f30818a118e8cc1778a1e78ec17772c517286159fe000490000d1281124c217980b31d8141b14e21117260546e664534e02bfcc345626da38e0b2843aa85682224908baee423a41e80044400212ce23c8ee00e4cb104180075d6e707ffa3ee3464042aa2257b4d412e069f104cbc30af6aae6bf1d47355cfab6a2a4af1aa70da24a8bb5062a1506861546ea1565285a68d55958dbc466ac11a6c2562a424fe744d20a0684a98048c3a41fd0ee1044ae0049ee0089a600a9ea01256a1110ce10d944210dec00f68200a8e8009e06006b6a608882004e489062c110b74c09d3ae008d2a00d8e4010e6c0df86600d7221150ae13b40411544e1133a811118c10910488134e439be22201f007d50442340a0681845032c40095ac00266e0137cf41e3f63165293184e8116d48006e4001562b3184441e84ea14f7de1187c0118fa741612810d0061103ea1577281b17a81174a811348e11142c1147221112ac2d634840510903180d556cf106b98e6be4c64c07c0448f6239d3224a5548e02e412d93400097ac005cae00dd400091c6d279b466310e046845228194622428afe467ea625c99024250464ba53412c4026565222aa706262c461f04b81240af4e66e25d70b5909e200966801180c290f2063d8b3240b422730e004b0a010880008a48010e6ad098a200986600790a00fb0201056c1140c8110da4016d1000bd8209286806ea6ec08d080109a0007e4f22b86007d3a0007e806f9dca08f9222073e607390401058a11418c10ff6600e9e200304244376ab326ca291a0e8034a2e5a2d000430c00d75e05e4fa0137241e880011552011892ae97182107782007fec0e884a11780814f7341056f36e9b6ce1680c116a667684fa17b52a11776a11d75ce14d2e032cb834f2ac339edee4248aff0ea564056b2681ac269f92585fcfe6368cc030774c4645a068a58806ffe600ea2607827cabf22e2323b2f22584f407dad565b6a49384857b3ab616c2882a46dda2ccf8636788854ea6e43086414f4a06284bc6284c108004930d7d70a0f25a2c801cce7e52a8008e0a0a7e28208a4a0173da110fca04bfa200b86e01004e10870c008ea860dee200a98000d8c8009ab514728322610110dcca60d06610fdc000bd0a0fb68600d3cce0dca200a88c071941348945147fac203fea520338008dc8004f4829a5a80311c290e7ace170636144221e98cc133dca06d9e400d46211a541318e24c0293ee09462010aa80041441ce468111c07434d59495e29113f4e32140e58094118381d27e7c15befe66623edfc37e7a55e53642eeaa84314e40095ae6321f02047200874220af04490da4200e52d73fa2a4f29ce6ba2a6472fdf6210804c20ae49c882d9f16e07e080402088f9e148884aa70a636f7667a4822020a871d4a40a3a66320c8208eb2005a629f1422252064010cb1083c6208348a04ea207096000774808f0861085a72493a800898c0098e006cd8600de0e00d1c610e70e00daa40b732400448207b096c06b2c9090941c7a48008d6400abee0af54a088448921810682cb236176cb512eca227860082873b700c4a266a14f8b2114fe201578e11328e11468490e72e008ec6017ccd11720a111b03ab166a1178ea1086e801194200300a1178ae1fe114641b1867681134b4d5be90494710432ea2023ecf246a2261e35a244ad07634d9a3364232a8904924007bcd5c974400a1cc10cdc400afca00d28a5f87a8404a6e00686a02e902004d0a0096e2624063a87557b0c7d98840cc26a88d8d80a4fbe6840b820e062dea327954b892264a308242117f7203648825cf5d72ee628a3789fbe0b0194bb202af60350402049e00430250daa80e6b2400b8a00870802226ae204e2150b90c044dbf509f8980688c009e0466f87a801cac30576e00b0ee60de0e0b295a00d04a109d6f064eef33f2082716ce2023062b73ee0064e8d190bf07e6c824f3240b8448011a2a7101861104aabb2366e1642410de47b148efee71418e1148e411822d0768c210a64a011b0e0030c81817b411892c7eb5c504dadfa224cd53c84c888e72e43dc50ee78508369f8c6055227fcc7d4d6800dce728fdc00107a220d74a370960ce1fea00dd4c0058c000d1e632d29000196c0114c3cd46aeabfcad0207cfba007e2bdd8d9bc849889564a5f40e88468782310cfbf7668673a6820b6d0581da401eeb94390847291a8000a40bceefc725f3b043640048880be346006a0202b8d009264c008cced0b35a0b19180a9b0400aaa20299200149b40aaae42f52ea005b2b90486a00aa4a00974600482c0bc09c10eb0402e6ae66a73ef2021e052cea5224880076840063c805e35a400b1b4035ca071fe70a00d1c8108288e13b2b1eb4ce1134e293bda8013e84ce994ce17feac18d0a00300210d3cc00f6ec11746707f17eb977e09ad6da11148806d9200adecc7bb07aa260cfd04dcc0134b000374e00490eb6aabe6140bc139c0ba0de6e00fdc403b9ec009d2e00b88809068a07993200ada40dadb608e81ec09ee5b094e8009ec2207f6220794c046a9fb027c46c236e0583d08bfc62942188003345862060c4322e20422400633409bc883439438669ca807e7ce853ca641489210fd2b42f0e941bacd7213246330778432a4058080064a6003d280be410c0e88600694e009ecc0086cadf21a650492200b22c53109010ddca08ce3828a64200f77020b76d2fe3e149905ae3e0792a00a08c10d80200ab6793d2612ee16fc8431e0cb2e823d7488025860a975e253fe450498a0121ee1137cc114442110ee377a38e11650230de420148ce11b9ae11bcc91976c41144e411afca003e4c00e3ac00d7e81ce7ea14f178b1616b8186c217a40e113dc800e085e0db659cc40e5e69060074ae009f0a005c48070d4c00f026167f740076e042220800566600a68200e70a009ec40104e7a1178a004befaaf8860ba5ae03d0868cf88c0052a200bdc44090225f99fcc7a499a046aa00520c97ed78004e6782ddd501921424938a4c1018204890b15327cb87041838e274fa24419c22307912146a41c2182c6cd9e236b783ca1a1fe43cd1b3433547c3951e141850a141e3858e00002161a0e5c7870f080c14b040b10f064c0f3e582a13f8732188ab4a7ce070818081040e000819e3e0f14f0e9d381830f2b8024d1714245952944b0607938a3499f222b1d3060e0f2428b253266b40042e44815416f92146222050e1a0d5a2b7c98b16101850d194694c8004283871147daa4b9818549ca0a185c3aa8e0960241d00f2ecc98a1c40508d0173c7c4821a3430711342854a041e4b01b5081fefc91f329952d519848992a068a469b59ca987d3366ac982f5fbd669d2a6648c31f3b1dd68c22066c97af5dbb668d4a554a0e8f366dbecc70d1c285933681e6882943224a133180dcd891b3c61cfe7288218614353cb1861a5f60800167a5692083125fccb1c6174d3cf1052047b830450f3c88410308a23de0010b247864570b4ae820461a73e8a043466568c4c4127fd0d0c1072000e1861f8bb4f1c61e6d24f184131e94d0c41b83348486186fc831c8207ef8214820688854071b6bb82146146b54d184133948814412581ce18714f33d81c61a6c3821851c6dacd1a4081b9cb0810327cc80861321504081050c50f056520b1c7554533fbdf5935b48317a28a24f0550c001963675a8516f7de681134be840441145609103164b404104144b605184560eb4a4d5053834414413580081c41375b4c186207028010713ac5af080051db4801208209040c3fe082d78d001082318616607a87d201b4b2bd9261a4b80da36420725d8d5d905251cd1021b438c30830e2e64102d083bd8f108237f3cf2482e9fecc2cb2e9f24f2092847b8718b31df28f39c30c5ec420b29b928134807780402c21aa708e38b2db694278a2aa234d2c6812674e0020d33d070041247ecc188238908d2861318b6e19b1c69584884126a88a1861d8c00b206123a54a8040f761d21860b398871c4081ea891c81a622871c307b6c1db43126ef2b0030d2ae4e0041ad88e80840b29ccc0861b49c8002d051ad0f0441a71ace1c71e32a3f1061b76b07104081ee0c0441a8604c2d7107cb22146113218915b0e4fcc8043070f1844c413489030fe03134790f041084fa8f1c4119007d10413410cf1440e202481040628e7000461471135fb0146f1b4c001b80355144f4d091529000044a57bee443d7ae80318acc001094b38d14759751011820e47984583052db90457062d3831c310492c81441a58a0d1c6084cc0d1041a7ebc5144094f9c9081050e60d0810e43e0d0420b13cd80ae11c00b0380bac0f6def280026eaf341fd0810c54071a0a1c8b31b77101835cd38113acc10e8208451b40f18859d8821494b0052d4e21c25090c2180863a1317ca130ea9ce214bec8451428510c622c0c15e339857140b806117466259c914d07a015041774400c81f8c214d4b0b3d40d810d1802490e5ce00640a0fec1716950c3119c70b32620015b2ec090e6c4808428f4460e89a0015706368734dc2c0aac530212ca90840b88600a36b180073ef70535608b7f1d88c20cc6d5821e3c810937c080073000821608510a26f0c00548708428b0c18b38c802124204020c382d5c8fec0083308017c7c5110dd0c281129ed03f1058cf0958980f13704502d960e07e5a81cb5b20f5a842f90e79c0d3545318203c0210cf2748c19da62e3084436461066fc0821648d0842290000838d0421d7e604097500027b729021146f604251ca1104e7002093ce786cc44410d4020c1107600cd37e8400438f09bb5421002025ea041e1e4de387bf919825c208147fc400b68108219c865fe082b81970764d0026be50a096b700423fcc08945a0423ca1c0c420d2b0074aa48216b3800e0b95710c5ff0a25fbbe80509d9200745408212a8b0452f78718a548402124960c95bb6d7120a64400969c0c1675280a30e28b40346f802138c109b65edc0a152f8c2103c700269b1c0033940c31c8e808627cc8107af74c3221af108392021722c90c106a988363f4c41043d009f0e5a232d879680037ed041b84886ad0e742d073c60021a00e1840e64408293e3800724c421cb75e0066d6a53070405021c706e5ba2c180085a00821c54a10d7b60c2e5903003027ac00314a0018e309003930d014619c5c0313335bbd90d73019542c0a59c099344656a01fec20b40000870159f20aa274a19d410c024be3ef4a10e7d3901118c50853e0ca1254bf9560788008725e0a00c52089a0ede63041aa0210a38f0c00d944003e8558e2025c8016ddfc6bf11780b502e7980815542e0954cae34c7f2806a0492d80b481603518003488630b20b00c1117f18455c15318b5d98620f62980313d4c0084e400212bd30180ba5138a5d14e3a7238c431b2c01894fb0741621a64422f6d0825d0e0a5e2941880e902003c7e880072460098924bc03460cc20d52908218e450b412e8c00e6ba541054e50831d08e21180484422cadc084624421181307313e272de2038400341884219d22046342421085d6dc8095a900326b8200a6dfe98411298908334047a082a634214be408313b8e525e3dc80a020f0815726210dcf528221dcf0270440c07e06eec0f62423592534210d4e18c108001a020f2826d60c92cd056ca254622120279112e6f1a89b3bac1cb398be138a4f9a4b80a2208a99878ac90996b0ba22e0e00d7df04321b2d0042994050e4530a58133b0191a9880064508c20c643084370c415a1a18f73b5932021a2481b575cb411680d0818280b5c980aa4041450328823a789c0c285107aae7821ad02f0925d0c0081a84bfc43ad4031970411b38c1094630623ab38004128c805637a8f34ab4884e318a710c463c4114191b0f4b19610aa1d26217410dc523fe90040f1898020d92feaa0666308239b4410e728004bed4e0821e10c1098048832218a1081fb781128f808422dc4009a83302cb4a10c44eeb0588a807cce8a0f80425f656b42628015a9ff11f098a2008332881051f48020e88908324f4e0423378421998e639a4f54dcbe273c2070aec96415d80dc24d80006864083340ca20d4870821cf2e89903260f21150841ff94c08619b4443639618d0558b0d043f1e401914abca692fbebaae8ae2a433900ef9a72a9da37b7009582000a22304ca0c0642b5ad0421292d0074360610869e8032dd300073ea8b709920341be2b30822110e10434e8c313e0f086c03141030536a5032c20021d746e5c693099126450011c88c0363831b0fe501c4090402570b207a5800848001919900176010233607d2090581ea02daf92106ad0098fa0089d600bb3900abf60083a900468f009f822078cd008982063c6200a90f007a6400ba5e00b3c660ba0700a27681ca4200a23e806481002174077183040f803028c400b89e0068c200880004b4d200780000a9440758da0088b206500430aa0c008ffa108f5f2066ef0098e600966a771c6810aa4f0090153758f60076a200319405b1fe00149a0063c0051fde40253a30338e22c4ae004add30232a02c3390013c407e38e80268485e2aa1136ec11440e1001145047f9006688205857214f8c76bc73428a271024e002b9e0114bf84108ee22ac2373b44c1fe4cc2347bcc247ba3683ba6c84c00001551d1001640021ad0004441012530023b70027211797d80055990056521055850054a20077d0007cd670774030758600465f20445004027008012664a9dc12d24a20421a001fe130547c0180a11372580502a1141043422839212a5212d17f51e7e330327e00232c00206684a17900447e0012d40100c1205a11083a3700cbb500aaa100834b041a6e00ba3d02e89400b32650b55070895a0067f300bd4c10bb6d053a7000aa4100aa800096ed00647e046e0060290617df80308bd809194b0081e89043a330ad661916b96664fa7087fb00830181ca44042a15076a2a0939fc0088f000a31b88194400a13085448fe30021fa04420708d6270033da01a3390342a920322100256760446a0031d90033930401da0010c203f4420590840109b527f39f11610e0605100596e7214dc135cad4710d1e2014c800238d14bbfd41316f00153800998c04a498129c0633b868215bc673bc2a614bfd6980bd0005a56041c300227a00369800450200551c00127904d27300558d0046b800538e0353a000434601670302770800458f006781604479006a1874d68b03e68a00320e00217600117807f1d900210e76f17f001238003f435021a80011a100282e22a5a012bb348038f9412f7a30339a004f1d64f19700121200212062d1f4002f3c719d2086e15d0014f100ab910088f600afea6700a8c400462d0066a00095ae206f7c282bc909f38e50681700abd400cd0211dd42142b3f00881000676770278092dd1822d6d400bb4008171250778f0078a400ac0301eb34042240808905009a2000a2a340b2c5591a76091a2301ca2f085a2800a434909a1304321467347c09441105a21400338e0022e401b47802eb895031c50023cb00635c003431002ce82101dc0001a609e3290798002179373018842011ea0015150258260076dc096e658970bf000d96704d0c27039e12a6aba1349e00668d0416590015e6a4ab2119cc2475dbed398c6058a89e24ca4c81396660445309a34c00110000534a0014550054bf0476bd0042a705158d08c4070fe2150d02e437004c12205688006757002b4810459900655608020b03f204903a0372448b027df5519b9027a4e805a14f7001a906f0b95402fc100f6a35429b11417d00338b0948e644a3ad0023320021d800321f0013b10490ef627de02015fda068dc0093156849cf00951e0024ce05d4860024880067fc009be000c66a00673f0086df008c0d00bc7200c15591dbc309134b79f62805a9c813f2df00163f307c4d00bfcd29065470a33f75327f809a470737f100890000aa0700be5c130177a0bb6d0822c550b3b15b198806394b0a213b80bb6203aed4204ce82049fb40319804968407dd2222dd1da0123607d39e0a34d1069b6e507b5911306a41509fe74505ad10017a0067520088930089df00707763fa081283ae1010e210345f0016a400306c600d999280ef0048d5084a8800604a7a62c01012290a78e98b654411547613b70018acbd513b6f3001ce0023ab004ab4204246004270001388003d6036d39cb0120400434c0001b8018cc220240d0a622401810c09e38f10125002dfaa6181ce0044c504929e0045c09044f103351f0044d30056c50087590646322059d930217420451300535e00221c096d4394e4c69170e46032513bc18101fd0d20224a01239012825d002df42021a4709be406681100a4ea02c62f0050fd10451d09f8cf0096cd00204d206a8a03027770cd1f18fa8600a8940746a9003fe196544be592223e0026b5043a6c00bbe400bb99082b6100ab4c00b27280abb400a90c008f2ea93b4b03121d60b0a9c0bb3d00b11fb0889906339760a9f800a109c82b4800aa820062ce03793d1012cf06a33d0603bf0053bc073274012f46b4939229c0c204a46500851606a3cc76b6a2a5585f20010100554220781d0067620acb0e200d205131960089c00232ed00422e0b59fa8130b600490600890200a7bd0a5c9459d256201b0c70038f0013c612905001344a13bb6277c828a3b08600125600146a0015fc39543d0048fa40116b00192536aa74a0260b9002250043a002fd9039aae74023b502449e02925b001258039485005e0b8013930033d00fe024ea00439100257a20218c002d6731155e0ac47d003032a087f5006339012e3c49601676a32603a09d1021ac0bc7ed3bc0368c22a5204b798012e31401950020d9a06b4600a8a30231b910440103691f405626007140b0804c908a0500cb470afd071afc2e0af8dd01f6c95035285102a8180436abf33650bfa9bbf3acaafa8401f22b608a8fb080ddbb0b9a03122a4c0193b08b790094a0030a0800a4898c1fc1a62eeba0b5d49322673597335022b221b1e5003d7191f1fa001ecc9acf8e30143a03349b003c86b496a29417cd9144ad00670c00894e0067350014361b46c691417500573f00486930626d016ae378852c0097fe0076426028f62b435fef0c5cbb53b468114b3176cc9751457018a4d316a2680021c3003bd1a1661f5012750029323021ea0039a0ba64ca50466288808200225a0344e701144c006b59404b90502ded52a1bc0041230280ca5b8518005ba5b0139105f18d05f4fa0031a4002274028be847f0b254104a12c4e732c3ba076334002a82996ec292d12e650ff674a12646a15e00498300794700aaa10346c607773a0064140034d300351c0084387052eb0ae89600bf62a0c267772c5700a13ac0880e0074fc086b146c2c4abb32cf004c5600cbd000c20baa2b3500cc270afbe1030b400097720061bf4092668afb33053f97b0bbd90098d20421af72f160b73fcc26399b0043e0005fef01b9e2ea004958323f9e502374071d0e204da44df93f3ab83980132500741102ef205c59d28890fe004865008722008bd1dc2793228bde4b570e3382dd00441907f70ca0010e0006968088c000998f00522f088834888537c3cc19589b373c4286e2885620138a00240108763f9011c40019ff92c34000543a0780f400449c0e30804176ef305f193bb14d0001000a73a4b04b44a0121804b799a019fd1c315c000ed088dd643048b4b013b90a46e135b5daa0122c00105a63cdc7201f092e638123915104a691e9cf9162878e22dbe54605f8b065957521d083275665b49d0385198046cf0686c900806a9dd30241da760743589067222463a7041fe74fe44ea030cc5a0ddb3900b2c95b2b350a3b440098d20b172f004297d845f3075bd406347b90bf7c20bbf400777700a760008b5200a8c1062b6600a4370606a8e010e251a16c003ae1a22e1b201c10b0208e134a091011ae002239035418a055f80daf855803800a7bdc600434025f1f9086860022130d834200273663ff5b70129d0df2060025f50266890183081d151e00881a07165909d98c86cfb4e5caa672989523cc355b79952ac16a00103e5ac66a1035280026a4a0143500752700207f0006f37324400010b002a3b8024b782056980ba36be99d9533f1bdebc2d61e581722e43209d4790031b201a3a804751800452802c2360d39b982325606aa5fe81609c8141bbeb120b60f08937e4c97b9caeec005ed9094129b169c009a8f0054f30202dcb9d76c0096b905b6e30347fc008cd5d0cf67a0cc7500af28a4776100768c00335f02cc7b2a7d15232d3a1b1c2b0a2bd8031c2700c0c4ade5612075ff0091dc106a2000cc7c0afbc90086a800690700ca0c004b84e748af00483b0311a9306c6aaa608786bdce90249b0c9593910a5b7500c606b53faeb49400352f0075f606ad22a46472003472be44ed0238cb00890b003f8634a54fb4b3a4101db38a5a70f12a457012260a48eb30781100872e6b5ae77c698527bc1d6c6b317f0c3645c07b0134dd10028000453a0a4535099d9280244a003389004294056fe697008a442035150bb9ed2d11d50044fe00245d0042b81034f900443d10019bd063a400223001041b080a0f0a0430710438c9cb8c0c001050d1d0a3218a183489319518c5870808102050c1640d0408244e2030a0e1e7a7ce080c183962e1d3e6c09f3020695162e9c648041831847bd40a9b1038993a23435c410424362c493467f784ce1f1644d9c358c4cd17af4084f22519414295232c205c2112c3a64e8500103c20e1f74ccea658b162d5ebb7af92a46cc97b059730229a28406c711294f98389153ca11a75c9f4a2d12336797b15a33907cfab207d21f51a876ed12a5a6a0cb0720346860e1c1030d222136e85093f883478f1d48e868c9c0f7dbfe0f0f68e0f0d0d66d050f3340385cf0d2c10322861aa15275aaec05ec0d5daa2cb8e04f9b1b322e947001a484441021209008d1814591406ff6a0a131d17773070b10e8dfeff24073fef8f38d81050a44e04002f94380010e38d0018a27962841872686f02083168a9881882a96d061862274608884138818828624b420c2092c86c8018a124a082104299270220d2c7470a185219a7862860f3a4049031d51c888080a2674c121145c184207126840a30f179120e2080d2e7800832176a041040a3ce021080a7ca3a00295b623f0a5015d2aa8020d2aa80026982898411046303165964e1e118513409e50e2892488a04d0e469e48c39039d46823903f9cfe20820626fca0a40d39e6d8c14a115a1be126077470438ab340e8a0845d8a29c617608e9985975e84c98bd54fd438e289295ce0e1861cc058a30d371429e357453a49450d4180a185881ddb80440c403e61c51651667944a20a2e10a1030d5e9ba1851294c0c1071a3ea0418d46ee0842039a32a0a93f952e000189e17a40a28d1c76930803b7e26200853202494490a190506288193c18b039020f30429028a268e489133a3862863953ca580325a2f8c20d366848a1dc8fee5be0bf031128e0bf030ed4af8000f703704106fe2b503f0b48988286121c80e000084ac061adf1b4cca00411406841440f2a08818621a0d0810620a2c08290256804a2031cfeaa58280719ac24e14936fcc0a289e12ec4603826d630510a3192606f081c3478a084422fc8400725a450c10323aa48e2e01e30186121105cd8a0cd071c72e88498d2fc082590b0ab00223a30390595624261c4915d1ef902893d929881864018b1c30e36d898e3334548418511379a68610d419888a20617729861c21632c08e8334f6f85c8916663065175e66d92515615c5555555f7801a4052733182179236a18020d368e486310341eb1e38f404611e50622f070640e3cc47023145a40792414609cf888052c461701031198ab05444802086e40821214e40239904d06788082fe10c8011ac8c1135c00021340400319a8c05960921f943040038230fe842f1ec188363ca1030c3c8112405001df3cc7011148c3117040885434214e0ee9cd032e27821174e0023348831c58300437d4a0020b9219caf46320fec02c65054ad0c95a26b3276ec00426e800030a8080d460010a4ac0820a66708413f868091658c0084850810de0e0040c00410968a0851388000a55289111a03485219c20042790a34aec38030cc8e0574d70c2c53690011cc8800108b85c7e62d82d0b140403231103138cd00342b5e02119338e0676f08105c870260ce30e4a62c2800b9c49815260c42378418b36388211a1f8842f7c21071af060074c90832106110a40d881318f70042a42b18847b441094770831280d0031008e109559803fe23388026798921116ac0042668e18b5dd02217bb384510ee308b53a4422fc530851b4e5785207ca0203e2c8e0e72208623b021118350431ae6d0862f90e40862880220f6d0cd50f0720d52c80112305690a04100020b109314d0608a24bcc4022c68410730f0800c9c9426141841083490858f848009eda9c0072ef41c3431c0026bd0411a98500a4c4062081598c10c92608210b444072280000a38f1850ff8800d8c2843096032a098c8e97218109e0c48d00197b8ac71069ae4815a66b3fdd42c6566b519cbbe8800010480012948180e5a0027118888411a28c1234980839d1d21052218020a7c22021518010b49980d0d50e4841990e00875a08183fe72b090a78900261978e3dd9ec006a925e10410088113e2409c577a80041cf0210528950311cc400a4e50823e4f238218b02b25f7e16de33a00013a3dc4213b81c95a66b0064e84821373b0432250418bc9a4821339b8601318d1085064d70e68b00a1be4200824ac011090024456fe608736ac410c4f90831f6e158527e4290e8c38c5230611171d20410e9ff804243ef10848a861744d4082184a8aa6945c80a42e70c10d287304178ce00320788007e2b6bd921881051911820cfe208727602f031fa120115ef880053ce00882484173523a02445e6e3f1460010c19d08013fce1082330d50d58c01a5379c4211aa8016d4dca03c10d816e2d20410b98febc019d3820038d03094ab0739a39c904012a59504ad2444500b9c440573c40010ab0260494b965565ceb14555680076871095230010952b0843260a10868044106204001cd92200740f8c00c3670800dcc40077cc882148a9084276061093420810728d081a665cc04bd3bc21482c7810cb88008333841116830833638610a4df8a60c74f00434dc00047af3c08952b081121c4109b089021aa230831030d9021bf0f24b5cc92695f4060504418e063e32a707a8e00f7e08041b04110a4804624f9cf8c3284681062508020b1d78022440f1073cb9610d6ec89418d0b006393402856c784278fde00744a921481b66c21cfcf087590ce20b29fc4214cc60fe8739ace10934c841125c20db1c78e0044c2841442e10c40b7860040fc00116d69004358821076a504212d6b086208020074df8021ba2b0223b1ce108837802083cd0d31c70c06ea8f1c01c3a7182e73080241311f3963e70011220610747c8c18472d09a92cea00733c001bf8690061c988a04179c810b4a5081b578e00371fa0004e2a51ddf6cf983f9b9191471fa11b6278866fb71d915f763b331a7f900787f2b010e108009c6680926b838020cb0000b983ad259a8431110c0012cfc20957b47c00570b0251d988002b74ea56f5c203813ac489fb9c6420ad6c0010b44c0eb1740400946ed4624b8e10816f8b3deb8c6043b73360dcc9a8112b25083fe41e5606f62488361d224c3542e400a7270c38588deb89ab869037210c520f6b088d43961088648c427dc100834e8a00c3898df784ff18b5124c20d6568433707218839b8e1a16e30431bd4500635a8810683e844122a408339a00192ca8145888327482131e80125f8828542822790021ee89b2858834108043c20810bb80123b883282881e488821a31182600253540833918162470011de1011d00253128308b9a821a98811d78820fc8010d309906381307b8090f08011208020b581334b3001ca0810e68011a58b8b7282aa50981082381a523a048ab0217a0341d1840219a014569143b70830fb0806c89899b11b30a00b314630e2a6a9805a13c97fed13bca5b809539ab348b9993d9b20040310e28000bf00008c080b25a00b09b2018828025c00213e11022708003708033cc992758aa24989034680343310223482a94cac1e7008123488226282051db800a180119f89d0e680234502c3438810ab000ca39883281ada9c10125d00110000123d8811640833790268591a0490282a610a42650828dea8d55aa090e980444e98482738424180135580485b34519008128200134808454fb8225d0b6451884f16a835ab28327c881d1b1834000033148a127e08013f0000c382ab033a911f882345803215002220802aa4b3524c0812728031e38022690392498022b0181322884026a8127f0aa16488328308bfe11e0011f71820b6a8128c08404cc011ec8468f748224f8800f480224380f18da0011e0210cc8811128811600812082880e18192278c73410033b48032740034100043f70834eda352440033928844498b627f8ab0eb08069fa8833691c13100134a900b30b2189500930239005d18fb0a2bbb49a2414c3a2b6dbbb2f6a3bbd9b24b2dabb051080b86a0008709cba433c18322b30c2012450011da88237c0826d190211784907a88113e0802ab88837e80312608b189a01553c810ca0818aa1001078491438812460022638819c31010ec80138608207d0200828c5de4831b650c12ff83812200213780025240427d09b3559000ac800b72c90066813c7a9fea28738812f381112780227980a19b08025f88339708213d8813f80823061825d43943f90021a98af4f08854ea8812718043cf028531804ef11833240820b70001c30810ad00105c3c52110031760011e70814ab3c91c7003017bb8743c8b1068835f23025bcc8183c080092b880e9092a711831af838034ac22b04011389111a00a82720827acb011ab881c3680266394825f0915d69811cd0d03598027753b73620ca415084ed6a94366883857a37399003a2341e3568021dc8163449a5d3f0a1f5b4a4015990960090034810b07c2205519029baa29551992705909b59d2e6701900008000288013d8000838018b38014959820d680035238034a39907fee0001a9082288002ea8400334dd28b400315a081071081a129138e528d9710c40d48a534d9920a00b925688b07d0802680c50d408224a00117708d19e00007b08011d8008edb833410422005816d12010be800545b83044abb1413339a918997288828801c487201e440c216a8810cf08027e0843aa0000b1882925a02b331ca1938083470844a58831e48833ff88346081e11f000befc245d63b724d8811ac0823488c02fc881136001487532104003702d810b688124c08196da4f0fcd81c4f80223280975231427602f3160033c90833b000445788446088441c894d121be14f2b52f78023170373b980f34d803357883409003f04938472983391004fe39588339600337a8c436f80335700236102f3560833470d42788023f88bf8c2db832c8814cfaa0e6d8ad413555b96352284a19b834ab2a9219bdd38f329b433a441026b5d932730000d0d50182827904822ff18d1398020e80800da0018f5b8208808008a84a0a28801488c70e9081530a0118e30013180258b4d9fd800024180225283e1c0003144831190854589a011eb0aa12d08c8a5b0002b8c3537517d4d080d17c832ad081cb6b004b558232c0ba16d88183b880b65b931e84091d30b016281387f054d739025c848d10a0bd4a4da3630c8233f4a108b0a55550021778821df8153b2082090c853dd8000fc80125d02ffeacb723680126508324e0fe01921383e414142550af279803e7ac583b48267543033bb8037b6d8446508441a82548a0844a78044a805e7c650446180cee7d04c280043918a839400346d803e3819440d0a53fb8ae1b953ff4f903f46d03366839396883f07283d149822f68823278832f588c1cb815c7ca3f39f88232b0033f48cf2048a920398de740b15532998681a29abdd937bcbb34e5d936b4223aa4c33b7419fed83b12ced200f83b265a0004b2800c58009d6361ad74001380821638811218c234730014f819dd3cdb22d8b51348b107102b9db2000b1081a4d2809fb1a4bd231020d4000c20012c60032c4028be64031f10629980890a000125900325288127780216400223fe300189638211380c0bb8a232748005798e93c931fa1ce28348420e60007d82802f19520df8800c4882375882dd6c2d0dd8100f18d6898d020f500235080225e8a45b61bf39603e36f8c539b8833f60caa614843d70044aa05e50fe84ee4d040566847cd5d745480479538451e084468084ef6584444884b14884ede55e5a3eaf3988037c138381255836c0943648033ca0033710844118044a10843be05e791b0cf905e635a85f3fd85131500293ac01c562021e40822f18d14afc032ade83463860224089db50552ad2d90201c429a259fd004b321b62b54cd3b5faa2b322e10381992baa990079a203892b0210009f756329d53b0438011a989a5b5902fe1c58022558011258831c19420a688005388123d08215c8231b2b1395a09125a830d83081aefb001738420c70023f6883263842700981871055b26d1cdfe8c39d080912900220f8c427a8b8866e82bb6d832a98bd186298015955ece8c13d58833f7401bb418923869a259881884bd494d80026680123200e27c381206882411283355083edb5031c158464bd8390f52ed691833f580448b084eaa5045100054af884eca2044ad0eb46a8e5c10804c21eaf456884aed0d7ff7a844fa084ae500456b66540a82550f8044ee084eec59341506076040487526b376803056637f5b236f44260a60b82874383122cdef2650326c8812314c91aecbab468811110fe49023a82143c420fe0448dc2d42355ea530d1034a3bb2b351004312b0521b327e2e7b5a23cb993a2bbdb3b0020e80320007dfe3b33bb19b24400bf3b90bb31b526d0822288210638013742aa13316327b01b0cb0d51f50895213010ef08016f0004cd5a98471800e708126b8107a44ef98c06997781ab3b3005443021d180114198254246d0175032b710340a0582478c5570c01374003271011cbb49b943a52df08812800027a74171ffa801290473045822388823aa0583fc05779c3d744b8834010847fab577f335e458004ecaddeca26854f4085ec3a055b38055a40855ac8de47a8844468d1f68d65bf3e05e5e26bbf0e0b506072524065c81e0b45fea065469065566684646547ee0d84d5e15e41d8f147c08447d803b9c63efcb33f31c894fcfb022c108219648292e85d365002cfc40122e0811ec081c560023610035be15594ac29173882354883101bbb0dd0006293892ba5199359ab2a9a99b2a23c32034b7c1e61e6b63bb355002ddd52ed2e0002f03bbba33c9520100b2881ba8ca1d8328234306f384e5306800011380136c00129b86f11308226a8995882c50ee0801690810520129ca04d753d0188503ab0da38b61babe2c66f5813834951381a90309d401d1a58dc6bb53f64618224388253db912760c028488225e8b54755028d7c023780031394037aeb4cf0d983ef100459d625f5a58450606cfe4a906559467346a8c0e945e5450885532885e79a058ddff874da858da785cd410523df6b5bf6938697e5e83d2153167340086c40c0e5316765591684a65c9d3bd8d88a2558750b5927c881c5e001a36a03486b813278f726e001af2e0362420378677a2360021d30021604411e58b9faec290374c026088216088191300221ba806c49c23342420af0ee0209bab27200c3f500094eab310b1035b3a2397c33e896c37e6e197dfea2133881083033b5243394716e294d2513581cb87b80615b03c2cb41302a333adaa028e1220e62c405c181d3e3382090300f40825374028b92130fd8fa1bf0992f65a3557280f6381328f0830d11d05bec98936384e2dbfe0191d477cdc0811e40838b10031e7002777f8263843534482f3a386b9f4c03368803fcc358e66d2e7983844e18f346c084cb06054e60eccbe604bdaea5cf51ebd461842e3f0578a20b264f055eb08559f8055ec88b8db70b5448055a9805cb1685bc865e547e044b38a11baf04ef35658000f4e74f20408002fd69b4e8a01d3462d0bc992346099b366ad87c6993e4081a2653d4b87972e40ea13b6ad4f861a4a4c6141c44c43c6992a34992247f1cbdf992868d1a274392a0f9a284469334499a30213245640e1a4a94a049d3064d0e1d1a16607892730411223a923059b3818189a87e068101c1840d8d275f642c588000c10104050e14c84b972e5ebafe0cf6e2adbba00002153f4c6039f14003070b0f32e8d83196010506181c404021b7c4901225446468f16403850a0d18a848c221099419244c1051612103020b2148cbb8c0a041840e389ed0d0e1e10183070f2e6410412103071d4fd344193264868b1120aebb90413323cf2f68d88861e2c44919252293288912f4e91324445c1cf982fec913256532ca91f3478e9f36fc0531b25f7e82f811c8208d40c2c8239c50f20828a884a20a28a698320a28a090224a838f30e2c8238a0892c81f8c40b2c81f8a9442cb2c2bee42cb292dda728a8ba498124a868f3c920823a1e46807240852620a28392ac2888e8c0472c71f7e9ca86087a04002881d7258b486fe7f81e021871d73b47147208228c2092707fea1441a720cc2c613164581845351b9e1820b4e3ca1061a4ef887060d39e0e0020853f871440b394877c4464e44214306341051c61b4eb8d9c21a5f342105114788a103114d94a1c3114ce85002061d3c3683114e9010421152a881c41b80d00001020c3010d75c7c2120d75e0e1c205760b9d235d801289460410409a0100102c9310001144f7cf040072aacf080031ea8a0c30f0b50c0ad06089c004505392411c1020c5470c1010c144183051a7890c10e271871c41053ccd0820e683c4104a2430461c4104eac21871b7e34f4454558bc81461d6e7cda041a6da431901d6db4c1a42181ece107218bb871fe277d58a8f18411490471c41151d06043124888e744123109b22523821014482277f07724207bfc7130230a3e424927a08c420a29a3848221851a32382423459268e4828f7c22ca29a590720a29a89c22a38ab6d0228ad2a4f0580925890ca2df1d761cc448250a36a888ce8324a2e5884572024a229f004e891c73fc21221b7f2c92c81e6aa4c1841a5f94d1062372a851c71b7700b888137d1e21050f12abb1c61d4f10c2c9d46b243105124d141144134fd4c003110eb7b1061a6adcb1060d3244c183a1e4b231482178a85155146e0c3208206b108287146bcc511f7d76240502050e5400c1091754d02d61711d50d75c77e52558f8e5e715805d751dfe400003846d40820a1e4020d8050eccfa575c1e107142084600c1031ad0000542908325306106ce39c1110446842860010e5878c2a4b0603b9f2021094e404314fae0849c64e10d70f80e1cec3008410cc20f8010041bfc20089cd9e12c58ea10251a61884a34a2110c6ac4d4425230f9e0490c6c98c31a187711251c01096e799d1398201d22206106fe72021b02a1339d99483f7b9043dc18d188474002121c12e387121446465082419408238e0231072e7ec12d6ad8922214f2355af0a218be00062f7a1123afadc814b6201b2940210a4b28e2449458db1cec6007b991e2138ff8a2e928018a507c2287166a9a2966718b59d00215649b052b78f10bfe5ed82215ac4865285501365138c28b3a0c85231601094ce0520e4a580b1be83404176840042dc041195e972f19f809992d08420b58d0820b70af0219e880083c60021e2441061d2001704200020c5ca003157840054ea0041978a004e27cc002ee073ef1dd2a7ce1030cb0e2c20078f66a2fdfd3955c54b0041aa8800320f04c0848e0992404a7084430020d4630032c34610851a842155eb6042030210d4fa8c2104830032560210b4d680211c493061132a13d4e90c21f08018846cae10d52a9192446a10a55a422159c7044200a11a02f4dad139d50e324792888402822968290c31d3076b034e420aa19e4011290900324ec00073720147a6890af21fe44f40b4b0d04230ab1083ff007ad7e284315c4109f359c4814a0a89a243fd189508882133f7290d438f1084ce068a9273d932320210a05010e6baa1085283e6123bc02ee468e20c51a1b1432faa0610d53fa03de72980845e4cd0e7fb84322100288d22642b4462a6d83f2b68744c0b68e9f981a24962425bbb9e10e6970a418688083193c21b76b08442d55f887920d2126046b4320d44013241cc10d6a284314a270042524410a55a8810e6800820e6040042308ce073ea0501af080061da040072e70190758a05673098c3c7f952b78f2257cbeca2ffb6695cf05c8135b343881060c1a021c0cb80a58c0423a5340032314a1ba40a0890e743083ec3efe01a20423840869b206411842106272442140dc30b2f2a13f6f10de200c114b2b0a220e767003e12a52873d4c653cfc4a421aca00d737b481bae471c2172e0229f25864754cc0410e9298841c50475f3ab06a0f0c3584ccce410d720090dd440b883b1462857e2810232ef207d10ac80f9354048e140189be718843890c841bfec086298bc10f5f88021366c68644588812ae04db2c504189509ce21394982d52f796884a78488c0b412a9b15fd205116bad03632052a56348b5ed08214b3e0052d3079a14400c20dd4fd027fde4007375484886888620e6ad0501ef0c00830a9cf14e4649d0e78c0053d704f9d0e12cb41d8f9652d18410b5ab083198800fe0758edc0074605821178a003236041147a8904b04e170b400842555b404e0003f85605888b03e412175bddca567f219f7ec797eef97280043f58a80a6670024d65010a585842a5a0208525c860826e708313e060bb3e60a1e12b854820e0908634f8c1108668841f1c01a0428c59e37220c45afdc3864776a23f7520ebd01a518839f881128e180492f443a23d4cae0d753c2320fc808646b241742b74c845d660ddaa12e1093551420b52a08320e8002968181d1a386ba49bf1473f029a4a1b0e92080e5d1db40eba519cbfb88846cc4d1175c4d028c444894a7cc21266bb902840698b5ef4a28fbc10462f7cb10b60f8a2efc710862f84210c601483effea04e2c864e610b50aec8f1b490e48f00d7884f28ed1485d6bc8b64948b5c80f2148d5ded88dece3636a7d114b355c42016913c13596c1124ca1a2645742243b814e66845430d5a0082194c610a7330441f842285fa48c10814a00075c67bbf515def312028807cffb2aeb99c4bbef6cc5faed2cdbeb810c6bfeccb27024a70821210810649a8f0091855042340a108492882b89750842a64180efa7fc382dfc007358c90c529d849bdc1989d90e5acccc561011af8411d60017444011cb8c1528d9927a4022e25c20b010227d8d429d40818894982801d922c8268edc11a30c143a0c10a7e81eae08012cc000ed8da0e78d59c48450371961db0817a7cc1fe230d4d8220db1ee88c22208c77cc8120148d2880568238098e3cc2d188112860c25d59088e8402273c56d38c1a2fac882f1c43e1055ee10d9e2fe4c22eec422ef0022fec822fb0212fb0e12ecc82a889d22dd8021dda022a5c0828784d2af891dfdd422aa8212d84928aa0022d98022994c229800dda604828500220f0872d8909263488985c8dec91952178d167bd817e5089cee8502324c2dbd14d2884c22838028228821cf4591294c17dd0c01438951dc0c1242c4109e0000788016de80a5d2400b09ccf5ddc17fedc0a7f791f5fdc055e24630010405e34630110c0019cc0c1d5811660411df4411dac411f08c22104c221689c1f401c141c410e3cfe81354aa0fe3d011c1820216c1c2170a38b115f230895271c4d27608229a6822a0c5527c81c28a8d22eb0c22ea4c2e3a1422a94c228700d8514e4a7f91d1c3ede2c98422998a25c5dc8d0148d21d1c8905402168a122a80241c1612ebe1819a014e8d28c8172d1ad67c02287cc28f28888d744de4358d469acd8aa8611f8512d8dc42ded1c21902621acec22ea4a117ea111b1a9e17fac22ca482a8d90251ce421912a52ff4115552651ada422e7c922da01228d1c253ba212a91cd5786dad7cc02d988cd2c701ed7145a8d748d22a2428d30cd27f40d940c4d229cddd5210943fcc11ecc581aec921bf8c71b9c841ca0415b55011c30010dd0401128d17dfe3c011354814f908006304004284b2f9a8f30a24ff8e5573cd5573c2523344263fb34a332ae8f168023383a82c6695c21f4011cd4417b2c411a304c1af481c7b89c21f84109d50121002721781c2114820e79822798822a0ce450e2942a988228f0082638822360a11ee6148f7082290489447a202a40e7a811e5515a251b926779ee02d8e40257ca8829481e84d008da80112404421b3c4491b541e14892d9609286148d8e2402249c02177acd4f62651f0dd22e0cd28abc65210e522f9c611f212828c1611aaa4854e2d1172a651a9a615806de840aa51bb6a11a4ea8a79d25899ae1dde11d2d9402a755a857a2c242960263b5e485040965c95ee1600dfe24a4d190b4a4a22d5ad3b4e45d49e7d00c0d5905cdc16c1c929c10c7bc9010c21895f8411cd4c11f809c128040bbfd97af984f3ed5c503e093aed4c569028b5dac4f30ea457d95a616a8e621b8a33bde5027acc22a748227ac029dd2a92aac8229c4292be0949e2a674e01e22ba4c241e6942b98e12efcc22f18ea2f0043a2fe0231ec51a2b2213000de294d2ae0f94231b821301c433118c31782e88312654e56a51a46648b08c928248d44ba642804821c7442205ce123acd21ae61d821265a879672888d15bca888472611f8d61de7161840e2582e6c2ad36281c8e2a1b821e17e64288a2d2d8b8e131f451de5d25b1921a89a6021e3d2bae9ee5a99efe218b84abded9422d280d94581ad89c822aac68d864c85ba20d5e5dd223205a2181d120b0de411c04eb418223a89ddab01edb18c209524e1b74624f0d82238c991fcc81108a0c12b841071800f6b95b6de4401470405eec93c59e0f9a960ffb74a67e91cf33de536010c0214c8221c40226e05e1f50a921148221b8ac74caaccc3a825049a723ac822abc82290c15858c422754c22a84028538a7199ed22b202aa24eea52be424e9ed22fec822a202b51fe82dfe5545c8a5e8ae4142d586da842a583662582aa08199aa1227202db30d6907048c710ced116a429b8088e601e22728d2199cd4f9ea519aec8e39de8a80d52d8a8c8b81e2b2875da869ae131fe106bde1dc3e382eae315ee508e1a1bfa1178de42d8840d48429e20fe2dd90cd2b4ae084846a4e482648d8882135ed229746b22d2824d45922481d6941404e64c674224a12376c8cfa88112b8c18cd9c18b955620d8c11b389246ad011bac1ac2ca0c1adc470bccc00e7c400594c00644800a10410a88000b54000af08a7ecd537d8566f8ce1361d49b7e0d06c7ca1361dc8516f4416c6a8108f541214cc29cc229d0c66928780227c4e971768229a40285e4a973520843de944082d22b502dd532ad2b24aa29fd9d2f642d8866ad040f03300c832f9c02276482d5fa1d55526d54562e799aa18bf8ed2075ab8bd042b786e4a042de2e78e0617ddd237412fe8bb4c8e6726584829edf6e281a425e82be0855b6081c82522a40e51af2825496a7def582b5626b1373e158964decd69528bcab5f2d0225668283cc96181549d138d69084428ca042577aa02d8c02d81022d340a74b56168e9008d690021899a242ced6d5700882b064d13c422c8d08872c821505821f34011240ca46ad01a4e84047f199144c8cc9a1e00de80013f4015ba0c00964c0c9aeaffa2a63343e232797a632a28f329ae96812c6211c0227c48250c969cf5288fefa6929e4e92c0b9523b8ac2354422114c2bffe2f85b002a00aaa119b21e8bd422ee414d5226a054f2d30ec4206bf61a65e6aa616c3344ff31e1de5171ee519be6109ff2482b2fe124836652152565326cda2d9f0a8ae48b712e5306b5e2a00ce2e08832016a2203e252df49d552a2da81dea3dfb1d8ba8e12c0883b5a66119e624e3f202a8866a12fb9d2d0043440e657a7a5a4e8e92a7edc23dab25228a8229a06b2779a72814a2222a628ba87044a6c2e6a66ed62c9a763ec27ca6545004454a954113a5941ab44116ffc11b94411c0c4289ec815f0e8eca7c010d60000600810b241712e84419648114e0012104c2132c81083840b5cd13808d1ff9928f30da05c772ec69e64502e00501100002442327abec2acfa92be7299c1a2dd0f22f271c672ba84228ac025cc3e9282027d0e27584a8825dd588735e211ad9942abc882d38f02ffebc4284506db552a55446ebe7a9a50f0fb41b1e6a6553650e3be8ae6e082380022b745a86cc75a2b1c80a137649a7882a4465d894428cd265ea4242d6749a8a80682f30b32715ee20ad7049e32ade85284e62e53aa7e13178e83d6bab43db2ab98eea53c230e719b15abac88b76de2126e22878b48b5871d7a888e84189e6a6088da4ae28eaab41204c23159160ba011ed80121240f889881124c4709b48047b5800b84400b201413dc4007b457f768800a3c5b0a18810bec8060ae41814bd7c1fc6e1a7cc1067080079c4b0268f5013800fe483856581f678aaf5d78726972f23ce5571fb0ac9db2b59e76822170029c0e1526d0a99e8a492dbfd9d1e669fe727a362bb8428538e72f3f702a086aad52ad2d0ca4a3f2c2408e6ad50628e28168794a6a2a80672a8442299c6728e05620342227cc0d3d8282da30086c612176f29021fd15277c4222b2eed63ca72b798d8c0422000f65e29628ba6ade411671d89ce15742e58a107419d2422d2877df15838362b3a6922788f63930f442228a5244a22751e2ddb23ede28b06e21dda4e6e21526e1158dd4c84b4696219602e0fceb24e58df20cc250e9a85e550d13b65c479ace23d8c144344170e84011780008c4f707b8800e84c00514d0099c00b0bd0b0694800640c0068c930788c0098cc00960011154c07d854fb09fc03d35c0bb2cc0066c00969a6f5fd0450124fe800104400098efbdc50571ccd72114029b9ab827188250c50227e8721ff001160c0113c0011b48d05ac08108b1a32140422740c298a9f827246719023962e31441aad2202deaa13eab04ff4206ffdd051b03a4aa6108276a2a69e8e3d9c22f14da416a5e1cb6f18280420da5da2070028df0c85dbe11c724c274020e167242464b12d6181228acb68cd8bc20860d7b9e617a2a79e912a48bd8548996677902de3477aa1e115edf113ade55a5a2bf612e786029142241f6ed8972251b96ed50feb372dfe1a8855a8a24675c525680fc01989b08d12009e20c045931ec131493e34cc5e1ec414700811430e611408178044112000112948113f17d441d2679fea481f3eece109840075c9b0ccc800758c03739407154c0e4fb7a1300c1101441134081059ccf7ca1cf86cb1301284003d445f9c453b6878ffb1ec214baa61ff0411f10022abb8104660116b8411db8e62ae8382bf03e2c24ea2f739a2bd038321f73082bb0a356f0d00bb111ffc23e2e16a09a612a306aa746bc2f643c34632a1c66ed50fad15332e550de612efcc24f62bc2b0d6a2a387ad6e61453aa0229002a5386122222dae3b12e0c9b365c62524bb67f5c0eaa9a1feb1a02842f5ebd76f19ab5cb162f5e097df92a66acd83187128b35f405ec57ae83077bf9ca850a15ad83b636ce327570e1ac53b668859c650b55aa59b368a922150a94225094fe3e29f2c388d09d468f1a51fa13a8511c35699e3c4923460c13233b74e0d0b123878e1e44d444d98144850e122d88d028f1658814273454f0387284060d19194c6ca8406183860e181edcad50e14187154c8a147922a54a141d1e4410a9a184c6080d207e2c39a281c181020710703e40a000e8029b476f06ed7974e7039f456bd172a88fa03e6fde607963885327437c72739ab4c78f20438e0c412afe08d2a24ea14ca552950aba2a95aa5499a26eaa54f354bf76b1dab5ebd72f5ebe888557e8ca95f35da6c6372c568c18b0f6c57ed1b2382bd72e8bbb549652758a1653421165a55da083cea44f3e118593461661042753440945268d72e145954402fe61249044da90638f39e410e4c14616346514544e018916924e61a52518675ad196ef649ae546fd2c3ae6bd63dadbb1a1f92af2a597816c11c5949376a1853f5ac47b8996fc989ca5149910e24f955048a1e411524a092594526e2a65944f98035345534e39e5913ff6f8031036d4f8e30f3698182207209c60638f41dc68c30e39d678e30934ea7823071240c880062488088208123ad020830d68f822040f3ed88002041cb880810522d88003081c586081071ea08081061cc8c00323b090420a2c9e20a2830b28e8eb81cf3afb15810556d36c5804100860d8d54ae3ec342cb480e3104326e16415555c7945154f3aa9f6da55a073e5395792f4361556fe5279a5dc5c927c0e3aee7641373b52b23ce5955f702cc89799dab517dd5478814e21802d22661860664105255e96e4e491954ed905a4546839851451486105c7ea4609e59347187484114744c12490401e710492472a79a413861f7904132e1fa1044c52565c7326fc66328514354d0165c0502849992847669ed914546afc4ee15d8a6c9aa0f1deabe8985e72e98848fdc6eb056b602c1ac8a05d72b1c5960b115afadf4f381990124a1a618412061fe1708f34ca68428d39da98638f45dc140493501c59448e279a48e2071c4ae8e0042042d8e0010718a8c08939d08002081f46454184af74000c55071ed0f500611160a0031786e060d50550c78186fe1c6808a1f1218810e18106167040031a5aa0010d358260428c2f9090612f068c5d2058e687dd4c59028c5576b4d510a83eda58b4adb615ea52f1d61456b0a5ae7b56aaf316dc73a9bb0e45eb547905bb54ba33c540525e29e81762e2d3cf6b8c2ef2c540dbf9c5be6621905d9c8226387a98fcbc56400052082158b3452a629225eb980415a190431afc0088b70962106b6b90283e010a518882118c80042538018a94a9f011402b05283e710a554cec145ac2c4234201894f4c0c15a2a0c44952610b534c0c3b33f9ce41d6649ff1f0e747132986308844c5efe402870892494b0024935e1c4c8945ba85cd4e9134180551419f488e1c963287347c8109fe3cd0410e94a0842124210969408313a0e2841a3ca10a4d0002108680b912f0e5010c60c0ae2870aa4576a0094e60420e4a40010cb06a321638410746c083273841062668010b9240030fb8200768b0021bd2808538b8210a79ac8321be3083162ce654ccd3250372e93cd008cb33c4224db1a0c72ce9410f015ae0036caa90064108c2119af0c31bf8d0070e4ec210c291431fe0d0043f18020e4ec0021cf6b0074360821398e844230a118850a00b5d026205777e31cf77a5e214f52c087814e6115bb8426161128f0005c28bf098c21705aac81371a69235ed5324dfe1cfcf5644255474e262fc09a22916440a8fa282a3a0c84e287698084830e2658afe38992220a1528b71821432e1c52d48628b35914da30629052630a1461e4a476b0ad951441e520caf09e4201a9d184c6ea2a59d84e2a634911009d5a620a17562140fa54529384109460c074cd04185da14e1083cb8c10f8388020e48c003db7d410c75ec81e238b001117840033a70021270002a0440c0758944150336e0000758e055332881e418a0aa0550a003917595065ca004127cca039fa441ae484004197000072df84006ee12accd386f79bfb29e6a38a31ad5886634d2d38cb15453002df46112b1e8043687232d4e18a213ba71442c86d3895418620d82f084fa4251081315a2129c18452038f18a7e81e717f75b8f2a10c21c0969e782f44afe45fcb015260385e2170211cf2fb0b30b0a711780aa28c582e4d710fe880daa3943887c3f71c39dbe6c87302bc584b2a30a5494e214a38044223a3113b2a90414262463426062d335a5821425541abec40331049ec416bef8054b7e71d462600d6c0221527b067290b1e54b2505ec052d08642f26ad64242c91df2e2aa2c015892215a148c41fec5006271ca10d51e041122499861131420e6868832082f3894a38421071cd410b78b00313808003147015073c30820e80a00517b0400940f0811db400b08a3c8061318001109040091fc865ae2c79800aa00a0216e8cb053e40010fb4c003becb000550052ce771465899d14c314d43cc623d0fb6a1598dfe16ea00874274c214abe8de2baaf5bd55242915ae086e1fd85008e07602137da80227fc20074f24c9157e70c4b9dec59df4b922142da32056536dc4531c6816f003852a462120eefe6718ed6d48290ec61e55e4e23f8c401895062c2148fc0142611ac5cb3cd6554a5422850c539b28404694930eed119ce0c4815c34319130893ff89c58815bb49135255814a5a81282a53312355129150eb90f3086d4238b3c9cc544ca0f4db68a600979cc3a35d2c84d3c8aa28fae08148d6884222ad1899555c2ab7eb8031a22d5810f74c0039175010d66f0f219c86504200001cd89d0042624990944d0c1107490010bac60094b308209123939111401087111c1eefe1c10f3bb50c0025ca6f90d1049810a60a003159001081cb02bd7292f54ca03666b15d9e8ea79667ac62ac0f548733dd96ea6339b79cdb656b10a4f18e29c9df0c42af8de8937b0010e505882140ae18743fcd6107d304414b2500838c081067ec0aa1ad9355ee962c239076684710d04d2228e37178f18852a58b1364a18d83a8213c52f80bd8b4f0c11123b5545c950f19c848cd85fb3e021285ac6c2400c6214ac18052540c130f0aa82241cb9af44f9330bf128ac4835e5cfb129e6255020d0c112654885dd15a45c3c5cc50a5708beaa86b58202f04aeed21a4b141662aec1e4602d91d7c1448155505802121cc16d1ca12882464d3a0613024e4130fee10fd02009d6400c68a00d08c1100ae10dda600ff8400ef8640ea4200d94e00434e00200e3544ac7022aa0036aa0059a200830c0023840047ae008ea2807502003220b03362002ca4e033e40e778400d68c0052a205482a53380a97a5cab74506b9124ad7a90690162ab587c09345c2b0bfaa00e2621b8764bf056a102cf29d6fac00daaa00e04211024af130a81139e20f2b080134cc1d5de600f4a61f1426dbc4a41f00ca10c30c17d3e01d4d26339428116d0451518010f43a1113a21f7aae317d686115ee111aac4875ec1649ca309d08061446117fe836228841494c614dae61392c4a004c4bd7866459ce346a88426f64961f0ad209aa6168a6889fe8e8d1698243f7ae1c1928afa7ae1493cc2c5f065fdd0cf178e41181422a20aaa17aa4622fe473ed6cf17e10fff668117b0e8200008a9bc2a14924a2452216e78ea6d56a88478464042c113428128ecc00fd6400d00a10d9ac008aae00dea605664200438c00470c70248e0088600073ac0025045771a400450e0044e00021e40971a007414890120809716e0041f202119eb0168ab79d66e7a926523518334ea6e3594a734eceeed3e6358fae01072cb103c811558a1ef746b5b5c8110dea00ab0003708611538a10e68a0bafae004d4400b5a6909d86009526009d660f40ac1147443143c0113eec011e6edd63a61d79663145471dc1c41be242410d800fe12b0e313daa087e4e00da003126c481d738306d4600fe4a00d4c666362660f0241a53801854268885261ba9c2d17a0234008248070a42fc18f62cac8bb2a267c68f1c16ae420462c176e013c1a62829408194dc18706446b7c4118dea3fe1a824754ec18f0a522f0a518b9e63109228100c481f0233ff26569eee58b040e123861a9ce8f157a26c306610dd6004476f30f04c10ee6e00eeea00d94000d9ec0ad88e02dda804fd0200832c50268200a98c0099420099080061c8755ceae793e850480e004e4e29614072025e753141255b8330a4b8701e6aeb58e70b65a6bd23e72ee6aab344a43344cb27a028000a640f20e813662a1125c2df20c410b9cfe000e96600a9e000bb0200b2870120841f20c210bd6c010b020058e6006a2e09b1a0f13468f7e5c6114000f0e4e801304b0101ca110d02010e4c00f28a1100a612e518a11fce00f52a9119cc0141c6110d8e00da88b1356c61100210d02810f48400a92a009eee00d7f41154e2a1050c1404e34119ce027042114d6201016411032219d0227de9aefd824cadfc888a4a42b40482140b4a4673a02622646622404aa687126fae96bb8663cc2061a8944222e84249ea6205482166ce66742018606e461eaaf8874b1468864ac440a61a0836cd0911106411112c10fbea0519060089e800d8ef309dce038d7200a9ae036f0c099508e282ac110086110fc000dfeb4ac0542600672600632000494e009ea801002610dd2600f180110d600add040095c0004288091daae089727541a2d3d8f303d8129b582853d5d8bee9e677aea1324a127b642030b16f410eae09b862337aa451508cf0f0841105a925db0c511e0a00fa68004ac800886e008004f1014650afc4015a8b213d6000aa4202eea801318610d289008d6606171c310ec600f5c819dd6d50fea200ada4007d4c00da6e00d76a0539ba00dd28010d6a0509e20ecd2a01212610aeac00d9e490d1a2111c064661ce1437ec214d08011ec20119ccbabeea012be6f274ac84c0c9314d405395268149bc3a36a463b4e013275916240024a6a442434023fc6cf4982c4fe228041175b6c20f0f418aa66c5da0318caf625b64f4d45c2c16c014f67ec16e40315bc0fc1f20d61c6ea13f592118ea211ec0010160164dce00b76c00330e02bc4000bd2200d8ee00440a0035a600a20360d9c60074040034a4005706005eaca08d0600a4ce0047460f18c40056620053400052240911a295842c5b022e7595dc775ae07ed68cb7496e73d1f8d7aaa27d342e3233d523384c5b624cf0b09413760cd10fa4e10b0800646360d08af397281d430410b9ec0d3b2a02c44800d0e010b406009fc0013a8a36520a19ba28008c6290afc3107b060095a801098530a70c010d0600694402cdec00d32cf0934c00386200b2ee00938610d5a000a04fe410eea60113a6503d49109be20103a8111da0007d2800818e19902c10e1c3008be000a68c00d70607b4b200dfe64662c580c9a400c3ca81368a8d948816dbfe8251ee61674515f706a3cd20bc66ac4202e44a81c62a1ec2b3f5a8c163aa2238041227cc42180e118a9d1343722a26231fa6621860b8a3107958c52312168426a8f88a31a610ed860431ec17206011014e161c50002c5000dbe20079ae00b78f30872402f4ed0031ee0d098002e68e00444a02e3800098c80e64420031c00035a40764040043e0030568508bd8e040d2b2f4a40075cc0053400b45a00042e0054a2f57657eb79ee333ef133eef2ee09098000706b25838b55d110b862e104fe4880104e743958ef7ce0e009de000edca00ef258070a41108ec0d068409dd2e00d4cc113d4770374a00a70200a8ce0090a38adba49e8688008b0a2090c6114b480045460089c000792e0043e20042e000456250974c01036a003aec70904e10fca220e1a010d68c07f8960068ea012dee008a620b2d86a069c600692b70c88400e36b184444110c6d80f1e4127662114586142086462a044626ef13bbe08321142c6a2c6405a842430fa603e912420d316806117cab66c2f82888d4a228ac46bb8866bf62367f0546114068b8298170044216662e3404158b9a4111a300a74f530a4c00ddc2072950002e5c00e2a75102af50e006110c438aa87531108a1fee42a411122b41148b5099aa007ca00097220ac2785042e80b4ae6e74d033721eeb020cabec0c6b912c20ec5485023200054a003050a054488b976025303c4059dbce089545ee56c374924598264d33b2279b3041b7c68538160f0e28d01126a1d678790f086112ea4007de60363689046e700800cf0b934009d4c07e9b20522a0b0d06a11208e130d240078a200934a005a48056890004cc2c07ec609366600834a0083aa1096067034ee008aa400454e00446430592000dd8207efd2010da408f49e004de91064c800d3c600940ab049060969ce002d569f51a3a14dc80112ae1491d811742c116b6d1fd3cec3b58422514268162821a2bfa3b002821a8fe6f9fceb648503a5fc4e6fc82444f07e2de42824914a2238c8a8ab836a8f8836cb8a62064fa16189c6248881114e15219211138a464ec400d9e2009728009d0e0e7e46010ec806f01c10ed6000d96ec085a20b22ae0023a00eb3c80034a600448a004789c04a6200be2ca087aa0036e30b274a5915485b176c5b016ed5574a00344009323e72f1c8008d54c030263743080ea24c758d2ce015a0b7811fbd2500334b420f2686009224f5e3ba10adae0d560ad9d50595a826b15b0200380000e84c05608019b29200b3a01072c60609fe0049cc008a2000a406008d6c09f89809ea7400516160d22e9966ee0e53ce0089e6045558001d66c430da1ab6f4907fe6840243b83023e200dd82049f9c8022ce0d03d160746600d56a053162904d6600ed62007985310188109e4c014382192d6804fdc801358bcd918c14cd408c6e7c6688c46a49ca8a4b9f67f1a826b0b083cf8a38716013946b18842ec228c01dda9e68b42ac22184e186002143e31a6e45d45c04414948617aa861768013a4e41142c01aa9ae3161cac25a80440706c3b70a4f750c1ab28e1a03be16418be11fe03e21350de0e760f30a14c184411f6a00dfee40dd0c06eb013077260044ae0045a60078c739aee806469c52a3480b174c9757249b0e74c72d253ed9607b5bc957aac47d35623008649b5a6c70760030b24ef0d3ca10f36000fbcb0b231c1fe13de275d5bc6ef4c0116d4a9151ab40e72200daac008b2e04209490aa0600894000474000aa2590aee6a04940007c4000a342004aaa00f94740a5c20e716cd08d622049e800466600674a0054480025880011a03b57667034820202d49cd3883014637031a600302f25410407f73202ff60810746041058f08a4a083d4a00c0c01141201146c01104041247ac114ba84df47211150411775514c5a624abe03153c864b4c816d79d8a8a686e17e8422dec31834738a04828adaefbe2fe2187e216a5e626bf2836c1ecc699ca68148e2a6dd86e428c1114621a6962fb8daa6853a06c1766264a5e009722009a400030981002918100a41ea1fc1e38f5309b2fe400966c0053c00203c8c0011620892214dca30b92142c409203344903841a3891b344776a4b0c0c182041428244880c0e0c1030a141030587060c14a040b58aa5c80e080cd02076a16284080c0ce033f75fae4697383964370a4f48905e790a74e9cfc1872c4a710a14ea65671e2944a95a9579804357a73c80d110b269c8458d287c30f13403a9c8033848694246c9ae4c0416486121a023de498e1a6ce090f254a0c694103c4c3140c2e3c6040d18103377b2ab8b409b38283969617588679a184081a0c662270b021890e0b4f9e7cd97002921c407fd62449e247840727a628613a65eb542a5bbb76817ae4abd7a93fbd78f1eab54b94a859b69a27f7fe65ab57b162c78af9f2b57d3c2f5fe7a38f3fb61e3dafefcdc70b2b664cbcade9bb66d1a2458a94285af9f5e21d30bccc828a2fc750971c2da29842cb2ca440b24822893002c9238f7cf2092889009288222036420927a034d28822810c72c71a3980f001061e7410c20c459481061b6aa421871d4fcce001081ddca084124648214514594881061a4aae91061a3b7c0082072db4b003135128f9c61b7fd8e1862086c8a144112898a0820534e544134c312150404c40b5f919509cb9c9134e401160139d3be1b4840a536851c409751862482798acb24a27937462a8206bbc610827a12cd1811a7ef8b1041b6cf041021122106108164e18f2061137c8d0fec2139fce50420a2414b1c30c24e0a0c4141f60d1070d338c40c41b1f68400407a50d31420b33e0c0c2080f74d004103aa8c041070b10951303d85290414b07e889c0082b3980c0b8d7aee4d2020d30d0000d8c98c2c6066c3cc104120fd0108a2276c4c1092a8ef0028c2fa1b411ca2e8c34314b2fdcf5f2c829e235d7cb2f10e6370b2fbb9c8720c2f37d27cc7ce30143602fc21c234c74bd00234c7dc508e30b300847c70b7b2b93a79f2dfae957cb27173e220a29a8dc620b72d375978b82a9cc920a299d8c823425a17c4209281a8e42092595dc31c81f8368c88925947a32e2238c28e2861d76ace1871d750c1248a67b3422881f683cb9861c6ea4fee1462182b021871337b681c6134300b146194fe46010933b70a0020d27b8842d041e30b0674e7aee896701e3669e13e6931fc080b797ef74c209249440c412221461021c86c001871c4831ce041c5834b5440568c4d2892386a8528714ac9f00021686582588a36b44da440827d445c3104ec011c50c278870410758604182084de830840e24585081072eacf1030314dce0eb081a5cf001051878e6404c20d099e74bddc2d4ed07a9d974aee4d8fac0030e5011201cc10448c0c11336b08013b022158c3801a518e12f5f3402109ff045200a718a07e502158a984531a453a0e2eca28300b245d18a469d598cc761c220067b78710bf920083de36919c8fec0a39d0ea202851513507272811c9a4567163e9bc52f7a519c53a0a214c4d9c5cf66318b8addc2144efbc429f4a30a5184e214a708457f40c1b45070a2139460c423049104640d61304c58820c4030a523a401091d40410e944002193881090561021baa800638e86d6d7f28841fd6a686398881092ed84115a6b7010b44c00116d88003b0c50092b4a926e4ca5c4d72b239ced8444f9cdb0928dd342e2cac600810d0801bfa70820de0a00a7ee8842e0fe5a8371c41076a70011602c189551c0a1358a803f1fa400215c8c0086ba02516dc0087345820058741029a3a101b235c4f0324a8c20934800529ecc00825c0001104010517e8200d6bc0421a94fe50052cb0e10de6a34049e0f7800a5c203598abd6b8764200cf0005273841000448b9130db0c43324c8414a16400107b000059d08051b0681a13998428a7fd843203e218624a4e2178fa8182450b18b0781713fbcc8c52c3c96311b8a5064c200067b80c1435f642c64164b592f8e41310161076639d40f2d4aa11f50ec8c16a848c5160fd60bec1815aa3ff4da861ac108a87d2214a2f8c423fec088119982144ea3848820d18844040212615304251ea1884660a2127e78831bc644a429ac21106ba081084a40831c180e0b7cd8431bd8803541c8010d7288141372f08423d89309e1ab000a48001208a060032288c00638000196b4c925a3cc899db855fe130280b24e356109e644790041c5520a9d30e621a290842a2c415e4f208216dec0074290ea2a951004200ec58a4ea8a17886220421c0e428430862571d9081061c90011cb0ee9d46c8411aa6300338f441051d308108385002353461082538c1aafcc0840a74c0010ff08006e2872c112ca0052e680945c5152706e0c45b2bb1dc4d86528093e089022220c002127082227860016f18451a7c600746e4605fa878c314de800531280115a100c4286ca108547c6743a1f82218274631124aa769e779197a10560c8fc9473d2f7419c97288b05de4a262451dcf7d10869fe4a4e2414a85ea7e9cb83350a05814a840052d54410a35820d4339fb831cd8d006fe393042cc7610c4dadea088475482118c0844209cd00435d0f98d455882117e500210a8a004e423c20932d0800c9c000a4e88021aca99041278a08f2df800119e80053964aa0528e0402537408210a880043430c209de67990aa4644fd552e5400faa133b0580a077d2930534a08372b24e0b558043169e80831cf4a113b4cb4216a650e12160160d3f788320b050582354a10840104116faa08428f4610a903005219c40827595c0011d98411f0421051d28e1094d90021346b0c92460c0961ee0c00230b09a12e0400323c040062aa0822fe0800121d0274de627618276cb277b8209fe0220b93bb5763530d9c00c3877ad006ca01246f84005dce0840afe8d02104d484310488087a3ddc117bf68840bbfda0b0775e785d2b90f7214969d83c18c3d1a4b19ca5e081f244fe785cdf9392f6c2153fd04bda808f3854c77718b98db22aca6a0192a4cd1b4508ce2aba3f8e1281ee108ac3f42ad9c308528b6b29541f821ce6dd8037dd150061c38ba035190ca201c318839b881107bb033a7cae007412ce2cc6a50031a96e0042ce8800223a8150d1ae3810b6880bd22a0000752206a09ac00240d48c084c7855a56be64a0696275e5c8a5a681e20402274877a10861a851254e109ee0432ca212dd252861098478421d9e706d0f186108705802ad4de0171204610934d8c0be1ffdfb8ab401754318b40ba2708424fcfee0044f2842085aa0821040a0045330820872a0831228e1303bf0400534f000977cc627310940007ac260f827fcc0aded134f10700107b8f602a7b47f07f00058d02c1620031ee0064ce0069dc0034ab0021a5008aaa066bf600b8fd00ba8f008c41046d9511f2a2354e7710cb6800919f808a4401ce7c132c9011e2a5355d8310b177256b4600a55b40b4c640ba8a021a4303130135353653438a821a1500bf9410a74f5554e640ba0c0089c500aa5800aaa700aaa100a5d84091682099cb0087ba00421f00103e10238400338a00648b0035830088ce00775200883400851603a7cc4011a90024a800459502895c0094f610762b00648a0692850021ad0fe0453e0078e50099e100a9500099030087250087ef30448f00427e00226700239c02b2ee00121001802710215601227c0012ad13fac644a9d4350e49226a2857aa0080587d0068630055840044600054940037030097d503c5860023490053a501186a005467003d8775e28207c335067ad7007400002800102b3a30215706f1d201727a0058230881a5002aea20341b00325100244503a26f006b5960452700416f0001c202e0ce00659d00008d00211e0133d815008e05a6e327f9c5100f3e72612760097540192e33fa9e53f40b0001ad0001b50043a400469100a16800649700190c0468e004181900a94b00bbe20070722202b231ebfe00bdf211e33fe431e2a390b985031e8c11e44451d34030a9c205627980a419531a8a04694f009b54044b3200aa0e0442d05202bd30bb4700abdf00981801dc1510994200778e06680b00680d0096eb0067780076e80077840089560096864754f530868d00694105596300a9e905c78306a2670046d10076a500555c0044ec0067350066a30043b80067d170852500224c00484c3043d320468300571330551b00618a13e2da00347d0021c4011ec275a16600115e5001ea05f17c01236b1496c127afae726a4447a4051131c30054bd01459700858209b339005913209ab60044530051960027dd0075240022930033fa00327500283e20352800238e002877002338005fe94080485100bd9b803e708077e80056d6404339003464004687002fd44011be0013af09d582008a3030110d001f32902e053044d40031f8006c3c2031c00022d90041bf0003c110030219079824a3c41130460a0fd18001c8004147001f6070108207f78b20004d00010500009a00362e0047e401b3a40006ee0036a6007a86095a14009c7f007a44033d9516340d71e324533b4e02fb7400a34c894e7d1942e84a306620ba690088bf508a5c05634d84154940bb4a033a7e0a44e387354940abb800a91500947c33306721ca9701c59a61fa6105534330b25a2089d8056a0000a6ce5088f70228400088d300880000870a6855511087bc0064910232e40fe044a80065e09088470077610086e70078610088109044cf02c9799047bf1048480358d60089050096e7a666bf00143f00434d00244d0021e80010fb0013e300428e0038bc70202577a3a5127b3a57f7db2003f0005a30307b12005a26604755008698005509001435008a6b2042580054670084b70041de03d4610010b7012459206c2f7065a40023a9003d293031630139c38911740013ac0011420033810119b64048640041870025850040d440423e002da6a3a52700238d0076fd004207001200007f45a018ea6391cca00183051fb482e7d222ed38a002871500560020bf56a3b911a0fb01a9a914c3ae000f6d87e0520036b50084e0209be00088afe204567f50bdf2143f55132e1613221b353c41064425432d4910a8e606513430a9470344e03088b100aa5600ace01469890085a760aa2b0524c6a20334846733057a84045b7300ba6300a569a1fc531759c10568f00098130217bc0088b206675f1056dc00889e00681000875a0066b50077740a862b08683d08450880a9d905c4e303a3ae0011ff02334b0034fb0065270078200296b100551508738800320503abe81020e61022b606f44e0021a908d187003338004f3b349e9291a0e2002a0d53e15108aedb73930814a0a5a0050800243504ec1a80544108c3f80024cd00011a018980007efa405a45301557008d7a5055160042100047ec0064ba0affe59500438d0012510b821900248c07e4350074490bb1460089ee0018b039ae0f4000ef004821005d3a29f33300314500151700217200584704e34a003537001346002daea076b8003cc42b062a04d73b290f3279008ba1225c0400ee75a3ca18f2d5101aa650134e0060ee02a0866021d9006625006a21067a6a046a1c0b2b3500a3c9532e40120fea2532793744cd41c04721e365820a7600a5fa70889f00794900872f0218fc0097f600653130773050941090a621463b3c034b6f009752b4637b80b3cfa8252588418f275a7400a62a40a53e7444ec41fa3a0086d20054fe05772d006e8b60351004f4e4004dcb90667ab0883903c75e00773e7089cf0fe088500097e79238b26078b100888f00771b0246c5036bce5046de00448308c06540565a0684be202a6ca5d2d12130966006a421305f039a1044aa9f49a08b0013ec1001e900586e0044bf0064f0007894104880b057df08b0c049ac11a0572500447107cde33916f500775a005e57a6f44a00645f006468001ba4c047c600415f03c49500255302a27200544000244102f141070a2f90465b0068280074d30031a40034a6001182005f3b41117300268d08c7cf44f14409fa8e97e094927d8d21208eb001dea1304395b037900f3434a0b20109a0c0205f03d19d0028fe50660530768100ac4d0300d430cc690d1f49132159d53322c1de46144beb045bbfef0077f800ab6f00b4dbb087fa545582656a700086d00098a80097fb0582202465cd7418fa0065fb0b3a9800aa2900876a0b445938190205670f5099ce04454f74545390a5bbc33a210469fc0c51a322262f50898c0d4418c218d10086425678120076f33077290d6b8116770e65680b0b895d0095c37083acc7572c5088280065f620769f0045280046220068aa61648205124e0066aa00108f9499cd72d3731ab08852740d1000aa0014900054db004ef956e4910cc87600823db0738a0022b20026ea00238b004f085021580016cf00a7d90049518055040035580041e00a84b00cfb7e300fe44046d60040f407c3b8002fbd60123300221407e23d004feb94bbb6b807d9cc2156c505a0728020fe00683500846400124b0064db00684300492d1011860aa9233aef8f55a004d6ce342010790c07d322eafa66035111904a6270b40c1f6050139a006a8f0044a4009bd400cb3204633250cd39153c59074e1e18144a53230c71ff99146a7500a73b0077f800673950865fb0868d0848a301bf0f3018c75d37130077660d68350063c100521b95418821cd8610bb4c0086ea00847f93462a7c49d70d559060a3c9a654b4c0a53b8a69840098ef02121120828025726e2e4749a088dc009a4b0c77016367296086a76d36f7d116da00684a31068f0066520a262c6066e800421e0013370044d60976ef0076e10054de0fe2b75d00673f0048c3103ef131313d6008f7d3907653940602919504e5a00118750078d8e4bab4008874004a683da4c508ba42d910f003d457001a5590216e039895e073b300219805f93c101386001d9383f209001ddd5233b00021830021c8001d0a2026d30031ce00151c009b1290304db015cc8014640034ee0c81d000773e0047f900652f0011fd001193003190001ffe6dbedd76a36813e92d3ba438170f3a3134181131495b19fec001820619d2402a5b0061620075f5a0a8020922a993115ad92c6b01e2b690cc470822554458f20261b2e07748802dd3c7e4ee008564002fc590214958d16700271b0086920023220031820034ca0064a100434fea00672e0c75fd05689c00972f00595300a4699e58f40d78fa0c464f4759c006767d40870053675c53419050a72ed083dec08a890099fc008760a67720d085fd6086e960873b0067f009eb989351462857be008a1d0b77485867e601b7310e648c0044780045fc0043380065f2003c1e5e923800332400432b049f5fc01db676c1e70024ca004282039fdd812aa040102100016d08c2a6004ba22086a309cda57044cf00319d00134103759a01727507e1a406c27702cd9130220b0030f80013482054be01218000282b00440f0074be00020b002f54624dc54020f00026aee2321d0011ae01bceb6013aa00317200758d0011500011910a16a78037b1005fe69d3d7d7d37fd4fe230ce0db19302e2b9160ee73cf85fed89c941a32314aa88970ac65000b200453c00275c00baad006bb900994400bf4511fecb1ef2a196405a21f1d640a824069764a096d20aac2f7f80001420c114126dce069a18142860714beb40162214307060c88f43801e48183132d780c99128814254689ec802ac58891a3428916290a25ea542852a242dd24558a542850a1388912f5e9d3a347a27696024594d1234a8f02297af4a9d1a34a8ea832fa23c6cd1a2951a288a141a3cd9e4098182d92d3e609060f2d3e6410d1824691161d3054f0f00183830b152874d04184088d0e0efefa488345ca942544861c21c1e04005081a3a2c3860fee1048b0e413a2060007ac106071b389cc862c44d1d0e2248d090d2070b912286b09c4871c4d012121e86089601448b13436b88ccc082a5439f4e2486aca1e140479a2255465c48f2c4531d1d293ad529711d810f3e53b018928245909f408e9678b06001ca08176bfc10aaf483c10637694e9cd0c18d1c0a0905954a06f9c38d2780d08001071cf8008205164000340628a0c0030a1f3ce080023c2c2044070b40a082051e108d010a3f0c6d01c90e40600107183881133f6890430c417829c6175f78f1e5185f7a1406986284f151985e7c01a6975d76a1a5113b145104902640a8c00c4ce4c0e1092270b8e00b1a40e8e0010644902288052820a13011fe3ac821842398c0d00223da40028d47f640638f39ee6084124e4049242d34d20044104540518594464921859344203105949f3809e5135092d294934f5462a411482009b591449efa031036d87844254a484da4a4495b5de4ac40d640c30d3b3a01c5113b0419e40e37da700350473801a4d82748a8c0b50c5abba0831134d8e0810ba2bdc0830a3030c18386249bf0020c1da8d0c30e4984e0041570c0218b298cf0c39043d2b02d8413a230a48f2a4ea8608327f6d04204121df0a0842170c8608675fdf82f8d214860a8001164e8288322fc80a30319e0a001081da0900882192b88e2133714aa600853b0b8e0840c2ca3e10837ca6863942a64488202fed03a0062060b0e7040083662ce01091070a801891640c86089569e7efa9556f0f0e0800512284103040a2000c40a437ca030ab2ba410010f1728a0ecad4bb8c00747d0e840093f18d905485b7804e6c7597619b298638ef4a5c8638439a6175366e9a517501a69c30f4e18c9a189323666a2050a0ceb0b8558fae9871b093a38020724fe40830d3bc498a10536d01003934494e1a79f70ec08a28d3a90986108259040620d37fe98438e2fd090230e3920610a934f4ef964505046318594a428a1e4135297c2e41149ed90e3d44618b9f4a6987252257b4842a144103c0841e3843be408e40f35bca2a10939f6f0830d31c448c38d37d6988279d6a00639feac670d5190431dbe7004293c210d6051c2072ef0001670400970e0410b36d0a2ae85886b246ac0064ce0800c64e002b1c9421d648385194c010e6f38c212eab0042cf4610a2458c3128e90832da8000e5aa8421de0c086e430211087c84005322003238c80020fd00116ca40043858c10319400105504084135ce62f7130041c4290011cb8e0049a388108343003077400027c78830e1c00011758610e7dc881443ef30024c8610e6da88494dee0c0274441403e70053ff8e10a2b68231f70a0504512a0002a68410b5b5000012844a10a1ce0075b00250a0eb182123900330c90001526d18a3b480005f2c3c11788f0887060a31cca008637b0510c71acfe631d4c3a063084d40b615c631ffa90062ffec08b5994420e7270032b94018b491c42163a60c0034010051d78600ab0e0c62becc10f6ea0a0063ce8400918888439cc01091e208197ae580478f0431ff6e8c73a1aa10441a8041080f0843d042a0a7ff843196b70444f50818a51484f7ba0e8042544810af471821289508423ac4289ef31621080781520b82788408022527f5044aa0471aa400462108b40a9475502534108620f7858c31e186107fc0dab9f8c08047b12c18635f0af092150835a4240811308210a4f3841694cf001101ca10515881104fe420326d040043c60421150b0820da8a0020f10010d4800042724700a55f0836cea8085231861fe063248c0018cc00928b8800d6fa8df1ba020833f1ca2087098c3091680c33a18421077a8031128b08035ac010935e5410e64d0000668c6016a48c21b967081199480042280c0055ac081fad1e00b5dc480561d70806c9e6b0121a0810b98808537f8ca0d8510841cfce08727b8a0118aecc736d220828775e0339350a426d8a0c857a48d019431800fb4a1487e90e30a3272100196d00f7eb422168a3cc40576e008279c2011e350e437f6a1487078831fc660122f78010c5ab423764352643268010c50a0c10f8a58843f14d90c4da8800768784209b2900945c66202dce0c7368a6087367c81074a68c212a6903417dca0097b70049fc6190d1ae84291fea4f8dd1f1251bd66f0631f94f0473baee78898d0aa2966f903518802893dc8410d89f8c31f4ab2882103e229ff04844b1e31aaa8682a148f5004f842a1924724aa105301de1e8a8c86210001084930b2189ec98636b4810d4fa841ea6440831094610d3af8cd5c3a408222a85521a1a1adce3003a30a5980421cf000084a0005232896044778c32196c0042674020e50909605742081b1ed4c055055cc14a4908421a8800f3f084e0968608213e460089e2084079af0863260a10d7ca00d0a3020410b7820b51770400896e0020f3880051ed0810a30d0010d54a0042d30011a9670390468000414c041093250020ab8400644b8832300e1072938810969fe4843197ad08671c60e147368c20ec83405135841c1b290057a0be0208e44400b0ae6472c24e0221735c00112b0063f64718557c462050ce8407c5c008527e44291faa80579f9118d59006917c738c62c8c415e7f90b71f688049133ae004481883bbcbd80149aa30032588010d35e607c0f9c10a0fa819a739f02a075cf0843b00620f6d204122b9abc85f2041094078021b26b5886128d21d7f6884f48c828a53cc6216a7404a551ee188a690dd28a618854f9a4712213f427ca130c52360ba8738e814129cc0844db01208a69cc5558fc084a4e4c00892da21c982a8152650ba06264c41092d380167cf66182018ed02158240119c4003168000032cc0fe50053ec0a0d9c24800194840049c20eb2c0ca108696c40caead009963164230cc080052020852c64010f782802094e4083358460012598010ecad0895534614e7220041c8a4081167aa0603868c1052cc080b6e880061b98d002aa0087060cba012d484215e4f0842128e7890e6280b83000b40c588002690d842838a18822386007e3de8a1d823620589d36500324a08127209e8833011418380790810a78900b61000350800b5400037091d040000ad8800650800840810d508006a080e8288332a00147c08453a0853f50055a10055ae80517049262a8855200925cd0af5e10851d39051c20824ac0822a58021148000c70824f208232900352688207fe78800fa081d1b3032698818ed1810c508171b30335603324880229f8022730021d6082df61b3a2220225182041a8044e98af7d58845018055040055ad81b1744059da0855320054c80844a80a9a45a0f34980392a2845a4984e031323720822798022268034058034260843250833938c03220a93f780afd6b1e4650043bb8033f7084e19a0a45700337600329c0833fb08303eb273b90023718351a90400cf88f0cd08113e8011d08811440010e71ae0a6880f223910a311b0410af3eb03f0fd0000e38c1296c8242e0031520012310010d41800630011160024180822ad0021a180123200413c80047208442c00210e8846760832438010c480347d082fe0e28a10c68010d5a800b280223b8100ae0801900811c208436800cce52916cb20012d08137b9001710340a8c9071a9001420012640032008c719f08024d881197083a53084f6480226f8952fc00135d0011770011c58b60da00025aa8009ba1091b1bf0ad0816494c21899c20e30380898880c10190648400fc80150440348c89e34c0a15819055e380545e8411f41855e60843dd8090d401435e8810962aa403801c26a8205c88035500139698136b03341100399648340500299048119002946b8033b30093fb803df21a94568041edb944f08444f8184a678849e308a99581e50100aa2d8944db9bb91e084471884a72814c3f303c303c544f09da710fe15456829bed31e51509e476884025209487004e4f1a83b78022930027e64ae2a0c0126288323408232301d35c002347082c1a802f5510331d001438300559bb30c301babe11a1390222480823428800d28350f0c8d0b280143db009b5c82e01b02cd100107a88016311b0b703d0b882dcd830213683f384803138080fb84001a28833aa8033498817084043f40000b68012578021c50021dd00007d080e4208228101b06f890e8ac0024a08000c0d0006000106080344882aac20c13980b1a480211100137e00331508326008454e8b241980325a8020363833910833fe00434280343208223188221a88b2b0a9b2722a1ab7a800aa8800eb8001571808dfe8080bc320086d88b12c0011208810a4888283890fe59034648855fb0055198833870c15ce8ba5d9885221c053490003b103a0ea8080be00028c082034081b97004a85b8326b0034070a72f08044ae80445b80336f0033930d4414829e4498ae81185e8210517a409534005a328055338055388094d0d0aa2a0d4ec6995566104404029a8000546584ca6e00448284c520c04274b84416029452015a2c004509d323f99833da8d58f4a8306aa4d2c6003f8598445c0a83488834068043f5002f3c082f7e8002be003ba2b8440600324f80013e8331a800236201534f83e11588852db800f308c7ee1170e88000228023ec08227e00017118e21c882754982fe2ca88c11d01683240206e5001440012cf0011330823e480220380112f880ff600343f881a39c48b600011078130ba8802430044e080441280542e8003a3d8223180c60938c18a9c055583a2d90029dbb063870822f20010d58509385b83970021c380245610345f005eeb20550a0b44a2803277802cf0b012040831018010e5d36894c02346802119042093c11268d80d8292fab8982772a8136688114c08124180138b8323750852d53044a083c39208954f8045160841048833a8082a5d38709c086a583001d40c5102004f6aa04453002350084f3d909a240054a2006e4d2074562065230055b4005afa3054d2505afd30951d0894ca58551108a4fa0fe044b79845841d55049045e3515356084ba1b155180844548387f7804378b833430403160b3957a55f8218b4278095a558a3b508444a804d66c0a4a708451758339f8a7d004456011831cc081bc5c0d3b98c53b98832748021df8c5376890266d8000988cf8eb801144910dec9006a8d226508107400e1428011158934eda802ac0022850810e78022350013c98043f88000bf0843e288355e00442908d2cb0c9b69881c6690213e0830692811b40823e30021968b60cf051115883df40023670182038820c904607110115010d0858813bc0077d585c7fb0876d9006458a82cb11177259016ef0077250307b908246485c3f400547780274881d45988345fe181d3b788240e09c6620af69d08128900832d101129804938b1d2df08bd9ba1c2d50a482222f43808d46e8803468827ae28774c0b940980351e8d65c500335100539e08446788322200435108057e8073e00387d1004f28a0506289a13708434f8004a0863059b075b404c3d14855e402e5b3805a0180a9ad8dc5350b07e982f7ee805b723055b98054a1806f2da075ed0b85e98855b40855d582897c3da7e503c4c490a55e01c7e688758f91e4aa804a00204f821c5b969034e1483365b033958834ab4dec614d5524c8337b0c42f78033948c12778823240b736fb022968a736480336108436e8d32f4802dca1012c10b33280022ccc800550026ecc00fe0a20822fd08b0020000140001ae8031d90823aa002d9ea001c7857b06d8214ea0336e04d71e683ae4a011a30c72210812388853e00bf0bb8dfd1a081846903d9c81a04780012d88114608237400120a0011a7a0346200236f0049aec0b088838b3b98034180436c0077fa08171ea8725780545c2020a701019a9800980857f680617e307526815bef3cb3f685c7ef80435680435780237400231c8e94ca8317fd802c9ba000cc08027e804455a8500800228b09a6c4a00080800300eb809202f58788023788208c0011f98057ce00758f0847e48843618044128ce13c0512c98034738012410c70d000094a5023e40af2b50a465a8805ef30334f8804220feb959f8845f109452088a48e56445c2865e982f7020e55d2065519065652005f2d287b123459268831adb0754b80645ba859b90cc53b0055b28397e408544680442588334b083a530627f8085d0a504ac6b4c4ce1044ce9044b688ae2b528a012445485844e503c977084f81904359002fb30454628043418432688834568273ff883e162022460827f61834d8c832f702e10e81812a00019f01607e000cde080b4311b01080003d8c808d001136840267090650b022c68021af00151888524200d17e10085008122c0844e488222008287818002304a0818021d98012780d3bea8001300829b9ca32268022330021a500226206789560243a882de400023fed8810788800dc88127e80094e58743b8827ed08435c05a6250800961000830801f20077bc207cec187e44883c27c8344c8b97ea0064ed04f34f8823458847ce0877f70a47d18861398ac33098434e00328b627554001dc93500e20017a48876d78063e188716d6020d9091084883508004f8ea872648023518843500962b6c811f58840cc06bcc10800968066d700505d0845518004d688666c8077531023960802818146748747c308652f03ae2458991d00572c0077c6086a4a8ee44608a2bcb0463c0877a20075fd0c34c1d8546d01451a0f559c8045dd0855c4890ee21c54f18065d30866260144b2015d3dc0335a876519831c96c9e41180bb6d31efe52a412d3b40a46b0d93a0804e10143f82914390045e0011e39281d34408338f88342a8d6f538d44008cc27d00120d8361d78821fd0801360832f60822f00021f200d7f990336080205548313d082094880b4a12129a882088891ad2980ffb0005322009078d22430810bc0810d20000da4b40838002160f812604a38382d0f10211a6801379884d988822698812638011c804710808336300222b0b93780836b2b800c4801c3800066d9800018800150800dd0f206308006d0022828d910598006405811f59fe6f403e3285012d0292038b13d388158333020188166818bc9b29a8d200136c0013480800d98820ba8bf098191f3350003b00b2828820ef4fe8b0f680220a83a7e90be3278834790032951831f80002198acef4b00cc487b0348808de89005e0812a4c0009689fa7b4054630013b605146f8823520855e00121fe1855238854840cc52c80560f87660e085bb19febce1053da4c1855a925f6085488dd454100592102ebfacee46f8c44618d6c1d31e4c813b5418894baf833b90021f67049ae804714b0335588332f8cd4280d13b180446f865450008428c060d5a23a58da03f6ad0b8f9d346cd9e4a8602d571d3468e1b1d3d3a64a001048d18192ca078a0d0a101ca050b36a08010a20a9c241d2040681061010214240e3c806060c181a027f828118182c0891c224ec85881804206133b343cb8b061fe8305074754a0085248951b0d2534aca9f2a0c2133814a0a83982d3c203071b44b0e994e403050b34dc143a42244494372a3c944103e4020306080e4818a201028302051c3840b018c1821562d838c15269861b5481023da1d0c6cf132784d0bc0964e4071c0e6a929c2db20482870a38298f60536407880e3d188830410141019e0c1c2c483002320207101640250245041126524ef8a9f427090a407f447438c173b1649c41091c007a2081ca030e1a2c2f6141f1831365e07007362b111b8bd832cb2380f881c81e7690620b2db4a042cb2ebbf8d2cb2ca840a24a8412de820a2aa99c62ca2cbff8e24b85ac9042c928a474e208270ea2720a2b1da202feca239528c2d01e6d0422c71c103d8249289c64224a288b0cb248227f60f249279f5062881d729cb6c8228cdcd1065f8c3c32d01a4944d1468f445490c10734c081a42082ec81061b4c886081073470401f0345dc21882185cc1685092294d0010740e010d75c0214f04009451872820626b407020d2a105105041b2cb184274b788001764f60b102030d244081079059c0501634544043111a5090820e53486184112a58402a0740b5208207951d40430e1e3c40031372c05107101d684002111900d104091e4c71020689e11419032a3170c072052cf000034b0c91c11383d8f5461b27948046ba34e0b0060d52ecb184121b38610404208800c203437cfe61d901053010050d32d4d10005073ca5f0a8dc5290dc743405fc804a479410174d45886148095a9812c809f7059c8006c949160001040420d9620aa79c9c65386d009a122acc50071a7250c20924683831c829a930424a2aa6a432cb2948f332e284bef062a129b4cc82b42dbeec424ad2b6a032f529a374c8602aa9a0420ad99450f247147f8462ca279880c2c828ac80d2c9dc946cc948258edc61471b7f68196422942832871c55c4b1c7680eedc1861c8e2c92461573bcc1e34573ecb887216a2821c30c153860c2135048d1841a6ea4e1c4116da93096072df8e0030a2754b001134c40714211651cf104000018800210821ca283085060118b0a20fe307a01119a08e2a665223051041055144181030cac20c82a98a0b000107018b184061a181105104f18b28404660cc14109d97ecb5c09690c3142083bd0008105211c9184052270823af8a0081b28400e4e400414344007116840064eb000c5284c612d4380053a50811c6860067388820e3c40828c44800380a84321084183fd64e0004d60c4b624a0060f308002ee214007908082037c81030ce8c00208e0ad0a060028bb410001be8513043ce038d13980086810011a30a20d15c01e7b841894f51c408828dba2652e6319e65000094aa00005a620862138c10925884220d21688413c82469048c4294e410a5a9c4215a818d0274421b55dcc024213eafe502a78a148426e2d1564fbc4274c01384c900292a8d8c580ae568951a442149c00859340118a507c82148fd852233c0909473422108960042702c1b739f8c10d807004231c91083b180212a0e04481d66007d3f92110b01483077010290e98c0074fd8831cd6908625f8800627d0810b4c50843914220a4ba8c3920837072680c0044028031bcc8086035420001b9082215cb1041c60210217d066093ca0010e3ce104d75483114a40822198a0814d308206a2d0092d9860064e30441ffc80050e60af3d0b900e1022e0800b9cc00320d081f294d007414881044d4843139cc0060d38c0034980c2114230820604c0012358400610250313c8e0093aa821feb7801246068c200838b040023990061cec00079222821266a0042cac21148468821c3680010a2442024141000d50b001c57cc05bd8a3400b4e40a72d6a316002db166614f6836f15a0010fb0a04a10708227d010399211621685881c8075915b05588c112ff0011db8410d4b184423d6d0843411e10b4c9803241461074adc8106a1a0d12978718c42eea217be3806318ae10b60f8426b9410449218218aa04d6817b9b0452e08998a5fd86217a9e8052b4c54094a0812146c6b442328c1a22dc9e10d8270e5233841894670c211c6dc121d3fc14a4128e20f6e90021aa4f9053fcca60e08f9c31c6c89113124e1094df0c31a98a08322ac4e054138c210fe2e30021a44210a6c8842085050824ae9e0040cbc68053a20830c48c701094840ef0210009464000e58a8c2148850022c74220bcc0cf0726800853410220b4158823f5530043874020b29c8c0062c3c83231ca10e4f28410518f0800830400b6bd800075460840588a012a6d8c31b9a70021ab480c1d299c9064030ab193c21084bfe28119e4005f8308006259820c0b6459d07202003192002096680853a1cc10f49f0c32090f08442ac610881c04411d69003dd7cc001150c810e128058c970eb01b76a007bc0f8d7c3824b251705c22938f0801024c1081dcd490a1d60c39709b600894e34a115f32d3123a0010b8040052a2002072ca1107d1bc4283afed1494728a1069d9845285261892734e214bdcd452fae968a5ddc6216a31045d556eb8b6000a317a830c5d83e91dcb57da214b4e8ad2d3ec4203d9aa26c8910842314d1063bf8010d6a588396b664074604e2119fe04423a29bcb532662228ca00424dcad5c7825c17083d8c31ee6e00433a8410d7650031b8669ba3754a1097f288312ec30072cb021356910c3090c0063074c5a8367f64322d6100528e08b6544de40090ca0823aa0a088b7d3c224a620082c8040094bd8400b36800015f4a1138b4254115600815971000b98f0041cfecbf10a5ce0011ca8800774c0874ea8a10c54f0c110b0a08421540113a930c41092e089f5e9405c81d042c03890fe661a9340d314e0c012181002156440c7194c021086651c147c00031e98c1062ea08332bca1087b70c213e6208a153c811346a0411da0500023c05561c969c080870a30c940e0ab9221b4a785e8e980a5ac3d284b4fc010500120a00001db127d172d53fa9515d6a2c961a9c226c8801f1061036970c41f74f00636ec410a9df06327eec00909ed42b4c678be318a410c5f6ccd16bf00868498c60ba4cd6242a2f8441f77510cd69a76177aec842854410a4c40e2137d9bad294ab1b6a91dbb14a550852a46490946306294a3cce58ed88113084223fc9b1f1453210c82213c82d96817ffb901e3fc81204809eaa8c117e400133c4112a4412dad811bb841fe14484112040111a4cf1af88c18a4461310411da4011338011254811c98411190400830011b884100ac801f68c10f90400a48000a7000131c02169c806530008381000894800c68010a404115400110d0800e40c610184f23bc811628410e40400178c0119c5413f48111740016688713e800055c88209c804964800a140111b4401434c1eec08185ad4b27100211188102880076c40a01204042591a0f3480ea3dc003cc800b5c400780d005b8c008a44012e8401a50950e401e13f8131694c0019c800a6cc009105a090c0104548607389a5b3d4562a0c7e7b915a76dcba215c0e9a98c84a98c174998201a4003e41ee9b5952d26070534da04cd8e0a9cfe4012884013a4c00578801218422814c32f189231b0966a8d4834188332445f317c63f4cd8225384229d4962db0d6d4f88230b01629b08829e4562a804223e412274052fa11122b148d2880822a7c88298cc2ce50422770c2f17d48fe85022a94c228fcd228ed232784429340c2e5c8c11e2c821c144222cc011bb0411bb0c91f20ce2334421b28411300c1115441ed94a4095c0005004f1904c21cc081463e0113e0000e3c8101314115e4cce47cc112a45313a80004a0401138411ff00116f0c10a248005348010a040015c400658000850c002b51416148103a800166c800e54411dd4410914800ac081c3f50116688005e84016b8c12408021cacc11bfe94581ae01907a0011c54411a2c19e4cc44036cc002148001040004181a0990800c94401294801834415e14c1095c4099b9801314c21da89d0b50c00590401d10010ddc41324a41cd48c10a44c12034010738400bacc11d3800784840de5dd41889da02dcc7614586a7250705b955178d5ec01c402eaaccc94898001427714a582e4a980118c00140c122dc25203c010824c0ca28c07cf01808540007680008f44004200a53350087750220c8c11f404229389f31f8c237b6672f484d2ef0427b3e1f3100832204c227c4e788b0d62f00d725f1427f22cd87a0c267651b2b8c82257402faa1020356c22374c28c3ce42731021bb8c011089320300272c901fe87a6c1130001102c990c2001e3b081200c821dd8c11d60c41a9ce81c75971cd0e44562827439827229821fecc147f2411fcc411aa4011be0c1d6a5011a40010d884006604662b0803ec9c01174e210548005a8400008808451670390000710010714d64a884013312309b48a09644011dc070560400678cb06648007a8c014d0ce12509c1664850798001c68814635000abc4625480164604fa904c57280da615147651c160478e6545a406a3e0008408120ac4109e04006a0c11294c00c9c40909a940720811d644111f401012c01214c41be20c01ffc4000a8c10f10808e6911c0142212c5e27aac0ccca04cca04670000272ea24c951e27720aab00e8fee2ae06cc0204a72d264004b44009d0c00ce8001080a90720801800c10228231648e3fc95166f91828d60c22c00c331b4273000c32d0c886b6dc96795822dbceb2efcc2bb818228745ff301682fdc422f04dbd6ccc2d110a8832a572bb1482510a4233c68b7cd022984822afc4120fc418ac29921686822b008277082217c428d704225300201fa411c34c4c30a4221f84d258c640a54c003984008140c105801c0e5c003fc0e0aa04008e4403f21801160c113bc4115c1e10778c013a4c11a9cc0d32140146d80091081d12ec114600111900f034cc10f789a04dc040270809f74000870800f24860b604112f4c12418c214948003780a11e80009800011fef8c1214cc10560810e884a4b61004e3400047cc0334e876524c77a845eca648baea2800a2c910dbd9d038080133441123cdd0900c11a20810640c11b24c10fe4c00e2c810ea8c00e6c000908421d50c61b4881050445afde555c01ee05055100200760d5aaa70d6bcafc6aed2267ca1827ca14a7955ae9b022a72dda6ee995510b24580bcc001394400279c0091c411a0802b96142f6615ff61103378e1f269d4826f882314c9f30d4e76a01036f8d0224d423269482af79082a8c4274e15b217002298c4d2790026f8102d99c9222c052279842231c6cbc7d52ae9d48be95c2fe69ec295102261017269c1220acc111e880bc70a01ffcc147da01c4929bfe1dbc0134f1482134821f380114ac41023b44e894c11a9280668a00101401f04861c1c5c11c9441492e441954c146020100108009ac591f4c81d762011648c1121c82065047ca20c7a86d004d9510056cc0599480f8e48a0a5c07e89e001214c27530d49bd4a603f46a7b3c40e8319a572686a86d110758c01291d9016c001688c1076c800688401524410efc854d0181139800240c4221f8c14ffa701f18820a880012400104c0410e60461b34c10a308157b5cc30cac05d1d167a0423e0b60702e4a22d7a312e66d12dfed5aee22e7be86ae8e16af678da537480a65dc005ccce132c8420e08107ae411d90c11348c11ac0811c6809fa4a08302044f495feabf51a8330a08222a0e731782389f05128644229cc0280ae96bcce41459eefd2a42bb4890dc3aa8228401b81768272d5c117b0417509a4d9dc0109408129f0c2407e8296f8cdbb3d2c23e4af021a9c81fc811f54179530022468e83cb2d21db001bccc000d60c1680c821c1c010900411430c117bc011ad0c013ccc003ac70111074f5ecc1138855046c405e28004a2840cbf56a03bc4e057c5327c084147ce27e8900050c1d052400fcb469072c0126c081ed140152ae011444c74695800e94c011f40121bc81127840538a40f9f0044b6dcb2b32c0117000121780f2f8895a01670150c00a3c400b41001360090e448005ec0016c0d91da041125c2812fee8401d2cc1078c8004a8000704c003a0c013d8810a3040009cd49cdc555bfd661175d1ca2011e9016372e6a6ae0216a70d36b26e91112986eb2d874a54800674c0587440313e400784000954f6a6d45c1344c1730d0220f4df23384228f4dff641f38172082974b328e482d3b4d62cec023014c3be9e96309cd688f40230d8022558c29328c2221c2c26a082c6f21f2eeddf79560226ccafd1e891d6fc118c34828a56511a50f344288223404295384225a0811444c11a480edf986721f433bc459312f0412054093031c9293d02952c09282c7020ec4174950241422423d8414aed811b30010d34011a18811470a9443bc11044400018400424a3284e81fe0f9f801158800f60421f40800934411160c114308005684013301464e04e05989aaf98847c9c00142862b618011bd0c01288151338055024800ec4f1a9594009b44c7bfc9003b0875fa1cc1c1c020724c006104012b8810f21c1013480031801145800b3a800c79d8018a0c00cec81194200723480123c81b7e8c611d0406527eb2f1ac0627c51ea49589187b28405efaf0e23602576e9119a12e99ea6a51a2b4385071881b97ce0d639c1e670a74739f00db88007dc40104849bbc94120a80223ec729134426de31621edebb99e6b2f688d29d02b2ff4c2a8f382beeea76f4f487f8e4869598dd6d08229c4ba25dc811bdcc11a64811228417b09c24342fe1b1f65f38bb87690d84d27f8df28a4f60152b02388422704c279bd8118ec81200c5f8e56c9bbd1f72288c223ec88782b810b808005a8a90e4441261a810c68e6610e01083058d189c006f80120a0010514a513d40eeac8c01aac49112880a148b90a544115f4d3544210ad78c00630070188c0149c5a6510c00aa000192fc013f8c00920290ad0c01400810a30d14c2c00f3eeace9aac113d013a82006654075d52a06ea1100ff740003f0ed0fc469a85476693c8007e893959b8003e34011e04014f081141c0a7240c01a2c4194d77806b8074da80c50ac8c2e16800090d9c90ce75ff9eaed128095b22eeb3611249abc9496000818810e2041893d0221fe088229b0c220984e12ac411b8c000680c00d80140decc01060130da8419a50c2285dac2870528418cdd2e0d6d4945631aca3d5f4c22ffc42699d2b7bb616db90c28864d2a89bd62cdc1634830dac7fdf2724c21d104e792a77e7ff011b2cc41a2cc29db9db228c82298882b64742bed5232778d223e45b3f7f822a3c82c3e2122010e07648341c48c1142c81cd3c811bd4c11bfc4121c84112a0131bcc011fec411c54010d98d4e1fcc1439b01131094095006a99080511441155841105c00c7f58ecae8050a44805388355368c1148ca9025d0007644102400005a4f862d262a25900014807402c700001c102830c2078f010a2c5091358042940c08122fe0a061c1e34b090818185060c0e14e0e02081050a0810d06053a4400113090a12d8a083410b14223a1972734281030d0e0e30605000c10107140258e000c44180061b0810281080c08190559116a8d03240cbaa538b12258aa025039408403a60b0e082870e235c68a08043878b165214991a2468949d50945251ea2ba78e9f44533cb470c1c4c588194794f06812a58aa246a21e317ac4499429529d51ede2b5cb572f5ec580f1e2557a352fd3b668ed329d6b16ecd0bb76a13a658b952246a406b549836551a8508f44fdfa65abf62e5ba866b16245ca932955a45079aa34e84e1a3977fe0462f4e74e1b3672200d0af467d0a044901c190f143f94a950fe9c283102143e919b36720429a4114706b1438d28d4d8a310f11cf923bc420411641139dc4823091450586183074c88028a278e086105872cd8000820ac50230e392280802a024cd84004084828c210418060e3908d0e20a1800368d86001020220a104a016b080062328386081023c72202cb2baaa8006295658608f4eaa186283043a782210424ea000038e38486285001ec8c187063c9821050b20b0c00110b22c08250716a860a0161c18c28f1bdb70a081a90230e8c7a01e986a03085a4260ab1fc93a80c8ae30c060c8a82e0dc0d30084b21401079064a0820e2e7840830e1e28410737661841030eb018a48422d6b08393bf3aa144bc547c31c596fe530651049040ec90228a1aa4e881861b7888c28d3908f1e30f471e798412c150f10c155a66099797e67801a617d27649c5164a1e31259773cf3d8594536629c5945466892d975bf0adcd165b724165de4a1a018410f440f984144b2821a51246ec10249041e4688311469c30638f4f4a112515cf76ad441142b4d0828f400471038f081561c30f37d0b8230aef1291783d3be490638e3dfe10e40f3fecb0e30e35c488e2092cb040038d39d810c3092c9af8828f4266b0b2104a1661648d1a88c801080f5450c208249620e2070500102000abaa88e5902d0e40a18a2a7c58c2820b5e040205021cd84182210f58fba9051ad080048362220001083240b5fe820d2870e08105ac6a80540a3850420e233620b501123a685c2d1388b0e0010e36e8680410265fa1848e1aaa620514d4126106259c701229a9102000244b0b70202a4b89b4f4d3e33da52003013af5942b022e58e0810b527d60840e40a0e088349450088d3604318486149020428e28887062104a3e31651746fc606457dc500945944a1ef9649035c458230a1e72800425b0c10e6fb0832228d18846fc2111a190d72c7e819b72a9c617c028c6058561ae7ff5c25cb9108d6b76012e4a84a27de122052884450b7a99825eb3f8962946480a17ee6616a140c52828d10946888214a600052844018a1176627d3daccf2720b1ab42f4e1107d20842220c1fe0839bc0140d9a298c536730739f8c1118dc8d6231c51893bb8210a4948c31392c004221cc1094f438313c4a0b428a0c17f5f5001086450041d90a0055050031bf6e004127820094538c1920090364f55a0010b0002263a71882900c10724a8c21256c080126ca02b04800005a40701b34cc52b0c48c1a10e30aa05a044714241c0460a40800ae4807b17a8800634403a0a9c846f402948477490840388c0094358830e348080d96da555192804149cc0a42248e000d9eb5d573ec53c525e2a965789ca8b38753c447d0a2d569948073cd0180e64400323a08005a220883a9460044970831dfcb00625b8610a69800316cec38850fcc1149f1004231a118afed5cc4214c6f9842278e68842e0b30d6b1044222a510a946906148f80c42866b18b5390e65cab1186304ae30b95561018be08612a1461b1eb90227fa7a85f4d43d1884480113fa3981024b0630a5358e213c78204284e488935bcc138a3000524bcd85048fc670f8f70a0754af1896c3142137ce8031ff840888b316210f26b84220a713141e033106d95c31ae6f0b39eed416765284315caa08639a4b5107f60030d4e80a232f06cac37aa031ad81885230c21033470821ada10050d844005091000000ce029016c000e7d300226a4408422c001054cf8c10ab05082048c050253a8835504d2120d1004714ebaa60222e024a92c602d2689c014dc40883afe70e09310680008ce4681b55cc0082880800666c001109c400527484216ba52820864c10f3880c3142800841f98a0092468c035a942a7aeac3696dd9c0ae5187029a9c4f29b5659dbf140629007dce00675690c0846b0031c94e006502084126e200527f8e10e6840821b04f10434a881108068182554f10b52300214a1f845317ad18b8ecab0179568432538a1409d0a3414a068047e3abcab53d8475da209e94a53038c96ae8616f30a172d7c78c247fca113c3aadf277ee14254349433f302c5c3ee19083770021452488284fe400a9a26e213a710852804a6654aa050cba27084b12446898815420b86e04420b4f5094be08f116d6544221c4109481cfe87135ac58cb1e4b087440482af7b58c41edab0041300c1098630841d8e693a5371c8073ec80087486081d2a6410522d034a351e0034d6c21b3119041230fa98327a820021ca88008aa8005c80525030b08004a14c5a60c58c0530630420478db3b0234a001546140083660df0da480013468020d28a08183a00402206040027660010664e00895aac010746004227040056dc8420380600402c8400332d8c00632408413542551087851001290d9f97e9348100809298f77292781d3950fa8001a68509711dcc0053a68010d9230041a9c310947a802ee949004369c510ec92245ba00910854d8a257948060057df1085088f40e7e68c42738a18841ccc1fe0e021d85b6f2d761e87c8b5eb2194d695aead210ab745ca8d00d2928610a5e30e716a6988529a003f5599ccb392c04576d66910aad6bd986f6b9a1d149d1ab518ca213e1b3431ddc20062398e0044e3034b642e10846406211f089e2232636d63863a2118cf04d23ca8af38b6dab8b80b8431d822688bd1cac0e5320c213f630084724b1118a77332720018986c23c105af003264a510a3ff8c8b82240c10138a083de39e00d5a40c1104ec08121282000107892a8acc215fa7aaa2899cd37042075bc0aac322406e1c30a7e548004c8c8094b901c05ce9b803a1120f6b1dc40280c61045a41780a1a10c1090ed0aa27a1c52c078800185070cd54ae456df1c753db37bd1270e751a5fd4422520128f01606a0e10933d881128800076ee0e194400972e069940009d2a00edac00db2c00dfa207c1c211016811520c6147a4ce528013a6c81174e8184564888fc2e7e1461a75241375c485df625a476215f3ad039569016540a375a70176e615caece16a8ee5cc2e505696114a023a44e4185fee5146c6a08676cc946618178063d1a0a14b08562de80110a6a841ca8132ac10e5c2f07a00012f263ee0644e6d2aaef1ae10be54e1102610f106ad0fea00dda000dd200902e6611b22510e6800900cb04d82e078aa008a6e0078e645428e04850000b8ce00138e4043a80721600de0202003b');
+ERROR 54002: A string constant starting with ''4749463837617201db01f70000000900001d00001500141a0a002200002&' is too long.
+ij> drop table lvc;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,860 @@
+ij> --
+-- subquery tests
+--
+autocommit off;
+ij> CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> -- create the all type tables
+create table s (i int, s smallint, c char(30), vc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> create table t (i int, s smallint, c char(30), vc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> create table tt (ii int, ss smallint, cc char(30), vcvc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> create table ttt (iii int, sss smallint, ccc char(30), vcvcvc char(30));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into s values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 0, '0', '0', 0);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 0, '0', '0', 0);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into t values (2, 2, '2', '2', 1);
+1 row inserted/updated/deleted
+ij> insert into tt values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into tt values (0, 0, '0', '0', 0);
+1 row inserted/updated/deleted
+ij> insert into tt values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into tt values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into tt values (2, 2, '2', '2', 1);
+1 row inserted/updated/deleted
+ij> insert into ttt values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into ttt values (11, 11, '11', '11');
+1 row inserted/updated/deleted
+ij> insert into ttt values (11, 11, '11', '11');
+1 row inserted/updated/deleted
+ij> insert into ttt values (22, 22, '22', '22');
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- exists 
+-- non-correlated
+-- negative tests
+-- "mis"qualified all
+select * from s where exists (select tt.* from t);
+ERROR 42X10: 'TT' is not an exposed table name in the scope in which it appears.
+ij> select * from s where exists (select t.* from t tt);
+ERROR 42X10: 'T' is not an exposed table name in the scope in which it appears.
+ij> -- too many columns in select list
+select * from s where exists (select i, s from t);
+ERROR 42X39: Subquery is only allowed to return a single column.
+ij> -- invalid column reference in select list
+select * from s where exists (select nosuchcolumn from t);
+ERROR 42X04: Column 'NOSUCHCOLUMN' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'NOSUCHCOLUMN' is not a column in the target table.
+ij> -- multiple matches at subquery level
+select * from s where exists (select i from s, t);
+ERROR 42X03: Column name 'I' is in more than one table in the FROM list.
+ij> -- ? parameter in select list of exists subquery
+select * from s where exists (select ? from s);
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> -- positive tests
+-- qualified *
+select * from s where exists (select s.* from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s t where exists (select t.* from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s u where exists (select u.* from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- column reference in select list
+select * from s where exists (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where exists (select t.i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- subquery returns empty result set
+select * from s where exists (select * from t where i = -1);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> -- test semantics of AnyResultSet
+select * from s where exists (select t.* from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where exists (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- subquery in derived table
+select * from 
+(select * from s where exists (select * from t) and i = 0) a;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> -- exists under an OR
+select * from s where 0=1 or exists (select * from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1=1 or exists (select * from t where 0=1);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where exists (select * from t where 0=1) or
+					  exists (select * from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where exists 
+		(select * from t where exists (select * from t where 0=1) or
+							   exists (select * from t));
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- (exists empty set) is null
+select * from s where (exists (select * from t where 0=1)) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- not exists
+select * from s where not exists (select * from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where not exists (select * from t where i = -1);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- expression subqueries
+-- non-correlated
+-- negative tests
+-- all node
+select * from s where i = (select * from t);
+ERROR 42X38: 'SELECT *' only allowed in EXISTS and NOT EXISTS subqueries.
+ij> -- too many columns in select list
+select * from s where i = (select i, s from t);
+ERROR 42X39: Subquery is only allowed to return a single column.
+ij> -- no conversions
+select * from s where i = (select 1 from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> select * from s where i = (select b from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- ? parameter in select list of expression subquery
+select * from s where i = (select ? from t);
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> -- cardinality violation
+select * from s where i = (select i from t);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> select * from s where s = (select s from t where s = 1);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> update s set b = (select max(b) from t)
+where vc <> (select vc from t where vc = '1');
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> delete from s where c = (select c from t where c = '1');
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> -- positive tests
+select * from s;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from t;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+1          |1     |1                             |1                             |1                   
+2          |2     |2                             |2                             |1                   
+ij> -- simple subquery for each data type
+select * from s where i = (select i from t where i = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where s = (select s from t where s = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where c = (select c from t where c = '0');
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where vc = (select vc from t where vc = '0');
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where b = (select max(b) from t where b = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where b = (select max(b) from t where i = 2);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> -- ? parameter on left hand side of expression subquery
+prepare subq1 as 'select * from s where ? = (select i from t where i = 0)';
+ij> execute subq1 using 'values (0)';
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> remove subq1;
+ij> -- conversions
+select * from s where i = (select s from t where s = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where s = (select i from t where i = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where c = (select vc from t where vc = '0');
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where vc = (select c from t where c = '0');
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> -- (select nullable_column ...) is null
+-- On of each data type to test clone()
+select * from s where (select s from s where i is null) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where (select i from s where i is null) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where (select c from s where i is null) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where (select vc from s where i is null) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where (select b from s where i is null) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where
+	(select 1 from t where exists (select * from t where 1 = 0) and s = -1) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- subquery = subquery
+select * from s where
+(select i from t where i = 0) = (select s from t where s = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- multiple subqueries at the same level
+select * from s
+where i = (select s from t where s = 0) and
+	  s = (select i from t where i = 2);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s
+where i = (select s from t where s = 0) and
+	  s = (select i from t where i = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> -- nested subqueries
+select * from s
+where i = (select i from t where s = (select i from t where s = 2));
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s
+where i = (select i - 1 from t where s = (select i from t where s = 2));
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> -- expression subqueries in select list
+select (select i from t where 0=1) from s;
+1          
+-----------
+NULL       
+NULL       
+NULL       
+ij> select (select i from t where i = 2) * (select s from t where i = 2) from s
+where i > (select i from t where i = 0) - (select i from t where i = 0);
+1          
+-----------
+4          
+ij> -- in subqueries
+-- negative tests
+-- select * subquery
+select * from s where s in (select * from s);
+ERROR 42X38: 'SELECT *' only allowed in EXISTS and NOT EXISTS subqueries.
+ij> -- incompatable types
+select * from s where s in (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- positive tests
+-- constants on left side of subquery
+select * from s where 1 in (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 in (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where '1' in (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 in (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- constants in subquery select list
+select * from s where i in (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i in (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where c in (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where b in (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> -- constants on both sides
+select * from s where 1=1 in (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 0 in (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- compatable types
+select * from s where c in (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc in (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i in (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s in (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- empty subquery result set
+select * from s where i in (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where (i in (select i from t where i = 0)) is null;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> -- select list
+select i in (select i from t) from s;
+ERROR 42X01: Syntax error: Encountered "in" at line 2, column 10.
+ij> select i in (select i from t where 1 = 0) from s;
+ERROR 42X01: Syntax error: Encountered "in" at line 1, column 10.
+ij> select (i in (select i from t where 1 = 0)) is null from s;
+ERROR 42X01: Syntax error: Encountered "in" at line 1, column 11.
+ij> -- subquery under an or
+select i from s where i = -1 or i in (select i from t);
+I          
+-----------
+0          
+1          
+ij> select i from s where i = 0 or i in (select i from t where i = -1);
+I          
+-----------
+0          
+ij> select i from s where i = -1 or i in (select i from t where i = -1 or i = 1);
+I          
+-----------
+1          
+ij> -- distinct elimination
+select i from s where i in (select i from s);
+I          
+-----------
+0          
+1          
+ij> select i from s where i in (select distinct i from s);
+I          
+-----------
+0          
+1          
+ij> select i from s ss where i in (select i from s where s.i = ss.i);
+I          
+-----------
+0          
+1          
+ij> select i from s ss where i in (select distinct i from s where s.i = ss.i);
+I          
+-----------
+0          
+1          
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> -- correlated subqueries
+-- negative tests
+-- multiple matches at parent level
+select * from s, t where exists (select i from tt);
+ERROR 42X03: Column name 'I' is in more than one table in the FROM list.
+ij> -- match is against base table, but not derived column list
+select * from s ss (c1, c2, c3, c4, c5) where exists (select i from tt);
+ERROR 42X04: Column 'I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'I' is not a column in the target table.
+ij> select * from s ss (c1, c2, c3, c4, c5) where exists (select ss.i from tt);
+ERROR 42X04: Column 'SS.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'SS.I' is not a column in the target table.
+ij> -- correlation name exists at both levels, but only column match is at
+-- parent level
+select * from s where exists (select s.i from tt s);
+ERROR 42X04: Column 'S.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'S.I' is not a column in the target table.
+ij> -- only match is at peer level
+select * from s where exists (select * from tt) and exists (select ii from t);
+ERROR 42X04: Column 'II' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'II' is not a column in the target table.
+ij> select * from s where exists (select * from tt) and exists (select tt.ii from t);
+ERROR 42X04: Column 'TT.II' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'TT.II' is not a column in the target table.
+ij> -- correlated column in a derived table
+select * from s, (select * from tt where i = ii) a;
+ERROR 42X04: Column 'I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'I' is not a column in the target table.
+ij> select * from s, (select * from tt where s.i = ii) a;
+ERROR 42X04: Column 'S.I' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'S.I' is not a column in the target table.
+ij> -- positive tests
+-- simple correlated subqueries
+select (select i from tt where ii = i and ii <> 1) from s;
+1          
+-----------
+NULL       
+0          
+NULL       
+ij> select (select s.i from tt where ii = s.i and ii <> 1) from s;
+1          
+-----------
+NULL       
+0          
+NULL       
+ij> select (select s.i from ttt where iii = i) from s;
+1          
+-----------
+NULL       
+NULL       
+NULL       
+ij> select * from s where exists (select * from tt where i = ii and ii <> 1);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where exists (select * from tt where s.i = ii and ii <> 1);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where exists (select * from ttt where i = iii);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> -- 1 case where we get a cardinality violation after a few rows
+select (select i from tt where ii = i) from s;
+1          
+-----------
+NULL       
+0          
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- skip levels to find match
+select * from s where exists (select * from ttt where iii = 
+								(select 11 from tt where ii = i and ii <> 1));
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> -- join in subquery
+select * from s where i in (select i from t, tt where s.i <> i and i = ii);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i in (select i from t, ttt where s.i < iii and s.i = t.i);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- join in outer query block
+select s.i, t.i from s, t where exists (select * from ttt where iii = 1);
+I          |I          
+-----------------------
+ij> select s.i, t.i from s, t where exists (select * from ttt where iii = 11);
+I          |I          
+-----------------------
+NULL       |NULL       
+NULL       |0          
+NULL       |1          
+NULL       |1          
+NULL       |2          
+0          |NULL       
+0          |0          
+0          |1          
+0          |1          
+0          |2          
+1          |NULL       
+1          |0          
+1          |1          
+1          |1          
+1          |2          
+ij> -- joins in both query blocks
+select s.i, t.i from s, t where t.i = (select iii from ttt, tt where iii = t.i);
+I          |I          
+-----------------------
+ij> select s.i, t.i from s, t 
+where t.i = (select ii from ttt, tt where s.i = t.i and t.i = tt.ii and iii = 22 and ii <> 1);
+I          |I          
+-----------------------
+0          |0          
+ij> -- Beetle 5382 proper caching of subqueries in prepared statements
+prepare pstmt as 'select s.i from s where s.i in (select s.i from s, t where s.i = t.i and t.s = ?)';
+ij> execute pstmt using 'values(0)';
+I          
+-----------
+0          
+ij> execute pstmt using 'values(1)';
+I          
+-----------
+1          
+ij> remove pstmt;
+ij> commit;
+ij> prepare pstmt2 as 'select s.i from s where s.i in (select s.i from s, t where s.i = t.i and t.s = 3)';
+ij> execute pstmt2;
+I          
+-----------
+ij> insert into t(i,s) values(1,3);
+1 row inserted/updated/deleted
+ij> execute pstmt2;
+I          
+-----------
+1          
+ij> remove pstmt2;
+ij> rollback;
+ij> -- correlated subquery in select list of a derived table
+select * from 
+(select (select iii from ttt where sss > i and sss = iii and iii <> 11) from s) a;
+1          
+-----------
+NULL       
+22         
+22         
+ij> -- bigint and subqueries
+create table li(i int, s smallint, l bigint);
+0 rows inserted/updated/deleted
+ij> insert into li values (null, null, null);
+1 row inserted/updated/deleted
+ij> insert into li values (1, 1, 1);
+1 row inserted/updated/deleted
+ij> insert into li values (2, 2, 2);
+1 row inserted/updated/deleted
+ij> select l from li o where l = (select i from li i where o.l = i.i);
+L                   
+--------------------
+1                   
+2                   
+ij> select l from li o where l = (select s from li i where o.l = i.s);
+L                   
+--------------------
+1                   
+2                   
+ij> select l from li o where l = (select l from li i where o.l = i.l);
+L                   
+--------------------
+1                   
+2                   
+ij> select l from li where l in (select i from li);
+L                   
+--------------------
+1                   
+2                   
+ij> select l from li where l in (select s from li);
+L                   
+--------------------
+1                   
+2                   
+ij> select l from li where l in (select l from li);
+L                   
+--------------------
+1                   
+2                   
+ij> ----------------------------------
+-- Some extra tests for subquery flattening
+-- on table expressions (remapColumnReferencesToExpressions()
+-- binary list node
+select i in (1,2) from (select i from s) as tmp(i);
+ERROR 42X01: Syntax error: Encountered "in" at line 6, column 10.
+ij> -- conditional expression
+select i = 1 ? 1 : i from (select i from s) as tmp(i);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 10.
+ij> -- more tests for correlated column resolution
+select * from s where i = (values i);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select t.* from s, t where t.i = (values s.i);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i in (values i);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select t.* from s, t where t.i in (values s.i);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+1          |1     |1                             |1                             |1                   
+ij> -- tests for not needing to do cardinality check
+select * from s where i = (select min(i) from s where i is not null);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where i = (select min(i) from s group by i);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- tests for distinct expression subquery
+create table dist1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create table dist2 (c1 int);
+0 rows inserted/updated/deleted
+ij> insert into dist1 values null, 1, 2;
+3 rows inserted/updated/deleted
+ij> insert into dist2 values null, null;
+2 rows inserted/updated/deleted
+ij> -- no match, no violation
+select * from dist1 where c1 = (select distinct c1 from dist2);
+C1         
+-----------
+ij> -- violation
+insert into dist2 values 1;
+1 row inserted/updated/deleted
+ij> select * from dist1 where c1 = (select distinct c1 from dist2);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- match, no violation
+update dist2 set c1 = 2;
+3 rows inserted/updated/deleted
+ij> select * from dist1 where c1 = (select distinct c1 from dist2);
+C1         
+-----------
+2          
+ij> drop table dist1;
+0 rows inserted/updated/deleted
+ij> drop table dist2;
+0 rows inserted/updated/deleted
+ij> ----------------------------------
+-- update
+create table u (i int, s smallint, c char(30), vc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> insert into u select * from s;
+3 rows inserted/updated/deleted
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> update u set b = exists (select b from t)
+where vc <> (select vc from s where vc = '1');
+ERROR 42X01: Syntax error: Encountered "exists" at line 1, column 18.
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> delete from u;
+3 rows inserted/updated/deleted
+ij> insert into u select * from s;
+3 rows inserted/updated/deleted
+ij> -- delete
+delete from u where c < (select c from t where c = '2');
+2 rows inserted/updated/deleted
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+ij> -- restore u
+delete from u;
+1 row inserted/updated/deleted
+ij> insert into u select * from s;
+3 rows inserted/updated/deleted
+ij> -- check clean up when errors occur in subqueries
+-- insert
+insert into u select * from s s_outer
+where i = (select s_inner.i/(s_inner.i-1) from s s_inner where s_outer.i = s_inner.i);
+ERROR 22012: Attempt to divide by zero.
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- delete
+delete from u 
+where i = (select i/(i-1) from s where u.i = s.i);
+ERROR 22012: Attempt to divide by zero.
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- update
+update u  set i = (select i from s where u.i = s.i)
+where i = (select i/(i-1) from s where u.i = s.i);
+ERROR 22012: Attempt to divide by zero.
+ij> update u  set i = (select i/i-1 from s where u.i = s.i)
+where i = (select i from s where u.i = s.i);
+ERROR 22012: Attempt to divide by zero.
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- error in nested subquery
+select (select (select (select i from s) from s) from s) from s;
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> -- reset autocommit
+autocommit on;
+ij> -- drop the tables
+drop table li;
+0 rows inserted/updated/deleted
+ij> drop table s;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tt;
+0 rows inserted/updated/deleted
+ij> drop table ttt;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery2.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subquery2.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1023 @@
+ij> --
+-- subquery tests (ANY and ALL subqueries)
+--
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> autocommit off;
+ij> -- create the all type tables
+create table s (i int, s smallint, c char(30), vc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> create table t (i int, s smallint, c char(30), vc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> create table tt (ii int, ss smallint, cc char(30), vcvc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> create table ttt (iii int, sss smallint, ccc char(30), vcvcvc char(30));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into s values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into s values (0, 0, '0', '0', 0);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into t values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t values (0, 0, '0', '0', 0);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into t values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into t values (2, 2, '2', '2', 1);
+1 row inserted/updated/deleted
+ij> insert into tt values (null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into tt values (0, 0, '0', '0', 0);
+1 row inserted/updated/deleted
+ij> insert into tt values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into tt values (1, 1, '1', '1', 1);
+1 row inserted/updated/deleted
+ij> insert into tt values (2, 2, '2', '2', 1);
+1 row inserted/updated/deleted
+ij> insert into ttt values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into ttt values (11, 11, '11', '11');
+1 row inserted/updated/deleted
+ij> insert into ttt values (11, 11, '11', '11');
+1 row inserted/updated/deleted
+ij> insert into ttt values (22, 22, '22', '22');
+1 row inserted/updated/deleted
+ij> -- ANY subqueries
+-- negative tests
+-- select * subquery
+select * from s where s = ANY (select * from s);
+ERROR 42X38: 'SELECT *' only allowed in EXISTS and NOT EXISTS subqueries.
+ij> -- incompatable types
+select * from s where s >= ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- invalid operator
+select * from s where s * ANY (select c from t);
+ERROR 42X01: Syntax error: Encountered "ANY" at line 2, column 27.
+ij> -- ? in select list of subquery
+select * from s where s = ANY (select ? from s);
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> -- positive tests
+-- constants on left side of subquery
+select * from s where 1 = ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 = ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where '1' = ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 = ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 <> ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 <> ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where '1' <> ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 <> ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 >= ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 >= ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where '1' >= ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 >= ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 > ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 > ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where '1' > ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 > ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 1 <= ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 <= ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where '1' <= ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 <= ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 < ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where -1 < ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where '1' < ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 < ANY (select b from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- Try a ? parameter on the LHS of a subquery.
+prepare subq1 as 'select * from s where ? = ANY (select s from t)';
+ij> execute subq1 using 'values (1)';
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> remove subq1;
+ij> -- constants in subquery select list
+select * from s where i = ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i = ANY (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where c = ANY (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where b = ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i <> ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where i <> ANY (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c <> ANY (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where b <> ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where i >= ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i >= ANY (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c >= ANY (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where b >= ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i > ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i > ANY (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c > ANY (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where b > ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i <= ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i <= ANY (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where c <= ANY (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where b <= ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i < ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where i < ANY (select -1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where c < ANY (select '1' from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> select * from s where b < ANY (select 1 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+ij> -- constants on both sides
+select * from s where 1 = ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 0 = ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 <> ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 <> ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 1 >= ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 >= ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 > ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 0 > ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 1 <= ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 0 <= ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where 1 < ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where 0 < ANY (select 0 from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> -- compatable types
+select * from s where c = ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc = ANY (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i = ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s = ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c <> ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc <> ANY (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i <> ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s <> ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c >= ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc >= ANY (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i >= ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s >= ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c > ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc > ANY (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i > ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s > ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c <= ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc <= ANY (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i <= ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s <= ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where c < ANY (select vc from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where vc < ANY (select c from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i < ANY (select s from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where s < ANY (select i from t);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- empty subquery result set
+select * from s where i = ANY (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i <> ANY (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i >= ANY (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i > ANY (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i <= ANY (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> select * from s where i < ANY (select i from t where 1 = 0);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+ij> -- subquery under an or
+select i from s where i = -1 or i = ANY (select i from t);
+I          
+-----------
+0          
+1          
+ij> select i from s where i = 0 or i = ANY (select i from t where i = -1);
+I          
+-----------
+0          
+ij> select i from s where i = -1 or i = ANY (select i from t where i = -1 or i = 1);
+I          
+-----------
+1          
+ij> select i from s where i = -1 or i <> ANY (select i from t);
+I          
+-----------
+0          
+1          
+ij> select i from s where i = 0 or i >= ANY (select i from t where i = -1);
+I          
+-----------
+0          
+ij> select i from s where i = -1 or i < ANY (select i from t where i = -1 or i = 1);
+I          
+-----------
+0          
+ij> select i from s where i = -1 or i >= ANY (select i from t);
+I          
+-----------
+0          
+1          
+ij> select i from s where i = 0 or i > ANY (select i from t where i = -1);
+I          
+-----------
+0          
+ij> select i from s where i = -1 or i <> ANY (select i from t where i = -1 or i = 1);
+I          
+-----------
+0          
+ij> -- correlated subqueries
+select * from s where i > ANY (select i from t where s.s > t.s);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i >= ANY (select i from t where s.s >= t.s);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i < ANY (select i from t where s.s < t.s);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i <= ANY (select i from t where s.s <= t.s);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i = ANY (select i from t where s.s = t.s);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> select * from s where i <> ANY (select i from t where s.s <> t.s);
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- ALL/NOT IN and NOTs
+-- create tables
+create table s_3rows (i int);
+0 rows inserted/updated/deleted
+ij> create table t_1 (i int);
+0 rows inserted/updated/deleted
+ij> create table u_null (i int);
+0 rows inserted/updated/deleted
+ij> create table v_empty (i int);
+0 rows inserted/updated/deleted
+ij> create table w_2 (i int);
+0 rows inserted/updated/deleted
+ij> -- populate tables
+insert into s_3rows values(NULL);
+1 row inserted/updated/deleted
+ij> insert into s_3rows values(1);
+1 row inserted/updated/deleted
+ij> insert into s_3rows values(2);
+1 row inserted/updated/deleted
+ij> insert into u_null values(NULL);
+1 row inserted/updated/deleted
+ij> insert into t_1 values(1);
+1 row inserted/updated/deleted
+ij> insert into w_2 values(2);
+1 row inserted/updated/deleted
+ij> -- test ALLs
+select * from s_3rows where s_3rows.i not in (select i from t_1);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i <> ALL (select i from t_1);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i >= ALL (select i from t_1);
+I          
+-----------
+1          
+2          
+ij> select * from s_3rows where s_3rows.i > ALL (select i from t_1);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i <= ALL (select i from t_1);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i < ALL (select i from t_1);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i = ALL (select i from t_1);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i not in (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i <> ALL (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i >= ALL (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i > ALL (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i <= ALL (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i < ALL (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i = ALL (select i from u_null);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i not in (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i <> ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i >= ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i > ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i <= ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i < ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i = ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i not in (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i <> ALL (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i >= ALL (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i > ALL (select i from w_2);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i <= ALL (select i from w_2);
+I          
+-----------
+1          
+2          
+ij> select * from s_3rows where s_3rows.i < ALL (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i = ALL (select i from w_2);
+I          
+-----------
+2          
+ij> select * from w_2 where w_2.i = ALL (select i from w_2);
+I          
+-----------
+2          
+ij> -- NOT = ANY <=> <> ALL
+select * from s_3rows where NOT s_3rows.i = ANY (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i <> ALL (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where NOT s_3rows.i = ANY (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i <> ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> -- NOT <> ANY <=> = ALL
+select * from s_3rows where NOT s_3rows.i <> ANY (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i = ALL (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where NOT s_3rows.i <> ANY (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i = ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> -- NOT >= ANY <=> < ALL
+select * from s_3rows where NOT s_3rows.i >= ANY (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i < ALL (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where NOT s_3rows.i >= ANY (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i < ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> -- NOT > ANY <=> <= ALL
+select * from s_3rows where NOT s_3rows.i > ANY (select i from w_2);
+I          
+-----------
+1          
+2          
+ij> select * from s_3rows where s_3rows.i <= ALL (select i from w_2);
+I          
+-----------
+1          
+2          
+ij> select * from s_3rows where NOT s_3rows.i > ANY (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i <= ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> -- NOT <= ANY <=> > ALL
+select * from s_3rows where NOT s_3rows.i <= ANY (select i from w_2);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i > ALL (select i from w_2);
+I          
+-----------
+ij> select * from s_3rows where NOT s_3rows.i <= ANY (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i > ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> -- NOT < ANY <=> >= ALL
+select * from s_3rows where NOT s_3rows.i < ANY (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i >= ALL (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where NOT s_3rows.i < ANY (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select * from s_3rows where s_3rows.i >= ALL (select i from v_empty);
+I          
+-----------
+NULL       
+1          
+2          
+ij> -- NOT = ALL <=> <> ANY
+select * from s_3rows where NOT s_3rows.i = ALL (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i <> ANY (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where NOT s_3rows.i = ALL (select i from v_empty);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i <> ANY (select i from v_empty);
+I          
+-----------
+ij> -- NOT <> ALL <=> = ANY
+select * from s_3rows where NOT s_3rows.i <> ALL (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i = ANY (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where NOT s_3rows.i <> ALL (select i from v_empty);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i = ANY (select i from v_empty);
+I          
+-----------
+ij> -- NOT >= ALL <=> < ANY
+select * from s_3rows where NOT s_3rows.i >= ALL (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where s_3rows.i < ANY (select i from w_2);
+I          
+-----------
+1          
+ij> select * from s_3rows where NOT s_3rows.i >= ALL (select i from v_empty);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i < ANY (select i from v_empty);
+I          
+-----------
+ij> -- NOT > ALL <=> <= ANY
+select * from s_3rows where NOT s_3rows.i > ALL (select i from w_2);
+I          
+-----------
+1          
+2          
+ij> select * from s_3rows where s_3rows.i <= ANY (select i from w_2);
+I          
+-----------
+1          
+2          
+ij> select * from s_3rows where NOT s_3rows.i > ALL (select i from v_empty);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i <= ANY (select i from v_empty);
+I          
+-----------
+ij> -- NOT <= ALL <=> > ANY
+select * from s_3rows where NOT s_3rows.i <= ALL (select i from w_2);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i > ANY (select i from w_2);
+I          
+-----------
+ij> select * from s_3rows where NOT s_3rows.i <= ALL (select i from v_empty);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i > ANY (select i from v_empty);
+I          
+-----------
+ij> -- NOT < ALL <=> >= ANY
+select * from s_3rows where NOT s_3rows.i < ALL (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where s_3rows.i >= ANY (select i from w_2);
+I          
+-----------
+2          
+ij> select * from s_3rows where NOT s_3rows.i < ALL (select i from v_empty);
+I          
+-----------
+ij> select * from s_3rows where s_3rows.i >= ANY (select i from v_empty);
+I          
+-----------
+ij> -- test skipping of generating is null predicates for non-nullable columns
+create table t1 (c1 int not null, c2 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int not null, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values(1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values(0, 3);
+1 row inserted/updated/deleted
+ij> select * from t1 where c1 not in (select c2 from t2);
+C1         |C2         
+-----------------------
+1          |2          
+ij> select * from t1 where c2 not in (select c1 from t2);
+C1         |C2         
+-----------------------
+1          |2          
+ij> select * from t1 where c1 not in (select c1 from t2);
+C1         |C2         
+-----------------------
+1          |2          
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- update
+create table u (i int, s smallint, c char(30), vc char(30), b bigint);
+0 rows inserted/updated/deleted
+ij> insert into u select * from s;
+3 rows inserted/updated/deleted
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> -- exists returns a boolean value and hence it can not be used to set a value. Exists can only be used in where clause
+update u set b = exists (select * from t)
+where vc < ANY (select vc from s);
+ERROR 42X01: Syntax error: Encountered "exists" at line 2, column 18.
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+0          |0     |0                             |0                             |0                   
+1          |1     |1                             |1                             |1                   
+ij> delete from u;
+3 rows inserted/updated/deleted
+ij> insert into u select * from s;
+3 rows inserted/updated/deleted
+ij> -- delete
+delete from u where c < ANY (select c from t);
+2 rows inserted/updated/deleted
+ij> select * from u;
+I          |S     |C                             |VC                            |B                   
+-----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                          |NULL                
+ij> -- do consistency check on scans, etc.
+values ConsistencyChecker();
+1                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------
+No open scans, etc.
+2 dependencies found                                                                                        
+ij> -- reset autocommit
+autocommit on;
+ij> -- drop the tables
+drop table s;
+0 rows inserted/updated/deleted
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> drop table tt;
+0 rows inserted/updated/deleted
+ij> drop table ttt;
+0 rows inserted/updated/deleted
+ij> drop table u;
+0 rows inserted/updated/deleted
+ij> drop table s_3rows;
+0 rows inserted/updated/deleted
+ij> drop table t_1;
+0 rows inserted/updated/deleted
+ij> drop table u_null;
+0 rows inserted/updated/deleted
+ij> drop table v_empty;
+0 rows inserted/updated/deleted
+ij> drop table w_2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subqueryFlattening.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/subqueryFlattening.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6024 @@
+ij> -- test subquery flattening into outer query block
+set isolation to rr;
+0 rows inserted/updated/deleted
+ij> -- tests for flattening a subquery based on a
+-- uniqueness condition
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> -- create some tables
+create table outer1 (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table outer2 (c1 int, c2 int, c3 int);
+0 rows inserted/updated/deleted
+ij> create table noidx (c1 int);
+0 rows inserted/updated/deleted
+ij> create table idx1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create unique index idx1_1 on idx1(c1);
+0 rows inserted/updated/deleted
+ij> create table idx2 (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create unique index idx2_1 on idx2(c1, c2);
+0 rows inserted/updated/deleted
+ij> create table nonunique_idx1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create index nonunique_idx1_1 on nonunique_idx1(c1);
+0 rows inserted/updated/deleted
+ij> insert into outer1 values (1, 2, 3);
+1 row inserted/updated/deleted
+ij> insert into outer1 values (4, 5, 6);
+1 row inserted/updated/deleted
+ij> insert into outer2 values (1, 2, 3);
+1 row inserted/updated/deleted
+ij> insert into outer2 values (4, 5, 6);
+1 row inserted/updated/deleted
+ij> insert into noidx values 1, 1;
+2 rows inserted/updated/deleted
+ij> insert into idx1 values 1, 2;
+2 rows inserted/updated/deleted
+ij> insert into idx2 values (1, 1), (1, 2);
+2 rows inserted/updated/deleted
+ij> insert into nonunique_idx1 values 1, 1;
+2 rows inserted/updated/deleted
+ij> -- cases where subqueries don't get flattened
+-- (we would get incorrect results with 
+-- incorrect flattening)
+-- one of tables in subquery doesn't have index
+select * from outer1 where c1 in (select idx1.c1 from noidx, idx1 where idx1.c1 = noidx.c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> -- group by in subquery
+select * from outer1 o where c1 <= (select c1 from idx1 i group by c1);
+C1         |C2         |C3         
+-----------------------------------
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- otherwise flattenable subquery under an or 
+-- subquery returns no rows
+select * from outer1 o where c1 + 0 = 1 or c1 in (select c1 from idx1 i where i.c1 = 0);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> select * from outer1 o where c1 in (select c1 from idx1 i where i.c1 = 0) or c1 + 0 = 1;
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> -- empty subquery in select list which is otherwise flattenable
+select (select c1 from idx1 where c1 = 0) from outer1;
+1          
+-----------
+NULL       
+NULL       
+ij> -- multiple tables in subquery
+-- no one table's equality condition based
+-- solely on constants and correlation columns
+select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> -- subqueries that should get flattened
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 2000;
+ij> -- simple IN
+select * from outer1 o where o.c1 in (select c1 from idx1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- simple IN
+select * from outer1 o where o.c1 in (select c1 from idx1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 at ser&
+ij> -- simple EXISTS
+select * from outer1 o where exists (select * from idx1 i where o.c1 = i.c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- simple EXISTS
+select * from outer1 o where exists (select * from idx1 i where o.c1 = i.c1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for IDX1 usi&
+ij> -- simple ANY
+select * from outer1 o where o.c1 = ANY (select c1 from idx1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- simple ANY
+select * from outer1 o where o.c1 = ANY (select c1 from idx1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 at&
+ij> -- another simple ANY
+select * from outer1 o where o.c2 > ANY (select c1 from idx1 i where o.c1 = i.c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- another simple ANY
+select * from outer1 o where o.c2 > ANY (select c1 from idx1 i where o.c1 = i.c1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet fo&
+ij> -- comparisons with parameters
+prepare p1 as 'select * from outer1 o where exists (select * from idx1 i where i.c1 = ?)';
+ij> execute p1 using 'values 1';
+IJ WARNING: Autocommit may close using result set
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from outer1 o where exists (select * from idx1 i where i.c1 = ?)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share 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={0}
+			Number of columns fetched=1
+			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 foll&
+ij> prepare p2 as 'select * from outer1 o where ? = ANY (select c1 from idx1)';
+ij> execute p2 using 'values 1';
+IJ WARNING: Autocommit may close using result set
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from outer1 o where ? = ANY (select c1 from idx1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share 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={0}
+			Number of columns fetched=1
+			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: &
+ij> -- mix constants with correlation columns
+select * from outer1 o where exists (select * from idx2 i where o.c1 = i.c1 and i.c2 = 2);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- mix constants with correlation columns
+select * from outer1 o where exists (select * from idx2 i where o.c1 = i.c1 and i.c2 = 2)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			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: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: &
+ij> -- multiple tables in subquery
+select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1 and i.c2 = 1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- multiple tables in subquery
+select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1 and i.c2 = 1)
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = &
+ij> -- comparisons with non-join expressions
+select * from outer1 o where exists (select * from idx1 where idx1.c1 = 1 + 0);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- comparisons with non-join expressions
+select * from outer1 o where exists (select * from idx1 where idx1.c1 = 1 + 0)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share 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={0}
+			Number of columns fetched=1
+			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&
+ij> select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 + 0 = i.c1 and i.c2 + 0 = idx1.c1 and i.c2 = 1 + 0);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 + 0 = i.c1 and i.c2 + 0 = idx1.c1 and i.c2 = 1 + 0)
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (mi&
+ij> -- multilevel subqueries
+-- flatten all
+select * from outer1 o where exists
+    (select * from idx2 i where exists
+        (select * from idx1 ii 
+         where o.c1 = i.c1 and i.c2 = ii.c1 and i.c2 = 1));
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- multilevel subqueries
+-- flatten all
+select * from outer1 o where exists
+    (select * from idx2 i where exists
+        (select * from idx1 ii 
+         where o.c1 = i.c1 and i.c2 = ii.c1 and i.c2 = 1))
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+&
+ij> -- only flatten bottom
+select * from outer1 o where exists
+    (select * from idx2 i where exists
+        (select * from idx1 ii 
+         where o.c1 = i.c1 and i.c2 = ii.c1));
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- only flatten bottom
+select * from outer1 o where exists
+    (select * from idx2 i where exists
+        (select * from idx1 ii 
+         where o.c1 = i.c1 and i.c2 = ii.c1))
+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: 
+Attached subqueries:
+	Begin Subquery Number 0
+	Any ResultSet  (Attached to 2):
+	Number of opens = 2
+	Rows seen = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 2
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 2
+			Rows seen from the left = 1
+			Rows seen from the right = 1
+			Rows filtered = 0
+			Rows returned = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Hash Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking: 
+				Number of opens = 2
+				Hash table size = 1
+				Hash key is column number 0
+				Rows seen = 1
+				Rows filtered = 0
+					constructor time (milliseconds) = 0&
+ij> -- flatten innermost into exists join, then flatten middle
+-- into outer
+select * from outer1 o where exists
+    (select * from idx2 i 
+     where  o.c1 = i.c1 and i.c2 = 1 and exists
+        (select * from idx1 ii));
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- flatten innermost into exists join, then flatten middle
+-- into outer
+select * from outer1 o where exists
+    (select * from idx2 i 
+     where  o.c1 = i.c1 and i.c2 = 1 and exists
+        (select * from idx1 ii))
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (millise&
+ij> -- flatten a subquery that has a subquery in its select list
+-- verify that subquery gets copied up to outer block
+select * from outer1 o where c1 in
+    (select (select c1 from idx1 where c1 = i.c1)
+     from idx2 i where o.c1 = i.c1 and i.c2 = 1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- flatten a subquery that has a subquery in its select list
+-- verify that subquery gets copied up to outer block
+select * from outer1 o where c1 in
+    (select (select c1 from idx1 where c1 = i.c1)
+     from idx2 i where o.c1 = i.c1 and i.c2 = 1)
+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: 
+Attached subqueries:
+	Begin Subquery Number 1
+	Once ResultSetAttached to 4):
+	Number of opens = 1
+	Rows seen = 1
+	Source result set:
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share 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={0}
+			Number of columns fetched=1
+			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
+	End Subquery Number 1
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = true
+projection = true
+	construct&
+ij> -- expression subqueries
+-- simple =
+select * from outer1 o where o.c1 = (select c1 from idx1 i where o.c1 = i.c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- expression subqueries
+-- simple =
+select * from outer1 o where o.c1 = (select c1 from idx1 i where o.c1 = i.c1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Scan &
+ij> select * from outer1 o where o.c1 <= (select c1 from idx1 i where o.c1 = i.c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from outer1 o where o.c1 <= (select c1 from idx1 i where o.c1 = i.c1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 &
+ij> -- multiple tables in subquery
+select * from outer1 o where c1 =  (select i.c1 from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1 and i.c2 = 1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- multiple tables in subquery
+select * from outer1 o where c1 =  (select i.c1 from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1 and i.c2 = 1)
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for IDX2 using index IDX2_1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) &
+ij> -- flattening to an exists join
+-- no index on subquery table
+select * from outer1 where c1 in (select c1 from noidx);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- flattening to an exists join
+-- no index on subquery table
+select * from outer1 where c1 in (select c1 from noidx)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan Resul&
+ij> -- no unique index on subquery table
+select * from outer1 where c1 in (select c1 from nonunique_idx1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- no unique index on subquery table
+select * from outer1 where c1 in (select c1 from nonunique_idx1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for NONUNIQU&
+ij> -- columns in subquery are not superset of unique index
+select * from outer1 where c1 in (select c1 from idx2);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- columns in subquery are not superset of unique index
+select * from outer1 where c1 in (select c1 from idx2)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for&
+ij> -- single table subquery, self join on unique column
+select * from outer1 where exists (select * from idx1 where c1 = c1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- single table subquery, self join on unique column
+select * from outer1 where exists (select * from idx1 where c1 = c1)
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		Fetch Size = 16
+			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=3
+			Number of pages visited=1
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Proje&
+ij> -- flattening values subqueries
+-- flatten unless contains a subquery
+select * from outer1 where c1 in (values 1);
+C1         |C2         |C3         
+-----------------------------------
+1          |2          |3          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- flattening values subqueries
+-- flatten unless contains a subquery
+select * from outer1 where c1 in (values 1)
+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 OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+Fetch Size = 16
+	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=3
+	Number of pages visited=1
+	Number of rows qualified=1
+	Number of rows visited=2
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> select * from outer1 where c1 in (values (select max(c1) from outer1));
+C1         |C2         |C3         
+-----------------------------------
+4          |5          |6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select * from outer1 where c1 in (values (select max(c1) from outer1))
+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: 
+Materialized subqueries:
+	Begin Subquery Number 1
+	Once ResultSet:
+	Number of opens = 1
+	Rows seen = 1
+	Source result set:
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Project-Restrict ResultSet (12):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Scalar Aggregate ResultSet:
+			Number of opens = 1
+			Rows input = 2
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Index Key Optimization = false
+			Source result set:
+				Project-Restrict ResultSet (11):
+				Number of opens = 1
+				Rows seen = 2
+				Rows filtered = 0
+				restriction = false
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+					optimizer estimated c&
+ij> -- beetle 4459 - problems with flattening to exist joins and then flattening to 
+-- normal join
+-- non correlated exists subquery with conditional join
+maximumdisplaywidth 5000;
+ij> select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) 
+where exists (select c1 from idx1);
+C1         
+-----------
+1          
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) 
+where exists (select c1 from idx1)
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Hash Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 2
+		Rows seen from the right = 2
+		Rows filtered = 0
+		Rows returned = 2
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=2
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+		Right result set:
+			Hash Scan ResultSet for OUTER2 at serializable isolation level using share table locking: 
+			Number of opens = 2
+			Hash table size = 2
+			Hash key is column number 0
+			Rows seen = 2
+			Rows filtered = 0
+				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={0}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=2
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 2
+		Rows seen = 2
+		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={0}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=2
+			Number of rows visited=2
+			Scan type=btree
+			Tree height=1
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+ij> -- in predicate (will be flattened to exists)
+select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) 
+where o.c1 in (select c1 from idx1);
+C1         
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- in predicate (will be flattened to exists)
+select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) 
+where o.c1 in (select c1 from idx1)
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Hash Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 2
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=2
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+		Right result set:
+			Hash Scan ResultSet for OUTER1 at serializable isolation level using share table locking: 
+			Number of opens = 2
+			Hash table size = 2
+			Hash key is column number 0
+			Rows seen = 1
+			Rows filtered = 0
+				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={0}
+				Number of columns fetched=1
+				Number of pages visited=1
+				Number of rows qualified=2
+				Number of rows visited=2
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Table Scan ResultSet for OUTER2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0}
+			Number of columns fetched=1
+			Number of pages visited=1
+			Number of rows qualified=1
+			Number of rows visited=2
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- flattened exists join in nested subquery
+select c1 from (select t.c1 from (select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) where exists (select c1 from idx1)) t, outer2 where t.c1 = outer2.c1) t2;
+C1         
+-----------
+1          
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- flattened exists join in nested subquery
+select c1 from (select t.c1 from (select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) where exists (select c1 from idx1)) t, outer2 where t.c1 = outer2.c1) t2
+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: 
+Project-Restrict ResultSet (9):
+Number of opens = 1
+Rows seen = 2
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2
+	Rows seen from the right = 2
+	Rows filtered = 0
+	Rows returned = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 2
+			Rows seen from the right = 2
+			Rows filtered = 0
+			Rows returned = 2
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Hash Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 2
+				Rows seen from the right = 2
+				Rows filtered = 0
+				Rows returned = 2
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Table Scan ResultSet for OUTER1 at serializable isolation level using share table locking chosen by the optimizer
+					Number of opens = 1
+					Rows seen = 2
+					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={0}
+						Number of columns fetched=1
+						Number of pages visited=1
+						Number of rows qualified=2
+						Number of rows visited=2
+						Scan type=heap
+						start position: 
+null						stop position: 
+null						qualifiers:
+None
+				Right result set:
+					Hash Scan ResultSet for OUTER2 at serializable isolation level using share table locking: 
+					Number of opens = 2
+					Hash table size = 2
+					Hash key is column number 0
+					Rows seen = 2
+					Rows filtered = 0
+						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={0}
+						Number of columns fetched=1
+						Number of pages visited=1
+						Number of rows qualified=2
+						Number of rows visited=2
+						Scan type=heap
+						start position: 
+null						stop position: 
+null						scan qualifiers:
+None
+						next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			Right result set:
+				Index Scan ResultSet for IDX1 using index IDX1_1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 2
+				Rows seen = 2
+				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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=2
+					Number of rows q&
+ij> -- original reported bug
+create table business(businesskey int, name varchar(50), changedate int);
+0 rows inserted/updated/deleted
+ij> create table nameelement(parentkey int, parentelt varchar(50), seqnum int);
+0 rows inserted/updated/deleted
+ij> create table categorybag(cbparentkey int, cbparentelt varchar(50), 
+	krtModelKey varchar(50), keyvalue varchar(50));
+0 rows inserted/updated/deleted
+ij> select businesskey, name, changedate 
+from business as biz left outer join nameelement as nameElt 
+	on (businesskey = parentkey and parentelt = 'businessEntity') 
+where (nameElt.seqnum = 1) 
+	and businesskey in 
+		 (select cbparentkey 
+			from categorybag 
+			where (cbparentelt = 'businessEntity') and 
+				(krtModelKey = 'UUID:CD153257-086A-4237-B336-6BDCBDCC6634' and keyvalue = '40.00.00.00.00'))  order by name asc , biz.changedate asc;
+BUSINESSKEY|NAME                                              |CHANGEDATE 
+--------------------------------------------------------------------------
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	select businesskey, name, changedate 
+from business as biz left outer join nameelement as nameElt 
+	on (businesskey = parentkey and parentelt = 'businessEntity') 
+where (nameElt.seqnum = 1) 
+	and businesskey in 
+		 (select cbparentkey 
+			from categorybag 
+			where (cbparentelt = 'businessEntity') and 
+				(krtModelKey = 'UUID:CD153257-086A-4237-B336-6BDCBDCC6634' and keyvalue = '40.00.00.00.00'))  order by name asc , biz.changedate asc
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 0
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=0
+	Number of rows output=0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 0
+		Rows seen from the right = 0
+		Rows filtered = 0
+		Rows returned = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 0
+			Rows seen from the right = 0
+			Rows filtered = 0
+			Rows returned = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for NAMEELEMENT at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 16
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=3
+					Number of pages visited=1
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			Right result set:
+				Table Scan ResultSet for BUSINESS at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 0
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 16
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					start position: 
+null					stop position: 
+null					qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Table Scan ResultSet for CATEGORYBAG at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 0
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][2] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][3] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			&
+ij> -- clean up
+drop table outer1;
+0 rows inserted/updated/deleted
+ij> drop table outer2;
+0 rows inserted/updated/deleted
+ij> drop table noidx;
+0 rows inserted/updated/deleted
+ij> drop table idx1;
+0 rows inserted/updated/deleted
+ij> drop table idx2;
+0 rows inserted/updated/deleted
+ij> drop table nonunique_idx1;
+0 rows inserted/updated/deleted
+ij> drop table business;
+0 rows inserted/updated/deleted
+ij> drop table nameelement;
+0 rows inserted/updated/deleted
+ij> drop table categorybag;
+0 rows inserted/updated/deleted
+ij> -- --------------------------------------------------------------------
+-- TEST CASES for different kinds of subquery flattening, Beetle 5173
+-- --------------------------------------------------------------------
+drop table colls;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'COLLS' because it does not exist.
+ij> drop table docs;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'DOCS' because it does not exist.
+ij> CREATE TABLE "APP"."COLLS" ("ID" VARCHAR(128) NOT NULL, "COLLID" SMALLINT NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX "APP"."NEW_INDEX3" ON "APP"."COLLS" ("COLLID");
+0 rows inserted/updated/deleted
+ij> CREATE INDEX "APP"."NEW_INDEX2" ON "APP"."COLLS" ("ID");
+0 rows inserted/updated/deleted
+ij> ALTER TABLE "APP"."COLLS" ADD CONSTRAINT "NEW_KEY2" UNIQUE ("ID", "COLLID");
+0 rows inserted/updated/deleted
+ij> CREATE TABLE "APP"."DOCS" ("ID" VARCHAR(128) NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX "APP"."NEW_INDEX1" ON "APP"."DOCS" ("ID");
+0 rows inserted/updated/deleted
+ij> ALTER TABLE "APP"."DOCS" ADD CONSTRAINT "NEW_KEY1" PRIMARY KEY ("ID");
+0 rows inserted/updated/deleted
+ij> insert into colls values ('123', 2);
+1 row inserted/updated/deleted
+ij> insert into colls values ('124', -5);
+1 row inserted/updated/deleted
+ij> insert into colls values ('24', 1);
+1 row inserted/updated/deleted
+ij> insert into colls values ('26', -2);
+1 row inserted/updated/deleted
+ij> insert into colls values ('36', 1);
+1 row inserted/updated/deleted
+ij> insert into colls values ('37', 8);
+1 row inserted/updated/deleted
+ij> insert into docs values '24', '25', '36', '27', '124', '567';
+6 rows inserted/updated/deleted
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 10000;
+ij> -- NOT IN is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( ID NOT IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- NOT IN is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( ID NOT IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 6
+				Rows seen from the right = 4
+				Rows filtered = 0
+				Rows returned = 4
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table 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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=6
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 6
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking: 
+						Number of opens = 6
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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={0, 1}
+							Number of columns fetched=2
+							Number of deleted rows visited=0
+							Number of pages visited=1
+							Number of rows qualified=3
+							Number of rows visited=6
+							Scan type=btree
+							Tree height=1
+							start position: 
+	None
+							stop position: 
+	None
+							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- NOT EXISTS is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- NOT EXISTS is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 6
+				Rows seen from the right = 4
+				Rows filtered = 0
+				Rows returned = 4
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table 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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=6
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 6
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking: 
+						Number of opens = 6
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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={0, 1}
+							Number of columns fetched=2
+							Number of deleted rows visited=0
+							Number of pages visited=1
+							Number of rows qualified=3
+							Number of rows visited=6
+							Scan type=btree
+							Tree height=1
+							start position: 
+	None
+							stop position: 
+	None
+							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- EXISTS is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- EXISTS is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 6
+				Rows seen from the right = 2
+				Rows filtered = 0
+				Rows returned = 2
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table 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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=6
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 6
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking: 
+						Number of opens = 6
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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={0, 1}
+							Number of columns fetched=2
+							Number of deleted rows visited=0
+							Number of pages visited=1
+							Number of rows qualified=3
+							Number of rows visited=6
+							Scan type=btree
+							Tree height=1
+							start position: 
+	None
+							stop position: 
+	None
+							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- IN is flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- IN is flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 2
+			Rows filtered = 0
+			Rows returned = 2
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 2
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Hash Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking: 
+					Number of opens = 6
+					Hash table size = 3
+					Hash key is column number 0
+					Rows seen = 2
+					Rows filtered = 0
+						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={0, 1}
+						Number of columns fetched=2
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=3
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						scan qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+						next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- ANY is flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ANY is flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 4
+			Rows filtered = 0
+			Rows returned = 4
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 4
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 6
+					Rows seen = 4
+					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={0, 1}
+						Number of columns fetched=2
+						Number of deleted rows visited=0
+						Number of pages visited=6
+						Number of rows qualified=4
+						Number of rows visited=17
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> -- ANY is flattened
+SELECT count(ID) FROM DOCS WHERE ID <> ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+6          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ANY is flattened
+SELECT count(ID) FROM DOCS WHERE ID <> ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 6
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 6
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 6
+			Rows filtered = 0
+			Rows returned = 6
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 6
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking chosen by the optimizer
+					Number of opens = 6
+					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={0, 1}
+						Number of columns fetched=2
+						Number of deleted rows visited=0
+						Number of pages visited=6
+						Number of rows qualified=6
+						Number of rows visited=19
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][2] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> -- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID = ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID = ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 0
+			Rows filtered = 0
+			Rows returned = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 6
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking chosen by the optimizer
+					Number of opens = 6
+					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={0, 1}
+						Number of columns fetched=2
+						Number of deleted rows visited=0
+						Number of pages visited=6
+						Number of rows qualified=6
+						Number of rows visited=19
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][2] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> -- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID < ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+1          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID < ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 1
+			Rows filtered = 0
+			Rows returned = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 5
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 6
+					Rows seen = 5
+					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={0, 1}
+						Number of columns fetched=2
+						Number of deleted rows visited=0
+						Number of pages visited=6
+						Number of rows qualified=5
+						Number of rows visited=18
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	> on first 2 column(s).
+	Ordered null semantics on the following columns: 
+0 1 
+						qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> -- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 4
+			Rows filtered = 0
+			Rows returned = 4
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 2
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Hash Scan ResultSet for COLLS using constraint NEW_KEY2 at serializable isolation level using share table locking: 
+					Number of opens = 6
+					Hash table size = 3
+					Hash key is column number 0
+					Rows seen = 2
+					Rows filtered = 0
+						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={0, 1}
+						Number of columns fetched=2
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=3
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						scan qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+Column[0][1] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+						next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Now test nullable correlated columns
+drop table colls;
+0 rows inserted/updated/deleted
+ij> -- the only change is ID is now nullable
+CREATE TABLE "APP"."COLLS" ("ID" VARCHAR(128), "COLLID" SMALLINT NOT NULL);
+0 rows inserted/updated/deleted
+ij> CREATE INDEX "APP"."NEW_INDEX3" ON "APP"."COLLS" ("COLLID");
+0 rows inserted/updated/deleted
+ij> CREATE INDEX "APP"."NEW_INDEX2" ON "APP"."COLLS" ("ID");
+0 rows inserted/updated/deleted
+ij> ALTER TABLE "APP"."COLLS" ADD CONSTRAINT "NEW_KEY2" UNIQUE ("ID", "COLLID");
+ERROR 42831: 'ID' cannot be a column of a primary key or unique key because it can contain null values.
+ij> insert into colls values ('123', 2);
+1 row inserted/updated/deleted
+ij> insert into colls values ('124', -5);
+1 row inserted/updated/deleted
+ij> insert into colls values ('24', 1);
+1 row inserted/updated/deleted
+ij> insert into colls values ('26', -2);
+1 row inserted/updated/deleted
+ij> insert into colls values ('36', 1);
+1 row inserted/updated/deleted
+ij> insert into colls values ('37', 8);
+1 row inserted/updated/deleted
+ij> insert into colls values (null, -2);
+1 row inserted/updated/deleted
+ij> insert into colls values (null, 1);
+1 row inserted/updated/deleted
+ij> insert into colls values (null, 8);
+1 row inserted/updated/deleted
+ij> -- NOT EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- NOT EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 4
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 6
+				Rows seen from the right = 4
+				Rows filtered = 0
+				Rows returned = 4
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table 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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=6
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 6
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS at serializable isolation level using share table locking: 
+						Number of opens = 6
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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=5
+							Number of rows visited=9
+							Scan type=heap
+							start position: 
+null							stop position: 
+null							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 6
+				Rows seen from the right = 2
+				Rows filtered = 0
+				Rows returned = 2
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table 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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=6
+						Number of rows visited=6
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 6
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS at serializable isolation level using share table locking: 
+						Number of opens = 6
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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=5
+							Number of rows visited=9
+							Scan type=heap
+							start position: 
+null							stop position: 
+null							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- IN should be flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- IN should be flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 2
+			Rows filtered = 0
+			Rows returned = 2
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 6
+				Rows seen = 2
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Hash Scan ResultSet for COLLS at serializable isolation level using share table locking: 
+					Number of opens = 6
+					Hash table size = 3
+					Hash key is column number 0
+					Rows seen = 2
+					Rows filtered = 0
+						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=5
+						Number of rows visited=9
+						Scan type=heap
+						start position: 
+null						stop position: 
+null						scan qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+						next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- ANY should be flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ANY should be flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 6
+			Rows seen from the right = 4
+			Rows filtered = 0
+			Rows returned = 4
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 6
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=6
+					Number of rows visited=6
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (6):
+				Number of opens = 6
+				Rows seen = 15
+				Rows filtered = 11
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Row to Base Row ResultSet for COLLS:
+					Number of opens = 6
+					Rows seen = 15
+					Columns accessed from heap = {1}
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						Index Scan ResultSet for COLLS using index NEW_INDEX2 at serializable isolation level using share row locking chosen by the optimizer
+						Number of opens = 6
+						Rows seen = 15
+						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=6
+							Number of rows qualified=15
+							Number of rows visited=17
+							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> -- ALL should NOT be flattened, but subquery should be materialized
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ALL should NOT be flattened, but subquery should be materialized
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (10):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Attached subqueries:
+			Begin Subquery Number 0
+			Any ResultSet  (Attached to 3):
+			Number of opens = 6
+			Rows seen = 6
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Source result set:
+				Project-Restrict ResultSet (8):
+				Number of opens = 6
+				Rows seen = 12
+				Rows filtered = 6
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Union ResultSet:
+					Number of opens = 6
+					Rows seen from the left = 12
+					Rows seen from the right = 0
+					Rows returned = 12
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+					Left result set:
+						Union ResultSet:
+						Number of opens = 6
+						Rows seen from the left = 12
+						Rows seen from the right = 0
+						Rows returned = 12
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+						Left result set:
+							Union ResultSet:
+							Number of opens = 6
+							Rows seen from the left = 12
+							Rows seen from the right = 0
+							Rows returned = 12
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+							Left result set:
+								Union ResultSet:
+								Number of opens = 6
+								Rows seen from the left = 6
+								Rows seen from the right = 6
+								Rows returned = 12
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								Left result set:
+									Row ResultSet:
+									Number of opens = 6
+									Rows returned = 6
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+								Right result set:
+									Row ResultSet:
+									Number of opens = 6
+									Rows returned = 6
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+							Right result set:
+								Row ResultSet:
+								Number of opens = 0
+								Rows returned = 0
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+						Right result set:
+							Row ResultSet:
+							Number of opens = 0
+							Rows returned = 0
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+					Right result set:
+						Row ResultSet:
+						Number of opens = 0
+						Rows returned = 0
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+			End Subquery Number 0
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 6
+		Rows filtered = 6
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 6
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=6
+				Number of rows visited=6
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> -- Now we make the other correlated column also nullable
+drop table docs;
+0 rows inserted/updated/deleted
+ij> CREATE TABLE "APP"."DOCS" ("ID" VARCHAR(128));
+0 rows inserted/updated/deleted
+ij> CREATE INDEX "APP"."NEW_INDEX1" ON "APP"."DOCS" ("ID");
+0 rows inserted/updated/deleted
+ij> insert into docs values '24', '25', '36', '27', '124', '567';
+6 rows inserted/updated/deleted
+ij> insert into docs values null;
+1 row inserted/updated/deleted
+ij> -- NOT EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+5          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- NOT EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 5
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 5
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 5
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 7
+				Rows seen from the right = 5
+				Rows filtered = 0
+				Rows returned = 5
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+					Number of opens = 1
+					Rows seen = 7
+					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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=7
+						Number of rows visited=7
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 7
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS at serializable isolation level using share table locking: 
+						Number of opens = 7
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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=5
+							Number of rows visited=9
+							Scan type=heap
+							start position: 
+null							stop position: 
+null							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 1
+			Rows seen = 2
+			Rows filtered = 0
+			restriction = false
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Hash Exists Join ResultSet:
+				Number of opens = 1
+				Rows seen from the left = 7
+				Rows seen from the right = 2
+				Rows filtered = 0
+				Rows returned = 2
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				Left result set:
+					Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+					Number of opens = 1
+					Rows seen = 7
+					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={0}
+						Number of columns fetched=1
+						Number of deleted rows visited=0
+						Number of pages visited=1
+						Number of rows qualified=7
+						Number of rows visited=7
+						Scan type=btree
+						Tree height=1
+						start position: 
+	None
+						stop position: 
+	None
+						qualifiers:
+None
+				Right result set:
+					Project-Restrict ResultSet (5):
+					Number of opens = 7
+					Rows seen = 2
+					Rows filtered = 0
+					restriction = true
+					projection = false
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						restriction time (milliseconds) = 0
+						projection time (milliseconds) = 0
+					Source result set:
+						Hash Scan ResultSet for COLLS at serializable isolation level using share table locking: 
+						Number of opens = 7
+						Hash table size = 3
+						Hash key is column number 0
+						Rows seen = 2
+						Rows filtered = 0
+							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=5
+							Number of rows visited=9
+							Scan type=heap
+							start position: 
+null							stop position: 
+null							scan qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+							next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- IN should be flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+2          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- IN should be flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 2
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 2
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Hash Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 7
+			Rows seen from the right = 2
+			Rows filtered = 0
+			Rows returned = 2
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 7
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=7
+					Number of rows visited=7
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (5):
+				Number of opens = 7
+				Rows seen = 2
+				Rows filtered = 0
+				restriction = true
+				projection = false
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Hash Scan ResultSet for COLLS at serializable isolation level using share table locking: 
+					Number of opens = 7
+					Hash table size = 3
+					Hash key is column number 0
+					Rows seen = 2
+					Rows filtered = 0
+						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=5
+						Number of rows visited=9
+						Scan type=heap
+						start position: 
+null						stop position: 
+null						scan qualifiers:
+Column[0][0] Id: 1
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+						next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- ANY should be flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+4          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ANY should be flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (8):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 4
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Project-Restrict ResultSet (7):
+		Number of opens = 1
+		Rows seen = 4
+		Rows filtered = 0
+		restriction = false
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 7
+			Rows seen from the right = 4
+			Rows filtered = 0
+			Rows returned = 4
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 7
+				Rows filtered = 0
+				Fetch Size = 16
+					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={0}
+					Number of columns fetched=1
+					Number of deleted rows visited=0
+					Number of pages visited=1
+					Number of rows qualified=7
+					Number of rows visited=7
+					Scan type=btree
+					Tree height=1
+					start position: 
+	None
+					stop position: 
+	None
+					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (6):
+				Number of opens = 7
+				Rows seen = 15
+				Rows filtered = 11
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Row to Base Row ResultSet for COLLS:
+					Number of opens = 7
+					Rows seen = 15
+					Columns accessed from heap = {1}
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						Index Scan ResultSet for COLLS using index NEW_INDEX2 at serializable isolation level using share row locking chosen by the optimizer
+						Number of opens = 7
+						Rows seen = 15
+						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=6
+							Number of rows qualified=15
+							Number of rows visited=17
+							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> -- ALL should NOT be flattened, but subquery should be materialized, watch out results
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+1          
+-----------
+0          
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- ALL should NOT be flattened, but subquery should be materialized, watch out results
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) )
+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: 
+Project-Restrict ResultSet (10):
+Number of opens = 1
+Rows seen = 1
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Scalar Aggregate ResultSet:
+	Number of opens = 1
+	Rows input = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Index Key Optimization = false
+	Source result set:
+		Attached subqueries:
+			Begin Subquery Number 0
+			Any ResultSet  (Attached to 3):
+			Number of opens = 7
+			Rows seen = 7
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Source result set:
+				Project-Restrict ResultSet (8):
+				Number of opens = 7
+				Rows seen = 13
+				Rows filtered = 6
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Union ResultSet:
+					Number of opens = 7
+					Rows seen from the left = 13
+					Rows seen from the right = 0
+					Rows returned = 13
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+					Left result set:
+						Union ResultSet:
+						Number of opens = 7
+						Rows seen from the left = 13
+						Rows seen from the right = 0
+						Rows returned = 13
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+						Left result set:
+							Union ResultSet:
+							Number of opens = 7
+							Rows seen from the left = 13
+							Rows seen from the right = 0
+							Rows returned = 13
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+							Left result set:
+								Union ResultSet:
+								Number of opens = 7
+								Rows seen from the left = 7
+								Rows seen from the right = 6
+								Rows returned = 13
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								Left result set:
+									Row ResultSet:
+									Number of opens = 7
+									Rows returned = 7
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+								Right result set:
+									Row ResultSet:
+									Number of opens = 6
+									Rows returned = 6
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+							Right result set:
+								Row ResultSet:
+								Number of opens = 0
+								Rows returned = 0
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+						Right result set:
+							Row ResultSet:
+							Number of opens = 0
+							Rows returned = 0
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+					Right result set:
+						Row ResultSet:
+						Number of opens = 0
+						Rows returned = 0
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+			End Subquery Number 0
+		Project-Restrict ResultSet (3):
+		Number of opens = 1
+		Rows seen = 7
+		Rows filtered = 7
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Scan ResultSet for DOCS using index NEW_INDEX1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 7
+			Rows filtered = 0
+			Fetch Size = 16
+				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={0}
+				Number of columns fetched=1
+				Number of deleted rows visited=0
+				Number of pages visited=1
+				Number of rows qualified=7
+				Number of rows visited=7
+				Scan type=btree
+				Tree height=1
+				start position: 
+	None
+				stop position: 
+	None
+				qualifiers:
+None
+ij> drop table t1;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T1' because it does not exist.
+ij> drop table t2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T2' because it does not exist.
+ij> drop table t3;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T3' because it does not exist.
+ij> drop table t4;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'T4' because it does not exist.
+ij> create table t1 (c1 int not null);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int not null);
+0 rows inserted/updated/deleted
+ij> create table t3 (c1 int not null);
+0 rows inserted/updated/deleted
+ij> create table t4 (c1 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1,2,3,4,5,1,2;
+7 rows inserted/updated/deleted
+ij> insert into t2 values 1,4,5,1,1,5,4;
+7 rows inserted/updated/deleted
+ij> insert into t3 values 4,4,3,3;
+4 rows inserted/updated/deleted
+ij> insert into t4 values 1,1,2,2,3,4,5,5;
+8 rows inserted/updated/deleted
+ij> -- should return 2,3,2
+select * from t1 where not exists (select * from t2 where t1.c1=t2.c1);
+C1         
+-----------
+2          
+3          
+2          
+ij> -- should be flattened
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should return 2,3,2
+select * from t1 where not exists (select * from t2 where t1.c1=t2.c1)
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 3
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 7
+	Rows seen from the right = 3
+	Rows filtered = 0
+	Rows returned = 3
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for T1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 7
+		Rows filtered = 0
+		Fetch Size = 16
+			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=1
+			Number of pages visited=1
+			Number of rows qualified=7
+			Number of rows visited=7
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for T2 at serializable isolation level using share table locking: 
+		Number of opens = 7
+		Hash table size = 3
+		Hash key is column number 0
+		Rows seen = 4
+		Rows filtered = 0
+			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=1
+			Number of pages visited=1
+			Number of rows qualified=7
+			Number of rows visited=7
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- watch out result, should return 2,3,4,2
+select * from t1 where not exists (select * from t2 where t1.c1=t2.c1 and t2.c1
+not in (select t3.c1 from t3, t4));
+C1         
+-----------
+2          
+3          
+4          
+2          
+ij> -- can not be flattened, should be materialized
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- watch out result, should return 2,3,4,2
+select * from t1 where not exists (select * from t2 where t1.c1=t2.c1 and t2.c1
+not in (select t3.c1 from t3, t4))
+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: 
+Attached subqueries:
+	Begin Subquery Number 0
+	Any ResultSet  (Attached to 2):
+	Number of opens = 7
+	Rows seen = 7
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Attached subqueries:
+			Begin Subquery Number 1
+			Any ResultSet  (Attached to 4):
+			Number of opens = 5
+			Rows seen = 5
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Source result set:
+				Project-Restrict ResultSet (8):
+				Number of opens = 5
+				Rows seen = 98
+				Rows filtered = 96
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Union ResultSet:
+					Number of opens = 5
+					Rows seen from the left = 95
+					Rows seen from the right = 3
+					Rows returned = 98
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+					Left result set:
+						Union ResultSet:
+						Number of opens = 5
+						Rows seen from the left = 92
+						Rows seen from the right = 3
+						Rows returned = 95
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+						Left result set:
+							Union ResultSet:
+							Number of opens = 5
+							Rows seen from the left = 89
+							Rows seen from the right = 3
+							Rows returned = 92
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+							Left result set:
+								Union ResultSet:
+								Number of opens = 5
+								Rows seen from the left = 86
+								Rows seen from the right = 3
+								Rows returned = 89
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								Left result set:
+									Union ResultSet:
+									Number of opens = 5
+									Rows seen from the left = 83
+									Rows seen from the right = 3
+									Rows returned = 86
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+									Left result set:
+										Union ResultSet:
+										Number of opens = 5
+										Rows seen from the left = 80
+										Rows seen from the right = 3
+										Rows returned = 83
+											constructor time (milliseconds) = 0
+											open time (milliseconds) = 0
+											next time (milliseconds) = 0
+											close time (milliseconds) = 0
+										Left result set:
+											Union ResultSet:
+											Number of opens = 5
+											Rows seen from the left = 77
+											Rows seen from the right = 3
+											Rows returned = 80
+												constructor time (milliseconds) = 0
+												open time (milliseconds) = 0
+												next time (milliseconds) = 0
+												close time (milliseconds) = 0
+											Left result set:
+												Union ResultSet:
+												Number of opens = 5
+												Rows seen from the left = 74
+												Rows seen from the right = 3
+												Rows returned = 77
+													constructor time (milliseconds) = 0
+													open time (milliseconds) = 0
+													next time (milliseconds) = 0
+													close time (milliseconds) = 0
+												Left result set:
+													Union ResultSet:
+													Number of opens = 5
+													Rows seen from the left = 71
+													Rows seen from the right = 3
+													Rows returned = 74
+														constructor time (milliseconds) = 0
+														open time (milliseconds) = 0
+														next time (milliseconds) = 0
+														close time (milliseconds) = 0
+													Left result set:
+														Union ResultSet:
+														Number of opens = 5
+														Rows seen from the left = 68
+														Rows seen from the right = 3
+														Rows returned = 71
+															constructor time (milliseconds) = 0
+															open time (milliseconds) = 0
+															next time (milliseconds) = 0
+															close time (milliseconds) = 0
+														Left result set:
+															Union ResultSet:
+															Number of opens = 5
+															Rows seen from the left = 65
+															Rows seen from the right = 3
+															Rows returned = 68
+																constructor time (milliseconds) = 0
+																open time (milliseconds) = 0
+																next time (milliseconds) = 0
+																close time (milliseconds) = 0
+															Left result set:
+																Union ResultSet:
+																Number of opens = 5
+																Rows seen from the left = 62
+																Rows seen from the right = 3
+																Rows returned = 65
+																	constructor time (milliseconds) = 0
+																	open time (milliseconds) = 0
+																	next time (milliseconds) = 0
+																	close time (milliseconds) = 0
+																Left result set:
+																	Union ResultSet:
+																	Number of opens = 5
+																	Rows seen from the left = 59
+																	Rows seen from the right = 3
+																	Rows returned = 62
+																		constructor time (milliseconds) = 0
+																		open time (milliseconds) = 0
+																		next time (milliseconds) = 0
+																		close time (milliseconds) = 0
+																	Left result set:
+																		Union ResultSet:
+																		Number of opens = 5
+																		Rows seen from the left = 56
+																		Rows seen from the right = 3
+																		Rows returned = 59
+																			constructor time (milliseconds) = 0
+																			open time (milliseconds) = 0
+																			next time (milliseconds) = 0
+																			close time (milliseconds) = 0
+																		Left result set:
+																			Union ResultSet:
+																			Number of opens = 5
+																			Rows seen from the left = 53
+																			Rows seen from the right = 3
+																			Rows returned = 56
+																				constructor time (milliseconds) = 0
+																				open time (milliseconds) = 0
+																				next time (milliseconds) = 0
+																				close time (milliseconds) = 0
+																			Left result set:
+																				Union ResultSet:
+																				Number of opens = 5
+																				Rows seen from the left = 50
+																				Rows seen from the right = 3
+																				Rows returned = 53
+																					constructor time (milliseconds) = 0
+																					open time (milliseconds) = 0
+																					next time (milliseconds) = 0
+																					close time (milliseconds) = 0
+																				Left result set:
+																					Union ResultSet:
+																					Number of opens = 5
+																					Rows seen from the left = 47
+																					Rows seen from the right = 3
+																					Rows returned = 50
+																						constructor time (milliseconds) = 0
+							&
+ij> -- should return 1,5,1
+select * from t1 where exists (select * from t2 where t1.c1=t2.c1 and t2.c1 not
+in (select t3.c1 from t3, t4));
+C1         
+-----------
+1          
+5          
+1          
+ij> -- can not be flattened, should be materialized
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	null
+Statement Text: 
+	-- should return 1,5,1
+select * from t1 where exists (select * from t2 where t1.c1=t2.c1 and t2.c1 not
+in (select t3.c1 from t3, t4))
+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: 
+Attached subqueries:
+	Begin Subquery Number 0
+	Any ResultSet  (Attached to 2):
+	Number of opens = 7
+	Rows seen = 7
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Source result set:
+		Attached subqueries:
+			Begin Subquery Number 1
+			Any ResultSet  (Attached to 4):
+			Number of opens = 5
+			Rows seen = 5
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Source result set:
+				Project-Restrict ResultSet (8):
+				Number of opens = 5
+				Rows seen = 98
+				Rows filtered = 96
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Union ResultSet:
+					Number of opens = 5
+					Rows seen from the left = 95
+					Rows seen from the right = 3
+					Rows returned = 98
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+					Left result set:
+						Union ResultSet:
+						Number of opens = 5
+						Rows seen from the left = 92
+						Rows seen from the right = 3
+						Rows returned = 95
+							constructor time (milliseconds) = 0
+							open time (milliseconds) = 0
+							next time (milliseconds) = 0
+							close time (milliseconds) = 0
+						Left result set:
+							Union ResultSet:
+							Number of opens = 5
+							Rows seen from the left = 89
+							Rows seen from the right = 3
+							Rows returned = 92
+								constructor time (milliseconds) = 0
+								open time (milliseconds) = 0
+								next time (milliseconds) = 0
+								close time (milliseconds) = 0
+							Left result set:
+								Union ResultSet:
+								Number of opens = 5
+								Rows seen from the left = 86
+								Rows seen from the right = 3
+								Rows returned = 89
+									constructor time (milliseconds) = 0
+									open time (milliseconds) = 0
+									next time (milliseconds) = 0
+									close time (milliseconds) = 0
+								Left result set:
+									Union ResultSet:
+									Number of opens = 5
+									Rows seen from the left = 83
+									Rows seen from the right = 3
+									Rows returned = 86
+										constructor time (milliseconds) = 0
+										open time (milliseconds) = 0
+										next time (milliseconds) = 0
+										close time (milliseconds) = 0
+									Left result set:
+										Union ResultSet:
+										Number of opens = 5
+										Rows seen from the left = 80
+										Rows seen from the right = 3
+										Rows returned = 83
+											constructor time (milliseconds) = 0
+											open time (milliseconds) = 0
+											next time (milliseconds) = 0
+											close time (milliseconds) = 0
+										Left result set:
+											Union ResultSet:
+											Number of opens = 5
+											Rows seen from the left = 77
+											Rows seen from the right = 3
+											Rows returned = 80
+												constructor time (milliseconds) = 0
+												open time (milliseconds) = 0
+												next time (milliseconds) = 0
+												close time (milliseconds) = 0
+											Left result set:
+												Union ResultSet:
+												Number of opens = 5
+												Rows seen from the left = 74
+												Rows seen from the right = 3
+												Rows returned = 77
+													constructor time (milliseconds) = 0
+													open time (milliseconds) = 0
+													next time (milliseconds) = 0
+													close time (milliseconds) = 0
+												Left result set:
+													Union ResultSet:
+													Number of opens = 5
+													Rows seen from the left = 71
+													Rows seen from the right = 3
+													Rows returned = 74
+														constructor time (milliseconds) = 0
+														open time (milliseconds) = 0
+														next time (milliseconds) = 0
+														close time (milliseconds) = 0
+													Left result set:
+														Union ResultSet:
+														Number of opens = 5
+														Rows seen from the left = 68
+														Rows seen from the right = 3
+														Rows returned = 71
+															constructor time (milliseconds) = 0
+															open time (milliseconds) = 0
+															next time (milliseconds) = 0
+															close time (milliseconds) = 0
+														Left result set:
+															Union ResultSet:
+															Number of opens = 5
+															Rows seen from the left = 65
+															Rows seen from the right = 3
+															Rows returned = 68
+																constructor time (milliseconds) = 0
+																open time (milliseconds) = 0
+																next time (milliseconds) = 0
+																close time (milliseconds) = 0
+															Left result set:
+																Union ResultSet:
+																Number of opens = 5
+																Rows seen from the left = 62
+																Rows seen from the right = 3
+																Rows returned = 65
+																	constructor time (milliseconds) = 0
+																	open time (milliseconds) = 0
+																	next time (milliseconds) = 0
+																	close time (milliseconds) = 0
+																Left result set:
+																	Union ResultSet:
+																	Number of opens = 5
+																	Rows seen from the left = 59
+																	Rows seen from the right = 3
+																	Rows returned = 62
+																		constructor time (milliseconds) = 0
+																		open time (milliseconds) = 0
+																		next time (milliseconds) = 0
+																		close time (milliseconds) = 0
+																	Left result set:
+																		Union ResultSet:
+																		Number of opens = 5
+																		Rows seen from the left = 56
+																		Rows seen from the right = 3
+																		Rows returned = 59
+																			constructor time (milliseconds) = 0
+																			open time (milliseconds) = 0
+																			next time (milliseconds) = 0
+																			close time (milliseconds) = 0
+																		Left result set:
+																			Union ResultSet:
+																			Number of opens = 5
+																			Rows seen from the left = 53
+																			Rows seen from the right = 3
+																			Rows returned = 56
+																				constructor time (milliseconds) = 0
+																				open time (milliseconds) = 0
+																				next time (milliseconds) = 0
+																				close time (milliseconds) = 0
+																			Left result set:
+																				Union ResultSet:
+																				Number of opens = 5
+																				Rows seen from the left = 50
+																				Rows seen from the right = 3
+																				Rows returned = 53
+																					constructor time (milliseconds) = 0
+																					open time (milliseconds) = 0
+																					next time (milliseconds) = 0
+																					close time (milliseconds) = 0
+																				Left result set:
+																					Union ResultSet:
+																					Number of opens = 5
+																					Rows seen from the left = 47
+																					Rows seen from the right = 3
+																					Rows returned = 50
+																						constructor time (milliseconds) = 0
+																						open time&
+ij> drop table colls;
+0 rows inserted/updated/deleted
+ij> drop table docs;
+0 rows inserted/updated/deleted
+ij> 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> drop table t4;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/supersimple.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/supersimple.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,179 @@
+ij> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij> create table a (a int);
+0 rows inserted/updated/deleted
+ij> insert into a values (1);
+1 row inserted/updated/deleted
+ij> select * from a;
+A          
+-----------
+1          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> create table b (si smallint,i int, bi bigint, r real, f float, d double precision, n5_2 numeric(5,2), dec10_3 decimal(10,3), ch20 char(20),vc varchar(20), lvc long varchar, blobCol blob(1000),  clobCol clob(1000));
+0 rows inserted/updated/deleted
+ij> insert into b values(2,3,4,5.3,5.3,5.3,31.13,123456.123, 'one','one','one',cast(X'01ABCD' as blob(1000)),'one');
+1 row inserted/updated/deleted
+ij> insert into b values(-32768,-2147483648, -9223372036854775808 ,1.2E-37, 2.225E-307, +2.225E-307,-56.12, -123456.123,'one','one','one', cast(X'01ABCD' as blob(1000)),'one');
+1 row inserted/updated/deleted
+ij> insert into b values(null,null,null,null,null,null,null,null,null,null,null,null,null);
+1 row inserted/updated/deleted
+ij> insert into b values(32767,2147483647, 9223372036854775807 ,1.4 , 3.4028235E38 ,3.4028235E38  ,999.99, 9999999.999,'one','one','one',cast(X'01ABCD' as blob(1000)), 'one');
+1 row inserted/updated/deleted
+ij> select * from b;
+SI    |I          |BI                  |R            |F                     |D                     |N5_2    |DEC10_3      |CH20                |VC                  |LVC                                                                                                                             |BLOBCOL                                                                                                                         |CLOBCOL                                                                                                                         
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2     |3          |4                   |5.3          |5.3                   |5.3                   |31.13   |123456.123   |one                 |one                 |one                                                                                                                             |01abcd                                                                                                                          |one                                                                                                                             
+-32768|-2147483648|-9223372036854775808|1.2E-37      |2.225E-307            |2.225E-307            |-56.12  |-123456.123  |one                 |one                 |one                                                                                                                             |01abcd                                                                                                                          |one                                                                                                                             
+NULL  |NULL       |NULL                |NULL         |NULL                  |NULL                  |NULL    |NULL         |NULL                |NULL                |NULL                                                                                                                            |NULL                                                                                                                            |NULL                                                                                                                            
+32767 |2147483647 |9223372036854775807 |1.4          |3.4028235E38          |3.4028235E38          |999.99  |9999999.999  |one                 |one                 |one                                                                                                                             |01abcd                                                                                                                          |one                                                                                                                             
+ij> drop table b;
+0 rows inserted/updated/deleted
+ij> create table c (si smallint not null,i int not null , bi bigint not null, r real not null, f float not null, d double precision not null, n5_2 numeric(5,2) not null , dec10_3 decimal(10,3) not null, ch20 char(20) not null ,vc varchar(20) not null, lvc long varchar not null,  blobCol blob(1000) not null,  clobCol clob(1000) not null);
+0 rows inserted/updated/deleted
+ij> insert into c values(2,3,4,5.3,5.3,5.3,31.13,123456.123, 'one','one','one', cast(X'01ABCD' as blob(1000)), 'one');
+1 row inserted/updated/deleted
+ij> insert into c values(-32768,-2147483648, -9223372036854775808 ,1.2E-37, 2.225E-307, +2.225E-307,-56.12, -123456.123,'one','one','one', cast(X'01ABCD' as blob(1000)),'one');
+1 row inserted/updated/deleted
+ij> select * from c;
+SI    |I          |BI                  |R            |F                     |D                     |N5_2    |DEC10_3      |CH20                |VC                  |LVC                                                                                                                             |BLOBCOL                                                                                                                         |CLOBCOL                                                                                                                         
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+2     |3          |4                   |5.3          |5.3                   |5.3                   |31.13   |123456.123   |one                 |one                 |one                                                                                                                             |01abcd                                                                                                                          |one                                                                                                                             
+-32768|-2147483648|-9223372036854775808|1.2E-37      |2.225E-307            |2.225E-307            |-56.12  |-123456.123  |one                 |one                 |one                                                                                                                             |01abcd                                                                                                                          |one                                                                                                                             
+ij> values(10);
+1          
+-----------
+10         
+ij> values('hello');
+1    
+-----
+hello
+ij> values(1.2);
+1    
+-----
+1.2  
+ij> drop table c;
+0 rows inserted/updated/deleted
+ij> -- bug 4430 aliasinfo nullability problem
+select aliasinfo from sys.sysaliases where aliasinfo is null;
+ALIASINFO      
+---------------
+ij> -- test commit and rollback
+autocommit off;
+ij> create table a(a int);
+0 rows inserted/updated/deleted
+ij> insert into a values (1);
+1 row inserted/updated/deleted
+ij> select * from a;
+A          
+-----------
+1          
+ij> commit;
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> select * from a;
+A          
+-----------
+1          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> autocommit on;
+ij> maximumdisplaywidth 5000;
+ij> --test 84 columns
+ values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+81, 82, 83, 84);
+1          |2          |3          |4          |5          |6          |7          |8          |9          |10         |11         |12         |13         |14         |15         |16         |17         |18         |19         |20         |21         |22         |23         |24         |25         |26         |27         |28         |29         |30         |31         |32         |33         |34         |35         |36         |37         |38         |39         |40         |41         |42         |43         |44         |45         |46         |47         |48         |49         |50         |51         |52         |53         |54         |55         |56         |57         |58         |59         |60         |61         |62         |63         |64         |65         |66         |67         |68         |69         |70         |71         |72         |73         |74         |75         |76         |77         |78         |79         |80         |81         |82         |83         |84         
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2          |3          |4          |5          |6          |7          |8          |9          |10         |11         |12         |13         |14         |15         |16         |17         |18         |19         |20         |21         |22         |23         |24         |25         |26         |27         |28         |29         |30         |31         |32         |33         |34         |35         |36         |37         |38         |39         |40         |41         |42         |43         |44         |45         |46         |47         |48         |49         |50         |51         |52         |53         |54         |55         |56         |57         |58         |59         |60         |61         |62         |63         |64         |65         |66         |67         |68         |69         |70         |71         |72         |73         |74         |75         |76         |77         |78         |79         |80         |81         |82         |83         |84         
+ij> values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
+1          |2          |3          |4          |5          |6          |7          |8          |9          |10         |11         |12         |13         |14         |15         |16         |17         |18         |19         |20         |21         |22         |23         |24         |25         |26         |27         |28         |29         |30         |31         |32         |33         |34         |35         |36         |37         |38         |39         |40         |41         |42         |43         |44         |45         |46         |47         |48         |49         |50         |51         |52         |53         |54         |55         |56         |57         |58         |59         |60         |61         |62         |63         |64         |65         |66         |67         |68         |69         |70         |71         |72         |73         |74         |75         |76         |77         |78         |79         |80         |81         |82         |83         |84         |85         |86  
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+1          |2          |3          |4          |5          |6          |7          |8          |9          |10         |11         |12         |13         |14         |15         |16         |17         |18         |19         |20         |21         |22         |23         |24         |25         |26         |27         |28         |29         |30         |31         |32         |33         |34         |35         |36         |37         |38         |39         |40         |41         |42         |43         |44         |45         |46         |47         |48         |49         |50         |51         |52         |53         |54         |55         |56         |57         |58         |59         |60         |61         |62         |63         |64         |65         |66         |67         |68         |69         |70         |71         |72         |73         |74         |75         |76         |77         |78         |79         |80         |81         |82         |83         |84         |85         |86         |87         |88         |89         |90         |91         |92         |93         |94         |95         |96         |97         |98         |99         |100        
+ij> -- test SQL Error with non-string arguments
+-- Make sure connection still ok (Bug 4657)
+create table a (a int);
+0 rows inserted/updated/deleted
+ij> insert into a values(2342323423) ;
+ERROR 22003: The resulting value is outside the range for the data type INTEGER.
+ij> insert into a values(1);
+1 row inserted/updated/deleted
+ij> select * from a;
+A          
+-----------
+1          
+ij> drop table a;
+0 rows inserted/updated/deleted
+ij> -- Bug 4694 Test automatic rollback with close of connection
+-- in ij
+autocommit off;
+ij> create table a (a int);
+0 rows inserted/updated/deleted
+ij> -- Bug 4758 - Store error does not return properly to client
+autocommit off;
+ij> create table t (i int);
+0 rows inserted/updated/deleted
+ij> insert into t values(1);
+1 row inserted/updated/deleted
+ij> commit;
+ij> insert into t values(2);
+1 row inserted/updated/deleted
+ij> connect 'wombat';
+ij(CONNECTION1)> -- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+ij(CONNECTION1)> prepare s1 as 'select * from t';
+ij(CONNECTION1)> execute s1;
+I          
+-----------
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONNECTION1)> execute s1;
+I          
+-----------
+ERROR 40XL1: A lock could not be obtained within the time requested
+ij(CONNECTION1)> -- Bug 5967 - Selecting from 2 lob columns w/ the first one having data of length 0
+create table t1 (c1 clob(10), c2 clob(10));
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> insert into t1 values ('', 'some clob');
+1 row inserted/updated/deleted
+ij(CONNECTION1)> select * from t1;
+C1        |C2        
+---------------------
+          |some clob 
+ij(CONNECTION1)> select c2 from t1;
+C2        
+----------
+some clob 
+ij(CONNECTION1)> insert into t1 values ('', '');
+1 row inserted/updated/deleted
+ij(CONNECTION1)> insert into t1 values ('some clob', '');
+1 row inserted/updated/deleted
+ij(CONNECTION1)> select * from t1;
+C1        |C2        
+---------------------
+          |some clob 
+          |          
+some clob |          
+ij(CONNECTION1)> select c2 from t1;
+C2        
+----------
+some clob 
+ij(CONNECTION1)> drop table t1;
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/syscat.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/syscat.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,626 @@
+ij> --
+-- this test shows the system catalogs
+--
+-- It is a goal of this test not to display information that
+-- can (and will!) change from run to run, such as fields
+-- that may eventually be UUIDs or UUID-like.
+--
+maximumdisplaywidth 500;
+ij> -- negative tests
+-- verify no user ddl allowed on system tables
+-- drop table
+drop table sys.systables;
+ERROR X0Y56: 'DROP TABLE' is not allowed on the System table 'SYS.SYSTABLES'.
+ij> -- drop index
+drop index sys.sysaliases_index2;
+ERROR 42X62: 'DROP INDEX' is not allowed in the 'SYS' schema.
+ij> -- create index
+create index trash on sys.systables(tableid);
+ERROR 42X62: 'CREATE INDEX' is not allowed in the 'SYS' schema.
+ij> -- system tables are not updateable
+autocommit off;
+ij> delete from sys.systables;
+ERROR 42Y25: 'SYS.SYSTABLES' is a system table.  Users are not allowed to modify the contents of this table.
+ij> update sys.systables set tablename = tablename || 'trash';
+ERROR 42Y25: 'SYS.SYSTABLES' is a system table.  Users are not allowed to modify the contents of this table.
+ij> insert into sys.systables select * from sys.systables;
+ERROR 42Y25: 'SYS.SYSTABLES' is a system table.  Users are not allowed to modify the contents of this table.
+ij> get cursor c as 'select tablename from sys.systables for update of tablename';
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- users not allowed to do ddl in sys schema
+create table sys.usertable(c1 int);
+ERROR 42X62: 'CREATE TABLE' is not allowed in the 'SYS' schema.
+ij> create view sys.userview as values 1;
+ERROR 42908: The CREATE VIEW statement does not include a column list.
+ij> rollback work;
+ij> autocommit on;
+ij> -- positive tests
+create function gatp(SCH VARCHAR(128), TBL VARCHAR(128)) RETURNS VARCHAR(1000)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestPropertyInfo.getAllTableProperties'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> create function gaip(SCH VARCHAR(128), TBL VARCHAR(128)) RETURNS VARCHAR(1000)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestPropertyInfo.getAllIndexProperties'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+0 rows inserted/updated/deleted
+ij> -- get the properties for the heaps
+select tablename,gatp('SYS',
+	tablename) from sys.systables
+order by tablename;
+TABLENAME                                                                                                                       |2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+SYSALIASES                                                                                                                      |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSCHECKS                                                                                                                       |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSCOLUMNS                                                                                                                      |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSCONGLOMERATES                                                                                                                |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSCONSTRAINTS                                                                                                                  |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSDEPENDS                                                                                                                      |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSDUMMY1                                                                                                                       |{  }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
+SYSFILES                                                                                                                        |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSFOREIGNKEYS                                                                                                                  |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSKEYS                                                                                                                         |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSSCHEMAS                                                                                                                      |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSSTATEMENTS                                                                                                                   |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSSTATISTICS                                                                                                                   |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSTABLES                                                                                                                       |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSTRIGGERS                                                                                                                     |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+SYSVIEWS                                                                                                                        |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=12, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=false }                                                                                                                                                                                                                                                                                                                                          
+ij> -- get the properties for the indexes
+select conglomeratename, gaip('SYS',
+	conglomeratename) from sys.sysconglomerates
+where isindex
+order by conglomeratename;
+CONGLOMERATENAME                                                                                                                |2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+SYSALIASES_INDEX1                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSALIASES_INDEX2                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSALIASES_INDEX3                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCHECKS_INDEX1                                                                                                                |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCOLUMNS_INDEX1                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCOLUMNS_INDEX2                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCONGLOMERATES_INDEX1                                                                                                         |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCONGLOMERATES_INDEX2                                                                                                         |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCONGLOMERATES_INDEX3                                                                                                         |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCONSTRAINTS_INDEX1                                                                                                           |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCONSTRAINTS_INDEX2                                                                                                           |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSCONSTRAINTS_INDEX3                                                                                                           |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSDEPENDS_INDEX1                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSDEPENDS_INDEX2                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSFILES_INDEX1                                                                                                                 |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSFILES_INDEX2                                                                                                                 |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSFOREIGNKEYS_INDEX1                                                                                                           |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSFOREIGNKEYS_INDEX2                                                                                                           |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSKEYS_INDEX1                                                                                                                  |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSSCHEMAS_INDEX1                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSSCHEMAS_INDEX2                                                                                                               |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSSTATEMENTS_INDEX1                                                                                                            |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSSTATEMENTS_INDEX2                                                                                                            |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSSTATISTICS_INDEX1                                                                                                            |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSTABLES_INDEX1                                                                                                                |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSTABLES_INDEX2                                                                                                                |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSTRIGGERS_INDEX1                                                                                                              |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSTRIGGERS_INDEX2                                                                                                              |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSTRIGGERS_INDEX3                                                                                                              |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+SYSVIEWS_INDEX1                                                                                                                 |{ derby.storage.initialPages=1, derby.storage.minimumRecordSize=1, derby.storage.pageReservedSpace=0, derby.storage.pageSize=4096, derby.storage.reusableRecordId=true }                                                                                                                                                                                                                                                                                                                                            
+ij> select TABLENAME, TABLETYPE from sys.systables;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |S
+SYSTABLES                                                                                                                       |S
+SYSCOLUMNS                                                                                                                      |S
+SYSSCHEMAS                                                                                                                      |S
+SYSCONSTRAINTS                                                                                                                  |S
+SYSKEYS                                                                                                                         |S
+SYSDEPENDS                                                                                                                      |S
+SYSALIASES                                                                                                                      |S
+SYSVIEWS                                                                                                                        |S
+SYSCHECKS                                                                                                                       |S
+SYSFOREIGNKEYS                                                                                                                  |S
+SYSSTATEMENTS                                                                                                                   |S
+SYSFILES                                                                                                                        |S
+SYSTRIGGERS                                                                                                                     |S
+SYSSTATISTICS                                                                                                                   |S
+SYSDUMMY1                                                                                                                       |S
+ij> select TABLENAME,
+	COLUMNNAME, COLUMNNUMBER,
+	columndatatype
+from sys.systables t, sys.syscolumns c
+where t.TABLEID=c.REFERENCEID
+order by TABLENAME, COLUMNNAME;
+TABLENAME                                                                                                                       |COLUMNNAME                                                                                                                      |COLUMNNUMB&|COLUMNDATATYPE 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+SYSALIASES                                                                                                                      |ALIAS                                                                                                                           |2          |VARCHAR(128) N&
+SYSALIASES                                                                                                                      |ALIASID                                                                                                                         |1          |CHAR(36) NOT N&
+SYSALIASES                                                                                                                      |ALIASINFO                                                                                                                       |8          |org.apache.der&
+SYSALIASES                                                                                                                      |ALIASTYPE                                                                                                                       |5          |CHAR(1) NOT NU&
+SYSALIASES                                                                                                                      |JAVACLASSNAME                                                                                                                   |4          |LONG VARCHAR N&
+SYSALIASES                                                                                                                      |NAMESPACE                                                                                                                       |6          |CHAR(1) NOT NU&
+SYSALIASES                                                                                                                      |SCHEMAID                                                                                                                        |3          |CHAR(36)       
+SYSALIASES                                                                                                                      |SPECIFICNAME                                                                                                                    |9          |VARCHAR(128) N&
+SYSALIASES                                                                                                                      |SYSTEMALIAS                                                                                                                     |7          |BOOLEAN NOT NU&
+SYSCHECKS                                                                                                                       |CHECKDEFINITION                                                                                                                 |2          |LONG VARCHAR N&
+SYSCHECKS                                                                                                                       |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSCHECKS                                                                                                                       |REFERENCEDCOLUMNS                                                                                                               |3          |org.apache.der&
+SYSCOLUMNS                                                                                                                      |AUTOINCREMENTINC                                                                                                                |9          |BIGINT         
+SYSCOLUMNS                                                                                                                      |AUTOINCREMENTSTART                                                                                                              |8          |BIGINT         
+SYSCOLUMNS                                                                                                                      |AUTOINCREMENTVALUE                                                                                                              |7          |BIGINT         
+SYSCOLUMNS                                                                                                                      |COLUMNDATATYPE                                                                                                                  |4          |org.apache.der&
+SYSCOLUMNS                                                                                                                      |COLUMNDEFAULT                                                                                                                   |5          |java.io.Serial&
+SYSCOLUMNS                                                                                                                      |COLUMNDEFAULTID                                                                                                                 |6          |CHAR(36)       
+SYSCOLUMNS                                                                                                                      |COLUMNNAME                                                                                                                      |2          |VARCHAR(128) N&
+SYSCOLUMNS                                                                                                                      |COLUMNNUMBER                                                                                                                    |3          |INTEGER NOT NU&
+SYSCOLUMNS                                                                                                                      |REFERENCEID                                                                                                                     |1          |CHAR(36) NOT N&
+SYSCONGLOMERATES                                                                                                                |CONGLOMERATEID                                                                                                                  |8          |CHAR(36) NOT N&
+SYSCONGLOMERATES                                                                                                                |CONGLOMERATENAME                                                                                                                |4          |VARCHAR(128)   
+SYSCONGLOMERATES                                                                                                                |CONGLOMERATENUMBER                                                                                                              |3          |BIGINT NOT NULL
+SYSCONGLOMERATES                                                                                                                |DESCRIPTOR                                                                                                                      |6          |org.apache.der&
+SYSCONGLOMERATES                                                                                                                |ISCONSTRAINT                                                                                                                    |7          |BOOLEAN        
+SYSCONGLOMERATES                                                                                                                |ISINDEX                                                                                                                         |5          |BOOLEAN NOT NU&
+SYSCONGLOMERATES                                                                                                                |SCHEMAID                                                                                                                        |1          |CHAR(36) NOT N&
+SYSCONGLOMERATES                                                                                                                |TABLEID                                                                                                                         |2          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |CONSTRAINTNAME                                                                                                                  |3          |VARCHAR(128) N&
+SYSCONSTRAINTS                                                                                                                  |REFERENCECOUNT                                                                                                                  |7          |INTEGER NOT NU&
+SYSCONSTRAINTS                                                                                                                  |SCHEMAID                                                                                                                        |5          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |STATE                                                                                                                           |6          |CHAR(1) NOT NU&
+SYSCONSTRAINTS                                                                                                                  |TABLEID                                                                                                                         |2          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |TYPE                                                                                                                            |4          |CHAR(1) NOT NU&
+SYSDEPENDS                                                                                                                      |DEPENDENTFINDER                                                                                                                 |2          |org.apache.der&
+SYSDEPENDS                                                                                                                      |DEPENDENTID                                                                                                                     |1          |CHAR(36) NOT N&
+SYSDEPENDS                                                                                                                      |PROVIDERFINDER                                                                                                                  |4          |org.apache.der&
+SYSDEPENDS                                                                                                                      |PROVIDERID                                                                                                                      |3          |CHAR(36) NOT N&
+SYSDUMMY1                                                                                                                       |IBMREQD                                                                                                                         |1          |CHAR(1)        
+SYSFILES                                                                                                                        |FILEID                                                                                                                          |1          |CHAR(36) NOT N&
+SYSFILES                                                                                                                        |FILENAME                                                                                                                        |3          |VARCHAR(128) N&
+SYSFILES                                                                                                                        |GENERATIONID                                                                                                                    |4          |BIGINT NOT NULL
+SYSFILES                                                                                                                        |SCHEMAID                                                                                                                        |2          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |CONGLOMERATEID                                                                                                                  |2          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |DELETERULE                                                                                                                      |4          |CHAR(1) NOT NU&
+SYSFOREIGNKEYS                                                                                                                  |KEYCONSTRAINTID                                                                                                                 |3          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |UPDATERULE                                                                                                                      |5          |CHAR(1) NOT NU&
+SYSKEYS                                                                                                                         |CONGLOMERATEID                                                                                                                  |2          |CHAR(36) NOT N&
+SYSKEYS                                                                                                                         |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSSCHEMAS                                                                                                                      |AUTHORIZATIONID                                                                                                                 |3          |VARCHAR(128) N&
+SYSSCHEMAS                                                                                                                      |SCHEMAID                                                                                                                        |1          |CHAR(36) NOT N&
+SYSSCHEMAS                                                                                                                      |SCHEMANAME                                                                                                                      |2          |VARCHAR(128) N&
+SYSSTATEMENTS                                                                                                                   |COMPILATIONSCHEMAID                                                                                                             |8          |CHAR(36) NOT N&
+SYSSTATEMENTS                                                                                                                   |LASTCOMPILED                                                                                                                    |7          |TIMESTAMP      
+SYSSTATEMENTS                                                                                                                   |SCHEMAID                                                                                                                        |3          |CHAR(36) NOT N&
+SYSSTATEMENTS                                                                                                                   |STMTID                                                                                                                          |1          |CHAR(36) NOT N&
+SYSSTATEMENTS                                                                                                                   |STMTNAME                                                                                                                        |2          |VARCHAR(128) N&
+SYSSTATEMENTS                                                                                                                   |TEXT                                                                                                                            |6          |LONG VARCHAR N&
+SYSSTATEMENTS                                                                                                                   |TYPE                                                                                                                            |4          |CHAR(1) NOT NU&
+SYSSTATEMENTS                                                                                                                   |USINGTEXT                                                                                                                       |9          |LONG VARCHAR   
+SYSSTATEMENTS                                                                                                                   |VALID                                                                                                                           |5          |BOOLEAN NOT NU&
+SYSSTATISTICS                                                                                                                   |COLCOUNT                                                                                                                        |7          |INTEGER NOT NU&
+SYSSTATISTICS                                                                                                                   |CREATIONTIMESTAMP                                                                                                               |4          |TIMESTAMP NOT &
+SYSSTATISTICS                                                                                                                   |REFERENCEID                                                                                                                     |2          |CHAR(36) NOT N&
+SYSSTATISTICS                                                                                                                   |STATID                                                                                                                          |1          |CHAR(36) NOT N&
+SYSSTATISTICS                                                                                                                   |STATISTICS                                                                                                                      |8          |org.apache.der&
+SYSSTATISTICS                                                                                                                   |TABLEID                                                                                                                         |3          |CHAR(36) NOT N&
+SYSSTATISTICS                                                                                                                   |TYPE                                                                                                                            |5          |CHAR(1) NOT NU&
+SYSSTATISTICS                                                                                                                   |VALID                                                                                                                           |6          |BOOLEAN NOT NU&
+SYSTABLES                                                                                                                       |LOCKGRANULARITY                                                                                                                 |5          |CHAR(1) NOT NU&
+SYSTABLES                                                                                                                       |SCHEMAID                                                                                                                        |4          |CHAR(36) NOT N&
+SYSTABLES                                                                                                                       |TABLEID                                                                                                                         |1          |CHAR(36) NOT N&
+SYSTABLES                                                                                                                       |TABLENAME                                                                                                                       |2          |VARCHAR(128) N&
+SYSTABLES                                                                                                                       |TABLETYPE                                                                                                                       |3          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |ACTIONSTMTID                                                                                                                    |11         |CHAR(36)       
+SYSTRIGGERS                                                                                                                     |CREATIONTIMESTAMP                                                                                                               |4          |TIMESTAMP NOT &
+SYSTRIGGERS                                                                                                                     |EVENT                                                                                                                           |5          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |FIRINGTIME                                                                                                                      |6          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |NEWREFERENCINGNAME                                                                                                              |17         |VARCHAR(128)   
+SYSTRIGGERS                                                                                                                     |OLDREFERENCINGNAME                                                                                                              |16         |VARCHAR(128)   
+SYSTRIGGERS                                                                                                                     |REFERENCEDCOLUMNS                                                                                                               |12         |org.apache.der&
+SYSTRIGGERS                                                                                                                     |REFERENCINGNEW                                                                                                                  |15         |BOOLEAN        
+SYSTRIGGERS                                                                                                                     |REFERENCINGOLD                                                                                                                  |14         |BOOLEAN        
+SYSTRIGGERS                                                                                                                     |SCHEMAID                                                                                                                        |3          |CHAR(36) NOT N&
+SYSTRIGGERS                                                                                                                     |STATE                                                                                                                           |8          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |TABLEID                                                                                                                         |9          |CHAR(36) NOT N&
+SYSTRIGGERS                                                                                                                     |TRIGGERDEFINITION                                                                                                               |13         |LONG VARCHAR   
+SYSTRIGGERS                                                                                                                     |TRIGGERID                                                                                                                       |1          |CHAR(36) NOT N&
+SYSTRIGGERS                                                                                                                     |TRIGGERNAME                                                                                                                     |2          |VARCHAR(128) N&
+SYSTRIGGERS                                                                                                                     |TYPE                                                                                                                            |7          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |WHENSTMTID                                                                                                                      |10         |CHAR(36)       
+SYSVIEWS                                                                                                                        |CHECKOPTION                                                                                                                     |3          |CHAR(1) NOT NU&
+SYSVIEWS                                                                                                                        |COMPILATIONSCHEMAID                                                                                                             |4          |CHAR(36) NOT N&
+SYSVIEWS                                                                                                                        |TABLEID                                                                                                                         |1          |CHAR(36) NOT N&
+SYSVIEWS                                                                                                                        |VIEWDEFINITION                                                                                                                  |2          |LONG VARCHAR N&
+ij> select TABLENAME, ISINDEX 
+from sys.systables t, sys.sysconglomerates c
+where t.TABLEID=c.TABLEID
+order by TABLENAME, ISINDEX;
+TABLENAME                                                                                                                       |ISIN&
+--------------------------------------------------------------------------------------------------------------------------------------
+SYSALIASES                                                                                                                      |false
+SYSALIASES                                                                                                                      |true 
+SYSALIASES                                                                                                                      |true 
+SYSALIASES                                                                                                                      |true 
+SYSCHECKS                                                                                                                       |false
+SYSCHECKS                                                                                                                       |true 
+SYSCOLUMNS                                                                                                                      |false
+SYSCOLUMNS                                                                                                                      |true 
+SYSCOLUMNS                                                                                                                      |true 
+SYSCONGLOMERATES                                                                                                                |false
+SYSCONGLOMERATES                                                                                                                |true 
+SYSCONGLOMERATES                                                                                                                |true 
+SYSCONGLOMERATES                                                                                                                |true 
+SYSCONSTRAINTS                                                                                                                  |false
+SYSCONSTRAINTS                                                                                                                  |true 
+SYSCONSTRAINTS                                                                                                                  |true 
+SYSCONSTRAINTS                                                                                                                  |true 
+SYSDEPENDS                                                                                                                      |false
+SYSDEPENDS                                                                                                                      |true 
+SYSDEPENDS                                                                                                                      |true 
+SYSDUMMY1                                                                                                                       |false
+SYSFILES                                                                                                                        |false
+SYSFILES                                                                                                                        |true 
+SYSFILES                                                                                                                        |true 
+SYSFOREIGNKEYS                                                                                                                  |false
+SYSFOREIGNKEYS                                                                                                                  |true 
+SYSFOREIGNKEYS                                                                                                                  |true 
+SYSKEYS                                                                                                                         |false
+SYSKEYS                                                                                                                         |true 
+SYSSCHEMAS                                                                                                                      |false
+SYSSCHEMAS                                                                                                                      |true 
+SYSSCHEMAS                                                                                                                      |true 
+SYSSTATEMENTS                                                                                                                   |false
+SYSSTATEMENTS                                                                                                                   |true 
+SYSSTATEMENTS                                                                                                                   |true 
+SYSSTATISTICS                                                                                                                   |false
+SYSSTATISTICS                                                                                                                   |true 
+SYSTABLES                                                                                                                       |false
+SYSTABLES                                                                                                                       |true 
+SYSTABLES                                                                                                                       |true 
+SYSTRIGGERS                                                                                                                     |false
+SYSTRIGGERS                                                                                                                     |true 
+SYSTRIGGERS                                                                                                                     |true 
+SYSTRIGGERS                                                                                                                     |true 
+SYSVIEWS                                                                                                                        |false
+SYSVIEWS                                                                                                                        |true 
+ij> create table t (i int, s smallint);
+0 rows inserted/updated/deleted
+ij> select TABLENAME, TABLETYPE from sys.systables;
+TABLENAME                                                                                                                       |&
+----------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |S
+SYSTABLES                                                                                                                       |S
+SYSCOLUMNS                                                                                                                      |S
+SYSSCHEMAS                                                                                                                      |S
+SYSCONSTRAINTS                                                                                                                  |S
+SYSKEYS                                                                                                                         |S
+SYSDEPENDS                                                                                                                      |S
+SYSALIASES                                                                                                                      |S
+SYSVIEWS                                                                                                                        |S
+SYSCHECKS                                                                                                                       |S
+SYSFOREIGNKEYS                                                                                                                  |S
+SYSSTATEMENTS                                                                                                                   |S
+SYSFILES                                                                                                                        |S
+SYSTRIGGERS                                                                                                                     |S
+SYSSTATISTICS                                                                                                                   |S
+SYSDUMMY1                                                                                                                       |S
+T                                                                                                                               |T
+ij> select TABLENAME,
+	COLUMNNAME, COLUMNNUMBER,
+	columndatatype
+from sys.systables t, sys.syscolumns c
+where t.TABLEID=c.REFERENCEID
+order by TABLENAME, COLUMNNAME;
+TABLENAME                                                                                                                       |COLUMNNAME                                                                                                                      |COLUMNNUMB&|COLUMNDATATYPE 
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+SYSALIASES                                                                                                                      |ALIAS                                                                                                                           |2          |VARCHAR(128) N&
+SYSALIASES                                                                                                                      |ALIASID                                                                                                                         |1          |CHAR(36) NOT N&
+SYSALIASES                                                                                                                      |ALIASINFO                                                                                                                       |8          |org.apache.der&
+SYSALIASES                                                                                                                      |ALIASTYPE                                                                                                                       |5          |CHAR(1) NOT NU&
+SYSALIASES                                                                                                                      |JAVACLASSNAME                                                                                                                   |4          |LONG VARCHAR N&
+SYSALIASES                                                                                                                      |NAMESPACE                                                                                                                       |6          |CHAR(1) NOT NU&
+SYSALIASES                                                                                                                      |SCHEMAID                                                                                                                        |3          |CHAR(36)       
+SYSALIASES                                                                                                                      |SPECIFICNAME                                                                                                                    |9          |VARCHAR(128) N&
+SYSALIASES                                                                                                                      |SYSTEMALIAS                                                                                                                     |7          |BOOLEAN NOT NU&
+SYSCHECKS                                                                                                                       |CHECKDEFINITION                                                                                                                 |2          |LONG VARCHAR N&
+SYSCHECKS                                                                                                                       |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSCHECKS                                                                                                                       |REFERENCEDCOLUMNS                                                                                                               |3          |org.apache.der&
+SYSCOLUMNS                                                                                                                      |AUTOINCREMENTINC                                                                                                                |9          |BIGINT         
+SYSCOLUMNS                                                                                                                      |AUTOINCREMENTSTART                                                                                                              |8          |BIGINT         
+SYSCOLUMNS                                                                                                                      |AUTOINCREMENTVALUE                                                                                                              |7          |BIGINT         
+SYSCOLUMNS                                                                                                                      |COLUMNDATATYPE                                                                                                                  |4          |org.apache.der&
+SYSCOLUMNS                                                                                                                      |COLUMNDEFAULT                                                                                                                   |5          |java.io.Serial&
+SYSCOLUMNS                                                                                                                      |COLUMNDEFAULTID                                                                                                                 |6          |CHAR(36)       
+SYSCOLUMNS                                                                                                                      |COLUMNNAME                                                                                                                      |2          |VARCHAR(128) N&
+SYSCOLUMNS                                                                                                                      |COLUMNNUMBER                                                                                                                    |3          |INTEGER NOT NU&
+SYSCOLUMNS                                                                                                                      |REFERENCEID                                                                                                                     |1          |CHAR(36) NOT N&
+SYSCONGLOMERATES                                                                                                                |CONGLOMERATEID                                                                                                                  |8          |CHAR(36) NOT N&
+SYSCONGLOMERATES                                                                                                                |CONGLOMERATENAME                                                                                                                |4          |VARCHAR(128)   
+SYSCONGLOMERATES                                                                                                                |CONGLOMERATENUMBER                                                                                                              |3          |BIGINT NOT NULL
+SYSCONGLOMERATES                                                                                                                |DESCRIPTOR                                                                                                                      |6          |org.apache.der&
+SYSCONGLOMERATES                                                                                                                |ISCONSTRAINT                                                                                                                    |7          |BOOLEAN        
+SYSCONGLOMERATES                                                                                                                |ISINDEX                                                                                                                         |5          |BOOLEAN NOT NU&
+SYSCONGLOMERATES                                                                                                                |SCHEMAID                                                                                                                        |1          |CHAR(36) NOT N&
+SYSCONGLOMERATES                                                                                                                |TABLEID                                                                                                                         |2          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |CONSTRAINTNAME                                                                                                                  |3          |VARCHAR(128) N&
+SYSCONSTRAINTS                                                                                                                  |REFERENCECOUNT                                                                                                                  |7          |INTEGER NOT NU&
+SYSCONSTRAINTS                                                                                                                  |SCHEMAID                                                                                                                        |5          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |STATE                                                                                                                           |6          |CHAR(1) NOT NU&
+SYSCONSTRAINTS                                                                                                                  |TABLEID                                                                                                                         |2          |CHAR(36) NOT N&
+SYSCONSTRAINTS                                                                                                                  |TYPE                                                                                                                            |4          |CHAR(1) NOT NU&
+SYSDEPENDS                                                                                                                      |DEPENDENTFINDER                                                                                                                 |2          |org.apache.der&
+SYSDEPENDS                                                                                                                      |DEPENDENTID                                                                                                                     |1          |CHAR(36) NOT N&
+SYSDEPENDS                                                                                                                      |PROVIDERFINDER                                                                                                                  |4          |org.apache.der&
+SYSDEPENDS                                                                                                                      |PROVIDERID                                                                                                                      |3          |CHAR(36) NOT N&
+SYSDUMMY1                                                                                                                       |IBMREQD                                                                                                                         |1          |CHAR(1)        
+SYSFILES                                                                                                                        |FILEID                                                                                                                          |1          |CHAR(36) NOT N&
+SYSFILES                                                                                                                        |FILENAME                                                                                                                        |3          |VARCHAR(128) N&
+SYSFILES                                                                                                                        |GENERATIONID                                                                                                                    |4          |BIGINT NOT NULL
+SYSFILES                                                                                                                        |SCHEMAID                                                                                                                        |2          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |CONGLOMERATEID                                                                                                                  |2          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |DELETERULE                                                                                                                      |4          |CHAR(1) NOT NU&
+SYSFOREIGNKEYS                                                                                                                  |KEYCONSTRAINTID                                                                                                                 |3          |CHAR(36) NOT N&
+SYSFOREIGNKEYS                                                                                                                  |UPDATERULE                                                                                                                      |5          |CHAR(1) NOT NU&
+SYSKEYS                                                                                                                         |CONGLOMERATEID                                                                                                                  |2          |CHAR(36) NOT N&
+SYSKEYS                                                                                                                         |CONSTRAINTID                                                                                                                    |1          |CHAR(36) NOT N&
+SYSSCHEMAS                                                                                                                      |AUTHORIZATIONID                                                                                                                 |3          |VARCHAR(128) N&
+SYSSCHEMAS                                                                                                                      |SCHEMAID                                                                                                                        |1          |CHAR(36) NOT N&
+SYSSCHEMAS                                                                                                                      |SCHEMANAME                                                                                                                      |2          |VARCHAR(128) N&
+SYSSTATEMENTS                                                                                                                   |COMPILATIONSCHEMAID                                                                                                             |8          |CHAR(36) NOT N&
+SYSSTATEMENTS                                                                                                                   |LASTCOMPILED                                                                                                                    |7          |TIMESTAMP      
+SYSSTATEMENTS                                                                                                                   |SCHEMAID                                                                                                                        |3          |CHAR(36) NOT N&
+SYSSTATEMENTS                                                                                                                   |STMTID                                                                                                                          |1          |CHAR(36) NOT N&
+SYSSTATEMENTS                                                                                                                   |STMTNAME                                                                                                                        |2          |VARCHAR(128) N&
+SYSSTATEMENTS                                                                                                                   |TEXT                                                                                                                            |6          |LONG VARCHAR N&
+SYSSTATEMENTS                                                                                                                   |TYPE                                                                                                                            |4          |CHAR(1) NOT NU&
+SYSSTATEMENTS                                                                                                                   |USINGTEXT                                                                                                                       |9          |LONG VARCHAR   
+SYSSTATEMENTS                                                                                                                   |VALID                                                                                                                           |5          |BOOLEAN NOT NU&
+SYSSTATISTICS                                                                                                                   |COLCOUNT                                                                                                                        |7          |INTEGER NOT NU&
+SYSSTATISTICS                                                                                                                   |CREATIONTIMESTAMP                                                                                                               |4          |TIMESTAMP NOT &
+SYSSTATISTICS                                                                                                                   |REFERENCEID                                                                                                                     |2          |CHAR(36) NOT N&
+SYSSTATISTICS                                                                                                                   |STATID                                                                                                                          |1          |CHAR(36) NOT N&
+SYSSTATISTICS                                                                                                                   |STATISTICS                                                                                                                      |8          |org.apache.der&
+SYSSTATISTICS                                                                                                                   |TABLEID                                                                                                                         |3          |CHAR(36) NOT N&
+SYSSTATISTICS                                                                                                                   |TYPE                                                                                                                            |5          |CHAR(1) NOT NU&
+SYSSTATISTICS                                                                                                                   |VALID                                                                                                                           |6          |BOOLEAN NOT NU&
+SYSTABLES                                                                                                                       |LOCKGRANULARITY                                                                                                                 |5          |CHAR(1) NOT NU&
+SYSTABLES                                                                                                                       |SCHEMAID                                                                                                                        |4          |CHAR(36) NOT N&
+SYSTABLES                                                                                                                       |TABLEID                                                                                                                         |1          |CHAR(36) NOT N&
+SYSTABLES                                                                                                                       |TABLENAME                                                                                                                       |2          |VARCHAR(128) N&
+SYSTABLES                                                                                                                       |TABLETYPE                                                                                                                       |3          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |ACTIONSTMTID                                                                                                                    |11         |CHAR(36)       
+SYSTRIGGERS                                                                                                                     |CREATIONTIMESTAMP                                                                                                               |4          |TIMESTAMP NOT &
+SYSTRIGGERS                                                                                                                     |EVENT                                                                                                                           |5          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |FIRINGTIME                                                                                                                      |6          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |NEWREFERENCINGNAME                                                                                                              |17         |VARCHAR(128)   
+SYSTRIGGERS                                                                                                                     |OLDREFERENCINGNAME                                                                                                              |16         |VARCHAR(128)   
+SYSTRIGGERS                                                                                                                     |REFERENCEDCOLUMNS                                                                                                               |12         |org.apache.der&
+SYSTRIGGERS                                                                                                                     |REFERENCINGNEW                                                                                                                  |15         |BOOLEAN        
+SYSTRIGGERS                                                                                                                     |REFERENCINGOLD                                                                                                                  |14         |BOOLEAN        
+SYSTRIGGERS                                                                                                                     |SCHEMAID                                                                                                                        |3          |CHAR(36) NOT N&
+SYSTRIGGERS                                                                                                                     |STATE                                                                                                                           |8          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |TABLEID                                                                                                                         |9          |CHAR(36) NOT N&
+SYSTRIGGERS                                                                                                                     |TRIGGERDEFINITION                                                                                                               |13         |LONG VARCHAR   
+SYSTRIGGERS                                                                                                                     |TRIGGERID                                                                                                                       |1          |CHAR(36) NOT N&
+SYSTRIGGERS                                                                                                                     |TRIGGERNAME                                                                                                                     |2          |VARCHAR(128) N&
+SYSTRIGGERS                                                                                                                     |TYPE                                                                                                                            |7          |CHAR(1) NOT NU&
+SYSTRIGGERS                                                                                                                     |WHENSTMTID                                                                                                                      |10         |CHAR(36)       
+SYSVIEWS                                                                                                                        |CHECKOPTION                                                                                                                     |3          |CHAR(1) NOT NU&
+SYSVIEWS                                                                                                                        |COMPILATIONSCHEMAID                                                                                                             |4          |CHAR(36) NOT N&
+SYSVIEWS                                                                                                                        |TABLEID                                                                                                                         |1          |CHAR(36) NOT N&
+SYSVIEWS                                                                                                                        |VIEWDEFINITION                                                                                                                  |2          |LONG VARCHAR N&
+T                                                                                                                               |I                                                                                                                               |1          |INTEGER        
+T                                                                                                                               |S                                                                                                                               |2          |SMALLINT       
+ij> select TABLENAME, ISINDEX 
+from sys.systables t, sys.sysconglomerates c
+where t.TABLEID=c.TABLEID
+order by TABLENAME, ISINDEX;
+TABLENAME                                                                                                                       |ISIN&
+--------------------------------------------------------------------------------------------------------------------------------------
+SYSALIASES                                                                                                                      |false
+SYSALIASES                                                                                                                      |true 
+SYSALIASES                                                                                                                      |true 
+SYSALIASES                                                                                                                      |true 
+SYSCHECKS                                                                                                                       |false
+SYSCHECKS                                                                                                                       |true 
+SYSCOLUMNS                                                                                                                      |false
+SYSCOLUMNS                                                                                                                      |true 
+SYSCOLUMNS                                                                                                                      |true 
+SYSCONGLOMERATES                                                                                                                |false
+SYSCONGLOMERATES                                                                                                                |true 
+SYSCONGLOMERATES                                                                                                                |true 
+SYSCONGLOMERATES                                                                                                                |true 
+SYSCONSTRAINTS                                                                                                                  |false
+SYSCONSTRAINTS                                                                                                                  |true 
+SYSCONSTRAINTS                                                                                                                  |true 
+SYSCONSTRAINTS                                                                                                                  |true 
+SYSDEPENDS                                                                                                                      |false
+SYSDEPENDS                                                                                                                      |true 
+SYSDEPENDS                                                                                                                      |true 
+SYSDUMMY1                                                                                                                       |false
+SYSFILES                                                                                                                        |false
+SYSFILES                                                                                                                        |true 
+SYSFILES                                                                                                                        |true 
+SYSFOREIGNKEYS                                                                                                                  |false
+SYSFOREIGNKEYS                                                                                                                  |true 
+SYSFOREIGNKEYS                                                                                                                  |true 
+SYSKEYS                                                                                                                         |false
+SYSKEYS                                                                                                                         |true 
+SYSSCHEMAS                                                                                                                      |false
+SYSSCHEMAS                                                                                                                      |true 
+SYSSCHEMAS                                                                                                                      |true 
+SYSSTATEMENTS                                                                                                                   |false
+SYSSTATEMENTS                                                                                                                   |true 
+SYSSTATEMENTS                                                                                                                   |true 
+SYSSTATISTICS                                                                                                                   |false
+SYSSTATISTICS                                                                                                                   |true 
+SYSTABLES                                                                                                                       |false
+SYSTABLES                                                                                                                       |true 
+SYSTABLES                                                                                                                       |true 
+SYSTRIGGERS                                                                                                                     |false
+SYSTRIGGERS                                                                                                                     |true 
+SYSTRIGGERS                                                                                                                     |true 
+SYSTRIGGERS                                                                                                                     |true 
+SYSVIEWS                                                                                                                        |false
+SYSVIEWS                                                                                                                        |true 
+T                                                                                                                               |false
+ij> -- > 30 char table and column names
+create table t234567890123456789012345678901234567890
+(c23456789012345678901234567890 int);
+0 rows inserted/updated/deleted
+ij> select TABLENAME from sys.systables where length(TABLENAME) > 30;
+TABLENAME                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------
+T234567890123456789012345678901234567890                                                                                        
+ij> select COLUMNNAME from sys.syscolumns where {fn length(COLUMNNAME)} > 30;
+COLUMNNAME                                                                                                                      
+--------------------------------------------------------------------------------------------------------------------------------
+ij> -- primary key
+create table primkey1 (c1 int not null constraint prim1 primary key);
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+PRIM1                                                                                                                           |P
+ij> create table unnamed_primkey2 (c1 int not null primary key);
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+PRIM1                                                                                                                           |P
+ij> create table primkey3 (c1 int not null, c2 int not null, constraint prim3 primary key(c2, c1));
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+PRIM1                                                                                                                           |P
+PRIM3                                                                                                                           |P
+ij> create table uniquekey1 (c1 int not null constraint uniq1 unique);
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+PRIM1                                                                                                                           |P
+PRIM3                                                                                                                           |P
+UNIQ1                                                                                                                           |U
+ij> create table unnamed_uniquekey2 (c1 int not null unique);
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+PRIM1                                                                                                                           |P
+PRIM3                                                                                                                           |P
+UNIQ1                                                                                                                           |U
+ij> create table uniquekey3 (c1 int not null, c2 int not null, constraint uniq3 unique(c2, c1));
+0 rows inserted/updated/deleted
+ij> select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+CONSTRAINTNAME                                                                                                                  |&
+----------------------------------------------------------------------------------------------------------------------------------
+PRIM1                                                                                                                           |P
+PRIM3                                                                                                                           |P
+UNIQ1                                                                                                                           |U
+UNIQ3                                                                                                                           |U
+ij> -- views
+create view dummyview as select * from t, uniquekey3;
+0 rows inserted/updated/deleted
+ij> select tablename from sys.systables t, sys.sysviews v
+where t.tableid = v.tableid;
+TABLENAME                                                                                                                       
+--------------------------------------------------------------------------------------------------------------------------------
+DUMMYVIEW                                                                                                                       
+ij> -- RESOLVE - add selects from sysdepends when simplified
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> -- drop views
+drop view dummyview;
+0 rows inserted/updated/deleted
+ij> -- added for bug 3544. make sure we can ship columndatatype across the wire.
+-- (this test is also part of the rjconnmats suite and will run under rmijdbc).
+create table decimal_tab (dcol decimal(5,2), ncol numeric(5,2) default 1.0);
+0 rows inserted/updated/deleted
+ij> select columnname, columnnumber, columndatatype
+from sys.syscolumns
+where columnname IN ('DCOL', 'NCOL');
+COLUMNNAME                                                                                                                      |COLUMNNUMB&|COLUMNDATATYPE 
+------------------------------------------------------------------------------------------------------------------------------------------------------------
+DCOL                                                                                                                            |1          |DECIMAL(5,2)   
+NCOL                                                                                                                            |2          |NUMERIC(5,2)   
+ij> -- now just for fun lets select some other stuff from the system catalogs
+-- which is used by Cloudview and make sure we can ship it over the wire.
+create index decimal_tab_idx on decimal_tab(dcol);
+0 rows inserted/updated/deleted
+ij> -- index descriptor.
+select conglomeratename, descriptor
+from sys.sysconglomerates 
+where conglomeratename = 'DECIMAL_TAB_IDX';
+CONGLOMERATENAME                                                                                                                |DESCRIPTOR     
+------------------------------------------------------------------------------------------------------------------------------------------------
+DECIMAL_TAB_IDX                                                                                                                 |BTREE (1)      
+ij> create trigger t1 after update on decimal_tab for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> -- referenced columns.
+select triggername, referencedcolumns
+from sys.systriggers;
+TRIGGERNAME                                                                                                                     |REFERENCEDCOLU&
+------------------------------------------------------------------------------------------------------------------------------------------------
+T1                                                                                                                              |NULL           
+ij> -- drop tables
+drop table t;
+0 rows inserted/updated/deleted
+ij> drop table t234567890123456789012345678901234567890;
+0 rows inserted/updated/deleted
+ij> drop table primkey1;
+0 rows inserted/updated/deleted
+ij> drop table unnamed_primkey2;
+0 rows inserted/updated/deleted
+ij> drop table primkey3;
+0 rows inserted/updated/deleted
+ij> drop table uniquekey1;
+0 rows inserted/updated/deleted
+ij> drop table unnamed_uniquekey2;
+0 rows inserted/updated/deleted
+ij> drop table uniquekey3;
+0 rows inserted/updated/deleted
+ij> -- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/tempRestrictions.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/tempRestrictions.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+ij> -- Tests for temporary restrictions in the language
+-- create a table
+create table t1(c1 int);
+0 rows inserted/updated/deleted
+ij> -- No aggregates in the where clause
+-- (Someday will will allow correlated aggregates ...)
+select c1 from t1 where max(c1) = 1;
+ERROR 42903: Invalid use of an aggregate function.
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProperties.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProperties.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+Start testProperties to test property priority
+Testing cloudscape.properties Port 1528 
+org.apache.derby.drda.NetworkServerControl start 
+Successfully Connected
+org.apache.derby.drda.NetworkServerControl shutdown 
+Shutdown successful.
+Testing System properties  Port 1529 
+-----Dderby.drda.portNumber=1529 org.apache.derby.drda.NetworkServerControl start 
+Successfully Connected
+org.apache.derby.drda.NetworkServerControl shutdown -p 1529 
+Shutdown successful.
+Testing command line option. Port 1530
+org.apache.derby.drda.NetworkServerControl start -p 1530 
+Successfully Connected
+org.apache.derby.drda.NetworkServerControl shutdown -p 1530 
+Shutdown successful.
+End test

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,283 @@
+Test invalid DSS - wrong length
+PASSED
+Test invalid DSS - missing D0 
+PASSED
+Test invalid DSS - REPLY DSS
+PASSED
+First codepoint not EXCSAT
+PASSED
+Test EXTNAM too long
+PASSED
+Test non null SPVNAM
+PASSED
+Test too big SRVNAM
+PASSED
+Test too big SRVRLSLV
+PASSED
+Test too big SRVCLSNM
+PASSED
+Repeated manager levels with different values
+PASSED
+Missing required SECMEC on ACCSEC
+PASSED
+ACCSEC doesn't follow EXCSAT
+PASSED
+Test trying security mechanism we don't support
+PASSED
+Test trying too big on SECMEC
+PASSED
+Test trying too small on SECMEC
+PASSED
+Test non null SECMGRNM
+PASSED
+Test missing RDBNAM on ACCSEC
+PASSED
+Test specifying encrypted security mechanism without a security token
+PASSED
+Test specifying unencrypted security mechanism with a security token
+PASSED
+Test SECCHK not following after ACCSEC
+PASSED
+Test doing two tries for security mechanism
+PASSED
+Test missing SECMEC on SECCHK
+PASSED
+Test different SECMEC on SECCHK than on ACCSEC
+PASSED
+Test invalid length for RDBNAM
+PASSED
+Test different RDBNAM on SECCHK than on ACCSEC
+PASSED
+Test security token on SECCHK when not required
+PASSED
+Test missing USERID on SECCHK
+PASSED
+Test missing PASSWORD on SECCHK
+PASSED
+Test ACCRDB not following SECCHK
+PASSED
+Test missing RDBACCCL from ACCRDB
+PASSED
+Test missing CRRTKN
+PASSED
+Test too small value for RDBACCCL
+PASSED
+Test too large value for RDBACCCL
+PASSED
+Test invalid value for RDBACCCL
+PASSED
+Test missing PRDID
+PASSED
+Test missing TYPDEFNAM
+PASSED
+Test missing TYPDEFOVR
+PASSED
+Test bad  TYPDEFNAM
+PASSED
+Test codepoint not allowed in TYPDEFOVR
+PASSED
+Test too small value for CCSIDSBC
+PASSED
+Test too large value for CCSIDSBC
+PASSED
+Test too small value for CCSIDMBC
+PASSED
+Test too large value for CCSIDMBC
+PASSED
+Test too small value for CCSIDDBC
+PASSED
+Test too large value for CCSIDDBC
+PASSED
+Test unsupported single byte code page
+PASSED
+Test unsupported  mixed byte code page
+PASSED
+Test unsupported double byte code page
+PASSED
+Test sending second EXCSAT
+PASSED
+Test sending second EXCSAT with same manager but different level
+PASSED
+Test invalid CRRTKN
+PASSED
+Test too big PRDID
+PASSED
+Test too big TYPDEFNAM
+PASSED
+Test invalid TYPDEFNAM
+PASSED
+Test too big RDBALWUPD
+PASSED
+Test invalid RDBALWUPD
+PASSED
+Test valid RDBALWUPD
+PASSED
+Test second valid RDBALWUPD
+PASSED
+Test too big PRTDTA
+PASSED
+Test for bad length for RDBNAM in PKGNAMCSN
+PASSED
+Test for bad length for PKGID in PKGNAMCSN
+PASSED
+Test for invalid codepoint on EXCSQLIMM
+PASSED
+Test for invalid TypDefNam in EXCSQLIMM objects
+PASSED
+Test for a changed TYPDEF in EXCSQLIMM objects
+PASSED
+Test for missing CCSID in TYPDEFOVR in EXCSQLIMM objects
+PASSED
+Test for invalid value for RDBCMTOK in EXCSQLIMM
+PASSED
+Test for valid value for RDBCMTOK in EXCSQLIMM
+PASSED
+Test for valid false value for RDBCMTOK in EXCSQLIMM
+PASSED
+Test that we only send one RDBUPRM per transaction
+PASSED
+Test for missing PKGNAMCSN on OPNQRY
+PASSED
+Test for missing QRYBLKSZ on OPNQRY
+PASSED
+Test for wrong PKGNAMCSN on OPNQRY
+PASSED
+Test for too small size for QRYBLKSZ on OPNQRY
+PASSED
+Test for too large size for QRYBLKSZ on OPNQRY
+PASSED
+Test for too small value for QRYBLKSZ on OPNQRY
+PASSED
+Test for too large value for QRYBLKSZ on OPNQRY
+PASSED
+Test invalid value for QRYBLKCTL on OPNQRY
+PASSED
+Test invalid codepoint for OPNQRY
+PASSED
+Test too small value for QRYROWSET codepoint on CNTQRY
+PASSED
+Test too large value for QRYROWSET codepoint on CNTQRY
+PASSED
+Test invalid value for QRYROWSET on OPNQRY
+PASSED
+Test too large value for QRYRFRTBL codepoint on CNTQRY
+PASSED
+Test invalid value for QRYRFRTBL codepoint on CNTQRY
+PASSED
+Test missing PKGNAMCSN on CNTQRY
+PASSED
+Test missing QRYBLKSZ on CNTQRY
+PASSED
+Test missing QRYINSID on CNTQRY
+PASSED
+Test too small value for QRYINSID codepoint on CNTQRY
+PASSED
+Test too large value for QRYINSID codepoint on CNTQRY
+PASSED
+Test too small value for QRYROWNBR codepoint on CNTQRY
+PASSED
+Test too large value for QRYROWNBR codepoint on CNTQRY
+PASSED
+Test invalid value for QRYROWSET on CNTQRY
+PASSED
+Test too large value for QRYSCRORN codepoint on CNTQRY
+PASSED
+Test invalid value for QRYSCRORN on CNTQRY
+PASSED
+Test invalid codepoint on CNTQRY
+PASSED
+Test invalid object codepoint on CNTQRY
+PASSED
+Test OUTOVR codepoint on CNTQRY
+PASSED
+Test too large value for QRYRELSCR codepoint on CNTQRY
+PASSED
+Test invalid value for QRYRELSCR codepoint on CNTQRY
+PASSED
+Test too large value for QRYROWSNS codepoint on CNTQRY
+PASSED
+Test invalid value for QRYROWSNS codepoint on CNTQRY
+PASSED
+Test too large value for QRYBLKRST codepoint on CNTQRY
+PASSED
+Test invalid value for QRYBLKRST codepoint on CNTQRY
+PASSED
+Test too large value for QRYRTNDTA codepoint on CNTQRY
+PASSED
+Test invalid value for QRYRTNDTA codepoint on CNTQRY
+PASSED
+Test invalid value for QRYRFRTBL codepoint on CNTQRY
+PASSED
+Test too small value for NBRROW codepoint on CNTQRY
+PASSED
+Test too large value for NBRROW codepoint on CNTQRY
+PASSED
+Test too small value for MAXBLKEXT codepoint on CNTQRY
+PASSED
+Test too large value for MAXBLKEXT codepoint on CNTQRY
+PASSED
+Test too large value for RTNEXTDTA codepoint on CNTQRY
+PASSED
+Test invalid value for RTNEXTDTA codepoint on CNTQRY
+PASSED
+Test missing QRYINSID from CLSQRY
+PASSED
+Test invalid PKGNAMCSN on CLSQRY
+PASSED
+Test closing an already closed statement
+Removing second close until JCC issue with sending double close is resolve
+PASSED
+Test for too large value for OUTEXP in EXCSQLSTT
+PASSED
+Test for invalid OUTEXP in EXCSQLSTT
+PASSED
+Test for too small value for NBRROW in EXCSQLSTT
+PASSED
+Test for too large value for NBRROW in EXCSQLSTT
+PASSED
+Test for invalid QRYBLKSZ in EXCSQLSTT
+PASSED
+Test for too small value for MAXRSLCNT in EXCSQLSTT
+PASSED
+Test for too large value for MAXRSLCNT in EXCSQLSTT
+PASSED
+Test for too small value for MAXBLKEXT in EXCSQLSTT
+PASSED
+Test for too large value for MAXBLKEXT in EXCSQLSTT
+PASSED
+Test for invalid value for RDBCMTOK in EXCSQLSTT
+PASSED
+Test for too large value for OUTOVROPT in EXCSQLSTT
+PASSED
+Test for invalid value for OUTOVROPT in EXCSQLSTT
+PASSED
+Test for invalid value for QRYROWSET in EXCSQLSTT
+PASSED
+Test for invalid codepoint in EXCSQLSTT
+PASSED
+Test for missing PKGNAMCSN in EXCSQLSTT
+PASSED
+Test for too large value for RTNSQLDA in PRPSQLSTT
+PASSED
+Test for invalid value for RTNSQLDA in PRPSQLSTT
+PASSED
+Test for too large value for TYPSQLDA in PRPSQLSTT
+PASSED
+Test for invalid value for TYPSQLDA in PRPSQLSTT
+PASSED
+Test for invalid codepoint in PRPSQLSTT
+PASSED
+Test for missing required SQLSTT in PRPSQLSTT
+PASSED
+Test for invalid SQLATTR in PRPSQLSTT
+PASSED
+Test for missing PKGNAMCSN in DSCSQLSTT
+PASSED
+Test for too large value for TYPSQLDA in DSCSQLSTT
+PASSED
+Test for invalid value for TYPSQLDA in DSCSQLSTT
+PASSED
+Test for invalid codepoint in DSCSQLSTT
+PASSED
+Test for non-existant prepared statement in DSCSQLSTT
+PASSED

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testconnection.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testconnection.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,18 @@
+Testing testconnection
+org.apache.derby.drda.NetworkServerControl ping 
+Connection obtained for host: localhost, port number 1527.
+org.apache.derby.drda.NetworkServerControl ping -h localhost -p 1527 
+Connection obtained for host: localhost, port number 1527.
+org.apache.derby.drda.NetworkServerControl ping -h notthere -p 1527 
+Unable to find host: notthere.
+org.apache.derby.drda.NetworkServerControl ping -h ihave-inmyname.com -p 1527 
+Unable to find host: ihave-inmyname.com.
+org.apache.derby.drda.NetworkServerControl ping -h localhost 
+Connection obtained for host: localhost, port number 1527.
+org.apache.derby.drda.NetworkServerControl ping -h localhost -p 9393 
+Could not connect to Derby Network Server on host localhost, port 9393.
+org.apache.derby.drda.NetworkServerControl ping -p 1527 
+Connection obtained for host: localhost, port number 1527.
+org.apache.derby.drda.NetworkServerControl ping -p 9393 
+Could not connect to Derby Network Server on host localhost, port 9393.
+End test

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testij.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/testij.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,38 @@
+Testing various ij connections and comments in front of selects
+org.apache.derby.tools.ij extin/testij.sql 
+ij> driver 'com.ibm.db2.jcc.DB2Driver';
+ij> --Bug 4632  Make the db italian to make sure string selects  are working
+connect 'jdbc:derby:net://localhost:1527/wombat;create=true;territory=it:retrieveMessagesFromServerOnGetMessage=true;' USER 'dbadmin' PASSWORD 'dbadmin';
+ij> connect 'jdbc:derby:net://localhost:1527/wombat' USER 'dbadmin' PASSWORD 'dbadbmin';
+ij(CONNECTION1)> -- this is a comment, a comment in front of a select should not cause an error
+select * from sys.systables where 1=0;
+TABLEID |TABLENAME |& |SCHEMAID |&
+-----
+0 rows selected
+ij(CONNECTION1)> -- this is a comment, a comment in front of a values clauses should not cause an error
+values(1);
+1          
+-----
+1          
+1 row selected
+ij(CONNECTION1)> -- Try some URL attributes
+disconnect all;
+ij> connect 'jdbc:derby:net://localhost:1527/junk;create=true:retrieveMessagesFromServerOnGetMessage=true;' USER 'dbadmin' PASSWORD 'dbadbmin';
+ij> select * from APP.notthere;
+ERROR 42X05: Table 'APP.NOTTHERE' does not exist.
+ij> -- examples from the docs
+connect 'jdbc:derby:net://localhost:1527/wombat;create=true:user=judy;password=judy;retrieveMessagesFromServerOnGetMessage=true;';
+ij(CONNECTION1)> connect 'jdbc:derby:net://localhost:1527/"./wombat":user=judy;password=judy;retrieveMessagesFromServerOnGetMessage=true;';
+ij(CONNECTION2)> connect 'jdbc:derby:net://localhost:1527/toursDB:retrieveMessagesFromServerOnGetMessage=true;';
+ERROR (no SQLState): null userid not supported
+ij(CONNECTION2)> connect 'jdbc:derby:net://localhost:1527/toursDB:retrieveMessagesFromServerOnGetMessage=true;' USER 'dbadmin' PASSWORD 'dbadbmin';
+ERROR 08004: The application server rejected establishment of the connection.  An attempt was made to access a database, toursDB, which was not found.
+ij(CONNECTION2)> connect 'jdbc:derby:net://localhost:1527/wombat' USER 'APP' PASSWORD 'APP';
+ij(CONNECTION3)> connect  'jdbc:derby:net://localhost:1527/my-db-name;create=true:user=usr;password=pwd;retrieveMessagesFromServerOnGetMessage=true;';
+ij(CONNECTION4)> connect 'jdbc:derby:net://localhost:1527/my-db-name;upgrade=true:user=usr;password=pwd;retrieveMessagesFromServerOnGetMessage=true;';
+ij(CONNECTION5)> connect 'jdbc:derby:net://localhost:1527/my-db-name;shutdown=true:user=usr;password=pwd;'
+----- Quoted db and attributes
+connect 'jdbc:derby:net://localhost:1527/"./my-dbname;create=true":user=usr;password=pwd;';
+ERROR 08006: DB2 SQL error: SQLCODE: -1, SQLSTATE: 08006, SQLERRMC: my-db-name08006.DDatabase 'my-db-name' shutdown.((server log XXX)
+ij(CONNECTION5)> connect 'jdbc:derby:net://localhost:1527/"./my-dbname;create=true":user=usr;password=pwd;retrieveMessagesFromServerOnGetMessage=true;';
+ij(CONNECTION6)> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/timeslice.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/timeslice.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,35 @@
+Testing timeslice
+org.apache.derby.drda.NetworkServerControl timeslice 0 
+Time slice changed to 0.
+PASS - time slice value, 0 is correct
+org.apache.derby.drda.NetworkServerControl timeslice -1 -h localhost -p 1527 
+Time slice changed to 0.
+PASS - time slice value, 0 is correct
+org.apache.derby.drda.NetworkServerControl timeslice -12 
+Invalid value, -12, for timeslice.
+Usage: NetworkServerControl <commands> 
+Commands:
+start [-h <host>] [-p <portnumber>]
+shutdown [-h <host>][-p <portnumber>]
+ping [-h <host>][-p <portnumber>]
+sysinfo [-h <host>][-p <portnumber>]
+runtimeinfo [-h <host>][-p <portnumber>]
+logconnections {on |off}[-h <host>][-p <portnumber>]
+maxthreads <max>[-h <host>][-p <portnumber>]
+timeslice <milliseconds>[-h <host>][-p <portnumber>]
+trace {on |off} [-s <session id>][-h <host>][-p <portnumber>]
+tracedirectory <traceDirectory>[-h <host>][-p <portnumber>]
+PASS - time slice value, 0 is correct
+org.apache.derby.drda.NetworkServerControl timeslice 2147483647 
+Time slice changed to 2147483647.
+PASS - time slice value, 2147483647 is correct
+org.apache.derby.drda.NetworkServerControl timeslice 9000 
+Time slice changed to 9000.
+PASS - time slice value, 9000 is correct
+PASS - time slice value, 0 is correct
+PASS - time slice value, 0 is correct
+Expecting exception:DRDA_InvalidValue.U:Invalid value, -2, for timeslice.
+PASS - time slice value, 0 is correct
+PASS - time slice value, 2147483647 is correct
+PASS - time slice value, 9000 is correct
+End test

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerBeforeTrig.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerBeforeTrig.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,103 @@
+ij> --
+-- Consolidated BEFORE trigger tests from all trigger tests.
+-- The following tests moved from TriggerValidate.sql to here.
+create table x (x int, constraint ck check (x > 0));
+0 rows inserted/updated/deleted
+ij> create table unrelated (x int, constraint ckunrelated check (x > 0));
+0 rows inserted/updated/deleted
+ij> create index x on x(x);
+0 rows inserted/updated/deleted
+ij> ------------------------------------
+-- DDL
+------------------------------------
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop table x;
+ERROR 42X01: Syntax error: Encountered "drop" at line 4, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop index x;
+ERROR 42X01: Syntax error: Encountered "drop" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql alter table x add column y int;
+ERROR 42X01: Syntax error: Encountered "alter" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql alter table x add constraint ck2 check(x > 0);
+ERROR 42X01: Syntax error: Encountered "alter" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql alter table x drop constraint ck;
+ERROR 42X01: Syntax error: Encountered "alter" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql create index x2 on x (x);
+ERROR 42X01: Syntax error: Encountered "create" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql create index xunrelated on unrelated(x);
+ERROR 42X01: Syntax error: Encountered "create" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop index xunrelated;
+ERROR 42X01: Syntax error: Encountered "drop" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop trigger tbad;
+ERROR 42X01: Syntax error: Encountered "drop" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql 
+	create trigger tbad2 NO CASCADE before insert on x for each statement mode db2sql values 1;
+ERROR 42X01: Syntax error: Encountered "create" at line 2, column 9.
+ij> create trigger tokv1 NO CASCADE before insert on x for each statement mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> insert into x values 1;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+1          
+ij> drop trigger tokv1;
+0 rows inserted/updated/deleted
+ij> ------------------------------------
+-- MISC
+------------------------------------
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql set isolation to rr;
+ERROR 42X01: Syntax error: Encountered "set" at line 4, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql lock table x in share mode;
+ERROR 42X01: Syntax error: Encountered "lock" at line 1, column 82.
+ij> create trigger tbad NO CASCADE before insert on x for each statement mode db2sql 
+	call APP.SOMEPROC();
+ERROR 42X01: Syntax error: Encountered "call" at line 2, column 9.
+ij> ------------------------------------
+-- DML, cannot perform dml on same
+-- table for before trigger, of for
+-- after
+------------------------------------
+-- before
+create trigger tbadX NO CASCADE before insert on x for each statement mode db2sql insert into x values 1;
+ERROR 42Z9D: 'INSERT' statements are not allowed in 'BEFORE' triggers.
+ij> create trigger tbadX NO CASCADE before insert on x for each statement mode db2sql delete from x;
+ERROR 42Z9D: 'DELETE' statements are not allowed in 'BEFORE' triggers.
+ij> create trigger tbadX NO CASCADE before insert on x for each statement mode db2sql update x set x = x;
+ERROR 42Z9D: 'UPDATE' statements are not allowed in 'BEFORE' triggers.
+ij> -- Following tests moved here from triggerRefClause, since these use BEFORE triggers
+-- syntax
+create trigger t1 NO CASCADE before update on x referencing badtoken as oldtable for each row mode db2sql values 1;
+ERROR 42X01: Syntax error: Encountered "badtoken" at line 3, column 61.
+ij> create trigger t1 NO CASCADE before update on x referencing old as oldrow new for each row mode db2sql values 1;
+ERROR 42X01: Syntax error: Encountered "for" at line 1, column 79.
+ij> -- dup names
+create trigger t1 NO CASCADE before update on x referencing old as oldrow new as newrow old as oldrow2 
+	for each row mode db2sql values 1;
+ERROR 42Y93: Illegal REFERENCING clause: only one name is permitted for each type of transition variable/table.
+ij> create trigger t1 NO CASCADE before update on x referencing new as newrow new as newrow2 old as oldrow2 
+	for each row mode db2sql values 1;
+ERROR 42Y93: Illegal REFERENCING clause: only one name is permitted for each type of transition variable/table.
+ij> -- mismatch: row->for each statement mode db2sql, table->for each row
+create trigger t1 NO CASCADE before update on x referencing new_table as newtab for each row mode db2sql values 1;
+ERROR 42Y92: ROW triggers may only reference row transition variables/tables.
+ij> create trigger t1 NO CASCADE before update on x referencing new as newrow for each statement mode db2sql values 1;
+ERROR 42Y92: STATEMENT triggers may only reference table transition variables/tables.
+ij> -- same as above, but using old
+create trigger t1 NO CASCADE before update on x referencing old_table as old for each row mode db2sql select * from old;
+ERROR 42Y92: ROW triggers may only reference row transition variables/tables.
+ij> create trigger t1 NO CASCADE before update on x referencing old_table as old for each statement mode db2sql values old.x;
+ERROR 42Y92: BEFORE triggers may only reference row transition variables/tables.
+ij> -- old and new cannot be used once they have been redefined
+create trigger t1 NO CASCADE before update on x referencing old_table as oldtable for each statement mode db2sql select * from old;
+ERROR 42Y92: BEFORE triggers may only reference row transition variables/tables.
+ij> create trigger t1 NO CASCADE before update on x referencing old as oldtable for each row mode db2sql values old.x;
+ERROR 42X04: Column 'OLD.X' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OLD.X' is not a column in the target table.
+ij> -- try some other likely uses
+create table y (x int);
+0 rows inserted/updated/deleted
+ij> create trigger t1 NO CASCADE before insert on x referencing new_table as newrowtab for each statement mode db2sql insert into y select x from newrowtab;
+ERROR 42Z9D: 'INSERT' statements are not allowed in 'BEFORE' triggers.
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1234 @@
+ij> --
+-- General trigger test
+--
+create function printTriggerInfo() returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.printTriggerInfo';
+0 rows inserted/updated/deleted
+ij> create function triggerFiresMin(s varchar(128)) returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.triggerFiresMinimal';
+0 rows inserted/updated/deleted
+ij> create function triggerFires(s varchar(128)) returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.triggerFires';
+0 rows inserted/updated/deleted
+ij> create function begInvRefToTECTest() returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.beginInvalidRefToTECTest';
+0 rows inserted/updated/deleted
+ij> create procedure notifyDMLDone() PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.notifyDMLDone';
+0 rows inserted/updated/deleted
+ij> drop table x;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'X' because it does not exist.
+ij> create table x (x int, y int, z int, constraint ck1 check (x > 0));
+0 rows inserted/updated/deleted
+ij> create view v as select * from x;
+0 rows inserted/updated/deleted
+ij> -- ok
+create trigger t1 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> -- trigger already exists
+create trigger t1 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+ERROR X0Y32: Trigger 'T1' already exists in Schema 'APP'.
+ij> -- trigger already exists
+create trigger app.t1 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+ERROR X0Y32: Trigger 'T1' already exists in Schema 'APP'.
+ij> -- make sure system tables look as we expect
+select cast(triggername as char(10)), event, firingtime, type, state, referencedcolumns from sys.systriggers;
+1         |&|&|&|&|REFERENCEDCOLU&
+----------------------------------
+T1        |U|B|R|E|(1,2)          
+ij> select cast(triggername as char(10)), text from sys.systriggers t, sys.sysstatements s 
+		where s.stmtid = t.actionstmtid;
+1         |TEXT                                                                                                                            
+-------------------------------------------------------------------------------------------------------------------------------------------
+T1        |values 1                                                                                                                        
+ij> select cast(triggername as char(10)), tablename from sys.systriggers t, sys.systables tb
+		where t.tableid = tb.tableid;
+1         |TABLENAME                                                                                                                       
+-------------------------------------------------------------------------------------------------------------------------------------------
+T1        |X                                                                                                                               
+ij> values SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', 'SYSTRIGGERS');
+1          
+-----------
+1          
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> -- not in sys schema
+create trigger sys.tr NO CASCADE before insert on x for each row mode db2sql values 1;
+ERROR 42X62: 'CREATE TRIGGER' is not allowed in the 'SYS' schema.
+ij> -- not on table in sys schema
+create trigger tr NO CASCADE before insert on sys.systables for each row mode db2sql values 1;
+ERROR X0Y56: 'CREATE TRIGGER' is not allowed on the System table 'SYS.SYSTABLES'.
+ij> -- duplicate columns, not allowed
+create trigger tr NO CASCADE before update of x, x on x for each row mode db2sql values 1;
+ERROR 42Y40: 'X' appears multiple times in the UPDATE OF column list for trigger 'TR'.
+ij> -- no params in column list
+create trigger tr NO CASCADE before update of x, ? on x for each row mode db2sql values 1;
+ERROR 42X01: Syntax error: Encountered "?" at line 2, column 50.
+ij> -- invalid column
+create trigger tr NO CASCADE before update of doesnotexist on x for each row mode db2sql values 1;
+ERROR 42X14: 'DOESNOTEXIST' is not a column in table or VTI 'X'.
+ij> -- not on view
+create trigger tr NO CASCADE before insert on v for each row mode db2sql values 1;
+ERROR 42Y62: 'CREATE TRIGGER' is not allowed on 'APP.V' because it is a view.
+ij> -- error to use table qualifier
+create trigger tr NO CASCADE before update of x.x on x for each row mode db2sql values 1;
+ERROR 42X01: Syntax error: Encountered "." at line 2, column 48.
+ij> -- error to use schema.table qualifier
+create trigger tr NO CASCADE before update of app.x.x on x for each row mode db2sql values 1;
+ERROR 42X01: Syntax error: Encountered "." at line 2, column 50.
+ij> -- no params in trigger action
+-- bad
+create trigger tr NO CASCADE before delete on x for each row mode db2sql select * from x where x = ?;
+ERROR 42Y27: Parameters are not allowed in the trigger action.
+ij> create trigger stmttrigger NO CASCADE before delete on x for each statement mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> select triggername, type from sys.systriggers where triggername = 'STMTTRIGGER';
+TRIGGERNAME                                                                                                                     |&
+----------------------------------------------------------------------------------------------------------------------------------
+STMTTRIGGER                                                                                                                     |S
+ij> drop trigger stmttrigger;
+0 rows inserted/updated/deleted
+ij> create trigger rowtrigger NO CASCADE before delete on x for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> select triggername, type from sys.systriggers where triggername = 'ROWTRIGGER';
+TRIGGERNAME                                                                                                                     |&
+----------------------------------------------------------------------------------------------------------------------------------
+ROWTRIGGER                                                                                                                      |R
+ij> drop trigger rowtrigger;
+0 rows inserted/updated/deleted
+ij> -- fool around with depedencies
+-- CREATE TRIGGER
+create trigger t2 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> -- CREATE CONSTRAINT
+alter table x add constraint ck2 check(x > 0);
+0 rows inserted/updated/deleted
+ij> -- DROP VIEW
+drop view v;
+0 rows inserted/updated/deleted
+ij> -- CREATE VIEW
+create view v as select * from x;
+0 rows inserted/updated/deleted
+ij> -- CREATE INDEX
+create index ix on x(x);
+0 rows inserted/updated/deleted
+ij> -- DROP TRIGGER: to the other types we have here
+drop trigger t2;
+0 rows inserted/updated/deleted
+ij> -- DROP INDEX
+drop index ix;
+0 rows inserted/updated/deleted
+ij> -- DROP CONSTRAINT
+alter table x drop constraint ck2;
+0 rows inserted/updated/deleted
+ij> -- MAKE SURE TRIGGER SPS IS RECOMPILED IF TABLE IS ALTERED.
+create table y (x int, y int, z int);
+0 rows inserted/updated/deleted
+ij> create trigger tins after insert on x referencing new_table as newtab for each statement mode db2sql insert into y select x, y, z from newtab;
+0 rows inserted/updated/deleted
+ij> insert into x values (1, 1, 1);
+1 row inserted/updated/deleted
+ij> alter table x add column w int default 100;
+0 rows inserted/updated/deleted
+ij> alter table x add constraint nonulls check (w is not null);
+0 rows inserted/updated/deleted
+ij> insert into x values (2, 2, 2, 2);
+1 row inserted/updated/deleted
+ij> select * from y;
+X          |Y          |Z          
+-----------------------------------
+1          |1          |1          
+2          |2          |2          
+ij> drop trigger tins;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> -- prove that by dropping the underlying table, we have dropped the trigger
+-- first, lets create a few other triggers
+create trigger t2 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> create trigger t3 after update of x,y on x for each statement mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> create trigger t4 after delete on x for each statement mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> select cast(triggername as char(10)), tablename from sys.systriggers t, sys.systables  tb
+		where t.tableid = tb.tableid order by 1;
+1         |TABLENAME                                                                                                                       
+-------------------------------------------------------------------------------------------------------------------------------------------
+T2        |X                                                                                                                               
+T3        |X                                                                                                                               
+T4        |X                                                                                                                               
+ij> drop view v;
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> select cast(triggername as char(10)), tablename from sys.systriggers t, sys.systables  tb
+		where t.tableid = tb.tableid order by 1;
+1         |TABLENAME                                                                                                                       
+-------------------------------------------------------------------------------------------------------------------------------------------
+ij> --
+-- schema testing
+--
+create table x (x int, y int, z int);
+0 rows inserted/updated/deleted
+ij> create schema test;
+0 rows inserted/updated/deleted
+ij> create trigger test.t1 NO CASCADE before delete on x for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> set schema test;
+0 rows inserted/updated/deleted
+ij> create trigger t2 NO CASCADE before delete on app.x for each row mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> select schemaname, triggername from sys.systriggers t, sys.sysschemas s
+	where s.schemaid = t.schemaid;
+SCHEMANAME                                                                                                                      |TRIGGERNAME                                                                                                                     
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+TEST                                                                                                                            |T1                                                                                                                              
+TEST                                                                                                                            |T2                                                                                                                              
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> -- fails
+drop schema test restrict;
+ERROR X0Y54: Schema 'TEST' cannot be dropped because it is not empty.
+ij> drop trigger test.t2;
+0 rows inserted/updated/deleted
+ij> -- fails
+drop schema test restrict;
+ERROR X0Y54: Schema 'TEST' cannot be dropped because it is not empty.
+ij> set schema test;
+0 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> set schema app;
+0 rows inserted/updated/deleted
+ij> -- ok this time
+drop schema test restrict;
+0 rows inserted/updated/deleted
+ij> --
+-- Test the information in the trigger information context
+--
+create table t (x int, y int, c char(1));
+0 rows inserted/updated/deleted
+ij> create trigger t1 NO CASCADE before insert on t for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> insert into t values (1,1,'1');
+TriggerInformation
+------------------
+getEventStatetmentText(): insert into t values (1,1,'1')
+getEventType(): INSERT
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	X:	true
+	Y:	true
+	C:	true
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{1,1,1}
+1 row inserted/updated/deleted
+ij> delete from t;
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> create trigger t1 after insert on t for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> insert into t values (1,1,'1');
+TriggerInformation
+------------------
+getEventStatetmentText(): insert into t values (1,1,'1')
+getEventType(): INSERT
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	X:	true
+	Y:	true
+	C:	true
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{1,1,1}
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> create trigger t1 NO CASCADE before update on t for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> update t set x = 2;
+TriggerInformation
+------------------
+getEventStatetmentText(): update t set x = 2
+getEventType(): UPDATE
+getModifiedColumns(): {X}
+wasColumnModified() on each column
+	X:	true
+	Y:	false
+	C:	false
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+	{1,1,1}
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,1,1}
+1 row inserted/updated/deleted
+ij> update t set y = 2, c = '2';
+TriggerInformation
+------------------
+getEventStatetmentText(): update t set y = 2, c = '2'
+getEventType(): UPDATE
+getModifiedColumns(): {Y, C}
+wasColumnModified() on each column
+	X:	false
+	Y:	true
+	C:	true
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+	{2,1,1}
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> create trigger t1 after update on t for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> update t set x = 3;
+TriggerInformation
+------------------
+getEventStatetmentText(): update t set x = 3
+getEventType(): UPDATE
+getModifiedColumns(): {X}
+wasColumnModified() on each column
+	X:	true
+	Y:	false
+	C:	false
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{3,2,2}
+1 row inserted/updated/deleted
+ij> update t set y = 3, c = '3';
+TriggerInformation
+------------------
+getEventStatetmentText(): update t set y = 3, c = '3'
+getEventType(): UPDATE
+getModifiedColumns(): {Y, C}
+wasColumnModified() on each column
+	X:	false
+	Y:	true
+	C:	true
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+	{3,2,2}
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{3,3,3}
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> create trigger t1 no cascade before delete on t for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> delete from t;
+TriggerInformation
+------------------
+getEventStatetmentText(): delete from t
+getEventType(): DELETE
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	X:	true
+	Y:	true
+	C:	true
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+	{3,3,3}
+AFTER RESULT SET
+<NULL>
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> insert into t values(3,3,'3');
+1 row inserted/updated/deleted
+ij> create trigger t1 after delete on t for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> delete from t;
+TriggerInformation
+------------------
+getEventStatetmentText(): delete from t
+getEventType(): DELETE
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	X:	true
+	Y:	true
+	C:	true
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+	{3,3,3}
+AFTER RESULT SET
+<NULL>
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> --
+-- Test trigger firing order
+--
+create trigger t1 after insert on t for each row mode db2sql
+	values app.triggerFiresMin('3rd');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after insert on t for each statement mode db2sql
+	values app.triggerFiresMin('1st');
+0 rows inserted/updated/deleted
+ij> create trigger t3 no cascade before insert on t for each row mode db2sql
+	values app.triggerFiresMin('4th');
+0 rows inserted/updated/deleted
+ij> create trigger t4 after insert on t for each row mode db2sql
+	values app.triggerFiresMin('2nd');
+0 rows inserted/updated/deleted
+ij> create trigger t5 no cascade before insert on t for each statement mode db2sql
+	values app.triggerFiresMin('5th');
+0 rows inserted/updated/deleted
+ij> insert into t values (1,1,'1');
+TRIGGER: <4th>
+TRIGGER: <5th>
+TRIGGER: <3rd>
+TRIGGER: <1st>
+TRIGGER: <2nd>
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> drop trigger t3;
+0 rows inserted/updated/deleted
+ij> drop trigger t4;
+0 rows inserted/updated/deleted
+ij> drop trigger t5;
+0 rows inserted/updated/deleted
+ij> -- try multiple values, make sure result sets don't get screwed up
+-- this time we'll print out result sets
+create trigger t1 after insert on t for each row mode db2sql
+	values app.triggerFires('3rd');
+0 rows inserted/updated/deleted
+ij> create trigger t2 no cascade before insert on t for each statement mode db2sql
+	values app.triggerFires('1st');
+0 rows inserted/updated/deleted
+ij> create trigger t3 after insert on t for each row mode db2sql
+	values app.triggerFires('4th');
+0 rows inserted/updated/deleted
+ij> create trigger t4 no cascade before insert on t for each row mode db2sql
+	values app.triggerFires('2nd');
+0 rows inserted/updated/deleted
+ij> create trigger t5 after insert on t for each statement mode db2sql
+	values app.triggerFires('5th');
+0 rows inserted/updated/deleted
+ij> insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4');
+TRIGGER: <1st> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+	{3,3,3}
+	{4,4,4}
+TRIGGER: <2nd> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+TRIGGER: <2nd> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{3,3,3}
+TRIGGER: <2nd> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{4,4,4}
+TRIGGER: <3rd> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+TRIGGER: <3rd> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{3,3,3}
+TRIGGER: <3rd> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{4,4,4}
+TRIGGER: <4th> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+TRIGGER: <4th> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{3,3,3}
+TRIGGER: <4th> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{4,4,4}
+TRIGGER: <5th> on statement insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4')
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+	{2,2,2}
+	{3,3,3}
+	{4,4,4}
+3 rows inserted/updated/deleted
+ij> delete from t;
+4 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> drop trigger t3;
+0 rows inserted/updated/deleted
+ij> drop trigger t4;
+0 rows inserted/updated/deleted
+ij> drop trigger t5;
+0 rows inserted/updated/deleted
+ij> --
+-- Test firing on empty change sets, 
+-- statement triggers fire, row triggers
+-- do not.
+--
+create trigger t1 after insert on t for each row mode db2sql
+	values app.triggerFires('ROW: empty insert, should NOT fire');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after insert on t for each statement mode db2sql
+	values app.triggerFires('STATEMENT: empty insert, ok');
+0 rows inserted/updated/deleted
+ij> insert into t select * from t;
+TRIGGER: <STATEMENT: empty insert, ok> on statement insert into t select * from t
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+0 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> create trigger t1 after update on t for each row mode db2sql
+	values app.triggerFires('ROW: empty update, should NOT fire');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after update on t for each statement mode db2sql
+	values app.triggerFires('STATEMENT: empty update, ok');
+0 rows inserted/updated/deleted
+ij> update t set x = x;
+TRIGGER: <STATEMENT: empty update, ok> on statement update t set x = x
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+AFTER RESULT SET
+	 X,Y,C
+	 - - -
+0 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> create trigger t1 after delete on t for each row mode db2sql
+	values app.triggerFires('ROW: empty delete, should NOT fire');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after delete on t for each statement mode db2sql
+	values app.triggerFires('STATEMENT: empty delete, ok');
+0 rows inserted/updated/deleted
+ij> delete from t;
+TRIGGER: <STATEMENT: empty delete, ok> on statement delete from t
+BEFORE RESULT SET
+	 X,Y,C
+	 - - -
+AFTER RESULT SET
+<NULL>
+0 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> --
+-- After alter table, should pick up the new columns
+--
+create table talt(c1 int);
+0 rows inserted/updated/deleted
+ij> create trigger tins after insert on talt for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> create trigger tdel no cascade before delete on talt for each row mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> create trigger tupd after update on talt for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> insert into talt values (1);
+TriggerInformation
+------------------
+getEventStatetmentText(): insert into talt values (1)
+getEventType(): INSERT
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	C1:	true
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 C1
+	 --
+	{1}
+1 row inserted/updated/deleted
+ij> alter table talt add column cnew int default null;
+0 rows inserted/updated/deleted
+ij> select * from talt;
+C1         |CNEW       
+-----------------------
+1          |NULL       
+ij> insert into talt values (2,2);
+TriggerInformation
+------------------
+getEventStatetmentText(): insert into talt values (2,2)
+getEventType(): INSERT
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	C1:	true
+	CNEW:	true
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 C1,CNEW
+	 -- ----
+	{2,2}
+1 row inserted/updated/deleted
+ij> delete from talt;
+TriggerInformation
+------------------
+getEventStatetmentText(): delete from talt
+getEventType(): DELETE
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	C1:	true
+	CNEW:	true
+BEFORE RESULT SET
+	 C1,CNEW
+	 -- ----
+	{1,null}
+AFTER RESULT SET
+<NULL>
+TriggerInformation
+------------------
+getEventStatetmentText(): delete from talt
+getEventType(): DELETE
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	C1:	true
+	CNEW:	true
+BEFORE RESULT SET
+	 C1,CNEW
+	 -- ----
+	{2,2}
+AFTER RESULT SET
+<NULL>
+2 rows inserted/updated/deleted
+ij> insert into talt values (3,3);
+TriggerInformation
+------------------
+getEventStatetmentText(): insert into talt values (3,3)
+getEventType(): INSERT
+getModifiedColumns(): { <all> }
+wasColumnModified() on each column
+	C1:	true
+	CNEW:	true
+BEFORE RESULT SET
+<NULL>
+AFTER RESULT SET
+	 C1,CNEW
+	 -- ----
+	{3,3}
+1 row inserted/updated/deleted
+ij> update talt set cnew = 666;
+TriggerInformation
+------------------
+getEventStatetmentText(): update talt set cnew = 666
+getEventType(): UPDATE
+getModifiedColumns(): {CNEW}
+wasColumnModified() on each column
+	C1:	false
+	CNEW:	true
+BEFORE RESULT SET
+	 C1,CNEW
+	 -- ----
+	{3,3}
+AFTER RESULT SET
+	 C1,CNEW
+	 -- ----
+	{3,666}
+1 row inserted/updated/deleted
+ij> drop trigger tins;
+0 rows inserted/updated/deleted
+ij> drop trigger tdel;
+0 rows inserted/updated/deleted
+ij> drop trigger tupd;
+0 rows inserted/updated/deleted
+ij> -- make sure update w/ columns doesn't pick up new col
+create trigger tupd after update of c1 on talt for each statement mode db2sql
+	values app.printTriggerInfo();
+0 rows inserted/updated/deleted
+ij> alter table talt add column cnew2 int default null;
+0 rows inserted/updated/deleted
+ij> insert into talt values (1,1,1);
+1 row inserted/updated/deleted
+ij> update talt set cnew2 = 666;
+2 rows inserted/updated/deleted
+ij> -- clean up
+drop table talt;
+0 rows inserted/updated/deleted
+ij> --
+-- Trigger ordering wrt constraints
+--
+create table p (x int not null, constraint pk primary key (x));
+0 rows inserted/updated/deleted
+ij> insert into p values 1,2,3;
+3 rows inserted/updated/deleted
+ij> create table f (x int, 
+		constraint ck check (x > 0),
+		constraint fk foreign key (x) references p);
+0 rows inserted/updated/deleted
+ij> create trigger t1 no cascade before insert on f for each row mode db2sql
+	values app.triggerFiresMin('BEFORE constraints');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after insert on f for each row mode db2sql
+	values app.triggerFiresMin('AFTER constraints');
+0 rows inserted/updated/deleted
+ij> -- INSERT
+-- fails, ck violated
+insert into f values 0;
+TRIGGER: <BEFORE constraints>
+ERROR 23513: The check constraint 'CK' was violated while performing an INSERT or UPDATE on table 'APP.F'.
+ij> alter table f drop constraint ck;
+0 rows inserted/updated/deleted
+ij> -- fails, fk violated
+insert into f values 0;
+TRIGGER: <BEFORE constraints>
+ERROR 23503: INSERT on table 'F' caused a violation of foreign key constraint 'FK' for key (0).  The statement has been rolled back.
+ij> alter table f drop foreign key fk;
+0 rows inserted/updated/deleted
+ij> -- ok
+insert into f values 0;
+TRIGGER: <BEFORE constraints>
+TRIGGER: <AFTER constraints>
+1 row inserted/updated/deleted
+ij> delete from f;
+1 row inserted/updated/deleted
+ij> alter table f add constraint ck check (x > 0);
+0 rows inserted/updated/deleted
+ij> alter table f add constraint fk foreign key (x) references p;
+0 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> insert into f values (1);
+1 row inserted/updated/deleted
+ij> -- UPDATE
+create trigger t1 no cascade before update on f for each row mode db2sql
+	values app.triggerFiresMin('BEFORE constraints');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after update on f for each row mode db2sql
+	values app.triggerFiresMin('AFTER constraints');
+0 rows inserted/updated/deleted
+ij> -- fails, ck violated
+update f set x = 0;
+TRIGGER: <BEFORE constraints>
+ERROR 23513: The check constraint 'CK' was violated while performing an INSERT or UPDATE on table 'APP.F'.
+ij> alter table f drop constraint ck;
+0 rows inserted/updated/deleted
+ij> -- fails, fk violated
+update f set x = 0;
+TRIGGER: <BEFORE constraints>
+ERROR 23503: UPDATE on table 'F' caused a violation of foreign key constraint 'FK' for key (0).  The statement has been rolled back.
+ij> alter table f drop foreign key fk;
+0 rows inserted/updated/deleted
+ij> -- ok
+update f set x = 0;
+TRIGGER: <BEFORE constraints>
+TRIGGER: <AFTER constraints>
+1 row inserted/updated/deleted
+ij> delete from f;
+1 row inserted/updated/deleted
+ij> alter table f add constraint ck check (x > 0);
+0 rows inserted/updated/deleted
+ij> alter table f add constraint fk foreign key (x) references p;
+0 rows inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> drop trigger t2;
+0 rows inserted/updated/deleted
+ij> -- DELETE
+insert into f values 1;
+1 row inserted/updated/deleted
+ij> create trigger t1 no cascade before delete on p for each row mode db2sql
+	values app.triggerFiresMin('BEFORE constraints');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after delete on p for each row mode db2sql
+	values app.triggerFiresMin('AFTER constraints');
+0 rows inserted/updated/deleted
+ij> -- fails, fk violated
+delete from p;
+TRIGGER: <BEFORE constraints>
+TRIGGER: <BEFORE constraints>
+TRIGGER: <BEFORE constraints>
+ERROR 23503: DELETE on table 'P' caused a violation of foreign key constraint 'FK' for key (1).  The statement has been rolled back.
+ij> alter table f drop foreign key fk;
+0 rows inserted/updated/deleted
+ij> -- ok
+delete from p;
+TRIGGER: <BEFORE constraints>
+TRIGGER: <BEFORE constraints>
+TRIGGER: <BEFORE constraints>
+TRIGGER: <AFTER constraints>
+TRIGGER: <AFTER constraints>
+TRIGGER: <AFTER constraints>
+3 rows inserted/updated/deleted
+ij> drop table f;
+0 rows inserted/updated/deleted
+ij> drop table p;
+0 rows inserted/updated/deleted
+ij> --
+-- Prove that we are firing the proper triggers based
+-- on the columns we are changing;
+--
+drop table t;
+0 rows inserted/updated/deleted
+ij> create table t (c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create trigger tins after insert on t for each row mode db2sql
+	values app.triggerFiresMin('insert');
+0 rows inserted/updated/deleted
+ij> create trigger tdel after delete on t for each row mode db2sql
+	values app.triggerFiresMin('delete');
+0 rows inserted/updated/deleted
+ij> create trigger tupc1 after update of c1 on t for each row mode db2sql
+	values app.triggerFiresMin('update c1');
+0 rows inserted/updated/deleted
+ij> create trigger tupc2 after update of c2 on t for each row mode db2sql
+	values app.triggerFiresMin('update c2');
+0 rows inserted/updated/deleted
+ij> create trigger tupc1c2 after update of c1,c2 on t for each row mode db2sql
+	values app.triggerFiresMin('update c1,c2');
+0 rows inserted/updated/deleted
+ij> create trigger tupc2c1 after update of c2,c1 on t for each row mode db2sql
+	values app.triggerFiresMin('update c2,c1');
+0 rows inserted/updated/deleted
+ij> insert into t values (1,1);
+TRIGGER: <insert>
+1 row inserted/updated/deleted
+ij> update t set c1 = 1;
+TRIGGER: <update c1>
+TRIGGER: <update c1,c2>
+TRIGGER: <update c2,c1>
+1 row inserted/updated/deleted
+ij> update t set c2 = 1;
+TRIGGER: <update c2>
+TRIGGER: <update c1,c2>
+TRIGGER: <update c2,c1>
+1 row inserted/updated/deleted
+ij> update t set c2 = 1, c1 = 1;
+TRIGGER: <update c1>
+TRIGGER: <update c2>
+TRIGGER: <update c1,c2>
+TRIGGER: <update c2,c1>
+1 row inserted/updated/deleted
+ij> update t set c1 = 1, c2 = 1;
+TRIGGER: <update c1>
+TRIGGER: <update c2>
+TRIGGER: <update c1,c2>
+TRIGGER: <update c2,c1>
+1 row inserted/updated/deleted
+ij> delete from t;
+TRIGGER: <delete>
+1 row inserted/updated/deleted
+ij> -- Make sure that triggers work with delimited identifiers
+-- Make sure that text munging works correctly
+create table trigtable("cOlUmN1" int, "cOlUmN2  " int, "cOlUmN3""""  " int);
+0 rows inserted/updated/deleted
+ij> create table trighistory("cOlUmN1" int, "cOlUmN2  " int, "cOlUmN3""""  " int);
+0 rows inserted/updated/deleted
+ij> insert into trigtable values (1, 2, 3);
+1 row inserted/updated/deleted
+ij> create trigger "tt1" after insert on trigtable
+referencing NEW as NEW for each row mode db2sql
+insert into trighistory ("cOlUmN1", "cOlUmN2  ", "cOlUmN3""""  ") values
+(new."cOlUmN1" + 5, "NEW"."cOlUmN2  " * new."cOlUmN3""""  ", 5);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 700;
+ij> select cast(triggername as char(10)), text from sys.systriggers t, sys.sysstatements s 
+		where s.stmtid = t.actionstmtid and triggername = 'tt1';
+1         |TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+tt1       |insert into trighistory ("cOlUmN1", "cOlUmN2  ", "cOlUmN3""""  ") values
+(cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN1') AS INTEGER)  + 5, cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN2  ') AS INTEGER)  * cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN3""  ') AS INTEGER) , 5)                                                                                                                                                                                                                                                                        
+ij> insert into trigtable values (1, 2, 3);
+1 row inserted/updated/deleted
+ij> select * from trighistory;
+cOlUmN1    |cOlUmN2    |cOlUmN3""  
+-----------------------------------
+6          |6          |5          
+ij> drop trigger "tt1";
+0 rows inserted/updated/deleted
+ij> create trigger "tt1" after insert on trigtable
+referencing new as new for each row mode db2sql
+insert into trighistory ("cOlUmN1", "cOlUmN2  ", "cOlUmN3""""  ") values
+(new."cOlUmN1" + new."cOlUmN1", "NEW"."cOlUmN2  " * new."cOlUmN3""""  ", new."cOlUmN2  " * 3);
+0 rows inserted/updated/deleted
+ij> select cast(triggername as char(10)), text from sys.systriggers t, sys.sysstatements s 
+		where s.stmtid = t.actionstmtid and triggername = 'tt1';
+1         |TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+tt1       |insert into trighistory ("cOlUmN1", "cOlUmN2  ", "cOlUmN3""""  ") values
+(cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN1') AS INTEGER)  + cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN1') AS INTEGER) , cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN2  ') AS INTEGER)  * cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN3""  ') AS INTEGER) , cast (org.apache.derby.iapi.db.Factory::getTriggerExecutionContext().getNewRow().getObject('cOlUmN2  ') AS INTEGER)  * 3)                                
+ij> insert into trigtable values (1, 2, 3);
+1 row inserted/updated/deleted
+ij> select * from trighistory;
+cOlUmN1    |cOlUmN2    |cOlUmN3""  
+-----------------------------------
+6          |6          |5          
+2          |6          |6          
+ij> drop table trigtable;
+0 rows inserted/updated/deleted
+ij> drop table trighistory;
+0 rows inserted/updated/deleted
+ij> -- trigger bug that got fixed mysteriously
+-- between xena and buffy
+create table trigtable1(c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create table trighistory(trigtable char(30), c1 int, c2 int);
+0 rows inserted/updated/deleted
+ij> create trigger trigtable1 after update on trigtable1
+referencing OLD as oldtable
+for each row mode db2sql
+insert into trighistory values ('trigtable1', oldtable.c1, oldtable.c2);
+0 rows inserted/updated/deleted
+ij> insert into trigtable1 values (1, 1);
+1 row inserted/updated/deleted
+ij> update trigtable1 set c1 = 11, c2 = 11;
+1 row inserted/updated/deleted
+ij> select * from trighistory;
+TRIGTABLE                     |C1         |C2         
+------------------------------------------------------
+trigtable1                    |1          |1          
+ij> drop table trigtable1;
+0 rows inserted/updated/deleted
+ij> drop table trighistory;
+0 rows inserted/updated/deleted
+ij> -- 
+-- Lets make sure that the tec cannot be accessed once
+-- the dml that caused it to be pushed is finished.
+--
+drop table t;
+0 rows inserted/updated/deleted
+ij> create table t (x int);
+0 rows inserted/updated/deleted
+ij> create trigger t no cascade before insert on t for each statement mode db2sql
+	values app.begInvRefToTECTest();
+0 rows inserted/updated/deleted
+ij> -- causes the trigger to fire, which causes a thread
+-- to be cranked up
+insert into t values 1;
+1 row inserted/updated/deleted
+ij> -- tell the background thread that dml is done,
+-- it will now try to do some stuff with the stale
+-- tec.  We MUST do this in a different thread lest
+-- we block the background thread on connection 
+-- synchronization
+connect 'wombat' as conn2;
+ij(CONN2)> call app.notifyDMLDone();
+...nested thread running using expired tec
+...trying to loop through stale result set
+Got expected exception: SQL Exception: ResultSet not open, operation 'next' not permitted. Verify that autocommit is OFF.
+Got expected exception: java.sql.SQLException: Statement closed.
+Got expected exception: java.sql.SQLException: Statement closed.
+0 rows inserted/updated/deleted
+ij(CONN2)> disconnect;
+ij> set connection connection0;
+ij> -- Test for bug 3495 - triggers were causing deferred insert, which
+-- caused the insert to use a TemporaryRowHolderImpl. This was not
+-- being re-initialized properly when closed, and it was trying to
+-- re-insert the row from the first insert.
+autocommit off;
+ij> drop table t;
+0 rows inserted/updated/deleted
+ij> create table t (x int);
+0 rows inserted/updated/deleted
+ij> create trigger tr after insert on t for each statement mode db2sql values 1;
+0 rows inserted/updated/deleted
+ij> prepare ps as 'insert into t values (?)';
+ij> execute ps using 'values (1)';
+1 row inserted/updated/deleted
+ij> execute ps using 'values (2)';
+1 row inserted/updated/deleted
+ij> select * from t;
+X          
+-----------
+1          
+2          
+ij> -- Test MODE DB2SQL not as reserved keyword. beetle 4546 
+drop table db2sql;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'DB2SQL' because it does not exist.
+ij> drop table db2sql2;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'DB2SQL2' because it does not exist.
+ij> create table db2sql  (db2sql int, mode int, yipng int);
+0 rows inserted/updated/deleted
+ij> create table db2sql2 (db2sql2 int);
+0 rows inserted/updated/deleted
+ij> -- Test MODE DB2SQL on trigger.  beetle 4546
+drop trigger db2sqltr1;
+ERROR 42X94: TRIGGER 'DB2SQLTR1' does not exist.
+ij> create trigger db2sqltr1 after insert on db2sql 
+for each row
+MODE DB2SQL 
+insert into db2sql2 values (1);
+0 rows inserted/updated/deleted
+ij> -- Test optimizer plan of trigger action. Beetle 4826
+autocommit on;
+ij> drop table parent;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'PARENT' because it does not exist.
+ij> create table t1(a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create table parent (a int not null primary key, b int);
+0 rows inserted/updated/deleted
+ij> create trigger trig1 AFTER DELETE on t1
+referencing OLD as OLD for each row mode db2sql
+delete from parent where a = OLD.a;
+0 rows inserted/updated/deleted
+ij> insert into t1 values (0, 1);
+1 row inserted/updated/deleted
+ij> insert into t1  values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into t1  values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into t1  values (3, 1);
+1 row inserted/updated/deleted
+ij> insert into parent values (0, 1);
+1 row inserted/updated/deleted
+ij> insert into parent values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into parent values (2, 1);
+1 row inserted/updated/deleted
+ij> insert into parent values (3, 1);
+1 row inserted/updated/deleted
+ij> insert into parent values (4, 1);
+1 row inserted/updated/deleted
+ij> autocommit off ;
+ij> delete from t1 where a = 3;
+1 row inserted/updated/deleted
+ij> select type, mode, tablename from new org.apache.derby.diag.LockTable() t order by tablename, type;
+TYPE |MODE|TABLENAME                                                                                                                       
+-------------------------------------------------------------------------------------------------------------------------------------------
+ROW  |X   |PARENT                                                                                                                          
+TABLE|IX  |PARENT                                                                                                                          
+ROW  |X   |T1                                                                                                                              
+TABLE|IX  |T1                                                                                                                              
+ij> rollback;
+ij> autocommit on;
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table parent;
+0 rows inserted/updated/deleted
+ij> -- Test use of old AND new referencing names within the same trigger (beetle 5725).
+create table x(x int);
+0 rows inserted/updated/deleted
+ij> insert into x values (2), (8), (78);
+3 rows inserted/updated/deleted
+ij> create table removed (x int);
+0 rows inserted/updated/deleted
+ij> -- statement trigger
+create trigger t1 after update of x on x referencing
+ old_table as old new_table as new for each statement mode db2sql insert into
+ removed select * from old where x not in (select x from 
+ new where x < 10);
+0 rows inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+2          
+8          
+78         
+ij> select * from removed;
+X          
+-----------
+ij> update x set x=18 where x=8;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+2          
+18         
+78         
+ij> select * from removed;
+X          
+-----------
+8          
+ij> -- row trigger
+create trigger t2 after update of x on x referencing
+ old as oldrow new as newrow for each row mode db2sql insert into
+ removed values (newrow.x + oldrow.x);
+0 rows inserted/updated/deleted
+ij> update x set x=28 where x=18;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+2          
+28         
+78         
+ij> select * from removed;
+X          
+-----------
+8          
+18         
+46         
+ij> -- do an alter table, then make sure triggers recompile correctly.
+alter table x add column y int;
+0 rows inserted/updated/deleted
+ij> update x set x=88 where x > 44;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          |Y          
+-----------------------
+2          |NULL       
+28         |NULL       
+88         |NULL       
+ij> select * from removed;
+X          
+-----------
+8          
+18         
+46         
+78         
+166        
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table removed;
+0 rows inserted/updated/deleted
+ij> create table x (x int, constraint ck check (x > 0));
+0 rows inserted/updated/deleted
+ij> -- after
+create trigger tgood after insert on x for each statement mode db2sql insert into x values 666;
+0 rows inserted/updated/deleted
+ij> insert into x values 1;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+1          
+666        
+ij> drop trigger tgood;
+0 rows inserted/updated/deleted
+ij> create trigger tgood after insert on x for each statement mode db2sql delete from x;
+0 rows inserted/updated/deleted
+ij> insert into x values 1;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+ij> drop trigger tgood;
+0 rows inserted/updated/deleted
+ij> create trigger tgood after insert on x for each statement mode db2sql update x set x = x+100;
+0 rows inserted/updated/deleted
+ij> insert into x values 1;
+1 row inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+101        
+ij> drop trigger tgood;
+0 rows inserted/updated/deleted
+ij> delete from x;
+1 row inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRecursion.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRecursion.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,89 @@
+ij> --
+-- Trigger recursion test
+--
+-- test the maximum recursion level to be less than 16
+create table t1 (x int);
+0 rows inserted/updated/deleted
+ij> create table t2 (x int);
+0 rows inserted/updated/deleted
+ij> create table t3 (x int);
+0 rows inserted/updated/deleted
+ij> create table t4 (x int);
+0 rows inserted/updated/deleted
+ij> create table t5 (x int);
+0 rows inserted/updated/deleted
+ij> create table t6 (x int);
+0 rows inserted/updated/deleted
+ij> create table t7 (x int);
+0 rows inserted/updated/deleted
+ij> create table t8 (x int);
+0 rows inserted/updated/deleted
+ij> create table t9 (x int);
+0 rows inserted/updated/deleted
+ij> create table t10 (x int);
+0 rows inserted/updated/deleted
+ij> create table t11 (x int);
+0 rows inserted/updated/deleted
+ij> create table t12 (x int);
+0 rows inserted/updated/deleted
+ij> create table t13 (x int);
+0 rows inserted/updated/deleted
+ij> create table t14 (x int);
+0 rows inserted/updated/deleted
+ij> create table t15 (x int);
+0 rows inserted/updated/deleted
+ij> create table t16 (x int);
+0 rows inserted/updated/deleted
+ij> create table t17 (x int);
+0 rows inserted/updated/deleted
+ij> create trigger tr1 after insert on t1 for each row MODE DB2SQL insert into t2 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr2 after insert on t2 for each row MODE DB2SQL insert into t3 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr3 after insert on t3 for each row MODE DB2SQL insert into t4 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr4 after insert on t4 for each row MODE DB2SQL insert into t5 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr5 after insert on t5 for each row MODE DB2SQL insert into t6 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr6 after insert on t6 for each row MODE DB2SQL insert into t7 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr7 after insert on t7 for each row MODE DB2SQL insert into t8 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr8 after insert on t8 for each row MODE DB2SQL insert into t9 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr9 after insert on t9 for each row MODE DB2SQL insert into t10 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr10 after insert on t10 for each row MODE DB2SQL insert into t11 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr11 after insert on t11 for each row MODE DB2SQL insert into t12 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr12 after insert on t12 for each row MODE DB2SQL insert into t13 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr13 after insert on t13 for each row MODE DB2SQL insert into t14 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr14 after insert on t14 for each row MODE DB2SQL insert into t15 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr15 after insert on t15 for each row MODE DB2SQL insert into t16 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr16 after insert on t16 for each row MODE DB2SQL insert into t17 values 666;
+0 rows inserted/updated/deleted
+ij> create trigger tr17 after insert on t17 for each row MODE DB2SQL values 1;
+0 rows inserted/updated/deleted
+ij> -- here we go
+;
+ij> insert into t1 values 1;
+ERROR 54038: Maximum depth of nested triggers was exceeded.
+ij> -- prove it
+select * from t1;
+X          
+-----------
+ij> -- The following should work, but because of defect 5602, it raises NullPointerException.
+-- After the fix for 5602, we could enable the following part of the test.
+-- Reduce the recursion level to 16. It should pass now.
+-- drop trigger tr17;
+-- insert  into t1 values 2;
+-- prove it
+-- select * from t1;
+;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRefClause.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerRefClause.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,334 @@
+ij> --
+-- Test the REFERENCING clause for a trigger
+-- as well as a general test that using the
+-- OLD and NEW transition variables work ok
+--
+drop table x;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'X' because it does not exist.
+ij> create table x (x int, y int, z int);
+0 rows inserted/updated/deleted
+ij> --
+-- negative tests
+--
+-- syntax
+-- mismatch: insert->old, delete->new
+create trigger t1 after insert on x referencing old as oldrow for each row mode db2sql values 1;
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger t1 after insert on x referencing old_table as oldtab for each statement mode db2sql values 1;
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger t1 after insert on x referencing old_table as oldtab for each statement mode db2sql values 1;
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger t1 after delete on x referencing new as newrow for each row mode db2sql values 1;
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> create trigger t1 after delete on x referencing new_table as newtab for each statement mode db2sql values 1;
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> create trigger t1 after delete on x referencing new_table as newtab for each statement mode db2sql values 1;
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> -- same as above, bug using old/new
+create trigger t1 after insert on x referencing old as old for each row mode db2sql values old.x;
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger t1 after insert on x referencing old_table as old for each statement mode db2sql select * from old;
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger t1 after insert on x referencing old_table as old for each statement mode db2sql select * from old;
+ERROR 42Y92: INSERT triggers may only reference new transition variables/tables.
+ij> create trigger t1 after delete on x referencing new as new for each row mode db2sql values new.x;
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> create trigger t1 after delete on x referencing new_table as new for each statement mode db2sql select * from new;
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> create trigger t1 after delete on x referencing new_table as new for each statement mode db2sql select * from new;
+ERROR 42Y92: DELETE triggers may only reference old transition variables/tables.
+ij> -- cannot reference columns that don't exist, not bound as normal stmts
+create trigger t1 after delete on x referencing old as old for each row mode db2sql values old.badcol;
+ERROR 42X04: Column 'OLD.BADCOL' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OLD.BADCOL' is not a column in the target table.
+ij> create trigger t1 after delete on x referencing old as old for each row mode db2sql values old;
+ERROR 42X04: Column 'OLD' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OLD' is not a column in the target table.
+ij> create trigger t1 after delete on x referencing old as oldrow for each row mode db2sql values oldrow.badcol;
+ERROR 42X04: Column 'OLDROW.BADCOL' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OLDROW.BADCOL' is not a column in the target table.
+ij> create trigger t1 after delete on x referencing old as oldrow for each row mode db2sql values oldrow;
+ERROR 42X04: Column 'OLDROW' is not in any table in the FROM list or it appears within a join specification and is outside the scope of the join specification or it appears in a HAVING clause and is not in the GROUP BY list.  If this is a CREATE or ALTER TABLE statement then 'OLDROW' is not a column in the target table.
+ij> -- lets try some basics with old/new table
+create table y (x int);
+0 rows inserted/updated/deleted
+ij> insert into y values 1, 2, 666, 2, 2, 1;
+6 rows inserted/updated/deleted
+ij> insert into x values (1, null, null), (2, null, null);
+2 rows inserted/updated/deleted
+ij> create trigger t1 after delete on x referencing old as old for each row mode db2sql delete from y where x = old.x;
+0 rows inserted/updated/deleted
+ij> autocommit off;
+ij> delete from x;
+2 rows inserted/updated/deleted
+ij> select * from y;
+X          
+-----------
+666        
+ij> rollback;
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create trigger t1 after delete on x referencing old_table as old for each statement mode db2sql delete from y where x in (select x from old);
+0 rows inserted/updated/deleted
+ij> delete from x;
+2 rows inserted/updated/deleted
+ij> select * from y;
+X          
+-----------
+666        
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> rollback;
+ij> delete from x;
+2 rows inserted/updated/deleted
+ij> select * from y;
+X          
+-----------
+1          
+2          
+666        
+2          
+2          
+1          
+ij> rollback;
+ij> delete from x;
+2 rows inserted/updated/deleted
+ij> delete from y;
+6 rows inserted/updated/deleted
+ij> -- test all types and row triggers since they do explicit type mapping
+create table allTypes1 (i int, tn smallint, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, f float,
+				dt date, t time, ts timestamp,
+				b CHAR(2) FOR BIT DATA, bv VARCHAR(2) FOR BIT DATA, lbv LONG VARCHAR FOR BIT DATA,
+				dc decimal(5,2), n numeric(8,4));
+0 rows inserted/updated/deleted
+ij> create table allTypes2 (i int, tn smallint, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, f float,
+				dt date, t time, ts timestamp,
+				b  CHAR(2) FOR BIT DATA, bv VARCHAR(2) FOR BIT DATA, lbv LONG VARCHAR FOR BIT DATA,
+				dc decimal(5,2), n numeric(8,4));
+0 rows inserted/updated/deleted
+ij> create trigger t1 after insert on allTypes1 referencing new as newrowtab for each row mode db2sql
+	insert into allTypes2 
+	values (newrowtab.i, newrowtab.tn, newrowtab.s, newrowtab.l,
+		newrowtab.c, newrowtab.v, newrowtab.lvc,
+		newrowtab.d, newrowtab.r, newrowtab.f,   newrowtab.dt,  
+		newrowtab.t, newrowtab.ts, newrowtab.b, newrowtab.bv, 
+		newrowtab.lbv, newrowtab.dc, newrowtab.n);
+0 rows inserted/updated/deleted
+ij> commit;
+ij> insert into allTypes1 values (0, 10, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 200.0e0,
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0F0F', X'1234', 111.11, 222.2);
+1 row inserted/updated/deleted
+ij> select * from allTypes1;
+I          |TN    |S     |L                   |C         |V                                                 |LVC                                                                                                                             |D                     |R            |F                     |DT        |T       |TS                        |B   |BV  |LBV                                                                                                                             |DC      |N          
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |10    |100   |1000000             |duplicate |this is duplicated                                |also duplicated                                                                                                                 |200.0                 |200.0        |200.0                 |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx|12af|0f0f|1234                                                                                                                            |111.11  |222.2000   
+ij> select * from allTypes2;
+I          |TN    |S     |L                   |C         |V                                                 |LVC                                                                                                                             |D                     |R            |F                     |DT        |T       |TS                        |B   |BV  |LBV                                                                                                                             |DC      |N          
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+0          |10    |100   |1000000             |duplicate |this is duplicated                                |also duplicated                                                                                                                 |200.0                 |200.0        |200.0                 |1992-01-01|12:30:30|xxxxxxFILTERED-TIMESTAMPxxxxx|12af|0f0f|1234                                                                                                                            |111.11  |222.2000   
+ij> commit;
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> insert into allTypes1 values (0, 10, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 200.0e0,
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0F0F', X'1234', 111.11, 222.2);
+1 row inserted/updated/deleted
+ij> delete from alltypes1;
+2 rows inserted/updated/deleted
+ij> drop trigger t1;
+ERROR 42X94: TRIGGER 'T1' does not exist.
+ij> insert into allTypes1 values (0, 10, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 200.0e0,
+					  date('1992-01-01'), time('12:30:30'), timestamp('xxxxxxFILTERED-TIMESTAMPxxxxx),
+					  X'12af', X'0F0F', X'1234', 111.11, 222.2);
+1 row inserted/updated/deleted
+ij> drop table allTypes1;
+0 rows inserted/updated/deleted
+ij> drop table allTypes2;
+0 rows inserted/updated/deleted
+ij> -- do a join to find changed values just because i can
+drop table x;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> create table x (x int);
+0 rows inserted/updated/deleted
+ij> create table removed (x int);
+0 rows inserted/updated/deleted
+ij> -- create trigger t1 after update of x on x referencing old_table as old new_table as new
+-- 	 for each statement mode db2sql
+-- 	 insert into removed select * from old where x not in (select x from new where x < 10);
+insert into x values 1,3,4,5,6,9,666,667,668;
+9 rows inserted/updated/deleted
+ij> update x set x = x+1;
+9 rows inserted/updated/deleted
+ij> select * from x;
+X          
+-----------
+2          
+4          
+5          
+6          
+7          
+10         
+667        
+668        
+669        
+ij> select * from removed;
+X          
+-----------
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table removed;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> create table x (x int, y int);
+0 rows inserted/updated/deleted
+ij> create table y (x int, y int);
+0 rows inserted/updated/deleted
+ij> create trigger t1 after insert on x referencing new_table as newtab for each statement mode db2sql
+	insert into y select newtab.x, y+newtab.y from newtab;
+0 rows inserted/updated/deleted
+ij> insert into x values (1,1);
+1 row inserted/updated/deleted
+ij> select * from y;
+X          |Y          
+-----------------------
+1          |2          
+ij> delete from y;
+1 row inserted/updated/deleted
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> -- how about a correlation of a transition variable
+create trigger t1 after insert on x referencing new_table as newtab for each statement mode db2sql
+	insert into y select newtab2.x, y+newtab2.y from newtab newtab2;
+0 rows inserted/updated/deleted
+ij> insert into x values (1,1);
+1 row inserted/updated/deleted
+ij> select * from y;
+X          |Y          
+-----------------------
+1          |2          
+ij> -- lets prove that we are getting object types from row transition
+-- variables.  this is only an issue with row triggers because
+-- they are doing some funky stuff under the covers to make
+-- a column appear just like a normal table column
+drop table x;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> create table val (x int);
+0 rows inserted/updated/deleted
+ij> create table x (b char(5) FOR BIT DATA);
+0 rows inserted/updated/deleted
+ij> create table y (b char(5) FOR BIT DATA);
+0 rows inserted/updated/deleted
+ij> create trigger t1 after insert on x referencing new as new for each row mode db2sql insert into y values (new.b || X'80');
+0 rows inserted/updated/deleted
+ij> insert into x values (X'E0');
+ERROR 22001: A truncation error was encountered trying to shrink CHAR () FOR BIT DATA 'e02020202080' to length 5.
+ij> select * from y;
+B         
+----------
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> create trigger t1 after insert on x referencing new as new for each row mode db2sql insert into y values new.b;
+0 rows inserted/updated/deleted
+ij> insert into x values null;
+1 row inserted/updated/deleted
+ij> select * from y;
+B         
+----------
+NULL      
+ij> drop trigger t1;
+0 rows inserted/updated/deleted
+ij> create trigger t1 after insert on x referencing new as new for each row mode db2sql insert into val values length(new.b);
+0 rows inserted/updated/deleted
+ij> insert into x values X'FFE0';
+1 row inserted/updated/deleted
+ij> select * from val;
+X          
+-----------
+5          
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> drop table y;
+0 rows inserted/updated/deleted
+ij> drop table val;
+0 rows inserted/updated/deleted
+ij> create table x (x dec(7,3));
+0 rows inserted/updated/deleted
+ij> create table y (x dec(8,4));
+0 rows inserted/updated/deleted
+ij> insert into x values 1234.1234, null, 1234.123;
+3 rows inserted/updated/deleted
+ij> select * from x;
+X         
+----------
+1234.123  
+NULL      
+1234.123  
+ij> select * from y;
+X          
+-----------
+ij> create table t1 (col1 int not null primary key, col2 char(20));
+0 rows inserted/updated/deleted
+ij> create table s_t1(col1 int not null primary key, chgType char(20));
+0 rows inserted/updated/deleted
+ij> -- should work
+create trigger trig_delete_2 after delete on t1 referencing OLD_TABLE as OLD for each statement mode db2sql 
+	insert into s_t1 (select col1, 'D'
+	from OLD  where OLD.col1 <> ALL
+	(select col1 from s_t1 where  OLD.col1 = s_t1.col1));
+0 rows inserted/updated/deleted
+ij> drop trigger trig_delete_2;
+0 rows inserted/updated/deleted
+ij> -- should work
+create trigger trig_delete_2 after delete on t1 referencing old_table as OLD for each statement mode db2sql 
+	insert into s_t1 (select col1, 'D'
+	from OLD where OLD.col1 <> ALL
+	(select s_t1.col1 from s_t1, OLD where  OLD.col1 = s_t1.col1));
+0 rows inserted/updated/deleted
+ij> insert into t1 values (5, 'first row'), (3, 'second row'), (9, 'third row'),
+			(4, 'forth row');
+4 rows inserted/updated/deleted
+ij> select * from s_t1;
+COL1       |CHGTYPE             
+--------------------------------
+ij> delete from t1 where col1 = 3 or col1 = 9;
+2 rows inserted/updated/deleted
+ij> select * from s_t1;
+COL1       |CHGTYPE             
+--------------------------------
+3          |D                   
+9          |D                   
+ij> insert into t1 values (9, 'third row'), (3, 'second row'), (7, 'fifth row');
+3 rows inserted/updated/deleted
+ij> delete from t1 where col1 = 3 or col1 = 7;
+2 rows inserted/updated/deleted
+ij> select * from s_t1;
+COL1       |CHGTYPE             
+--------------------------------
+3          |D                   
+9          |D                   
+7          |D                   
+ij> delete from t1;
+3 rows inserted/updated/deleted
+ij> select * from s_t1;
+COL1       |CHGTYPE             
+--------------------------------
+3          |D                   
+9          |D                   
+7          |D                   
+5          |D                   
+4          |D                   
+ij> rollback;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerStream.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerStream.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,352 @@
+ij> --
+-- Small trigger stream test.  Make sure we can
+-- read streams ok from the context of a row or
+-- statement trigger.
+--
+create function getAsciiColumn( whichRS int, colNumber int, value varchar(128)) returns int
+  PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.getAsciiColumn';
+0 rows inserted/updated/deleted
+ij> create procedure insertAsciiColumn( stmtText varchar( 256), colNumber int, value varchar(128), length int)
+  PARAMETER STYLE JAVA LANGUAGE JAVA MODIFIES SQL DATA
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.insertAsciiColumn';
+0 rows inserted/updated/deleted
+ij> create function getBinaryColumn( whichRS int, colNumber int, value varchar(128)) returns int
+  PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.getBinaryColumn';
+0 rows inserted/updated/deleted
+ij> create procedure insertBinaryColumn( stmtText varchar( 256), colNumber int, value varchar(128), length int)
+  PARAMETER STYLE JAVA LANGUAGE JAVA MODIFIES SQL DATA
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.insertBinaryColumn';
+0 rows inserted/updated/deleted
+ij> drop table x;
+ERROR 42Y55: 'DROP TABLE' cannot be performed on 'X' because it does not exist.
+ij> create table x (x int, c1 long varchar, y int, slen int);
+0 rows inserted/updated/deleted
+ij> -- this getAsciiColumn() method reads in the stream
+-- and verifies each byte and prints out the length
+-- of the column
+create trigger t1 NO CASCADE before update of x,y on x for each statement mode db2sql
+	values getAsciiColumn( 0, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after update of x,y on x for each row  mode db2sql
+	values getAsciiColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t3 after insert on x for each statement  mode db2sql
+	values getAsciiColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t4 NO CASCADE before insert on x for each row  mode db2sql
+	values getAsciiColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t5 NO CASCADE before delete on x for each statement  mode db2sql
+	values getAsciiColumn( 0, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t6 after delete on x for each row  mode db2sql
+	values getAsciiColumn( 0, 2, 'a');
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (1, ?, 1, ?)', 1, 'a', 1);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (2, ?, 2, ?)', 1, 'a', 10);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (3, ?, 3, ?)', 1, 'a', 100);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (4, ?, 4, ?)', 1, 'a', 1000);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (5, ?, 5, ?)', 1, 'a', 5000);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (6, ?, 6, ?)', 1, 'a', 10000);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (7, ?, 7, ?)', 1, 'a', 16500);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (8, ?, 8, ?)', 1, 'a', 32500);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (9, ?, 9, ?)', 1, 'a', 0);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> call insertAsciiColumn('insert into x values (10, ?, 10, ?)', 1, 'a', 666);
+getAsciiColumn() called
+getAsciiColumn() called
+0 rows inserted/updated/deleted
+ij> update x set x = x+1;
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+10 rows inserted/updated/deleted
+ij> update x set x = null;
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+10 rows inserted/updated/deleted
+ij> insert into x select * from x;
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+10 rows inserted/updated/deleted
+ij> delete from x;
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+getAsciiColumn() called
+20 rows inserted/updated/deleted
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> create table x (x int, c1 long varchar for bit data, y int, slen int);
+0 rows inserted/updated/deleted
+ij> -- this getBinaryColumn() method reads in the stream
+-- and verifies each byte and prints out the length
+-- of the column
+create trigger t1 NO CASCADE before update of x,y on x for each statement  mode db2sql
+	values getBinaryColumn( 0, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t2 after update of x,y on x for each row  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t3 after insert on x for each statement  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t4 NO CASCADE before insert on x for each row  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t5 NO CASCADE before delete on x for each statement  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+0 rows inserted/updated/deleted
+ij> create trigger t6 after delete on x for each row  mode db2sql
+	values getBinaryColumn( 0, 2, 'a');
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (1, ?, 1, ?)', 1, 'a', 1);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (2, ?, 2, ?)', 1, 'a', 10);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (3, ?, 3, ?)', 1, 'a', 100);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (4, ?, 4, ?)', 1, 'a', 1000);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (5, ?, 5, ?)', 1, 'a', 10000);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (6, ?, 6, ?)', 1, 'a', 32700);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (7, ?, 7, ?)', 1, 'a', 32699);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (8, ?, 8, ?)', 1, 'a', 16384);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (9, ?, 9, ?)', 1, 'a', 16383);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (10, ?, 10, ?)', 1, 'a', 0);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> call insertBinaryColumn('insert into x values (11, ?, 11, ?)', 1, 'a', 666);
+getBinaryColumn() called
+getBinaryColumn() called
+0 rows inserted/updated/deleted
+ij> select x, length(c1) from x order by 1;
+X          |2          
+-----------------------
+1          |1          
+2          |10         
+3          |100        
+4          |1000       
+5          |10000      
+6          |32700      
+7          |32699      
+8          |16384      
+9          |16383      
+10         |0          
+11         |666        
+ij> update x set x = x+1;
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+11 rows inserted/updated/deleted
+ij> select x, length(c1) from x order by 1;
+X          |2          
+-----------------------
+2          |1          
+3          |10         
+4          |100        
+5          |1000       
+6          |10000      
+7          |32700      
+8          |32699      
+9          |16384      
+10         |16383      
+11         |0          
+12         |666        
+ij> update x set x = null;
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+11 rows inserted/updated/deleted
+ij> select x, length(c1) from x order by 2;
+X          |2          
+-----------------------
+NULL       |0          
+NULL       |1          
+NULL       |10         
+NULL       |100        
+NULL       |666        
+NULL       |1000       
+NULL       |10000      
+NULL       |16383      
+NULL       |16384      
+NULL       |32699      
+NULL       |32700      
+ij> insert into x select * from x;
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+11 rows inserted/updated/deleted
+ij> select x, length(c1) from x order by 2;
+X          |2          
+-----------------------
+NULL       |0          
+NULL       |0          
+NULL       |1          
+NULL       |1          
+NULL       |10         
+NULL       |10         
+NULL       |100        
+NULL       |100        
+NULL       |666        
+NULL       |666        
+NULL       |1000       
+NULL       |1000       
+NULL       |10000      
+NULL       |10000      
+NULL       |16383      
+NULL       |16383      
+NULL       |16384      
+NULL       |16384      
+NULL       |32699      
+NULL       |32699      
+NULL       |32700      
+NULL       |32700      
+ij> delete from x;
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+getBinaryColumn() called
+22 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ungroupedAggregatesNegative.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ungroupedAggregatesNegative.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,30 @@
+ij> -- negative tests for ungrouped aggregates
+-- create a table
+create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create table t2 (c1 int);
+0 rows inserted/updated/deleted
+ij> insert into t2 values 1,2,3;
+3 rows inserted/updated/deleted
+ij> -- mix aggregate and non-aggregate expressions in the select list
+select c1, max(c1) from t1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> select c1 * max(c1) from t1;
+ERROR 42Y35: Column reference 'C1' is invalid. When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- aggregate in where clause
+select c1 from t1 where max(c1) = 1;
+ERROR 42903: Invalid use of an aggregate function.
+ij> -- aggregate in ON clause of inner join
+select * from t1 join t1 as t2 on avg(t2.c1) > 10;
+ERROR 42Z07: Aggregates are not permitted in the ON clause.
+ij> -- correlated subquery in select list
+select max(c1), (select t2.c1 from t2 where t1.c1 = t2.c1) from t1;
+ERROR 42Y29: The SELECT list of a non-grouped query contains at least 1 invalid expression.  When the SELECT list contains at least 1 aggregate then all entries must be valid aggregate expressions.
+ij> -- noncorrelated subquery that returns more than 1 row
+select max(c1), (select t2.c1 from t2) from t1;
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- drop the table
+drop table t1
+;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/union.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/union.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,905 @@
+ij> --
+-- this test shows union functionality
+--
+-- create the tables
+create table t1 (i int, s smallint, d double precision, r real, c10 char(10),
+				c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> create table t2 (i int, s smallint, d double precision, r real, c10 char(10),
+				c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> create table dups (i int, s smallint, d double precision, r real, c10 char(10),
+				c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values (null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 1, 1e1, 1e1, '11111', '11111     11', '11111',
+	'11111      11');
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 2, 2e1, 2e1, '22222', '22222     22', '22222',
+	'22222      22');
+1 row inserted/updated/deleted
+ij> insert into t2 values (null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 3, 3e1, 3e1, '33333', '33333     33', '33333',
+	'33333      33');
+1 row inserted/updated/deleted
+ij> insert into t2 values (4, 4, 4e1, 4e1, '44444', '44444     44', '44444',
+	'44444      44');
+1 row inserted/updated/deleted
+ij> insert into dups select * from t1 union all select * from t2;
+6 rows inserted/updated/deleted
+ij> -- simple cases
+values (1, 2, 3, 4) union values (5, 6, 7, 8);
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+ij> values (1, 2, 3, 4) union values (1, 2, 3, 4);
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+ij> values (1, 2, 3, 4) union values (5, 6, 7, 8) union values (9, 10, 11, 12);
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+9          |10         |11         |12         
+ij> values (1, 2, 3, 4) union values (1, 2, 3, 4) union values (1, 2, 3, 4);
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+ij> select * from t1 union select * from t2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> select * from t1 union select * from t1;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> select * from t1 union select * from t2 union select * from dups;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> select * from t1 union select i, s, d, r, c10, c30, vc10, vc30 from t2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> select * from t1 union select i, s, d, r, c10, c30, vc10, vc30 from t2
+		union select * from dups;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> -- derived tables
+select * from (values (1, 2, 3, 4) union values (5, 6, 7, 8)) a;
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+ij> select * from (values (1, 2, 3, 4) union values (5, 6, 7, 8) union
+			   values (1, 2, 3, 4)) a;
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+ij> -- mix unions and union alls
+select i from t1 union select i from t2 union all select i from dups;
+I          
+-----------
+1          
+2          
+3          
+4          
+NULL       
+NULL       
+1          
+2          
+NULL       
+3          
+4          
+ij> (select i from t1 union select i from t2) union all select i from dups;
+I          
+-----------
+1          
+2          
+3          
+4          
+NULL       
+NULL       
+1          
+2          
+NULL       
+3          
+4          
+ij> select i from t1 union (select i from t2 union all select i from dups);
+I          
+-----------
+1          
+2          
+3          
+4          
+NULL       
+ij> select i from t1 union all select i from t2 union select i from dups;
+I          
+-----------
+1          
+2          
+3          
+4          
+NULL       
+ij> (select i from t1 union all select i from t2) union select i from dups;
+I          
+-----------
+1          
+2          
+3          
+4          
+NULL       
+ij> select i from t1 union all (select i from t2 union select i from dups);
+I          
+-----------
+NULL       
+1          
+2          
+1          
+2          
+3          
+4          
+NULL       
+ij> -- joins
+select a.i, b.i from t1 a, t2 b union select b.i, a.i from t1 a, t2 b;
+I          |I          
+-----------------------
+1          |3          
+1          |4          
+1          |NULL       
+2          |3          
+2          |4          
+2          |NULL       
+3          |1          
+3          |2          
+3          |NULL       
+4          |1          
+4          |2          
+4          |NULL       
+NULL       |1          
+NULL       |2          
+NULL       |3          
+NULL       |4          
+NULL       |NULL       
+ij> values (9, 10) union 
+	select a.i, b.i from t1 a, t2 b union select b.i, a.i from t1 a, t2 b;
+1          |2          
+-----------------------
+1          |3          
+1          |4          
+1          |NULL       
+2          |3          
+2          |4          
+2          |NULL       
+3          |1          
+3          |2          
+3          |NULL       
+4          |1          
+4          |2          
+4          |NULL       
+9          |10         
+NULL       |1          
+NULL       |2          
+NULL       |3          
+NULL       |4          
+NULL       |NULL       
+ij> select a.i, b.i from t1 a, t2 b union 
+	select b.i, a.i from t1 a, t2 b union values (9, 10);
+1          |2          
+-----------------------
+1          |3          
+1          |4          
+1          |NULL       
+2          |3          
+2          |4          
+2          |NULL       
+3          |1          
+3          |2          
+3          |NULL       
+4          |1          
+4          |2          
+4          |NULL       
+9          |10         
+NULL       |1          
+NULL       |2          
+NULL       |3          
+NULL       |4          
+NULL       |NULL       
+ij> -- non-correlated subqueries
+-- positive tests
+select i from t1 where i = (values 1 union values 1);
+I          
+-----------
+1          
+ij> select i from t1 where i = (values 1 union values 1 union values 1);
+I          
+-----------
+1          
+ij> -- expression subquery
+select i from t1 where i = (select 1 from t2 union values 1);
+I          
+-----------
+1          
+ij> -- in subquery
+select i from t1 where i in (select i from t2 union values 1 union values 2);
+I          
+-----------
+1          
+2          
+ij> select i from t1 where i in 
+		(select a from (select i from t2 union values 1 union values 2) a (a));
+I          
+-----------
+1          
+2          
+ij> -- not in subquery
+select i from t1 where i not in (select i from t2 union values 1 union values 2);
+I          
+-----------
+ij> select i from t1 where i not in (select i from t2 where i is not null union 
+								 values 1 union values 22);
+I          
+-----------
+2          
+ij> select i from t1 where i not in 
+		(select a from (select i from t2 where i is not null union 
+						values 111 union values 2) a (a));
+I          
+-----------
+1          
+ij> -- correlated union subquery
+select i from t1 a where i in (select i from t2 where 1 = 0 union 
+							   select a.i from t2 where a.i < i);
+I          
+-----------
+1          
+2          
+ij> select i from t1 a where i in (select a.i from t2 where a.i < i union 
+							   select i from t2 where 1 < 0);
+I          
+-----------
+1          
+2          
+ij> -- exists subquery
+select i from t1 where exists (select * from t2 union select * from t2);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select i from t1 where exists (select 1 from t2 union select 2 from t2);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select i from t1 where exists (select 1 from t2 where 1 = 0 union 
+							   select * from t2 where t1.i < i);
+I          
+-----------
+1          
+2          
+ij> select i from t1 where exists (select i from t2 where t1.i < i union 
+							    select * from t2 where 1 = 0 union 
+							   select * from t2 where t1.i < i union 
+							    select i from t2 where 1 = 0);
+I          
+-----------
+1          
+2          
+ij> -- order by tests
+select i from t1 union select i from dups order by i desc;
+I          
+-----------
+NULL       
+4          
+3          
+2          
+1          
+ij> select i, s from t1 union select s as i, 1 as s from dups order by s desc, i;
+I          |S          
+-----------------------
+NULL       |NULL       
+2          |2          
+1          |1          
+2          |1          
+3          |1          
+4          |1          
+NULL       |1          
+ij> -- insert tests
+create table insert_test (i int, s smallint, d double precision, r real,
+	c10 char(10), c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> -- simple tests
+insert into insert_test select * from t1 union select * from dups;
+5 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test;
+5 rows inserted/updated/deleted
+ij> insert into insert_test (s, i) values (2, 1) union values (4, 3);
+2 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |4     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test;
+2 rows inserted/updated/deleted
+ij> -- test type dominance/length/nullability
+insert into insert_test (vc30) select vc10 from t1 union select c30 from t2;
+5 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |11111                         
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |22222                         
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |33333     33                  
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |44444     44                  
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test;
+5 rows inserted/updated/deleted
+ij> insert into insert_test (c30)
+	select vc10 from t1
+	union
+	select c30 from t2
+	union
+	select c10 from t1;
+5 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |11111                         |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |22222                         |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |33333     33                  |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |44444     44                  |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test;
+5 rows inserted/updated/deleted
+ij> -- test NormalizeResultSet generation
+select i, d from t1 union select d, i from t2;
+1                     |2                     
+---------------------------------------------
+1.0                   |10.0                  
+2.0                   |20.0                  
+30.0                  |3.0                   
+40.0                  |4.0                   
+NULL                  |NULL                  
+ij> select vc10, c30 from t1 union select c30, vc10 from t2;
+1                             |2                             
+-------------------------------------------------------------
+11111                         |11111     11                  
+22222                         |22222     22                  
+33333     33                  |33333                         
+44444     44                  |44444                         
+NULL                          |NULL                          
+ij> create table insert_test2 (s smallint not null, vc30 varchar(30) not null);
+0 rows inserted/updated/deleted
+ij> -- the following should fail due to null constraint
+insert into insert_test2 select s, c10 from t1 union select s, c30 from t2;
+ERROR 23502: Column 'S'  cannot accept a NULL value.
+ij> select * from insert_test2;
+S     |VC30                          
+-------------------------------------
+ij> -- negative tests
+-- ? in select list of union
+select ? from insert_test union select vc30 from insert_test;
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> select vc30 from insert_test union select ? from insert_test;
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> -- DB2 requires matching target and result column for insert
+insert into insert_test values (1, 2) union values (3, 4);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- try some unions of different types.  
+-- types should be ok if comparable.
+values (1) union values (1.1);
+1             
+--------------
+1.0           
+1.1           
+ij> values (1) union values (1.1e1);
+1                     
+----------------------
+1.0                   
+11.0                  
+ij> values (1.1) union values (1);
+1             
+--------------
+1.0           
+1.1           
+ij> values (1.1e1) union values (1);
+1                     
+----------------------
+1.0                   
+11.0                  
+ij> -- negative cases
+values (x'aa') union values (1);
+ERROR 42X61: Types 'CHAR () FOR BIT DATA' and 'INTEGER' are not UNION compatible.
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table dups;
+0 rows inserted/updated/deleted
+ij> drop table insert_test;
+0 rows inserted/updated/deleted
+ij> drop table insert_test2;
+0 rows inserted/updated/deleted
+ij> --
+-- this test shows the current supported union all functionality
+--
+-- RESOLVE - whats not tested
+--	type compatability
+--  nullability of result
+--  type dominance
+--  correlated subqueries
+--  table constructors
+-- create the tables
+create table t1 (i int, s smallint, d double precision, r real, c10 char(10),
+				 c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> create table t2 (i int, s smallint, d double precision, r real, c10 char(10),
+				 c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values (null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 1, 1e1, 1e1, '11111', '11111     11', '11111',
+	'11111      11');
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 2, 2e1, 2e1, '22222', '22222     22', '22222',
+	'22222      22');
+1 row inserted/updated/deleted
+ij> insert into t2 values (null, null, null, null, null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 3, 3e1, 3e1, '33333', '33333     33', '33333',
+	'33333      33');
+1 row inserted/updated/deleted
+ij> insert into t2 values (4, 4, 4e1, 4e1, '44444', '44444     44', '44444',
+	'44444      44');
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- non matching number of columns
+select * from t1 union all select * from t1, t2;
+ERROR 42X58: The number of columns on the left and right sides of the UNION must be the same.
+ij> select * from t1 union all values (1, 2, 3, 4);
+ERROR 42X58: The number of columns on the left and right sides of the UNION must be the same.
+ij> values (1, 2, 3, 4) union all select * from t1;
+ERROR 42X58: The number of columns on the left and right sides of the UNION must be the same.
+ij> -- simple cases
+values (1, 2, 3, 4) union all values (5, 6, 7, 8);
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+ij> values (1, 2, 3, 4) union all values (5, 6, 7, 8) union all values (9, 10, 11, 12);
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+9          |10         |11         |12         
+ij> select * from t1 union all select * from t2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+ij> select * from t1 union all select i, s, d, r, c10, c30, vc10, vc30 from t2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+ij> -- derived tables
+select * from (values (1, 2, 3, 4) union all values (5, 6, 7, 8)) a;
+1          |2          |3          |4          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+ij> select * from (values (1, 2, 3, 4) union all values (5, 6, 7, 8)) a (a, b, c, d);
+A          |B          |C          |D          
+-----------------------------------------------
+1          |2          |3          |4          
+5          |6          |7          |8          
+ij> select b, d from (values (1, 2, 3, 4) union all values (5, 6, 7, 8)) a (a, b, c, d);
+B          |D          
+-----------------------
+2          |4          
+6          |8          
+ij> select * from (select i, s, c10, vc10 from t1 union all select i, s, c10, vc10 from t2) a;
+I          |S     |C10       |VC10      
+----------------------------------------
+NULL       |NULL  |NULL      |NULL      
+1          |1     |11111     |11111     
+2          |2     |22222     |22222     
+NULL       |NULL  |NULL      |NULL      
+3          |3     |33333     |33333     
+4          |4     |44444     |44444     
+ij> select * from (select i, s, c10, vc10 from t1 union all 
+			   select i, s, c10, vc10 from t2) a (j, k, l, m), 
+			   (select i, s, c10, vc10 from t1 union all 
+			   select i, s, c10, vc10 from t2) b (j, k, l, m)
+where a.j = b.j;
+J          |K     |L         |M         |J          |K     |L         |M         
+---------------------------------------------------------------------------------
+1          |1     |11111     |11111     |1          |1     |11111     |11111     
+2          |2     |22222     |22222     |2          |2     |22222     |22222     
+3          |3     |33333     |33333     |3          |3     |33333     |33333     
+4          |4     |44444     |44444     |4          |4     |44444     |44444     
+ij> -- joins
+select a.i, b.i from t1 a, t2 b union all select b.i, a.i from t1 a, t2 b;
+I          |I          
+-----------------------
+NULL       |NULL       
+NULL       |3          
+NULL       |4          
+1          |NULL       
+1          |3          
+1          |4          
+2          |NULL       
+2          |3          
+2          |4          
+NULL       |NULL       
+3          |NULL       
+4          |NULL       
+NULL       |1          
+3          |1          
+4          |1          
+NULL       |2          
+3          |2          
+4          |2          
+ij> values (9, 10) union all 
+	select a.i, b.i from t1 a, t2 b union all select b.i, a.i from t1 a, t2 b;
+1          |2          
+-----------------------
+9          |10         
+NULL       |NULL       
+NULL       |3          
+NULL       |4          
+1          |NULL       
+1          |3          
+1          |4          
+2          |NULL       
+2          |3          
+2          |4          
+NULL       |NULL       
+3          |NULL       
+4          |NULL       
+NULL       |1          
+3          |1          
+4          |1          
+NULL       |2          
+3          |2          
+4          |2          
+ij> select a.i, b.i from t1 a, t2 b union all 
+	select b.i, a.i from t1 a, t2 b union all values (9, 10);
+1          |2          
+-----------------------
+NULL       |NULL       
+NULL       |3          
+NULL       |4          
+1          |NULL       
+1          |3          
+1          |4          
+2          |NULL       
+2          |3          
+2          |4          
+NULL       |NULL       
+3          |NULL       
+4          |NULL       
+NULL       |1          
+3          |1          
+4          |1          
+NULL       |2          
+3          |2          
+4          |2          
+9          |10         
+ij> -- incompatible types
+select date('9999-11-11') from t1 union all select time('11:11:11') from t2;
+ERROR 42X61: Types 'DATE' and 'TIME' are not UNION compatible.
+ij> -- non-correlated subqueries
+-- negative tests
+-- select * in subquery
+select i from t1 where i = (select * from t2 union all select 1 from t1);
+ERROR 42X38: 'SELECT *' only allowed in EXISTS and NOT EXISTS subqueries.
+ij> select i from t1 where i = (select 1 from t2 union all select * from t1);
+ERROR 42X38: 'SELECT *' only allowed in EXISTS and NOT EXISTS subqueries.
+ij> -- too many columns
+select i from t1 where i = (values (1, 2, 3) union all values (1, 2, 3));
+ERROR 42X39: Subquery is only allowed to return a single column.
+ij> select i from t1 where i = (select i, s from t2 union all select i, s from t1);
+ERROR 42X39: Subquery is only allowed to return a single column.
+ij> -- cardinality violation
+select i from t1 where i = (values 1 union all values 1);
+ERROR 21000: Scalar subquery is only allowed to return a single row.
+ij> -- both sides of union have same type, which is incompatible with LHS
+select i from t1 where i in (select date('1999-02-04') from t2 union all select date('1999-03-08') from t2);
+ERROR 42818: Comparisons between 'INTEGER' and 'DATE' are not supported.
+ij> -- positive tests
+-- expression subquery
+select i from t1 where i = (select i from t2 where 1 = 0 union all values 1);
+I          
+-----------
+1          
+ij> -- in subquery
+select i from t1 where i in (select i from t2 union all values 1 union all values 2);
+I          
+-----------
+1          
+2          
+ij> select i from t1 where i in 
+		(select a from (select i from t2 union all values 1 union all values 2) a (a));
+I          
+-----------
+1          
+2          
+ij> -- not in subquery
+select i from t1 where i not in (select i from t2 union all values 1 union all values 2);
+I          
+-----------
+ij> select i from t1 where i not in (select i from t2 where i is not null union all 
+								 values 1 union all values 22);
+I          
+-----------
+2          
+ij> select i from t1 where i not in 
+		(select a from (select i from t2 where i is not null union all 
+						values 111 union all values 2) a (a));
+I          
+-----------
+1          
+ij> -- correlated union subquery
+select i from t1 a where i in (select i from t2 where 1 = 0 union all
+							   select a.i from t2 where a.i < i);
+I          
+-----------
+1          
+2          
+ij> select i from t1 a where i in (select a.i from t2 where a.i < i union all
+							   select i from t2 where 1 < 0);
+I          
+-----------
+1          
+2          
+ij> -- exists subquery
+select i from t1 where exists (select * from t2 union all select * from t2);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select i from t1 where exists (select 1 from t2 union all select 2 from t2);
+I          
+-----------
+NULL       
+1          
+2          
+ij> select i from t1 where exists (select 1 from t2 where 1 = 0 union all
+							   select * from t2 where t1.i < i);
+I          
+-----------
+1          
+2          
+ij> select i from t1 where exists (select i from t2 where t1.i < i union all
+							    select * from t2 where 1 = 0 union all
+							   select * from t2 where t1.i < i union all
+							    select i from t2 where 1 = 0);
+I          
+-----------
+1          
+2          
+ij> -- insert tests
+create table insert_test (i int, s smallint, d double precision, r real, c10 char(10),
+				 c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> -- simple tests
+insert into insert_test select * from t1 union all select * from t2;
+6 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+1          |1     |10.0                  |10.0         |11111     |11111     11                  |11111     |11111      11                 
+2          |2     |20.0                  |20.0         |22222     |22222     22                  |22222     |22222      22                 
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |3     |30.0                  |30.0         |33333     |33333     33                  |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444     44                  |44444     |44444      44                 
+ij> delete from insert_test;
+6 rows inserted/updated/deleted
+ij> insert into insert_test (s, i) values (2, 1) union all values (4, 3);
+2 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |2     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |4     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test;
+2 rows inserted/updated/deleted
+ij> -- type conversions between union all and target table
+insert into insert_test select s, i, r, d, vc10, vc30, c10, c30 from t1 union all
+						select s, i, r, d, vc10, vc30, c10, vc30 from t2;
+6 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+1          |1     |10.0                  |10.0         |11111     |11111      11                 |11111     |11111     11                  
+2          |2     |20.0                  |20.0         |22222     |22222      22                 |22222     |22222     22                  
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |3     |30.0                  |30.0         |33333     |33333      33                 |33333     |33333      33                 
+4          |4     |40.0                  |40.0         |44444     |44444      44                 |44444     |44444      44                 
+ij> delete from insert_test;
+6 rows inserted/updated/deleted
+ij> -- test type dominance/length/nullability
+select vc10 from t1 union all select c30 from t2;
+1                             
+------------------------------
+NULL                          
+11111                         
+22222                         
+NULL                          
+33333     33                  
+44444     44                  
+ij> insert into insert_test (vc30) select vc10 from t1 union all select c30 from t2;
+6 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |11111                         
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |22222                         
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |33333     33                  
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |44444     44                  
+ij> delete from insert_test;
+6 rows inserted/updated/deleted
+ij> insert into insert_test (c30)
+	select vc10 from t1
+	union all
+	select c30 from t2
+	union all
+	select c10 from t1;
+9 rows inserted/updated/deleted
+ij> select * from insert_test;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |11111                         |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |22222                         |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |33333     33                  |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |44444     44                  |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |11111                         |NULL      |NULL                          
+NULL       |NULL  |NULL                  |NULL         |NULL      |22222                         |NULL      |NULL                          
+ij> delete from insert_test;
+9 rows inserted/updated/deleted
+ij> -- test NormalizeResultSet generation
+select i, d from t1 union all select d, i from t2;
+1                     |2                     
+---------------------------------------------
+NULL                  |NULL                  
+1.0                   |10.0                  
+2.0                   |20.0                  
+NULL                  |NULL                  
+30.0                  |3.0                   
+40.0                  |4.0                   
+ij> select vc10, c30 from t1 union all select c30,  vc10 from t2;
+1                             |2                             
+-------------------------------------------------------------
+NULL                          |NULL                          
+11111                         |11111     11                  
+22222                         |22222     22                  
+NULL                          |NULL                          
+33333     33                  |33333                         
+44444     44                  |44444                         
+ij> create table insert_test2 (s smallint not null, vc30 varchar(30) not null);
+0 rows inserted/updated/deleted
+ij> -- the following should fail due to null constraint
+insert into insert_test2 select s, c10 from t1 union all select s, c30 from t2;
+ERROR 23502: Column 'S'  cannot accept a NULL value.
+ij> select * from insert_test2;
+S     |VC30                          
+-------------------------------------
+ij> -- negative tests
+-- ? in select list of union
+select ? from insert_test union all select vc30 from insert_test;
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> select vc30 from insert_test union all select ? from insert_test;
+ERROR 42X34: There is a ? parameter in the select list.  This is not allowed.
+ij> -- DB2 requires matching target and result columns
+insert into insert_test values (1, 2) union all values (3, 4);
+ERROR 42802: The number of values assigned is not the same as the number of specified or implied columns.
+ij> -- Beetle 4454 - test multiple union alls in a subquery
+select vc10 from (select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1) t;
+VC10      
+----------
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+ij> -- force union all on right side
+select vc10 from (select vc10 from t1 union all (select vc10 from t1 union all
+select vc10 from t1)) t;
+VC10      
+----------
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+NULL      
+11111     
+22222     
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table insert_test;
+0 rows inserted/updated/deleted
+ij> drop table insert_test2;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/unlimited.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/unlimited.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,36 @@
+ij> -- This tests whether we are prevented from creating more than 15 tables
+-- in the standard (unlimited) version of the product.
+--
+create table t1 (x int);
+0 rows inserted/updated/deleted
+ij> create table t2 (x int);
+0 rows inserted/updated/deleted
+ij> create table t3 (x int);
+0 rows inserted/updated/deleted
+ij> create table t4 (x int);
+0 rows inserted/updated/deleted
+ij> create table t5 (x int);
+0 rows inserted/updated/deleted
+ij> create table t6 (x int);
+0 rows inserted/updated/deleted
+ij> create table t7 (x int);
+0 rows inserted/updated/deleted
+ij> create table t8 (x int);
+0 rows inserted/updated/deleted
+ij> create table t9 (x int);
+0 rows inserted/updated/deleted
+ij> create table t10 (x int);
+0 rows inserted/updated/deleted
+ij> create table t11 (x int);
+0 rows inserted/updated/deleted
+ij> create table t12 (x int);
+0 rows inserted/updated/deleted
+ij> create table t13 (x int);
+0 rows inserted/updated/deleted
+ij> create table t14 (x int);
+0 rows inserted/updated/deleted
+ij> create table t15 (x int);
+0 rows inserted/updated/deleted
+ij> create table t16 (x int);
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/update.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/update.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,439 @@
+ij> --
+-- this test is for basic update functionality
+--
+-- create the table
+create table t1 (int_col int, smallint_col smallint, char_30_col char(30),
+		 varchar_50_col varchar(50));
+0 rows inserted/updated/deleted
+ij> create table t2 (int_col int, smallint_col smallint, char_30_col char(30),
+		 varchar_50_col varchar(50));
+0 rows inserted/updated/deleted
+ij> -- populate t1
+insert into t1 values (1, 2, 'char_30_col', 'varchar_50_col');
+1 row inserted/updated/deleted
+ij> insert into t1 values (null, null, null, null);
+1 row inserted/updated/deleted
+ij> insert into t2 select * from t1;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+1          |2     |char_30_col                   |varchar_50_col                                    
+NULL       |NULL  |NULL                          |NULL                                              
+ij> -- update with constants
+update t1 set int_col = 3, smallint_col = 4, char_30_col = 'CHAR_30_COL',
+	      varchar_50_col = 'VARCHAR_50_COL';
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+3          |4     |CHAR_30_COL                   |VARCHAR_50_COL                                    
+3          |4     |CHAR_30_COL                   |VARCHAR_50_COL                                    
+ij> update t1 set varchar_50_col = null, char_30_col = null, smallint_col = null,
+	      int_col = null;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+NULL       |NULL  |NULL                          |NULL                                              
+NULL       |NULL  |NULL                          |NULL                                              
+ij> update t1 set smallint_col = 6, int_col = 5, varchar_50_col = 'varchar_50_col',
+	      char_30_col = 'char_30_col';
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+5          |6     |char_30_col                   |varchar_50_col                                    
+5          |6     |char_30_col                   |varchar_50_col                                    
+ij> -- update columns with column values
+update t1 set smallint_col = int_col, int_col = smallint_col,
+	      varchar_50_col = char_30_col, char_30_col = varchar_50_col;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+6          |5     |varchar_50_col                |char_30_col                                       
+6          |5     |varchar_50_col                |char_30_col                                       
+ij> update t1 set int_col = int_col, smallint_col = smallint_col,
+	      char_30_col = char_30_col, varchar_50_col = varchar_50_col;
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+6          |5     |varchar_50_col                |char_30_col                                       
+6          |5     |varchar_50_col                |char_30_col                                       
+ij> -- Negative test - column in SET clause twice
+update t1 set int_col = 1, int_col = 2;
+ERROR 42X16: Column name 'INT_COL' appears multiple times in the SET clause of an update statement.
+ij> -- Negative test - non-existent column in SET clause
+update t1 set notacolumn = int_col + 1;
+ERROR 42X14: 'NOTACOLUMN' is not a column in table or VTI 'APP.T1'.
+ij> -- target table in source - deferred update
+--
+-- first, populate table
+delete from t1;
+2 rows inserted/updated/deleted
+ij> insert into t1 values (1, 1, 'one', 'one');
+1 row inserted/updated/deleted
+ij> insert into t1 values (2, 2, 'two', 'two');
+1 row inserted/updated/deleted
+ij> delete from t2;
+2 rows inserted/updated/deleted
+ij> insert into t2 select * from t1;
+2 rows inserted/updated/deleted
+ij> autocommit off;
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+1          |1     |one                           |one                                               
+2          |2     |two                           |two                                               
+ij> update t1 set int_col =
+	(select t1.int_col
+	 from t1, t2
+	 where t1.int_col = t2.int_col and t1.int_col = 1);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+1          |1     |one                           |one                                               
+1          |2     |two                           |two                                               
+ij> rollback;
+ij> update t1 set int_col =
+	(select
+		(select int_col
+		 from t1
+		 where int_col = 2)
+	 from t2
+	 where int_col = 1);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+2          |1     |one                           |one                                               
+2          |2     |two                           |two                                               
+ij> rollback;
+ij> update t1 set int_col =
+	(select 1
+	 from t2
+	 where int_col = 2
+	 and 1 in
+		(select int_col
+		 from t1)
+	);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+1          |1     |one                           |one                                               
+1          |2     |two                           |two                                               
+ij> rollback;
+ij> update t1 set int_col =
+	(select int_col
+	 from
+		(select int_col
+		 from t1) a
+	 where int_col = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+2          |1     |one                           |one                                               
+2          |2     |two                           |two                                               
+ij> rollback;
+ij> update t1 set int_col =
+	(select int_col
+	 from t2
+	 where int_col = 37
+	union
+	 select int_col
+	 from t1
+	 where int_col = 2);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+2          |1     |one                           |one                                               
+2          |2     |two                           |two                                               
+ij> rollback;
+ij> update t1 set int_col =
+	(select int_col
+	 from t2
+	 where int_col = 37
+	union
+	 select int_col
+	 from
+		(select int_col
+		 from t1
+		 where int_col = 2) a
+	);
+2 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+2          |1     |one                           |one                                               
+2          |2     |two                           |two                                               
+ij> rollback;
+ij> -- single-row deferred update
+update t1 set int_col =
+	(select int_col
+	 from t1
+	 where int_col = 1)
+where int_col = 2;
+1 row inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+1          |1     |one                           |one                                               
+1          |2     |two                           |two                                               
+ij> rollback;
+ij> -- zero-row deferred update - degenerate case
+update t1 set int_col =
+	(select int_col
+	 from t1
+	 where int_col = 1)
+where int_col = 37;
+0 rows inserted/updated/deleted
+ij> select * from t1;
+INT_COL    |SMALL&|CHAR_30_COL                   |VARCHAR_50_COL                                    
+----------------------------------------------------------------------------------------------------
+1          |1     |one                           |one                                               
+2          |2     |two                           |two                                               
+ij> rollback;
+ij> autocommit on;
+ij> -- drop the table
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> -- Show whether update is statement atomic or not
+create table s (s smallint, i int);
+0 rows inserted/updated/deleted
+ij> insert into s values (1, 1);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 65337);
+1 row inserted/updated/deleted
+ij> insert into s values (1, 1);
+1 row inserted/updated/deleted
+ij> select * from s;
+S     |I          
+------------------
+1     |1          
+1     |65337      
+1     |1          
+ij> -- this should fail and no rows should change
+update s set s=s+i;
+ERROR 22003: The resulting value is outside the range for the data type SMALLINT.
+ij> -- this select should have the same results as the previous one.
+select * from s;
+S     |I          
+------------------
+1     |1          
+1     |65337      
+1     |1          
+ij> -- Show that the table name can be used on the set column
+update s set s.s=3;
+3 rows inserted/updated/deleted
+ij> -- and that it must match the target table
+update s set t.s=4;
+ERROR 42X55: Table name 'T' should be the same as 'S'.
+ij> select * from s;
+S     |I          
+------------------
+3     |1          
+3     |65337      
+3     |1          
+ij> -- do some partial updates
+create table t1 (c1 char(250), c2 varchar(100), c3 varchar(100));
+0 rows inserted/updated/deleted
+ij> insert into t1 values ('a', 'b', 'c');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('a', 'b', 'c');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('a', 'b', 'c');
+1 row inserted/updated/deleted
+ij> insert into t1 values ('a', 'b', 'c');
+1 row inserted/updated/deleted
+ij> update t1 set c1 = '1st';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+1st  |b    |c    
+1st  |b    |c    
+1st  |b    |c    
+1st  |b    |c    
+ij> update t1 set c2 = '2nd';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+1st  |2nd  |c    
+1st  |2nd  |c    
+1st  |2nd  |c    
+1st  |2nd  |c    
+ij> update t1 set c3 = '3rd';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+1st  |2nd  |3rd  
+1st  |2nd  |3rd  
+1st  |2nd  |3rd  
+1st  |2nd  |3rd  
+ij> update t1 set c3 = '4th', c2 = '4th';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+1st  |4th  |4th  
+1st  |4th  |4th  
+1st  |4th  |4th  
+1st  |4th  |4th  
+ij> update t1 set c1 = '5th', c3 = '5th';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+5th  |4th  |5th  
+5th  |4th  |5th  
+5th  |4th  |5th  
+5th  |4th  |5th  
+ij> update t1 set c2 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+5th  |expan|5th  
+5th  |expan|5th  
+5th  |expan|5th  
+5th  |expan|5th  
+ij> update t1 set c3 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+5th  |expan|expan
+5th  |expan|expan
+5th  |expan|expan
+5th  |expan|expan
+ij> update t1 set c2 = 'shrink';
+4 rows inserted/updated/deleted
+ij> update t1 set c3 = 'shrink';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+5th  |shrin|shrin
+5th  |shrin|shrin
+5th  |shrin|shrin
+5th  |shrin|shrin
+ij> update t1 set c2 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
+			c3 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+4 rows inserted/updated/deleted
+ij> select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+1    |2    |3    
+-----------------
+5th  |expan|expan
+5th  |expan|expan
+5th  |expan|expan
+5th  |expan|expan
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values (1,2,3,4,5,6,7,8,9);
+1 row inserted/updated/deleted
+ij> update t1 set c3 = 33, c5 = 55, c6 = 666, c8 = 88;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         |C3         |C4         |C5         |C6         |C7         |C8         |C9         
+-----------------------------------------------------------------------------------------------------------
+1          |2          |33         |4          |55         |666        |7          |88         |9          
+ij> update t1 set c9 = 99;
+1 row inserted/updated/deleted
+ij> select * from t1;
+C1         |C2         |C3         |C4         |C5         |C6         |C7         |C8         |C9         
+-----------------------------------------------------------------------------------------------------------
+1          |2          |33         |4          |55         |666        |7          |88         |99         
+ij> drop table t1;
+0 rows inserted/updated/deleted
+ij> --
+-- here we test extra state lying around in the
+-- deleteResultSet on a prepared statement that
+-- is executed multiple times.  if we don't
+-- get a nasty error then we are ok
+--
+create table x (x int, y int);
+0 rows inserted/updated/deleted
+ij> create index ix on x(x);
+0 rows inserted/updated/deleted
+ij> create index iy on x(y);
+0 rows inserted/updated/deleted
+ij> insert into x values (1,1),(2,2),(3,3);
+3 rows inserted/updated/deleted
+ij> autocommit off;
+ij> prepare p as 'update x set x = x where x = ? and y = ?';
+ij> execute p using 'values (1,1)';
+1 row inserted/updated/deleted
+ij> execute p using 'values (2,2)';
+1 row inserted/updated/deleted
+ij> commit;
+ij> -- test extra state in update 
+get cursor c1 as 'select * from x for update of x';
+ij> prepare p1 as 'update x set x = x where current of c1';
+ij> execute p1;
+ERROR XCL08: Cursor 'C1' is not on a row.
+ij> next c1;
+X          |Y          
+-----------------------
+1          |1          
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> next c1;
+X          |Y          
+-----------------------
+2          |2          
+ij> next c1;
+X          |Y          
+-----------------------
+3          |3          
+ij> execute p1;
+1 row inserted/updated/deleted
+ij> close c1;
+ij> execute p1;
+ERROR XCL07: Cursor 'C1' is closed. Verify that autocommit is OFF.
+ij> -- clean up
+autocommit on;
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> -- bug 4318, possible deadlock if table first has IX, then X table lock; make
+-- sure you don't have IX table lock and X table lock at the same time
+create table tab1 (c1 int not null primary key, c2 int);
+0 rows inserted/updated/deleted
+ij> insert into tab1 values (1, 8);
+1 row inserted/updated/deleted
+ij> autocommit off;
+ij> -- default read committed isolation level
+update tab1 set c2 = c2 + 3 where c1 = 1;
+1 row inserted/updated/deleted
+ij> select type, mode from new org.apache.derby.diag.LockTable() as lockstable where tablename = 'TAB1' order by type;
+TYPE |MODE
+----------
+ROW  |X   
+TABLE|IX  
+ij> rollback;
+ij> -- serializable isolation level
+set current isolation to SERIALIZABLE;
+0 rows inserted/updated/deleted
+ij> update tab1 set c2 = c2 + 3 where c1 = 1;
+1 row inserted/updated/deleted
+ij> select type, mode from new org.apache.derby.diag.LockTable() as lockstable where tablename = 'TAB1' order by type;
+TYPE |MODE
+----------
+ROW  |X   
+TABLE|IX  
+ij> rollback;
+ij> autocommit on;
+ij> drop table tab1;
+0 rows inserted/updated/deleted
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/updateCursor.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/updateCursor.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2584 @@
+Test updateable cursor using index starting
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: expected and got 5 rows
+PASS: setup complete
+************************************TESTING VIRTUAL MEM HEAP*********
+Notice the order in the rows we get: from 2 to 102 asc order on second column (c3)
+then from 202 down to 103 on that column; then from 203 up to 250.  The reason is
+we are using asc index on c3, all the rows updated are in the future direction of the
+index scan, so they all get filled into a hash table.  The MAX_MEMORY_PER_TABLE
+property determines max cap of hash table 100.  So from row 103 it goes into virtual
+memory heap, whose in memory part is also 100 entries.  So row 103 to 202 goes into
+the in-memory part and gets dumped out in reverse order.  Finally Row 203 to 250
+goes into file system.  Here we mean row ids.
+PASS: expected and got true
+Row: 4,2
+PASS: expected and got true
+Row: 3,3
+PASS: expected and got true
+Row: 2,4
+PASS: expected and got true
+Row: 1,5
+PASS: expected and got true
+Row: 10,6
+PASS: expected and got true
+Row: 9,7
+PASS: expected and got true
+Row: 8,8
+PASS: expected and got true
+Row: 7,9
+PASS: expected and got true
+Row: 6,10
+PASS: expected and got true
+Row: 15,11
+PASS: expected and got true
+Row: 14,12
+PASS: expected and got true
+Row: 13,13
+PASS: expected and got true
+Row: 12,14
+PASS: expected and got true
+Row: 11,15
+PASS: expected and got true
+Row: 20,16
+PASS: expected and got true
+Row: 19,17
+PASS: expected and got true
+Row: 18,18
+PASS: expected and got true
+Row: 17,19
+PASS: expected and got true
+Row: 16,20
+PASS: expected and got true
+Row: 25,21
+PASS: expected and got true
+Row: 24,22
+PASS: expected and got true
+Row: 23,23
+PASS: expected and got true
+Row: 22,24
+PASS: expected and got true
+Row: 21,25
+PASS: expected and got true
+Row: 30,26
+PASS: expected and got true
+Row: 29,27
+PASS: expected and got true
+Row: 28,28
+PASS: expected and got true
+Row: 27,29
+PASS: expected and got true
+Row: 26,30
+PASS: expected and got true
+Row: 35,31
+PASS: expected and got true
+Row: 34,32
+PASS: expected and got true
+Row: 33,33
+PASS: expected and got true
+Row: 32,34
+PASS: expected and got true
+Row: 31,35
+PASS: expected and got true
+Row: 40,36
+PASS: expected and got true
+Row: 39,37
+PASS: expected and got true
+Row: 38,38
+PASS: expected and got true
+Row: 37,39
+PASS: expected and got true
+Row: 36,40
+PASS: expected and got true
+Row: 45,41
+PASS: expected and got true
+Row: 44,42
+PASS: expected and got true
+Row: 43,43
+PASS: expected and got true
+Row: 42,44
+PASS: expected and got true
+Row: 41,45
+PASS: expected and got true
+Row: 50,46
+PASS: expected and got true
+Row: 49,47
+PASS: expected and got true
+Row: 48,48
+PASS: expected and got true
+Row: 47,49
+PASS: expected and got true
+Row: 46,50
+PASS: expected and got true
+Row: 55,51
+PASS: expected and got true
+Row: 54,52
+PASS: expected and got true
+Row: 53,53
+PASS: expected and got true
+Row: 52,54
+PASS: expected and got true
+Row: 51,55
+PASS: expected and got true
+Row: 60,56
+PASS: expected and got true
+Row: 59,57
+PASS: expected and got true
+Row: 58,58
+PASS: expected and got true
+Row: 57,59
+PASS: expected and got true
+Row: 56,60
+PASS: expected and got true
+Row: 65,61
+PASS: expected and got true
+Row: 64,62
+PASS: expected and got true
+Row: 63,63
+PASS: expected and got true
+Row: 62,64
+PASS: expected and got true
+Row: 61,65
+PASS: expected and got true
+Row: 70,66
+PASS: expected and got true
+Row: 69,67
+PASS: expected and got true
+Row: 68,68
+PASS: expected and got true
+Row: 67,69
+PASS: expected and got true
+Row: 66,70
+PASS: expected and got true
+Row: 75,71
+PASS: expected and got true
+Row: 74,72
+PASS: expected and got true
+Row: 73,73
+PASS: expected and got true
+Row: 72,74
+PASS: expected and got true
+Row: 71,75
+PASS: expected and got true
+Row: 80,76
+PASS: expected and got true
+Row: 79,77
+PASS: expected and got true
+Row: 78,78
+PASS: expected and got true
+Row: 77,79
+PASS: expected and got true
+Row: 76,80
+PASS: expected and got true
+Row: 85,81
+PASS: expected and got true
+Row: 84,82
+PASS: expected and got true
+Row: 83,83
+PASS: expected and got true
+Row: 82,84
+PASS: expected and got true
+Row: 81,85
+PASS: expected and got true
+Row: 90,86
+PASS: expected and got true
+Row: 89,87
+PASS: expected and got true
+Row: 88,88
+PASS: expected and got true
+Row: 87,89
+PASS: expected and got true
+Row: 86,90
+PASS: expected and got true
+Row: 95,91
+PASS: expected and got true
+Row: 94,92
+PASS: expected and got true
+Row: 93,93
+PASS: expected and got true
+Row: 92,94
+PASS: expected and got true
+Row: 91,95
+PASS: expected and got true
+Row: 100,96
+PASS: expected and got true
+Row: 99,97
+PASS: expected and got true
+Row: 98,98
+PASS: expected and got true
+Row: 97,99
+PASS: expected and got true
+Row: 96,100
+PASS: expected and got true
+Row: 105,101
+PASS: expected and got true
+Row: 104,102
+PASS: expected and got true
+Row: 204,202
+PASS: expected and got true
+Row: 205,201
+PASS: expected and got true
+Row: 196,200
+PASS: expected and got true
+Row: 197,199
+PASS: expected and got true
+Row: 198,198
+PASS: expected and got true
+Row: 199,197
+PASS: expected and got true
+Row: 200,196
+PASS: expected and got true
+Row: 191,195
+PASS: expected and got true
+Row: 192,194
+PASS: expected and got true
+Row: 193,193
+PASS: expected and got true
+Row: 194,192
+PASS: expected and got true
+Row: 195,191
+PASS: expected and got true
+Row: 186,190
+PASS: expected and got true
+Row: 187,189
+PASS: expected and got true
+Row: 188,188
+PASS: expected and got true
+Row: 189,187
+PASS: expected and got true
+Row: 190,186
+PASS: expected and got true
+Row: 181,185
+PASS: expected and got true
+Row: 182,184
+PASS: expected and got true
+Row: 183,183
+PASS: expected and got true
+Row: 184,182
+PASS: expected and got true
+Row: 185,181
+PASS: expected and got true
+Row: 176,180
+PASS: expected and got true
+Row: 177,179
+PASS: expected and got true
+Row: 178,178
+PASS: expected and got true
+Row: 179,177
+PASS: expected and got true
+Row: 180,176
+PASS: expected and got true
+Row: 171,175
+PASS: expected and got true
+Row: 172,174
+PASS: expected and got true
+Row: 173,173
+PASS: expected and got true
+Row: 174,172
+PASS: expected and got true
+Row: 175,171
+PASS: expected and got true
+Row: 166,170
+PASS: expected and got true
+Row: 167,169
+PASS: expected and got true
+Row: 168,168
+PASS: expected and got true
+Row: 169,167
+PASS: expected and got true
+Row: 170,166
+PASS: expected and got true
+Row: 161,165
+PASS: expected and got true
+Row: 162,164
+PASS: expected and got true
+Row: 163,163
+PASS: expected and got true
+Row: 164,162
+PASS: expected and got true
+Row: 165,161
+PASS: expected and got true
+Row: 156,160
+PASS: expected and got true
+Row: 157,159
+PASS: expected and got true
+Row: 158,158
+PASS: expected and got true
+Row: 159,157
+PASS: expected and got true
+Row: 160,156
+PASS: expected and got true
+Row: 151,155
+PASS: expected and got true
+Row: 152,154
+PASS: expected and got true
+Row: 153,153
+PASS: expected and got true
+Row: 154,152
+PASS: expected and got true
+Row: 155,151
+PASS: expected and got true
+Row: 146,150
+PASS: expected and got true
+Row: 147,149
+PASS: expected and got true
+Row: 148,148
+PASS: expected and got true
+Row: 149,147
+PASS: expected and got true
+Row: 150,146
+PASS: expected and got true
+Row: 141,145
+PASS: expected and got true
+Row: 142,144
+PASS: expected and got true
+Row: 143,143
+PASS: expected and got true
+Row: 144,142
+PASS: expected and got true
+Row: 145,141
+PASS: expected and got true
+Row: 136,140
+PASS: expected and got true
+Row: 137,139
+PASS: expected and got true
+Row: 138,138
+PASS: expected and got true
+Row: 139,137
+PASS: expected and got true
+Row: 140,136
+PASS: expected and got true
+Row: 131,135
+PASS: expected and got true
+Row: 132,134
+PASS: expected and got true
+Row: 133,133
+PASS: expected and got true
+Row: 134,132
+PASS: expected and got true
+Row: 135,131
+PASS: expected and got true
+Row: 126,130
+PASS: expected and got true
+Row: 127,129
+PASS: expected and got true
+Row: 128,128
+PASS: expected and got true
+Row: 129,127
+PASS: expected and got true
+Row: 130,126
+PASS: expected and got true
+Row: 121,125
+PASS: expected and got true
+Row: 122,124
+PASS: expected and got true
+Row: 123,123
+PASS: expected and got true
+Row: 124,122
+PASS: expected and got true
+Row: 125,121
+PASS: expected and got true
+Row: 116,120
+PASS: expected and got true
+Row: 117,119
+PASS: expected and got true
+Row: 118,118
+PASS: expected and got true
+Row: 119,117
+PASS: expected and got true
+Row: 120,116
+PASS: expected and got true
+Row: 111,115
+PASS: expected and got true
+Row: 112,114
+PASS: expected and got true
+Row: 113,113
+PASS: expected and got true
+Row: 114,112
+PASS: expected and got true
+Row: 115,111
+PASS: expected and got true
+Row: 106,110
+PASS: expected and got true
+Row: 107,109
+PASS: expected and got true
+Row: 108,108
+PASS: expected and got true
+Row: 109,107
+PASS: expected and got true
+Row: 110,106
+PASS: expected and got true
+Row: 101,105
+PASS: expected and got true
+Row: 102,104
+PASS: expected and got true
+Row: 103,103
+PASS: expected and got true
+Row: 203,203
+PASS: expected and got true
+Row: 202,204
+PASS: expected and got true
+Row: 201,205
+PASS: expected and got true
+Row: 210,206
+PASS: expected and got true
+Row: 209,207
+PASS: expected and got true
+Row: 208,208
+PASS: expected and got true
+Row: 207,209
+PASS: expected and got true
+Row: 206,210
+PASS: expected and got true
+Row: 215,211
+PASS: expected and got true
+Row: 214,212
+PASS: expected and got true
+Row: 213,213
+PASS: expected and got true
+Row: 212,214
+PASS: expected and got true
+Row: 211,215
+PASS: expected and got true
+Row: 220,216
+PASS: expected and got true
+Row: 219,217
+PASS: expected and got true
+Row: 218,218
+PASS: expected and got true
+Row: 217,219
+PASS: expected and got true
+Row: 216,220
+PASS: expected and got true
+Row: 225,221
+PASS: expected and got true
+Row: 224,222
+PASS: expected and got true
+Row: 223,223
+PASS: expected and got true
+Row: 222,224
+PASS: expected and got true
+Row: 221,225
+PASS: expected and got true
+Row: 230,226
+PASS: expected and got true
+Row: 229,227
+PASS: expected and got true
+Row: 228,228
+PASS: expected and got true
+Row: 227,229
+PASS: expected and got true
+Row: 226,230
+PASS: expected and got true
+Row: 235,231
+PASS: expected and got true
+Row: 234,232
+PASS: expected and got true
+Row: 233,233
+PASS: expected and got true
+Row: 232,234
+PASS: expected and got true
+Row: 231,235
+PASS: expected and got true
+Row: 240,236
+PASS: expected and got true
+Row: 239,237
+PASS: expected and got true
+Row: 238,238
+PASS: expected and got true
+Row: 237,239
+PASS: expected and got true
+Row: 236,240
+PASS: expected and got true
+Row: 245,241
+PASS: expected and got true
+Row: 244,242
+PASS: expected and got true
+Row: 243,243
+PASS: expected and got true
+Row: 242,244
+PASS: expected and got true
+Row: 241,245
+PASS: expected and got true
+Row: 250,246
+PASS: expected and got true
+Row: 249,247
+PASS: expected and got true
+Row: 248,248
+PASS: expected and got true
+Row: 247,249
+PASS: expected and got true
+Row: 246,250
+UPDATE WITH VIRTUAL MEM HEAP: got 249 rows
+************ See what we have in table:
+PASS: expected and got true
+Row: 5,1
+PASS: expected and got true
+Row: 4,252
+PASS: expected and got true
+Row: 3,253
+PASS: expected and got true
+Row: 2,254
+PASS: expected and got true
+Row: 1,255
+PASS: expected and got true
+Row: 10,256
+PASS: expected and got true
+Row: 9,257
+PASS: expected and got true
+Row: 8,258
+PASS: expected and got true
+Row: 7,259
+PASS: expected and got true
+Row: 6,260
+PASS: expected and got true
+Row: 15,261
+PASS: expected and got true
+Row: 14,262
+PASS: expected and got true
+Row: 13,263
+PASS: expected and got true
+Row: 12,264
+PASS: expected and got true
+Row: 11,265
+PASS: expected and got true
+Row: 20,266
+PASS: expected and got true
+Row: 19,267
+PASS: expected and got true
+Row: 18,268
+PASS: expected and got true
+Row: 17,269
+PASS: expected and got true
+Row: 16,270
+PASS: expected and got true
+Row: 25,271
+PASS: expected and got true
+Row: 24,272
+PASS: expected and got true
+Row: 23,273
+PASS: expected and got true
+Row: 22,274
+PASS: expected and got true
+Row: 21,275
+PASS: expected and got true
+Row: 30,276
+PASS: expected and got true
+Row: 29,277
+PASS: expected and got true
+Row: 28,278
+PASS: expected and got true
+Row: 27,279
+PASS: expected and got true
+Row: 26,280
+PASS: expected and got true
+Row: 35,281
+PASS: expected and got true
+Row: 34,282
+PASS: expected and got true
+Row: 33,283
+PASS: expected and got true
+Row: 32,284
+PASS: expected and got true
+Row: 31,285
+PASS: expected and got true
+Row: 40,286
+PASS: expected and got true
+Row: 39,287
+PASS: expected and got true
+Row: 38,288
+PASS: expected and got true
+Row: 37,289
+PASS: expected and got true
+Row: 36,290
+PASS: expected and got true
+Row: 45,291
+PASS: expected and got true
+Row: 44,292
+PASS: expected and got true
+Row: 43,293
+PASS: expected and got true
+Row: 42,294
+PASS: expected and got true
+Row: 41,295
+PASS: expected and got true
+Row: 50,296
+PASS: expected and got true
+Row: 49,297
+PASS: expected and got true
+Row: 48,298
+PASS: expected and got true
+Row: 47,299
+PASS: expected and got true
+Row: 46,300
+PASS: expected and got true
+Row: 55,301
+PASS: expected and got true
+Row: 54,302
+PASS: expected and got true
+Row: 53,303
+PASS: expected and got true
+Row: 52,304
+PASS: expected and got true
+Row: 51,305
+PASS: expected and got true
+Row: 60,306
+PASS: expected and got true
+Row: 59,307
+PASS: expected and got true
+Row: 58,308
+PASS: expected and got true
+Row: 57,309
+PASS: expected and got true
+Row: 56,310
+PASS: expected and got true
+Row: 65,311
+PASS: expected and got true
+Row: 64,312
+PASS: expected and got true
+Row: 63,313
+PASS: expected and got true
+Row: 62,314
+PASS: expected and got true
+Row: 61,315
+PASS: expected and got true
+Row: 70,316
+PASS: expected and got true
+Row: 69,317
+PASS: expected and got true
+Row: 68,318
+PASS: expected and got true
+Row: 67,319
+PASS: expected and got true
+Row: 66,320
+PASS: expected and got true
+Row: 75,321
+PASS: expected and got true
+Row: 74,322
+PASS: expected and got true
+Row: 73,323
+PASS: expected and got true
+Row: 72,324
+PASS: expected and got true
+Row: 71,325
+PASS: expected and got true
+Row: 80,326
+PASS: expected and got true
+Row: 79,327
+PASS: expected and got true
+Row: 78,328
+PASS: expected and got true
+Row: 77,329
+PASS: expected and got true
+Row: 76,330
+PASS: expected and got true
+Row: 85,331
+PASS: expected and got true
+Row: 84,332
+PASS: expected and got true
+Row: 83,333
+PASS: expected and got true
+Row: 82,334
+PASS: expected and got true
+Row: 81,335
+PASS: expected and got true
+Row: 90,336
+PASS: expected and got true
+Row: 89,337
+PASS: expected and got true
+Row: 88,338
+PASS: expected and got true
+Row: 87,339
+PASS: expected and got true
+Row: 86,340
+PASS: expected and got true
+Row: 95,341
+PASS: expected and got true
+Row: 94,342
+PASS: expected and got true
+Row: 93,343
+PASS: expected and got true
+Row: 92,344
+PASS: expected and got true
+Row: 91,345
+PASS: expected and got true
+Row: 100,346
+PASS: expected and got true
+Row: 99,347
+PASS: expected and got true
+Row: 98,348
+PASS: expected and got true
+Row: 97,349
+PASS: expected and got true
+Row: 96,350
+PASS: expected and got true
+Row: 105,351
+PASS: expected and got true
+Row: 104,352
+PASS: expected and got true
+Row: 103,353
+PASS: expected and got true
+Row: 102,354
+PASS: expected and got true
+Row: 101,355
+PASS: expected and got true
+Row: 110,356
+PASS: expected and got true
+Row: 109,357
+PASS: expected and got true
+Row: 108,358
+PASS: expected and got true
+Row: 107,359
+PASS: expected and got true
+Row: 106,360
+PASS: expected and got true
+Row: 115,361
+PASS: expected and got true
+Row: 114,362
+PASS: expected and got true
+Row: 113,363
+PASS: expected and got true
+Row: 112,364
+PASS: expected and got true
+Row: 111,365
+PASS: expected and got true
+Row: 120,366
+PASS: expected and got true
+Row: 119,367
+PASS: expected and got true
+Row: 118,368
+PASS: expected and got true
+Row: 117,369
+PASS: expected and got true
+Row: 116,370
+PASS: expected and got true
+Row: 125,371
+PASS: expected and got true
+Row: 124,372
+PASS: expected and got true
+Row: 123,373
+PASS: expected and got true
+Row: 122,374
+PASS: expected and got true
+Row: 121,375
+PASS: expected and got true
+Row: 130,376
+PASS: expected and got true
+Row: 129,377
+PASS: expected and got true
+Row: 128,378
+PASS: expected and got true
+Row: 127,379
+PASS: expected and got true
+Row: 126,380
+PASS: expected and got true
+Row: 135,381
+PASS: expected and got true
+Row: 134,382
+PASS: expected and got true
+Row: 133,383
+PASS: expected and got true
+Row: 132,384
+PASS: expected and got true
+Row: 131,385
+PASS: expected and got true
+Row: 140,386
+PASS: expected and got true
+Row: 139,387
+PASS: expected and got true
+Row: 138,388
+PASS: expected and got true
+Row: 137,389
+PASS: expected and got true
+Row: 136,390
+PASS: expected and got true
+Row: 145,391
+PASS: expected and got true
+Row: 144,392
+PASS: expected and got true
+Row: 143,393
+PASS: expected and got true
+Row: 142,394
+PASS: expected and got true
+Row: 141,395
+PASS: expected and got true
+Row: 150,396
+PASS: expected and got true
+Row: 149,397
+PASS: expected and got true
+Row: 148,398
+PASS: expected and got true
+Row: 147,399
+PASS: expected and got true
+Row: 146,400
+PASS: expected and got true
+Row: 155,401
+PASS: expected and got true
+Row: 154,402
+PASS: expected and got true
+Row: 153,403
+PASS: expected and got true
+Row: 152,404
+PASS: expected and got true
+Row: 151,405
+PASS: expected and got true
+Row: 160,406
+PASS: expected and got true
+Row: 159,407
+PASS: expected and got true
+Row: 158,408
+PASS: expected and got true
+Row: 157,409
+PASS: expected and got true
+Row: 156,410
+PASS: expected and got true
+Row: 165,411
+PASS: expected and got true
+Row: 164,412
+PASS: expected and got true
+Row: 163,413
+PASS: expected and got true
+Row: 162,414
+PASS: expected and got true
+Row: 161,415
+PASS: expected and got true
+Row: 170,416
+PASS: expected and got true
+Row: 169,417
+PASS: expected and got true
+Row: 168,418
+PASS: expected and got true
+Row: 167,419
+PASS: expected and got true
+Row: 166,420
+PASS: expected and got true
+Row: 175,421
+PASS: expected and got true
+Row: 174,422
+PASS: expected and got true
+Row: 173,423
+PASS: expected and got true
+Row: 172,424
+PASS: expected and got true
+Row: 171,425
+PASS: expected and got true
+Row: 180,426
+PASS: expected and got true
+Row: 179,427
+PASS: expected and got true
+Row: 178,428
+PASS: expected and got true
+Row: 177,429
+PASS: expected and got true
+Row: 176,430
+PASS: expected and got true
+Row: 185,431
+PASS: expected and got true
+Row: 184,432
+PASS: expected and got true
+Row: 183,433
+PASS: expected and got true
+Row: 182,434
+PASS: expected and got true
+Row: 181,435
+PASS: expected and got true
+Row: 190,436
+PASS: expected and got true
+Row: 189,437
+PASS: expected and got true
+Row: 188,438
+PASS: expected and got true
+Row: 187,439
+PASS: expected and got true
+Row: 186,440
+PASS: expected and got true
+Row: 195,441
+PASS: expected and got true
+Row: 194,442
+PASS: expected and got true
+Row: 193,443
+PASS: expected and got true
+Row: 192,444
+PASS: expected and got true
+Row: 191,445
+PASS: expected and got true
+Row: 200,446
+PASS: expected and got true
+Row: 199,447
+PASS: expected and got true
+Row: 198,448
+PASS: expected and got true
+Row: 197,449
+PASS: expected and got true
+Row: 196,450
+PASS: expected and got true
+Row: 205,451
+PASS: expected and got true
+Row: 204,452
+PASS: expected and got true
+Row: 203,453
+PASS: expected and got true
+Row: 202,454
+PASS: expected and got true
+Row: 201,455
+PASS: expected and got true
+Row: 210,456
+PASS: expected and got true
+Row: 209,457
+PASS: expected and got true
+Row: 208,458
+PASS: expected and got true
+Row: 207,459
+PASS: expected and got true
+Row: 206,460
+PASS: expected and got true
+Row: 215,461
+PASS: expected and got true
+Row: 214,462
+PASS: expected and got true
+Row: 213,463
+PASS: expected and got true
+Row: 212,464
+PASS: expected and got true
+Row: 211,465
+PASS: expected and got true
+Row: 220,466
+PASS: expected and got true
+Row: 219,467
+PASS: expected and got true
+Row: 218,468
+PASS: expected and got true
+Row: 217,469
+PASS: expected and got true
+Row: 216,470
+PASS: expected and got true
+Row: 225,471
+PASS: expected and got true
+Row: 224,472
+PASS: expected and got true
+Row: 223,473
+PASS: expected and got true
+Row: 222,474
+PASS: expected and got true
+Row: 221,475
+PASS: expected and got true
+Row: 230,476
+PASS: expected and got true
+Row: 229,477
+PASS: expected and got true
+Row: 228,478
+PASS: expected and got true
+Row: 227,479
+PASS: expected and got true
+Row: 226,480
+PASS: expected and got true
+Row: 235,481
+PASS: expected and got true
+Row: 234,482
+PASS: expected and got true
+Row: 233,483
+PASS: expected and got true
+Row: 232,484
+PASS: expected and got true
+Row: 231,485
+PASS: expected and got true
+Row: 240,486
+PASS: expected and got true
+Row: 239,487
+PASS: expected and got true
+Row: 238,488
+PASS: expected and got true
+Row: 237,489
+PASS: expected and got true
+Row: 236,490
+PASS: expected and got true
+Row: 245,491
+PASS: expected and got true
+Row: 244,492
+PASS: expected and got true
+Row: 243,493
+PASS: expected and got true
+Row: 242,494
+PASS: expected and got true
+Row: 241,495
+PASS: expected and got true
+Row: 250,496
+PASS: expected and got true
+Row: 249,497
+PASS: expected and got true
+Row: 248,498
+PASS: expected and got true
+Row: 247,499
+PASS: expected and got true
+Row: 246,500
+AFTER UPDATE WITH VIRTUAL MEM HEAP: got 250 rows
+************************************TESTING NONCOVERINGINDEX*********
+PASS: expected and got true
+Row: 126,126                                               
+PASS: expected and got true
+Row: 127,126                                               
+PASS: expected and got true
+Row: 128,126                                               
+PASS: expected and got true
+Row: 129,126                                               
+PASS: expected and got true
+Row: 130,126                                               
+PASS: expected and got true
+Row: 131,131                                               
+PASS: expected and got true
+Row: 132,131                                               
+PASS: expected and got true
+Row: 133,131                                               
+PASS: expected and got true
+Row: 134,131                                               
+PASS: expected and got true
+Row: 135,131                                               
+PASS: expected and got true
+Row: 136,136                                               
+PASS: expected and got true
+Row: 137,136                                               
+PASS: expected and got true
+Row: 138,136                                               
+PASS: expected and got true
+Row: 139,136                                               
+PASS: expected and got true
+Row: 140,136                                               
+PASS: expected and got true
+Row: 141,141                                               
+PASS: expected and got true
+Row: 142,141                                               
+PASS: expected and got true
+Row: 143,141                                               
+PASS: expected and got true
+Row: 144,141                                               
+PASS: expected and got true
+Row: 145,141                                               
+PASS: expected and got true
+Row: 146,146                                               
+PASS: expected and got true
+Row: 147,146                                               
+PASS: expected and got true
+Row: 148,146                                               
+PASS: expected and got true
+Row: 149,146                                               
+PASS: expected and got true
+Row: 150,146                                               
+PASS: expected and got true
+Row: 151,151                                               
+PASS: expected and got true
+Row: 152,151                                               
+PASS: expected and got true
+Row: 153,151                                               
+PASS: expected and got true
+Row: 154,151                                               
+PASS: expected and got true
+Row: 155,151                                               
+PASS: expected and got true
+Row: 156,156                                               
+PASS: expected and got true
+Row: 157,156                                               
+PASS: expected and got true
+Row: 158,156                                               
+PASS: expected and got true
+Row: 159,156                                               
+PASS: expected and got true
+Row: 160,156                                               
+PASS: expected and got true
+Row: 161,161                                               
+PASS: expected and got true
+Row: 162,161                                               
+PASS: expected and got true
+Row: 163,161                                               
+PASS: expected and got true
+Row: 164,161                                               
+PASS: expected and got true
+Row: 165,161                                               
+PASS: expected and got true
+Row: 166,166                                               
+PASS: expected and got true
+Row: 167,166                                               
+PASS: expected and got true
+Row: 168,166                                               
+PASS: expected and got true
+Row: 169,166                                               
+PASS: expected and got true
+Row: 170,166                                               
+PASS: expected and got true
+Row: 171,171                                               
+PASS: expected and got true
+Row: 172,171                                               
+PASS: expected and got true
+Row: 173,171                                               
+PASS: expected and got true
+Row: 174,171                                               
+PASS: expected and got true
+Row: 175,171                                               
+PASS: expected and got true
+Row: 176,176                                               
+PASS: expected and got true
+Row: 177,176                                               
+PASS: expected and got true
+Row: 178,176                                               
+PASS: expected and got true
+Row: 179,176                                               
+PASS: expected and got true
+Row: 180,176                                               
+PASS: expected and got true
+Row: 181,181                                               
+PASS: expected and got true
+Row: 182,181                                               
+PASS: expected and got true
+Row: 183,181                                               
+PASS: expected and got true
+Row: 184,181                                               
+PASS: expected and got true
+Row: 185,181                                               
+PASS: expected and got true
+Row: 186,186                                               
+PASS: expected and got true
+Row: 187,186                                               
+PASS: expected and got true
+Row: 188,186                                               
+PASS: expected and got true
+Row: 189,186                                               
+PASS: expected and got true
+Row: 190,186                                               
+PASS: expected and got true
+Row: 191,191                                               
+PASS: expected and got true
+Row: 192,191                                               
+PASS: expected and got true
+Row: 193,191                                               
+PASS: expected and got true
+Row: 194,191                                               
+PASS: expected and got true
+Row: 195,191                                               
+PASS: expected and got true
+Row: 196,196                                               
+PASS: expected and got true
+Row: 197,196                                               
+PASS: expected and got true
+Row: 198,196                                               
+PASS: expected and got true
+Row: 199,196                                               
+PASS: expected and got true
+Row: 200,196                                               
+PASS: expected and got true
+Row: 201,201                                               
+PASS: expected and got true
+Row: 202,201                                               
+PASS: expected and got true
+Row: 203,201                                               
+PASS: expected and got true
+Row: 204,201                                               
+PASS: expected and got true
+Row: 205,201                                               
+PASS: expected and got true
+Row: 206,206                                               
+PASS: expected and got true
+Row: 207,206                                               
+PASS: expected and got true
+Row: 208,206                                               
+PASS: expected and got true
+Row: 209,206                                               
+PASS: expected and got true
+Row: 210,206                                               
+PASS: expected and got true
+Row: 211,211                                               
+PASS: expected and got true
+Row: 212,211                                               
+PASS: expected and got true
+Row: 213,211                                               
+PASS: expected and got true
+Row: 214,211                                               
+PASS: expected and got true
+Row: 215,211                                               
+PASS: expected and got true
+Row: 216,216                                               
+PASS: expected and got true
+Row: 217,216                                               
+PASS: expected and got true
+Row: 218,216                                               
+PASS: expected and got true
+Row: 219,216                                               
+PASS: expected and got true
+Row: 220,216                                               
+PASS: expected and got true
+Row: 221,221                                               
+PASS: expected and got true
+Row: 222,221                                               
+PASS: expected and got true
+Row: 223,221                                               
+PASS: expected and got true
+Row: 224,221                                               
+PASS: expected and got true
+Row: 225,221                                               
+PASS: expected and got true
+Row: 226,226                                               
+PASS: expected and got true
+Row: 227,226                                               
+PASS: expected and got true
+Row: 228,226                                               
+PASS: expected and got true
+Row: 229,226                                               
+PASS: expected and got true
+Row: 230,226                                               
+PASS: expected and got true
+Row: 231,231                                               
+PASS: expected and got true
+Row: 232,231                                               
+PASS: expected and got true
+Row: 233,231                                               
+PASS: expected and got true
+Row: 234,231                                               
+PASS: expected and got true
+Row: 235,231                                               
+PASS: expected and got true
+Row: 236,236                                               
+PASS: expected and got true
+Row: 237,236                                               
+PASS: expected and got true
+Row: 238,236                                               
+PASS: expected and got true
+Row: 239,236                                               
+PASS: expected and got true
+Row: 240,236                                               
+PASS: expected and got true
+Row: 241,241                                               
+PASS: expected and got true
+Row: 242,241                                               
+PASS: expected and got true
+Row: 243,241                                               
+PASS: expected and got true
+Row: 244,241                                               
+PASS: expected and got true
+Row: 245,241                                               
+PASS: expected and got true
+Row: 246,246                                               
+PASS: expected and got true
+Row: 247,246                                               
+PASS: expected and got true
+Row: 248,246                                               
+PASS: expected and got true
+Row: 249,246                                               
+PASS: expected and got true
+Row: 250,246                                               
+UPDATE USING NONCOVERING INDEX: got 125 rows
+************ See what we have in table:
+PASS: expected and got true
+Row: 5,1
+PASS: expected and got true
+Row: 4,2
+PASS: expected and got true
+Row: 3,3
+PASS: expected and got true
+Row: 2,4
+PASS: expected and got true
+Row: 1,5
+PASS: expected and got true
+Row: 10,6
+PASS: expected and got true
+Row: 9,7
+PASS: expected and got true
+Row: 8,8
+PASS: expected and got true
+Row: 7,9
+PASS: expected and got true
+Row: 6,10
+PASS: expected and got true
+Row: 15,11
+PASS: expected and got true
+Row: 14,12
+PASS: expected and got true
+Row: 13,13
+PASS: expected and got true
+Row: 12,14
+PASS: expected and got true
+Row: 11,15
+PASS: expected and got true
+Row: 20,16
+PASS: expected and got true
+Row: 19,17
+PASS: expected and got true
+Row: 18,18
+PASS: expected and got true
+Row: 17,19
+PASS: expected and got true
+Row: 16,20
+PASS: expected and got true
+Row: 25,21
+PASS: expected and got true
+Row: 24,22
+PASS: expected and got true
+Row: 23,23
+PASS: expected and got true
+Row: 22,24
+PASS: expected and got true
+Row: 21,25
+PASS: expected and got true
+Row: 30,26
+PASS: expected and got true
+Row: 29,27
+PASS: expected and got true
+Row: 28,28
+PASS: expected and got true
+Row: 27,29
+PASS: expected and got true
+Row: 26,30
+PASS: expected and got true
+Row: 35,31
+PASS: expected and got true
+Row: 34,32
+PASS: expected and got true
+Row: 33,33
+PASS: expected and got true
+Row: 32,34
+PASS: expected and got true
+Row: 31,35
+PASS: expected and got true
+Row: 40,36
+PASS: expected and got true
+Row: 39,37
+PASS: expected and got true
+Row: 38,38
+PASS: expected and got true
+Row: 37,39
+PASS: expected and got true
+Row: 36,40
+PASS: expected and got true
+Row: 45,41
+PASS: expected and got true
+Row: 44,42
+PASS: expected and got true
+Row: 43,43
+PASS: expected and got true
+Row: 42,44
+PASS: expected and got true
+Row: 41,45
+PASS: expected and got true
+Row: 50,46
+PASS: expected and got true
+Row: 49,47
+PASS: expected and got true
+Row: 48,48
+PASS: expected and got true
+Row: 47,49
+PASS: expected and got true
+Row: 46,50
+PASS: expected and got true
+Row: 55,51
+PASS: expected and got true
+Row: 54,52
+PASS: expected and got true
+Row: 53,53
+PASS: expected and got true
+Row: 52,54
+PASS: expected and got true
+Row: 51,55
+PASS: expected and got true
+Row: 60,56
+PASS: expected and got true
+Row: 59,57
+PASS: expected and got true
+Row: 58,58
+PASS: expected and got true
+Row: 57,59
+PASS: expected and got true
+Row: 56,60
+PASS: expected and got true
+Row: 65,61
+PASS: expected and got true
+Row: 64,62
+PASS: expected and got true
+Row: 63,63
+PASS: expected and got true
+Row: 62,64
+PASS: expected and got true
+Row: 61,65
+PASS: expected and got true
+Row: 70,66
+PASS: expected and got true
+Row: 69,67
+PASS: expected and got true
+Row: 68,68
+PASS: expected and got true
+Row: 67,69
+PASS: expected and got true
+Row: 66,70
+PASS: expected and got true
+Row: 75,71
+PASS: expected and got true
+Row: 74,72
+PASS: expected and got true
+Row: 73,73
+PASS: expected and got true
+Row: 72,74
+PASS: expected and got true
+Row: 71,75
+PASS: expected and got true
+Row: 80,76
+PASS: expected and got true
+Row: 79,77
+PASS: expected and got true
+Row: 78,78
+PASS: expected and got true
+Row: 77,79
+PASS: expected and got true
+Row: 76,80
+PASS: expected and got true
+Row: 85,81
+PASS: expected and got true
+Row: 84,82
+PASS: expected and got true
+Row: 83,83
+PASS: expected and got true
+Row: 82,84
+PASS: expected and got true
+Row: 81,85
+PASS: expected and got true
+Row: 90,86
+PASS: expected and got true
+Row: 89,87
+PASS: expected and got true
+Row: 88,88
+PASS: expected and got true
+Row: 87,89
+PASS: expected and got true
+Row: 86,90
+PASS: expected and got true
+Row: 95,91
+PASS: expected and got true
+Row: 94,92
+PASS: expected and got true
+Row: 93,93
+PASS: expected and got true
+Row: 92,94
+PASS: expected and got true
+Row: 91,95
+PASS: expected and got true
+Row: 100,96
+PASS: expected and got true
+Row: 99,97
+PASS: expected and got true
+Row: 98,98
+PASS: expected and got true
+Row: 97,99
+PASS: expected and got true
+Row: 96,100
+PASS: expected and got true
+Row: 105,101
+PASS: expected and got true
+Row: 104,102
+PASS: expected and got true
+Row: 103,103
+PASS: expected and got true
+Row: 102,104
+PASS: expected and got true
+Row: 101,105
+PASS: expected and got true
+Row: 110,106
+PASS: expected and got true
+Row: 109,107
+PASS: expected and got true
+Row: 108,108
+PASS: expected and got true
+Row: 107,109
+PASS: expected and got true
+Row: 106,110
+PASS: expected and got true
+Row: 115,111
+PASS: expected and got true
+Row: 114,112
+PASS: expected and got true
+Row: 113,113
+PASS: expected and got true
+Row: 112,114
+PASS: expected and got true
+Row: 111,115
+PASS: expected and got true
+Row: 120,116
+PASS: expected and got true
+Row: 119,117
+PASS: expected and got true
+Row: 118,118
+PASS: expected and got true
+Row: 117,119
+PASS: expected and got true
+Row: 116,120
+PASS: expected and got true
+Row: 125,121
+PASS: expected and got true
+Row: 124,122
+PASS: expected and got true
+Row: 123,123
+PASS: expected and got true
+Row: 122,124
+PASS: expected and got true
+Row: 121,125
+PASS: expected and got true
+Row: 130,151
+PASS: expected and got true
+Row: 129,152
+PASS: expected and got true
+Row: 128,153
+PASS: expected and got true
+Row: 127,154
+PASS: expected and got true
+Row: 126,155
+PASS: expected and got true
+Row: 135,156
+PASS: expected and got true
+Row: 134,157
+PASS: expected and got true
+Row: 133,158
+PASS: expected and got true
+Row: 132,159
+PASS: expected and got true
+Row: 131,160
+PASS: expected and got true
+Row: 140,161
+PASS: expected and got true
+Row: 139,162
+PASS: expected and got true
+Row: 138,163
+PASS: expected and got true
+Row: 137,164
+PASS: expected and got true
+Row: 136,165
+PASS: expected and got true
+Row: 145,166
+PASS: expected and got true
+Row: 144,167
+PASS: expected and got true
+Row: 143,168
+PASS: expected and got true
+Row: 142,169
+PASS: expected and got true
+Row: 141,170
+PASS: expected and got true
+Row: 150,171
+PASS: expected and got true
+Row: 149,172
+PASS: expected and got true
+Row: 148,173
+PASS: expected and got true
+Row: 147,174
+PASS: expected and got true
+Row: 146,175
+PASS: expected and got true
+Row: 155,176
+PASS: expected and got true
+Row: 154,177
+PASS: expected and got true
+Row: 153,178
+PASS: expected and got true
+Row: 152,179
+PASS: expected and got true
+Row: 151,180
+PASS: expected and got true
+Row: 160,181
+PASS: expected and got true
+Row: 159,182
+PASS: expected and got true
+Row: 158,183
+PASS: expected and got true
+Row: 157,184
+PASS: expected and got true
+Row: 156,185
+PASS: expected and got true
+Row: 165,186
+PASS: expected and got true
+Row: 164,187
+PASS: expected and got true
+Row: 163,188
+PASS: expected and got true
+Row: 162,189
+PASS: expected and got true
+Row: 161,190
+PASS: expected and got true
+Row: 170,191
+PASS: expected and got true
+Row: 169,192
+PASS: expected and got true
+Row: 168,193
+PASS: expected and got true
+Row: 167,194
+PASS: expected and got true
+Row: 166,195
+PASS: expected and got true
+Row: 175,196
+PASS: expected and got true
+Row: 174,197
+PASS: expected and got true
+Row: 173,198
+PASS: expected and got true
+Row: 172,199
+PASS: expected and got true
+Row: 171,200
+PASS: expected and got true
+Row: 180,201
+PASS: expected and got true
+Row: 179,202
+PASS: expected and got true
+Row: 178,203
+PASS: expected and got true
+Row: 177,204
+PASS: expected and got true
+Row: 176,205
+PASS: expected and got true
+Row: 185,206
+PASS: expected and got true
+Row: 184,207
+PASS: expected and got true
+Row: 183,208
+PASS: expected and got true
+Row: 182,209
+PASS: expected and got true
+Row: 181,210
+PASS: expected and got true
+Row: 190,211
+PASS: expected and got true
+Row: 189,212
+PASS: expected and got true
+Row: 188,213
+PASS: expected and got true
+Row: 187,214
+PASS: expected and got true
+Row: 186,215
+PASS: expected and got true
+Row: 195,216
+PASS: expected and got true
+Row: 194,217
+PASS: expected and got true
+Row: 193,218
+PASS: expected and got true
+Row: 192,219
+PASS: expected and got true
+Row: 191,220
+PASS: expected and got true
+Row: 200,221
+PASS: expected and got true
+Row: 199,222
+PASS: expected and got true
+Row: 198,223
+PASS: expected and got true
+Row: 197,224
+PASS: expected and got true
+Row: 196,225
+PASS: expected and got true
+Row: 205,226
+PASS: expected and got true
+Row: 204,227
+PASS: expected and got true
+Row: 203,228
+PASS: expected and got true
+Row: 202,229
+PASS: expected and got true
+Row: 201,230
+PASS: expected and got true
+Row: 210,231
+PASS: expected and got true
+Row: 209,232
+PASS: expected and got true
+Row: 208,233
+PASS: expected and got true
+Row: 207,234
+PASS: expected and got true
+Row: 206,235
+PASS: expected and got true
+Row: 215,236
+PASS: expected and got true
+Row: 214,237
+PASS: expected and got true
+Row: 213,238
+PASS: expected and got true
+Row: 212,239
+PASS: expected and got true
+Row: 211,240
+PASS: expected and got true
+Row: 220,241
+PASS: expected and got true
+Row: 219,242
+PASS: expected and got true
+Row: 218,243
+PASS: expected and got true
+Row: 217,244
+PASS: expected and got true
+Row: 216,245
+PASS: expected and got true
+Row: 225,246
+PASS: expected and got true
+Row: 224,247
+PASS: expected and got true
+Row: 223,248
+PASS: expected and got true
+Row: 222,249
+PASS: expected and got true
+Row: 221,250
+PASS: expected and got true
+Row: 230,251
+PASS: expected and got true
+Row: 229,252
+PASS: expected and got true
+Row: 228,253
+PASS: expected and got true
+Row: 227,254
+PASS: expected and got true
+Row: 226,255
+PASS: expected and got true
+Row: 235,256
+PASS: expected and got true
+Row: 234,257
+PASS: expected and got true
+Row: 233,258
+PASS: expected and got true
+Row: 232,259
+PASS: expected and got true
+Row: 231,260
+PASS: expected and got true
+Row: 240,261
+PASS: expected and got true
+Row: 239,262
+PASS: expected and got true
+Row: 238,263
+PASS: expected and got true
+Row: 237,264
+PASS: expected and got true
+Row: 236,265
+PASS: expected and got true
+Row: 245,266
+PASS: expected and got true
+Row: 244,267
+PASS: expected and got true
+Row: 243,268
+PASS: expected and got true
+Row: 242,269
+PASS: expected and got true
+Row: 241,270
+PASS: expected and got true
+Row: 250,271
+PASS: expected and got true
+Row: 249,272
+PASS: expected and got true
+Row: 248,273
+PASS: expected and got true
+Row: 247,274
+PASS: expected and got true
+Row: 246,275
+AFTER UPDATE USING NONCOVERING INDEX: got 250 rows
+************************************TESTING DESC INDEX*********
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got true
+Row: 250,246
+PASS: expected and got true
+Row: 249,247
+PASS: expected and got true
+Row: 248,248
+PASS: expected and got true
+Row: 247,249
+PASS: expected and got true
+Row: 246,250
+PASS: expected and got true
+Row: 245,241
+PASS: expected and got true
+Row: 244,242
+PASS: expected and got true
+Row: 243,243
+PASS: expected and got true
+Row: 242,244
+PASS: expected and got true
+Row: 241,245
+PASS: expected and got true
+Row: 240,236
+PASS: expected and got true
+Row: 239,237
+PASS: expected and got true
+Row: 238,238
+PASS: expected and got true
+Row: 237,239
+PASS: expected and got true
+Row: 236,240
+PASS: expected and got true
+Row: 235,231
+PASS: expected and got true
+Row: 234,232
+PASS: expected and got true
+Row: 233,233
+PASS: expected and got true
+Row: 232,234
+PASS: expected and got true
+Row: 231,235
+PASS: expected and got true
+Row: 230,226
+PASS: expected and got true
+Row: 229,227
+PASS: expected and got true
+Row: 228,228
+PASS: expected and got true
+Row: 227,229
+PASS: expected and got true
+Row: 226,230
+PASS: expected and got true
+Row: 225,221
+PASS: expected and got true
+Row: 224,222
+PASS: expected and got true
+Row: 223,223
+PASS: expected and got true
+Row: 222,224
+PASS: expected and got true
+Row: 221,225
+PASS: expected and got true
+Row: 220,216
+PASS: expected and got true
+Row: 219,217
+PASS: expected and got true
+Row: 218,218
+PASS: expected and got true
+Row: 217,219
+PASS: expected and got true
+Row: 216,220
+PASS: expected and got true
+Row: 215,211
+PASS: expected and got true
+Row: 214,212
+PASS: expected and got true
+Row: 213,213
+PASS: expected and got true
+Row: 212,214
+PASS: expected and got true
+Row: 211,215
+PASS: expected and got true
+Row: 210,206
+PASS: expected and got true
+Row: 209,207
+PASS: expected and got true
+Row: 208,208
+PASS: expected and got true
+Row: 207,209
+PASS: expected and got true
+Row: 206,210
+PASS: expected and got true
+Row: 205,201
+PASS: expected and got true
+Row: 204,202
+PASS: expected and got true
+Row: 203,203
+PASS: expected and got true
+Row: 202,204
+PASS: expected and got true
+Row: 201,205
+PASS: expected and got true
+Row: 200,196
+PASS: expected and got true
+Row: 199,197
+PASS: expected and got true
+Row: 198,198
+PASS: expected and got true
+Row: 197,199
+PASS: expected and got true
+Row: 196,200
+PASS: expected and got true
+Row: 195,191
+PASS: expected and got true
+Row: 194,192
+PASS: expected and got true
+Row: 193,193
+PASS: expected and got true
+Row: 192,194
+PASS: expected and got true
+Row: 191,195
+PASS: expected and got true
+Row: 190,186
+PASS: expected and got true
+Row: 189,187
+PASS: expected and got true
+Row: 188,188
+PASS: expected and got true
+Row: 187,189
+PASS: expected and got true
+Row: 186,190
+PASS: expected and got true
+Row: 185,181
+PASS: expected and got true
+Row: 184,182
+PASS: expected and got true
+Row: 183,183
+PASS: expected and got true
+Row: 182,184
+PASS: expected and got true
+Row: 181,185
+PASS: expected and got true
+Row: 180,176
+PASS: expected and got true
+Row: 179,177
+PASS: expected and got true
+Row: 178,178
+PASS: expected and got true
+Row: 177,179
+PASS: expected and got true
+Row: 176,180
+PASS: expected and got true
+Row: 175,171
+PASS: expected and got true
+Row: 174,172
+PASS: expected and got true
+Row: 173,173
+PASS: expected and got true
+Row: 172,174
+PASS: expected and got true
+Row: 171,175
+PASS: expected and got true
+Row: 170,166
+PASS: expected and got true
+Row: 169,167
+PASS: expected and got true
+Row: 168,168
+PASS: expected and got true
+Row: 167,169
+PASS: expected and got true
+Row: 166,170
+PASS: expected and got true
+Row: 165,161
+PASS: expected and got true
+Row: 164,162
+PASS: expected and got true
+Row: 163,163
+PASS: expected and got true
+Row: 162,164
+PASS: expected and got true
+Row: 161,165
+PASS: expected and got true
+Row: 160,156
+PASS: expected and got true
+Row: 159,157
+PASS: expected and got true
+Row: 158,158
+PASS: expected and got true
+Row: 157,159
+PASS: expected and got true
+Row: 156,160
+PASS: expected and got true
+Row: 155,151
+PASS: expected and got true
+Row: 154,152
+PASS: expected and got true
+Row: 153,153
+PASS: expected and got true
+Row: 152,154
+PASS: expected and got true
+Row: 151,155
+PASS: expected and got true
+Row: 150,146
+PASS: expected and got true
+Row: 149,147
+PASS: expected and got true
+Row: 148,148
+PASS: expected and got true
+Row: 147,149
+PASS: expected and got true
+Row: 146,150
+PASS: expected and got true
+Row: 145,141
+PASS: expected and got true
+Row: 144,142
+PASS: expected and got true
+Row: 143,143
+PASS: expected and got true
+Row: 142,144
+PASS: expected and got true
+Row: 141,145
+PASS: expected and got true
+Row: 140,136
+PASS: expected and got true
+Row: 139,137
+PASS: expected and got true
+Row: 138,138
+PASS: expected and got true
+Row: 137,139
+PASS: expected and got true
+Row: 136,140
+PASS: expected and got true
+Row: 135,131
+PASS: expected and got true
+Row: 134,132
+PASS: expected and got true
+Row: 133,133
+PASS: expected and got true
+Row: 132,134
+PASS: expected and got true
+Row: 131,135
+PASS: expected and got true
+Row: 130,126
+PASS: expected and got true
+Row: 129,127
+PASS: expected and got true
+Row: 128,128
+PASS: expected and got true
+Row: 127,129
+PASS: expected and got true
+Row: 126,130
+TEST UPDATE USING DESC INDEX: got 125 rows
+************ See what we have in table:
+PASS: expected and got true
+Row: 247,246                                               
+PASS: expected and got true
+Row: 246,246                                               
+PASS: expected and got true
+Row: 249,246                                               
+PASS: expected and got true
+Row: 248,246                                               
+PASS: expected and got true
+Row: 251,246                                               
+PASS: expected and got true
+Row: 240,241                                               
+PASS: expected and got true
+Row: 243,241                                               
+PASS: expected and got true
+Row: 242,241                                               
+PASS: expected and got true
+Row: 245,241                                               
+PASS: expected and got true
+Row: 244,241                                               
+PASS: expected and got true
+Row: 237,236                                               
+PASS: expected and got true
+Row: 236,236                                               
+PASS: expected and got true
+Row: 239,236                                               
+PASS: expected and got true
+Row: 238,236                                               
+PASS: expected and got true
+Row: 241,236                                               
+PASS: expected and got true
+Row: 230,231                                               
+PASS: expected and got true
+Row: 233,231                                               
+PASS: expected and got true
+Row: 232,231                                               
+PASS: expected and got true
+Row: 235,231                                               
+PASS: expected and got true
+Row: 234,231                                               
+PASS: expected and got true
+Row: 227,226                                               
+PASS: expected and got true
+Row: 226,226                                               
+PASS: expected and got true
+Row: 229,226                                               
+PASS: expected and got true
+Row: 228,226                                               
+PASS: expected and got true
+Row: 231,226                                               
+PASS: expected and got true
+Row: 220,221                                               
+PASS: expected and got true
+Row: 223,221                                               
+PASS: expected and got true
+Row: 222,221                                               
+PASS: expected and got true
+Row: 225,221                                               
+PASS: expected and got true
+Row: 224,221                                               
+PASS: expected and got true
+Row: 217,216                                               
+PASS: expected and got true
+Row: 216,216                                               
+PASS: expected and got true
+Row: 219,216                                               
+PASS: expected and got true
+Row: 218,216                                               
+PASS: expected and got true
+Row: 221,216                                               
+PASS: expected and got true
+Row: 210,211                                               
+PASS: expected and got true
+Row: 213,211                                               
+PASS: expected and got true
+Row: 212,211                                               
+PASS: expected and got true
+Row: 215,211                                               
+PASS: expected and got true
+Row: 214,211                                               
+PASS: expected and got true
+Row: 207,206                                               
+PASS: expected and got true
+Row: 206,206                                               
+PASS: expected and got true
+Row: 209,206                                               
+PASS: expected and got true
+Row: 208,206                                               
+PASS: expected and got true
+Row: 211,206                                               
+PASS: expected and got true
+Row: 200,201                                               
+PASS: expected and got true
+Row: 203,201                                               
+PASS: expected and got true
+Row: 202,201                                               
+PASS: expected and got true
+Row: 205,201                                               
+PASS: expected and got true
+Row: 204,201                                               
+PASS: expected and got true
+Row: 197,196                                               
+PASS: expected and got true
+Row: 196,196                                               
+PASS: expected and got true
+Row: 199,196                                               
+PASS: expected and got true
+Row: 198,196                                               
+PASS: expected and got true
+Row: 201,196                                               
+PASS: expected and got true
+Row: 190,191                                               
+PASS: expected and got true
+Row: 193,191                                               
+PASS: expected and got true
+Row: 192,191                                               
+PASS: expected and got true
+Row: 195,191                                               
+PASS: expected and got true
+Row: 194,191                                               
+PASS: expected and got true
+Row: 187,186                                               
+PASS: expected and got true
+Row: 186,186                                               
+PASS: expected and got true
+Row: 189,186                                               
+PASS: expected and got true
+Row: 188,186                                               
+PASS: expected and got true
+Row: 191,186                                               
+PASS: expected and got true
+Row: 180,181                                               
+PASS: expected and got true
+Row: 183,181                                               
+PASS: expected and got true
+Row: 182,181                                               
+PASS: expected and got true
+Row: 185,181                                               
+PASS: expected and got true
+Row: 184,181                                               
+PASS: expected and got true
+Row: 177,176                                               
+PASS: expected and got true
+Row: 176,176                                               
+PASS: expected and got true
+Row: 179,176                                               
+PASS: expected and got true
+Row: 178,176                                               
+PASS: expected and got true
+Row: 181,176                                               
+PASS: expected and got true
+Row: 170,171                                               
+PASS: expected and got true
+Row: 173,171                                               
+PASS: expected and got true
+Row: 172,171                                               
+PASS: expected and got true
+Row: 175,171                                               
+PASS: expected and got true
+Row: 174,171                                               
+PASS: expected and got true
+Row: 167,166                                               
+PASS: expected and got true
+Row: 166,166                                               
+PASS: expected and got true
+Row: 169,166                                               
+PASS: expected and got true
+Row: 168,166                                               
+PASS: expected and got true
+Row: 171,166                                               
+PASS: expected and got true
+Row: 160,161                                               
+PASS: expected and got true
+Row: 163,161                                               
+PASS: expected and got true
+Row: 162,161                                               
+PASS: expected and got true
+Row: 165,161                                               
+PASS: expected and got true
+Row: 164,161                                               
+PASS: expected and got true
+Row: 157,156                                               
+PASS: expected and got true
+Row: 156,156                                               
+PASS: expected and got true
+Row: 159,156                                               
+PASS: expected and got true
+Row: 158,156                                               
+PASS: expected and got true
+Row: 161,156                                               
+PASS: expected and got true
+Row: 150,151                                               
+PASS: expected and got true
+Row: 153,151                                               
+PASS: expected and got true
+Row: 152,151                                               
+PASS: expected and got true
+Row: 155,151                                               
+PASS: expected and got true
+Row: 154,151                                               
+PASS: expected and got true
+Row: 147,146                                               
+PASS: expected and got true
+Row: 146,146                                               
+PASS: expected and got true
+Row: 149,146                                               
+PASS: expected and got true
+Row: 148,146                                               
+PASS: expected and got true
+Row: 151,146                                               
+PASS: expected and got true
+Row: 140,141                                               
+PASS: expected and got true
+Row: 143,141                                               
+PASS: expected and got true
+Row: 142,141                                               
+PASS: expected and got true
+Row: 145,141                                               
+PASS: expected and got true
+Row: 144,141                                               
+PASS: expected and got true
+Row: 137,136                                               
+PASS: expected and got true
+Row: 136,136                                               
+PASS: expected and got true
+Row: 139,136                                               
+PASS: expected and got true
+Row: 138,136                                               
+PASS: expected and got true
+Row: 141,136                                               
+PASS: expected and got true
+Row: 130,131                                               
+PASS: expected and got true
+Row: 133,131                                               
+PASS: expected and got true
+Row: 132,131                                               
+PASS: expected and got true
+Row: 135,131                                               
+PASS: expected and got true
+Row: 134,131                                               
+PASS: expected and got true
+Row: 127,126                                               
+PASS: expected and got true
+Row: 126,126                                               
+PASS: expected and got true
+Row: 129,126                                               
+PASS: expected and got true
+Row: 128,126                                               
+PASS: expected and got true
+Row: 131,126                                               
+PASS: expected and got true
+Row: 121,121                                               
+PASS: expected and got true
+Row: 122,121                                               
+PASS: expected and got true
+Row: 123,121                                               
+PASS: expected and got true
+Row: 124,121                                               
+PASS: expected and got true
+Row: 125,121                                               
+PASS: expected and got true
+Row: 116,116                                               
+PASS: expected and got true
+Row: 117,116                                               
+PASS: expected and got true
+Row: 118,116                                               
+PASS: expected and got true
+Row: 119,116                                               
+PASS: expected and got true
+Row: 120,116                                               
+PASS: expected and got true
+Row: 111,111                                               
+PASS: expected and got true
+Row: 112,111                                               
+PASS: expected and got true
+Row: 113,111                                               
+PASS: expected and got true
+Row: 114,111                                               
+PASS: expected and got true
+Row: 115,111                                               
+PASS: expected and got true
+Row: 106,106                                               
+PASS: expected and got true
+Row: 107,106                                               
+PASS: expected and got true
+Row: 108,106                                               
+PASS: expected and got true
+Row: 109,106                                               
+PASS: expected and got true
+Row: 110,106                                               
+PASS: expected and got true
+Row: 101,101                                               
+PASS: expected and got true
+Row: 102,101                                               
+PASS: expected and got true
+Row: 103,101                                               
+PASS: expected and got true
+Row: 104,101                                               
+PASS: expected and got true
+Row: 105,101                                               
+PASS: expected and got true
+Row: 96,96                                                
+PASS: expected and got true
+Row: 97,96                                                
+PASS: expected and got true
+Row: 98,96                                                
+PASS: expected and got true
+Row: 99,96                                                
+PASS: expected and got true
+Row: 100,96                                                
+PASS: expected and got true
+Row: 91,91                                                
+PASS: expected and got true
+Row: 92,91                                                
+PASS: expected and got true
+Row: 93,91                                                
+PASS: expected and got true
+Row: 94,91                                                
+PASS: expected and got true
+Row: 95,91                                                
+PASS: expected and got true
+Row: 86,86                                                
+PASS: expected and got true
+Row: 87,86                                                
+PASS: expected and got true
+Row: 88,86                                                
+PASS: expected and got true
+Row: 89,86                                                
+PASS: expected and got true
+Row: 90,86                                                
+PASS: expected and got true
+Row: 81,81                                                
+PASS: expected and got true
+Row: 82,81                                                
+PASS: expected and got true
+Row: 83,81                                                
+PASS: expected and got true
+Row: 84,81                                                
+PASS: expected and got true
+Row: 85,81                                                
+PASS: expected and got true
+Row: 76,76                                                
+PASS: expected and got true
+Row: 77,76                                                
+PASS: expected and got true
+Row: 78,76                                                
+PASS: expected and got true
+Row: 79,76                                                
+PASS: expected and got true
+Row: 80,76                                                
+PASS: expected and got true
+Row: 71,71                                                
+PASS: expected and got true
+Row: 72,71                                                
+PASS: expected and got true
+Row: 73,71                                                
+PASS: expected and got true
+Row: 74,71                                                
+PASS: expected and got true
+Row: 75,71                                                
+PASS: expected and got true
+Row: 66,66                                                
+PASS: expected and got true
+Row: 67,66                                                
+PASS: expected and got true
+Row: 68,66                                                
+PASS: expected and got true
+Row: 69,66                                                
+PASS: expected and got true
+Row: 70,66                                                
+PASS: expected and got true
+Row: 61,61                                                
+PASS: expected and got true
+Row: 62,61                                                
+PASS: expected and got true
+Row: 63,61                                                
+PASS: expected and got true
+Row: 64,61                                                
+PASS: expected and got true
+Row: 65,61                                                
+PASS: expected and got true
+Row: 56,56                                                
+PASS: expected and got true
+Row: 57,56                                                
+PASS: expected and got true
+Row: 58,56                                                
+PASS: expected and got true
+Row: 59,56                                                
+PASS: expected and got true
+Row: 60,56                                                
+PASS: expected and got true
+Row: 51,51                                                
+PASS: expected and got true
+Row: 52,51                                                
+PASS: expected and got true
+Row: 53,51                                                
+PASS: expected and got true
+Row: 54,51                                                
+PASS: expected and got true
+Row: 55,51                                                
+PASS: expected and got true
+Row: 46,46                                                
+PASS: expected and got true
+Row: 47,46                                                
+PASS: expected and got true
+Row: 48,46                                                
+PASS: expected and got true
+Row: 49,46                                                
+PASS: expected and got true
+Row: 50,46                                                
+PASS: expected and got true
+Row: 41,41                                                
+PASS: expected and got true
+Row: 42,41                                                
+PASS: expected and got true
+Row: 43,41                                                
+PASS: expected and got true
+Row: 44,41                                                
+PASS: expected and got true
+Row: 45,41                                                
+PASS: expected and got true
+Row: 36,36                                                
+PASS: expected and got true
+Row: 37,36                                                
+PASS: expected and got true
+Row: 38,36                                                
+PASS: expected and got true
+Row: 39,36                                                
+PASS: expected and got true
+Row: 40,36                                                
+PASS: expected and got true
+Row: 31,31                                                
+PASS: expected and got true
+Row: 32,31                                                
+PASS: expected and got true
+Row: 33,31                                                
+PASS: expected and got true
+Row: 34,31                                                
+PASS: expected and got true
+Row: 35,31                                                
+PASS: expected and got true
+Row: 26,26                                                
+PASS: expected and got true
+Row: 27,26                                                
+PASS: expected and got true
+Row: 28,26                                                
+PASS: expected and got true
+Row: 29,26                                                
+PASS: expected and got true
+Row: 30,26                                                
+PASS: expected and got true
+Row: 21,21                                                
+PASS: expected and got true
+Row: 22,21                                                
+PASS: expected and got true
+Row: 23,21                                                
+PASS: expected and got true
+Row: 24,21                                                
+PASS: expected and got true
+Row: 25,21                                                
+PASS: expected and got true
+Row: 16,16                                                
+PASS: expected and got true
+Row: 17,16                                                
+PASS: expected and got true
+Row: 18,16                                                
+PASS: expected and got true
+Row: 19,16                                                
+PASS: expected and got true
+Row: 20,16                                                
+PASS: expected and got true
+Row: 11,11                                                
+PASS: expected and got true
+Row: 12,11                                                
+PASS: expected and got true
+Row: 13,11                                                
+PASS: expected and got true
+Row: 14,11                                                
+PASS: expected and got true
+Row: 15,11                                                
+PASS: expected and got true
+Row: 6,6                                                 
+PASS: expected and got true
+Row: 7,6                                                 
+PASS: expected and got true
+Row: 8,6                                                 
+PASS: expected and got true
+Row: 9,6                                                 
+PASS: expected and got true
+Row: 10,6                                                 
+PASS: expected and got true
+Row: 1,1                                                 
+PASS: expected and got true
+Row: 2,1                                                 
+PASS: expected and got true
+Row: 3,1                                                 
+PASS: expected and got true
+Row: 4,1                                                 
+PASS: expected and got true
+Row: 5,1                                                 
+TEST UPDATE USING DESC INDEX: got 250 rows
+************************************TESTING UPDATE DELETE WARNING*********
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: expected and got 0 rows
+PASS: teardown complete
+Test updateable cursor using index finished

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/valuesclause.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/valuesclause.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,529 @@
+ij> --
+-- this test is for the values clause functionality
+--
+-- create the tables
+create table t1 (i int, j int);
+0 rows inserted/updated/deleted
+ij> create table t2 (k int, l int);
+0 rows inserted/updated/deleted
+ij> -- populate t2
+insert into t2 values (1, 2);
+1 row inserted/updated/deleted
+ij> insert into t2 values (3, 4);
+1 row inserted/updated/deleted
+ij> -- negative tests
+values(null);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> values(1,null);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> values(null,1);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> values(null),(1);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> values(1),(null);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> select x from (values(null,1)) as x(x,y);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> select x from (values(1,null)) as x(x,y);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> select x from (values null) as x(x);
+ERROR 42X07: Null is only allowed in a VALUES clause within an INSERT statement.
+ij> -- empty values clause
+values();
+ERROR 42X01: Syntax error: Encountered ")" at line 2, column 8.
+ij> -- positive tests
+-- single value
+values 1;
+1          
+-----------
+1          
+ij> values (1);
+1          
+-----------
+1          
+ij> insert into t1 values (1, null);
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |NULL       
+ij> delete from t1;
+1 row inserted/updated/deleted
+ij> -- multiple values
+values (1, 2, 3);
+1          |2          |3          
+-----------------------------------
+1          |2          |3          
+ij> -- values in derived table
+select * from (values (1, 2, 3)) a;
+1          |2          |3          
+-----------------------------------
+1          |2          |3          
+ij> select a, b from (values (1, 2, 3)) a (a, b, c);
+A          |B          
+-----------------------
+1          |2          
+ij> select * from (values (1, 2, 3)) a, (values (4, 5, 6)) b;
+1          |2          |3          |4          |5          |6          
+-----------------------------------------------------------------------
+1          |2          |3          |4          |5          |6          
+ij> select * from t2, (values (1, 2, 3)) a;
+K          |L          |3          |4          |5          
+-----------------------------------------------------------
+1          |2          |1          |2          |3          
+3          |4          |1          |2          |3          
+ij> select * from (values (1, 2, 3)) a (a, b, c), t2 where l = b;
+A          |B          |C          |K          |L          
+-----------------------------------------------------------
+1          |2          |3          |1          |2          
+ij> -- subquery in values clause
+values (select k from t2 where k = 1);
+1          
+-----------
+1          
+ij> values (2, (select k from t2 where k = 1));
+1          |2          
+-----------------------
+2          |1          
+ij> values ((select k from t2 where k = 1), 2);
+1          |2          
+-----------------------
+1          |2          
+ij> values ((select k from t2 where k = 1), (select l from t2 where l = 4));
+1          |2          
+-----------------------
+1          |4          
+ij> insert into t1 values ((select k from t2 where k = 1), (select l from t2 where l = 4));
+1 row inserted/updated/deleted
+ij> select * from t1;
+I          |J          
+-----------------------
+1          |4          
+ij> delete from t1;
+1 row inserted/updated/deleted
+ij> -- values clause in set clause
+update t2 set k = (values 5) where l = 2;
+1 row inserted/updated/deleted
+ij> select * from t2;
+K          |L          
+-----------------------
+5          |2          
+3          |4          
+ij> -- k should be set to null
+update t2 set k = (values (select 2 from t2 where l = 5));
+2 rows inserted/updated/deleted
+ij> select * from t2;
+K          |L          
+-----------------------
+NULL       |2          
+NULL       |4          
+ij> -- table constructor tests
+-- negative tests
+-- non-matching # of elements
+values 1, (2, 3), 4;
+ERROR 42X59: The number of columns in each VALUES constructor must be the same.
+ij> values (2, 3), (4, 5, 6);
+ERROR 42X59: The number of columns in each VALUES constructor must be the same.
+ij> -- empty element
+values 1, , 2;
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> -- all ? parameters in a column position
+prepare v1 as 'values (1, ?, 2), (3, ?, 4), (5, ?, 7)';
+ERROR 42Y10: A table constructor that is not in an INSERT statement has all ? parameters in one of its columns.  For each column, at least one of the rows must have a non-parameter.
+ij> -- positive tests
+values 1, 2, 3;
+1          
+-----------
+1          
+2          
+3          
+ij> values (1, 2, 3), (4, 5, 6);
+1          |2          |3          
+-----------------------------------
+1          |2          |3          
+4          |5          |6          
+ij> prepare v2 as 'values (1, 1, ?), (1e0, ?, ''abc''), (?, 0, ''def'')';
+ij> execute v2 using 'values (''ghi'', 1, 2)';
+IJ WARNING: Autocommit may close using result set
+1                     |2          |3   
+---------------------------------------
+1.0                   |1          |ghi 
+1.0                   |1          |abc 
+2.0                   |0          |def 
+ij> execute v2 using 'values (cast(null as char(3)), cast(null as smallint), cast(null as float))';
+IJ WARNING: Autocommit may close using result set
+1                     |2          |3   
+---------------------------------------
+1.0                   |1          |NULL
+1.0                   |NULL       |abc 
+NULL                  |0          |def 
+ij> remove v2;
+ij> -- type precedence tests. tinyint not supported by DB2 Cloudscape
+values (1 = 1.2);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 11.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1.2 = 1);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 13.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1 = cast(1 as bigint));
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 11.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1 = cast(1 as smallint));
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 11.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (cast(1 as bigint) = 1);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 27.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (cast(1 as smallint) = 1);
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 29.
+ij> -- inserts
+create table insert_test1 (c1 int);
+0 rows inserted/updated/deleted
+ij> create table insert_test2 (i int, s smallint, d double precision, r real,
+						  c10 char(10), c30 char(30), vc10 varchar(10), vc30 varchar(30));
+0 rows inserted/updated/deleted
+ij> insert into insert_test1 values 1, 2, 3;
+3 rows inserted/updated/deleted
+ij> select * from insert_test1;
+C1         
+-----------
+1          
+2          
+3          
+ij> delete from insert_test1;
+3 rows inserted/updated/deleted
+ij> insert into insert_test1 values 1, null, 3;
+3 rows inserted/updated/deleted
+ij> select * from insert_test1;
+C1         
+-----------
+1          
+NULL       
+3          
+ij> delete from insert_test1;
+3 rows inserted/updated/deleted
+ij> insert into insert_test2 values (1, 1, 1e1, 1e1, '111', '1111111111', '111', '111111111'),
+								(2, 2, 2e2, 2e2, '222', '2222222222', '222', '222222222'),
+								(3, 3, 3e3, 3e3, '333', '3333333333', '333', '333333333');
+3 rows inserted/updated/deleted
+ij> select * from insert_test2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |111       |1111111111                    |111       |111111111                     
+2          |2     |200.0                 |200.0        |222       |2222222222                    |222       |222222222                     
+3          |3     |3000.0                |3000.0       |333       |3333333333                    |333       |333333333                     
+ij> delete from insert_test2;
+3 rows inserted/updated/deleted
+ij> insert into insert_test2 values (1, 1, null, null, null, null, null, null),
+								(2, 2, null, null, null, null, null, null),
+								(3, 3, null, null, null, null, null, null);
+3 rows inserted/updated/deleted
+ij> select * from insert_test2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+2          |2     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |3     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test2;
+3 rows inserted/updated/deleted
+ij> insert into insert_test2 values (1, null, null, null, null, null, null, null),
+								(null, 2, null, null, null, null, null, null),
+								(3, null, null, null, null, null, null, null);
+3 rows inserted/updated/deleted
+ij> select * from insert_test2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+NULL       |2     |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+3          |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test2;
+3 rows inserted/updated/deleted
+ij> insert into insert_test2 (r, d) values (1e2, 1e1),
+									   (2e2, 2e1),
+									   (3e2, 3e1);
+3 rows inserted/updated/deleted
+ij> select * from insert_test2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+NULL       |NULL  |10.0                  |100.0        |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |20.0                  |200.0        |NULL      |NULL                          |NULL      |NULL                          
+NULL       |NULL  |30.0                  |300.0        |NULL      |NULL                          |NULL      |NULL                          
+ij> delete from insert_test2;
+3 rows inserted/updated/deleted
+ij> prepare v3 as 'insert into insert_test2 values (1, 1, ?, 1e1, ''111'', ''1111111111'', ''111'', ''111111111''),
+								(2, 2, 2e2, 2e2, ''222'', ?, ''222'', ''222222222''),
+								(3, 3, 3e3, ?, ''333'', ''3333333333'', ''333'', ''333333333'')';
+ij> execute v3 using 'values (1e1, ''2222222222'', 3e3)';
+IJ WARNING: Autocommit may close using result set
+3 rows inserted/updated/deleted
+ij> execute v3 using 'values (cast(null as float), cast(null as char(10)), cast(null as real))';
+IJ WARNING: Autocommit may close using result set
+3 rows inserted/updated/deleted
+ij> remove v3;
+ij> -- insert with a table constructor with all ?s in one column
+prepare v4 as 'insert into insert_test2 values (?, null, null, null, null, null, null, null),
+				(?, null, null, null, null, null, null, null),
+				(?, null, null, null, null, null, null, null)';
+ij> execute v4 using 'values (10, 20, 30)';
+IJ WARNING: Autocommit may close using result set
+3 rows inserted/updated/deleted
+ij> select * from insert_test2;
+I          |S     |D                     |R            |C10       |C30                           |VC10      |VC30                          
+-------------------------------------------------------------------------------------------------------------------------------------------
+1          |1     |10.0                  |10.0         |111       |1111111111                    |111       |111111111                     
+2          |2     |200.0                 |200.0        |222       |2222222222                    |222       |222222222                     
+3          |3     |3000.0                |3000.0       |333       |3333333333                    |333       |333333333                     
+1          |1     |NULL                  |10.0         |111       |1111111111                    |111       |111111111                     
+2          |2     |200.0                 |200.0        |222       |NULL                          |222       |222222222                     
+3          |3     |3000.0                |NULL         |333       |3333333333                    |333       |333333333                     
+10         |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+20         |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+30         |NULL  |NULL                  |NULL         |NULL      |NULL                          |NULL      |NULL                          
+ij> remove v4;
+ij> delete from insert_test2;
+9 rows inserted/updated/deleted
+ij> -- negative test - all ?s in one column
+prepare v3 as 'values (1, ?, ?, 1e1, ''111'', ''1111111111'', ''111'', ''111111111''),
+								(2, ?, 2e2, 2e2, ''222'', ?, ''222'', ''222222222''),
+								(3, ?, 3e3, ?, ''333'', ''3333333333'', ''333'', ''333333333'')';
+ERROR 42Y10: A table constructor that is not in an INSERT statement has all ? parameters in one of its columns.  For each column, at least one of the rows must have a non-parameter.
+ij> -- values clause with a subquery in a derived table (bug 2335)
+create table x(x int);
+0 rows inserted/updated/deleted
+ij> insert into x values 1, 2, 3, 4;
+4 rows inserted/updated/deleted
+ij> select * from (values (1, (select max(x) from x), 1)) c;
+1          |2          |3          
+-----------------------------------
+1          |4          |1          
+ij> select * from x, (values (1, (select max(x) from x), 1)) c(a, b, c) where x = c;
+X          |A          |B          |C          
+-----------------------------------------------
+1          |1          |4          |1          
+ij> drop table x;
+0 rows inserted/updated/deleted
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table insert_test1;
+0 rows inserted/updated/deleted
+ij> drop table insert_test2;
+0 rows inserted/updated/deleted
+ij> --- supporting <TABLE> in table expression.
+create table target (a int, b int);
+0 rows inserted/updated/deleted
+ij> create index idx on target(b);
+0 rows inserted/updated/deleted
+ij> insert into target values (1, 2), (2, 3), (0, 2);
+3 rows inserted/updated/deleted
+ij> create table sub (a int, b int);
+0 rows inserted/updated/deleted
+ij> insert into sub values (1, 2), (2, 3), (2, 4);
+3 rows inserted/updated/deleted
+ij> select *
+from (select b from sub) as q(b);
+B          
+-----------
+2          
+3          
+4          
+ij> select *
+from table (select b from sub) as q(b);
+B          
+-----------
+2          
+3          
+4          
+ij> select *
+from table (select * from table (select b from sub) as q(b)) as p(a);
+A          
+-----------
+2          
+3          
+4          
+ij> select *
+from table (select b from sub) as q(b), target;
+B          |A          |B          
+-----------------------------------
+2          |1          |2          
+2          |2          |3          
+2          |0          |2          
+3          |1          |2          
+3          |2          |3          
+3          |0          |2          
+4          |1          |2          
+4          |2          |3          
+4          |0          |2          
+ij> select *
+from table (select b from sub) as q(b), target where q.b = target.b;
+B          |A          |B          
+-----------------------------------
+2          |1          |2          
+2          |0          |2          
+3          |2          |3          
+ij> select *
+from target, table (select b from sub) as q(b);
+A          |B          |B          
+-----------------------------------
+1          |2          |2          
+1          |2          |3          
+1          |2          |4          
+2          |3          |2          
+2          |3          |3          
+2          |3          |4          
+0          |2          |2          
+0          |2          |3          
+0          |2          |4          
+ij> select *
+from  (values (1)) as q(a);
+A          
+-----------
+1          
+ij> select *
+from  table (values (1)) as q(a), table (values ('a'), ('b'), ('c')) as p(a);
+A          |A
+-------------
+1          |a
+1          |b
+1          |c
+ij> -- should fail because <TABLE> can appear in front of derived table
+select *
+from  table target;
+ERROR 42X01: Syntax error: Encountered "" at line 3, column 13.
+ij> select *
+from  table (target);
+ERROR 42X01: Syntax error: Encountered "" at line 2, column 13.
+ij> select *
+from  table (target as q);
+ERROR 42X01: Syntax error: Encountered "" at line 2, column 13.
+ij> drop table sub;
+0 rows inserted/updated/deleted
+ij> drop table target;
+0 rows inserted/updated/deleted
+ij> -- negative tests
+create table t1 (c1 int);
+0 rows inserted/updated/deleted
+ij> insert into t1 values 1;
+1 row inserted/updated/deleted
+ij> -- boolean expression IS disallowed in values or select clause
+select nullif(c1, 1) is null from t1;
+ERROR 42X01: Syntax error: Encountered "is" at line 2, column 22.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 is null;
+ERROR 42X01: Syntax error: Encountered "is" at line 2, column 10.
+ij> -- boolean expression =, >, >=, <, <= disallowed in values or select clause
+values 1 = 1;
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 1 = 1 from t1;
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (nullif('abc','a') = 'abc');
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 27.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select (nullif('abc','a') = 'abc') from t1;
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 27.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select c11 = any (select c11 from t1) from t1;
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 12.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 2 > 1;
+ERROR 42X01: Syntax error: Encountered ">" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 2 > 1 from t1;
+ERROR 42X01: Syntax error: Encountered ">" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 2 >= 1;
+ERROR 42X01: Syntax error: Encountered ">=" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 2 >= 1 from t1;
+ERROR 42X01: Syntax error: Encountered ">=" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 < 2;
+ERROR 42X01: Syntax error: Encountered "<" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 1 < 2 from t1;
+ERROR 42X01: Syntax error: Encountered "<" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 <= 2;
+ERROR 42X01: Syntax error: Encountered "<=" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 1 <= 2 from t1;
+ERROR 42X01: Syntax error: Encountered "<=" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1>1);
+ERROR 42X01: Syntax error: Encountered ">" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select (c1 < 2) from t1;
+ERROR 42X01: Syntax error: Encountered "<" at line 2, column 12.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1 between 2 and 5);
+ERROR 42X01: Syntax error: Encountered "between" at line 2, column 11.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select (c1 between 1 and 3) from t1;
+ERROR 42X01: Syntax error: Encountered "between" at line 2, column 12.
+ij> -- boolean expression LIKE disallowed in values and select clause
+prepare ll1 as 'values ''asdf'' like ?';
+ERROR 42X01: Syntax error: Encountered "like" at line 1, column 15.
+ij> prepare ll1 as 'select ''asdf'' like ? from t1';
+ERROR 42X01: Syntax error: Encountered "like" at line 1, column 15.
+ij> prepare ll15 as 'values ''%foobar'' like ''Z%foobar'' escape ?';
+ERROR 42X01: Syntax error: Encountered "like" at line 1, column 18.
+ij> prepare ll15 as 'select ''%foobar'' like ''Z%foobar'' escape ? from t1';
+ERROR 42X01: Syntax error: Encountered "like" at line 1, column 18.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values '%foobar' like '%%foobar' escape '%';
+ERROR 42X01: Syntax error: Encountered "like" at line 2, column 18.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select '_foobar' like '__foobar' escape '_' from t1;
+ERROR 42X01: Syntax error: Encountered "like" at line 2, column 18.
+ij> prepare ll4 as 'values org.apache.derbyTesting.functionTests.tests.lang.CharUTF8::getMaxDefinedCharAsString() like ?';
+ERROR 42X01: Syntax error: Encountered "like" at line 1, column 95.
+ij> -- boolean expression INSTANCEOF disallowed in values and select clause
+values 1 instanceof int;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 instanceof java.lang.Integer between false and true;
+ERROR 42X01: Syntax error: Encountered "instanceof" at line 2, column 10.
+ij> -- boolean expression EXISTS disallowed in values and select clause
+select exists (values 1) from t1;
+ERROR 42X01: Syntax error: Encountered "exists" at line 2, column 8.
+ij> values exists (values 2);
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> -- boolean expression EXISTS diallowed in update set clause too
+update t1 set c11 = exists(values 1);
+ERROR 42X01: Syntax error: Encountered "exists" at line 2, column 21.
+ij> -- ?: not supported anymore
+values not true ? false : true;
+ERROR 42X80: VALUES clause must contain at least 1 element and all elements must be non-empty.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select not true ? false : true from t1;
+ERROR 42X01: Syntax error: Encountered "not" at line 2, column 8.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 ? 2 : 3;
+ERROR 42X01: Syntax error: Encountered "?" at line 2, column 10.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select c1 is null ? true : false from t1;
+ERROR 42X01: Syntax error: Encountered "is" at line 2, column 11.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select new java.lang.Integer(c1 is null ? 0 : c1) from t1;
+ERROR 42X01: Syntax error: Encountered "is" at line 2, column 33.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select c1, (c1=1? cast(null as int) : c1) is null from t1;
+ERROR 42X01: Syntax error: Encountered "=" at line 2, column 15.
+ij> -- try few tests in cloudscape mode for boolean expressions in values or select clause
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values new java.lang.String() = '';
+ERROR 42X01: Syntax error: java.lang.String.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values new java.lang.String('asdf') = 'asdf';
+ERROR 42X01: Syntax error: java.lang.String.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select new java.lang.String() = '' from t1;
+ERROR 42X01: Syntax error: java.lang.String.
+ij> -- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select new java.lang.String('asdf') = 'asdf' from t1;
+ERROR 42X01: Syntax error: java.lang.String.
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/views.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/views.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,337 @@
+ij> -- tests for views
+-- set autocommit off
+autocommit off;
+ij> -- create some tables
+create table t1(i int, s smallint, f float, dp double precision);
+0 rows inserted/updated/deleted
+ij> create table t2(i int, s smallint, f float, dp double precision);
+0 rows inserted/updated/deleted
+ij> create table insert_test (f float);
+0 rows inserted/updated/deleted
+ij> -- create some views
+create view sv1 (s_was_i, dp_was_s, i_was_f, f_was_dp) as
+select * from t1;
+0 rows inserted/updated/deleted
+ij> create view sv2 as select * from t1;
+0 rows inserted/updated/deleted
+ij> create view sv3 as select dp, f from t1 where i = s;
+0 rows inserted/updated/deleted
+ij> create view sv4(i) as values 1, 2, 3;
+0 rows inserted/updated/deleted
+ij> create view sv5 (c1) as select * from sv4;
+0 rows inserted/updated/deleted
+ij> create view cv1 (t1_i, t2_s, t1_f, t2_dp) as
+select t1.i, t2.s, t1.f, t2.dp from t1, t2 where t1.i between t2.s and t2.i;
+0 rows inserted/updated/deleted
+ij> create view cv2 as select * from sv1, sv3 where dp = f_was_dp;
+0 rows inserted/updated/deleted
+ij> create view cv3(i,s,f,dp) as select i, s, f, dp from sv2 union
+				   select dp_was_s, s_was_i, f_was_dp, i_was_f from sv1;
+0 rows inserted/updated/deleted
+ij> create view cv4 (distinct_i) as select distinct i from t1;
+0 rows inserted/updated/deleted
+ij> create view cv5(i,s) as select * from (select i, s from cv3 where i = s) xyz;
+0 rows inserted/updated/deleted
+ij> create view cv6 (c1, c2) as select a.c1 as x, b.c1 as y from sv5 a, sv5 b 
+where a.c1 <> b.c1;
+0 rows inserted/updated/deleted
+ij> create view cv7 as select t.i, v.c1 from t1 t, cv6 v where t.i = v.c1;
+0 rows inserted/updated/deleted
+ij> create view cv8(col1, col2) as select 'Column 1',  'Value = ' || cast(c1 as char(5)) from cv7
+		where 1 in (select i from sv5);
+0 rows inserted/updated/deleted
+ij> -- populate the tables
+insert into t1 values (1, 1, 1.0, 1.0);
+1 row inserted/updated/deleted
+ij> insert into t1 values (1, 2, 3.0, 4.0);
+1 row inserted/updated/deleted
+ij> insert into t1 values (8, 7, 6.0, 5.0);
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 1, 1.0, 1.0);
+1 row inserted/updated/deleted
+ij> insert into t2 values (1, 2, 3.0, 4.0);
+1 row inserted/updated/deleted
+ij> insert into t2 values (8, 7, 6.0, 5.0);
+1 row inserted/updated/deleted
+ij> -- negative tests
+-- view with a parameter
+create view vneg as select * from t1 where i = ?;
+ERROR 42X98: Parameters are not allowed in a VIEW definition.
+ij> -- drop view on table
+drop view t1;
+ERROR X0Y16: 'T1' is not a view.  If it is a table, then use DROP TABLE instead.
+ij> -- drop table on view
+drop table sv1;
+ERROR 42Y62: 'DROP TABLE' is not allowed on 'APP.SV1' because it is a view.
+ij> -- views and tables share same name space
+create view sv1(i) as values 1;
+ERROR X0Y32: Table/View 'SV1' already exists in Schema 'APP'.
+ij> create table sv1 (c1 int);
+ERROR X0Y32: Table/View 'SV1' already exists in Schema 'APP'.
+ij> create view t1(i) as values 1;
+ERROR X0Y32: Table/View 'T1' already exists in Schema 'APP'.
+ij> -- drop non-existant view
+drop view notexists;
+ERROR X0X05: Table 'NOTEXISTS' does not exist.
+ij> -- duplicate column name in view's column list
+create view shouldntwork (c1, c2, c1) as select i, s, f from t1;
+ERROR 42Y13: Column name 'C1' appears more than once in the create view statement.
+ij> -- # of columns in view's column list does not match that in view definition
+create view shouldntwork (c1, c2, c3) as select i, s from t1;
+ERROR 42X56: The number of columns in the view column list does not match the number of columns in the underlying query expression in the view definition for 'SHOULDNTWORK'.
+ij> create view shouldntwork (c1, c2, c3) as select i, s, f, dp from t1;
+ERROR 42X56: The number of columns in the view column list does not match the number of columns in the underlying query expression in the view definition for 'SHOULDNTWORK'.
+ij> -- try to drop a table out from under a view
+drop table t1;
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'SV1' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'SV2' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'SV3' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV1' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV2' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV3' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV4' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV5' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV7' is dependent on that object.
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T1' because VIEW 'CV8' is dependent on that object.
+ij> drop table t2;
+ERROR X0Y23: Operation 'DROP TABLE' cannot be performed on object 'T2' because VIEW 'CV1' is dependent on that object.
+ij> -- try to drop a view out from under another view
+drop view sv1;
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV1' because VIEW 'CV2' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV1' because VIEW 'CV3' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV1' because VIEW 'CV5' is dependent on that object.
+ij> drop view sv3;
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV3' because VIEW 'CV2' is dependent on that object.
+ij> -- try to drop a view out from under a cursor
+get cursor c1 as 'select * from cv8';
+ij> drop view cv8;
+ERROR X0X95: Operation 'DROP VIEW' cannot be performed on object 'CV8' because there is an open ResultSet dependent on that object.
+ij> drop view sv5;
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV5' because VIEW 'CV6' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV5' because VIEW 'CV7' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV5' because VIEW 'CV8' is dependent on that object.
+ERROR X0X95: Operation 'DROP VIEW' cannot be performed on object 'SV5' because there is an open ResultSet dependent on that object.
+ij> drop view sv4;
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV4' because VIEW 'SV5' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV4' because VIEW 'CV6' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV4' because VIEW 'CV7' is dependent on that object.
+ERROR X0Y23: Operation 'DROP VIEW' cannot be performed on object 'SV4' because VIEW 'CV8' is dependent on that object.
+ERROR X0X95: Operation 'DROP VIEW' cannot be performed on object 'SV4' because there is an open ResultSet dependent on that object.
+ij> close c1;
+ij> -- view updateability
+-- (No views are currently updateable)
+insert into sv1 values 1;
+ERROR 42Y24: View 'SV1' is not updatable. (Views are currently not updateable.)
+ij> delete from sv1;
+ERROR 42Y24: View 'SV1' is not updatable. (Views are currently not updateable.)
+ij> update sv1 set s_was_i = 0;
+ERROR 42Y24: View 'SV1' is not updatable. (Views are currently not updateable.)
+ij> get cursor c2 as 'select * from sv1 for update of s_was_i';
+ERROR 42Y90: FOR UPDATE is not permitted on this type of statement.
+ij> -- create index on a view
+create index i1 on sv2(i);
+ERROR 42Y62: 'CREATE INDEX' is not allowed on 'APP.SV2' because it is a view.
+ij> -- positive tests
+select * from sv1;
+S_WAS_I    |DP_WA&|I_WAS_F               |F_WAS_DP              
+----------------------------------------------------------------
+1          |1     |1.0                   |1.0                   
+1          |2     |3.0                   |4.0                   
+8          |7     |6.0                   |5.0                   
+ij> select * from sv2;
+I          |S     |F                     |DP                    
+----------------------------------------------------------------
+1          |1     |1.0                   |1.0                   
+1          |2     |3.0                   |4.0                   
+8          |7     |6.0                   |5.0                   
+ij> select * from sv3;
+DP                    |F                     
+---------------------------------------------
+1.0                   |1.0                   
+ij> select * from sv4;
+I          
+-----------
+1          
+2          
+3          
+ij> select * from sv5;
+C1         
+-----------
+1          
+2          
+3          
+ij> select * from cv1;
+T1_I       |T2_S  |T1_F                  |T2_DP                 
+----------------------------------------------------------------
+1          |1     |1.0                   |1.0                   
+1          |1     |3.0                   |1.0                   
+8          |7     |6.0                   |5.0                   
+ij> select * from cv2;
+S_WAS_I    |DP_WA&|I_WAS_F               |F_WAS_DP              |DP                    |F                     
+--------------------------------------------------------------------------------------------------------------
+1          |1     |1.0                   |1.0                   |1.0                   |1.0                   
+ij> select * from cv3;
+I          |S          |F                     |DP                    
+---------------------------------------------------------------------
+1          |1          |1.0                   |1.0                   
+1          |2          |3.0                   |4.0                   
+2          |1          |4.0                   |3.0                   
+7          |8          |5.0                   |6.0                   
+8          |7          |6.0                   |5.0                   
+ij> select * from cv4 order by 1;
+DISTINCT_I 
+-----------
+1          
+8          
+ij> select * from cv5;
+I          |S          
+-----------------------
+1          |1          
+ij> select * from cv6;
+C1         |C2         
+-----------------------
+1          |2          
+1          |3          
+2          |1          
+2          |3          
+3          |1          
+3          |2          
+ij> select * from cv7;
+I          |C1         
+-----------------------
+1          |1          
+1          |1          
+1          |1          
+1          |1          
+ij> select * from cv8;
+COL1    |COL2         
+----------------------
+Column 1|Value = 1    
+Column 1|Value = 1    
+Column 1|Value = 1    
+Column 1|Value = 1    
+ij> select * from (select * from cv3) x order by 1,2;
+I          |S          |F                     |DP                    
+---------------------------------------------------------------------
+1          |1          |1.0                   |1.0                   
+1          |2          |3.0                   |4.0                   
+2          |1          |4.0                   |3.0                   
+7          |8          |5.0                   |6.0                   
+8          |7          |6.0                   |5.0                   
+ij> select * from (select * from cv4) x order by 1;
+DISTINCT_I 
+-----------
+1          
+8          
+ij> select * from (select * from cv5) x;
+I          |S          
+-----------------------
+1          |1          
+ij> -- verify that we can create and drop indexes on underlying tables
+create index i on t1(i);
+0 rows inserted/updated/deleted
+ij> drop index i;
+0 rows inserted/updated/deleted
+ij> -- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> -- test inserts from a view
+insert into insert_test select * from sv5;
+3 rows inserted/updated/deleted
+ij> select * from insert_test;
+F                     
+----------------------
+1.0                   
+2.0                   
+3.0                   
+ij> -- drop the views
+drop view cv8;
+0 rows inserted/updated/deleted
+ij> drop view cv7;
+0 rows inserted/updated/deleted
+ij> drop view cv6;
+0 rows inserted/updated/deleted
+ij> drop view cv5;
+0 rows inserted/updated/deleted
+ij> drop view cv4;
+0 rows inserted/updated/deleted
+ij> drop view cv3;
+0 rows inserted/updated/deleted
+ij> drop view cv2;
+0 rows inserted/updated/deleted
+ij> drop view cv1;
+0 rows inserted/updated/deleted
+ij> drop view sv5;
+0 rows inserted/updated/deleted
+ij> drop view sv4;
+0 rows inserted/updated/deleted
+ij> drop view sv3;
+0 rows inserted/updated/deleted
+ij> drop view sv2;
+0 rows inserted/updated/deleted
+ij> drop view sv1;
+0 rows inserted/updated/deleted
+ij> -- drop the tables
+drop table t1;
+0 rows inserted/updated/deleted
+ij> drop table t2;
+0 rows inserted/updated/deleted
+ij> drop table insert_test;
+0 rows inserted/updated/deleted
+ij> -- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+TABLENAME                                                                                                                       |2          
+--------------------------------------------------------------------------------------------------------------------------------------------
+SYSCONGLOMERATES                                                                                                                |1          
+SYSTABLES                                                                                                                       |1          
+SYSCOLUMNS                                                                                                                      |1          
+SYSSCHEMAS                                                                                                                      |1          
+SYSCONSTRAINTS                                                                                                                  |1          
+SYSKEYS                                                                                                                         |1          
+SYSDEPENDS                                                                                                                      |1          
+SYSALIASES                                                                                                                      |1          
+SYSVIEWS                                                                                                                        |1          
+SYSCHECKS                                                                                                                       |1          
+SYSFOREIGNKEYS                                                                                                                  |1          
+SYSSTATEMENTS                                                                                                                   |1          
+SYSFILES                                                                                                                        |1          
+SYSTRIGGERS                                                                                                                     |1          
+SYSSTATISTICS                                                                                                                   |1          
+ij> -- bug 2745
+CREATE TABLE orgtable (
+	name VARCHAR(255),
+	supervisorname VARCHAR(255),
+	jobtitle VARCHAR(255)
+);
+0 rows inserted/updated/deleted
+ij> CREATE VIEW orgview AS
+    SELECT name, supervisorname, jobtitle FROM orgtable;
+0 rows inserted/updated/deleted
+ij> SELECT name,jobtitle FROM orgview WHERE name IN (SELECT supervisorname FROM orgview WHERE name LIKE 'WYATT%');
+NAME                                                                                                                            |JOBTITLE                                                                                                                        
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ij> drop view orgview;
+0 rows inserted/updated/deleted
+ij> drop table orgtable;
+0 rows inserted/updated/deleted
+ij> -- reset autocommit
+autocommit on;
+ij> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,30664 @@
+ij> -- This test is an adaptation of the Wisconsin benchmark, as documented in
+-- The Benchmark Handbook, Second Edition (edited by Jim Gray).  The structure
+-- of the tables and the data in the tables are taken from there.
+--
+-- The original benchmark talks about clustered and non-clustered
+-- indexes - as far as I can tell, this really means indexes where the
+-- row ordering is or is not the same as in the base table.  It does
+-- not mean special types of indexes.  I am putting in queries that
+-- use both ordered and unordered indexes, despite the fact that
+-- our optimizer does not currently distinguish these cases.
+--
+-- Another difference is that the original Wisconsin benchmark is a performance
+-- test, while this test is only intended to ensure that the optimizer comes
+-- up with the right query plan.  Therefore, this test doesn't include those
+-- parts of the Wisconsin benchmark where the optimizer has no choice of
+-- access path (e.g. single-table query with no indexes), nor does it include
+-- the projection and update queries.
+--
+-- This test only does the first variation of each query, since that is
+-- all that is documented in The Benchmark Handbook (it wouldn't be a true
+-- academic reference text if everything were spelled out).
+--
+-- After the original Wisconsin queries are a bunch of queries that use the
+-- Wisconsin schema but that were written at Cloudscape specifically for
+-- testing our optimizer.
+autocommit off;
+ij> set isolation serializable;
+0 rows inserted/updated/deleted
+ij> -- the method refers to a method in performance suite that takes a Connection.
+--create function WISCInsert(rowcount int, tableName varchar(20)) returns int language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.lang.WiscVTI';
+CREATE PROCEDURE WISCINSERT(rowcount int, tableName varchar(20)) LANGUAGE JAVA PARAMETER STYLE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.WiscVTI.WISCInsertWOConnection';
+0 rows inserted/updated/deleted
+ij> create table TENKTUP1 (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52) not null,
+		stringu2 char(52) not null,
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> --insert 10000 rows into TENKTUP1 
+call WISCINSERT( 10000, 'TENKTUP1');
+0 rows inserted/updated/deleted
+ij> create unique index TK1UNIQUE1 on TENKTUP1(unique1);
+0 rows inserted/updated/deleted
+ij> create unique index TK1UNIQUE2 on TENKTUP1(unique2);
+0 rows inserted/updated/deleted
+ij> create index TK1TWO on TENKTUP1(two);
+0 rows inserted/updated/deleted
+ij> create index TK1FOUR on TENKTUP1(four);
+0 rows inserted/updated/deleted
+ij> create index TK1TEN on TENKTUP1(ten);
+0 rows inserted/updated/deleted
+ij> create index TK1TWENTY on TENKTUP1(twenty);
+0 rows inserted/updated/deleted
+ij> create index TK1ONEPERCENT on TENKTUP1(onePercent);
+0 rows inserted/updated/deleted
+ij> create index TK1TWENTYPERCENT on TENKTUP1(twentyPercent);
+0 rows inserted/updated/deleted
+ij> create index TK1EVENONEPERCENT on TENKTUP1(evenOnePercent);
+0 rows inserted/updated/deleted
+ij> create index TK1ODDONEPERCENT on TENKTUP1(oddOnePercent);
+0 rows inserted/updated/deleted
+ij> create unique index TK1STRINGU1 on TENKTUP1(stringu1);
+0 rows inserted/updated/deleted
+ij> create unique index TK1STRINGU2 on TENKTUP1(stringu2);
+0 rows inserted/updated/deleted
+ij> create index TK1STRING4 on TENKTUP1(string4);
+0 rows inserted/updated/deleted
+ij> create table TENKTUP2 (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> -- insert 10000 rows into TENKTUP2
+call WISCInsert( 10000, 'TENKTUP2');
+0 rows inserted/updated/deleted
+ij> create unique index TK2UNIQUE1 on TENKTUP2(unique1);
+0 rows inserted/updated/deleted
+ij> create unique index TK2UNIQUE2 on TENKTUP2(unique2);
+0 rows inserted/updated/deleted
+ij> create table ONEKTUP (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> -- insert 1000 rows into ONEKTUP
+call WISCInsert( 1000, 'ONEKTUP');
+0 rows inserted/updated/deleted
+ij> create unique index ONEKUNIQUE1 on ONEKTUP(unique1);
+0 rows inserted/updated/deleted
+ij> create unique index ONEKUNIQUE2 on ONEKTUP(unique2);
+0 rows inserted/updated/deleted
+ij> create table BPRIME (
+		unique1 int,
+		unique2 int,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+0 rows inserted/updated/deleted
+ij> insert into BPRIME
+select * from TENKTUP2
+where TENKTUP2.unique2 < 1000;
+1000 rows inserted/updated/deleted
+ij> commit;
+ij> call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+0 rows inserted/updated/deleted
+ij> maximumdisplaywidth 8000;
+ij> -- Wisconsin Query 3
+get cursor c as
+	'select * from TENKTUP1
+	where unique2 between 0 and 99';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where unique2 between 0 and 99
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 4
+get cursor c as
+	'select * from TENKTUP1
+	where unique2 between 792 and 1791';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where unique2 between 792 and 1791
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 5
+get cursor c as
+	'select * from TENKTUP1
+	where unique1 between 0 and 99';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where unique1 between 0 and 99
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 6
+get cursor c as
+	'select * from TENKTUP1
+	where unique1 between 792 and 1791';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where unique1 between 792 and 1791
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 7
+get cursor c as
+	'select *
+	from TENKTUP1
+	where unique2 = 2001';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select *
+	from TENKTUP1
+	where unique2 = 2001
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Wisconsin Query 12
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP2.unique2 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP2.unique2 < 1000)
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Wisconsin Query 13
+get cursor c as
+	'select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique2 = BPRIME.UNIQUE2)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique2 = BPRIME.UNIQUE2)
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for BPRIME at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Wisconsin query 14
+-- NOTE: This could benefit from transitive closure, which our optimizer
+-- doesn't do (yet).
+-- Note that after fix for optimizer bug 5868, in runtime statistics info, we will see 2 qualifiers for table TENKTUP2. This is because as fix for
+-- bug 5868, while getting rid of a redundant predicate which is a start and/or stop AND a qualifier, we mark the predicate we are going to keep 
+-- as start and/or stop AND as a qualifier. Prior to fix of bug 5868, we were disregarding the qualifier flag on the redundant predicate if it 
+-- was a start and/or stop predicate too.
+get cursor c as
+	'select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique2 = TENKTUP1.unique2)
+	and (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP1.unique2 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique2 = TENKTUP1.unique2)
+	and (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP1.unique2 < 1000)
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Wisconsin Query 15
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Wisconsin Query 16
+get cursor c as
+	'select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique1 = BPRIME.unique1)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique1 = BPRIME.unique1)
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for BPRIME at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Wisconsin Query 17
+-- NOTE: This could benefit from transitive closure, which our optimizer
+-- doesn't do (yet).
+-- Note that after fix for optimizer bug 5868, in runtime statistics info, we will see 2 qualifiers for table TENKTUP2. This is because as fix for
+-- bug 5868, while getting rid of a redundant predicate which is a start and/or stop AND a qualifier, we mark the predicate we are going to keep 
+-- as start and/or stop AND as a qualifier. Prior to fix of bug 5868, we were disregarding the qualifier flag on the redundant predicate if it 
+-- was a start and/or stop predicate too.
+get cursor c as
+	'select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique1 = TENKTUP1.unique1)
+	and (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique1 = TENKTUP1.unique1)
+	and (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Column[0][1] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- This is the end of the Wisconsin queries.  Now do some queries that are
+-- not part of the original Wisconsin benchmark, using the Wisconsin schema.
+-- Single-table queries using index on column 'two'
+-- 50% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where two = 0
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 50% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two = 3';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where two = 3
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 100% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where two >= 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where two >= 0
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 2
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two > 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where two > 1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 50% selectivity index that covers query - should do index scan
+get cursor c as
+	'select two from TENKTUP1
+	where two = 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1
+	where two = 1
+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 Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'four'
+-- 25% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where four = 0
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 25% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four = 4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where four = 4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 75% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where four >= 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where four >= 1
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 3
+Operator: <
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four > 3';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where four > 3
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 25% selectivity index that covers query - should do index scan
+get cursor c as
+	'select four from TENKTUP1
+	where four = 2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select four from TENKTUP1
+	where four = 2
+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 Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'twentyPercent'
+-- 20% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent = 2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent = 2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 20% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent = 5';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent = 5
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent > 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent > 1
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 8
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent > 4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twentyPercent > 4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 20% selectivity index that covers query - should do index scan
+get cursor c as
+	'select twentyPercent from TENKTUP1
+	where twentyPercent = 3';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select twentyPercent from TENKTUP1
+	where twentyPercent = 3
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'ten'
+-- 10% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where ten = 5';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where ten = 5
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 10% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten = 10';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where ten = 10
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten <= 4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where ten <= 4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten <= 5';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where ten <= 5
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 4
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten > 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where ten > 100
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 10% selectivity index that covers query - should do index scan
+get cursor c as
+	'select ten from TENKTUP1
+	where ten = 7';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select ten from TENKTUP1
+	where ten = 7
+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 Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'twenty'
+-- 5% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where twenty = 17';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twenty = 17
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 5% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty = 20';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twenty = 20
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty <= 9';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twenty <= 9
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 55% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty <= 10';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twenty <= 10
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 5
+Operator: <=
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty < 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where twenty < 0
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		qualifiers:
+None
+ij> commit;
+ij> -- 5% selectivity index that covers query - should do index scan
+get cursor c as
+	'select twenty from TENKTUP1
+	where twenty = 19';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select twenty from TENKTUP1
+	where twenty = 19
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'onePercent'
+-- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent = 63';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent = 63
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent = 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent = 100
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 49';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent > 49
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 6
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 40';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent > 40
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 6
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 101';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where onePercent > 101
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select onePercent from TENKTUP1
+	where onePercent = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select onePercent from TENKTUP1
+	where onePercent = 0
+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 Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'evenOnePercent'
+-- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent = 64';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent = 64
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent = 200';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent = 200
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 99';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent > 99
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 11
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 80';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent > 80
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 11
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 198';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where evenOnePercent > 198
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select evenOnePercent from TENKTUP1
+	where evenOnePercent = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select evenOnePercent from TENKTUP1
+	where evenOnePercent = 0
+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 Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'oddOnePercent'
+-- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent = 63';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent = 63
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent = 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent = 100
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		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> commit;
+ij> -- matches 40% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 120';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent > 120
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 80';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent > 80
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 12
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 199';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where oddOnePercent > 199
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select oddOnePercent from TENKTUP1
+	where oddOnePercent = 1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select oddOnePercent from TENKTUP1
+	where oddOnePercent = 1
+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 Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	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> commit;
+ij> -- Single-table queries using index on column 'stringu1'
+-- unique index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 = ''AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 = 'AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 = ''AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 = 'AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 > 'AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 13
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 51% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 > 'AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 13
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu1 > 'AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index that covers query - should do index scan
+get cursor c as
+	'select stringu1 from TENKTUP1
+	where stringu1 = ''AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select stringu1 from TENKTUP1
+	where stringu1 = 'AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	qualifiers:
+None
+ij> commit;
+ij> -- Single-table queries using index on column 'stringu2'
+-- unique index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 = ''AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 = 'AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 = ''AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 = 'AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 > 'AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 14
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 51% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 > 'AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 14
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where stringu2 > 'AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- unique index that covers query - should do index scan
+get cursor c as
+	'select stringu2 from TENKTUP1
+	where stringu2 = ''AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select stringu2 from TENKTUP1
+	where stringu2 = 'AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 1
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+	qualifiers:
+None
+ij> commit;
+ij> -- Single-table queries using index on column 'string4'
+-- 25% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 = ''AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where string4 = 'AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		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> commit;
+ij> -- 25% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 = ''EEEExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where string4 = 'EEEExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		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> commit;
+ij> -- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 > ''HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where string4 > 'HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched=All
+	Number of columns fetched=16
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=heap
+	start position: 
+null	stop position: 
+null	qualifiers:
+Column[0][0] Id: 15
+Operator: <=
+Ordered nulls: false
+Unknown return value: true
+Negate comparison result: true
+ij> commit;
+ij> -- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 > ''VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+	where string4 > 'VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- 25% selectivity index that covers query - should do index scan
+get cursor c as
+	'select string4 from TENKTUP1
+	where string4 = ''OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select string4 from TENKTUP1
+	where string4 = 'OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
+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 Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	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> commit;
+ij> -- Now test equijoins with different selectivities and different numbers
+-- of outer rows.  The approach taken is that different join columns are
+-- used, and that TENKTUP1 has indexes on all the joining columns, while
+-- TENKTUP2 does not.  We use the unique1 column of TENKTUP2 to select
+-- different numbers of rows.  The two tables will always appear in the
+-- FROM clause with TENKTUP1 first, and TENKTUP2 second - it is up to
+-- the optimizer to figure out which should come first in the join order.
+-- Joins on unique1
+-- Join on unique1, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=2
+		Number of rows qualified=16
+		Number of rows visited=16
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Join on unique1, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=3
+		Number of rows qualified=16
+		Number of rows visited=27
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 2500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=4
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Joins on two
+-- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+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: 
+Nested Loop Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 1
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=2
+		Number of rows qualified=16
+		Number of rows visited=16
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+None
+Right result set:
+	Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=16
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Joins on four
+-- Join on four, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on four, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on ten
+-- Join on ten, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on ten, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twenty
+-- Join on twenty, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twenty, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on onePercent
+-- Join on onePercent, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on onePercent, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twentyPercent
+-- Join on twentyPercent, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Join on twentyPercent, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on stringu1
+-- Join on stringu1, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Joins on string4
+-- Join on string4, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Now do the same equijoin tests, but select only one column from TENKTUP1.
+-- This way, it can choose hash join where appropriate (it avoids it where
+-- it thinks the hash table will take too much memory).
+-- Joins on unique1
+-- Join on unique1, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 6000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=6000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 2500
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=15
+				Number of rows qualified=2500
+				Number of rows visited=2501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 1000
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=7
+				Number of rows qualified=1000
+				Number of rows visited=1001
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 500
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=4
+				Number of rows qualified=500
+				Number of rows visited=501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		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 TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+			Number of opens = 1
+			Hash table size = 100
+			Hash key is column number 0
+			Rows seen = 0
+			Rows filtered = 0
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=2
+				Number of rows qualified=100
+				Number of rows visited=101
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				scan qualifiers:
+None
+				next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on unique1, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Joins on two
+-- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Joins on four
+-- Join on four, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 4
+		Hash key is column number 3
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 3}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 3
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on four, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 3}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on ten
+-- Join on ten, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 10
+		Hash key is column number 4
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 4}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 4
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on ten, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 4}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twenty
+-- Join on twenty, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 20
+		Hash key is column number 5
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 5}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 5
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twenty, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 5}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on onePercent
+-- Join on onePercent, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on onePercent, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 6}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on twentyPercent
+-- Join on twentyPercent, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 5
+		Hash key is column number 8
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 8}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 8
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Join on twentyPercent, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 8}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> commit;
+ij> -- Joins on stringu1
+-- Join on stringu1, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on stringu1, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Joins on string4
+-- Join on string4, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Join on string4, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=3
+				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> commit;
+ij> -- Test the effect of ORDER BY on access path.  The optimizer takes
+-- the cost of sorting into account, and may choose an access path
+-- in the same order as the ORDER BY, especially if the sort is
+-- expensive.
+--
+-- First try single-table queries.
+-- No where clause, try ordering on different indexed columns
+get cursor c as
+	'select * from TENKTUP1 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by unique2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by two
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by four
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by ten
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by twenty
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by onePercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by twentyPercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by evenOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by evenOnePercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by oddOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by oddOnePercent
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by stringu1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by stringu2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by stringu2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1 order by string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 order by string4
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched={1}
+		Number of columns fetched=1
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=3
+		start position: 
+	None
+		stop position: 
+	None
+		qualifiers:
+None
+ij> commit;
+ij> -- Now try the same thing with covering indexes
+get cursor c as
+	'select unique1 from TENKTUP1 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select unique1 from TENKTUP1 order by unique1
+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 Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select unique2 from TENKTUP1 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select unique2 from TENKTUP1 order by unique2
+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 Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select two from TENKTUP1 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 order by two
+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 Scan ResultSet for TENKTUP1 using index TK1TWO at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select four from TENKTUP1 order by four';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select four from TENKTUP1 order by four
+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 Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select ten from TENKTUP1 order by ten';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select ten from TENKTUP1 order by ten
+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 Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select twenty from TENKTUP1 order by twenty';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select twenty from TENKTUP1 order by twenty
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select onePercent from TENKTUP1 order by onePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select onePercent from TENKTUP1 order by onePercent
+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 Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select twentyPercent from TENKTUP1 order by twentyPercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select twentyPercent from TENKTUP1 order by twentyPercent
+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 Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select evenOnePercent from TENKTUP1 order by evenOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select evenOnePercent from TENKTUP1 order by evenOnePercent
+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 Scan ResultSet for TENKTUP1 using index TK1EVENONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select oddOnePercent from TENKTUP1 order by oddOnePercent';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select oddOnePercent from TENKTUP1 order by oddOnePercent
+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 Scan ResultSet for TENKTUP1 using index TK1ODDONEPERCENT at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=2
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select stringu1 from TENKTUP1 order by stringu1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select stringu1 from TENKTUP1 order by stringu1
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU1 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select stringu2 from TENKTUP1 order by stringu2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select stringu2 from TENKTUP1 order by stringu2
+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 Scan ResultSet for TENKTUP1 using index TK1STRINGU2 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select string4 from TENKTUP1 order by string4';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select string4 from TENKTUP1 order by string4
+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 Scan ResultSet for TENKTUP1 using index TK1STRING4 at serializable isolation level using share table locking chosen by the optimizer
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+Fetch Size = 16
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+scan information: 
+	Bit set of columns fetched={0}
+	Number of columns fetched=1
+	Number of deleted rows visited=0
+	Number of pages visited=0
+	Number of rows qualified=0
+	Number of rows visited=0
+	Scan type=btree
+	Tree height=3
+	start position: 
+	None
+	stop position: 
+	None
+	qualifiers:
+None
+ij> commit;
+ij> -- Where clause on same column as order by, with different selectivities.
+-- 60%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 6000 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 6000 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 25%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 2500 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 2500 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 10%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 1000 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 1000 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 5%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 500 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 500 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- 1%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 100 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 100 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	None
+		stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- one row
+get cursor c as
+	'select * from TENKTUP1 where unique1 = 0 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 = 0 order by unique1
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Where clause and order by on different columns - non-covering
+-- 60%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 6000 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 6000 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 6000
+	Rows filtered = 0
+	Fetch Size = 16
+		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=16
+		Number of pages visited=770
+		Number of rows qualified=6000
+		Number of rows visited=10000
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 2500 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 2500 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 2500
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 2500
+		Rows filtered = 0
+		Fetch Size = 16
+			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=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 10%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 1000 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 1000 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1000
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 5%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 500 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 500 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 500
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 500
+		Rows filtered = 0
+		Fetch Size = 16
+			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=4
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 1%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 100 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 < 100 order by unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 100
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 100
+		Rows filtered = 0
+		Fetch Size = 16
+			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=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- one row
+get cursor c as
+	'select * from TENKTUP1 where unique1 = 0 order by unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1 where unique1 = 0 order by unique2
+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 TENKTUP1:
+Number of opens = 1
+Rows seen = 0
+Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=2
+		Number of deleted rows visited=0
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=btree
+		Tree height=2
+		start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+		qualifiers:
+None
+ij> commit;
+ij> -- Where clause and order by on different columns - covering
+create index TK1UNIQUE1TWO on TENKTUP1(unique1, two);
+0 rows inserted/updated/deleted
+ij> create index TK1TWOUNIQUE1 on TENKTUP1(two, unique1);
+0 rows inserted/updated/deleted
+ij> -- 60%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 6000 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 6000 order by two
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 2500 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 2500 order by two
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 10%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 1000 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 1000 order by two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1TWO at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1000
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=8
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 5%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 500 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 500 order by two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1TWO at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 500
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=5
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 1%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 100 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 where unique1 < 100 order by two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1TWO at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 100
+		Rows filtered = 0
+		Fetch Size = 16
+			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={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- one row
+-- RESOLVE: For some reason, this avoids the sort by choosing the
+-- index on column two, rather than by treating it as a one-row table.
+-- It does not do this if you run the query by itself, outside of this
+-- test.
+get cursor c as
+	'select two from TENKTUP1 where unique1 = 0 order by two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two from TENKTUP1 where unique1 = 0 order by two
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {2}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> drop index TK1UNIQUE1TWO;
+0 rows inserted/updated/deleted
+ij> -- Constant search condition on first column of index, order on second
+-- column.
+get cursor c as
+	'select two, unique1 from TENKTUP1 where two = 0 order by unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two, unique1 from TENKTUP1 where two = 0 order by unique1
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> -- Constant search condition on first column of index, order on first and second
+-- columns.
+get cursor c as
+	'select two, unique1 from TENKTUP1 where two = 0 order by two, unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select two, unique1 from TENKTUP1 where two = 0 order by two, unique1
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (2):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Scan ResultSet for TENKTUP1 using index TK1TWOUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={0, 1}
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> drop index TK1TWOUNIQUE1;
+0 rows inserted/updated/deleted
+ij> commit;
+ij> -- Now test sort avoidance with joins.
+--
+-- First try two-way joins where the order by column is in only one table
+-- Order by column same as joining column
+--
+-- 100% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table 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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 60% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 2500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 2500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=15
+			Number of rows qualified=2500
+			Number of rows visited=2501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 10% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=7
+			Number of rows qualified=1000
+			Number of rows visited=1001
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 5% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 500
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=4
+			Number of rows qualified=500
+			Number of rows visited=501
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- 1% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1
+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: 
+Hash Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Hash Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 0
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=100
+			Number of rows visited=101
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 0
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- one row from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Order by column different from joining column
+--
+-- 100% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 order by TENKTUP1.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table 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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- 60% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 6000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 6000
+		Rows seen from the right = 6000
+		Rows filtered = 0
+		Rows returned = 6000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 6000
+			Rows filtered = 0
+			Fetch Size = 16
+				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=16
+				Number of pages visited=770
+				Number of rows qualified=6000
+				Number of rows visited=10000
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 6000
+			Rows seen = 6000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 6000
+				Rows seen = 6000
+				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=12000
+					Number of rows qualified=6000
+					Number of rows visited=6000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 2500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 2500
+		Rows seen from the right = 2500
+		Rows filtered = 0
+		Rows returned = 2500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 2500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 2500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=15
+					Number of rows qualified=2500
+					Number of rows visited=2501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 2500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 2500
+		Rows seen from the right = 2500
+		Rows filtered = 0
+		Rows returned = 2500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 2500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 2500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=15
+					Number of rows qualified=2500
+					Number of rows visited=2501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 10% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1000
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=7
+					Number of rows qualified=1000
+					Number of rows visited=1001
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 5% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 500
+		Rows seen from the right = 500
+		Rows filtered = 0
+		Rows returned = 500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=4
+					Number of rows qualified=500
+					Number of rows visited=501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 500
+			Rows seen = 500
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 500
+				Rows seen = 500
+				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=1000
+					Number of rows qualified=500
+					Number of rows visited=500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- 1% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 100
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 100
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=100
+					Number of rows visited=101
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> -- one row from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Sort avoidance with joins and order by on columns in different tables
+--
+-- order on joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share table 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={1}
+			Number of columns fetched=1
+			Number of deleted rows visited=0
+			Number of pages visited=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	None
+			stop position: 
+	None
+			qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for TENKTUP2:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- order on joining columns with qualifications on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 6000
+	Rows seen from the right = 6000
+	Rows filtered = 0
+	Rows returned = 6000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 6000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=770
+			Number of rows qualified=6000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Project-Restrict ResultSet (5):
+		Number of opens = 6000
+		Rows seen = 6000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 6000
+			Rows seen = 6000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 6000
+				Rows seen = 6000
+				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=12000
+					Number of rows qualified=6000
+					Number of rows visited=6000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2500
+	Rows seen from the right = 2500
+	Rows filtered = 0
+	Rows returned = 2500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 2500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=15
+				Number of rows qualified=2500
+				Number of rows visited=2501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 2500
+		Rows seen = 2500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1000
+	Rows seen from the right = 1000
+	Rows filtered = 0
+	Rows returned = 1000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1000
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1000
+			Rows filtered = 0
+			Fetch Size = 16
+				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=7
+				Number of rows qualified=1000
+				Number of rows visited=1001
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1000
+		Rows seen = 1000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 500
+	Rows seen from the right = 500
+	Rows filtered = 0
+	Rows returned = 500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=4
+				Number of rows qualified=500
+				Number of rows visited=501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 500
+		Rows seen = 500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 500
+			Rows seen = 500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 500
+				Rows seen = 500
+				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=1000
+					Number of rows qualified=500
+					Number of rows visited=500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 100
+	Rows seen from the right = 100
+	Rows filtered = 0
+	Rows returned = 100
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 100
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 100
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=100
+				Number of rows visited=101
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 100
+		Rows seen = 100
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=0
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=0
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 100
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 100
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=100
+					Number of rows visited=101
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 100
+			Rows seen = 100
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 100
+				Rows seen = 100
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 100
+					Rows seen = 100
+					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=200
+						Number of rows qualified=100
+						Number of rows visited=100
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 500
+		Rows seen from the right = 500
+		Rows filtered = 0
+		Rows returned = 500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=4
+					Number of rows qualified=500
+					Number of rows visited=501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 500
+			Rows seen = 500
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 500
+				Rows seen = 500
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 500
+					Rows seen = 500
+					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=1000
+						Number of rows qualified=500
+						Number of rows visited=500
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> -- order on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 10000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=10000
+	Number of rows output=10000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 10000
+	Rows seen from the right = 10000
+	Rows filtered = 0
+	Rows returned = 10000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 10000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 10000
+		Rows seen = 10000
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 10000
+			Rows seen = 10000
+			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=20000
+				Number of rows qualified=10000
+				Number of rows visited=10000
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- order on non-joining columns with qualifications on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 6000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=6000
+	Number of rows output=6000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 6000
+	Rows seen from the right = 6000
+	Rows filtered = 0
+	Rows returned = 6000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 6000
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=770
+			Number of rows qualified=6000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Project-Restrict ResultSet (5):
+		Number of opens = 6000
+		Rows seen = 6000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 6000
+			Rows seen = 6000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 6000
+				Rows seen = 6000
+				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=12000
+					Number of rows qualified=6000
+					Number of rows visited=6000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 2500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=2500
+	Number of rows output=2500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 2500
+	Rows seen from the right = 2500
+	Rows filtered = 0
+	Rows returned = 2500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 2500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 2500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=15
+				Number of rows qualified=2500
+				Number of rows visited=2501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 2500
+		Rows seen = 2500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 2500
+			Rows seen = 2500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 2500
+				Rows seen = 2500
+				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=5000
+					Number of rows qualified=2500
+					Number of rows visited=2500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1000
+	Rows seen from the right = 1000
+	Rows filtered = 0
+	Rows returned = 1000
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1000
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1000
+			Rows filtered = 0
+			Fetch Size = 16
+				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=7
+				Number of rows qualified=1000
+				Number of rows visited=1001
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1000
+		Rows seen = 1000
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 500
+	Rows seen from the right = 500
+	Rows filtered = 0
+	Rows returned = 500
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 500
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 500
+			Rows filtered = 0
+			Fetch Size = 16
+				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=4
+				Number of rows qualified=500
+				Number of rows visited=501
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 500
+		Rows seen = 500
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 500
+			Rows seen = 500
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 500
+				Rows seen = 500
+				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=1000
+					Number of rows qualified=500
+					Number of rows visited=500
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 100
+	Rows seen from the right = 100
+	Rows filtered = 0
+	Rows returned = 100
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 100
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 100
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=100
+				Number of rows visited=101
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 100
+		Rows seen = 100
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 1
+	Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share 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=2
+			Number of rows qualified=1
+			Number of rows visited=1
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+Right result set:
+	Project-Restrict ResultSet (6):
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	restriction = true
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Project-Restrict ResultSet (7):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Project-Restrict ResultSet (6):
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		restriction = true
+		projection = true
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			restriction time (milliseconds) = 0
+			projection time (milliseconds) = 0
+		Source result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 1
+			Rows seen = 0
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 0
+				Rows filtered = 0
+				Fetch Size = 1
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+				scan information: 
+					Bit set of columns fetched=All
+					Number of columns fetched=2
+					Number of deleted rows visited=0
+					Number of pages visited=0
+					Number of rows qualified=0
+					Number of rows visited=0
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 100
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 100
+				Rows filtered = 0
+				Fetch Size = 16
+					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=2
+					Number of rows qualified=100
+					Number of rows visited=101
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 100
+			Rows seen = 100
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 100
+				Rows seen = 100
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 100
+					Rows seen = 100
+					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=200
+						Number of rows qualified=100
+						Number of rows visited=100
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 500
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=500
+	Number of rows output=500
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (7):
+	Number of opens = 1
+	Rows seen = 500
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 500
+		Rows seen from the right = 500
+		Rows filtered = 0
+		Rows returned = 500
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 500
+			Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 500
+				Rows filtered = 0
+				Fetch Size = 16
+					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=4
+					Number of rows qualified=500
+					Number of rows visited=501
+					Scan type=btree
+					Tree height=2
+					start position: 
+	None
+					stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (6):
+			Number of opens = 500
+			Rows seen = 500
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 500
+				Rows seen = 500
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 500
+					Rows seen = 500
+					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=1000
+						Number of rows qualified=500
+						Number of rows visited=500
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> -- Three-way join, order on columns from only two tables
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 < 6000
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 < 6000
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 = 0
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 = 0
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Nested Loop Exists Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+Right result set:
+	Index Row to Base Row ResultSet for ONEKTUP:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for ONEKTUP using index ONEKUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 616
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=616
+	Number of rows output=616
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (10):
+	Number of opens = 1
+	Rows seen = 616
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 616
+		Rows seen from the right = 616
+		Rows filtered = 0
+		Rows returned = 616
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 616
+			Rows filtered = 0
+			Rows returned = 616
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Project-Restrict ResultSet (6):
+				Number of opens = 1000
+				Rows seen = 1000
+				Rows filtered = 384
+				restriction = true
+				projection = true
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					restriction time (milliseconds) = 0
+					projection time (milliseconds) = 0
+				Source result set:
+					Index Row to Base Row ResultSet for TENKTUP1:
+					Number of opens = 1000
+					Rows seen = 1000
+					Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+						constructor time (milliseconds) = 0
+						open time (milliseconds) = 0
+						next time (milliseconds) = 0
+						close time (milliseconds) = 0
+						Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+						Number of opens = 1000
+						Rows seen = 1000
+						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=2000
+							Number of rows qualified=1000
+							Number of rows visited=1000
+							Scan type=btree
+							Tree height=2
+							start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+							stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+							qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (9):
+			Number of opens = 616
+			Rows seen = 616
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP2:
+				Number of opens = 616
+				Rows seen = 616
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 616
+					Rows seen = 616
+					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=1232
+						Number of rows qualified=616
+						Number of rows visited=616
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (10):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Project-Restrict ResultSet (7):
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			restriction = true
+			projection = true
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				restriction time (milliseconds) = 0
+				projection time (milliseconds) = 0
+			Source result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1
+				Rows seen = 1
+				Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share 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=2
+						Number of rows qualified=1
+						Number of rows visited=1
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for ONEKTUP:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for ONEKTUP using index ONEKUNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Joining columns different from ordering columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+None
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 1000
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=1000
+	Number of rows output=1000
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (8):
+	Number of opens = 1
+	Rows seen = 1000
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1000
+		Rows seen from the right = 1000
+		Rows filtered = 0
+		Rows returned = 1000
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Nested Loop Exists Join ResultSet:
+			Number of opens = 1
+			Rows seen from the left = 1000
+			Rows seen from the right = 1000
+			Rows filtered = 0
+			Rows returned = 1000
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			Left result set:
+				Table Scan ResultSet for ONEKTUP at serializable isolation level using share table locking chosen by the optimizer
+				Number of opens = 1
+				Rows seen = 1000
+				Rows filtered = 0
+				Fetch Size = 16
+					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=16
+					Number of pages visited=77
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=heap
+					start position: 
+null					stop position: 
+null					qualifiers:
+Column[0][0] Id: 1
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+			Right result set:
+				Index Row to Base Row ResultSet for TENKTUP1:
+				Number of opens = 1000
+				Rows seen = 1000
+				Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+					constructor time (milliseconds) = 0
+					open time (milliseconds) = 0
+					next time (milliseconds) = 0
+					close time (milliseconds) = 0
+					Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+					Number of opens = 1000
+					Rows seen = 1000
+					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=2000
+						Number of rows qualified=1000
+						Number of rows visited=1000
+						Scan type=btree
+						Tree height=2
+						start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+						qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1000
+			Rows seen = 1000
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 1000
+				Rows seen = 1000
+				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=2000
+					Number of rows qualified=1000
+					Number of rows visited=1000
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1
+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: 
+Project-Restrict ResultSet (9):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Exists Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Index Row to Base Row ResultSet for ONEKTUP:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for ONEKTUP using index ONEKUNIQUE2 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE2 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+					qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE2 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 1
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+ij> commit;
+ij> -- Values clause is a single-row result set, so should not cause optimizer
+-- to require sort.
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.unique1, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.unique1, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> -- Try with a join on unique column and order on non-unique column
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.two, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.two, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+			qualifiers:
+None
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.two = t.x
+	 order by TENKTUP1.two, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.two = t.x
+	 order by TENKTUP1.two, t.x
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.four = t.x
+	 order by TENKTUP1.four, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.four = t.x
+	 order by TENKTUP1.four, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1FOUR at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.ten = t.x
+	 order by TENKTUP1.ten, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.ten = t.x
+	 order by TENKTUP1.ten, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1TEN at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twenty = t.x
+	 order by TENKTUP1.twenty, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twenty = t.x
+	 order by TENKTUP1.twenty, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1TWENTY at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.onePercent = t.x
+	 order by TENKTUP1.onePercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.onePercent = t.x
+	 order by TENKTUP1.onePercent, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.tenPercent = t.x
+	 order by TENKTUP1.tenPercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.tenPercent = t.x
+	 order by TENKTUP1.tenPercent, t.x
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 7
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twentyPercent = t.x
+	 order by TENKTUP1.twentyPercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twentyPercent = t.x
+	 order by TENKTUP1.twentyPercent, t.x
+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: 
+Project-Restrict ResultSet (3):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Index Row to Base Row ResultSet for TENKTUP1:
+	Number of opens = 1
+	Rows seen = 0
+	Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		Index Scan ResultSet for TENKTUP1 using index TK1TWENTYPERCENT at serializable isolation level using share row locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched=All
+			Number of columns fetched=2
+			Number of deleted rows visited=0
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=btree
+			Tree height=2
+			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> commit;
+ij> get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.fiftyPercent = t.x
+	 order by TENKTUP1.fiftyPercent, t.x';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.fiftyPercent = t.x
+	 order by TENKTUP1.fiftyPercent, t.x
+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: 
+Project-Restrict ResultSet (2):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+	Number of opens = 1
+	Rows seen = 0
+	Rows filtered = 0
+	Fetch Size = 16
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=0
+		Number of rows qualified=0
+		Number of rows visited=0
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		qualifiers:
+Column[0][0] Id: 9
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- Test for bug 2307:
+-- Join between primary & foreign keys, w/= clause on foreign tab &
+-- ORDER on indexed col of prim. tab returns rows in wrong order
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.ten
+	 and TENKTUP2.onePercent = 63
+	 order by TENKTUP1.two';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.ten
+	 and TENKTUP2.onePercent = 63
+	 order by TENKTUP1.two
+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: 
+Sort ResultSet:
+Number of opens = 1
+Rows input = 100
+Rows returned = 0
+Eliminate duplicates = false
+In sorted order = false
+Sort information: 
+	Number of rows input=100
+	Number of rows output=100
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Source result set:
+	Project-Restrict ResultSet (5):
+	Number of opens = 1
+	Rows seen = 100
+	Rows filtered = 0
+	restriction = false
+	projection = true
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+		restriction time (milliseconds) = 0
+		projection time (milliseconds) = 0
+	Source result set:
+		Nested Loop Exists Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 100
+		Rows seen from the right = 100
+		Rows filtered = 0
+		Rows returned = 100
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 100
+			Rows filtered = 0
+			Fetch Size = 16
+				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=16
+				Number of pages visited=770
+				Number of rows qualified=100
+				Number of rows visited=10000
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP1:
+			Number of opens = 100
+			Rows seen = 100
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP1 using index TK1UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+				Number of opens = 100
+				Rows seen = 100
+				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=200
+					Number of rows qualified=100
+					Number of rows visited=100
+					Scan type=btree
+					Tree height=2
+					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> commit;
+ij> -- Test multi-level outer join
+-- Extra-wide output because many tables.
+maximumdisplaywidth 8000;
+ij> get cursor c as
+	'select * from TENKTUP1
+		left outer join TENKTUP2 on
+		(
+			TENKTUP1.unique1 = TENKTUP2.unique1
+		)
+		left outer join ONEKTUP on
+		(
+			TENKTUP2.unique2 = ONEKTUP.unique2
+		)
+		left outer join BPRIME on
+		(
+			ONEKTUP.onePercent = BPRIME.onePercent
+		)';
+ij> close c;
+ij> values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select * from TENKTUP1
+		left outer join TENKTUP2 on
+		(
+			TENKTUP1.unique1 = TENKTUP2.unique1
+		)
+		left outer join ONEKTUP on
+		(
+			TENKTUP2.unique2 = ONEKTUP.unique2
+		)
+		left outer join BPRIME on
+		(
+			ONEKTUP.onePercent = BPRIME.onePercent
+		)
+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: 
+Hash Left Outer Join ResultSet:
+Number of opens = 1
+Rows seen from the left = 1
+Rows seen from the right = 0
+Empty right rows returned = 0
+Rows filtered = 0
+Rows returned = 0
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+Left result set:
+	Hash Left Outer Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 1
+	Empty right rows returned = 0
+	Rows filtered = 0
+	Rows returned = 1
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Nested Loop Left Outer Join ResultSet:
+		Number of opens = 1
+		Rows seen from the left = 1
+		Rows seen from the right = 1
+		Empty right rows returned = 0
+		Rows filtered = 0
+		Rows returned = 1
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		Left result set:
+			Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=16
+				Number of pages visited=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=heap
+				start position: 
+null				stop position: 
+null				qualifiers:
+None
+		Right result set:
+			Index Row to Base Row ResultSet for TENKTUP2:
+			Number of opens = 1
+			Rows seen = 1
+			Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+				Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+					Number of rows qualified=1
+					Number of rows visited=1
+					Scan type=btree
+					Tree height=2
+					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
+	Right result set:
+		Hash Scan ResultSet for ONEKTUP at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 1000
+		Hash key is column number 1
+		Rows seen = 1
+		Rows filtered = 0
+			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=16
+			Number of pages visited=77
+			Number of rows qualified=1000
+			Number of rows visited=1000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 1
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+Right result set:
+	Hash Scan ResultSet for BPRIME at serializable isolation level using share table locking: 
+	Number of opens = 1
+	Hash table size = 100
+	Hash key is column number 6
+	Rows seen = 0
+	Rows filtered = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	scan information: 
+		Bit set of columns fetched=All
+		Number of columns fetched=16
+		Number of pages visited=77
+		Number of rows qualified=1000
+		Number of rows visited=1000
+		Scan type=heap
+		start position: 
+null		stop position: 
+null		scan qualifiers:
+None
+		next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> commit;
+ij> -- tests to show selectivity - rowcount estimates
+-- the numbers skip a value for reference to original Cloudscape test cases
+-- with identical queries using properties useStatistics=false.
+-- do simple joins on columns and look at row count/cost.
+-- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+ij> close c;
+ij> -- 1, join on two--all rows
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> -- 3, join on two--60%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> -- 5, join on two--25%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> -- 7, join on two--10%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> -- 9, join on two--5%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> -- 11, join on two--1%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 2
+		Hash key is column number 2
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> -- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> -- 13, join on two--1 row
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Table Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 0
+		Rows filtered = 0
+		Fetch Size = 16
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 2}
+			Number of columns fetched=2
+			Number of pages visited=0
+			Number of rows qualified=0
+			Number of rows visited=0
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 2
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> --  now do joins on a very low cardinality table
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from 
+	TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+ij> close c;
+ij> -- 15, join on onePercent--all rows
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from 
+	TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=2
+			Number of rows qualified=16
+			Number of rows visited=16
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+ij> close c;
+ij> -- 17, join on onePercent--60%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000
+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: 
+Project-Restrict ResultSet (4):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Table Scan ResultSet for TENKTUP2 at serializable isolation level using share table locking chosen by the optimizer
+		Number of opens = 1
+		Rows seen = 1
+		Rows filtered = 0
+		Fetch Size = 16
+			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=16
+			Number of pages visited=3
+			Number of rows qualified=16
+			Number of rows visited=27
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			qualifiers:
+Column[0][0] Id: 0
+Operator: <
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+ij> close c;
+ij> -- 19, join on onePercent--25%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+ij> close c;
+ij> -- 21, join on onePercent--10%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+ij> close c;
+ij> -- 23, join on onePercent--5%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+ij> close c;
+ij> -- 25, join on onePercent--1%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100
+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: 
+Project-Restrict ResultSet (5):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Hash Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 1
+			Rows filtered = 0
+			Fetch Size = 16
+				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=2
+				Number of rows qualified=16
+				Number of rows visited=16
+				Scan type=btree
+				Tree height=2
+				start position: 
+	None
+				stop position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Hash Scan ResultSet for TENKTUP1 at serializable isolation level using share table locking: 
+		Number of opens = 1
+		Hash table size = 100
+		Hash key is column number 6
+		Rows seen = 0
+		Rows filtered = 0
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+		scan information: 
+			Bit set of columns fetched={1, 6}
+			Number of columns fetched=2
+			Number of pages visited=770
+			Number of rows qualified=10000
+			Number of rows visited=10000
+			Scan type=heap
+			start position: 
+null			stop position: 
+null			scan qualifiers:
+None
+			next qualifiers:
+Column[0][0] Id: 6
+Operator: =
+Ordered nulls: false
+Unknown return value: false
+Negate comparison result: false
+ij> get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+ij> close c;
+ij> -- 27, join on onePercent--1 row
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Statement Name: 
+	C
+Statement Text: 
+	select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0
+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: 
+Project-Restrict ResultSet (6):
+Number of opens = 1
+Rows seen = 0
+Rows filtered = 0
+restriction = false
+projection = true
+	constructor time (milliseconds) = 0
+	open time (milliseconds) = 0
+	next time (milliseconds) = 0
+	close time (milliseconds) = 0
+	restriction time (milliseconds) = 0
+	projection time (milliseconds) = 0
+Source result set:
+	Nested Loop Join ResultSet:
+	Number of opens = 1
+	Rows seen from the left = 1
+	Rows seen from the right = 0
+	Rows filtered = 0
+	Rows returned = 0
+		constructor time (milliseconds) = 0
+		open time (milliseconds) = 0
+		next time (milliseconds) = 0
+		close time (milliseconds) = 0
+	Left result set:
+		Index Row to Base Row ResultSet for TENKTUP2:
+		Number of opens = 1
+		Rows seen = 1
+		Columns accessed from heap = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP2 using index TK2UNIQUE1 at serializable isolation level using share 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=2
+				Number of rows qualified=1
+				Number of rows visited=1
+				Scan type=btree
+				Tree height=2
+				start position: 
+	>= on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				stop position: 
+	> on first 1 column(s).
+	Ordered null semantics on the following columns: 
+0 
+				qualifiers:
+None
+	Right result set:
+		Index Row to Base Row ResultSet for TENKTUP1:
+		Number of opens = 1
+		Rows seen = 0
+		Columns accessed from heap = {1, 6}
+			constructor time (milliseconds) = 0
+			open time (milliseconds) = 0
+			next time (milliseconds) = 0
+			close time (milliseconds) = 0
+			Index Scan ResultSet for TENKTUP1 using index TK1ONEPERCENT at serializable isolation level using share row locking chosen by the optimizer
+			Number of opens = 1
+			Rows seen = 0
+			Rows filtered = 0
+			Fetch Size = 16
+				constructor time (milliseconds) = 0
+				open time (milliseconds) = 0
+				next time (milliseconds) = 0
+				close time (milliseconds) = 0
+			scan information: 
+				Bit set of columns fetched=All
+				Number of columns fetched=2
+				Number of deleted rows visited=0
+				Number of pages visited=0
+				Number of rows qualified=0
+				Number of rows visited=0
+				Scan type=btree
+				Tree height=2
+				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> 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+
+<project default="suites" basedir=".">
+
+<!-- Set Properties -->
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties"/>
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/> 
+  <property file="${properties.dir}/compilepath.properties"/> 
+
+<!-- Targets -->
+  <target name="suites" depends="copyfiles"/>
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.suites.dir}">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/suites" includes="*.runall,*.properties"/>
+    </copy>
+  </target>
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+suites=derbylang derbynetmats
+derby.debug.true=enableBtreeConsistencyCheck
+derby.stream.error.logSeverityLevel=0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,129 @@
+jdbcapi/metadata.java
+jdbcapi/metadataMultiConn.java
+lang/AIjdbc.java
+lang/CharUTF8.java
+lang/DB2IsolationLevels.sql
+lang/LOB.sql
+lang/LOBDB2compatibility.sql
+lang/aggbuiltin.sql
+lang/aggregate.sql
+lang/aggregateOptimization.sql
+lang/altertable.sql
+lang/arithmetic.sql
+lang/authorize.sql
+lang/autoincrement.sql
+lang/bit.sql
+lang/bug4356.java
+lang/bug5052rts.java
+lang/bug5054.java
+lang/case.sql
+lang/cast.sql
+lang/casting.java
+lang/checkConstraint.sql
+lang/closed.java
+lang/coalesceTests.java
+lang/columnDefaults.sql
+lang/comparisons.sql
+lang/compressTable.sql
+lang/concateTests.java
+lang/connect.sql
+lang/consistencyChecker.sql
+lang/constantExpression.sql
+lang/currentSchema.sql
+lang/currentof.java
+lang/cursor.java
+lang/cursorerrors.sql
+lang/datetime.sql
+lang/db2Compatibility.sql
+lang/dbManagerLimits.java
+lang/ddlTableLockMode.sql
+lang/deadlockMode.java
+lang/declareGlobalTempTableJava.java
+lang/delete.sql
+lang/depend.sql
+lang/derived.sql
+lang/desc_index.sql
+lang/distinct.sql
+lang/distinctElimination.sql
+lang/distinctFiltering.sql
+lang/dropTable.sql
+lang/dynamicLikeOptimization.sql
+lang/ejbql.sql
+lang/ejbql_nonSPS.sql
+lang/errorCode.sql
+lang/fk_nonSPS.sql
+lang/floattypes.sql
+lang/forbitdata.java
+lang/forupdate.sql
+lang/functions.sql
+lang/groupBy.sql
+lang/identifier.sql
+lang/implicitConversions.sql
+lang/inbetween.sql
+lang/infostreams.sql
+lang/innerjoin.sql
+lang/insert.sql
+lang/isolationLevels.sql
+lang/joinDeadlock.sql
+lang/joins.sql
+lang/langUnitTests.sql
+lang/lockTable.sql
+lang/logStream.java
+lang/logop.sql
+lang/lojreorder.sql
+lang/longStringColumn.java
+lang/maxMemPerTab.sql
+lang/miscerrors.sql
+lang/modifyColumn.sql
+lang/nestedCommit.sql
+lang/nonreserved.sql
+lang/nulls.sql
+lang/openScans.sql
+lang/orderby.sql
+lang/orderbyElimination.sql
+lang/outerjoin.sql
+lang/outparams.java
+lang/paramij.sql
+lang/partdml.sql
+lang/positionedDelUpd.sql
+lang/precedence.sql
+lang/predicatesIntoViews.sql
+lang/primarykey.sql
+lang/procedure.java
+lang/refActions.sql
+lang/refActions1.sql
+lang/refActions2.sql
+lang/refActions3.sql
+lang/releaseCompileLocks.sql
+lang/renameIndex.sql
+lang/renameTable.sql
+lang/reopenScan.sql
+lang/repeat.java
+lang/schemas.sql
+lang/select.sql
+lang/simpleThreadWrapper.java
+lang/specjPlans.sql
+lang/staleplans.sql
+lang/stmtCache0.sql
+lang/stmtCache1.sql
+lang/stmtCache3.java
+lang/stringtypes.sql
+lang/subquery.sql
+lang/subquery2.sql
+lang/subqueryFlattening.sql
+lang/supersimple.sql
+lang/syscat.sql
+lang/tempRestrictions.sql
+lang/triggerBeforeTrig.sql
+lang/triggerGeneral.sql
+lang/triggerRecursion.sql
+lang/triggerRefClause.sql
+lang/triggerStream.sql
+lang/ungroupedAggregatesNegative.sql
+lang/union.sql
+lang/unlimited.sql
+lang/update.sql
+lang/updateCursor.java
+lang/valuesclause.sql
+lang/views.sql
+lang/wisconsin.sql

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+framework=DerbyNet
+suites=derbynetmats
+jdk12test=true
+runwithj9=false
+timeout=60

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,30 @@
+derbynet/NSinSameJVM.java
+derbynet/badConnection.java
+derbynet/callable.java
+derbynet/checkSecMgr.java
+derbynet/csPrepStmt.java
+derbynet/dblook_test_net.java
+derbynet/dataSourcePermissions_net.java
+derbynet/executeUpdate.java
+derbynet/getCurrentProperties.java
+derbynet/maxthreads.java
+derbynet/prepStmt.java
+derbynet/runtimeinfo.java
+derbynet/sysinfo.java
+derbynet/testProperties.java
+derbynet/testconnection.java
+derbynet/testij.java
+derbynet/timeslice.java
+jdbcapi/metadata.java
+jdbcapi/metadataMultiConn.java
+jdbcapi/parameterMetaDataJdbc30.java
+jdbcapi/savepointJdbc30.java
+lang/big.sql
+lang/bug5054.java
+lang/forupdate.sql
+lang/holdCursorIJ.sql
+lang/holdCursorJavaReflection.java
+lang/procedure.java
+lang/simpleScroll.sql
+lang/supersimple.sql
+lang/wisconsin.sql

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/j9derbynetmats.runall
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/j9derbynetmats.runall	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,26 @@
+derbynet/NSinSameJVM.java
+derbynet/badConnection.java
+derbynet/callable.java
+derbynet/csPrepStmt.java
+derbynet/dblook_test_net.java
+derbynet/dataSourcePermissions_net.java
+derbynet/executeUpdate.java
+derbynet/getCurrentProperties.java
+derbynet/maxthreads.java
+derbynet/prepStmt.java
+derbynet/testProperties.java
+derbynet/testconnection.java
+derbynet/testij.java
+derbynet/timeslice.java
+jdbcapi/metadata.java
+jdbcapi/metadataMultiConn.java
+jdbcapi/parameterMetaDataJdbc30.java
+jdbcapi/savepointJdbc30.java
+lang/big.sql
+lang/bug5054.sql
+lang/forupdate.sql
+lang/holdCursorIJ.sql
+lang/holdCursorJavaReflection.java
+lang/procedure.java
+lang/simpleScroll.sql
+lang/supersimple.sql

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noDerbyNet.runall
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noDerbyNet.runall	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+ 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noembedded.runall
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/noembedded.runall	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+ 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<project default="testdata" basedir="../../../../../../..">
+
+<!-- Set Properties -->
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties"/>
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+
+<!-- Targets -->
+  <target name="testdata" depends="copyfiles"/>
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/testData/v1">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData/v1"
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData/v1/copyfiles.ant"/>
+    </copy>
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/testData/v2">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData/v2"
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/testData/v2/copyfiles.ant"/>
+    </copy>
+  </target>
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+j1v1.jar

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/f1.txt
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/f1.txt	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+Hi Amber!
+Are you in a 
+real jar file?

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v1/j1v1.jar
==============================================================================
Binary file. No diff available.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+j1v2.jar

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/f1.txt
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/f1.txt	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,7 @@
+No Dad.
+I am in a 
+fake
+
+jar file.
+
+And you.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/v2/j1v2.jar
==============================================================================
Binary file. No diff available.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,129 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import org.apache.derby.drda.NetworkServerControl;
+import java.net.InetAddress;
+import java.io.PrintWriter;
+
+public class NSinSameJVM {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+    private static final int NETWORKSERVER_PORT = 20000;
+	private static final String INVALID_HOSTNAME = "myhost.nowhere.ibm.com";
+    private String databaseFileName = "NSinSameJVMTestDB;create=true";
+
+    public NSinSameJVM() {
+
+        // Load the Cloudscape driver
+        try {
+            Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
+            dbg("Cloudscape drivers loaded");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+		
+
+		NetworkServerControl serverControl = null;
+		boolean started = false;
+
+		try {
+
+			serverControl = new
+				NetworkServerControl(InetAddress.getByName("0.0.0.0"),
+									 NETWORKSERVER_PORT);
+
+			serverControl.start(new PrintWriter(System.out,true));
+			
+			for (int i = 1; i < 50; i++)
+			{
+				Thread.sleep(1000);
+				if (isServerStarted(serverControl))
+				{
+					started = true;
+					break;
+				}
+			}
+				
+		} catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+		if(started)
+			dbg("NetworkServer started");
+		else
+		{
+			System.out.println("FAIL Network Server did not start");
+			return;
+		}
+
+        String url = "jdbc:derby:net://localhost:" + NETWORKSERVER_PORT + "/\"" + databaseFileName + "\"" + ":user=dummyUser;password=dummyPw;";
+        Connection connection = null;
+		   
+        try {
+			// Just connect, do something and close the connection
+            connection = DriverManager.getConnection(url);
+
+			Statement stmt = connection.createStatement();
+			ResultSet rs = stmt.executeQuery("Select  tablename   from  sys.systables");
+			
+			while (rs.next())
+			{
+				rs.getString(1);
+			}
+			rs.close();
+            dbg("Connected to database " + databaseFileName);
+			// Leave the connection open before shutdown to make 
+			// sure the thread closes down.
+			// connection.close();
+			
+			System.out.println("getting ready to shutdown");
+			serverControl.shutdown();
+			Thread.sleep(5000);
+
+        } catch (Exception e) {
+			System.out.print("FAIL: Unexpected exception" + e.getMessage());
+            e.printStackTrace();
+        }
+			
+		// 
+
+    }
+
+    private void dbg(String s) {
+        System.out.println(Thread.currentThread().getName() + "-NSinSameJVM: " + s);
+    }
+
+    public static void main(String[] args) {
+        new NSinSameJVM();
+    }
+
+	private boolean isServerStarted(NetworkServerControl server)
+	{
+		try {
+			server.ping();
+		}
+		catch (Exception e) {
+			return false;
+		}
+		return true;
+	}
+}
+
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/NSinSameJVM_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+#Don't want harness to start up network server. It will be started
+#in test, so we set framework to embedded
+framework=embedded

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,103 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+
+import java.io.BufferedOutputStream;
+import org.apache.derbyTesting.functionTests.harness.TimedProcess;
+
+/**
+	This tests various bad connection states
+		- non-existant database
+*/
+
+public class badConnection
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+	
+	private static Properties properties = new java.util.Properties();
+
+	private static String dbNotFoundUrl =
+		"jdbc:derby:net://localhost:1527/notthere";
+	private static String  invalidAttrUrl = "jdbc:derby:net://localhost:1527/testbase;upgrade=notValidValue";
+	private static String  derbynetUrl = "jdbc:derby:net://localhost:1527/testbase";
+
+
+	private static Connection newConn(String databaseURL,Properties properties) throws Exception
+	{
+		Connection conn = null;
+		try {
+			conn = DriverManager.getConnection(databaseURL, properties); 
+			if (conn == null)
+				System.out.println("create connection didn't work");
+			else
+				System.out.println("Connection made\n");
+
+		}
+		catch (SQLException se)
+		{
+			showSQLException(se);
+		}
+
+		return conn;
+	}
+
+	private static void showSQLException(SQLException e)
+	{
+		System.out.println("passed SQLException all the way to client, then thrown by client...");
+		System.out.println("SQLState is: "+e.getSQLState());
+		System.out.println("vendorCode is: "+e.getErrorCode());
+		System.out.println("nextException is: "+e.getNextException());
+		System.out.println("reason is: "+e.getMessage() +"\n\n");
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		
+		try
+		{
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+
+			System.out.println("No user/password  (Client error)");
+			Connection conn1 = newConn(derbynetUrl, properties);
+
+			System.out.println("Database not Found  (RDBNFNRM)");
+			properties.put ("user", "admin");
+			properties.put ("password", "admin");
+			conn1 = newConn(dbNotFoundUrl, properties);
+			if (conn1 != null)
+				conn1.close();
+
+			System.out.println("Invalid Attribute  value (RDBAFLRM)");
+			conn1 = newConn(invalidAttrUrl, properties);
+			if (conn1 != null)
+				conn1.close();
+		
+		}
+		catch (SQLException se)
+		{
+			showSQLException(se);
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/badConnection_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,16 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substitut
+en
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+-------------------------------------------------------------------------------
+--
+substitute=(server log.*);(server log XXX)
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="FTOtestsubdir" basedir="../../../../../../../.." >
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties" />
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/sane${sanity}.properties"/>
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <!--property file="${properties.dir}/parser.properties"/-->
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/tests/derbynet"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="FTOtestsubdir" depends="compilet2,compilet1,copyfiles"/>
+
+  <!-- mkdir / init target may not be necessary, just here for reference... -->
+  <target name="init">
+    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/tests/derbynet"/>
+  </target>
+
+  <target name="compilet1" depends="compilet2">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/*.java"/>
+      <exclude name="${this.dir}/dataSourcePermissions_net.java"/>
+    </javac>
+  </target>
+
+  <target name="compilet2">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/dataSourcePermissions_net.java"/>
+    </javac>
+  </target> 
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/tests/derbynet">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/derbynet" 
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/derbynet/copyfiles.ant"/>  
+    </copy>
+  </target> 
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/callable.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/callable.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,696 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.sql.CallableStatement;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.BatchUpdateException;
+import java.sql.DriverManager;
+import java.sql.Connection;
+
+/**
+	This test tests the JDBC CallableStatement.
+*/
+
+public class callable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	public static void main (String args[])
+	{
+		try
+		{
+			System.out.println("CallableStatement Test Starts");
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			Connection conn = null;
+
+			// This also tests quoted pathname in database name portion of URL, beetle 4781.
+			String databaseURL = "jdbc:derby:net://localhost/\"" + System.getProperty("derby.system.home") + java.io.File.separator + "wombat;create=true\"";
+			java.util.Properties properties = new java.util.Properties();
+			properties.put ("user", "I");
+			properties.put ("password", "mine");
+
+			conn = DriverManager.getConnection(databaseURL, properties);
+			if (conn == null)
+			{
+				System.out.println("conn didn't work");
+				return;
+			}
+			Statement stmt = conn.createStatement();
+
+			// 2 input, 1 output
+			stmt.execute("CREATE PROCEDURE method1(IN P1 INT, IN P2 INT, OUT P3 INT) " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method1'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			CallableStatement cs = conn.prepareCall("call method1 (?, ?, ?)");
+			cs.setInt(1, 6);
+			cs.setInt(2, 9);
+			cs.registerOutParameter (3, java.sql.Types.INTEGER);
+			cs.execute();
+			int sum = cs.getInt(3);
+			System.out.println("Sum of 6 and 9 is: " + sum);
+			cs.close();
+			stmt.execute("DROP PROCEDURE method1");
+
+			// method returns calue, plus 1 input
+			stmt.execute("CREATE FUNCTION method2(P1 INT) RETURNS INT" +
+					" EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method2'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			cs = conn.prepareCall("? = call method2 (?)");
+			cs.registerOutParameter (1, java.sql.Types.INTEGER);
+			cs.setInt(2, 6);
+			cs.execute();
+			int ret = cs.getInt(1);
+			System.out.println("return value: Square of 6 then plus 6 is: " + ret);
+			cs.close();
+			// stmt.execute("DROP FUNCTION method2");
+
+			// no parameter
+			stmt.execute("CREATE PROCEDURE method3() " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method3'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			cs = conn.prepareCall("call method3 ()");
+			cs.execute();
+			cs.close();
+			stmt.execute("DROP PROCEDURE method3");
+
+			// only 1 return parameter
+			stmt.execute("CREATE FUNCTION method4() RETURNS INT" +
+					" EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method4'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			cs = conn.prepareCall("? = call method4()");
+			cs.registerOutParameter (1, java.sql.Types.INTEGER);
+			cs.execute();
+			System.out.println("return value is: " + cs.getInt(1));
+			cs.close();
+			// stmt.execute("DROP FUNCTION method4");
+
+			// different parameter types, also method overload
+			stmt.execute("CREATE PROCEDURE method4P(" +
+					"IN P1 SMALLINT, IN P2 INT, IN P3 BIGINT, IN P4 REAL, " +
+					"IN P5 DOUBLE, IN P6 DECIMAL(6,3), IN P7 DATE, IN P8 TIME, IN P9 TIMESTAMP, IN P10 VARCHAR(20) FOR BIT DATA, " +
+					"OUT O1 SMALLINT, OUT O2 INT, OUT O3 BIGINT, OUT O4 REAL, " +
+					"OUT O5 DOUBLE, OUT O6 DECIMAL(6,3), OUT O7 DATE, OUT O8 TIME, OUT O9 TIMESTAMP, OUT O10 VARCHAR(20) FOR BIT DATA" +
+					") " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method4'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			cs = conn.prepareCall("call method4P(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+			cs.setShort(1, (short) 3);
+			cs.setInt(2, 4);
+			cs.setLong(3, 5);
+			cs.setFloat(4, (float) 6.0);
+			cs.setDouble(5, 7.0);
+			cs.setBigDecimal(6, new BigDecimal("88.88"));
+			cs.setDate(7, Date.valueOf("2002-05-12"));
+			cs.setTime(8, Time.valueOf("10:05:02"));
+			cs.setTimestamp(9, Timestamp.valueOf("2002-05-12 10:05:02.000000000"));
+			byte[] ba = new byte[2];
+			ba[0] = 1;
+			ba[1] = 2;
+			cs.setBytes(10, ba);
+			int n = 10;
+			cs.registerOutParameter (n+1, java.sql.Types.SMALLINT);
+			cs.registerOutParameter (n+2, java.sql.Types.INTEGER);
+			cs.registerOutParameter (n+3, java.sql.Types.BIGINT);
+			cs.registerOutParameter (n+4, java.sql.Types.REAL);
+			cs.registerOutParameter (n+5, java.sql.Types.DOUBLE);
+			cs.registerOutParameter (n+6, java.sql.Types.DECIMAL);
+			cs.registerOutParameter (n+7, java.sql.Types.DATE);
+			cs.registerOutParameter (n+8, java.sql.Types.TIME);
+			cs.registerOutParameter (n+9, java.sql.Types.TIMESTAMP);
+			cs.registerOutParameter (n+10, java.sql.Types.VARBINARY);
+			cs.execute();
+			System.out.println("return short: " + cs.getShort(n+1));
+			System.out.println("return int: " + cs.getInt(n+2));
+			System.out.println("return long: " + cs.getLong(n+3));
+			System.out.println("return float: " + cs.getFloat(n+4));
+			System.out.println("return double: " + cs.getDouble(n+5));
+			System.out.println("return decimal: " + cs.getBigDecimal(n+6));
+			System.out.println("return date: " + cs.getDate(n+7));
+			System.out.println("return time: " + cs.getTime(n+8));
+			System.out.println("return time stamp: " + cs.getTimestamp(n+9));
+			ba = cs.getBytes(n+10);
+			for (int i = 0; i < ba.length; i++)
+				System.out.println("return byte["+i+"]: " + ba[i]);
+			stmt.execute("DROP PROCEDURE method4P");
+
+			// some tests on BigDecimal
+			stmt.execute("CREATE PROCEDURE method5(" +
+					"IN P1 DECIMAL(14,4), OUT P2 DECIMAL(14,4), IN P3 DECIMAL(14,4), OUT P4 DECIMAL(14,4), " +
+					"OUT P5 DECIMAL(14,4), OUT P6 DECIMAL(14,4), OUT P7 DECIMAL(14,4), OUT P8 DECIMAL(14,4), OUT P9 DECIMAL(14,4) " +
+					") " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method5'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			cs = conn.prepareCall("call method5 (?, ?, ?, ?, ?, ?, ?, ?, ?)");
+			cs.setBigDecimal(1, new BigDecimal("33.333"));
+			cs.registerOutParameter (2, java.sql.Types.DECIMAL);
+			cs.setBigDecimal(3, new BigDecimal("-999.999999"));
+			cs.registerOutParameter (4, java.sql.Types.DECIMAL);
+			cs.registerOutParameter (5, java.sql.Types.DECIMAL);
+			cs.registerOutParameter (6, java.sql.Types.DECIMAL);
+			cs.registerOutParameter (7, java.sql.Types.DECIMAL);
+			cs.registerOutParameter (8, java.sql.Types.DECIMAL);
+			cs.registerOutParameter (9, java.sql.Types.DECIMAL);
+			cs.execute();
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(2));
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(4));
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(5));
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(6));
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(7));
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(8));
+			System.out.println("method 5 return decimal: " + cs.getBigDecimal(9));
+			cs.close();
+			stmt.execute("DROP PROCEDURE method5");
+
+			// INOUT param tests
+			stmt.execute("CREATE PROCEDURE method6(" +
+					"IN P1 INT, INOUT P2 INT, IN P3 SMALLINT, INOUT P4 SMALLINT, " +
+					"IN P5 BIGINT, INOUT P6 BIGINT, IN P7 REAL, INOUT P8 REAL, IN P9 DOUBLE, INOUT P10 DOUBLE, " +
+					"IN P11 TIME, INOUT P12 TIME " +
+					") " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.method6'" +
+					" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+			cs = conn.prepareCall("call method6 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?)");
+			cs.registerOutParameter (2, java.sql.Types.INTEGER);
+			cs.registerOutParameter (4, java.sql.Types.SMALLINT);
+			cs.registerOutParameter (6, java.sql.Types.BIGINT);
+			cs.registerOutParameter (8, java.sql.Types.REAL);
+			cs.registerOutParameter (10, java.sql.Types.DOUBLE);
+			cs.registerOutParameter (12, java.sql.Types.TIME);
+			cs.setInt(1, 6);
+			cs.setInt(2, 9);
+			cs.setShort(3, (short)6);
+			cs.setShort(4, (short)9);
+			cs.setLong(5, (long)99999);
+			cs.setLong(6, (long)88888888);
+			cs.setFloat(7, (float)6.123453);
+			cs.setFloat(8, (float)77777);
+			cs.setDouble(9, (double)6.123453);
+			cs.setDouble(10, (double)8888888888888.01234);
+			cs.setTime(11, Time.valueOf("11:06:03"));
+			cs.setTime(12, Time.valueOf("10:05:02"));
+
+			cs.execute();
+			System.out.println("Integer: Sum of 6 and 9 is: " + cs.getInt(2));
+			System.out.println("Short: Sum of 6 and 9 is: " + cs.getShort(4));
+			System.out.println("Long: Sum of 99999 and 88888888 is: " + cs.getLong(6));
+			System.out.println("Float: Sum of 6.123453 and 77777 is: " + cs.getFloat(8));
+			System.out.println("Double: Sum of 6.987654 and 8888888888888.01234 is: " + cs.getDouble(10));
+			System.out.println("Time: Old time of 10:05:02 changed to: " + cs.getTime(12));
+			cs.close();
+			stmt.execute("DROP PROCEDURE method6");
+
+			testBigDec(conn);
+
+			testLongBinary(conn);
+			// Temporarily take out testbatch until jcc bug is fixed (5827)
+			// testBatch(conn);
+
+			System.out.println("CallableStatement Test Ends");
+        }
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	static void testLongBinary(Connection conn)
+	{
+	  try {
+		String createTabSql = "create table Longvarbinary_Tab (lvbc Long varchar for bit data)";
+		PreparedStatement ps = conn.prepareStatement(createTabSql);
+		int updcount = ps.executeUpdate();
+		String insertTabSql = "insert into Longvarbinary_Tab values( X'010305')";
+		ps = conn.prepareStatement(insertTabSql);
+		updcount = ps.executeUpdate();
+
+		int bytearrsize = 50;
+		byte[] bytearr=new byte[bytearrsize];
+		String sbyteval=null;
+
+		// to get the bytearray value
+		for (int count=0;count<bytearrsize;count++)
+		{
+			sbyteval=Integer.toString(count%255);
+			bytearr[count]=Byte.parseByte(sbyteval);
+		}
+
+		System.out.println("get the CallableStatement object");
+
+		String createproc = "create procedure Longvarbinary_In(P1 VARCHAR(10000) FOR BIT DATA) MODIFIES SQL DATA external name 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.Longvarbinary_Proc_In' language java parameter style java";
+		ps = conn.prepareStatement(createproc);
+		updcount = ps.executeUpdate();
+
+		CallableStatement cstmt = conn.prepareCall("{call Longvarbinary_In(?)}");
+		cstmt.setObject(1,bytearr,java.sql.Types.LONGVARBINARY);
+		System.out.println("execute the procedure with LONGVARBINARY");
+		cstmt.executeUpdate();
+		cstmt.setObject(1,bytearr,java.sql.Types.BLOB);
+		System.out.println("execute the procedure with BLOB");
+		cstmt.executeUpdate();
+
+		Statement stmt = conn.createStatement();
+		String Longvarbinary_Query="Select lvbc from Longvarbinary_Tab";
+		System.out.println(Longvarbinary_Query);
+		ResultSet rs=stmt.executeQuery(Longvarbinary_Query);
+
+		while (rs.next())
+		{
+			byte[] retvalue = (byte[]) rs.getObject(1);
+
+			for(int i=0;i<bytearrsize;i++)
+			{
+				if (retvalue[i]!=bytearr[i])
+				{
+					System.out.println("Test Failed.  setObject did not set the parameter value correctly");
+				}
+			}
+		}
+		rs.close();
+		ps.close();
+		stmt.close();
+		cstmt.close();
+	  }catch (SQLException e) {
+		  System.out.println(e.getMessage());
+		  e.printStackTrace();
+	  }
+
+	  System.out.println("done testing long varbinary");
+	}
+
+	static void testBatch(Connection conn)
+	{
+	  try {
+		conn.setAutoCommit(true);
+		int i=0;
+		int retValue[]={0,0,0};
+		int updCountLength=0;
+		Statement stmt = conn.createStatement();
+		PreparedStatement ps = null;
+		int updcount;
+		
+		try {
+			ps=conn.prepareStatement("drop table tab1");
+			updcount=ps.executeUpdate();
+			ps=conn.prepareStatement("drop table tab2");
+			updcount=ps.executeUpdate();
+			ps=conn.prepareStatement("drop procedure UpdTable_Proc");
+			updcount=ps.executeUpdate();
+		} 
+		catch (SQLException e) {}
+
+		String createtable = "create table tab1 (tab1pk int, vcc1 varchar(32), primary key(tab1pk))";
+		System.out.println("doing: " + createtable);
+		stmt.execute(createtable);
+
+		String inserttable = "insert into tab1 values(2, 'STRING_2')";
+		System.out.println("doing: " + inserttable);
+		stmt.addBatch(inserttable);
+		inserttable = "insert into tab1 values(3, 'STRING_3')";
+		System.out.println("doing: " + inserttable);
+		stmt.addBatch(inserttable);
+		inserttable = "insert into tab1 values(5, 'STRING_5')";
+		System.out.println("doing: " + inserttable);
+		stmt.addBatch(inserttable);
+		inserttable = "select * from tab1";
+		System.out.println("adding: " + inserttable);
+		stmt.addBatch(inserttable);
+
+		int[] updateCount=null;
+		try {
+			updateCount = stmt.executeBatch();
+		} catch(SQLException se) {
+ 			do {
+				System.out.println("Exception chain: "+se.getMessage());
+				se = se.getNextException();
+			} while (se != null);
+		}
+
+		ResultSet rs = stmt.executeQuery("select * from tab1");
+		while (rs.next())
+		{
+			System.out.println("  id: "+rs.getInt(1)+" desc: "+rs.getString(2));
+		}
+	
+		createtable = "create table tab2 (tab2pk int, vcc2 varchar(32), fc float, tab1pk int, primary key(tab2pk), foreign key(tab1pk) references tab1)" ;
+		System.out.println("doing: " + createtable);
+		stmt.execute(createtable);
+		
+		inserttable="insert into tab2 values(1, 'STRING-1', 1.0 , 5)";
+		System.out.println("doing: " + inserttable);
+		stmt.execute(inserttable);
+		inserttable="insert into tab2 values(2, 'STRING-2', 2.0 , 2)";
+		System.out.println("doing: " + inserttable);
+		stmt.execute(inserttable);
+		inserttable="insert into tab2 values(3, 'STRING-3', 3.0 , 5)";
+		System.out.println("doing: " + inserttable);
+		stmt.execute(inserttable);
+		inserttable="insert into tab2 values(9, 'STRING-9', 9.0 , 3)";
+		System.out.println("doing: " + inserttable);
+		stmt.execute(inserttable);
+
+		System.out.println("setup done");
+
+		String createproc = "create procedure UpdTable_Proc(P1 INT) MODIFIES SQL DATA external name 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.UpdTable_Proc' langauge java parameter style java";
+		System.out.println("doing: " + createproc);
+		stmt.execute(createproc);
+		
+		System.out.println("call the proc/get the callable statement");
+		CallableStatement cstmt= conn.prepareCall("{call UpdTable_Proc(?)}");
+		System.out.println("set first int");
+		cstmt.setInt(1,2);
+		System.out.println("add first to batch");
+		cstmt.addBatch();
+
+		System.out.println("set second int");
+		cstmt.setInt(1,3);
+		System.out.println("add second to batch");
+		cstmt.addBatch();
+
+		System.out.println("set third int");
+		cstmt.setInt(1,4);
+		System.out.println("add third to batch");
+		cstmt.addBatch();
+
+		try {
+			System.out.println("execute the executeBatch method");
+			updateCount = cstmt.executeBatch();
+			updCountLength = updateCount.length;
+		} catch (SQLException e) {
+			System.out.println("EXPECTED Exception: ");
+			System.out.println(e.getMessage());
+		}
+
+		rs = stmt.executeQuery("select * from tab2");
+		while (rs.next())
+		{
+			System.out.println("  type id: "+rs.getInt(4)+" new float column value: "+rs.getInt(3));
+		}
+
+		System.out.println("prepare the proc");
+		String prepString= "update tab2 set tab2pk=?, vcc2=? where vcc2=?";
+		PreparedStatement pstmt = conn.prepareStatement(prepString);
+		int batchUpdates[]={0,0,0};
+		int buCountlen=0;
+
+		try {
+
+			System.out.println("set first values");
+			pstmt.setInt(1,1);
+			pstmt.setString(2, "Continue-1");
+			pstmt.setString(3, "STRING-1");
+			System.out.println("add first to batch");
+			pstmt.addBatch();
+	
+			System.out.println("set second values - illegal update - forces unique constr violation");
+			pstmt.setInt(1,1);
+			pstmt.setString(2,"Invalid");
+			pstmt.setString(3,"STRING-3");
+			System.out.println("add second to batch");
+			pstmt.addBatch();
+
+			System.out.println("set third values; legal update again");
+			pstmt.setInt(1,2);
+			pstmt.setString(2,"Continue-2");
+			pstmt.setString(3,"STRING-2");
+			System.out.println("add third to batch");
+			pstmt.addBatch();
+
+			System.out.println("execute the executeBatch method");
+			System.out.println("expecting batchupdateexception");
+			updateCount = pstmt.executeBatch();
+
+		}
+		catch(BatchUpdateException b)
+		{
+			System.out.println("b: " + b.getMessage());
+			System.out.println("Caught expected BatchUpdateException");
+			batchUpdates = b.getUpdateCounts();
+			buCountlen = batchUpdates.length;
+			System.out.println("buclen: " + buCountlen);
+		}
+		catch(SQLException sqle)
+		{
+			System.out.println("Call to continueUpdate failed!" + sqle);
+		}
+		catch ( Exception e ) 
+		{ 
+			System.out.println("Call to continueUpdate failed!" + e);
+		}
+	
+		if (buCountlen == 1) 
+		{
+			System.out.println("Driver does not support continued updates - OK");
+			for (i = 0; i < buCountlen; i++)
+				System.out.println("=== update count: "+batchUpdates[i]);
+			return;
+		}
+		else if (buCountlen == 3) 
+		{
+			System.out.println("Driver supports continued updates.");
+			for (i = 0; i < buCountlen; i++)
+				System.out.println("=== update count: "+batchUpdates[i]);
+			// Check to see if the third row from the batch was added
+			try
+			{
+				String query ="Select count(*) from tab2 where vcc2 in ('Continue-2')";
+				System.out.println("Query is: " + query);
+				rs=stmt.executeQuery(query);
+				System.out.println("executed, now next...");
+				rs.next();
+				System.out.println("next, now getInt...");
+				int count = rs.getInt(1);
+				rs.close();
+				stmt.close();
+				System.out.println("Count val is: " + count);
+
+				// Make sure that we have the correct error code for
+				// the failed update.
+
+				if (! (batchUpdates[1] == -3 && count == 1) )
+				{
+					System.out.println("Driver did not insert after error.");
+				}
+				System.out.println("now after errorcode check");
+					
+			}
+			catch (SQLException sqle)
+			{
+				System.out.println("Call to continueUpdate failed!" + sqle);
+				sqle.printStackTrace();
+					
+			}
+		}
+
+		System.out.println("Done testing executeBatch.");
+
+		rs.close();
+		cstmt.close();
+		stmt.close();
+
+	  }catch (SQLException e) {
+		  System.out.println(e.getMessage());
+		  e.printStackTrace();
+	  }
+	}
+
+	public static void method1 (int p1, int p2, int[] p3)
+	{
+		p3[0] = p1 + p2;
+	}
+
+	public static int method2 (int p1)
+	{
+		return (p1 * p1) + p1;
+	}
+
+	public static void method3()
+	{
+		System.out.println("I'm doing something here...");
+	}
+
+	public static int method4()
+	{
+		return 55;
+	}
+
+	public static void method4(short s, int i, long l, float f,
+							double d, BigDecimal bd, Date dt, Time t, Timestamp ts, byte[] ba,
+							short[] sr, int[] ir,
+							long[] lr, float[] fr, double[] dr, BigDecimal[] bdr,
+							Date[] dtr, Time[] tr, Timestamp[] tsr, byte[][] bar)
+	{
+		sr[0] = s;
+		ir[0] = i;
+		lr[0] = l;
+		fr[0] = f;
+		dr[0] = d;
+		bdr[0] = bd;
+		dtr[0] = dt;
+		tr[0] = t;
+		if (ts.equals(Timestamp.valueOf("2002-05-12 10:05:02.000000000")))
+		{
+			System.out.println("got the right Timestamp");
+			tsr[0] = ts;
+		}
+		else
+		{
+			System.out.println("got the wrong Timestamp");
+			tsr[0] = null;
+		}
+		bar[0] = ba;
+	}
+
+	public static void method5(BigDecimal bd1, BigDecimal bdr1[], BigDecimal bd2, BigDecimal bdr2[],
+								BigDecimal bdr3[], BigDecimal bdr4[], BigDecimal bdr5[], BigDecimal bdr6[],
+								BigDecimal bdr7[])
+	{
+		bdr1[0] = bd1;
+		bdr2[0] = bd1.multiply(bd2);
+		bdr3[0] = bd1.add(bd2);
+		bdr4[0] = new BigDecimal(".00000");
+		bdr5[0] = new BigDecimal("-.00000");
+		bdr6[0] = new BigDecimal("99999999.");
+		bdr7[0] = new BigDecimal("-99999999.");
+	}
+
+	// Test for INOUT params.
+	public static void method6 (int p1, int p2[], short s1, short s2[], long l1, long l2[],
+			float f1, float f2[], double d1, double d2[], Time t1, Time t2[])
+	{
+		p2[0] = p1 + p2[0];
+		s2[0] = (short) (s1 + s2[0]);
+		l2[0] = l1 + l2[0];
+		f2[0] = f1 + f2[0];
+		d2[0] = d1 + d2[0];
+		t2[0] = t1;
+	}
+
+	// Test for IN parameters with Longvarbinary column
+	public static void Longvarbinary_Proc_In (byte[] in_param) throws SQLException 
+	{
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("update Longvarbinary_Tab set lvbc=?");
+
+		ps.setBytes(1,in_param);
+		ps.executeUpdate();
+
+		ps.close();ps=null;
+		conn.close();conn=null;
+	}
+
+
+	// test update of table in batch
+	public static void UpdTable_Proc (BigDecimal type_param) throws SQLException 
+	{
+        	Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("update t2 set fc=fc*20 where tab1pk=?");
+		
+		ps.setBigDecimal(1,type_param);
+		ps.executeUpdate();
+
+		ps.close(); ps=null;
+		conn.close(); conn=null;
+	}
+
+	// test accessing minumum and maximum and null value for numeric columns with out params
+	public static void Numeric_Proc (BigDecimal[] param1,BigDecimal[] param2,
+					 BigDecimal[] param3) throws SQLException 
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		Statement stmt = conn.createStatement();
+		ResultSet rs = stmt.executeQuery("select maxcol, mincol, nulcol from Num_Tab");
+		
+		if (rs.next()) 
+		{
+			param1[0]=rs.getBigDecimal(1);
+			param2[0]=rs.getBigDecimal(2);
+			param3[0]=rs.getBigDecimal(3);
+		}
+		else 
+		{
+	    		throw new SQLException("Data not found");
+		}
+		
+		rs.close();rs=null;
+		stmt.close();stmt=null;
+		conn.close();conn=null;
+	}
+
+	// Beetle 4933.  
+	static void testBigDec(Connection conn) throws Exception
+	{
+		PreparedStatement ps = null;
+		int updcount;
+		
+	  
+	  try {
+		  try {
+				  ps = conn.prepareStatement("drop table Num_Tab");
+				  updcount = ps.executeUpdate();
+		  } 
+		  catch (SQLException e) {}
+		  int tabSize = 10;
+		  String createTabSql = "create table Num_Tab (maxcol NUMERIC(31,15), mincol NUMERIC(15,15), nulcol NUMERIC)";
+
+		  ps = conn.prepareStatement(createTabSql);
+		  updcount = ps.executeUpdate();
+		  String insertTabSql = "insert into Num_Tab values(999999999999999,0.000000000000001, null)";
+		  ps = conn.prepareStatement(insertTabSql);
+		  updcount = ps.executeUpdate();
+		  try {
+		  String alias = "create procedure Numeric_Proc(OUT P1 DECIMAL(31,15), OUT P2 DECIMAL(31,15), OUT P3 DECIMAL(31,15)) READS SQL DATA external name 'org.apache.derbyTesting.functionTests.tests.derbynet.callable.Numeric_Proc' language java parameter style java";
+		  ps = conn.prepareStatement(alias);
+		  updcount = ps.executeUpdate();
+		  } catch (SQLException se) {}
+			  
+
+		  CallableStatement cstmt = conn.prepareCall("{call Numeric_Proc(?,?,?)}");
+		  cstmt.registerOutParameter(1,java.sql.Types.NUMERIC,15);
+		  cstmt.registerOutParameter(2,java.sql.Types.NUMERIC,15);
+		  cstmt.registerOutParameter(3,java.sql.Types.NUMERIC,15);
+		  //		  ParameterMetaData pmd = cstmt.getParameterMetaData();
+		  //System.out.println("precision: " + pmd.getPrecision(1) +
+		  //				 "scale: " + pmd.getScale(1));
+		  //execute the procedure
+		  cstmt.execute();
+
+		  BigDecimal retVal = cstmt.getBigDecimal(1);
+		  BigDecimal retVal2 = cstmt.getBigDecimal(2);
+		  BigDecimal retVal3 = cstmt.getBigDecimal(3);
+
+		  System.out.println("cstmt.getBigDecimal(1): " + retVal);
+		  System.out.println("cstmt.getBigDecimal(2): " + retVal2);
+		  System.out.println("cstmt.getBigDecimal(3): " + retVal3);
+		  cstmt.close();
+		  ps.close();
+		  conn.commit();
+		  
+		  }catch (SQLException e) { 
+			  System.out.println(e.getMessage());
+			  e.printStackTrace();
+		  }
+	  
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/checkSecMgr.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/checkSecMgr.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,110 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import org.apache.derbyTesting.functionTests.util.JDBCTestDisplayUtil;
+import org.apache.derby.impl.tools.ij.util;
+
+/**
+	This tests to see if the security manager is running.
+*/
+
+public class checkSecMgr
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	public static void main (String args[])
+	{
+		try
+		{
+			Connection conn = null;
+			util.getPropertyArg(args);
+			conn = util.startJBMS();
+			// bug 6021
+			// testIllegalDBCreate();
+			testIllegalPropertySet(conn);
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	public static void testIllegalDBCreate() throws Exception
+	{
+			System.out.println("Security Manager Test Starts");
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			Connection conn = null;
+
+			// This tries to create a database that is not allowed. 
+			// To repro bug 6021 change to some disallowed file system.
+			// There are two problems with this test.
+			// 1) if set to a different file system than the test runs,
+			//    (e.g. D:/wombat), a null pointer is thrown.
+			// 2) If just set to a disallowed directory on the same file system.
+			//    We seem to be able to create the database.
+			// Ideally this test should attempt to create the database
+			// ../wombat;create=true and get the security exception.
+			String databaseURL = "jdbc:derby:net://localhost/" + 
+				"\"D:/wombat;create=true\"";
+			System.out.println(databaseURL);
+			java.util.Properties properties = new java.util.Properties();
+			properties.put ("user", "cs");
+			properties.put ("password", "cs");
+
+			try {
+				conn = DriverManager.getConnection(databaseURL, properties);
+				System.out.println("FAILED: Expected Security Exception");
+			}
+			catch (SQLException se) {
+				System.out.println("Expected Security Exception");
+				JDBCTestDisplayUtil.ShowCommonSQLException(System.out, se);			
+			}
+	}
+
+	
+	/** Try to set a property in a stored procedure for which there is not
+	 *  adequate permissions in the policy file
+	 */
+	public static void testIllegalPropertySet(Connection conn)
+	{
+		System.out.println("testIllegalPropertySet");
+		try {
+			String createproc = "CREATE PROCEDURE setIllegalPropertyProc() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.derbynet.checkSecMgr.setIllegalPropertyProc' PARAMETER STYLE JAVA";
+			PreparedStatement pstmt = conn.prepareStatement(createproc);
+			pstmt.executeUpdate();
+			CallableStatement cstmt = conn.prepareCall("{call setIllegalPropertyProc()}");
+			System.out.println("execute the procedure setting illegal property");
+			cstmt.executeUpdate();
+			System.out.println("FAILED: Should have gotten security Exception");
+		} catch (SQLException se)
+		{
+			System.out.println("Expected Security Exception");
+			JDBCTestDisplayUtil.ShowCommonSQLException(System.out, se);
+		}
+	}
+
+	public static void setIllegalPropertyProc()
+	{
+		System.setProperty("notAllowed", "somevalue");
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+NSinSameJVM_app.properties
+badConnection_sed.properties
+dblook_test_net_app.properties
+dataSourcePermissions_net_app.properties
+dataSourcePermissions_net_sed.properties
+default_app.properties
+default_derby.properties
+runtimeinfo_sed.properties
+sysinfo_sed.properties
+testij.sql
+testij_app.properties
+testij_sed.properties

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/csPrepStmt.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/csPrepStmt.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,604 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.sql.SQLException;
+import java.io.ByteArrayInputStream; 
+import java.io.InputStreamReader;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+
+/**
+	This test tests the JDBC PreparedStatement.
+*/
+
+class csPrepStmt
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+	private static Connection conn = null;
+
+	public static void main (String args[])
+	{
+		try
+		{
+			System.out.println("csPrepStmt Test Starts");
+			// Initialize JavaCommonClient Driver.
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			
+
+			// test attribute passing in quoted string, beetle 4789
+			String databaseURL = "jdbc:derby:net://localhost/\"wombat2;create=true;upgrade=true\"";
+			java.util.Properties properties = new java.util.Properties();
+			properties.put ("user", "cs");
+			properties.put ("password", "cs");
+			properties.put("retrieveMessagesFromServerOnGetMessage", "true");
+
+			conn = DriverManager.getConnection(databaseURL, properties);
+			if (conn == null)
+			{
+				System.out.println("conn didn't work");
+				return;
+			}
+			PreparedStatement ps;
+			ResultSet rs;
+			boolean hasResultSet;
+			int uc;
+
+			// executeUpdate() without parameters
+			System.out.println("executeUpdate() without parameters");
+			ps = conn.prepareStatement("create table t1(c1 int, c2 int, c3 int)");
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// executeUpdate() with parameters
+			System.out.println("executeUpdate() with parameters");
+			ps = conn.prepareStatement("insert into t1 values (?, 5, ?)");
+			ps.setInt(1, 99);
+			ps.setInt(2, 9);
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// execute() with parameters, no result set returned
+			System.out.println("execute() with parameters, no result set returned");
+			ps = conn.prepareStatement("insert into t1 values (2, 6, ?), (?, 5, 8)");
+			ps.setInt(1, 10);
+			ps.setInt(2, 7);
+			hasResultSet = ps.execute();
+			while (hasResultSet)
+			{
+				rs = ps.getResultSet();
+				while (rs.next())
+					System.out.println("ERROR: should not get here!");
+				hasResultSet = ps.getMoreResults();
+			}
+			uc = ps.getUpdateCount();
+			if (uc != -1)
+				System.out.println("Update count is: " + uc);
+
+			// executeQuery() without parameters
+			System.out.println("executQuery() without parameters");
+			ps = conn.prepareStatement("select * from t1");
+			rs = ps.executeQuery();
+			while (rs.next())
+				System.out.println("got row: "+" "+rs.getInt(1)+" "+rs.getInt(2)+" "+rs.getInt(3));
+			System.out.println("end of rows");
+
+			// executeQuery() with parameters
+			System.out.println("executQuery() with parameters");
+			ps = conn.prepareStatement("select * from t1 where c2 = ?");
+			ps.setInt(1, 5);
+			rs = ps.executeQuery();
+			while (rs.next())
+				System.out.println("got row: "+" "+rs.getInt(1)+" "+rs.getInt(2)+" "+rs.getInt(3));
+			System.out.println("end of rows");
+
+			// execute() with parameters, with result set returned
+			System.out.println("execute() with parameters with result set returned");
+			ps = conn.prepareStatement("select * from t1 where c2 = ?");
+			ps.setInt(1, 5);
+			hasResultSet = ps.execute();
+			while (hasResultSet)
+			{
+				rs = ps.getResultSet();
+				while (rs.next())
+					System.out.println("got row: "+" "+rs.getInt(1)+" "+rs.getInt(2)+" "+rs.getInt(3));
+				hasResultSet = ps.getMoreResults();
+			}
+			System.out.println("end of rows");
+			uc = ps.getUpdateCount();
+			if (uc != -1)
+				System.out.println("Update count is: " + uc);
+
+			// test different data types for input parameters of a PreparedStatement
+			System.out.println("test different data types for input parameters of a Prepared Statement");
+			ps = conn.prepareStatement("create table t2(ti smallint, si smallint,i int, bi bigint, r real, f float, d double precision, n5_2 numeric(5,2), dec10_3 decimal(10,3), ch20 char(20),vc varchar(20), lvc long varchar,b20 char(23) for bit data, vb varchar(23) for bit data, lvb long varchar for bit data,  dt date, tm time, ts timestamp not null)");
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// byte array for binary values.
+			byte[] ba = new byte[] {0x00,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xb,0xc,
+						 0xd,0xe,0xf,0x10,0x11,0x12,0x13 };
+
+			ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ?)");
+			ps.setByte(1, (byte) 1);
+			ps.setShort(2, (short) 2);
+			ps.setInt(3, 3);
+			ps.setLong(4, 4);
+			ps.setFloat(5, (float) 5.0);
+			ps.setDouble(6, 6.0);
+			ps.setDouble(7, 7.0);
+			ps.setBigDecimal(8, new BigDecimal("88.88"));
+			ps.setBigDecimal(9, new BigDecimal("99.1"));
+			ps.setString(10, "column11string");
+			byte[] c11ba = new String("column11vcstring").getBytes();
+			int len = c11ba.length;
+			ps.setAsciiStream(11, new ByteArrayInputStream(c11ba), len);
+			byte[] c12ba = new String("column12lvcstring").getBytes();
+			len = c12ba.length;
+			ps.setCharacterStream(12, new InputStreamReader(new ByteArrayInputStream(c12ba)),len);
+			ps.setBytes(13,ba);
+			ps.setBinaryStream(14, new ByteArrayInputStream(ba), ba.length);
+			ps.setBytes(15,ba);
+			ps.setDate(16, Date.valueOf("2002-04-12"));
+			ps.setTime(17, Time.valueOf("11:44:30"));
+			ps.setTimestamp(18, Timestamp.valueOf("2002-04-12 11:44:30.000000000"));
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// test setObject on different datatypes of the input parameters of
+			// PreparedStatement
+			System.out.println("test setObject on different data types for input  parameters of a Prepared Statement");
+			ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ?)");
+			ps.setObject(1, new Byte((byte) 1));
+			ps.setObject(2, new Integer( 2));
+			ps.setObject(3, new Integer(3));
+			ps.setObject(4, new Long(4));
+			ps.setObject(5, new Float(5.0));
+			ps.setObject(6, new Double(6.0));
+			ps.setObject(7, new Double(7.0));
+			ps.setObject(8, new BigDecimal("88.88"));
+			ps.setObject(9, new BigDecimal("99.1"));
+			ps.setObject(10, "column10string");
+			ps.setObject(11, "column11vcstring");
+			ps.setObject(12, "column12lvcstring");
+			ps.setObject(13,ba);
+			ps.setObject(14,ba);
+			ps.setObject(15,ba);
+			ps.setObject(16, Date.valueOf("2002-04-12"));
+			ps.setObject(17, Time.valueOf("11:44:30"));
+			ps.setObject(18, Timestamp.valueOf("2002-04-12 11:44:30.000000000"));
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// test setNull on different datatypes of the input parameters of PreparedStatement
+			System.out.println("test setNull on different data types for input  parameters of a Prepared Statement");
+			ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ?)");
+			ps.setNull(1, java.sql.Types.BIT);
+			ps.setNull(2, java.sql.Types.TINYINT);
+			ps.setNull(3, java.sql.Types.SMALLINT);
+			ps.setNull(4, java.sql.Types.INTEGER);
+			ps.setNull(5, java.sql.Types.BIGINT);
+			ps.setNull(6, java.sql.Types.REAL);
+			ps.setNull(7, java.sql.Types.FLOAT);
+			ps.setNull(8, java.sql.Types.DOUBLE);
+			ps.setNull(9, java.sql.Types.NUMERIC);
+			ps.setNull(10, java.sql.Types.DECIMAL);
+			ps.setNull(11, java.sql.Types.CHAR);
+			ps.setNull(12, java.sql.Types.VARCHAR);
+			ps.setNull(13, java.sql.Types.LONGVARCHAR);
+			ps.setNull(14, java.sql.Types.BINARY);
+			ps.setNull(15, java.sql.Types.VARBINARY);
+			ps.setNull(16, java.sql.Types.LONGVARBINARY);
+			ps.setNull(17, java.sql.Types.DATE);
+			ps.setNull(18, java.sql.Types.TIME);
+		   
+			ps.setTimestamp(18, Timestamp.valueOf("2002-04-12 11:44:31.000000000")); //slightly after
+			hasResultSet = ps.execute();
+			uc = ps.getUpdateCount();
+			if (uc != -1)
+				System.out.println("Update count is: " + uc);
+
+			ps = conn.prepareStatement("select * from t2");
+			rs = ps.executeQuery();
+			while (rs.next())
+			{
+				System.out.println("got row: "+" " +
+								   " "+rs.getByte(1)+" "+rs.getShort(2)+
+								   " "+rs.getInt(3)+" "+rs.getLong(4)+
+								   " "+rs.getFloat(5)+" "+rs.getDouble(6)+
+								   " "+rs.getDouble(7)+" "+rs.getBigDecimal(8)+
+								   " "+rs.getBigDecimal(9)+" "+rs.getString(10)+
+								   " "+rs.getString(11)+" "+rs.getString(12)+
+								   " "+bytesToString(rs.getBytes(13)) +
+								   " "+bytesToString(rs.getBytes(14)) +
+								   " "+bytesToString(rs.getBytes(15)) +
+								   " "+rs.getDate(16)+
+								   " "+rs.getTime(17)+" "+rs.getTimestamp(18));
+				Timestamp ts = rs.getTimestamp(18);
+				Timestamp temp = Timestamp.valueOf("2002-04-12 11:44:30.000000000");
+				if (ts.after(temp))
+					System.out.println("After first Timestamp!");
+				else if (ts.before(temp))
+					System.out.println("Before first Timestamp!");
+				else
+					System.out.println("Timestamp match!");
+			}
+			System.out.println("end of rows");
+
+			try {
+				ps = conn.prepareStatement("select * from t2 where i = ?");
+				rs = ps.executeQuery();
+			}
+			catch (SQLException e) {
+				System.out.println("SQLState: " + e.getSQLState() + " message: " + e.getMessage());
+			}
+			try {
+				ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+				ps.executeUpdate();
+			}
+			catch (SQLException e) {
+				System.out.println("SQLState: " + e.getSQLState() + " message: " + e.getMessage());
+			}
+			try {
+				int tabSize = 1000;
+				String createBigTabSql = "create table bigtab (";
+				for (int i = 1; i <= tabSize; i++)
+				{
+					createBigTabSql += "c"+ i + " int";
+					if (i != tabSize) 
+						createBigTabSql += ", ";
+					else 
+						createBigTabSql += " )";
+				}
+				//System.out.println(createBigTabSql);
+				ps = conn.prepareStatement(createBigTabSql);
+				uc = ps.executeUpdate();
+				
+				insertTab("bigtab",50);
+				insertTab("bigtab",200);
+				insertTab("bigtab", 300);
+				insertTab("bigtab",500);
+				// prepared Statement with many  params (bug 4863)
+				insertTab("bigtab", 1000);
+				selectFromBigTab();
+				// Negative Cases
+				System.out.println("Insert too many Columns");
+				insertTab("bigtab", 1001);
+				// this one will give a sytax error
+				System.out.println("Expected Syntax error ");
+				insertTab("bigtab", 0);
+				// table doesn't exist
+				System.out.println("Expected Table does not exist ");
+				insertTab("wrongtab",1000);
+			}
+			catch (SQLException e) {
+				System.out.println("SQLState: " + e.getSQLState() + 
+								   " message: " + e.getMessage());
+			}
+			rs.close();
+			ps.close();
+
+			test4975(conn);
+			test5130(conn);
+			test5172(conn);
+			testLobInRS(conn);
+
+			conn.close();
+			System.out.println("csPrepStmt Test Ends");
+        }
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	// Test creation and execution of many Prepared Statements
+	// Beetle 5130
+	private static void test5130 (Connection conn) throws Exception
+	{
+		int numOfPreparedStatement = 500;
+		
+		PreparedStatement[] tempPreparedStatement = new
+			PreparedStatement[numOfPreparedStatement];
+		ResultSet rs;
+		String[] tableName = new  String[numOfPreparedStatement];  
+		for (int i = 0; i < numOfPreparedStatement; i++) 
+		{
+             tempPreparedStatement[i] = conn.prepareStatement(
+			"SELECT COUNT(*) from SYS.SYSTABLES",
+			ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
+			 rs = tempPreparedStatement[i].executeQuery();
+			 rs.close();
+		}
+		for (int i = 0; i < numOfPreparedStatement; i++) 
+			tempPreparedStatement[i].close();
+		
+	}
+	
+	private static void test5172(Connection conn) throws Exception
+	{
+		
+		Statement stmt = conn.createStatement();
+		
+		try {
+			stmt.executeUpdate("drop table tab1");
+		}
+		catch (SQLException se)
+		{
+	}
+		
+		stmt.executeUpdate( "CREATE TABLE TSTAB (I int, STATUS_TS  Timestamp, PROPERTY_TS Timestamp)" );
+		stmt.executeUpdate("INSERT INTO TSTAB VALUES(1 , '2003-08-15 21:20:00','2003-08-15 21:20:00')");
+		stmt.executeUpdate("INSERT INTO TSTAB VALUES(2 , '1969-12-31 16:00:00.0', '2003-08-15 21:20:00')");
+		
+		stmt.close();
+		
+		String timestamp = "20";
+		String query =  "select STATUS_TS  " +
+			"from   TSTAB " +
+			"where  (STATUS_TS >= ? or " +
+			"               PROPERTY_TS<?)";
+
+		System.out.println("Negative test setString with Invalid Timestamp:" + timestamp);
+
+		PreparedStatement ps = conn.prepareStatement(query);
+		ps.setString(1,timestamp);
+		ps.setString(2, timestamp );
+		try {
+			ResultSet rs = ps.executeQuery();
+		}
+		catch (SQLException e) {
+			System.out.println("SQLState: " + e.getSQLState() + " message: " + e.getMessage());
+		}
+
+		conn.rollback();
+	}
+
+
+	private static void test4975(Connection conn) throws Exception
+	{
+		BigDecimal minBigDecimalVal = null;
+		BigDecimal rBigDecimalVal = null;
+		String sminBigDecimalVal = null;
+
+		PreparedStatement pstmt = null;
+		ResultSet rs = null;
+		Statement stmt = null;
+
+		try
+		{
+			stmt = conn.createStatement();
+			String createTableSQL = "create table Numeric_Tab (MAX_VAL NUMERIC(30,15), MIN_VAL NUMERIC(30,15), NULL_VAL NUMERIC(30,15))";
+			// to create the Numeric Table
+			stmt.executeUpdate(createTableSQL);
+			
+			String insertSQL = "insert into Numeric_Tab values(999999999999999,0.000000000000001, null)";
+			stmt.executeUpdate(insertSQL);
+
+			//to extract the Maximum Value of BigDecimal to be Updated 
+			sminBigDecimalVal = "0.000000000000001";
+			minBigDecimalVal = new BigDecimal(sminBigDecimalVal);
+			logMsg("Minimum BigDecimal Value: " + minBigDecimalVal);
+
+			// to update Null value column with Minimum value 
+			String sPrepStmt = "update Numeric_Tab set NULL_VAL=?";
+
+			// Uncomment and prepare the below statement instead to see JCC bug on setObject for decimal
+			//String sPrepStmt = "update Numeric_Tab set NULL_VAL="+sminBigDecimalVal+" where 0.0 != ?";
+			logMsg("Prepared Statement String: " + sPrepStmt);
+			
+			// get the PreparedStatement object
+			pstmt = conn.prepareStatement(sPrepStmt);
+			pstmt.setObject(1,minBigDecimalVal);
+			pstmt.executeUpdate();
+
+			//to query from the database to check the call of pstmt.executeUpdate
+			//to get the query string
+			String Null_Val_Query = "Select NULL_VAL from Numeric_Tab";
+			logMsg(Null_Val_Query);
+			rs = stmt.executeQuery(Null_Val_Query);
+			rs.next();
+
+			rBigDecimalVal = (BigDecimal) rs.getObject(1);
+			logMsg("Returned BigDecimal Value after Updation: " + rBigDecimalVal);
+			logMsg("Value returned from ctssql.stmt: " + minBigDecimalVal);
+
+			if(rBigDecimalVal.compareTo(minBigDecimalVal) == 0)
+			{
+				logMsg("setObject Method sets the designated parameter with the Object");
+			}
+			else
+			{
+				logErr("setObject Method does not set the designated parameter with the Object");
+				throw new Exception("Call to setObject Method is Failed!");
+			}
+		}
+		catch(SQLException sqle)
+		{
+			logErr("SQL Exception: " + sqle.getMessage());
+			throw new Exception("Call to setObject is Failed!");
+		}
+		catch(Exception e)
+		{
+			logErr("Unexpected Exception: " + e.getMessage());
+			throw new Exception("Call to setObject is Failed!");
+		}
+
+		finally
+		{
+			try
+			{
+				if(rs != null)
+				{
+					 rs.close();
+					 rs = null;
+				}
+				if(pstmt != null)
+				{
+					 pstmt.close();
+					 pstmt = null;
+				}
+				stmt.executeUpdate("drop table Numeric_Tab");
+				if(stmt != null)
+				{
+					 stmt.close();
+					 stmt = null;
+				}
+			}
+			catch(Exception e){ }
+		}
+	}
+
+	private static void logErr(String s)
+	{
+		System.err.println(s);
+	}
+
+	private static void logMsg(String s)
+	{
+		System.out.println(s);
+	}
+
+	private static void insertTab(String tabname , int numCols) throws SQLException
+	{
+		PreparedStatement ps;
+		System.out.println("insertTab ( " + tabname + ","  + numCols + ")" );
+		String insertSql = "insert into " + tabname + "(";
+		int i;
+
+		for (i = 1; i < numCols; i++)
+			insertSql += "c"+ i + ", ";
+
+		insertSql += "c" + i + ")  values ( ";
+		
+		for (i = 1; i <= numCols; i++)
+		{
+			insertSql += "?";
+			if (i != numCols) 
+				insertSql += ", ";
+			else 
+				insertSql += " )";
+		}
+
+		try {
+			ps = conn.prepareStatement(insertSql);
+			
+			for (i = 1; i <= numCols; i++)
+				ps.setInt(i,i);
+			ps.executeUpdate();
+		} catch (SQLException e)
+		{
+			System.out.println("SQLState: " + e.getSQLState() + 
+							   " message: " + e.getMessage());			
+		}
+		
+	}
+
+	private static void selectFromBigTab() throws SQLException
+	{
+		PreparedStatement ps = null;
+		ResultSet rs = null;
+
+		String selectSQL = "select * from bigtab";
+		System.out.println(selectSQL);
+		ps = conn.prepareStatement(selectSQL);
+		rs = ps.executeQuery();
+		while (rs.next())
+		{
+			System.out.println("Col # 500 = " + rs.getObject(500) +
+					   "  Col 1000 = " + rs.getObject(1000));  
+		}
+		
+		rs.close();
+		ps.close();
+   
+	}
+
+	private static String bytesToString(byte[] ba)
+	{
+		String s = null;
+		if (ba == null)
+			return s;
+		s = new String();
+		for (int i = 0; i < ba.length; i++)
+			s += (Integer.toHexString(ba[i] & 0x00ff));
+		return s;
+	}
+
+	// Beetle 5292: Test for LOBs returned as part of a result set.
+
+	static void testLobInRS(Connection conn) {
+
+		// Create test objects.
+		try {
+			Statement st = conn.createStatement();
+			// Clob.
+			st.execute("create table lobCheckOne (c clob(30))");
+			st.execute("insert into lobCheckOne values (cast " +
+				"('yayorsomething' as clob(30)))");
+			// Blob.
+			st.execute("create table lobCheckTwo (b blob(30))");
+			st.execute("insert into lobCheckTwo values (cast " + "( "+
+					   TestUtil.stringToHexLiteral("101010001101") +
+					   " as blob(30)))");
+		} catch (SQLException e) {
+			System.out.println("FAIL: Couldn't create required objects:");
+			e.printStackTrace();
+			return;
+		}
+
+		try {
+
+			// Clobs.
+
+			System.out.println("CLOB result.");
+			Statement st = conn.createStatement();
+			ResultSet rs = st.executeQuery("select * from lobCheckOne");
+			if (rs.next())
+				System.out.println("GOT ROW: " + rs.getString(1));
+			else
+				System.out.println("FAIL: Statement executed, but returned " +
+					"an empty result set.");
+
+			// Blobs.
+
+			System.out.println("BLOB result.");
+			st = conn.createStatement();
+			rs = st.executeQuery("select * from lobCheckTwo");
+			if (rs.next())
+				System.out.println("GOT ROW: " + rs.getString(1));
+			else
+				System.out.println("FAIL: Statement executed, but returned " +
+					"an empty result set.");
+
+		} catch (Exception e) {
+			System.out.println("FAIL: Encountered exception:");
+			e.printStackTrace();
+			return;
+		}
+
+		return;
+
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import org.apache.derby.jdbc.EmbeddedDataSource;
+import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
+import org.apache.derby.jdbc.EmbeddedXADataSource;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.PreparedStatement;
+import java.sql.CallableStatement;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+import javax.sql.PooledConnection;
+import javax.sql.XAConnection;
+import javax.sql.ConnectionPoolDataSource;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.Xid;
+import javax.sql.ConnectionEventListener;
+import javax.sql.ConnectionEvent;
+import org.apache.derby.tools.JDBCDisplayUtil;
+import org.apache.derby.tools.ij;
+import org.apache.derby.drda.NetworkServerControl;
+import java.io.*;
+import java.net.InetAddress;
+import java.util.Hashtable;
+
+import javax.naming.*;
+import javax.naming.directory.*;
+
+import java.lang.reflect.*;
+
+public class dataSourcePermissions_net extends org.apache.derbyTesting.functionTests.tests.jdbcapi.dataSourcePermissions
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	private static final int NETWORKSERVER_PORT = 20000;
+
+	private static NetworkServerControl networkServer = null;
+
+	public static void main(String[] args) throws Exception {
+
+		// Load harness properties.
+		ij.getPropertyArg(args);
+
+		// "runTest()" is going to try to connect to the database through
+		// the server at port NETWORKSERVER_PORT.  Thus, we have to
+		// start the server on that port before calling runTest.
+
+		try {
+			Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		// Start the NetworkServer on another thread
+		networkServer = new NetworkServerControl(InetAddress.getByName("localhost"),NETWORKSERVER_PORT);
+		networkServer.start(null);
+
+		// Wait for the NetworkServer to start.
+		if (!isServerStarted(networkServer, 60))
+			System.exit(-1);
+
+		// Now, go ahead and run the test.
+		try {
+			dataSourcePermissions_net tester = new dataSourcePermissions_net();
+			tester.setProperties();
+			tester.runTest();
+
+		} catch (Exception e) {
+		// if we catch an exception of some sort, we need to make sure to
+		// close our streams before returning; otherwise, we can get
+		// hangs in the harness.  SO, catching all exceptions here keeps
+		// us from exiting before closing the necessary streams.
+			System.out.println("FAIL - Exiting due to unexpected error: " +
+				e.getMessage());
+			e.printStackTrace();
+		}
+
+		// Shutdown the server.
+		networkServer.shutdown();
+		// how do we do this with the new api?
+		//networkServer.join();
+		Thread.sleep(5000);
+		System.out.println("Completed dataSourcePermissions_net");
+
+		System.out.close();
+		System.err.close();
+
+	}
+
+
+	public dataSourcePermissions_net() {
+	}
+
+	public void setProperties() {
+
+		// Set required server properties.
+		System.setProperty("database", "jdbc:derby:net://localhost:"
+			+ NETWORKSERVER_PORT + "/wombat;create=true");
+		System.setProperty("ij.user", "EDWARD");
+		System.setProperty("ij.password", "noodle");
+
+	}
+
+	public String getJDBCUrl(String db, String attrs) {
+
+		String s = "jdbc:derby:net://localhost:" + NETWORKSERVER_PORT + "/" + db;
+		if (attrs != null)
+			s = s + ":" + attrs + ";";
+
+		return s;
+
+	}
+
+	public javax.sql.DataSource getDS(String database, String user, String
+									  password)  
+{
+		return (javax.sql.DataSource) getDataSourceWithReflection("com.ibm.db2.jcc.DB2SimpleDataSource",
+									database,user,password);
+
+	}
+
+	public Object getDataSourceWithReflection(String classname, String database,
+											  String user, String password)
+	{
+		Class[] STRING_ARG_TYPE = {String.class};
+		Class[] INT_ARG_TYPE = {Integer.TYPE};
+		Object[] args = null;
+		Object ds = null;
+		Method sh = null;
+		try {
+		ds  = Class.forName(classname).newInstance();
+			
+			// Need to use reflection to load indirectly
+			// setDatabaseName
+			sh = ds.getClass().getMethod("setDatabaseName", STRING_ARG_TYPE);
+			args = new String[] {database};
+			sh.invoke(ds, args);
+			if (user != null) {
+				// setUser
+				sh = ds.getClass().getMethod("setUser", STRING_ARG_TYPE);
+				args = new String[] {user};
+				sh.invoke(ds, args);
+				// setPassword
+				sh = ds.getClass().getMethod("setPassword", STRING_ARG_TYPE);
+				args = new String[] {password};
+				sh.invoke(ds, args);
+			}
+			
+			// setServerName
+			sh = ds.getClass().getMethod("setServerName", STRING_ARG_TYPE);
+			args = new String[] {"localhost"};
+			sh.invoke(ds, args);
+
+			//setPortNumber
+			sh = ds.getClass().getMethod("setPortNumber", INT_ARG_TYPE);
+			args = new Integer[] {new Integer(NETWORKSERVER_PORT)};
+			sh.invoke(ds, args);
+
+			//setDriverType
+			sh = ds.getClass().getMethod("setDriverType", INT_ARG_TYPE);
+			args = new Integer[] {new Integer(4)};
+			sh.invoke(ds, args);
+
+		} catch (Exception e)
+		{
+			System.out.println(e.getMessage());
+			e.printStackTrace();
+		}
+		return ds;
+	}
+
+	public javax.sql.ConnectionPoolDataSource getCPDS(String database, String user, String password) {
+		
+		return (javax.sql.ConnectionPoolDataSource) getDataSourceWithReflection("com.ibm.db2.jcc.DB2ConnectionPoolDataSource",database,user,password);
+
+	}
+
+	public boolean supportsUnicodeNames() {
+		return false;
+	}
+
+	public boolean supportsPooling() {
+		return true;
+	}
+	public boolean supportsXA() {
+		return false;
+	}
+
+	public void start() {
+	}
+
+	public void shutdown() {
+
+		try {
+			DriverManager.getConnection("jdbc:derby:net://localhost:" +
+				NETWORKSERVER_PORT + "/wombat;shutdown=true",
+				"EDWARD", "noodle");
+			System.out.println("FAIL - Shutdown returned connection");
+
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SHUTDOWN " + sqle.getMessage());
+		}
+
+	}
+	private static boolean isServerStarted(NetworkServerControl server, int ntries)
+	{
+		for (int i = 1; i <= ntries; i ++)
+		{
+			try {
+				Thread.sleep(500);
+				server.ping();
+				return true;
+			}
+			catch (Exception e) {
+				if (i == ntries)
+					return false;
+			}
+		}
+		return false;
+	}
+
+}
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE CLOUDSCAPE SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_cloudscape.properties.
+# *** SEE http://cloudsoft/intranet/engnet/main/doc/intranet/process/testproperties.txt
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+excludeJCC=1.1
+database=wombat;create=true
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dataSourcePermissions_net_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,16 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substitut
+en
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+-------------------------------------------------------------------------------
+--
+substitute=(server log.*);(server log XXX)
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,61 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import org.apache.derbyTesting.functionTests.tests.tools.dblook_test;
+
+public class dblook_test_net extends dblook_test {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	// This test runs dblook on a test database using
+	// a connection to the Network Server.
+
+	public static void main (String [] args) {
+
+		System.out.println("\n-= Start dblook (net server) Test. =-");
+		separator = System.getProperty("file.separator");
+		testDirectory = "dblook_test_net/";
+		new dblook_test_net().doTest();
+		System.out.println("\n[ Done. ]\n");
+
+	}
+
+	/* **********************************************
+	 * doTest
+	 * Run a test of the dblook utility using
+	 * Network Server.
+	 ****/
+
+	protected void doTest() {
+
+		try {
+
+			createTestDatabase();
+
+			// Don't let error stream ruin the diff.
+			System.err.close();
+
+			// The only test we need to run is the one for
+			// Network Server; see functionTests/tools/
+			// dblook_test.java.
+			runTest(3, testDBName, testDBName + "_new");
+
+		} catch (Exception e) {
+			System.out.println("-=- FAILED: to complete the test:");
+			e.printStackTrace();
+		}
+
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/dblook_test_net_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+supportfiles=tests/tools/dblook_makeDB.sql,tests/tools/dblook_test.jar

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,24 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+database=jdbc:derby:wombat;create=true
+derby.optimizer.noTimeout=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/default_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,23 @@
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.  
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings, 
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.locks.waitTimeout=120
+derby.language.logStatementText=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/executeUpdate.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/executeUpdate.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,102 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+/**
+	This test tests the JDBC Statement executeUpdate method. Since IJ will eventually
+	just use execute rather then executeUpdate, I want to make sure that executeUpdate
+	is minimally covered.
+*/
+
+class executeUpdate
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	public static void main (String args[])
+	{
+		try
+		{
+			System.out.println("executeUpdate Test Starts");
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			Connection conn = null;
+
+			String databaseURL = "jdbc:derby:net://localhost/wombat;create=true";
+			java.util.Properties properties = new java.util.Properties();
+			properties.put ("user", "judy");
+			properties.put ("password", "judy");
+			conn = DriverManager.getConnection(databaseURL, properties);
+			
+			if (conn == null)
+			{
+				System.out.println("conn didn't work");
+				return;
+			}
+			Statement stmt = conn.createStatement();
+			int rowCount = stmt.executeUpdate("create table exup(a int)");
+			if (rowCount != 0)
+				System.out.println("FAIL - non zero return count on create table");
+			else
+				System.out.println("PASS - create table");
+			rowCount = stmt.executeUpdate("insert into exup values(1)");
+			if (rowCount != 1)
+				System.out.println("FAIL - expected row count 1, got " + rowCount);
+			else
+				System.out.println("PASS - insert 1 row");
+			rowCount = stmt.executeUpdate("insert into exup values(2),(3),(4)");
+			if (rowCount != 3)
+				System.out.println("FAIL - expected row count 3, got " + rowCount);
+			else
+				System.out.println("PASS - insert 3 rows");
+			System.out.println("Rows in table should be 1,2,3,4");
+			ResultSet rs = stmt.executeQuery("select * from exup");
+			int i = 1;
+			boolean fail = false;
+			int val;
+			while (rs.next())
+			{
+				if (i++ != (val = rs.getInt(1)))
+				{
+					System.out.println("FAIL - expecting " + i + " got " + val);
+					fail = true;
+				}
+			}
+			if (i != 5)
+				System.out.println("FAIL - too many rows in table");
+			else if (!fail)
+				System.out.println("PASS - correct rows in table");
+			rs.close();
+			rowCount = stmt.executeUpdate("drop table exup");
+			if (rowCount != 0)
+				System.out.println("FAIL - non zero return count on drop table");
+			else
+				System.out.println("PASS - drop table");
+			stmt.close();
+			System.out.println("executeUpdate Test ends");
+
+        }
+        catch (java.sql.SQLException e) {
+				e.printStackTrace();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/getCurrentProperties.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/getCurrentProperties.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,114 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import org.apache.derby.drda.NetworkServerControl;
+import java.util.Properties;
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+/**
+	This tests getCurrentProperties
+*/
+
+public class getCurrentProperties
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static Properties properties = new java.util.Properties();
+	private static Object joinsync = new Object();
+	private static boolean start = false;
+	public static void main (String args[]) throws Exception
+	{
+		try
+		{
+			NetworkServerControl server = new NetworkServerControl();
+			Properties p = server.getCurrentProperties();
+			p.list(System.out);
+			// create a connection in a different thread
+			startConnection();
+			// wait for connection
+			joinwait();
+			//server.setLogWriter(System.out);
+			// set tracing on for the waiting connection
+			server.trace(3, true);
+			// get properties
+			System.out.println("Properties with tracing on");
+			p = server.getCurrentProperties();
+			p.list(System.out);
+			// set tracing on for all connections
+			server.trace(true);
+			// get properties
+			System.out.println("Properties with tracing on");
+			p = server.getCurrentProperties();
+			p.list(System.out);
+			joinsignal();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	private static void startConnection()
+	{
+		Runnable service = new Runnable() {
+			public void run() {
+				try {
+					Class.forName("com.ibm.db2.jcc.DB2Driver");
+					properties.put ("user", "admin");
+					properties.put ("password", "admin");
+					Connection conn = DriverManager.getConnection(databaseURL, properties); 
+
+					// signal that connection has been established
+					joinsignal();
+					joinwait();
+				}
+				catch (Exception e) {
+						throw new RuntimeException(e.getMessage());
+					}
+				}
+			};
+			new Thread(service).start();
+	}
+	private static void joinwait()
+	{
+		synchronized(joinsync) 
+		{
+			while(!start)
+			{
+				try
+				{
+					joinsync.wait();
+				}
+				catch(InterruptedException ie) 
+				{
+					ie.printStackTrace();
+				}
+			}
+		start = false;
+		}
+	}
+	private static void joinsignal() throws InterruptedException
+	{
+		synchronized(joinsync)
+		{
+			start = true;
+			joinsync.notifyAll();
+		}
+		Thread.yield();
+		Thread.sleep(10000);
+	}
+}
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/maxthreads.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/maxthreads.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,179 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+
+import org.apache.derby.iapi.reference.Property;
+import org.apache.derby.drda.NetworkServerControl;
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+
+/**
+	This tests the maxthreads command
+*/
+
+public class maxthreads
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+	private static String[] maxthreadsCmd1 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"maxthreads", "0"};
+	private static String[] maxthreadsCmd2 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"maxthreads","-1", "-h", "localhost", "-p", "1527"};
+	private static String[] maxthreadsCmd3 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"maxthreads", "-12"};
+	private static String[] maxthreadsCmd4 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"maxthreads", "2147483647"};
+	private static String[] maxthreadsCmd5 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"maxthreads", "9000"};
+    private static  BufferedOutputStream bos = null;
+	private static  NetworkServerControl server;
+	private static String host = "localhost";
+	private static int port = 1527;
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+            
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+	}
+	private static void checkMaxThreads( int value)
+		throws Exception
+	{
+		int maxValue = server.getMaxThreads();
+		if (maxValue == value)
+			System.out.println("PASS - max threads value, "+ value +" is correct");
+		else
+			System.out.println("FAIL - max threads value is " + maxValue + " should be "
+				+ value);
+	}
+	private static Connection newConn() throws Exception
+	{
+		Connection conn = DriverManager.getConnection(databaseURL, properties); 
+		if (conn == null)
+			System.out.println("create connection didn't work");
+		return conn;
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			properties.put ("user", "admin");
+			properties.put ("password", "admin");
+
+			Connection conn1 = newConn();
+        	bos = new BufferedOutputStream(System.out, 1024);
+
+			server = new NetworkServerControl();
+			/************************************************************
+			 *  Test max threads
+			 ************************************************************/
+			System.out.println("Testing maxthreads");
+			//test maxthreads 0
+			execCmdDumpResults(maxthreadsCmd1);	
+			checkMaxThreads(0);
+			//test maxthreads -1 
+			execCmdDumpResults(maxthreadsCmd2);	
+			checkMaxThreads(0);	//default is currently 0
+			//test maxthreads -12 - should error
+			execCmdDumpResults(maxthreadsCmd3);	
+			checkMaxThreads(0);
+			//test maxthreads 2147483647 - should work
+			execCmdDumpResults(maxthreadsCmd4);	
+			checkMaxThreads(2147483647);
+			//test maxthreads 9000 - should work
+			execCmdDumpResults(maxthreadsCmd5);	
+			checkMaxThreads(9000);
+			// try the same values using the callable interface
+			//test maxthreads 0
+			server.setMaxThreads(0);
+			checkMaxThreads(0);
+			//test maxthreads -1 
+			server.setMaxThreads(-1);
+			checkMaxThreads(0);
+			//test maxthreads -2 - should error
+			try {
+				server.setMaxThreads(-2);
+			} catch (Exception e) {
+				System.out.println (e.getMessage());
+			}
+			//test maxthreads 2147483647 - should work
+			server.setMaxThreads(2147483647);
+			checkMaxThreads(2147483647);
+			//test maxthreads 9000 - should work
+			server.setMaxThreads(9000);
+			checkMaxThreads(9000);
+			System.out.println("End test");
+			bos.close();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/prepStmt.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,544 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.sql.SQLException;
+import java.io.ByteArrayInputStream; 
+import java.io.InputStreamReader;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+
+/**
+	This test tests the JDBC PreparedStatement.
+*/
+
+class prepStmt
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+	private static Connection conn = null;
+
+	public static void main (String args[])
+	{
+		try
+		{
+			System.out.println("prepStmt Test Starts");
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			Connection conn = null;
+			// test attribute passing in quoted string, beetle 4789
+			String databaseURL = "jdbc:derby:net://localhost/\"wombat2;create=true;upgrade=true\"";
+			java.util.Properties properties = new java.util.Properties();
+			properties.put ("user", "cs");
+			properties.put ("password", "cs");
+			properties.put("retrieveMessagesFromServerOnGetMessage", "true");
+			conn = DriverManager.getConnection(databaseURL, properties);
+
+			if (conn == null)
+			{
+				System.out.println("conn didn't work");
+				return;
+			}
+			PreparedStatement ps;
+			ResultSet rs;
+			boolean hasResultSet;
+			int uc;
+
+			// executeUpdate() without parameters
+			System.out.println("executeUpdate() without parameters");
+			ps = conn.prepareStatement("create table t1(c1 int, c2 int, c3 int)");
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// executeUpdate() with parameters
+			System.out.println("executeUpdate() with parameters");
+			ps = conn.prepareStatement("insert into t1 values (?, 5, ?)");
+			ps.setInt(1, 99);
+			ps.setInt(2, 9);
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// execute() with parameters, no result set returned
+			System.out.println("execute() with parameters, no result set returned");
+			ps = conn.prepareStatement("insert into t1 values (2, 6, ?), (?, 5, 8)");
+			ps.setInt(1, 10);
+			ps.setInt(2, 7);
+			hasResultSet = ps.execute();
+			while (hasResultSet)
+			{
+				rs = ps.getResultSet();
+				while (rs.next())
+					System.out.println("ERROR: should not get here!");
+				hasResultSet = ps.getMoreResults();
+			}
+			uc = ps.getUpdateCount();
+			if (uc != -1)
+				System.out.println("Update count is: " + uc);
+
+			// executeQuery() without parameters
+			System.out.println("executQuery() without parameters");
+			ps = conn.prepareStatement("select * from t1");
+			rs = ps.executeQuery();
+			while (rs.next())
+				System.out.println("got row: "+" "+rs.getInt(1)+" "+rs.getInt(2)+" "+rs.getInt(3));
+			System.out.println("end of rows");
+
+			// executeQuery() with parameters
+			System.out.println("executQuery() with parameters");
+			ps = conn.prepareStatement("select * from t1 where c2 = ?");
+			ps.setInt(1, 5);
+			rs = ps.executeQuery();
+			while (rs.next())
+				System.out.println("got row: "+" "+rs.getInt(1)+" "+rs.getInt(2)+" "+rs.getInt(3));
+			System.out.println("end of rows");
+
+			// execute() with parameters, with result set returned
+			System.out.println("execute() with parameters with result set returned");
+			ps = conn.prepareStatement("select * from t1 where c2 = ?");
+			ps.setInt(1, 5);
+			hasResultSet = ps.execute();
+			while (hasResultSet)
+			{
+				rs = ps.getResultSet();
+				while (rs.next())
+					System.out.println("got row: "+" "+rs.getInt(1)+" "+rs.getInt(2)+" "+rs.getInt(3));
+				hasResultSet = ps.getMoreResults();
+			}
+			System.out.println("end of rows");
+			uc = ps.getUpdateCount();
+			if (uc != -1)
+				System.out.println("Update count is: " + uc);
+
+			// test different data types for input parameters of a PreparedStatement
+			System.out.println("test different data types for input parameters of a Prepared Statement");
+			ps = conn.prepareStatement("create table t2(si smallint,i int, bi bigint, r real, f float, d double precision, n5_2 numeric(5,2), dec10_3 decimal(10,3), ch20 char(20),vc varchar(20), lvc long varchar,b20 char(23) for bit data, vb varchar(23) for bit data, lvb long varchar for bit data,  dt date, tm time, ts timestamp not null)");
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// byte array for binary values.
+			byte[] ba = new byte[] {0x00,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xb,0xc,
+						 0xd,0xe,0xf,0x10,0x11,0x12,0x13 };
+
+			ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?,  ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ?)");
+			ps.setShort(1, (short) 1);
+			ps.setInt(2, 2);
+			ps.setLong(3, 3);
+			ps.setFloat(4, (float) 4.0);
+			ps.setDouble(5, 5.0);
+			ps.setDouble(6, 6.0);
+			ps.setBigDecimal(7, new BigDecimal("77.77"));
+			ps.setBigDecimal(8, new BigDecimal("8.1"));
+			ps.setString(9, "column9string");
+			byte[] c10ba = new String("column10vcstring").getBytes();
+			int len = c10ba.length;
+			ps.setAsciiStream(10, new ByteArrayInputStream(c10ba), len);
+			byte[] c11ba = new String("column11lvcstring").getBytes();
+			len = c11ba.length;
+			ps.setCharacterStream(11, new InputStreamReader(new ByteArrayInputStream(c11ba)),len);
+			ps.setBytes(12,ba);
+			// Calling setBytes on the varchar for bit data type because it 
+			// Appears DB2 UDB accepts this only for the BLOB data type...
+			// ps.setBinaryStream(13, new ByteArrayInputStream(ba), ba.length);
+			ps.setBytes(13,ba);
+			ps.setBytes(14,ba);
+			ps.setDate(15, Date.valueOf("2002-04-12"));
+			ps.setTime(16, Time.valueOf("11:44:30"));
+			ps.setTimestamp(17, Timestamp.valueOf("2002-04-12 11:44:30.000000000"));
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// test setObject on different datatypes of the input parameters of
+			// PreparedStatement
+			System.out.println("test setObject on different data types for input  parameters of a Prepared Statement");
+			ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ?)");
+			ps.setObject(1, new Integer(1));
+			ps.setObject(2, new Integer(2));
+			ps.setObject(3, new Long(3));
+			ps.setObject(4, new Float(4.0));
+			ps.setObject(5, new Double(5.0));
+			ps.setObject(6, new Double(6.0));
+			ps.setObject(7, new BigDecimal("77.77"));
+			ps.setObject(8, new BigDecimal("8.1"));
+			ps.setObject(9, "column11string");
+			ps.setObject(10, "column10vcstring");
+			ps.setObject(11, "column11lvcstring");
+			ps.setObject(12,ba);
+			ps.setObject(13,ba);
+			ps.setObject(14,ba);
+			ps.setObject(15, Date.valueOf("2002-04-12"));
+			ps.setObject(16, Time.valueOf("11:44:30"));
+			ps.setObject(17, Timestamp.valueOf("2002-04-12 11:44:30.000000000"));
+			uc = ps.executeUpdate();
+			System.out.println("Update count is: " + uc);
+
+			// test setNull on different datatypes of the input parameters of PreparedStatement
+			System.out.println("test setNull on different data types for input  parameters of a Prepared Statement");
+			ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? , ?)");
+			ps.setNull(1, java.sql.Types.SMALLINT);
+			ps.setNull(2, java.sql.Types.INTEGER);
+			ps.setNull(3, java.sql.Types.BIGINT);
+			ps.setNull(4, java.sql.Types.REAL);
+			ps.setNull(5, java.sql.Types.FLOAT);
+			ps.setNull(6, java.sql.Types.DOUBLE);
+			ps.setNull(7, java.sql.Types.NUMERIC);
+			ps.setNull(8, java.sql.Types.DECIMAL);
+			ps.setNull(9, java.sql.Types.CHAR);
+			ps.setNull(10, java.sql.Types.VARCHAR);
+			ps.setNull(11, java.sql.Types.LONGVARCHAR);
+			ps.setNull(12, java.sql.Types.BINARY);
+			ps.setNull(13, java.sql.Types.VARBINARY);
+			ps.setNull(14, java.sql.Types.LONGVARBINARY);
+			ps.setNull(15, java.sql.Types.DATE);
+			ps.setNull(16, java.sql.Types.TIME);
+		   
+			ps.setTimestamp(17, Timestamp.valueOf("2002-04-12 11:44:31.000000000")); //slightly after
+			hasResultSet = ps.execute();
+			uc = ps.getUpdateCount();
+			if (uc != -1)
+				System.out.println("Update count is: " + uc);
+
+			ps = conn.prepareStatement("select * from t2");
+			rs = ps.executeQuery();
+			while (rs.next())
+			{
+				System.out.println("got row: "+" "+rs.getShort(1)+
+								   " "+rs.getInt(2)+" "+rs.getLong(3)+
+								   " "+rs.getFloat(4)+" "+rs.getDouble(5)+
+								   " "+rs.getDouble(6)+" "+rs.getBigDecimal(7)+
+								   " "+rs.getBigDecimal(8)+" "+rs.getString(9)+
+								   " "+rs.getString(10)+" "+rs.getString(11)+
+								   " "+bytesToString(rs.getBytes(12)) +
+								   " "+bytesToString(rs.getBytes(13)) +
+								   " "+bytesToString(rs.getBytes(14)) +
+								   " "+rs.getDate(15)+
+								   " "+rs.getTime(16)+" "+rs.getTimestamp(17));
+				Timestamp ts = rs.getTimestamp(17);
+				Timestamp temp = Timestamp.valueOf("2002-04-12 11:44:30.000000000");
+				if (ts.after(temp))
+					System.out.println("After first Timestamp!");
+				else if (ts.before(temp))
+					System.out.println("Before first Timestamp!");
+				else
+					System.out.println("Timestamp match!");
+			}
+			System.out.println("end of rows");
+
+			try {
+				ps = conn.prepareStatement("select * from t2 where i = ?");
+				rs = ps.executeQuery();
+			}
+			catch (SQLException e) {
+				System.out.println("SQLState: " + e.getSQLState() + " message: " + e.getMessage());
+			}
+			try {
+				ps = conn.prepareStatement("insert into t2 values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+				ps.executeUpdate();
+			}
+			catch (SQLException e) {
+				System.out.println("SQLState: " + e.getSQLState() + " message: " + e.getMessage());
+			}
+			try {
+				int tabSize = 1000;
+				String createBigTabSql = "create table bigtab (";
+				for (int i = 1; i <= tabSize; i++)
+				{
+					createBigTabSql += "c"+ i + " int";
+					if (i != tabSize) 
+						createBigTabSql += ", ";
+					else 
+						createBigTabSql += " )";
+				}
+				//System.out.println(createBigTabSql);
+				ps = conn.prepareStatement(createBigTabSql);
+				uc = ps.executeUpdate();
+				
+				insertTab(conn, "bigtab",50);
+				insertTab(conn, "bigtab",200);
+				insertTab(conn, "bigtab", 300);
+				insertTab(conn, "bigtab",500);
+				// prepared Statement with many  params (bug 4863)
+				insertTab(conn, "bigtab", 1000);
+				selectFromBigTab(conn);
+				// Negative Cases
+				System.out.println("Insert wrong column name");
+				insertTab(conn, "bigtab", 1001);
+				// this one will give a sytax error
+				System.out.println("Expected Syntax error ");
+				insertTab(conn, "bigtab", 0);
+				// table doesn't exist
+				System.out.println("Expected Table does not exist ");
+				insertTab(conn, "wrongtab",1000);
+			}
+			catch (SQLException e) {
+				System.out.println("SQLState: " + e.getSQLState() + 
+								   " message: " + e.getMessage());
+			}
+			rs.close();
+			ps.close();
+
+			test4975(conn);
+			test5130(conn);
+			test5172(conn);
+
+			conn.close();
+			System.out.println("prepStmt Test Ends");
+        }
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	// Test creation and execution of many Prepared Statements
+	// Beetle 5130
+	private static void test5130 (Connection conn) throws Exception
+	{
+		int numOfPreparedStatement = 500;
+		
+		PreparedStatement[] tempPreparedStatement = new
+			PreparedStatement[numOfPreparedStatement];
+		ResultSet rs;
+		String[] tableName = new  String[numOfPreparedStatement];  
+		for (int i = 0; i < numOfPreparedStatement; i++) 
+		{
+             tempPreparedStatement[i] = conn.prepareStatement(
+			"SELECT COUNT(*) from SYS.SYSTABLES",
+			ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
+			 rs = tempPreparedStatement[i].executeQuery();
+			 rs.close();
+		}
+		for (int i = 0; i < numOfPreparedStatement; i++) 
+			tempPreparedStatement[i].close();
+		
+	}
+	
+	private static void test5172(Connection conn) throws Exception
+	{
+		
+		Statement stmt = conn.createStatement();
+		
+		try {
+			stmt.executeUpdate("drop table tab1");
+		}
+		catch (SQLException se)
+		{
+	}
+		
+		stmt.executeUpdate( "CREATE TABLE TSTAB (I int, STATUS_TS  Timestamp, PROPERTY_TS Timestamp)" );
+		stmt.executeUpdate("INSERT INTO TSTAB VALUES(1 , '2003-08-15 21:20:00','2003-08-15 21:20:00')");
+		stmt.executeUpdate("INSERT INTO TSTAB VALUES(2 , '1969-12-31 16:00:00.0', '2003-08-15 21:20:00')");
+		
+		stmt.close();
+		
+		String timestamp = "20";
+		String query =  "select STATUS_TS  " +
+			"from   TSTAB " +
+			"where  (STATUS_TS >= ? or " +
+			"               PROPERTY_TS<?)";
+
+		System.out.println("Negative test setString with Invalid Timestamp:" + timestamp);
+
+		PreparedStatement ps = conn.prepareStatement(query);
+		ps.setString(1,timestamp);
+		ps.setString(2, timestamp );
+		try {
+			ResultSet rs = ps.executeQuery();
+		}
+		catch (SQLException e) {
+			System.out.println("SQLState: " + e.getSQLState() + " message: " + e.getMessage());
+		}
+
+		conn.rollback();
+	}
+
+
+	private static void test4975(Connection conn) throws Exception
+	{
+		BigDecimal minBigDecimalVal = null;
+		BigDecimal rBigDecimalVal = null;
+		String sminBigDecimalVal = null;
+
+		PreparedStatement pstmt = null;
+		ResultSet rs = null;
+		Statement stmt = null;
+
+		try
+		{
+			stmt = conn.createStatement();
+			String createTableSQL = "create table Numeric_Tab (MAX_VAL NUMERIC(30,15), MIN_VAL NUMERIC(30,15), NULL_VAL NUMERIC(30,15) DEFAULT NULL)";
+			// to create the Numeric Table
+			stmt.executeUpdate(createTableSQL);
+			
+			String insertSQL = "insert into Numeric_Tab values(999999999999999,0.000000000000001, null)";
+			stmt.executeUpdate(insertSQL);
+
+			//to extract the Maximum Value of BigDecimal to be Updated 
+			sminBigDecimalVal = "0.000000000000001";
+			minBigDecimalVal = new BigDecimal(sminBigDecimalVal);
+			logMsg("Minimum BigDecimal Value: " + minBigDecimalVal);
+
+			// to update Null value column with Minimum value 
+			String sPrepStmt = "update Numeric_Tab set NULL_VAL=?";
+
+			// Uncomment and prepare the below statement instead to see JCC bug on setObject for decimal
+			//String sPrepStmt = "update Numeric_Tab set NULL_VAL="+sminBigDecimalVal+" where 0.0 != ?";
+			logMsg("Prepared Statement String: " + sPrepStmt);
+			
+			// get the PreparedStatement object
+			pstmt = conn.prepareStatement(sPrepStmt);
+			pstmt.setObject(1,minBigDecimalVal);
+			pstmt.executeUpdate();
+
+			//to query from the database to check the call of pstmt.executeUpdate
+			//to get the query string
+			String Null_Val_Query = "Select NULL_VAL from Numeric_Tab";
+			logMsg(Null_Val_Query);
+			rs = stmt.executeQuery(Null_Val_Query);
+			rs.next();
+
+			rBigDecimalVal = (BigDecimal) rs.getObject(1);
+			logMsg("Returned BigDecimal Value after Updation: " + rBigDecimalVal);
+			logMsg("Value returned from ctssql.stmt: " + minBigDecimalVal);
+
+			if(rBigDecimalVal.compareTo(minBigDecimalVal) == 0)
+			{
+				logMsg("setObject Method sets the designated parameter with the Object");
+			}
+			else
+			{
+				logErr("setObject Method does not set the designated parameter with the Object");
+				throw new Exception("Call to setObject Method is Failed!");
+			}
+		}
+		catch(SQLException sqle)
+		{
+			logErr("SQL Exception: " + sqle.getMessage());
+			throw new Exception("Call to setObject is Failed!");
+		}
+		catch(Exception e)
+		{
+			logErr("Unexpected Exception: " + e.getMessage());
+			throw new Exception("Call to setObject is Failed!");
+		}
+
+		finally
+		{
+			try
+			{
+				if(rs != null)
+				{
+					 rs.close();
+					 rs = null;
+				}
+				if(pstmt != null)
+				{
+					 pstmt.close();
+					 pstmt = null;
+				}
+				stmt.executeUpdate("drop table Numeric_Tab");
+				if(stmt != null)
+				{
+					 stmt.close();
+					 stmt = null;
+				}
+			}
+			catch(Exception e){ }
+		}
+	}
+
+	private static void logErr(String s)
+	{
+		System.err.println(s);
+	}
+
+	private static void logMsg(String s)
+	{
+		System.out.println(s);
+	}
+
+	private static void insertTab(Connection conn, String tabname , int numCols) throws SQLException
+	{
+		PreparedStatement ps = null;
+		System.out.println("insertTab ( " + tabname + ","  + numCols + ")" );
+		String insertSql = "insert into " + tabname + "(";
+ 		for (int i = 1; i <= numCols; i++)
+		{
+			insertSql += " c"+ i;
+			if (i != numCols)
+				insertSql += ", ";
+			else 
+				insertSql += ")";
+		}
+		insertSql += "  values (";
+		for (int i = 1; i <= numCols; i++)
+		{
+			insertSql += "?";
+			if (i != numCols)
+				insertSql += ", ";
+			else 
+				insertSql += " )";
+		}
+
+		try {
+			ps = conn.prepareStatement(insertSql);
+			
+			for (int i = 1; i <= numCols; i++)
+				ps.setInt(i,i);
+			ps.executeUpdate();
+		} catch (SQLException e)
+		{
+			System.out.println("SQLState: " + e.getSQLState() + 
+							   " message: " + e.getMessage());			
+		}
+		
+	}
+
+	private static void selectFromBigTab(Connection conn) throws SQLException
+	{
+		PreparedStatement ps = null;
+		ResultSet rs = null;
+
+		String selectSQL = "select * from bigtab";
+		System.out.println(selectSQL);
+		ps = conn.prepareStatement(selectSQL);
+		rs = ps.executeQuery();
+		while (rs.next())
+		{
+			System.out.println("Col # 500 = " + rs.getObject(500) +
+					   "  Col 1000 = " + rs.getObject(1000));  
+		}
+		
+		rs.close();
+		ps.close();
+   
+	}
+
+	private static String bytesToString(byte[] ba)
+	{
+		String s = null;
+		if (ba == null)
+			return s;
+		s = new String();
+		for (int i = 0; i < ba.length; i++)
+			s += (Integer.toHexString(ba[i] & 0x00ff));
+		return s;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,171 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+import org.apache.derby.tools.ij;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+	This tests the runtimeinfo command
+*/
+
+public class runtimeinfo
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+	private static BufferedOutputStream bos;
+	private static String[] RuntimeinfoCmd = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"runtimeinfo"};
+	private static String[] RuntimeinfoLocaleCmd = new String[] {"-Duser.language=err",
+		"-Duser.country=DE", "org.apache.derby.drda.NetworkServerControl", "runtimeinfo"};
+
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+   		bos = null;         
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+        bos = new BufferedOutputStream(System.out, 1024);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+	}
+
+
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+			ij.getPropertyArg(args);
+			Connection conn1 = ij.startJBMS();
+			
+			/************************************************************
+			 *  Test runtimeinfo
+			 ************************************************************/
+			System.out.println("Testing Runtimeinfo");
+			execCmdDumpResults(RuntimeinfoCmd);	
+			System.out.println("End test");
+
+			// Now get a couple of connections with some prepared statements
+			Connection conn2 = ij.startJBMS();
+			PreparedStatement ps = prepareAndExecuteQuery(conn1,"SELECT count(*) from sys.systables");
+			PreparedStatement ps2 = prepareAndExecuteQuery(conn1,"VALUES(1)");
+
+			Connection conn3 = ij.startJBMS();
+			PreparedStatement ps3 = prepareAndExecuteQuery(conn2,"SELECT count(*) from sys.systables");
+			PreparedStatement ps4 = prepareAndExecuteQuery(conn2,"VALUES(2)");
+
+
+			/************************************************************
+			 *  Test runtimeinfo w/ foreign (non-English) locale
+			 ************************************************************/
+			System.out.println("Testing Runtimeinfo (locale)");
+			execCmdDumpResults(RuntimeinfoLocaleCmd);	
+			System.out.println("End test (locale)");
+			ps.close();
+			ps2.close();
+			ps3.close();
+			ps4.close();
+			conn1.close();
+			conn2.close();
+			conn3.close();
+			/** once more after closing the connections 
+			 */
+			System.out.println("Testing Runtimeinfo after closing connectiosn");
+			execCmdDumpResults(RuntimeinfoCmd);	
+			System.out.println("End test");
+
+			bos.close();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+
+	public static PreparedStatement prepareAndExecuteQuery(Connection conn, 
+														   String sql)
+		throws SQLException
+	{
+		PreparedStatement ps  = conn.prepareStatement(sql);
+		ResultSet rs = ps.executeQuery();
+		rs.next();
+		return ps;
+	}
+}
+
+
+
+
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/runtimeinfo_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,9 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+substitute=Memory : [0-9]*;Memory : #####

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,135 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+
+/**
+	This tests the sysinfo command
+*/
+
+public class sysinfo
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+	private static BufferedOutputStream bos;
+	private static String[] SysInfoCmd = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"sysinfo"};
+	private static String[] SysInfoLocaleCmd = new String[] {"-Duser.language=err",
+		"-Duser.country=DE", "org.apache.derby.drda.NetworkServerControl", "sysinfo"};
+
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+   		bos = null;         
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+        bos = new BufferedOutputStream(System.out, 1024);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+	}
+
+	private static Connection newConn() throws Exception
+	{
+		Connection conn = DriverManager.getConnection(databaseURL, properties); 
+		if (conn == null)
+			System.out.println("create connection didn't work");
+		return conn;
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			properties.put ("user", "admin");
+			properties.put ("password", "admin");
+
+			Connection conn1 = newConn();
+			/************************************************************
+			 *  Test sysinfo
+			 ************************************************************/
+			System.out.println("Testing Sysinfo");
+			execCmdDumpResults(SysInfoCmd);	
+			System.out.println("End test");
+
+			/************************************************************
+			 *  Test sysinfo w/ foreign (non-English) locale
+			 ************************************************************/
+			System.out.println("Testing Sysinfo (locale)");
+			execCmdDumpResults(SysInfoLocaleCmd);	
+			System.out.println("End test (locale)");
+
+			bos.close();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/sysinfo_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+delete=Version,version,Java,OS,[0-9*].[0-9*].[0-9*]

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProperties.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,229 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+import java.net.InetAddress;
+
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+
+import org.apache.derby.drda.NetworkServerControl;
+
+/**
+	This test tests the cloudscape.properties, system properties and 
+	command line parameters to make sure the pick up settings in
+	the correct order. Search order is:
+	   command line parameters
+	   System properties
+	   cloudscape.properties
+	   default
+
+	   The command line should take precedence
+*/
+
+public class testProperties
+{
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+    private static  BufferedOutputStream bos = null;
+
+
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @param wait  true =wait for completion
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+            
+		// Start a process to run the command
+		Process pr = execCmd(args);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+	}
+
+
+	private static Process execCmd (String[] args) throws Exception
+	{
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+		return pr;
+	}
+
+
+	/** 
+	 * Issue derbyServer command if port is null, NetworkServerControl <cmd>
+	 * else  NetworkServerControl <cmd> -p <portstring>
+	 */
+	private static void derbyServerCmd(String cmd, String  portString) throws Exception
+	{
+		String [] cmdArr = null;
+		// For start we don't wait or capture results, just 
+		// rely on test Connection to verify the start.
+		boolean wait = (cmd.equals("start")) ? false : true;
+		
+		if (portString == null)
+			cmdArr  = new String[] {"org.apache.derby.drda.NetworkServerControl", cmd};
+		else if (portString.startsWith("-D"))
+			cmdArr = new String[]
+			 {portString,"org.apache.derby.drda.NetworkServerControl", cmd};
+		else
+			cmdArr = new String[] {"org.apache.derby.drda.NetworkServerControl", cmd,"-p", portString};
+		if (!wait)
+			execCmd(cmdArr);
+		else 
+			execCmdDumpResults(cmdArr);
+	}	
+	
+	private static void waitForStart(String portString, int timeToWait) throws Exception
+	{
+		int waitTime = 0;
+		int port = Integer.parseInt(portString);
+		
+		NetworkServerControl derbyServer = new NetworkServerControl( InetAddress.getByName("localhost"),
+												  port);
+		
+		
+
+        while (waitTime < timeToWait) {
+            try {
+                derbyServer.ping();
+                return;
+            } catch (Exception e) {
+				Thread currentThread = Thread.currentThread();
+				synchronized (currentThread) {
+                    try {
+                        currentThread.wait(1000);
+						waitTime += 1000;
+						if (waitTime >= timeToWait)
+							throw e;
+                    } catch (InterruptedException ie) {
+                    }
+				}
+			}
+        }
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+        	bos = new BufferedOutputStream(System.out, 1024);
+			
+
+			System.out.println("Start testProperties to test property priority");
+
+			/************************************************************
+			 *  Test port setting priorty
+			 ************************************************************/
+			// derby.drda.portNumber set in derby.properties to 1528
+			System.out.println("Testing cloudscape.properties Port 1528 ");
+			Properties derbyProperties = new Properties();
+			derbyProperties.put("derby.drda.portNumber","1528");
+			FileOutputStream propFile = new FileOutputStream("derby.properties");
+			derbyProperties.store(propFile,"testing cloudscape.properties");
+			propFile.close();
+			//test start no parameters - Pickup 1528 from cloudscape.properties
+			derbyServerCmd("start",null);	
+			waitForStart("1528",15000);
+			System.out.println("Successfully Connected");
+			//shutdown - also picks up from cloudscape.properties
+			derbyServerCmd("shutdown",null);
+			System.out.println("Testing System properties  Port 1529 ");
+			//test start with system property. Overrides cloudscape.properties
+			derbyServerCmd("start","-Dderby.drda.portNumber=1529");
+
+			waitForStart("1529",15000);	
+			System.out.println("Successfully Connected");
+			//shutdown - also picks up from System Properties
+			derbyServerCmd("shutdown","1529");
+			System.out.println("Testing command line option. Port 1530");
+			derbyServerCmd("start","1530");
+			waitForStart("1530",15000);		
+			System.out.println("Successfully Connected");
+			//shutdown - with command line option
+			derbyServerCmd("shutdown","1530");
+			System.out.println("End test");
+			bos.close();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+			// If something went wrong,
+			// make sure all these servers are shutdown
+			try {derbyServerCmd("shutdown","1527");} catch (Exception se) {}
+			try {derbyServerCmd("shutdown","1528");} catch (Exception se) {}
+			try {derbyServerCmd("shutdown","1529");} catch (Exception se) {}
+			try {derbyServerCmd("shutdown","1530");} catch (Exception se) {}
+		}
+		finally {
+			try {
+				File fileToDelete = new File("derby.properties");
+				fileToDelete.delete();
+			} catch (Exception e)
+			{
+				e.printStackTrace();
+			}
+		}
+	}
+}
+
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testconnection.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testconnection.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,154 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+
+/**
+	This tests the testconnection command
+*/
+
+public class testconnection
+{
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+	private static String[] TestConnectionCmd1 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"ping"};
+	private static String[] TestConnectionCmd2 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"ping", "-h", "localhost", "-p", "1527"};
+	private static String[] TestConnectionCmd3 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+				    "ping", "-h", "notthere", "-p", "1527"};
+	private static String[] TestConnectionCmd3a = new String[] {"org.apache.derby.drda.NetworkServerControl",																		"ping", "-h", "ihave-inmyname.com", "-p", "1527"};
+	private static String[] TestConnectionCmd4 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"ping", "-h", "localhost"};
+	private static String[] TestConnectionCmd5 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"ping", "-h", "localhost", "-p", "9393"};
+	private static String[] TestConnectionCmd6 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"ping", "-p", "1527"};
+	private static String[] TestConnectionCmd7 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"ping", "-p", "9393"};
+
+    private static  BufferedOutputStream bos = null;
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+            
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+	}
+
+	private static Connection newConn() throws Exception
+	{
+		Connection conn = DriverManager.getConnection(databaseURL, properties); 
+		if (conn == null)
+			System.out.println("create connection didn't work");
+		return conn;
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			properties.put ("user", "admin");
+			properties.put ("password", "admin");
+
+			Connection conn1 = newConn();
+        	bos = new BufferedOutputStream(System.out, 1024);
+
+			/************************************************************
+			 *  Test testconnection
+			 ************************************************************/
+			System.out.println("Testing testconnection");
+			//test connection - no parameters
+			execCmdDumpResults(TestConnectionCmd1);	
+			//test connection - specifying host and port
+			execCmdDumpResults(TestConnectionCmd2);	
+			//test connection - specifying non-existant host and port
+			execCmdDumpResults(TestConnectionCmd3);	
+			//test connection - specifying non-existant host with '-' in the name
+			execCmdDumpResults(TestConnectionCmd3a);	
+			//test connection - specifying host but no port
+			execCmdDumpResults(TestConnectionCmd4);	
+			//test connection - specifying host and invalid port
+			execCmdDumpResults(TestConnectionCmd5);	
+			//test connection - specifying no host and valid port
+			execCmdDumpResults(TestConnectionCmd6);	
+			//test connection - specifying no host and invalid port
+			execCmdDumpResults(TestConnectionCmd7);	
+
+			System.out.println("End test");
+			bos.close();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,135 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+
+import org.apache.derby.drda.NetworkServerControl;
+
+public class testij
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat";
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+	private static String[] ijCmd = new String[] {"org.apache.derby.tools.ij",
+		"extin/testij.sql"};
+
+	private static void execCmd (String[] args) throws Exception
+	{
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+		pr.waitFor();		// make sure this is executed first
+	}
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+        BufferedOutputStream bos = null;
+            
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+        bos = new BufferedOutputStream(System.out, 1024);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+		bos.close();
+
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+			/************************************************************
+			 *  Test comments in front of select's doesn't cause problems
+			 ************************************************************/
+			//create wombat database
+			NetworkServerControl server = new NetworkServerControl();
+			System.out.println("Testing various ij connections and comments in front of selects");
+			execCmdDumpResults(ijCmd);	
+			System.out.println("End test");
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+}
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,43 @@
+driver 'com.ibm.db2.jcc.DB2Driver';
+--Bug 4632  Make the db italian to make sure string selects  are working
+connect 'jdbc:derby:net://localhost:1527/wombat;create=true;territory=it:retrieveMessagesFromServerOnGetMessage=true;' USER 'dbadmin' PASSWORD 'dbadmin';
+
+connect 'jdbc:derby:net://localhost:1527/wombat' USER 'dbadmin' PASSWORD 'dbadbmin';
+-- this is a comment, a comment in front of a select should not cause an error
+select * from sys.systables where 1=0;
+-- this is a comment, a comment in front of a values clauses should not cause an error
+values(1);
+
+-- Try some URL attributes
+disconnect all;
+connect 'jdbc:derby:net://localhost:1527/junk;create=true:retrieveMessagesFromServerOnGetMessage=true;' USER 'dbadmin' PASSWORD 'dbadbmin';
+select * from APP.notthere;
+
+
+-- examples from the docs
+
+connect 'jdbc:derby:net://localhost:1527/wombat;create=true:user=judy;password=judy;retrieveMessagesFromServerOnGetMessage=true;';
+
+connect 'jdbc:derby:net://localhost:1527/"./wombat":user=judy;password=judy;retrieveMessagesFromServerOnGetMessage=true;';
+
+connect 'jdbc:derby:net://localhost:1527/toursDB:retrieveMessagesFromServerOnGetMessage=true;';
+
+
+connect 'jdbc:derby:net://localhost:1527/toursDB:retrieveMessagesFromServerOnGetMessage=true;' USER 'dbadmin' PASSWORD 'dbadbmin';
+
+connect 'jdbc:derby:net://localhost:1527/wombat' USER 'APP' PASSWORD 'APP';
+
+connect  'jdbc:derby:net://localhost:1527/my-db-name;create=true:user=usr;password=pwd;retrieveMessagesFromServerOnGetMessage=true;';
+
+connect 'jdbc:derby:net://localhost:1527/my-db-name;upgrade=true:user=usr;password=pwd;retrieveMessagesFromServerOnGetMessage=true;';
+
+
+connect 'jdbc:derby:net://localhost:1527/my-db-name;shutdown=true:user=usr;password=pwd;'
+
+-- Quoted db and attributes
+connect 'jdbc:derby:net://localhost:1527/"./my-dbname;create=true":user=usr;password=pwd;';
+
+connect 'jdbc:derby:net://localhost:1527/"./my-dbname;create=true":user=usr;password=pwd;retrieveMessagesFromServerOnGetMessage=true;';
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,24 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE CLOUDSCAPE SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_cloudscape.properties.
+# *** SEE http://cloudsoft/intranet/engnet/main/doc/intranet/process/testproperties.txt
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+derby.optimizer.noTimeout=true
+supportfiles=tests/derbynet/testij.sql
+useextdirs=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testij_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substitut
+en
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+-------------------------------------------------------------------------------
+--
+substitute=(server log.*);(server log XXX),Required user property not set;null userid not supported
+
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/timeslice.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/timeslice.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,182 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.derbynet
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.sql.*;
+import java.util.Vector;
+import java.util.Properties;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.BufferedOutputStream;
+
+import org.apache.derby.iapi.reference.Property;
+import org.apache.derby.drda.NetworkServerControl;
+import org.apache.derbyTesting.functionTests.harness.jvm;
+import org.apache.derbyTesting.functionTests.harness.ProcessStreamResult;
+
+/**
+	This tests the timeslice command
+*/
+
+public class timeslice
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	private static String databaseURL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static Properties properties = new java.util.Properties();
+	private static jvm jvm;
+	private static Vector vCmd;
+	private static String[] timesliceCmd1 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"timeslice", "0"};
+	private static String[] timesliceCmd2 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"timeslice","-1", "-h", "localhost", "-p", "1527"};
+	private static String[] timesliceCmd3 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"timeslice", "-12"};
+	private static String[] timesliceCmd4 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"timeslice", "2147483647"};
+	private static String[] timesliceCmd5 = new String[] {"org.apache.derby.drda.NetworkServerControl",
+		"timeslice", "9000"};
+    private static  BufferedOutputStream bos = null;
+	private static  NetworkServerControl server;
+	private static String host = "localhost";
+	private static int port = 1527;
+	/**
+	 * Execute the given command and dump the results to standard out
+	 *
+	 * @param args	command and arguments
+	 * @exception Exception
+	 */
+
+	private static void execCmdDumpResults (String[] args) throws Exception
+	{
+        // We need the process inputstream and errorstream
+        ProcessStreamResult prout = null;
+        ProcessStreamResult prerr = null;
+            
+        StringBuffer sb = new StringBuffer();
+            
+        for (int i = 0; i < args.length; i++)
+        {
+            sb.append(args[i] + " ");                    
+        }
+        System.out.println(sb.toString());
+		int totalSize = vCmd.size() + args.length;
+		String serverCmd[] = new String[totalSize];
+		int i;
+		for (i = 0; i < vCmd.size(); i++)
+		{
+			serverCmd[i] = (String)vCmd.elementAt(i);
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+		int j = 0;
+		for (; i < totalSize; i++)
+		{
+			serverCmd[i] = args[j++];
+		//	System.out.println("serverCmd["+i+"]: "+serverCmd[i]);
+		}
+ 
+		// Start a process to run the command
+		Process pr = Runtime.getRuntime().exec(serverCmd);
+        prout = new ProcessStreamResult(pr.getInputStream(), bos, null);
+        prerr = new ProcessStreamResult(pr.getErrorStream(), bos, null);
+
+		// wait until all the results have been processed
+		prout.Wait();
+		prerr.Wait();
+
+	}
+	private static void checkTimeSlice( int value)
+		throws Exception
+	{
+		int timeSliceValue = server.getTimeSlice();
+		if (timeSliceValue == value)
+			System.out.println("PASS - time slice value, "+value+" is correct");
+		else
+			System.out.println("FAIL - time slice value is " + timeSliceValue + " should be "
+				+ value);
+	}
+	private static Connection newConn() throws Exception
+	{
+		Connection conn = DriverManager.getConnection(databaseURL, properties); 
+		if (conn == null)
+			System.out.println("create connection didn't work");
+		return conn;
+	}
+
+	public static void main (String args[]) throws Exception
+	{
+		if ((System.getProperty("java.vm.name") != null) && System.getProperty("java.vm.name").equals("J9"))
+			jvm = jvm.getJvm("j9_13");
+		else
+			jvm = jvm.getJvm("currentjvm");		// ensure compatibility
+		vCmd = jvm.getCommandLine();
+		try
+		{
+			// Initialize JavaCommonClient Driver.
+			Class.forName("com.ibm.db2.jcc.DB2Driver");
+			properties.put ("user", "admin");
+			properties.put ("password", "admin");
+
+			Connection conn1 = newConn();
+
+        	bos = new BufferedOutputStream(System.out, 1024);
+
+			server = new NetworkServerControl();
+			/************************************************************
+			 *  Test timeslice
+			 ************************************************************/
+			System.out.println("Testing timeslice");
+			//test timeslice 0
+			execCmdDumpResults(timesliceCmd1);	
+			checkTimeSlice(0);
+			//test timeslice -1 
+			execCmdDumpResults(timesliceCmd2);	
+			checkTimeSlice(0);	//default is currently 0
+			//test timeslice -12 - should error
+			execCmdDumpResults(timesliceCmd3);	
+			checkTimeSlice(0);
+			//test timeslice 2147483647 - should work
+			execCmdDumpResults(timesliceCmd4);	
+			checkTimeSlice(2147483647);
+			//test timeslice 9000 - should work
+			execCmdDumpResults(timesliceCmd5);	
+			checkTimeSlice(9000);
+			//test callable interface
+			//test timeslice 0
+			server.setTimeSlice(0);
+			checkTimeSlice(0);
+			//test timeslice -1 
+			server.setTimeSlice(-1);
+			checkTimeSlice(0);	//default is currently 0
+			//test timeslice -2 - should error
+			try {
+				server.setTimeSlice(-2);
+			} catch (Exception e) {
+				System.out.println ("Expecting exception:" + e.getMessage());
+			}
+			checkTimeSlice(0);
+			//test timeslice 2147483647 - should work
+			server.setTimeSlice(2147483647);
+			checkTimeSlice(2147483647);
+			//test timeslice 9000 - should work
+			server.setTimeSlice(9000);
+			checkTimeSlice(9000);
+			System.out.println("End test");
+			bos.close();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,129 @@
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="FTOtestsubdir" basedir="../../../../../../../.." >
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties" />
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/sane${sanity}.properties"/>
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <!--property file="${properties.dir}/parser.properties"/-->
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/tests/jdbcapi"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="FTOtestsubdir" depends="compilet2,compilet1,copyfiles"/>
+
+  <!-- mkdir / init target may not be necessary, just here for reference... -->
+  <target name="init">
+    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/tests/jdbcapi"/>
+  </target>
+
+  <target name="compilet1" depends="compilet2">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <!--pathelement location="${oro}"/-->
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/*.java"/>
+      <exclude name="${this.dir}/savepointJdbc30.java"/>
+      <exclude name="${this.dir}/dataSourcePermissions.java"/>
+      <exclude name="${this.dir}/parameterMetaDataJdbc30.java"/>
+    </javac>
+  </target>
+
+  <target name="compilet2">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <!--exclude name=""/-->
+      <include name="${this.dir}/savepointJdbc30.java"/>
+      <include name="${this.dir}/dataSourcePermissions.java"/>
+      <include name="${this.dir}/parameterMetaDataJdbc30.java"/>
+    </javac>
+  </target>
+
+  <target name="compilet3">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <!--include name=""/-->
+    </javac>
+  </target> 
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/tests/jdbcapi">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/jdbcapi" 
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/jdbcapi/copyfiles.ant"/>  
+    </copy>
+  </target> 
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8 @@
+default_app.properties
+default_derby.properties
+metadata_app.properties
+metadata_derby.properties
+metadata_sed.properties
+savepointJdbc30_app.properties
+savepointJdbc30_derby.properties
+parameterMetaDataJdbc30_app.properties

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/dataSourcePermissions.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/dataSourcePermissions.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,369 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.jdbcapi
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+
+import org.apache.derby.jdbc.EmbeddedDataSource;
+import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
+import org.apache.derby.jdbc.EmbeddedXADataSource;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.PreparedStatement;
+import java.sql.CallableStatement;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+import javax.sql.PooledConnection;
+import javax.sql.XAConnection;
+import javax.sql.ConnectionPoolDataSource;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.Xid;
+import javax.sql.ConnectionEventListener;
+import javax.sql.ConnectionEvent;
+import org.apache.derby.tools.JDBCDisplayUtil;
+import org.apache.derby.tools.ij;
+
+import java.io.*;
+import java.util.Hashtable;
+
+import javax.naming.*;
+import javax.naming.directory.*;
+
+public class dataSourcePermissions
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	private static final String zeus = "\u0396\u0395\u03A5\u03A3";
+	private static final String apollo = "\u0391\u09A0\u039F\u039B\u039B\u039A\u0390";
+
+
+	public static void main(String[] args) throws Exception {
+
+		ij.getPropertyArg(args);
+		new dataSourcePermissions().runTest();
+		System.out.println("Completed dataSourcePermissions");
+
+	}
+
+
+	public dataSourcePermissions() {
+	}
+
+	protected void runTest() throws Exception {
+
+		// Check the returned type of the JDBC Connections.
+		Connection conn = ij.startJBMS();
+
+		CallableStatement cs = conn.prepareCall("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(?, ?)");
+		cs.setString(1, "derby.user.EDWARD");
+		cs.setString(2, "noodle");
+		cs.execute();
+
+		cs.setString(1, "derby.user.FRANCES");
+		cs.setString(2, "isabella");
+		cs.execute();
+
+		cs.setString(1, "derby.authentication.provider");
+		cs.setString(2, "BUILTIN");
+		cs.execute();
+
+		// a greek unicode string
+		cs.setString(1, "derby.user." + zeus);
+		cs.setString(2, apollo);
+		cs.execute();
+
+		cs.setString(1, "derby.connection.requireAuthentication");
+		cs.setString(2, "true");
+		cs.execute();
+
+		cs.close();
+
+		conn.close();
+		shutdown();
+
+		start();
+
+		System.out.println("Checking authentication with DriverManager");
+		try {
+			DriverManager.getConnection(getJDBCUrl("wombat", null));
+			System.out.println("FAIL - get DriverManager connection without user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		try {
+			DriverManager.getConnection(getJDBCUrl("wombat", "user=cynthia;password=sara"));
+			System.out.println("FAIL - get DriverManager connection with invalid user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+		
+		checkConnection(DriverManager.getConnection(getJDBCUrl("wombat", "user=EDWARD;password=noodle")));
+		checkConnection(DriverManager.getConnection(getJDBCUrl("wombat", "user=FRANCES;password=isabella")));
+
+		if (supportsUnicodeNames()) {
+			checkConnection(DriverManager.getConnection(getJDBCUrl("wombat", "user="+zeus+";password="+apollo)));
+			checkConnection(DriverManager.getConnection(getJDBCUrl("wombat", null), zeus, apollo));
+		}
+
+		{
+		System.out.println("Checking connections with DataSource");
+
+		shutdown();
+
+		System.out.println("data source with no default user");
+		javax.sql.DataSource ds = getDS("wombat", null, null);
+
+		try {
+			ds.getConnection().close();
+			System.out.println("FAIL - get DataSource connection with no user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		try {
+			ds.getConnection("cynthia", "sara").close();
+			System.out.println("FAIL - get DataSource connection with invalid user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		checkConnection(ds.getConnection("EDWARD", "noodle"));
+		checkConnection(ds.getConnection("FRANCES", "isabella"));
+		if (supportsUnicodeNames()) {
+			checkConnection(ds.getConnection(zeus, apollo));
+		}
+
+		shutdown();
+
+		System.out.println("data source with invalid default user");
+		ds = getDS("wombat", "EDWARD", "sara");
+		try {
+			ds.getConnection().close();
+			System.out.println("FAIL - get DataSource connection with no user and invalid defaults");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+		checkConnection(ds.getConnection("FRANCES", "isabella"));
+		shutdown();
+
+		System.out.println("data source with valid default user");
+		ds = getDS("wombat", "EDWARD", "noodle");
+
+		checkConnection(ds.getConnection());
+		checkConnection(ds.getConnection("FRANCES", "isabella"));
+		shutdown();
+		}
+
+
+		if (supportsPooling()) {
+
+		System.out.println("Checking connections with ConnectionPoolDataSource");
+
+		System.out.println("ConnectionPoolDataSource with no default user");
+		javax.sql.ConnectionPoolDataSource ds = getCPDS("wombat", null, null);
+
+		try {
+			ds.getPooledConnection().close();
+			System.out.println("FAIL - get ConnectionPoolDataSource connection with no user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		try {
+			ds.getPooledConnection("cynthia", "sara").close();
+			System.out.println("FAIL - get ConnectionPoolDataSource connection with invalid user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		checkConnection(ds.getPooledConnection("EDWARD", "noodle"));
+		checkConnection(ds.getPooledConnection("FRANCES", "isabella"));
+		if (supportsUnicodeNames()) {
+			checkConnection(ds.getPooledConnection(zeus, apollo));
+		}
+		shutdown();
+
+		System.out.println("ConnectionPoolDataSource with invalid default user");
+		ds = getCPDS("wombat", "EDWARD", "sara");
+		try {
+			ds.getPooledConnection().close();
+			System.out.println("FAIL - get ConnectionPoolDataSource connection with no user and invalid defaults");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+		checkConnection(ds.getPooledConnection("FRANCES", "isabella"));
+		shutdown();
+
+		System.out.println("ConnectionPoolDataSource with valid default user");
+		ds = getCPDS("wombat", "EDWARD", "noodle");
+
+		checkConnection(ds.getPooledConnection());
+		checkConnection(ds.getPooledConnection("FRANCES", "isabella"));
+		shutdown();
+		}
+
+
+
+		if (supportsXA()) {
+
+		System.out.println("Checking connections with XADataSource");
+
+		System.out.println("XADataSource with no default user");
+		EmbeddedXADataSource ds = new EmbeddedXADataSource();
+		ds.setDatabaseName("wombat");
+
+		try {
+			ds.getXAConnection().close();
+			System.out.println("FAIL - get XADataSource connection with no user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		try {
+			ds.getXAConnection("cynthia", "sara").close();
+			System.out.println("FAIL - get XADataSource connection with invalid user");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+
+		checkConnection(ds.getXAConnection("EDWARD", "noodle"));
+		checkConnection(ds.getXAConnection("FRANCES", "isabella"));
+		if (supportsUnicodeNames()) {
+			checkConnection(ds.getXAConnection(zeus, apollo));
+		}
+
+		shutdown();
+
+		System.out.println("XADataSource with invalid default user");
+		ds = new EmbeddedXADataSource();
+		ds.setDatabaseName("wombat");
+		ds.setUser("edward");
+		ds.setPassword("sara");
+		try {
+			ds.getXAConnection().close();
+			System.out.println("FAIL - get XADataSource connection with no user and invalid defaults");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED CONNFAIL " + sqle.getMessage());
+		}
+		checkConnection(ds.getXAConnection("FRANCES", "isabella"));
+		shutdown();
+
+		System.out.println("XADataSource with valid default user");
+		ds = new EmbeddedXADataSource();
+		ds.setDatabaseName("wombat");
+		ds.setUser("EDWARD");
+		ds.setPassword("noodle");
+
+		checkConnection(ds.getXAConnection());
+		checkConnection(ds.getXAConnection("FRANCES", "isabella"));
+
+		shutdown();
+		}
+	}
+
+	private static void checkConnection(Connection conn) throws SQLException {
+		checkConnection("DS", conn);
+	}
+
+	private static void checkConnection(String tag, Connection conn) throws SQLException {
+		ResultSet rs = conn.createStatement().executeQuery("values current_user");
+		rs.next();
+		String who = rs.getString(1);
+		rs.close();
+		conn.close();
+
+		if (zeus.equals(who))
+			who = "GREEK ZEUS";
+
+		System.out.println(tag + " connected as " + who);
+	}
+	private static void checkConnection(javax.sql.PooledConnection pc) throws SQLException {
+		checkConnection("CP", pc.getConnection());
+		pc.close();
+
+	}
+	private static void checkConnection(javax.sql.XAConnection xac) throws SQLException {
+		checkConnection("XA", xac.getConnection());
+		xac.close();
+	}
+
+	/*
+	**	Allow sub-classes to pick different implementations for (say) the network server.
+	*/
+
+	public String getJDBCUrl(String db, String attrs) {
+		String s = "jdbc:derby:" + db;
+
+		if (attrs != null)
+			s = s + ";" + attrs;
+
+		return s;
+
+	}
+	public javax.sql.DataSource getDS(String database, String user, String password) {
+		
+		EmbeddedDataSource ds = new EmbeddedDataSource();
+		ds.setDatabaseName(database);
+		if (user != null) {
+			ds.setUser(user);
+			ds.setPassword(password);
+		}
+
+		return ds;
+	}
+
+	public javax.sql.ConnectionPoolDataSource getCPDS(String database, String user, String password) {
+		
+		EmbeddedConnectionPoolDataSource ds = new EmbeddedConnectionPoolDataSource();
+		ds.setDatabaseName(database);
+		if (user != null) {
+			ds.setUser(user);
+			ds.setPassword(password);
+		}
+
+		return ds;
+	}
+
+
+
+	public boolean supportsUnicodeNames() {
+		return true;
+	}
+
+
+	public boolean supportsPooling() {
+		return true;
+	}
+	public boolean supportsXA() {
+		return true;
+	}
+
+	public void start() {
+		new org.apache.derby.jdbc.EmbeddedDriver();
+	}
+
+	public void shutdown() {
+		try {
+			DriverManager.getConnection("jdbc:derby:;shutdown=true");
+			System.out.println("FAIL - Shutdown returned connection");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SHUTDOWN " + sqle.getMessage());
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,24 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+database=jdbc:derby:wombat;create=true
+derby.optimizer.noTimeout=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/default_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,21 @@
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.  
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings, 
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,902 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.jdbcapi
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSetMetaData;
+import java.sql.Statement;
+import java.sql.CallableStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.sql.Timestamp;
+import java.sql.Time;
+import java.sql.Date;
+import java.math.BigDecimal;
+
+import java.util.Properties;
+
+import org.apache.derby.tools.ij;
+
+/**
+ * Test of database meta-data.  This program simply calls each of the meta-data
+ * methods, one by one, and prints the results.  The test passes if the printed
+ * results match a previously stored "master".  Thus this test cannot actually
+ * discern whether it passes or not.
+ *
+ * @author alan
+ */
+
+public class metadata { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static void main(String[] args) {
+
+		DatabaseMetaData met;
+		Connection con;
+		Statement  s;
+		ResultSet rs;
+		ResultSetMetaData rsmet;
+
+		System.out.println("Test metadata starting");
+
+		try
+		{
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			con = ij.startJBMS();
+			//con.setAutoCommit(true); // make sure it is true
+			con.setAutoCommit(false);
+
+			// Create a table with a primary key and some unique keys
+			// and a default
+			s = con.createStatement();
+
+			// test decimal type and other numeric types precision, scale,
+			// and display width after operations, beetle 3875, 3906
+			s.execute("create table t (i int, s smallint, r real, "+
+				"d double precision, dt date, t time, ts timestamp, "+
+				"c char(10), v varchar(40) not null, dc dec(10,2))");
+			s.execute("insert into t values(1,2,3.3,4.4,date('1990-05-05'),"+
+						 "time('12:06:06'),timestamp('1990-07-07 07:07:07.07'),"+
+						 "'eight','nine', 11.1)");
+
+			// test decimal type and other numeric types precision, scale,
+			// and display width after operations, beetle 3875, 3906
+			//rs = s.executeQuery("select dc from t where tn = 10 union select dc from t where i = 1");
+			rs = s.executeQuery("select dc from t where dc = 11.1 union select dc from t where i = 1");
+			rsmet = rs.getMetaData();
+			System.out.println("Column display size of the union result is: " + rsmet.getColumnDisplaySize(1));
+			rs.close();
+
+			rs = s.executeQuery("select dc, dc, r+dc, d-dc, dc-d from t");
+			rsmet = rs.getMetaData();
+			System.out.println("dec(10,2) -- precision: " + rsmet.getPrecision(1) + " scale: " + rsmet.getScale(1) + " display size: " + rsmet.getColumnDisplaySize(1) + " type name: " + rsmet.getColumnTypeName(1));
+			System.out.println("dec(10,2) -- precision: " + rsmet.getPrecision(2) + " scale: " + rsmet.getScale(2) + " display size: " + rsmet.getColumnDisplaySize(2) + " type name: " + rsmet.getColumnTypeName(2));
+			System.out.println("real + dec(10,2) -- precision: " + rsmet.getPrecision(3) + " scale: " + rsmet.getScale(3) + " display size: " + rsmet.getColumnDisplaySize(3) + " type name: " + rsmet.getColumnTypeName(3));
+			System.out.println("double precision - dec(10,2) -- precision: " + rsmet.getPrecision(4) + " scale: " + rsmet.getScale(4) + " display size: " + rsmet.getColumnDisplaySize(4) + " type name: " + rsmet.getColumnTypeName(4));
+			// result is double, precision/scale don't make sense
+			System.out.println("dec(10,2) - double precision -- precision: " + rsmet.getPrecision(5) + " scale: " + rsmet.getScale(5) + " display size: " + rsmet.getColumnDisplaySize(5) + " type name: " + rsmet.getColumnTypeName(5));
+			while (rs.next())
+				System.out.println("result row: " + rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) + " " + rs.getString(4) + " " + rs.getString(5));
+			rs.close();
+
+			s.execute("insert into t values(1,2,3.3,4.4,date('1990-05-05'),"+
+						 "time('12:06:06'),timestamp('1990-07-07 07:07:07.07'),"+
+						 "'eight','nine', 11.11)");
+
+			// test decimal/integer static column result scale consistent
+			// with result set metadata after division, beetle 3901
+			rs = s.executeQuery("select dc / 2 from t");
+			rsmet = rs.getMetaData();
+			System.out.println("Column result scale after division is: " + rsmet.getScale(1));
+			while (rs.next())
+				System.out.println("dc / 2 = " + rs.getString(1));
+			rs.close();
+
+
+			s.execute("create table louie (i int not null default 10, s smallint not null, " +
+				      "c30 char(30) not null, " +
+					  "vc10 varchar(10) not null default 'asdf', " +
+					  "constraint PRIMKEY primary key(vc10, i), " +
+					  "constraint UNIQUEKEY unique(c30, s), " + 
+					  "ai bigint generated always as identity (start with -10, increment by 2001))");
+
+			// Create another unique index on louie
+			s.execute("create unique index u1 on louie(s, i)");
+			// Create a non-unique index on louie
+			s.execute("create index u2 on louie(s)");
+			// Create a view on louie
+			s.execute("create view screwie as select * from louie");
+
+			// Create a foreign key
+			s.execute("create table reftab (vc10 varchar(10), i int, " +
+					  "s smallint, c30 char(30), " +
+					  "s2 smallint, c302 char(30), " +
+					  "dprim decimal(5,1) not null, dfor decimal(5,1) not null, "+
+					  "constraint PKEY_REFTAB	primary key (dprim), " + 
+					  "constraint FKEYSELF 		foreign key (dfor) references reftab, "+
+					  "constraint FKEY1 		foreign key(vc10, i) references louie, " + 
+				  	  "constraint FKEY2 		foreign key(c30, s2) references louie (c30, s), "+
+				  	  "constraint FKEY3 		foreign key(c30, s) references louie (c30, s))");
+
+			s.execute("create table reftab2 (t2_vc10 varchar(10), t2_i int, " +
+					  "constraint T2_FKEY1 		foreign key(t2_vc10, t2_i) references louie)");
+
+			// Create a table with all types
+			s.execute("create table alltypes ( "+
+							//"bitcol16_______ bit(16), "+
+							//"bitvaryingcol32 bit varying(32), "+ 
+							//"tinyintcol tinyint, "+
+							"smallintcol smallint, "+
+							"intcol int default 20, "+
+							"bigintcol bigint, "+
+							"realcol real, "+
+							"doublepreccol double precision default 10, "+
+							"decimalcol10p4s decimal(10,4), "+
+							"numericcol20p2s numeric(20,2), "+
+							"char8col___ char(8), "+
+							"varchar9col varchar(9), "+
+							"longvarcharcol long varchar,"+
+							//"longvarbinarycol long bit varying,"+
+							//"nchar10col nchar(10)"
+					  //+ ", nvarchar8col nvarchar(8)"
+					  //+ ", longnvarchar long nvarchar"
+					  //+ ", 
+						"blobcol blob(3K)"
+					  + ")" );
+			// test for beetle 4620
+			s.execute("CREATE TABLE INFLIGHT(FLT_NUM CHAR(20) NOT NULL," + 
+						"FLT_ORIGIN CHAR(6), " +
+						"FLT_DEST CHAR(6),  " +
+						"FLT_AIRCRAFT CHAR(20), " +
+						"FLT_FLYING_TIME VARCHAR(22), "+
+						"FLT_DEPT_TIME CHAR(8),  "+
+						"FLT_ARR_TIME CHAR(8),  "+
+						"FLT_NOTES VARCHAR(510), "+ 
+						"FLT_DAYS_OF_WK CHAR(14), "+ 
+						"FLT_CRAFT_PIC VARCHAR(32672), "+
+						"PRIMARY KEY(FLT_NUM))");
+
+			// Create procedures so we can test 
+			// getProcedureColumns()
+                        s.execute("create procedure GETPCTEST1 (" +
+				// for creating, the procedure's params do not need to exactly match the method's
+				"out outb VARCHAR(3), a VARCHAR(3), b NUMERIC, c SMALLINT, " +
+				"e SMALLINT, f INTEGER, g BIGINT, h FLOAT, i DOUBLE PRECISION, " +
+				"k DATE, l TIME, T TIMESTAMP )"+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc'" +
+							" parameter style java"); 
+                        s.execute("create procedure GETPCTEST2 (pa INTEGER, pb BIGINT)"+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc'" +
+				" parameter style java"); 
+                        s.execute("create procedure GETPCTEST3A (STRING1 VARCHAR(5), out STRING2 VARCHAR(5))"+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc'" +
+				" parameter style java"); 
+                        s.execute("create procedure GETPCTEST3B (in STRING3 VARCHAR(5), inout STRING4 VARCHAR(5))"+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc'" +
+				" parameter style java"); 
+                        s.execute("create procedure GETPCTEST4A()  "+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4a'"+
+				" parameter style java"); 
+                        s.execute("create procedure GETPCTEST4B() "+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4b'" +
+				" parameter style java"); 
+                        s.execute("create procedure GETPCTEST4Bx(out retparam INTEGER) "+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.getpc4b'" +
+				" parameter style java"); 
+
+			met = con.getMetaData();
+
+			System.out.println("JDBC Driver '" + met.getDriverName() +
+							   "', version " + met.getDriverMajorVersion() +
+							   "." + met.getDriverMinorVersion() +
+							   " (" + met.getDriverVersion() + ")");
+
+			try {
+			    System.out.println("The URL is: " + met.getURL());
+			} catch (Throwable err) {
+			    System.out.println("%%getURL() gave the exception: " + err);
+			}
+
+			System.out.println("allTablesAreSelectable(): " +
+							   met.allTablesAreSelectable());
+			
+			System.out.println("maxColumnNameLength(): " + met.getMaxColumnNameLength());
+
+			System.out.println();
+			System.out.println("getSchemas():");
+			dumpRS(met.getSchemas());
+
+			System.out.println();
+			System.out.println("getCatalogs():");
+			dumpRS(met.getCatalogs());
+
+			System.out.println("getSearchStringEscape(): " +
+							   met.getSearchStringEscape());
+
+			System.out.println("getSQLKeywords(): " +
+							   met.getSQLKeywords());
+
+			System.out.println("getDefaultTransactionIsolation(): " +
+							   met.getDefaultTransactionIsolation());
+
+			System.out.println("getProcedures():");
+			dumpRS(met.getProcedures(null, "%", "GETPCTEST%"));
+
+
+			/*
+			 * any methods that were not tested above using code written
+			 * specifically for it will now be tested in a generic way.
+			 */
+
+
+			System.out.println("allProceduresAreCallable(): " +
+							   met.allProceduresAreCallable());
+			System.out.println("getUserName(): " +
+							   met.getUserName());
+			System.out.println("isReadOnly(): " +
+							   met.isReadOnly());
+			System.out.println("nullsAreSortedHigh(): " +
+							   met.nullsAreSortedHigh());
+			System.out.println("nullsAreSortedLow(): " +
+							   met.nullsAreSortedLow());
+			System.out.println("nullsAreSortedAtStart(): " +
+							   met.nullsAreSortedAtStart());
+			System.out.println("nullsAreSortedAtEnd(): " +
+							   met.nullsAreSortedAtEnd());
+
+
+			System.out.println("getDatabaseProductName(): " + met.getDatabaseProductName());
+
+			String v = met.getDatabaseProductVersion();
+			int l = v.indexOf('(');
+			if (l<0) l = v.length();
+			v = v.substring(0,l);
+			System.out.println("getDatabaseProductVersion(): " + v);
+			System.out.println("getDriverVersion(): " +
+							   met.getDriverVersion());
+			System.out.println("usesLocalFiles(): " +
+							   met.usesLocalFiles());
+			System.out.println("usesLocalFilePerTable(): " +
+							   met.usesLocalFilePerTable());
+			System.out.println("supportsMixedCaseIdentifiers(): " +
+							   met.supportsMixedCaseIdentifiers());
+			System.out.println("storesUpperCaseIdentifiers(): " +
+							   met.storesUpperCaseIdentifiers());
+			System.out.println("storesLowerCaseIdentifiers(): " +
+							   met.storesLowerCaseIdentifiers());
+			System.out.println("storesMixedCaseIdentifiers(): " +
+							   met.storesMixedCaseIdentifiers());
+			System.out.println("supportsMixedCaseQuotedIdentifiers(): " +
+							   met.supportsMixedCaseQuotedIdentifiers());
+			System.out.println("storesUpperCaseQuotedIdentifiers(): " +
+							   met.storesUpperCaseQuotedIdentifiers());
+			System.out.println("storesLowerCaseQuotedIdentifiers(): " +
+							   met.storesLowerCaseQuotedIdentifiers());
+			System.out.println("storesMixedCaseQuotedIdentifiers(): " +
+							   met.storesMixedCaseQuotedIdentifiers());
+			System.out.println("getIdentifierQuoteString(): " +
+							   met.getIdentifierQuoteString());
+			System.out.println("getNumericFunctions(): " +
+							   met.getNumericFunctions());
+			System.out.println("getStringFunctions(): " +
+							   met.getStringFunctions());
+			System.out.println("getSystemFunctions(): " +
+							   met.getSystemFunctions());
+			System.out.println("getTimeDateFunctions(): " +
+							   met.getTimeDateFunctions());
+			System.out.println("getExtraNameCharacters(): " +
+							   met.getExtraNameCharacters());
+			System.out.println("supportsAlterTableWithAddColumn(): " +
+							   met.supportsAlterTableWithAddColumn());
+			System.out.println("supportsAlterTableWithDropColumn(): " +
+							   met.supportsAlterTableWithDropColumn());
+			System.out.println("supportsColumnAliasing(): " +
+							   met.supportsColumnAliasing());
+			System.out.println("nullPlusNonNullIsNull(): " +
+							   met.nullPlusNonNullIsNull());
+			System.out.println("supportsConvert(): " +
+							   met.supportsConvert());
+			System.out.println("supportsConvert(Types.INTEGER, Types.SMALLINT): " +
+							   met.supportsConvert(Types.INTEGER, Types.SMALLINT));
+			System.out.println("supportsTableCorrelationNames(): " +
+							   met.supportsTableCorrelationNames());
+			System.out.println("supportsDifferentTableCorrelationNames(): " +
+							   met.supportsDifferentTableCorrelationNames());
+			System.out.println("supportsExpressionsInOrderBy(): " +
+							   met.supportsExpressionsInOrderBy());
+			System.out.println("supportsOrderByUnrelated(): " +
+							   met.supportsOrderByUnrelated());
+			System.out.println("supportsGroupBy(): " +
+							   met.supportsGroupBy());
+			System.out.println("supportsGroupByUnrelated(): " +
+							   met.supportsGroupByUnrelated());
+			System.out.println("supportsGroupByBeyondSelect(): " +
+							   met.supportsGroupByBeyondSelect());
+			System.out.println("supportsLikeEscapeClause(): " +
+							   met.supportsLikeEscapeClause());
+			System.out.println("supportsMultipleResultSets(): " +
+							   met.supportsMultipleResultSets());
+			System.out.println("supportsMultipleTransactions(): " +
+							   met.supportsMultipleTransactions());
+			System.out.println("supportsNonNullableColumns(): " +
+							   met.supportsNonNullableColumns());
+			System.out.println("supportsMinimumSQLGrammar(): " +
+							   met.supportsMinimumSQLGrammar());
+			System.out.println("supportsCoreSQLGrammar(): " +
+							   met.supportsCoreSQLGrammar());
+			System.out.println("supportsExtendedSQLGrammar(): " +
+							   met.supportsExtendedSQLGrammar());
+			System.out.println("supportsANSI92EntryLevelSQL(): " +
+							   met.supportsANSI92EntryLevelSQL());
+			System.out.println("supportsANSI92IntermediateSQL(): " +
+							   met.supportsANSI92IntermediateSQL());
+			System.out.println("supportsANSI92FullSQL(): " +
+							   met.supportsANSI92FullSQL());
+			System.out.println("supportsIntegrityEnhancementFacility(): " +
+							   met.supportsIntegrityEnhancementFacility());
+			System.out.println("supportsOuterJoins(): " +
+							   met.supportsOuterJoins());
+			System.out.println("supportsFullOuterJoins(): " +
+							   met.supportsFullOuterJoins());
+			System.out.println("supportsLimitedOuterJoins(): " +
+							   met.supportsLimitedOuterJoins());
+			System.out.println("getSchemaTerm(): " +
+							   met.getSchemaTerm());
+			System.out.println("getProcedureTerm(): " +
+							   met.getProcedureTerm());
+			System.out.println("getCatalogTerm(): " +
+							   met.getCatalogTerm());
+			System.out.println("isCatalogAtStart(): " +
+							   met.isCatalogAtStart());
+			System.out.println("getCatalogSeparator(): " +
+							   met.getCatalogSeparator());
+			System.out.println("supportsSchemasInDataManipulation(): " +
+							   met.supportsSchemasInDataManipulation());
+			System.out.println("supportsSchemasInProcedureCalls(): " +
+							   met.supportsSchemasInProcedureCalls());
+			System.out.println("supportsSchemasInTableDefinitions(): " +
+							   met.supportsSchemasInTableDefinitions());
+			System.out.println("supportsSchemasInIndexDefinitions(): " +
+							   met.supportsSchemasInIndexDefinitions());
+			System.out.println("supportsSchemasInPrivilegeDefinitions(): " +
+							   met.supportsSchemasInPrivilegeDefinitions());
+			System.out.println("supportsCatalogsInDataManipulation(): " +
+							   met.supportsCatalogsInDataManipulation());
+			System.out.println("supportsCatalogsInProcedureCalls(): " +
+							   met.supportsCatalogsInProcedureCalls());
+			System.out.println("supportsCatalogsInTableDefinitions(): " +
+							   met.supportsCatalogsInTableDefinitions());
+			System.out.println("supportsCatalogsInIndexDefinitions(): " +
+							   met.supportsCatalogsInIndexDefinitions());
+			System.out.println("supportsCatalogsInPrivilegeDefinitions(): " +
+							   met.supportsCatalogsInPrivilegeDefinitions());
+			System.out.println("supportsPositionedDelete(): " +
+							   met.supportsPositionedDelete());
+			System.out.println("supportsPositionedUpdate(): " +
+							   met.supportsPositionedUpdate());
+			System.out.println("supportsSelectForUpdate(): " +
+							   met.supportsSelectForUpdate());
+			System.out.println("supportsStoredProcedures(): " +
+							   met.supportsStoredProcedures());
+			System.out.println("supportsSubqueriesInComparisons(): " +
+							   met.supportsSubqueriesInComparisons());
+			System.out.println("supportsSubqueriesInExists(): " +
+							   met.supportsSubqueriesInExists());
+			System.out.println("supportsSubqueriesInIns(): " +
+							   met.supportsSubqueriesInIns());
+			System.out.println("supportsSubqueriesInQuantifieds(): " +
+							   met.supportsSubqueriesInQuantifieds());
+			System.out.println("supportsCorrelatedSubqueries(): " +
+							   met.supportsCorrelatedSubqueries());
+			System.out.println("supportsUnion(): " +
+							   met.supportsUnion());
+			System.out.println("supportsUnionAll(): " +
+							   met.supportsUnionAll());
+			System.out.println("supportsOpenCursorsAcrossCommit(): " +
+							   met.supportsOpenCursorsAcrossCommit());
+			System.out.println("supportsOpenCursorsAcrossRollback(): " +
+							   met.supportsOpenCursorsAcrossRollback());
+			System.out.println("supportsOpenStatementsAcrossCommit(): " +
+							   met.supportsOpenStatementsAcrossCommit());
+			System.out.println("supportsOpenStatementsAcrossRollback(): " +
+							   met.supportsOpenStatementsAcrossRollback());
+			System.out.println("getMaxBinaryLiteralLength(): " +
+							   met.getMaxBinaryLiteralLength());
+			System.out.println("getMaxCharLiteralLength(): " +
+							   met.getMaxCharLiteralLength());
+			System.out.println("getMaxColumnsInGroupBy(): " +
+							   met.getMaxColumnsInGroupBy());
+			System.out.println("getMaxColumnsInIndex(): " +
+							   met.getMaxColumnsInIndex());
+			System.out.println("getMaxColumnsInOrderBy(): " +
+							   met.getMaxColumnsInOrderBy());
+			System.out.println("getMaxColumnsInSelect(): " +
+							   met.getMaxColumnsInSelect());
+			System.out.println("getMaxColumnsInTable(): " +
+							   met.getMaxColumnsInTable());
+			System.out.println("getMaxConnections(): " +
+							   met.getMaxConnections());
+			System.out.println("getMaxCursorNameLength(): " +
+							   met.getMaxCursorNameLength());
+			System.out.println("getMaxIndexLength(): " +
+							   met.getMaxIndexLength());
+			System.out.println("getMaxSchemaNameLength(): " +
+							   met.getMaxSchemaNameLength());
+			System.out.println("getMaxProcedureNameLength(): " +
+							   met.getMaxProcedureNameLength());
+			System.out.println("getMaxCatalogNameLength(): " +
+							   met.getMaxCatalogNameLength());
+			System.out.println("getMaxRowSize(): " +
+							   met.getMaxRowSize());
+			System.out.println("doesMaxRowSizeIncludeBlobs(): " +
+							   met.doesMaxRowSizeIncludeBlobs());
+			System.out.println("getMaxStatementLength(): " +
+							   met.getMaxStatementLength());
+			System.out.println("getMaxStatements(): " +
+							   met.getMaxStatements());
+			System.out.println("getMaxTableNameLength(): " +
+							   met.getMaxTableNameLength());
+			System.out.println("getMaxTablesInSelect(): " +
+							   met.getMaxTablesInSelect());
+			System.out.println("getMaxUserNameLength(): " +
+							   met.getMaxUserNameLength());
+			System.out.println("supportsTransactions(): " +
+							   met.supportsTransactions());
+			System.out.println("supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE): " +
+							   met.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE));
+			System.out.println("supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ): " +
+							   met.supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ));
+			System.out.println("supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE): " +
+							   met.supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE));
+			System.out.println("supportsDataDefinitionAndDataManipulationTransactions(): " +
+							   met.supportsDataDefinitionAndDataManipulationTransactions());
+			System.out.println("supportsDataManipulationTransactionsOnly(): " +
+							   met.supportsDataManipulationTransactionsOnly());
+			System.out.println("dataDefinitionCausesTransactionCommit(): " +
+							   met.dataDefinitionCausesTransactionCommit());
+			System.out.println("dataDefinitionIgnoredInTransactions(): " +
+							   met.dataDefinitionIgnoredInTransactions());
+
+			System.out.println("getConnection(): "+
+					   ((met.getConnection()==con)?"same connection":"different connection") );
+			System.out.println("getProcedureColumns():");
+			dumpRS(met.getProcedureColumns(null, "%", "GETPCTEST%", "%"));
+
+ 			System.out.println("getTables() with TABLE_TYPE in ('SYSTEM TABLE') :");
+ 			String[] tabTypes = new String[1];
+ 			tabTypes[0] = "SYSTEM TABLE";
+ 			dumpRS(met.getTables(null, null, null,
+ 								 tabTypes));
+			System.out.println("getTables() with no types:");
+ 			dumpRS(met.getTables("", null, "%", null));
+
+ 			System.out.println("getTables() with TABLE_TYPE in ('VIEW','TABLE') :");
+ 			tabTypes = new String[2];
+ 			tabTypes[0] = "VIEW";
+ 			tabTypes[1] = "TABLE";
+ 			dumpRS(met.getTables(null, null, null, tabTypes));
+
+			System.out.println("getTableTypes():");
+			dumpRS(met.getTableTypes());
+
+			System.out.println("getColumns():");
+			dumpRS(met.getColumns("", null, "", ""));
+
+			System.out.println("getColumns('SYSTABLES'):");
+			dumpRS(met.getColumns("", "SYS", "SYSTABLES", null));
+
+			System.out.println("getColumns('ALLTYPES'):");
+			dumpRS(met.getColumns("", "APP", "ALLTYPES", null));
+
+			System.out.println("getColumns('LOUIE'):");
+			dumpRS(met.getColumns("", "APP", "LOUIE", null));
+
+			// test for beetle 4620
+			System.out.println("getColumns('INFLIGHT'):");
+			dumpRS(met.getColumns("", "APP", "INFLIGHT", null));
+
+			System.out.println("getColumnPrivileges():");
+			dumpRS(met.getColumnPrivileges("Huey", "Dewey", "Louie", "Frooey"));
+
+			System.out.println("getTablePrivileges():");
+			dumpRS(met.getTablePrivileges("Huey", "Dewey", "Louie"));
+
+			System.out.println("getBestRowIdentifier(\"\",null,\"LOUIE\"):");
+			dumpRS(met.getBestRowIdentifier("", null, "LOUIE", 
+											DatabaseMetaData.bestRowTransaction, 
+											true));
+
+			System.out.println("getBestRowIdentifier(\"\",\"SYS\",\"SYSTABLES\"):");
+			dumpRS(met.getBestRowIdentifier("", "SYS", "SYSTABLES",
+											DatabaseMetaData.bestRowTransaction,
+											true));
+
+			System.out.println("getVersionColumns():");
+			dumpRS(met.getVersionColumns("Huey", "Dewey", "Louie"));
+
+			System.out.println("getPrimaryKeys():");
+			dumpRS(met.getPrimaryKeys("", "%", "LOUIE"));
+
+			//beetle 4571
+			System.out.println("getPrimaryKeys(null, null, tablename):");
+			dumpRS(met.getPrimaryKeys(null, null, "LOUIE"));
+
+			System.out.println("getImportedKeys():");
+			dumpRS(met.getImportedKeys(null, null, "%"));
+
+			System.out.println("getExportedKeys():");
+			dumpRS(met.getExportedKeys(null, null, "%"));
+
+			System.out.println("---------------------------------------");
+			System.out.println("getCrossReference('',null,'louie','',null,'reftab' ):");
+			dumpRS(met.getCrossReference("", null, "LOUIE",
+										 "", null, "REFTAB"));
+
+			System.out.println("\ngetCrossReference('','APP','reftab','',null,'reftab' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFTAB",
+										 "", null, "REFTAB"));
+
+			System.out.println("\ngetCrossReference('',null,null,'','APP','reftab' ):");
+			dumpRS(met.getCrossReference("", null, "%",
+										 "", "APP", "REFTAB"));
+			System.out.println("\ngetImportedKeys('',null,null,'','APP','reftab' ):");
+			dumpRS(met.getImportedKeys("", "APP", "REFTAB"));
+
+
+			System.out.println("\ngetCrossReference('',null,'louie','','APP',null):");
+			dumpRS(met.getCrossReference("", null, "LOUIE",
+										 "", "APP", "%"));
+			System.out.println("\ngetExportedKeys('',null,'louie,'','APP',null ):");
+			dumpRS(met.getExportedKeys("", null, "LOUIE"));
+
+
+			System.out.println("\ngetCrossReference('','badschema','LOUIE','','APP','REFTAB' ):");
+			dumpRS(met.getCrossReference("", "BADSCHEMA", "LOUIE",
+										 "", "APP", "REFTAB"));
+
+
+			System.out.println("getTypeInfo():");
+			dumpRS(met.getTypeInfo());
+
+			/* NOTE - we call getIndexInfo() only on system tables here
+ 			 * so that there will be no diffs due to generated names.
+			 */
+			// unique indexes on SYSCOLUMNS
+			System.out.println("getIndexInfo():");
+			dumpRS(met.getIndexInfo("", "SYS", "SYSCOLUMNS", true, false));
+
+			// all indexes on SYSCOLUMNS
+			System.out.println("getIndexInfo():");
+			dumpRS(met.getIndexInfo("", "SYS", "SYSCOLUMNS", false, false));
+
+			System.out.println("getIndexInfo():");
+			dumpRS(met.getIndexInfo("", "SYS", "SYSTABLES", true, false));
+
+			rs = s.executeQuery("SELECT * FROM SYS.SYSTABLES");
+
+			System.out.println("getColumns('SYSTABLES'):");
+			dumpRS(met.getColumns("", "SYS", "SYSTABLES", null));
+			
+			if (!rs.next()) {
+				System.out.println("FAIL -- user result set closed by"+
+					" intervening getColumns request");
+			}
+			rs.close();
+			//
+			// Test referential actions on delete
+			//
+			System.out.println("---------------------------------------");
+			//create tables to test that we get the delete and update 
+			// referential action correct
+			System.out.println("Referential action values");
+			System.out.println("RESTRICT = "+ DatabaseMetaData.importedKeyRestrict);
+			System.out.println("NO ACTION = "+ DatabaseMetaData.importedKeyNoAction);
+			System.out.println("CASCADE = "+ DatabaseMetaData.importedKeyCascade);
+			System.out.println("SETNULL = "+ DatabaseMetaData.importedKeySetNull);
+			System.out.println("SETDEFAULT = "+ DatabaseMetaData.importedKeySetDefault);
+			s.execute("create table refaction1(a int not null primary key)");
+			s.execute("create table refactnone(a int references refaction1(a))");
+			s.execute("create table refactrestrict(a int references refaction1(a) on delete restrict)");
+			s.execute("create table refactnoaction(a int references refaction1(a) on delete no action)");
+			s.execute("create table refactcascade(a int references refaction1(a) on delete cascade)");
+			s.execute("create table refactsetnull(a int references refaction1(a) on delete set null)");
+			System.out.println("getCrossReference('','APP','REFACTION1','','APP','REFACTIONNONE' ):");
+			s.execute("create table refactupdrestrict(a int references refaction1(a) on update restrict)");
+			s.execute("create table refactupdnoaction(a int references refaction1(a) on update no action)");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTNONE"));
+			System.out.println("\ngetCrossReference('','APP','REFACTION1','','APP','REFACTRESTRICT' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTRESTRICT"));
+			System.out.println("\ngetCrossReference('','APP','REFACTION1','','APP','REFACTNOACTION' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTNOACTION"));
+			System.out.println("\ngetCrossReference('','APP','REFACTION1','','APP','REFACTCASCADE' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTCASCADE"));
+			System.out.println("\ngetCrossReference('','APP','REFACTION1','','APP','REFACTSETNULL' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTSETNULL"));
+			System.out.println("\ngetCrossReference('','APP','REFACTION1','','APP','REFACTUPDRESTRICT' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTUPDRESTRICT"));
+			System.out.println("\ngetCrossReference('','APP','REFACTION1','','APP','REFACTUPDNOACTION' ):");
+			dumpRS(met.getCrossReference("", "APP", "REFACTION1", "", "APP", "REFACTUPDNOACTION"));
+			ResultSet refrs = met.getImportedKeys("", "APP", "REFACTNONE");
+			if (refrs.next())
+			{
+				//check update rule
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyNoAction)
+					System.out.println("\ngetImportedKeys - none update Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyNoAction);
+				else
+					System.out.println("\ngetImportedKeys - none update Passed");
+				//check delete rule
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyNoAction)
+					System.out.println("\ngetImportedKeys - none delete Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyNoAction);
+				else
+					System.out.println("\ngetImportedKeys - none delete Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - none Failed no rows");
+					
+			refrs.close();
+
+			refrs = met.getImportedKeys("", "APP", "REFACTRESTRICT");
+			if (refrs.next())
+			{
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyRestrict)
+					System.out.println("\ngetImportedKeys - delete Restrict Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyRestrict);
+				else
+					System.out.println("\ngetImportedKeys - delete Restrict Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - delete Restrict Failed no rows");
+			refrs.close();
+
+			refrs = met.getImportedKeys("", "APP", "REFACTNOACTION");
+			if (refrs.next())
+			{
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyNoAction)
+					System.out.println("\ngetImportedKeys - delete NO ACTION Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyNoAction);
+				else
+					System.out.println("\ngetImportedKeys - delete NO ACTION Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - delete NO ACTION Failed no rows");
+			refrs.close();
+
+			refrs = met.getImportedKeys("", "APP", "REFACTCASCADE");
+			if (refrs.next())
+			{
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyCascade)
+					System.out.println("\ngetImportedKeys - delete CASCADE Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyCascade);
+				else
+					System.out.println("\ngetImportedKeys - delete CASCADE Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - delete CASCADE Failed no rows");
+			refrs.close();
+
+			refrs = met.getImportedKeys("", "APP", "REFACTSETNULL");
+			if (refrs.next())
+			{
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeySetNull)
+					System.out.println("\ngetImportedKeys - delete SET NULL Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeySetNull);
+				else
+					System.out.println("\ngetImportedKeys - delete SET NULL Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - SET NULL Failed no rows");
+			refrs.close();
+			refrs = met.getImportedKeys("", "APP", "REFACTRESTRICT");
+			if (refrs.next())
+			{
+				// test update rule
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyRestrict)
+					System.out.println("\ngetImportedKeys - update Restrict Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyRestrict);
+				else
+					System.out.println("\ngetImportedKeys - update Restrict Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - update Restrict Failed no rows");
+			refrs.close();
+
+			refrs = met.getImportedKeys("", "APP", "REFACTNOACTION");
+			if (refrs.next())
+			{
+				if (refrs.getShort(11) != DatabaseMetaData.importedKeyNoAction)
+					System.out.println("\ngetImportedKeys - update NO ACTION Failed - action = " + refrs.getShort(11) + " required value = " + DatabaseMetaData.importedKeyNoAction);
+				else
+					System.out.println("\ngetImportedKeys - update NO ACTION Passed");
+			}
+			else
+					System.out.println("\ngetImportedKeys - update NO ACTION Failed no rows");
+			refrs.close();
+
+			System.out.println("\ngetExportedKeys('',null,null,'','APP','REFACTION1' ):");
+			dumpRS(met.getExportedKeys("", "APP", "REFACTION1"));
+			System.out.println("---------------------------------------");
+
+			// drop referential action test tables
+			s.execute("drop table refactnone");
+			s.execute("drop table refactupdrestrict");
+			s.execute("drop table refactupdnoaction");
+			s.execute("drop table refactrestrict");
+			s.execute("drop table refactnoaction");
+			s.execute("drop table refactcascade");
+			s.execute("drop table refactsetnull");
+			s.execute("drop table refaction1");
+
+			// test beetle 5195
+			s.execute("create table t1 (c1 int not null, c2 int, c3 int default null, c4 char(10) not null, c5 char(10) default null, c6 char(10) default 'NULL', c7 int default 88)");
+
+			String schema = "APP";
+			String tableName = "T1";
+			DatabaseMetaData dmd = con.getMetaData();
+
+			System.out.println("getColumns for '" + tableName + "'");
+
+			rs = dmd.getColumns(null, schema, tableName, null);
+			try
+			{
+				while (rs.next())
+				{
+					String col = rs.getString(4);
+					String type = rs.getString(6);
+					String defval = rs.getString(13);
+					if (defval == null)
+						System.out.println("  Next line is real null.");
+					System.out.println("defval for col " + col + 
+						" type " + type + " DEFAULT '" + defval + "' wasnull " + rs.wasNull());
+				}
+		
+			}
+			finally
+			{
+				if (rs != null)
+					rs.close();
+			}
+			s.execute("drop table t1");
+
+			// tiny test moved over from no longer used metadata2.sql
+			// This checks for a bug where you get incorrect behavior on a nested connection.
+			// if you do not get an error, the bug does not occur.			
+                        s.execute("create procedure isReadO() "+
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.tests.jdbcapi.metadata.isro'" +
+				" parameter style java"); 
+			s.execute("call isReadO()");
+			
+	
+			s.close();
+			if (con.getAutoCommit() == false)
+				con.commit();
+
+			con.close();
+
+		}
+		catch (SQLException e) {
+			dumpSQLExceptions(e);
+		}
+		catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception:");
+			e.printStackTrace(System.out);
+		}
+
+		System.out.println("Test metadata finished");
+    }
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception");
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se.printStackTrace(System.out);
+			se = se.getNextException();
+		}
+	}
+
+	static void dumpRS(ResultSet s) throws SQLException {
+		ResultSetMetaData rsmd = s.getMetaData ();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount ();
+		String[] headers = new String[numCols];
+		if (numCols <= 0) {
+			System.out.println("(no columns!)");
+			return;
+		}
+		
+		// Display column headings
+		for (int i=1; i<=numCols; i++) {
+			if (i > 1) System.out.print(",");
+			headers[i-1] = rsmd.getColumnLabel(i);
+			System.out.print(headers[i-1]);
+
+		}
+		System.out.println();
+	
+		// Display data, fetching until end of the result set
+		while (s.next()) {
+			// Loop through each column, getting the
+			// column data and displaying
+			String value;
+			for (int i=1; i<=numCols; i++) {
+				if (i > 1) System.out.print(",");
+				value = s.getString(i);
+				if (headers[i-1].equals("DATA_TYPE"))
+				{
+					if (((org.apache.derbyTesting.functionTests.util.TestUtil.getJDBCMajorVersion(s.getStatement().getConnection()) >= 3) &&
+						 (Integer.valueOf(value).intValue() == 16)) ||
+						(Integer.valueOf(value).intValue() == -7))
+						System.out.print("**BOOLEAN_TYPE for VM**");
+					else
+						System.out.print(s.getString(i));
+				}
+				else
+					System.out.print(s.getString(i));
+			}
+			System.out.println();
+		}
+		s.close();
+	}
+
+    /** dummy method to test getProcedureColumns
+     */
+    public static byte[] getpc(String a, BigDecimal b, short c, byte d, short e, int f, long g, float h, double i, byte[] j, Date k, Time l, Timestamp T)
+    {
+        return j;
+    }
+
+	/** overload getpc to further test getProcedureColumns
+	*/
+	public static void getpc(int a, long[] b)
+	{
+	}
+
+    /** overload getpc to further test getProcedureColumns
+	 *  private method shouldn't be returned with alias, ok with procedure
+     */
+    private static void getpc(int a, long b)
+    {
+    }
+
+	// instance method 
+	// with method alias, this should not be returned by getProcedureColumns
+	// but DB2 returns this with a java procedure
+	public void getpc(String a, String b) {
+	}
+
+	// this method should notbe seen by getProcedureColumns as
+	// it has no parameters and no return value.
+	public static void getpc4a() {
+	}
+
+	// check a method with no paramters and a return value works
+	// for getProcedureColumns.
+	public static int getpc4b() {
+		return 4;
+	}
+
+	// check for nested connection working ok
+	public static void isro() throws SQLException {
+		DriverManager.getConnection("jdbc:default:connection").getMetaData().isReadOnly();
+	}
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadataMultiConn.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadataMultiConn.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,402 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.jdbcapi
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSetMetaData;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+import java.io.*;
+import java.sql.PreparedStatement;
+import java.util.Properties;
+
+public class metadataMultiConn
+{
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	public static Connection getConnection(String[] args, boolean autoCommit)
+		throws Exception
+	{
+		// use the ij utility to read the property file and
+		// make the initial connection.
+		ij.getPropertyArg(args);
+		Connection conn = ij.startJBMS();
+		conn.setAutoCommit(autoCommit);
+		return conn;
+	}
+
+	public static void main(String[] args)
+		throws Exception
+	{
+		System.out.println("Test metadataMultiConn starting");
+
+		Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
+
+		//Open 1st  connection
+		Connection conn1 = getConnection(args, false);
+		metadataCalls(conn1);
+
+		Connection conn2= getConnection(args, false);
+
+		metadataCalls(conn2);
+
+		Connection conn3 = getConnection(args, false);
+		metadataCalls(conn3);
+
+		conn1.commit();
+		conn2.commit();
+		checkConsistencyOfAllTables(conn3);
+
+		System.out.println("Test metadataMultiConn finishes.");
+	}
+
+
+	public static void metadataCalls(Connection conn)
+		throws Exception
+	{
+		System.out.println("A new connection is doing metadata calls, but never commit...");
+
+		DatabaseMetaData dmd = conn.getMetaData();
+		getTypeInfo(dmd,System.out);
+		getTables(dmd,System.out);
+		getColumnInfo(dmd, "%",System.out);
+		getPrimaryKeys(dmd, "%",System.out);
+		getExportedKeys(dmd, "%",System.out);
+
+	}
+
+	public static void getTypeInfo(DatabaseMetaData dmd,PrintStream out)
+			throws SQLException
+		{
+			ResultSet rs = dmd.getTypeInfo();
+			out.println("Submitted getTypeInfo request");
+			while (rs.next())
+			{
+				// 1.TYPE_NAME String => Type name
+				String typeName = rs.getString(1);
+
+				// 2.DATA_TYPE short => SQL data type from java.sql.Types
+				short dataType = rs.getShort(2);
+
+				// 3.PRECISION int => maximum precision
+				int precision = rs.getInt(3);
+
+				// 4.LITERAL_PREFIX String => prefix used to quote a literal
+				// (may be null)
+				String literalPrefix = rs.getString(4);
+
+				// 5.LITERAL_SUFFIX String => suffix used to quote a literal
+				// (may be null)
+				String literalSuffix = rs.getString(5);
+
+				// 6.CREATE_PARAMS String => parameters used in creating the type
+				// (may be null)
+				String createParams = rs.getString(6);
+
+				// 7.NULLABLE short => can you use NULL for this type?
+	            //   typeNoNulls - does not allow NULL values
+	            //   typeNullable - allows NULL values
+	            //   typeNullableUnknown - nullability unknown
+				short nullable = rs.getShort(7);
+
+				// 8.CASE_SENSITIVE boolean=> is it case sensitive?
+				boolean caseSensitive = rs.getBoolean(8);
+
+				// 9.SEARCHABLE short => can you use "WHERE" based on this type:
+	            //   typePredNone - No support
+	            //   typePredChar - Only supported with WHERE .. LIKE
+	            //   typePredBasic - Supported except for WHERE .. LIKE
+	            //   typeSearchable - Supported for all WHERE ..
+				short searchable = rs.getShort(9);
+
+				// 10.UNSIGNED_ATTRIBUTE boolean => is it unsigned?
+				boolean unsignedAttribute = rs.getBoolean(10);
+
+				// 11.FIXED_PREC_SCALE boolean => can it be a money value?
+				boolean fixedPrecScale = rs.getBoolean(11);
+
+				// 12.AUTO_INCREMENT boolean => can it be used for an
+				// auto-increment value?
+				boolean autoIncrement = rs.getBoolean(12);
+
+				// 13.LOCAL_TYPE_NAME String => localized version of type name
+				// (may be null)
+				String localTypeName = rs.getString(13);
+
+				// 14.MINIMUM_SCALE short => minimum scale supported
+				short minimumScale = rs.getShort(14);
+
+				// 15.MAXIMUM_SCALE short => maximum scale supported
+				short maximumScale = rs.getShort(15);
+
+				// 16.SQL_DATA_TYPE int => unused
+
+				// 17.SQL_DATETIME_SUB int => unused
+
+				// 18.NUM_PREC_RADIX int => usually 2 or 10
+
+				//out.println(typeName);
+			}
+			rs.close();
+		}
+
+		public static void getTables(DatabaseMetaData dmd,PrintStream out)
+			throws SQLException
+		{
+			String types[] = new String[1];
+			types[0] = "TABLE";
+			ResultSet rs = dmd.getTables(null, null, null, types);
+			while (rs.next())
+			{
+				// 1.TABLE_CAT String => table catalog (may be null)
+				String tableCat = rs.getString(1);
+
+				// 2.TABLE_SCHEM String => table schema (may be null)
+				String tableSchem = rs.getString(2);
+
+				// 3.TABLE_NAME String => table name
+				String tableName = rs.getString(3);
+
+				// 4.TABLE_TYPE String => table type.
+				// Typical types are "TABLE", "VIEW",
+				//  "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY",
+				//  "ALIAS", "SYNONYM".
+				String tableType = rs.getString(4);
+
+				// 5.REMARKS String => explanatory comment on the table
+				String remarks = rs.getString(5);
+			}
+			rs.close();
+		}
+
+		public static void getColumnInfo(DatabaseMetaData dmd, String tablePattern,PrintStream out)
+			throws SQLException
+		{
+			out.println("Getting column info for " + tablePattern);
+			ResultSet rs = dmd.getColumns(null, null, tablePattern, "%");
+			while (rs.next())
+			{
+				// 1.TABLE_CAT String => table catalog (may be null)
+				String tableCat = rs.getString(1);
+
+				// 2.TABLE_SCHEM String => table schema (may be null)
+				String tableSchem = rs.getString(2);
+
+				// 3.TABLE_NAME String => table name
+				String tableName = rs.getString(3);
+
+				// 4.COLUMN_NAME String => column name
+				String columnName = rs.getString(4);
+
+				// 5.DATA_TYPE short => SQL type from java.sql.Types
+				short dataType = rs.getShort(5);
+
+				// 6.TYPE_NAME String => Data source dependent type name
+				String typeName = rs.getString(6);
+
+				// 7.COLUMN_SIZE int => column size. For char or date types
+				// this is the maximum number of characters, for numeric or
+				// decimal types this is precision.
+				int columnSize = rs.getInt(7);
+
+				// 8.BUFFER_LENGTH is not used.
+
+				// 9.DECIMAL_DIGITS int => the number of fractional digits
+				int decimalDigits = rs.getInt(9);
+
+				// 10.NUM_PREC_RADIX int => Radix (typically either 10 or 2)
+				int numPrecRadix = rs.getInt(10);
+
+				// 11.NULLABLE int => is NULL allowed?
+			    //	   columnNoNulls - might not allow NULL values
+				//	   columnNullable - definitely allows NULL values
+				//	   columnNullableUnknown - nullability unknown
+				int nullable = rs.getInt(11);
+
+				// 12.REMARKS String => comment describing column (may be null)
+				String remarks = rs.getString(12);
+
+				// 13.COLUMN_DEF String => default value (may be null)
+				String columnDef = rs.getString(13);
+
+				// 14.SQL_DATA_TYPE int => unused
+
+				// 15.SQL_DATETIME_SUB int => unused
+
+				// 16.CHAR_OCTET_LENGTH int => for char types the maximum
+				// number of bytes in the column
+				int charOctetLength = rs.getInt(16);
+
+				// 17.ORDINAL_POSITION int => index of column in table
+				// (starting at 1)
+				//-int ordinalPosition = rs.getInt(17);
+
+				// 18.IS_NULLABLE String => "NO" means column definitely
+				// does not allow NULL values; "YES" means the column might
+				// allow NULL values. An empty string means nobody knows.
+				//-String isNullable = rs.getString(18);
+
+				// let's not print this, for it's so much stuff
+				//out.println(tableName + " " + columnName + " " + typeName);
+			}
+			rs.close();
+		}
+
+		public static void getPrimaryKeys(DatabaseMetaData dmd, String tablePattern,PrintStream out)
+			throws SQLException
+		{
+			ResultSet rs = dmd.getPrimaryKeys(null, null, tablePattern);
+			while (rs.next())
+			{
+				// 1.TABLE_CAT String => table catalog (may be null)
+				String tableCat = rs.getString(1);
+
+				// 2.TABLE_SCHEM String => table schema (may be null)
+				String tableSchem = rs.getString(2);
+
+				// 3.TABLE_NAME String => table name
+				String tableName = rs.getString(3);
+
+				// 4.COLUMN_NAME String => column name
+				String columnName = rs.getString(4);
+
+				// 5.KEY_SEQ short => sequence number within primary key
+				short keySeq = rs.getShort(5);
+
+				// 6.PK_NAME String => primary key name (may be null)
+				String pkName = rs.getString(6);
+			}
+			rs.close();
+		}
+
+		public static void getExportedKeys(DatabaseMetaData dmd, String tablePattern,PrintStream out)
+			throws SQLException
+		{
+			ResultSet rs = dmd.getExportedKeys(null, null, tablePattern);
+			while (rs.next())
+			{
+				// 1.PKTABLE_CAT String => primary key table catalog (may be null)
+				String pkTableCat = rs.getString(1);
+
+				// 2.PKTABLE_SCHEM String => primary key table schema (may be null)
+				String pkTableSchem = rs.getString(2);
+
+				// 3.PKTABLE_NAME String => primary key table name
+				String pkTableName = rs.getString(3);
+
+				// 4.PKCOLUMN_NAME String => primary key column name
+				String pkColumnName = rs.getString(4);
+
+				// 5.FKTABLE_CAT String => foreign key table catalog
+				// (may be null) being exported (may be null)
+				String fkTableCat = rs.getString(5);
+
+				// 6.FKTABLE_SCHEM String => foreign key table schema
+				// (may be null) being exported (may be null)
+				String fkTableSchem = rs.getString(6);
+
+				// 7.FKTABLE_NAME String => foreign key table name being exported
+				String fkTableName = rs.getString(7);
+
+				// 8.FKCOLUMN_NAME String => foreign key column name being exported
+				String fkColumnName = rs.getString(8);
+
+				// 9.KEY_SEQ short => sequence number within foreign key
+				short keySeq = rs.getShort(9);
+
+				// 10.UPDATE_RULE short => What happens to foreign key when
+				// primary is updated:
+				//	   importedNoAction - do not allow update of primary key if
+				//                        it has been imported
+				//	   importedKeyCascade - change imported key to agree
+				//                          with primary key update
+				//	   importedKeySetNull - change imported key to NULL if its
+				//                          primary key has been updated
+				//	   importedKeySetDefault - change imported key to default
+				//                             values if its primary key has
+				//                             been updated
+				//	   importedKeyRestrict - same as importedKeyNoAction
+				//                           (for ODBC 2.x compatibility)
+				short updateRule = rs.getShort(10);
+
+				// 11.DELETE_RULE short => What happens to the foreign key
+				// when primary is deleted.
+				//	   importedKeyNoAction - do not allow delete of primary key
+				//                           if it has been imported
+				//	   importedKeyCascade - delete rows that import a deleted key
+				//	   importedKeySetNull - change imported key to NULL if
+				//                          its primary key has been deleted
+				//	   importedKeyRestrict - same as importedKeyNoAction
+				//                           (for ODBC 2.x compatibility)
+				//	   importedKeySetDefault - change imported key to default
+				//                             if its primary key has
+				//	   been deleted
+				short deleteRule = rs.getShort(11);
+
+				// 12.FK_NAME String => foreign key name (may be null)
+				String fkName = rs.getString(12);
+
+				// 13.PK_NAME String => primary key name (may be null)
+				String pkName = rs.getString(13);
+
+				// 14.DEFERRABILITY short => can the evaluation of foreign key
+				// constraints be deferred until commit
+				//	   importedKeyInitiallyDeferred - see SQL92 for definition
+				//	   importedKeyInitiallyImmediate - see SQL92 for definition
+				//	   importedKeyNotDeferrable - see SQL92 for definition
+				short deferrability = rs.getShort(14);
+
+			}
+			rs.close();
+		}
+
+    /**
+     * Runs the consistency checker.
+     *
+     * @param conn    a connection to the database.
+	 *
+	 * @exception SQLException if there is a database error.
+     */
+
+	public static void checkConsistencyOfAllTables(Connection conn) throws SQLException {
+	
+		//check consistency of all tables in the database
+		Statement s = conn.createStatement();
+		ResultSet rs = s.executeQuery("SELECT schemaname, tablename, " +
+									  "SYSCS_UTIL.SYSCS_CHECK_TABLE(schemaname, tablename) " +
+									  "FROM sys.sysschemas s, sys.systables t " +
+									  "WHERE s.schemaid = t.schemaid");
+		boolean consistent = true;
+		boolean allconsistent = true;
+		while (rs.next()) {
+			consistent = rs.getBoolean(3);
+			if (!consistent) {
+				allconsistent = false;
+				System.out.println(rs.getString(1) + "." + rs.getString(2) + " is not consistent.");
+			}
+		}
+		rs.close();
+		if (allconsistent)
+			System.out.println("All tables are consistent.");
+		s.close();
+	}
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# caching helps out metadata test (reduced from 5 to 3 minutes)
+derby.language.statementCacheSize=1000
+#derby.drda.traceDirectory=.
+#derby.drda.traceAll=true
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/metadata_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,9 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+substitute=version [0-9][.][0-9]..[0-9][.][0-9][.][0-9][0-9]?.$;version (EXPECTED VERSION),version [0-9][.][0-9]..[0-9].[0-9].[0-9][0-9]? Test Build.$;version (EXPECTED VERSION),getDriverVersion....2.*$;getDriverVersion(): EXPECTED VERSION

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,374 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.jdbcapi
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.ParameterMetaData;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import java.math.BigDecimal;
+
+import org.apache.derby.tools.ij;
+
+/**
+ * Test the new class ParameterMetaData in jdbc 30.
+ * Testing both callable and prepared statements meta data
+ *
+ * @author mamta
+ */
+
+
+public class parameterMetaDataJdbc30 { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+	private static boolean isDerbyNet;
+	public static void main(String[] args) {
+		Connection con = null;
+		Statement  s;
+		CallableStatement  cs;
+		PreparedStatement  ps;
+		ParameterMetaData paramMetaData;
+
+		System.out.println("Test parameterMetaDataJdbc30 starting");
+
+		try
+		{
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			con = ij.startJBMS();
+			con.setAutoCommit(true); // make sure it is true
+			String framework = System.getProperty("framework");
+			if (framework != null && framework.toUpperCase().equals("DERBYNET"))
+			isDerbyNet = true;
+
+			s = con.createStatement();
+
+			/* Create the table and do any other set-up */
+			setUpTest(s);
+
+      s.executeUpdate("create function RDB(P1 INT) RETURNS DECIMAL(10,2) language java external name 'org.apache.derbyTesting.functionTests.tests.lang.outparams.returnsBigDecimal' parameter style java");
+
+      //first testing a callable statement
+      s.executeUpdate("create procedure dummyint(in a integer, in b integer, out c integer, inout d integer) language java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummyint' parameter style java");
+      cs = con.prepareCall("CALL dummyint(?,?,?,?)");
+
+      // parameters 1 and 2 are input only
+      cs.setInt(1,1);
+      cs.setInt(2,1);
+      //parameter 3 is output only
+      cs.registerOutParameter(3,Types.INTEGER);
+      // parameter 4 is input and output
+      Object x = new Integer(1);
+      cs.setObject(4,x, Types.INTEGER);
+      cs.registerOutParameter(4,Types.INTEGER);
+
+      //verify the meta data for the parameters
+      paramMetaData = cs.getParameterMetaData();
+      System.out.println("parameters count for callable statement is " + paramMetaData.getParameterCount());
+      // TODO: Some of the OUT params are getting reported as IN_OUT for embedded.
+      // Network server reports it correctly.
+      dumpParameterMetaData(paramMetaData);
+      cs.execute();
+
+      //bug 4450 - parameter meta data info for the return parameter was giving
+      //null pointer exception. In the past, we didn't need to keep the return
+      //parameter info for callable statement execution and hence we never
+      //generated the meta data for it. To fix the problem, at the parsing time,
+      //I set a flag if the call statement is of ? = form. If so, the first
+      //parameter is a return parameter and save it's meta data rather than
+      //discarding it.
+      System.out.println("Bug 4450 - generate metadata for return parameter");
+      cs = con.prepareCall("? = call RDB(?)");
+      paramMetaData = cs.getParameterMetaData();
+      System.out.println("param count is: "+paramMetaData.getParameterCount());
+      dumpParameterMetaData(paramMetaData);
+
+      //next testing a prepared statement
+      ps = con.prepareStatement("insert into t values(?, ?, ?, ?, ?)");
+      ps.setNull(1, java.sql.Types.CHAR);
+      ps.setInt(2, 1);
+      ps.setNull(3, java.sql.Types.INTEGER);
+      ps.setBigDecimal(4,new BigDecimal("1"));
+      ps.setNull(5, java.sql.Types.DATE);
+
+      paramMetaData = ps.getParameterMetaData();
+      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
+      // JCC seems to report these parameters as MODE_UNKNOWN, where as Derby uses MODE_IN
+      // JCC behaviour with network server matches its behaviour with DB2
+      // getPrecision() returns 0 for CHAR/DATE/BIT types for Derby. JCC shows maxlen
+      dumpParameterMetaData(paramMetaData);
+      ps.execute();
+
+      //bug 4533 - associated parameters should not be included in the parameter meta data list
+      //Following statement systab will generate 4 associated parameters for the 2
+      //user parameters. This results in total 6 parameters for the prepared statement
+      //internally. But we should only show 2 user visible parameters through
+      //getParameterMetaData().
+      System.out.println("Bug 4533 - hide associated parameters");
+	  // this test has been modified to not create a statement and 
+      // so does not actually test bug 4533 anymore.
+      // however, still an interesting test scenario.
+      // orig: s.execute("create statement systab as select * from sys.systables where " +
+      //       " tablename like ? and tableID like ?");
+      //       ps = con.prepareStatement("execute statement systab");
+      ps = con.prepareStatement("select * from sys.systables where tablename like ? and tableId like ?");
+      ps.setString (1, "SYS%");
+      ps.setString (2, "8000001%");
+
+      paramMetaData = ps.getParameterMetaData();
+      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
+      dumpParameterMetaData(paramMetaData);
+      ps.execute();
+
+      // here too, the test no longer tests 4552, but kept as an interesting test scenario 
+      // bug 4552 - no parameters would be returned for execute statement using
+      // System.out.println("Bug 4552 - no parameters would be returned for execute statement using");
+      // orig: ps = con.prepareStatement("execute statement systab using values('SYS%','8000001%')");
+      ps = con.prepareStatement("select * from sys.systables where tablename like 'SYS%' and tableID like '8000001%'");
+
+      paramMetaData = ps.getParameterMetaData();
+      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
+      dumpParameterMetaData(paramMetaData);
+      ps.execute();
+
+      //Bug 4654 - Null Pointer exception while executuing a select with a
+      //where clause parameter of type 'TRUE' or 'FALSE' constants. The existing prior to
+      //exposing parameter metadata didn't need to fill in metadata information for where
+      //clause parameter in the example above.
+      // This no longer makes sense, for we cannot take BOOLEANs anymore.
+      // replace with a simple where 1 = ?. Which would take either 1 for true, or 0 for false 
+      System.out.println("Bug 4654 - fill in where clause parameter type info");
+      ps = con.prepareStatement("select * from t where 1=? for update");
+
+      paramMetaData = ps.getParameterMetaData();
+      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
+      dumpParameterMetaData(paramMetaData);
+      dumpParameterMetaDataNegative(paramMetaData);
+      //ps.setBoolean(1,true);
+      ps.setInt(1,1);
+      ps.execute();
+
+      System.out.println("test: no parameter for the statement and then do getParameterMetaData()");
+      ps = con.prepareStatement("select * from t");
+      paramMetaData = ps.getParameterMetaData();
+      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
+      dumpParameterMetaData(paramMetaData);
+      ps.execute();
+
+      cs.close();
+
+      System.out.println("test: the scale returned should be the one set by registerOutParameter");
+      s.executeUpdate("create procedure dummy_numeric_Proc(out a NUMERIC(30,15), out b NUMERIC(30,15)) language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummy_numeric_Proc'");
+      cs = con.prepareCall("CALL dummy_numeric_Proc(?,?)");
+      cs.registerOutParameter(1, Types.NUMERIC);
+      cs.registerOutParameter(2, Types.NUMERIC,15);
+      cs.execute();
+      dumpParameterMetaData(cs.getParameterMetaData());
+
+      cs.close();
+
+	   System.out.println("Behaviour of meta data and out params after re-compile");
+
+      cs = con.prepareCall("CALL dummyint(?,?,?,?)");
+	  cs.registerOutParameter(3,Types.INTEGER);
+      cs.registerOutParameter(4,Types.INTEGER);
+      cs.setInt(1,1);
+      cs.setInt(2,1);
+	  cs.setInt(4,4);
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.execute();
+      System.out.println("DUMMYINT alias returned " + cs.getInt(4));
+
+      s.executeUpdate("drop procedure dummyint");
+      s.executeUpdate("create procedure dummyint(in a integer, in b integer, out c integer, inout d integer) language java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummyint2' parameter style java");
+      cs.execute();
+      dumpParameterMetaData(cs.getParameterMetaData());
+      cs.setInt(4, 6);
+      // following is incorrect sequence, should execute first, then get 
+      // but leaving it in as an additional negative test. see beetle 5886 
+      System.out.println("DUMMYINT alias returned " + cs.getInt(4));
+      cs.execute();
+      System.out.println("DUMMYINT alias returned " + cs.getInt(4));
+
+      cs.close();
+
+      // temp disable for network server
+      if (!isDerbyNet) {
+      // Java procedure support
+	  System.out.println("ParameterMetaData for Java procedures with INTEGER parameters");
+	  s.execute("CREATE PROCEDURE PMDI(IN pmdI_1 INTEGER, IN pmdI_2 INTEGER, INOUT pmdI_3 INTEGER, OUT pmdI_4 INTEGER) language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummyint'");
+      cs = con.prepareCall("CALL PMDI(?, ?, ?, ?)");
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.close();
+	  s.execute("DROP PROCEDURE PMDI");
+
+	  System.out.println("ParameterMetaData for Java procedures with CHAR parameters");
+	  s.execute("CREATE PROCEDURE PMDC(IN pmdI_1 CHAR(10), IN pmdI_2 VARCHAR(25), INOUT pmdI_3 CHAR(19), OUT pmdI_4 VARCHAR(32)) language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummyString'");
+      cs = con.prepareCall("CALL PMDC(?, ?, ?, ?)");
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.close();
+	  s.execute("DROP PROCEDURE PMDC");
+
+	  System.out.println("ParameterMetaData for Java procedures with DECIMAL parameters");
+	  s.execute("CREATE PROCEDURE PMDD(IN pmdI_1 DECIMAL(5,3), IN pmdI_2 DECIMAL(4,2), INOUT pmdI_3 DECIMAL(9,0), OUT pmdI_4 DECIMAL(10,2)) language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummyDecimal'");
+      cs = con.prepareCall("CALL PMDD(?, ?, ?, ?)");
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.close();
+
+	  System.out.println("ParameterMetaData for Java procedures with some literal parameters");
+      cs = con.prepareCall("CALL PMDD(32.4, ?, ?, ?)");
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.close();
+      cs = con.prepareCall("CALL PMDD(32.4, 47.9, ?, ?)");
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.close();
+      cs = con.prepareCall("CALL PMDD(?, 38.2, ?, ?)");
+	  dumpParameterMetaData(cs.getParameterMetaData());
+	  cs.close();
+	  s.execute("DROP PROCEDURE PMDD");
+      }
+     }
+	 catch (SQLException e) {
+	 dumpSQLExceptions(e);
+	 }
+	 catch (Throwable e) {
+		System.out.println("FAIL -- unexpected exception:");
+		e.printStackTrace(System.out);
+	 }
+	 System.out.println("Test parameterMetaDataJdbc30 finished");
+	}
+
+	static void dumpParameterMetaData(ParameterMetaData paramMetaData) throws SQLException {
+		int numParam = paramMetaData.getParameterCount();
+		for (int i=1; i<=numParam; i++) {
+			try {
+			System.out.println("Parameter number : " + i);
+			System.out.println("parameter isNullable " + parameterIsNullableInStringForm(paramMetaData.isNullable(i)));
+			System.out.println("parameter isSigned " + paramMetaData.isSigned(i));
+			System.out.println("parameter getPrecision " + paramMetaData.getPrecision(i));
+			System.out.println("parameter getScale " + paramMetaData.getScale(i));
+			System.out.println("parameter getParameterType " + paramMetaData.getParameterType(i));
+			System.out.println("parameter getParameterTypeName " + paramMetaData.getParameterTypeName(i));
+			System.out.println("parameter getParameterClassName " + paramMetaData.getParameterClassName(i));
+			System.out.println("parameter getParameterMode " + parameterModeInStringForm(paramMetaData.getParameterMode(i)));
+			} catch (Throwable t) {
+				System.out.println(t.toString());
+				t.printStackTrace(System.out);
+			}
+		}
+	}
+
+	//negative test
+	static void dumpParameterMetaDataNegative(ParameterMetaData paramMetaData) throws SQLException {
+		int numParam = paramMetaData.getParameterCount();
+		try {
+			System.out.println("parameter isNullable " + paramMetaData.isNullable(-1));
+		} catch (SQLException e) {
+			dumpExpectedSQLExceptions(e);
+		}
+		try {
+			System.out.println("parameter isNullable " + paramMetaData.isNullable(0));
+		} catch (SQLException e) {
+			dumpExpectedSQLExceptions(e);
+		}
+		try {
+			System.out.println("parameter isNullable " + paramMetaData.isNullable(numParam+1));
+		} catch (SQLException e) {
+			dumpExpectedSQLExceptions(e);
+		}
+	}
+
+	static private void dumpExpectedSQLExceptions (SQLException se) {
+		System.out.println("PASS -- expected exception");
+		while (se != null)
+		{
+			System.out.println("SQLSTATE("+se.getSQLState()+"): "+ "SQL Exception: " + se.getMessage());
+			se = se.getNextException();
+        }
+    }
+
+	//print the parameter mode in human readable form
+	static String parameterModeInStringForm(int mode){
+		if (mode ==  ParameterMetaData.parameterModeIn)
+				  return("PARAMETER_MODE_IN");
+		else if (mode ==  ParameterMetaData.parameterModeInOut )
+				  return("PARAMETER_MODE_IN_OUT");
+		else if (mode ==  ParameterMetaData.parameterModeOut)
+				  return("PARAMETER_MODE_OUT");
+		else if (mode ==  ParameterMetaData.parameterModeUnknown)
+				  return("PARAMETER_MODE_UNKNOWN");
+		else
+				  return("ERROR: donot recognize this parameter mode");
+  }
+
+	//print the parameter isNullable value in human readable form
+	static String parameterIsNullableInStringForm(int nullabilityValue){
+		if (nullabilityValue ==  ParameterMetaData.parameterNoNulls)
+				  return("PARAMETER_NO_NULLS");
+		else if (nullabilityValue ==  ParameterMetaData.parameterNullable)
+				  return("PARAMETER_NULLABLE");
+		else if (nullabilityValue ==  ParameterMetaData.parameterNullableUnknown)
+				  return("PARAMETER_NULLABLE_UNKNOWN");
+		else
+				  return("ERROR: donot recognize this parameter isNullable() value");
+  }
+
+	//Set up the test by creating the table used by the rest of the test.
+	static void setUpTest(Statement s)
+					throws SQLException {
+		/* Create a table */
+		s.execute("create table t ( "+
+				  /* 1 */ "c char(5), "+
+				  /* 2 */ "iNoNull int not null, "+
+				  /* 3 */ "i int, "+
+				  /* 4 */ "de decimal, "+
+				  /* 5 */ "d date)");
+
+	}
+
+	//A really simple method to test callable statement
+	public static void dummyint (int in_param, int in_param2, int[] in_param3, int[] in_param4)
+    								   throws SQLException {
+
+		in_param4[0] = 11111;
+	}
+	public static void dummyint2 (int in_param, int in_param2, int[] in_param3, int[] in_param4)
+    								   throws SQLException {
+		in_param4[0] = 22222;
+	}
+	
+	public static void dummy_numeric_Proc (BigDecimal[] max_param,BigDecimal[] min_param)
+        							 throws SQLException {
+//	System.out.println("dummy_numeric_Proc -- all output parameters"); taking println out because it won't display in master under drda
+	}
+
+	public static void dummyString (String in_param, String in_param2, String[] in_param3, String[] in_param4) {
+	}
+	public static void dummyDecimal(BigDecimal in_param, BigDecimal in_param2, BigDecimal[] in_param3, BigDecimal[] in_param4) {
+	}
+	
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception");
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se.printStackTrace(System.out);
+			se = se.getNextException();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/parameterMetaDataJdbc30_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4 @@
+usedefaults=true
+excludeJCC=1.2
+runwithjdk13=false
+runwithibm13=false

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,932 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.jdbcapi
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Savepoint;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Test the new class Savepoint in jdbc 30.
+ * Also, test some mix and match of defining savepoints through JDBC and sql
+ * Testing both callable and prepared statements meta data
+ *
+ * @author mamta
+ */
+
+
+public class savepointJdbc30 { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	static private boolean isDerbyNet = false;
+
+	public static void main(String[] args) {
+		Connection con = null, con2 = null;
+		Statement  s;
+		System.out.println("Test savepointJdbc30 starting");
+
+		try
+		{
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			con = ij.startJBMS();
+			String framework = System.getProperty("framework");
+			if (framework != null && framework.toUpperCase().equals("DERBYNET"))
+				isDerbyNet = true;
+
+			con.setAutoCommit(true); // make sure it is true
+			s = con.createStatement();
+			con2 = ij.startJBMS();
+			con2.setAutoCommit(false);
+			/* Create the table and do any other set-up */
+			setUpTest(s);
+
+			//JCC translates the JDBC savepoint calls into equivalent SQL statements.
+			//In addition, (in order to stay DB2 LUW compatible), we do not allow nested savepoints when
+			//coming through SQL statements. Because of this restriction, we can't run most of the
+			//JDBC savepoint tests under DRDA framework. The JDBC tests have nested JDBC savepoint
+			//calls and they fail when run under JCC(because they get translated into nested SQL savepoints).
+			//Hence, splitting the test cases into non-DRDA and more generic tests.
+			System.out.println("Tests common to DRDA and embedded Cloudscape");
+			genericTests(con, con2, s);
+
+			System.out.println("Next try non-DRDA tests");
+			if (!isDerbyNet)
+				nonDRDATests(con, s);
+
+			s.close();
+			con.close();
+			con2.close();
+		}
+		catch (SQLException e) {
+			dumpSQLExceptions(e);
+		}
+		catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception:");
+			e.printStackTrace(System.out);
+		}
+
+		System.out.println("Test savepointJdbc30 finished");
+	}
+
+	//The following tests have nested savepoints through JDBC calls. When coming through JCC,
+	//these nested JDBC savepoint calls are translated into equivalent SQL savepoint statements.
+	//But for DB2 LUW compatibility, we do not allow nested savepoints coming through SQL statments
+	//and hence these tests can't be run under DRDA framework.
+	static void nonDRDATests(Connection con, Statement s)
+					throws SQLException {
+		ResultSet rs1, rs2, rs1WithHold, rs2WithHold;
+		Savepoint savepoint1, savepoint2, savepoint3, savepoint4;
+
+		//Setting autocommit to false will allow savepoints
+		con.setAutoCommit(false); // make sure it is false
+
+		//Test40 - We internally generate a unique name for unnamed savepoints. If a
+		//named savepoint uses the currently used internal savepoint name, we won't
+		//get an exception thrown for it because we prepend external saves with "e."
+		//to avoid name conflicts.
+		System.out.println("Test40 - named savepoint can't conflict with internally generated name for unnamed savepoints");
+		savepoint1 = con.setSavepoint();
+		savepoint2 = con.setSavepoint("i.SAVEPT0");
+		con.rollback();
+
+		//Test41 - Rolling back to a savepoint will release all the savepoints created after that savepoint.
+		System.out.println("Test41a - Rollback to a savepoint, then try to release savepoint created after that savepoint");
+
+		savepoint1 = con.setSavepoint();
+		s.executeUpdate("INSERT INTO T1 VALUES(1,1)");
+
+		savepoint2 = con.setSavepoint("s1");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+
+		savepoint3 = con.setSavepoint("s2");
+		s.executeUpdate("INSERT INTO T1 VALUES(3,1)");
+
+		//Rollback to first named savepoint s1. This will internally release the second named savepoint s2.
+		con.rollback(savepoint2);
+		rs1 = s.executeQuery("select count(*) from t1");
+		rs1.next();
+		if(rs1.getInt(1) != 1) {
+			System.out.println("ERROR: There should have been 1 row in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+
+		//Trying to release second named savepoint s2 should throw exception.
+		try
+		{
+			con.releaseSavepoint(savepoint3);
+			System.out.println("FAIL 41a release of rolled back savepoint");
+		}
+		catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+
+		//Trying to rollback second named savepoint s2 should throw exception.
+		System.out.println("Test41b - Rollback to a savepoint, then try to rollback savepoint created after that savepoint");
+		try
+		{
+			con.rollback(savepoint3);
+			System.out.println("FAIL 41b release of rolled back savepoint");
+		}
+		catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+
+		//Release the unnamed named savepoint.
+		con.rollback(savepoint1);
+		rs1 = s.executeQuery("select count(*) from t1");
+		rs1.next();
+		if(rs1.getInt(1) != 0) {
+			System.out.println("ERROR: There should have been no rows in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+		con.rollback();
+
+		//Test42 - Rollback/commit on a connection will release all the savepoints created for that transaction
+		System.out.println("Test42 - Rollback/commit the transaction, then try to use savepoint from that transaction");
+		savepoint1 = con.setSavepoint();
+		savepoint2 = con.setSavepoint("s1");
+		con.rollback();
+		try {
+			con.rollback(savepoint1);
+			System.out.println("FAIL 42 release of rolled back savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		//Testing commit next
+		savepoint1 = con.setSavepoint();
+		savepoint2 = con.setSavepoint("s1");
+		con.commit();
+		try {
+			con.rollback(savepoint1);
+			System.out.println("FAIL 42 rollback of rolled back savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+
+		//Test43 - After releasing a savepoint, should be able to reuse it.
+		System.out.println("Test43 - Release and reuse a savepoint name");
+		savepoint1 = con.setSavepoint("s1");
+		try {
+			savepoint2 = con.setSavepoint("s1");
+			System.out.println("FAIL 43");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.releaseSavepoint(savepoint1);
+		savepoint2 = con.setSavepoint("s1");
+		con.rollback();
+
+		// Test 45 reuse savepoint name after rollback - should not work
+		System.out.println("Test 45 reuse savepoint name after rollback - should not work");
+		savepoint1 = con.setSavepoint("MyName");
+		con.rollback(savepoint1);
+		try {
+			savepoint2 = con.setSavepoint("MyName");
+			System.out.println("FAIL 45 reuse of savepoint name after rollback should fail");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 46 bug 5145 Cursors declared before and within the savepoint unit will be closed when rolling back the savepoint
+		System.out.println("Test 46 Cursors declared before and within the savepoint unit will be closed when rolling back the savepoint");
+		Statement sWithHold = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT );
+		con.setAutoCommit(false);
+		s.executeUpdate("DELETE FROM T1");
+		s.executeUpdate("INSERT INTO T1 VALUES(19,1)");
+		s.executeUpdate("INSERT INTO T1 VALUES(19,2)");
+		s.executeUpdate("INSERT INTO T1 VALUES(19,3)");
+		rs1 = s.executeQuery("select * from t1");
+		rs1.next();
+		rs1WithHold = sWithHold.executeQuery("select * from t1");
+		rs1WithHold.next();
+		savepoint1 = con.setSavepoint();
+		rs2 = s.executeQuery("select * from t1");
+		rs2.next();
+		rs2WithHold = sWithHold.executeQuery("select * from t1");
+		rs2WithHold.next();
+		con.rollback(savepoint1);
+		try {//resultset declared outside the savepoint unit should be closed at this point after the rollback to savepoint
+			rs1.next();
+			System.out.println("FAIL 46 shouldn't be able to use a resultset (declared before the savepoint unit) after the rollback to savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {//holdable resultset declared outside the savepoint unit should be closed at this point after the rollback to savepoint
+			rs1WithHold.next();
+			System.out.println("FAIL 46 shouldn't be able to use a holdable resultset (declared before the savepoint unit) after the rollback to savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {//resultset declared within the savepoint unit should be closed at this point after the rollback to savepoint
+			rs2.next();
+			System.out.println("FAIL 46 shouldn't be able to use a resultset (declared within the savepoint unit) after the rollback to savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {//holdable resultset declared within the savepoint unit should be closed at this point after the rollback to savepoint
+			rs2WithHold.next();
+			System.out.println("FAIL 46 shouldn't be able to use a holdable resultset (declared within the savepoint unit) after the rollback to savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 47 multiple tests for getSavepointId()
+		System.out.println("Test 47 multiple tests for getSavepointId()");
+		savepoint1 = con.setSavepoint();
+		savepoint2 = con.setSavepoint();
+		System.out.println(savepoint1.getSavepointId());
+		System.out.println(savepoint2.getSavepointId());
+		con.releaseSavepoint(savepoint2);
+		savepoint2 = con.setSavepoint();
+		System.out.println(savepoint2.getSavepointId());
+		con.commit();
+		savepoint2 = con.setSavepoint();
+		System.out.println(savepoint2.getSavepointId());
+		con.rollback();
+		savepoint2 = con.setSavepoint();
+		System.out.println(savepoint2.getSavepointId());
+		con.rollback();
+
+		// Test 48
+		System.out.println("Test 48 No nested SQL savepoints allowed.");
+		System.out.println("This is to match DB2 LUW behavior");
+		savepoint1 = con.setSavepoint();
+		savepoint2 = con.setSavepoint();
+		System.out.println("Following SQL savepoint will fail because we are trying to nest it inside JDBC savepoint");
+		try {
+			s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 48 shouldn't be able set SQL savepoint nested inside JDBC/SQL savepoints");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		//rollback JDBC savepoint but still can't have SQL savepoint because there is still one JDBC savepoint
+		con.releaseSavepoint(savepoint2);
+		try {
+			s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 48 Should have gotten exception for nested SQL savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.releaseSavepoint(savepoint1); //rollback last JDBC savepoint and now try SQL savepoint again
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		con.rollback();
+	}
+
+	//These tests do not allow savepoint nesting and hence can be run under DRDA too
+	static void genericTests(Connection con, Connection con2, Statement s)
+					throws SQLException {
+
+		ResultSet rs1, rs2, rs1WithHold, rs2WithHold;
+		Savepoint savepoint1, savepoint2, savepoint3, savepoint4;
+
+		//Test1 and Test1a fail under DRDA (bug 5384).
+		//Test1 - No savepoint allowed when auto commit is true
+		con.setAutoCommit(true); // make sure it is true
+		try
+		{
+			System.out.println("Test1 - no unnamed savepoints allowed if autocommit is true");
+			con.setSavepoint(); // will throw exception because auto commit is true
+			System.out.println("FAIL 1 - auto commit on");
+		}
+		catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		//Test1a - No savepoint allowed when auto commit is true
+		try {
+			System.out.println("Test1a - no named savepoints allowed if autocommit is true");
+			con.setSavepoint("notallowed"); // will throw exception because auto commit is true
+			System.out.println("FAIL 1a - auto commit on");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+
+		con.setAutoCommit(false); // make sure it is false
+
+		//Test2 - After releasing a savepoint, should be able to reuse it.
+		System.out.println("Test2 - Release and reuse a savepoint name");
+		savepoint1 = con.setSavepoint("s1");
+		con.releaseSavepoint(savepoint1);
+		savepoint2 = con.setSavepoint("s1");
+		con.rollback();
+
+		//Test3 - Named savepoints can't pass null for name
+		try {
+			System.out.println("Test3 - null name not allowed for named savepoints");
+			con.setSavepoint(null);
+			System.out.println("FAIL 3 null savepoint ");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		//Test4 - Verify names/ids of named/unnamed savepoints
+		//named savepoints don't have an id.
+		//unnamed savepoints don't have a name (internally, all our savepoints have names,
+		//but for unnamed savepoint, that is not exposed thro jdbc api)
+		System.out.println("Test4 - Verify names/ids of named/unnamed savepoints");
+		try {
+			savepoint1 = con.setSavepoint();
+			savepoint1.getSavepointId();
+			//following should throw exception for un-named savepoint
+			savepoint1.getSavepointName();
+			System.out.println("FAIL 4 getSavepointName on id savepoint ");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+		try {
+			savepoint1 = con.setSavepoint("s1");
+			savepoint1.getSavepointName();
+			//following should throw exception for named savepoint
+			savepoint1.getSavepointId();
+			System.out.println("FAIL 4 getSavepointId on named savepoint ");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// TEST 5a and 5b for bug 4465
+		// test 5a - create two savepoints in two different transactions
+		// and release the first one in the subsequent transaction
+		System.out.println("Test5a - create two savepoints in two different transactions" +
+			" and release the first one in the subsequent transaction");
+		savepoint1 = con.setSavepoint("s1");
+		con.commit();
+		//The following savepoint was earlier named s1. Changed it to s2 while working on DRDA support
+		//for savepoints. The reason for that is as follows
+		//JCC translates all savepoint jdbc calls to equivalent sql and hence if the 2 savepoints in
+		//different connections are named the same, then the release savepoint below will get converted to
+		//RELEASE TO SAVEPOINT s1 and that succeeds because the 2nd connection does have a savepoint named s1.
+		//Hence we don't really check what we intended to check which is trying to release a savepoint created
+		//in a different transaction
+		savepoint2 = con.setSavepoint("s2");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		try	{
+			con.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 5a - release savepoint from a different transaction did not raise error");
+		}	catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+
+		// test 5b - create two savepoints in two different transactions
+		// and rollback the first one in the subsequent transaction
+		System.out.println("Test5b - create two savepoints in two different transactions" +
+			" and rollback the first one in the subsequent transaction");
+		savepoint1 = con.setSavepoint("s1");
+		con.commit();
+		//The following savepoint was earlier named s1. Changed it to s2 while working on DRDA support
+		//for savepoints. The reason for that is as follows
+		//JCC translates all savepoint jdbc calls to equivalent sql and hence if the 2 savepoints in
+		//different connections are named the same, then the rollback savepoint below will get converted to
+		//ROLLBACK TO SAVEPOINT s1 and that succeeds because the 2nd connection does have a savepoint named s1.
+		//Hence we don't really check what we intended to check which is trying to rollback a savepoint created
+		//in a different transaction
+		savepoint2 = con.setSavepoint("s2");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		try {
+			con.rollback(savepoint1);
+			System.out.println("FAIL 5b - rollback savepoint from a different transaction did not raise error");
+		}	catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+
+		// test 6a - create a savepoint release it and then create another with the same name.
+		// and release the first one
+		System.out.println("Test6a - create a savepoint, release it, create another with" +
+			" same name and release the first one");
+		savepoint1 = con.setSavepoint("s1");
+		con.releaseSavepoint(savepoint1);
+		//The following savepoint was earlier named s1. Changed it to s2 while working on DRDA support
+		//for savepoints. The reason for that is as follows
+		//JCC translates all savepoint jdbc calls to equivalent sql and hence if the 2 savepoints in
+		//a transaction are named the same, then the release savepoint below will get converted to
+		//RELEASE TO SAVEPOINT s1 and that succeeds because there is a valid savepoint named s1.
+		savepoint2 = con.setSavepoint("s2");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		try {
+			con.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 6a - releasing a released savepoint did not raise error");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+
+		// test 6b - create a savepoints release it and then create another with the same name.
+		// and rollback the first one
+		System.out.println("Test6b - create a savepoint, release it, create another with" +
+			" same name and rollback the first one");
+		savepoint1 = con.setSavepoint("s1");
+		con.releaseSavepoint(savepoint1);
+		//The following savepoint was earlier named s1. Changed it to s2 while working on DRDA support
+		//for savepoints. The reason for that is as follows
+		//JCC translates all savepoint jdbc calls to equivalent sql and hence if the 2 savepoints in
+		//a transaction are named the same, then the rollback savepoint below will get converted to
+		//ROLLBACK TO SAVEPOINT s1 and that succeeds because there is a valid savepoint named s1.
+		savepoint2 = con.setSavepoint("s2");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		try {
+			con.rollback(savepoint1);
+			System.out.println("FAIL 6b - rollback a released savepoint did not raise error");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+
+/* TEST case just for bug 4467
+			// Test 10 - create a named savepoint with the a generated name 
+			savepoint1 = con2.setSavepoint("SAVEPT0");
+
+			// what exactly is the correct behaviour here?
+			try {
+				savepoint2 = con2.setSavepoint();
+			} 
+			catch (SQLException se) {
+				System.out.println("Expected Exception is " + se.getMessage());
+			}
+			con2.commit();
+*/
+
+		System.out.println("Test6c - Try to use a savepoint from another connection for release");
+		savepoint1 = con.setSavepoint("s1");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		try {
+			con2.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 6c - releasing another transaction's savepoint did not raise error");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+		con2.commit();
+
+		/* BUG 4468 - should not be able to pass a savepoint from a different transaction for release/rollback */
+		// Test 7a - swap savepoints across connections
+		System.out.println("Test7a - swap savepoints across connections with release");
+		savepoint1 = con2.setSavepoint("s1");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		savepoint2 = con.setSavepoint("s1");
+		try {
+			con.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 7a - releasing a another transaction's savepoint did not raise error");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+		con2.commit();
+
+		// Test 7b - swap savepoints across connections
+		System.out.println("Test7b - swap savepoints across connections with rollback");
+		savepoint1 = con2.setSavepoint("s1");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		savepoint2 = con.setSavepoint("s1");
+		try {
+			con.rollback(savepoint1);
+			System.out.println("FAIL 7b - rolling back a another transaction's savepoint did not raise error");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.commit();
+		con2.commit();
+
+		/*  
+		 *  following section attempts to call statement in a method to do a negative test
+		 *  because savepoints are not supported in a trigger
+		 *  however, this cannot be done because a call is not supported in a trigger.
+		 *  leaving the test here for later reference for when we support the SQL version
+                 *
+		// bug 4507 - Test 8 test all 4 savepoint commands inside the trigger code
+		System.out.println("Test 8a set savepoint(unnamed) command inside the trigger code");
+		s.executeUpdate("create trigger trig1 before insert on t1 for each statement call org.apache.derbyTesting.functionTests.tests.jdbcapi.savepointJdbc30::doConnectionSetSavepointUnnamed()");
+		try {
+	
+			s.executeUpdate("insert into t1 values(1,1)");
+			System.out.println("FAIL 8a set savepoint(unnamed) command inside the trigger code");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		s.executeUpdate("drop trigger trig1");
+
+		System.out.println("Test 8b set savepoint(named) command inside the trigger code");
+		s.executeUpdate("create trigger trig2 before insert on t1 for each statement call org.apache.derbyTesting.functionTests.tests.jdbcapi.savepointJdbc30::doConnectionSetSavepointNamed()");
+		try {
+			s.executeUpdate("insert into t1 values(1,1)");
+			System.out.println("FAIL 8b set savepoint(named) command inside the trigger code");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		s.executeUpdate("drop trigger trig2");
+
+		System.out.println("Test 8c release savepoint command inside the trigger code");
+		s.executeUpdate("create trigger trig3 before insert on t1 for each statement call org.apache.derbyTesting.functionTests.tests.jdbcapi.savepointJdbc30::doConnectionReleaseSavepoint()");
+		try {
+			s.executeUpdate("insert into t1 values(1,1)");
+			System.out.println("FAIL 8c release savepoint command inside the trigger code");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		s.executeUpdate("drop trigger trig3");
+
+		System.out.println("Test 8d rollback savepoint command inside the trigger code");
+		s.executeUpdate("create trigger trig4 before insert on t1 for each statement call org.apache.derbyTesting.functionTests.tests.jdbcapi.savepointJdbc30::doConnectionRollbackSavepoint()");
+		try {
+			s.executeUpdate("insert into t1 values(1,1)");
+			System.out.println("FAIL 8d rollback savepoint command inside the trigger code");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		s.executeUpdate("drop trigger trig4");
+		con.rollback();
+		*/ //end commented out test 8
+
+		// Test 9 test savepoint name and verify case sensitivity
+		System.out.println("Test 9 test savepoint name");
+		savepoint1 = con.setSavepoint("myname");
+		String savepointName = savepoint1.getSavepointName();
+		if (!savepointName.equals("myname"))
+			System.out.println("fail - savepoint name mismatch");
+		con.rollback();
+
+		// Test 10 test savepoint name case sensitivity
+		System.out.println("Test 10 test savepoint name case sensitivity");
+		savepoint1 = con.setSavepoint("MyName");
+		savepointName = savepoint1.getSavepointName();
+		if (!savepointName.equals("MyName"))
+			System.out.println("fail - savepoint name mismatch");
+		con.rollback();
+
+		// Test 11 rolling back a savepoint multiple times - should work
+		System.out.println("Test 11 rolling back a savepoint multiple times - should work");
+		savepoint1 = con.setSavepoint("MyName");
+		con.rollback(savepoint1);
+		try {
+			con.rollback(savepoint1);
+		} catch (SQLException se) {
+			System.out.println("FAIL 11 second rollback failed");
+			System.out.println("Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 12 releasing a savepoint multiple times - should not work
+		System.out.println("Test 12 releasing a savepoint multiple times - should not work");
+		savepoint1 = con.setSavepoint("MyName");
+		con.releaseSavepoint(savepoint1);
+		try {
+			con.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 12 releasing a savepoint multiple times should fail");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 13 shouldn't be able to use a savepoint from earlier transaction after setting autocommit on and off
+		System.out.println("Test 13 shouldn't be able to use a savepoint from earlier transaction after setting autocommit on and off");
+		savepoint1 = con.setSavepoint("MyName");
+		con.setAutoCommit(true);
+		con.setAutoCommit(false);
+		savepoint2 = con.setSavepoint("MyName1");
+		try {//shouldn't be able to use savepoint from earlier tranasaction after setting autocommit on and off
+			con.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 13 shouldn't be able to use a savepoint from earlier transaction after setting autocommit on and off");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.releaseSavepoint(savepoint2);
+		con.rollback();
+
+		// Test 14 cause a transaction rollback and that should release the internal savepoint array
+		System.out.println("Test 14 A non-user initiated transaction rollback should release the internal savepoint array");
+		Statement s1, s2;
+		s1 = con.createStatement();
+		s1.executeUpdate("insert into t1 values(1,1)");
+		s1.executeUpdate("insert into t1 values(2,0)");
+		con.commit();
+		s1.executeUpdate("update t1 set c11=c11+1 where c12 > 0");
+		s2 = con2.createStatement();
+		savepoint1 = con2.setSavepoint("MyName");
+		try {//following will get lock timeout which will rollback transaction on c2
+			s2.executeUpdate("update t1 set c11=c11+1 where c12 < 1");
+			System.out.println("FAIL 14 should have gotten lock time out");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {//the transaction rollback above should have removed the savepoint MyName
+			con2.releaseSavepoint(savepoint1);
+			System.out.println("FAIL 14 A non-user initiated transaction rollback should release the internal savepoint array");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+		con2.rollback();
+		s.execute("delete from t1");
+		con.commit();
+
+		// Test 15 check savepoints in batch
+		System.out.println("Test 15 check savepoints in batch");
+		s.execute("delete from t1");
+		s.addBatch("insert into t1 values(1,1)");
+		s.addBatch("insert into t1 values(1,1)");
+		savepoint1 = con.setSavepoint();
+		s.addBatch("insert into t1 values(1,1)");
+		s.executeBatch();
+		con.rollback(savepoint1);
+		int val = count(con,s);
+		if (val != 0)
+			System.out.println("FAIL 15 savepoint should have been set before batch");
+		con.rollback();
+
+		// Test 16 grammar check for savepoint sq1
+		System.out.println("Test 16 grammar check for savepoint sq1");
+		try {
+			s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS");
+			System.out.println("FAIL 16 Should have gotten exception for missing ON ROLLBACK RETAIN CURSORS");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {
+			s.executeUpdate("SAVEPOINT s1 UNIQUE ON ROLLBACK RETAIN CURSORS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 16 Should have gotten exception for multiple ON ROLLBACK RETAIN CURSORS");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {
+			s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN LOCKS");
+			System.out.println("FAIL 16 Should have gotten exception for multiple ON ROLLBACK RETAIN LOCKS");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		try {
+			s.executeUpdate("SAVEPOINT s1 UNIQUE UNIQUE ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 16 Should have gotten exception for multiple UNIQUE keywords");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN CURSORS ON ROLLBACK RETAIN LOCKS");
+		s.executeUpdate("RELEASE TO SAVEPOINT s1");
+		con.rollback();
+
+		// Test 17
+		System.out.println("Test 17 No nested savepoints allowed when using SQL to set savepoints. This is to match DB2 LUW behavior");
+		System.out.println("Test 17a Test with UNIQUE clause.");
+		s.executeUpdate("SAVEPOINT s1 UNIQUE ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		try {
+			s.executeUpdate("SAVEPOINT s2 UNIQUE ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 17a Should have gotten exception for nested savepoints");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		s.executeUpdate("RELEASE TO SAVEPOINT s1");
+		s.executeUpdate("SAVEPOINT s2 UNIQUE ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		con.rollback();
+
+		System.out.println("Test 17b Test without UNIQUE clause.");
+		System.out.println("Since no nesting is allowed, skipping UNIQUE still gives error for trying to define another savepoint");
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		try {
+			s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 17b Should have gotten exception for nested savepoints");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 18
+		System.out.println("Test 18 No nested SQL savepoints allowed inside JDBC savepoint.");
+		System.out.println("This is to match DB2 LUW behavior");
+		savepoint1 = con.setSavepoint();
+		System.out.println("Following SQL savepoint will fail because we are trying to nest it inside JDBC savepoint");
+		try {
+			s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 18 shouldn't be able set SQL savepoint nested inside JDBC savepoints");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		//rollback the JDBC savepoint. Now since there are no user defined savepoints, we can define SQL savepoint
+		con.releaseSavepoint(savepoint1);
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		con.rollback();
+
+		// Test 19
+		System.out.println("Test 19 No nested SQL savepoints allowed inside SQL savepoint.");
+		System.out.println("This is to match DB2 LUW behavior");
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		System.out.println("Following SQL savepoint will fail because we are trying to nest it inside SQL savepoint");
+		try {
+			s.executeUpdate("SAVEPOINT s2 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 19 shouldn't be able set SQL savepoint nested inside SQL savepoint");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		//rollback the SQL savepoint. Now since there are no user defined savepoints, we can define SQL savepoint
+		s.executeUpdate("RELEASE TO SAVEPOINT s1");
+		s.executeUpdate("SAVEPOINT s2 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		con.rollback();
+
+		// Test 20
+		System.out.println("Test 20 Rollback of SQL savepoint works same as rollback of JDBC savepoint.");
+		s.executeUpdate("DELETE FROM T1");
+		con.commit();
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		s.executeUpdate("INSERT INTO T1 VALUES(1,1)");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		s.executeUpdate("INSERT INTO T1 VALUES(3,1)");
+		//Rollback to SQL savepoint and should see changes rolledback
+		s.executeUpdate("ROLLBACK TO SAVEPOINT s1");
+		rs1 = s.executeQuery("select count(*) from t1");
+		rs1.next();
+		if(rs1.getInt(1) != 0) {
+			System.out.println("ERROR: There should have been 0 rows in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+		con.rollback();
+
+		// Test 21
+		System.out.println("Test 21 After releasing the SQL savepoint, rollback the transaction and should see everything undone.");
+		s.executeUpdate("SAVEPOINT s1 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		s.executeUpdate("INSERT INTO T1 VALUES(1,1)");
+		s.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+		s.executeUpdate("INSERT INTO T1 VALUES(3,1)");
+		//Release the SQL savepoint and then rollback the transaction and should see changes rolledback
+		s.executeUpdate("RELEASE TO SAVEPOINT s1");
+		con.rollback();
+		rs1 = s.executeQuery("select count(*) from t1");
+		rs1.next();
+		if(rs1.getInt(1) != 0) {
+			System.out.println("ERROR: There should have been 0 rows in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+		con.rollback();
+
+		// Test 22
+		System.out.println("Test 22 Should not be able to create a SQL savepoint starting with name SYS");
+		try {
+			s.executeUpdate("SAVEPOINT SYSs2 ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+			System.out.println("FAIL 22 shouldn't be able to create a SQL savepoint starting with name SYS");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 23 - bug 5817 - make savepoint and release non-reserved keywords
+		System.out.println("Test 23 Should be able to use non-reserved keywords savepoint and release as identifiers");
+		System.out.println("Create table with savepoint and release as identifiers");
+		s.execute("create table savepoint (savepoint int, release int)");
+		rs1 = s.executeQuery("select count(*) from savepoint");
+		rs1.next();
+		if(rs1.getInt(1) != 0) {
+			System.out.println("ERROR: There should have been 0 rows in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+		System.out.println("Create a savepoint with name savepoint");
+		s.execute("SAVEPOINT savepoint ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		s.executeUpdate("INSERT INTO savepoint VALUES(1,1)");
+		System.out.println("Release the savepoint with name savepoint");
+		s.execute("RELEASE SAVEPOINT savepoint");
+		rs1 = s.executeQuery("select count(*) from savepoint");
+		rs1.next();
+		if(rs1.getInt(1) != 1) {
+			System.out.println("ERROR: There should have been 1 rows in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+		System.out.println("Create a savepoint with name release");
+		s.execute("SAVEPOINT release ON ROLLBACK RETAIN LOCKS ON ROLLBACK RETAIN CURSORS");
+		s.executeUpdate("INSERT INTO savepoint VALUES(2,1)");
+		System.out.println("Rollback to the savepoint with name release");
+		s.execute("ROLLBACK TO SAVEPOINT release");
+		rs1 = s.executeQuery("select count(*) from savepoint");
+		rs1.next();
+		if(rs1.getInt(1) != 1) {
+			System.out.println("ERROR: There should have been 1 rows in the table, but found " + rs1.getInt(1) + " rows");
+			return;
+		}
+		System.out.println("Release the savepoint with name release");
+		s.execute("RELEASE SAVEPOINT release");
+		con.rollback();
+
+		// Test 24
+		System.out.println("Test 24 Savepoint name can't exceed 128 characters");
+		try {
+			savepoint1 = con.setSavepoint("MyName1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
+			System.out.println("FAIL 24 shouldn't be able to create a SQL savepoint with name exceeding 128 characters");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		// Test 25
+		System.out.println("Test 25 Should not be able to create a SQL savepoint starting with name SYS through jdbc");
+		try {
+			savepoint1 = con.setSavepoint("SYSs2");
+			System.out.println("FAIL 25 shouldn't be able to create a SQL savepoint starting with name SYS through jdbc");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		con.rollback();
+
+		s1.close();
+		s2.close();
+
+		// bug 4451 - Test 26a pass Null value to rollback
+		// bug 5374 - Passing a null savepoint to rollback or release method
+		// used to give a npe in JCC
+		// it should give a SQLException aying "Cannot rollback to a null savepoint" 
+		System.out.println("Test 26a rollback of null savepoint");
+		try {
+			con.rollback((Savepoint) null);
+			System.out.println("FAIL 26a rollback of null savepoint did not raise error ");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+		// Test 26b pass Null value to releaseSavepoint
+		System.out.println("Test 26b release  of null savepoint");
+		try {
+			con.releaseSavepoint((Savepoint) null);
+			System.out.println("FAIL 26b release of null savepoint did not raise error ");
+		} catch (SQLException se) {
+			System.out.println("Expected Exception is " + se.getMessage());
+		}
+	}
+
+	//Set up the test by creating the table used by the rest of the test.
+	static void setUpTest(Statement s)
+					throws SQLException {
+		/* Create a table */
+		s.execute("create table t1 (c11 int, c12 smallint)");
+		s.execute("create table t2 (c11 int)");
+
+	}
+
+	static private int count(Connection con, Statement s) throws SQLException {
+		int count = 0;
+		ResultSet rs = s.executeQuery("select count(*) from t1");
+		rs.next();
+		count = rs.getInt(1);
+		rs.close();
+		return count;
+	}
+  
+	public static void doConnectionSetSavepointUnnamed() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		Savepoint s1 = conn.setSavepoint();
+		Statement s = conn.createStatement();
+		s.executeUpdate("insert into t2 values(1)");
+		conn.rollback(s1);
+	}
+
+	public static void doConnectionSetSavepointNamed() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		Savepoint s1 = conn.setSavepoint("s1");
+		Statement s = conn.createStatement();
+		s.executeUpdate("insert into t2 values(1)");
+		conn.rollback(s1);
+	}
+
+	public static void doConnectionRollbackSavepoint() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		conn.rollback((Savepoint) null);
+		Statement s = conn.createStatement();
+		s.executeUpdate("insert into t2 values(1)");
+	}
+
+	public static void doConnectionReleaseSavepoint() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		conn.releaseSavepoint((Savepoint) null);
+		Statement s = conn.createStatement();
+		s.executeUpdate("insert into t2 values(1)");
+	}
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception");
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se.printStackTrace(System.out);
+			se = se.getNextException();
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+database=jdbc:derby:wombat;create=true
+derby.optimizer.noTimeout=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+
+runwithj9=false
+runwithjdk13=false
+runwithibm13=false

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/savepointJdbc30_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+#there is a lock time out test case, setting waittimeout to lower value for that
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AIjdbc.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AIjdbc.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,165 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+	Test execution of JDBC method, isAutoincrement.
+
+	@author manish
+ */
+public class AIjdbc
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	public static void main(String[] args) {
+		System.out.println("Test AIjdbc starting");
+		boolean passed = true;
+
+		try 
+		{
+			Connection conn;
+
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+			
+			// create the table first.
+			passed = createTable(conn) && passed;
+
+			// do a select from a base table.
+			passed = testSelect(conn) && passed;
+
+			// do a select from a view.
+			passed = testSelectView(conn) && passed;
+		} 
+		catch (Throwable e) 
+		{
+			passed = false;
+			System.out.println("FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, e);
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		else 
+			System.out.println("FAIL");
+		
+		System.out.println("Test AIjdbc finished");
+	}
+	
+	private static boolean createTable(Connection conn) throws SQLException
+	{
+		Statement s;
+		boolean passed = true;
+
+		System.out.println("Test AIjdbc:creating objects");
+
+		try
+		{
+			s = conn.createStatement();
+			s.execute("create table tab1 (x int, y int generated always as identity,z char(2))");
+			s.execute("create view tab1_view (a,b) as select y,y+1 from tab1");
+		}
+		catch (SQLException se)
+		{
+			passed = false;
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		
+		return passed;
+	}
+
+	private static boolean testSelect(Connection conn)
+	{
+		Statement s;
+		boolean passed = true;
+
+		System.out.println("Test AIjdbc:select from base table");
+
+		try 
+		{
+			s = conn.createStatement();
+			ResultSet rs = s.executeQuery("select x,z from tab1");
+			ResultSetMetaData rsmd = rs.getMetaData();
+			
+			if (rsmd.getColumnCount() != 2)
+				throw new SQLException("column count doesn't match");
+			if (rsmd.isAutoIncrement(1))
+				throw new SQLException("column 1 is NOT ai!");
+			if (rsmd.isAutoIncrement(2))
+				throw new SQLException("column 2 is NOT ai!");
+			rs.close();
+
+			rs = s.executeQuery("select y, x,z from tab1");
+			rsmd = rs.getMetaData();
+			if (rsmd.getColumnCount() != 3)
+				throw new SQLException("column count doesn't match");
+			if (!rsmd.isAutoIncrement(1))
+				throw new SQLException("column 1 IS ai!");
+			if (rsmd.isAutoIncrement(2))
+				throw new SQLException("column 2 is NOT ai!");
+			if (rsmd.isAutoIncrement(3))
+				throw new SQLException("column 2 is NOT ai!");
+			rs.close();
+		}
+		catch (SQLException se)
+		{
+			passed = false;
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+
+		}
+		return passed;
+	}
+
+	private static boolean testSelectView(Connection conn)
+	{
+		boolean passed = true;
+		System.out.println("Test AIjdbc:select from view");
+
+		try 
+		{
+			Statement s;
+			s = conn.createStatement();
+			ResultSet rs = s.executeQuery("select * from tab1_view");
+			ResultSetMetaData rsmd = rs.getMetaData();
+			
+			if (rsmd.getColumnCount() != 2)
+				throw new SQLException("column count doesn't match");
+			if (!rsmd.isAutoIncrement(1))
+				throw new SQLException("column 1 IS ai!");
+			if (rsmd.isAutoIncrement(2))
+				throw new SQLException("column 1 is NOT ai!");
+		}
+		catch (SQLException sqle)
+		{
+			passed = false;
+			JDBCDisplayUtil.ShowSQLException(System.out,sqle);
+		}
+		return passed;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/CharUTF8.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,151 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSetMetaData;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+import java.io.*;
+import java.sql.PreparedStatement;
+
+/**
+ * Test all characters written through the UTF8 format.
+ */
+
+public class CharUTF8 { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	public static PreparedStatement psSet;
+	public static PreparedStatement psGet;    
+
+    public static void main(String[] args) {
+
+		System.out.println("Test CharUTF8 starting");
+
+		StringBuffer buff = new StringBuffer();
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			Connection conn = ij.startJBMS();
+
+			Statement st2 = conn.createStatement();
+			st2.execute("CREATE TABLE TEST(id int not null primary key, body varchar(60))");
+			psSet = conn.prepareStatement("insert into test values(?,?)");
+			psGet = conn.prepareStatement("select body from test where id=?");  
+			
+			int off = 0;
+			for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; i++) {
+
+				buff.append((char) i);
+
+				if ((buff.length() == 60) || (i == Character.MAX_VALUE)) {
+
+					String text = buff.toString();
+					System.out.println("Testing with last char value " + i + " length=" + text.length());
+
+					// set the text
+					setBody(i, text);
+    
+				// now read the text
+					String res = getBody(i);
+					if (!res.equals(text)) {
+						System.out.println("FAIL -- string fetched is incorrect, length is "
+							+ buff.length() + ", expecting string: " + text
+							+ ", instead got the following: " + res);
+						break;
+					}
+
+					buff.setLength(0);
+				}
+			}
+
+			// quick test of an empty string aswell
+			setBody(-1, "");
+			if (!getBody(-1).equals("")) {
+				System.out.println("FAIL: empty string returned as " + getBody(-1));
+			}
+
+
+			conn.close();
+
+		} catch (SQLException e) {
+			dumpSQLExceptions(e);
+		} catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception:" + e.toString());
+		}
+
+		System.out.println("Test CharUTF8 finished");
+
+    }
+
+	private static void setBody(int key, String body) {
+        
+		try {
+			psSet.setInt(1, key);
+			psSet.setString(2, body);
+			psSet.executeUpdate();
+
+		} catch (SQLException ex) {
+			ex.printStackTrace();
+
+			System.out.println("FAIL -- unexpected exception");
+			System.exit(-1);
+		}        
+	}
+        
+    private static String getBody(int key) {
+        
+        String result="NO RESULT";
+        
+        try {
+			psGet.setInt(1, key);
+			ResultSet rs = psGet.executeQuery();
+
+			if (rs.next())
+				result = rs.getString(1);    
+
+		} catch (SQLException ex) {
+              ex.printStackTrace();
+        }        
+        
+        return result;
+    }
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception: " + se.toString());
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se = se.getNextException();
+		}
+	}
+
+	/**
+		Utility method for dynamicLikeOptimization test. Return a single character
+		string with the highest defined Unicode character. See java.lang.Character.isDefined.
+	*/
+	public static String getMaxDefinedCharAsString() {
+
+		return "\uFA2D";
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DB2IsolationLevels.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DB2IsolationLevels.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,94 @@
+-- single user test for the various isolation levels
+-- also notice in the runtimestatistics output that Fetch Size is 16 for various isolation levels ie we are doing bulk fetch for all isolation levels
+-- this will test the fix for bug 5953 - which is to enable bulk fetching for RR and serializable isolation levels as well.
+prepare getIsolation as 'values current isolation';
+
+autocommit off;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+-- create a table
+create table t1(c1 int not null constraint asdf primary key);
+commit;
+
+-- insert a row
+insert into t1 values 1;
+-- verify table scan gets row lock at read committed
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- verify SET ISOLATION commits and changes isolation level
+set isolation RR;
+execute getIsolation;
+
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation reset;
+execute getIsolation;
+-- verify SET ISOLATION commits and changes isolation level
+set isolation read committed;
+execute getIsolation;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set current isolation = reset;
+execute getIsolation;
+
+-- verify SET ISOLATION commits and changes isolation level
+set current isolation = RS;
+execute getIsolation;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation to reset;
+execute getIsolation;
+
+-- verify SET ISOLATION commits and changes isolation level
+set isolation = dirty read;
+execute getIsolation;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- test WITH ISOLATION clause
+set isolation serializable;
+execute getIsolation;
+select * from t1 with CS;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation cursor stability;
+execute getIsolation;
+select * from t1 with RR;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation serializable;
+execute getIsolation;
+select * from t1 with RS;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set current isolation to read committed;
+execute getIsolation;
+select * from t1 with ur;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- unknown isolation level
+select * from t1 with rw;
+select * from t1 with DIRTY READ;
+select * from t1 with READ UNCOMMITTED;
+select * from t1 with READ COMMITTED;
+select * from t1 with CURSOR STABILITY;
+select * from t1 with REPEATABLE READ;
+select * from t1 with SERIALIZABLE;
+
+-- check the db2 isolation levels can be used as identifiers
+create table db2iso(cs int, rr int, ur int, rs int);
+select cs, rr, ur, rs from db2iso;
+-- cleanup
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOB.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOB.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,524 @@
+-- This test lang/LOB.sql still includes tests for 
+-- DB2 UDB incompatible datatype NCLOB.
+-- Still waiting for DB2 UDB compatible functionality for NCLOB to be implemented
+
+-- Also note that in DB2 UDB, to create BLOB and CLOB strings greater than 1 gigabyte,
+-- the NOT LOGGED option must be specified (SQLSTATE 42993).
+
+
+-- test that BLOB/CLOB are not reserved words
+create table blob(a int);
+insert into blob values(3);
+select blob.a from blob;
+
+create table clob(a int);
+insert into clob values(3);
+select clob.a from clob;
+
+create table nclob(a int);
+insert into nclob values(3);
+select nclob.a from nclob;
+
+create table a(blob int, clob int, nclob int);
+insert into a values(1,2,3);
+insert into a(blob, clob, nclob) values(1,2,3);
+select a.blob, a.clob, a.nclob from a;
+select a.blob, a.clob, a.nclob from a where a.blob = 1;
+select a.blob, a.clob, a.nclob from a where a.clob = 2;
+select a.blob, a.clob, a.nclob from a where a.nclob = 3;
+select a.blob, a.clob, a.nclob from a where a.blob = 1 and a.clob = 2 and a.nclob = 3;
+
+create table b(blob blob(3K), clob clob(2M));
+insert into b values(cast(X'0031' as blob(3K)),cast('2' as clob(2M)));
+insert into b(blob, clob, nclob) values(cast(X'0031' as blob(3K)),cast('2' as clob(2M)));
+select b.blob, b.clob, b.nclob from b;
+
+-- equal tests are not allowed
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(5));
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(7));
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(7));
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(7));
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e000' as blob(7));
+
+select 1 from b where X'80' = cast(X'80' as blob(1));
+select 1 from b where cast(X'80' as blob(1)) = X'80';
+select 1 from b where cast(X'80' as blob(1)) = cast(X'80' as blob(1));
+
+select 1 from b where '1' = cast('1' as clob(1));
+select 1 from b where cast('1' as clob(1)) = '1';
+select 1 from b where cast('1' as clob(1)) = cast('1' as clob(1));
+
+select 1 from b where '1' = cast('1' as nclob(1));
+select 1 from b where cast('1' as nclob(1)) = '1';
+select 1 from b where cast('1' as nclob(1)) = cast('1' as nclob(1));
+
+-- NCLOB is comparable with CLOB
+
+select 1 from b where cast('1' as nclob(10)) = cast('1' as clob(10));
+select 1 from b where cast('1' as clob(10)) = cast('1' as nclob(10));
+
+-- comparsion using tables
+select * from b as b1, b as b2 where b1.blob=b2.blob;
+select * from b as b1, b as b2 where b1.blob!=b2.blob;
+
+select * from b as b1, b as b2 where b1.blob=X'20';
+select * from b as b1, b as b2 where X'20'=b1.blob;
+select * from b as b1, b as b2 where X'20'!=b1.blob;
+
+select * from b as b1, b as b2 where b1.blob=X'7575';
+select * from b as b1, b as b2 where X'7575'=b1.blob;
+
+select b.blob, b.clob, b.nclob from b where b.blob = '1' and b.clob = '2' and b.nclob = '3';
+select b.blob from b where b.blob = '1';
+-- however it works for types which cloudscape autocasts to char
+select b.clob from b where b.clob = '2';
+select b.nclob from b where b.nclob = '3';
+
+-- test insert of NULL
+insert into b values(null, null, null);
+select * from b;
+
+-- cleanup
+drop table blob;
+drop table clob;
+drop table nclob;
+drop table a;
+drop table b;
+
+-- test insert limitations
+create table b(b blob(5));
+create table c(c clob(5));
+create table n(n nclob(5));
+
+insert into b values(cast(X'01020304' as blob(10)));
+insert into b values(cast(X'0102030405' as blob(10)));
+insert into b values(cast(X'010203040506' as blob(10)));
+
+-- truncate before insert, no errors
+insert into b values(cast(X'01020304' as blob(5)));
+insert into b values(cast(X'0102030405' as blob(5)));
+insert into b values(cast(X'010203040506' as blob(5)));
+
+-- clob/nclob
+--   ok in spite of not being cast
+insert into c values('1234');
+insert into c values('12345');
+insert into c values('123456');
+
+insert into n values('1234');
+insert into n values('12345');
+insert into n values('123456');
+
+--   ok
+insert into c values(cast('1234' as clob(5)));
+insert into c values(cast('12345' as clob(5)));
+insert into c values(cast('123456' as clob(5)));
+
+insert into n values(cast('1234' as nclob(5)));
+insert into n values(cast('12345' as nclob(5)));
+insert into n values(cast('123456' as nclob(5)));
+
+select * from b;
+select * from c;
+select * from n;
+
+-- concatenate
+values cast('12' as clob(2)) || cast('34' as clob(2));
+values cast('12' as nclob(2)) || cast('34' as nclob(2));
+select 1 from b where cast('12' as clob(2)) || cast('34' as clob(2)) = '1234';
+select 1 from b where cast('12' as nclob(2)) || cast('34' as nclob(2)) = '1234';
+select 1 from b where cast('12' as clob(2)) || cast('34' as clob(2)) = cast('1234' as clob(4));
+select 1 from b where cast('12' as nclob(2)) || cast('34' as nclob(2)) = cast('1234' as clob(4));
+
+-- like
+select * from b where b like '0102%';
+select * from c where c like '12%';
+select * from n where n like '12%';
+
+select * from b where b like cast('0102%' as blob(10));
+select * from c where c like cast('12%' as clob(10));
+select * from n where n like cast('12%' as nclob(10));
+
+-- cleanup
+drop table b;
+drop table c;
+drop table n;
+
+-- test syntax of using long type names
+create table a(a binary large object(3K));
+create table b(a character large object(3K));
+create table c(a national character large object(3K));
+create table d(a char large object(204K));
+
+-- create index (not allowed)
+create index ia on a(a);
+create index ib on b(a);
+create index ic on c(a);
+create index id on d(a);
+
+-- cleanup
+drop table a;
+drop table c;
+drop table d;
+
+-- ORDER tests on LOB types (not allowed)
+select 1 from b where cast(X'e0' as blob(5))=cast(X'e0' as blob(5));
+select 1 from b where cast(X'e0' as blob(5))!=cast(X'e0' as blob(5));
+select 1 from b where cast(X'e0' as blob(5))<cast(X'e0' as blob(5));
+select 1 from b where cast(X'e0' as blob(5))>cast(X'e0' as blob(7));
+select 1 from b where cast(X'e0' as blob(5))<=cast(X'e0' as blob(7));
+select 1 from b where cast(X'e0' as blob(5))>=cast(X'e0' as blob(7));
+
+select 1 from b where cast('fish' as clob(5))=cast('fish' as clob(5));
+select 1 from b where cast('fish' as clob(5))!=cast('fish' as clob(5));
+select 1 from b where cast('fish' as clob(5))<cast('fish' as clob(5));
+select 1 from b where cast('fish' as clob(5))>cast('fish' as clob(7));
+select 1 from b where cast('fish' as clob(5))<=cast('fish' as clob(7));
+select 1 from b where cast('fish' as clob(5))>=cast('fish' as clob(7));
+
+select 1 from b where cast('fish' as nclob(5))=cast('fish' as nclob(5));
+select 1 from b where cast('fish' as nclob(5))!=cast('fish' as nclob(5));
+select 1 from b where cast('fish' as nclob(5))<cast('fish' as nclob(5));
+select 1 from b where cast('fish' as nclob(5))>cast('fish' as nclob(7));
+select 1 from b where cast('fish' as nclob(5))<=cast('fish' as nclob(7));
+select 1 from b where cast('fish' as nclob(5))>=cast('fish' as nclob(7));
+
+-- test operands on autocast
+-- beetle 5282
+-- <,> <=, >= operands are not supported in db2 but supported in cloudscape
+-- compare w. integer/char types are also not ok
+
+-- CLOB testing
+CREATE TABLE testoperatorclob (colone clob(1K));
+INSERT INTO testoperatorclob VALUES (CAST('50' AS CLOB(1K)));
+INSERT INTO testoperatorclob VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+select * from testoperatorclob;
+
+-- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorclob where colone > 10;
+select * from testoperatorclob where colone > 5;
+select * from testoperatorclob where colone < 70;
+select * from testoperatorclob where colone = 50;
+select * from testoperatorclob where colone != 10;
+select * from testoperatorclob where colone <= 70;
+select * from testoperatorclob where colone >= 10;
+select * from testoperatorclob where colone <> 10;
+
+select * from testoperatorclob where colone > '10';
+select * from testoperatorclob where colone > '5';
+select * from testoperatorclob where colone < '70';
+select * from testoperatorclob where colone = '50';
+select * from testoperatorclob where colone != '10';
+select * from testoperatorclob where colone <= '70';
+select * from testoperatorclob where colone >= '10';
+select * from testoperatorclob where colone <> '10';
+
+drop table testoperatorclob;
+
+-- BLOB testing
+CREATE TABLE testoperatorblob (colone blob(1K));
+INSERT INTO testoperatorblob VALUES (CAST('50' AS BLOB(1K)));
+INSERT INTO testoperatorblob VALUES (CAST(cast('50' as varchar(80)) AS BLOB(1K)));
+select * from testoperatorblob;
+
+-- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorblob where colone > 10;
+select * from testoperatorblob where colone > 5;
+select * from testoperatorblob where colone < 999999;
+select * from testoperatorblob where colone = 00350030;
+select * from testoperatorblob where colone != 10;
+select * from testoperatorblob where colone <= 999999;
+select * from testoperatorblob where colone >= 10;
+select * from testoperatorblob where colone <> 10;
+
+select * from testoperatorblob where colone > '10';
+select * from testoperatorblob where colone > '5';
+select * from testoperatorblob where colone < '70';
+select * from testoperatorblob where colone = '50';
+select * from testoperatorblob where colone != '10';
+select * from testoperatorblob where colone <= '70';
+select * from testoperatorblob where colone >= '10';
+select * from testoperatorblob where colone <> '10';
+
+drop table testoperatorblob;
+
+-- NCLOB testing
+CREATE TABLE testoperatornclob (colone nclob(1K));
+INSERT INTO testoperatornclob VALUES (CAST('50' AS NCLOB(1K)));
+INSERT INTO testoperatornclob VALUES (CAST(cast('50' as varchar(80)) AS NCLOB(1K)));
+select * from testoperatornclob;
+
+-- these select statements should raise an error but are successful in cloudscape
+select * from testoperatornclob where colone > 10;
+select * from testoperatornclob where colone > 5;
+select * from testoperatornclob where colone < 70;
+select * from testoperatornclob where colone = 50;
+select * from testoperatornclob where colone != 10;
+select * from testoperatornclob where colone <= 70;
+select * from testoperatornclob where colone >= 10;
+select * from testoperatornclob where colone <> 10;
+
+select * from testoperatornclob where colone > '10';
+select * from testoperatornclob where colone > '5';
+select * from testoperatornclob where colone < '70';
+select * from testoperatornclob where colone = '50';
+select * from testoperatornclob where colone != '10';
+select * from testoperatornclob where colone <= '70';
+select * from testoperatornclob where colone >= '10';
+select * from testoperatornclob where colone <> '10';
+
+drop table testoperatornclob;
+
+----- test method invocations on LOB objects (should disallow)
+-- setup
+drop table b;
+create table b(b blob(77));
+insert into b values(cast('33' as blob(77)));
+
+create table c(c clob(77));
+insert into c values(cast('33' as clob(77)));
+
+-- LOB as main object for method invocation not allowed
+values (cast('1' as blob(1M)))->toString();
+values (cast('1' as clob(1M)))->toString();
+values (cast('1' as nclob(1M)))->toString();
+
+-- LOB column as parameter not allowed
+select b->equals('3') from b;
+select c->equals('3') from c;
+
+-- explicit LOB as parameter not allowed
+values '3'->equals(cast('3' as blob(7)));
+values '3'->equals(cast('3' as clob(7)));
+
+-- LOB column as parameter not allowed
+select '3'->equals(b) from b;
+select '3'->equals(c) from c;
+
+drop table b;
+drop table c;
+
+------ TEST length functions on LOBs
+---- BLOB
+values length(cast('foo' as blob(10)));
+values {fn length(cast('foo' as blob(10)))};
+
+---- CHAR
+values length(cast('foo' as char(10)));
+values {fn length(cast('foo' as char(10)))};
+
+---- CLOB
+values length(cast('foo' as clob(10)));
+values {fn length(cast('foo' as clob(10)))};
+
+---- NCLOB
+values length(cast('foo' as nclob(10)));
+values {fn length(cast('foo' as nclob(10)))};
+
+-- Longvarchar negative tests
+
+create table testPredicate1 (c1 long varchar);
+create table testPredicate2 (c1 long varchar);
+insert into testPredicate1 (c1) values 'a';
+insert into testPredicate2 (c1) values 'a';
+
+-- UNION
+select * from testPredicate1 union select * from testPredicate2;
+
+-- IN predicate
+select c1 from testPredicate1 where c1 IN (select c1 from testPredicate2);
+
+
+-- NOT IN predicate
+select c1 from testPredicate1 where c1 NOT IN (select c1 from testPredicate2);
+
+-- ORDER BY clause
+select * from testPredicate1 order by c1;
+
+
+-- GROUP BY clause
+select substr(c1,1,2) from testPredicate1 group by c1;
+
+-- JOIN
+select * from testPredicate1 t1, testPredicate2 t2 where t1.c1=t2.c1;
+select * from testPredicate1 LEFT OUTER JOIN testPredicate2 on testPredicate1.c1=testPredicate2.c1;
+
+-- PRIMARY KEY
+create table testConst1(c1 long varchar not null primary key);
+
+-- UNIQUE KEY constraints
+CREATE TABLE testconst2 (col1 long varchar not null, CONSTRAINT uk UNIQUE (col1));
+
+-- FOREIGN KEY constraints
+create table testConst3 (c1 char(10) not null, primary key (c1));
+create table testConst4 (c1 long varchar not null, constraint fk foreign key (c1) references testConst3 (c1));
+drop table testConst3;
+
+-- MAX aggregate function
+select max(c1) from testPredicate1;
+
+-- MIN aggregate function
+select min(c1) from testPredicate1;
+
+drop table testpredicate1;
+drop table testpredicate2;
+
+-- CLOB/BLOB limits and sizes
+
+-- FAIL - bigger than 2G or 2Gb with no modifier
+create table DB2LIM.FB1(FB1C BLOB(3G));
+create table DB2LIM.FB2(FB2C BLOB(2049M));
+create table DB2LIM.FB3(FB3C BLOB(2097153K));
+create table DB2LIM.FB4(FB4C BLOB(2147483648));
+
+-- OK 2G and end up as 2GB - 1 (with modifier)
+create table DB2LIM.GB1(GB1C BLOB(2G));
+create table DB2LIM.GB2(GB2C BLOB(2048M));
+create table DB2LIM.GB3(GB3C BLOB(2097152K));
+create table DB2LIM.GB4(GB4C BLOB(2147483647));
+
+-- next lower value
+create table DB2LIM.GB5(GB5C BLOB(1G));
+create table DB2LIM.GB6(GB6C BLOB(2047M));
+create table DB2LIM.GB7(GB7C BLOB(2097151K));
+create table DB2LIM.GB8(GB8C BLOB(2147483646));
+drop table DB2LIM.GB5;
+drop table DB2LIM.GB6;
+drop table DB2LIM.GB7;
+drop table DB2LIM.GB8;
+
+-- no length (default to 1Mb)
+create table DB2LIM.GB9(GB9C BLOB);
+create table DB2LIM.GB10(GB10C BINARY LARGE OBJECT);
+drop table DB2LIM.GB9;
+drop table DB2LIM.GB10;
+
+-- FAIL - bigger than 2G or 2Gb with no modifier
+create table DB2LIM.FC1(FC1C CLOB(3G));
+create table DB2LIM.FC2(FC2C CLOB(2049M));
+create table DB2LIM.FC3(FC3C CLOB(2097153K));
+create table DB2LIM.FC4(FC4C CLOB(2147483648));
+
+-- OK 2G and end up as 2GC - 1 (with modifier)
+create table DB2LIM.GC1(GC1C CLOB(2G));
+create table DB2LIM.GC2(GC2C CLOB(2048M));
+create table DB2LIM.GC3(GC3C CLOB(2097152K));
+create table DB2LIM.GC4(GC4C CLOB(2147483647));
+
+-- next lower value
+create table DB2LIM.GC5(GC5C CLOB(1G));
+create table DB2LIM.GC6(GC6C CLOB(2047M));
+create table DB2LIM.GC7(GC7C CLOB(2097151K));
+create table DB2LIM.GC8(GC8C CLOB(2147483646));
+drop table DB2LIM.GC5;
+drop table DB2LIM.GC6;
+drop table DB2LIM.GC7;
+drop table DB2LIM.GC8;
+
+-- no length (default to 1Mb)
+create table DB2LIM.GC9(GC9C CLOB);
+create table DB2LIM.GC10(GC10C CHARACTER LARGE OBJECT);
+create table DB2LIM.GC11(GC11C CHAR LARGE OBJECT);
+drop table DB2LIM.GC9;
+drop table DB2LIM.GC10;
+drop table DB2LIM.GC11;
+
+SELECT CAST (TABLENAME AS CHAR(10)) AS T, CAST (COLUMNNAME AS CHAR(10)) AS C, CAST (COLUMNDATATYPE AS CHAR(30)) AS Y
+	FROM SYS.SYSTABLES T, SYS.SYSSCHEMAS S, SYS.SYSCOLUMNS C
+	WHERE S.SCHEMAID = T.SCHEMAID AND S.SCHEMANAME = 'DB2LIM'
+	AND C.REFERENCEID = T.TABLEID
+	ORDER BY 1;
+
+--- CHAR/VARCHAR and LOBs. (beetle 5741)
+--- test that we can insert CHAR/VARCHAR directly
+
+CREATE TABLE b (colone blob(1K));
+
+VALUES '50';
+INSERT INTO b VALUES '50';
+
+VALUES cast('50' as varchar(80));
+INSERT INTO b VALUES cast('50' as varchar(80));
+
+VALUES (CAST('50' AS BLOB(1K)));
+INSERT INTO b VALUES (CAST('50' AS BLOB(1K)));
+
+VALUES (CAST(cast('50' as varchar(80)) AS BLOB(1K)));
+INSERT INTO b VALUES (CAST(cast('50' as varchar(80)) AS BLOB(1K)));
+
+VALUES cast('50' as long varchar);
+INSERT INTO b VALUES cast('50' as long varchar);
+
+-- test w LOBs
+VALUES (CAST('50' AS BLOB(1K)));
+INSERT INTO b VALUES (CAST('50' AS BLOB(1K)));
+
+VALUES (CAST('50' AS CLOB(1K)));
+INSERT INTO b VALUES (CAST('50' AS CLOB(1K)));
+
+VALUES (CAST('50' AS NCLOB(1K)));
+INSERT INTO b VALUES (CAST('50' AS NCLOB(1K)));
+
+DROP TABLE b;
+
+
+
+CREATE TABLE c (colone clob(1K));
+
+VALUES '50';
+INSERT INTO c VALUES '50';
+
+VALUES cast('50' as varchar(80));
+INSERT INTO c VALUES cast('50' as varchar(80));
+
+VALUES (CAST('50' AS CLOB(1K)));
+INSERT INTO c VALUES (CAST('50' AS CLOB(1K)));
+
+VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+INSERT INTO c VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+
+VALUES cast('50' as long varchar);
+INSERT INTO c VALUES cast('50' as long varchar);
+
+-- test w LOBs
+VALUES (CAST('50' AS BLOB(1K)));
+INSERT INTO c VALUES (CAST('50' AS BLOB(1K)));
+
+VALUES (CAST('50' AS CLOB(1K)));
+INSERT INTO c VALUES (CAST('50' AS CLOB(1K)));
+
+VALUES (CAST('50' AS NCLOB(1K)));
+INSERT INTO c VALUES (CAST('50' AS NCLOB(1K)));
+
+DROP TABLE c;
+
+
+
+CREATE TABLE n (colone clob(1K));
+
+VALUES '50';
+INSERT INTO n VALUES '50';
+
+VALUES cast('50' as varchar(80));
+INSERT INTO n VALUES cast('50' as varchar(80));
+
+VALUES (CAST('50' AS CLOB(1K)));
+INSERT INTO n VALUES (CAST('50' AS CLOB(1K)));
+
+VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+INSERT INTO n VALUES (CAST(cast('50' as varchar(80)) AS CLOB(1K)));
+
+VALUES cast('50' as long varchar);
+INSERT INTO n VALUES cast('50' as long varchar);
+
+-- test w LOBs
+VALUES (CAST('50' AS BLOB(1K)));
+INSERT INTO n VALUES (CAST('50' AS BLOB(1K)));
+
+VALUES (CAST('50' AS CLOB(1K)));
+INSERT INTO n VALUES (CAST('50' AS CLOB(1K)));
+
+VALUES (CAST('50' AS NCLOB(1K)));
+INSERT INTO n VALUES (CAST('50' AS NCLOB(1K)));
+
+DROP TABLE n;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,94 @@
+connect 'jdbc:derby:jonas;create=true';
+
+----- TEST TO RUN IN DB2 COMPATIBLITY MODE
+--
+
+create table t1(c11 int);
+insert into t1 values(1);
+
+-- equal tests are allowed only for BLOB==BLOB
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1111' as blob(5));
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1111' as blob(7));
+select c11 from t1 where cast(x'1110' as blob(5))=cast(x'1110' as blob(7));
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'11100000' as blob(7));
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1110000000' as blob(7));
+
+select c11 from t1 where x'11' = cast(x'11' as blob(1));
+select c11 from t1 where cast(x'11' as blob(1)) = x'11';
+select c11 from t1 where cast(x'11' as blob(1)) = cast(x'11' as blob(1));
+
+select c11 from t1 where '1' = cast('1' as clob(1));
+select c11 from t1 where cast('1' as clob(1)) = '1';
+select c11 from t1 where cast('1' as clob(1)) = cast('1' as clob(1));
+
+select c11 from t1 where '1' = cast('1' as nclob(1));
+select c11 from t1 where cast('1' as nclob(1)) = '1';
+select c11 from t1 where cast('1' as nclob(1)) = cast('1' as nclob(1));
+
+-- NCLOB is comparable with CLOB
+
+select c11 from t1 where cast('1' as nclob(10)) = cast('1' as clob(10));
+select c11 from t1 where cast('1' as clob(10)) = cast('1' as nclob(10));
+
+drop table b;
+drop table c;
+drop table n;
+
+create table b(blob blob(3K));
+create table c(clob clob(2M));
+create table n(nclob nclob(1G));
+
+insert into b values(cast(X'0031' as blob(3K)));
+insert into c values(cast('2' as clob(2M)));
+insert into n values(cast('3' as nclob(1G)));
+
+insert into b values(cast(X'0031' as blob(3K)));
+insert into c values(cast('2' as clob(2M)));
+insert into n values(cast('3' as nclob(1G)));
+
+insert into b values(cast(X'0031' as blob(3K)));
+insert into c values(cast('2' as clob(2M)));
+insert into n values(cast('3' as nclob(1G)));
+
+select blob from b;
+select clob from c;
+select nclob from n;
+
+-- comparsion using tables
+select * from b as b1, b as b2 where b1.blob=b2.blob;
+select * from b as b1, b as b2 where b1.blob!=b2.blob;
+
+select * from b as b1, b as b2 where b1.blob=x'0001';
+select * from b as b1, b as b2 where x'0001'=b1.blob;
+select * from b as b1, b as b2 where x'0001'!=b1.blob;
+
+select * from b as b1, b as b2 where b1.blob=X'7575';
+select * from b as b1, b as b2 where X'7575'=b1.blob;
+
+select c.clob from c where c.clob = '2';
+select n.nclob from n where n.nclob = '3';
+
+-- ORDER tests on LOB types (not allowed)
+select c11 from t1 where cast(x'1111' as blob(5))=cast(x'1111' as blob(5));
+select c11 from t1 where cast(x'1111' as blob(5))!=cast(x'1111' as blob(5));
+select c11 from t1 where cast(x'1111' as blob(5))<cast(x'1111' as blob(5));
+select c11 from t1 where cast(x'1111' as blob(5))>cast(x'1111' as blob(7));
+select c11 from t1 where cast(x'1111' as blob(5))<=cast(x'1110' as blob(7));
+select c11 from t1 where cast(x'1111' as blob(5))>=cast(x'11100000' as blob(7));
+
+select c11 from t1 where cast('fish' as clob(5))=cast('fish' as clob(5));
+select c11 from t1 where cast('fish' as clob(5))!=cast('fish' as clob(5));
+select c11 from t1 where cast('fish' as clob(5))<cast('fish' as clob(5));
+select c11 from t1 where cast('fish' as clob(5))>cast('fish' as clob(7));
+select c11 from t1 where cast('fish' as clob(5))<=cast('fish' as clob(7));
+select c11 from t1 where cast('fish' as clob(5))>=cast('fish' as clob(7));
+
+select c11 from t1 where cast('fish' as nclob(5))=cast('fish' as nclob(5));
+select c11 from t1 where cast('fish' as nclob(5))!=cast('fish' as nclob(5));
+select c11 from t1 where cast('fish' as nclob(5))<cast('fish' as nclob(5));
+select c11 from t1 where cast('fish' as nclob(5))>cast('fish' as nclob(7));
+select c11 from t1 where cast('fish' as nclob(5))<=cast('fish' as nclob(7));
+select c11 from t1 where cast('fish' as nclob(5))>=cast('fish' as nclob(7));
+
+-- BIT STRING literal is not allowed in DB2
+values cast(B'1' as blob(10));

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LOBDB2compatibility_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+database=jdbc:derby:wombat

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LockTableQuery.subsql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/LockTableQuery.subsql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,15 @@
+select 
+    cast(username as char(8)) as username,
+    cast(t.type as char(8)) as trantype,
+    cast(l.type as char(8)) as type,
+    cast(lockcount as char(3)) as cnt,
+    mode,
+    cast(tablename as char(12)) as tabname,
+    cast(lockname as char(10)) as lockname,
+    state,
+    status
+from 
+    new org.apache.derby.diag.LockTable() l right outer join new org.apache.derby.diag.TransactionTable() t
+on l.xid = t.xid where l.tableType <> 'S' 
+order by 
+    tabname, type desc, mode, cnt, lockname;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WISCInsert.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WISCInsert.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,211 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.*;
+
+/**
+ * This class is a VTI for loading data into the Wisconsin benchmark schema.
+ * See The Benchmark Handbook, Second Edition (edited by Jim Gray).
+ */
+public class WISCInsert {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	private static final char[] chars = {
+		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
+	};
+
+	int numrows;
+	int prime;
+	int generator; 
+	int rowsReturned = 0;
+
+	int unique1;
+	int unique2;
+	int two;
+	int four;
+	int ten;
+	int twenty;
+	int onePercent;
+	int tenPercent;
+	int twentyPercent;
+	int fiftyPercent;
+	int unique3;
+	int evenOnePercent;
+	int oddOnePercent;
+	String stringu1;
+	String stringu2;
+	String string4;
+
+	int seed;
+	static final String[] cyclicStrings = {
+		"AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+		"HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+		"OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+		"VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+		};
+
+	boolean closed = false;
+
+	public WISCInsert()
+	{
+	}
+
+	public int doWISCInsert(int numrows, String tableName, Connection conn) throws SQLException {
+		this.numrows = numrows;
+
+		/* Choose prime and generator values for the desired table size */
+		if (numrows <= 1000) {
+			generator = 279;
+			prime = 1009;
+		} else if (numrows <= 10000) {
+			generator = 2969;
+			prime = 10007;
+		} else if (numrows <= 100000) {
+			generator = 21395;
+			prime = 100003;
+		} else if (numrows <= 1000000) {
+			generator = 2107;
+			prime = 1000003;
+		} else if (numrows <= 10000000) {
+			generator = 211;
+			prime = 10000019;
+		} else if (numrows <= 100000000) {
+			generator = 21;
+			prime = 100000007;
+		} else {
+			throw new SQLException("Too many rows - maximum is 100000000, " +
+									numrows + " requested.");
+		}
+
+		seed = generator;
+
+		String insertString = "insert into " + tableName + " values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+		PreparedStatement ps = conn.prepareStatement(insertString);
+
+		// loop the insert statement
+		for (int i = 0; i < numrows; i++)
+		{
+			next();
+			ps.setInt(1, unique1);
+			ps.setInt(2, unique2);
+			ps.setInt(3, two);
+			ps.setInt(4, four);
+			ps.setInt(5, ten);
+			ps.setInt(6, twenty);
+			ps.setInt(7, onePercent);
+			ps.setInt(8, tenPercent);
+			ps.setInt(9, twentyPercent);
+			ps.setInt(10, fiftyPercent);
+			ps.setInt(11, unique3);
+			ps.setInt(12, evenOnePercent);
+			ps.setInt(13, oddOnePercent);
+			ps.setString(14, stringu1);
+			ps.setString(15, stringu2);
+			ps.setString(16, string4);
+			ps.executeUpdate();
+			// commit every once in a while?
+		}
+		return numrows;
+	}
+
+
+	public boolean next() throws SQLException {
+		if (rowsReturned >= numrows)
+			return false;
+
+		seed = rand(seed, numrows);
+
+		unique1 = seed - 1;
+		unique2 = rowsReturned;
+		two = unique1 % 2;
+		four = unique1 % 4;
+		ten = unique1 % 10;
+		twenty = unique1 % 20;
+		onePercent = unique1 % 100;
+		tenPercent = unique1 % 10;
+		twentyPercent = unique1 % 5;
+		fiftyPercent = unique1 % 2;
+		unique3 = unique1;
+		evenOnePercent = onePercent * 2;
+		oddOnePercent = evenOnePercent + 1;
+		stringu1 = uniqueString(unique1);
+		stringu2 = uniqueString(unique2);
+		string4 = cyclicStrings[rowsReturned % cyclicStrings.length];
+
+		rowsReturned++;
+
+		return true;
+	}
+
+
+	private int rand(int seed, int limit) {
+		do {
+			seed = (generator * seed) % prime;
+		} while (seed > limit);
+
+		return seed;
+	}
+
+ 
+	private String uniqueString(int unique) {
+		int i;
+		int rem;
+		char[] retval = new char[52];
+
+		// First set result string to
+		// "AAAAAAA                                             "
+		for (i = 0; i < 7; i++) {
+			retval[i] = 'A';
+		}
+		for (i = 7; i < retval.length; i++) {
+			retval[i] = 'x';
+		}
+
+		// Convert unique value from right to left into an alphabetic string
+		i = 6;
+		while (unique > 0) {
+			rem = unique % 26;
+			retval[i] = chars[rem];
+			unique /= 26;
+			i--;
+		}
+
+		return new String(retval);
+	}
+
+
+	public String getShortTestDescription()
+	{
+		StringBuffer st = new StringBuffer( "insert values into wisconsin benchmark schema.");
+		st.append("See The Benchmark Handbook, Second Edition (edited by Jim Gray).");
+		return st.toString();
+	}
+
+
+	public String getLongTestDescription()
+	{
+		StringBuffer st = new StringBuffer(getShortTestDescription() +"\n Called from performance.wisc.WiscLoad. This is not actually a test itself. Based on a scale value by which to multiply the number of rows, the values are generated. This class is based on the vti org.apache.derbyTesting.functionTests.tests.lang.Wisc, however, this will work with any database, not just Cloudscape.");
+		return st.toString();
+
+	}
+
+
+	public boolean isCloudscapeSpecificTest()
+	{
+	    return false;
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscMetaData.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscMetaData.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,136 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import org.apache.derby.vti.VTIMetaDataTemplate;
+
+import java.sql.Types;
+import java.sql.SQLException;
+import java.sql.ResultSetMetaData;
+
+/**
+ * This class gives the metadata for the VTI for loading the Wisconsin
+ * benchmark schema.
+ */
+class WiscMetaData extends VTIMetaDataTemplate {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+ 
+	public int getColumnCount() {
+		return 16;
+	}
+
+	public int getColumnType(int column) throws SQLException {
+		switch (column) {
+		  case 1:
+		  case 2:
+		  case 3:
+		  case 4:
+		  case 5:
+		  case 6:
+		  case 7:
+		  case 8:
+		  case 9:
+		  case 10:
+		  case 11:
+		  case 12:
+		  case 13:
+			return Types.INTEGER;
+
+		  case 14:
+		  case 15:
+		  case 16:
+			return Types.CHAR;
+
+		  default:
+			throw new SQLException("Invalid column number " + column);
+		}
+	}
+
+	public int isNullable(int column) throws SQLException {
+		if (column < 1 || column > 16) {
+			throw new SQLException(
+					"isNullable: column number " + column + " out of range.");
+		}
+
+		return ResultSetMetaData.columnNoNulls;
+	}
+
+	public String getColumnName(int column) throws SQLException {
+		switch (column) {
+		  case 1:
+			return "unique1";
+
+		  case 2:
+			return "unique2";
+
+		  case 3:
+			return "two";
+
+		  case 4:
+			return "four";
+
+		  case 5:
+			return "ten";
+
+		  case 6:
+			return "twenty";
+
+		  case 7:
+			return "onePercent";
+
+		  case 8:
+			return "tenPercent";
+
+		  case 9:
+			return "twentyPercent";
+
+		  case 10:
+			return "fiftyPercent";
+
+		  case 11:
+			return "unique3";
+
+		  case 12:
+			return "evenOnePercent";
+
+		  case 13:
+			return "oddOnePercent";
+
+		  case 14:
+			return "stringu1";
+
+		  case 15:
+			return "stringu2";
+
+		  case 16:
+			return "string4";
+		}
+
+		throw new SQLException(
+				"getColumnName: column number " + column + " out of range.");
+	}
+
+	public int getColumnDisplaySize(int column) throws SQLException {
+		if (column < 1 || column > 16) {
+			throw new SQLException(
+					"getColumnDisplaySize: column number " + column + " out of range.");
+		}
+
+		/* All columns up to 14 are ints, all columns after 14 are char(52) */
+		if (column < 14)
+			return 10;
+		else
+			return 52;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscVTI.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/WiscVTI.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,251 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import org.apache.derby.vti.VTITemplate;
+
+import java.sql.SQLException;
+import java.sql.ResultSetMetaData;
+import java.sql.DriverManager;
+import java.sql.Connection;
+
+/**
+ * This class is a VTI for loading data into the Wisconsin benchmark schema.
+ * See The Benchmark Handbook, Second Edition (edited by Jim Gray).
+ */
+public class WiscVTI extends VTITemplate {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	int numrows;
+	int prime;
+	int generator; 
+	int rowsReturned = 0;
+
+	int unique1;
+	int unique2;
+	int two;
+	int four;
+	int ten;
+	int twenty;
+	int onePercent;
+	int tenPercent;
+	int twentyPercent;
+	int fiftyPercent;
+	int unique3;
+	int evenOnePercent;
+	int oddOnePercent;
+	String stringu1;
+	String stringu2;
+	String string4;
+
+	int seed;
+	static final String[] cyclicStrings = {
+		"AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+		"HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+		"OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+		"VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+		};
+
+	boolean closed = false;
+
+	static final WiscMetaData metaData = new WiscMetaData();
+
+	public WiscVTI(int numrows) throws SQLException {
+		this.numrows = numrows;
+
+		/* Choose prime and generator values for the desired table size */
+		if (numrows <= 1000) {
+			generator = 279;
+			prime = 1009;
+		} else if (numrows <= 10000) {
+			generator = 2969;
+			prime = 10007;
+		} else if (numrows <= 100000) {
+			generator = 21395;
+			prime = 100003;
+		} else if (numrows <= 1000000) {
+			generator = 2107;
+			prime = 1000003;
+		} else if (numrows <= 10000000) {
+			generator = 211;
+			prime = 10000019;
+		} else if (numrows <= 100000000) {
+			generator = 21;
+			prime = 100000007;
+		} else {
+			throw new SQLException("Too many rows - maximum is 100000000, " +
+									numrows + " requested.");
+		}
+
+		seed = generator;
+	}
+
+	public ResultSetMetaData getMetaData() {
+		return metaData;
+	}
+
+	public boolean next() throws SQLException {
+		if (closed) {
+			throw new SQLException("next() call on a closed result set");
+		}
+
+		if (rowsReturned >= numrows)
+			return false;
+
+		seed = rand(seed, numrows);
+
+		unique1 = seed - 1;
+		unique2 = rowsReturned;
+		two = unique1 % 2;
+		four = unique1 % 4;
+		ten = unique1 % 10;
+		twenty = unique1 % 20;
+		onePercent = unique1 % 100;
+		tenPercent = unique1 % 10;
+		twentyPercent = unique1 % 5;
+		fiftyPercent = unique1 % 2;
+		unique3 = unique1;
+		evenOnePercent = onePercent * 2;
+		oddOnePercent = evenOnePercent + 1;
+		stringu1 = uniqueString(unique1);
+		stringu2 = uniqueString(unique2);
+		string4 = cyclicStrings[rowsReturned % cyclicStrings.length];
+
+		rowsReturned++;
+
+		return true;
+	}
+
+	public int getInt(int columnIndex) throws SQLException {
+		if (closed) {
+			throw new SQLException("getInt() call on a closed result set");
+		}
+
+		switch (columnIndex) {
+		  case 1:
+			return unique1;
+
+		  case 2:
+			return unique2;
+
+		  case 3:
+			return two;
+
+		  case 4:
+			return four;
+
+		  case 5:
+			return ten;
+
+		  case 6:
+			return twenty;
+
+		  case 7:
+			return onePercent;
+
+		  case 8:
+			return tenPercent;
+
+		  case 9:
+			return twentyPercent;
+
+		  case 10:
+			return fiftyPercent;
+
+		  case 11:
+			return unique3;
+
+		  case 12:
+			return evenOnePercent;
+
+		  case 13:
+			return oddOnePercent;
+
+		  default:
+			throw new SQLException("getInt() invalid for column " + columnIndex);
+		}
+	}
+
+	public String getString(int columnIndex) throws SQLException {
+		if (closed) {
+			throw new SQLException("getString() call on a closed result set");
+		}
+
+		switch (columnIndex) {
+		  case 14:
+			return stringu1;
+
+		  case 15:
+			return stringu2;
+
+		  case 16:
+			return string4;
+
+		  default:
+			throw new SQLException("getString() invalid for column " +
+																columnIndex);
+		}
+	}
+
+	public void close() {
+		closed = true;
+	}
+
+	private int rand(int seed, int limit) {
+		do {
+			seed = (generator * seed) % prime;
+		} while (seed > limit);
+
+		return seed;
+	}
+
+	private static final char[] chars = {
+		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+		'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
+	};
+ 
+	private String uniqueString(int unique) {
+		int i;
+		int rem;
+		char[] retval = new char[52];
+
+		// First set result string to
+		// "AAAAAAA                                             "
+		for (i = 0; i < 7; i++) {
+			retval[i] = 'A';
+		}
+		for (i = 7; i < retval.length; i++) {
+			retval[i] = 'x';
+		}
+
+		// Convert unique value from right to left into an alphabetic string
+		i = 6;
+		while (unique > 0) {
+			rem = unique % 26;
+			retval[i] = chars[rem];
+			unique /= 26;
+			i--;
+		}
+
+		return new String(retval);
+	}
+
+	public static void WISCInsertWOConnection(int numrows, String tableName) throws SQLException {
+	
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		WISCInsert wi = new WISCInsert();
+		wi.doWISCInsert(numrows, tableName, conn);
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1304 @@
+-- Note that bug 5704 occurs throughout this test
+-- Decimal results may be outside the range of valid types in Cloudscape
+
+-- ** insert avg.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+
+-- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', x'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 'jimmie noone was here',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'1111111111111111', X'1234', 111.11);
+
+--------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+
+-- cannot aggregate datatypes that don't support NumberDataValue
+select avg(c) from t;
+select avg(v) from t;
+select avg(lvc) from t;
+select avg(dt) from t;
+select avg(t) from t;
+select avg(ts) from t;
+select avg(b) from t;
+select avg(bv) from t;
+select avg(lbv) from t;
+
+select avg(c) from t group by c;
+select avg(v) from t group by c;
+select avg(lvc) from t group by c;
+select avg(dt) from t group by c;
+select avg(t) from t group by c;
+select avg(ts) from t group by c;
+select avg(b) from t group by c;
+select avg(bv) from t group by c;
+select avg(lbv) from t group by c;
+
+-- long varchar datatypes too
+create table t1 (c1 long varchar);
+select avg(c1) from t1;
+drop table t1;
+
+-- constants
+select avg('hello') from t;
+select avg(X'11') from t;
+select avg(date('1999-06-06')) from t;
+select avg(time('12:30:30')) from t;
+select avg(timestamp('1999-06-06 12:30:30')) from t;
+
+---------------------------
+-- NULL AGGREGATION
+---------------------------
+
+-- scalar
+select avg(i) from empty;
+select avg(s) from empty;
+select avg(d) from empty;
+select avg(l) from empty;
+select avg(r) from empty;
+select avg(dc) from empty;
+
+-- variations
+select avg(i), avg(s), avg(r), avg(l) from empty;
+select avg(i+1) from empty;
+
+-- vector
+select avg(i) from empty group by i;
+select avg(s) from empty group by s;
+select avg(d) from empty group by d;
+select avg(l) from empty group by l;
+select avg(r) from empty group by r;
+select avg(dc) from empty group by dc;
+
+
+--------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select avg(i) from t;
+select avg(s) from t;
+select avg(d) from t;
+select avg(l) from t;
+select avg(r) from t;
+select avg(dc) from t;
+
+select avg(i) from t group by i;
+select avg(s) from t group by s;
+select avg(d) from t group by d;
+select avg(l) from t group by l;
+select avg(r) from t group by r;
+select avg(dc), sum(dc), count(dc) from t group by dc;
+
+
+-- constants
+select avg(1) from t;
+select avg(1.1) from t;
+select avg(1e1) from t;
+
+select avg(1) from t group by i;
+select avg(1.1) from t group by r;
+select avg(1e1) from t group by r;
+
+-- multicolumn grouping
+select avg(i), avg(l), avg(r) from t group by i, dt, b;
+select i, dt, avg(i), avg(r), avg(l), l from t group by i, dt, b, l; 
+
+-- group by expression
+select avg(expr1), avg(expr2)
+from (select i * s, r * 2 from t) t (expr1, expr2) group by expr2, expr1;
+
+-- distinct and group by
+select distinct avg(i) from t group by i, dt;
+
+-- insert select
+create table tmp (x int, y smallint);
+insert into tmp (x, y) select avg(i), avg(s) from t;
+select * from tmp;
+insert into tmp (x, y) select avg(i), avg(s) from t group by b;
+select * from tmp;
+drop table tmp;
+
+-- some accuracy tests
+create table tmp (x int);
+insert into tmp values (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647);
+
+values(2147483647);
+select avg(x) from tmp;
+select avg(-(x - 1)) from tmp;
+select avg(x) from tmp group by x;
+select avg(-(x - 1)) from tmp group by x;
+drop table tmp;
+
+-- now lets try some simple averages to see what
+-- type of accuracy we get
+create table tmp(x double precision, y int);
+prepare scalar as 'select avg(x) from tmp';
+prepare vector as 'select avg(x) from tmp group by y';
+insert into tmp values (1,1);
+execute scalar;
+execute vector;
+insert into tmp values (2,1);
+execute scalar;
+execute vector;
+insert into tmp values (3,1);
+execute scalar;
+execute vector;
+insert into tmp values (4,1);
+execute scalar;
+execute vector;
+insert into tmp values (5,1);
+execute scalar;
+execute vector;
+insert into tmp values (6,1);
+execute scalar;
+execute vector;
+insert into tmp values (7,1);
+execute scalar;
+execute vector;
+insert into tmp values (10000,1);
+execute scalar;
+execute vector;
+remove vector;
+remove scalar;
+drop table tmp;
+
+-- drop tables
+drop table t;
+drop table empty;
+-- ** insert count.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+
+-- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2));
+-- bit maps to Byte[], so can't test for now
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 222.22);
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 'jimmie noone was here',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0000111100001111', X'1234', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'1111111111111111', X'1234', 111.11);
+
+---------------------------
+-- NULL AGGREGATION
+---------------------------
+
+-- scalar
+select count(i) from empty;
+select count(s) from empty;
+select count(l) from empty;
+select count(c) from empty;
+select count(v) from empty;
+select count(lvc) from empty;
+select count(d) from empty;
+select count(r) from empty;
+select count(dt) from empty;
+select count(t) from empty;
+select count(ts) from empty;
+select count(b) from empty;
+select count(bv) from empty;
+-- bug: should fail in db2 mode
+-- after for bit data is completely implemented
+select count(lbv) from empty;
+select count(dc) from empty;
+
+-- variations
+select count(i), count(b), count(i), count(s) from empty;
+select count(i+1) from empty;
+
+-- vector
+select count(i) from empty group by i;
+select count(s) from empty group by s;
+select count(l) from empty group by l;
+select count(c) from empty group by c;
+select count(v) from empty group by v;
+select count(d) from empty group by d;
+select count(r) from empty group by r;
+select count(dt) from empty group by dt;
+select count(t) from empty group by t;
+select count(ts) from empty group by ts;
+select count(b) from empty group by b;
+select count(bv) from empty group by bv;
+select count(lbv) from empty group by lbv;
+select count(dc) from empty group by dc;
+
+
+--------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select count(i) from t;
+select count(s) from t;
+select count(l) from t;
+select count(c) from t;
+select count(v) from t;
+select count(lvc) from t;
+select count(d) from t;
+select count(r) from t;
+select count(dt) from t;
+select count(t) from t;
+select count(ts) from t;
+select count(b) from t;
+select count(bv) from t;
+select count(lbv) from t;
+select count(dc) from t;
+
+select count(i) from t group by i;
+select count(s) from t group by s;
+select count(l) from t group by l;
+select count(c) from t group by c;
+select count(v) from t group by v;
+select count(d) from t group by d;
+select count(r) from t group by r;
+select count(dt) from t group by dt;
+select count(t) from t group by t;
+select count(ts) from t group by ts;
+select count(b) from t group by b;
+select count(bv) from t group by bv;
+select count(lbv) from t group by lbv;
+select count(dc) from t group by dc;
+
+
+-- constants
+select count(1) from t;
+select count('hello') from t;
+select count(1.1) from t;
+select count(1e1) from t;
+select count(X'11') from t;
+select count(date('1999-06-06')) from t;
+select count(time('12:30:30')) from t;
+select count(timestamp('1999-06-06 12:30:30')) from t;
+
+select count(1) from t group by i;
+select count('hello') from t group by c;
+select count(1.1) from t group by dc;
+select count(1e1) from t group by r;
+select count(X'11') from t group by b;
+select count(date('1999-06-06')) from t group by dt;
+select count(time('12:30:30')) from t group by t;
+select count(timestamp('1999-06-06 12:30:30')) from t group by ts;
+
+
+-- multicolumn grouping
+select count(i), count(dt), count(b) from t group by i, dt, b;
+select l, dt, count(i), count(dt), count(b), i from t group by i, dt, b, l; 
+
+-- group by expression
+select count(expr1), count(expr2)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+
+
+-- distinct and group by
+select distinct count(i) from t group by i, dt;
+
+
+-- insert select
+create table tmp (x int, y smallint);
+insert into tmp (x, y) select count(i), count(c) from t;
+select * from tmp;
+insert into tmp (x, y) select count(i), count(c) from t group by b;
+select * from tmp;
+drop table tmp;
+
+-- drop tables
+drop table t;
+drop table empty;
+-- ** insert countStar.sql
+-- Test the COUNT() aggregate
+
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data);
+
+-- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, lbv long varchar for bit data);
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 'jimmie noone was here',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0000111100001111', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0000111100001111', X'1234');
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'1111111111111111', X'ABCD');
+
+---------------------------
+-- NULL AGGREGATION
+---------------------------
+
+-- scalar
+select count(*) from empty;
+
+-- variations
+select count(*), count(*) from empty;
+
+-- vector
+select count(*) from empty group by i;
+
+--------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select count(*) from t;
+
+select count(*) from t group by i;
+
+
+-- multicolumn grouping
+select count(*), count(*), count(*) from t group by i, dt, b;
+
+-- group by expression
+select count(*), count(*)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+
+-- distinct and group by
+select distinct count(*) from t group by i, dt;
+
+-- view
+create view v1 as select * from t;
+select count(*) from v1;
+select count(*)+count(*) from v1;
+drop view v1;
+
+-- insert select 
+create table tmp (x int, y smallint);
+insert into tmp (x, y) select count(*), count(*) from t;
+select * from tmp;
+insert into tmp (x, y) select count(*), count(*) from t group by b;
+select * from tmp;
+drop table tmp;
+
+-- drop tables
+drop table t;
+drop table empty;
+-- ** insert sum.sql
+--BUGS: sum() on decimal may overflow the decimal,
+--w/o the type system knowing.  so, given dec(1,0),
+--result might be dec(2,0), but return length passed
+--to connectivity is 1 which is wrong.  if we allow
+--the decimal to grow beyond the preset type, we need
+--to all the type system to get it.  alternatively, 
+--need to cast/normalize/setWidth() the result to ensure 
+--right type.
+
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+
+-- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+-- bit maps to Byte[], so can't test for now
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 222.22);
+insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 222.22);
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'1111111111111111', 111.11);
+-- bit maps to Byte[], so can't test for now
+
+--------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+
+-- cannot aggregate datatypes that don't support NumberDataValue
+select sum(c) from t;
+select sum(v) from t;
+select sum(dt) from t;
+select sum(t) from t;
+select sum(ts) from t;
+select sum(b) from t;
+select sum(bv) from t;
+
+select sum(c) from t group by c;
+select sum(v) from t group by c;
+select sum(dt) from t group by c;
+select sum(t) from t group by c;
+select sum(ts) from t group by c;
+select sum(b) from t group by c;
+select sum(bv) from t group by c;
+
+-- long varchar datatypes too
+create table t1 (c1 long varchar);
+select sum(c1) from t1;
+drop table t1;
+
+-- constants
+select sum('hello') from t;
+select sum(X'11') from t;
+select sum(date('1999-06-06')) from t;
+select sum(time('12:30:30')) from t;
+select sum(timestamp('1999-06-06 12:30:30')) from t;
+
+---------------------------
+-- NULL AGGREGATION
+---------------------------
+
+-- scalar
+select sum(i) from empty;
+select sum(s) from empty;
+select sum(d) from empty;
+select sum(l) from empty;
+select sum(r) from empty;
+select sum(dc) from empty;
+
+-- variations
+select sum(i), sum(s), sum(r), sum(l) from empty;
+select sum(i+1) from empty;
+
+-- vector
+select sum(i) from empty group by i;
+select sum(s) from empty group by s;
+select sum(d) from empty group by d;
+select sum(l) from empty group by l;
+select sum(r) from empty group by r;
+select sum(dc) from empty group by dc;
+
+
+--------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select sum(i) from t;
+select sum(s) from t;
+select sum(d) from t;
+select sum(l) from t;
+select sum(r) from t;
+select sum(dc) from t;
+
+select sum(i) from t group by i;
+select sum(s) from t group by s;
+select sum(d) from t group by d;
+select sum(l) from t group by l;
+select sum(r) from t group by r;
+select sum(dc) from t group by dc;
+
+-- constants
+select sum(1) from t;
+select sum(1.1) from t;
+select sum(1e1) from t;
+
+select sum(1) from t group by i;
+select sum(1.1) from t group by r;
+select sum(1e1) from t group by r;
+
+-- multicolumn grouping
+select sum(i), sum(l), sum(r) from t group by i, dt, b;
+select i, dt, sum(i), sum(r), sum(l), l from t group by i, dt, b, l; 
+
+-- group by expression
+select sum(expr1), sum(expr2)
+from (select i * s, r * 2 from t) t (expr1, expr2) group by expr2, expr1;
+
+-- distinct and group by
+select distinct sum(i) from t group by i, dt;
+
+-- insert select
+create table tmp (x int, y smallint);
+insert into tmp (x, y) select sum(i), sum(s) from t;
+select * from tmp;
+insert into tmp (x, y) select sum(i), sum(s) from t group by b;
+select * from tmp;
+drop table tmp;
+
+-- overflow
+create table tmp (x int);
+insert into tmp values (2147483647),
+                     (2147483647);
+select sum(x) from tmp;
+drop table tmp;
+
+create table tmp (x double precision);
+insert into tmp values (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647),
+                     (2147483647);
+select sum(x) from tmp;
+drop table tmp;
+
+-- drop tables
+drop table t;
+drop table empty;
+-- ** insert max.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+
+-- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+-- bit maps to Byte[], so can't test for now
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 222.22);
+insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 222.22);
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'1111111111111111', 111.11);
+
+--------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+
+-- long varchar datatypes too
+create table t1 (c1 long varchar);
+select max(c1) from t1;
+drop table t1;
+
+---------------------------
+-- NULL AGGREGATION
+---------------------------
+
+-- scalar
+select max(i) from empty;
+select max(s) from empty;
+select max(l) from empty;
+select max(c) from empty;
+select max(v) from empty;
+select max(d) from empty;
+select max(r) from empty;
+select max(dt) from empty;
+select max(t) from empty;
+select max(ts) from empty;
+select max(b) from empty;
+select max(bv) from empty;
+select max(dc) from empty;
+
+-- variations
+select max(i), max(b), max(i), max(s) from empty;
+select max(i+1) from empty;
+
+-- vector
+select max(i) from empty group by i;
+select max(s) from empty group by s;
+select max(l) from empty group by l;
+select max(c) from empty group by c;
+select max(v) from empty group by v;
+select max(d) from empty group by d;
+select max(r) from empty group by r;
+select max(dt) from empty group by dt;
+select max(t) from empty group by t;
+select max(ts) from empty group by ts;
+select max(b) from empty group by b;
+select max(bv) from empty group by bv;
+select max(dc) from empty group by dc;
+
+
+--------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select max(i) from t;
+select max(s) from t;
+select max(l) from t;
+select max(c) from t;
+select max(v) from t;
+select max(d) from t;
+select max(r) from t;
+select max(dt) from t;
+select max(t) from t;
+select max(ts) from t;
+select max(b) from t;
+select max(bv) from t;
+select max(dc) from t;
+
+select max(i) from t group by i;
+select max(s) from t group by s;
+select max(l) from t group by l;
+select max(c) from t group by c;
+select max(v) from t group by v;
+select max(d) from t group by d;
+select max(r) from t group by r;
+select max(dt) from t group by dt;
+select max(t) from t group by t;
+select max(ts) from t group by ts;
+select max(b) from t group by b;
+select max(bv) from t group by bv;
+select max(dc) from t group by dc;
+
+-- constants
+select max(1) from t;
+select max('hello') from t;
+select max(1.1) from t;
+select max(1e1) from t;
+select max(X'11') from t;
+select max(date('1999-06-06')) from t;
+select max(time('12:30:30')) from t;
+select max(timestamp('1999-06-06 12:30:30')) from t;
+
+select max(1) from t group by i;
+select max('hello') from t group by c;
+select max(1.1) from t group by dc;
+select max(1e1) from t group by d;
+select max(X'11') from t group by b;
+select max(date('1999-06-06')) from t group by dt;
+select max(time('12:30:30')) from t group by t;
+select max(timestamp('1999-06-06 12:30:30')) from t group by ts;
+
+-- multicolumn grouping
+select max(i), max(dt), max(b) from t group by i, dt, b;
+select l, dt, max(i), max(dt), max(b), i from t group by i, dt, b, l; 
+
+-- group by expression
+select max(expr1), max(expr2)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+
+-- distinct and group by
+select distinct max(i) from t group by i, dt;
+
+-- insert select
+create table tmp (x int, y char(20));
+insert into tmp (x, y) select max(i), max(c) from t;
+select * from tmp;
+insert into tmp (x, y) select max(i), max(c) from t group by b;
+select * from tmp;
+drop table tmp;
+
+-- drop tables
+drop table t;
+drop table empty;
+-- ** insert min.sql
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+
+-- empty table
+create table empty (i int, s smallint, l bigint,
+				c char(10), v varchar(50), 
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(8) for bit data, dc decimal(5,2));
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (1, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 200, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 222.22);
+insert into t values (0, 100, 2000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 222.22);
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'noone is here', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0000111100001111', 111.11);
+insert into t values (0, 100, 1000000,
+					  'duplicate', 'this is duplicated', 
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'1111111111111111', 111.11);
+
+--------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+
+-- long varchar datatypes too
+create table t1 (c1 long varchar);
+select min(c1) from t1;
+drop table t1;
+
+---------------------------
+-- NULL AGGREGATION
+---------------------------
+
+-- scalar
+select min(i) from empty;
+select min(s) from empty;
+select min(l) from empty;
+select min(c) from empty;
+select min(v) from empty;
+select min(d) from empty;
+select min(r) from empty;
+select min(dt) from empty;
+select min(t) from empty;
+select min(ts) from empty;
+select min(b) from empty;
+select min(bv) from empty;
+select min(dc) from empty;
+
+-- variations
+select min(i), min(b), min(i), min(s) from empty;
+select min(i+1) from empty;
+
+-- vector
+select min(i) from empty group by i;
+select min(s) from empty group by s;
+select min(l) from empty group by l;
+select min(c) from empty group by c;
+select min(v) from empty group by v;
+select min(d) from empty group by d;
+select min(r) from empty group by r;
+select min(dt) from empty group by dt;
+select min(t) from empty group by t;
+select min(ts) from empty group by ts;
+select min(b) from empty group by b;
+select min(bv) from empty group by bv;
+select min(dc) from empty group by dc;
+
+
+--------------------------------
+-- BASIC ACCEPTANCE TESTS
+--------------------------------
+select min(i) from t;
+select min(s) from t;
+select min(l) from t;
+select min(c) from t;
+select min(v) from t;
+select min(d) from t;
+select min(r) from t;
+select min(dt) from t;
+select min(t) from t;
+select min(ts) from t;
+select min(b) from t;
+select min(bv) from t;
+select min(dc) from t;
+
+select min(i) from t group by i;
+select min(s) from t group by s;
+select min(l) from t group by l;
+select min(c) from t group by c;
+select min(v) from t group by v;
+select min(d) from t group by d;
+select min(r) from t group by r;
+select min(dt) from t group by dt;
+select min(t) from t group by t;
+select min(ts) from t group by ts;
+select min(b) from t group by b;
+select min(bv) from t group by bv;
+select min(dc) from t group by dc;
+
+-- constants
+select min(1) from t;
+select min('hello') from t;
+select min(1.1) from t;
+select min(1e1) from t;
+select min(X'11') from t;
+select min(date('1999-06-06')) from t;
+select min(time('12:30:30')) from t;
+select min(timestamp('1999-06-06 12:30:30')) from t;
+
+select min(1) from t group by i;
+select min('hello') from t group by c;
+select min(1.1) from t group by dc;
+select min(1e1) from t group by d;
+select min(X'11') from t group by b;
+select min(date('1999-06-06')) from t group by dt;
+select min(time('12:30:30')) from t group by t;
+select min(timestamp('1999-06-06 12:30:30')) from t group by ts;
+
+-- multicolumn grouping
+select min(i), min(dt), min(b) from t group by i, dt, b;
+select l, dt, min(i), min(dt), min(b), i from t group by i, dt, b, l; 
+
+-- group by expression
+select min(expr1), min(expr2)
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1;
+
+-- distinct and group by
+select distinct min(i) from t group by i, dt;
+
+-- insert select
+create table tmp (x int, y char(20));
+insert into tmp (x, y) select min(i), min(c) from t;
+select * from tmp;
+insert into tmp (x, y) select min(i), min(c) from t group by b;
+select * from tmp;
+drop table tmp;
+
+-- drop tables
+drop table t;
+drop table empty;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggbuiltin_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+#
+# only copied this from default_app.properties to specify no run with j9
+# for this test runs into a jvm crash especially when run in sps mode. see beetle 4874.
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregate.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregate.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,405 @@
+
+-- ** insert aggregatesPositive.sql
+autocommit on;
+-- General aggregate tests.  Aggregate
+-- specifics are tested in specific test (e.g. sum.jsql).
+--
+-- Note that this test does NOT test multiple datatypes,
+-- that is exercised in the specific aggregate tests.
+-- INSERT SELECT is also in the specific aggregate tests.
+-- 
+-- need to add: objects
+
+create table t1 (c1 int, c2 int);
+create table t2 (c1 int, c2 int);
+create table oneRow (c1 int, c2 int);
+insert into oneRow values(1,1);
+create table empty (c1 int, c2 int);
+create table emptyNull (c1 int, c2 int);
+insert into emptyNull values (null, null);
+insert into t1 values (null, null), (1,1), (null, null), (2,1), (3,1), (10,10);
+insert into t2 values (null, null), (1,1), (null, null), (2,1), (3,1), (10,10);
+select * from t1;
+
+--------------------------------------
+-- Expressions within an aggregate
+--------------------------------------
+select max(c1+10) from t1;
+select max(c1+10) from t1 group by c2;
+
+select max(2*10) from t1;
+select max(2*10) from t1 group by c2;
+
+-- conditional operator within aggregate
+select max(case when c1 <> 1 then 666 else 999 end) from oneRow;
+select max(case when c1 = 1 then 666 else c2 end) from oneRow;
+select max(case when c1 = 1 then 666 else c1 end) from oneRow;
+
+-- subquery in aggregate
+select max((select c1 from empty)) from t1;
+
+-- cast to string in aggregate
+select max(cast (c1 as char(1))) from oneRow;
+
+-- cast to string in aggregate and concatenate with another
+select max(cast(c1 as char(1)) || cast (c2 as char(1))) from oneRow;
+
+-- unary
+select max(-c1) from t1;
+
+-- count
+select count(c1) from t1;
+
+-- cast
+select count(cast (null as int)) from t1;
+
+-- avg
+-- DB2 returns error 22003
+-- CS returns no error!
+select avg(2147483647) from t1;
+
+--------------------------------------
+-- Expressions on an aggregates/with aggregates
+--------------------------------------
+select 10+sum(c1) from t1;
+select 10+sum(c1+10) from t1; 
+
+-- conditional operator on aggregate
+select (case when max(c1) = 1 then 666 else 1 end) from t1;
+select (case when max(c1) = 1 then 666 else c1 end) from t1 group by c1;
+
+-- method call on aggregate, cannot use nulls
+select cast (max(c1) as char(1)) from oneRow;
+select cast (max(c1) as char(1)) from oneRow group by c1;
+select (cast(c1 as char(1)) || (cast (max(c2) as char(1)))) from oneRow group by c1;
+
+-- subquery on aggregate
+select (select max(c1) from t2)from t1;
+select (select max(c1) from oneRow group by c2)from t1;
+
+-- unary
+select -max(c1) from t1; 
+select -max(c1) from t1 group by c1;
+
+-- cast
+select cast (null as int), count(c1) from t1 group by c1;
+select count(cast (null as int)) from t1 group by c1;
+
+-- binary list operator
+-- beetle 5571 - transient boolean type not allowed in DB2
+select (1 in (1,2)), count(c1) from t1 group by c1;
+select count((1 in (1,2))) from t1 group by c1;
+
+-- some group by specific tests
+select c2, 10+sum(c1), c2 from t1 group by c2;
+select c2, 10+sum(c1+10), c2*2 from t1 group by c2;
+select c2+sum(c1)+c2 from t1 group by c2;
+select (c2+sum(c1)+c2)+10, c1, c2 from t1 group by c1, c2;
+select c1+10, c2, c1*1, c1, c2*5 from t1 group by c1, c2;
+
+--------------------------------------
+-- Distincts
+--------------------------------------
+select sum(c1) from t1;
+select sum(distinct c1) from t1;
+select sum(distinct c1), sum(c1) from t1;
+select sum(distinct c1), sum(c1) from oneRow;
+select max(c1), sum(distinct c1), sum(c1) from t1;
+select sum(distinct c1) from empty;
+select sum(distinct c1) from emptyNull;
+
+select sum(c1) from t1 group by c2;
+select sum(distinct c1) from t1 group by c2;
+select sum(distinct c1), sum(c1) from t1 group by c2;
+select sum(distinct c1), sum(c1) from oneRow group by c2;
+select max(c1), sum(distinct c1), sum(c1) from t1 group by c2;
+select c2, max(c1), c2+1, sum(distinct c1), c2+2, sum(c1) from t1 group by c2;
+select sum(distinct c1) from empty group by c2;
+select sum(distinct c1) from emptyNull group by c2;
+
+--------------------------------------
+-- Subqueries in where clause
+--------------------------------------
+-- subqueries that might return more than 1 row
+select c1 from t1 where c1 not in (select sum(c1) from t2);
+select c1 from t1 where c1 not in (select sum(distinct c1) from t2);
+select c1 from t1 where c1 not in (select sum(distinct c1)+10 from t2);
+
+select c1 from t1 where c1 in (select max(c1) from t2 group by c2);
+select c1 from t1 where c1 in (select max(distinct c1) from t2 group by c2);
+select c1 from t1 where c1 in (select max(distinct c1)+10 from t2 group by c2);
+
+-- subqueries that return 1 row
+select c1 from t1 where c1 = (select max(c1) from t2);
+select c1 from t1 where c1 = (select max(distinct c1) from t2);
+select c1 from t1 where c1 = (select max(distinct c1)+10 from t2);
+
+select c1 from t1 where c1 = (select max(c1) from oneRow group by c2);
+select c1 from t1 where c1 = (select max(distinct c1) from oneRow group by c2);
+select c1 from t1 where c1 = (select max(distinct c1)+10 from oneRow group by c2);
+
+--------------------------------------
+-- From Subqueries (aka table expressions)
+--------------------------------------
+select tmpC1 from 
+	(select max(c1+10) from t1) as tmp (tmpC1);
+select max(tmpC1) from 
+	(select max(c1+10) from t1) as tmp (tmpC1);
+select tmpC1 from 
+	(select max(c1+10) from t1 group by c2) as tmp (tmpC1);
+select max(tmpC1) from 
+	(select max(c1+10) from t1 group by c2) as tmp (tmpC1);
+
+select max(tmpC1), tmpC2 from 
+	(select max(c1+10), c2 from t1 group by c2) as tmp (tmpC1, tmpC2)
+group by tmpC2;
+
+--------------------------------------
+-- Cartesian product on from subquery: forces
+-- multiple opens/closes on the sort
+-- result set (bug 447)
+--------------------------------------
+select * from t1, (select max(c1) from t1) as mytab(c1);
+select * from t1, (select max(c1) from t1 group by c1) as mytab(c1);
+
+--------------------------------------
+-- Union
+--------------------------------------
+select max(c1) from t1
+union all
+select max(c1) from t2;
+
+--------------------------------------
+-- Joins
+--------------------------------------
+select max(t1.c1), max(t2.c2) 
+from t1, t2
+where t1.c1 = t2.c1;
+
+select max(t1.c1), max(t2.c2) 
+from t1, t2
+where t1.c1 = t2.c1
+group by t1.c1;
+
+
+--------------------------------------
+-- Having
+--------------------------------------
+
+-- having with agg on a join
+select max(t1.c1), max(t2.c2) 
+from t1, t2
+where t1.c1 = t2.c1
+group by t1.c1
+having count(*) > 0;
+
+-- having with subqueries and aggs, agg on grouping col
+select c1 from t1
+group by c1
+having max(c2) in (select c1 from t2);
+
+-- agg not on grouping column
+select c1 from t1
+group by c1
+having max(c2) in (select c1 from t2);
+
+-- having with a subquery that returns a single value
+select c1 from t1
+group by c1
+having avg(c2) in (select max(t2.c1) from t2);
+
+-- similar to above
+select c1 from t1
+group by c1
+having (select max(t2.c1) from t2) = avg(c2);
+
+-- various and sundry column references in the having clause
+select c1 from t1
+group by c1
+having max(c2) > (select avg(t2.c1 + t1.c1)-20 from t2);
+
+-- multiple subqueries
+select c1 from t1
+group by c1
+having (max(c2) in (select c1 from t2)) OR
+		(max(c1) in (select c2-999 from t2)) OR
+		(count(*) > 0)
+;
+
+-- non-correlated subquery w/o aggregate in aggreate select list
+select max(c1), (select c1 from oneRow) from t1;
+select max(c1), (select c1 from oneRow) from t1 group by c1;
+
+
+--- tests of exact numeric results
+
+create table bd (i decimal(31,30));
+insert into bd values(0.1);
+insert into bd values(0.2);
+select * from bd;
+
+-- should be the same
+select avg(i), sum(i)/count(i) from bd;
+drop table bd;
+
+create table it (i int);
+insert into it values (1);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (0);
+insert into it values (200001);
+
+-- should be the same
+select avg(i), sum(i)/count(i), sum(i), count(i) from it;
+drop table it;
+
+--- test avg cases where the sum will overflow
+create table ovf_int (i int);
+insert into ovf_int values (2147483647);
+insert into ovf_int values (2147483647 - 1);
+insert into ovf_int values (2147483647 - 2);
+select avg(i), 2147483647 - 1 from ovf_int;
+drop table ovf_int;
+
+create table ovf_small (i smallint);
+insert into ovf_small values (32767);
+insert into ovf_small values (32767 - 1);
+insert into ovf_small values (32767 - 2);
+select avg(i), 32767 - 1 from ovf_small;
+drop table ovf_small;
+
+create table ovf_long (i bigint);
+insert into ovf_long values (9223372036854775807);
+insert into ovf_long values (9223372036854775807 - 1);
+insert into ovf_long values (9223372036854775807 - 2);
+-- beetle 5571 - transient boolean type not allowed in DB2 UDB
+select avg(i), 9223372036854775807 - 1 from ovf_long;
+select avg(i), 9223372036854775807 from ovf_long;
+-- operands are allowed in DB2 UDB
+select avg(i) from ovf_long;
+select avg(i) - 1  from ovf_long;
+drop table ovf_long;
+
+-- Test that AVG is not limited by columns type precision
+-- using DB2 MAX REAL VALUES
+create table ovf_real (i real);
+insert into ovf_real values (+3.402E+38);
+insert into ovf_real values (+3.402E+38 - 1);
+insert into ovf_real values (+3.402E+38 - 2);
+select avg(i) from ovf_real;
+drop table ovf_real;
+
+-- Test that AVG is not limited by columns type precision
+-- using DB2 MAX DOUBLE VALUES
+create table ovf_double (i double precision);
+insert into ovf_double values (+1.79769E+308);
+insert into ovf_double values (+1.79769E+308 - 1);
+insert into ovf_double values (+1.79769E+308 - 2);
+select avg(i) from ovf_double;
+drop table ovf_double;
+
+--------------------------------------
+-- CLEAN UP
+--------------------------------------
+drop table t1;
+drop table t2;
+drop table oneRow;
+drop table empty;
+drop table emptyNull;
+
+-- ** insert aggregateNegative.sql
+-- For aggregates.  General issues
+autocommit on;
+create table t (i int, l bigint);
+create table t1 (c1 int);
+create table t2 (c1 int);
+--------------------------------------
+-- NEGATIVE TESTS
+--------------------------------------
+
+-- only a single distinct is supported
+select sum(distinct i), sum(distinct l) from t;
+
+-- parameters in aggregate
+prepare p1 as 'select max(?) from t';
+
+-- aggregates in aggregates
+select max(max(i)) from t;
+select max(1+1+1+max(i)) from t;
+
+-- TEMPORARY RESTRICTION, aggregates in the select list
+-- of a subquery on an aggregated result set
+select max(c1), (select max(c1) from t2) from t1;
+select max(c1), (select max(t1.c1) from t2) from t1;
+select max(c1), max(c1), (select max(c1) from t1) from t1;
+
+-- cursor with aggregate is not updatable
+get cursor c1 as 'select max(i) from t group by i for update';
+
+-- max over a join on a column with an index -- Beetle 4423
+create table t3(a int);
+insert into t3 values(1),(2),(3),(4),(5);
+create table t4(a int);
+insert into t4 select a from t3;
+create index tindex on t3(a);
+select max(t3.a)
+from t3, t4
+where t3.a = t4.a
+and t3.a = 1;
+
+drop table t;
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+
+-- beetle 5122, aggregate on JoinNode
+
+CREATE TABLE DOCUMENT_VERSION
+   (
+      DOCUMENT_ID INT,
+      DOCUMENT_STATUS_ID INT
+   )
+;
+
+insert into DOCUMENT_VERSION values (2,2),(9,9),(5,5),(1,3),(10,5),(1,6),(10,8),(1,10);
+
+CREATE VIEW MAX_DOCUMENT_VERSION
+   AS SELECT  DOCUMENT_ID  FROM DOCUMENT_VERSION
+;
+
+
+CREATE VIEW MAX_DOCUMENT_VERSION_AND_STATUS_ID
+   AS SELECT  MAX(DV.DOCUMENT_STATUS_ID) AS MAX_DOCUMENT_STATUS_ID
+   FROM DOCUMENT_VERSION AS DV , MAX_DOCUMENT_VERSION 
+   WHERE DV.DOCUMENT_ID = 1;
+
+
+CREATE VIEW LATEST_DOC_VERSION
+   AS SELECT DOCUMENT_ID 
+   FROM DOCUMENT_VERSION AS DV, MAX_DOCUMENT_VERSION_AND_STATUS_ID AS MDVASID
+   WHERE DV.DOCUMENT_ID = MDVASID.MAX_DOCUMENT_STATUS_ID;
+
+select * from LATEST_DOC_VERSION;
+
+drop view LATEST_DOC_VERSION;
+drop view MAX_DOCUMENT_VERSION_AND_STATUS_ID;
+drop view  MAX_DOCUMENT_VERSION;
+drop table DOCUMENT_VERSION;
+
+-- Defect 5737. Prevent aggregates being used in VALUES clause or WHERE clause.
+create table tmax(i int);
+values sum(1);
+values max(3);
+
+select * from tmax where sum(i)=1;
+select i from tmax where substr('abc', sum(1), 3) = 'abc';
+
+drop table tmax;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,272 @@
+-- test various aggregate optimizations
+set isolation to rr;
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+-- create and populate tables
+create table t1(c1 int, c2 char(200));
+insert into t1 (c1) values 10, 9, 10, 9, 8, 7, 6, 1, 3;
+update t1 set c2 = CHAR(c1);
+
+-- distinct min -> min, distinct max -> max
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 7000;
+
+select min(distinct c1), max(distinct(c1)) from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select min(distinct c1), max(distinct(c1)) from t1 group by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- min optimization
+create index i1 on t1(c1);
+-- min column is 1st column in index
+select min(c1) from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+create index i2 on t1(c2, c1);
+-- equality predicates on all key columns preceding min column 
+select min(c1) from t1 where c2 = '10';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- equality predicates on all key columns preceding min column, 
+-- not a unique index
+select min(c2) from t1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+delete from t1;
+drop index i1;
+create unique index i1 on t1(c1);
+insert into t1 values (1, '1'), (2, '2');
+-- equality predicates on all key columns preceding min column, 
+-- a unique index
+select min(c2) from t1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- group by ordered on grouping columns
+create table t2(c1 int, c2 int, c3 int, c4 int);
+create index t2_i1 on t2(c1);
+create index t2_i2 on t2(c1, c2);
+-- empty table
+select c1, sum(c2) from t2 group by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- 1 row table
+insert into t2 values (1, 1, 1, 1);
+select c1, sum(c2) from t2 group by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- multiple rows, 1 group
+insert into t2 values (1, 2, 2, 2), (1, -1, -1, -1);
+select c1, sum(c2) from t2 group by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- multiple rows, multiple groups
+insert into t2 values (2, 3, 2, 2), (2, 3, -1, -1);
+select c1, sum(c2) from t2 group by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- ordered, but in reverse order 
+select c2, c1, sum(c3) from t2 group by c2, c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- clean up
+drop table t1;
+drop table t2;
+
+
+--
+-- max optimization: the optimization is to call the store
+-- with a special request for the last row in an index.  so
+-- we cannot deal with any predicates
+--
+set isolation read committed;
+create table x (x int, y int);
+create index ix on x(x);
+create index ixy on x(x,y);
+insert into x values (3,3),(7,7),(2,2),(666,6),(1,1);
+
+select max(x) from x;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(x) from x;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- cannot use max opt
+select max(x) from x;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(x) from x where x < 99;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(x) from x where x = 7;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(x) from x where y = 7;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(x) from x where y = 7;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(y) from x where y = 7;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select max(x) from x group by x;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- could do max optimization on this, but we don't 
+-- really know much about qualifications
+select max(x) from x where x > 99;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+
+autocommit off;
+
+prepare p as 'select max(x) from x';
+execute p;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into x values (99999,99999);
+execute p;
+rollback;
+execute p;
+delete from x;
+execute p;
+rollback;
+
+-- since max uses some funky store interface, lets
+-- check locking
+connect 'wombat' as conn2;
+set isolation to rr;
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+autocommit off;
+insert into x values (99999,null);
+
+set connection connection0;
+-- should deadlock
+select max(x) from x;
+
+set connection conn2;
+commit;
+insert into x values (99980,null);
+
+set connection connection0;
+-- ok - should not block on previous key (lock held by conn2 on 99980)
+select max(x) from x;
+
+set connection conn2;
+delete from x where x = 99980;
+delete from x where x = 99999;
+commit;
+
+set connection connection0;
+-- ok
+select max(x) from x;
+
+set connection conn2;
+insert into x values (-1,null);
+
+set connection connection0;
+-- does not deadlock in current implementation, as it handles cases where
+-- the last row is deleted, but the maximum values is somewhere on the last
+-- page.
+select max(x) from x;
+
+set connection conn2;
+insert into x values (100000,null);
+commit;
+
+set connection connection0;
+-- ok
+select max(x) from x;
+
+set connection connection0;
+rollback;
+disconnect;
+
+set connection conn2;
+rollback;
+disconnect;
+
+
+-- check case where all rows are deleted off the last page of index, store 
+-- will fault over to doing full table scan, rather than max optimization.
+
+connect 'wombat' as conn1;
+set isolation to rr;
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+autocommit off;
+drop table x;
+create table x (a bigint, b int);
+
+-- insert enough rows so that there are multiple pages in the index.
+insert into x values (1, 1);
+insert into x (select a + 1,   b from x);
+insert into x (select a + 2,   b from x);
+insert into x (select a + 4,   b from x);
+insert into x (select a + 8,   b from x);
+insert into x (select a + 16,  b from x);
+insert into x (select a + 32,  b from x);
+insert into x (select a + 64,  b from x);
+insert into x (select a + 128, b from x);
+insert into x (select a + 256, b from x);
+create index x_idx on x (a);
+commit;
+
+connect 'wombat' as conn2;
+set isolation to rr;
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+autocommit off;
+commit;
+
+set connection conn1;
+-- get lock on first row of table
+insert into x values (0, 0);
+
+set connection conn2;
+-- delete all the rows from the last page in the index, but don't commit or
+-- else post commit will remove the page from the index.
+delete from x where a > 4;
+
+-- lock timeout in current implementation - to be fixed when row level locked
+-- backward scan exists.
+--
+--      this one deadlocks because we have not done a complete implementation
+--      of backward scan for max on btree.  If the last page in the table is
+--      all deletes, then instead of doing a backward scan we fault over
+--      to the un-optimized max code which does a forward scan from the 
+--      beginnning of the table.
+select max(a) from x;
+
+-- cleanup
+set connection conn1;
+rollback;
+disconnect;
+set connection conn2;
+drop table x;
+commit;
+-- test a table with null values to be sure we do the right thing on optimization
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+create table t1(a int, b int);
+insert into t1 values (null, null);
+insert into t1 values (10, 10), (9, 9), (10, 10), (9, 9), (8, 8), (7, 7), (6, 6), 
+	(1,1), (3,3);
+create index aindex on t1(a);
+create index bindex on t1(b desc);
+select min(a) from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- min of b should use max optimization whether b in nullable or not because NULLS are sorted high
+select min(b) from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select max(a) from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select max(b) from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+create table t2 (a int not null, b int not null);
+insert into t2 select a, b from t1 where a is not null and b is not null;
+create index bindex2 on t2(b desc);
+-- min of b should use max optimization since b is nullable or not because NULLS are sorted high
+select min(b) from t2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+drop table t1;
+drop table t2;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+ij.protocol=jdbc:derby:
+usedefaults=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/aggregateOptimization_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,10 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20
+
+# we want deadlocks to be quick
+derby.locks.deadlockTimeout=5
+derby.locks.waitTimeout=2

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,554 @@
+-- alter table tests
+-- add column
+-- (add constraint & drop constraint to be added)
+
+-- create some database objects
+create table t0(c1 int not null constraint p1 primary key);
+create table t0_1(c1 int);
+create table t0_2(c1 int);
+create table t0_3(c1 int);
+create table t1(c1 int);
+create table t1_1(c1 int);
+create table t2(c1 int);
+create table t3(c1 int);
+create table t4(c1 int not null);
+create view v1 as select * from t2;
+create view v2 as select c1 from t2;
+create index i0_1 on t0_1(c1);
+create index i0_2 on t0_2(c1);
+
+-- do some population
+insert into t1 values 1;
+insert into t1_1 values 1;
+insert into t2 values 1;
+insert into t2 values 2;
+insert into t3 values 1;
+insert into t3 values 2;
+insert into t3 values 3;
+insert into t4 values 1, 2, 3, 1;
+
+autocommit off;
+
+-- add column
+
+-- negative tests
+
+-- alter a non-existing table
+alter table notexists add column c1 int;
+
+-- add a column that already exists
+alter table t0 add column c1 int;
+
+-- alter a system table
+alter table sys.systables add column c1 int;
+
+-- alter table on a view
+alter table v2 add column c2 int;
+
+-- add a primary key column to a table which already has one
+-- this will produce an error
+alter table t0 add column c2 int not null default 0 primary key;
+
+-- add a unique column constraint to a table with > 1 row
+alter table t3 add column c2 int not null default 0 unique;
+
+-- cannot alter a table when there is an open cursor on it
+get cursor c1 as 'select * from t1';
+alter table t1 add column c2 int;
+close c1;
+
+-- positive tests
+
+-- add a non-nullable column to a non-empty table
+alter table t1 add column c2 int not null default 0;
+
+-- add a primary key column to a non-empty table
+alter table t1 add column c3 int not null default 0 primary key;
+
+-- add a column with a check constraint to a non-empty column
+alter table t1 add column c4 int check(c4 = 1);
+
+
+select * from v1;
+prepare p1 as 'select * from t2';
+execute p1;
+
+alter table t2 add column c2 int;
+
+-- select * views don't see added columns after alter table
+select * from v1;
+
+-- select * prepared statements do see added columns after alter table
+execute p1;
+
+-- rollback and recheck
+rollback;
+select * from v1;
+execute p1;
+remove p1;
+
+-- add non-nullable column to 0 row table and verify
+alter table t0 add column c2 int not null default 0;
+insert into t0 values (1, default);
+select * from t0;
+drop table t0;
+rollback;
+select  * from t0;
+
+-- add primary key to 0 row table and verify
+alter table t0_1 add column c2 int not null primary key default 0;
+insert into t0_1 values (1, 1);
+insert into t0_1 values (1, 1);
+select * from t0_1;
+rollback;
+
+-- add unique constraint to 0 and 1 row tables and verify 
+ alter table t0_1 add column c2 int not null unique default 0;
+ insert into t0_1 values (1, default);
+ insert into t0_1 values (2, default);
+ insert into t0_1 values (3, 1);
+ delete from t1;
+ alter table t1 add column c2 int not null unique default 0;
+ insert into t1 values (2, 2);
+ insert into t1 values (3, 1);
+
+-- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T';
+
+ rollback;
+
+create function countopens() returns varchar(128)
+language java parameter style java
+external name 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.countOpens';
+commit;
+
+-- do consistency check on scans, etc.
+values countopens();
+
+
+-- some typical data
+
+create table tab1 (c1 int, c2 int not null constraint tab1pk primary key, c3 double, c4 int);
+create index i11 on tab1 (c1);
+create unique index i12 on tab1 (c1);
+create index i13 on tab1 (c3, c1, c4);
+create unique index i14 on tab1 (c3, c1);
+insert into tab1 values (6, 5, 4.5, 90);
+insert into tab1 values (10, 3, 8.9, -5);
+insert into tab1 values (100, 15, 4.5, 9);
+insert into tab1 values (2, 8, 4.4, 8);
+insert into tab1 values (11, 9, 2.5, 88);
+insert into tab1 values(null,10, 3.5, 99);
+
+create view vw1 (col_sum, col_diff) as select c1+c4, c1-c4 from tab1;
+create view vw2 (c1) as select c3 from tab1;
+
+create table tab2 (c1 int not null unique, c2 double, c3 int, c4 int not null constraint c4_PK primary key, c5 int, constraint t2ck check (c2+c3<100.0));
+create table tab3 (c1 int, c2 int, c3 int, c4 int, constraint t3fk foreign key (c2) references tab2(c1), constraint t3ck check (c2-c3<80));
+
+create view vw3 (c1, c2) as select c5, tab3.c4 from tab2, tab3 where tab3.c1 > 0;
+create view vw4 (c1) as select c4 from tab3 where c2 > 8;
+
+create table tab4 (c1 int, c2 int, c3 int, c4 int);
+create table tab5 (c1 int);
+insert into tab4 values (1,2,3,4);
+create trigger tr1 after update of c2, c3, c4 on tab4 for each row mode db2sql insert into tab5 values (1);
+create trigger tr2 after update of c3, c4 on tab4 for each row mode db2sql insert into tab5 values (2);
+
+-- tr1 is dropped, tr2 still OK
+drop trigger tr1;
+
+select * from tab5;
+-- fire tr2 only
+update tab4 set c3 = 33;
+update tab4 set c4 = 44;
+select * from tab5;
+
+-- drop tr2
+drop trigger tr2;
+
+update tab4 set c4 = 444;
+select * from tab2;
+
+drop view vw2;
+create view vw2 (c1) as select c3 from tab1;
+
+-- vw1 should be dropped
+drop view vw1;
+select * from vw1;
+
+-- do the indexes still exist?
+-- the create index statements should fail
+create index i13 on tab1 (c3, c1, c4);
+create unique index i14 on tab1 (c3, c1);
+create unique index i12 on tab1 (c1);
+select c2, c3, c4 from tab1 order by c3;
+drop index i12;
+drop index i13;
+drop index i14;
+
+-- more data
+insert into tab1 (c2, c3, c4) values (22, 8.9, 5);
+insert into tab1 (c2, c3, c4) values (11, 4.5, 67);
+select c2 from tab1;
+
+-- add a new column
+alter table tab1 add column c5 double;
+
+-- drop view vw2 so can create a new one, with where clause
+drop view vw2;
+create view vw2 (c1) as select c5 from tab1 where c2 > 5;
+
+-- drop vw2 as well
+drop view vw2;
+alter table tab1 drop constraint tab1pk;
+
+-- any surviving index? 
+-- creating the index should not fail
+select c4 from tab1 order by 1;
+create index i13 on tab1 (c3, c1, c4);
+
+-- should drop t2ck
+alter table tab2 drop constraint t2ck;
+
+-- this should drop t3fk, unique constraint and backing index
+alter table tab3 drop constraint t3fk;
+alter table tab2 drop constraint c4_PK;
+insert into tab3 values (1,2,3,4);
+
+-- drop view vw3
+drop view vw3;
+
+-- violates t3ck
+insert into tab3 (c1, c2, c3) values (81, 1, 2);
+insert into tab3 (c1, c2, c3) values (81, 2, 2);
+
+-- this should drop t3ck, vw4
+alter table tab3 drop constraint t3ck;
+drop view vw4;
+insert into tab3 (c2, c3) values (-82, 9);
+create view vw4 (c1) as select c3 from tab3 where c3+5>c4;
+
+-- drop view vw4
+drop view vw4;
+
+rollback;
+
+-- check that dropping a column will drop backing index on referencing
+-- table
+create table tt1(a int, b int not null constraint tt1uc unique);
+create table reftt1(a int constraint reftt1rc references tt1(b));
+-- count should be 2
+select count(*) 
+from sys.sysconglomerates c, sys.systables t 
+where t.tableid = c.tableid
+and t.tablename = 'REFTT1';
+
+alter table reftt1 drop constraint reftt1rc;
+alter table tt1 drop constraint tt1uc;
+
+-- count should be 1
+select count(*) 
+from sys.sysconglomerates c, sys.systables t 
+where t.tableid = c.tableid
+and t.tablename = 'REFTT1';
+rollback;
+
+-- add constraint
+
+-- negative tests
+
+-- add primary key to table which already has one
+alter table t0 add column c3 int;
+alter table t0 add constraint cons1 primary key(c3);
+alter table t0 add primary key(c3);
+
+-- add constraint references non-existant column
+
+alter table t4 add constraint t4pk primary key("c1");
+alter table t4 add constraint t4uq unique("c1");
+alter table t4 add constraint t4fk foreign key ("c1") references t0;
+alter table t4 add constraint t4ck check ("c1" <> 4);
+
+-- add primary key to non-empty table with duplicates
+alter table t4 add primary key(c1);
+
+-- positive tests
+
+-- add primary key to 0 row table and verify
+alter table t0_1 add column c2 int not null constraint p2 primary key default 0;
+insert into t0_1 values (1, 1);
+insert into t0_1 values (1, 1);
+select * from t0_1;
+rollback;
+
+-- add check constraint to 0 row table and verify
+alter table t0_1 add column c2 int check(c2 != 3);
+insert into t0_1 values (1, 1);
+insert into t0_1 values (1, 3);
+insert into t0_1 values (1, 1);
+select * from t0_1;
+rollback;
+
+-- add check constraint to table with rows that are ok
+alter table t0_1 add column c2 int;
+insert into t0_1 values (1, 1);
+insert into t0_1 values (2, 2);
+alter table t0_1 add constraint ck1 check(c2 = c1);
+select * from t0_1;
+
+-- verify constraint has been added, the following should fail
+insert into t0_1 values (1, 3);
+rollback;
+
+
+-- add check constraint to table with rows w/ 3 failures
+alter table t0_1 add column c2 int;
+insert into t0_1 values (1, 1);
+insert into t0_1 values (2, 2);
+insert into t0_1 values (2, 2);
+insert into t0_1 values (666, 2);
+insert into t0_1 values (2, 2);
+insert into t0_1 values (3, 3);
+insert into t0_1 values (666, 3);
+insert into t0_1 values (666, 3);
+insert into t0_1 values (3, 3);
+alter table t0_1 add constraint ck1 check(c2 = c1);
+
+-- verify constraint has NOT been added, the following should succeed
+insert into t0_1 values (1, 3);
+select * from t0_1;
+rollback;
+
+
+-- check and primary key constraints on same table and enforced
+alter table t0_1 add column c2 int not null constraint p2 primary key default 0;
+alter table t0_1 add check(c2 = c1);
+insert into t0_1 values (1, 1);
+insert into t0_1 values (1, 2);
+insert into t0_1 values (1, 1);
+insert into t0_1 values (2, 1);
+insert into t0_1 values (2, 2);
+select * from t0_1;
+rollback;
+
+-- add primary key constraint to table with > 1 row
+alter table t3 add column c3 int;
+alter table t3 add unique(c3);
+
+-- add unique constraint to 0 and 1 row tables and verify 
+alter table t0_2 add column c2 int not null unique default 0;
+insert into t0_2 values (1, default);
+insert into t0_2 values (1, 1);
+delete from t1_1;
+alter table t1_1 add column c2 int not null unique default 0;
+insert into t1_1 values (1, 2);
+insert into t1_1 values (1, 2);
+insert into t1_1 values (1, 1);
+
+-- add unique constraint to table with > 1 row
+alter table t3 add unique(c1);
+
+-- verify prepared alter table dependent on underlying table
+prepare p1 as 'alter table xxx add check(c2 = 1)';
+create table xxx(c1 int, c2 int);
+prepare p1 as 'alter table xxx add check(c2 = 1)';
+execute p1;
+drop table xxx;
+create table xxx(c1 int);
+execute p1;
+alter table xxx add column c2 int;
+execute p1;
+drop table xxx;
+
+-- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T';
+
+
+-- drop constraint
+
+-- negative tests
+
+-- drop non-existent constraint
+alter table t0 drop constraint notexists;
+
+-- constraint/table mismatch
+alter table t1 drop constraint p1;
+
+
+-- In DB2 compatibility mode, we cann't add a nullable primary key
+alter table t0_1 add constraint p2 primary key(c1);
+alter table t0_1 drop constraint p2;
+
+-- positive tests
+-- verify that we can add/drop/add/drop/... constraints
+alter table t0_1 add column c2 int not null constraint p2 primary key default 0;
+delete from t0_1;
+alter table t0_1 drop constraint p2;
+alter table t0_1 add constraint p2 primary key(c2);
+alter table t0_1 drop constraint p2;
+alter table t0_1 add constraint p2 primary key(c2);
+
+
+-- verify that constraint is still enforced
+insert into t0_1 values (1,1);
+insert into t0_1 values (1,1);
+
+-- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T' and tablename = 'T0_1';
+
+
+-- verify that alter table works after drop/recreate of table
+prepare p1 as 'alter table t0_1 drop constraint p2';
+execute p1;
+drop table t0_1;
+create table t0_1 (c1 int, c2 int not null constraint p2 primary key);
+execute p1;
+
+-- do consistency check on scans, etc.
+-- values (org.apache.derbyTesting.functionTests.util.ConsistencyChecker::countOpens());
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+
+-- verify the consistency of the indexes on the user tables
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', tablename)
+from sys.systables where tabletype = 'T';
+
+-- bugs 793
+create table b793 (pn1 int not null constraint named_primary primary key, 
+				   pn2 int constraint named_pn2 check (pn2 > 3));
+alter table b793 drop constraint named_primary;
+drop table b793;
+
+-- test that drop constraint removes backing indexes
+drop table t1;
+create table t1(a int not null constraint t1_pri primary key);
+create table reft1(a int constraint t1_ref references t1(a));
+-- count should be 2
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where c.tableid = t.tableid and
+t.tablename = 'REFT1';
+alter table reft1 drop constraint t1_ref;
+alter table t1 drop constraint t1_pri;
+-- count should be 1
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where c.tableid = t.tableid and
+t.tablename = 'REFT1';
+drop table reft1;
+
+
+-- clean up
+drop view v2;
+drop view v1;
+drop table t0;
+drop table t0_1;
+drop table t0_2;
+drop table t0_3;
+drop table t1;
+drop table t1_1;
+drop table t3;
+drop table t4;
+
+------------------------------------------------------
+--
+-- special funky schema tests
+--
+------------------------------------------------------
+
+create schema newschema;
+drop table x;
+create table x (x int not null, y int not null);
+alter table x add constraint newcons primary key (x);
+
+-- schemaname should be app
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+insert into x values (1,1),(1,1);
+alter table x drop constraint app.newcons;
+alter table x add constraint newcons primary key (x);
+
+-- schemaname should be app
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+
+-- fail
+alter table x drop constraint badschema.newcons;
+
+-- fail
+alter table x drop constraint newschema.newcons;
+
+-- ok
+alter table x drop constraint app.newcons;
+
+-- bad schema name
+alter table x add constraint badschema.newcons primary key (x);
+
+-- two constriants, same name, different schema (second will fail)
+drop table x;
+create table x (x int not null, y int not null);
+alter table x add constraint con check (x > 1);
+alter table x add constraint newschema.con check (x > 1);
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+
+create schema emptyschema;
+set schema emptyschema;
+
+-- fail, cannot find emptyschema.conn
+alter table app.x drop constraint emptyschema.con;
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1;
+
+set schema newschema;
+
+-- add constraint, default to table schema
+alter table app.x add constraint con2 check (x > 1);
+
+-- added constraint in APP (defaults to table's schema)
+select schemaname, constraintname from sys.sysconstraints c, sys.sysschemas s where s.schemaid = c.schemaid order by 1,2;
+
+drop table app.x;
+drop schema newschema restrict;
+
+
+-- some temporary table tests
+-- declare temp table with no explicit on commit behavior.
+declare global temporary table session.t1 (c11 int) not logged;
+declare global temporary table session.t2 (c21 int) on commit delete rows not logged;
+declare global temporary table session.t3 (c31 int) on commit preserve rows not logged;
+drop table session.t1;
+drop table session.t2;
+drop table session.t3;
+
+drop table t1;
+create table t1(c1 int, c2 int not null primary key);
+insert into t1 values (1, 1);
+insert into t1 values (1, 1);
+alter table t1 drop primary key;
+insert into t1 values (1, 1);
+select * from t1;
+alter table t1 drop primary key;
+
+alter table t1 drop constraint emptyschema.C1;
+alter table t1 drop constraint nosuchschema.C2;
+
+alter table t1 add constraint emptyschema.C1_PLUS_C2 check ((c1 + c2) < 100);
+alter table t1 add constraint C1_PLUS_C2 check ((c1 + c2) < 100);
+
+prepare alplus as 'alter table t1 drop constraint C1_PLUS_C2';
+alter table APP.t1 drop constraint APP.C1_PLUS_C2;
+execute alplus;
+remove alplus;
+
+drop table t1;
+
+-- bug 5817 - make LOGGED non-reserved keyword. following test cases for that
+create table LOGGED(c11 int);
+drop table LOGGED;
+create table logged(logged int);
+drop table logged;
+declare global temporary table session.logged(logged int) on commit delete rows not logged;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/altertable_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4 @@
+# wants to do consistency checking, so needs
+# the statement cache off to ensure no trailing dependencies exist
+derby.language.statementCacheSize=0
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/arithmetic.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/arithmetic.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,264 @@
+--
+-- Test the arithmetic operators
+--
+
+create table t (i int, j int);
+
+insert into t values (null, null);
+insert into t values (0, 100);
+insert into t values (1, 101);
+insert into t values (-2, -102);
+
+select i + j from t;
+
+select i, i + 10 + 20, j, j + 100 + 200 from t;
+
+select i - j, j - i from t;
+
+select i, i - 10 - 20, 20 - 10 - i, j, j - 100 - 200, 200 - 100 - j from t;
+
+select i, j, i * j, j * i from t;
+
+select i, j, i * 10 * -20, j * 100 * -200 from t;
+
+-- try unary minus on some expressions
+select -i, -j, -(i * 10 * -20), -(j * 100 * -200) from t;
+
+-- unary plus doesn't do anything
+select +i, +j, +(+i * +10 * -20), +(+j * +100 * -200) from t;
+
+-- test null/null, constant/null, null/constant
+select i, j, i / j, 10 / j, j / 10 from t;
+
+-- test for divide by 0
+select j / i from t;
+
+select (j - 1) / (i + 4), 20 / 5 / 4, 20 / 4 / 5 from t;
+
+-- test positive/negative, negative/positive and negative/negative
+select j, j / (0 - j), (0 - j) / j, (0 - j) / (0 - j) from t;
+
+-- test some "more complex" expressions
+select i, i + 10, i - (10 - 20), i - 10, i - (20 - 10) from t;
+
+select 'The next 2 columns should agree', 2 + 3 * 4 + 5, 2 + (3 * 4) + 5 from t;
+
+select 'The next column should be 45', (2 + 3) * (4 + 5) from t;
+
+-- test overflow
+delete from t;
+
+insert into t values (null, null);
+insert into t values (0, 100);
+insert into t values (1, 101);
+
+select i + 2147483647 from t;
+
+select i - 2147483647 - 1, 'This query should work' from t;
+select i - 2147483647 - 2, 'This query should fail' from t;
+
+select j * 2147483647 from t;
+select j * -2147483647 from t;
+
+insert into t values (-2147483648, 0);
+
+select -i from t;
+
+-- test the arithmetic operators on a type we know they don't work on
+create table s (x char(10), y char(10));
+
+select x + y from s;
+
+select x - y from s;
+
+select x * y from s;
+
+select x / y from s;
+
+select -x from s;
+
+-- do the same thing with smallints
+-- except that integer constants are ints!
+create table smallint_t (i smallint, j smallint);
+create table smallint_s (i smallint, j smallint);
+
+insert into smallint_t values (null, null);
+insert into smallint_t values (0, 100);
+insert into smallint_t values (1, 101);
+insert into smallint_t values (-2, -102);
+
+select i + j from smallint_t;
+
+select i, j, i + i + j, j + j + i from smallint_t;
+
+select i - j, j - i from smallint_t;
+
+select i, i - j - j, j - j - i, j, j - i - i, i - i - j from smallint_t;
+
+select i, j, i * j, j * i from smallint_t;
+
+select i, j, i * i * (i - j), j * i * (i - j) from smallint_t;
+
+select -i, -j, -(i * i * (i - j)), -(j * i * (i - j)) from smallint_t;
+
+-- test for divide by 0
+select j / i from smallint_t;
+
+-- test for overflow
+insert into smallint_s values (1, 32767);
+select i + j from smallint_s;
+select i - j - j from smallint_s;
+select j + j from smallint_s;
+select j * j from smallint_s;
+
+insert into smallint_s values (-32768, 0);
+
+select -i from smallint_s;
+
+-- test mixed types: int and smallint
+create table smallint_r (y smallint);
+
+insert into smallint_r values (2);
+
+select 65535 + y from smallint_r;
+select y + 65535 from smallint_r;
+select 65535 - y from smallint_r;
+select y - 65535 from smallint_r;
+select 65535 * y from smallint_r;
+select y * 65535 from smallint_r;
+select 65535 / y from smallint_r;
+select y / 65535 from smallint_r;
+
+
+-- do the same thing with bigints
+create table bigint_t (i bigint, j bigint);
+create table bigint_s (i bigint, j bigint);
+
+insert into bigint_t values (null, null);
+insert into bigint_t values (0, 100);
+insert into bigint_t values (1, 101);
+insert into bigint_t values (-2, -102);
+
+select i + j from bigint_t;
+
+select i, j, i + i + j, j + j + i from bigint_t;
+
+select i - j, j - i from bigint_t;
+
+select i, i - j - j, j - j - i, j, j - i - i, i - i - j from bigint_t;
+
+select i, j, i * j, j * i from bigint_t;
+
+select i, j, i * i * (i - j), j * i * (i - j) from bigint_t;
+
+select -i, -j, -(i * i * (i - j)), -(j * i * (i - j)) from bigint_t;
+
+-- test for divide by 0
+select j / i from bigint_t;
+
+-- test for overflow
+insert into bigint_s values (1, 9223372036854775807);
+select i + j from bigint_s;
+select i - j - j from bigint_s;
+select j + j from bigint_s;
+select j * j from bigint_s;
+
+select 2 * (9223372036854775807 / 2 + 1) from bigint_s;
+select -2 * (9223372036854775807 / 2 + 2) from bigint_s;
+select 2 * (-9223372036854775808 / 2 - 1) from bigint_s;
+select -2 * (-9223372036854775808 / 2 - 1) from bigint_s;
+
+insert into bigint_s values (-9223372036854775808, 0);
+
+select -i from bigint_s;
+select -j from bigint_s;
+
+select i / 2 * 2 + 1 from bigint_s;
+select j / 2 * 2 from bigint_s;
+
+-- test mixed types: int and bigint
+create table bigint_r (y bigint);
+
+insert into bigint_r values (2);
+
+select 2147483647 + y from bigint_r;
+select y + 2147483647 from bigint_r;
+select 2147483647 - y from bigint_r;
+select y - 2147483647 from bigint_r;
+select 2147483647 * y from bigint_r;
+select y * 2147483647 from bigint_r;
+select 2147483647 / y from bigint_r;
+select y / 2147483647 from bigint_r;
+
+-- test precedence and associativity
+create table r (x int);
+
+insert into r values (1);
+
+select 2 + 3 * 4 from r;
+select (2 + 3) * 4 from r;
+select 3 * 4 + 2 from r;
+select 3 * (4 + 2) from r;
+select 2 - 3 * 4 from r;
+select (2 - 3) * 4 from r;
+select 3 * 4 - 2 from r;
+select 3 * (4 - 2) from r;
+select 4 + 3 / 2 from r;
+select (4 + 3) / 2 from r;
+select 3 / 2 + 4 from r;
+select 3 / (2 + 4) from r;
+select 4 - 3 / 2 from r;
+select (4 - 3) / 2 from r;
+
+-- + and - are of equal precedence, so they should be evaluated left to right
+-- The result is the same regardless of order of evaluation, so test it
+-- by causing an overflow.  The first test should get an overflow, and the
+-- second one shouldn't.
+
+select 1 + 2147483647 - 2 from r;
+select 1 + (2147483647 - 2) from r;
+
+select 4 * 3 / 2 from r;
+select 4 * (3 / 2) from r;
+
+-- Test associativity of unary - versus the binary operators
+select -1 + 2 from r;
+select -(1 + 2) from r;
+select -1 - 2 from r;
+select -(1 - 2) from r;
+
+-- The test the associativity of unary - with respect to binary *, we must
+-- use a trick.  The value -1073741824 is the minimum integer divided by 2.
+-- So, 1073741824 * 2 will overflow, but (-1073741824) * 2 will not (because
+-- of two's complement arithmetic.
+
+select -1073741824 * 2 from r;
+select -(1073741824 * 2) from r;
+
+-- This should not get an overflow
+select -2147483648 / 2 from r;
+
+-- arithmetic on a numeric data type
+create table u (c1 int, c2 char(10));
+insert into u (c2) values 'asdf';
+insert into u (c1) values null;
+insert into u (c1) values 1;
+insert into u (c1) values null;
+insert into u (c1) values 2;
+select c1 + c1 from u;
+select c1 / c1 from u;
+
+-- arithmetic between a numeric and a string data type fails
+select c1 + c2 from u;
+
+-- clean up after ourselves
+drop table t;
+drop table s;
+drop table r;
+drop table u;
+drop table smallint_t;
+drop table smallint_s;
+drop table smallint_r;
+drop table bigint_t;
+drop table bigint_s;
+drop table bigint_r;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,334 @@
+--
+-- Create a database with a table and some data.
+--
+connect 'authorize;create=true' as c1; 
+
+create table AUTH_TEST.t1 (a int);
+
+CREATE FUNCTION AUTH_TEST.resourcefile(packageName VARCHAR(50), resourceName VARCHAR(50), outputFileName VARCHAR(50)) 
+       RETURNS VARCHAR(3200) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.DbFile.mkFileFromResource' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+-- need two procedures to run this test, otherwise the read-only connection
+-- is not even alowed to call a MODIFIES SQL DATA procedure.
+create procedure AUTH_TEST.verifyAccessRW(P1 INT) MODIFIES SQL DATA external name 'org.apache.derbyTesting.functionTests.util.T_Authorize.verifyAccessRW' language java parameter style java;
+create procedure AUTH_TEST.verifyAccessRO(P1 INT) READS SQL DATA external name 'org.apache.derbyTesting.functionTests.util.T_Authorize.verifyAccessRO' language java parameter style java;
+
+CREATE FUNCTION AUTH_TEST.getPermission(userName VARCHAR(50)) 
+       RETURNS VARCHAR(22) EXTERNAL NAME 'org.apache.derby.database.UserUtility.getPermission' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+CREATE PROCEDURE AUTH_TEST.addUserUtility(IN userName VARCHAR(50), IN permission VARCHAR(22)) 
+       LANGUAGE JAVA PARAMETER STYLE JAVA
+       EXTERNAL NAME 'org.apache.derby.database.UserUtility.add';
+
+CREATE PROCEDURE AUTH_TEST.setUserUtility(IN userName VARCHAR(50), IN permission VARCHAR(22)) 
+       LANGUAGE JAVA PARAMETER STYLE JAVA
+       EXTERNAL NAME 'org.apache.derby.database.UserUtility.set';
+
+CREATE PROCEDURE AUTH_TEST.dropUserUtility(IN userName VARCHAR(50)) 
+       LANGUAGE JAVA PARAMETER STYLE JAVA
+       EXTERNAL NAME 'org.apache.derby.database.UserUtility.drop';
+
+--
+-- Add a jar file for use in verification that jar replace and drop are not
+-- allowed in a read only connection.
+call sqlj.install_jar(AUTH_TEST.resourcefile('org.apache.derbyTesting.functionTests.testData.v1','j1v1.jar','extinout/j1v1.jar'),
+				'APP.IMMUTABLE', 0);
+
+--
+-- Configure the database with an invalid default connection mode (should fail);
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','AsDf');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+
+--
+-- Add a bad list of read only users (should fail).
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers','fred,0IsABadFirstLetter');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+
+--
+-- Add a bad list of full access users (should fail).
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers','fred,0IsABadFirstLetter');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+--
+-- Connect and verify the user had full access.
+connect 'authorize' as c2;
+call AUTH_TEST.verifyAccessRW(1);
+disconnect;
+
+--
+-- Configure the database to disallow access by unknown users
+--
+set connection c1;
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','NoAcCeSs');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+
+--
+-- Connect as an unknown user (Should fail)
+--
+connect 'authorize' user 'fred';
+
+--
+-- Connect as a user with an invalid name (Should fail)
+--
+connect 'authorize' user '!amber' as c2;
+
+--
+-- Connect as a known user with a delimited name that is
+-- only valid if it is delimited (Should fail)
+--
+connect 'authorize' user '"!amber"' as c2;
+
+--
+-- Delete the defaultAccessMode property. Verify unknown users
+-- have full access.
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode',null);
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+connect 'authorize' user '"!amber"' as c2;
+call AUTH_TEST.verifyAccessRW(2);
+disconnect;
+
+--
+-- Configure the database to allow full access by unknown users
+-- and verify an unknown user has full access.
+set connection c1;
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','fullACCESS');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+connect 'authorize' user '"!amber"' as c2;
+call AUTH_TEST.verifyAccessRW(3);
+
+--
+-- Configure the database to allow readOnly access by unknown
+-- users. Verify existing connections by unknow users retain 
+-- thier full access.
+set connection c1;
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','readOnlyACCESS');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+set connection c2;
+call AUTH_TEST.verifyAccessRW(4);
+disconnect;
+
+--
+-- Connect as an unknown user and verify that the connection has
+-- readOnly access.
+connect 'authorize' as c2;
+call AUTH_TEST.verifyAccessRO(5);
+disconnect;
+
+--
+-- Configure the database to have some read only and full access
+-- users. 
+--
+set connection c1;
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','NoACCESS');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers','fullUser1,"***both","aaa-differByCase"');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+-- The following should fail as user '***both' can only be in 1 list
+-- and it is already defined in the fullAccess users list.
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers','readUser1,"***both","AAA-differByCase"');
+-- This should succeed
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers','readUser1,"AAA-differByCase"');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+
+--
+-- Connect as an unknown user - due to case error (should fail);
+connect 'authorize' user '"fulluser1"';
+
+--
+-- Connect as a read only user and verify access
+-- Verify the user can't elevate to full access.
+connect 'authorize' user 'readUser1' as c2;
+call AUTH_TEST.verifyAccessRO(6);
+readonly off; 
+call AUTH_TEST.verifyAccessRO(7);
+
+--
+-- Connect as a full user and verify access.
+--
+connect 'authorize' user '"aaa-differByCase"' as c3;
+call AUTH_TEST.verifyAccessRW(8);
+
+--
+-- Verify the full user can set her connection to readonly 
+-- and back.
+readonly on;
+call AUTH_TEST.verifyAccessRO(9);
+readonly off; 
+call AUTH_TEST.verifyAccessRW(10);
+
+--
+-- Configure the database to have some full users and all unknown
+-- users granted read access.
+disconnect;
+set connection c2;
+disconnect;
+set connection c1;
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode','readOnlyACCESS');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers','fullUser1,"***both","aaa-differByCase"');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers',null);
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+
+--
+-- Connect as a guest user (name differs from a full user by case)
+connect 'authorize' user '"fulluser1"' as c2;
+call AUTH_TEST.verifyAccessRO(11);
+readonly off; 
+readonly on;
+disconnect;
+
+--
+-- Connect as a full user and verify we can do it all
+connect 'authorize' user 'fulluser1' as c2;
+call AUTH_TEST.verifyAccessRW(12);
+readonly on;
+call AUTH_TEST.verifyAccessRO(13);
+readonly off; 
+call AUTH_TEST.verifyAccessRW(14);
+
+--
+-- Verfify we cannot set the readonly state in an active connection.
+autocommit off;
+insert into AUTH_TEST.t1 values 1,2;
+readonly off;
+readonly on;
+rollback;
+autocommit on;
+
+--
+-- Verify a read only user can perform a query that uses a
+-- temp table. 
+insert into AUTH_TEST.t1 values 1,2,3,4,5,6,7;
+insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+insert into AUTH_TEST.t1 select * from AUTH_TEST.t1;
+readonly on;
+select * from AUTH_TEST.t1 order by a;
+readonly off;
+delete from AUTH_TEST.t1;
+
+--
+-- Remove all the authorization properties to prepare to test
+-- the UserUtility.
+--
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode',null);
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.defaultConnectionMode');
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers',null);
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers',null);
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+--
+-- Verify external scalar function getPermission works with no users.
+values AUTH_TEST.getPermission('myFriend');
+
+--
+-- Verify external scalar function getPermission notices when it is
+-- called with a bad id. (should fail.)
+values AUTH_TEST.getPermission('***badId');
+values AUTH_TEST.getPermission(null);
+
+
+--
+-- Verify external scalar function addUserUtility reports an error when called with
+-- a bad user, a null user and a bad permission mode and a
+-- null permission mode.
+call AUTH_TEST.addUserUtility('***badId','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility(null,'READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('goodUser','badPermission');
+call AUTH_TEST.addUserUtility('goodUser',null);
+
+--
+-- Add 3 read access users with quoted names and verify they are added.
+-- As a negative test we add each user twice
+call AUTH_TEST.addUserUtility('"dAda"','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('"dAda"','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('"bUnny"','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('"bUnny"','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('"jAmes"','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('"jAmes"','READ_ACCESS_PERMISSION');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+--
+-- Verify external scalar function setUserUtility reports an error when called with
+-- a bad user, a null user, a missing user a bad permission 
+-- mode and a null permission mode.
+call AUTH_TEST.setUserUtility('***badId','READ_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility(null,'READ_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('missingUser','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('"jAmes"','badPermission');
+call AUTH_TEST.setUserUtility('"jAmes"',null);
+
+--
+-- Get the access level for our users
+values AUTH_TEST.getPermission('"dAda"');
+values AUTH_TEST.getPermission('"DADA"'); --wrong case
+values AUTH_TEST.getPermission('"bUnny"');
+values AUTH_TEST.getPermission('"dAda"');
+
+--
+-- Set all our read access users to full access users twice.
+call AUTH_TEST.setUserUtility('"dAda"','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('"dAda"','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('"bUnny"','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('"bUnny"','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('"jAmes"','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.setUserUtility('"jAmes"','FULL_ACCESS_PERMISSION');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+--
+-- Verify external scalar function dropUserUtility reports an error when called with
+-- a bad user, a null user, a missing user.
+call AUTH_TEST.dropUserUtility('***badId');
+call AUTH_TEST.dropUserUtility(null);
+call AUTH_TEST.dropUserUtility('missingUser');
+
+--
+-- Drop each user twice
+call AUTH_TEST.dropUserUtility('"dAda"');
+call AUTH_TEST.dropUserUtility('"dAda"');
+call AUTH_TEST.dropUserUtility('"bUnny"');
+call AUTH_TEST.dropUserUtility('"bUnny"');
+call AUTH_TEST.dropUserUtility('"jAmes"');
+call AUTH_TEST.dropUserUtility('"jAmes"');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+--
+-- Add set and drop some users with names that
+-- are not delimited.
+call AUTH_TEST.addUserUtility('dada','READ_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('DADA','READ_ACCESS_PERMISSION'); -- duplicate
+call AUTH_TEST.addUserUtility('bunny','FULL_ACCESS_PERMISSION');
+call AUTH_TEST.addUserUtility('james','FULL_ACCESS_PERMISSION');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+call AUTH_TEST.setUserUtility('BUNNY','READ_ACCESS_PERMISSION');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+values AUTH_TEST.getPermission('dAda');
+values AUTH_TEST.getPermission('bunny');
+values AUTH_TEST.getPermission('jaMes');
+call AUTH_TEST.dropUserUtility('dada');
+call AUTH_TEST.dropUserUtility('bunny');
+call AUTH_TEST.dropUserUtility('jaMes');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers');
+VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.fullAccessUsers');
+
+-- clean up
+drop function AUTH_TEST.getPermission;
+drop procedure AUTH_TEST.verifyAccessRW;
+drop procedure AUTH_TEST.verifyAccessRO;
+drop procedure AUTH_TEST.setUserUtility;
+drop procedure AUTH_TEST.addUserUtility;
+drop procedure AUTH_TEST.dropUserUtility;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+#
+ij.protocol=jdbc:derby:
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+useextdirs=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/authorize_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.debug.true=testSort
+derby.storage.sortBufferMax=4
+derby.infolog.append=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/autoincrement.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/autoincrement.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,689 @@
+-- Adding new testcases for DB2 syntax "GENERATED ALWAYS AS IDENTITY"
+-- We don't enhance "ALTER TABLE <T> MODIFY COLUMN" yet: DB2 uses "ALTER TABLE <T> ALTER COLUMN..."
+-- try generated  values with all types.
+-- Cloudscape specific syntax for the autoincrement clause can be found in store/bug3498.sql
+
+create table ai_zero (i int, a_zero int generated always as identity);
+create table ai_one (i int, a_one smallint generated always as identity);
+create table ai_two (i int, a_two int generated always as identity);
+create table ai_three (i int, a_three int generated always as identity);
+
+select COLUMNNAME, AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME in ('A_ZERO', 'A_ONE', 'A_TWO', 'A_THREE');
+drop table ai_zero;
+drop table ai_one;
+drop table ai_two;
+drop table ai_three;
+
+-- try a generated column spec with initial and start values.
+create table ai (i  int, autoinc int generated always as identity (start with 100));
+
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AUTOINC';
+drop table ai;
+
+create table ai (i int, autoinc int generated always as identity (increment by 100));
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AUTOINC';
+
+drop table ai;
+
+create table ai (i int, 
+				 autoinc int generated always as identity (start with 101, increment by 100));
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AUTOINC';
+drop table ai;
+
+-- try -ive numbers.
+create table ai1 (i int, 
+				  a1 int generated always as identity (start with  0, increment by -1));
+create table ai2 (i int, 
+				  a2 int generated always as identity (start with  +0, increment by -1));
+create table ai3 (i int, 
+				  a3 int generated always as identity (start with  -1, increment by -1));
+create table ai4 (i int, 
+				  a4 int generated always as identity (start with  -11, increment by +100));
+
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A1';
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A2';
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A3';
+select AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'A4';
+
+drop table ai1;
+drop table ai2;
+drop table ai3;
+drop table ai4;
+
+-- **** simple increment tests.
+
+create table ai_short (i int, 
+				       ais smallint generated always as identity (start with 0, increment by 2));
+insert into ai_short (i) values (0);
+insert into ai_short (i) values (1);
+insert into ai_short (i) values (2);
+insert into ai_short (i) values (3);
+
+select * from ai_short;
+select COLUMNNAME, AUTOINCREMENTVALUE, AUTOINCREMENTSTART, AUTOINCREMENTINC
+from sys.syscolumns where COLUMNNAME = 'AIS';
+drop table ai_short;
+
+-- table with more than one generated column spec should fail
+create table ai_multiple (i int, 
+						  a0 int generated always as identity (start with  -1,
+												    increment by -1),
+						  a1 smallint generated always as identity,
+						  a2 int generated always as identity (start with  0),
+						  a3 bigint generated always as identity (start with  -100,
+													increment by 10));
+
+-- table with one generated column spec should succeed
+create table ai_single1 (i int, a0 int generated always as identity 
+									(start with  -1, increment by -1));
+create table ai_single2 (i int, a1 smallint generated always as identity);
+create table ai_single3 (i int, a2 int generated always as identity 
+									(start with 0));
+create table ai_single4 (i int, a3 bigint generated always as identity 
+								        (start with  -100, increment by 10));
+
+insert into ai_single1 (i) values (1);
+insert into ai_single1 (i) values (2);
+insert into ai_single1 (i) values (3);
+insert into ai_single1 (i) values (4);
+insert into ai_single1 (i) values (5);
+insert into ai_single1 (i) values (6);
+insert into ai_single1 (i) values (7);
+insert into ai_single1 (i) values (8);
+insert into ai_single1 (i) values (9);
+insert into ai_single1 (i) values (10);
+insert into ai_single2 (i) values (1);
+insert into ai_single2 (i) values (2);
+insert into ai_single2 (i) values (3);
+insert into ai_single2 (i) values (4);
+insert into ai_single2 (i) values (5);
+insert into ai_single2 (i) values (6);
+insert into ai_single2 (i) values (7);
+insert into ai_single2 (i) values (8);
+insert into ai_single2 (i) values (9);
+insert into ai_single2 (i) values (10);
+insert into ai_single3 (i) values (1);
+insert into ai_single3 (i) values (2);
+insert into ai_single3 (i) values (3);
+insert into ai_single3 (i) values (4);
+insert into ai_single3 (i) values (5);
+insert into ai_single3 (i) values (6);
+insert into ai_single3 (i) values (7);
+insert into ai_single3 (i) values (8);
+insert into ai_single3 (i) values (9);
+insert into ai_single3 (i) values (10);
+insert into ai_single4 (i) values (1);
+insert into ai_single4 (i) values (2);
+insert into ai_single4 (i) values (3);
+insert into ai_single4 (i) values (4);
+insert into ai_single4 (i) values (5);
+insert into ai_single4 (i) values (6);
+insert into ai_single4 (i) values (7);
+insert into ai_single4 (i) values (8);
+insert into ai_single4 (i) values (9);
+insert into ai_single4 (i) values (10);
+select a.i, a0, a1, a2, a3 from ai_single1 a 
+       join ai_single2 b on a.i = b.i 
+       join ai_single3 c on a.i = c.i 
+       join ai_single4 d on a.i = d.i;
+
+delete from ai_single1;
+delete from ai_single2;
+delete from ai_single3;
+delete from ai_single4;
+insert into ai_single1 (i) values (1);
+insert into ai_single2 (i) values (1);
+insert into ai_single3 (i) values (1);
+insert into ai_single4 (i) values (1);
+select a.i, a0, a1, a2, a3 from ai_single1 a 
+       join ai_single2 b on a.i = b.i 
+       join ai_single3 c on a.i = c.i 
+       join ai_single4 d on a.i = d.i;
+
+-- clean up
+drop table ai_single1;
+drop table ai_single2;
+drop table ai_single3;
+drop table ai_single4;
+
+-- **** connection info tests {basic ones}
+
+create table ai_test (x int generated always as identity (start with 2, increment by 2),
+					  y int);
+insert into ai_test (y) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+
+-- should see 20.
+values IDENTITY_VAL_LOCAL();
+
+insert into ai_test (y) select y+10 from ai_test;
+values IDENTITY_VAL_LOCAL();
+
+values IDENTITY_VAL_LOCAL();
+
+-- try some more connection info tests
+create table ai_single1 (c char(100), a_odd int generated always as identity (start with 1, increment by 2));
+create table ai_single2 (c char(100), a_even int generated always as identity (start with 0, increment by 2));
+create table ai_single3 (c char(100), a_sum bigint generated always as identity (start with 1, increment by 2));
+
+insert into ai_single1 (c) values ('a');
+values IDENTITY_VAL_LOCAL();
+insert into ai_single2 (c) values ('a');
+values IDENTITY_VAL_LOCAL();
+insert into ai_single3 (c) values ('a');
+values IDENTITY_VAL_LOCAL();
+
+insert into ai_single1 (c) values ('b');
+values IDENTITY_VAL_LOCAL();
+insert into ai_single2 (c) values ('b');
+values IDENTITY_VAL_LOCAL();
+insert into ai_single3 (c) values ('b');
+values IDENTITY_VAL_LOCAL();
+
+drop table ai_single1;
+drop table ai_single2;
+drop table ai_single3;
+drop table ai_test;
+
+
+-- nested, nested, nested stuff.
+-- t1 --> trigger --> insert into t2 
+-- insert row into t1.
+-- I can get lastAutoincrementValue for t1 but not t2.
+create table t1 (c1 int generated always as identity, name char(32));
+create table t2 (c2 int generated always as identity, name char(32));
+
+create trigger insert_trigger after insert on t1 for each row mode db2sql
+	   insert into t2 (name) values ('Bob Finocchio');
+
+insert into t1 (name) values ('Phil White');
+select * from t1;
+select * from t2;
+
+values IDENTITY_VAL_LOCAL();
+
+insert into t2 (name) values ('Jean-Yves Dexemier');
+values IDENTITY_VAL_LOCAL();
+
+-- insert into multiple tables in different schema names with same tablename,column names
+-- make sure 
+-- lastAutoincrementValue shouldn't get confused.....
+
+drop table t1;
+drop table t2;
+
+-- APP.TAB1.A1 ==> -1,-2,-3
+-- APP.TAB1.A2 ==> 1,2,3
+-- APP.TAB2.A1 ==> 0,-2,-4
+-- APP.TAB3.A2 ==> 0,2,4
+
+create table tab1 (i int, a1 int generated always as identity (start with -1, increment by -1));
+create table tab2 (i int, a2 smallint generated always as identity (start with 1, increment by +1));
+create table tab3 (i int, a1 int generated always as identity (start with 0, increment by -2));
+create table tab4 (i int, a2 bigint generated always as identity (start with 0, increment by 2));
+
+create schema BPP;
+set schema BPP;
+
+-- BPP.TAB1.A1 ==> 100,101,102
+-- BPP.TAB2.A2 ==> 100,99,98
+-- BPP.TAB3.A1 ==> 100,102,104
+-- BPP.TAB4.A2 ==> 100,98,96
+
+create table tab1 (i int, a1 int generated always as identity (start with 100, increment by 1));
+create table tab2 (i int, a2 bigint generated always as identity (start with 100, increment by -1));
+create table tab3 (i int, a1 int generated always as identity (start with 100, increment by 2));
+create table tab4 (i int, a2 smallint generated always as identity (start with 100, increment by -2));
+
+insert into APP.tab1 (i) values (1);
+insert into APP.tab2 (i) values (1);
+insert into APP.tab3 (i) values (1);
+insert into APP.tab4 (i) values (1);
+insert into tab1 (i) values (1);
+insert into tab1 (i) values (2);
+insert into tab2 (i) values (1);
+insert into tab2 (i) values (2);
+insert into tab3 (i) values (1);
+insert into tab3 (i) values (2);
+insert into tab4 (i) values (1);
+insert into tab4 (i) values (2);
+
+select a.i, a1, a2 from app.tab1 a join app.tab2 b on a.i = b.i;
+select a.i, a1, a2 from app.tab3 a join app.tab4 b on a.i = b.i;
+select a.i, a1, a2 from tab1 a join tab2 b on a.i = b.i;
+select a1, a2, a.i from tab3 a join tab4 b on a.i = b.i;
+
+values IDENTITY_VAL_LOCAL();
+
+set schema app;
+drop table bpp.tab1;
+drop table bpp.tab2;
+drop table bpp.tab3;
+drop table bpp.tab4;
+
+drop schema bpp restrict;
+drop table tab1;
+drop table tab2;
+drop table tab3;
+drop table tab4;
+
+-- trigger, 
+-- insert into t2
+--         ==> fires trigger which inserts into t1.
+--                      
+create table tab1 (s1 int generated always as identity, 
+				   lvl int);
+create table tab3 (c1 int);
+
+create trigger tab1_after1 after insert on tab3 referencing new as newrow for each row mode db2sql insert into tab1 (lvl) values 1,2,3;
+
+insert into tab3 values null;
+select * from tab1;
+select b.tablename, a.autoincrementvalue, a.autoincrementstart, a.autoincrementinc from sys.syscolumns a, sys.systables b where a.referenceid=b.tableid and a.columnname ='S1' and b.tablename = 'TAB1';
+
+create table tab2 (lvl int, s1  bigint generated always as identity);
+
+create trigger tab1_after2 after insert on tab3 referencing new as newrow for each row mode db2sql insert into tab2 (lvl) values 1,2,3;
+
+insert into tab3 values null;
+select * from tab2;
+select b.tablename, a.autoincrementvalue, a.autoincrementstart, a.autoincrementinc from sys.syscolumns a, sys.systables b where a.referenceid=b.tableid and a.columnname ='S1' and b.tablename = 'TAB2';
+
+-- clean up
+drop trigger tab1_after1;
+drop trigger tab1_after2;
+drop table tab1;
+drop table tab2;
+drop table tab3;
+
+-- some more variations of lastAutoincrementValue....
+-- make sure we don't lose values from previous inserts.
+create table t1 (x int, s1 int generated always as identity);
+create table t2 (x smallint, s2 int generated always as identity (start with 0));
+
+insert into t1 (x) values (1);
+
+values IDENTITY_VAL_LOCAL();
+
+insert into t1 (x) values (2);
+
+values IDENTITY_VAL_LOCAL();
+
+insert into t2 (x) values (1);
+
+values IDENTITY_VAL_LOCAL();
+
+-- alter table tests.
+drop table t1;
+drop table t2;
+
+create table t1 (s1 int generated always as identity);
+alter table t1 add column x int;
+insert into t1 (x) values (1),(2),(3),(4),(5);
+create table t2 (s2 int generated always as identity (start with 2));
+alter table t2 add column x int;
+insert into t2 (x) values (1),(2),(3),(4),(5);
+create table t3 (s0 int generated always as identity (start with 0));
+alter table t3 add column x int;
+insert into t3 (x) values (1),(2),(3),(4),(5);
+
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+values IDENTITY_VAL_LOCAL();
+
+-- test some more generated column specs
+create table trigtest (s1 smallint generated always as identity, lvl int);
+insert into trigtest (lvl) values (0);
+insert into trigtest (lvl) values (1),(2);
+insert into trigtest (lvl) values (3),(4);
+insert into trigtest (lvl) values (5),(6);
+insert into trigtest (lvl) values (7),(8);
+select * from trigtest;
+
+drop table trigtest;
+
+select count(*) from t1;
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+
+delete from t1;
+delete from t2;
+delete from t3;
+insert into t1 (x) values (1),(2),(3),(4),(5);
+insert into t2 (x) values (1),(2),(3),(4),(5);
+insert into t3 (x) values (1),(2),(3),(4),(5);
+
+-- should have started from after the values in t1 due to alter.
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+
+insert into t1 (x) values (6);
+insert into t2 (x) values (6);
+insert into t3 (x) values (6);
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+
+values IDENTITY_VAL_LOCAL();
+
+delete from t1;
+delete from t2;
+delete from t3;
+
+insert into t1 (x) values (1),(2),(3),(4),(5);
+insert into t2 (x) values (1),(2),(3),(4),(5);
+insert into t3 (x) values (1),(2),(3),(4),(5);
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+
+insert into t1 (x) values (6);
+insert into t2 (x) values (6);
+insert into t3 (x) values (6);
+select a.x, s1, s2, s0 from t1 a join t2 b on a.x = b.x join t3 c on a.x = c.x;
+
+values IDENTITY_VAL_LOCAL();
+
+-- make sure we're doing nested xactions to update ai values.
+drop table t1;
+drop table t2;
+drop table t3;
+
+create table t1 (x int, yyy int generated always as identity (start with  0));
+
+autocommit off;
+insert into t1 (x) values (1);
+insert into t1 (x) values (2);
+
+select * from t1;
+-- should see only locks on t1, no locks on system catalogs.
+select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+
+delete from t1;
+commit;
+
+-- locks should be gone now.
+select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+set isolation serializable;
+
+-- this will get a share  lock on syscolumns
+select columnname, autoincrementvalue
+ from sys.syscolumns where columnname = 'YYY';
+
+select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+
+insert into t1 (x) values (3);
+
+select  l.type, l.tablename, l.mode from new org.apache.derby.diag.LockTable() l order by tablename, type;
+commit;
+
+-- try using default keyword with ai.
+drop table t1;
+
+create table t1 (x char(2) default 'yy', y bigint generated always as identity);
+
+insert into t1 (x, y) values ('aa', default);
+insert into t1 values ('bb', default);
+insert into t1 (x) values default;
+insert into t1 (x) values null;
+-- switch the order of the columns
+insert into t1 (y, x) values (default, 'cc');
+select * from t1;
+
+-- bug 3450.
+autocommit off;
+create table testme (text varchar(10), autonum int generated always as identity);
+commit;
+
+prepare autoprepare as 'insert into testme (text) values ?';
+execute autoprepare using 'values (''one'')';
+execute autoprepare using 'values (''two'')';
+execute autoprepare using 'values (''three'')';
+
+select * from testme;
+
+-- give exact query and make sure that the statment cache doesn't
+-- mess up things.
+insert into testme (text) values ('four');
+insert into testme (text) values ('four');
+select * from testme;
+drop table testme;
+commit;
+
+-- go back to our commiting ways.
+autocommit on;
+
+-- negative tests from autoincrementNegative.sql
+-- negative bind tests.
+-- invalid types 
+create table ni (x int, y char(1) generated always as identity);
+create table ni (x int, y decimal(5,2) generated always as identity);
+create table ni (x int, y float generated always as identity (start with 1, increment by 1));
+create table ni (s int, y varchar(10) generated always as identity);
+
+-- 0 increment 
+-- pass in DB2 UDB
+-- fail in DB2 CS
+create table ni (x int, y int generated always as identity (increment by 0));
+create table ni (x int, y int generated always as identity (start with 0, increment by 0));
+
+create table ni (x int, y smallint generated always as identity (increment by 0));
+create table ni (x int, y smallint generated always as identity (start with 0, increment by 0));
+
+create table ni (x int, y int generated always as identity (increment by 0);
+create table ni (x int, y int generated always as identity (start with 0, increment by 0));
+
+create table ni (x int, y bigint generated always as identity (increment by 0));
+create table ni (x int, y bigint generated always as identity (start with 0, increment by 0));
+
+-- out of range start 
+-- actually the first few are valid
+create table ni (x int, y int generated always as identity (start with 127, increment by -1));
+drop table ni;
+create table ni (x int, y int generated always as identity (start with -128));
+drop table ni;
+
+--  now go through this exercise for all types!
+create table ni (x int, y smallint generated always as identity (start with 32768));
+create table ni (x int, y smallint generated always as identity (start with -32769));
+
+create table ni (x int, y int generated always as identity (start with  2147483648));
+create table ni (x int, y int generated always as identity (start with  -2147483649));
+
+create table ni (x int, y bigint  
+				 generated always as identity (start with  9223372036854775808));
+create table ni (x int, y bigint 
+				 generated always as identity (start with  -9223372036854775809));
+
+-- attempt to update or insert into autoincrement columns.
+create table ai (x smallint generated always as identity, y int);
+insert into ai (y) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+select * from ai;
+delete from ai where y=8 OR y=4;
+insert into ai (y) values (11),(13),(14),(15),(17),(18),(19);
+select * from ai;
+
+-- valid updates.
+update ai set y=-y;
+select * from ai order by x;
+update ai set y=-y;
+select * from ai order by x;
+
+update ai set y=4 where y=3;
+select * from ai order by x;
+update ai set y=4 where x=3;
+select * from ai order by x;
+
+-- error, error!
+update ai set x=4 where y=3;
+insert into ai values (1,2);
+
+-- overflow.
+drop table ai;
+
+create table ai (x int, y int generated always as identity (increment by 200000000));
+insert into ai (x) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19);
+
+-- should have been rolled back.
+select * from ai;
+
+-- but the entry in syscolumns has been updated! still can't do inserts.
+insert into ai (x) values (1);
+
+-- more overflow.
+drop table ai;
+create table ai (x int, y smallint generated always as identity (start with  -32760, increment by -1));
+insert into ai (x) values (1),(2),(3),(4),(5),(6),(7),(8);
+insert into ai (x) values (9),(10);
+select * from ai;
+
+-- try overflow with int and bigint.
+drop table ai;
+create table ai (x int, y int generated always as identity (start with  2147483646));
+insert into ai (x) values (1);
+insert into ai (x) values (2);
+select * from ai;
+insert into ai (x) select x from ai;
+
+drop table ai;
+-- for bigint we don't go to the end-- stop one value before....
+create table ai (x int, y bigint generated always as identity 
+				   (start with     9223372036854775805));
+
+insert into ai (x) values (1),(2);
+insert into ai (x) values (3);
+
+select * from ai;
+
+-- clean up
+drop table ai;
+
+--- alter table...
+create table base (x int);
+insert into base values (1),(2),(3),(4),(5),(6);
+select * from base;
+-- should fail because alter table add generated column is not supported
+alter table base add column y smallint generated always as identity (start with  10);
+alter table base add column y int generated always as identity (start with  10);
+alter table base add column y bigint generated always as identity (start with  10);
+-- make sure alter table failures above rolled themselves back 
+select * from base;
+drop table base;
+
+-- testing non-reserved keywords: generated, start, always
+-- should be successful
+create table always (a int);
+create table start (a int);
+create table generated (a int);
+
+drop table always;
+drop table start;
+drop table generated;
+
+-- IDENTITY_VAL_LOCAL function, same as DB2, beetle 5354
+drop table t1;
+
+create table t1(c1 int generated always as identity, c2 int);
+
+-- start
+insert into t1(c2) values (8);
+values IDENTITY_VAL_LOCAL();
+
+select IDENTITY_VAL_LOCAL()+1, IDENTITY_VAL_LOCAL()-1 from t1;
+
+insert into t1(c2) values (IDENTITY_VAL_LOCAL());
+select * from t1;
+values IDENTITY_VAL_LOCAL();
+select IDENTITY_VAL_LOCAL()+1, IDENTITY_VAL_LOCAL()-1 from t1;
+
+insert into t1(c2) values (8), (9);
+-- multi-values insert, return value of the function should not change, same as DB2
+values IDENTITY_VAL_LOCAL();
+select * from t1;
+insert into t1(c2) select c1 from t1;
+-- insert with sub-select, return value should not change
+values IDENTITY_VAL_LOCAL();
+select * from t1;
+delete from t1;
+values IDENTITY_VAL_LOCAL();
+insert into t1(c2) select c1 from t1;
+values IDENTITY_VAL_LOCAL();
+
+-- end of practice, back to start...
+insert into t1(c2) values (8);
+values IDENTITY_VAL_LOCAL();
+
+drop table t1;
+
+-- test cases for beetle 5404: inserting multiple rows of defaults into autoincrement column.
+create table t1(c1 int generated always as identity);
+
+-- this is okay
+insert into t1 values (default);
+select * from t1;
+
+-- should fail
+insert into t1 values (1), (1);
+select * from t1;
+
+-- this returns the right error
+insert into t1 values (1), (default);
+insert into t1 values (default), (1);
+insert into t1 values (default), (default), (default), (2);
+insert into t1 values (default), (default), (2);
+insert into t1 values (default), (default), (2), (default);
+
+-- this returns NPE
+insert into t1 values (default), (default);
+select * from t1;
+
+insert into t1 values (default), (default), (default);
+select * from t1;
+
+insert into t1 values (default), (default), (default), (default);
+select * from t1;
+
+create table t2 (a int, b int generated always as identity);
+insert into t2 values (1, default), (2, default);
+select * from t2;
+
+insert into t2 values (1, default), (2, 2);
+insert into t2 values (1, default), (2, default), (2, 2);
+insert into t2 values (1, 2), (2, default), (2, default);
+
+create table t3(c1 int generated always as identity (increment by 3));
+
+-- succeeded
+insert into t3 values (default);
+
+select * from t3;
+insert into t3 values (default);
+select * from t3;
+
+-- should fail
+insert into t3 values (1), (1);
+select * from t3;
+
+-- this returns the right error
+insert into t3 values (1), (default);
+insert into t3 values (default), (1);
+insert into t3 values (default), (default), (default), (2);
+insert into t3 values (default), (default), (2);
+insert into t3 values (default), (default), (2), (default);
+insert into t3 select * from t1;
+insert into t3 select * from table (values (1)) as q(a);
+insert into t3 select * from table (values (default)) as q(a);
+
+-- this returns NPE
+insert into t3 values (default), (default);
+select * from t3;
+
+insert into t3 values (default), (default), (default);
+select * from t3;
+
+insert into t3 values (default), (default), (default), (default);
+select * from t3;
+
+drop table t1;
+drop table t2;
+drop table t3;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,127 @@
+-- create table with row greater than 32K
+-- try with just one row of data - JCC may handle those differently?
+create table big(c1 varchar(10000), c2 varchar(10000), c3 varchar(10000), c4 varchar(10000));
+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(?)';
+execute p1 using 'values 1';
+select * from big;
+
+-- multiple rows of data
+execute p1 using 'values 2';
+select * from big;
+
+-- the overhead for DSS on QRYDTA is 15 bytes
+-- let's try a row which is exactly 32767 (default JCC queryblock size)
+drop table big;
+create table big(c1 varchar(30000), c2 varchar(2752));
+execute p1 using 'values 5';
+select * from big;
+
+-- what happens when the row + the ending SQLCARD is too big
+drop table big;
+create table big(c1 varchar(30000), c2 varchar(2750));
+execute p1 using 'values 6';
+select * from big;
+-- let's try scrolling
+drop table big;
+create table big(c1 varchar(10000), c2 varchar(10000), c3 varchar(10000), c4 varchar(10000));
+execute p1 using 'values 1';
+execute p1 using 'values 2';
+execute p1 using 'values 3';
+execute p1 using 'values 4';
+get scroll insensitive cursor c1 as 'select * from big';
+first c1;
+next c1;
+previous c1;
+last c1;
+close c1;
+-- try going directly to the last row
+get scroll insensitive cursor c1 as 'select * from big';
+last c1;
+close c1;
+drop table big;
+-- try a column which is > 32767
+create table big (c1 clob(40000));
+execute p1 using 'values 7';
+select * from big;
+drop table big;
+-- try several columns > 32767
+create table big (c1 clob(40000), c2 clob(40000), c3 clob(40000));
+execute p1 using 'values 8';
+select * from big;
+drop table big;
+
+-- The tests below won't run with db2 compat mode.
+-- try java objects of different sizes
+
+-- create table big(s java.lang.String);
+
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+-- select * from big;
+
+-- drop table big;
+
+-- big long varchar
+-- create table big(lvc long varchar );
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64499));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',65500));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64501));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',66000));
+-- select * from big;
+-- drop table big;
+
+
+
+
+-- create table big(vc varchar(32767));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+-- select * from big;
+-- drop table big;
+
+-- create table big(lvc long bit varying );
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64499));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',65500));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',64501));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',66000));
+-- select * from big;
+-- drop table big;
+
+
+-- create table big(vb bit varying(131072));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',1000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',2000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',3000));
+-- These cannot be run until 4662 is fixed because we send 
+-- a big arg to the localization method..
+--  insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',32000));
+-- insert into big values(org.apache.derbyTesting.functionTests.util.Formatters::repeatChar('a',33000));
+-- select * from big;
+-- drop table big;
+
+
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/big_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.locks.waitTimeout=3
+derby.locks.deadlockTimeout=3 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,415 @@
+--
+-- Test the builtin type 'bit'
+-- Specifically the base-16, hex bit literal
+
+-- stupid test of literals
+values(X'aAff');
+
+-- casting to a for bit data type
+values (cast (x'ee' as char(2) for bit data));
+values x'aAff' || (cast (x'ee' as char(2) for bit data));
+
+-- are the search conditions true?
+create table tab1 (c1 char(25));
+insert into tab1 values 'search condition is true';
+select * from tab1 where ((X'1010' || X'0011' || X'0100') = X'101000110100');
+select * From tab1 where ((X'1010' || X'0011' || X'0100') = X'101000110100');
+select * from tab1 where (X'1100' > X'0011');
+drop table tab1;
+
+-- simple negative test
+values(X'gg');
+values(X'z');
+values(X'zz');
+-- fails after bug 5742 is fixed
+values(X'9');
+
+-- some quick tests of the length function
+-- # bits in a string expression
+values({fn length(X'ab')} * 8);
+values({fn length(X'11')} * 8);
+-- # characters in a string expression
+values({fn length(X'ab')});
+values({fn length(X'11')});
+-- # octets in a string expression
+values({fn length(X'ab')});
+values({fn length(X'11')});
+
+-- stupid test for syntax
+create table t1 (b1 char for bit data, b2 char(2) for bit data, b3 varchar(2) for bit data, b4 LONG VARCHAR FOR BIT DATA,
+				b5 LONG VARCHAR FOR BIT DATA, b6 LONG VARCHAR FOR BIT DATA);
+drop table t1;
+create table t1 (b1 char for bit data, b2 char(1) for bit data not null, b3 varchar(1) for bit data not null,
+				b4 LONG VARCHAR FOR BIT DATA not null, b5 LONG VARCHAR FOR BIT DATA not null,
+				b6 LONG VARCHAR FOR BIT DATA not null);
+drop table t1;
+
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real, b char (2) for bit data, bv varchar(8) for bit data,
+	lbv LONG VARCHAR FOR BIT DATA);
+
+-- explicit null
+insert into t values (null, null, null, null, null, null, null, null, null);
+
+-- implicit null
+insert into t (i) values (null);
+select b, bv, lbv from t;
+
+-- sample data
+insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0, 200.0e0, 
+			X'12af', X'0000111100001111', X'abc123');
+insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0, -200.0e0,
+			X'0000', X'', X'10101010');
+
+-- truncation -- should get an error
+insert into t (b, bv) values (X'ffffffff', X'ffffffff');
+select b, bv, lbv from t;
+
+-- padding -- will be warning, some day (not now)
+insert into t (b, bv) values (X'01', X'01');
+insert into t (b, bv) values (X'', X'');
+
+select b, bv from t;
+drop table t;
+
+--
+-- simple comparisons
+-- returns 1 if the search conditions are true
+-- 
+create table nulltab (b char(1) for bit data);
+insert into nulltab values (null);
+
+select 1 from nulltab where X'0001' > X'0000';
+select 1 from nulltab where X'0100' > X'0001';
+select 1 from nulltab where X'ff00' > X'00ff';
+select 1 from nulltab where X'0100' > X'0100';
+select 1 from nulltab where X'0100' > b;
+
+select 1 from nulltab where X'0001' >= X'0000';
+select 1 from nulltab where X'0100' >= X'0001';
+select 1 from nulltab where X'ff00' >= X'00ff';
+select 1 from nulltab where X'0100' >= b;
+
+select 1 from nulltab where X'0001' < X'0000';
+select 1 from nulltab where X'0100' < X'0001';
+select 1 from nulltab where X'ff00' < X'00ff';
+select 1 from nulltab where X'0100' < b;
+
+select 1 from nulltab where X'0001' <= X'0000';
+select 1 from nulltab where X'0100' <= X'0001';
+select 1 from nulltab where X'ff00' <= X'00ff';
+select 1 from nulltab where X'0100' <= b;
+
+drop table nulltab;
+
+--
+-- select comparisons
+--
+
+create table t (b10 char(20) for bit data, vb10 varchar(20) for bit data, b16 char(2) for bit data, vb16 varchar(2) for bit data, lbv LONG VARCHAR FOR BIT DATA, c20 char(20), cv20 varchar(20));
+insert into t values (null, null, null, null, null, 'null', 'null columns');
+insert into t values (X'',  X'',  X'',  X'', X'', '0', 'zero length column');
+insert into t values (X'0000000001', X'0000000001', X'01', X'01', X'0000000001', '1', '1');
+insert into t values (X'0000000011', X'0000000011', X'03', X'03', X'03', '3', '3');
+insert into t values (X'1111111111', X'1111111111', X'ff', X'ff', X'1111111111', 'ff', 'ff');
+insert into t values (X'11', X'11', X'aa', X'aa', X'aa', 'aa', 'aa');
+
+-- make sure built-in functions work ok on binary types,
+-- it is a little special since it maps to an
+-- array.  use length to make sure it wont
+-- diff from run to run
+select {fn length(cast(b10 as char(10)))} from t where b10 is not null;
+select {fn length(cast(vb10 as char(10)))} from t where vb10 is not null;
+select {fn length(cast(lbv as char(10)))} from t where vb10 is not null;
+
+select b10, c20, cv20 from t order by b10 asc;
+select b10, c20, cv20 from t order by b10 desc;
+select vb10, c20, cv20 from t order by vb10;
+select b16, c20, cv20 from t order by b16;
+select vb16, c20, cv20 from t order by vb16;
+select vb16, c20, cv20, lbv from t order by lbv;
+
+select b10 from t where b10 > X'0000000010';
+select b10 from t where b10 < X'0000000010';
+select b10 from t where b10 <= X'0000000011';
+select b10 from t where b10 >= X'0000000011';
+select b10 from t where b10 <> X'0000000011';
+
+select vb10 from t where vb10 > X'0000000010';
+select vb10 from t where vb10 < X'0000000010';
+select vb10 from t where vb10 <= X'0000000011';
+select vb10 from t where vb10 >= X'0000000011';
+select vb10 from t where vb10 <> X'0000000011';
+
+select b16 from t where b16 > X'0000000010';
+select b16 from t where b16 < X'0000000010';
+select b16 from t where b16 <= X'0000000011';
+select b16 from t where b16 >= X'0000000011';
+select b16 from t where b16 <> X'0000000011';
+
+select vb16 from t where vb16 > X'0000000010';
+select vb16 from t where vb16 < X'0000000010';
+select vb16 from t where vb16 <= X'0000000011';
+select vb16 from t where vb16 >= X'0000000011';
+select vb16 from t where vb16 <> X'0000000011';
+
+select lbv from t where lbv > X'0000000010';
+select lbv from t where lbv < X'0000000010';
+select lbv from t where lbv <= X'0000000011';
+select lbv from t where lbv >= X'0000000011';
+select lbv from t where lbv <> X'0000000011';
+
+select b10, vb10||X'11' from t where vb10||X'11' > b10;
+select b10, X'11'||vb10 from t where X'11'||vb10 > b10;
+select b16, vb16||X'11' from t where vb16||X'11' > b16;
+
+select b10 || vb10 from t;
+select lbv || b10 from t;
+select b10 || lbv from t;
+select lbv || vb10 from t;
+select vb10 || lbv from t;
+
+select t1.b10 from t t1, t t2 where t1.b10 > t2.b10;
+
+-- FUNCTIONS
+-- some length functions
+select {fn length(b10)} from t;
+select {fn length(vb10)} from t;
+select {fn length(lbv)} from t;
+
+select {fn length(c20)} from t;
+select {fn length(cv20)} from t;
+
+drop table t;
+
+-----------------------
+-- test normalization
+-----------------------
+create table t1 (c1 char(2) for bit data);
+insert into t1 values (X'0001');
+insert into t1 values (X'0010');
+insert into t1 values (X'0011');
+select * from t1;
+
+-- now insert something that needs to be expanded
+insert into t1 values (X'11');
+select * from t1;
+
+-- insert select, expand 1 byte
+create table t2 (c1 char(3) for bit data);
+insert into t2 select c1 from t1;
+select * from t2;
+drop table t2;
+
+-- insert select, expand many bytes
+create table t2 (c1 char(20) for bit data);
+insert into t2 select c1 from t1;
+select * from t2;
+drop table t2;
+
+drop table t1;
+
+--
+-- some extra tests for truncation.  in 2.0
+create table t1 (b1 char(1) for bit data);
+
+-- ok
+insert into t1 values (X'11');
+
+-- valid length
+insert into t1 values (X'10');
+insert into t1 values (X'11');
+
+-- truncation errors
+insert into t1 values (X'1000');
+insert into t1 values (X'100000');
+insert into t1 values (X'10000000');
+insert into t1 values (X'1000000000');
+insert into t1 values (X'100001');
+insert into t1 values (X'0001');
+insert into t1 values (X'8001');
+insert into t1 values (X'8000');
+
+drop table t1;
+create table t1 (b9 char(2) for bit data);
+
+-- ok
+insert into t1 values (X'1111');
+
+-- truncation errors
+insert into t1 values (X'111100');
+insert into t1 values (X'11110000');
+insert into t1 values (X'1111000000');
+
+insert into t1 values (X'1111111100000000');
+insert into t1 values (X'1111111111');
+insert into t1 values (X'11111111100001');
+insert into t1 values (X'0001');
+insert into t1 values (X'8001');
+insert into t1 values (X'8000');
+
+drop table t1;
+
+-- a few other conditions
+create table t1 (b3 char(2) for bit data, b7 char(4) for bit data, b8 char (5) for bit data, b15 char(8) for bit data, b16 char(9) for bit data);
+
+-- ok
+insert into t1 values
+(
+		X'1111',
+		X'11111111',
+		X'1111111111',
+		X'1111111111111111',
+		X'111111111111111111'
+);
+
+-- ok
+insert into t1 values
+(
+		X'1110',
+		X'11111110',
+		X'11111111',
+		X'1111111111111110',
+		X'1111111111111111'
+);
+
+-- bad
+-- truncation error for column b8
+insert into t1 values
+(
+		null,
+		null,
+		X'111111111110',
+		null,
+		null
+);
+
+-- truncation error for column b7
+insert into t1 values
+(
+		null,
+		X'1111111100',
+		null,
+		null,
+		null
+);
+
+-- truncation error for column b7
+insert into t1 values
+(
+		null,
+		X'1111111111',
+		null,
+		null,
+		null
+);
+
+-- truncation error for column b15
+insert into t1 values
+(
+		null,
+		null,
+		null,
+		X'111111111111111100',
+		null
+);
+
+-- truncation error for column b15
+insert into t1 values
+(
+		null,
+		null,
+		null,
+		X'111111111111111111',
+		null
+);
+
+-- truncation error for column b16
+insert into t1 values
+(
+		null,
+		null,
+		null,
+		null,
+		X'11111111111111111110'
+);
+
+
+AUTOCOMMIT OFF;
+
+-- bug 5160 - incorrect typing of VALUES table constructor on an insert;
+
+create table iv (id int, vc varchar(12));
+insert into iv values (1, 'abc'), (2, 'defghijk'), (3, 'lmnopqrstcc');
+insert into iv values (4, null), (5, 'null ok?'), (6, '2blanks  ');
+insert into iv values (7, 'dddd'), (8, '0123456789123'), (9, 'too long');
+select id, vc, {fn length(vc)} AS LEN from iv order by 1;
+
+-- the inner values must not be changed to VARCHAR as it is not the table constructor
+insert into iv select * from (values (10, 'pad'), (11, 'pad me'), (12, 'anakin jedi')) as t(i, c);
+select id, vc, {fn length(vc)} AS LEN from iv order by 1;
+
+-- check values outside of table constructors retain their CHARness
+select c, {fn length(c)} AS LEN from (values (1, 'abc'), (2, 'defghijk'), (3, 'lmnopqrstcc')) as t(i, c);
+
+drop table iv;
+
+create table bv (id int, vb varchar(16) for bit data);
+insert into bv values (1, X'1a'), (2, X'cafebabe'), (3, null);
+select id, vb, {fn length(vb)} AS LEN from bv order by 1;
+drop table bv;
+
+create table dv (id int, vc varchar(12));
+-- beetle 5568
+-- should fail because DB2 doesn't allow this implicit casting to string
+insert into dv values (1, 1.2), (2, 34.5639), (3, null);
+-- should pass
+insert into dv values (1, '1.2'), (2, '34.5639'), (3, null);
+select id, vc from dv order by 1;
+drop table dv;
+
+-- bug 5306 -- incorrect padding of VALUES table constructor on an insert,
+-- when implicit casting (bit->char or char->bit) is used.
+
+-- 5306: Char -> For Bit Data Types
+
+create table bitTable (id int, bv LONG VARCHAR FOR BIT DATA);
+insert into bitTable values (1, X'031'), (2, X'032'), (3, X'');
+insert into bitTable values (4, null), (5, X'033'), (6, X'2020');
+select id, bv, {fn length(bv)} as LEN from bitTable order by 1;
+
+-- the inner values must not be changed to varying, as it is not the table constructor
+insert into bitTable select * from (values (10, 'pad'), (11, 'pad me'), (12, 'anakin jedi')) as t(i, c);
+select id, bv, {fn length(bv)} AS LEN from bitTable order by 1;
+
+drop table bitTable;
+
+-- 5306: Bit -> Char
+
+create table charTable (id int, cv long varchar);
+insert into charTable values (1, x'0101'), (2, x'00101100101001'), (3, x'');
+insert into charTable values (4, null), (5, x'1010101111'), (6, x'1000');
+select id, cv, {fn length(cv)} as LEN from charTable order by 1;
+
+-- the inner values must not be changed to varying, as it is not the table constructor
+insert into charTable select * from (values (10, x'001010'), (11, x'01011010101111'), (12, x'0101010101000010100101110101')) as t(i, c);
+select id, cv, {fn length(cv)} AS LEN from charTable order by 1;
+
+drop table charTable;
+
+-- Verify that 5306 still works with Union.
+
+create table pt5 (b5 char(2) for bit data);
+create table pt10 (b10 char (4) for bit data);
+insert into pt10 values (x'01000110');
+insert into pt5 values (x'1010');
+select {fn length(CM)} from (select b5 from pt5 union all select b10 from pt10) as t(CM);
+drop table pt5;
+drop table pt10;
+
+-- beetle 5612
+
+create table t5612 (c1 char(10), c2 varchar(10), c3 long  varchar);
+insert into t5612 values (X'00680069', X'00680069', X'00680069');
+select * from t5612;
+values cast(X'00680069' as char(30)), cast(X'00680069' as varchar(30)), cast(X'00680069' as long varchar);

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit2.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bit2.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+-- the following test causes an out of memory error in jdk118, so only run
+-- the test in jdk12.  
+
+-- Test for really big literals. Throw an error for now. beetle 2758
+
+VALUES (X'4749463837617201db01f70000000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde321f90400000000002c000000007201db01c7000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde308fe005fc122f6ac20b483d0a61d5488b021428510a74dabb64d62b68ad5b265cc7691e3b68f1e417edcc67163c98c26298e1cc9f1e4c58dd734a2ac4653664d943637ce4449b21ab59a2d6952d3a651e6499f34932a556ab428509c41c7219dfad3e9ce9b49ad465b2af4a7cfad3fa979f5aa34ec57b1d4ac45a306566c34b570d52265bb96ee5bb668e9ba45ba36dad66a6bf99af59937b0dfbb78dfaa55ecb799356b6c21d3f509b7ad5fc297d112462bb099ac8205254a7c26d19ae869a64d9f3ead2de1b569d7b45d9b4d7b5ab6d719afaddca6f223cd91d37a92bc982e5b717a248b6b2c97eea3f26c52398ebb58ae9cc671e98a37bfcebc79f66ae3bafe674f97b11c76e8d8c763379f3eddf4e9e0b795d3872f9df572e17857f3768df974f3cc5597dd38edb5474f3af498e75e35ee8de3cd7ed901e8cd84ec95838e79e079535d390f4ab51f35133a88d4350f7a03a2583499d895581a1246d883fb7d882252d2ec774d383f3d88a25926ea58a38b3ee9586238d584a3628d138a45a4892896b86259d44813d68c30a69894542186281068ab89a65a97afd966db6cb7bdc61b6ddbc4149b6d6992b41b482a9523df36086a37e078f020080f3c09eec96776748e176177cca123e8a175de999e37d7a5e3cd8108423a6036ddd1931e73f4a063683a9bb6939da6a0a6e3a9a8f18c63cea68612c8a9a7ecd8d7dda8fee6a4d36a76ed808a8e39a69a638e79b7a6b36b75bf6a585d351896189e8421eee7203538ee37618f317a138d942456230d937e4929e58348ee28cdb552e2982393ded41865394a4ee86c8f2612192d8846629324bb4c1a096289cfc2fbac83b83ac85c37dee88aab39dde8ba2569a475295198625aa41146afcd169c6dd5e846d135b98d24276f72a6a30e9d2079974e9e7456f79180238b971da4b6b667a8a65215370eaaf6853a73a69cc263ab3a86c6331e3af2c8934e3cf16c0a4e783e7bda4e3b44677a2a3a45dfea8e3cf1047dab3c57d383b53c4c6b4db5cfe864caced6eca823cfd8f3786d0e3bec68aaabdbe1b82db0c0e18423ce8613d64d61fe39bbe6ed6c86319bc3a283cf1ad96394135e6bedb3dc52f30d93cc96786f90d0e6cbf8e3f87a6338bac6e2caf8e71a0accef38e0146c9ee7bb022cad39edf4dbce38ad8f33f63becb873f069dc2c0cdb34dac016316d1267039b6c64f634114b69ea0612a5cef5345ea0d8494a0f3d3c4f3f9ea42b6f9aa9a1f49c5a0da43823ea1e39435f7868f4e3c583333d3e97c33e3baa66433d3a3c8b0ab43aa21e5875d8e8c04374d1f1a855dba036b5788c2d68f390c7a9e0e10e0312ed6c611bda3c6ea52976e8ca57e6209ad26aa52b0bad0d5fc40a0787cc53b0104985401a0ad8bd1c141e2c858771e1b08f37b00423c3ad2b1c844b8791c465b880996386fe75630fe1d405b071000c448feb21bfbec1c26e3471864723503796063bd64d917504c2d5eb60b7b42d767169016cc7c112b2b0dfed4e6268049ef02e129cd9a4891aca4b1e4d30d61f8ca548631b12dfcf46b62904a9431dd1c31ff774a62979b0cf569aa2073ba2160f9e152d5655d3d9f69ea6a9aa550d6bb72ac7d60c4935a0854a54080c9a2847090faa7d4d6bee609a01bf6649774c0d3ba25ce522e5e18e030a7091010c87c0cab18e5aa2a3606ccba4ae74192b700cec83ba721038cad10dd525891a585ad7e78c649ebc01cc4848bad60fbd010e6e1a0e89d2e8e6e7a8d10d1035f39c009b623a27d40e2786e868ed14a7379ad94d78427186affedb22ecb8083b799063916c6b0738bed88e45d6a30f1d60c10b00b10a24bce0a10a5d682bdea0501bfc6361d6e086431ffa503a70431ad7d0873efcf18f8ac0668ed3108748f7e18f95eae34c23b5877e6e7423feeca31ff6988d3df4d10f78f48739b309c735cc71d37ef4c31ffe382a3cd43152a426d5a8fbd813cfe4c133b7b15487e960e93cf4b10f9672751ffab0873a74358f7e2002065c482b0c5e100c7c74d51bc530c63df6314074b8031d0954c75dcde10ebd9aa3970a64073dfc518a17c000ad5c80011df6f10e7158f01de660c637be618cca0a0319e8b0073e8c310b5ecce3afee30c73184710c6320e318c7e88537c4610e718870a7bca8fe45243e310b6fe88317bde0452ec491a3fda06318863dec5a1521d26364021179b08431e8f1ad6f7c4b4ad12857b9eec5ac7074cb1e71486c62d74a077d54c31cd940831ad08006405c437191c80372f3c05ef62aa319edcdc319cc60097714a99bd2b087373661062f74e1bf60a0432dd4010f7394ae74dd00873de00b062f38980eb9880418268c0bae2d4d20b2484632b8a1058e729414dc68084350c30d2178f80574c00634fcc1841383011b1391c634b0818d663c74ad8765ab3df6c48d2255831b5f08ee61c3a00f8cd903133110f20b48a10f387a031e8515ee5a2db18fe00861bb871d833bc873b77dec41ca3088012ed611c36d7841b8891dc3fe3d5ccb2165c00311c14d2b5bd5118e615c59bb2f18833f5ce98e798c95af7caedd5f7565c17db8c2b0dae5c218ece158bdb6e31dfbc8c40bb0fc824bf443a0e000076b2dc80e7dd001ada0b60136de018e7588c31dfa50051a6e2ce5c4be2011eb68ad91d6616334c3201124da8717840c031e28431c977bae341e873918ea230f607ec11cf6618f66dbe0bf5d48f1b50c470f332036b1b8d005a82f018f1e4ea80b69957325649a0e71eca91c4bdd0637b959307f60c31473a88190c32d66764c718cdcf887beb991ef7ff0bb4b09d946bfb9610f82c3a3e0d8e0863e0efe8f9dca141b743cb8c3452a52b1062a5087ba063c28ded5b0c2631d20f7d51ffe6318214ead9490402be53c0e3e8f79a403e463f5953e8a718dad6e75b360e0f50b2cf159d6fe796a545587a9cdf18ed0d2afb5d961eda9feda8ebbd6ae960a8c15dbf84ccbb11970eaae94c73cd8b134be12e88bb2bbab2bdbc137778083eb047dc73bbade5a5db972e806ce74a605d63a0373539e136ae6e7a4590d711629497a2ff684109c387b6d137413b23b38dcc15f30849b0b3dc006ae4a670e2319b31df3bcbb81059a60708443ee053370c10e6cc1d61174696867874092111a32c25822d0a8068c4d730d6c08efa4ba8178c5ce54b1da5cc33bcd1bcf3a3c06a8a5fe117fc41fd9f105a933755808e5e5387ef4ff68fca2b5cd63bb0a15cf4efe75d7aa0a0d414f5347db969aa7b3d1a381b5acda3cee0aaaa79f2a986b53a002c56f0efc59d0ae86a265ade2b1fe82a61257e830366c737f4b27686c630e67333659b7807c35750758505a574bea90407cc533b5434b7ae53653b736f8172b75a72b05552b51a70ead33776ba32bebd00ebd3456aeb436ffc736ddf4799a0382e2d04c02034ff2148357c43a9ba745a4e30d98774510c876a64730582450a6b234c674845d947af5c00ef5500fabc77a0ba130af570d1201636d9226b2973cc0d37bca930eba7123cdb10e69c20de69027eb803fc8677c7fe431042655dbd77c3cc386cb477df2500dc48035dba3293af33428c70eefe07d58833fba524afef1600e2de7679c7235a5b4495475741dc833ee106bbd344102732b6b33369a924a03b8487af589beb434bea282b5b37ed5712b0c543b01c8356e273501f847ee373790554b7587356d333509244ae2573676458284c67520d80e2ca80e05b357f2c05aad534bc1c482a9742bf5d44c3d2442bad279967779331830dd54304ed44dad03838f6384a5f375edd4755d345097b783acc30ef834504dd80e52080b1af60c64a43013711a18830d60881bbd973c1f114772d21ffff87b1e9327eac00d04b60d04867cca178766230fcda73386840e15b77004260fcd564a7488805aa70f1d29527e1634f6800ed58049cdd7729d64219db47f63a372417375b4d4fe482f792bb9c80e36a775866241a7523453b353a6623541f334b8f88a1f3835dde74a42573615d83675f77301858095e876ad928b0545687c75959ff581efb73675b70e4a493772b78e73f3366ee70eb2437402b30ea4038260b96eba6483e2d00e753396c4642ab09360733377ed744599962b71177a4d374575573b05453b82580f6b8798ab6710339685ab217b65a48f1331476e043c6e648680f2316bd83c6fe831f2d17c1e836e4b951dc3d78888f447a8e20f6540076a6106a4b00fd4072a7cd53f8b3006fd60576d230ffab007c1b07e4b950d91f00d40330fda905ea4904028390ca5500ff0100d99e00d016893f2600c88a0077490077d9569fafe600697b00f7c557454d50decb00fa5d0036be729a1d50ef7d00c89b00f4d770fd9900791f008b59040d1590b5e1009b4e005b4500b745003b7a00f57790c66f005b7400b745095ba620fc6900789d00b605009f3a077b5d00579700b790006ca105a3fa40b601009bed240d5590c91300b02aa2bc700065d6009bef00579b00f9a63383f9469fb700677500d29c8a066700ae0f008c7c9743ac967a2e77957597703850eed006c63b9a4bad2977b090ea2c23a751795053550c2c88ca64750418398f5d04518061a0b7110af077ba7518fbba38fc003716e2470b3611f6d3a7cead01fcf237cc9877c0ba9299c122b4b577f89b47d6ec37e04c67e67232bfe9e2435f5c7297d6557ad437fcec86968838bef200ff5004156879b092888f3b08ca1350f45577f4ce9674ba74b4a984a1fc8353a290d9f7783ac530ec6146b73a70f99c008de295063e97929383766477701e82b5ca7931da42b71694c7f3637c0684c6cf67975634cf2647987c74c7869604dea439547304ba82b3ed4a99fe779319aaa0636971caa8dac939e4d57508e7a8081c675b6d874f2709e6cc335ef300f5d1aa9ad000bcfc07a06e110f87a8fb3014774241170745203491bdef13104b90da5291f78c23385f22974e886b142483cb37204269b55052a88884b10297e4067358db48867a375a2747e0884925a879c097449a294404d175a50c7fe362d974ae27735eb175ae9300f063468553956add34b52caa183363716145a7fb686ae3a9b07483b5d84824a3b8ce48a9bc6c46701188b95a8954b1a30e9f40df4644cd6983783074332684c85334dcf026c99668304932b99567702a5842518aee91a50a6b4769bd8740145b7fcb4346ad784f34a10f4380d09d398602211282563f758314a318662083cce510ec4d21c27432742f7312bd3866b7821fdb32b751836b10934a384b210490e54669389ca0efec006a0d00f8f20077be6678d34350f39b2bbb88b68b37ea2b4b107840f55800bfb204a9d08417cb53f2f5968b5a00cb403ab60600ff7900878c00fdff005ff500fca2a3051a789902603b7fe000fa526304f17976d27adafc383734341562930ec4796c7060d5c9360b08a0bd66a7756344ff2e4388ce34c3218b685732d8c336ccd0543cfda0de1a077ea040ebf248ec9e4445b040ed4c09645d836e6da0e67f38e03e8a5f278afd0f07a644446694263b0e18596f985954927eb307dcee190d4b70e7e427eef2056c7970eba889c7be2b11e3b81f0b08b586394f6100db5700a9f500b2ad557f3b00a89400bdf9040c690098d200cf7300c906009ed600f5ab70fbc6009b9500396a00fed8092fa300c9cf009b7000ef5600ff4500a9ff009c6403bbaf90d9f200ab440099f200c88c98c50f759b6500b5dbc0ff3d00cb5c00ab5b00c4f080fbe400bfee0f0b2724c0bca500fa7a20e73876aeb000cb6700bccf00ef790b4ad030cbd800df7106b7c650fd6d00bca000dca900c8d150ec0e0c9d2e02ba5662ad17010449a7973c74de9a00ccae02b32280ee2548393f52cb71c0df48bbf49542edf702f46f238008377f49b789dc74d9c375005b3b677b9b64bc34dac83cc2748ae63c7365d3a80ecbab7f54a8f0dc1cda89185581831e14c1b2a61476b1a7c66c80d6bf8470829551fb7863b76c27e869a6613872be7b1a1b48833dc72b9f947673381b1ab75f6d07203bd88068d9ca344d07d8692070daf7df69225ab0f266bb2258b92fc77401eab80231ba990d5367a554ba1c58aa617a5809694ed6b8e3cf8fe7f7c45b57339377563243f547961bb439f4322d7620ca1b00b99c0c681d00848d00748f0011780032e90021e900119d0011d800114a00119400343400349900469a00ac3b00bbed024cf42ad79f72d1f9279cdd44e680b824b18805f24a565f97feb403b525a8e86f98486897aaab725c9d00c07f11809610d09510d0961a682eb461793268e1b4798e99922539a7e12cff14cd0e4d77279329c8ecdd008a491290b74f8b088f850d1246bd03b15d15128d1606573305c0f1e3ba9a6edae1f1b34e4990b60f5c5fb300c54f6aea1a4d90c4ddaf0aadaf90006eb30a9413335ed2a88bd7a81fee7db99e84afe90099730a133b84c3ff4bfa9da4dd61aa3d2fe6d387a2354df100dbe000aa6a0086ee0076210021e70011550012730032390010fb0031d20024600020f400114b0000cb0000f90011640010f40df16e0010ee00014d0010fa001e17d014330034840033870042c70011da0011db0df3930042330023310e14740036fe008bed00cd7327550533b30597502c8a9911ac121e8c09f98e24fb80a0743c17d1d7b55080d843b1b60887b74d41c02ab90e9c00dd91187dce0867168c2c7b7867e82929c4b558ff8882be70e1a79404029d9b4bd88125dd02d1785cda60f5f2c5251b8e5f07a0f595e0ffb60db936ad0e04057b4e40fcdc004c2b00fae340ff85006cbe09e0f3d0ffb200479600cb7700ffa10a9fe604e0b3c10e65bd50c34200e2cb50778e00f55b70f71e009f7700fce700797dc0efa00096a760fde5003c1905307b684b45c24c0a64b504aa4d0aa213bd40cbe600c73d0011480010ff0001500dfefed011ef0eaadee00ef6d010f80000bb0eb0cc0000880001cd0021e4001f33ddf08c000f85d01bbee00befeebbbbeeb0f0001b4ceec145001e25ded4afd000e90d41870014fc0df0fc0e01d40032400047ee00ad1e01e18dd3a097440a728a9505835f5100f51088550f80ef57e021aa0024b200558a00552e00977ed0aae600869e008ac400c786d0dcaf0180eafd76a117b74740de29026e2f07b77f3722f377cc3c71ceb4ccfc73788a889579dd8fe57b39975b7a257250bb2f92cc8073db2254be5b6cdd0f350d0cd964033fff21b0df39c9a4a0bdde6330b416deeaea298407cb634e959ad57097246caa44ddf5a4e0addf69b8df81b0dca202dbe40094970043ae0022320024d80dfbdce012ef0000ce000f2fdecbd6eeb0be00026100410a0edf18d024440ec1af0ec19e0011840eb15d0ea679ff66b6febf5dddff3cdeb0e7001f87d01887fdf0c6001191002e27d011f6001fb2deb1d50047530042640021d40024e500582900a5b4120ed2aa9a2148566dca55118000f7002fa7e024ba0034650077050074b40033bb00682600886b0041990044650012a500438400886e0076e200785a00cca638614feff11dcf0133a240dd6f00a8f600cd2000dc6f00bbf600c3b0487c7a789874c7d080db24037f411384a08d467a43df392eae5241b85f09af3bc9db29b0daf2819a95b6a0fa45db288b9ae0021afdd3b79f3eacd2b38cfdd3b76eeccb9533810a13c76efdcb163d7ae9db986eeda81d3d82ee34673edc4950457d25cb78d2dcd8103e90d5c376f3561d60c07ce5bce6edfa8499366ccd829244b90ac998226d01310399c40a1b1a10205070c2854a8e0800206060b1c3c7050f5c1850b152e74f0d0e143060d182870f09001c2820374172040b0806edeae78173c6010f882050c1516046670a0abe20b143260e8802143071233dcb8624483c205101a407cfed83a020409291fb0386ac326902f6a14d9c993578f5d3ddaec7464d192a50e962546926881038790a13e70961021518202050b101e3cc662c84d9f4083804ddb96fd9ab56be5b297bbb6cbd4ab357f4c55238649542a5fd1ca51032694983975e9807102e62bd02762ded099834d1e740284679e78d889679e892682cd9e830e5250c1000b4aa842792c7a679ed734ac0843d75e7b274481421431c07ada812dc4852ad268c38636c2481e8f34baa8a391301aa91d965e8249239840eae6c71d5ffae8239d64ba69a79c94fce61b659431a69847a62c659659fe68a103102a7800b0b01870202faf0c434cab07f43a2ccc34c15aae4b0c1c48f32a0a107bfe2e03103c70ab4b06c0fa2aaca9e0eceaaeaebafccab10fb202b45038c7eaa0830bc07a80022d5bf8e0d1c0223d6b082794482515518a4107a377ea79a7040d88d0a20e2b4850e108238ae02d8ae28c98a18a43b0d080cb072ae8400d4f3859a5934e5281e69a6daeb9261d71b649071a62acb1c69b74aa790410638861a49868a4d9c51878d251275c78cc9956144e8c91169d79d4a9491c77d491471d88e40170c284e20950c27c332448417b604388a0143772882370a289c61884a16cd21b731e2a685e86440c31238f6a84d11c7140faefe187426aa91d77dc49699d8dc01927c894c431324895610aa726736c3a52a626c3f9a6a69b85f1e61b638efe51e69b5e1e11e594395a7840890bfeaa2a2c42cf44f33006f8a2e001c8aa0a2c6a040ea8abcbbfae024bafa92f3d8c4f38a5d61a310658f08005aaaebaa0aa053ac8a04fb018c8aa020b2a6db44b0d4af06004127000a1510b0a6f8c83465ba0c1053f3831251a73c669e79b22722364923e96484105133ce060010a96c0020e2c8650a1041c00f74087340c314410473ae1a49367ad91a69a64b759075c75b689a65363d678e21163aaa9461a627629459554380985975038a982925d02912390424209a51037d8d8c30d35d240c38f5ea229a61863a84147de8bf24568647702cc10a101f59de7615fb078c283e45ad8d205303040b794000d43c8920bfe5c908641dcc21b2c79cd412c4230818c6c1d3cf2188e4ae2918778a4470f79c93a48f630710429241afb914e7492339aed642737f946cc8c6187442882146a508228ca909623b8c12c57d1c005862083af20060160f28a5ecef20004102a2c66129bd4bae42640e9a52a7c79229bb814b75d15265060fa93063a00a7aa5ce589722ba257e614a9aa05ca6e5daa000b2a0004cd2ca70218184d095c200537f82114d6e806e532f20323600105cfd1011c0e51883ebca10e7e08161fb45085223ca1084d8083201a49883a2c2110a630842a3a6108544c631ad0880f3590558d42d0000d8e7802119c508528bce10d4dd0810e2ae9062810e1094d20821c9cfe80851c54a1094e90020d88a08321e4e00943a0410e98a08432b4210ad1a4c1348f90863520c1096e6883f8fe608747d0a23f0fa3463130b18841ecc1097668c11d50410c62b4a111c650820b4a10854e4ccf14a51885121ad5031170460725c0400ebea00324e0a03068a1db0846f098c744e6063350c2204c810a60b823540d89116c46322371e4e8632751493b6a528c3264530e7fd8031bd49008467c2217bc108afa8c310b271cca399b314207ac622a0660e0803480005996a315b454606c598b9a57fa22a6239e6d504f545b540f80003262006a0cb080062ce0950e540d3073bae2d8b472c62ecd496a97929bdaf88429b48289500cc8c0593853feb807786006332001000e90010b6845075a78031cb48085294c010b5870031cfa00bb3ed461387e10c42108918513cce00d9520841ffc70cf69e88e188e0004240401074324010420a08120ea000712384a32b04d810e9c70041dd0c0031ee8e510244a0312fc162d1f20c10872801c1de0a0050705600e94400837d0e00e69e840096860840f48a6053968c21fe6d0810db880061dd8c11370000a5e14c317f9e905307ab10b5fa40215a6d8052a06b10637acc10934d8811e6f00c0b5c425321a48cb0870e082168c400724b8130d3c010c5ea082178fb043199a900436bc410d7f780430e061b29476a31b2f1147cfbc418d5c1c412d2ee8aea41ac582fe11386a5733e0010890c00646b0610d65702608ccf6a53ddd353076a34a9ac2042626dfc52f6ffdd2619e1c3526e30d6a690acc5297eaa84445caaba2ebca9ec416e6a934594f4cd6d303c2da340dd458044c008255f496dd35e860061ea8c0119ad0881338e0020d48cc5729b001082459ce6b8c94596860021060610622c04227e0d0cc3714221084301d1b045188e034b20834480211d0f00643d0405369a8420548c0bf35d8b20d6fb8a4f6e0508552a72532cec581081c35821610214b1860dc0daa808510908004341801056480841e84602a66490b82477081628b713217b8c3271e618a63f04215a040452e4e610a5184c217bce845288eb08640fe3042118d30c52c4ec18a5e9c0214a408052548318a4f908214aa30c52946f10848704214a6b0c52c4ac1881e6f89021fa0d407b40402c091200a4748020d4ef0043ba4210a8e22cb00b1b21c014aaa6a9b290b06361e8510b080063a2803129440830cfc894b0ec04a61aac6252b86892f53cb4bd00545d5a91d266a6b657258fcd2b42b8ac92a5f05d35740409629eefc2a58c15a5b1f05165d7d00e70e6800d32055164b85458dbc12c1002990840edccdec5df90a00024000a1a3094c667540b141800322bcbc0daa58052104918a551802137da84262470dbb4a3802729ee8042620c70943d48111b413842138513b55a0a2539e57052b54310a4734fe82138e1004231ce10857bbc110801844250af18770a201d979e515640e4c832820c105c5dd41082263010f9c052b2248811886508954e0d717b6f8052f52b10b5eec8216bb38c529d4470c63f82217a45044c7ffa08836cca113b498052aee8d8a59dc6216be40052ae26b0bfacf82beb6488513045898a960e02c18f8801c880231280322a8319d9b8a5d699305049bab6b130d80b8c299011950a01070000be8001c90031d08bbb3313a2bba8bc3582ac0609323db0aaea822bb83aa293ba2a7b22bacd18b160cb322fa922c421448710ba9f90a2fea93a55980ac6080c670ab23c2b2a659932772ab250bc1ac69000b98bb030014a852413f738c2428fe021dc0024d588228800229588226c08226908221480329280341e004d53384306c833e10043fc8822768033b7082656a811368140a00811398a80cf00010b8813df00334f80343d8833558033650847e1a1660d80555f0033b60044aa0043910010710b93c8c0c0a80800c8030000401c8680bb2d83d25608a2920055bc80f5f08854f98056020060adb8554f803357884628092624838fbf305f7ca8f4f60834a300539688447f8045338c65f980553a0055bf08567e4055b388540408212b0b1c978ad11e0bfafa8ba488914a749c06eccb236a9806b23c54d5c226fa4003c79801180042c10930bb4802ea9aaad2b1b049bba2b33babbcb0a41c19a41fe3993b8f212b86b321de446ad48b9c6709a40598e19a413aa7080b8180b01ea80bc298b6f1c41c088c132d91318343ac0600001088002a80bae093abc38b2c0c8805e539c13a81b0a6882d9ba4220c8023720843e600311d8800b380126780329100434c08224580334680334308434980127588211f8430dd080b6aa131c30021e700224782541380231800322b8a6d18282820a812c210b21cc3db3380b897b2d06f3001798011cd8011dc0231ce800e23b0b2958455ee0044018055b08855288af38f0001a50822120859c02062be9455fe88567cc810e308421c0803bf0855f408579a3af5dd04c74db0559fc839adb8cd7c233aa904a2dfa126f141dfe339922a42b0cb078149cbbbab3f0c4976b0212300242d0812c9928aba99baf98b61070011cf8023c988335700b21eb13c488a2ac21b2bef8c8a6e948a641c2c6f09ae5fc8bd5c40006432b3f038b37a932b121c222e293a85b4da50b1bb1b932be101bb9093a01104902d82a933c80022880a87a0c0b98819a9325293881e0d0822280022ca80320980aaab8940728814a7a2622088236c082371084264803624a832220cd07d08010380108600112c80065020100822d29e083369801349082756c145d719a3699a2b3f0801380b031a21b0ca0cb4999b60122019e748351008480038546a80479d3cceb6b8324980352e03e63c8c55ee8055b403f65f0fe830e200439e8803b50c55d684c5e988584a30554108540080435d88339f882639a8302f480be53b511f025241003407083285003992a0335304a6e6a142eda0c25680225580326008335f88228100436180126408229f882236001bd5ac72f78822708818672012750833690031b7082a264033b98c340f0839eea002538534580a53500843b90031aa880502c012250020f2881133801af940324208219c88124480234108439c0023670021cc03127e0011a780227880234508337d0b02770832a40833450032728543798553c7922359a824280820af8ab118c41bf989aba0894b4f140be10133491bb02804f27ab0b270b3abb0a8137c0021da82538fe78022ca0811928825a8135d2244f07f8d028788213e8032bc8813440202268023264021c088122c8b826d8831370010d4d011a0881b2c801bd2b8b3bc20a4861a3a7d90c14e0123b410b04c393ffbb003b01b61aeb8013f82dcb08044e488441008453f0855d38c44718a747a08447208563501f9f491f5ae0859f1586530805404803468004f6b2855c984551a00447400285c4b904bc8a0e4082276801bd09011ec0b38772811c70033a40827f750123f8021c48011e40441df82d6c720340b0833b28ca3658833bb08339000446680434e01b1070011e30011c588323000342508345a5810f488221b8814329011d50821040032270012208011ae02dfe677a02847d822310843f100131aa9a0bc8011ab800b8a0013160821658ca37f0033660c7102d9c0c508eaf20acc2900127688332c8b81dd0803b74001238820f10becd505626e0812070ad347a2b34c18bad41497915baa2eb8bad8a470028000e6880f3758014188215f81b0bc8001d50817f0582c79ad02680822638823ee8033e90822288ac2a50022c98d027482c36c8021338813718e028f0d02d29142eba31cd081c0d75499b0d1c108000b87a9b442b8baf3894b050b01908ce12b8013c62013fbc80b6ec00e1db95c1c8929123813758c644f88550f8035a800425908332c8b642f8b14af0d9fc9883c19583364804f9eb456160ccf40b3854a0fe843d9003db2d9c0e688116c0a36cf40362e8855280044618a72f58833940385ac83e6d0384d4ab29506845703b0554b08552a0844f080552a85a50d0b753488547508444b8375268465e188416b800b674adccd5811a28023108820e98811a888219180125b8812750201240ae1c182047f1001e480224c80a05ac0aacc880cdc01a08f0008e1b4434a883b9ea13ae2a930e180116408b373081bba9b2306b1d42280454d8830c083bbb5a2a9f9bb272a58b02d8de78cc8bb3a12abd2800e2bbd54995820c000b08001c10e83b3e6d0eff09010de00014b88069038b0e78022330812818a62010011d380224d0015f058d30bc8ae2bb230f10018f05de1dfe5d0e2d098119f88221d80119380111980cb3d30b8c748bfd1b01de82ad2400200cd0001290230758dc3b690124c8b820c813ffe3153760844008855de0043170023f58e7267839f07a023fd8034944831e905653f00579a3056130069a3686ef4b8440108438500212609cee82d1df525c2670d263a085e9e3d2593806fa13865930dc5310da2610833d20052b0106f9fa052d15060b4b854588463a00044aa85a4ba004f6cbafeb8b695e405c47f90025e8e92438820c508323c000e24a610f48815106c2dc23411b458237180208f4c49a8b8ca7a90a08700239b08340a0bd2ff0aa4bc18aacf1462048031688821c4003b93450e6ec122ce004410804fe4a4804110833af788006d8800d384f41594fb9d19a1094c1300b94b948d0cbad8225a80222705f4bb200126802157800301c0229a8808d838224c0823290020d281d20e8df0e902622a0a48b4a822780822750832448812a98813162000e28ae13708334b08006c001cc05011e988110300224600229e8b010e0001c184c1df813588e9b05c8800cd880c3f000908cb22fea48d714a097745f48010135a084e7fb84997a044658042218023d4382a3648437000121b08335c08136f80346180433708334b50339e0b1387882647501be828cb06d940f18cc25158a732b86f642da62e8054550843d2803b7540216708199a3034310833710da3f68044010fe835028066140031e702640f85440484552f8844628ab50a66f1ab801206f011e10011590012540c329c081c6013916e093bf888c14be8023102842db804ad10121e3934273802a789e4f500fb21d021098c7b1b89b05b80006a80343280331888221f0b529a8c80de8ee9a83801048834260d656651b0a0033f12dbaad518c0520c993e45e512f80740d0caa0a000718022550010f8000073880cba9032798822138a40aa0012c208113c00227b00014200160d3012280821c28be1380821960f457c70013e06f2090a827280111388108d8131968330e08012c8802845d02293802882d0227e88113082b1c48824a19811028be0c505e23e881979b0136fe82800aa82a118c1401b79403754dacb0006d24024648044c60ec5160045168c64180045b38ca65ebbd39e0045f480439508327e030d45044394083129f0313d7543970044a08846ee2351cf0831cf8035be80539188124908335306246900337f8823d30761d4383157f8ec8a8280c0801c5058110e8014ece4db40030f58ef797e3812948033140033668821e600217d815c535810e90652b1283394802aec28a239877c3c0b2bba9002578ef1608812858f112a0142df92dc93826b54c0220407b16a0d80f1801df23afdeacf7a9f193a60142a96a57abb08a24dbdefa0cb363e6de3d39a2bcd82a34a9cfee155f0090bb037875ba700008408008f881fe21d0744f47d713d880fd8634289001387002763f94c3d87523200226a0011a28014013de9e640111e01a42970108388006b8406353ed2ee900ca2e2ea936821698c73f739a9fcf802748837f06c726005c1a58000bb00015e0810c2042bb5bc2af721a08900213c00a0d587117280319d80c2068023bc87928700386b6804aca00acc4680d6082dd0d021c285c4cc0122768a92700881c5368ccc041d00509171c8ef030d20404082251be94f000220da741343ab8305203078b166ed0cc18912309120f1d2e0c99f1e101051c62403869f3448d9a275fa4b879f244cc4f315f9420412206a7132453c0889182048d98286aecb471c3068d9a3569dc3c82fec488d19f4073e4f801bbe7aa93a36dd09471f2a50d5c35729c946933e38183070b2a5058e0c00105bc0e16305860f8b083c20b0e1026cc80f102048f1148464098f201cb080e642ec0d97266caa0196b166d18800002010ab0667da08061d1a1173c3041a141862148b2a4c13283c489161636a021a26188943d7dfa0ce1800002080b25188078d2e6c4850a0c2c50b0d0c143410e2ad2b481e3a2438a2326fe56d020c24285c87b5b80a880778694073a480c89a243c910349440821b4ebc57820915d1a04203793df0c005224421c2021b98a001051d8ca017842134214206347ca1835f8131f000061dd04083071774d00108219c60c71f8270c2c923fe7bc801c81f72bcb1c71c76c861c71c8028c24820896402ca238f80220a254f5af26428a17cf2152080e8a84822803442c9278f24a2c8238d3c4209259058c209988f7002899990381226258c08f9c71c78b6c1e31a73c865e420810c62871f82c8c148236edc71871d761ce5861f81d811481d7394a1044a4a28f1861b82a421030b25e8408312589401a91f743831c50c2d50c0011339d4d04007264aa61703b9c6c640622736c6986294c947da6b9169b69868986d36db61cb1a8b4001278050c20926a8c04108347090810958fc804002226040010216146181051acc10c20622d49a441117d4e7800c4c380104041760514406191066c10844d09041fe050473808508345451c51a490838601228b5d0c41a8dda8147144e4481c41238b43003114b4cb1861a62d4b1c6c6524095861868acf145cb6aa4e1c4134414a50413531cc184144e30b1f1534f44f1c71f813242881c813832881f610df207205f2dd295578f5402ca27a170828928a290a27598673692c823985c5934989428f2492aa4d042cb29b9d832cb2e73cf8dca29a23092a31c72b0b1e7908dfe8168936a63024a23647ef249238c001208989d80824a288f384289999650620b2a8f7c02881b767ca548207f1412c71c5f1c61c71d7f1cc1c20e4020e1d4df4f94b1d31a4f3031830b493881460e6cb891c61032e4c0c30c347c3c03133bd0e7fe824b3a60c1c6132d8cc07c134720d1041632d210630725385041050e6470030e3cf840030f3a20e1160550c401c265cb7ec61967adc1165901ca2ef6ac053c4002e04cab041d20c10c72f0842a142164250042139e00852440010b7080831be0f086e92d810d7ed0601f9a500538a4e10d6d608306abe287f2a4010d706844201a110a47fc81129cd8431be24088a709c21043825a2022e50841086a108258431ba0260837c8e1884998011292601024e460083c58510f92f004a21ca1074860020fbeb0b12028a10a5f78025bdc1088233102128f08c4e302b13724f981489d1ac45706a1083792e2118ca89c1ccf9408413022118b608420fed0343b00fe225081fa4322dac0084a888216b348c52c6c518a5a9ce2146f3b052848e1355490a214a4f0a42d48810abbe12d15abec05307c018c60144318bdb8c52e76c10b5ef88217b3c88528dc084a3479254aa0d05c25e6648a51ccf02b7e5b83189cb00697f9010f8dbcc39112810735a0c10d6ea8c3202a310a5084829498700420be90849344650a2769431566903c128000460671420f64d0810d9ce004df29c1072e0001826d200709a3c06032f3bfff55e6599c890d021c803fd8e06f33c9ca1f02962085254081085ab8a01a96f3863e1082537038841f0cd1074318c2119c60a9213ad10953984215a960c52b6e8ad35dfc2297b3e0c52be866d365ce94fe4da148852d7ee10b5ffc6218bf786a3178718ca502a3174b5d6a31b25a0c622c751857f5452e75d9cb5d90021294b01223803487390c221181f01c2438c1083524e1084a788234770408469ab572935c5c2844618a53e24d14abccc52e96ba4b5ee4b2178c9d0564219b4bc5323697bb742c63176b0ba9ee8216b6981bdd12bbd8cb32361753fda52e77910b5ef44297bfb4c52e226b8bb7d1e216bea01b2f67eb49545c32159d3d8529baf60934598999a2e86460c10458b3510914667bc422e0e4d63d40926c90e81b1a98900639fc618f85405220f6508635f8810ddcdcee1eec4032391802127f700370360018c93c343215cd0c7e1b63bffb11e033fefa7b0d013cd39ad03080329e59c02160cad24eac4215ad50c52a4cd1094f98621532ed84210a51083f10a20f29e544272a31535384621498e0444d51618a5da4a2c5aa08452744a18a5ef87617aed8e55295aad4abee98c7bcd4aa56a7ca545f2016acadad1bdd7a21b7599862719f6066296671ca54848216b94c6a62637b8b597856ac61e5a52f75c98b549c42159ef3453176814b5f6096cb491eeb6273910bdcf2f2b4968ced627be158c7fed417b0f5c531c0fcd853b86d6e6a861b334f414ac22a5acdb9a02ddd220d5c51640d15b4e0ada56791694b7ab2939f0c2e262021ea448c254f904844dfe0229408a2a18552588356d6f0be34c4010d47fe38021a9e908639202104fbbc400840040422ac04073a204f1569100539b4610f6761c21128d40106540058c2eadf6b4453188c5a14c0015e0db6f38bbf87e24f0b7528448297d38711fae1c2aa788527163c094774c211a678852a70fa8a5de03b15f8b6692adebdef5c3eb5a736b6692e6cca8a82ef1818c0f8452c7f918a5f8422965b8d25c681bc0b6064f5ab608dad2a4e9149ab7efc1797a41b264f5125377da214648e328b238b49329ba214a54045308f54e252300913658344d64cf13615d382c49d4c799953410b5ee672ce64b6c555815ccb5e523daabc4473551deb53d83e7695b2dd85d6456ec9482315b2a60065d7402174d9ba3215a2a8fe5227ac048941d8d00f7ee0d18ef2d83848c891ef81d870eecab06c392881084d20c21072000226008504221041bb44f0800870400317f840f2547201f6e0a50223a0810938e0039a31e10b33c0c00632f09d0e54c0034038c2c00a7c80fe8e3bc0048096806fef1a710f983508d0821658aa85379cdb101d3604880de1895560421018e6442cd080ee42d481101d2684217ac8895520921337e5a95237ee0b53f8f615a7b045c05591cb54b8e217ae106ac8435173f5b738975ee5454f5531e6392716ac2817394fcd0d2dcc59685d992b7dcd99ec8d95cc900d71422894c2db0996cdd50923600d39a91c4d9d9228b0c266a15f26a1dfdc9cddf925192ffecc96288d821b39c92960d24f2516301c43c77d553100da5739564fe19f2fe1126c65526c8dc2279082d2b91629b4912a415627515a2894951f490e261cd2228cc5212192e820921cd4c15ad4c11bc801c9a0011ad4d5ad8d00056400070c4705a00b0994000554000424c606b84407585e09801e7c20d403908f6038808b7c00077c8076648008304007f84b0574400890400eb8805e5c867c58c6ed1d46ff78c644dd8f8165db6b089880f1cfecf5418269c2f24118f3618221604227b04227684286d58121c0814ae58421ac8216380121c08120385b27c001bc400125fc9b2ae49b29f8010e5002293202e934822a485829788295cd42291802e5a882fe2740821f3c4270a9821c74422060c21f8c422a040227ec025b059c13b49b2330028eacd825754d28281a8971822870829585c22204dccc411626a15fdd24d5c7edd22f3096c87d56dbf0563d7e962db0020f321699d10d9be1d62c28d66c85c97115e0d50943d52d952d5d1d45ded64f5d5d2f48d667811997d9422f709d67f5162b90192aa0022b00a46f99029a8c1393c0918e50d71fec811c21c9551cc1131c811c24011170211cb0819fa8c00a6840068c4006e8c01348c1140cc8b694cf03f0ca0940c11094005f50800e2c41112c81c0a880807800073c880394866184a5663046b61d0b6804186640a2ed41e26b9086251280ed55e24411c01268fe412c780221f8412c10021fc04125a842271c82119000f415822724664dbd42270081131c4213a4c1049d800554422a6481bc2801f209c21bd81d1ab008f700010de0805210411a4cc11cbcc1107c000eecc110e8007eec000a38810ed0260d088d095c80c2a800060c01141c010e384158ae801bc00516008229cc411d40c11bf8840810c113f81306544009a8c0090442130042146c1723a0022f90df2e8098039e4229b0022f24a3259d1d2af01463d942277d2407e69225e9a095c596a1a516dc04d327089da295c2d169dad2f9824466169bc1126409a4dbdc822bd10d303cd607821d6b95e02c6c592adcc2a35dc91cec81d9f81c2644c2de5c171afe24111bc4c11ad0851a944e6a2ac25e8ac17eec800ee40011f08012188112f08414b8800a94400ab8000e149ecad08018c8414ee64020924f055c408b50401a3e4844e9859296cf8980c008e8807a68c0080c810f7825ba2c40b86506043c48034cc62442a26c9c657fd9cf80bd650140c012f4011668c110ac812140011ca04227c40223545828684220740288ad82bfb15f2c04c22ac001f70c410898407b09421638000a8c571314411d24810eac531620410a78001148c155d653063c4113ec80901a90077c9e0e64c0056080098840098440751401062c40114881061846ff4806097440035c401d6648613c480600c109300004005807d4c009cc40fe09f440149c0009380123b8c127a8423455c11d7080a8e60239f2026ff5023108c32f94524fa10223686467cd426bf54254f919cf7dd62d541553a9eb5409195859122f715c900183301483631568849220bab6d66c191a64b1d99cd556678da47ce2922725569a85646c9d42989402dc0416e5400213b5d12228c21ec4811fbc41196c8f1adc5a1a0809160e4e1bb8400b044112a0011290800738255e3c080530000558a90ba0ea03ac2104a4cb06b880d0d4411d00c51a2c8a18200118b4c0649046595214b22c46616c865b4e94b2404bfee017b450c62168c1061c8006c0412cd4c112484f21744221b0542160011664c121d84b09ac0121b041210cfe028369c11ad0db2110810e180138f5c156f441164401f7201e0e9c80a8944016f49316546a1de8c00814022610421ae8c014b8011610a20ebcc12b18c1057ccc1138eb1018c1117ce5018880121c00afccde013c6581ad467f3dc625ce1e97e64f017480442dc6094801011458775066208402170ac220e44029f0541d3841063d811bb8a72388c236569c9f595a2af412bad62063f1d9544964f60a289b1dc3be1e8355e99945fe98f7ee592f69e42e49592ee859a6ddc27b5e5d2c2d15c416ac7b8ec2d9318930f69da8c91f9a94028e380925f811a208c22250c2d278052318912378c223986d10cc40e8bd48a97e400bf40b012d5015ec41a4f84176fe29411078d311e8008ef2133f6d4602b8a50100cb0308cb58264645051843e11e5db2a5672c0b6634001114810a48411fa880099441047dd40669411274401540a32168c10980870ee88005884012c8ed72920010648011d00009bc811160c12e4a0107748701494f0a44010ee0c008688012f8c12444db08e828080c411f248111c0260e0c220954800910410e6441c7e0c007a0c001a0c01c98c08b8c406104805caa2997b2865a32f26ad0a508f026053422611c40008c1b9782480274c0093041a034c01320c1020882da56e076954223f8c239791242e26bfc4a6483c2ebd5d90228d8eb46266496750d29800228cc0d798a02285012a589829390c2fe2929a829a0422f0803317416c42916589d821b4c5229700db79ed2c1ae523227d52f0ce42c289ad2f5d11add1d201091b3fd08d104c22858c224e001a3ac8114ccc005a421056447b680cc09b58113c84019e34052d6410b1d228cd24015151e0dd4411f348a1b4481120041d1b241e5910005ac6106b8c049a82cbb40805f3854ff9c694549866b84740100400994001c1082162cc11a608114c0011624011c60581f68c113430002a0000af88d1600010264c01710c2244481de0ec11ec0c11f1c021428d0a66ac0048d407466406f68000de8401d584813f8f0136041199f400a0490ed96401ab4a62f044325582e0b6cc0037cc120c85a1b18810580fe0012b0411fb800129c40e75500066000b0a4a1b3b40602a0b51a6680d55a2dea3240ee25546610ebf850c66304db03740010d44c2700821ca8012c81552e98c28f19c3be769c3074b69e65dd9e6de42e742b29c80128f0023081025508232840422a988222ecc223b40137b5811988811d34c2f99982987c0523c01e57a0029935c21a8002075e1a2a2c021b24429a7c02e79442937d02d68c8299f8209b3c02303f821d1c92e638b71f110d700b23d158cc1f2cc21a394e20acf75b7d02e9881a25104d123142d3d8dd1e2452d10c4e2008821fcc414be8ce1ac8411fa88176294106984f13701823284183cc2144098bb08486fd6c06b958e709144247fe19c2212c814aaf1b16640016f4411da4400e1401274c42128000e845c0026080c294411540810818c2127c80f31941cd5c4006e0800c50c00c448111ac8106ac812760811b604258938005fc8507544127b80113a801123c8120a84121d0000588c01cb440076041a17842162c400914c50650800ab4800720c11eec023546411988810c08480660c08658726ac8a55e37c7ea3e88b1f8f5b61d40cd4a54ff28c6a0472d64b478039cc027d801113001207c02a1ed563dce020c1683c35de455e9d92e0433ce35424e908011e0c111d400438b011128b94a3ce513a4c00218800ae4c00880400b54c00938c4131cb80a54f617344227dc81a24cc523c841fe228c6c1c588523588a30be1d2794c228f05cd484924b220a750733277c029ca48903ee329b3082cf3d8222ac81124c929374c223448d22f8011ed9761b5c111330411b24825c9dda222c0226b81c2d60c21e9881797d811308c1e9b50012241e121cd00d7cc08610064c08d45fe005039c4011c4c7b4e145b344ed6278800840800e10810870c055364113b4407f680216a8400668c00300410930766664800c9cc0553a01f720c11114011aa00011589011388121c09a21a081114c504b9c000d0c41138400420da207987c6194401c2441cd1698132c0104b0a68ad04005700060fc45074008d67f80126080bcc48127844220dc810c044109b4011dacfe0111c8013ff403dc9742d33cc10e7c40523a001f38033ff0033968420334006d48860368423e38433e0c830424400218062036c00f6c423ef4433ef4810440000e200009908c18400239ecc3313cc237ec0339f802dc809d30c4563118433dec83e8db021b84422f94c110a4c111b0c12664422614021aa0c21ea8741205011464423364c22188c22ef80112a8c120c40116f74011b441df48791070391b3402e4d2c230d0c2a9f0800c14c1114c931a00423ff0432fec1139a91d2d9c922991027573822514921e41022ffb91572442e2fcc156d088a899571cb0411a240140b838f1c4c913357b123d62a48851a3858cecfc91d306cd11274a822079c3fe260d921c69be30c182660e92164f70b42041810102040c0a1458f0e00283991c1c3470e0e041cb030b1a04ed2993039013168cf0d461428405040b2ee468f1a64f1d385838a83041e1c2893a2736f42124b60f87256bfa9ca060818485237504194a1b2205132216349400a123c389133ade4479f326501b1a6b9c2c9143c4434d070b9e4266e3cf9f3e7ec914f1dbd78f9fa6071b8668d0f0804283155bb64861c4c44ea74a6ad248dcc7af5f294c6e90fc79824407962d932649b1500104850a182ec8202142cda42d53b4a8a84001f2634dfcf8c5a23229568e1127d26030c2a4932556bf2ab122c66810a8536a403d7a94aad4a0477f70ec01844097febf61b40fe16718ce5cd9a00e4a8e58e29336ecb8451a659651a617524cf904945b669965367e7cf9c41b7e8cf9e4145a6c4965165b7891e69e7dee01e61353441185944f3e01c61e719439051e7bec0145913f0051e491351a59c71e6258f9e70e25d050a30d251ae18c1f66f0c0c30d34f090e34a31d6f043a235e670a38d39d2d8c30e36105a04924738f984425340c1443e4812f9e38fc2d6102490421a81841141e6c82184370a91838d39e690c38e39da18139236d2c8028b369a100183e93a088204971a5080a706367060030b1c00028d131a3880810368d882831cb0680082122cd0218a080ed800820a44600981031cc8e000083cc0829049d6fe58a1830c4680620a0a4898018a32eca8438a0e4c30c1820ed878c2af13903041861692f0638a070eb0a0859d4e288184111680ac001fa008c001081a000285a70a380001074ca0018b411d71430737eec082040fd66863da144868c39013f85021041a4273a0881338e8c081045e72c0054392288383139878808312d0f5f7829d7ed5a003112240e081052ab020081502e1639127806e2310419c40430c0d38f882810a3e3600a803123020819f0ef0d704142a80c0042880a0c18a2f54b0e084294a61c489548cb14594537ae1859339d470c4945268d9c5976278998517bb77d9c5965972b10514504c3925155a4ee9dbefbf4d79441140ec4058cb44fe460985924a0651a4914adc5023a236fe58d3145350998594504621a5124a1c7a44944f4209c53545d69802893d18c9fdce3fd860430e3f7367a4903ff650638a3682108106340251e88f349eb0930d348610a1841028e8e0830b3c00576038a0386188f0331001091a0086a208000028008226aad0a28f21ea58e2010fa0a8e30707a45842051a4e40041d64410b2750011696b081271461098d3884093c908442a4c10982c082ae20f098542d6008274040aa5c40030bf080109dc0820b407018208080691808810c3a90c22560c10825f080056885830d2ce000112882082003999fb88401376b010f9a30041c3c210a75600309ead0842810410953f8fe032738b13c23c40b0d38798a074ac0819638a0004fb9570968000190fdaa0004a85ad50a70010c1ca05f1440012a5600b025a0c0021b388069b0e00113acaa6a0430644c16d0af98f8eb293fb1894bfc55b5c7a0cc0498d8032604a184404062108098c10cd8d08846a4821124d8832f6cb18b5ff80215a0e885df78b1b762ccb218bee0852d50610947700214342a45284e418ac3998214a8f8442950818a539c4215946044274251cc501cb3149c6844f33a018a4e34c2118f704423e4a34d4650c2998160c49a5047894f24424c7650881d1201092fe5ae506e98831dd0c0913288210a73f8031cdc20882b25210319e0000a4e500426f8650839a0c1fe13d2c00635a8800106a06301b2f7011270ac2b28d840064c00811e5ac00243f4000720b08012a4e0012518c2121cd0862530e0041da8c2053340041a100107405842f706013e3ea0e10f8750031680d0812770e0025850810344d0ae85b5a400060800d40c400004148001296d000a1e50863788e000064040061e80562554a17a1b90c20642700227c8a1376ea88013faa08435d4e1024f58831120802d41846a0dc0f240cb18094996b8f129bf3a40005cd22f020420008a244001ae4a59cc06800002a0ac6741ebd9000840b4949d2c654d1001249ce0009735240a0058862170c00244c8c109c4d080251481062b50411938d1b75480829b7dc2c488feee564b61142343737b51864ea1375390731081c0042d78115d5ef882bbc0e0ee2ffed68b59a0029aa433c52c444109730642119c201d253841894774e2119600842108518951a46e9b8cb06620a2300523ac010e7898820ed6d004341402107f1844ee06b18886ace93e7e40c30c4210042bc8e10f73d84320ee84d4213061099890f01fe2a00308e880093898c11156d08099908a010da84011d0f00519e060630a98951168a081297462156c28421fa08085122080b20990021b1840012c9ca002d31141af36802e14b0410b38b0c00218e003422cc1041b83431548b5bd0670200588740a986db2000a303926fde2ec411b10ad053cb46a13c0990816feaa2e27b0550d6c2002098a4032117400080da080124ee0809728400d47a0f2031430840e80b98d31e16c9ddd48593a7eba8d9cadec6949bdd9d6767aabbf62c0ababf6af7fbdda016ba180087680032518e10b37f840073ce0810ee0e00821d0000632d08232e0e1098ca804b540518afb8c621090c845dfb8bb5deef6c216a4e804264811cb57669b16cae46e2d79d18b5ef862ddc038462f6e810a6fcb08126b50031a6203293afcc111af8b9d7983390a55d06216bbd86f2300e108863c02149c50841bc490064138e2df0a6104261c91083c21ca0f8cf0833901b1c9466042148fa85319a8d8bb44c5410e4ca8c21bf6208739c4210d71a842062a90feadad15620e1bd98323fc540841ac21073a98821520b001f679b6a57d3082054ce0830c3c610a50f8c1014ca0027fa94002feda40031e30d94e63c0013f2901046c42c703a4f5010d60c006d2808205406103a5494002704683327c850218b854129ed0841bec10031f104d94dd2e82211cd601af16810766b0afb232c00411f503b11650d9027c40ed859c2c930f496a439a96000c0041044a4b5a01b4d18d6f5cc04e16d0010b5ca0031c50c20e3ad081242881136bc87dc4a2a804242ca272a140452a1cf187479c1715b6184525144e8834a8a1094f3802e0a3a08639d481bd0f66c4233ee1ba529082447fd39b2d7d718ce5ce726fb388ae3267c1ddfe5dec0d15154a262966f18b5d1c2e15a9783f294e419964a4744ca1dc4861144ca1ff1ec12120819c02c11128211546a176766008ee844d44611438414638a1100e410b0ae1fbfc84bdecc00f046a0fd644a06e27781c410e942009cee708ca604ce2600f88676804610fca000e9a8009d6a00c98e006686006688f03ca675ae480100aa30664e009784e0ccca009dc080a9c6e06c20801b6450ba68003b4606576a8016860036402012e2bf3342f26c8a8d312600908c0d11eebb20260ce1ea002b68a0050000b2420260ca0015ca00836a003e68c8e28800522e0015c2001e2b004ee6005e48c0892a00f964007f84d05202004fe488c3400082a800550fee0ee12e931124900e0d0d4c4eeb216e90d4f0bb33aabb2464bb328800232680d76e0067000077440075c200552c005a6e006a4400c6ee0068c000d08c10e72000d00214f14c2701821103821bae06b3e7c416f66a172c6eb1106c19946f00e00e111fe0f1340a1f9668116b86d16c42bddd28dddd68dddb8cb177261dd02e714d26dfefea61e4fe4164c81130a8edb2844bb6cc11610e7144687140607142aa714045211c2841346e113c08912bc4d1108c1c054800434e085aa207406c10ff6e00de4404f16210403a1113841e1026168d48411802e1abf4fc2cea99b280113cea94f1e011320610f0ac111d0000880000aaac00a9c200aaa80098a8003fe7c6024e220106cd0e698400842e01560211992e119a8f219a6e12ab1322bafd21aa6c11ab8922bbb522baf921aae321ba6e11aaee12ad1122da7211bb6611bdab21acc522ee5321bdc721bb2e11adcd22ef9f22ddf921beed22f05132fed122faba11a08331be43231fbd22ec7812f117331f1d23021d32ecb211df8d22ee5721c08f3311d331b3c331bca611c0e5331cba11a46132f49133415f330bde1321f731cc66134dd721c30d31b0a7333ab2136d3611bca01344b331b70d31ba8e1307793348bf330a921398d93345dd33897b338a5931aa4211aaac11a94333a97331ab8b31aa8813ba3133c8b933badd33bbdf33bcbf33cb3733a0f331a96b3fe34b53339a3133a8bd31bced33adfd31adef33be5d33bc9533a95d33ce9323b49d33eed731ca0b21964812ab1d22a1b342cc5722ba7411bb2b21aa6412ed7f22cb5e11a28741bae6130df1231f5721b7a932eb74132f79244d3211de8a1375bb437dd72457b731bc6a1456df3377f733751b31c2ed33739134767734751f3382f73451fd3486573377f331d66934999141d98b4469d141dd061346593475f934757331d8af44ad3c11ccac14699544bd3613765d41c56144de3011de8c11ca0544667d31c66f335c7211cbcc11bc2c11caac11b0a1431eb731ce8f434ab414fedf44ef7143a0f753989531af8b338bf811a0c943da58151a5c140f7144f13fe15520f9351bd331cec941a46734f01744f79943aa36152ab211ccac1500d341c8a9351e7d33cbd411a94f31aa83355ed1352ed54400f345549535565731cd0012aab522cd35243d5b22cd9322f27f42cd79243d17230353330cb61307b7346657445b7011e48d4378bb445d5211de06145e9615ce1e15cd9944a9d9445d3814ae9411da8f44db9b41bb2351dda8145a1541edc555dcb014ae3211ee80160df341edc011d847545d1014ce55446d37545d7144acd811ed4f55edba14ded1561db011de2411ee2811d1e56633d565fd1811d1c961d38561e38961da8b460db754dcde15ecd2166c3e14bc3011ce2944a01f54e5f736657b51cec74557bd53efe2f955517951ac0c15021f53b2b555429f51b2e15564d15565d9338759655cd8155a9211c06f54e21155021954f65f335f95467d34167af964fcb811ac6216647b31be4746d5fd66dbda11bbce16dbb616ddb014ddb616fc7811d88f52aa1012b8f352d093743f3f25911d7433f54301173321b373055b45b655445599472ebb55d57141e24565dd1011ed2b573dd1561d5c173c3744de1a148dbd54d5b9473d1015e5bd464e14160d1b45de5b55d45161df89464ff156551166045164c357664379677637763d36163d9811de6e15fe761797bd7644d76633b161d38f65f3dd61d4c7664939764bf7445ef3561d94166af5658ad14507d3667e7341caa14fe6de9746d81b64e0b1568abb61c62b64eef14507f966b55154f89f36bc35667df37675715543d554eab5667d1a11bf2d61ce8f66edbe16ec7216fbbc181db2182e7761c6c568223f865db617b2b786f41381ef63679db81581d3459d99270cf728511f742d7d22c43d443f1f243afa11c16f71a1033372bb7373953465b941e4eb45fc7b5733d57643d775c31d77337576257b448d95465e9218aa1741cd65465b3e115c88176e1756413967a35164d67371eccc1737d57631f567745b8623bb677ff557aab777845586339f67877571e967763e7411ee82182e34136fff58bcd217ce5017bad377cd38177ef3579d15491fbf535e5346621b96ef1d41cc0fe216671f76a81764f73d66cb9561cb8d63ebb4151c3a11b8ef64e0bf5522ff553ab76930b759575d64ebf61951bd88231d86d2318836fb9826df64ef7769723f881fbf68391b71d445884d9819889b91e3a368ffb20a33e80059ef903a49905a0999aadd91eae921bf8e099ad999ad5801b9c1587ab61710f33867db337ab75467d331bd2a186cf994b2f535e41b776b9541dec195edb151ef4b55f13767493d788f5951e54f661e5a15ddf759ee3c1760b9a1d24b66e3d171df461185e0006b8a0a26100065e6019127a8d03b677a99477a9778e2d994bc1814aed611862e0a2559a0b28fa052c611fbe778ccd611dc0214fe58184551692e1c11dccc11efe7281052adaa26b8019d4411c3cb56ef3b46cb5d65371551a3e551c42d90b545aa55f2011d6a1520df454a9d394f9371abec15351f51b26f51a2a551d8661aad13aad2f5a0cece180c3615227356bf7b452e9b69667b566ef94ae8f961cc0a194fbba921f181cc401921d981d64337c01fb6593b7635b01169e612ab9410b5e60b25960b249811ba0811b343b70ad011aa0e11a9060b2457bb449fb05ee009c5dd81a6a60a2479b07c060a231da06ec81acaf811bd800b62ffa056a00096280b52f3a0658411dd0b25a8500b773db12f4e1b68dfb05c6201dc461451d3a0e707bb2630009565bad63c0126ee432f50111d09aa5d51aa349411fdc81a71336fe1dc2571d02f990ddd490cd611f4a61a2c11b06c6c01edcd41cc2c1a7692006e69ba2fbfb0b6ec41ce461186a20ad798019e0614fed210e301aa335441ffa011afee00e28dc934f591c9ac1b82fba0678c006d21a0cae6156f9b7529796381ff554bdc1abbf011ee2a0bfa7fa055a21c5b9531ac41a4f2141aa57ba0b062119a2a110ba00bcf10015b6811abe411dbc3ba861000ff4411cfac10c901c0670011e4cf918c09b0b62800e122117c8611e347b1ac4611dde21cc1b9b18a0e1153e40b42b5bb4c36019a0a1b3a7c1b3b9a110d2bcb4efa01f9260b4735b0fec411ab6011bbc60b21b1cd0614011eca11ac4e11ab8f41af46115449baa053db7e9fe801bdaf94b2f931ecc40c31b5cad5f8014ee214de1411b5e3bad311d06c0e01ec48147235abefd5ba56d4019a22108283ad66120067a411ef234612d99a7d7811d0a5684eda119ba20d62dbaa25fe012f6a1bcef41a2597ad92f9a0b325a1fdaa1bc13f6a46dc0c5677d19de211cd461165e1c06bae0c7631db8e1211cf2561dc020ad59fa052aa11f701cadc7c01fbe7657f9d71b62d994a5611da821d89b5dd3a9fa0bb081ab75561fbea0d9c11b0cfc6168ed946ed9411f189ce0fd3bddc5601912dc68bd011d9cdcd11fdd0660611ed6d66fa3922a03f784df1c1b46feb323342d03571a2e141b2cb4e5d7729c7b1387c3612d2f731d7a731dde121efec275e7d5c1e6c37545c3b575eff99ea154bdd1b475e7a175e3e1a1fb591d06194c57344fd9c19ecd411daaa113c0c0066c80bf035debf1c018f4415f9ddee9f5d51de6a1bc5956c0b177eadd211ee03590a134da85f7ecdde1a6cd5e1ec8fea6513663eb1e65c357da4d16ed793d8fedbeee93378f79dd6451b6eeb1f7a6139fa7d1bebc5516ed1396a7d5a1bc63761d2079edc3573641181c269881411f9221b9afcf9694199894ddb6504b79a9f114af63b6afc3411cdae17ebb011dd0a3133ca13c92615cf3f66849f9af33d8f441786e3b5881d98194dba1affb9683011584df6184e5a11eb6b71ea0722a03171b48fe2a597efbb97f1a545ee5d112fe1b0e375a9d751ada99864914e755541db8c19ecf99449f1be7b3d59ed361e8897e74b778e8a9541d54b67301c29c3975e80ab273074f1e41740be199439790204178eae8a95ba74ede3c7402096a4c78d09d398df2e4997ba7ee614179e8d8b1e358d09d3c911bd1b94327cfa5cc97f372c69b19b29d3b91431faa6b27909db9970cddb18b7710a84e77ef8ace1bea14ebc1aaeee2b95b674eabcca20fb30ee528302b3b71ead8ad739712abd3901c45ae13cab1eac0b0e0040a6cd7cd5b3881e8baf915074ea94070decc01f6bb14a950c0ddba493607ceb24bc0ed904276dc6e9c50767dcd89ee8cbaddbbd59debbd8295ecd93368d0a64dab0d0ddb6dfeddb67b4fab66bb5ab56bd8b64ddb766df8b5e5cb9197db069d9bb86de9d2ad839e6e9b3a75db28a6db5e9ddbf672eae0515467fdfb42ebe2ca854b872e9d3978f20b1634970eaeca72e5d4dbbf2f5f7583fd67d34808ada3943c09c135933ae59863cf4b508555133b2c11745039f7a5b59d4b21e5a4215a2f29269252ee3c269239609506565c7e3df8553beb88e318618d81231f453339150f38eb80038e53e2b0e34d35611195e2419221061947ebdc2510582a3a76979343bd33cf51eb5416ce605d82534e66407a23a637deb463a6995f32e6cd838b4953da5fed80338e617f61668e9d408233273b4889c6276a91a9560f9faf25135b6dbed9561bfe6fc94d730da49062930d73cc0d87dc35d041a7ce70d55d071d7fe9d0775175f0a147113cf135845e79f310338b3e32aab84e3af6e8e3062ecdcc71cf4219ddf7523f8600b24f7b2dcd33cc2df3a8cace3cc650c312423fe564ce4f4f9564525d396914d64b6531640e3e6560338f5268b5840e3e7154b2cf3b9d99134e2e8fdc82cf62537a76a263eab83b508a22d9e7d7bbe128154e69f9be43a34d7342c61266340e368e19bee8e3cd359ef975578a988153f043dd746ce79cfad442ca3c4b691ca55f768613663771de6999484062d69837e33816a762998d03a4cb9879569acddd8c53146a22b5e5a19f1ed6b3da3bec1c9a286db6f1e6686fcb2947fea970965eaddc72dc5487dd77a6a2672a75e58d6aeaa8e8c56791aae9d0538b3ee5e9034f1c94e8338e3ec378610f3c183154537eeeccc3082bfbdc4a4f22a4e8f3ce4cfea8f2453d2ce9238a30fe6cc3833de5ea138918fdec630c18ebe833133d485cc28f3fa57ce14fbffb3463833df6ccf4905f2d99f32a18c61caecf3cf844a28a3c7d8df3c53bfa90538622f78cee0c0fcaec530b1aed3a130933eab813ce3e88c4b04f3de40861c93d276913c32dc77b71893cd4d8448e17c1f41e092cfaa4d53e2bf60cc64e2e7aecf33b18d8cc898f45b4011ff0684622b2518e3635061de3680c3d2291088e91c91df2b24733cc40887ba0a93299f14b9786d6fe17c140663253ca93370c2394871c6431efea136742d392ceb8242c3512c93872622179a4a61df5e8613bb07528d9d00637b751d46d8eb82848714d6b960ac735d2f1c44d65873f66ab0ed9d2d19f5571043e05f90eb860729ff818e57af4b1cf5390b6146ce5041d1a0a8b4d4a0217b8b4a42d3391c79346228f78f4641e7c8cca1e5942bb92bc045b8384e33c22842e76a423859e69898712e917c598c61c8d91e4c2ee24491afa854f6b49cbcb4a531a1a998346dd208d9438c21881cce35deee8cb9e3616a73ad529302e63d3f04c2334cb98b06066aa8ccbccb44b3331864eaea4a440c2b449c7f8e94f9d39915464929376f8e944d394a60e5593b4fecdb48687ef68052c60214468cc66888cfa0d34a2111ce000e737c9594e36aa810d4c696a9ed4491bd8caa1292b52471cf61c5b7500249f7514a43c1ab9081e0dd2168340441fd1806022e6000630d0410e89b0442d7811097ae5702638b956497e92916df1f18fd66a89202df43b5ad04219265be1503ca4c690ce831a99a8052d6e310b53d8010c5f98032266f10d6f648216a2a005caf6e297e3e94111c1409832c4318c1a7c632882ba893137e4189174c62630a16481ce352274082542c2cc9368f254993449231a69529337a4418db6bab5ad70954638d2c4986f4803af77f5655bc3e1b3b25e4c20375bd8bbba753191c8e31d8659e60e65d89977febc8618b2994d391715a9ccea0639d680863a93b30de50ca71ad0690e72b6f19cb4b58a3ed7f9db40fe599e85d88722e5c8123c6c9b918428448d6e1b884bcae58e7e20620cfbd8073fe8708b7d0c651efad8031dfce18f66f02d21fec8c413acd10f7f940115fe70c73eb451857ff0c3196558c63e7ad28f4c8cc11e279a69192cd10f7e2c820eedf25349bae8a1ceec231362b0c77ef1005d2190c25dd2ac47336a800d86082318f7604737fc218a30d8e33310cac4e2c0818f2f58c21fedd8870d8a218f71fc771eef68de3584078e7be8620ccab087385a8c1479988114fb000bcf6849266fc063befba0875cddfacba07a23ae7b7d6bcdbc11d4bd76fee9c7421e8ccb0233cc8219c63299f15965506398be5ca6467ec9976920eb58a7c95069eca8473b268b28720ed18853cb063622a5357636273b9bda06023925c56d60a43ceb308f3dd6d1373f9bc7cfcbda4e795693909edc76a4f8d8634f48c2478af031a425d1ada32fcddc5bd5a377ccd5873efc710a3cdc83d33dd11c3eee218f7acc43d56ac496aa25a791473f9a24cdc2564f7e8843352e975a78e1e8415c928e9028052f6169875887dd16a72045248311c8222183a080a1c5ab791248651af863c1dc5530358b6b358c518c6888db179f988531c09d084694a214bc28062d4e618c59144319d4a08634be510d24ebdb4c704dd392853ce57134d0fe324ff68c684e23c323f5c59927124a34d92166a6e5579a1ef22665a3b666cf1e1138d250e2a398735a286a6a1bd22179dab4d39f51d9831b820eb4ece021bb432e6be6b74d48cd6ddd1357f1517323e5a33c1aad11cd713ad69dae873d8caee991aadae7586235a657fde8a5b3ba872496873e8abb0f4f770fd5238d35ce4bd24335364e1faa8e075486a243aad47195682fd15388b26cd590385ffe8a12901023419a01966398b9abdfcd410d63f48216bf28c6291c010955fca1052df000083ad0810f64c0020e7840073c30020b74a002917fc007484003c97ba00318a800052c000217e0800623f000164cc1eeb51ac3178b7041063a30822ae8a004fe2d48022754310b629069406991d16273c89583f4c45d3b51fe3ea4497197f4d0cc4ef3109a9f111b213ea3b3d5f0aca28013a9df78bc9d231ff9a6ae719d4f71a756ead1f37618a28e65d59c222879b48e12ed735b0f6ea3fa47bbd7ff481283c3733bc75caba66964c75c92b374f9e76825c14753e70d91705eeee00f9af05caa5112c6f00dcd900b3c240ffe350fb9500b88b03b8ba51166b061580271fbe00c36550bc6500f4e810ef4700cc6a00b91600c57a122f7d00c9180089910095ef00fed8018dc06587ec73278c226cdb66d5d022f6fa50c7370044d20088c100444f00434900444d0021fd0011450010e400163f801ade70161c8000ba086fe0cf0000ee0000c70000c90860910870fc0791ed0860b208795f70014f0000fc0006ed8866eb8006df8871470011e400434a001279006585008a6600ccdd6766b37131362898de34c3961662ed1349d280f27a00252800586f00a9de008afd05952b366eb247ed6601b99251c72961d4fc41c50941dadc27ea8c27e6a231129b11d034111e8000e36611ef4a083d7631337b11d71044db666765e076903d83832d773f9976a08586a4a375239e4471ab119723114f0801259a14657715b2b54128d334debd84c699742a0a1659d4123ead0188181184508581cb46dfef657642241da160db630074640031e800117508862188810a07918e0866ff8867a28fe8708c0000870000880911ab99108407a17500179a8870b70000e009169780019799124e98618198871c89108c07915108876d80019e00132e0011a900123d00245f0046980066c1089c4c05640261038243916d24365467d4fc90e0fa0035a800545400458a0053be00486b00a5a40011e200586c0078650041960044370014fa00146e0087d4008473005ac300dc5618bdc100ed8b10ed8804fc3a10cc6300de1500debe01e5dd24503551ec4300daa822eefc710807411d0145254316b6bd77544778d50d775abc634a9868dcb471282e4808bb56a0e582eecb8584ef3167bd41939f11574672254111662361355c148e0204a9df14b7c7227d2d47721fe531934737746e87747f656be40098a3004b777043a900433600abbb0046ee00886b0044cf0042a50013479910840910b3091db098870a891299992de9987dcb9923199910bb0916a88007698866ae8879577017de80020e0000840011d200218b0010ea002aae00b90f0044fd0097ed0042d30059f10042e80041f30032d000250f0069cc0097f900ad6806b50510f4b2343f1c0013970049ec00a46400122800382d0098660087590067d00074f500770300367f89525a0037e600884e00784c008c6a029c3311d22170de0360de0960a8e600aa1400cc4e00bbe300bd2700d84110ed130109d820abb800ac5706e4ce80d364162d7489a78f247ab917ffed5c794ebd87499f98057b28e39b11aa9d6384be93444b7583f047160d7384d537583c31558214d54157dbfa65538334cf22826b809903dc3277b0290c2f40d4b6826df100e4125647b250c8fb00643b00a77300484a0049807911480015f28877f28889be79d62389272789182e8866c2886a5670176989d38397a19f0007ad8010e0092634801acba000560910ea0866a58000c108662288607c00120a0012470021f30047d2007393003fb09792030038fb7791b60902d00791df07839c00942e327efc034ef700ff570001690058670083ae0045ae0967dd0077e500755f0045a000758b0042710927f88936bd0099cc0a39d400c6f961cc2b10dc530fe0de6401d7e390e982007a7200dc68009a0400cd4500de9100e7dc90eef570ed2900aa5d00b47f920d9f2107d34381ff10e9aa339c7f78097591558e27318086b26b8583bc17ceea03955c19a10e7124427664c6921ee62a6ab1119c7c78e9dc127acd170ef3224a3941a7b6219cd9419503b27500b65e2c041c3b427df200e645ba9dff00dcaf00dbc600b2bf50db30009a8b00849e0a9ae5a796be89e23c99e0ce0877fd887163079900786197001bdcab7a35701a56a010b700118b00088780163689216800180e8877cfb9de1c986f12987de89b9904b011920025f58047040015ab00722700189d8028d0b02a6278663989d1780058d300a6a700358fec00676000cd4b06a4e530f2860045aa0054f00077040085a100575800543b0043250022a10023800075a90011ff0869c37049db00aa6900aafb00bd0401ccc012ad0810dc6900ad3900dd6f00683e008a0000c520a1fd5d11f02951c8fa006c0900ed3e00b93b856d130a501520e7f733d24d116f0a07cb6a66a63d176479199aca90ee2400c9020075f9003ab270669800434e0023340049c900acf690c48460d890171e5226c661112ade4120b176d2eb3247477495a56309e31307342a91cc326dcd656cac031681ba9965aa9cad00bc5500aa29008a1200a73e00451a0061500011a707a7a480181f8867618ba17c08712d987ca9a9dbb9a91dc4991fe6fe8aaf119917df8001650c59ebb01dd8a877a68ac0e10927ceb87555c01528cc6be8ab77ab8baa5f7008f67acc1daaaa607ac18f001c12ac71550b83290901d600270e00bd9b049d204014b70085a50044b409559a0054e8005587002348003a15c952480054910085a70021910ad3bb0043ac0c14fe004acf00cbe200dd0711ddcb11ce950086de004371005518005cba9033a8003c57ccc4af00443a0046f80066e90065160076d400424d00452a0034d80066b700751c0046e60075fa0cc4fa0066cf008a5500ca2c0088fc008a7e00d32d113e9608d167213d1500a6dd006a9000c9fa0068d200749f00129c00658f0064dd00444e0781f50011e10fe023460048db70334f00480b00780f0099c200aaa200a8ef00790b006354002b8370234e004da2c0683500cddb20eac19a731381483d1b55a3633d536278191264d8664db060e948a64df600cb4400c74d00138f0ba85eb87163002f549790f807925f09597db869ddbb97ad8c556ec9e1ab9c7566cacc5ba9d6a587935e9abf9e9b9dc899e7b589116a9ab1c399116c986eee9aa80b8ac124992f299b8950b867cd886150002af9b9382f00bc680ce6cf50d01c00133508a3b3a092c1a0b8250084b50c50c00012a800211900145700258500116d0022150024f300569c0098660078ef00cba410cbb600a45ca0aa9f0c95170904a90067e000743800319fe30bd38900443c09c09ba0634807b39a00444b0cd4fc00462800551d002335002abb70344c0043940032d40022de00239d07b6970045130021dd0878858036b80057380962400076970032100021e3005904009be500cbd700abba00aa5200883b00bbc700cbf900b4d30ae1d90881e8090a437b81de0022c5002151002357aab85fb7837f008a8400ca9400a82f0056bd0067f00088f000c1a180e7541254488319e414ade100abe3d7a98f77888b8064f80068220088eb0064e80032600096a10b96dc804449001f3c9865accac649c8658cd012760aa5f8d00b10a86884801eca98671b8876388aab21a88f1899ec6ca9e1679e562cce4991b9e6c5d88fe2069ac6918889c17b9b0fb00914b9f217901872cc87228b9a5caad8dfb011790057f3d0c749001025000047000702c861530041bb0ab82687a6ce801b747038490af4b800581d00744d0077620d176e0079d000cbf110d82f0044a80036870ca97d704499006088d01889890857b0339600475b0063930056c40cd34a003d25d022320034a30033820ae1770022e30aed07d0333c00483f006d609cb38500360d8011a000221a0011e7002fbe9ad208003a04009aa400cc5c00bb3f0a4bdc00bbbe00bbcf0a46af00462f0046d900672c00669b00672100572000a8f400980a0067270077fc0ee7200087660078ab00772400994800aa6800aa83008d00afe793b10023ad00639e0048b80099ff00548a0cc5f200668d0036ae0068080048d7bea3839bbe94dae209090da4abb6c30031dd0024f80042310ac797db9c62a926b08d66f68910fc09d2a4988627ee4539de5e8b9b7640cd7f59986befa871a509f7eab013c59b9dd7d7a3b1eac1d900189ebaa6e1de4e80988dcf9d5a607886ea8c6cc5e01dbedc7fbc9e0d1cd8683ce9e02c0e7614c911709e56d088689580217b0964d10052c5a0965b9048610054b40db4e50df86f004067902c76c90113a036a80054d900682600858f0016b30ea68900494ef0276300881100872a00639d00478c0041e50028f97066f40d422b0011e20ae24a0046d50063be0df7efe78797bbd7add0a02db5d862d80042a50023c29ca1d2007a6600bee0da5bbb00ba4200aa7900aa9a00aa8700ae2eeeda3f00541b0069f40f0215c0ab6700bbc400ba3c0098920f0b6300baa100a021f0a4e700144d008a1300a4830aee74dedd43d0333e0a039e001f37fc71c607a038bc67f48c87f0e100f28387020f002860b192e6878e0a003881a6a8670c040e10103070b163060b09163c78f2035625c8000c18281081850e8f06024c79325398edc28b3a1cb981a6bd66420706505071480f6c458a1830e131a2e10bc40a12641812e67f2248991a0830d100c66a8f0c02b468e150676741020008103211d80e4e8f5810815437490186208131428fe6f5254385184868e143372104982244a9111489210214144898e245870b87041e4c30d1a20708c682222890b1d68a23869810309612762ececf1d3668f9a284fa2b411d4a64c94161d3a54e0cdfbc2850a1e4068e8a041a1520c1930e4e8906183880d3b443031456b562f5fd97d192b962bd7ae5da14e15e34e9e942853a7689142d58bd72e5ab666a19ab53e95ad5db67a51424309982f6078e9659728840a4aacde3a68610a1e7413cbadab08b20a2381a0baa8020c7aa360a00cb802e1030b2cea2921e59ef8a3290c33fa282d9d664aaba305d6b24a278f348ae9a4b56a3a60a38c4a4260ad98acf2aa26931678e0828bd64a72239508c2e02d1740fe4811c9a118e08d20de1ee8a0470790cca8200c38baa0a78b606c88460004200081030ab011c61a55e0a08321a4c08284c83459c30a277498a184118ac0a20c433a3184903dfa48630e430449030d278c688106229e48228d273c20c1030a327081b4143cc8218a37de48031042d6800d092744cb81915d54e1a4144afcd8e38407800a0a830c3d4088380f3a180107109abbc002a330e8c089134cf0e0011ac4db85185e5219e5186a8839861755ca40a30c537ce945185380d965966276f185175e66f14518521861a4935042b1e597596609255f5b46f9a411506649e50f175a3ad2a80c3a686ac386281cc8ab82ac92702d822ca26061a130bc18c5aefe0e5438030d0a12c8830f3298e18828d05863060f34184827932ac640c28fde64e0c79a6df6882319993ce9661a5bfcf9a4866104cbe8aa78467243257bb2a82b9d2886736a9566bc196806cc2a0081ad8b3ca0489e29f060030714ea1204151e0061b1136668628d22081a49200a3448e2092ca4a0c18d288e30220743b4a0610a4e39908a020bbae4c08526e060228a241674e20834d038c185672fae28282cbdbad8a20b5800b40312742082860e520841d90a2e28d9031a94c0e0833a3c09c20d39fc684494535021a5945442596388345029665d77850166c05d7831068b11f648c3833f7ee9e5945bd67daf175bd825cf1753f61076841128e86843fea60b92b0210a70c82062f8d5efa9208b64e0ad83297408810831a210430e3bb4e10b6d704214fec0862738410eb96b031a1ae81a35a4c109691842088ed002241ce1012488020e8ca001ad982f241871cace42d2901e4d25464fe9598c30f2b3b1686004643b53d5da6210928828573d73988c66f2b3165d056b2dd28853d2148003b4c96b2651498cd867810e48c10f6f580211965085c80d610a58c042133a90b8a0082405280bc110b250821218010d75e84314dc20972434c10821c800093210a25c8140043720c1082e1082cd3c410939f8c00868c0a98358c4010fd250418cb28327a4a1092e735d0b4030072c7800074c90c20832f0012504c20ffe9ce08422043107548cc214a6f803241e710a53b48112ca308631a2514b5fb82b97e3d9051ed0c00841280215ebfa857c6851af46a0a141ba61a6c240d0821628610d65680323e6908326e0410e73b8c31cbea00424784007dffc4219e4d0863fb8a10c5310c31724c5821ed0000337280ce4c480063fe0610e68e0d40334f0846fedc10d6898030d72900448edc60332d894092687862f8ca039c23ac2109e50862f2421094a001107683084289480034938a410b0e08642d8610a2e2015134630041e8885044808010520d0ba0f84c00842885d1a945051243c81094a581d0e7010bb267cc1093458c3173c403e10d0e07d14734a471ef0b522a9844d6ffe7a498e8086a3051cb1005f5bc0d76024238aed800f27580210a408873a18e20d4670420998d0072358c0030eb0801d83d2014a89a004431801099880831284a0422bb9888290204717e0e004ad12c1033c10040e5cec2a0f63ca863e20966045e502c18aea0c40a09c191c523908ca50c28c72810ea8c1117f60c4274e715b46d0800662d8832318e106dabc9217c528862d18b1064ee46216e7eac52c3e519f50a4425fa6f804283af8815cfde6371598e9081a118a3f88610d7fb0431964c00334b8e1117270032814f18844d80110f19dc31c1af187405442117448c21c2891085726420e95384f2312418a50ec41117790831ad0d0830f20242162a0fe8105d070041c74a0047038016c64103b1ab0940649e8d3137030031d7c807435504c07da2294865420044a10e9068790833db4e1064d2004134a68a40a8c10234db140068e5008143cec7d3b529a4b6804a79d6cf52525f1d18e9898c49c3091893e5a00074e70022cf4410a4e80820636f500b6d200085368421144d002239cc07d1838810670b0452c40ee0423d0810c866019079420086a6882073c9081124c4a073920c10982a0830a80120b5364830b72c00642c0a1082d3074eb0452010d84402c41e14010f63a312bfd190938f80df9903002108086094d608107302783167c7643ba812d161ec10852f8c2117280c41b90d08224fce1092ec80dfe0dd8b08660f741368f68c323c4e50b628ccb18cd3d85731fd108318861071d105b7340000258b7600dc53846f77af109529c8716bcc8ce2d4c4189f524c20d76782f2d80010c5ba0423ef4b19e2d6c616ff1d04a14a8a084299a3b0bfccc420d1fa04c106e20a51b20bb031e48c210ca708319b4a0b04d2801065a505310c8a0032668410d483003424041444bc988da34d0248e18d90f8cb083200661870b18c97c0de389113cf107cd90a00d1c8891dc788691285462119c78051d9224b2a0204923ebd3c007a8fca382b0c92423b461475462812f8fa0042438d2055c1001066020b3c8f200072040010484a00955d8c0022cb0d53f9260072dd0010efe86b0841358a001e8963b0918b2032098d6030bc0d00864b08319902e085200d1a1a180051da4610d41e88a095a42810fcc74060b6b4a4584b2140b14ac2bb9d210dd20463fcd46c52b1e58032354f987367022146cc8411a98f005640fda117340c2b772e0864084e278c2e805768aab085208d07f017c825431a49b0f9c1b0462f0c5b9c4551f741d8379b378c42344f1df3628c20ecee5c11a50010c6af52217a4f8c41f46e18b5c68023b20053748044578822f38977c518286a1802731b410d0806219815ccb8116789f0db1000d008a8ca19b0b88b551510226b0241c708224c0815c43219e70002510049f63044590010f20b29a28320a61001a70feaa44130c22700124081306b880902b0135e0044680043b70319e093207d0aaa0d108b232bb93c0b2276412b660000ee0225ce91ace883312a81b1df8011cd08228e0800e090ac4c10a1da0012928021dc082343824c16ab43a78822658bd13f83311e800bc998131d38113a08114508a1c90024eeb801c08272dd980dfa0008f02012d990236f0831ca0812718bc60e914c578a619d0000bd808f6e1912419880d79908b4190ae70027b719752f80446380550188535b8b02708023b583e24f8a9274884563c055bb01652682a46108316b8b81bc00331508426680110ca433678844a608440700352000f776117573a06e212105f10051d188129f8901bfe60018a8b351ec0283f50033b80843f508446280331788227b00336080446d88345180555088559a101ac30021a900120680107000116583d4bd48c2690920580001e20c8063081244821e038012220990d018171a480678a0aa2408008e0af5090834eb80322b0a41018bc8ec1081a38811f30843a100343188541e00113889817f30a85a8001ce0a98219829668221b8119acb21120ca2a2dfba1aff99ab3380b11e84112d814117080b47800bd3a8a2a80032cd0001da88228208eab88910de080107808d9808215b83b0d90a10d34820ce8093a838c2608c41d208220eb8028c002137b0238500212708121b0b5f033810c8000beca810a803322c801fe3b6c822420011a2895356802b23192abf08016680235300323980b21018aa8789a277084d93a826a4b0339c004452884369003271882240882276883e8328545f8044e00047d622f4e78043f00a8095282739a0226508338fa034110010fe84165f980d2780246688326c02829c0812f7802c578820542a89dd3042520821a88822a20853fc0811ca8b635a08367cb2824d8ad21781c17a08193b10325b0a81c80a91e78b4a87a0c962913120a8a0c0081c4090ea0b0910658090df88b1670811db84edd528219988121a0816842833410043b98033fb0832440881b380239744005f9028bf33819508a0eb8bb8ba03291081a1ba21104b82a2ed38924c2feb298202baaa4b29d3109013800640934b2090e0b80800b00b322e080906b022670032920811690511fd9800d2981ca0a0a1ae00015a08104009220618911230211b080a5282b139001cf3101bd21012970032710010e400114280222c0bb209412457a801688242760033b20011988822828031d1003e2bb209c78938aa1980df0010e508225f8c4a07052f904027f120d2400010610812f98ce280001fa11881360823608313b40033b080436d0812890c634c801234002315082f4b2833498821a181c3698033c00ae0dbd0340700445500418f4ad41080445f00340302539982f61658446800448688467fd84f67b0448384246f8354af8b547a0846dfe6d844060b039708227880337f0033908a63910841c93833d588339600331680225180d411aaa28d8d426b83027c84524e0811d48821970811a480226408281dda8d1b81454150313c881d3faa2240109b07391459a9a283b899c904293f89a02b819af59cab1b2322ac3aa24aa32b23289135800b3088002182bb428000278d9241ad9b3da000ce98ac45c02ddcab308304a4f3c0008409d3ddb800c70022c78218dd8001778800c180214d8b80b80000b808c3230826351824c293209a13ca77b0bd4c9802ad803c89183be118184390a36300d2490202730c123c8812310a42130ce484283e2e4d337a82f27608227682a796c8359440329f882f46283fe3f188446683f48a8045202856a7d045292dc6b35b04460843f008440080447f88486fb1df5a805ebd885db42bf7c11b8f940b04e5004da52845f6d84f7820450008545909744b8dd40b8d64418047909844468bf44f8833f488435d803f2da832f388239d8033e75033538573428442750d21bc80127500322e0814b5935839d811a98011e900117784825785b41a0843f68021e2082457b8221a08c1ce0814dd1943dbb801228822328ac20a0811da0d00a881a08e0000d60448eb00036449d1258011428811fe0000740811f8880085001b2c9888e15bb1a8d1136212b94cdaa1d31022c280108608011b64abc838001060113308226580243d201c8c0fe82298003286802d980032d48822c380222785f1a408225b0432c7803ade4612c20b128800336a88337a803ce3595746d0447e8044ae0844e00055318855402057ee4044c70044e2884dcb1472394175762043570822f10043f284e37082a31b028c56803e34c991b9b01cc708c200054806a4ddfeadd45180445e0dd40f8834500beccfddd47508433660450f05c4b904679e9564ab8e250a004d8558406cb503f780457b42d53108559c885ec3817eba005f5e8b65df8844450b03958d639500339e053e19de4de04055128054ef05d79c9d64f80b74f5ea54f5884cefde55f368552100551788450f8044c70c5564603a14282326802246002ca7001f2fe610158db0124d80110e00012e0803d3c340d230229d05a6d0681c25b1d43cb000f28010f108113d8801260288e84a6ae538224e84c1a2881e9c4811a38012abd9a92a8d12b53090ec6aa8e2d4a1bd5d8b24a59263a812cc0822ca8e82c80832c406738200443e8833ac89b29688323b6a834e8033b8003796c0222e0a237708335a8c3d47894348003369ea23b984954608554e88441105c3bd8d042508440308450300552b86253f8055608856f1b6a4e00055278846295174100844aee4dcc555c47a00450103e231c04c5358436d83747a8846163033a86d70562023108044a7084c51d84dc992f47780454f01d2aa6e4470005fae89d476ebf46f056fe512085de21055a400551f8654a58b8deb1055a90ea59a037f87017763b8663008663009075692eebb8465e908fc95617ecf08562a0b7511e65c84685db326c716197f7a005d9b68e532805a90e855108855248655456855498ea3b08044038df780b85a97e84bd4e843b9097f7cad646900378b503463040dbc55c4178047ba4846b9d6541900395895548b2833580be40b8cd5cae021f10811f40030941caad59ca0358932ba30985de609385ef97e59ab1da6ffe46803ef8ef3ef08343f0833e78034120844a30144398844ee8844930044370044c10844010044708054fe8042ff684a37e855460855740855d788559f80512ff855ff0855f000f1457fe71574005ca66f161e085156f1e628a1555a00555109854488f50f0eddd5697f780ed5c601705946de582ec54e8365b400f5458a553b86452406aa946055a4885c5b6844f58a5520838886b1e301f65018138d9ce977c097383cb975b50ae5df80eec1890228ff322e78522df16ee710f016117f9908fda4665d62e055428f2c48e38fcc8853d47e5db42e5cfbef252208559388fc25eec4f286c53105d487f665784845148e66d75e66ce58444a0845088c5eaf2d62394dcf6c3cd41f803df5a046b4d0463a56b264803378883068be52370528f938337688340a0d53558837e6d81f32c043f08043ec8808140e899a5d936594afdde9afcc6b21a7d7636fe19ab05785999d5f6993d803e38044328843e28940887f04228944ec00443e00342c0042b8670172c8444318454708555ea0448e8841e37055578855cf88561f885604071dfde8517af771467f15f00861467f85d70f85d68f862089086dfec75010f6b8cf225ef9d541890f7e8715a687451c00465e60457ea84c2de477fb1e26e858436780339a8ad49e7472e2e05a4a66dc8c6785f3805d4a6852ceeb67cb9addf5666e3e6c75c560f5358aefba0b77551bf63288f5ca2b7cd3e178c6797ec1090ea53c0d13e17116f1e43f70efc888f01199033576cfa30b8534885f5c065508025c46e45af0e05df717b51e0e2bac7f7e94e5c79698445d8dc40e05dfe0a0f04f6222f4360849f135c38cc820612f63ae85500a24727800334d85f179801926ac91f9601e570b163c183538a822c780325f8c40370886c1f2bb11bd93631001f300193400bac1ad986fef605ef840ce7770f5f05dd57055600f154e0fd7ee7fd0fe77d104f0f55500553a01753f00451e8f75c5872de47850f5f711577f18867855fa0716cc397882f8654780f5b388515c73fede016b587f3ee59715bc88e222f3f1a6f9e51286ca7c6dc40a8030b9d835f1f8d3588794ef8044fd8728030f5295425489f483d7a444994a950a248853a850ad52e5ab35891fa24ea13a381a644950a9550e12754a966edf2d5cb97af59b976f15ac992174c5ec0fe8e152b662ca72f5bbb7aed4239cb22cd59a766b9b4452b57aea1274f59cc758a61a952a418ce1265ebd42950221f610aa448d01a232c46b4683184070d1e21643c4952464d1b3f8618050a24e7489426204c90a050e141850c0c1c58d0f0c308070f2368b400f100c3850e1f540c81a2a2888e132e963849e2a1c2051c68a284f08043c4030a1a3664b0d0414386d1101c6c10e100f1860bbb17304070a0c07004c203102f905c3972e207081c103e9c8016438762755ab5aa13f7eddbb373f7d4870d9621dc31194a2fc5501f39a60ced7124c8912955bf76953295bf7eaafeaf5485a28a2ab6d8124a7daaf4374b43a9a8c20928a5a4f2d12ea988c2cafe2fb37012e127a9a0a28a289c04f288288e0cd20827a670f2c720a00cc4891c7ed851871d89744449235e39c20929a850c248289c50c20924229e42ca29b6b4345128a180b2232ab464d42493254578e42e3e1168122a503d399450b49cb4d23137f5c24b312c1de34b9abd94c95245b3f8f4e68e34d9c24b9db694f2899e111d550a2da7a8625429a818258aa19f08240a28a284021128a074c2c82084e08185143bdc30820b2e80a0810521b85002116bac51c71d80d431c50723b04a83136530414319b00eb101030c3c508209145c4081030838f08003b7f9ea4007190cb6db03874160016cbb1de62b020bec66dcb40b1007ed02c00137dc01d11987fe2d710410a05c74df2a972eb6d1657188219ac0d107279dc4c2c92a9e68d7097b86c041082aacb0f20a87fa1a220824863451c4137dac710813337cc187219d38d249214e30c1461f68ac52481a4ebcc119677f14b2061a6e38c24825819401c7114f18e2442a869461881b6c741216237bb891c61e6b8070c2107e08f2c722a138f2871f8a2c02a01f83d861445d767032341a7534c208208c2c12082522215aca29a99c520a238c3c028a29a6a00d0a2594ece8d546a29c328adba6d43d252927d982529c2815858ad8b6e422932fbbbc19534d31c5b4d22eb794694b2fb7fc62619d40c9c40b4b529d52b851b67cd24829b9fc828a29595152c9238ea4fe5c49239510a2c8208afc0148229528f24827a2ecbc871c815452c8226dccd18618472841c4144ae850420614dccac0021ba07082f534cc40020a430c01040d442071040f1f50d04107c26ebbecb6db1af7c0fae14a0f5cfc0b08870071f52ff0edb7f61750ae72c211c0380118ce00fb079de790ab007d3844270e818542f4a110134b4f1f06d1094f98423b28328423e46008f4148208753004219250821d1481082668c21b9c9006848de009256383115c300322fc610f688083114e8084243c8108522044f640d0010f6480086ac0820e3240820a7480083818421d8820aa2274400415c8df065ac0843b18020d49b043154ab0010f6880083a988105fea4e0812350e0032d20c11b1a010727b8811389e0444278118a36d8c10d7308912a184109506c4573bcc8058b98240a4b0ca9510622c5554e470b5ba4c2274d41ca2501c78b4ffaa2294dd11c2dc446c951d0e24f792245df6ca10a54906248703b054cd2040c5f803217a0dc4553523921ae882d220f39922d6a61371b35e26d8c5044231ea1084040d30d62708312d640354aa42d1436a2941c0229852964c10d7830551d0441883ab4610d6948c31ade608742b0e1092de8000604f38023ae000416b04006e0a73e0650405817b00004a8652d0654c001d46a0042a3772be1d08f7edfa2dfb4ce5500e9106701013457720e80052d68010a1c5842bcb0fe102f4148101385200404eb00052cbc010b1010811304d1872c4881034dd88116867002412c41073a78431db080031d60410955c04113e0308423a421a63940831a429003cee480065858020974f0041a78000424f040406b130213642003436802137220020848ef000c3800fd8283ad8ad2d5030d58400b1280d183ce550310784012ea42840dbce1044e3801024e908a4ed881069c1805247c71264ab42114be60841b34c7125b0402492ae9054a68818a5ed8624b4149052d4671949494c94c67b26c316c520c61a4e918bd48136e7b2b0c962065474951644cd4a4b95fa096402719652f52c90b8b1c454142811398b674ba89a46214a418052c4d31fe8ab491a213a95b44cae4b0073bf0e10f7390031bfc5086273cc1096840420e861087f4aaa8108d088420e4400843dc21094e9082118620852f24610a5288111e9e90030fa8000d4530c10948d081dd38007aece35ffda44357e3e8cf39e7820effd0251d04f8cf024458425009d10738d4e1104e08411bd3338542acc2106fc8c20946d0842c60c1085878c2094040832848a108ee1b42157450841717010d4cd8c03d9150820a9440076d7803213cf001afd24007833142133590830f5420a104f8c00ca0e0811978000533e840083220d70a0447380c2840000a381c0316605d7ffe9fff0a7d0007ecb97c012097740c108138a8a0021ea0010e18f107fe46bcc10834b04009fcb08b4ac801b994f8c52f18f113affce4969665094b80c10b51f4a22bac46d39866ad5b36f54218bdf80454bc849295909693b3e8455390b40b89f4c4b448f989e68081124824824fd6d5d2414c17b74770e2139d780420fcf0873fb48109697043209c30043b4cc17c37287013f8a2e9289401094d7842199ce004b06a40031e80f01380b06f1054000227d843159a20030dac40073bf881058c208593adc10f75884254f7308841a86c106a2841097000020790e601eecbdfb93aacbffd15a77e133df11654b004159c000b5888791a664e8313e4cf04553884144e6004f6b0c1044628c2147610e40d54808e7d28c20c66e00438fe1081094480420b9a7c020d5cb80134100d04025107086420cc0fb840c0ab508725a400081be000064840820b6c400947188220a6800336f43c35400042148eaa011040605a1448c20d9a9580e824d001d3790e88a725bde65cd401feebdfb62ee01c063c810d245041072e0a2cf0c9c10d6e385d205081c850ccc2182db9654e76d2ea5a034318c0d82de1587d2596b00996c77e042312b1888d3842114e98439330018a53842210741385420e69a4d43e84169f50c4552cb2a55950124e48c1a44466e136487dc246b25384220c51893548210a7608c41ad4c0863828a2f7d8c6c4275204c432f8012c8d60c317329f0636d80116900a1adc0127fc0827fe649b787147250c0220d8c11dac57cfb441c1ecc11cccc11bc84121d88113344f0968c007a019dc41000578400754000678c009505806905db2e41947950b7438c75ed98a0868411184809059871ff4c1cb08421574c20f88402018c20a680014e0c01cac8112a0800500810690001110c10adcdc063480c0c1012640c19d8dc0092c4115184104b4460344070730c11ae0c00a944f0764811270000d88405a2cc10ca80127e04019144109448111b4800794400d108112348106a000c28c5b13a081f95c180e5c1d0b20c03d59c0b458cbb74846fe209afdc460bac895712c87fe4c467138474545800e0d411a5082304c5631cc829958d64e140330b49efeebfdd6e118c451d08228cc011bb8cd1ce8801ac8801675000d20010eac0113e88021a8c1137000085c000370801400421a9800405100097640099cc02f92c020f51f33014227fcc11a74422ec4d2322502f9a50d8b7805253d8aeaa4a3a3a88d772584dc8002d78c4537fd81207444ca30027b15cf1eecc1ac98d71e048223605bfd81c81a0c810c60011bb0c11e2c420e69e0ac08a3c1b180078c550624410e3023657cc05c8961f44c8f05885c5a4180091cc00afc0013d0810698000d3c80e7e50f0a184046394006b0c013348113f0c121f8401118422ca48108600109254110f0c1066c40084c810ae09f27f8c11ab4411f60411f7c952074c21234fe801f1ac10ea04004f8210870c00928010efcc009544f092cc00324000a54c014400113a440063c011220810ef40adda95006c018135040633c80054081126440a0210003784008b8811340c22e04c2b8b5c11dd8c11e10810608023ff00336b4820ff8400ec8c00240cf0ac8026662e63ffc400050d4052c4027f4033ff40337f0c3161800b5289402c0023fe84333f043329c00067cc01a4401127c0269b2833b60a631ec836bfac26ff1c231cc423160a63fb4263f00c2b085821aa8972f60e63db8e6128c800700011610c11db4663f4c0366c2c359e9d4f1e4400780000e1c81859dc01ab841a9e0836b5643792293ca34c229446729b46634288247fe084e28748875990294b0162a6c04fd8d424330041ff58823e405233482224042286042ee4002da70c2d980e8ec2cc2202442f005c23281e81f2442202cc27e8d4538ba5f1bb4815da2011aa4c113e8c01ad0c063f0c00ef00016a8410b9c001478a0c889400750c00290e1b418c07030000af0190dc0c11c6ed105700a026c4013c0618595c06e640004540008800003348008e8800a542304d0001b38014ba541c13d5015a45911380116c881201801c0e1802150c1a179400f71c0108c806c7cc0133041153041414507a205c70630c1112814b72cc00860c00fd44109c880af88800830011228c108740012b8810ef8017c35c22088011b0cc21cb841fe253002294c4210ac81209c000ef4c00880c00788c007d09305948fc8dd9309da8a037cc0052ccb61e40f0434c06e3400f42066100dc10e0d818aa0811099c8deec8246f4442fa1822f28e127c40105fc411344010a04cb071441155401076cd103b8412108a30ea00100fe418dae01208881130402202c181ea4d723644446348adb3c4232f1de237c42231909a1b0231f718228b816299882415082220402244042907c42c65202fd2d53c1ca811cb44137d9811d1802867e42420c4429386cb661829018a4a260931d1c016400c111308119c801c900821bdc411df44b1d3cc19c65c077d280acb00e23a0211b0402cf3093123cc11fb841cf81a60538fe800ab00005fc990398000a00000004000430e2053041cec04170dce409f84116e08013ac022130019452cb6d2c000a30d00f3401501d811f40c15e7140109c406c844007cc40f738c15539c005880079146e03f4501b5442c148410e6042168000952d4007041e0158801f2c8227f8033f50c12af0c336bcc13f60662c14c0ad0007756026151c026626831b7c41210082333d02691a031ea8811d3c41200d836b5ec12b60e62b4c8109346b06acc11edce7361c823ef48316206b010c8b3e6026376c0166f603162c0b0258c012ac2269024313504d1aa08111f80127ac4112f8411560401170000310c00f60a63e4c403ef4c30f8c26664a8011e4c01cfe88c00f88826ef2c33e24673740c2f141c229dcc2291cc37462e63e14892d305f027fc27d92663f1c03254082252c0223a88d3168ef74eec3078b023689023590a60493c28db88e23008208bba651c012447c88286082818642298842d3ca811a94c122a841121cc117384114cc412248a51d080220c45fd2e6c588328223ec172100821aacc117b4d7b7ad0109dcca07840010b4800898c0039c001328c10eb4000ed497430ac22240c21fbc0c2040010008400834cc2148800390000e70001440c0d489d912548220acc2125840059cc021c0c1bb188109de060a3c4116a8000df4c10f6c4f5a69c011bcc12268c1092c42103a4009840071005433a2c0feb25646097880093c811fb081e21e410fd140ad90c00c4ca9e6968bb2aeaefd740bc91d66091c8b0e20c11b240112cc400e3c410adc5c1d344123480112b40116d00004a04121b48603e0c005a0400d0807713cc013a4f21e44804259cb00d9cfad0400ff980bb5049a08e44feb468120b88104cc47135800067c0b6a92614621c0a229870c4a94fd4cd40140c00e2001116c2ac5312623a0c11a20412780428adc2e26202c44a0c2281848affdc42f34b0e4d8024288c269018572754542d00d879c022becc22b850277354227809a13a8c1205c2c26308241080428609b8696822a546c1be8eb23e445d3b68120546b4396ac1db0c11f9caa1c34581038fe41e609422041341ad4a50ec0a7121871124819c6a8c117748005888014600124a8010d84c009ac000aac405b5b0007a0c00f48c0581ede12389008440003d4321aa80255fa0005d0800430809032001008024a6d551ff48115702d6357411fc4020d3c01168c1508484116a06109042a1b54f21350cb1b08020a680010f0011cc88069b0c121f8811ad4c11e40c20e204011948714e0400be880083040113001016c4019308608780a04740003146d0b18c107c840063022039480573f411a48411360c120080211f8411428325815010a1c1e024440042040039c40099021701847fc6800192650023d87b75cd47400f4a02d470118c0ad38470c4a8fb9fef8cfa24587f4a4777a03471a2c810844a4a804c10e84564f4c4e8498c9ed19438447383010434e004355d08265f99128a4842f004330d8824403c21f9c829b70c4c51e447f8c02258c42033ac4143fc292605b420c022418df28748201a2c28f98c23c82028e63935e64cdab768246f73827e4889e7ce8cedee91edc2855d5811fec411dcc01411ac2222c0226c0b020bcc11ab0411b542b9d31411298c18db27168244115b8c112c8c01258c102008116f0181cf0c10fd41c9541c12144e2149cc05e218006dcca11e55909cc1114f04127404106f0711d708216a88007ec8127fce013c48213cc5412cc000478cb61decf01f4d937a34b7f33dab66c80fe052c005a46c00184401db06d14e4800b6c000b888a2318820a64401b2802214441103501043001e795412570c001fc8022a080445954b980b744111a7210409f95cb00c5e0a235c73f078000904b7bf7590000009ff5590160fbb66fbba82b9eb86f620298a00c28410ef41008b8005adcc0ffa2c11e30822810852f905a2d29838447783050c21c94024ee844850343c11383ec4d8edd50044ce09e4ad8024b230e4a00ca2c64922ab88ea55d6c2288822a7442220cc21f1464267c82450f02cc3a2c24cccbc1328220044222ccc11f54d0c59e302850a8a42402c8df0c13781c103c811b24e31420c11c2c42fda5411148017c45c1105c800914c11140fe8109404110cc00a53663024480af30400790a1006cbbb38800d235c07797400ea00004700004148008a82074ecd501a81d4635694d220004c8c0091874f4502f0810011bc04111540005a481f594c1067c0b1465400ecc00705080fd10b4fd90dd58db412aa0410214c0086c40e0218013ac406c38b721fcc003c8b50b9080dd6f4bffa0801108400160c1b11f4002289e013c3bb5073401dcd5ba38fba21100b6a3d8a20910ed5f1445410770a4d9110dc6057c8009848a1f4c821c600221a001f27d442544a5187493856d8ac7b9c00decc00c10b31300c2203c824693c48e1c052950c2e91cc52978d62d1517fb9b8e9d200e2669df2c5c8829a49690fe6002264002869f046b21df760184233b77fcd871f344491224377410b92327ce9f3d7f02b15903e9d1a3458c182d12f4e70f274c8f1cad9122474e23518fecf851344811254e8f08ad4922671127508c9e24d9d3f1cf9a416dd2489981c3050912384e5840e080c2860a0f162c70d0a10390130b44d008c1048b0f155ad6185911006d5ab4270c61d274088505235a921c7a1062c58105010e14a8504142dfaa070e20b8b0a070050c141e30401000c1020688297b307184c382132b4e883801a20305c854117328b12184030b1e3c9c38a1a30404081d0eac386221901113487e607973800185020108e84d80b64081e27b93077080e071dae168050448fe3e9d005f04c50b1c60e141858b111e3a78984162040e2c8eb0a450e2c8d09a376be2f87183a6899d3d8e4c314a658a924a18a1c417626c1985934e40e9449139fe68a4a082007104144e1411a4119d1e514414544e3965971067f1c597637c018644128b31c6975d66392595541aa1e4145250e984924f52a185164b48310515534801c511484609451140da9823904f30818494409e602314565211b01353544185144f1c01e411531ca18411473009e527482099e90ff8f8d0c29042ca6c84114e4281a4cc4718c9a8133d1919649082e4b0e38f001301040f2da49882a927045924113474c820030fa0e0e38f45407a84133698680284139230a1021ffed878630f3992780596676479e699699eb186565aa799c6566b709da6995a6fd57557686e1d369b69b499e61a6493ad669a6ab699a65862a1bd269b6caea196d96ab3d9a69a6aaaf5d6db6cc0d5b6db6fcbfd165a6fb711b7db6aa8a9765d72b3a1a6d96db9dd16de6adfd5365f7dbf1597df70a9a186db6db83d77dd70ff8db79c72da75b75b6dc669379b7112a606dc83c7f9975d8c07e6d6e38745c618626fa379989a68a2a1c69a814f86381a6b549e796595077699e695615e396495a5a946e566305eb9e5908176f7e5965176b91aa5812639e5987596da656b2036badb81b31659dc89ab615596666085555663633dfbd6586f3d566d608f2d561bfe6c6eb5f65a6593a5e65a6aad7ddbe08401ee7bdd7803b7b76f7e03df269d74b4ddc6e170cbd9d6618bd3f1d6e28a2757789cc413df66e38dab55bcf3aee16d789c72d219a7f46dc2a9b81cce1df6e6f16c483fbd1cd453973cf3dacb4127f18d49f746f174bcb19df5d251afa69ce16d9f18f66abc19d81b76bd715ee4e94b0e67fa9b8fa6b9dd94a9f959eb9bb5ce5a1a8fa529bffcf0497637fba5a9991e7ef8b59e3e9c6b7e0ee7ea6ad2bff96577a1f6567c187b5ed6a0a6b57150a373d51807ecbcc1aa66bc4a6d6a1bd6ae26b8b60a0e0b1bd7881bb4eca60d6e28ab5ad402dc080937c2d36d831e29449cc510a7b974208e7399a347f018273bd7fe292e76386c583a5af7c217ba6e862e4c073d50970ddaf14e73a64b62e294b8c3c9d50e79be3be138ccb14026260e1de34047f294980ede75518854fc22ecaa9839d4edae1ce6305df278388e70f0b061c8735e39c2f13ee099c31be77b9f00db15bdd751a31bcf7b9ef8b2e70dec0d0c7ff0eb9621e9e73ce875ab7cdd0a87341aa7bce981e392d408873934798df98d4f9024f3c628e177bef279d279d218a0feaa718de151af8ac953e0025127c8d299c38164bb60d986658d635db058adbc9506a7f1ac6469a36f1ad4db089d65308091ab613d7ca11113070f7aa0301df0d0dc3585b844272ab173bd0be2e9c8e9c2d699ce8cb5eb9df112474d2d9afe139d8933073a90884630662e1e6df4c6166b57c57454518dbba3dd2dd368c672b203893cf4223cccd13b06ea8e96ded846f3b458bbe9956e78891c25f90c49bd3cbecf91370be52207a6c7f20d321ae1785d249f278d6e600f7d21c3a3d6eae82efce9ef1a0f93461dc1773f45a6d295f19b9ffe3aea8d68905279d83324f6b8f8525cb64a9713fc65ddae9541bd71705ac9ba16ddb6b1d5c38db07506bb86c1ce09c36aba7086f4a02612ad994474d043a08923e2e932e74572beb39a48aceb5c87888e800a1489f118c7385338c3c07a31a1ed48473be841cf79b243b1f190073df2b9d876e4331e419407efda210fc1a6831df1a027efe281507678d1fe1c98dd223a36fb5674a883b5a245073bcc515bbf9a43a578c4de3f6bf9bc348ef27d0b446a3940bac872a89294fa53a526f738c05196ef1bfadbe31e3dfa48e78d347e8c64a05205f90d3b2a3579dec023529df70dd80dec8c4c2d5d2087d78d8652718105ad6d37da318efab6a3b64f155b042f38d5613d4b5bd828168045582c6b75b56fcd5457c1eca538cb698e1bdcd49cc1e49a4ddec1439bd9c4f05b83d861c4c2d11cf0e86216a9a83bb9369677f4842d6ba1385a166796b2b34d473e79f7de19ab111e0885c7681b9b4f84a6431eff5cac6c67ebd9d0c236c68a652d3bd8210f79c0c3b3a38dab3936eb0e84ce9377f2a86d34857bba51067478fe197d9fc3e878d38b26778fd1306ffa06494ae67ed490e17beefbd2773e41eacc91481520f4c431cae40937ccf115e428c1315e52d6528dbc436aa0f1080e5a567194e3a06f3bdac10efb521a165015d634b0c18d0f6ab598d112d7b30cd6cc6b6d831bf0fa2a85478838d331eed5ea40e1e34a67ce6ed263c7691de2aefb9ac20dd313b1af45f18c5328da19ee4eb4081d2d62b5d9587a6c961ef888323a244bcf1d67d6c8d48ec7b613278fcb2adbb3f468f2b725eb5979ccc3c9979dac93e3915a20bb03dd9295b793675bee26cb4389902dad3b5c1ccb2d637287f9bd25ec789b5d592e3acca3cceda1fdccbee4223c65d560ef52952a0df32295a9d8fe132e35fecc403bd656d220cfefe9ba11c86ec0b7be816cc7c9258d3a70e017bf54cca762297dd99a3319de998eaab23eadd563e5ed5a3f5796ddf2d62c7595ab9580dbd6365dd8426a0ad1d9bc6bac5d993e6c2cd23385542776431bea455da315893caeeb38449bb86da30eb499d52242b31e5a278bdbdce2de7669a98dee6753dbb3f160acdef1ce0e74bb711c50962c424b4b0f73287b9e41a6a7b7659bb8cbca96b65826a31891b8f2e1a5317900156e6f11aeddd285d7926ebcbc1d0f8ddc4326571c5c2c9dc6259d8e40d2928ae31d072617e8dee539da1b8e465d7d5137e92a521a8f54acb9f0db6d5fbd77d6dbf54d3e935925c1611d931b45a7fedb34a27f6a526790d3cdba57c2c62ad652775f898c63dc597d98577460b8b1ea98ec8e770c6c60cb15ca52dfa2d767acce6e8ad6769acb67adb72d0fd4c1361e448cb528ebc78688ee36abb4b62db44a6b1e44cb1da0ccc92230b4ea2d1ed0eddce441dadc81ddee4ddb22501efc6e1e98ec03956db1e8a9c9986cb6fccaaf682b8d6acb90f2ab05210d78326ae2b82bd216c8df1688a9e8aaf36c10e3146ed0240e08398e81dc0cb8160df4d82bb880afe4280d935ece76c081be4eeef5c40bf6ea8b1d3490d28ecfe6d8add2e4a1f974296fb841e8848eaa94c9ab9aa598d4b099eca55b0ac6625a29ac9a89ac6867d78228a1d2aac35eebad9cacc252fe48ea168bfeb8ed0e4fcbb00cafb05e6b88a6ee9f0ccfb5660b1e24cbf0cc618688ac1ceeed02e701ee3cd0dc2250de426b1e1ab00123101fbe70db1ab0ff9c2c1455d1b30e8fc9e649b4aaa8c966cbb4d0a11d6e0be4c2a1d0ca08e462af61c20c9d8007d0fc2cbf8c30d28e71d1942ae3cca1e4122e1915eee490ea1bf0e71b6a4fb8826f78560ef8bc810a676ff6bec1d128cdbe2c0dbeaae8e4202be65ece0b6b8ed2d0911deaa11e5e816ce4c6d3ead11eed31596ea51ee1c1d3f8111eba0ae890a55bc6ea0dafc1614a8dcc90279ac84a729c8811812d88560c8bb0cc8b600bd97011b1e2c11dd4a1fd862d1e566cd9160aeb800c1e562cb3fc6a1efee0611ef4411ff0011ef4219f18cfdc240bb4e8a9dce28ddd1290022dede24689bdbec1bcea21b450d00461d11c2a2dd8dc01bf60cb1ef4a1162221112ca118f4411cc0211c98eacbc62bbfaaa1b6ae12d0b281166a412cc7b2167c01f4164d93182e8f4cc9f4060d1d9a2112e2522ee7522e11012a11211398919430c91ca4b01ba410a9c231f70209b9c0019346a91d22cd3017d330dbb1d2daf11d988c1d8f121de34128eba0035840335f80055ec0333f13345fc006f4411f05a13343730d3ee8f99ae56780ee5a5ae95aace71aeae75ac201d64ecd20a509d65c4da5984889d6e19c7c53c8d2611d1a8a9faaa1225d6c77dc411c340778d24805fdaafe1cd6211d604b1d1a461f74810560200cba0006bef3059641cb80e79fcce11dfcea9f9c4c1d7e0ccbcc01b6d6811dd4411dec611864e03bb9800b60003fb9e0052ae11ed8611df0abb6c4211cd6611ddc81eba4e1b5e0d33d0f141e0a21063c933b97011ec28140c9e82a81d079b007a6faec90c02006be53446140112629b954498ff2c8a8366a2d55091ba67165bc411d86214445343fbf330622b446f9530cb88194bc4be1bee17c604abb4c0e93b84b95fe12f8faf2b974311cdaa1390d33bfd0ed1de601f8de412995b21dea011cfa2033592015b8410b3cf334598014fe41133e8033ed4158a0011ab8210842130f60e10b4e93335fe013ece156bafee5836a804cc9b406b04115fc5434ed2136abc11eb6c11122744441f30b70411fcae1351f47083e13063ed312f6810d24f405c0730cd4a13989d34049d30b3a55443dd33b4d153ccdd41ebace1e10e1056ef45215a15455f5522d411f666b1edc612379f503ddd304e54129fd6a1f4a2106f2f346c7c01ec46123cd53176cf53bc7a01abac054bfa055cd813e6bd446798019d64117d5a119bc133c73b4536fd4060c157b9c671d86015ab9e05847544497011d2c0e6880f27caac15e95611a53268fa2811ee2005945b40be8c00cc0c016f20828a9c15ee1c10c6e34606d60199ae15df11306f4001e78661e36415b61c0069020446f340c96811ea68719fec9c10c04d60de4c00c3e363f5be11d6a8e5588211992414c3ff33449811b9ec14d77f656a0e11a982034bf2018b8a11968003461000c7c361a58f31a9e81532f954c3b3350c3611ae0610e3ad554632018f4211df4c10c6c350628b45dec4115e0f50570b56bbda051c720f54c271ceca1146cf505f4401fd4411f7e4155f3730cf6e13ad9e855cb553f5f0052ed211764f552c9601f88d33ddf61046b0b1c90ecb1fe491fe2763ff5b655d501a0c4c11f3e810528f63e5f8007e8a011488159fbd21df6810ef453446da05b75d11ce2d646473406c04014ec21bc942a1d9a416e13011eae411fd4f63eb9200ca021bc14568f80f279ec155f47e91ae001fe60e1950e928118828178ebc890904b95e0010c8217061a611eca211302b712ecc1ce9ea772f5b30bbc207d371606c6001eae8b1e1061473d1747e9401cec0166614116a4f7159ce04f39530f6c4167ddb46709186841730c60c51f0ef852913619de3459b0c11a602144b1f60514011ba4411c6a33a7eca11054d53349611ff4e11a90005ec3c01e98281cd42117d8b70b6e011512015ac3c0169421a1ac61635fa0068401c3e2005ac1e01e1ac63ca321131a5675f9530f6ae11b9a210802963b6b4119e401b678d5ca16cfcaaecc1cee6118bc20601d9644efc1cadea11916e164f5f346e9200fb001418bb3b6dca119f2405c65950e9401bfdea118f2fe400ef22012ee811ffc2119f2407591f642a7270ed4967ed31714fa01788fb80bf2401f766ad1544919b1e71bc4a119b6337603d75245740cb8017955491ce0e10bba5844f1601d9617b9d48116ce970b6e211df00156f5130cccc017f0c8794cf633c1201af6a11ffce10ccc587089881d72e9152a80053ee098911999592018aa6167dd941bfa609935f3988ff90efa0109a6999af5404faf011a6a6033a9993359809baf21710c3470f0e119e4c006eeb4333bf30b68c11ed4e18a16521f5c01093ed306c66017f001446d00a0013a0644581cd838c42ef61308960ea4921b4af55481789ecc411f981809c0a0a2c1000c8e000cc46019a8a10cc08009fe301a0cbe000c82411e76b1b6dee13af34bc5d0418cd5e00bbe800ebe600cd040a6bfc012ec61b6daa119ca60a6e9800ec600a8c7e00bc4b38dfdca8de5400fe6400fee400f9a5a0f9601b2dcc117cc80a8e7806c675aa82de119eee11d706b1741a11240c113ca9aacc93a18e6411546a1ac83a41546e115d44193ae321cd88b433749e1f0e715820116f89aafa79718608118065b7a832119aee130976a7ae86194f7530c3238f748a9b6dac12aa98c7c7dc1143aa113588118b8a155f7921bd9416a8c011bf4211ba2c1189e219443b01ddee11de21116920156360d1ba0416ee466979065828489595a8959ba0a3661d320f3063901873a45553ee959fe73d6a12413473e79c81ca8932393bb3ae9999edfe89f101473cdd9af3057544d27c45a0b1df6011362353f257444f1f36cf5612395cdb444eb71cd0141e353dc76f1b6462b0279b5d2e0cd57435058db410b85d503af5803b3d0a5d5e131e53b0b47908a79151cc6cd1d2233c221ebbfdb18a178f528b57440115440ff52bcf2ab1bd8e1e5a470e5feb22f0bade4ba411c4edc30730f934cee2f09d4c3970a93f02bf7ae32b12dd4c4e52112cc383f63001b18ea285d8e19a7f0e5606ed228ad091bcdf79891c48fbcd2988cc95efb045945b679f656705b5870fbb69965597c3ba75c93e870b3756c731db6813a0db43a8f5b54ab5b1db8c13dab53c330feecb961ab24e31c244bb2bbf9b03d31171d8a73c7a25b3e5f6b77cecd1ef601d159b21ee6a12fb9f2c9045c586bcbc922af8a69ebc231d7c27b958ad71313cd2d0bad4c587d3502e7a14a110abf680b4ba3fc032dd0cacc2114f9dbca443d045f1dd6694b1d5adda5d1cd5771314027fb1629530303b4e6e6cbbd301c1d7691b2e5db303729bfac52e19cfdc4cd61c58fb22f4baed10aed48b971313f7c0abf61e546fcc16b2ec91d17bfa490da17f3bed29dd25e3632bf81c9607b6c360d8308381fe506d438ad1a32081bb8c5355d53accacf9c27eccc89b3cd658d3893fbb5e473c70efeb95f0b1ece731df870d05d7d9e4052390bd438dd7323776c3dfe47abe35bf1f0fa7015674bbe594bfd606b71adacdd160f7307fdb6f8ed23a9cca5474bbed50f41e51bd4694b40192ae28b93df10ab8d9bf5d2353032694b2943ec1de87c5737525877959eb51b5825d01d0cbae4279bea1114c3273bbabb1254a33beb132dba0d494addab2fa51ddbafd2c3cbc1c45d1c1c8ebddaed6bf61a6d498ff2e6ccc1db8f721731491c5e4f0a8f9cee29bbe6de21dc8739b6675bdee57d1ab67ce85a091b9ce51aac8adf7113e8c4aafbccb985949be0ad3bc39cfb85a65bae544ce111bea513feb5a478f4f950c5e6c1b15450fd485ffdce4d1d1a8bb6e6611f3e70f1508c576d3105991ef1541aa14c3f725f8ba52bddf699acfeb45ed115f1eb9f2a8d0115111d8c9de45d51d9fc2aca21cb3cf90d3a35f0e5afd81645f0039d4cc18f9eda6d4bbc5650eb1b3cf2a494572d1d06533c9038f4a596aa617471e21c77ecbd91ecaf9deeff92b60a8d1ddd0b20bab53347b05d3770e304b61b080edc4276ed202e8cc84e62bb57b0923d7b360ddb3468d3428af4786d5ac969db445ebb866d5bb56adb566e9bb9f29ab898e568964b976e5bcf74e2d2a91b0a4fdd4e75458daa43474f5ed2a448979a2b8a8e283a73e8d2a1bbca95de56785fe7c9bbaa0e6b56a15bd3c17307af2d5874f2e2ce53278f1edbb870e50d1d2acf1d5c77ecbeeaad888e1d5e76f1d8a5231cd81de08aecfc422eebfece5cbbb2e6d61526686e294471ea2a9b732796606575ede261bd6c98dde8cae2b03e56ed2e34607915e5cd7b0778dd63d7a2079a8bcd79345688c6d759beeaceb7efcaec308bf3262e5cb970debc9903473d5cb7ece1c28133e74d3c38f1deba591638bebdf0810adb8153bfdd5c42cbf539b71b5770613d70ef0008593d1869f40c48208df49148d354135235359974cd4c30a534e184dbac43534ceaf0948e861daea3ce361d22e5965a51b985d43c626535545573b565223af0e856d766442556db525bc135d43c3bc683ce3a506dc596634ec5e58e5cf298a3978e7105664e64a42dd91790bee166ce3c5ca143513c8e4176956b9d5d3565611125b6fe0e3be50cd59c5f804127d9681455166664e3ad05986554f6551141f3ac79de509dbde64e3b762ef41a6653be13119dcdb5d3e676cf7959d96ef09d474d79e285175e79eaa5f7e740e58d279065f7993ade55ea2df41d7df82d349f70e34d291144efe45a4f3dedbc4360461a79844d821e3dc8a0842c4918d285d7c064d24c31f534d34f3995b313373cad23948c68a148558a6dd1d396287ad0f2ca226080f1c41773dc528b2991ec53588ffa88e28b3cdeec924a1eccd8b3953c9988d3235c64d698583970c163988dea8835565c7d9959986bccb133cf38777c238e32b8cd135845fad0b34725bcc983683a422c4366399d216a593bbe4de958c5af8dfe46a671db79532b670e994550643793c94e38a669b9a768fa61a69c3901aa67dd78b4ca6c1041b52ae7d84087e6fc29d1587186dd78e110572b77e0a4f3507bdc71d6cddae22864d97963b7a35dac0e41b6d03b76f71a57811a2178ac82d8407852e02b75d46cb235412bd34dd04a7b8d8723eeb4ad8747a5130e5a557de58b30f0f0b49337fa9442873fd920818dbf03d358153e6590b20f8f65f9138732ef2c853084469a938e908469a5706da947c7995f5b75b60e3e48e0528f633bbb364f10ae8b331073eea856263ae504b5733b5c333d0f41f6a8b326cbf581a38e3de68897fe78e5ad63cf3be25c333641e7c3b3746604c1a34f8044eb6f8fa45dfe9bce3ac4b10f7b54033b07198778c6d11073ec0311add8477bc2610f7da06f1dc2b1cfceb2e30df2a96f3b0d645471b0b31d718c233b0d59dbdbb6338e0c864339ea990f41583610ac4da4228ea2083bde218f026dc46f1d5996104b42446c10d14113125c4d9ad5389ef8445b3c194a864654a2ce55318a3c519d165f64167b58a306cbd8873e72f1857d74461d5e190c3ae2418f32dc021f8841c73cf4310765a0ce1eb940c23df481a46620011cfab0d13e32b1863d662308e2b0873cf0110f26a0621f831c8305d9318e7d7c420cfb03129520338f66b000403cba8a3e74710909ce230e8ae8473bf611875be0cd1de3f8022efad10c30ee910dadb8fec740f411873bece31de4100229be678f4c88011ff2d88730edd11076041317fad0072de8a01c7020060c8f74922e6a708d2de9020cfe508e3e32f105f4c9c30cc1c017da1002c84c8cc11ee318473d4a214971f863135fd007d58856996a508d20d929087b56a836f660106bcfe19370c671b34309471c8e3ad544060211c7244687bcead5af92d13768242824c5fa9b481cf49223168b26177222b434e4136ef8642842c1224f3ae7139e8cc32b6fc98a3d7e810a5b88421afa10ca3c8c710a51f482784b89ca58d8a1bf68a08216b4b8873ddc21b079a46316a7988532e661177bf88216b3b8475f84b48faf16a317bc30060f17b90f6090a218bcc885fe30eab19d59dc0218c6a81ea288171874b8a31bf198873fa2310b5b28e31ebc4a8769f4610c5bac631fe5884834c2218dea5c63b253395d65f6510a4c5ec318f698470377698f6b14501cda320735ec618fcea5c38298a9863df6f138ce94631efa0baa7d2e03c9ca4433a81ce4a0390ea28f7ecca31c07194f05fd510f050e37a0e1b81967f8135006d68a38f6294e71aaa29f894c4966963994941e03338b200a2215494c457a85b78a6cb4a31efd6848a4d12006116e252545227e6b22ad9a6aeb711e1291e43ca43b1a81c58a8ae50956e051e01e25f547a13407cb1ae617882da946ea1052672cdad72db9e31ddf9b1897aa971b88c5a51d108b875cfe00e3d7ac00c9af92e10d4470438f3a61061de33954f18ae7a7fc1444bbf87307352c1133df984934b1418ecbfec91f0c6a575014854e43cc141aecd66a20e6194f39bc418d8664471a016d606504d20d067a071cd5491f7908120f145623cc0df4b13a1a1267fbb4b067583b1ad00c73a7f02e861dddd8e40e7b3511bc51e457c4f8617c41628d8f5823411f7d093492f5920695542634b989b47ee2219f3c2e7b68e9dc564a34b0a2d02fa967b198585ee4d7b1f4682c7469b53c7827c7daf485495732b18d70ad1b87f93a31609a75619444a525f146347f5aafc528d617b36969789bc10fced6a11d10bf4c34e359936df4a3ddf780303019ac92ccfafe8237dc98cd1de12108d7e6571c8334703e6b2b0f4051b89db5adcdcbd9a90677829b1d6a78073cb33a4f0c77869f7540ad86f299128af3166ca0fd86a2b879887c1e629177b40216b0d8c833ac71a0472f3a241eadef499a15c4972811263091494ea6f5936a780e7bd721b08762aabb2c0a65295ef94a281dbc1567c08377f428cbbfe6810fdcb2982ef208645cc0b254879918d82c22fa3c02ebf45e2f8c3f70c1873d2c56e12641cc4863a24b457c5341482a322b652248556a5430bfd06f35e0b3a0dcf59198e2c5b1326431936cfc9ae73f7dd734ae594cbb5ba5dd329b8a3cdff0f777f80d9e837c4367e9593ce375963ec283a3cbeae9867832c5fe9076bfec51a332dbad7478c3e800c65719bd21de3092e88d1cab58463489472084c406158ef631d9ef4a24a7386f68cb2755d9498620a795aa105f28b67e51f1ab8214bcc483e9bb4e6624587ba80ae3631fd378833fe6200c3e22e9eb4e9af5c274ddeb5e477dea1e93873df00186748436d77d71cc521ec3d77dd04218f778c73dbe39867bb05211fcc00f99a00cf5700ff720303f5318b7e10ee9500696a04a0b310fd2500b88000bccd4107b3210be21250ae81ae34126a1a10ede200d9c4119f21009ca3034f6400b354009fa84103af32af08642e0c1658f971ddf801d5f3679603679def01235481d904735f296293df36335441002011de87543fe89f232b762110df10e18d10c06b2200a22122061210e6212220721265152b9170e1ba23837b70d0316530496192fd2213b813055a1172ba2174b07168195620ef373108361fae049ae544be1b05649470dcd700c89d07d62611862c40b91500b8ea80f530789b4100974f009fb2016ed203b8ab00f56325bd4b009911009b3a00f8cc12602b1153cc40efb500b41b00ffd9009a3d30c60800d5e130ed2b408b4100cdcf73dfbb0085eb00fd3c119eb200fb9400afaa05ce48008a5200abcf03d00550b91f03dc78008ca7015ebf00db0580ba76006b3600fde000fcd600394200d33d80bf0a13b89300b79000cae112a1c140dc105663d7883e9118423f8fe8368d60df4c841f1468f64636f07011e6fb336352411d3f533f941118f1211b801190e794318210bcf900cf1055241d411b1b70d2d911229510d81735f98561310e20d3555531f222243c10df623237b411465d116625123bd060fab36162c522379817448670fc7a00c905841c67004cab00fc9140797e00f72c10f66600990a40d772055e6e00fb57004feb00ff0c004b8b00feb300facf40589c45ce4e60fc3500352451afbc002c0e00faf8807fb40112c926b865141e35006a85095b08894fec004cb4057dee00efb900b35703ac47854e9301efa600a74e09380f13f98c00a1e630fdad006a1450e5ed009f6d00deea00b53e07fc38004ccb034e3fed47ff6805dde800e88900c54b565fba633eaa00be5d40f4ba90e94658f8b270df2d883def00dd2a083fcf666f6981df1e68301f52ab2d21014056f64932ab2f21d548370b1f21bec604dd1b943bc12911a1772f65512c5a25fd8900d319172d9802189937b2f45221fb22d6e919ef6e03e44e116e1d39e2cd25a3729167311754e419f74a81be3b71ba13517a42116ff499ff3500fa1451afdd917fa800f4c700bbf747ef6b02bf2500fbb31a00ffa0e2a861b106318be727e6f8918775211a49143b912199a5425cfe10e0ee1187e415191018586e670ebe510ed101b65531de080a29c3137fb561c2ca379fba46fbcf91de1510ddfa19b90178fd8210dfed4208fd1d0a4d4a00cf0689bb6191e4a1a5cfba89bdfb08f3ac31d07315c32649cffe4813d4378e1b5102b4a7f0c9943bdb25e1181371797681df511d0e0111e357b0dd212282138df19922b852d3d510d4a919226929e847a936e31170d835b34c9a181d4165ab76b7304a086d1a102ca2290c8a805c85af350415c690bb51046966a7e101375f5804ce767626fc922042aa171510f36421a72e1aa7eb256f409ab4be2a10b6761b7ba243644a28ee1317e37a3de351afcc11f3f235de9931ed2c63d60033635b82960b6a43b280dd1400cbcc00989e0049dc0062ca0026c90043910055520032470024c30034b10084f70044ba00a4bda838bb729dfc1fe1d8fd729a5722a2f8336d226a30a654ddd155eae4171515271bb3211bb727106c2118bc668f4f537b897721852863f312d13922d83aa22174b9330090ff2a9a874e16b34f97e3429aa45679fbd76a9261b9f125a0ffa40a0acf5a02dcba9913aa095dab2144ab310e3aaf6690f62b5b2aa1a9f6f692341db6bae0a621c8a1b3cb45787726c7ea2b47e51375eb25735241930631a4b835db0220eb1216fe9501e1d841d3a986edc619ba5f00776500843e0023490012350023870021e00011f80011960011d40011550011a50011ed00118d0012d4002821b023a00022d80059c000cd4600cf21aafbcc00685600a9ff009be600c8cfb78072933d5f3a14afe8635c68128b7f661eff0a0f5908a3a942b01f20d16070bc4c0511bb7688f360d8d06121ea91247a44489437b3d016035d5214f41a81ceb9ea115bcb8c5a19b9a87963abc419baa352917c6bba9a1a5a99bbab2ab4ab3141a5ab2fab3e4b7bdf5b00faed9053c1006634089aaebbca5cb249b3a6bb2ba9f91700ba4e00d321626a978358e611c95e16dc3610efb6709d1600ce28066e791ac60eb1d0ca4a3dbb1355cd6419c821dc5f0076840043880053440047080032030032350010c40010cc0000eb00010500114e0012070b714f00028ec001490011060010f80b71580c21a600114a0012300079c500873e00434d0024800023aa0013340021a4002fe3910022980066cd009cda01dd2d3320eb95e7fe6578316888e1225ed35510e897a11f10aaf400cad7b9d1ee771724a5fd540bbf7457b10ab3864a838394145dc502224021a2ab2a945c192a151236ba11b8bba6a5431aa19f674c6cb6bbe667e962aa1fd79b4ea679f036a31bc16a1f5600c0caa4983a4079ce8bc4e2716169a2ba21aa1e410989c081889b1258ad1616302a2532278f8630ef680099274280d510e0d31c012f629d9431d40e1b5e1b0a4d4f066b6490dd140adc0c00bb3200a73f0012370010f5001757b011a00022060011c600422e0001dfc000c8001caec0028ecc1d8cc000b500118f0000820ce1ed0022d90cc1b4001175001734bfe01ec6c0116a0013830021ee0013470021d1002333004472008aee00dc69a0e0dd990c7b124c781a13a1471a73ba285c67a090b0d1e17728f16522375441722218d730debc0d11f42452ef9142f19bc6db19573b1956db1744af52f71d114266b25566218772817256bb2ea27a1aada9fd85b412cbb2b7384d33a3bb411ca2289a11bf5a00ccce00f7b4007fd60d4b0490611fa08b8800ff7d00c6d700dfd900f4c800d44c90efc90076cc91bf6400e5f100af6c00f888007a41811fa600664a00ffb300c61803ed5e30596e00ff7900d31800bcc0433e7a133d5b1a5d821cb33040e2c33c05c465876400320f00119a0b71e90018ffd0017e000edacc2d6fe5c000ba0c28fcdc10c40d917c00071ebd99ffd011f80cd0bb0001eecc11fbc0007d0c1aacd0008f0d90fe000965ddb15e0b714e0001030c22440032350c43480099c300cd4b0130b439fe5167ff2908ab9911ba99851bb429df51002500007add07a070272d8595f5d28212647126b7c0d2bf7382dd5193d213e2202162759d2e213154321b24e511bf4fd6a48e118ef5023b68aaa986cbca5fbbc431b75fd49bd62b1aaa48bc8ffbd829b500b8940646d0962ee900b711007b5802895ba0f9d400779800a266d0c8840077a800c53954caf4007899008639008bc8028baa00777700bf3400b77d00862a30fc4f00889004dd810c0f2711e3aa88490a73efe1cb465bca90c7440034320021710021840019bfdcd0b60c317c0cee56acdaa9ddaae8db7afcd00cc8cb7f0bc000500ce9badc2276ce5278ce50b8000078000b12de66caedabbbd0019e0022220022590068b300325ec0019f0db4c4008a9500ca7100d2ce31aeb0518a0cb43ae6a18ae5a0fece0e8bb02e9f2a00122b0045950056f600a5ffcba1ef50cc5d00c1b77c624250dcd4252c8b2444bf4212d2522e91d15c4b7de6901dfa88674c0c37c53114a91416ebbdac9f4c967a22aa0277baa2eeb74ee90c8465dc88238aaaf8a1b56d2eb71b1dc5833ab306a27c0211c9b51bf4883281934cb7203379a77a44403b65e9b1de9200dc6a00c23580cb690fe086bf00662700233d00338a0019f0dcfd8bce5b18de56bbee66a9eda6a0ece2b9ce6575ec31e8001245c0116300348e0021f20021d30e51d30022090011d60db56bee61560cd945db721a0011d00021a4001807b0117d0011de001cfbc047e70044d1004387004388c0434e007af400d516c62bcc22bbef2e88661012750022a500424500447e0066fd0091c650a8460085af0067b60088650087050052aa0039d80096f80057e100abb601237a121e2c00d9ae621e6fd38f63373532123cca72232b2167d1582883a1a19ba2413cabca77a25bb61c8cfebbce50718f8a91b8144a08114e01003624a727ee3e7eb2abaf8a4516cb73aba2afa324f1cb050fe631ade9570287a6fc8090e39d82950e38c611b0da4400369b00765b0066ca0061da0014df00433b00027f0052a80cd0e80001f8c006c9efbe5ecda0760d9969df1b0bd001730dbd7acdaf8eeefa8fdefe02cdb1eacd90bf0c2259f01debcccdc4c0110a0028640048ead023400dc5a000caee00b124e032e60044c80033400079db00872f009c580dc11caf390ce5e2ab6011c90011e10c14b400443800553a0020091e2848e3e6f3819825261c9120d5054b8d042a88f1b419c9e5ddbc6eddab5751ad3a5bb966edbb66aca76fd2a56cdd83563d1a4492b974e1d3a75eaccc13337939dba79ea76aa93e7539d3b77f3881e75874e9e3b79f2ccc963c754fede3caa55e741a5fa6e2ad57a4debcdab67af6ad377f3b436e57ab5a9bc7a65b5729557366ed3a354974625ba342f52b474dbfd6d07ce9c3b73ecd699fb8bd81c6277e3bab55b6cae1b3b73e0be790397b932386fe2bc850b87d95b65d0a1a579f316ad579c3a25a000817082c389297e448d0236ac4d070a1b305c008ee1f7050c28203870b000418107173220a740e1c18205144c746080a1020304070e285f70a00003ea07102020bf20b98307e4db7347a09ec17ce41a3c6ce8c0a148942733ee9320a184293ee8c005e13208010438d848421563d2018c1da8d8a9871d0b2d4ca001072c2862893a8a80600529b430a20e2d6878a30f3eb220420711fe2ac800041dfc20c4903dfa18849869360aa9c76baa91a61a71a021c6174e1829d21860aaf1a525d06492499d75bc31a6ca6a6842a79cc5d479471d78eaaa6b2baad869e79d76a492509e76d25c4bc2aeb6eaca2abbda518bacbedad48a1db9da7ae71d37d9322b2e3ddd896ac23507b3d09d322324944cc02013471cc4c85c2cb0c010e30c9cc034cb2c53ce50fb1435d4be09cd9b6ebaf9269a62e6d8e10b419a486208348888c2850a2af86d04104090ee810a28708001e828c8e001631fa0a082609503963d632f7080020b768daf3cf9c0430f5bf2be139602eace730001f6166060031e4a70218421b0c0a28d233c80228311d67042860b42e8c083fe224868c2853e3091c3091e9a78a518c4e2a9b0420beba9e7072c0e81038e3aa698c2082d0429a4903ed2286288214eb0205ae9280061843a08f1a30f461cf185c769a2d9e6a372542ac6186c54f9a410458a198612579054261a63aab9469a68c241271c6b18e1049562a231a71c63a499e9a899ac9a0aada2b4ae53ceb5bc024bcc0bf1dc2a2ab3cceaf32caf2c4cdbab3ed912d4ecb7ed6c74cd3ec97414b24405832cb24a2fed26b376446d2770cd2a0b2c70503fe3ec9bcbbc713c1cc7952906943fd0408514374e4802840c9435963ef62a2097021d1aa84e58d593238f3be518a0a075d831606fbe073ab81d02068a9d6f3e72c91b97dcf8be1357febd918d95ae8e38b04316020b2e00c103029545ce020f6e000204da77ef20030a3020a183264c81a41663be29932d0a435ec3903e9ee8c39043d2a8a30e4308a9a38f254e30a204ef917340074660874e18421095a8c42fb0c1a3744c6317d2f8c846acf10c5508c211bfd8c62f42610b62100334c650063584848e8f14e311356b0935d6e10e9f14a626ec90d3d9d46295b75c651e62c9ca56c464c3abbc232f682b0b67ce048e7830854ceee81312cbd2c3777c454e6923caddd0169576a88928674acc5f14b51877744a7099c10c623685194d8183525df4e2a72cf30d71908a54a15186301ef10951404218b440c31a8c308436cc80063a7840b09053fe2dea042b3dad73400540c0826219123dad3b80ec64871cd819f27617e88020b9a3ba0518cb7a1720cf79a8c3800ee0aa021ac880f72e103b1428e1011b8000751600011e90e00381bc55b42e802c5f5140054c00811154910a5aecc21ae6d04a85de01bb29400c0b7d38841fde800528408108703844084840031578c002c08200073080854e74c214a608c52f76c4c06d4c636a4453c636aeb10b35388217c5708429d45992a1a1c39f5e4a47354a410a6abcc418be88863250230d73acf0286859a254e232967980832945b94a5b0295b58da2e52a89d29b380483183f11052f6ad38a9fd8565293ae29316c539460140518c56c2a32221562e1fe9299fec7742a70dff02219bb212a51818319e20807364605396f284314a23805207a91083bac01046830c41c42d0bb6f75b590c2a2247880b72c06f82a5c842c6b599bd301edd0475914d0c0032c803aef9ce791cdf1000692e501683d40041aea6b5931e0016fc5c70119f8c02a018881127ce0571d60c1052ad09c0c60c10d86f0053574418a4cec81149f30c664d8b6843ea860060fab5f168a00072340010e45f815043a40cde7cce7564a30842138c1897c42639debd8464d44c2125528a31ad320461b88318a47a86216c4a88639d0618e8fe4241d330bc41f8226aa70446626dff5c90ff542141edae32b73d9da45ab92442312a5a9c5a819358a218a44fe50c214b4a0c4223e418c687c868b78b2db84f0b2a6c0f9704d12eadba3186318c88ce3525ddca9a6705a19c4103534a5fad4652c132ad158261c41139a32bec10b549c22146a28d0ad8c25c860a12790b08b4e074a092c0644b290c9898f5aadd71e59660b76b79b1eae4a89800764c00210680f7a1c20db5de66b042a16d6afd8333a19770f9389958e20dbc39e0eacd2032e201006408049f02541061df84008ea908b5c58c31b166a4a3c385082138c200b5848d134eda7053bc0410a0bc1731faaa082273c410b4f38c11308810a55784215bee51137c42112e01acd18a9b0c6340cc1063f00c31ae1b84638ca31b3d094e31ad430c61c02610c6b50fe2326e190863178e10b23052214a6288637d25198e9b250a24d29140e6738438faa851de830c61ef81a9d0a281659149882229c200734ec01138fe0842f4cf597af118a50e83069a530838e0bb9343290d9226436f59775744a1c97ea546832532a6f48835422ed8c673ee3b8372a4319bc488414eca0861bd0a0056ff0031268908437e4353a0ec0c0285f7c81c402473a3f7ea4efc6651ef3a05576b224572763079d0b6840387a056bb41e701efaa8a7031690258c9b4d9fd819ef7614f031f034ce8013ac7cc515e8000e92f005253c81094938c21a42518cc9b4030558c8421f0a81053faa96085800d90cac69842938a70f4ec0c212081b480a5cfdfe444a08421d8ccb91e072431d31db06300a618c4224010d8568037fdec0a02430c10d4f40431adaf00437b4210d511882129c808628fc91082d68021192b006411c1d095168c32780410de96e4929325cca54980296b02cc51cd120852f8a318b5f30620638f0c0ad48a003fee860571568810b709083293c410d8d38052fa2018e718c033383e354bda3e18b52fc0114c5f84637d071a62b46c5428071c761deadb77688b4a789fb62a94ec39970801154e687b53168218720b0950634c024c52fe001de5c60f6934d0eb7aa13f2904fd2accddea5e42097df109d1cf31ddfc9b1df510fd609974ec2240d3840dbf116e5a8960348166b29254dfa9d1c9bfe32b52aab5f4916e7903fc80a812460033540824a389abfe0ba2c58022da08013580222c802f7c10238901f41e8831dac831421042820010f38011cf8a325708349f08334100462b8066590868d00896b988657e0031c40821c880239f89028200224488323980123700225888235a095fc4903349801179082f7338223c8a3594981cbdb0124d88142e38121f0c2c25b833f908324700250f80560f0062e21afa840877518873f209029783ef8ba343f980217a0813548034f400548908213889e16c800f1c18155b280511c42172082271802109081f723900ef8a30c68813460021de84335a00470cb0b3db91b759394323187edab0cc3110cf37b8984fe0a1a7fab9284fa869758c67f4305693005253002ffd000123081da618055f201ab9a2cda419e5f5140e5f80eaf1217632117165b969833a442ea3161f19ede11160b688f9a9b0f94a38002998eaf6ab96ce13fea28000ad447e8408ed07900bdba1d342381550a814fcc000f68012000022cd0022dd01f2320844380a637a8114f28842228a51268821118c55db98e138082f631a754788546188495d89157d0116870844e488536d4011740833e608234588223d88104d18116c8012cc8491a50022c00021d900236780384ab3c1d38810fb801221802227002a41b022330b81c408226400224283a36700431c8000cd08142308540480339f8045e6884fe16a0012470816d728136400562380553f0855f78022c28821c800345e0045bf8855968827cc1150c8811dba3bf5d612b0cd8bd1b6001cf79cce8b8811150823668034e2886cc2a865da8855d8886c7983e0989a92ba229c018a9c5f0066aa0031090b16281c528d803250081cb5b0439980334400312208293230111600fe9501613288225f396b06a39e490ac407231c98a0e48fa8e037000fd23b264210f83c4a4118096da91250ad8250a4c0eb2eb2b0d28a5d89b2cc1da0e8d1b4895430eeaf89e666916d8d9a5c94216c97280558a0ebdea801908822578827c918100e08029388144dbc169d202fe29810d39813ed0821030010fb8264230021528fe02f3e4001c68022d70043f58034f9006df828654f80562500527d0810f288110180122500337a8820ca0c413a0c41d80cb136881d91a020f804d1798011dd081c44b900e100113c881a253821c1801dd33021cd0bd3408ca19f89c0fb09518a30038a00442688219108354bc011cb08328608254300662f84c5a50055538855df0855998b55fb0831628011c5083508c0e0dd000e7f815f3b49e5d695210b895bdc2171a300560f885bc84043fe04d2628834e308666280665e09bec238cbe0907913287d230864f680141fd80b2fc0d19bb8055bc011770813590033b3c821c10c591011665e9a4f608a4f61440ef6439f8f0b142028eb2ba47e1988ef8feb82be0e0b10444a403448e5fa10fdf510fbd0acf951b25618180e3488fef044f68998fee69010f50ab07f001376083103800631954e2d80116201010c08226908125a8020a000001e8380dd8010f20011d5502384083d72a822600827bc502266002417b0238a88235780337c8824040b841a80463da11267903256c8203958219688124c80137888277c9170f188212881e0f08bb21f5cd2118811998811400811620021a900222889e0e18021c9001874c1012400227b0834130844560822e44023f72810c6001e9100117280124c08120c80194250244b585622006615012d5f3055e98855d28865450034198034060044148843f180446308546f883fe24980235880225508235c82e40b083badd03b54c032590030d22855440031aa80122d801369883416804b6e422e20b07135283365803c2d54d34a03fc9ba95f92b990f3038e1208e5ff1001c7883b8ac4b3f788226f09ee85831640120f7e816d641a4e019c78e8bb91ab32b907b9d737c8f046c3669b9a5f530dd54b2cff600ba5f1945f5780f4a9ab27304a0e40da4226b16958b8e4542330f608152fa001c008122f80223d540062880748c000b10165f19c20f880e66ab001da802f364024220844228a74ac0822730048a700326988251780663d8054c308437a01736e8034728040fa0818889820c200eedf00029a80341f00307760241d88327b8fe8119f09c92891e1028811cd8bd19200119018119d8811b00810fd8d6111882369c811be0010d98960f881e1768810f304fe86952120801411c855000065fd8850806865c608423500550488345100337d8834790034618843f5c0334700352a0044668033ba084463084424885dd320550788441080546a08447088554d88542c8011ac000f304012580820f10811976812850033450832738823240023460831c883d5f592510ec150c90e12adb1517988225354531e8012548c86ed54f5f798f8b6bb97f14c0ef60dd05440f636d47d111a4f92cde50ba16069cac0d00820f20c06e29160a108117d3b806004fde70a4ef7c240a48ac5fa9dc41ed1ef8fe9b2c15eb1e08049de908240008806f192b08b815d5d9b25b110112c0012280021ca0883ec09ff93d82695a833ef0834a308412c05812d8978513ba37700494711fc06b033f68433690822348823460db34200125608321f08f13288112581722d0023920d312d0150d2801a3248116c0815f86c597d5bd1cc0d8111881c9f49c1956e02650024660b459b0855da08559b3055e48855398055440855e603e3750023778044a50bd5e70535a40855de08547d861fb4205330e055408854610055a488550780445480440c01731fb9c2e1b811698811ce060b04c8228f00339708319c01dd3ed155fb9155d0e5e210301d8938e52ba808ca5813123c815734ffefbec9640122bf0601daf5addf78cdd509a8f471ac82dabe5df192bf9e81d58063ac66a01d2e9a42a935506982c0e68011a8347218b16650ddf64a9800d381e9a13a46633160108000298dd5b0e1d6f69c812b03f1010013b588537d08110c002f78103de32043840e724f4c127484a3c83831c20822640033b00bc40f00312b8bb3e44034108043698b6b37584417803b55483291898de6b01da6b0281be43251001c756b1efa9803f4ad988de53c594310f108327108e1398830c0084124b8559e885adcd055b486f8d26855dc8853fb8055ae3053f088135008546600439f80239c8e95fe88447e804f6668340100550b00560b0855918851d1e855db0fe852440330c40d72aeb32197b51c79a01343801bd4adeea98c75d32ebc9a2b1c3122017608112386cf6d0802728031c008312b0ebb27a397e34ac60d9b2430a3942da401c7b9dbc9e6b78d439e50cc7685dd64a0aa00c5c00caee3264996b225b00fadb8eafd26baee2255a658f557a31e18939f4a0800008004d7616e25516eda0000fd081d71b42fac1c12788157649112c48033748831d90813ea8031248831a3184a87e8339a88323b003419083467004dd46b81e4c03c1338436b83592e6844230f445688495060551408551808440a0845018630e6f8e114082f011e854e280a34b33fa83e830a3dc812001aa4e0313f5056040d3f4b6852ac9da5efe380593ae19f8020654680448a0844ad0e3a6d9855d98054af88406b78554b0055bc80560e0855ee085679fb554288311784c009c3f17d859857301b622d7d31dd458dd25e22c5ff2241616f051558e1121131f2610848fc1bf06d000256356b6161d27cff295531d2167d6d6e9727e24977c9cb2b012c0df31a4dea1a4b212f10ab00013d88060d9001c2825db6d0eeaf944cd05964e4acf5122def6d880dda531f5288fcbc677ae3224c7c6800e288229200256208657e8031328e02720021200822468022c48023770833e28202cc8d737c88235a03a2890822480e63a70820bd8801120811849967461023ff83b36608335a8832758834570023d3484fe4760843b908337b08336b8031ab81552bd9596c71519b0cd0bd076edd065c9ca001c100157cc810e3082363d7663288653f0856330691f4e854f68835b17fc62e885cea485f99e755f58700827055240058dee855bf8055bf88450d87560f0e95d28052720e4acbe000b804b55a66cf034dfe575165c7ab6e13c7dc5fa95b5ea325c117134509723204210d83258667861c1a424575e4a12a55062c096cbf7945b8f035c72c842395c29241e1ba5d1798f1e4fa44ffc80c8128e7b84acc5cef8dfc8324e2aab73dceb68a56b630e001e97a548529d12c01df3d4001dd0483868823780832518812430022200082544d618ea6448501b419cd6d479f364cdfe91357066442993064b142c49b088e0406206060c20a2b87192c451213b9890c8f1c52bd4a93fa65c8562c48953274e43283ce0f9a10584900f666ca8d00104880b143064a0b0b402850b1b5a70a81064d4ae62be7c9dda95b518ad53b6e4a0994389983263c78a8105560c18af62c468cd421528078f35a44ef122c6cb5657547c4389a295ca8f870e1d3c6400310244070c1d78f67cf0c0010506969d52beece03303d00e942a855ae14205a3151e28b59cfa8151c515b2fc416387861225338e5e5800da7268d8a11730f05dbcb80306ca971f4780803874070f8a2f40a01cc181eace9f6f57ee3bc309101f3213074d5db903df9fd75f769a3a79f0e9fed293974fcf7d017efccf91270f40204001d839579d760728b75907453c71421269f0f1c61b590ca1c41234440147168e78624a217e68e44414451041030d6fb4a1d10c3b5448041127cc0002540f607081052010d1871f6a44f1841d75f090038b3dc8610a2983f851c7132158265d54905da058648c7dd0c1071e801082075366d0c1051a7440c4111cd0e0092fbb1053cc29aab8650c2d8fb09144136dd8810a5b6b6ae5522ec518330b24a7e482c92e7bd222d82cb6ecd28b30bbf862cc27812482c38c1524e6c18c18388599749779c6d37a3c85a61905c97196410516904a0154a89db6da66177c80810c1958c013058b7590810b4160c14483689cfeb080a9042e00d5719f0ec71c7ee88526dda7966dd65e07f0218b1e70dec1272d7dc4ed67dc74507920dc74c8190b9f75f931576e7efa2d1b40000b1c606075070c081d7110902045081988b08108331491441d708c30c41a6f4871ab710c50404213389440b0204fa4f1c4208720f1041634e82042059f79c6c00523109103166fecc189204cf450861b6d9491c16f9185ca5a66516530e30520e07014521db8404207b1d9acd89615945089315c3512c827a87cf24828a8a4c2c9136294f18931c69cf2c41d2ef1d28ba2d1403142254d68004830bf3462e631bd94d98b4bbef4d28b2da2ecc002085672b91a66f16dca64a8f339355da8a8c2a6aa693dfe85e00211493ca1460b4f30e2061b7fb811c71c83ccc1c61e8cf8c186186e48cc06092534a6c4171c2c40b012d132071f71c8267bddeb0c58b75c7dfa3d47dfb2993ac0010b8ca5471c6797a1b69e66f3d977dcccc9f5444179b75f679c0509c43baf03000840c0010514d07db9fb2d8b818a279440c10e50c0b106165a14a1c31255686142b9a1956aa5117024e1040d3b40e8849c8c002912900054a3e980c27ed28327e0200a6850820e6e108540c8c909384055533833b3d45ce001b221011370d082168cc00590c9000117c3945a79c00369b0431b18418853a4e2178ae2c52c48418a5d30820d7350c4298ca1a7ace94918c7289431de400246d4a1fe0377d885328ea12897ec8217c2f81a2f5c728a4788e10f7250c31f9260a9c1f144041af00009ca708229a801097e80a023a4300517b087018b51c21322f640452462108d20c2075c3082191c41093460820e3050011e34410d6838c208488084d095610d5f50422002718735b420074d20e00ed4e0493c1c01040ec8c0034e20830a7cea33f97180976616b807446008382095052ce0000b40c0012dd84009403083257ce103a64bcc10a4200622b03276a1894ae034838103453339e6810e77bc831efc58735bd8c44f000400a077ed4e3bc659c003489004436881414430c21280b084218ce0044e90021a8c001cccf0240325c8271088a083272cc109fe75700213b0308334bca1116bd0e5527000048551c00533784c6216d7042c604106168dcc072e40d125adca5916c8810814a348d670e009373042de3c90cb0a70a00548594326d9308847dc2214b30894293ee18b52e80009a0304634b22644610c8a14b330861d3a60074078400da120c6116dd18b5ca02214a408451b7480862f808004fdb3901ce640083ffc81108df8431bfc200736c8c10d6b88c320dac084193c8e0e6bd041093aa0010ad0400c29e04112ca80063534410c62604307482006353c810d48008122576301b3b2010d3918a412d8e0874180c0044ab0651abef0041d24610432804c08b2300741e0a1ae7678021a0491863588c1094ffe68c31cd6808684c8210d69380216fee004254084064e48031a80d0021284a0a8434883139af08124a0810741c0c10d98d0862a0c970d6d68031aa21005350ce102d9a54112921004ef24abbee9e22603e0559cdbe5c79bb803000002404edbe9aebec9218121e090812160a1106f70021cb0708214d0000e6f008205a67319cd5480065818421288905e38e84fc23978031640948625e020072718c1051c50040b9c80061d280109a63b839d658001a729dc813053994b59d303afdd010906fb000b8c2005501181073486591d34f00b81a0041a16c188539c8216b4d8c52932410a54cc62168b6a0633b2b616adf46216b428452070c0084a7ca2cba800fec65051218a47dca10997a21505b6841a12f0c00317a0c117484403bc518906bc45820758808111b401126848c20d6620061edc606433e0b4074a308249c6770d80f04322328904178801096500441b54db5d10d0400a6b80f4097860420f8c80064f70c345230b840fe4c00491c18187d740840bb42036cc3672133436032059040d4868c214049b01168c60041ff0f66922ad8424c840096a98181276d00227b841061de8750e5c708427d0a0932d3061076a84c00321a73a073a8003d03520dbe16e7af70df07fb2d3df78d1d7015f3ac1c63ce0074708a20f5a9801119a90052ca840b01e44256666a0821ae3c0032d48021c9a3003198c20095168c2fe748549022340a8116fd852de6a358320ccc003a89acce052639aa574e0067c8b8a625cd002223ce1ddb74aca696c59a5270c2135341004231e11883fd88218bd80040d8e1005b3d260ac8028465289288a3684622bbeb0052a1a6187b034cd50a998c52738a10616ac47328cf1600790a0042410a1128a1804107ca6811b2821076ef80323146107398c02159500041a1a718739b8810824d0014e1b41094824420e9078c42328f108485082138048430b7c368316f0fd02b832822375e38229d0018094a581e065f08440b841093d488218f0820316b460816888967a9423194b1127036278421daad002b19621071d649666c25f811995800944180113fede90049f4f8595a111090e5eab99d9a5c783fb2510edcc19f0ec38475edbb99ec2258bf6f8477678d81034c02b21c7032c588461011030c10990401164171160411f08c28749010dbcd8fb78000ecc4012b0961a2401131801898cc0ad384ba9ecc0825c000e34c16969800b7c98068c80080c07a6504b4f60c007740ca6b04606d85b0b79802081c008751b086440c86009a95c40ce00422a988229ccc25b70c527c8407ca9022360821ac8c1277c19dc3c4222fcc129ec414bf0422eec022994c2293c4d619c0226e4c813e400944c9f226dc920cc42eb9d0228c0d064c90125a8822880c22734821c409e1c004223600229d002292842ea3582232802fe28e8d0eaa95e2980422810092880022a34d51fe0c0ab1c45d83dc113989c0e7c807321c111cc000d8c80070401bd81800c5245078440ecf14407e4008c5c8a65c458f22cc767449668395a15841f7f6893726816953cc10660c67bc4ceee74400460c1147c000450c77350c073f89f811c87ee2040806cc7bbb88b39f9d702f8530988801100d662e880136041849d000648c11330c12791ccc861411318c1ccc9401ac0411f64411a689c139c8007305811e4801188800ce040153c011cbc180db8011c7c9e3acd80060c810e78d2423d81130cc10cac4664b0ca7b7c46e0684048f11305c8400ef4400e44590be8cd0ce00d0911e162449a22f95c6988fe0012fc412870c22994022d884221b800bb8141213c410da4011b24422a9c022988d71dfcc11750c2a10843d6c04d16fd052a8042204c010fcc9e052446d141069760412f482529400220fc0126d419a2f0c2279ec22c804222f841e47d022674d929b4d92cb4992d78992dd4c52778551bb60928146615d9822d7cc10ed4002e769229f25ade308c0b28c6acb54015e80066614009408a06688074588018e840b84c86039c8648494b2a61811c3002232c82215a5330ce8ec290c010a8818d45c1092c8ba75847a8444121b4811c70021a0023878d1f0d60d674dc1774bacb73a44b7714087e4040a06d491160010a68008b388008980005e800106cc08dfe61c009781ecc78c0b59d0004b4940a4041e96864de70c009945cb44080ce640120b5001e9d8012348114000d0e24411b10010e4c521d100212248114f8960b28811bd8c15ab5c1b4359bb2b046d078c0a72d46669a9ccf004dde60406288002abdc6472861ad00822150ded6cd0123ec0112200116e400127c006ee551d6cd41071ca21dc0cda218432f00c32d7885d3685d1b20012c8e80647009947c000bd4c115b919607c59a1d882dccc02e4cdc22930021d3481e8918228fc5415ed425dd0c52e3c822d7c021b348225d49926dae52d70292dd80230308220b5c00ec8400b71e451e04b8731010910e11ad0db0cdc4c0584146c88401330811c88c1fe07cc0a97808afdacc76744811fd8c11f38821dccc10394c7a5b49274bc012744810eb49c09544bb128cc120cc21f044225c4416614077050c094748c73d866743a93b960137d21002f35c00eeccbac54800658881178c4104c810ab88a62a0910b7cc0090cc144b1522a45801d69000478200744d609d8e882644013600c0d54c0a142054a3e40110cc1107cc0e7b900af05cd930c416686c007049c6fc0867b440a0f865410bac01324c11048260d6c000f1ca1cfac012f4686a5640aaa90801fa4412098d923d8815ce1001330810820452775021aece60db84120b0012ac08d31b8853068450e7d826c2ac21fac4112d04062209b957c9bc818833200fe035c14c32e785916cd422dd802254442272cc21cf0001a00a528c4e527d8421699a92f140325584299fd412260991b9c02259c029981190d64862fc98cab6cdf1700d208949c4d7dc00d1050add1800b04da08b0c06b71802025c11b88c16360814b5540037c2a81ed070dec412000c223300203e5400eec585328cb4a5180080c0108e4c5aa7d806738c008a824262d422704421060c07aa013c16107ee4ce7aff6d7bc4c27bd6c8b056c000770408659809874801148e413a880090e011438c10f34400690e7091801147040037c491518c11134c109040d11a4c11440c003984013248112944005b45c0b7c6a0be99206cc00095887747c00cc3c800cfece8012e0800a208505a8260558007a3e411394801376c69380dc36c94734d98fb3648aa6246a08405e207c115cce421bf89ad54c1b0b88c12324e90c0c4119548e1ff0429dbad9d328c221a601168e0809388662a06064280608e4406116a695c28d56260d29c84122a4b0e83c0173595b1280822f1cca2cf04223a8c11a800231508212d88100ff0125348253f9c22fa002122c89c2c86cc80c410b84400e04416ee0d610440b6b38000690404869066a806605b4c0c49c0694b8200fec1bb6108142a8c2233802a47110e55a8b90bd8907ac860c34c18c5c066350c008e840bd49811fa0c114d000cc08a373e4177ef89fb60c48fffd1f75c64bb2ec07fe0abd8f0ac8ec069cd11b6bc0479840046cc006b640419d1f110cc1c5b1d1465581f9b600ec96400512013e464115a840308180411981b65ac0058840104c811ff0011618810be8800e344509e8c00ec46b590081068855b852c046a2c17325410b18010f74cc493a8f652cc0067cc1ac1ec886e9eb533c800bb8412330c29866dd27b00296b5411db48085bc25e9294228fcf02132010f64700e884128c8811d3842bc99100b6800663d491300ca2038012cba802a98e90d7d0dcef28215f1c22dc8c10818411058140b14d51af80124d4301bd0811fa442eaa9a928b440cf89417725ad2fd04220808222e8c060c9200dd48121052c082441296549085cfe801f1081a87c000fe8407a0ccf7e74400b30810b0cc117b0000d94c0bdb152e144066c3c812154c21f94425a11f58cca80f3848a729c80217c011368210d7cc0c676d0e03cc006e840102401ee8d9bc6c45bcde887ff89630114c8ffdd47af7287213300f72c00089c40476470f43e01149880ac58c0cf1401eba6670890001614c10590c01240800c0c41604d2016a44112dc62e308e81ba40160ed8f0e5080c9d1800c944009f40fc7ccc003200007e8800a3c23e8664006f886ed69000fec488332d2099ca853d4d4acd0cac778cc6a72066ab4476a6446d0448168a1422e44015cc2a129a8422e3c81d2cd0012a05e28a40223c8411bb0c117384220fe94456db44120084213a441e308d01198440e54c009b0a0234c2223a40261a0416ecd8111ac0dd79a82a1800223048211a8d608184e4f6840f3e5000d00c21a581689c4de07721b1218a76f6d59972ec21d987753c4880890406a2f000a90001bb801cc484a0b8804e5bad2fa42c0b07840082992974cc6b651c96af886056cc4170c4c13589609e080ce2081923c2ff440802040c1300a764dd38a135e8b7c60460788c0ac10dc2b0d32810888b000e039daf57e790f3742c009f8c009a4d2066c400434c0c3b82e04bca7f376c97488e3013440087ceb1a548130150110e880f084401fefd20370800c7cdeb021e403888008a00a68e7c01ac8c00c38c1fe0c58c0698840c162064222010ee0400d1093287f40273bc1f9ada24df9adaaaa761178c06758400f506e0584c006a00a5440c00c5002200c8270c9667aa39e20fcc1224841192cc21194801e930225b4811adcc11ed8011bac811b38921a0cae1da8d7251d012024621ad43481839e5e31822df84119d80142c9f4c5b41a0f94c11378570fb87220388106f4840e34816280750f98001cec088894c11424c228500227e9c01744411ae4c0baa14113acc11f44812bea801b1c2d08f4c4f09c4020d08075dccc0e78ee86e5474fe40caef00011b8620bb54009780010dcc0885f800c1001088c7610d21a0d64f05e8f500b7c3c67272409d45ff36886dfcefe8ef420cff084c6745a0722e7d7ff2987816007feed0e02000802d0006936c07504083a41c08014000390001040c13c15411370000264400350400888c91294401564010d34418560ac845d06c066414f4c011a543c126cc0032081b2ad4116acd68ee500091cc12dbd52b4cc073f5b80294701e135ce0e5400093cc117a1407bac87c308484d2d4003d4d1b538c0062c821f44c11e8c55212c650734c122b8c11704810e90001164c00700c11bd0000ebc50842fad224c21240cc213743218c1c143f80125ecc0b318ab93b6c014204127256e12f4800bb080a635c14eeb801828c14c06c11af4402b26684d4a06648487ecf20008006ca2295dde340e13fef88c293d80af1dc1a95e571284002da63c52f4da13484110281f0fd0c0a759881bc8951fecc1a909c21a18a70fb5c1f5f18011c455220602400c4aa36304850b2180547050412185050e183078b82022030a0f1c505c806041478e1c171c40f071e4488a070e74f4584024ca922f456edc58720100000216e830a26388112c5848804042c3c14888141050a0c060c38e0f434e88d071a00082044a45881852e649860d2d2a3c60702143091a1638903801828358860f3274981125898e8538de1899c1e0c1870e1b3a5c40d10203030d14308068f2e402850a4b3db840b28688830b479820c901b163448a7c315c7860418383070b38b818b1e3090f0a1efe3424b060a20308134dec8c2831a242861c207238a2f4a5458b286a8ed429a3444d2046473c5cb820a38998273972a40944a44d9b3482d4204133a545e00a3754bb51a3c4c5871c6890284192a44d99356ee60072d306cf1e418a120944913f14b1e30f4616a18412461869440e40ec98a30e35d668430c31dc700310fdfc60a49241e45043bd07e5b00342390401c4b940f668830d35d06022071a8600238d288eb04f091e8678228a35f62004c541fc6083061168a0a183b01e683223068e920801cf3c1389238924524923064cbab22294c004d3a32b113880cb915ada88803503102000965c72408490527a49840d3220018b81d2a8a203071c70c184fe0492c2a0000e86c84185224ef08c238c286a8001083c98620a2268d0a0020d2c4800021aa4f8c18207649822041c1ea020501e24bdd234d33e30c18940fc10e40d1318608884103cc0410d2c6880402c2e1fc2724b065640a392220c8a6e840b2a182103072c68c103081e8bce01263ef1a185102e00818728d0c0e18326d448a4103fda78a38d35e4a8304337ec60a34439e6704391461479e4114a1e69e4914f28010514481e0185113bee68518e3f00f9c38f410e5c9091052101b89144484c3140451a4c449102bf88820e34acbbc30d362a6c430d36f6d8838d36e48843bb452496f98932d078828d34be40a38d4012b1e3dd3290e84106177290e1fe861e63cc218af99028c3092478f853ac549b8cc84ccf16580a2492402276a39652429b25040810a9aa3ac33469ed324342b3aa926c729380370be89ba5b04d9369a4becbf472530d22c8005a0728b04004066648c2893e94384b030f4ea0a102064050220917769521048722d8203ace81b02023073480b283879e548971402948c2761a8840030d233e682189207230e40818d5f8a2c1359870e169ecda70c2893476f882a80a3c9896718c3600e1af19a648a105eefa0064904a02712310880704c4df05137184e84136fce30f39daf8439007896604125266a1e51453fc370b5bd00215b4a0452af8774056808212fd1a052944410a098a821214f4d7fe2310f6094c00ec118ca815c81831880031e20f734803cd1231073494e10b340bc41c8226879ef1006b39e0c10e5ae0021ee400074810030fd220872848413e3b6ac10c9ad01e121c91042598010da750b924f4800920f0cb123b200213d040061dc0001074d002110ccb58c58add4b22f2912c8d0925336963e1ba24a505bc2d4c3141800a72208513c08d220e4840044e53b69240a9021bb0c0481850160b5000088e69c1061070822c90c0031500c1149ab001116cca2015a0c806baa8010d906549b40b01114e00110440200538208427bea084c358000318404c0f5da0843698100d69f083f30a71be97a5c10947988f128680042cb42049394c520efe90e04334ccc17e82284423f6200714dd210d6b88c217e83507780542458c00c527fc250a4e600214a120c52842f1097752629da118050521c1884f44f014b540852d7a018c63f4cf16bba0852f66b18b5394e29d1134c5291a81cf8ba1f313f9f497fe20a108a2fda17e1cb34322f6e008460808628090438b9e808687f9c10f7368c317e887864138480e8ad8032314c10631d8219b277599eed830845dfae109b61b8213d000042e9aa0083488021182800422d480884f68c30c40408498d5e10b41d41dba7230821c9840031018810b4e50021724c1985ecc95432a2702839cc0054e5883094e73263095a90073b4d2dc104936936c400522d8c1e34cfea3aa4951200221b0c009d0b084199040052110c112325001b328212c2a7800069e7082089ce0043b20ed129630852328610a4885831392c0843528a10a70e0191cd0a0863494210d69e8431decd08842d4410c69788213dae00716d921108330c4babab386deca6f666a70821a14c1073130410929fdc213beb00635acc7876b78831dd61034f07eb34425fd4320ee67878719ed4110cb98bff6e9ce53846283174c1807fd9508402857102ed2ad360f248a4f948216b7e0452f7a610b090b9016b338c52924d83f52a013120252102532ca310127825f1093df1deeb58744fc2161b40045231836b246200c409568c41fee00a13d0042a3e85d031bd833fe0322fc080f7760981a5094304e708211730043128830032934a1093dcc4113bef086f4fa6185446841544230a39e3181096f60037d1601893fc4a13e6080c21188000422e080064868c226339081a550e00410a0d3d9dc4891bbcd0d25772b9c4bea56120e9ca00845c0810e6860da1928010b6f78731140c0130f9400084d1dc211a0b20320e480085878c2137e92842854c13e6eb84f1aec508736c0210a5830442008d1083648210dee6a83201851084638229f7b30841c983085e4ba4b10f3fbc31e0e144c3fb488673e3dd0205c842f35bc410da746c2718f00e9e2b4800537c0c1116780834439e1d46c1830bbe4c08699bda8db482d0392edb7e2fe00f9ab118cb820272cf8085a9198c58a98c31c049188207e970d7360842844718a7372e29ce7449825409c888ca639a32a8e98f82216213f68f30e89203109470ab1440ce25f064bd8272c0e8946f0f861ce71c43a1ff1076163d45f8b90618c7820061af8920d5d6502788920741e2841b6f859c31aece006342421074c38c2ced090a42100e10877f240070c028211ec0a041ef0c00e5c2d862162a1093be8210e54b925347d64262f798946ea2e12bd8ead70a425810e4e3084258456074f68ea9b87a083346841094de84316b000ea2434a10a5878de6f09e1873eccfa0d8d7084700b61885e2f8609f796f71bd280047bbb61117b506e2002510953fe88f40d7370843a4dc109cf5342a48d108472fdcd08157542118bf0f7bf1b118842e8f60b4950a985981e08a3a5813bf31b0427f620dd3f0c82fbe7fb837c4d643f3748ec0fbb67104e1bc1098235e8fc0403050541dca07bfe6b9f1157c52e72318b59f0e2c1bdd8852f0010188ae11804501806101804ca1784e1187ca117189017f46fbf42a1c25281161e8a164401155481603e01e60c68176e01c34e81804e01154881a14281e2206e142841fad4203f4046fa820bc4fe85f8568441a40ff6184110d840100261110221de5e460dec401032a49b7ee5c700619d1ca112162198e4000798c00f8ec004cc8e2990c0023ee3b300a501bea64e38a28de0fea624f4ae70e8c46da8e20008a04cd0706d8c6009b4000eea400bea801008e1100c21f3cc6c0998000bb4a0096a0d0bb2000dfa8010fae0b57ea20acccb10926fc93a411538e1113a61145e61165821154c611446411554e117303114542115540115f48f1752c1156c2115fe47144201805231a1120a007701ff140a82286e167c41a1402111fee5113250152cac14de8f1328a114502115208c177cc1144301123e0f1238e1a1f8e714140c1332c61214ac8276c1162030157241c2264c8066211548b17f12aa16549116945119fd4fff76a1171af01892b1178ac1178aa11804b000d9d116128aff76e11866311772f1c1fc711bf52f157661ff12921ffef9f11d139280b691161212802ecc044f01e658b1142eecc24ce104370c831644e510247ff4c75f14c11144a6df0281d8002111fc000fe2e008a0a90ddc800694e0479420044ac0089e600ab0000dc8e5e998200aa6e009904055c664ee040b8ea6e4cffc2a4c3ca26e10cd6dce1001dea6000c21163cc11362c1102aa1133c61154c01134de1155461143ea1133a011338412c3d412d4d411558c1144c611546412c43819e38211452a12f5f61167f611677e1177e811708f317120a30ff6f190733177e21177681ff7841a17241200daa02213321f52f1724921f7b0102f54f80f0cf1780a1016781144610c34401322d0c81226e0443f332c7111550c1fe14f6093547908042b31ff98f3127531c0bea33473319dd31160190208f01347981019393017da1a01272167961807873372b8ca07ed380f4afc2f8511c2bac164e411c670115fa49f78ccfdf408114dc098236ac03150c9d2e6a1112413e2101124c2e11fc4d2d3b10133a68119ef0d9e44762d4200a4e8d2b9c2068eca545d0c00c7ac90f2ae40966000930a001d48822968803fea008f66a6dc0044ee8280da9c26f3a740d43d46ffa264451020f63412d3bc11026811256412c57811355611538e12d379115ce52155c41156c132c39e1f338a11342412d1fe114fa52150aaa1223731b1d73300313307d810109931886a11e73511524121e7de117eefef1188e011cffef1eeb110219b232f58f1f232e162d8c16186a14ac319e1861df4c0115041300fb273a01b001bb144d6133ff04c816beb17f9691ff128a21b9912027d320fd4f32a79320ff31393f93206dc1c17ae1162e7580fc8780f212c4f6c5dfdccf14d2941bc79316a0f31b0daa3bfb67045351143a92144db02333414114ecfd44213d2b2a127d9113e6f31130813f7d757df2c9df288ef710e4430081105204101a449b00a1e1e020b942640d4e4d096a808be6e3030e8050cec625e0a425aa82000a405c4df44459c243fba66d2020024e945cd3952afae0103a211686344663d4143ce1573b6115d6725f3ba11444512c3b6148e9721369d415fe44b1465b911553e117feb214ce722c21b34b0b733077a14777e115963115007617860118582115a5b33027b32fffaf3719931a3f419f04ec0fd0c009c40085fcc5191b21a2428111821412e4692f178413c23318058ee5ee8b123e418260b39f261350310c35b9334f0dd5c264911bf7b41816303297714ae55119a9561826731901ca312df0c2206e3b5d13c30008154aa115aff3804690a2e48914605582de16e2962c635cf523f91340004486e20d3f46c69cd669d83a4810ecc00e2e640da4a00eb18020ca030448e00968600666440666a0f0d2400da06d0fbcac089cc06a9a00084ca00fd3c00a88200420e03028c22a5d820130202316c0964040fe8cd8900dc775444bc700088d8f320225e2150f0de17709e1770ba10f9a200980c0ef04850800510ae0c00d82172cf935463bc1113c614767f1157221155ea1641192300713007f8162031315a1333273411506d21e0792172a5119673117e1174b0bd3166cf39e688115d0b62f493117c7114ee5a983dac00ee0c70f04662f3b281410d814ece914b47417547137dd7116098a6d2df018433017205082ddb1a0fc51328fd30185c118ee51840150184a93348f53c21e4ca158d15403f53ac3f3642313344911ff38d8ff44a1144c61245fa87ee2e0e0e6e07c1e611044449b602f10d880ccd0a0e1d8c00c1a2e0d9240b73005776860dc5a602886420702fea3036ea0ec706004c4ce03b41877a405033ac02c40e0023ec0311e83012c004a3802501c600346a0033ac00330820c07c76eceb544d3a66d0e2d44c3f044fdb00f0ca1133461123ce11558a115f8d5110e79153c81132681453b8110e4b0562a792c55e1155e812e3919813b011238594721f32f73e12fbb9418a21461555115efcf140ab34bbf97344bf33151619605f31472c115c671800a881c75f8c2c611816b531470161402a10dd000103a61659b8d1180d51110981246812e1fc1a462cfdffe29300df3376318340f12e68075588d6f6074586b8b811d95b162b954014fb801dd571953781b3fb3a02c0cff6e213a17753c490180c6911a412c9ffe10a6604821127b9668fd456d67e166db4009c4001008f76a5c40713a20054e600470000848c02066657ef6c347e0000966e00128544eda82023e40039c443a3460039240492aa003702007ca400c5c60032a80035aa0045060913240044e000a80c0074cc00554a00454e00474800848a03442e25c4fd44a50945c51c2aae748aa0f412bed354659c12c57a1155741143421f47e1713d452107e15134241140636ac3d61133151154441a4c6d2141ec11430c11152211406b33481e13033b64bbbf4a14ca1a0e2297c4f56b167f114782114c7744f5b938163d18153a17f5801c3cea94803a10e40468484832e2b81132e31034761e24281975121141ec1fe676f36a3460a6130a883446660f84715d5732347e1112a2182f68f63637151fd914fef51018f411816907f11ca043be88230e1134ca11434523b135215189822f16f0361eec26c4161ee60bc5ac83928814808c1c8c003098ea805aa200e94ab0c8872065c00032ae00482800320024a64c22218e2552ca0037ae70448e0023a80963a600436cd7438c0075460030065014e80c1a1c4223040048a00d472c0f9da200e9e208c6820041462effa8a0d0bad70a41a444fd42a4b1c90c1355ec1f22dc1d2926314130ca12d53c12bd5f2903f412c0dc190fba00f0ae12b3bc139d4cf2f5359227f41813f8163717614504147c7721cf14f87f952a14e61172efef1177474308be1145861173a212107f017f82b14de9930fd718334b015410113660e42d2400a1cce11fc2062ece7242fc8f702819ede0f81378c82604e54132a3067a1171eb8211d58220b521c21739e51167c131202d5794ae191ff267d31a713d1731149cf3433c7b31466a114022612474a10fc855725e6a560560ac20b0f9860066e800572c0095cea086ae0099ae0085c8409bec0097882098ca0f9ba4b0ab0433e22e7085aa031c282715a77012c20048c20094a00302a402b686003c48222fec82b0083053c40bee59bd9b510015ee54cf6b8d0a85a6e3ab4d058624dd4b06da6baddd3505c97000e0c212c25795f67945fd5721530410ba0000afea24010f210134ca113dec0d6faa0080ca11538c1109640105e6115a0600df4a9e015b8141c212e51e12d93fc121338156ca11458c111464114a9991154c19e1028f77861b5bd1c14010621e3a0104c01e20435151f8a1ae992ae1f2114da09214d11a21a2114363833f3ef811f5d4f23133a27aca0a053807e41c234b831dfb1a04856823bf838af164bf7744f81c1840170529511a0d6f73895111850763adfb701a3d4165021879bf47e4df09f32719f28c17e9c63101824f904780d7840ddd6400c5ac004e4ca8e37c0048ee0c7c4a0073ec0025ca00896e0074000042e6203842505b80e3e72f204880009c0002c7a83064ea0023020035a80f22d80fe046ca9223e634ab8240dc3d024e2064d5c420d3be234dc46aaaff25b51220e673c92637414d6f277ad092886c01004610f420f0e92a0101c810f4e6006f8400b68446a0821e3e3d21138b11266bc417890c9d8722fdfcbf92f32c8658f2e992c0ad88013dc40cbc8c70904e11438410e18e1d8e8bf13746009a88f0904811252beb501a2d1a350ac18090c040ad3a35da21c515a342a942a509c4271fa246ad4ac54a240994a550a552853b366890a85aa64ca53a850993a35cb16af5dbb78f5f2e52bd72955a74e912a15ca23ad92bb6ee20486d317afa44c95e2b4491367af5db3a8ee72faf4d6ac96a24e823a45cb142d52a21e952af5e8d3275089e4fe00fa3367cea2478c12313aab2aefa73f4f9c947172e44b9b408bfc04e18124c70e1c334a9c20714203850611162c886081438819271ca3409141448915243470c0a183040507962d2338500041eb0bac193070609b010206960f2c38007c81ecd708641f780d1b780102c98bbf2eb01cba74e0d41140efa365d2a43e8656a15ad5297c78438508b18193b7952b58bf58790ac409ce122345521079f386908814764cb132c589299dac0184112044d1061a82fc51851b6c8860881c82b091441a6cd010c511123661c410349c40c40e6880d0c41a4d3cf1852075fce0c6641b38e2c81a7b38f247217320b1471a8cf8b1461b6c3ca1c30c3430410316204cfe81061b8f40f24728a5a4120a2681ecf147208224e2c71e8f04920825a2b4440b2d3d6d05d32ca4d842149a54f5321555b7f8a2a64dbcc4b9cb2f33cd32d552beb0b9d431c01cb3e79ebd0083942f48d9044c2f36d9a2664c25313ae75030d1340b2da1a855ca276285120a29a690f508271991f209238c04f2c71e6eb85186144aac9146136aa8d106206b3c61040b1ec8d00208467c71c71a821802c81e6f3cd1461d5f38d1c71e6a3401441586ecf1c413397450c105143ce040050e7cfbed6dbc2df0006fbbe1769c65b709d71b71b151770073c7c10b9bbbca15405d74041c124b27e079b24a2aadacb24a775898e086219cac8289219d98f28a2a95fe7452081c7e1062880a1ae8c0010d24ac31491d4590d0c72a8518928620409090181b8448a1431372e43804124f1c01c21051283103147b1c7c810e4c28510209230cd1810311ecb0c31b289050dc107bd43184b0800012c50327b8d082148da0a106233a9c0085113244e1862068a32147288f34228a2986fc616a288370920a28668662cb54b7ec728b2d34a1f94b4db9e432f82934b149132a34456593a033e5e20ba084166ae831c56cceb930be1483792ebf08becb5829295a524cbc3c5ad229a67435d229a93ce22549b6d082ca28a050f249a76351d409248ab471c41b7b04d208248c50f2c820556619881c7f38e2071b6808c1041034d0904308fed85aa0c1051754b0ab061574e041051450303e05158c303eb6db967b9bf8147470030d3ab4d0020d2d38e13f16740003e7fb96ba78332e06f84681e9d20d727e731ce8dccb3ad021c01262d1872564a1137de80327aa70023884073f7d2084bf54b18abc4804167590821188a0826365300333e860112ca083243481435800820e32500125d0c0054940030eb2b0841c3c41093a38020e3e74020f78000947c0c2104e600110e4c0434708419144208321c8e6370ca0c00cd070042224810539585f0910408314e0c00349380104d86581211c2c0369784223da300441a802134478821c06c1883594ea118fa0c5284c01c953744211a11805a900f18951fe0cc44ca590c92e6492945df4c42ba2e0042846418933f94218c530c6e62ab73963180350816aca9f126594ca294570aa5b655156b7a7a5cc0427949a052f4ef1884424e20e7368831ce6529740d025541419854b3e410a4e24620e826084f2e4e08636b4610d47d8810ea250073460c10d6b90431a7000020f60c0031d18c10dfa97863644010dec74a61c0a11883bc801557f58431242e0010d40c05cf342ce186533ae7325b038c2194ebd62832f7cd5ab38b0c1977308501c2360010a5238c41ed660c28679c2138ec8201a3ac18942686212ab784527d820374174c210aee8840938d0020e28a11358c8421f52630423c001074d48020e90a083218cfe8008a829010874b0831ce4a00d4d9d02083230441080800834c041093c40010b74e0042748c21c4ec01c040440820b48c06b1e0081e11460011df8000728c0510822600316b0000d2c2002d814810d9310c30e9e70873610210348080523a6f7895364024fb6e0042496428a390853707f5004297ec90b9b28ae2946b909528a91949bd42926a760542e6671b863684e19b22c869f0425a85fb089509ebb89a27a81bb4ff5042ca01085eb3ed1884400a20e8d6804281ca108ba75e411a0e05477b329dd99b9816e95300421dc1005a61961074a50c20e68b00336ccc10d6240c20e8eb0064360425495fcc423c8438940bc010d8999023b0131083bf8e1fe647e1004c6aa24883688810622e800185ba001045aa0a21c3d0e729a132f0268f439115c80bc3a4c00e6144002072881053ca085299c000d6f90c3213066883a14550a5858421ae45384f014a20f83788521aa5004424cc103452a42134a5004673ae2100ea0c00d3c60840e34c004753882141e50ae0d504d0717b0c0642a50810cb0b5044f80c30c7488031cb4e004291001022a00e6d51c0037ea4a0e7540ca1a0f03a7384064406c16a081061400032578800c4470be1958a0022608452e0c2186de31e22abfa04b2354e12c4eece2b4b380444ac4b4119f54457048b98aa13cb794cd0d8a5049d1d3e680218c44adb2b894aa094e72cd2645a5f6b6feab1b8ae0105715a580a526684a9d4f5c7712539442146bf9d44838d5154e306249a6d4362748c1c8477402106858031ec4d08329f0c00319b8003d6990041ea0210d34b8013c4fa00329e041104ee88b1ba650060263a10c7e90831dd650ee232081c66bf8c2177810042408517f327081b7cc4551e1d0cb39839e9747e7951c7cc90b052f566a1d0cc187432c81064bd0c106340005ee14a10555c0c213d8401e4c9814927c28821a2ed60957f8e1c78548431ca63c041510e101eea3c11ad860841490400758808311e680051a544003298040d01c731ab5426003197001041c900134b03507510881030afb000c8c7139217f4d00f64c1cd82c408222fe664e6fb6dc04df14e0697bc7822926cb04469ce00fa53005208af8862530c116a458c42c8a216a63f8426f9c18456d8fa21463562a159000852d72c10b5cbf9673aedc9c308e210c5632a550c53d6eb3658b389bc47e17b9bf1d9a58027c52349714a89876a7c8422abad821108a50c4ee0201083688e10e80c043381b61aa4e008f13305a0420e8dd8319b840072aa0411adc9006343c410a6d50c31ad690852888610d524841129055883decc10f4808c10d74a004ddc36e34f0044cf01741d002ded3012640031a40025540041d3069e2d31b10042fadd1511c472fefa2510410000e50058480054c8005dcf1066dc52c1552754b507559500755d004fe3ef6047ce0094b806f3d960527b000273002278003448005456301537704ff660126700219d08337100243600434500775260345400345a3014a20087c80031a40044e10054f5856ea831b0f400411c0001b40020d202f224677f22241d0810029161b29661dbee12d1ea51b01e08615100568c7000f20027230046e900a3280063fc0008d100a683008bb6059bb600aa8500c90400a33610bc0e07ab8065bc0700ba7d01160d1378ad214b0853a95f2088a804d31710bbcb039c4204bc2d00bb7b311c6a413946017d8d413d9e4299f541280d008a4d00876f007ca632a3952066ca00865c0044c90033a200333900334d004786007d448088480078070fe0776400877e0044ad06fdf580685102a9d604d9e4009d5550995300a9c60077fa10633a3064c20058f50099e30080685041e52055fb08c44500447a00340d00120400352402b5180011df08468c51a1dd0022e40023cd001605604357001dcf22dbe012f79c7512336682aa0056db6534b400236e704abc01d37b50486800553800227d0044ea80240000557d4011a70001780021e10244fb00144a0055150021910652750013210022270224f900216860122e07458a01868c64427006f6c86020740017f585815705621400459b60351800327e0942570042a400121f68627961c71150077f71b01d0001db000166000c711001d106229362fb8c10078fe366f4d000114b0010f4003282018a0d0067130129ce006b3505b555115af450cc5e05abef0494b614c48817ac6441533d1120c212a82630bfea58da2f00794900a5b810ab6f029a49708ac8026c2833b8a331494f90980c008b41012b7b515985026a7500acb253ba8400a63f212fe411615510981b06d8fb0088dc0099940187e800641205645401f53600458253459b2079f900999200701f70434400421b090ded200ab210241a00416225f605306555005cb080448a91bdb72980c700119560009201c164040bc012f19f51a22061b7d271dd3a10227f0002690044b70633350071954022e600146a0021080025010054ea0033fa4034590038da022fe75d0023a4004273004696004520007a9710220e00493a00348102238905f86d03d3ad0064ed0046f30052270011c00021f30036e60044c5005dbd201499004430083193067553004fde30445700124e00217d0015d880624e0016a258181051cb6711c20e551c201012e30028af6a015141d1d6568b081010e50025de7010b800104d000b6e1066f900483200894d04c80b00bc2f00bb7f00b9cc90bc7106c84124baf874bc7955a450127c654798d500b7f130a94c01695801296e05f9d400a6c8007a6220a8c300876c14899120abd804c4d9008900029b6000a8c700abc900ac3ba9cd0460ac7da15a00816cab99ca61014d8240acb297c96e40903d1fe5de1c109da76358ca008d8176ed8c7ad72800451900675102c46d00344300346b00653f00458400880e008a0d0087340ae6ae004f6c5011f70033980034fe002a8c10152d7014dd006494001eac21a81f52e77c7401de750076001e6e4721f200545e01849008e6f50077ee0067d30044fd0852150052a500445209549905044d0095a20022ee001453004dad20152400426d00225f0530b801b08e0015a450104a806523067e0633e1d900124300424504516b00122a00654b0001b500662240227f0010e40026fe02051a0011ec05e7ee00747803e1dc03e3c8b66acd19686861c0560025d59000a9451f982017b671dc5f12e0cf0014973b70b700107fef0001780036560591d8006a65027a1020c936a0c98284baec44aac177bb04515ba699cb4b00789505a1ef27073b0074870024af00632f30772d00414104565d6048200097b40045f502d6060076f76b8dc450b77500a62920ab9500ad24309907011c4b86d94c029d2661171032a79016ea6f207696307cbe70774b32589807dc25317de4409a6c23c8bc0089890bd54f20789b00772d00676b0078a804878207f52f0043df20453200772205072702b25f05851400239e00458c006f15b0346402147c00337f0011f80011450c04470044940030ec00143b0011ed751b0e10001e0b33a60041ee0065a40021730037000074510424ba0022d3002191002fe92b7040e209674360884500775d0931a50025310225330554b50020c804347600828109520ac3108f01917b0b75b3b0517108360a50221bb060f50012200882620022f33360c50a827800433c0036a20085fd0083946446b70a237b02dba812d14e55050ec1c1df61cf85265cce1007bc54071ab40b7f1501585011700029fc00b4524074e000a48010c4b916bbda54bb0155ba56329ce53ba7fe0041f20039c50094a700347a00417fb048610047bdb2d25e03d4cd701d802011fb006832007398002ff1a0883e00703612a97c53bdb060a4ce20673903c89f0089fe27924010a8f207ccb49afdbd609d9db096a010a8ae00876e14d90608bcba34c9fa0fe08bfcb4894e059e2c67dd9ab08b6320762400220c003496004c3b2064a40041eba2d4e9b433b40a71d303e3dd00244300766a0031810b81f200245500665f00565700343c00416870110004467773ebc7176ee521c4088954ec0047d0007fc0bd159270325540526e00125f0851b40c51da3b53480d13af0064e200569300453c0064500561a40034530032020023870047e50055e4602f036034d3036b4f10029f0079d20083af0550fe0411bd07645490122000919520640900352c00116f087cf881b3f5007b7f2056290af0a7c045c93015ac00f612dd6fca00516702e80359773e9a0c331401e385719a840c291b005100002f0b62760086e500249fe7004904012373113be3515b3e00b99f939c5e0398272138f20289c5050ba0c241ec00134b41ab711771ab0017de00ffca00e64f704323002d148036ce0064ac0023f2803cc9809616d0d4a307d6d80040395063cb0034950056dc04eed2b086ea108def4091591bd8fd015c70a149ce236a6225d89b00881c0dc80c02572302bf0010a3005099900098bb00890406dc04b176ef0087f2008a83c50d03d2bd1fb0784a008ce62258150707bd04c8fa9605fc0b571900341e0832d9003093802348004fbb97517b094dd1293ec2602997102499aa485f58353000547700825386427100221c0044eb0677b26036e26055000424ca5031e800590801f405001fe1bc072f285317e000731992046400244506615a0a09621031cf0aea80b026556ca34802d18b0901d40023d000106da0089d9006737984fd5025f0009ec6d076d1070e384032e000861fd0a58900433004f03fa00a6c00ffd400513b0d9b06000bc51012de00006400c61bd040360a0e1820060cd0fb0a009756e052860211670027bb008f2c00ffbd00ffac00ffeb00ffa50a99cf939a5100f5f6e0bc510d6c6200abcf00833b0066ed30f5fbe042e700451300743503d8510d6abf00382ae0f00196734600657f3072a5b9643a304202ee8f6b006c910d6bd792a7600086e90089b2d0efc700a89d0dbb4030a9f4009c54eafd2a5087310bd77f0078070fe700747da8420ec905009b423108da0085cb26da1509c97f209b62c07baec4d8c104eda180830527d6970357e30088310053960074cd006af9e01697586cbe804682006555002a3cc3f4dd00393d6a4d8f200be717619906115cc0101b0015000010c183e1d50021000013a3009ad00050ea0022ee000c5c11a41f60abb400ccd800516c0632edb727db0032d4009d640084b50014050088540560e5da3653005329001e843c340300444e03e2b80042e40031b401c0f50024d7002335061232002bab100eb720108d0950870026e9004ce14077bb00135900681f004ca8e5e5aa50447508469a0044ff0076850062f2e0303440120c002eb0366b4514614fe10011470761020e30880760d00f810600167d70096e1028d31078e702981f029811007900009a78038b9b008a7c0268052a99420079098cf7e80034a10041da0b76bc00719100572b004484f04f94302622b066a840119b0c9cb722b4f20063c2005543405458406b23207ce0d7dcaaccc5e820ff8c00b8ab024a2a00a2f910a60310ba17012b8b816a0500980507082000873602a8c3408e234076960bedf9d08c238afca6707daf40777d0cacd14bf6ee1dc8290ed8a909eb25225e17b07d98d0973e08f692007f295066000104e8ee4203283c8131a399e30c9a1430d9b1610163ca040e14207192a7e6c28d080008d25451014e030c54d96141d8c64fed951c4040713298870e870820202040b166c98712283882133b070d0e1c4d01b2810182098e2b3c3932a271e60d0106489830b2e3e882851a44f9a252a981882a3a6c10613142616588093c2922d71a948c8b0a58e16439e966c3861614107080e2ce4909183c69a47901eed5205a8532f56a800bd9922a6511a25476e24e12145c9071720283c6030bac38d94532f8c6670e041850c86264d9262a183031d323aecc8306204963d6cf0902a43c9d6a94f8cecdc91138851a953b34e49c902290d2c6ccba61d2270089b2c6efa220469d268ce8e4048fc049a8326cda046893e9182a44811a060f7faed13e70fd87c5168e9c5965950896e165a0c34e594fe536831a514501e092514514c218514531244e51350401965c250461905150b3f4425944f58c106b947387984124a30e1a4124618718491401249649044e6f8a33e4504d9438e3dfef82310482071a410481a29440e34d890430e410091c38f3902012387320a1184860e3a10018513723841040c484ba0239cf82a2284052870e0001482a880010730b8e0810518b860092c2c0881060b20780081074a502102074230e28412e030a413430ec1628929fa38010735a050430d270a3102010a80a8030e1432a0c10719fa90a2040b6410c102394ba0218b219ea8a904378c48e1892c2ab860860a1280b5809c1e6882917df4e1839f7ef899e4157ef8c9a2fe058a48a360023804b9c295687d1105154648e1441037f4a99611392a79820d41e460e3134ea868a6da3704c9802a0f4090a2da67aed0859c2b12604027070cd0a2da6634a936990b9e30e403203418265a56e0e0c79a27fe208406468a28421146da60448d2344f86309004ae1e7877bf981e58a6a3b298d06310291e1046cf8f1a79652c8e125915372412e945ea2e587175a94c18616520c24e5134a88a9d61851f6e1679f1345098594c4e8f1591467aaa54514061b3c5b5d7e8cc9a48927be6823903fdeb8d71e3ada004411475ca444114e2849ac91451819e40f40f66ee491c513a9a4454a40f9e4c5501a09048d36f6b0630d267a58430df7d2c0fe43108fff90238d36feb0438eb91d31c40e3cd600418321907829873798283508143ac069a90356c86285000c4800881238e8eb00065edba008084810c1092b88407853c01ed080863d0e29018103eac822038a2c008b0434968060040a3850c28807324001810c6428e30d0c6490028bf9336082932a68a0010e98c30f18c08321d0e00319f08116b400052820020526e08319e2e08301b4458306f0011ff650883d64220e65c84115dce08745302117a54004263a610422d4817b6940831fac80822a58c10709a00003f0a4842f6cc0075630831544c0a7a514c0011598000a2620812258010d5340810e1a00010fa86111a150073f9ea18135b8e11176fef8841b9480860828010801d00216087080040460000390c01c0720c70128c088111804104ed0084e7ce2136a88432244218a4594410d9420452f80e10b5bd8c217d299c52d4e810a56f06217bd0806817a710c5ef0e216bb28502948310b525802121c7a112518918840248e119c680420dc30874f988244a8f0042300d1084300c20e6e48c31c3e3787452ce20f837884e100c1883fec61119090518d00b186402c22107e10431de4f0852738010d2d20811a8404883ba4210a7ec003167050062520010a7168030f9230073e14ce10978b42143af6850c6c000272a20013aa6002388ae00434f8420d64108005308f032b884003127080023000051648fec2131040000a286109167080037670021d78400450d800fd90c0be05a8800832c180514a7082193c81041ab0c0063870800a54c4010cb8010722301122b06109236880110851083b3cc10f4d3801139e000111348158853a58462dd09a0a20f10018055f0964a5031fa0010eeb79431a4c60813bac21084760831dd8d0863e90a00d25e8c3ac8052840390400708f0210332900627d080588c3a4b44ffe200f01d000124e080444612d403d0800620d0c10942b001364042091ce883289c0082071ce08d912d406b095000d54a76ac0530806c6183030804140538cbc009d4008965de619f7ff8db20dc000852687240b3f8452f7ee10b4eeea245b49845fe287de10b5e9c82140c32457547b90b5e607716b6001b2328f1094850c2459c40052a46910a5630a213a3f89b1ca4403af8b4a70a7f704493a06907402ce21132ead07dfc60073bec610d6bf8832208c91e3f6049107650c3148aa003128400084860021a9010820ed0000727e0000bc4a0061d40c00250a8428be790894cfca1096b18d21bbec084131ca0010038400002d08036bce25124c8011bb050040f5480062480c312387001150894028011810838508007f8c1105580020738a0812618a20f25d89e082ed05ba52a0002479082092452650b1c010b3220c21aaaf0be353c41063ac00112ec4c8288ac390553b0800726c1872188400171c2536afe93f597296cc001b8e5801c8890e40b24a10d4dd8c01e84c4092344811311200110022191053cc105023dd8521c20820e3060042468400522aada37c29601c8d2c947714200c2c609031aacc01569800614d87aace06b2d46612bdb65e704270b70000174c200c09c601023a0811ddad0821310c109699825791981091c852210be78e42e6e518a5d1c8318bd48052a40710a4a40a241457bee7579d10b5ed84293bbb0052a4411495b5022118f48448039918a542c0815a5582f284c41afbe8182138e68048e06b11e4604e90d7280e61f0c81237911690f6e884334a79989c404a2108018d21efaf6063b10a20d4a48d3027c000526b0a1e58538d23845fe50041f94611168384219c0f085328080031938800122a0001408a0013e960004cea25028a0a001723804107e50021d3c6a224c3855157430049f9880081da060270e31854260217e346802ac3b50011108228c6e60422854a1050ba8800da8789d1468d0873a90742a4640410020b0072c9c200520f0c00834c00411c061063dac80071c000117f02002b039d8031ee0000a6800031d20021ade80833ae0e109a1b00305e4d0080b54c1103ff02c642f20d9a142a003a4d1494461bb80024060d9183dc0ad0900ec0504c0d9046000125e3b561410218e1e3059002a80d1efbbb600d79f2d6c610bbe053480b5d876c00800ff064ee4200ab9d8c51fa2b0fe0334708313280455f0854d62056200865d70b75900858ecb905d408505c42e49ba2e5f38865db82e54b2055aa0055020055ab0855ca0ae5918af5920b8f1da8554b82454a0855f18854ee8044b68af5000854ef88446d883407084449812cd718e574a8473bb263440033978913ff08c37f0031a5b032c508336280446209d2941831a40292010822368022b4803384083275cb921680234688223c0300d38823ed8833888833938021af0890d40810d50342cd08224c8823aa88335d02c1f383211b0b505c000072882135800114803141001c552a9a6800023d8001af0832a20843ac8010b4000c832a92648034d9982c73b8428080149690229e8800cfe501e1220011928049db28021280426a00125488323a01dd2308123b03d0b68800c088208b08019e00007d000158b9e13e8002718a91438c3ce3a0142f83f19408219c80113f0012548001598820048009c48000b208d4df4a15f0b808cd209f46b2d7574b6d61a09f423001f8b470088477a8c470280801a688013300206d0802218959ce8314db4358a68807094011e6801d16881e4d1813a100448188662f085e732066530066328068d548666508668b8c88c2c068c34865e10855f008679030660388550381155a02e5bb80554101c4c7884e86010fa02043660b941109c4768a64fa890898b9c51f8042221243f708441708e66ea1b4cc0046d2a84fe2a68032cc8010f688229600226c8023670822740031af303411012477891661a8436500325f8c73a781f1d18010be0000f308125e8309770822460023ef8820a282913208c2668828858000348a0abab3a125081030002148083127080be2800883a9805a0012328020e780012e0030e28149890022370838d3a014d5881edc1010dd08135d001321b8236888004588013700235b0820cd080a1d2800cf0800e182b06b000d56aad0078233e912c0648021550a20c00ce07b8000e908124d08126c80013d88313488211d0813f20021d50011d20023838813740000888034358013d41032748ad0cd0890bc0896673acd6688db18aa8effba824924c78f4feb191f0b1fd1cce7814800010d079a44778240001385005f54fd73a80d3a4809df98010e00a0f28016e2bc23f600453a8c05ba08561b0c05b10054eb01053108552b8c08964376300865e1805502004243185f0c22e60109c152c055150051c3da4668a26463811e7a084533085471885a9a110b0e10411a50451208540e0844e6804189990668a10c379844ea004baf98338908323b103e5b0033f700339001d2869823200b036580325f8011a28010fc0812798091a2082b03bbd0c18022d8803298097692a0424210462bab132300431f8023450822110d000700013c0022c3001c5ea03432084a180800de83a0b28800888003c019f0d00020e58022dfe803c4a1d0a2c10815d83bd13308126a883379800cd638b148000b75800607b2dc3e2002768810a083602e0802018ad43c989b6d8802f28011c70833558810a6083221081f7c1012378821020c3ce42011468820fd0012888b216d8811270021d581337c082368b80e19cadebf39d8832c7d842001fcba8e0944c7b1480f5f3b104bdbeeb53c79150c7064596ea8b2c726c35c2b2880b983d0cf8808b600224280334d82741e8494ef0849fa4af4e304bb4f10546f8048b2c866310866200065e40c95e38855e20068d84a482030566658345e0844c3805037c0440484b1afb84991d2f5e9805486084662ad20e011152a804dd2b833918d15318054510d2fe52600448a09b3d6883221882321004462884c2f9594e08854a08842b01213b980337788340108445589c7c532fc619263f288418514a664d033548832a88833770821948022c78033418813e11012c68022448a04189823280d490b08225e88a2958813b94d422208126e08312280117280209a800298800293801a5c0b25dfb4d14d8012330020bd00149e41f08280226700213b0b607880023980229d83c242081b0c2556411015a7b3f785cbf204003112080389244dccc800fa800154801dc02012528032468823b80031598011d600442989f5d930027308204c8800ca8460d20cc0010010830c70fd8cf66f3310c6000f60dded77a2d8035c7e0b5fedf9180bfb6c08a3b212c3ca900dd040117f0802750023b50c1b365021e500337d0810e18811b18012248481db80117d88139a8033f6884417004aaa11c5038af5408a55ef08514f50562f0b75e00385620b80cb4c049a2855d98480261b712de855ce8850efc8504196160f8855960055b18854a88ab2950831ff9400631d150b090b4313c5200910539851036affea20453081118a98435300445b80341088428e03034d80324a03b2b28022148023130832730822680424210844278048de3043b68023178022ce04322308450e00437308444d280501d0245ad0343a8832f18022b70020000000198e49c783b1218b1c775833a381313008206308137fe6829077880aca281c98c80d70a8cfa4b008ac089926a8b0bd880e689a94ee883483b000e48834948028e483fe9cba815188207c022bf90be5ecbdf60430058eb012910017af98a25a03ec9c2d500009f3bb9be1488801e5bbf5cc335fbb535d81a4e7bfd4f7cd53eec7bad9ce0dfd2b80006f00012b0d011b80007488237d0011d608342108541b00354900301db05188c522af1833f50021cc88124400210b8011a60022560822860831df41b48e084aefd9a54e0c01344c10cd4a4ea229059189753a2c0893b055b4885130cb812dca428861aa6ed04a0f50327a0a6c4581053e804394884b5fd9b46f09a0ca937548862199411a3550271da833de003fe40f0833468823dc004575a044c80049adb8347e8af4160843df0034f930300331d3f6803ab5283392092f6f88234788236680327c892451884bdf90295a2543b9082e9150326e83b5ad900819ac30cb8a8cc8a800ec00458988412808237d88213d002e8c1a8f6d93a2c72009f728d0350800da08006d0b15eacd7747cbf92522d04709f7044001588021148821338bfc98200b618aaace2471c98021538290fa0361a400164a90016580322a84a0a682d0ec081d6b8b591c03ee194ac37d23ec95c3fc9dc66fb658beb6350d8ba3eacc08add24010af000eda680273023ceb35b3930841c40021af283b85a8390cbe2541805ac25855458615472c09f0cfe85a5bc83cd39a33a080429b5833f78918d8b9c05b18512beae151ef01386e15ed8850e1c610eec2e54220546686253fa0453eadaf96826a19c050a410525b505517884ac8e9a5480114ae88496acb70bd1250669c1a5fd0413778443d0044de8032fd15e1ab383993b1221098e3f2804457884686a382f65844c701146a8841b21048f710423590f296c041aa904579203457d82857082c4c28126700222482008400136308215f8014635800698323e28d53e2014813a813e10042c9881559d9513f00144690d152bdf3e7147632d802e67bf89688bb1e2553848832cc8446a23a92728822b7200389c811dd0818a828031d481cc50312798820c403411fef02324380156de81ca03ed8f3a50633400e6a6dfd772807c7d2dff8ceeeb7b80fd3c0056a7880a30681ec0dccbb5e01198028356831c50d45a9483707b033748826e69834748054ef8034e08c1400a8559b0405b7004a4a18f6722852cfd847d2a52960c0518311154908ee8584081b3c04d9ad17f4305a8f66946da057c6b844f40054b68d255bac950b0630ca1e2f60a6a1269495628da3c530470af03374003d0f98352102446885998c384267da5b2941060ea848de304a0fdc946e8b84400d44520999f95918c15425f4aeb1dd0ac19a081279082a62382cdaa82372804470804dede4725980222f8c72930453c88823abf923bc882f8a3001cd802fe09200007201303d0441438042d7800bea6b5d5626e7374bf039d578c025070943f1d538000b8899c80ad08d82103b8be15508b0dd0010e6000615994624c4deaa0020e28845598023898042c8083dac86c1dc3819b9808f84c80a3fa28715622060d5ed51ace370acee8164e78dcd7e8eec624b3800b40821d38f91cc8811bc0011ca83dbce49c24688236f0db2da7123b40124ab8034818f147c8a509f90447fa05d98f0c7bb304282d714b2005237daf5bc8e80504af12ec40e9e03f82e3c00459c0124c69523277734f851054c1132cc15b9885545005ed3238163710edd2fdb4c9621751043155031d6c04a876844ed03817078510a117f5d25e9328fe84aef51b4a000442b2bdb345b0816e8339c81c1d6f0eb09d128090d3864d9434668a78f0c08143850c24a0b41164088b060a164a1ce980c2099a3527501829626449080e2760a16cf60c9a356bd0a6c18cd9b225cc97d3a8c5c4392d5a4c6dd3aec1bc26745bb66cd3b6553bba8d68d16cd58a5e73da749ab66a4f894ebbcab4a954a7569f5a2d4acd29b5af45ab95cd160dec53a966db6e4b77966d5bab5b9d120d3baeebd7b2d5e47add5b94e838c166b97ab5eaf76ad3af56cb396e0ab96eb5718e2f978d66adec62ce68ab69ae662d1ab5966b15838ea659356bc59a47bf568d991a35d2a53fd3064d3bf7dac59f15731e3d1a34ecd137550ba7cdfafe36dae159d74ecbc67937dab161bd517b95f2d9339930ad7d9f367366789adf751a8d0954285568d95e469d6a34bd516d51975edb76ed69f4a5fe89fad7d4566dcd7556635cdd252054da64b354537b3135a0547935959b53e5585699537b59964d3a859583d738725583e15ee978e3215295b1988d602e86655538d940b6d45e8ed13697677e25e6d835d4ec075c6ed551a79c35cdacc6996db581260d5ad2f8450d94d54029656e577ad61b5a3f0ed99b976841475d5fca8169cd57da28175b73438e895636de5c568d37da25238b4adce1d99d9ed370175377e281275e4cd3d8a40d4f30d9e7135045fd84df7cfe45975435db448717850e36d820a644fed1e36058963eb55788000ef61fa634fee762511cc6e5df885dc9155739211a06593a90cdfad836857918a2541fcefa613ae9ec2a2b86909de84d39c01635ab8be520358e374891484d86654d0b276ae5c0498db6db8423e74d56a9c659b7b88186ee6de50e99d974d5fcc8eebb4212f995b6a8e1f89bbeb521d71a989d1d77da6fd6bdf9d4b9707a83dd38dac9924c9fcf68f3a7a0cf58d31d78125be3937a41adb71e554209555f7e212315a181a5de976aa999925a72ac1b36482062718d93a0c9457d48b3871f16a6cdb08585fa14b4afde7aacb2e8040bd9aa63f18a61af956138acd4bba623e788b74a4debaee5d003edae85653d0e861a6257228bfe638f832d5a08a3e65bd9fc56865d94dabe4d1d76da4e176534704e29a7b971ff553652087beb77d993a10519bfede28b6569ef865b96b49e79337989e114a61d2c2a35c3274c120f3a284d81f634a8a21ddb975f56d9e467eaa40102482a37fe498df3b00ddeda2aee59535de2b152573d8e39d7c8b56c88c32efba187235a5673cdab224fd4acc98b6de2d6cba233e2b2defcac70d163034f8fb0c3d203b6d457470da2b2d3b35f79dae598732cb785555e4d38e6084d369ca439c976e156c9ed375ca24db71026376918f06e775b9b9caaf10d0226ac7084f356c2ace224ab48cb8000646003bd110eb915c96f4e92d293a8631938492b6d09abdf093ffeb83058c8224f9f0b9d9f04151e1a6a8c631e638fa21ce4ba49214865ff21565c86b514f1e9ae663aa3cb6356c595ac09681c9582965c7ee6a2db5d9167271255f546143ff1c5a379710bd1f4b651b9e971f1445233c7cf90073f61210d784933073aaae6c6c98d0d6d29aadcc1bc15bf72fc4d6d721b6403bd250d04d66b37b679d294d876af022eb09065094759ca41c9c85d033bd2d88f5fbc51a57055703add9ad26e76833710864b6cca3220b7e2a6ac71a0032531dc130d6b59baf4c02453d3c046ea42f693a198ca3f937a1dec1ad4ba6515711bf0480712e1213ee04ded67c10a5ef5ce374d22220f796213d633e598454b260f9ae880c788d081fe34a499436c6c3447f9ae06ac0f416d5685694761d2c9ad338e281ec613de1a81173f3afe719fd3f360069525a7f5250c949009e541af04275cc9c894721a6126e5160d695cf4338fcc8d2639f38d1f918b1a944c8d480f69c1b59954a4543269b91e38d19576cb903f2225dfece78d6bcc2f9409831fb7e08792cd79ce96371c1450b21213d6b1ee97516914c84a05bba5d8455344dc06158157c465aa431d4884a6f84c44c6ab5d0d1df4501633eb78b56782154551b3d538ca07cd5bd5b18dc3122b2ce117d7b9960369e1a0473cb096b574b0d1ac264a8739bd6a3cc0be351ef130271b7f26b6b8a6b372b7ca6006678530cc59966d9fb1247628c937fece38e98386fb0c25317a378796d05b51821276cc71d38856509332428d3848e8c96e5dc3a4543a68262958b691aef0a07012c70783eb3ecb2290a0e3e88637ccf15387d9325045cda17a84020d90619775aad354cbf0921f687dd78dc85447558d988e659e37bd77e5aab0e4294ea9c59579e4239f58b9658d72d2a31def8c5a1dd979b575d223b08445873bccb9d8f82d161df4e499d4f20b36f3cdf567edd06f5fdbc14efdb223c1e64cc781d101d070007656ff44673a53b9c284a510591ebcec413b68b8d3628b82a825a094407851196b34825602d265577c59082e70c5367524058b0b0ee1aed2852bccac399a9c42e135399dcb354737c0e15c58fee0a99645fd4950b88c0da360d79751692a316357b2a578cd55453462a780875e78c043abf065e65ceb58be67e2198cf4106b9de3da4d66e2399b7766665fdd4a58760c58bf74944718fbba58767878cf58d36a80d3c9e174e817d3ecc86f3a181d0f79b0431ef23070863ddc0e44773a1e8a1e07a4e948d8266f785851f630fcd8c83d74b00343779396aee98742d72610802af520474ffb0d497ad2a1d8c9a4fd26b942b51129b677fb6071b955dc0f0eebc4e0ac1f8a57282d272fabc967ac9c820bc3dc0c76838df4ec46374ecd0e59ee891b5de67250a0415d9824253a3fc1e5c87ca81f4b99ca6b6526d6796986e6352f2bce525b263ab46a4ec69efe37ac817df8b2b20adf787475c0e2332b3d0c0d587ac0031d8a9daf5b2bfea105437ad374dcf0c309dbd74d435a58a3ee2ba3192b565c73381ee660873946ae5873b2c31d7dcd2bcc010b6b44ff13d6e0c86badedd7d3a737978f52a76007a93ec8c27936d9c9f656690338c8bd59dd1bc79613674f8cee67db14c97ca4f672298ba276b7ddb5e95eba6bd3a9f37a8e63c2503ef584d9d10e51c31b741b1bbc5107651478b58e514e51ca7f26f55dfd40553f465cca645b5544e35175bec0abe3c3d1bbe7c286fc7be52c6c5ee337a28d3b3c9c7c86af9d5d8e0e7990537890e5703b74ce357a205d1d0d1735ee31dd574c8fbec9a28e4786db41e0998b5cfe1ee650873c98cf0e78809af8ecc8b5acd3a17b3ab67a59e1d83e1b072ab6e22a0b1c7463764257084a1947b0817eebe069dff60d182b104ee0a0e424212827d74a90a0f72c3fb697eced24274c3a7403b7589afb7443617c5b39f01ce644d684191faeb9c3f44ddf76940e9781cc51149e59e452c8e407a8e0877fe4c7eb001cb4a843324915d6c88a1b695ec7d5d99ec1d9cda9033be8dee7fd5e5ff517e771de9ec58333119d87715e5e719839e9e062e9dc035a1fa8a583d00dcb627118a4851c3d345f3cb8035f211af479daf07198f231daf4bd1ef1c503f3cddca789dacc5118a26d98ec295fc3fd91392cdd64ecd4fa58965d9503bb718f9229cbfe071ddb8911d007f916b7181235e461fead18fa09d7dfcc9ff9191005e521f831e09379c3219e58423519731d2073794325b65dba35d7fd39a0de4d9839fc5da8a10477bc84bcfd12c7ec5bbe050936508a7e7020776dca60c045ab2053a7505e36111c7b610f9dd9193c6c8358759c33b1e0a8cd17ce89dce791cf1b855c5e0123149ed7f41196eef1decd411c618ddac3891a3acc03a345df80bd5e86399a6271635f4923c65da1a749df186ee3a8c5e0f0d5dca755d8cebd5e81e51aae251dd26c53930116afa15893b95017155441951d02f2110559e2b3456238348335dc936fad107301db38848325b26141495665748321710f26b6034452a2f02cfe57e560e2b72dd727ee5cded5133de51d39a0a4279eda28f64951c96497758c520945eaf452c9b40ebcb40ce5c505cb140bc885cf5bf1d9ea8d93a41156e8e1d9c3711e611116329ed7eabd135c31250b6e9893119a7e89dc87d8192c3d9c627d5aa771e3a56ddaebe183a8111a87ed99dfd1c33c4c1fef5de318129f3cccc3a26da139815a04f695d059d884611a1dd193b885435e09cf0a15e0191dd92a2514656516b6ec1f1ff91a011214b0c59fb544a20761ce65724ffc19664426ccd221603b5c221de6ddbaaddb01e6dd01822226a6133d7d4394f51d3b9466edb5c33b48204c0a1e50288a055a2036508505dee47d3886a77017b1dcc754ad19f0feec4cf83853cb695e8375530e3ae553529cf8884f6351983b21cf51621a33815ac785d15632a3cf7c9ec8891cc6cd171966185f29963361dc792a5686a1a3aa3963a62996f16d1af1f960cfbd9a58159aa21d18f6199d2ac993baede3fc885bf52c14c26490b55016c2d05102e59462ee54665da66b65a6b2b816864496611addfe11a437945bbab50338480b3d5da2898e83894a1960a9e48289a66c0a8f4b76a23c38a08de22651d5243798e27ad88751404a7076e057940c78c50c804cde9999971109e3796595c3011a9fb120c86d1c3c0021c4751cac85151c25189d615ac7dddaa5e1da568a9c39285f1082a7f5251ff0e817a861a318cec33a8ae5fea3c9a53a46dfcee19e17325a3bb8835b82633ac820aae1da5c0a9f87a19a93358f3f4699e9a19b02aa9db2784b4f451d83a6d0fdb84ff9499bf965a8f8259707a108d9c95d401a66244a0b1d02e26a7a4389160638bcdf8ad2938a426438f09c95f99d9539a0aa75e28dd603aeca438ecadb0e01272ab207a56cd791b24ec9d8c577c18b650c11b36e439bbd1533bde038c1c33cbc605b96e795c2d9e7491a14e2e0533658614de716fedeb0c8c387d8a0ee611cf34161ed7d9a33c19ea086daa8355fc3cda5a8fddd3ba2ab3c9ce5a74d9f3b0c1ff1e5ab3542dadf1998a8a91b1db5635f0de0a22a18ac99c360eee381c2aa61d613861acd89815f7309fe8f95958338f8df68f15f6721227331a2661ee441dd0f9599db72a9a6de8183deb96a695262c2b0db01268c9439a0dfa91a3b9003aeee2af1bd433df42a96ad444cfc6ac7b0c774291598450a4f266be4f1246464125e10d1f4e4e236a8037a0dcb0c5a9f34920fc8855c7352235f0d98cbb9e780315f5c1de3cffae0da4aa9ee7da362412118e11a3da8c3cfbd1e5eca67d0f96b9c82dabc7eda368aa1188e61c0aee3f0c9a762012c5a861aa06618a0f29d9b4edfe0caa6a8f19c6b59d98c7e48ae5918c446d96582df3d6ddf2502dbfd50246a529b66b2ae248eeeb745221d3657251e6047a2e48996660aa96aaacee6a9ed5c5f3657f1f59daad5c35bfeb6c3aeeeaadf011e2c388c4d10156f9ee235d8c7be19155238c50566977ea8c37eb00e919603f11c5cb4aae9733a5c5c551cc3ddad7fde5cc83d5c3e711e7a46e39e7ddef5a9c3a53d25c64d9c397ea71856a5388ada36ce83189ea59b7a9abb66183e2856e2622ea3a55a3c0430371e6ee6e21acff19c8789031b01ece71adda272b08749594642993c55193f42266612d4929588b765d035501b92e95a42b66eb7ddec0c9f6647caae89c2aaf8e9b0894e98d4498b8aea2e3df1ece49eda3be46a6c162d31b884f3d25be9d4e4d21e1e4ff65b90a48ad90409e214e9ac144b38452b0baed1334d2b75ca4555ca1a30caad101298a4c19e399d719d8a9afe56415a0c9e1714766917b6035fd1651ecb03148a1ac00270f46d61f17d1a189ea53dcc033ec429d156eee0e29a3c44e0a9a59af2ad033c341918c6a93ee8c33cbc031b82d8cace9aa2d2aa4452d91989d5b5321f8abc2122e62cce86c3211d92cdaa12f8355c56c1d91e6b239ccd833a002c3cc8e60a8103bbc12c0fc72c4a8a1fbb811fbbe5ddfbd1138af2f06c9ae8f4b95bad1eb1bbd5662bac82e6fc942fbcc22fc0c22f0cc336bfc22eb802bdf9022dbc822ba4423a9bc22facc865acc54e82ccc15946eb508b7b154de66d5e37e51532b2535336160cfa19258f9354beedfc2e6339b0ef1bb36fded6913ee882178041444bb4172cc3b91eaea88dfe0301bb43c8912b40455981cdc330808117744149933449db0028e8c380416cded2a58551b0c2b2c33aa8c32123020ce03417708125e8036682c33578253a2454710150e92a4b3478c10be0340c28f50b24c236249749d5942fb7f26e4943b8bcf2ddc8c330bc4057e374537775587b350c8c813d4462a776ea37ec4d4976c3375c757125176589df238ee62f8bdf6a76a427ae26289a430442f33bf4c107b0000bbc00618bf5612b750dfc035570031f20f60bd0c1f6c28b55d8e430752f08e6c551a4c33181d3f480d8b0fc85f57555f2545c1dd52f1d2d5339e85e56e160619d71c8b1f662c9ad6a8f53baeed9cac1ad3e0c030c70810d70016f73c10bfe2c0302d311ee6518a469e33646205e9ea9a2228d3d0c830d00f76f53370c58c23e4cdffcad833950722507ee5b567256d9832ec4007507f7185cf0f6d15df9d9d4f685436ead9895658317fcf652077722a4c30579d221d5d89049d02b23909460b53b0c430cd8f752233853fff60b8801373864c220928fd9eccd42b834885f71311738c4ac9565a4076978375c70955159dfc5ecdced9cdf156ff1d681600ff66017b658b77857dbc03f4003347043211c0162d381bc25053438495660435208c5642745386405e25d833820deb0b0304e154d381491ee7d88c4a643388843955bd2f6b5b7fd8018f700967b7bb03aa0b63ed6515ec1833d5032883d9cfe3b88f96a37d93c34432480814e2fb570cbc388cc833e18f2ced1b42e03ae3b007a98bb435fd3ab31240218f0f67487c11cdc425d5a983bd8833e54ab3d44ba3d44ac3960b23db8c33a0cfa3be8033fe8c333040336f8833e709f95476c3aa039a5df033a88c3aacfc39061ce3f10835203f70b28427e33df769b436d7d902bab758523d0b04b835b47902f98019d7f351d24033110032c78f50b4881385c7839b0b998f7fa3888c3b6afc33cda2865fa1838f4d53720c331188337d0e52a3f221d76833dd4433b7c83317c0326072e354fd88ab3400c10833ea8816177350bb0823fc4828c2f768d5b033708c161ef38371043228c4119e801316cef2665fe456e298222e841c66bfc33a803341cba18ec47b880af3d6c03257c0118f04017f00018d04130c099670fe636c8c118d041cdd3c11888012be8c3228cc117d0bccf7f811e58ba0747d93295821874810d74011844c234d001189cfcc947342ae843f7d9c34d57f70b28033ec8b974c7401888823ea4e1bc069d2eabc33a2037c09aa139ec4326d8fa5297b539f0ba3de4024e1b38757f813f340318c4c00b7c81a5834348273853db8032c0c3f695039c838158c340178c0153bf8062af2e9c3483ad2f7824e802a28b751758023c98d2fb65f5b0af508043893cd081b2e3341dd883b5c1833b60b23a3c493c2475587f750c248333d8baadcb013c0c3b35fed8c3267841a2d77770c3c01718038abc1fbbcd832e7441a223b84eff762be88386b7c32184c00cd4c02b70831abcf8bf9bc23fac020d2081127083c13f033730c161db800d3c760c2cc38a6060f0d3fe0b80012cd48057778183ff0837c0c317bcfde003040c183648d9f3766d5c3a6e60043684f182d4be380e05be1803cf5cba70e9ccc1abf6e50545915c6070e112a3603973e6f4217a41b2a4488736a4cd43e7ce9d3977e8e4b163878e9d3a75f17c9a0bba2fd34b8763ec995ba7ce9cbd6102610afc926869d36eee86c5a01ad3063379e1c2d94bdad013b15f7262bc706b839b376fe1e6966bf6b26a49930f1bbed0938e9ab46fdfa415f6f6cd9bfee0c282a3518b164d1e9daa796190aa66585ab86fd4f07989f995c5b2bb31b9bc90638f9ab76ecdbcec85118395ba539f5fb8d117d81bb866aee9f0eba78f579018365c587207ae1d3b58b064257bc60dcb0b166ea5a3e2f66c1a34eddbad7163421dfc131be0dd82b9767e5a76396af886a4ded006b66bd5d4b96aebf0cb3378ab6c547c0dc6a06bb2c986123342ea8b147d3e49c4abbec648279d722044071a9162b8859b6818a2280c4b845147a374e04144af86c088e4910dfbd2639f8ee441071d736294112a19638c911d7d4aa18a248beca9b11c77aab16611a528720f0c6c5692511b333864661db9ec71e9b32ec0c8a39662f6d9079d6bbca946fe2e6fd219e6c08ac620661bfb1ce20209650e4bad30c7a2c96cb339bda106cc6ae8a14326b75820e51b65a2196c316af42113a693b0a9a69c63ba30a9077dd0c16d1ccffa6a049f66f639c3b5172a81c79b71bc69a60bd21ae2e2c463f699a79b765c7d0516629291859b34a4a3ee4f6ea0c90e1a6bb6dbf53bf0e8e0669a7fc0202f0cf9d293669a6b8879af221e12b9c51a65e6bb861b90faea02b569f0c1a4cc876ad1e79a70f42c25dc182cc1671b7a84a0e8c17096f4a7488a6a8147426ade3d150c7d362a471cce5caaea85606c1aa65487e868519e77dc116a1e77d8c9899d79de318a9d17f741572f922ed2c99d782ef62729d760e8a2957efad9fe471f73d4c9491d7c9c4c34be79c431671e7830f18a32932cbac61cbae4b22b24924a4be41a6afcb1d44437e5122cb1a88596e66971e442278f5305a2c323d58c69c698638ad10c4e7c72e9988b30a0a9b4241eb0a146e8c34c722d8c31c010e38b2fc610438d31f008079cabf5c9c48b038d9edb226ecc01c71c58657de61f38a6c395957f78dd55bb699e0bd6cf618b3df63d24e42bac9a6ab679d6a11716e6a6f46bb7e1c640b71e824b9d69f429a44cb770d167ae6de0e1d82145fa81a73378f551a71ab2900af7054bf429071e6bc28581297324cc689f454a2c6d197dd231266198c8e8479e881fe60946761c166af176d4414747b4b918632589a1fe52871f8e618aa1177fdea99171e810873c24f2191884411cfa108738c2a10e7bac6c1ba6f8820d786622a085491dcdf88a40f4000f692ced546c520654a8f634aa416d2e61825b3436a122bd8021138b884424a8f2822f78a919259c47296230372ecc210f2fa94132c6919a30c5230e3e84011e78970e7218c31be69087a8724345647cad19f2e0063138e14218b4621ede68472b60e19c56c8603a93a34e188cc12b5e6143134c680b786c808449f80374ee81010f14a18f6641e30b48e00b7c785009759ca71ce5c056336ae09f17d8a012a1d0d68abc172109112308479aa38520628f8da4031f712813497800866389640c2d0b47390e6524ca2883fe1aa54a144970d1149dc0e865334a078eda610f4692c6648a68113be041268ac02434f6c88900d1618f63f02c510209863cc4310f5b80670cbc68473e2ce11a32ac031c742987a57cd8234bf083697d21833f342317dc08e61bd8400c62bc218f66346883a9c38f38ba119868c8051eb9c04ba70c66c41476231e7bc08b40bc604a87c4a007d0581c38c6310e33b8a60b7988c4191e55122560631ce06007ac64f18c57a4913c2f084332b4e3ab697407770f492921fa9147d9c5400f7edcc6348270203d86440ff6b8c636cab18d086d431f9da881ec8ee4163afc031e0cb4245287b154dac0600e5675c89fbc979172e0031f73180f78624087462ea565fe2a69a54c65f796653863a9ef79410c70218f95dc64251cb96b8c7a320f468247a6306081307722959452e703cbc0c74ad8b19278dc135ab2c3c53ca4480bead80024d3e10b0f3ce149c665a47083748fa7f81186b6c4e0b4aadb0798e46235c1982b4c6489623328885adbde16b5b58d8118b0919812ca651eb9e821e25a418fb9042e37dd908b39f0318b387401b50f190e181cc10d5001ae1be620471c86d3824b64020cc3b1010feed03df5f96439259585273cb18a55b46215a668052958b1abf464a73bb050052bf8fb8afebe8218dcf8c52b76f18a5fece2c06882c65087d10b60f8e2c1c110463080010d78a4e31a208250227de78f2d9a821394fe08452f3e680f089d982342414738f4a10f63fc8218d7f0c785b3a11075585721e2784a4776420f74cc431ffe50d996a6b226262e092afad8923ffcb1a52ddde3454a66729099dc9375e8c47a2f8bd84d6ee48ef2f5831fbe09739887dc139ce8436564167398f7e113fb05ad1e2a133298e53c8f76ace481727ec73ee4ec0f7c30ee668bc3733df6718f7ad4e31ef6a8873cda514f79d4631ef39047c31a2d17a12137b9962e876acc911c76dc79623e4947638364147120379c5443ce3cc80186b9c1c012ac8a22aa91db8dc031eed1fa8074d072030e5fdf7a71d945875e3fedaa4ffbe41ddd7807499ff10c68383b3bf7cd5c7ab0c1acfb56e3bed3c0fe46b69b750d696bfb3cd538cf35b0b18d6dc8671ddb388f5121f494106978c3896c373ca0726519ed321ce28090f562c4a88c6059464bd2c8cdd4218f9cd8031f48b0121df4900730f4e7335ce882c1d0a18e2896435eea68ec9264e48ee4dc55d052c4c94e728293f299dce013f3f2c8232d6989b563d26ec649a40dce688979fc966e36763bde41e98659eccaeb98c7a75d761c8a713c682bf1353a72b3b85e8fa3d3dd50ae6ae462eb7092e5d7e6903aa0e5528d5bfb3a4c5ea70b0385d658ba00ced752c74726ca09834ae8e3d75befb56ada91dd95dcf9b3e050aed66d3dd1c0b94aeaad12a94f08efaa778cb48ccdb62f3676b5edec78fbbed78006feb6b1ddacf4607bdcd310b7e6afa1c8752bd2dc435d77bad3c16e755c581deb80905050bccbfb09e5f4c3cec884d0713d18ade4ca41b93dc66befb2959cfeaf3c32a0742f610f8ce01246e593345066548e9ef45e46cb8591c46e829389c9a3e0934eb951528e8e75f4a41d5cd689c175726cc287dae3279fb999452d3199afa3fa94354ac9358e91e4b8e3622b11c79ddd31eab4d71df0262ab9ec4eefae0e1c1848ef94ab1b0007e30027852c8d71e4257016b0e92ccd1ce2211272070ff6218a3aad1d9043ea5ca5005da51d2a0af04630049704efc4a85548f0d3ea811d601006df21bd9c433b9e61db3067dab2cd5ad203f2aa61dbc2cddb98a5f386fe2a1cd6ed3cd6e11ac4c1a8ccadf4d621ddacebc2b641f55a2f1d600f0b87ed7daef07d54ec7d60040c2b0e46aeb0f62024e374e27de6611f98cc597a81166ac11688a11a84ccae5e64e478e27ed8812346cec7026e46d641e526a67e76e26570e21d860ee62ae626868efbb44f8a1a2b4634cecddaeffc78c21d24ad620ceefe64ce629cc21de0ef277e6299eacdfd3cce553a6de38c8271ee6c49c6a11b4e4dd0f02ea4e445e904cdd7022e9c1ed01c4eed1663d1d6c86271b0ee0215ad1eec611f8e63e3a44e35024f0443ce054d31ea908371b24b04abb1d878ae1dea21391a06566c30dab4cd07218fdab241f3ba2ddc4ce75a346f51c44ddc860a1dfe9d701bd0811b40c4dcd4611b4e0f44604f44604f1ee84128e4011e2a4e28e82120d521672a6e972a8edebe100c7d2f0c910f975e041d0292232a8ef0766222f5301e78c2e038521ee2418ad241d2260d2331a2fc982ff96e8e288082e6b4cf2577c927b4cffd32466246cdfa2631637ce26526661dbc8c2439f1127342e8548e2762d26146aeb18aadfc58d1147709d498f21477e227eeac1d826e490830d8ae0ceb6891e3a4ee2a432a4c1847ef90eeee4a50ef3e30374ef10377ce0391a3a2ec4e8c3a0d39762e39c00106b3f1bc6870396cd0bed2a32fd3033bb8cd07b16d51c451dcd44d081153dd420f5be081dda8d0c6ec5132f3f1c2f6710cbbf0fe0ae1611a7c070caf8cdec60146366225c6211c7049dfac2791baf0c2e82142ac478af0454620f1466e62238d42256aef46540c28742f4620e462984f0f6f13ea960428184d4686f3ee7c020a918e621a4be3706610f36f1dee6c3737ae1061c6e36e62277162492886287452e9eace2856a21c3e0baf1a2b2738eeca72821519ebe5540270948e71c252e9a0ae00d36eec5622b956c2ee26aa05e98e71bc2c395ab0b14a30bb7ced0391e3ee908328e69204491006d12bf170101cc1d1f1c8ad1c238f1dbd6da810733eda71dc8c2ac3d22ddd584ff5a850f5e6511fed71f5e0c126604f218582dee0814665b420e90d0cb7f06130b2e238ee7e14d26558fe132a2612fb2272247bc24527ed65fc7046266dfe9cf36182c261c62f14b9532a2711e0dce7e62606234a8e62b674e4189227c1af277a226376120a0dd2e34411270a1164c28f280f0fe90a4f1c2e5127da415e2e1227f08ee3d813fe402ee9ea33ebc472a2c8723f6b51eb5c651c3e50d8a8921a49b0d36ab1b17c2da4163500e5921d10d455eae11df0b21b15ef2fa92d432d0f08330ff3d60d44b92144cd8d55cdedcab881dde6f11e21a432aff01e6b54c5d241484faf462bae1cbe90202792216924283e3247191247c5d01d02f2465cb4470df220d341fb5c4efb12f22644ed267a02cbbc2c2657327d084f5a3531d43026145f64496e4614c7f35afeafafffaeb5faf6341dbc8cb1ca14fbaeb31ddc8f28468d26250624efead888cdae92d27d3aed7d40c6ae706e108b8e60cd21b696445e8e2bee26703a03473f03ef163f6e2d1955a494ceee4ad0d3ccd22b95cb635d71e77cc2f03a95d1780ef19a2330453507b36dc1c2d1f29ae530af054445143115891b308c0a63951e598fdeae3033179220df8746e101fe602f596fef0bc3011a24122573741d308259d5e1573b122061c459edeaf4ca27e6de872631912756f212d9a15f71c60e97146380425f77534648f24e71ae4ad313af9c343d6dc2e6482ed4546225ec0c28c2541daaf296f00afe24468aca276346f25acd745ec32f529912e0f6d0def8b6fe2647cede4ed1e9f4b30369b1ef28b003bbe11bf66f2d5350b93eabeeb24bea44b70545d65247962a2135391e34760b4f1b9743569e0d732cf4be762a089b453ecacddc367331c7ad1d1153214a2f1c6095dd746c1e655568335346653467d4c11f69540b31b3e2b25637e38121c7f0f92eb36a71140bd5a1e768ce45254dd2e0410fb14ffbe00171bd2c46468e38abb4fa8654623a127e3f52622286f0b4d55c47937154ce0ee5a127576e27e2a1fba4d2e0e49526adf265da41d2c2412a83063db595fff4945c2335168fa3eee4c5e30051101bd21c2e6659d170e930edb85a65eac2012c53289c96a4ea18ab00ebb37407b455e4924f8d423c9b6e2c65fe5751f13242f532199c033b7e2573fa525906f3da36b36669f65ad68da8e0910a97b01e4b94f5504c28d6017a68b4232e2c464fcf29acd54674f30b89490f7b542033827bfbf066c6e166a6cf6594b560d3101327784899ef6118d15725172a284a2ad3530f5dc64ced95cb362e7ef7cade4cf759b90f80523129b9f366b8f25e63b34c77c2f782461c0e2f53a548835de5ca4e8de93e4b05f52f5255cee370a27057509c92ceee2850efce4eefc2442e5eb8ef6a515377ceeada33d01876eb38965c49d605359904498a88a12d54bf31dbdad1f2e4231bc66d554b4f3159f5097b1632eb311f9556698fb62085f5f53a62686fcfc7ca410cc330f6b23797fed0817b87347addc1c76ec27d3972e45c3246866ed8220d4ecbcfe4b2155a83c220fd157dc8170c8902646293e3d0c17d8a220f73e262a0d072ed6c5b3d90fbd8c1de60e639a733280e303697492e9634ff3cb1d3d2331c722fe94450c7d8134fbd2146f294109764521956b6c472b924702e00871d36cdea44b9961956416b11769724ebf0eeb36ad9413dedd848501ef6d239b8ed8845b51c37cf07cf8df2d083f1440f918c7067a5b909e14d1f17b2f4a2d746bd101f33e27d0092acb59738e1216478130cbd1646c4399c2b3264ac157e352e1e08b127b22f6ccd75d4a6af4d95d428fc51e3dcf602dd335d3bee27628471dec770c1417d57c2e6e681fe7c1f86499bb3275e11cb00e71399ef1435bbfa7a12137b12638873171f114fd3b31dd2e11681c2d33498b17a52a23f11e7d04194e106ec024702a76e50233580a308f0382d8a645b3f77faeeee8e1aa3cee3161563e8f21a91cd7114cf2f0533892d6f3ed4d19941f43c94b755a3381b18a543f5910b45446b17722217927d657422f5211a32211112c1128c411dbce71860a916be2f0ce5011f22216fee20123e0115d8471480c12632f245dcf745268d1e520e2a96d525278d283af25b9fb37e9ae91b44a116946190193646ec411f74211268c1c3692114102115eb5b5bd7d6cb6a64af8654224b903903d4299ce2627ce26f23d5f9dea1a3374e60bbfe53b70bfab30c39762315618fae7e88ee03918e166159a759b17461f886a1aeb1aaae1bf4101c0c5a51275554e822d816f0661e14344dd6d86c9ce7166d65150fda2a5430a78108bb6df39e9866a3017843af5541a4a886eac42413c56ab5adc5590cdb191ee8e1bf9bec1e844c1fecc11ff421129441119401b263447dd36116e02f1efc011282a1456ec21ea2a117e8992706bd0bd1199d532c250b6e23cdd64cd77736efccae06c7128e113d11b86fc7a10c5e611feeafd19c010ca4e16c6b2429b12c84756297384e3c67c4a7f513901727483c8e6f41ee5eed4d90e58fb1426eb8c512bb94eeb834381dde211e6a411a7262ff6071ffb48e615d5818fe0388dae772b4bb923f1d96163b3001a54e68e8621ac7f2627fdc148b1accc31cf188c1d990d8f12eafdb22ef079d1809456f3159b5db9cb0f424a4f4165ec356d48b135237dd97167c81b24e2c20f5210e14811fe8605cd0a19d2512fb0e8507ae21c0356e1f44e116349d1ee4200ffc211e7ef57ee36123c5f9e4b43564d839620a0e237f622590c20d8ed1aec0b0b106e70beee1623e2e63a2623c7d0fd482c671750ccb0cba2302b5ee42caa75371ff9653e94cf2dc1516e912c1c2552380d881ddc7525e1650a76bf1153d731ce8e0475602ad815d3e034e73bd61526f263d052d1d022def93930255b1e9a89315519c2a0347e3dc38bbf07ee8088ffe28f0ddc6d30b54b98d3097d80739af1cc96dba9d99aaa538e1159ede7c47c36634685313f50aee8ad5211ca4e17e68d51abe4019fcc115c2601f60cf21df471f7ea106ece147364e1f9a2195de561d58462aa58c4b64deae80cce0d4d0ce0edb8154a61ffc6162d4011c0ec506661de9ead4af62001bfeb738a188801ddbe5e5c11edc8716f94c1fc8c11b58c619726449ae011e9e1f1972e17826ca83fd811c74e11bc6c21b746c4be6e11b360120bee93347109c3d7fcec0b5eb060e612d63f3089a0b77d0dbb84db5d4992be76d22387004d7c943c4e297c479fb6a45eab5af5d3b73eb082e94b811a44475eec2790be74e62c77212c17504c7d0dcc7fe6e48877e34d74e1cc897dd8c46ed2833663b772e5db2dbcaae1dd757b0922583f66cda3468d0cc629b86adda34b7d5b05d7b1bf7da5cb973ed56ab66779b5fbfead2714b1778dbba6dea10a72b97ae31ba748f03434647199e3a74972f53d618785f2625c67c89b2b1cc9e6673ea2ed343878f8e257feae451de376ccebe78977905d1734fb63d578ff4d991c64e1ebe5c356ee98bf7e58e3d74ecf479db93085bbe2fa09e839b478d89327cf3dc8967d7d3dcbe5261decd233f2f1dbb7bcec6f83327af99135c07e5045b8f6ede231ecbf463c618d8f8c38622fb80444f2931e0b2cf3e5fcc620f41f84412c732faf0020636e678030e3d88e480a13600feca338e4588f4808d3cede093071eebecd38c1afebc340f395d5c82522264f8438d37de5433148560ec7715396078b28f3fc78c31214d3c51d3934d5431c55037dfd02451542f5df5124d2e7dd48e4d2e31259339e374d32553ee6c95d53b5cbd538f3c5d65050b2cc43cf34c5a6999c5965a6655d3e734d9bcf51636dbd865575b8adad5d836e95c3318a4dcf8d518379649069939e8c0d398649b3d065935999a030f3c6584b2cf38fab061c97394b9a3ce6ae898c30e3c6604a30f3aeecce3a2832ca243cf17afb533cf3cf0e883c918b7b9638f363560a38f3e7128e24f9bfb9881473fee8c53644bd0edc38425fbf4da933b9815a78e3ed895bb15affef1c4a10c9dd578b14e8bc5f0a0cc3cedf8b3c81dfeccf3452bfed8338b22f58c539c3136aca84f2d37cccb0e3d31f4328f3eba2861cf89e6e8930919fb9883cf19c1c403143e993c311f38f26482873edb69bb8f37e878e3c532ee3c5c093e0475e46147ee7823c68a44e9a38925fad883632bf08c23145004b163944d277e6954d4122d54944c5875c9a54b6a7219b53bee6165ab4b5d47b5953c747ad5ce9c6eb6f3ce3b6025a3e79ecfacc5d63686ea6d175b73b9f5b7598dda154ea590427ad8a38a35e6693aeba4e3a9a99f7e9a4da7c23e660f31b544e3cd317190b20f3cf36483041ed770161bdbf0c8caf633797cd30c2f8908a38f3c1ac5434dfe0d7288c4ce3ca444d24c267aec4327c66018134d0d6080130fdbfb2ce2452db5b030462efb9a730c13613043e7a640a5632b74fa54f34724b31ca34b22c4c8030e50ee88524b2e7bbcdad53174f0200c394ce8918b3c89084322c2d1297cd4a011a2a0451c5a618ff2e803125f40041d9030875a48231dd1c803b1ec710c30e4c11804f9461e9410896f2cc61bf2a845261061896dc4c325b5f8c21c84110f4410ab66e1c821484ef48d3ba08115ee28c747e0a1123d04a38104e98637c4e1132546251c27f25051bab4940e11241c5203479ba4b610978cc3566df24a57c8c329f1c8242b5d641b57b8c2a2b9b5836d74c3d3ddd032a8429dc52d6b81c6fe5c02358dbf5d032e7f54d45fd2c197c4a50352d5400c3752c318c835e691a9a94c6a90b5197a206b1ef67852a7f4b18fdb2d063381b98cba78250f7b5cac271151c73ce4a10f7fdce339a93107266fa746b671f241fb6820db4a89cb07e92322d179d0b1d8368f775006776d728f39c481927ad4e31d5a3187788ca58f77102456c79266af08e20e3889a3575fc0902add61936e384d9b9c7a4938a4a98e9894a329d78c674fd821beab7d91261c114aad80b4ce7170c41bdd08875094f84525aed31c4801874e4002249b80436a3481683b6aa5a5741c544b36e95a56c0f492adb48945dad4e83ac2439e313e736d727a9b47c192a73dd1f12cd0c0065afefc44d33ffa692f7271cb5bfe98286c88e390878494a412b78d725c8331915b4c2809f3a9c794031d4f4d0d3c403999d4a8031eb8a3cc6662b319b6a1231ebc6a933bd6010f73d00a1d6485077b38258f36a9f258f3006b5bdb7aac5aedb2ad75120f9cc8d34e8dd80aa25a52c7fbc0684d5b4d641ebc5aa644d6c944ab1dd443f3d00525ec118ff149539a5cecc93abfa4932b9ae9b2b2e2e665298a8e3171b31d56311343d4a9938ee8a4b50d258a8792c81090e870224cec9042d29150aa0054a0aedd0913bbc144818284213c614a99aec645e894943ce7ba0a57c6c315adb0039a2e991b58c262b799fa894fdfc52320f5d247bee4452f9302aa51affe01297414159295438d63268319cad04a7c5b9daa5449171ed95c06770066dbf350c3abb21266aeb87b07ee9e8a2e7958063af160476c8639ccbbfe8e4eb57c1e56e4119e361dcb2be82a0e3b78b50ef1608645211ef144394c138a86749e67d38778ee85b5f24c542620118f3aa4268e8d7ef625e5314a5bad18e4cf2294b634218a4181c4e47282e4b801fd4640a9015ca93c392a1f398a91a796e4cba2ada33d916e1811dce1f080182bc5f18a8259243797d4638c0a66a9dd5c2ad33e41435068d1a99e03b596bdd42552d700b4a58caa5ec8a526d089710c65201318513166aa99d32a6620433acdc895321bd1aa47efba19acae72978895076ec8b3fecb63eef2799fe6703c9e87b6314b4dd4111ea678cc85e9add80a2721911a74b0d66373c4434db6062c377bf2c5d28a96c7dc1ca3365ff294731ad6af1bcd3157f6e9e2829869a0399cc850180250a42c13486952b26c998d9485263148b4dd89129bcc50707c33264c418743691ca6ae51b72b747aae75371a3739d509bb7263c776e74c9699da791ad2a0a94e6fcac746f985bd91fa8b211799547534123284799c56a36ad56b3e661e577547eb2c83aed5f81a3a9bb9f05c57292bcca8956d937cdeea2a2c600ed7dc1ec4bceb5d5fc81e770c79c4251d0f49812e62d44c848cda5cc756ac592b854a84a2e2c0f5442e03138c2ac4b467baac96aca68efe7688d2d4b346ad963a5b902c5f6ddd49711a52d6cde4deb2bb1ae1e8863460eb0d69ec6489e1908694c3d6ed2e89c3294cb95737d2f14db44993455c6c473a14561cac8ca7a360bc8a1bb3123785c8798ed0b0864be9680d4189379074b1a9e01e0ee870b0f72f7629473920d518d53f92a9af6734a6b59a299ce0e4549cd26a28b15aab637e54d45f2df0b15eaef3e23c8f6df8e0305ce301d7e6df95e63db1f92a993f499d47986db9576357760d0e6582f1d612e98946e8244d636d05ded3fcbdd4d6b6c52293cd6c9419b13c9edea66b4a58d832892255a4b676255b04484af40dfcc4640dd55a6b570e3ae40d3fb26e44514e9ee30d5aa344e9c614fe64b2765ca2266264266e52277fa54d7532466bb4742e71797893797474826741536d81700c6753ec655e7d7154a70729ab5754869454924378ad8768910113b8a7199da21a92242ce38055ee400fea806af8400dbeb00bbe200dc9820f35a30ed4400dc8d256f1900e36a77336470fa24673eb016a23c62bfdc10ebc600c22c729a2c5295b213e6338513e770cb5204188200abcf00df8f04b75c50b9bb00c81713512210eddd61fbea012d4430b91400911f1742f213e4eb77d5a522bb2a2113543186463748088630aa530e684500b418075078a406277a0d85aadf52379075be1f0234ab66e08458002651440d150f79489d55626eb7715d7541e5f83fe4668c415ad10167a32537ae32772d1279ec7828d1228a22748e2e0168b51547d0155aef77a4985399fc229d79819b9871a96413aa4a373e8b04becf03cecb008cc704bf0300dc4200cd7e00cc27307fbc07239474c154673caa787c7520fcc976aece00fb9402ebd51616e95661c366bc5010f91a00cf7b00ffd900f92d02f48a20872f0053c300691500b4a871ae86246c5712368400ad3c22ff3e00ff80006e2e05160346b925852681276103525eb141bf5e70ee4700cd06193b5101116684e422180770724020894a7d864a038773f4265a678770bd57648310e3ab4146182141de51556e2213cd125eb471e5f12465209705a815d5d31707a92827afe2317c6a8537bc417844328cd585ea6678386913884f648ab270e87f138f3d51864b518e213495a852e24471959b83af5d834e4328e53d518f3300e6bb00cf1d11b9db273f4548ecaa7736b966af61857e5781e74e00f74727c3ab7456d8515a5e50f254492f30006adb00fce8004e200908a600feb8013eb34625be7194ef259c5810dca600fb9d511fc02156604795c244df2b6863e0746f2700c8de00f4a642cc41009f3109d5ad38a1f012442e20ddf808a420994a20880048825def080a29850bad57f6507885d5295f7b45b6544796ae4365d3137d5e5260f0516b2d0528342536ab10d7aa42874d1707e1648a6974889b40dde70547e1918aef75efe851113b1471881010f8fd67b21772a0e367f9d1286e481556cc3419c060f9ef199fe2006b4502ec4f44bf6f04b39370f963492e0314cbfa30fe0e1a25f980b61e00fc581612dca49b7f3a128071dea604dc6c061fb8004ac201d48c00cf81007e4126498240f16916fed701e3c200ef3a75c4c410ddfa011ebb44a00b58855f71c048173348149a5752288c55688300663f245f3500b96300f3b5133c7400dec106e6c579e4c065b4309807dfaa703f80d768776570250a0e84469e22168e4a8687426653264e6004de3f025f7f981624479fa497031e59fd8d0168892177b61287bf1478914487c91a036784884a60e8b148d6515abb0c7298e4389f535fe61b1a1a15e883b20ea7300a6a138e10eab368ec6c1067a600ba4000674404bf3f00d99100389a00cb3800423654bc3600696b00ede3006c2907cfa600c79200cfd9009cc4227be5203c6a00f5b711b8b8007340406e4226ac5216f5ed71fc4940f60c00afb701dcbc00f71e01c6ad80dcaa206e2500fc25003c4c02fd103062113135c390fbc50092d310fcd0006b8c04960e00de2930ebc6003ad206adac2ae04310f662006e2100f60600bd2a10fc77004382780e3a07600650ed41006f6f00bb8400f1e225be1490d7af723dcf9a7df50b477f70dd5805044498a6b37806d9726a6754f9bd50e1ca35c50c1815ed658e9d09e70e2365a410e6eb61524fe481630e59f6a215e6e91707fa217319828a72a8341652988811881210e9e7271a9f14869056941f860fb05a296d15627867da662acf4a00fcd002017d30c358073e2610fd4d003caf02098a007faa00ef6400f41c0129ee1b0e1113d5e700c918007c1603cf3500ff8500648434ffb10077ae00ffaa0b9cb800fe5514b8a1763f48004a51b0f48b00cb75103c11076fe500a3c1032e8f04b69e62b2c000c1121882f910ff2f236cdf004e2c02a8c8b0decb00edf1004fbb10f88208fe1c044f860060c14a6dd60851963a605311304410d871b06a8300edd498ae2397748ab80df100dd210b4a408b442bbbf41c264864abf842ac04dab1457a210afe821fe5fb45cba2513186826b9b56f5ad166622b47c398166b518c88d2476fc10d85c3b6a9aa28d51029e1c07a8af32856455657b5b7a7f2c2f0600ff04056c8f25698d47c384c57bb241eab3421b4e03de3700a72e0bbac540a2c00429f360c34a02be34007b770c3fb600c47800bde80083bfa69fe300c3cf008c6c00ba2304ccdf005382b6af290a474500c9bc0027a200cd2801aa5e973f5d00cc7600cb34007a85023ba600374700cefd00f981009c6f00968e80e1032062a740be47775fbc00a79500bc7a03e94e00b03c114f54009b5a00b7240b10a250fc63006b3a00b03220cf0b010baf0056bcc44b59b0b4fa007d1d07450795bf39091997009d830fea8dd268a4369a80a08244a498a39b4cbdf09504231b4e1a9a8de165052a410ec701460c30e625326be48c15d5b0f62745d2ac552196c16e075536b5128e4b58cdb50487df1282a2c18dbf0c298821830fcc27b6b4aa423c3efac87323c7c970486f4c83abcd490f3a87c28d1499954c64b92340ee90ff5d02bc7b20ffc400b62f04ac8520f07ed0f0f624af6500f037d3b7372bab804d1fab885bb744b6df50ef6b00f0d790fed10610d393755e70ef7f04a5b24614f2179fa00375be412f732274b210eeba410e1814ede500e6663138bc5a50db5113e4365670324faebbf0b1a24a40894fbfb23dda90c762724d2700d4d2d0de090bf4249800238cc8bfeaa260d585b58966563e236dd804aa675754046c1d7050e6f869f6e5237c9400c27085e1b9c9688c23782d41712f770449518edc45e69c50d329c492f0ccfeb2c55c8722acd674a397c2cb703576cc3c39b49619964d0fc85490e8dc3a6c44a88f0ba38270f72c2cfceb78ff2b0d9bb74d1385c613d2ada3ddada73f3693e87901d0574b38d907f25464ce4926b2d13e8905b5a1264179564ddd0745bd2500ab84e43218ab0b5bf76a70c5e6a77df500abc500ccad00cd2600cca600cc640c0dd59c0464bcc021c8be99950e684756643812f515afc76152dfd506d834662e96f24380d796382d6e05d7e5228d91017abbad77c3db787a40e091a68e73cc3feeb00cf577555f37c558cfd60e0b84ae098d9a50dd9e101a2c3a461fd987cabbd4a70550f138d12cc700ce3a00a7a200ef3782c335ad9eb416aa73b2706bda20e0d6aab74613daa99a04627629562a25d62a48678d1e715bb065d3e574f12712f65f245405d6d1875642f410de0909c1db213e9208a82c8cbbc2c0dd1300cbef00bc5200a439006a2c1068220087fe0068210086af006a100099fb00bdc1d0ddffddd028cdcc0d5765642145682756aed8b401d665cf946ebd14d5d2b376fb657d45c1cdb75377a92df756db62bb8168d92d77f24177f911894020f8ab10e9c6e199d1ec32f5ccf0d9e19a9c1cf1c16e1cd4748f5282b14a6991dea2b17d3fee1d954c6fdb0cfa72bd9fc5c0f319d6ac7e261a47d8f9ff669dc94e3a4c936c6b2c3d6146608291b2158a9f1b6a5f4d11567e41534666d21117e55e7a854f2cbad8580cb1d940a180dc6500cdc6d0cc7f00885c00622e0016a30042490011e300224e0012000ef23e0025190067ea0031eb006c4a00c9eb39dad4514421b94e1f00d02b576f9b7bed2bea9d7b5cc6664362fb1576c9d6f7353e84b47969bc7272f95821eac1778615ea897287fb138861168b59929295f7b877d2c85ed60e1c87bc327d18d4d3a1c8e49a1ed2cad4e59e3d87c313da349733199b4daeae17caaedd0a634e3bb7eeb92edd8baeed0330e47c574ba34cef470451f1e594cb2fe341e3ace4eefe0786042e45e52955a0213310112c00d0e494b1442f2cb01fccb551e8ac5400cc5900873300444600226f0043a70041850022d50023240021870011d9001178001196001f40e021cd0012580054df0044fd009cda0bf702750caed0da1510c5a1e0dd4f0800c714e5bf1146c08643221356186caba88591ed54d2a659f85eed6f240960607531caf676bc9b67c2d29a7175411578db07ad8a01eea858dea11ee60cde7698e5d6123e9f239fcebfb78eb1c06e2219e4920fef4747531f27cba131de2de3f27c424fee22f7dcdb7d950dfe15bd826b1ad60ec7039843ee862251bb366627fb50e6d4c4e98551e1c281e4c04dc0061ce5c3870fee0c279fb762d9dbb81de0e863be88d9a3469debcf9ea654b111b364940b8f05062c68c131d289c3c590143860c3788102171c1028e102048d018796248153f9038f93246ed9bc562c784d0c041a309933d722001ab36ce1cb881e6e4b973c70e5c3b79efb2b26bc7102bbb79eedab57bd78e1dbb7afaf4cd5b1b77edbb776cc1b67b050b56b267d6fa42033c0d70b56984a71dc6560ddbb56ad5185f837c6d9b386ed7c2454eb72ddde674dcd2a953b76e1d3c78f6489b263d6f5ee9d3f3eccd93a73a356c75ae6dabc63d0fdf3c74f262e7cefd5b75bd7ab9dfb6758dfcedbce2b8e52167cedcb76fd8f584d7f3b78f1cb36fdfc87963f73afa73eac3bbfec646cf4e9ebe76c78ca96687f5aa3c76f1b0debf6fceac3974f1190a94e7985a8c11681d73c411c7a0830c1a271c73bc29079c6ea6b268a0051d14c79b688c39e50f531619a291409ca0e182072ec0800107566400020f3a18c1020d2c80e001061ea8e002963cd000840e2e70c0820c4400c9832194c0e2976176e125133472c0a0831274202187a48aa0c18f618ca926c276f48b4fadb9ca52cb1dbac86aa79b79de91c79e7bd202ab9ebbe462a7aeb35a81859864f6fc0b303f0583863068a659ac31c6b6d9e631c8102dc7b17424cb4c9ccfd4f94c34d1e0198db5d250634d35dfe0016d35d956130eb6e96073a73cea4a3515b77aec791536f19883fe15d6e46895cebae9d49b6ed7e7f059e40e6ceed9671f7f6a11661ff4748d4d57d8de218e38f5d8e927135cfaa9e79db2c2c4efacacccf1ef2c70d951c7ac76e649678e75ce02c71b81082a289c6a0c9ad01b70ca39d05d8b14b4e8a1a18aa1c511268e7882890b7a24c1031c8630c981072870a0020b1860a003072850898207307080e20756fcf88107845c80820b3c980184139e48b8051d6af28004103cf080081a9830a2094c88a9281c74cc5107acf8e8844d2e6de9422b5b39eb93ab1d3993560fcf3cf784e619c0acf173b0410f6bccd0c216ad261c6e1045b4b3b23bcb8cd249411b8d1bd64c83bb5379e0a1673678e4a90d9ed5d491079dbb3ffee50f1dbecb826d38dcf429cf39e15e6bae3ac3555b8ed95e799d4e9f7122d9a7f171d610a7b8e73ca55c37537f23af1e4d2ed927d5f95265271d3abf72d02ab0d41148a077c8f1029a79ba71c82181fa9dea2181782728a283a489a81ae4a5f9861a65943106943646f83162943f08618612b008018e4246c0f1a41b29d698020628105245071670b8030f44d021a4358e20224a0f1ee820830e4020020912523802094630821d00410e9d28c634cc910efe08ad3e6169da5ad0429fbac0294e7672e05dde81275910e3191fcc9a350035a8681ce63091298c63242399c5248a6c907ad43ab6a10e4c6d0634340c0d0d3b650f75bc466f7f1b556ef84643fedee0ed6fe839551255a3bac201c756c5b1d5e370c3b8c2cd273671698e3e8a718bd49d6b1f4858863eec131b37ed6374f129d63e10e79b77ec43145fe8c79ad6640e7bd8a358f6c08a40d4718f32dea375ec10083cee0134797cc112faa04a431e0291a998a31b04f18638a8f13b8810c41cd5f046358c518c62e42218be28052544310825e4600415c0182a3fc6009554a0020f58000216503207e80f481a5b400336c0be9364e095ebf365053ca0b155460c6210eb18053ac0800ce8800640c081085a80832774821aee32473be201c8ac98a52b63a91358e4110f31d5c96975ca565c9ca62da925c318c9b0463cfb22986948e330836a4c0a21e31815fe5e636c32944ca2203543b4d97052a40115693285d0d4fc4d6f7ceb0ddee6e68e72e56d7456ec9570324ac6dbb8e689cc69cbab88731de4c48a3cbfd1966af6c18b01edc3193608236ce2918918e8c1185fd0c33ed8b18f6324e216d2f0822294c50e7d34a306f6e81b51dbb1083dd0421736c0859ce4f10d44c4e012c680040fec01167de4020cad58873f5ea0077b88234d0eb217f122f2a0d80d845f11b108358c218a278c000424f180903c008211980c622aba51062c8081bd5aac63b33c800556b4008a2180628c75188e44b63e15399662807518c8888901887d2c022d20420ef6378327bcc218d2904a5662a3da796cd33fda3acfb4b822a76cd1fe6569e394c72af4920c0f5a0d6b81d99a094d88c27e2a6a519089a1402735434add906da1c1d4a5180a2abcd5063647e49b462fea1cf5b40a388d6b9c6a60651d2812471f216dcb78cf2b52e9e4a68ecbea072d94600f7d60651fba78c23e7653ac79f4030c7920072de2b08cccc9e31ef940022ecca88f7d808112feb887336ac08c7964f3be3c409c3fe660890aeb231353b88738fc818831d8c320edb257ed12543be06985ad10e9978678b1081c7400032802c1073af0309684ef61153089c6567481573e0c042d30898d1eeb8011b820048f65802c65b98003dc48622b32dfc524cb630c888c012990c106067be30a64e0996b480578c2821eb89803fe55a61a299b7c639d78d0165ab5558f1662a10a3d25a36ac0cd5a3da781357b4e2332fc3c6e6420739919ae6333f0f88c6604f7994a8de6867d33877449e5dcd8c42354fa41073a50451df95c74ce9e020e738e836af6de23bd6dd1077da3959c55a37a40d9b9ef189461c654ed231761f04759dc612a7f2c220ccde807326a51167de4030c8ae847aaecd10c16d4621fb578c1328c110e77f8431747f8c63cc841076350e55cc390423ac8c1064bd8c35e12b2e443bcf1c878c50e22fc2a07449af1083578020d14f801082a70d9c5aea8033bbe91c340008103c4f200b2b472c670e480031cc0619655112e11d0b188ad6f961a3b1f2cd94731542e6063fe1db0401644c08125fc287f18b8091c76d10c6a4cb2576b5a2d5ae8b2a691d2f63976aec73635408225f80116c680c52f88f1db3fd1b33081224c620cc318c7b850a0c8d5cc66449336d04c4aebeba094e028251ad09046707ac31b3dc895aa35c1e31dfa7187a8d97e7354b3aa3ad7396fe166e5aae1b8a9a3c171cd3db2829c61e37c1dfbe023aa52aa5206cfea1df6f0c75bd8b89ef332b81e82d7d67929e8eaff50052b750cdebcdb45958714c422fd8a1d8a8fe78d66d0020d4328d15f19cb8006cc880132c218054e20048d397696082800045654f116c55245031f390256a9222523c0f9b364c0c36739fb074cd90117c85f095654e6134421041cfe70c10362060229f001138f68c396aa11ea2f65132cb09d0e79b3754edaea8a0345c84216dea0db57a0c2cf809106a6db9ae0220c41312ee4820c7140c0acdb06196aae74703403013be75a1bfe5007b1bb2176408775b88a1b029ab88b8f6d62334f290f391bc1f2b095cf7115ea800ebd9b87e5a8a2ab80bfab903636c18fac4095356b15fca00eafd08fba588baff8128a1a88b73b0b71a89dfff88fa9288807091e7983247c7108e1c9246ac0a462580425688123380193e100903911f51939e8a3b858428086733e29ab38c77200e783b2828b250b7001226b808ef91808909817f93d8a73c3f539890b60260a1812c1d21f1bcb801008091a50033ffe78024858043958849f288554108562f0866df28aa0db26a7491aebb88b79f80123588225288125800336f084a5f30b68500538688454f83fc1a806acb9276b9086025434c91087b2d906465b0785b8867220a872682ea0011a50c121d0888750531d78101cc1c19bda41078ac228ba9b0fc541a253c90d68119de6280ecf39a9e8009d2a6293f1988f72c10aebf20d10148b4e7307d7199ab5083579c8a669dc0ffea81d813037aa1087756088760007030107247c10aae8860981248b1007793b3d6fd8248a90066248843688823248021ac08242a00121b3000b001206983e90744333ac2c33acb808608002304304b000bb1238bf7a800c1826915132fe8cb100845b9f34ec98842b3399391f10108193b93141bcb10e2081349003eab18923508341888242f8854b14c1f8630b36aa3febd08013589924c8022c800347788561788657580543200443308557503a63f80553c08442e0045ec0044cd8056230066bc8c5c81028cdf00cce70b40704bb50134cd0103b7079c650bbc0b7aba872f90c895ac7541b9d264a35bb730ec8b48ee108afe6b80a53f314339187733195fb5847860897d15cbbafc08afe380b7f040b03f947b35ac24c63088264c2e12908de89b14562428490860d318562980550d8855e508421f000208100e8a3988f8ca5dfabb2c89a25113001c12ab31d89b228dbc98761ac8ff1b8c362feace933b90b8098e98b2c1389ac8b5109f15426434411ec338234c0824660842fc0812829010f6802b46c0663880677898b9f9b8e75aaad1bc9bf25500122c8992948056b80852720023810844380032318023858821348021d00cb4e50054168835f588c804a94ccd88c72404071900685a034cef80cb113bb75d84f7c41ccf800bb16cdae55e19bc2239dc499a2565915be938e9bd315d5da39c381165e191dcfa18be7c00ab4c0a372548f6ed140d41c8b5d31936eca26fdd0c746a2cd2f01c877a99d262c88311dbdd2333db892865e900324c0010fa00112d0001d70812c500531d0011cd8010c2501c61ab8027838c7b2bec65a800a382c1571b88afe33b9364443e873be0278ac3f35be28fb3d06b8804a3db89378000880008ab1001d388135909829108532f88024c0045fc8843718855378021070022618010f808352f883326883553086729813117cbfb5f00d11308222208122288124d00227d0022c09011120024298044338041fa0802458020b20820e200243788325580341e0046538aecc988cb1e10c79a98662b0cbde949769b0c27478c61cda34c11ccc7920cc74f48d7291cc54b18fc20b0e7e0d8feb68afca44351264137094c1937accc963a332d11633f10a71528b76089afff00fd5a28fbbd88a209c462ffd92ad60c2f673a46c3a48143b4871e09d07e99d83e8860c4188d3fb0663a085fe27f88013308532f080227883395002a8dc0553c0833f588387d1980a20012f53be9dfcbd8d0349335c2c04c0c33d8cbe29ab3895244332a42ce5641f3bac808d23d413d1009141812578833d803d1a08811108012c4082372d01beba8926f0045a08845fb0b9aac42209aa9302a8a514188225700212300228f054edd1813ee8834230041fc08029000208d08121d0013f30843e480343f856047c14617434e42a076830865408059e31866df885d3824006028d774046667407b71bb6d78d5251c38d741c36d2299c785041cc4422d528d8f1b00ed07c96f1280be43829c9890ef2babbb428d2cd1c0b7b548d78a08bacf00afa500b38398beb45427169fe07b30a8beb9d8aeb0d0b261cd3949d4288404283f8868888866af8865e18054e688124388112b0803a308552408334688462d8051ab03154ca18ec0bb2263009ceaa800f104f0f6801ec1b4a417c001998ace78bb28793be349c251651914a0592c59abd8bbb9187f1001d08021d488234f0044ef802fd1981130882166881e3cc119ac18015f09e5168066f1013a0b3db0250261c38011c68822528822a780238c00223c082343884b384820ec88225a88010c0811ca803b314843a0804701d5746315179510869d8cf5d68046090066a40d75f5086c6b088b80b1c7408076a8806709846a0018dda4da2fb682de728c7cf0407dc8807c04bd254fb4638fedb28c7692fe2e039df200bc9491cebb8d286d58fa0898f259d96540127ffc847093a8b6ed88a811c17ad0087fdd864d343316fa80883383d92e59dee308647a4843fb80348380211708219e8001628011479a55f4209548a920ef0655402c9903b11f73938971c891ca0803f3dc3a34554c4722c939154f549c3a5fd4eecd3800e4801c532023770811678834790011a2881fcf1ab4a1d819b810355808432a0012978056ac0220aaa87753a0115e0002a388451340222b0835830cb37c00237d00238788364a5810ca000c202e7c325044168846450b4176a8c68282165208654e0844ef0855d780662a8065be092742887fe283b779886593086d382b1fecf180874541cf9f80d5e4995b0884c37132f719ca0cf6195d8a064aea8a0253d8fa07e0eba389aa306429b6693e8b5c75411eaae9893eb0de5ebb5977fcc52167397317da4f60348d37308d5eb97a1188a86f4066538850f20814e380242cd80253882fbfc110ca8000de011f34c389383acec749881bbace72b1920ebacfc7198fb393e423509318c32290bc9e6643e8b19e60e60e12378d537d88545a0812e339224c8810f00810b908027c8813e90822640025bee80165083571887ad80961cce960d20012900e86a550110580343e80442f0833ec0022c488222e8420cb00054728119e80343d86d4270046208d112ba865fbc0c6b2086126a4b4130fe855430865df88550f885decc348198a405320647180546f005615086757088fe70077f040ee1308b3ae98ad78096530bd2662947387b96090a27f25813db821638b958faf0695d610ba39613af306aa30e0baf90deb010c2f085f0ee3d90ad10976cead8db74abade0e482e8eaae46b1041187a158c870188ae391066338065f38053f980336908252a81fe1ee5aee8c2cf729810f3eace56bceeff4189a641f91a9321b7991f544a6edc418f2a1326b1ee6ac2d328dc1802f48020c303963bee516900104e6980c68812070011cf80064fa001d033295e88368d8cfebad2d6d51011518821380823ed0823430c53a28844e88053890822580028639cf8afef180363004e4360446808543d98614dd06616c8c6750856770054678686868cb4e5084baac069ea1865d40056f20e963f8034620866128860d290669e0951cc5d7c4e157cf299cc6212346561c136c95b9980fbcbd0b00ed0a13dcf5053f9a32b9a2b3189a9abe0f07ca526f41078ff5de82481009e964329d9034e1e44dc64d7b096be6e90e84f8866878d963f80427b80362b0053530446016b215414f90aca50868381be9328a19be299bbedccbce1bf92bb9164f0b103887114979873e343c8002d838368c9887d111318377643a3e1381a5f3b9be8fd080cea2c932530a272082b8f405654027a35e0229388449c0f341ef8335d0022c3884428003fe38a0811f2e1f9131190dc00242e80338f08341f085167a146b8886cc607465d8055ff0834700866d30064e60855f28066b4887683805e889867220e98c568662f84d65089cda0de5ab905d4b76073cea2eac58a252b15dde35b5493e8f8bf555799c1620f475a8aee7a5469a5d179af3d81640e28fac107640ba0b81302b0c1fbd346917bfe71de21953801c65af6e1713ef8eb1560688308601f1055e68044758843418824140052410011250aced5c5a4145771671980688800b4e6c884377561a6674371f878b1810d0800c602cf391a5573a090c6801e15b66e5bc1816c96691916b0640011cf87c41fc801b18b887b1182003e6c87a000e701f10a0fe5348b0835f18975d17782c985c0dc8024348832c1804c3ed8337306223a0012310810a10be8a19813ee8844e08844618056238b460240665c8ba72308669208636f8035600086ac44c7132262d5cb86ad5a2995387cea1b547c06611f3264e9d3c79e8d0b99b276fde3c781eedad7b0712a43c93f6ea7d9c570fa4c977ef5eb27c97911d4b79ee74ce63e7ae9dcd79ee30ba6367f49dbb9d32e7c964273365c6a64065267d67d4e84e77e6daad6bd76eebbaade6b482f36a0edc56afe0d8950587d66d3b70ddc0892bdb6e2e386fdedcbaddcb0c5cb86f81037ff3f6cdd8274a8f4819a3f4e4d31f25446440a0e0e001030708362f5880a0f382cb141850fea0f0e081850b203a3cc8f0013303cf9e3f3ba84dda7205d2b51f60a870213385cea5773378901b346807a54d53e8505a830b0f14a43412216149090b1f40b8a850c103ebe5a73b8018b246c9094f991641f2e54d9ed37aef1658c072c8901641860cc98103e70d166b404104164de0408307153cd781148e18d24927a6f852cd36d7a4734d35d728238d85d34483e12f769042cc2f8dfc528c32e2a4138d31e9a8f3a23aef54c30b63d148736339e684638e37e1b8630f52309d34a4502799d48e9043cad34e4a2c3935934d4c7ee453525bf9a41395ecb4e38e4d51c9570f4e3121c5a54e4cb6a3e5555f7905d44f6669a5a639e6d405175c5fb5e55638fe5ee9c5975e7deaf50d38827d33e837e20c06e82cb490328b31b34032c71333146142050f389019030c7c966967081ce0c002b1758669a8c5558081051a5c50a9031e8ce05c071528875968178067eb0797968a00a90e64300206a55960db020784961b03be618001a8a4b1a05a06985d10ec050f5040ed72196421431fc414930913837c024928c57803143bf258604115f84d510513599c90c1114bfcd784061e9c302007a6418083066bacd209268e54f20b34155e130e371642e38b41c654530e2c69c8f1cb338ea0424c3ad61c234d431b39844e358ca0120e350851a35739e58485ce581ea51b124a4cb5640f533287b3d4472679e4d15350c1e453fe9c72f1e84d37ca78334eba3a71d94e4e298989d49663118d9557636e95d49a7689f39558d2f045575c6da925d75cde9c35769f79019ad79f830a33a832d17c730c25b38052cc1c653c9186092aa0000168c5c576e9a697620adb67a5c6f619ada15eca9b69a02e706aa6a759db81032d58d078e3a38e7aedaa0b74e0c206c55d90ab6e0ec86ae9e595b24a020d2e74d0c105b63f70c1724360514a2ea2c49144087560528a3757b15302041a1491c514fa4281857f70a441bd09179c00071619d8b66a139df8d1c928a5b0c2e135e26c930efbdb84630d30c06c43612a7658334c20c418b38b2fd7a0e3e28be0818e727883116b304639d2a1a36aa40c1dfe42d148523642259dc0272b2d7189cc32f81196bcc423f2a8093bc2218d3fb5a319bcf0852f8e518c5cd80218d1a006c88a5295a058654c5b6a9396cc921674aca987e288535aee4297b3cc256d6fa9139ffaa297b41566507bda53a10aa317bb7d4319c62886301e0109483c410714e09d6d3275a9d23cae71ba72dcb59893293142c0029ae294e14853810ec8e60217505cb136b3c65085e634a341400634a081dd596a90a771c0b22c759b6a3d000210304e0646b300d48ce003aa01010832e0821680800652c0400794208736100215c6489e51c081052d60e10425c0c2240e0107222ca1083ac0c20f4e901a1264a1091bb0cd6588c089550cac12a8feb0c635d2c78d6d30737dcc7cc52f92690c399cc2117d284430aa01c075b0cf1ce5d846395ca1064b3050193b5a888a8008b38d0c45234e63074674e2339450b02357da49466e920ead7883179fe0c42718118832b4e10f9890831ad6f0075f14036286f94a98327226acfca44d6fd2d23bac2416be80ad1d3f0462d1fa3236bc74632fe1d0cb4947f88d6884036e07f1d3db9cc80c63d03417bc38c63112e187417c80029114236c60e7ba584dab370cb080730ed929e4c42653649ccd24617399588906022308816a5853a9e250a00216f080712e4082e874c002a7c9c00524e700085c20037374ce073090b9355ee6545f5c160b8265ad0a848004b8ebfe400b8a608809252f6befb00007b45084261ca20f75e8031cf04384262cc10949f04011faf0867991200224d00009dea01f55a46217cf48a6c29a99cc6a4c6363d930c61c04e186f34d837db66d598eaa218d40b881b0d15086cba841d31bbd30470dc90a956c8295965cd0693c314a3e9bf691768cc3186a0801083ce081ec960003e041c21adcc0883fec0d8bc6f82174a59694ab88254eec18873900a58e33bda36b5f539338b4c296b279742c3ce2534b7bb4a7c0a0d44f7f328c6108230c4a30410e72d88323ec20074aa081063950430bc06aa9d13c8e0119c09d1f31a59c0598c65a6be495a74257aaa5620a3898e92a063e50c9e06446afb6394dfee61459aaae6a2e338774ddaa382c46a766a65964ac6b05408004229c8004388043278a618c9479851d2798020d5450882560a10a5200020a9e5085285c93106c58c210a6976632af210d9df0842952d18950282343c9bcc63ad6d7be6840c316c4b0c61e7460875f48831a16f24602c7518d9356c317e29dd12e6c448d627022b682504314d0a00445584381f0dc893a6ae691787c0467ebed880749ad24f854a3144dd8ae07449020def9a6024708441a2c4b832734410d9f20c656ba94cfa2f8c42cecd84a37acc4c3762cfb2b3fd99a58eae28e23d2052e6be3d34ba5280d71f4c918790187320a15a86f040f149048020ddc20860fcc20092da00010fea090810f9ba6a997b994eb6ad3550e97a652c68171058ad54705e95854cdba8c713a6c29deb9e6379dd155b31eb7bbc3f9d80177749d897343815c7d86572d660004542083126c205aa6f90e0d98108420a43c109ee00431a8d10da3a8200b5a9884210eb1842568e1043758820528e0021dd060092aa08109b290842663a0044d00c20cea608842b8c10d7f680430509b67756c431d18524528ace18723f8e117a5fd841f72cd8437e41a0e6b604314da207736a8e1096c7083139e3084263c81084f58c31bfe100839b06110bbe8d1461ec294a47ca4f1f1407546ecd1917ccac31bd4e0c51fe480831990c003ab3a5506c093010c9840071ef85512d8fee0074818231a334757d5aa5ca5b308576c6789d39ab454943585e5d874b9af10e532c4b87c4530dceed349f37252012f7fa5b748851cd0c0ee37e0000320c042192ed08148ce9b06bf8c7853e1384950296e728a14d55165b5471f63a636c02c4d68f60dbb0de3d8fdbbeb40ae40c3614b69a654ba32ceee48526cd4dfe134c75fddce1cb540088c401abc82313483ddd8053b34c01434161648411d2c410e3c412d999e08e8c0090c8116a8c61bfc8020f4c110ac8a0664009955010e44811ba88232400385e4593ad8e03644c31fbc8220d080db3581124081134841133441121c411238411aa4c111d8411fa0411aa0011ac0c11c30810e0c1d1a9441fe14240112a4011b7c8112b840eac981232883394803c4284331504343b0c3495c1048449037400220144331fc82283482128040058c8018a4c11e08821f30c108f06107d04012e0400ddc0011a0c11a3c420a5d118a581e8b284333948220b0c1138480df950127a4827b6c4d528ca2519cc996381b755d1beea1453794d4f2bd229eb88560049880794331448614b44077e04eb07807282908ede8d88aed8a6c0c205d3d80e3d415f959cea868caa6849ff61d5271fc5b67f01fefacd15125081f898a674852a82892e6e0dba86cc6bfc58ae6588a71ccd1076c5f0bd0401ab4411d3c822954c3388cc3092c411f2c41122c810ee8801140c11248011604fe241664c12abd811418641f1c017880d61112c10e3c411dd401304c83fe4cc3322d133345c330a8811124c113c0c11118c8101041140c410ee440113201114261132041153c811202410e44411a04821d1c48de111d16a0411ba881134441dcbd812d40c2287d811c009b39c0039774843d604937a40324e4c00dcc002958034128c32e0c020d5c400ef8a41bccc11a7480abd891068c400ecc4059a10a097c800b3c011aa88112a8010f2041128c40e781070848811278d21dfcc12328c3043945ba141b5798c557a8cdedd945d9c8c55e78038740a661dc489f489130144323884227d4810c4c4b5e95405981807735c707588026910706a0231e1d8033fe764a6d8486e4888e8ffd8652c151f825876e18ce38f2d1058c8082389520194bfc61a36e2407ffb59f6e6a0a897d1118d5156668c0ed04c109a480dd31c110ec412818032da8c0f4fc0014544012bc411d1042cec1812074822110c21b98a76389561de08007908009e00021ac422554822024c11dd4993110c3345cc3fc6c033174c21b0c811200c114ac0113ac411be000ed180111d0801234c1114441babd0113a4011c20c13fde000e18e81194c10ee4400918c11f0802163041110ec114fc0d1f7c4112c41d14de9d1c2803cc0c853a94c308f108260cc15b3e022aecc22e94c22870020d38c11e24c6279c02243c022724c18771800794c0104887fe26ed4019ece1767955e881c00880470be4c0262d5d2801c21f8c023e2557947c0d4555145938e6b5b98d2dcec22c9c022d94822894c22e1843dd58913444833718830afd4108144107a08a6956ce2455001e2441701c8b1d9187063c5c19a1d8a770caa56686e3885f6c0ee3c339c0ba789c18290e8e6506ab7c07051c00e4e09b82884ea8785cc785ce5cb98e82041c699cc66bb4800c70e96a504009f8550760c1406a813ff6c109be4114ec8727c4422114010760c009688003142a106401297102271882c19802813282c4708332fc8231d0a02ab8011638c11b14010d64c11a4841ae49c10cb4c00cb45b8536c186da24b23e811bbc011bac011670fe5209a0258bf2000d188113a0410b84290ed424133cc106da81202c421a4481225442283c4276ae8c2f38c111d0800e24811a74001aa84231908221eca913b8c0073c0127a80227d8422a84c217ace3e84d4b0e24c1ed24ecc24e8b0be40027bd4a6f98a30b90000fc081228cc22e14433ae885cca5c555b8e928aec90fe1175ac497373c42595580bcaa811db4411422c117fc8129a8c2319cc227c4c11ef20e6c041d69780004d44606888082749568f8db6ff6d81a81e36c7006af78c6505d00023447d059cbdb860603a86aa6689f6620c003b00667284789dddba8f0c66d264be45c46670827033440b460eeac58c6ad1299b520520b908021d20010fe94010a18c116d4c11d68011cd4412174c22a18c224680216344b046c000284000754c020f98a07c88014f001841482215402345c833454c32e84c234fc0294b90226e04008cc4013a00111765e08e4c008d40b0ee8001338410b60810e80400bf81d1324c11ca427bf1a010df868fa22010f10c110e8c0e611413bee801838811bc88109580b05cc40dc0d41140c821a90c008e0c009804008e8400828c1277c0243990229f0422aa842143cc128a4821dfac21260c087adc6dc6a9f69f0ce08c86b258d800b041d28758006dc00faae811ff0cf90665e2070829d52433be8c5ee8185b3e15e9cbc6938340324848008404b6b64000eb0c1114cc11bd081fe20388118b4c11ce0811380c01da5001098d568d4060a88c10634c0bd110b674cd21df5edb1909f7770ce66b0266bead1e4da8665302ead0c9972bea6bd55e3e180d26fcc15031895a8e85189055c57d5aa683007ee2887e2cc26065c0052699f0764012ae4421b00c10704800580800af4c17ed42e1f0802119880655c8a0e1c010e488007f86f1fe00e5af155114c811c788223500230b016fc98c2b83e43210cc10eb84003e3401dbcc113b4c0afaa400b34b00b88c00b12011fd080f5e940192cc1132001129cab13d0400798400e1cc113585810ccc010d08002b2000ee8a40397d5c695c60ebc0223a4c1a182c00ee8404aee0008400127b002305cfe1131d8822dfc822dec0231f8c244144207b08031df0e5299e6b434eeedb8ca76fdac77681777b0302ac40f27848222448118d81d1b8402309893953cdb56bc8556a8c359b4542b86acf5c5180baca3add4dd11a4c11a080220444a074c4108544a6f88800894c68ba1638b61c61b6f8609c8806548d5344ece653c23a8b0e6e1bce62469aae3acd86634f26d76a3501787542b676844dcbdcdd10368d7866192ed5c86f6558b539d46b0f8940e204109681f0364c12f2c4221984106080007789f036c00f5f48140c2011494800e40c13f66810eec0014bf012b0db3d191800e2cc12038c220bc41192eef35a48229b84227a4010ef400075c8006ec801dfe68c11bb48020f5e6817840083c70098461077ca976c5f65595405c91c70223c114e80010dc400958982e16615aa6c10c8087e9469203888013b0012108421514b707b80012e0801198c244cc822dd4e92ea4022fe0a12af04f26b40113880112d0806886de8779802569c0079c1e79b04076e50b740a5206dc002700832fd8022900021af400123c011e3c822850022400439cac43950c51f2bd4538440324c8c0a1deceb468df077c805b81120fe4401908821da8c110b0c10c9c000d1432233187fbb91f57376e6a220e3722c7a8d02a66a0e303f06ddf9ed1192547b314f59031b2ac24f21de5861e65460620f5e4e6c665648a7330c7dbceca03fc80fe21e4c21714476ae04e057c18594241e088400700c18803800010400240400790401150cf121c8116f4819a178220c0011b4c1d1c78b21ff44120f8817f60c11318c21bbc811f38c2334c038560832b18821f10021c58210e94c00c3801f594c0e941b483b6c00e9000a36f1722c2a7976a806f90003fbac0ab7c800ec42b0804010e60d214a081eaf90123100212b8000e10810b68ba7454801bb04106b84120ecb61a10811140cc3e3794b7a0102f9cc22e88022a80c222f881e0455f1418211cb4410e4c810b20c85b798011448112a4811b68fb1a2481a7330289a4c22ffcc1134c018cba411b14de8880d40f054a25db542930c21625c10b6fdfed60fed26c8b70a558406fa4705c3e81127c4114a8c1ebf09f8fb1ca8d8deae236b26ca871f8710a6c924a33aab167189c6fe4cbb2cc516a92400bf446a584caaad006689891e218b9655c4b918dd1176971a680122875e957c1b00c90c07fa301108800b4fe00af80ca03004000180b0388d55da9ab966f807768406a6ac006745e15ac5214c89a163c011310421d34411afcc1c98eab456241082c010924c12d95ba81f6811384806982d20c68b307cc80117052552e5949a62479942e0dd0c09776800ce8e243a73012e4c01a388220e42209dc4086d955570d4b068000bff7e526814027c86343f9c2095dd12ef002ff34141b74741370c223544220b4811dfe50c222700223000220f8419f3f02251842e9937b14d8412010c289a242cb86c2118c000dcc00fa96012308021a70826134c3293cc222a8011b9481264afd1cccc10c04d9849f0af082000914f707a8caaadcc0dfbcf40e746c0f8880fb816e917163f81d3957c3268a171954598e57370e327ef557fb91e1ce915a070b36fa945b69006eb406087cc01c05c7ede80a403010c8604141810e1e105c30900285070f1c4464e0a145870e202a3ec07081440b10241e567020100102010c1c94448012c1020f2a2e5868c8a0c2850b1a7464a8b0634d9a3e820855c1b2c65015234dd2a4e9446c1ab6669e3a61aa63c80f1c1d1ea4a04953a443060c16316030fea2c650a54ea6ea24914263878712248810191262840e24495a78f030a3830710386858cc31e449132744903c4992c1830b17347ae0005123acc5c73858854205aa18b059a548fdda656a962948a29cd07063070d923a63d444f9a2e4cb273b8a00b9f9d2640da04a8c143582c4a80d2045aa489d4a65cb118910315d74d061c7450b174dd83cd1de064d99354ec4188ae38142870a353736ecf0c1a2870b1b2d8ee820c204080f3a68e4b850defc850717448ac88185248268a1054a5a60c0010d22a825020f52284105577280029428a8c0bc07103c50200a04bc2884131c8a883f16281041830c2e8468a4824a42a9c30651f20f839922bac03cf32c10fe09220a00a460861a34b0d0bf9656b200a5074ec0e1bc0e204831260b1e0092021afa288284359a78631047a86aa392570c11a40e2cdc30a5184ed26023102c80d02107370c31a40522d240638d0a309881041286484390a4bc5c638d4afac841be0e30c860841e68b8c105227008c1830c42d0610635dc38c283113e1a8206504dc0c1abaf3a286154199eec6b4746521184135f7639650d466cd925142c50d96594590271028d41ec4884134afe6884115236e30490404001251450481125144a1e6164145b4001a413544e31059023747a6f04173cb8d103163268818d3fbee0a187237a502cba86f8b4d22187d043f5031094682493234668330a2c58fee8a0ca87047a88e1ff6642692082283e7021810e5049a1035b92c843052916a8208314c480419b06e44006af1ee07343871352f03d0fced3f1830b3ce8604006325820210b2d32efbc8732bc60519b30a08144870c24d081005642b062a7190011a1862e509588269a4061082c9a58a28928fa78c3ec3ad6f0c310299878220a2448d0018824d230e4a73adc48038427aa4aa30e399890e289359e48e3090f9628c2be0e3400c1a62a45d8410943c40015041d94608206c066c8c0820b5298c1b1164a1881050d1a5b1c871616cd19104a48e985185f68b1c5175b72414595704f2986173f6640c38e4018d9c5185e78f1e593506ca1c58f474c79e4145bfe30514414524009a4114a404905954fe468c3891b6ccec0260f48d861049c5bb02b0a29e6b003affd20aab202a2f9bd5fa49a181bc17f1232a0810e20610d5118810704c4802a45a45120ca1703101091032164641d5b48fdfc03a38b49ec6713db208750b23382bc4841075060cbf6b530893146400ab2df851cb01f0f58a02503f159051cd801108dd0420e100112d8d310872c69214c7b80000a10c29db9108608a149053c70829c95402d9c988421d800874e18e20449280c1c0cc109430001042e38410b4e1082211ca10a4df083d9040189b20dea083a18420e96009737a041106d58031644e5821c18a10533180211927002c75120807d7141129afe90041ae8e8021998c1137230831bf84f09ff2a0146d2c5272822210a954805296cf18b5cedc217e19a0529aa350b56ee82148910c3b27691cb63f0c216a898052f4c810a6c49cb14a938052b44210855a0c2113df1c3f69ed002eb80e022eda141229da004241c0109db3c8279246635845409401a6a880370a8218be8e43c14d0806adc5002f228e8421b54e0c80ce2800368b00007e867851ad232842c4864521b490d1f842191486c42130b21881252350a5cf0011da001463e9001883040870772d83947b2209f99a87e2105908eee374e0b45348428110001fa6990087ee82126f24a253140823e18020b4b7843270e1105135c710d4b9002510a71fe88276041319c330212746084c1156e2a6818811d3a71364364610a7b5056212ab1083a41c20f43d00111ee438411cc807520a041fb3667a9f39ce7661890260e667029f6f8a5035298c21a4cd001259480028268de2f7c91d85dd8a297a8a8dd274e318b36307617aa488206dc008947606f11a030052d7af189473c2211a078842850810a5b2c47147248021e96770a206000041f18010eaae30210fcc505331841bbf0e3028d6248a2e3245a954ae44405d9473e1048888e76909d0eb4e0031b1d49d53aa490835c68630e4a508c24b60013e273640e2ac88bb41bb20d6a7049e44c888b7ee4000b6880431d95e0481c32c3175190641b0de1035cb001fe8454e003371ae240067a5d00082000fd1cafd388c6000b8ce0048d0b410e08b18a3339a10f9c78831bfae0932ab8811082e803200461083912620d76704489fd00883e88af6e8db0831f7ec3094134a2128300841fd4f0074704c20f89f043a7a6d0842fa441076208c41cf0a00626a4a1098bba594dc03205cd15b2735ff9974566b081fbcde00d1a10442a5291cb5de482176a564ef378510c561a43ce90c8c114e6e00639cc6610be9c852d60893c3b8c22148a40859c47e33d52ec221534380f0634400199d4e43c24c0413649e0021298ecc0c61de7be52682106e0cc2b2d404275dc5a13197cc704038aa8cf32c4a0f2c65789187098c516923105fe4ee84108ea75c80afaa0908a6c633b2369d5cca9a00159202c9d76510f231ab38b45649fd71550fd808d50f13644002f1d50426106d1289e60084528820ac8dc8942ece1108528021ce010c9341881048670c420dc50084eecdb117e70442702f1064638c211a1e8442502a16f4e38a211812074275481e65070a2e10c6744b238d109529882129dc87825fc2087213ce0031e10c1bafc4481af28617338e8005de473528be8e00948c04009e4400b53d88218c9f345294ce10b39ab6217b3f085308a91f4629426118d68c41e0461875018bde8c8f1652e41eb8b5ee4ca16b24cac2ac6971efbbd47032eb8c111caa0041068a002548259fd7e84c39aa2fef30216621a9f481004179cab3f3873032398204e0542e020df2ea8c49e08020efd87410d6390ac37a6929139f1ba36ac9a8c18604208a6e4200bfc7686147801c2e3f0baf4b3bb86105cd3871908c18f0b50e695d8809d018000e31550c742721e4b126109432041145e51082c60c108e5ee031ae04065273441ad5078830e6490063eb46128516802f187a00627b8010d4f10c313de70041af02607a44cb18af790063f1c59118ee044281ee108461822598d00931c9e10342290a03d19fa40472a408004d00232a00354e00356442f460003d6c0146487178421b178c11814eb168021176e41e984e1187ae11436cb03ff801250819768011592035c28fe6b1790a7134221b166a7959ee07eecc7d66e820686c00df0c222eaee6a9ead8748cf42ee47814024a018e952dce3733e4049c6c903f0220dc460a204a8860eca625642644888674482bdf6c99e648dbcd0aba52064841c4a22460841202ac180c4732e8001204004ce89bb46cd641c204aee67be3ea4f27e66a0fec3028ced675a8200a0a6da0a4a6a9684024aa0058c40077040100ea11380600862a108d2e8088ce008d4e20888800da4a00ffa000788000bde800d74200500e5098880dc94a02388e0733c2004286004ccaa0dde600d72200db0a006a44a0dfa206fa2400ee4600fe4400dd2060d986004b0e63dfa030370280332aa7cdc237f2ec02efe86400992e00294009550e1178a41186681188a61767269161e0110e24c19e8cc9748811672411d7b81564ee1166821394e815952e11778e11718410e766e978c2e159c60683224a02ce003a4493e70488816c6b892cbeee02e7f160848aaa49aeace216c4205d6630a2c45059490a12aa8642ea4ee2606bd48c6d71204d8882dbcee29414682e42a40a642ea9ce0ebdb1a04877ce00104484718635f2ca02ffc03482e4f087f04c126a69ecaab0b032000b63042444808c30203a2200de0801586618bb6a0049a40704ec08e94a009b2a04c0cc1141aa10f0a07c4dce00d72400ae0c00866800666c02219c53a72c60350a705b28070dca00ee6600e1841fe101c810ddc400d388115468113eca00cfc40c8e660228ff1020a2c039ae0094e00670a6c3ddc43193be03df04a9190801558a91d77e11378a117ec9156728113d000158c21358ba11d79e11478011884c1188861169627174c81114281d14ea1574e29b2e2ac56fe6c0e4640ee28b28ce252881eed7e32c4ba7e045f4a0a3983e4a46c82519ad22b06ec01548007d660083ca462c209a2982662322f9f5a26837c6d672a6410c36b212208461262685a46805a84bb422a8282100c1d40f6aa2467e8477f48cff4de6e10a9262524c8ba1c80c1626a6a0c2a2274e24a54e00142200b980007e0a00fe000084ae008a080e654030e0821e4a0d28ffca00ec4fe8708d0a00ea2a00c926c088c208da4800452e074186906e0000d9e9212064110fca00700e1157ec10173c11576e1110261101e01140c2107c0a2a2faee0144c002f4629d34e446cc09402a11042a400954011864b3183e01146ce11b69c51608f30818a118e8cc1778a1e78ec17772c517286159fe000490000d1281124c217980b31d8141b14e21117260546e664534e02bfcc345626da38e0b2843aa85682224908baee423a41e80044400212ce23c8ee00e4cb104180075d6e707ffa3ee3464042aa2257b4d412e069f104cbc30af6aae6bf1d47355cfab6a2a4af1aa70da24a8bb5062a1506861546ea1565285a68d55958dbc466ac11a6c2562a424fe744d20a0684a98048c3a41fd0ee1044ae0049ee0089a600a9ea01256a1110ce10d944210dec00f68200a8e8009e06006b6a608882004e489062c110b74c09d3ae008d2a00d8e4010e6c0df86600d7221150ae13b40411544e1133a811118c10910488134e439be22201f007d50442340a0681845032c40095ac00266e0137cf41e3f63165293184e8116d48006e4001562b3184441e84ea14f7de1187c0118fa741612810d0061103ea1577281b17a81174a811348e11142c1147221112ac2d634840510903180d556cf106b98e6be4c64c07c0448f6239d3224a5548e02e412d93400097ac005cae00dd400091c6d279b466310e046845228194622428afe467ea625c99024250464ba53412c4026565222aa706262c461f04b81240af4e66e25d70b5909e200966801180c290f2063d8b3240b422730e004b0a010880008a48010e6ad098a200986600790a00fb0201056c1140c8110da4016d1000bd8209286806ea6ec08d080109a0007e4f22b86007d3a0007e806f9dca08f9222073e607390401058a11418c10ff6600e9e200304244376ab326ca291a0e8034a2e5a2d000430c00d75e05e4fa0137241e880011552011892ae97182107782007fec0e884a11780814f7341056f36e9b6ce1680c116a667684fa17b52a11776a11d75ce14d2e032cb834f2ac339edee4248aff0ea564056b2681ac269f92585fcfe6368cc030774c4645a068a58806ffe600ea2607827cabf22e2323b2f22584f407dad565b6a49384857b3ab616c2882a46dda2ccf8636788854ea6e43086414f4a06284bc6284c108004930d7d70a0f25a2c801cce7e52a8008e0a0a7e28208a4a0173da110fca04bfa200b86e01004e10870c008ea860dee200a98000d8c8009ab514728322610110dcca60d06610fdc000bd0a0fb68600d3cce0dca200a88c071941348945147fac203fea520338008dc8004f4829a5a80311c290e7ace170636144221e98cc133dca06d9e400d46211a541318e24c0293ee09462010aa80041441ce468111c07434d59495e29113f4e32140e58094118381d27e7c15befe66623edfc37e7a55e53642eeaa84314e40095ae6321f02047200874220af04490da4200e52d73fa2a4f29ce6ba2a6472fdf6210804c20ae49c882d9f16e07e080402088f9e148884aa70a636f7667a4822020a871d4a40a3a66320c8208eb2005a629f1422252064010cb1083c6208348a04ea207096000774808f0861085a72493a800898c0098e006cd8600de0e00d1c610e70e00daa40b732400448207b096c06b2c9090941c7a48008d6400abee0af54a088448921810682cb236176cb512eca227860082873b700c4a266a14f8b2114fe201578e11328e11468490e72e008ec6017ccd11720a111b03ab166a1178ea1086e801194200300a1178ae1fe114641b1867681134b4d5be90494710432ea2023ecf246a2261e35a244ad07634d9a3364232a8904924007bcd5c974400a1cc10cdc400afca00d28a5f87a8404a6e00686a02e902004d0a0096e2624063a87557b0c7d98840cc26a88d8d80a4fbe6840b820e062dea327954b892264a308242117f7203648825cf5d72ee628a3789fbe0b0194bb202af60350402049e00430250daa80e6b2400b8a00870802226ae204e2150b90c044dbf509f8980688c009e0466f87a801cac30576e00b0ee60de0e0b295a00d04a109d6f064eef33f2082716ce2023062b73ee0064e8d190bf07e6c824f3240b8448011a2a7101861104aabb2366e1642410de47b148efee71418e1148e411822d0768c210a64a011b0e0030c81817b411892c7eb5c504dadfa224cd53c84c888e72e43dc50ee78508369f8c6055227fcc7d4d6800dce728fdc00107a220d74a370960ce1fea00dd4c0058c000d1e632d29000196c0114c3cd46aeabfcad0207cfba007e2bdd8d9bc849889564a5f40e88468782310cfbf7668673a6820b6d0581da401eeb94390847291a8000a40bceefc725f3b043640048880be346006a0202b8d009264c008cced0b35a0b19180a9b0400aaa20299200149b40aaae42f52ea005b2b90486a00aa4a00974600482c0bc09c10eb0402e6ae66a73ef2021e052cea5224880076840063c805e35a400b1b4035ca071fe70a00d1c8108288e13b2b1eb4ce1134e293bda8013e84ce994ce17feac18d0a00300210d3cc00f6ec11746707f17eb977e09ad6da11148806d9200adecc7bb07aa260cfd04dcc0134b000374e00490eb6aabe6140bc139c0ba0de6e00fdc403b9ec009d2e00b88809068a07993200ada40dadb608e81ec09ee5b094e8009ec2207f6220794c046a9fb027c46c236e0583d08bfc62942188003345862060c4322e20422400633409bc883439438669ca807e7ce853ca641489210fd2b42f0e941bacd7213246330778432a4058080064a6003d280be410c0e88600694e009ecc0086cadf21a650492200b22c53109010ddca08ce3828a64200f77020b76d2fe3e149905ae3e0792a00a08c10d80200ab6793d2612ee16fc8431e0cb2e823d7488025860a975e253fe450498a0121ee1137cc114442110ee377a38e11650230de420148ce11b9ae11bcc91976c41144e411afca003e4c00e3ac00d7e81ce7ea14f178b1616b8186c217a40e113dc800e085e0db659cc40e5e69060074ae009f0a005c48070d4c00f026167f740076e042220800566600a68200e70a009ec40104e7a1178a004befaaf8860ba5ae03d0868cf88c0052a200bdc44090225f99fcc7a499a046aa00520c97ed78004e6782ddd501921424938a4c1018204890b15327cb87041838e274fa24419c22307912146a41c2182c6cd9e236b783ca1a1fe43cd1b3433547c3951e141850a141e3858e00002161a0e5c7870f080c14b040b10f064c0f3e582a13f8732188ab4a7ce070818081040e000819e3e0f14f0e9d381830f2b8024d1714245952944b0607938a3499f222b1d3060e0f2428b253266b40042e44815416f92146222050e1a0d5a2b7c98b16101850d194694c8004283871147daa4b9818549ca0a185c3aa8e0960241d00f2ecc98a1c40508d0173c7c4821a3430711342854a041e4b01b5081fefc91f329952d519848992a068a469b59ca987d3366ac982f5fbd669d2a6648c31f3b1dd68c22066c97af5dbb668d4a554a0e8f366dbecc70d1c285933681e6882943224a133180dcd891b3c61cfe7288218614353cb1861a5f60800167a5692083125fccb1c6174d3cf1052047b830450f3c88410308a23de0010b247864570b4ae820461a73e8a043466568c4c4127fd0d0c1072000e1861f8bb4f1c61e6d24f184131e94d0c41b83348486186fc831c8207ef8214820688854071b6bb82146146b54d184133948814412581ce18714f33d81c61a6c3821851c6dacd1a4081b9cb0810327cc80861321504081050c50f056520b1c7554533fbdf5935b48317a28a24f0550c001963675a8516f7de681134be840441145609103164b404104144b605184560eb4a4d5053834414413580081c41375b4c186207028010713ac5af080051db4801208209040c3fe082d78d001082318616607a87d201b4b2bd9261a4b80da36420725d8d5d905251cd1021b438c30830e2e64102d083bd8f108237f3cf2482e9fecc2cb2e9f24f2092847b8718b31df28f39c30c5ec420b29b928134807780402c21aa708e38b2db694278a2aa234d2c6812674e0020d33d070041247ecc188238908d2861318b6e19b1c69584884126a88a1861d8c00b206123a54a8040f761d21860b398871c4081ea891c81a622871c307b6c1db43126ef2b0030d2ae4e0041ad88e80840b29ccc0861b49c8002d051ad0f0441a71ace1c71e32a3f1061b76b07104081ee0c0441a8604c2d7107cb22146113218915b0e4fcc8043070f1844c413489030fe03134790f041084fa8f1c4119007d10413410cf1440e202481040628e7000461471135fb0146f1b4c001b80355144f4d091529000044a57bee443d7ae80318acc001094b38d14759751011820e47984583052db90457062d3831c310492c81441a58a0d1c6084cc0d1041a7ebc5144094f9c9081050e60d0810e43e0d0420b13cd80ae11c00b0380bac0f6def280026eaf341fd0810c54071a0a1c8b31b77101835cd38113acc10e8208451b40f18859d8821494b0052d4e21c25090c2180863a1317ca130ea9ce214bec8451428510c622c0c15e339857140b806117466259c914d07a015041774400c81f8c214d4b0b3d40d810d1802490e5ce00640a0fec1716950c3119c70b32620015b2ec090e6c4808428f4460e89a0015706368734dc2c0aac530212ca90840b88600a36b180073ef70535608b7f1d88c20cc6d5821e3c810937c080073000821608510a26f0c00548708428b0c18b38c802124204020c382d5c8fec0083308017c7c5110dd0c281129ed03f1058cf0958980f13704502d960e07e5a81cb5b20f5a842f90e79c0d3545318203c0210cf2748c19da62e3084436461066fc0821648d0842290000838d0421d7e604097500027b729021146f604251ca1104e7002093ce786cc44410d4020c1107600cd37e8400438f09bb5421002025ea041e1e4de387bf919825c208147fc400b68108219c865fe082b81970764d0026be50a096b700423fcc08945a0423ca1c0c420d2b0074aa48216b3800e0b95710c5ff0a25fbbe80509d9200745408212a8b0452f78718a548402124960c95bb6d7120a64400969c0c1675280a30e28b40346f802138c109b65edc0a152f8c2103c700269b1c0033940c31c8e808627cc8107af74c3221af108392021722c90c106a988363f4c41043d009f0e5a232d879680037ed041b84886ad0e742d073c60021a00e1840e64408293e3800724c421cb75e0066d6a53070405021c706e5ba2c180085a00821c54a10d7b60c2e5903003027ac00314a0018e309003930d014619c5c0313335bbd90d73019542c0a59c099344656a01fec20b40000870159f20aa274a19d410c024be3ef4a10e7d3901118c50853e0ca1254bf9560788008725e0a00c52089a0ede63041aa0210a38f0c00d944003e8558e2025c8016ddfc6bf11780b502e7980815542e0954cae34c7f2806a0492d80b481603518003488630b20b00c1117f18455c15318b5d98620f62980313d4c0084e400212bd30180ba5138a5d14e3a7238c431b2c01894fb0741621a64422f6d0825d0e0a5e2941880e902003c7e880072460098924bc03460cc20d52908218e450b412e8c00e6ba541054e50831d08e21180484422cadc084624421181307313e272de2038400341884219d22046342421085d6dc8095a900326b8200a6dfe98411298908334047a082a634214be408313b8e525e3dc80a020f0815726210dcf528221dcf0270440c07e06eec0f62423592534210d4e18c108001a020f2826d60c92cd056ca254622120279112e6f1a89b3bac1cb398be138a4f9a4b80a2208a99878ac90996b0ba22e0e00d7df04321b2d0042994050e4530a58133b0191a9880064508c20c643084370c415a1a18f73b5932021a2481b575cb411680d0818280b5c980aa4041450328823a789c0c285107aae7821ad02f0925d0c0081a84bfc43ad4031970411b38c1094630623ab38004128c805637a8f34ab4884e318a710c463c4114191b0f4b19610aa1d26217410dc523fe90040f1898020d92feaa0666308239b4410e728004bed4e0821e10c1098048832218a1081fb781128f808422dc4009a83302cb4a10c44eeb0588a807cce8a0f80425f656b42628015a9ff11f098a2008332881051f48020e88908324f4e0423378421998e639a4f54dcbe273c2070aec96415d80dc24d80006864083340ca20d4870821cf2e89903260f21150841ff94c08619b4443639618d0558b0d043f1e401914abca692fbebaae8ae2a433900ef9a72a9da37b7009582000a22304ca0c0642b5ad0421292d0074360610869e8032dd300073ea8b709920341be2b30822110e10434e8c313e0f086c03141030536a5032c20021d746e5c693099126450011c88c0363831b0fe501c4090402570b207a5800848001919900176010233607d2090581ea02daf92106ad0098fa0089d600bb3900abf60083a900468f009f822078cd008982063c6200a90f007a6400ba5e00b3c660ba0700a27681ca4200a23e806481002174077183040f803028c400b89e0068c200880004b4d200780000a9440758da0088b206500430aa0c008ffa108f5f2066ef0098e600966a771c6810aa4f0090153758f60076a200319405b1fe00149a0063c0051fde40253a30338e22c4ae004add30232a02c3390013c407e38e80268485e2aa1136ec11440e1001145047f9006688205857214f8c76bc73428a271024e002b9e0114bf84108ee22ac2373b44c1fe4cc2347bcc247ba3683ba6c84c00001551d1001640021ad0004441012530023b70027211797d80055990056521055850054a20077d0007cd670774030758600465f20445004027008012664a9dc12d24a20421a001fe130547c0180a11372580502a1141043422839212a5212d17f51e7e330327e00232c00206684a17900447e0012d40100c1205a11083a3700cbb500aaa100834b041a6e00ba3d02e89400b32650b55070895a0067f300bd4c10bb6d053a7000aa4100aa800096ed00647e046e0060290617df80308bd809194b0081e89043a330ad661916b96664fa7087fb00830181ca44042a15076a2a0939fc0088f000a31b88194400a13085448fe30021fa04420708d6270033da01a3390342a920322100256760446a0031d90033930401da0010c203f4420590840109b527f39f11610e0605100596e7214dc135cad4710d1e2014c800238d14bbfd41316f00153800998c04a498129c0633b868215bc673bc2a614bfd6980bd0005a56041c300227a00369800450200551c00127904d27300558d0046b800538e0353a000434601670302770800458f006781604479006a1874d68b03e68a00320e00217600117807f1d900210e76f17f001238003f435021a80011a100282e22a5a012bb348038f9412f7a30339a004f1d64f19700121200212062d1f4002f3c719d2086e15d0014f100ab910088f600afea6700a8c400462d0066a00095ae206f7c282bc909f38e50681700abd400cd0211dd42142b3f00881000676770278092dd1822d6d400bb4008171250778f0078a400ac0301eb34042240808905009a2000a2a340b2c5591a76091a2301ca2f085a2800a434909a1304321467347c09441105a21400338e0022e401b47802eb895031c50023cb00635c003431002ce82101dc0001a609e3290798002179373018842011ea0015150258260076dc096e658970bf000d96704d0c27039e12a6aba1349e00668d0416590015e6a4ab2119cc2475dbed398c6058a89e24ca4c81396660445309a34c00110000534a0014550054bf0476bd0042a705158d08c4070fe2150d02e437004c12205688006757002b4810459900655608020b03f204903a0372448b027df5519b9027a4e805a14f7001a906f0b95402fc100f6a35429b11417d00338b0948e644a3ad0023320021d800321f0013b10490ef627de02015fda068dc0093156849cf00951e0024ce05d4860024880067fc009be000c66a00673f0086df008c0d00bc7200c15591dbc309134b79f62805a9c813f2df00163f307c4d00bfcd29065470a33f75327f809a470737f100890000aa0700be5c130177a0bb6d0822c550b3b15b198806394b0a213b80bb6203aed4204ce82049fb40319804968407dd2222dd1da0123607d39e0a34d1069b6e507b5911306a41509fe74505ad10017a0067520088930089df00707763fa081283ae1010e210345f0016a400306c600d999280ef0048d5084a8800604a7a62c01012290a78e98b654411547613b70018acbd513b6f3001ce0023ab004ab4204246004270001388003d6036d39cb0120400434c0001b8018cc220240d0a622401810c09e38f10125002dfaa6181ce0044c504929e0045c09044f103351f0044d30056c50087590646322059d930217420451300535e00221c096d4394e4c69170e46032513bc18101fd0d20224a01239012825d002df42021a4709be406681100a4ea02c62f0050fd10451d09f8cf0096cd00204d206a8a03027770cd1f18fa8600a8940746a9003fe196544be592223e0026b5043a6c00bbe400bb99082b6100ab4c00b27280abb400a90c008f2ea93b4b03121d60b0a9c0bb3d00b11fb0889906339760a9f800a109c82b4800aa820062ce03793d1012cf06a33d0603bf0053bc073274012f46b4939229c0c204a46500851606a3cc76b6a2a5585f20010100554220781d0067620acb0e200d205131960089c00232ed00422e0b59fa8130b600490600890200a7bd0a5c9459d256201b0c70038f0013c612905001344a13bb6277c828a3b08600125600146a0015fc39543d0048fa40116b00192536aa74a0260b9002250043a002fd9039aae74023b502449e02925b001258039485005e0b8013930033d00fe024ea00439100257a20218c002d6731155e0ac47d003032a087f5006339012e3c49601676a32603a09d1021ac0bc7ed3bc0368c22a5204b798012e31401950020d9a06b4600a8a30231b910440103691f405626007140b0804c908a0500cb470afd071afc2e0af8dd01f6c95035285102a8180436abf33650bfa9bbf3acaafa8401f22b608a8fb080ddbb0b9a03122a4c0193b08b790094a0030a0800a4898c1fc1a62eeba0b5d49322673597335022b221b1e5003d7191f1fa001ecc9acf8e30143a03349b003c86b496a29417cd9144ad00670c00894e0067350014361b46c691417500573f00486930626d016ae378852c0097fe0076426028f62b435fef0c5cbb53b468114b3176cc9751457018a4d316a2680021c3003bd1a1661f5012750029323021ea0039a0ba64ca50466288808200225a0344e701144c006b59404b90502ded52a1bc0041230280ca5b8518005ba5b0139105f18d05f4fa0031a4002274028be847f0b254104a12c4e732c3ba076334002a82996ec292d12e650ff674a12646a15e00498300794700aaa10346c607773a0064140034d300351c0084387052eb0ae89600bf62a0c267772c5700a13ac0880e0074fc086b146c2c4abb32cf004c5600cbd000c20baa2b3500cc270afbe1030b400097720061bf4092668afb33053f97b0bbd90098d20421af72f160b73fcc26399b0043e0005fef01b9e2ea004958323f9e502374071d0e204da44df93f3ab83980132500741102ef205c59d28890fe004865008722008bd1dc2793228bde4b570e3382dd00441907f70ca0010e0006968088c000998f00522f088834888537c3cc19589b373c4286e2885620138a00240108763f9011c40019ff92c34000543a0780f400449c0e30804176ef305f193bb14d0001000a73a4b04b44a0121804b799a019fd1c315c000ed088dd643048b4b013b90a46e135b5daa0122c00105a63cdc7201f092e638123915104a691e9cf9162878e22dbe54605f8b065957521d083275665b49d0385198046cf0686c900806a9dd30241da760743589067222463a7041fe74fe44ea030cc5a0ddb3900b2c95b2b350a3b440098d20b172f004297d845f3075bd406347b90bf7c20bbf400777700a760008b5200a8c1062b6600a4370606a8e010e251a16c003ae1a22e1b201c10b0208e134a091011ae002239035418a055f80daf855803800a7bdc600434025f1f9086860022130d834200273663ff5b70129d0df2060025f50266890183081d151e00881a07165909d98c86cfb4e5caa672989523cc355b79952ac16a00103e5ac66a1035280026a4a0143500752700207f0006f37324400010b002a3b8024b782056980ba36be99d9533f1bdebc2d61e581722e43209d4790031b201a3a804751800452802c2360d39b982325606aa5fe81609c8141bbeb120b60f08937e4c97b9caeec005ed9094129b169c009a8f0054f30202dcb9d76c0096b905b6e30347fc008cd5d0cf67a0cc7500af28a4776100768c00335f02cc7b2a7d15232d3a1b1c2b0a2bd8031c2700c0c4ade5612075ff0091dc106a2000cc7c0afbc90086a800690700ca0c004b84e748af00483b0311a9306c6aaa608786bdce90249b0c9593910a5b7500c606b53faeb49400352f0075f606ad22a46472003472be44ed0238cb00890b003f8634a54fb4b3a4101db38a5a70f12a457012260a48eb30781100872e6b5ae77c698527bc1d6c6b317f0c3645c07b0134dd10028000453a0a4535099d9280244a003389004294056fe697008a442035150bb9ed2d11d50044fe00245d0042b81034f900443d10019bd063a400223001041b080a0f0a0430710438c9cb8c0c001050d1d0a3218a183489319518c5870808102050c1640d0408244e2030a0e1e7a7ce080c183962e1d3e6c09f3020695162e9c648041831847bd40a9b1038993a23435c410424362c493467f784ce1f1644d9c358c4cd17af4084f22519414295232c205c2112c3a64e8500103c20e1f74ccea658b162d5ebb7af92a46cc97b059730229a28406c711294f98389153ca11a75c9f4a2d12336797b15a33907cfab207d21f51a876ed12a5a6a0cb0720346860e1c1030d222136e85093f883478f1d48e868c9c0f7dbfe0f0f68e0f0d0d66d050f3340385cf0d2c10322861aa15275aaec05ec0d5daa2cb8e04f9b1b322e947001a484441021209008d1814591406ff6a0a131d17773070b10e8dfeff24073fef8f38d81050a44e04002f94380010e38d0018a27962841872686f02083168a9881882a96d061862274608884138818828624b420c2092c86c8018a124a082104299270220d2c7470a185219a7862860f3a4049031d51c888080a2674c121145c184207126840a30f179120e2080d2e7800832176a041040a3ce021080a7ca3a00295b623f0a5015d2aa8020d2aa80026982898411046303165964e1e118513409e50e2892488a04d0e469e48c39039d46823903f9cfe20820626fca0a40d39e6d8c14a115a1be126077470438ab340e8a0845d8a29c617608e9985975e84c98bd54fd438e289295ce0e1861cc058a30d371429e357453a49450d4180a185881ddb80440c403e61c51651667944a20a2e10a1030d5e9ba1851294c0c1071a3ea0418d46ee0842039a32a0a93f952e000189e17a40a28d1c76930803b7e26200853202494490a190506288193c18b039020f30429028a268e489133a3862863953ca580325a2f8c20d366848a1dc8fee5be0bf031128e0bf030ed4af8000f703704106fe2b503f0b48988286121c80e000084ac061adf1b4cca00411406841440f2a08818621a0d0810620a2c08290256804a2031cfeaa58280719ac24e14936fcc0a289e12ec4603826d630510a3192606f081c3478a084422fc8400725a450c10323aa48e2e01e30186121105cd8a0cd071c72e88498d2fc082590b0ab00223a30390595624261c4915d1ef902893d929881864018b1c30e36d898e3334548418511379a68610d419888a20617729861c21632c08e8334f6f85c8916663065175e66d92515615c5555555f7801a4052733182179236a18020d368e486310341eb1e38f404611e50622f070640e3cc47023145a40792414609cf888052c461701031198ab05444802086e40821214e40239904d06788082fe10c8011ac8c1135c00021340400319a8c05960921f943040038230fe842f1ec188363ca1030c3c8112405001df3cc7011148c3117040885434214e0ee9cd032e27821174e0023348831c58300437d4a0020b9219caf46320fec02c65054ad0c95a26b3276ec00426e800030a8080d460010a4ac0820a66708413f868091658c0084850810de0e0040c00410968a0851388000a55289111a03485219c20042790a34aec38030cc8e0574d70c2c53690011cc8800108b85c7e62d82d0b140403231103138cd00342b5e02119338e0676f08105c870260ce30e4a62c2800b9c49815260c42378418b36388211a1f8842f7c21071af060074c90832106110a40d881318f70042a42b18847b441094770831280d0031008e109559803fe23388026798921116ac0042668e18b5dd02217bb384510ee308b53a4422fc530851b4e5785207ca0203e2c8e0e72208623b021118350431ae6d0862f90e40862880220f6d0cd50f0720d52c80112305690a04100020b109314d0608a24bcc4022c68410730f0800c9c9426141841083490858f848009eda9c0072ef41c3431c0026bd0411a98500a4c4062081598c10c92608210b444072280000a38f1850ff8800d8c2843096032a098c8e97218109e0c48d00197b8ac71069ae4815a66b3fdd42c6566b519cbbe8800010480012948180e5a0027118888411a28c1234980839d1d21052218020a7c22021518010b49980d0d50e4841990e00875a08183fe72b090a78900261978e3dd9ec006a925e10410088113e2409c577a80041cf0210528950311cc400a4e50823e4f238218b02b25f7e16de33a00013a3dc4213b81c95a66b0064e84821373b0432250418bc9a4821339b8601318d1085064d70e68b00a1be4200824ac011090024456fe608736ac410c4f90831f6e158527e4290e8c38c5230611171d20410e9ff804243ef10848a861744d4082184a8aa6945c80a42e70c10d287304178ce00320788007e2b6bd921881051911820cfe208727602f031fa120115ef880053ce00882484173523a02445e6e3f1460010c19d08013fce1082330d50d58c01a5379c4211aa8016d4dca03c10d816e2d20410b98febc019d3820038d03094ab0739a39c904012a59504ad2444500b9c440573c40010ab0260494b965565ceb14555680076871095230010952b0843260a10868044106204001cd92200740f8c00c3670800dcc40077cc882148a9084276061093420810728d081a665cc04bd3bc21482c7810cb88008333841116830833638610a4df8a60c74f00434dc00047af3c08952b081121c4109b089021aa230831030d9021bf0f24b5cc92695f4060504418e063e32a707a8e00f7e08041b04110a4804624f9cf8c3284681062508020b1d78022440f1073cb9610d6ec89418d0b006393402856c784278fde00744a921481b66c21cfcf087590ce20b29fc4214cc60fe8739ace10934c841125c20db1c78e0044c2841442e10c40b7860040fc00116d69004358821076a504212d6b086208020074df8021ba2b0223b1ce108837802083cd0d31c70c06ea8f1c01c3a7182e73080241311f3963e70011220610747c8c18472d09a92cea00733c001bf8690061c988a04179c810b4a5081b578e00371fa0004e2a51ddf6cf983f9b9191471fa11b6278866fb71d915f763b331a7f900787f2b010e108009c6680926b838020cb0000b983ad259a8431110c0012cfc20957b47c00570b0251d988002b74ea56f5c203813ac489fb9c6420ad6c0010b44c0eb1740400946ed4624b8e10816f8b3deb8c6043b73360dcc9a8112b25083fe41e5606f62488361d224c3542e400a7270c38588deb89ab869037210c520f6b088d43961088648c427dc100834e8a00c3898df784ff18b5124c20d6568433707218839b8e1a16e30431bd4500635a8810683e844122a408339a00192ca8145888327482131e80125f8828542822790021ee89b2858834108043c20810bb80123b883282881e488821a31182600253540833918162470011de1011d00253128308b9a821a98811d78820fc8010d309906381307b8090f08011208020b581334b3001ca0810e68011a58b8b7282aa50981082381a523a048ab0217a0341d1840219a014569143b70830fb0806c89899b11b30a00b314630e2a6a9805a13c97fed13bca5b809539ab348b9993d9b20040310e28000bf00008c080b25a00b09b2018828025c00213e11022708003708033cc992758aa24989034680343310223482a94cac1e7008123488226282051db800a180119f89d0e680234502c3438810ab000ca39883281ada9c10125d00110000123d8811640833790268591a0490282a610a42650828dea8d55aa090e980444e98482738424180135580485b34519008128200134808454fb8225d0b6451884f16a835ab28327c881d1b1834000033148a127e08013f0000c382ab033a911f882345803215002220802aa4b3524c0812728031e38022690392498022b0181322884026a8127f0aa16488328308bfe11e0011f71820b6a8128c08404cc011ec8468f748224f8800f480224380f18da0011e0210cc8811128811600812082880e18192278c73410033b48032740034100043f70834eda352440033928844498b627f8ab0eb08069fa8833691c13100134a900b30b2189500930239005d18fb0a2bbb49a2414c3a2b6dbbb2f6a3bbd9b24b2dabb051080b86a0008709cba433c18322b30c2012450011da88237c0826d190211784907a88113e0802ab88837e80312608b189a01553c810ca0818aa1001078491438812460022638819c31010ec80138608207d0200828c5de4831b650c12ff83812200213780025240427d09b3559000ac800b72c90066813c7a9fea28738812f381112780227980a19b08025f88339708213d8813f80823061825d43943f90021a98af4f08854ea8812718043cf028531804ef11833240820b70001c30810ad00105c3c52110031760011e70814ab3c91c7003017bb8743c8b1068835f23025bcc8183c080092b880e9092a711831af838034ac22b04011389111a00a82720827acb011ab881c3680266394825f0915d69811cd0d03598027753b73620ca415084ed6a94366883857a37399003a2341e3568021dc8163449a5d3f0a1f5b4a4015990960090034810b07c2205519029baa29551992705909b59d2e6701900008000288013d8000838018b38014959820d680035238034a39907fee0001a9082288002ea8400334dd28b400315a081071081a129138e528d9710c40d48a534d9920a00b925688b07d0802680c50d408224a00117708d19e00007b08011d8008edb833410422005816d12010be800545b83044abb1413339a918997288828801c487201e440c216a8810cf08027e0843aa0000b1882925a02b331ca1938083470844a58831e48833ff88346081e11f000befc245d63b724d8811ac0823488c02fc881136001487532104003702d810b688124c08196da4f0fcd81c4f80223280975231427602f3160033c90833b000445788446088441c894d121be14f2b52f78023170373b980f34d803357883409003f04938472983391004fe39588339600337a8c436f80335700236102f3560833470d42788023f88bf8c2db832c8814cfaa0e6d8ad413555b96352284a19b834ab2a9219bdd38f329b433a441026b5d932730000d0d50182827904822ff18d1398020e80800da0018f5b8208808008a84a0a28801488c70e9081530a0118e30013180258b4d9fd800024180225283e1c0003144831190854589a011eb0aa12d08c8a5b0002b8c3537517d4d080d17c832ad081cb6b004b558232c0ba16d88183b880b65b931e84091d30b016281387f054d739025c848d10a0bd4a4da3630c8233f4a108b0a55550021778821df8153b2082090c853dd8000fc80125d02ffeacb723680126508324e0fe01921383e414142550af279803e7ac583b48267543033bb8037b6d8446508441a82548a0844a78044a805e7c650446180cee7d04c280043918a839400346d803e3819440d0a53fb8ae1b953ff4f903f46d03366839396883f07283d149822f68823278832f588c1cb815c7ca3f39f88232b0033f48cf2048a920398de740b15532998681a29abdd937bcbb34e5d936b4223aa4c33b7419fed83b12ced200f83b265a0004b2800c58009d6361ad74001380821638811218c234730014f819dd3cdb22d8b51348b107102b9db2000b1081a4d2809fb1a4bd231020d4000c20012c60032c4028be64031f10629980890a000125900325288127780216400223fe300189638211380c0bb8a232748005798e93c931fa1ce28348420e60007d82802f19520df8800c4882375882dd6c2d0dd8100f18d6898d020f500235080225e8a45b61bf39603e36f8c539b8833f60caa614843d70044aa05e50fe84ee4d040566847cd5d745480479538451e084468084ef6584444884b14884ede55e5a3eaf3988037c138381255836c0943648033ca0033710844118044a10843be05e791b0cf905e635a85f3fd85131500293ac01c562021e40822f18d14afc032ade83463860224089db50552ad2d90201c429a259fd004b321b62b54cd3b5faa2b322e10381992baa990079a203892b0210009f756329d53b0438011a989a5b5902fe1c58022558011258831c19420a688005388123d08215c8231b2b1395a09125a830d83081aefb001738420c70023f6883263842700981871055b26d1cdfe8c39d080912900220f8c427a8b8866e82bb6d832a98bd186298015955ece8c13d58833f7401bb418923869a259881884bd494d80026680123200e27c381206882411283355083edb5031c158464bd8390f52ed691833f580448b084eaa5045100054af884eca2044ad0eb46a8e5c10804c21eaf456884aed0d7ff7a844fa084ae500456b66540a82550f8044ee084eec59341506076040487526b376803056637f5b236f44260a60b82874383122cdef2650326c8812314c91aecbab468811110fe49023a82143c420fe0448dc2d42355ea530d1034a3bb2b351004312b0521b327e2e7b5a23cb993a2bbdb3b0020e80320007dfe3b33bb19b24400bf3b90bb31b526d0822288210638013742aa13316327b01b0cb0d51f50895213010ef08016f0004cd5a98471800e708126b8107a44ef98c06997781ab3b3005443021d180114198254246d0175032b710340a0582478c5570c01374003271011cbb49b943a52df08812800027a74171ffa801290473045822388823aa0583fc05779c3d744b8834010847fab577f335e458004ecaddeca26854f4085ec3a055b38055a40855ac8de47a8844468d1f68d65bf3e05e5e26bbf0e0b506072524065c81e0b45fea065469065566684646547ee0d84d5e15e41d8f147c08447d803b9c63efcb33f31c894fcfb022c108219648292e85d365002cfc40122e0811ec081c560023610035be15594ac29173882354883101bbb0dd0006293892ba5199359ab2a9a99b2a23c32034b7c1e61e6b63bb355002ddd52ed2e0002f03bbba33c9520100b2881ba8ca1d8328234306f384e5306800011380136c00129b86f11308226a8995882c50ee0801690810520129ca04d753d0188503ab0da38b61babe2c66f5813834951381a90309d401d1a58dc6bb53f64618224388253db912760c028488225e8b54755028d7c023780031394037aeb4cf0d983ef100459d625f5a58450606cfe4a906559467346a8c0e945e5450885532885e79a058ddff874da858da785cd410523df6b5bf6938697e5e83d2153167340086c40c0e5316765591684a65c9d3bd8d88a2558750b5927c881c5e001a36a03486b813278f726e001af2e0362420378677a2360021d30021604411e58b9faec290374c026088216088191300221ba806c49c23342420af0ee0209bab27200c3f500094eab310b1035b3a2397c33e896c37e6e197dfea2133881083033b5243394716e294d2513581cb87b80615b03c2cb41302a333adaa028e1220e62c405c181d3e3382090300f40825374028b92130fd8fa1bf0992f65a3557280f6381328f0830d11d05bec98936384e2dbfe0191d477cdc0811e40838b10031e7002777f8263843534482f3a386b9f4c03368803fcc358e66d2e7983844e18f346c084cb06054e60eccbe604bdaea5cf51ebd461842e3f0578a20b264f055eb08559f8055ec88b8db70b5448055a9805cb1685bc865e547e044b38a11baf04ef35658000f4e74f20408002fd69b4e8a01d3462d0bc992346099b366ad87c6993e4081a2653d4b87972e40ea13b6ad4f861a4a4c6141c44c43c6992a34992247f1cbdf992868d1a274392a0f9a284469334499a30213245640e1a4a94a049d3064d0e1d1a16607892730411223a923059b3818189a87e068101c1840d8d275f642c588000c10104050e14c84b972e5ebafe0cf6e2adbba00002153f4c6039f14003070b0f32e8d83196010506181c404021b7c4901225446468f16403850a0d18a848c221099419244c1051612103020b2148cbb8c0a041840e389ed0d0e1e10183070f2e6410412103071d4fd344193264868b1120aebb90413323cf2f68d88861e2c44919252293288912f4e91324445c1cf982fec913256532ca91f3478e9f36fc0531b25f7e82f811c8208d40c2c8239c50f20828a884a20a28a698320a28a090224a838f30e2c8238a0892c81f8c40b2c81f8a9442cb2c2bee42cb292dda728a8ba498124a868f3c920823a1e46807240852620a28392ac2888e8c0472c71f7e9ca86087a04002881d7258b486fe7f81e021871d73b47147208228c2092707fea1441a720cc2c613164581845351b9e1820b4e3ca1061a4ef887060d39e0e0020853f871440b394877c4464e44214306341051c61b4eb8d9c21a5f342105114788a103114d94a1c3114ce85002061d3c3683114e9010421152a881c41b80d00001020c3010d75c7c2120d75e0e1c205760b9d235d801289460410409a0100102c9310001144f7cf040072aacf080031ea8a0c30f0b50c0ad06089c004505392411c1020c5470c1010c144183051a7890c10e271871c41053ccd0820e683c4104a2430461c4104eac21871b7e34f4454558bc81461d6e7cda041a6da431901d6db4c1a42181ece107218bb871fe277d58a8f18411490471c41151d06043124888e744123109b22523821014482277f07724207bfc7130230a3e424927a08c420a29a3848221851a32382423459268e4828f7c22ca29a590720a29a89c22a38ab6d0228ad2a4f0580925890ca2df1d761cc448250a36a888ce8324a2e5884572024a229f004e891c73fc21221b7f2c92c81e6aa4c1841a5f94d1062372a851c71b7700b888137d1e21050f12abb1c61d4f10c2c9d46b243105124d141144134fd4c003110eb7b1061a6adcb1060d3244c183a1e4b231482178a85155146e0c3208206b108287146bcc511f7d76240502050e5400c1091754d02d61711d50d75c77e52558f8e5e715805d751dfe400003846d40820a1e4020d8050eccfa575c1e107142084600c1031ad0000542908325306106ce39c1110446842860010e5878c2a4b0603b9f2021094e404314fae0849c64e10d70f80e1cec3008410cc20f8010041bfc20089cd9e12c58ea10251a61884a34a2110c6ac4d4425230f9e0490c6c98c31a187711251c01096e799d1398201d22206106fe72021b02a1339d99483f7b9043dc18d188474002121c12e387121446465082419408238e0231072e7ec12d6ad8922214f2355af0a218be00062f7a1123afadc814b6201b2940210a4b28e2449458db1cec6007b991e2138ff8a2e928018a507c2287166a9a2966718b59d00215649b052b78f10bfe5ed82215ac4865285501365138c28b3a0c85231601094ce0520e4a580b1be83404176840042dc041195e972f19f809992d08420b58d0820b70af0219e880083c60021e2441061d2001704200020c5ca003157840054ea0041978a004e27cc002ee073ef1dd2a7ce1030cb0e2c20078f66a2fdfd3955c54b0041aa8800320f04c0848e0992404a7084430020d4630032c34610851a842155eb6042030210d4fa8c2104830032560210b4d680211c493061132a13d4e90c21f08018846cae10d52a9192446a10a55a422159c7044200a11a02f4dad139d50e324792888402822968290c31d3076b034e420aa19e4011290900324ec00073720147a6890af21fe44f40b4b0d04230ab1083ff007ad7e284315c4109f359c4814a0a89a243fd189508882133f7290d438f1084ce068a9273d932320210a05010e6baa1085283e6123bc02ee468e20c51a1b1432faa0610d53fa03de72980845e4cd0e7fb84322100288d22642b4462a6d83f2b68744c0b68e9f981a24962425bbb9e10e6970a418688083193c21b76b08442d55f887920d2126046b4320d44013241cc10d6a284314a270042524410a55a8810e6800820e6040042308ce073ea0501af080061da040072e70190758a05673098c3c7f952b78f2257cbeca2ffb6695cf05c8135b343881060c1a021c0cb80a58c0423a5340032314a1ba40a0890e743083ec3efe01a20423840869b206411842106272442140dc30b2f2a13f6f10de200c114b2b0a220e767003e12a52873d4c653cfc4a421aca00d737b481bae471c2172e0229f25864754cc0410e9298841c50475f3ab06a0f0c3584ccce410d720090dd440b883b1462857e2810232ef207d10ac80f9354048e140189be718843890c841bfec086298bc10f5f88021366c68644588812ae04db2c504189509ce21394982d52f796884a78488c0b412a9b15fd205116bad03632052a56348b5ed08214b3e0052d3079a14400c20dd4fd027fde4007375484886888620e6ad0501ef0c00830a9cf14e4649d0e78c0053d704f9d0e12cb41d8f9652d18410b5ab083198800fe0758edc0074605821178a003236041147a8904b04e170b400842555b404e0003f85605888b03e412175bddca567f219f7ec797eef97280043f58a80a6670024d65010a585842a5a0208525c860826e708313e060bb3e60a1e12b854820e0908634f8c1108668841f1c01a0428c59e37220c45afdc3864776a23f7520ebd01a518839f881128e180492f443a23d4cae0d753c2320fc808646b241742b74c845d660ddaa12e1093551420b52a08320e8002968181d1a386ba49bf1473f029a4a1b0e92080e5d1db40eba519cbfb88846cc4d1175c4d028c444894a7cc21266bb902840698b5ef4a28fbc10462f7cb10b60f8a2efc710862f84210c601483effea04e2c864e610b50aec8f1b490e48f00d7884f28ed1485d6bc8b64948b5c80f2148d5ded88dece3636a7d114b355c42016913c13596c1124ca1a2645742243b814e66845430d5a0082194c610a7330441f842285fa48c10814a00075c67bbf515def312028807cffb2aeb99c4bbef6cc5faed2cdbeb810c6bfeccb27024a70821210810649a8f0091855042340a108492882b89750842a64180efa7fc382dfc007358c90c529d849bdc1989d90e5acccc561011af8411d60017444011cb8c1528d9927a4022e25c20b010227d8d429d40818894982801d922c8268edc11a30c143a0c10a7e81eae08012cc000ed8da0e78d59c48450371961db0817a7cc1fe230d4d8220db1ee88c22208c77cc8120148d2880568238098e3cc2d188112860c25d59088e8402273c56d38c1a2fac882f1c43e1055ee10d9e2fe4c22eec422ef0022fec822fb0212fb0e12ecc82a889d22dd8021dda022a5c0828784d2af891dfdd422aa8212d84928aa0022d98022994c229800dda604828500220f0872d8909263488985c8dec91952178d167bd817e5089cee8502324c2dbd14d2884c22838028228821cf4591294c17dd0c01438951dc0c1242c4109e0000788016de80a5d2400b09ccf5ddc17fedc0a7f791f5fdc055e24630010405e34630110c0019cc0c1d5811660411df4411dac411f08c22104c221689c1f401c141c410e3cfe81354aa0fe3d011c1820216c1c2170a38b115f230895271c4d27608229a6822a0c5527c81c28a8d22eb0c22ea4c2e3a1422a94c228700d8514e4a7f91d1c3ede2c98422998a25c5dc8d0148d21d1c8905402168a122a80241c1612ebe1819a014e8d28c8172d1ad67c02287cc28f28888d744de4358d469acd8aa8611f8512d8dc42ded1c21902621acec22ea4a117ea111b1a9e17fac22ca482a8d90251ce421912a52ff4115552651ada422e7c922da01228d1c253ba212a91cd5786dad7cc02d988cd2c701ed7145a8d748d22a2428d30cd27f40d940c4d229cddd5210943fcc11ecc581aec921bf8c71b9c841ca0415b55011c30010dd0401128d17dfe3c011354814f908006304004284b2f9a8f30a24ff8e5573cd5573c2523344263fb34a332ae8f168023383a82c6695c21f4011cd4417b2c411a304c1af481c7b89c21f84109d50121002721781c2114820e79822798822a0ce450e2942a988228f0082638822360a11ee6148f7082290489447a202a40e7a811e5515a251b926779ee02d8e40257ca8829481e84d008da80112404421b3c4491b541e14892d9609286148d8e2402249c02177acd4f62651f0dd22e0cd28abc65210e522f9c611f212828c1611aaa4854e2d1172a651a9a615806de840aa51bb6a11a4ea8a79d25899ae1dde11d2d9402a755a857a2c242960263b5e485040965c95ee1600dfe24a4d190b4a4a22d5ad3b4e45d49e7d00c0d5905cdc16c1c929c10c7bc9010c21895f8411cd4c11f809c128040bbfd97af984f3ed5c503e093aed4c569028b5dac4f30ea457d95a616a8e621b8a33bde5027acc22a748227ac029dd2a92aac8229c4292be0949e2a674e01e22ba4c241e6942b98e12efcc22f18ea2f0043a2fe0231ec51a2b2213000de294d2ae0f94231b821301c433118c31782e88312654e56a51a46648b08c928248d44ba642804821c7442205ce123acd21ae61d821265a879672888d15bca888472611f8d61de7161840e2582e6c2ad36281c8e2a1b821e17e64288a2d2d8b8e131f451de5d25b1921a89a6021e3d2bae9ee5a99efe218b84abded9422d280d94581ad89c822aac68d864c85ba20d5e5dd223205a2181d120b0de411c04eb418223a89ddab01edb18c209524e1b74624f0d82238c991fcc81108a0c12b841071800f6b95b6de4401470405eec93c59e0f9a960ffb74a67e91cf33de536010c0214c8221c40226e05e1f50a921148221b8ac74caaccc3a825049a723ac822abc82290c15858c422754c22a84028538a7199ed22b202aa24eea52be424e9ed22fec822a202b51fe82dfe5545c8a5e8ae4142d586da842a583662582aa08199aa1227202db30d6907048c710ced116a429b8088e601e22728d2199cd4f9ea519aec8e39de8a80d52d8a8c8b81e2b2875da869ae131fe106bde1dc3e382eae315ee508e1a1bfa1178de42d8840d48429e20fe2dd90cd2b4ae084846a4e482648d8882135ed229746b22d2824d45922481d6941404e64c674224a12376c8cfa88112b8c18cd9c18b955620d8c11b389246ad011bac1ac2ca0c1adc470bccc00e7c400594c00644800a10410a88000b54000af08a7ecd537d8566f8ce1361d49b7e0d06c7ca1361dc8516f4416c6a8108f541214cc29cc229d0c66928780227c4e971768229a40285e4a973520843de944082d22b502dd532ad2b24aa29fd9d2f642d8866ad040f03300c832f9c02276482d5fa1d55526d54562e799aa18bf8ed2075ab8bd042b786e4a042de2e78e0617ddd237412fe8bb4c8e6726584829edf6e281a425e82be0855b6081c82522a40e51af2825496a7def582b5626b1373e158964decd69528bcab5f2d0225668283cc96181549d138d69084428ca042577aa02d8c02d81022d340a74b56168e9008d690021899a242ced6d5700882b064d13c422c8d08872c821505821f34011240ca46ad01a4e84047f199144c8cc9a1e00de80013f4015ba0c00964c0c9aeaffa2a63343e232797a632a28f329ae96812c6211c0227c48250c969cf5288fefa6929e4e92c0b9523b8ac2354422114c2bffe2f85b002a00aaa119b21e8bd422ee414d5226a054f2d30ec4206bf61a65e6aa616c3344ff31e1de5171ee519be6109ff2482b2fe124836652152565326cda2d9f0a8ae48b712e5306b5e2a00ce2e08832016a2203e252df49d552a2da81dea3dfb1d8ba8e12c0883b5a66119e624e3f202a8866a12fb9d2d0043440e657a7a5a4e8e92a7edc23dab25228a8229a06b2779a72814a2222a628ba87044a6c2e6a66ed62c9a763ec27ca6545004454a954113a5941ab44116ffc11b94411c0c4289ec815f0e8eca7c010d60000600810b241712e84419648114e0012104c2132c81083840b5cd13808d1ff9928f30da05c772ec69e64502e00501100002442327abec2acfa92be7299c1a2dd0f22f271c672ba84228ac025cc3e9282027d0e27584a8825dd588735e211ad9942abc882d38f02ffebc4284506db552a55446ebe7a9a50f0fb41b1e6a6553650e3be8ae6e082380022b745a86cc75a2b1c80a137649a7882a4465d894428cd265ea4242d6749a8a80682f30b32715ee20ad7049e32ade85284e62e53aa7e13178e83d6bab43db2ab98eea53c230e719b15abac88b76de2126e22878b48b5871d7a888e84189e6a6088da4ae28eaab41204c23159160ba011ed80121240f889881124c4709b48047b5800b84400b201413dc4007b457f768800a3c5b0a18810bec8060ae41814bd7c1fc6e1a7cc1067080079c4b0268f5013800fe483856581f678aaf5d78726972f23ce5571fb0ac9db2b59e76822170029c0e1526d0a99e8a492dbfd9d1e669fe727a362bb8428538e72f3f702a086aad52ad2d0ca4a3f2c2408e6ad50628e28168794a6a2a80672a8442299c6728e05620342227cc0d3d8282da30086c612176f29021fd15277c4222b2eed63ca72b798d8c0422000f65e29628ba6ade411671d89ce15742e58a107419d2422d2877df15838362b3a6922788f63930f442228a5244a22751e2ddb23ede28b06e21dda4e6e21526e1158dd4c84b4696219602e0fceb24e58df20cc250e9a85e550d13b65c479ace23d8c144344170e84011780008c4f707b8800e84c00514d0099c00b0bd0b0694800640c0068c930788c0098cc00960011154c07d854fb09fc03d35c0bb2cc0066c00969a6f5fd0450124fe800104400098efbdc50571ccd72114029b9ab827188250c50227e8721ff001160c0113c0011b48d05ac08108b1a32140422740c298a9f827246719023962e31441aad2202deaa13eab04ff4206ffdd051b03a4aa6108276a2a69e8e3d9c22f14da416a5e1cb6f18280420da5da2070028df0c85dbe11c724c274020e167242464b12d6181228acb68cd8bc20860d7b9e617a2a79e912a48bd8548996677902de3477aa1e115edf113ade55a5a2bf612e786029142241f6ed8972251b96ed50feb372dfe1a8855a8a24675c525680fc01989b08d12009e20c045931ec131493e34cc5e1ec414700811430e611408178044112000112948113f17d441d2679fea481f3eece109840075c9b0ccc800758c03739407154c0e4fb7a1300c1101441134081059ccf7ca1cf86cb1301284003d445f9c453b6878ffb1ec214baa61ff0411f10022abb8104660116b8411db8e62ae8382bf03e2c24ea2f739a2bd038321f73082bb0a356f0d00bb111ffc23e2e16a09a612a306aa746bc2f643c34632a1c66ed50fad15332e550de612efcc24f62bc2b0d6a2a387ad6e61453aa0229002a5386122222dae3b12e0c9b365c62524bb67f5c0eaa9a1feb1a02842f5ebd76f19ab5cb162f5e097df92a66acd83187128b35f405ec57ae83077bf9ca850a15ad83b636ce327570e1ac53b668859c650b55aa59b368a922150a94225094fe3e29f2c388d09d468f1a51fa13a8511c35699e3c4923460c13233b74e0d0b123878e1e44d444d98144850e122d88d028f1658814273454f0387284060d19194c6ca8406183860e181edcad50e14187154c8a147922a54a141d1e4410a9a184c6080d207e2c39a281c181020710703e40a000e8029b476f06ed7974e7039f456bd172a88fa03e6fde607963885327437c72739ab4c78f20438e0c412afe08d2a24ea14ca552950aba2a95aa5499a26eaa54f354bf76b1dab5ebd72f5ebe888557e8ca95f35da6c6372c568c18b0f6c57ed1b2382bd72e8bbb549652758a1653421165a55da083cea44f3e118593461661042753440945268d72e145954402fe61249044da90638f39e410e4c14616346514544e018916924e61a52518675ad196ef649ae546fd2c3ae6bd63dadbb1a1f92af2a597816c11c5949376a1853f5ac47b8996fc989ca5149910e24f955048a1e411524a092594526e2a65944f98035345534e39e5913ff6f8031036d4f8e30f3698182207209c60638f41dc68c30e39d678e30934ea7823071240c880062488088208123ad020830d68f822040f3ed88002041cb880810522d88003081c586081071ea08081061cc8c00323b090420a2c9e20a2830b28e8eb81cf3afb15810556d36c5804100860d8d54ae3ec342cb480e3104326e16415555c7945154f3aa9f6da55a073e5395792f4361556fe5279a5dc5c927c0e3aee7641373b52b23ce5955f702cc89799dab517dd5478814e21802d22661860664105255e96e4e491954ed905a4546839851451486105c7ea4609e59347187484114744c12490401e710492472a79a413861f7904132e1fa1044c52565c7326fc66328514354d0165c0502849992847669ed914546afc4ee15d8a6c9aa0f1deabe8985e72e98848fdc6eb056b602c1ac8a05d72b1c5960b115afadf4f381990124a1a618412061fe1708f34ca68428d39da98638f45dc140493501c59448e279a48e2071c4ae8e0042042d8e0010718a8c08939d08002081f46454184af74000c55071ed0f500611160a0031786e060d50550c78186fe1c6808a1f1218810e18106167040031a5aa0010d358260428c2f9090612f068c5d2058e687dd4c59028c5576b4d510a83eda58b4adb615ea52f1d61456b0a5ae7b56aaf316dc73a9bb0e45eb547905bb54ba33c540525e29e81762e2d3cf6b8c2ef2c540dbf9c5be6621905d9c8226387a98fcbc56400052082158b3452a629225eb980415a190431afc0088b70962106b6b90283e010a518882118c80042538018a94a9f011402b05283e710a554cec145ac2c4234201894f4c0c15a2a0c44952610b534c0c3b33f9ce41d6649ff1f0e747132986308844c5efe402870892494b0024935e1c4c8945ba85cd4e9134180551419f488e1c963287347c8109fe3cd0410e94a0842124210969408313a0e2841a3ca10a4d0002108680b912f0e5010c60c0ae2870aa4576a0094e60420e4a40010cb06a321638410746c083273841062668010b9240030fb8200768b0021bd2808538b8210a79ac8321be3083162ce654ccd3250372e93cd008cb33c4224db1a0c72ce9410f015ae0036caa90064108c2119af0c31bf8d0070e4ec210c291431fe0d0043f18020e4ec0021cf6b0074360821398e844230a118850a00b5d026205777e31cf77a5e214f52c087814e6115bb8426161128f0005c28bf098c21705aac81371a69235ed5324dfe1cfcf5644255474e262fc09a22916440a8fa282a3a0c84e287698084830e2658afe38992220a1528b71821432e1c52d48628b35914da30629052630a1461e4a476b0ad951441e520caf09e4201a9d184c6ea2a59d84e2a634911009d5a620a17562140fa54529384109460c074cd04185da14e1083cb8c10f8388020e48c003db7d410c75ec81e238b001117840033a70021270002a0440c0758944150336e0000758e055332881e418a0aa0550a003917595065ca004127cca039fa441ae484004197000072df84006ee12accd386f79bfb29e6a38a31ad5886634d2d38cb15453002df46112b1e8043687232d4e18a213ba71442c86d3895418620d82f084fa4251081315a2129c18452038f18a7e81e717f75b8f2a10c21c0969e782f44afe45fcb015260385e2170211cf2fb0b30b0a711780aa28c582e4d710fe880daa3943887c3f71c39dbe6c87302bc584b2a30a5494e214a38044223a3113b2a90414262463426062d335a5821425541abec40331049ec416bef8054b7e71d462600d6c0221527b067290b1e54b2505ec052d08642f26ad64242c91df2e2aa2c015892215a148c41fec5006271ca10d51e041122499861131420e6868832082f3894a38421071cd410b78b00313808003147015073c30820e80a00517b0400940f0811db400b08a3c8061318001109040091fc865ae2c79800aa00a0216e8cb053e40010fb4c003becb000550052ce771465899d14c314d43cc623d0fb6a1598dfe16ea00874274c214abe8de2baaf5bd55242915ae086e1fd85008e07602137da80227fc20074f24c9157e70c4b9dec59df4b922142da32056536dc4531c6816f003852a462120eefe6718ed6d48290ec61e55e4e23f8c401895062c2148fc0142611ac5cb3cd6554a5422850c539b28404694930eed119ce0c4815c34319130893ff89c58815bb49135255814a5a81282a53312355129150eb90f3086d4238b3c9cc544ca0f4db68a600979cc3a35d2c84d3c8aa28fae08148d6884222ad1899555c2ab7eb8031a22d5810f74c0039175010d66f0f219c86504200001cd89d0042624990944d0c1107490010bac60094b308209123939111401087111c1eefe1c10f3bb50c0025ca6f90d1049810a60a003159001081cb02bd7292f54ca03666b15d9e8ea79667ac62ac0f548733dd96ea6339b79cdb656b10a4f18e29c9df0c42af8de8937b0010e505882140ae18743fcd6107d304414b2500838c081067ec0aa1ad9355ee962c239076684710d04d2228e37178f18852a58b1364a18d83a8213c52f80bd8b4f0c11123b5545c950f19c848cd85fb3e021285ac6c2400c6214ac18052540c130f0aa82241cb9af44f9330bf128ac4835e5cfb129e6255020d0c112654885dd15a45c3c5cc50a5708beaa86b58202f04aeed21a4b141662aec1e4602d91d7c1448155505802121cc16d1ca12882464d3a0613024e4130fee10fd02009d6400c68a00d08c1100ae10dda600ff8400ef8640ea4200d94e00434e00200e3544ac7022aa0036aa0059a200830c0023840047ae008ea2807502003220b03362002ca4e033e40e778400d68c0052a205482a53380a97a5cab74506b9124ad7a90690162ab587c09345c2b0bfaa00e2621b8764bf056a102cf29d6fac00daaa00e04211024af130a81139e20f2b080134cc1d5de600f4a61f1426dbc4a41f00ca10c30c17d3e01d4d26339428116d0451518010f43a1113a21f7aae317d686115ee111aac4875ec1649ca309d08061446117fe836228841494c614dae61392c4a004c4bd7866459ce346a88426f64961f0ad209aa6168a6889fe8e8d1698243f7ae1c1928afa7ae1493cc2c5f065fdd0cf178e41181422a20aaa17aa4622fe473ed6cf17e10fff668117b0e8200008a9bc2a14924a2452216e78ea6d56a88478464042c113428128ecc00fd6400d00a10d9ac008aae00dea605664200438c00470c70248e0088600073ac0025045771a400450e0044e00021e40971a007414890120809716e0041f202119eb0168ab79d66e7a926523518334ea6e3594a734eceeed3e6358fae01072cb103c811558a1ef746b5b5c8110dea00ab0003708611538a10e68a0bafae004d4400b5a6909d86009526009d660f40ac1147443143c0113eec011e6edd63a61d79663145471dc1c41be242410d800fe12b0e313daa087e4e00da003126c481d738306d4600fe4a00d4c666362660f0241a53801854268885261ba9c2d17a0234008248070a42fc18f62cac8bb2a267c68f1c16ae420462c176e013c1a62829408194dc18706446b7c4118dea3fe1a824754ec18f0a522f0a518b9e63109228100c481f0233ff26569eee58b040e123861a9ce8f157a26c306610dd6004476f30f04c10ee6e00eeea00d94000d9ec0ad88e02dda804fd0200832c50268200a98c0099420099080061c8755ceae793e850480e004e4e29614072025e753141255b8330a4b8701e6aeb58e70b65a6bd23e72ee6aab344a43344cb27a028000a640f20e813662a1125c2df20c410b9cfe000e96600a9e000bb0200b2870120841f20c210bd6c010b020058e6006a2e09b1a0f13468f7e5c6114000f0e4e801304b0101ca110d02010e4c00f28a1100a612e518a11fce00f52a9119cc0141c6110d8e00da88b1356c61100210d02810f48400a92a009eee00d7f41154e2a1050c1404e34119ce027042114d6201016411032219d0227de9aefd824cadfc888a4a42b40482140b4a4673a02622646622404aa687126fae96bb8663cc2061a8944222e84249ea6205482166ce66742018606e461eaaf8874b1468864ac440a61a0836cd0911106411112c10fbea0519060089e800d8ef309dce038d7200a9ae036f0c099508e282ac110086110fc000dfeb4ac0542600672600632000494e009ea801002610dd2600f180110d600add040095c0004288091daae089727541a2d3d8f303d8129b582853d5d8bee9e677aea1324a127b642030b16f410eae09b862337aa451508cf0f0841105a925db0c511e0a00fa68004ac800886e008004f1014650afc4015a8b213d6000aa4202eea801318610d289008d6606171c310ec600f5c819dd6d50fea200ada4007d4c00da6e00d76a0539ba00dd28010d6a0509e20ecd2a01212610aeac00d9e490d1a2111c064661ce1437ec214d08011ec20119ccbabeea012be6f274ac84c0c9314d405395268149bc3a36a463b4e013275916240024a6a442434023fc6cf4982c4fe228041175b6c20f0f418aa66c5da0318caf625b64f4d45c2c16c014f67ec16e40315bc0fc1f20d61c6ea13f592118ea211ec0010160164dce00b76c00330e02bc4000bd2200d8ee00440a0035a600a20360d9c60074040034a4005706005eaca08d0600a4ce0047460f18c40056620053400052240911a295842c5b022e7595dc775ae07ed68cb7496e73d1f8d7aaa27d342e3233d523384c5b624cf0b09413760cd10fa4e10b0800646360d08af397281d430410b9ec0d3b2a02c44800d0e010b406009fc0013a8a36520a19ba28008c6290afc3107b060095a801098530a70c010d0600694402cdec00d32cf0934c00386200b2ee00938610d5a000a04fe410eea60113a6503d49109be20103a8111da0007d2800818e19902c10e1c3008be000a68c00d70607b4b200dfe64662c580c9a400c3ca81368a8d948816dbfe8251ee61674515f706a3cd20bc66ac4202e44a81c62a1ec2b3f5a8c163aa2238041227cc42180e118a9d1343722a26231fa6621860b8a3107958c52312168426a8f88a31a610ed860431ec17206011014e161c50002c5000dbe20079ae00b78f30872402f4ed0031ee0d098002e68e00444a02e3800098c80e64420031c00035a40764040043e0030568508bd8e040d2b2f4a40075cc0053400b45a00042e0054a2f57657eb79ee333ef133eef2ee09098000706b25838b55d110b862e104fe4880104e743958ef7ce0e009de000edca00ef258070a41108ec0d068409dd2e00d4cc113d4770374a00a70200a8ce0090a38adba49e8688008b0a2090c6114b480045460089c000792e0043e20042e000456250974c01036a003aec70904e10fca220e1a010d68c07f8960068ea012dee008a620b2d86a069c600692b70c88400e36b184444110c6d80f1e4127662114586142086462a044626ef13bbe08321142c6a2c6405a842430fa603e912420d316806117cab66c2f82888d4a228ac46bb8866bf62367f0546114068b8298170044216662e3404158b9a4111a300a74f530a4c00ddc2072950002e5c00e2a75102af50e006110c438aa87531108a1fee42a411122b41148b5099aa007ca00097220ac2785042e80b4ae6e74d033721eeb020cabec0c6b912c20ec5485023200054a003050a054488b976025303c4059dbce089545ee56c374924598264d33b2279b3041b7c68538160f0e28d01126a1d678790f086112ea4007de60363689046e700800cf0b934009d4c07e9b20522a0b0d06a11208e130d240078a200934a005a48056890004cc2c07ec609366600834a0083aa1096067034ee008aa400454e00446430592000dd8207efd2010da408f49e004de91064c800d3c600940ab049060969ce002d569f51a3a14dc80112ae1491d811742c116b6d1fd3cec3b58422514268162821a2bfa3b002821a8fe6f9fceb648503a5fc4e6fc82444f07e2de42824914a2238c8a8ab836a8f8836cb8a62064fa16189c6248881114e15219211138a464ec400d9e2009728009d0e0e7e46010ec806f01c10ed6000d96ec085a20b22ae0023a00eb3c80034a600448a004789c04a6200be2ca087aa0036e30b274a5915485b176c5b016ed5574a00344009323e72f1c8008d54c030263743080ea24c758d2ce015a0b7811fbd2500334b420f2686009224f5e3ba10adae0d560ad9d50595a826b15b0200380000e84c05608019b29200b3a01072c60609fe0049cc008a2000a406008d6c09f89809ea7400516160d22e9966ee0e53ce0089e6045558001d66c430da1ab6f4907fe6840243b83023e200dd82049f9c8022ce0d03d160746600d56a053162904d6600ed62007985310188109e4c014382192d6804fdc801358bcd918c14cd408c6e7c6688c46a49ca8a4b9f67f1a826b0b083cf8a38716013946b18842ec228c01dda9e68b42ac22184e186002143e31a6e45d45c04414948617aa861768013a4e41142c01aa9ae3161cac25a80440706c3b70a4f750c1ab28e1a03be16418be11fe03e21350de0e760f30a14c184411f6a00dfee40dd0c06eb013077260044ae0045a60078c739aee806469c52a3480b174c9757249b0e74c72d253ed9607b5bc957aac47d35623008649b5a6c70760030b24ef0d3ca10f36000fbcb0b231c1fe13de275d5bc6ef4c0116d4a9151ab40e72200daac008b2e04209490aa0600894000474000aa2590aee6a04940007c4000a342004aaa00f94740a5c20e716cd08d622049e800466600674a0054480025880011a03b57667034820202d49cd3883014637031a600302f25410407f73202ff60810746041058f08a4a083d4a00c0c01141201146c01104041247ac114ba84df47211150411775514c5a624abe03153c864b4c816d79d8a8a686e17e8422dec31834738a04828adaefbe2fe2187e216a5e626bf2836c1ecc699ca68148e2a6dd86e428c1114621a6962fb8daa6853a06c1766264a5e009722009a400030981002918100a41ea1fc1e38f5309b2fe400966c0053c00203c8c0011620892214dca30b92142c409203344903841a3891b344776a4b0c0c182041428244880c0e0c1030a141030587060c14a040b58aa5c80e080cd02076a16284080c0ce033f75fae4697383964370a4f48905e790a74e9cfc1872c4a710a14ea65671e2944a95a9579804357a73c80d110b269c8458d287c30f13403a9c8033848694246c9ae4c0416486121a023de498e1a6ce090f254a0c694103c4c3140c2e3c6040d18103377b2ab8b409b38283969617588679a184081a0c662270b021890e0b4f9e7cd97002921c407fd62449e247840727a628613a65eb542a5bbb76817ae4abd7a93fbd78f1eab54b94a859b69a27f7fe65ab57b162c78af9f2b57d3c2f5fe7a38f3fb61e3dafefcdc70b2b664cbcade9bb66d1a2458a94285af9f5e21d30bccc828a2fc750971c2da29842cb2ca440b24822893002c9238f7cf2092889009288222036420927a034d28822810c72c71a3980f001061e7410c20c459481061b6aa421871d4fcce001081ddca084124648214514594881061a4aae91061a3b7c0082072db4b003135128f9c61b7fd8e1862086c8a144112898a0820534e544134c312150404c40b5f919509cb9c9134e401160139d3be1b4840a536851c409751862482798acb24a27937462a8206bbc610827a12cd1811a7ef8b1041b6cf041021122106108164e18f2061137c8d0fec2139fce50420a2414b1c30c24e0a0c4141f60d1070d338c40c41b1f68400407a50d31420b33e0c0c2080f74d004103aa8c041070b10951303d85290414b07e889c0082b3980c0b8d7aee4d2020d30d0000d8c98c2c6066c3cc104120fd0108a2276c4c1092a8ef0028c2fa1b411ca2e8c34314b2fdcf5f2c829e235d7cb2f10e6370b2fbb9c8720c2f37d27cc7ce30143602fc21c234c74bd00234c7dc508e30b300847c70b7b2b93a79f2dfae957cb27173e220a29a8dc620b72d375978b82a9cc920a299d8c823425a17c4209281a8e42092595dc31c81f8368c88925947a32e2238c28e2861d76ace1871d750c1248a67b3422881f683cb9861c6ea4fee1462182b021871337b681c6134300b146194fe46010933b70a0020d27b8842d041e30b0674e7aee896701e3669e13e6931fc080b797ef74c209249440c412221461021c86c001871c4831ce041c5834b5440568c4d2892386a8528714ac9f00021686582588a36b44da440827d445c3104ec011c50c278870410758604182084de830840e24585081072eacf1030314dce0eb081a5cf001051878e6404c20d099e74bddc2d4ed07a9d974aee4d8fac0030e5011201cc10448c0c11336b08013b022158c3801a518e12f5f3402109ff045200a718a07e502158a984531a453a0e2eca28300b245d18a469d598cc761c220067b78710bf920083de36919c8fec0a39d0ea202851513507272811c9a4567163e9bc52f7a519c53a0a214c4d9c5cf66318b8addc2144efbc429f4a30a5184e214a708457f40c1b45070a2139460c423049104640d61304c58820c4030a523a401091d40410e944002193881090561021baa800638e86d6d7f28841fd6a686398881092ed84115a6b7010b44c00116d88003b0c50092b4a926e4ca5c4d72b239ced8444f9cdb0928dd342e2cac600810d0801bfa70820de0a00a7ee8842e0fe5a8371c41076a70011602c189551c0a1358a803f1fa400215c8c0086ba02516dc0087345820058741029a3a101b235c4f0324a8c20934800529ecc00825c0001104010517e8200d6bc0421a94fe50052cb0e10de6a34049e0f7800a5c203598abd6b8764200cf0005273841000448b9130db0c43324c8414a16400107b000059d08051b0681a13998428a7fd843203e218624a4e2178fa8182450b18b0781713fbcc8c52c3c96311b8a5064c200067b80c1435f642c64164b592f8e41310161076639d40f2d4aa11f50ec8c16a848c5160fd60bec1815aa3ff4da861ac108a87d2214a2f8c423fec088119982144ea3848820d18844040212615304251ea1884660a2127e78831bc644a429ac21106ba081084a40831c180e0b7cd8431bd8803541c8010d7288141372f08423d89309e1ab000a48001208a060032288c00638000196b4c925a3cc899db855fe130280b24e356109e644790041c5520a9d30e621a290842a2c415e4f208216dec0074290ea2a951004200ec58a4ea8a17886220421c0e428430862571d9081061c90011cb0ee9d46c8411aa6300338f441051d308108385002353461082538c1aafcc0840a74c0010ff08006e2872c112ca0052e680945c5152706e0c45b2bb1dc4d86528093e089022220c002127082227860016f18451a7c600746e4605fa878c314de800531280115a100c4286ca108547c6743a1f82218274631124aa769e779197a10560c8fc9473d2f7419c97288b05de4a262451dcf7d10869fe4a4e2414a85ea7e9cb83350a05814a840052d54410a35820d4339fb831cd8d006fe393042cc7610c4dadea088475482118c0844209cd00435d0f98d455882117e500210a8a004e423c20932d0800c9c000a4e88021aca99041278a08f2df800119e80053964aa0528e0402537408210a880043430c209de67990aa4644fd552e5400faa133b0580a077d2930534a08372b24e0b558043169e80831cf4a113b4cb4216a650e12160160d3f788320b050582354a10840104116faa08428f4610a903005219c40827595c0011d98411f0421051d28e1094d90021346b0c92460c0961ee0c00230b09a12e0400323c040062aa0822fe0800121d0274de627618276cb277b8209fe0220b93bb5763530d9c00c3877ad006ca01246f84005dce0840afe8d02104d484310488087a3ddc117bf68840bbfda0b0775e785d2b90f7214969d83c18c3d1a4b19ca5e081f244fe785cdf9392f6c2153fd04bda808f3854c77718b98db22aca6a0192a4cd1b4508ce2aba3f8e1281ee108ac3f42ad9c308528b6b29541f821ce6dd8037dd150061c38ba035190ca201c318839b881107bb033a7cae007412ce2cc6a50031a96e0042ce8800223a8150d1ae3810b6880bd22a0000752206a09ac00240d48c084c7855a56be64a0696275e5c8a5a681e20402274877a10861a851254e109ee0432ca212dd252861098478421d9e706d0f186108705802ad4de0171204610934d8c0be1ffdfb8ab401754318b40ba2708424fcfee0044f2842085aa0821040a0045330820872a0831228e1303bf0400534f000977cc627310940007ac260f827fcc0aded134f10700107b8f602a7b47f07f00058d02c1620031ee0064ce0069dc0034ab0021a5008aaa066bf600b8fd00ba8f008c41046d9511f2a2354e7710cb6800919f808a4401ce7c132c9011e2a5355d8310b177256b4600a55b40b4c640ba8a021a4303130135353653438a821a1500bf9410a74f5554e640ba0c0089c500aa5800aaa700aaa100a5d84091682099cb0087ba00421f00103e10238400338a00648b0035830088ce00775200883400851603a7cc4011a90024a800459502895c0094f610762b00648a0692850021ad0fe0453e0078e50099e100a9500099030087250087ef30448f00427e00226700239c02b2ee00121001802710215601227c0012ad13fac644a9d4350e49226a2857aa0080587d0068630055840044600054940037030097d503c5860023490053a501186a005467003d8775e28207c335067ad7007400002800102b3a30215706f1d201727a0058230881a5002aea20341b00325100244503a26f006b5960452700416f0001c202e0ce00659d00008d00211e0133d815008e05a6e327f9c5100f3e72612760097540192e33fa9e53f40b0001ad0001b50043a400469100a16800649700190c0468e004181900a94b00bbe20070722202b231ebfe00bdf211e33fe431e2a390b985031e8c11e44451d34030a9c205627980a419531a8a04694f009b54044b3200aa0e0442d05202bd30bb4700abdf00981801dc1510994200778e06680b00680d0096eb0067780076e80077840089560096864754f530868d00694105596300a9e905c78306a2670046d10076a500555c0044ec0067350066a30043b80067d170852500224c00484c3043d320468300571330551b00618a13e2da00347d0021c4011ec275a16600115e5001ea05f17c01236b1496c127afae726a4447a4051131c30054bd01459700858209b339005913209ab60044530051960027dd0075240022930033fa00327500283e20352800238e002877002338005fe94080485100bd9b803e708077e80056d6404339003464004687002fd44011be0013af09d582008a3030110d001f32902e053044d40031f8006c3c2031c00022d90041bf0003c110030219079824a3c41130460a0fd18001c8004147001f6070108207f78b20004d00010500009a00362e0047e401b3a40006ee0036a6007a86095a14009c7f007a44033d9516340d71e324533b4e02fb7400a34c894e7d1942e84a306620ba690088bf508a5c05634d84154940bb4a033a7e0a44e387354940abb800a91500947c33306721ca9701c59a61fa6105534330b25a2089d8056a0000a6ce5088f70228400088d300880000870a6855511087bc0064910232e40fe044a80065e09088470077610086e70078610088109044cf02c9799047bf1048480358d60089050096e7a666bf00143f00434d00244d0021e80010fb0013e300428e0038bc70202577a3a5127b3a57f7db2003f0005a30307b12005a26604755008698005509001435008a6b2042580054670084b70041de03d4610010b7012459206c2f7065a40023a9003d293031630139c38911740013ac0011420033810119b64048640041870025850040d440423e002da6a3a52700238d0076fd004207001200007f45a018ea6391cca00183051fb482e7d222ed38a002871500560020bf56a3b911a0fb01a9a914c3ae000f6d87e0520036b50084e0209be00088afe204567f50bdf2143f55132e1613221b353c41064425432d4910a8e606513430a9470344e03088b100aa5600ace01469890085a760aa2b0524c6a20334846733057a84045b7300ba6300a569a1fc531759c10568f00098130217bc0088b206675f1056dc00889e00681000875a0066b50077740a862b08683d08450880a9d905c4e303a3ae0011ff02334b0034fb0065270078200296b100551508738800320503abe81020e61022b606f44e0021a908d187003338004f3b349e9291a0e2002a0d53e15108aedb73930814a0a5a0050800243504ec1a80544108c3f80024cd00011a018980007efa405a45301557008d7a5055160042100047ec0064ba0affe59500438d0012510b821900248c07e4350074490bb1460089ee0018b039ae0f4000ef004821005d3a29f33300314500151700217200584704e34a003537001346002daea076b8003cc42b062a04d73b290f3279008ba1225c0400ee75a3ca18f2d5101aa650134e0060ee02a0866021d9006625006a21067a6a046a1c0b2b3500a3c9532e40120fea2532793744cd41c04721e365820a7600a5fa70889f00794900872f0218fc0097f600653130773050941090a621463b3c034b6f009752b4637b80b3cfa8252588418f275a7400a62a40a53e7444ec41fa3a0086d20054fe05772d006e8b60351004f4e4004dcb90667ab0883903c75e00773e7089cf0fe088500097e79238b26078b100888f00771b0246c5036bce5046de00448308c06540565a0684be202a6ca5d2d12130966006a421305f039a1044aa9f49a08b0013ec1001e900586e0044bf0064f0007894104880b057df08b0c049ac11a0572500447107cde33916f500775a005e57a6f44a00645f006468001ba4c047c600415f03c49500255302a27200544000244102f141070a2f90465b0068280074d30031a40034a6001182005f3b41117300268d08c7cf44f14409fa8e97e094927d8d21208eb001dea1304395b037900f3434a0b20109a0c0205f03d19d0028fe50660530768100ac4d0300d430cc690d1f49132159d53322c1de46144beb045bbfef0077f800ab6f00b4dbb087fa545582656a700086d00098a80097fb0582202465cd7418fa0065fb0b3a9800aa2900876a0b445938190205670f5099ce04454f74545390a5bbc33a210469fc0c51a322262f50898c0d4418c218d10086425678120076f33077290d6b8116770e65680b0b895d0095c37083acc7572c5088280065f620769f0045280046220068aa61648205124e0066aa00108f9499cd72d3731ab08852740d1000aa0014900054db004ef956e4910cc87600823db0738a0022b20026ea00238b004f085021580016cf00a7d90049518055040035580041e00a84b00cfb7e300fe44046d60040f407c3b8002fbd60123300221407e23d004feb94bbb6b807d9cc2156c505a0728020fe00683500846400124b0064db00684300492d1011860aa9233aef8f55a004d6ce342010790c07d322eafa66035111904a6270b40c1f6050139a006a8f0044a4009bd400cb3204633250cd39153c59074e1e18144a53230c71ff99146a7500a73b0077f800673950865fb0868d0848a301bf0f3018c75d37130077660d68350063c100521b95418821cd8610bb4c0086ea00847f93462a7c49d70d559060a3c9a654b4c0a53b8a69840098ef02121120828025726e2e4749a088dc009a4b0c77016367296086a76d36f7d116da00684a31068f0066520a262c6066e800421e0013370044d60976ef0076e10054de0fe2b75d00673f0048c3103ef131313d6008f7d3907653940602919504e5a00118750078d8e4bab4008874004a683da4c508ba42d910f003d457001a5590216e039895e073b300219805f93c101386001d9383f209001ddd5233b00021830021c8001d0a2026d30031ce00151c009b1290304db015cc8014640034ee0c81d000773e0047f900652f0011fd001193003190001ffe6dbedd76a36813e92d3ba438170f3a3134181131495b19fec001820619d2402a5b0061620075f5a0a8020922a993115ad92c6b01e2b690cc470822554458f20261b2e07748802dd3c7e4ee008564002fc590214958d16700271b0086920023220031820034ca0064a100434fea00672e0c75fd05689c00972f00595300a4699e58f40d78fa0c464f4759c006767d40870053675c53419050a72ed083dec08a890099fc008760a67720d085fd6086e960873b0067f009eb989351462857be008a1d0b77485867e601b7310e648c0044780045fc0043380065f2003c1e5e923800332400432b049f5fc01db676c1e70024ca004282039fdd812aa040102100016d08c2a6004ba22086a309cda57044cf00319d00134103759a01727507e1a406c27702cd9130220b0030f80013482054be01218000282b00440f0074be00020b002f54624dc54020f00026aee2321d0011ae01bceb6013aa00317200758d0011500011910a16a78037b1005fe69d3d7d7d37fd4fe230ce0db19302e2b9160ee73cf85fed89c941a32314aa88970ac65000b200453c00275c00baad006bb900994400bf4511fecb1ef2a196405a21f1d640a824069764a096d20aac2f7f80001420c114126dce069a18142860714beb40162214307060c88f43801e48183132d780c99128814254689ec802ac58891a3428916290a25ea542852a242dd24558a542850a1388912f5e9d3a347a27696024594d1234a8f02297af4a9d1a34a8ea832fa23c6cd1a2951a288a141a3cd9e4098182d92d3e609060f2d3e6410d1824691161d3054f0f00183830b152874d04184088d0e0efefa488345ca942544861c21c1e04005081a3a2c3860fee1048b0e413a2060007ac106071b389cc862c44d1d0e2248d090d2070b912286b09c4871c4d012121e86089601448b13436b88ccc082a5439f4e2486aca1e140479a2255465c48f2c4531d1d293ad529711d810f3e53b018928245909f408e9678b06001ca08176bfc10aaf483c10637694e9cd0c18d1c0a0905954a06f9c38d2780d08001071cf8008205164000340628a0c0030a1f3ce080023c2c2044070b40a082051e108d010a3f0c6d01c90e40600107183881133f6890430c417829c6175f78f1e5185f7a1406986284f151985e7c01a6975d76a1a5113b145104902640a8c00c4ce4c0e1092270b8e00b1a40e8e0010644902288052820a13011fe3ac821842398c0d00223da40028d47f640638f39ee6084124e4049242d34d20044104540518594464921859344203105949f3809e5135092d294934f5462a411482009b591449efa031036d87844254a484da4a4495b5de4ac40d640c30d3b3a01c5113b0419e40e37da700350473801a4d82748a8c0b50c5abba0831134d8e0810ba2bdc0830a3030c18386249bf0020c1da8d0c30e4984e0041570c0218b298cf0c39043d2b02d8413a230a48f2a4ea8608327f6d04204121df0a0842170c8608675fdf82f8d214860a8001164e8288322fc80a30319e0a001081da0900882192b88e2133714aa600853b0b8e0840c2ca3e10837ca6863942a64488202fed03a0062060b0e7040083662ce01091070a801891640c86089569e7efa9556f0f0e0800512284103040a2000c40a437ca030ab2ba410010f1728a0ecad4bb8c00747d0e840093f18d905485b7804e6c7597619b298638ef4a5c8638439a6175366e9a517501a69c30f4e18c9a189323666a2050a0ceb0b8558fae9871b093a38020724fe40830d3bc498a10536d01003934494e1a79f70ec08a28d3a90986108259040620d37fe98438e2fd090230e3920610a934f4ef964505046318594a428a1e4135297c2e41149ed90e3d44618b9f4a6987252257b4842a144103c0841e3843be408e40f35bca2a10939f6f0830d31c448c38d37d6988279d6a00639feac670d5190431dbe7004293c210d6051c2072ef0001670400970e0410b36d0a2ae85886b246ac0064ce0800c64e002b1c9421d648385194c010e6f38c212eab0042cf4610a2458c3128e90832da8000e5aa8421de0c086e430211087c84005322003238c80020fd00116ca40043858c10319400105504084135ce62f7130041c4290011cb8e0049a388108343003077400027c78830e1c00011758610e7dc881443ef30024c8610e6da88494dee0c0274441403e70053ff8e10a2b68231f70a0504512a0002a68410b5b5000012844a10a1ce0075b00250a0eb182123900330c90001526d18a3b480005f2c3c11788f0887060a31cca008637b0510c71acfe631d4c3a063084d40b615c631ffa90062ffec08b5994420e7270032b94018b491c42163a60c0034010051d78600ab0e0c62becc10f6ea0a0063ce8400918888439cc01091e208197ae580478f0431ff6e8c73a1aa10441a8041080f0843d042a0a7ff843196b70444f50818a51484f7ba0e8042544810af471821289508423ac4289ef31621080781520b82788408022527f5044aa0471aa400462108b40a9475502534108620f7858c31e186107fc0dab9f8c08047b12c18635f0af092150835a4240811308210a4f3841694cf001101ca10515881104fe420326d040043c60421150b0820da8a0020f10010d4800042724700a55f0836cea8085231861fe063248c0018cc00928b8800d6fa8df1ba020833f1ca2087098c3091680c33a18421077a8031128b08035ac010935e5410e64d0000668c6016a48c21b967081199480042280c0055ac081fad1e00b5dc480561d70806c9e6b0121a0810b98808537f8ca0d8510841cfce08727b8a0118aecc736d220828775e0339350a426d8a0c857a48d019431800fb4a1487e90e30a3272100196d00f7eb422168a3cc40576e008279c2011e350e437f6a1487078831fc660122f78010c5ab423764352643268010c50a0c10f8a58843f14d90c4da8800768784209b2900945c66202dce0c7368a6087367c81074a68c212a6903417dca0097b70049fc6190d1ae84291fea4f8dd1f1251bd66f0631f94f0473baee78898d0aa2966f903518802893dc8410d89f8c31f4ab2882103e229ff04844b1e31aaa8682a148f5004f842a1924724aa105301de1e8a8c86210001084930b2189ec98636b4810d4fa841ea6440831094610d3af8cd5c3a408222a85521a1a1adce3003a30a5980421cf000084a0005232896044778c32196c0042674020e50909605742081b1ed4c055055cc14a4908421a8800f3f084e0968608213e460089e2084079af0863260a10d7ca00d0a3020410b7820b51770400896e0020f3880051ed0810a30d0010d54a0042d30011a9670390468000414c041093250020ab8400644b8832300e1072938810969fe4843197ad08671c60e147368c20ec83405135841c1b290057a0be0208e44400b0ae6472c24e0221735c00112b0063f64718557c462050ce8407c5c008527e44291faa80579f9118d59006917c738c62c8c415e7f90b71f688049133ae004481883bbcbd80149aa30032588010d35e607c0f9c10a0fa819a739f02a075cf0843b00620f6d204122b9abc85f2041094078021b26b5886128d21d7f6884f48c828a53cc6216a7404a551ee188a690dd28a618854f9a4712213f427ca130c52360ba8738e814129cc0844db01208a69cc5558fc084a4e4c00892da21c982a8152650ba06264c41092d380167cf66182018ed02158240119c4003168000032cc0fe50053ec0a0d9c24800194840049c20eb2c0ca108696c40caead009963164230cc080052020852c64010f782802094e4083358460012598010ecad0895534614e7220041c8a4081167aa0603868c1052cc080b6e880061b98d002aa0087060cba012d484215e4f0842128e7890e6280b83000b40c588002690d842838a18822386007e3de8a1d823620589d36500324a08127209e8833011418380790810a78900b61000350800b5400037091d040000ad8800650800840810d508006a080e8288332a00147c08453a0853f50055a10055ae80517049262a8855200925cd0af5e10851d39051c20824ac0822a58021148000c70824f208232900352688207fe78800fa081d1b3032698818ed1810c508171b30335603324880229f8022730021d6082df61b3a2220225182041a8044e98af7d58845018055040055ad81b1744059da0855320054c80844a80a9a45a0f34980392a2845a4984e031323720822798022268034058034260843250833938c03220a93f780afd6b1e4650043bb8033f7084e19a0a45700337600329c0833fb08303eb273b90023718351a90400cf88f0cd08113e8011d08811440010e71ae0a6880f223910a311b0410af3eb03f0fd0000e38c1296c8242e0031520012310010d41800630011160024180822ad0021a180123200413c80047208442c00210e8846760832438010c480347d082fe0e28a10c68010d5a800b280223b8100ae0801900811c208436800cce52916cb20012d08137b9001710340a8c9071a9001420012640032008c719f08024d881197083a53084f6480226f8952fc00135d0011770011c58b60da00025aa8009ba1091b1bf0ad0816494c21899c20e30380898880c10190648400fc80150440348c89e34c0a15819055e380545e8411f41855e60843dd8090d401435e8810962aa403801c26a8205c88035500139698136b03341100399648340500299048119002946b8033b30093fb803df21a94568041edb944f08444f8184a678849e308a99581e50100aa2d8944db9bb91e084471884a72814c3f303c303c544f09da710fe15456829bed31e51509e476884025209487004e4f1a83b78022930027e64ae2a0c0126288323408232301d35c002347082c1a802f5510331d001438300559bb30c301babe11a1390222480823428800d28350f0c8d0b280143db009b5c82e01b02cd100107a88016311b0b703d0b882dcd830213683f384803138080fb84001a28833aa8033498817084043f40000b68012578021c50021dd00007d080e4208228101b06f890e8ac0024a08000c0d0006000106080344882aac20c13980b1a480211100137e00331508326008454e8b241980325a8020363833910833fe00434280343208223188221a88b2b0a9b2722a1ab7a800aa8800eb8001571808dfe8080bc320086d88b12c0011208810a4888283890fe59034648855fb0055198833870c15ce8ba5d9885221c053490003b103a0ea8080be00028c082034081b97004a85b8326b0034070a72f08044ae80445b80336f0033930d4414829e4498ae81185e8210517a409534005a328055338055388094d0d0aa2a0d4ec6995566104404029a8000546584ca6e00448284c520c04274b84416029452015a2c004509d323f99833da8d58f4a8306aa4d2c6003f8598445c0a83488834068043f5002f3c082f7e8002be003ba2b8440600324f80013e8331a800236201534f83e11588852db800f308c7ee1170e88000228023ec08227e00017118e21c882754982fe2ca88c11d01683240206e5001440012cf0011330823e480220380112f880ff600343f881a39c48b600011078130ba8802430044e080441280542e8003a3d8223180c60938c18a9c055583a2d90029dbb063870822f20010d58509385b83970021c380245610345f005eeb20550a0b44a2803277802cf0b012040831018010e5d36894c02346802119042093c11268d80d8292fab8982772a8136688114c08124180138b8323750852d53044a083c39208954f8045160841048833a8082a5d38709c086a583001d40c5102004f6aa04453002350084f3d909a240054a2006e4d2074562065230055b4005afa3054d2505afd30951d0894ca58551108a4fa0fe044b79845841d55049045e3515356084ba1b155180844548387f7804378b833430403160b3957a55f8218b4278095a558a3b508444a804d66c0a4a708451758339f8a7d004456011831cc081bc5c0d3b98c53b98832748021df8c5376890266d8000988cf8eb801144910dec9006a8d226508107400e1428011158934eda802ac0022850810e78022350013c98043f88000bf0843e288355e00442908d2cb0c9b69881c6690213e0830692811b40823e30021968b60cf051115883df40023670182038820c904607110115010d0858813bc0077d585c7fb0876d9006458a82cb11177259016ef0077250307b908246485c3f400547780274881d45988345fe181d3b788240e09c6620af69d08128900832d101129804938b1d2df08bd9ba1c2d50a482222f43808d46e8803468827ae28774c0b940980351e8d65c500335100539e08446788322200435108057e8073e00387d1004f28a0506289a13708434f8004a0863059b075b404c3d14855e402e5b3805a0180a9ad8dc5350b07e982f7ee805b723055b98054a1806f2da075ed0b85e98855b40855d582897c3da7e503c4c490a55e01c7e688758f91e4aa804a00204f821c5b969034e1483365b033958834ab4dec614d5524c8337b0c42f78033948c12778823240b736fb022968a736480336108436e8d32f4802dca1012c10b33280022ccc800550026ecc00fe0a20822fd08b0020000140001ae8031d90823aa002d9ea001c7857b06d8214ea0336e04d71e683ae4a011a30c72210812388853e00bf0bb8dfd1a081846903d9c81a04780012d88114608237400120a0011a7a0346200236f0049aec0b088838b3b98034180436c0077fa08171ea8725780545c2020a701019a9800980857f680617e307526815bef3cb3f685c7ef80435680435780237400231c8e94ca8317fd802c9ba000cc08027e804455a8500800228b09a6c4a00080800300eb809202f58788023788208c0011f98057ce00758f0847e48843618044128ce13c0512c98034738012410c70d000094a5023e40af2b50a465a8805ef30334f8804220feb959f8845f109452088a48e56445c2865e982f7020e55d2065519065652005f2d287b123459268831adb0754b80645ba859b90cc53b0055b28397e408544680442588334b083a530627f8085d0a504ac6b4c4ce1044ce9044b688ae2b528a012445485844e503c977084f81904359002fb30454628043418432688834568273ff883e162022460827f61834d8c832f702e10e81812a00019f01607e000cde080b4311b01080003d8c808d001136840267090650b022c68021af00151888524200d17e10085008122c0844e488222008287818002304a0818021d98012780d3bea8001300829b9ca32268022330021a500226206789560243a882de400023fed8810788800dc88127e80094e58743b8827ed08435c05a6250800961000830801f20077bc207cec187e44883c27c8344c8b97ea0064ed04f34f8823458847ce0877f70a47d18861398ac33098434e00328b627554001dc93500e20017a48876d78063e188716d6020d9091084883508004f8ea872648023518843500962b6c811f58840cc06bcc10800968066d700505d0845518004d688666c8077531023960802818146748747c308652f03ae2458991d00572c0077c6086a4a8ee44608a2bcb0463c0877a20075fd0c34c1d8546d01451a0f559c8045dd0855c4890ee21c54f18065d30866260144b2015d3dc0335a876519831c96c9e41180bb6d31efe52a412d3b40a46b0d93a0804e10143f82914390045e0011e39281d34408338f88342a8d6f538d44008cc27d00120d8361d78821fd0801360832f60822f00021f200d7f990336080205548313d082094880b4a12129a882088891ad2980ffb0005322009078d22430810bc0810d20000da4b40838002160f812604a38382d0f10211a6801379884d988822698812638011c804710808336300222b0b93780836b2b800c4801c3800066d9800018800150800dd0f206308006d0022828d910598006405811f59fe6f403e3285012d0292038b13d388158333020188166818bc9b29a8d200136c0013480800d98820ba8bf098191f3350003b00b2828820ef4fe8b0f680220a83a7e90be3278834790032951831f80002198acef4b00cc487b0348808de89005e0812a4c0009689fa7b4054630013b605146f8823520855e00121fe1855238854840cc52c80560f87660e085bb19febce1053da4c1855a925f6085488dd454100592102ebfacee46f8c44618d6c1d31e4c813b5418894baf833b90021f67049ae804714b0335588332f8cd4280d13b180446f865450008428c060d5a23a58da03f6ad0b8f9d346cd9e4a8602d571d3468e1b1d3d3a64a001048d18192ca078a0d0a101ca050b36a08010a20a9c241d2040681061010214240e3c806060c181a027f828118182c0891c224ec85881804206133b343cb8b061fe8305074754a0085248951b0d2534aca9f2a0c2133814a0a83982d3c203071b44b0e994e403050b34dc143a42244494372a3c944103e4020306080e4818a201028302051c3840b018c1821562d838c15269861b5481023da1d0c6cf132784d0bc0964e4071c0e6a929c2db20482870a38298f60536407880e3d188830410141019e0c1c2c483002320207101640250245041126524ef8a9f427090a407f447438c173b1649c41091c007a2081ca030e1a2c2f6141f1831365e07007362b111b8bd832cb2380f881c81e7690620b2db4a042cb2ebbf8d2cb2ca840a24a8412de820a2aa99c62ca2cbff8e24b85ac9042c928a474e208270ea2720a2b1da202feca239528c2d01e6d0422c71c103d8249289c64224a288b0cb248227f60f249279f5062881d729cb6c8228cdcd1065f8c3c32d01a4944d1468f445490c10734c081a42082ec81061b4c886081073470401f0345dc21882185cc1685092294d0010740e010d75c0214f04009451872820626b407020d2a105105041b2cb184274b788001764f60b102030d244081079059c0501634544043111a5090820e53486184112a58402a0740b5208207951d40430e1e3c40031372c05107101d684002111900d104091e4c71020689e11419032a3170c072052cf000034b0c91c11383d8f5461b27948046ba34e0b0060d52ecb184121b38610404208800c203437cfe61d901053010050d32d4d10005073ca5f0a8dc5290dc743405fc804a479410174d45886148095a9812c809f7059c8006c949160001040420d9620aa79c9c65386d009a122acc50071a7250c20924683831c829a930424a2aa6a432cb2948f332e284bef062a129b4cc82b42dbeec424ad2b6a032f529a374c8602aa9a0420ad99450f247147f8462ca279880c2c828ac80d2c9dc946cc948258edc61471b7f68196422942832871c55c4b1c7680eedc1861c8e2c92461573bcc1e34573ecb887216a2821c30c153860c2135048d1841a6ea4e1c4116da93096072df8e0030a2754b001134c40714211651cf104000018800210821ca283085060118b0a20fe307a01119a08e2a665223051041055144181030cac20c82a98a0b000107018b184061a181105104f18b28404660cc14109d97ecb5c09690c3142083bd0008105211c9184052270823af8a0081b28400e4e400414344007116840064eb000c5284c612d4380053a50811c6860067388820e3c40828c44800380a84321084183fd64e0004d60c4b624a0060f308002ee214007908082037c81030ce8c00208e0ad0a060028bb410001be8513043ce038d13980086810011a30a20d15c01e7b841894f51c408828dba2652e6319e65000094aa00005a620862138c10925884220d21688413c82469048c4294e410a5a9c4215a818d0274421b55dcc024213eafe502a78a148426e2d1564fbc4274c01384c900292a8d8c580ae568951a442149c00859340118a507c82148fd852233c0909473422108960042702c1b739f8c10d807004231c91083b180212a0e04481d66007d3f92110b01483077010290e98c0074fd8831cd6908625f8800627d0810b4c50843914220a4ba8c3920837072680c0044028031bcc8086035420001b9082215cb1041c60210217d066093ca0010e3ce104d75483114a40822198a0814d308206a2d0092d9860064e30441ffc80050e60af3d0b900e1022e0800b9cc00320d081f294d007414881044d4843139cc0060d38c0034980c2114230820604c0012358400610250313c8e0093aa821feb7801246068c200838b040023990061cec00079222821266a0042cac21148468821c3680010a2442024141000d50b001c57cc05bd8a3400b4e40a72d6a316002db166614f6836f15a0010fb0a04a10708227d010399211621685881c8075915b05588c112ff0011db8410d4b184423d6d0843411e10b4c9803241461074adc8106a1a0d12978718c42eea217be3806318ae10b60f8426b9410449218218aa04d6817b9b0452e08998a5fd86217a9e8052b4c54094a0812146c6b442328c1a22dc9e10d8270e5233841894670c211c6dc121d3fc14a4128e20f6e90021aa4f9053fcca60e08f9c31c6c89113124e1094df0c31a98a08322ac4e054138c210fe2e30021a44210a6c8842085050824ae9e0040cbc68053a20830c48c701094840ef0210009464000e58a8c2148850022c74220bcc0cf0726800853410220b4158823f5530043874020b29c8c0062c3c83231ca10e4f28410518f0800830400b6bd800075460840588a012a6d8c31b9a70021ab480c1d299c9064030ab193c21084bfe28119e4005f8308006259820c0b6459d07202003192002096680853a1cc10f49f0c32090f08442ac610881c04411d69003dd7cc001150c810e128058c970eb01b76a007bc0f8d7c3824b251705c22938f0801024c1081dcd490a1d60c39709b600894e34a115f32d3123a0010b8040052a2002072ca1107d1bc4283afed1494728a1069d9845285261892734e214bdcd452fae968a5ddc6216a31045d556eb8b6000a317a830c5d83e91dcb57da214b4e8ad2d3ec4203d9aa26c8910842314d1063bf8010d6a588396b664074604e2119fe04423a29bcb532662228ca00424dcad5c7825c17083d8c31ee6e00433a8410d7650031b8669ba3754a1097f288312ec30072cb021356910c3090c0063074c5a8367f64322d6100528e08b6544de40090ca0823aa0a088b7d3c224a620082c8040094bd8400b36800015f4a1138b4254115600815971000b98f0041cfecbf10a5ce0011ca8800774c0874ea8a10c54f0c110b0a08421540113a930c41092e089f5e9405c81d042c03890fe661a9340d314e0c012181002156440c7194c021086651c147c00031e98c1062ea08332bca1087b70c213e6208a153c811346a0411da0500023c05561c969c080870a30c940e0ab9221b4a785e8e980a5ac3d284b4fc010500120a00001db127d172d53fa9515d6a2c961a9c226c8801f1061036970c41f74f00636ec410a9df06327eec00909ed42b4c678be318a410c5f6ccd16bf00868498c60ba4cd6242a2f8441f77510cd69a76177aec842854410a4c40e2137d9bad294ab1b6a91dbb14a550852a46490946306294a3cce58ed88113084223fc9b1f1453210c82213c82d96817ffb901e3fc81204809eaa8c117e400133c4112a4412dad811bb841fe14484112040111a4cf1af88c18a4461310411da4011338011254811c98411190400830011b884100ac801f68c10f90400a48000a7000131c02169c806530008381000894800c68010a404115400110d0800e40c610184f23bc811628410e40400178c0119c5413f48111740016688713e800055c88209c804964800a140111b4401434c1eec08185ad4b27100211188102880076c40a01204042591a0f3480ea3dc003cc800b5c400780d005b8c008a44012e8401a50950e401e13f8131694c0019c800a6cc009105a090c0104548607389a5b3d4562a0c7e7b915a76dcba215c0e9a98c84a98c174998201a4003e41ee9b5952d26070534da04cd8e0a9cfe4012884013a4c00578801218422814c32f189231b0966a8d4834188332445f317c63f4cd8225384229d4962db0d6d4f88230b01629b08829e4562a804223e412274052fa11122b148d2880822a7c88298cc2ce50422770c2f17d48fe85022a94c228fcd228ed232784429340c2e5c8c11e2c821c144222cc011bb0411bb0c91f20ce2334421b28411300c1115441ed94a4095c0005004f1904c21cc081463e0113e0000e3c8101314115e4cce47cc112a45313a80004a0401138411ff00116f0c10a248005348010a040015c400658000850c002b51416148103a800166c800e54411dd4410914800ac081c3f50116688005e84016b8c12408021cacc11bfe94581ae01907a0011c54411a2c19e4cc44036cc002148001040004181a0990800c94401294801834415e14c1095c4099b9801314c21da89d0b50c00590401d10010ddc41324a41cd48c10a44c12034010738400bacc11d3800784840de5dd41889da02dcc7614586a7250705b955178d5ec01c402eaaccc94898001427714a582e4a980118c00140c122dc25203c010824c0ca28c07cf01808540007680008f44004200a53350087750220c8c11f404229389f31f8c237b6672f484d2ef0427b3e1f3100832204c227c4e788b0d62f00d725f1427f22cd87a0c267651b2b8c82257402faa1020356c22374c28c3ce42731021bb8c011089320300272c901fe87a6c1130001102c990c2001e3b081200c821dd8c11d60c41a9ce81c75971cd0e44562827439827229821fecc147f2411fcc411aa4011be0c1d6a5011a40010d884006604662b0803ec9c01174e210548005a8400008808451670390000710010714d64a884013312309b48a09644011dc070560400678cb06648007a8c014d0ce12509c1664850798001c68814635000abc4625480164604fa904c57280da615147651c160478e6545a406a3e0008408120ac4109e04006a0c11294c00c9c40909a940720811d644111f401012c01214c41be20c01ffc4000a8c10f10808e6911c0142212c5e27aac0ccca04cca04670000272ea24c951e27720aab00e8fee2ae06cc0204a72d264004b44009d0c00ce8001080a90720801800c10228231648e3fc95166f91828d60c22c00c331b4273000c32d0c886b6dc96795822dbceb2efcc2bb818228745ff301682fdc422f04dbd6ccc2d110a8832a572bb1482510a4233c68b7cd022984822afc4120fc418ac29921686822b008277082217c428d704225300201fa411c34c4c30a4221f84d258c640a54c003984008140c105801c0e5c003fc0e0aa04008e4403f21801160c113bc4115c1e10778c013a4c11a9cc0d32140146d80091081d12ec114600111900f034cc10f789a04dc040270809f74000870800f24860b604112f4c12418c214948003780a11e80009800011fef8c1214cc10560810e884a4b61004e3400047cc0334e876524c77a845eca648baea2800a2c910dbd9d038080133441123cdd0900c11a20810640c11b24c10fe4c00e2c810ea8c00e6c000908421d50c61b4881050445afde555c01ee05055100200760d5aaa70d6bcafc6aed2267ca1827ca14a7955ae9b022a72dda6ee995510b24580bcc001394400279c0091c411a0802b96142f6615ff61103378e1f269d4826f882314c9f30d4e76a01036f8d0224d423269482af79082a8c4274e15b217002298c4d2790026f8102d99c9222c052279842231c6cbc7d52ae9d48be95c2fe69ec295102261017269c1220acc111e880bc70a01ffcc147da01c4929bfe1dbc0134f1482134821f380114ac41023b44e894c11a9280668a00101401f04861c1c5c11c9441492e441954c146020100108009ac591f4c81d762011648c1121c82065047ca20c7a86d004d9510056cc0599480f8e48a0a5c07e89e001214c27530d49bd4a603f46a7b3c40e8319a572686a86d110758c01291d9016c001688c1076c800688401524410efc854d0181139800240c4221f8c14ffa701f18820a880012400104c0410e60461b34c10a308157b5cc30cac05d1d167a0423e0b60702e4a22d7a312e66d12dfed5aee22e7be86ae8e16af678da537480a65dc005ccce132c8420e08107ae411d90c11348c11ac0811c6809fa4a08302044f495feabf51a8330a08222a0e731782389f05128644229cc0280ae96bcce41459eefd2a42bb4890dc3aa8228401b81768272d5c117b0417509a4d9dc0109408129f0c2407e8296f8cdbb3d2c23e4af021a9c81fc811f54179530022468e83cb2d21db001bccc000d60c1680c821c1c010900411430c117bc011ad0c013ccc003ac70111074f5ecc1138855046c405e28004a2840cbf56a03bc4e057c5327c084147ce27e8900050c1d052400fcb469072c0126c081ed140152ae011444c74695800e94c011f40121bc81127840538a40f9f0044b6dcb2b32c0117000121780f2f8895a01670150c00a3c400b41001360090e448005ec0016c0d91da041125c2812fee8401d2cc1078c8004a8000704c003a0c013d8810a3040009cd49cdc555bfd661175d1ca2011e9016372e6a6ae0216a70d36b26e91112986eb2d874a54800674c0587440313e400784000954f6a6d45c1344c1730d0220f4df23384228f4dff641f38172082974b328e482d3b4d62cec023014c3be9e96309cd688f40230d8022558c29328c2221c2c26a082c6f21f2eeddf79560226ccafd1e891d6fc118c34828a56511a50f344288223404295384225a0811444c11a480edf986721f433bc459312f0412054093031c9293d02952c09282c7020ec4174950241422423d8414aed811b30010d34011a18811470a9443bc11044400018400424a3284e81fe0f9f801158800f60421f40800934411160c114308005684013301464e04e05989aaf98847c9c00142862b618011bd0c01288151338055024800ec4f1a9594009b44c7bfc9003b0875fa1cc1c1c020724c006104012b8810f21c1013480031801145800b3a800c79d8018a0c00cec81194200723480123c81b7e8c611d0406527eb2f1ac0627c51ea49589187b28405efaf0e23602576e9119a12e99ea6a51a2b4385071881b97ce0d639c1e670a74739f00db88007dc40104849bbc94120a80223ec729134426de31621edebb99e6b2f688d29d02b2ff4c2a8f382beeea76f4f487f8e4869598dd6d08229c4ba25dc811bdcc11a64811228417b09c24342fe1b1f65f38bb87690d84d27f8df28a4f60152b02388422704c279bd8118ec81200c5f8e56c9bbd1f72288c223ec88782b810b808005a8a90e4441261a810c68e6610e01083058d189c006f80120a0010514a513d40eeac8c01aac49112880a148b90a544115f4d3544210ad78c00630070188c0149c5a6510c00aa000192fc013f8c00920290ad0c01400810a30d14c2c00f3eeace9aac113d013a82006654075d52a06ea1100ff740003f0ed0fc469a85476693c8007e893959b8003e34011e04014f081141c0a7240c01a2c4194d77806b8074da80c50ac8c2e16800090d9c90ce75ff9eaed128095b22eeb3611249abc9496000818810e2041893d0221fe088229b0c220984e12ac411b8c000680c00d80140decc01060130da8419a50c2285dac2870528418cdd2e0d6d4945631aca3d5f4c22ffc42699d2b7bb616db90c28864d2a89bd62cdc1634830dac7fdf2724c21d104e792a77e7ff011b2cc41a2cc29db9db228c82298882b64742bed5232778d223e45b3f7f822a3c82c3e2122010e07648341c48c1142c81cd3c811bd4c11bfc4121c84112a0131bcc011fec411c54010d98d4e1fcc1439b01131094095006a99080511441155841105c00c7f58ecae8050a44805388355368c1148ca9025d0007644102400005a4f862d262a25900014807402c700001c102830c2078f010a2c5091358042940c08122fe0a061c1e34b090818185060c0e14e0e02081050a0810d06053a4400113090a12d8a083410b14223a1972734281030d0e0e30605000c10107140258e000c44180061b0810281080c08190559116a8d03240cbaa538b12258aa025039408403a60b0e082870e235c68a08043878b165214991a2468949d50945251ea2ba78e9f44533cb470c1c4c588194794f06812a58aa246a21e317ac4499429529d51ede2b5cb572f5ec580f1e2557a352fd3b668ed329d6b16ecd0bb76a13a658b952246a406b549836551a8508f44fdfa65abf62e5ba866b16245ca932955a45079aa34e84e1a3977fe0462f4e74e1b3672200d0af467d0a044901c190f143f94a950fe9c283102143e919b36720429a4114706b1438d28d4d8a310f11cf923bc420411641139dc4823091450586183074c88028a278e086105872cd8000820ac50230e392280802a024cd84004084828c210418060e3908d0e20a1800368d86001020220a104a016b080062328386081023c72202cb2baaa8006295658608f4eaa186283043a782210424ea000038e38486285001ec8c187063c9821050b20b0c00110b22c08250716a860a0161c18c28f1bdb70a081a90230e8c7a01e986a03085a4260ab1fc93a80c8ae30c060c8a82e0dc0d30084b21401079064a0820e2e7840830e1e28410737661841030eb018a48422d6b08393bf3aa144bc547c31c596fe530651049040ec90228a1aa4e881861b7888c28d3908f1e30f471e798412c150f10c155a66099797e67801a617d27649c5164a1e31259773cf3d8594536629c5945466892d975bf0adcd165b724165de4a1a018410f440f984144b2821a51246ec10249041e4688311469c30638f4f4a112515cf76ad441142b4d0828f400471038f081561c30f37d0b8230aef1291783d3be490638e3dfe10e40f3fecb0e30e35c488e2092cb040038d39d810c3092c9af8828f4266b0b2104a1661648d1a88c801080f5450c208249620e2070500102000abaa88e5902d0e40a18a2a7c58c2820b5e040205021cd84182210f58fba9051ad080048362220001083240b5fe820d2870e08105ac6a80540a3850420e233620b501123a685c2d1388b0e0010e36e8680410265fa1848e1aaa620514d4126106259c701229a9102000244b0b70202a4b89b4f4d3e33da52003013af5942b022e58e0810b527d60840e40a0e088349450088d3604318486149020428e28887062104a3e31651746fc606457dc500945944a1ef9649035c458230a1e72800425b0c10e6fb0832228d18846fc2111a190d72c7e819b72a9c617c028c6058561ae7ff5c25cb9108d6b76012e4a84a27de122052884450b7a99825eb3f8962946480a17ee6616a140c52828d10946888214a600052844018a1176627d3daccf2720b1ab42f4e1107d20842220c1fe0839bc0140d9a298c536730739f8c1118dc8d6231c51893bb8210a4948c31392c004221cc1094f438313c4a0b428a0c17f5f5001086450041d90a0055050031bf6e004127820094538c1920090364f55a0010b0002263a71882900c10724a8c21256c080126ca02b04800005a40701b34cc52b0c48c1a10e30aa05a044714241c0460a40800ae4807b17a8800634403a0a9c846f402948477490840388c0094358830e348080d96da555192804149cc0a42248e000d9eb5d573ec53c525e2a965789ca8b38753c447d0a2d569948073cd0180e64400323a08005a220883a9460044970831dfcb00625b8610a69800316cec38850fcc1149f1004231a118afed5cc4214c6f9842278e68842e0b30d6b1044222a510a946906148f80c42866b18b5390e65cab1186304ae30b95561018be08612a1461b1eb90227fa7a85f4d43d1884480113fa3981024b0630a5358e213c78204284e488935bcc138a3000524bcd85048fc670f8f70a0754af1896c3142137ce8031ff840888b316210f26b84220a713141e033106d95c31ae6f0b39eed416765284315caa08639a4b5107f60030d4e80a232f06cac37aa031ad81885230c21033470821ada10050d844005091000000ce029016c000e7d300226a4408422c001054cf8c10ab05082048c050253a8835504d2120d1004714ebaa60222e024a92c602d2689c014dc40883afe70e09310680008ce4681b55cc0082880800666c001109c400527484216ba52820864c10f3880c3142800841f98a0092468c035a942a7aeac3696dd9c0ae5187029a9c4f29b5659dbf140629007dce00675690c0846b0031c94e006502084126e200527f8e10e6840821b04f10434a881108068182554f10b52300214a1f845317ad18b8ecab0179568432538a1409d0a3414a068047e3abcab53d8475da209e94a53038c96ae8616f30a172d7c78c247fca113c3aadf277ee14254349433f302c5c3ee19083770021452488284fe400a9a26e213a710852804a6654aa050cba27084b12446898815420b86e04420b4f5094be08f116d6544221c4109481cfe87135ac58cb1e4b087440482af7b58c41edab0041300c1098630841d8e693a5371c8073ec80087486081d2a6410522d034a351e0034d6c21b3119041230fa98327a820021ca88008aa8005c80525030b08004a14c5a60c58c0530630420478db3b0234a001546140083660df0da480013468020d28a08183a00402206040027660010664e00895aac010746004227040056dc8420380600402c8400332d8c00632408413542551087851001290d9f97e9348100809298f77292781d3950fa8001a68509711dcc0053a68010d9230041a9c310947a802ee949004369c510ec92245ba00910854d8a257948060057df1085088f40e7e68c42738a18841ccc1fe0e021d85b6f2d761e87c8b5eb2194d695aead210ab745ca8d00d2928610a5e30e716a6988529a003f5599ccb392c04576d66910aad6bd986f6b9a1d149d1ab518ca213e1b3431ddc20062398e0044e3034b642e10846406211f089e2232636d63863a2118cf04d23ca8af38b6dab8b80b8431d822688bd1cac0e5320c213f630084724b1118a77332720018986c23c105af003264a510a3ff8c8b82240c10138a083de39e00d5a40c1104ec08121282000107892a8acc215fa7aaa2899cd37042075bc0aac322406e1c30a7e548004c8c8094b901c05ce9b803a1120f6b1dc40280c61045a41780a1a10c1090ed0aa27a1c52c078800185070cd54ae456df1c753db37bd1270e751a5fd4422520128f01606a0e10933d881128800076ee0e194400972e069940009d2a00edac00db2c00dfa207c1c211016811520c6147a4ce528013a6c81174e8184564888fc2e7e1461a75241375c485df625a476215f3ad039569016540a375a70176e615caece16a8ee5cc2e505696114a023a44e4185fee5146c6a08676cc946618178063d1a0a14b08562de80110a6a841ca8132ac10e5c2f07a00012f263ee0644e6d2aaef1ae10be54e1102610f106ad0fea00dda000dd200902e6611b22510e6800900cb04d82e078aa008a6e0078e645428e04850000b8ce00138e4043a80721600de0202003b');

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug4356.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug4356.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,106 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2001, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.PreparedStatement;
+import java.sql.Statement;
+import java.sql.SQLException;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Demonstrate subselect behavior with prepared statement. 
+ */
+public class bug4356 {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2001_2004;
+ 
+  public static void main (String args[]) 
+  { 
+    try {
+		/* Load the JDBC Driver class */
+		// use the ij utility to read the property file and
+		// make the initial connection.
+		ij.getPropertyArg(args);
+		Connection conn = ij.startJBMS();
+
+      	createTables(conn);
+      	doUpdates(conn);
+      	dumpResult(conn);
+		conn.close();
+    } catch (Exception e) {
+		System.out.println("FAIL -- unexpected exception "+e);
+		JDBCDisplayUtil.ShowException(System.out, e);
+      	e.printStackTrace();
+    }
+  } 
+
+  private static void createTables(Connection conn) throws SQLException {
+    Statement stmt = conn.createStatement();
+	try {
+    	stmt.executeUpdate( "DROP TABLE T1" );
+    	stmt.executeUpdate( "DROP TABLE T2" );
+	}catch (Exception e) {}
+
+    System.out.print("Creating tables...");
+    stmt.executeUpdate( "CREATE TABLE T1 (a integer, b integer)" );
+    stmt.executeUpdate( "CREATE TABLE T2 (a integer)" );
+	stmt.executeUpdate("INSERT INTO T2 VALUES(1)");
+    System.out.println("done.");
+
+    stmt.close();
+  }
+
+  private static void doUpdates(Connection conn) throws SQLException
+  {
+    int rc;
+	// bug only happens when autocommit is off
+	conn.setAutoCommit(false);
+    PreparedStatement stmt = conn.prepareStatement(
+      "INSERT INTO T1 VALUES (?,(select count(*) from t2 where a = ?)) " 
+    );
+	stmt.setInt(1, 1);
+    stmt.setInt(2, 1);
+
+    rc = stmt.executeUpdate();
+
+	stmt.setInt(1, 2);
+    stmt.setInt(2, 2);
+    rc = stmt.executeUpdate();
+
+    conn.commit();
+    stmt.close();
+  }
+
+  private static void dumpResult(Connection conn) throws SQLException
+  {
+    Statement stmt = conn.createStatement();
+    ResultSet rs = stmt.executeQuery(
+      "SELECT * FROM T1"
+    );
+    System.out.println("T1 contents:");
+    System.out.println("Second row should have a b value of 0");
+    while (rs.next()) {
+      System.out.println(rs.getInt(1)+ " " + rs.getInt(2));
+    }
+    rs.close();
+    conn.commit();
+    stmt.close();
+  }
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5052rts.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5052rts.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,159 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSetMetaData;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.sql.*;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+
+/**
+ * testing gathering of runtime statistics for 
+ * for the resultsets/statements not closed by the usee,
+ * but get closed when garbage collector collects such
+ * objects and closes them by calling the finalize.
+ * See bug : 5052 for details.
+ *
+ */
+
+public class bug5052rts {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+ 
+	public static void main(String[] args) {
+		Connection conn;
+		Statement stmt;
+		PreparedStatement pstmt;
+
+		System.out.println("Test RunTime Statistics starting");
+		try
+		{
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+			stmt = conn.createStatement();
+            try{
+               stmt.execute("drop table tab1");
+            }catch(Throwable e ) {}
+
+            //create a table, insert a row, do a select from the table,
+			stmt.execute("create table tab1 (COL1 int, COL2 smallint, COL3 real)");
+            stmt.executeUpdate("insert into tab1 values(1, 2, 3.1)");
+			stmt.executeUpdate("insert into tab1 values(2, 2, 3.1)");
+			conn.setAutoCommit( false );
+
+			//case1: Setting runtime statistics on just before result set close.
+			if(true)
+			{
+				Statement stmt0 = conn.createStatement();
+				ResultSet rs = stmt0.executeQuery("select * from tab1");  // opens the result set
+			
+				while ( rs.next() ) {
+					System.out.println(rs.getString(1));
+				}
+				//set the runtime statistics on now.
+                CallableStatement cs = 
+                    conn.prepareCall(
+                        "CALL SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(?)");
+                cs.setInt(1, 1);
+                cs.execute();
+                cs.close();
+
+				rs.close();
+				stmt0.close();
+			}
+			
+            CallableStatement cs = 
+                conn.prepareCall(
+                    "CALL SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(?)");
+            cs.setInt(1, 0);
+            cs.execute();
+            cs.close();
+			
+			//case2: Stament/Resutset getting closed by the Garbage collector.
+			if(true)
+			{
+				Statement stmt1 = conn.createStatement();
+				ResultSet rs = stmt1.executeQuery("select * from tab1");  // opens the result set
+			
+				while ( rs.next() ) {
+					System.out.println(rs.getString(1));
+				}
+				//set the runtime statistics on now.
+                cs = conn.prepareCall(
+                        "CALL SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(?)");
+                cs.setInt(1, 1);
+                cs.execute();
+                cs.close();
+			}
+
+			
+			if(true)
+			{
+				Statement stmt2 = conn.createStatement();
+				ResultSet rs1 = stmt2.executeQuery("select count(*) from tab1");  // opens the result set
+			
+				while ( rs1.next() ) {
+					System.out.println(rs1.getString(1));
+				}
+			}
+
+			
+			for(int i = 0 ; i < 3 ; i++){
+				System.gc();
+				System.runFinalization();
+				//sleep for sometime to make sure garbage collector kicked in 
+				//and collected the result set object.
+				Thread.sleep(3000);
+			}
+
+			conn.commit(); //This should have failed before we fix 5052
+			conn.close();
+ 		}
+		
+		catch (SQLException e) {
+			dumpSQLExceptions(e);
+			e.printStackTrace();
+		}
+		catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception: "+e);
+			e.printStackTrace();
+		}
+		System.out.println("Test RunTimeStatistics finished successfully");
+    }
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception");
+		while (se != null) {
+			System.out.println("SQLSTATE("+se.getSQLState()+"): "+se);
+			se = se.getNextException();
+		}
+	}
+
+}
+
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5054.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/bug5054.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,97 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.SQLException;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Where current of cursorname and case sensitivity
+ */
+public class bug5054 {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+  public static void main (String args[]) 
+  { 
+    try {
+		/* Load the JDBC Driver class */
+		// use the ij utility to read the property file and
+		// make the initial connection.
+		ij.getPropertyArg(args);
+		Connection conn = ij.startJBMS();
+
+      	createTables(conn);
+      	doUpdates(conn);
+      	dumpResult(conn);
+		conn.close();
+    } catch (Exception e) {
+		System.out.println("FAIL -- unexpected exception "+e);
+		JDBCDisplayUtil.ShowException(System.out, e);
+      	e.printStackTrace();
+    }
+  } 
+
+  private static void createTables(Connection conn) throws SQLException {
+    Statement stmt = conn.createStatement();
+	try {
+    	stmt.executeUpdate( "DROP TABLE T1" );
+	}catch (Exception e) {}
+
+    System.out.print("Creating tables...");
+    stmt.executeUpdate( "CREATE TABLE T1 (a integer, b integer)" );
+    stmt.executeUpdate( "INSERT INTO T1 VALUES(1, 1)" );
+    stmt.executeUpdate( "INSERT INTO T1 VALUES(2, 2)" );
+    System.out.println("done.");
+
+    stmt.close();
+  }
+
+  private static void doUpdates(Connection conn) throws SQLException
+  {
+    int rc;
+    conn.setAutoCommit(false);
+    Statement stmt1 = conn.createStatement();
+    stmt1.setCursorName("aBc");
+    ResultSet rs = stmt1.executeQuery("select * from t1 for update");
+    System.out.println("cursor name is " + rs.getCursorName());
+    rs.next();
+
+    Statement stmt2 = conn.createStatement();
+    stmt2.execute("update t1 set b=11 where current of \"" + rs.getCursorName() + "\"");
+
+    conn.commit();
+    stmt1.close();
+    stmt2.close();
+    conn.setAutoCommit(true);
+  }
+
+  private static void dumpResult(Connection conn) throws SQLException
+  {
+    Statement stmt = conn.createStatement();
+    ResultSet rs = stmt.executeQuery(
+      "SELECT * FROM T1"
+    );
+    System.out.println("T1 contents:");
+    System.out.println("First row should have a b value of 11");
+    while (rs.next()) {
+      System.out.println(rs.getInt(1)+ " " + rs.getInt(2));
+    }
+  }
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="FTOtestsubdir" basedir="../../../../../../../.." >
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties" />
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/sane${sanity}.properties"/>
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <!--property file="${properties.dir}/parser.properties"/-->
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/tests/lang"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="FTOtestsubdir" depends="compilet3,compilet2,compilet1,copyfiles"/>
+
+  <!-- mkdir / init target may not be necessary, just here for reference... -->
+  <target name="init">
+    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/tests/lang"/>
+  </target>
+
+  <target name="compilet1" depends="compilet2">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <!--pathelement location="${oro}"/-->
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/*.java"/>
+      <exclude name="${this.dir}/declareGlobalTempTableJavaJDBC30.java"/>
+      <exclude name="${this.dir}/jdbcBoolean.java"/>
+      <exclude name="${this.dir}/holdCursorJavaReflection.java"/>
+      <exclude name="${this.dir}/streams.java"/>
+      <exclude name="${this.dir}/procedureJdbc30.java"/>
+    </javac>
+  </target>
+  <target name="compilet2" depends="compilet3">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <exclude name="${this.dir}/declareGlobalTempTableJavaJDBC30.java"/>
+      <include name="${this.dir}/jdbcBoolean.java"/>
+      <include name="${this.dir}/holdCursorJavaReflection.java"/>
+      <include name="${this.dir}/streams.java"/>
+      <include name="${this.dir}/procedureJdbc30.java"/>
+    </javac>
+  </target>
+  <target name="compilet3">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/declareGlobalTempTableJavaJDBC30.java"/>
+    </javac>
+  </target> 
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/tests/lang">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/lang" 
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/lang/copyfiles.ant"/>  
+    </copy>
+  </target> 
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/case.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/case.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,23 @@
+
+--
+-- this test is for keyword case insensitivity
+--
+
+-- Try some of the keywords with mixed case. Don't do all of the keywords, as
+-- that would be overkill (either that, or I'm too lazy).
+
+cReAtE tAbLe T (x InT);
+
+CrEaTe TaBlE s (X iNt);
+
+iNsErT iNtO t VaLuEs (1);
+
+InSeRt InTo S vAlUeS (2);
+
+sElEcT * fRoM t;
+
+SeLeCt * FrOm s;
+
+drop table s;
+
+drop table t;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cast.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cast.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,693 @@
+-- tests for cast expressions
+-- refer to casting.java for a complete analysis on casting
+
+--==================================
+--
+-- simple test cases
+--
+--==================================
+
+-- shrink/grow bit and char
+-- no exceptions should be raised.
+-- once we have warnings we'll expect
+-- a warning when shrinking non space/zeros
+
+-- shrink
+values (cast ('hell' as char(2)));
+values (cast ('hell' as varchar(2)));
+-- shrink, whitespace only
+values (cast ('he  ' as char(2)));
+-- expand, check lengths
+values (cast ('hell' as char(20))); 
+values (cast ('hell' as varchar(20))); 
+values length(cast ('hell' as char(20)));
+values length(cast ('hell' as varchar(20)));
+
+----------------
+--char->bit data
+----------------
+-- shrink
+values (cast (X'1111' as char(1) for bit data));
+-- shrink, zero only
+values (cast (X'1100' as char(1) for bit data));
+-- expand
+values (cast (X'1111' as char(2) for bit data));
+-- w/o format
+-- DB2 UDB PASS
+-- DB2 CS FAIL
+values (cast ('1234' as char(2) for bit data));
+
+-- extra tests for shrinking parts of bits
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+values cast (X'00111111' as char(1) for bit data);
+
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+values cast (X'00111111' as char(1) for bit data);
+values cast (X'00011111' as char(1) for bit data);
+
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+values cast (X'00111111' as char(1) for bit data);
+values cast (X'00011111' as char(1) for bit data);
+values cast (X'00001111' as char(1) for bit data);
+
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+values cast (X'00111111' as char(1) for bit data);
+values cast (X'00011111' as char(1) for bit data);
+values cast (X'00001111' as char(1) for bit data);
+values cast (X'00000111' as char(1) for bit data);
+
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+values cast (X'00111111' as char(1) for bit data);
+values cast (X'00011111' as char(1) for bit data);
+values cast (X'00001111' as char(1) for bit data);
+values cast (X'00000111' as char(1) for bit data);
+values cast (X'00000011' as char(1) for bit data);
+
+values cast (X'11111111' as char(1) for bit data);
+values cast (X'01111111' as char(1) for bit data);
+values cast (X'00111111' as char(1) for bit data);
+values cast (X'00011111' as char(1) for bit data);
+values cast (X'00001111' as char(1) for bit data);
+values cast (X'00000111' as char(1) for bit data);
+values cast (X'00000011' as char(1) for bit data);
+values cast (X'00000001' as char(1) for bit data);
+values cast (X'0011111111111111' as char(1) for bit data);
+values cast (X'1111111100111111' as char(2) for bit data);
+
+---------
+--numbers
+---------
+values (cast (1.1 as int));
+values (cast (1.1 as smallint));
+values (cast (1.1 as bigint));
+values (cast (1.1 as double precision));
+values (cast (1.1 as numeric(2,1)));
+values (cast (1.1 as decimal(2,1)));
+values (cast (1.1 as numeric(2,0)));
+values (cast (1.1 as decimal(2,0)));
+values (cast (1.1 as float));
+values (cast (1.1 as real));
+
+values (cast (1.9 as int));
+values (cast (1.9 as smallint));
+values (cast (1.9 as bigint));
+values (cast (1.9 as double precision));
+values (cast (1.9 as numeric(2,1)));
+values (cast (1.9 as decimal(2,1)));
+values (cast (1.9 as numeric(2,0)));
+values (cast (1.9 as decimal(2,0)));
+values (cast (1.9 as float));
+values (cast (1.9 as real));
+
+-- bug 4352,4358 loss of precision on casts
+--   9223372036854775807 is Long::MAX_VALUE
+values (
+  9223372036854775807,
+  cast (9223372036854775807 as DECIMAL(24,1)),
+  cast (
+  cast (9223372036854775807 as DECIMAL(24,1)) as BIGINT)
+  );
+
+values (
+  cast ('9223372036854775807' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775807' as DECIMAL(24,1)) as BIGINT)
+  );
+values (
+  cast ('9223372036854775806' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775806' as DECIMAL(24,1)) as BIGINT)
+  );
+-- only this should fail
+values (
+  cast ('9223372036854775808' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775808' as DECIMAL(24,1)) as BIGINT)
+  );
+values (
+  cast ('9223372036854775807.9' as DECIMAL(24,1)),
+  cast (cast ('9223372036854775807.9' as DECIMAL(24,1)) as BIGINT)
+  );
+
+
+--   -9223372036854775808 is Long::MIN_VALUE
+
+values (
+  cast ('-9223372036854775808' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775808' as DECIMAL(24,1)) as BIGINT)
+  );
+values (
+  cast ('-9223372036854775807' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775807' as DECIMAL(24,1)) as BIGINT)
+  );
+-- only this should fail
+values (
+  cast ('-9223372036854775809' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775809' as DECIMAL(24,1)) as BIGINT)
+  );
+values (
+  cast ('-9223372036854775808.9' as DECIMAL(24,1)),
+  cast (cast ('-9223372036854775808.9' as DECIMAL(24,1)) as BIGINT)
+  );
+
+values (
+  cast ('32767' as DECIMAL(24,1)),
+  cast (cast ('32767' as DECIMAL(24,1)) as SMALLINT)
+  );
+values (
+  cast ('32766' as DECIMAL(24,1)),
+  cast (cast ('32766' as DECIMAL(24,1)) as SMALLINT)
+  );
+values (
+  cast ('32768' as DECIMAL(24,1)),
+  cast (cast ('32768' as DECIMAL(24,1)) as SMALLINT)
+  );
+-- only this should fail
+values (
+  cast ('32767.9' as DECIMAL(24,1)),
+  cast (cast ('32767.9' as DECIMAL(24,1)) as SMALLINT)
+  );
+
+values (
+  cast ('-32768' as DECIMAL(24,1)),
+  cast (cast ('-32768' as DECIMAL(24,1)) as SMALLINT)
+  );
+values (
+  cast ('-32767' as DECIMAL(24,1)),
+  cast (cast ('-32767' as DECIMAL(24,1)) as SMALLINT)
+  );
+-- only this should fail
+values (
+  cast ('-32769' as DECIMAL(24,1)),
+  cast (cast ('-32769' as DECIMAL(24,1)) as SMALLINT)
+  );
+values (
+  cast ('-32768.9' as DECIMAL(24,1)),
+  cast (cast ('-32768.9' as DECIMAL(24,1)) as SMALLINT)
+  );
+
+values (
+  cast ('2147483647' as DECIMAL(24,1)),
+  cast (cast ('2147483647' as DECIMAL(24,1)) as INTEGER)
+  );
+values (
+  cast ('2147483646' as DECIMAL(24,1)),
+  cast (cast ('2147483646' as DECIMAL(24,1)) as INTEGER)
+  );
+-- only this should fail
+values (
+  cast ('2147483648' as DECIMAL(24,1)),
+  cast (cast ('2147483648' as DECIMAL(24,1)) as INTEGER)
+  );
+values (
+  cast ('2147483647.9' as DECIMAL(24,1)),
+  cast (cast ('2147483647.9' as DECIMAL(24,1)) as INTEGER)
+  );
+
+values (
+  cast ('-2147483647' as DECIMAL(24,1)),
+  cast (cast ('-2147483647' as DECIMAL(24,1)) as INTEGER)
+  );
+values (
+  cast ('-2147483646' as DECIMAL(24,1)),
+  cast (cast ('-2147483646' as DECIMAL(24,1)) as INTEGER)
+  );
+-- only this should fail
+values (
+  cast ('-2147483649' as DECIMAL(24,1)),
+  cast (cast ('-2147483649' as DECIMAL(24,1)) as INTEGER)
+  );
+values (
+  cast ('-2147483648.9' as DECIMAL(24,1)),
+  cast (cast ('-2147483648.9' as DECIMAL(24,1)) as INTEGER)
+  );
+--numbers to char
+values (cast (1.1 as char(10)));
+values (cast (1.1 as varchar(10)));
+values (cast (1e1 as varchar(10)));
+values (cast (1e1 as char(10)));
+values (cast (1 as char(10))); 
+values (cast (1 as varchar(10))); 
+values (cast (1e200 as char(10)));
+values (cast (1e200 as varchar(10)));
+values (cast (1 as long varchar));
+values (cast (1.1 as long varchar));
+values (cast (1e1 as long varchar));
+
+--char to numbers
+values (cast ('123' as smallint));
+values (cast ('123' as int));
+values (cast ('123' as bigint));
+values (cast ('123' as double precision));
+values (cast ('123' as float));
+values (cast ('123' as real));
+values (cast ('123' as numeric(3,0)));
+values (cast ('123' as decimal(3,0)));
+
+-- char (with decimal) to numbers  (truncates where needed Track #3756)
+-- bug 5568
+values (cast ('123.45' as smallint));
+values (cast ('123.45' as int));
+values (cast ('123.45' as bigint));
+values (cast ('123.45' as double precision));
+values (cast ('123.45' as float));
+values (cast ('123.45' as real));
+values (cast ('123.45' as numeric(5,1)));
+values (cast ('123.45' as decimal(5,1)));
+
+values (cast ('123.99' as smallint));
+values (cast ('123.99' as int));
+values (cast ('123.99' as bigint));
+values (cast ('123.99' as double precision));
+values (cast ('123.99' as float));
+values (cast ('123.99' as real));
+values (cast ('123.99' as numeric(5,1)));
+values (cast ('123.99' as decimal(5,1)));
+
+
+--bad
+values (cast (1 as char(2) for bit data));
+values (cast (1 as date)); 
+values (cast (1 as time)); 
+values (cast (1 as timestamp)); 
+
+-------------------
+--char -> date/time
+-------------------
+values (cast ('TIME''11:11:11''' as time));
+values (cast ('11:11:11' as time));
+
+values (cast ('DATE''1999-09-09''' as date));
+values (cast ('1999-09-09' as date));
+
+values (cast ('TIMESTAMP''1999-09-09 11:11:11''' as timestamp));
+values (cast ('1999-09-09 11:11:11' as timestamp));
+
+------------------
+--date/time ->other
+------------------
+values (cast (TIME('11:11:11') as char(20)));
+values (cast (DATE('1999-09-09') as char(20)));
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as char(40)));
+values (cast (TIME('11:11:11') as varchar(20)));
+values (cast (DATE('1999-09-09') as varchar(20)));
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as varchar(40)));
+values (cast (TIME('11:11:11') as long varchar));
+values (cast (DATE('1999-09-09') as long varchar));
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as long varchar));
+
+-- truncation errors
+values (cast (TIME('11:11:11') as char(2)));
+values (cast (DATE('1999-09-09') as char(2)));
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as char(2)));
+
+-- to date/time
+values (cast (TIME('11:11:11') as time));
+values (cast (TIME('11:11:11') as date));
+
+-- this piece of convoluted logic is to ensure that we
+-- get the current date for a conversion of time to timestamp
+values cast (cast (TIME('11:11:11') as timestamp) as char(50)).substring(0, 10).equals(cast (current_date as char(10)));
+-- now make sure we got the time right
+values cast (cast (TIME('11:11:11') as timestamp) as char(30)).substring(11,21);
+
+
+values (cast (DATE('1999-09-09') as date));
+values (cast (DATE('1999-09-09') as time));
+values (cast (DATE('1999-09-09') as timestamp));
+
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as date));
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as time));
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as timestamp));
+
+--bad
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as int));
+values (cast (DATE('1999-09-09') as int));
+values (cast (TIME('11:11:11') as int));
+
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as smallint));
+values (cast (DATE('1999-09-09') as smallint));
+values (cast (TIME('11:11:11') as smallint));
+
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as bigint));
+values (cast (DATE('1999-09-09') as bigint));
+values (cast (TIME('11:11:11') as bigint));
+
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as numeric));
+values (cast (DATE('1999-09-09') as numeric));
+values (cast (TIME('11:11:11') as numeric));
+
+values (cast (TIMESTAMP('1999-09-09 11:11:11' )as decimal));
+values (cast (DATE('1999-09-09') as decimal));
+values (cast (TIME('11:11:11') as decimal));
+
+values (cast (TIMESTAMP('1999-09-09 11:11:11' ) as char(13) for bit data));
+values (cast (DATE('1999-09-09') as char(13) for bit data));
+values (cast (TIME('11:11:11') as char(13) for bit data));
+
+------------
+--bit ->char
+------------
+values (cast (X'00680065006c006c006f' as char(10)));
+--small bit
+values (cast (X'11' as char(10)));
+values (cast (X'11' as varchar(10)));
+values (cast (X'11' as long varchar));
+--values (cast (X'00' as char(10)));
+
+--odd length won't work anymore
+values (cast (X'123' as char(20)));
+
+--truncate, (should be warning in future)
+values (cast ('1234' as char(1) for bit data));
+--truncate, ok
+values (cast ('1200' as char(1) for bit data));
+
+------------------------------------------------
+-- Casting
+-----------------------------------------------
+create table tab1 (
+				i integer, 
+				s integer, 
+				b integer, 
+				l bigint,
+				c char(10),
+				v varchar(10),
+				d double precision,
+				r real,
+				dt date,
+				t time,
+				ts timestamp,
+				dc decimal);
+insert into tab1 values(1, 
+				cast(1 as smallint), 
+				cast(1 as int), 
+				cast(1 as bigint), 
+				'char', 
+				'varchar', 
+				cast(1.1 as double precision), 
+				cast(1.1 as real), 
+				DATE('1990-10-10'),
+				TIME('11:11:11'), 
+				TIMESTAMP('1990-11-11 11:11:11'),
+				1.1);
+
+insert into tab1 values (null,
+				null,
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null,	
+				null);
+
+-- tab1 type -> its tab1 type
+select cast(i as integer) from tab1;
+select cast(s as smallint) from tab1;
+select cast(l as bigint) from tab1; 
+select cast(c as char(10)) from tab1; 
+select cast(v as char varying(10)) from tab1;
+select cast(d as double precision) from tab1;
+select cast(r as float) from tab1;
+select cast(dt as date) from tab1;
+select cast(t as time) from tab1;
+select cast(ts as timestamp) from tab1;
+select cast(dc as dec) from tab1;
+
+-- try a few others where we try all conversions
+select cast(i as integer) from tab1;
+select cast(i as smallint) from tab1;
+select cast(i as bigint) from tab1; 
+select cast(i as char(10)) from tab1; 
+select cast(i as char varying(10)) from tab1;
+select cast(i as double precision) from tab1;
+select cast(i as float) from tab1;
+select cast(i as date) from tab1;
+select cast(i as time) from tab1;
+select cast(i as timestamp) from tab1;
+select cast(i as dec) from tab1;
+
+-- try a few others
+select cast(c as integer) from tab1;
+select cast(c as smallint) from tab1;
+select cast(c as bigint) from tab1; 
+select cast(c as char(10)) from tab1; 
+select cast(c as char varying(10)) from tab1;
+select cast(c as double precision) from tab1;
+select cast(c as float) from tab1;
+select cast(c as date) from tab1;
+select cast(c as time) from tab1;
+select cast(c as timestamp) from tab1;
+select cast(c as dec) from tab1;
+
+select cast(t as integer) from tab1;
+select cast(t as smallint) from tab1;
+select cast(t as bigint) from tab1; 
+select cast(t as char(10)) from tab1; 
+select cast(t as char varying(10)) from tab1;
+select cast(t as double precision) from tab1;
+select cast(t as float) from tab1;
+select cast(t as date) from tab1;
+select cast(t as time) from tab1;
+select cast(t as timestamp) from tab1;
+select cast(t as dec) from tab1;
+
+drop table tab1;
+
+---------------------------------------------------------------
+-- Other Tests
+---------------------------------------------------------------
+autocommit off;
+
+-- create tables
+create table t1 (bt char(1) for bit data, btv varchar(1) for bit data,
+				 c char(30), d double precision, i int, r real, 
+				 s smallint, dc decimal(18), num numeric(18),
+				 dt date, t time, ts timestamp, v varchar(30), 
+				 lvc long varchar);
+
+create table strings(c30 char(30));
+
+-- we need a 1 row table with date/time columns because of problems
+-- with single quotes in using 'values DATE('')'
+create table temporal_values (dt date, t time, ts timestamp);
+insert into temporal_values values(DATE('9876-5-4'), TIME('1:02:34'),
+								   TIMESTAMP('9876-5-4 1:02:34'));
+
+-- negative
+-- pass wrong type for parameter
+prepare a1 as 'values cast(? as smallint)';
+execute a1 using 'values 1';
+
+-- uninitialized parameter
+values cast(? as int);
+
+-- positive
+
+-- test casting null to all builtin types
+insert into t1 (bt) values cast(null as char(1) for bit data);
+insert into t1 (btv) values cast(null as varchar(1) for bit data);
+insert into t1 (c) values cast(null as char(30));
+insert into t1 (d) values cast(null as double precision);
+insert into t1 (i) values cast(null as int);
+insert into t1 (r) values cast(null as real);
+insert into t1 (s) values cast(null as smallint);
+insert into t1 (dc) values cast(null as decimal);
+insert into t1 (num) values cast(null as numeric);
+insert into t1 (dt) values cast(null as date);
+insert into t1 (t) values cast(null as time);
+insert into t1 (ts) values cast(null as timestamp);
+insert into t1 (v) values cast(null as varchar(30));
+insert into t1 (lvc) values cast(null as long varchar);
+
+-- expect 10 rows of nulls
+select * from t1;
+
+-- make sure casting works correctly on nulls
+select cast (bt as char(1) for bit data) from t1;
+select cast (btv as varchar(1) for bit data) from t1;
+select cast (c as char(30)) from t1;
+select cast (d as double precision) from t1;
+select cast (r as real) from t1;
+select cast (s as smallint) from t1;
+select cast (num as numeric) from t1;
+select cast (dc as decimal) from t1;
+select cast (dt as date) from t1;
+select cast (t as time) from t1;
+select cast (ts as timestamp) from t1;
+select cast (v as varchar(30)) from t1;
+select cast (lvc as long varchar) from t1;
+
+-- clean up t1
+delete from t1;
+
+-- test casting ? to all builtin types
+prepare q1 as 'insert into t1 (bt) values cast(? as char(1) for bit data)';
+prepare q2 as 'insert into t1 (btv) values cast(? as varchar(1) for bit data)';
+prepare q4 as 'insert into t1 (c) values cast(? as char(30))';
+prepare q5 as 'insert into t1 (d) values cast(? as double precision)';
+prepare q6 as 'insert into t1 (i) values cast(? as int)';
+prepare q7 as 'insert into t1 (r) values cast(? as real)';
+prepare q8 as 'insert into t1 (s) values cast(? as smallint)';
+prepare q10 as 'insert into t1 (num) values cast(? as numeric(18))';
+prepare q11 as 'insert into t1 (dc) values cast(? as decimal(18))';
+prepare q12 as 'insert into t1 (dt) values cast(? as date)';
+prepare q13 as 'insert into t1 (t) values cast(? as time)';
+prepare q14 as 'insert into t1 (ts) values cast(? as timestamp)';
+prepare q15 as 'insert into t1 (v) values cast(? as varchar(30))';
+prepare q16 as 'insert into t1 (lvc) values cast(? as long varchar)';
+
+execute q1 using 'values X''aa''';
+execute q2 using 'values X''aa''';
+execute q4 using 'values char(123456)';
+execute q5 using 'values 123456.78e0';
+execute q6 using 'values 4321';
+-- bug 5421 - support db2 udb compatible built-in functions
+execute q7 using 'values REAL(4321.01234)';
+execute q8 using 'values SMALLINT(12321)';
+execute q10 using 'values 123456.78';
+execute q11 using 'values 123456.78';
+execute q12 using 'select dt from temporal_values';
+execute q13 using 'select t from temporal_values';
+execute q14 using 'select ts from temporal_values';
+execute q15 using 'values char(654321)';
+execute q16 using 'values char(987654)';
+
+select * from t1;
+
+-- clean up t1
+delete from t1;
+
+-- more ? tests
+-- Truncation exception expected in non-parameter cases
+-- RESOLVE, no truncation expected in parameter cases
+-- where parameter value is not a string.  This is
+-- currently an "extension".
+create table x(c1 char(1));
+prepare param1 as 'insert into x values cast(? as char(1))';
+insert into x values cast('12' as char(1));
+execute param1 using 'values ''34''';
+select * from x;
+delete from x;
+insert into x values cast(12 as char(1));
+execute param1 using 'values 34';
+select * from x;
+delete from x;
+insert into x values cast(time('12:12:12') as char(1));
+execute param1 using 'values time(''21:12:12'')';
+select * from x;
+delete from x;
+drop table x;
+
+-- method resolution tests
+
+-- clean up the prepared statements
+remove a1;
+remove q1;
+remove q2;
+remove q4;
+remove q5;
+remove q6;
+remove q7;
+remove q8;
+remove q10;
+remove q11;
+remove q12;
+remove q13;
+remove q14;
+remove q15;
+
+-- reset autocomiit
+commit;
+autocommit on;
+
+-- bind time casting tests
+
+-- negative
+values cast('asdf' as smallint);
+values cast('asdf' as int);
+values cast('asdf' as bigint);
+values cast('asdf' as real);
+values cast('asdf' as double precision);
+values cast('asdf' as decimal(5,4));
+values cast('asdf' as date);
+values cast('asdf' as time);
+values cast('asdf' as timestamp);
+
+values cast('2999999999' as int);
+values cast(2999999999 as int);
+values cast('99999' as smallint);
+values cast(99999 as smallint);
+
+values cast(cast(99 as int) as char);
+values cast(cast(-9 as int) as char);
+values cast(cast(99 as smallint) as char);
+values cast(cast(99 as bigint) as char);
+values cast(cast(9.9 as real) as char);
+values cast(cast(9.9 as double precision) as char);
+
+-- positive
+values cast(1 as int);
+values cast(1 as smallint);
+values cast(1 as bigint);
+values cast(1 as char);
+values cast('true' as char(4));
+
+
+-- drop the tables
+drop table t1;
+drop table temporal_values;
+drop table strings;
+
+-- ISO time/timestamp formats
+values (cast ('08.08.08' as TIME));
+values (cast ('2001-01-01-08.08.08.123456' as TIMESTAMP));
+
+-- char, varchar
+values (char('abcde', 5));
+values (char('abcde', 6));
+values (char('abcde', 4));
+values (varchar('', 20));
+create table t1 (c5 date, c6 time, c7 timestamp, c8 char(5), c9 varchar(5));
+insert into t1 values ('2003-09-10', '16:44:02', '2003-09-08 12:20:30.123456', 'abc', 'abcde');
+insert into t1 values ('2005-09-10', '18.44.02', '2004-09-08-12.20.30.123456', 'cba', 'c');
+select char(c5), char(c6), char(c7), char(c8), char(c9) from t1;
+select varchar(c5), varchar(c6), varchar(c7), varchar(c8), varchar(c9) from t1;
+select char(c8, 10), varchar(c9, 9) from t1;
+select { fn concat(c8, char(c8)) } from t1;
+select { fn concat(c8, varchar(c9)) } from t1;
+select { fn concat(varchar(c9, 20), char(c8, 8)) } from t1;
+select { fn concat(char(c9, 20), varchar(c8, 8)) } from t1;
+
+-- clean up
+drop table t1;
+
+-- bug 5421 - support db2 udb compatible built-in functions
+values CHAR(INT(67890));
+values CHAR(INTEGER(12345));
+values CHAR(DEC(67.21,4,2));
+values CHAR(DECIMAL(67.10,4,2));
+values CHAR(DOUBLE(5.55));
+values CHAR(DOUBLE_PRECISION(5.555));
+values CHAR(BIGINT(1));
+values CHAR(BIGINT(-1));
+
+values LENGTH(CAST('hello' AS CHAR(25)));
+values LENGTH(CAST('hello' AS VARCHAR(25)));
+values LENGTH(CAST('hello' AS LONG VARCHAR));
+
+values CAST (X'03' as CHAR(5) for bit data);
+values CAST (X'04' as VARCHAR(5) for bit data);
+values CAST (X'05' as LONG VARCHAR for bit data);
+
+-- clean up
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/casting.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/casting.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,921 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import org.apache.derby.tools.ij;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+import java.sql.*;
+import java.math.*;
+import java.io.*;
+
+
+public class casting { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	public static String VALID_DATE_STRING = "'2000-01-01'";
+	public static String VALID_TIME_STRING = "'15:30:20'";
+	public static String VALID_TIMESTAMP_STRING = "'2000-01-01 15:30:20'";
+	public static String NULL_VALUE="NULL";
+
+	public static String ILLEGAL_CAST_EXCEPTION_SQLSTATE = "42846";
+	public static String LANG_NOT_STORABLE_SQLSTATE  = "42821";
+	public static String LANG_NOT_COMPARABLE_SQLSTATE = "42818";
+	public static String METHOD_NOT_FOUND_SQLSTATE = "42884";
+	public static String LANG_FORMAT_EXCEPTION_SQLSTATE = "22018";
+
+	public static int SQLTYPE_ARRAY_SIZE = 17 ;
+	public static int SMALLINT_OFFSET = 0;
+	public static int INTEGER_OFFSET = 1;
+	public static int BIGINT_OFFSET = 2;
+	public static int DECIMAL_OFFSET = 3;
+	public static int REAL_OFFSET = 4;
+	public static int DOUBLE_OFFSET = 5;
+	public static int CHAR_OFFSET = 6;
+	public static int VARCHAR_OFFSET = 7;
+	public static int LONGVARCHAR_OFFSET = 8;
+	public static int CHAR_FOR_BIT_OFFSET = 9;
+	public static int VARCHAR_FOR_BIT_OFFSET = 10;
+	public static int LONGVARCHAR_FOR_BIT_OFFSET = 11;
+	public static int CLOB_OFFSET = 12;
+	public static int DATE_OFFSET = 13;
+	public static int TIME_OFFSET = 14;
+	public static int TIMESTAMP_OFFSET = 15;
+	public static int BLOB_OFFSET = 16;
+
+
+	public static String[] SQLTypes =
+	{
+		"SMALLINT",
+		"INTEGER",
+		"BIGINT",
+		"DECIMAL(10,5)",
+		"REAL",
+		"DOUBLE",
+		"CHAR(60)",
+		"VARCHAR(60)",
+		"LONG VARCHAR",
+		"CHAR(60) FOR BIT DATA",
+		"VARCHAR(60) FOR BIT DATA",
+		"LONG VARCHAR FOR BIT DATA",
+		"CLOB(1k)",
+		"DATE",
+		"TIME",
+		"TIMESTAMP",
+		"BLOB(1k)",
+	};
+
+
+	public static int NULL_DATA_OFFSET = 0;  // offset of NULL value
+	public static int VALID_DATA_OFFSET = 1;  // offset of NULL value
+
+	// rows are data types.
+	// data is NULL_VALUE, VALID_VALUE
+	// Should add Minimum, Maximum and out of range.
+ public static String[][]SQLData =
+	{
+		{NULL_VALUE, "0"},       // SMALLINT
+		{NULL_VALUE,"11"},       // INTEGER
+		{NULL_VALUE,"22"},       // BIGINT
+		{NULL_VALUE,"3.3"},      // DECIMAL(10,5)
+		{NULL_VALUE,"4.4"},      // REAL,
+		{NULL_VALUE,"5.5"},      // DOUBLE
+		{NULL_VALUE,"'7'"},      // CHAR(60)
+		{NULL_VALUE,"'8'"},      //VARCHAR(60)",
+		{NULL_VALUE,"'9'"},      // LONG VARCHAR
+		{NULL_VALUE,"X'10aa'"},  // CHAR(60)  FOR BIT DATA
+		{NULL_VALUE,"X'10bb'"},  // VARCHAR(60) FOR BIT DATA
+		{NULL_VALUE,"X'10cc'"},  //LONG VARCHAR FOR BIT DATA
+		{NULL_VALUE,"'13'"},     //CLOB(1k)
+		{NULL_VALUE,VALID_DATE_STRING},        // DATE
+		{NULL_VALUE,VALID_TIME_STRING},        // TIME
+		{NULL_VALUE,VALID_TIMESTAMP_STRING},   // TIMESTAMP
+		{NULL_VALUE,"X'01dd'"}                 // BLOB
+	};
+ 
+
+
+
+	public static final boolean _ = false;
+	public static final boolean X = true;
+
+	/**
+	   DB2 Table 146 - Supported explicit casts between Built-in DataTypes
+
+	   This table has THE FOR BIT DATA TYPES broken out into separate columns
+	   for clarity and testing
+	**/
+
+
+	public static final boolean[][]  T_146 = {
+		
+    // Types.             S  I  B  D  R  D  C  V  L  C  V  L  C  D  T  T  B
+	//                    M  N  I  E  E  O  H  A  O  H  A  O  L  A  I  I  L
+	//                    A  T  G  C  A  U  A  R  N  A  R  N  O  T  M  M  O
+    //                    L  E  I  I  L  B  R  C  G  R  C  G  B  E  E  E  B
+    //                    L  G  N  M     L     H  V  .  H  V           S
+    //                    I  E  T  A     E     A  A  B  .  A           T
+    //                    N  R     L           R  R  I  B  R           A
+	//                    T                       C  T  I  .           M
+    //                                            H     T  B           P
+	//                                            A        I
+	//                                            R        T
+/* 0 SMALLINT */        { X, X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _ },
+/* 1 INTEGER  */        { X, X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _ },
+/* 2 BIGINT   */        { X, X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _ },
+/* 3 DECIMAL  */        { X, X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _ },
+/* 4 REAL     */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 5 DOUBLE   */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 6 CHAR     */        { X, X, X, X, _, _, X, X, X, _, _, _, X, X, X, X, _ },
+/* 7 VARCHAR  */        { X, X, X, X, _, _, X, X, X, _, _, _, X, X, X, X, _ },
+/* 8 LONGVARCHAR */     { _, _, _, _, _, _, X, X, X, _, _, _, X, _, _, _, _ },
+/* 9 CHAR FOR BIT */    { _, _, _, _, _, _, _, _, _, X, X, X, _, _, _, _, X },
+/* 10 VARCH. BIT   */   { _, _, _, _, _, _, _, _, _, X, X, X, _, _, _, _, X },
+/* 11 LONGVAR. BIT */   { _, _, _, _, _, _, _, _, _, X, X, X, _, _, _, _, X },
+/* 12 CLOB         */   { _, _, _, _, _, _, X, X, X, _, _, _, X, _, _, _, _ },
+/* 13 DATE         */   { _, _, _, _, _, _, X, X, _, _, _, _, _, X, _, _, _ },
+/* 14 TIME         */   { _, _, _, _, _, _, X, X, _, _, _, _, _, _, X, _, _ },
+/* 15 TIMESTAMP    */   { _, _, _, _, _, _, X, X, _, _, _, _, _, X, X, X, _ },
+/* 16 BLOB         */   { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X },
+
+	};
+
+	/**
+	 * DB2 uses Table 147 to describe  Data Type Compatibility for Assignments 
+	 *
+	 * The table 147a covers the assignments as they do differ somewhat 
+	 *  from comparisons which can be found in 147b
+	   
+	 * This table has DATA TYPES for operands rather than lumping types
+	 * together. Here is the mapping from DB2 Table 147 to this table.
+	 * Binary Integer = SMALLINT, INTEGER, BIGINT
+	 * Decimal Number = DECIMAL/(NUMERIC)
+	 * Floating Point = REAL, DOUBLE/(FLOAT)
+	 * Character String = CHAR, VARCHAR, LONGVARCHAR
+	 * Binary String = CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, LONG VARCHAR FOR
+	 * BIT DATA
+	 * Graphic String = not suppported
+	 * Date = DATE
+	 * Time = TIME
+	 * TimeStamp = TIMESTAMP
+	 * Binary String = literal hexadecimal, CHAR FOR BIT DATA, VARCHAR FOR BIT
+	 *                 DATA, LONG VARCHAR FOR BIT
+	 * CLOB and BLOB are not covered in Table 147 but are included here 
+	 * for clarity and testing
+	**/
+
+	public static final boolean[][]  T_147a = {
+		
+    // Types.             S  I  B  D  R  D  C  V  L  C  V  L  C  D  T  T  B
+	//                    M  N  I  E  E  O  H  A  O  H  A  O  L  A  I  I  L
+	//                    A  T  G  C  A  U  A  R  N  A  R  N  O  T  M  M  O
+    //                    L  E  I  I  L  B  R  C  G  R  C  G  B  E  E  E  B
+    //                    L  G  N  M     L     H  V  .  H  V           S
+    //                    I  E  T  A     E     A  A  B  .  A           T
+    //                    N  R     L           R  R  I  B  R           A
+	//                    T                       C  T  I  .           M
+    //                                            H     T  B           P
+	//                                            A        I
+	//                                            R        T
+/* 0 SMALLINT */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 1 INTEGER  */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 2 BIGINT   */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 3 DECIMAL  */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 4 REAL     */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 5 DOUBLE   */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 6 CHAR     */        { _, _, _, _, _, _, X, X, X, _, _, _, X, X, X, X, _ },
+/* 7 VARCHAR  */        { _, _, _, _, _, _, X, X, X, _, _, _, X, X, X, X, _ },
+/* 8 LONGVARCHAR */     { _, _, _, _, _, _, X, X, X, _, _, _, X, _, _, _, _ },
+/* 9 CHAR FOR BIT */    { _, _, _, _, _, _, _, _, _, X, X, X, _, _, _, _, _ },
+/* 10 VARCH. BIT   */   { _, _, _, _, _, _, _, _, _, X, X, X, _, _, _, _, _ },
+/* 11 LONGVAR. BIT */   { _, _, _, _, _, _, _, _, _, X, X, X, _, _, _, _, _ },
+/* 12 CLOB         */   { _, _, _, _, _, _, X, X, X, _, _, _, X, _, _, _, _ },
+/* 13 DATE         */   { _, _, _, _, _, _, X, X, _, _, _, _, _, X, _, _, _ },
+/* 14 TIME         */   { _, _, _, _, _, _, X, X, _, _, _, _, _, _, X, _, _ },
+/* 15 TIMESTAMP    */   { _, _, _, _, _, _, X, X, _, _, _, _, _, _, _, X, _ },
+/* 16 BLOB         */   { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, X },
+
+	};
+
+
+	// Comparisons table
+	// Comparison's are different than assignments because
+	// Long types cannot be compared.
+	public static final boolean[][]  T_147b = {
+		
+    // Types.             S  I  B  D  R  D  C  V  L  C  V  L  C  D  T  T  B
+	//                    M  N  I  E  E  O  H  A  O  H  A  O  L  A  I  I  L
+	//                    A  T  G  C  A  U  A  R  N  A  R  N  O  T  M  M  O
+    //                    L  E  I  I  L  B  R  C  G  R  C  G  B  E  E  E  B
+    //                    L  G  N  M     L     H  V  .  H  V           S
+    //                    I  E  T  A     E     A  A  B  .  A           T
+    //                    N  R     L           R  R  I  B  R           A
+	//                    T                       C  T  I  .           M
+    //                                            H     T  B           P
+	//                                            A        I
+	//                                            R        T
+/* 0 SMALLINT */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 1 INTEGER  */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 2 BIGINT   */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 3 DECIMAL  */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 4 REAL     */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 5 DOUBLE   */        { X, X, X, X, X, X, _, _, _, _, _, _, _, _, _, _, _ },
+/* 6 CHAR     */        { _, _, _, _, _, _, X, X, _, _, _, _, _, X, X, X, _ },
+/* 7 VARCHAR  */        { _, _, _, _, _, _, X, X, _, _, _, _, _, X, X, X, _ },
+/* 8 LONGVARCHAR */     { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ },
+/* 9 CHAR FOR BIT */    { _, _, _, _, _, _, _, _, _, X, X, _, _, _, _, _, _ },
+/* 10 VARCH. BIT   */   { _, _, _, _, _, _, _, _, _, X, X, _, _, _, _, _, _ },
+/* 11 LONGVAR. BIT */   { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ },
+/* 12 CLOB         */   { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ },
+/* 13 DATE         */   { _, _, _, _, _, _, X, X, _, _, _, _, _, X, _, _, _ },
+/* 14 TIME         */   { _, _, _, _, _, _, X, X, _, _, _, _, _, _, X, _, _ },
+/* 15 TIMESTAMP    */   { _, _, _, _, _, _, X, X, _, _, _, _, _, _, _, X, _ },
+/* 16 BLOB         */   { _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _ },
+
+	};
+
+	
+
+	public static boolean isDerbyNet;
+	public static boolean isDB2;
+	//testNum just print and increments with each query display
+	public static int testNum = 1;
+ 
+	public static void main(String[] args) throws Exception {
+		String framework = System.getProperty("framework");
+		if (framework != null && framework.toUpperCase().equals("DERBYNET"))
+			isDerbyNet = true;
+
+		if (framework != null && framework.toUpperCase().equals("DB2JCC"))
+			isDB2 = true;
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			 ij.getPropertyArg(args);
+			 Connection conn = ij.startJBMS();
+			 conn.setAutoCommit(false);
+			 createTables(conn);
+			 testAssignments(conn);
+			 testExplicitCasts(conn);
+			 testComparisons(conn);
+			 conn.close();
+		}
+		catch (SQLException sqle) {
+			unexpectedException(sqle);
+		}
+		catch (Throwable t) {
+			t.printStackTrace(System.out);
+		}
+	}
+
+	public static void testExplicitCasts(Connection conn)
+		throws SQLException, Throwable
+	{
+		
+		System.out.println("**testExplicitCasts starting");
+		
+		ResultSet rs = null;
+		
+		// Try Casts from each type to the 
+		for (int sourceType = 0; sourceType < SQLTypes.length; sourceType++) {
+			
+			String sourceTypeName = SQLTypes[sourceType];
+			for (int dataOffset = 0; dataOffset < SQLData[0].length; dataOffset++)
+				for (int targetType =0; targetType < SQLTypes.length; targetType++)
+				{
+				try {
+					String convertString = null;
+					String targetTypeName = SQLTypes[targetType];
+								// For casts from Character types use strings that can
+								// be converted to the targetType.
+					
+					convertString = getCompatibleString(sourceType,
+														targetType,dataOffset);
+
+
+					String query = "VALUES CAST (CAST (" + convertString +
+						" AS " + SQLTypes[sourceType] + ") AS " +
+						SQLTypes[targetType] + " )";
+					executeQueryAndDisplay(conn,query);
+					checkSupportedCast(sourceType,targetType);
+				} catch (SQLException se)
+				{
+					String sqlState = se.getSQLState();
+					if (!isSupportedCast(sourceType,targetType))
+					{
+						if(isCastException(se))
+							System.out.println("EXPECTED CASTING EXCEPTION: " +
+											   se.getMessage());
+						else
+							gotWrongException(se);
+					}
+					else 
+						unexpectedException(se);
+				}
+			}
+		}
+
+		conn.commit();			 			
+			
+	}
+
+	public static void createTables(Connection conn)
+		throws SQLException, Throwable
+	
+	{
+		System.out.println("**createTables  starting");
+
+		Statement scb = conn.createStatement();
+
+		for (int type = 0; type < SQLTypes.length; type++) 
+		{
+			String typeName = SQLTypes[type];
+			String tableName = getTableName(type);
+
+			try {
+				scb.executeUpdate("DROP TABLE " + tableName);
+			}
+			catch(SQLException se)
+			{// ignore drop error
+			}
+			String createSQL = "create table "+ 
+				tableName + " (c " +
+				typeName+ " )";
+			System.out.println(createSQL);
+			scb.executeUpdate(createSQL);
+		}
+
+		scb.close();
+		conn.commit();
+	}
+
+
+
+	public static void testAssignments(Connection conn)
+		throws SQLException, Throwable
+	{
+		
+		System.out.println("**testAssignments starting");
+		Statement scb = conn.createStatement();		
+		ResultSet rs = null;
+		
+
+		// Insert's using literals
+		System.out.println("* testing literal inserts");
+		
+		for (int dataOffset = 0; dataOffset < SQLData[0].length; dataOffset++)
+			for (int type = 0; type < SQLTypes.length; type++) {
+			try {
+				String tableName = getTableName(type);
+				
+				String insertSQL = "insert into " + tableName + " values( " +
+					SQLData[type][dataOffset] + ")";
+				System.out.println(insertSQL);
+				scb.executeUpdate(insertSQL);
+			}
+			catch (SQLException se)
+			{
+				// literal inserts are ok for everything but BLOB
+			if (type == BLOB_OFFSET)
+				System.out.println("EXPECTED EXCEPTION inserting literal into BLOB . " + se.getMessage());
+			else 
+				gotWrongException(se);
+			}
+		}
+		
+		// Try to insert each sourceType into the targetType table
+		for (int dataOffset = 0; dataOffset < SQLData[0].length; dataOffset++)
+			for (int sourceType = 0; sourceType < SQLTypes.length; sourceType++) {
+				String sourceTypeName = SQLTypes[sourceType];
+				for (int targetType =0; targetType < SQLTypes.length; targetType++)
+				{
+				try {
+					String convertString = null;
+					String targetTableName = getTableName(targetType);
+
+					// For assignments  Character types use strings that can
+					// be converted to the targetType.
+					convertString = getCompatibleString(sourceType, targetType,dataOffset);
+					
+					String insertValuesString = " VALUES CAST(" +
+					convertString + " AS " + sourceTypeName + ")";
+					
+					
+					String insertSQL = "INSERT INTO " + targetTableName + 
+						insertValuesString;
+					System.out.println(insertSQL);
+					scb.executeUpdate(insertSQL);
+					checkSupportedAssignment(sourceType, targetType);
+
+				} catch (SQLException se)
+				{
+					String sqlState = se.getSQLState();
+					if (!isSupportedAssignment(sourceType,targetType) &&
+						isNotStorableException(se) ||
+						isCastException(se))
+						System.out.println("EXPECTED EXCEPTION: " + 
+										   sqlState + ":" + se.getMessage());
+					else 
+						gotWrongException(se);
+				}
+				}
+			}
+		scb.close();
+		conn.commit();			 			
+			
+	}
+
+
+
+	public static void testComparisons(Connection conn)
+		throws SQLException, Throwable
+	{
+		
+		System.out.println("**testComparisons starting");
+		Statement scb = conn.createStatement();		
+		ResultSet rs = null;
+		
+
+		// Comparison's  using literals
+		System.out.println("* testing literal comparisons");
+
+
+		for (int type = 0; type < SQLTypes.length; type++) {
+			try {
+				int dataOffset = 1; // don't use null values
+				String tableName = getTableName(type);
+				
+				String compareSQL = "SELECT distinct c FROM " + tableName + 
+					" WHERE c = " + SQLData[type][dataOffset];
+				System.out.println(compareSQL);
+				rs = scb.executeQuery(compareSQL);
+				JDBCDisplayUtil.DisplayResults(System.out,rs,conn);
+			}
+			catch (SQLException se)
+			{
+				// literal comparisons are ok for everything but BLOB
+				if (isLongType(type))
+					System.out.println("EXPECTED EXCEPTION comparing long type. " + se.getMessage());
+				else 
+					gotWrongException(se);
+			}
+		}
+		
+		
+		// Try to compare  each sourceType with the targetType
+		for (int dataOffset = 0; dataOffset < SQLData[0].length; dataOffset++)
+			for (int sourceType = 0; sourceType < SQLTypes.length; sourceType++) {
+				String sourceTypeName = SQLTypes[sourceType];
+				for (int targetType =0; targetType < SQLTypes.length; targetType++)
+				{
+				try {
+					String convertString = null;
+					String targetTableName = getTableName(targetType);
+					
+					
+
+					// For assignments  Character types use strings that can
+					// be converted to the targetType.
+					convertString = getCompatibleString(sourceType,
+														targetType,dataOffset);
+					
+					// Make sure table has just compatible data
+					scb.executeUpdate("DELETE FROM " + targetTableName);
+					String insertValuesString = " VALUES CAST(" +
+						convertString + " AS " + sourceTypeName + ")";
+					
+					String insertSQL = "INSERT INTO " + targetTableName + 
+						insertValuesString;
+					
+					String compareSQL = "select c from " + 
+						targetTableName + " WHERE c = CAST(" + convertString
+						+ " AS " + sourceTypeName + ")";	
+
+					System.out.println(compareSQL);
+					rs = scb.executeQuery(compareSQL);
+					JDBCDisplayUtil.DisplayResults(System.out,rs,conn);
+					checkSupportedComparison(sourceType, targetType);
+
+				} catch (SQLException se)
+				{
+					String sqlState = se.getSQLState();
+					if (!isSupportedComparison(sourceType,targetType) &&
+						isNotComparableException(se) ||
+						isCastException(se))
+						System.out.println("EXPECTED EXCEPTION: " + 
+										   sqlState + ":" + se.getMessage());
+					else 
+						gotWrongException(se);
+				}
+				}
+			}
+		scb.close();
+		conn.commit();			 			
+			
+	}
+
+
+	public static boolean isSupportedCast(int sourceType, int targetType)
+	{
+		return T_146[sourceType][targetType];
+	}
+
+	public static boolean isSupportedAssignment(int sourceType, int targetType)
+	{
+		return T_147a[sourceType][targetType];
+	}
+
+	public static boolean isSupportedComparison(int sourceType, int targetType)
+	{
+		return T_147b[sourceType][targetType];
+	}
+
+
+	public static boolean isCastException (SQLException se)
+	{
+		return sqlStateMatches(se,ILLEGAL_CAST_EXCEPTION_SQLSTATE);
+	}
+
+	public static boolean isMethodNotFoundException (SQLException se)
+	{
+		return sqlStateMatches(se, METHOD_NOT_FOUND_SQLSTATE);
+	}
+
+	public static boolean sqlStateMatches(SQLException se, 
+										   String expectedValue)
+	{
+		String sqlState = se.getSQLState();
+		if ((sqlState != null) &&
+			(sqlState.equals(expectedValue)))
+			return true;
+		return false;
+	}
+
+	public static boolean isNotStorableException(SQLException se)
+	{
+		String sqlState = se.getSQLState();
+		if ((sqlState != null) &&
+			(sqlState.equals(LANG_NOT_STORABLE_SQLSTATE)))
+			return true;
+		return false;
+
+	}
+
+	public static boolean isNotComparableException(SQLException se)
+	{
+		String sqlState = se.getSQLState();
+		if ((sqlState != null) &&
+			(sqlState.equals(LANG_NOT_COMPARABLE_SQLSTATE)))
+			return true;
+		return false;
+	}
+
+	public static void unexpectedException(SQLException sqle) {
+
+		String sqlState = sqle.getSQLState();
+		
+		if (isDB2  && (sqlState != null) &&
+			sqlState.equals("22003"))
+		{
+			System.out.print("WARNING: DB2 overflow exception -");
+		}
+		else
+			System.out.print("FAIL unexpected exception - ");
+		
+		showException(sqle);
+		sqle.printStackTrace(System.out);
+	}
+
+
+	/**
+	 * We got an exception when one was expected, but it was the
+	 * wrong one.  For DB2 we will just print a warning.
+	 * @param sqle
+	 */
+	public static void gotWrongException(SQLException sqle) {
+		if (isDB2)
+		{
+			System.out.print("WARNING: DB2 exception different from Derby-" );
+			showException(sqle);
+		}
+		else unexpectedException(sqle);
+	}
+
+	/**
+	 * Show an expected exception
+	 * @param sqle SQL Exception
+	 */
+	public static void expectedException(SQLException sqle) {
+			System.out.print("EXPECTED EXCEPTION:" );
+			showException(sqle);
+			System.out.println("\n");
+	}
+
+
+	public static void showException(SQLException sqle) {
+		do {
+			String state = sqle.getSQLState();
+			if (state == null)
+				state = "?????";
+
+			String msg = sqle.getMessage();
+			if  (msg == null)
+				msg = "?? no message ??";
+
+			System.out.print(" (" + state + "):" + msg);
+			sqle = sqle.getNextException();
+		} while (sqle != null);
+	}
+
+
+	/**
+	 * Display Query , execute and display results.
+	 * @param conn  Connection to use
+	 * @param query to execute
+	 */	
+
+	public static void executeQueryAndDisplay(Connection conn,
+													String query)
+													throws SQLException 
+	{
+		Statement stmt = conn.createStatement();
+		ResultSet rs;		
+
+		System.out.println("Test #" + testNum++);
+		System.out.println(query );
+		rs = stmt.executeQuery(query);
+		JDBCDisplayUtil.DisplayResults(System.out,rs,conn);
+
+		stmt.close();
+	}
+
+
+	public static boolean isLongType( int typeOffset)
+	{
+		return ((typeOffset == LONGVARCHAR_OFFSET) ||
+				(typeOffset == LONGVARCHAR_FOR_BIT_OFFSET) || 
+				(typeOffset == CLOB_OFFSET) ||
+				(typeOffset == BLOB_OFFSET));
+	}
+
+	public static boolean isCharacterType(int typeOffset)
+	{
+		return ((typeOffset == CHAR_OFFSET) || 
+				(typeOffset == VARCHAR_OFFSET) || 
+				(typeOffset == LONGVARCHAR_OFFSET) || 
+				(typeOffset == CLOB_OFFSET));
+	}
+
+	public static boolean isBinaryType(int typeOffset)
+	{
+		return ((typeOffset == CHAR_FOR_BIT_OFFSET) || 
+				(typeOffset == VARCHAR_FOR_BIT_OFFSET) || 
+				(typeOffset == LONGVARCHAR_FOR_BIT_OFFSET) || 
+				(typeOffset == BLOB_OFFSET));
+	}
+
+	public static boolean isDateTimeTimestamp(int typeOffset)
+	{
+		return ( (typeOffset == DATE_OFFSET) ||
+				 (typeOffset == TIME_OFFSET) ||
+				 (typeOffset == TIMESTAMP_OFFSET));
+
+	}
+
+	public static boolean isClob(int typeOffset)
+	{
+		return (typeOffset == CLOB_OFFSET);
+	}
+		
+	public static boolean isLob(int typeOffset)
+	{
+		return ((typeOffset == CLOB_OFFSET) || 
+				(typeOffset == BLOB_OFFSET));
+
+	}
+
+	public static String getCompatibleString(int sourceType, int targetType,
+											  int dataOffset)
+	{
+		String convertString = null;
+		if ((isCharacterType(sourceType) || isBinaryType(sourceType)) &&
+			!isLob(sourceType))
+			convertString = formatString(SQLData[targetType][dataOffset]);
+		else
+			convertString = SQLData[sourceType][dataOffset];
+
+		return convertString;
+	}
+	
+	// Data is already a  string (starts with X, or a character string,
+	// just return, otherwise bracket with ''s
+	public static String formatString(String str)
+	{
+		if ((str != null) && (
+							  str.startsWith("X") ||
+							  str.startsWith("'") ||
+							  (str == NULL_VALUE)))
+			return str;
+		else
+			return "'" + str + "'";
+
+	}
+
+	public static boolean setValidValue(PreparedStatement ps, int param, int jdbcType)
+		throws SQLException {
+
+		switch (jdbcType) {
+		case Types.SMALLINT:
+			ps.setShort(param, (short) 32);
+			return true;
+		case Types.INTEGER:
+			ps.setInt(param, 32);
+			return true;
+		case Types.BIGINT:
+			ps.setLong(param, 32L);
+			return true;
+		case Types.REAL:
+			ps.setFloat(param, 32.0f);
+			return true;
+		case Types.FLOAT:
+		case Types.DOUBLE:
+			ps.setDouble(param, 32.0);
+			return true;
+		case Types.DECIMAL:
+			ps.setBigDecimal(param, new BigDecimal(32.0));
+			return true;
+		case Types.CHAR:
+		case Types.VARCHAR:
+		case Types.LONGVARCHAR:
+			ps.setString(param, "32");
+			return true;
+		case Types.BINARY:
+		case Types.VARBINARY:
+			{
+				byte[] data = {(byte) 0x04, (byte) 0x03, (byte) 0xfd, (byte) 0xc3, (byte) 0x73};
+				ps.setBytes(param, data);
+				return true;
+			}
+		//Types.LONGVARBINARY:
+		case Types.DATE:
+			ps.setDate(param, java.sql.Date.valueOf("2004-02-14"));
+			return true;
+		case Types.TIME:
+			ps.setTime(param, java.sql.Time.valueOf("13:26:42"));
+			return true;
+		case Types.TIMESTAMP:
+			ps.setTimestamp(param, java.sql.Timestamp.valueOf("2004-02-23 17:14:24.097625551"));
+			return true;
+		case Types.CLOB:
+			// JDBC 3.0 spec section 16.3.2 explictly states setCharacterStream is OK for setting a CLOB
+			ps.setCharacterStream(param, new java.io.StringReader("67"), 2);
+			return true;
+		case Types.BLOB:
+			// JDBC 3.0 spec section 16.3.2 explictly states setBinaryStream is OK for setting a BLOB
+			{
+				byte[] data = new byte[6];
+				data[0] = (byte) 0x82;
+				data[1] = (byte) 0x43;
+				data[2] = (byte) 0xca;
+				data[3] = (byte) 0xfe;
+				data[4] = (byte) 0x00;
+				data[5] = (byte) 0x32;
+
+			ps.setBinaryStream(param, new java.io.ByteArrayInputStream(data), 6);
+			return true;
+			}
+		default:
+			return false;
+		}
+	}
+
+	/**
+	 * Truncates (*) from typename
+	 * @param type - Type offset
+	 *
+	 * @returns  short name of type (e.g DECIMAL instead of DECIMAL(10,5)
+	 */
+
+	public static  String getShortTypeName(int type)
+	{
+		String typeName = SQLTypes[type];
+		String shortName = typeName;
+		int parenIndex = typeName.indexOf('(');
+		if (parenIndex >= 0)
+		{
+			shortName = typeName.substring(0,parenIndex);
+			int endParenIndex =  typeName.indexOf(')');
+			shortName = shortName + typeName.substring(endParenIndex+1,typeName.length());
+		}
+		return shortName;
+
+	}
+
+
+	/**
+	 * Build a unique table name from the type
+	 * @param -  table offset
+	 * @returns  Table name in format <TYPE>_TAB. Replaces ' ' _;
+	 */
+	public static  String getTableName(int type)
+	{
+		return getShortTypeName(type).replace(' ', '_') + "_TAB";
+			
+	}
+
+	public static void checkSupportedCast(int sourceType, int targetType)
+	{
+		String description = " Cast from " +
+			SQLTypes[sourceType] +
+			" to " + SQLTypes[targetType];
+		
+		if(!isSupportedCast(sourceType,targetType))
+			printShouldNotSucceedMessage(description);
+	}
+
+	public static void printShouldNotSucceedMessage(String description)
+	{
+		if (isDB2)
+		{
+			System.out.println("WARNING:" + description + " which is not supported in Derby works in DB2");
+		}
+		else
+			System.out.println("FAIL:" +  description +
+							   " should not be supported");
+		
+	}
+
+	public static void checkSupportedAssignment(int sourceType, int targetType)
+	{
+		String description = " Assignment from " +
+			SQLTypes[sourceType] +
+			" to " + SQLTypes[targetType];
+		
+		if (!isSupportedAssignment(sourceType,targetType))
+			printShouldNotSucceedMessage(description);
+
+
+	}
+
+	public static void checkSupportedComparison(int sourceType,int targetType)
+	{
+		String description = " Comparison of " +
+			SQLTypes[sourceType] +
+			" to " + SQLTypes[targetType];
+		
+		if (!isSupportedComparison(sourceType,targetType))
+			printShouldNotSucceedMessage(description);
+	}
+
+  
+	//	-- HTML Table generation
+
+	public static void printHTMLTables()
+	{
+		// For headers.  First four letters of each word
+		String [] shortTypes = new String[SQLTypes.length];
+
+		for (int i = 0; i < SQLTypes.length; i++)
+			shortTypes[i] = getShortTypeName(i);
+
+		TestUtil.startHTMLPage("Datatype Casting, Assignment, and Comparison", 
+					  "person@a.company.com");
+		
+		TestUtil.printBoolArrayHTMLTable("Source Types","Target Types",
+										 shortTypes,
+										 shortTypes,
+										 T_146,
+										 "Table 146 - Explicit Casts Allowed by Derby");
+		
+		TestUtil.printBoolArrayHTMLTable("Source Types","Target Types",
+										 shortTypes,
+										 shortTypes,
+										 T_147a,
+										 "Table 147a - Assignments Allowed by Derby");
+
+		TestUtil.printBoolArrayHTMLTable("Source Types","Target Types",
+										 shortTypes,
+										 shortTypes,
+										 T_147b,
+										 "Table 147b - Comparisons Allowed by Derby");
+
+	   
+		TestUtil.endHTMLPage();
+	}
+
+
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/checkConstraint.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/checkConstraint.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,220 @@
+-- tests for check constraints
+
+autocommit off;
+
+-- negative
+
+-- The following are not allowed in check constraints:
+--	?, subquery, datetime functions
+create table neg1(c1 int check(?));
+create table neg1(c1 int check(c1 in (select c1 from neg1)));
+create table neg1(c1 int check(CURRENT_DATE = CURRENT_DATE));
+create table neg1(c1 int check(CURRENT_TIME = CURRENT_TIME));
+create table neg1(c1 int check(CURRENT_TIMESTAMP = CURRENT_TIMESTAMP));
+
+-- The check constraint definition must evaluate to a boolean
+create table neg1(c1 int check(c1));
+create table neg1(c1 int check(1));
+create table neg1(c1 int check(c1+c1));
+
+-- All column references are to target table
+create table neg1(c1 int check((c2 = 1)));
+
+-- verify that a check constraint can't be used as an optimizer override
+create table t1(c1 int constraint asdf check(c1 = 1));
+select * from t1 properties constraint = asdf;
+-- alter table t1 drop constraint asdf;
+rollback;
+-- alter table t1 drop constraint asdf;
+
+-- forward references should fail
+create table neg1(c1 int check(c2 = 1), c2 int);
+create table neg2(c1 int constraint asdf check(c2 = 1), c2 int);
+rollback;
+
+-- positive
+
+-- multiple check constraints on same table
+create table pos1(c1 int check(c1 > 0), constraint asdf check(c1 < 10));
+-- verify both constraints are enforced
+insert into pos1 values 0;
+insert into pos1 values 1;
+insert into pos1 values 9;
+insert into pos1 values 10;
+select * from pos1;
+
+-- verify constraint violation rolls back entire statement
+update pos1 set c1 = c1 + 1;
+select * from pos1;
+update pos1 set c1 = c1 - 1;
+select * from pos1;
+rollback;
+
+-- conflicting constraints, should fail
+create table negcks(c1 int constraint ck1st check(c1 > 4), c2 int constraint ck2nd check(c2 > 2), c3 int, constraint ckLast check(c2 > c1));
+-- constraint ck1st fails
+insert into negcks values (1, 3, 3);
+-- constraint ckLast fails (ck2nd fails too)
+insert into negcks values (5, 1, 3);
+-- constraint ck1st fails (ckLast fails too)
+insert into negcks values (2, 3, 3);
+rollback;
+
+-- same source and target tables
+create table pos1(c1 int, c2 int, constraint ck1 check (c1 < c2));
+insert into pos1 values (1, 2), (2, 3), (3, 4);
+commit;
+-- these should work
+insert into pos1 select * from pos1;
+select count(*) from pos1;
+update pos1 set c2 = (select max(c1) from pos1),
+				c1 = (select min(c2) from pos1);
+select * from pos1;
+rollback;
+-- these should fail
+insert into pos1 select c2, c1 from pos1;
+select count(*) from pos1;
+update pos1 set c2 = (select min(c1) from pos1),
+				c1 = (select max(c2) from pos1);
+select * from pos1;
+
+drop table pos1; 
+commit;
+
+-- union under insert
+create table t1(c1 int, c2 int, constraint ck1 check(c1 = c2));
+insert into t1 values (1, 1), (2, 1);
+select * from t1;
+
+-- normalize result set under insert/update
+insert into t1 values (1.0, 1);
+insert into t1 values (2.0, 1);
+select * from t1;
+update t1 set c2 = 1.0;
+update t1 set c2 = 2.0;
+select * from t1;
+update t1 set c1 = 3.0, c2 = 3.0;
+select * from t1;
+rollback;
+
+-- positioned update
+create table t1(c1 int, c2 int, constraint ck1 check(c1 = c2), constraint ck2 check(c2=c1));
+insert into t1 values (1, 1), (2, 2), (3, 3), (4, 4);
+create index i1 on t1(c1);
+get cursor c1 as 'select * from t1 where c2 = 2 for update of c1';
+next c1;
+-- this update should succeed
+update t1 set c1 = c1 where current of c1;
+-- this update should fail
+update t1 set c1 = c1 + 1 where current of c1;
+close c1;
+
+get cursor c2 as 'select * from t1 where c1 = 2 for update of c2';
+next c2;
+-- this update should succeed
+update t1 set c2 = c2 where current of c2;
+-- this update should fail
+update t1 set c2 = c2 + 1 where current of c2;
+close c2;
+
+get cursor c3 as 'select * from t1 where c1 = 2 for update of c1, c2';
+next c3;
+-- this update should succeed
+update t1 set c2 = c1, c1 = c2 where current of c3;
+-- this update should fail
+update t1 set c2 = c2 + 1, c1 = c1 + 3 where current of c3;
+-- this update should succeed
+update t1 set c2 = c1 + 3, c1 = c2 + 3 where current of c3;
+select * from t1;
+close c3;
+rollback;
+
+-- complex expressions
+create table t1(c1 int check((c1 + c1) = (c1 * c1) or 
+							 (c1 + c1)/2 = (c1 * c1)), c2 int);
+-- this insert should succeed
+insert into t1 values (1, 9), (2, 10);
+-- these updates should succeed
+update t1 set c2 = c2 * c2;
+update t1 set c1 = 2 where c1 = 1;
+update t1 set c1 = 1 where c1 = 2;
+-- this update should fail
+update t1 set c1 = c2;
+select * from t1;
+
+rollback;
+
+-- built-in functions in a check constraint
+create table charTab (c1 char(4) check(CHAR(c1) = c1));
+insert into charTab values 'asdf';
+insert into charTab values 'fdsa';
+-- beetle 5805 - support built-in function INT
+-- should fail until beetle 5805 is implemented
+create table intTab (c1 int check(INT(1) = c1));
+insert into intTab values 1;
+-- this insert should fail, does not satisfy check constraint
+insert into intTab values 2;
+create table maxIntTab (c1 int check(INT(2147483647) > c1));
+insert into maxIntTab values 1;
+-- this insert should fail, does not satisfy check constraint
+insert into maxIntTab values 2147483647;
+rollback;
+
+-- verify that inserts, updates and statements with forced constraints are
+-- indeed dependent on the constraints
+create table t1(c1 int not null constraint asdf primary key);
+insert into t1 values 1, 2, 3, 4, 5;
+commit;
+prepare p1 as 'insert into t1 values 1';
+prepare p2 as 'update t1 set c1 = 3 where c1 = 4';
+prepare p3 as 'select * from t1';
+-- the insert and update should fail, select should succeed
+execute p1;
+execute p2;
+execute p3;
+alter table t1 drop constraint asdf;
+
+-- rollback and verify that constraints are enforced and select succeeds
+rollback;
+execute p1;
+execute p2;
+execute p3;
+remove p1;
+remove p2;
+remove p3;
+
+drop table t1;
+
+-- check constraints with parameters
+create table t1(c1 int constraint asdf check(c1 = 1));
+
+prepare p1 as 'insert into t1 values (?)';
+execute p1 using 'values (1)';
+
+-- clean up
+drop table t1;
+
+create table t1(active_flag char(2) check(active_flag IN ('Y', 'N')), araccount_active_flag char(2) check(araccount_active_flag IN ('Y', 'N')), automatic_refill_flag char(2) check(automatic_refill_flag IN ('Y', 'N')), call_when_ready_flag char(2) check(call_when_ready_flag IN ('Y', 'N')), compliance_flag char(2) check(compliance_flag IN ('Y', 'N')), delivery_flag char(2) check(delivery_flag IN ('Y', 'N')), double_count_flag char(2) check(double_count_flag IN ('Y', 'N')), gender_ind char(2) check(gender_ind IN ('M', 'F', 'U')), geriatric_flag char(2) check(geriatric_flag IN ('Y', 'N')), refuse_inquiry_flag char(2) check(refuse_inquiry_flag IN ('Y', 'N')), animal_flag char(2) check(animal_flag IN ('Y', 'N')), terminal_flag char(2) check(terminal_flag IN ('Y', 'N')), unit_flag char(2) check(unit_flag IN ('Y', 'N')), VIP_flag char(2) check(VIP_flag IN ('Y', 'N')), snap_cap_flag char(2) check(snap_cap_flag IN ('Y', 'N')), consent_on_file_flag char(2) check(consent_on_file_flag IN ('Y', 'N')), enlarged_SIG_flag char(2) check(enlarged_SIG_flag IN ('Y', 'N')),aquired_patient_flag char(2) check(aquired_patient_flag IN ('Y', 'N')));
+
+-- bug 5622 - internal generated constraint names are re-worked to match db2's naming convention.
+
+drop table t1;
+create table t1 (c1 int not null primary key, c2 int not null unique, c3 int check (c3>=0));
+alter table t1 add column c4 int not null default 1;
+alter table t1 add constraint c4_unique UNIQUE(c4);
+alter table t1 add column c5 int check(c5 >= 0);
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T1';
+
+drop table t2;
+create table t2 (c21 int references t1);
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T2';
+
+drop table t3;
+create table t3 (c1 int check (c1 >= 0), c2 int check (c2 >= 0), c3 int check (c3 >= 0), c4 int check (c4 >= 0), c5 int check (c5 >= 0), 
+c6 int check (c6 >= 0), c7 int check (c7 >= 0), c8 int check (c8 >= 0), c9 int check (c9 >= 0), c10 int check (c10 >= 0), 
+c11 int check (c11 >= 0), c12 int check (c12 >= 0), c13 int check (c13 >= 0));
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T3';
+
+drop table t4;
+create table t4(c11 int not null, c12 int not null, primary key (c11, c12));
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t where c.tableid = t.tableid and tablename='T4';

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/closed.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/closed.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,416 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+	Test execution of closed JDBC objects. Executing or accessing a closed
+	object should report that it is closed.
+	<p>
+	Note that alot of this behavior is not very specifically specified in
+	the JDBC guide, so this test is local to our own handler. Running JBMS
+	under other handlers (such as weblogic) may produce different results due
+	to how they cache data and reuse client-side objects.
+
+	@author ames
+ */
+public class closed implements Runnable {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+
+	public static void main(String[] args) {
+		System.out.println("Test closed starting");
+		boolean passed = true;
+
+		try {
+			Connection conn;
+
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			String url = conn.getMetaData().getURL();
+
+			// want all tests to run regardless of intermediate errors
+			passed = testStatement(conn) && passed;
+
+			passed = testPreparedStatement(conn) && passed;
+
+			passed = testResultSet(conn) && passed;
+
+			// this test needs to be last, because the connection will
+			// be closed by it.
+			passed = testConnection(conn) && passed;
+
+			if (!conn.isClosed()) {
+				passed = false;
+				System.out.println("FAIL -- connection not closed by test");
+				conn.close();
+			}
+
+			// shutdown the database
+			passed = shutdownTest(url, url + ";shutdown=true");
+
+
+			// shutdown the system
+			passed = shutdownTest(url, "jdbc:derby:;shutdown=true");
+
+
+		} catch (Throwable e) {
+			passed = false;
+			System.out.println("FAIL -- unexpected exception:");
+			JDBCDisplayUtil.ShowException(System.out, e);
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		System.out.println("Test closed finished");
+	}
+
+	static boolean shutdownTest(String url, String shutdownUrl) throws SQLException {
+
+		boolean passed = true;
+
+		Connection c1 = DriverManager.getConnection(url);
+		Connection c2 = DriverManager.getConnection(url);
+		Connection c3a = DriverManager.getConnection(url);
+		Connection c3b = DriverManager.getConnection(url);
+
+		try {
+			c3a.createStatement().execute("DROP TABLE CLOSED.LOCKME");
+		} catch (SQLException sqle) {
+		}
+		try {
+			c3a.createStatement().execute("DROP PROCEDURE SLEEP");
+		} catch (SQLException sqle) {
+		}
+
+		c3a.createStatement().execute("CREATE TABLE CLOSED.LOCKME(i int)");
+		
+		c3a.createStatement().execute("create procedure sleep(t INTEGER) dynamic result sets 0 language java external name 'java.lang.Thread.sleep' parameter style java");
+		c3a.setAutoCommit(false);
+		c3a.createStatement().execute("LOCK TABLE CLOSED.LOCKME IN SHARE MODE");
+		
+		closed r2 = new closed(c2, "CALL sleep(10000)");
+		closed r3 = new closed(c3b, "LOCK TABLE CLOSED.LOCKME IN EXCLUSIVE MODE");
+
+		Thread t2 = new Thread(r2);
+		t2.start();
+		Thread t3 = new Thread(r3);
+		t3.start();
+
+		try {
+			Thread.currentThread().sleep(2000);
+		} catch (InterruptedException ie) {
+			System.out.println(ie);
+		}
+
+		SQLException s = null;
+		try {
+			DriverManager.getConnection(shutdownUrl);
+		} catch (SQLException sqle) {
+			s = sqle;
+		}
+
+		try {
+			t2.join();
+		} catch (InterruptedException ie) {
+			System.out.println(ie);
+		}
+		try {
+			t3.join();
+		} catch (InterruptedException ie) {
+			System.out.println(ie);
+		}
+
+		System.out.println(r2.result);
+		System.out.println(r3.result);
+
+		if (s != null)
+			JDBCDisplayUtil.ShowException(System.out, s);
+
+		if (!c1.isClosed()) {
+			passed = false;
+			System.out.println("FAIL -- connection not shutdown " + shutdownUrl);
+			c1.close();
+		}
+		if (!c2.isClosed()) {
+			passed = false;
+			System.out.println("FAIL -- active connection not shutdown " + shutdownUrl);
+			c2.close();
+		}
+
+		System.out.println("Shutdown test completed " + shutdownUrl);
+		return passed;
+	}
+
+	// for the shutdown test
+	private Connection cc;
+	private String sql;
+	String result;
+	private closed(Connection cc, String sql) {
+		this.cc = cc;
+		this.sql = sql;
+	}
+	public void run() {
+
+		try {
+			cc.createStatement().execute(sql);
+			result = "Sleep thread completed " + sql;
+		} catch (SQLException sqle) {
+
+			// this is to avoid different cannons for different JVMs since
+			// an java.lang.InterruptedException is thrown.
+			StringBuffer sb = new StringBuffer();
+			sb.append(sql);
+			sb.append(" - ");
+			sb.append(sqle.getSQLState());
+			while (sqle != null)
+			{
+				if (sqle != null) {
+					sb.append(", ");
+					sb.append(sqle.getSQLState());
+					sb.append(" -- ");
+					if (sqle.getMessage().indexOf("InterruptedException") != -1)
+						sb.append("InterruptedException");
+					else
+					{
+						sb.append(sqle.getMessage());
+						sqle.printStackTrace();
+					}
+				} else {
+					sb.append(sqle.getMessage());
+				}
+				sqle  = sqle.getNextException();
+			}
+			result = sb.toString();
+		}
+	}
+
+	static boolean testStatement(Connection conn) throws SQLException {
+		Statement s;
+		boolean passed = true;
+
+		s = conn.createStatement();
+		s.execute("create table t (i int)");
+		s.execute("create table s (i int)");
+
+		try {
+			s.execute("create table u (i int)");
+		} catch (SQLException se) {
+			// out impl lets you execute from closed, as stmt object is reusable
+			// after it is closed.
+			passed = false; // won't pass unless caught
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on execute of closed statement");
+		return passed;
+	}
+
+	static boolean testPreparedStatement(Connection conn) throws SQLException {
+		PreparedStatement ps;
+		boolean passed = true;
+
+		ps = conn.prepareStatement("insert into t values (1)");
+		ps.execute();
+		ps.execute();
+		ps.close();
+
+		try {
+			passed = false; // won't pass unless caught
+			ps.execute();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on execute of closed prepared statement");
+
+		return passed;
+	}
+
+
+	static boolean testResultSet(Connection conn) throws SQLException {
+		PreparedStatement ps;
+		Statement s;
+		ResultSet rs;
+		boolean passed = true;
+
+		// first, get a few values into a table:
+		ps = conn.prepareStatement("insert into s values (1)");
+		ps.execute();
+		ps.execute();
+		ps.execute();
+		ps.execute();
+		ps.execute();
+		ps.close();
+
+		s = conn.createStatement();
+		rs = s.executeQuery("select * from s");
+
+		rs.next();
+		rs.next();
+		rs.close();
+
+		try {
+			passed = false; // won't pass unless caught
+			rs.next();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on next of closed result set");
+
+		// now see that rs after statement closed is closed also
+		rs = s.executeQuery("select * from s");
+
+		rs.next();
+		rs.next();
+		s.close();
+
+		try {
+			passed = false; // won't pass unless caught
+			rs.next();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on next of result set with closed statement");
+
+		return passed;
+	}
+
+	static boolean testConnection(Connection conn) throws SQLException {
+		DatabaseMetaData dmd;
+		ResultSet rs;
+		Statement s;
+		PreparedStatement ps;
+		boolean passed = true;
+
+		dmd = conn.getMetaData();
+		s = conn.createStatement();
+		ps = conn.prepareStatement("create table w (i int)");
+
+		rs = dmd.getTables("%","%","%",null); // should work
+
+		conn.close();
+
+		// should not be able to execute an existing statement
+		try {
+			passed = false; // won't pass unless caught
+			s.execute("create table x (i int)");
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on statement execute after connection close");
+
+		// should not be able to execute an existing prepared statement
+		try {
+			passed = false; // won't pass unless caught
+			ps.execute();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on prepared statement execute after connection close");
+
+		// should not be able to create a statement...
+		try {
+			passed = false; // won't pass unless caught
+			s = conn.createStatement();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on statement creation after connection close");
+
+		// should not be able to prepare a statement...
+		try {
+			passed = false; // won't pass unless caught
+			ps = conn.prepareStatement("create table z (i int)");
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on statement preparation after connection close");
+
+		// should not be able to see metadata info...
+		try {
+			passed = false; // won't pass unless caught
+			rs.next();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on metadata reading after connection close");
+
+		// should not be able to get any more metadata info...
+		try {
+			passed = false; // won't pass unless caught
+			rs = dmd.getColumns("%","%","%","%");
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on metadata collecting after connection close");
+
+		// should not be able to get metadata object...
+		try {
+			passed = false; // won't pass unless caught
+			dmd = conn.getMetaData();
+		} catch (SQLException se) {
+			passed = true;
+			// could verify exception #...
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+		}
+		if (!passed)
+			System.out.println("FAIL -- no error on getting metadata after connection close");
+
+		return passed;
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/coalesceTests.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/coalesceTests.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1543 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.io.*;
+import java.sql.*;
+
+import org.apache.derby.tools.ij;
+
+/**
+ * Coalesce/Value tests for various datatypes
+ * coalesce/value function takes arguments and returns the first argument that is not null.
+ * The arguments are evaluated in the order in which they are specified, and the result of the
+ * function is the first argument that is not null. The result can be null only if all the arguments
+ * can be null. The selected argument is converted, if necessary, to the attributes of the result.
+ */
+public class coalesceTests
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	private static String VALID_DATE_STRING = "'2000-01-01'";
+	private static String VALID_TIME_STRING = "'15:30:20'";
+	private static String VALID_TIMESTAMP_STRING = "'2000-01-01 15:30:20'";
+	private static String NULL_VALUE="NULL";
+
+	private static String[] SQLTypes =
+	{
+		"SMALLINT",
+		"INTEGER",
+		"BIGINT",
+		"DECIMAL(10,5)",
+		"REAL",
+		"DOUBLE",
+		"CHAR(60)",
+		"VARCHAR(60)",
+		"LONG VARCHAR",
+		"CHAR(60) FOR BIT DATA",
+		"VARCHAR(60) FOR BIT DATA",
+		"LONG VARCHAR FOR BIT DATA",
+		"CLOB(1k)",
+		"DATE",
+		"TIME",
+		"TIMESTAMP",
+		"BLOB(1k)",
+
+	};
+
+	private static String[] ColumnNames =
+	{
+		"SMALLINTCOL",
+		"INTEGERCOL",
+		"BIGINTCOL",
+		"DECIMALCOL",
+		"REALCOL",
+		"DOUBLECOL",
+		"CHARCOL",
+		"VARCHARCOL",
+		"LONGVARCHARCOL",
+		"CHARFORBITCOL",
+		"VARCHARFORBITCOL",
+		"LVARCHARFORBITCOL",
+		"CLOBCOL",
+		"DATECOL",
+		"TIMECOL",
+		"TIMESTAMPCOL",
+		"BLOBCOL",
+
+	};
+
+ private static String[][]SQLData =
+	{
+		{NULL_VALUE, "0","1","2"},       // SMALLINT
+		{NULL_VALUE,"11","111",NULL_VALUE},       // INTEGER
+		{NULL_VALUE,"22","222","3333"},       // BIGINT
+		{NULL_VALUE,"3.3","3.33",NULL_VALUE},      // DECIMAL(10,5)
+		{NULL_VALUE,"4.4","4.44","4.444"},      // REAL,
+		{NULL_VALUE,"5.5","5.55",NULL_VALUE},      // DOUBLE
+		{NULL_VALUE,"'1992-01-06'","'1992-01-16'",NULL_VALUE},      // CHAR(60)
+		{NULL_VALUE,"'1992-01-07'","'1992-01-17'",VALID_TIME_STRING},      //VARCHAR(60)",
+		{NULL_VALUE,"'1992-01-08'","'1992-01-18'",VALID_TIMESTAMP_STRING},      // LONG VARCHAR
+		{NULL_VALUE,"X'10aa'",NULL_VALUE,"X'10aaaa'"},  // CHAR(60)  FOR BIT DATA
+		{NULL_VALUE,"X'10bb'",NULL_VALUE,"X'10bbbb'"},  // VARCHAR(60) FOR BIT DATA
+		{NULL_VALUE,"X'10cc'",NULL_VALUE,"X'10cccc'"},  //LONG VARCHAR FOR BIT DATA
+		{NULL_VALUE,"'13'","'14'",NULL_VALUE},     //CLOB(1k)
+		{NULL_VALUE,VALID_DATE_STRING,VALID_DATE_STRING,NULL_VALUE},        // DATE
+		{NULL_VALUE,VALID_TIME_STRING,VALID_TIME_STRING,NULL_VALUE},        // TIME
+		{NULL_VALUE,VALID_TIMESTAMP_STRING,VALID_TIMESTAMP_STRING,NULL_VALUE},   // TIMESTAMP
+		{NULL_VALUE,NULL_VALUE,NULL_VALUE,NULL_VALUE}                 // BLOB
+	};
+
+	/**
+	   SQL Reference Guide for DB2 has section titled "Rules for result data types" at the following url
+	   http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0008480.htm
+
+	   I have constructed following table based on various tables and information under "Rules for result data types"
+	   This table has FOR BIT DATA TYPES broken out into separate columns for clarity and testing
+	**/
+
+
+	public static final String[][]  resultDataTypeRulesTable = {
+
+  // Types.             S  I  B  D  R  D  C  V  L  C  V  L  C  D  T  T  B
+	//                    M  N  I  E  E  O  H  A  O  H  A  O  L  A  I  I  L
+	//                    A  T  G  C  A  U  A  R  N  A  R  N  O  T  M  M  O
+  //                    L  E  I  I  L  B  R  C  G  R  C  G  B  E  E  E  B
+  //                    L  G  N  M     L     H  V  .  H  V           S
+  //                    I  E  T  A     E     A  A  B  A  A           T
+  //                    N  R     L           R  R  I  R  R           A
+	//                    T                       C  T  .  .           M
+  //                                            H     B  B           P
+	//                                            A     I  I
+	//                                            R     T   T
+/* 0 SMALLINT */        { "SMALLINT", "INTEGER", "BIGINT", "DECIMAL", "DOUBLE", "DOUBLE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 1 INTEGER  */        { "INTEGER", "INTEGER", "BIGINT", "DECIMAL", "DOUBLE", "DOUBLE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 2 BIGINT   */        { "BIGINT", "BIGINT", "BIGINT", "DECIMAL", "DOUBLE", "DOUBLE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 3 DECIMAL  */        { "DECIMAL", "DECIMAL", "DECIMAL", "DECIMAL", "DOUBLE", "DOUBLE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 4 REAL     */        { "DOUBLE", "DOUBLE", "DOUBLE", "DOUBLE", "REAL", "DOUBLE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 5 DOUBLE   */        { "DOUBLE", "DOUBLE", "DOUBLE", "DOUBLE", "DOUBLE", "DOUBLE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 6 CHAR     */        { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "CHAR", "VARCHAR", "LONG VARCHAR", "ERROR", "ERROR", "ERROR", "CLOB", "DATE", "TIME", "TIMESTAMP", "ERROR" },
+/* 7 VARCHAR  */        { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "VARCHAR", "VARCHAR","LONG VARCHAR", "ERROR", "ERROR", "ERROR", "CLOB", "DATE", "TIME", "TIMESTAMP", "ERROR" },
+/* 8 LONGVARCHAR */     { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "LONG VARCHAR", "LONG VARCHAR", "LONG VARCHAR", "ERROR", "ERROR", "ERROR", "CLOB", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 9 CHAR FOR BIT */    { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "CHAR () FOR BIT DATA", "VARCHAR () FOR BIT DATA", "LONG VARCHAR FOR BIT DATA", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 10 VARCH. BIT   */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "VARCHAR () FOR BIT DATA", "VARCHAR () FOR BIT DATA", "LONG VARCHAR FOR BIT DATA", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 11 LONGVAR. BIT */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "LONG VARCHAR FOR BIT DATA", "LONG VARCHAR FOR BIT DATA", "LONG VARCHAR FOR BIT DATA", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 12 CLOB         */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "CLOB", "CLOB", "CLOB", "ERROR", "ERROR", "ERROR", "CLOB", "ERROR", "ERROR", "ERROR", "ERROR" },
+/* 13 DATE         */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "DATE", "DATE", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "DATE", "ERROR", "ERROR", "ERROR" },
+/* 14 TIME         */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "TIME", "TIME", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "TIME", "ERROR", "ERROR" },
+/* 15 TIMESTAMP    */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "TIMESTAMP", "TIMESTAMP", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "TIMESTAMP", "ERROR" },
+/* 16 BLOB         */   { "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "ERROR", "BLOB" },
+
+	};                                                                         
+
+	public static void main (String[] argv) throws Throwable
+	{
+		boolean isDB2=false;
+		String framework = System.getProperty("framework");
+		if (framework != null && framework.toUpperCase().equals("DB2JCC"))
+			isDB2 = true;
+
+		ij.getPropertyArg(argv);
+		Connection conn = ij.startJBMS();
+
+		testCoalesceSyntax(conn);
+
+		tablesForTestingAllDatatypesCombinations(conn);
+		testCompatibleDatatypesCombinations(conn);
+		testAllDatatypesCombinations(conn);
+
+		testDateCoalesce(conn);
+		testTimeCoalesce(conn);
+		testTimeStampCoalesce(conn);
+		testNumericCoalesce(conn);
+		testMiscellaneousCoalesce(conn);
+		testCharCoalesce(conn);
+		testCharForBitDataCoalesce(conn);
+	}
+
+	public static void testCoalesceSyntax( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("TestA - some syntax testing for Coalesce/Value function");
+
+			PreparedStatement ps;
+			Statement s = conn.createStatement();
+			try {
+			s.executeUpdate("drop table tA");
+			} catch(Exception ex) {}
+			s.executeUpdate("create table tA (c1 int, c2 char(254))");
+			s.executeUpdate("insert into tA (c1) values(1)");
+
+			System.out.println("TestAla - select coalesce from tA will give error because no arguments were supplied to the function");
+			try {
+				s.executeQuery("select coalesce from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42X04"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestAlb - select value from tA will give error because no arguments were supplied to the function");
+			try {
+				s.executeQuery("select value from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42X04"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA2a - select coalesce from tA will give error because no arguments were supplied inside the parentheses");
+			try {
+				s.executeQuery("select coalesce() from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42X01"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA2b - select value from tA will give error because no arguments were supplied inside the parentheses");
+			try {
+				s.executeQuery("select value() from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42X01"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA3a - select coalesce from tA with only one argument will give error");
+			try {
+				s.executeQuery("select coalesce(c1) from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42605"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA3b - select value from tA with only one argument will give error");
+			try {
+				s.executeQuery("select value(c1) from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42605"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA4a - select coalesce from tA with incorrect column name will give error");
+			try {
+				s.executeQuery("select coalesce(c111) from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42X04"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA4b - select value from tA with incorrect column name will give error");
+			try {
+				s.executeQuery("select value(c111) from tA");
+				System.out.println("FAIL - should have gotten error for incorrect syntax");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42X04"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA5a - create table with table name as coalesce and column name as coalesce will pass because coalesce is not a reserved-word");
+			s.executeUpdate("create table coalesce (coalesce int, c12 int)");
+			s.executeUpdate("insert into coalesce(coalesce) values(null)");
+			s.executeUpdate("insert into coalesce values(null,1)");
+			dumpRS(s.executeQuery("select coalesce(coalesce,c12) from coalesce"));
+			s.executeUpdate("drop table coalesce");
+
+			System.out.println("TestA5b - create table with table name as value and column name as value will pass because value is not a reserved-word");
+			s.executeUpdate("create table value (value int, c12 int)");
+			s.executeUpdate("insert into value(value) values(null)");
+			s.executeUpdate("insert into value values(null,1)");
+			dumpRS(s.executeQuery("select coalesce(value,c12) from value"));
+			s.executeUpdate("drop table value");
+
+			System.out.println("TestA6a - All arguments to coalesce function passed as parameters is an error");
+			try {
+				ps = conn.prepareStatement("select coalesce(?,?) from tA");
+				System.out.println("FAIL - should have gotten error for using parameters for all the arguments");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42610"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestA6b - All arguments to value function passed as parameters is an error");
+			try {
+				ps = conn.prepareStatement("select value(?,?) from tA");
+				System.out.println("FAIL - should have gotten error for using parameters for all the arguments");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42610"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table tA");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void tablesForTestingAllDatatypesCombinations( Connection conn) throws Throwable
+	{
+		System.out.println("Set up by creating table for testing all datatypes combinations");
+
+		Statement s = conn.createStatement();
+
+		try {
+			s.executeUpdate("DROP TABLE AllDataTypesTable");
+		}
+		catch(SQLException se) {}
+
+		StringBuffer createSQL = new StringBuffer("create table AllDataTypesTable (");
+		for (int type = 0; type < SQLTypes.length - 1; type++)
+		{
+			createSQL.append(ColumnNames[type] + " " + SQLTypes[type] + ",");
+		}
+		createSQL.append(ColumnNames[SQLTypes.length - 1] + " " + SQLTypes[SQLTypes.length - 1] + ")");
+		System.out.println(createSQL);
+		s.executeUpdate(createSQL.toString());
+
+		for (int row = 0; row < SQLData[0].length; row++)
+		{
+			createSQL = new StringBuffer("insert into AllDataTypesTable values(");
+			for (int type = 0; type < SQLTypes.length - 1; type++)
+			{
+				createSQL.append(SQLData[type][row] + ",");
+			}
+			createSQL.append(SQLData[SQLTypes.length - 1][row]+")");
+			System.out.println(createSQL);
+			s.executeUpdate(createSQL.toString());
+		}
+
+		s.close();
+		conn.commit();
+	}
+
+	public static void testAllDatatypesCombinations( Connection conn) throws Throwable
+	{
+		System.out.println("Start testing all datatypes combinations in COALESCE/VALUE function");
+
+		Statement s = conn.createStatement();
+
+		// Try COALESCE with 2 datatype combinations at a time
+		for (int firstColumnType = 0; firstColumnType < SQLTypes.length; firstColumnType++) {
+			for (int secondColumnType = 0; secondColumnType < SQLTypes.length; secondColumnType++) {
+				try {
+					String coalesceString = "SELECT COALESCE(" + ColumnNames[firstColumnType] + "," + ColumnNames[secondColumnType] + ") from AllDataTypesTable";
+					System.out.println(coalesceString);
+					printExpectedResultDataType(firstColumnType,secondColumnType);
+					dumpRS(s.executeQuery(coalesceString));
+					isSupportedCoalesce(firstColumnType,secondColumnType, true);
+				} catch (SQLException e)
+				{
+					if (e.getSQLState().equals("22007"))
+						System.out.println("expected exception because char value does not match a time/timestamp format " + e.getMessage());
+					else if (!isSupportedCoalesce(firstColumnType,secondColumnType, false)  && e.getSQLState().equals("42815"))
+						System.out.println("expected exception " + e.getMessage());
+					else
+						dumpSQLExceptions(e);
+				}
+				try {
+					String valueString = "SELECT VALUE(" + ColumnNames[firstColumnType] + "," + ColumnNames[secondColumnType] + ") from AllDataTypesTable";
+					System.out.println(valueString);
+					printExpectedResultDataType(firstColumnType,secondColumnType);
+					dumpRS(s.executeQuery(valueString));
+					isSupportedCoalesce(firstColumnType,secondColumnType, true);
+				} catch (SQLException e)
+				{
+					if (e.getSQLState().equals("22007"))
+						System.out.println("expected exception because char value does not match a time/timestamp format " + e.getMessage());
+					else if (!isSupportedCoalesce(firstColumnType,secondColumnType, false)  && e.getSQLState().equals("42815"))
+						System.out.println("expected exception " + e.getMessage());
+					else
+						dumpSQLExceptions(e);
+				}
+			}
+		}
+	}
+
+	public static void testCompatibleDatatypesCombinations( Connection conn) throws Throwable
+	{
+		System.out.println("Start testing all compatible datatypes combinations in COALESCE/VALUE function");
+
+		Statement s = conn.createStatement();
+
+		for (int firstColumnType = 0; firstColumnType < SQLTypes.length; firstColumnType++) {
+			StringBuffer coalesceString = new StringBuffer("SELECT COALESCE(" + ColumnNames[firstColumnType]);
+			for (int secondColumnType = 0; secondColumnType < SQLTypes.length; secondColumnType++) {
+				try {
+					if (resultDataTypeRulesTable[firstColumnType][secondColumnType].equals("ERROR"))
+						continue; //the datatypes are incompatible, don't try them in COALESCE/VALUE
+					coalesceString.append("," + ColumnNames[secondColumnType]);
+					System.out.println(coalesceString + ") from AllDataTypesTable");
+					dumpRS(s.executeQuery(coalesceString + ") from AllDataTypesTable"));
+				} catch (SQLException e)
+				{
+					if (e.getSQLState().equals("22007"))
+						System.out.println("expected exception because char value does not match a time/timestamp format " + e.getMessage());
+					else if (isClobWithCharAndDateTypeArguments(coalesceString.toString())  && e.getSQLState().equals("42815"))
+						System.out.println("expected exception because mixing CLOB and DATA/TIME/TIMESTAMP arugments " + e.getMessage());
+					else if (!isSupportedCoalesce(firstColumnType,secondColumnType, false)  && e.getSQLState().equals("42815"))
+						System.out.println("expected exception " + e.getMessage());
+					else
+						dumpSQLExceptions(e);
+				}
+			}
+		}
+	}
+
+	private static void printExpectedResultDataType(int oneType, int anotherType)
+	{
+		String coalesceDescription;
+		if (resultDataTypeRulesTable[oneType][anotherType].equals("ERROR"))
+		{
+			coalesceDescription = " Operands " +
+			SQLTypes[oneType] +
+			" , " + SQLTypes[anotherType] + " are incompatible for Coalesce/Value function";
+		}
+		else
+		{
+			coalesceDescription = " Coalesc/Value with operands " +
+			SQLTypes[oneType] +
+			" , " + SQLTypes[anotherType] + " will have result data type of " + resultDataTypeRulesTable[oneType][anotherType];
+		}
+		System.out.println(coalesceDescription);
+	}
+
+	public static boolean isClobWithCharAndDateTypeArguments(String coalesceString) throws Throwable
+	{
+		if(coalesceString.indexOf("CLOB") != -1)
+		{
+			if(coalesceString.indexOf("CHAR") != -1 && (coalesceString.indexOf("DATE") != -1 || coalesceString.indexOf("TIME") != -1))
+					return true;
+		}
+		return false;
+	}
+
+	private static boolean isSupportedCoalesce(int oneType, int anotherType, boolean throwError)
+	{
+		String coalesceDescription = " Coalesc/Value with operands " +
+			SQLTypes[oneType] +
+			" , " + SQLTypes[anotherType];
+
+		if (throwError && resultDataTypeRulesTable[oneType][anotherType].equals("ERROR"))
+				System.out.println("FAIL:" +  coalesceDescription +
+							   " should not be supported");
+
+		return (!(resultDataTypeRulesTable[oneType][anotherType].equals("ERROR")));
+	}
+
+	public static void testMiscellaneousCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tD");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tD (c1 int, c2 char(254))");
+			s.executeUpdate("insert into tD (c1,c2) values(1,'abcdefgh')");
+			s.executeUpdate("insert into tD (c1) values(2)");
+
+			System.out.println("TestD - some miscellaneous testing for Coalesce/Value function");
+
+			System.out.println("TestD1a - test coalesce function in values clause");
+			dumpRS(s.executeQuery("values coalesce(cast('asdfghj' as char(30)),cast('asdf' as char(50)))"));
+
+			System.out.println("TestD1b - test value function in values clause");
+			dumpRS(s.executeQuery("values value(cast('asdfghj' as char(30)),cast('asdf' as char(50)))"));
+
+			System.out.println("TestD2a - First argument to coalesce function passed as parameter with non-null value");
+			ps = conn.prepareStatement("select coalesce(?,c2) from tD");
+			ps.setString(1,"first argument to coalesce");
+			dumpRS(ps.executeQuery());
+
+			System.out.println("TestD2b - First argument to value function passed as parameter with non-null value");
+			ps = conn.prepareStatement("select value(?,c2) from tD");
+			ps.setString(1,"first argument to value");
+			dumpRS(ps.executeQuery());
+
+			System.out.println("TestD3a - First argument to coalesce function passed as parameter with null value");
+			ps = conn.prepareStatement("select coalesce(?,c2) from tD");
+			ps.setNull(1,Types.CHAR);
+			dumpRS(ps.executeQuery());
+
+			System.out.println("TestD3b - First argument to value function passed as parameter with null value");
+			ps = conn.prepareStatement("select value(?,c2) from tD");
+			ps.setNull(1,Types.BIGINT);
+			dumpRS(ps.executeQuery());
+
+			System.out.println("TestD4a - Pass incompatible value for parameter to coalesce function");
+			ps = conn.prepareStatement("select coalesce(c1,?) from tD");
+			try {
+				ps.setString(1,"abc");
+				dumpRS(ps.executeQuery());
+				System.out.println("FAIL - should have gotten error because result type is int and we are trying to pass a parameter of type char");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("22018"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table tD");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testDateCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tF");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tF (dateCol date, charCol char(10), varcharCol varchar(50))");
+			s.executeUpdate("insert into tF values(null, null, null)");
+			s.executeUpdate("insert into tF values(date('1992-01-02'), '1992-01-03', '1992-01-04')");
+
+			System.out.println("TestF - focus on date datatypes");
+			System.out.println("TestF1a - coalesce(dateCol,dateCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(dateCol,dateCol) from tF"));
+
+			System.out.println("TestF1b - value(dateCol,dateCol)");
+			dumpRSwithScale(s.executeQuery("select value(dateCol,dateCol) from tF"));
+
+			System.out.println("TestF2a - coalesce(dateCol,charCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(dateCol,charCol) from tF"));
+
+			System.out.println("TestF2b - value(dateCol,charCol)");
+			dumpRSwithScale(s.executeQuery("select value(dateCol,charCol) from tF"));
+
+			System.out.println("TestF3a - coalesce(charCol,dateCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(charCol,dateCol) from tF"));
+
+			System.out.println("TestF3b - value(charCol,dateCol)");
+			dumpRSwithScale(s.executeQuery("select value(charCol,dateCol) from tF"));
+
+			System.out.println("TestF4a - coalesce(dateCol,varcharCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(dateCol,charCol) from tF"));
+
+			System.out.println("TestF4b - value(dateCol,varcharCol)");
+			dumpRSwithScale(s.executeQuery("select value(dateCol,charCol) from tF"));
+
+			System.out.println("TestF5a - coalesce(varcharCol,dateCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(charCol,dateCol) from tF"));
+
+			System.out.println("TestF5b - value(varcharCol,dateCol)");
+			dumpRSwithScale(s.executeQuery("select value(charCol,dateCol) from tF"));
+
+			System.out.println("TestF - Try invalid string representation of date into chars and varchars and then use them in coalesce function with date datatype");
+			s.executeUpdate("insert into tF values(date('1992-01-01'), 'I am char', 'I am varchar')");
+
+			try {
+				System.out.println("TestF6a - coalesce(charCol,dateCol) will fail because one row has invalid string representation of date in the char column");
+				dumpRSwithScale(s.executeQuery("select coalesce(charCol,dateCol) from tF"));
+				System.out.println("TestF6a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestF6b - value(charCol,dateCol) will fail because one row has invalid string representation of date in the char column");
+				dumpRSwithScale(s.executeQuery("select value(charCol,dateCol) from tF"));
+				System.out.println("TestF6b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestF7a - coalesce(varcharCol,dateCol) will fail because one row has invalid string representation of date in the varchar column");
+				dumpRSwithScale(s.executeQuery("select coalesce(charCol,dateCol) from tF"));
+				System.out.println("TestF7a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestF7b - value(varcharCol,dateCol) will fail because one row has invalid string representation of date in the varchar column");
+				dumpRSwithScale(s.executeQuery("select value(charCol,dateCol) from tF"));
+				System.out.println("TestF7b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table tF");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testTimeStampCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tH");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tH (timestampCol timestamp, charCol char(19), varcharCol varchar(50))");
+			s.executeUpdate("insert into tH values(null, null, null)");
+			s.executeUpdate("insert into tH values(timestamp('1992-01-01 12:30:30'), '1992-01-01 12:30:31', '1992-01-01 12:30:32')");
+
+			System.out.println("TestH - focus on timestamp datatypes");
+			System.out.println("TestH1a - coalesce(timestampCol,timestampCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(timestampCol,timestampCol) from tH"));
+
+			System.out.println("TestH1b - value(timestampCol,timestampCol)");
+			dumpRSwithScale(s.executeQuery("select value(timestampCol,timestampCol) from tH"));
+
+			System.out.println("TestH2a - coalesce(timestampCol,charCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(timestampCol,charCol) from tH"));
+
+			System.out.println("TestH2b - value(timestampCol,charCol)");
+			dumpRSwithScale(s.executeQuery("select value(timestampCol,charCol) from tH"));
+
+			System.out.println("TestH3a - coalesce(charCol,timestampCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(charCol,timestampCol) from tH"));
+
+			System.out.println("TestH3b - value(charCol,timestampCol)");
+			dumpRSwithScale(s.executeQuery("select value(charCol,timestampCol) from tH"));
+
+			System.out.println("TestH4a - coalesce(timestampCol,varcharCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(timestampCol,charCol) from tH"));
+
+			System.out.println("TestH4b - value(timestampCol,varcharCol)");
+			dumpRSwithScale(s.executeQuery("select value(timestampCol,charCol) from tH"));
+
+			System.out.println("TestH5a - coalesce(varcharCol,timestampCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(charCol,timestampCol) from tH"));
+
+			System.out.println("TestH5b - value(varcharCol,timestampCol)");
+			dumpRSwithScale(s.executeQuery("select value(charCol,timestampCol) from tH"));
+
+			System.out.println("TestH - Try invalid string representation of timestamp into chars and varchars and then use them in coalesce function with timestamp datatype");
+			s.executeUpdate("insert into tH values(timestamp('1992-01-01 12:30:33'), 'I am char', 'I am varchar')");
+
+			try {
+				System.out.println("TestH6a - coalesce(charCol,timestampCol) will fail because one row has invalid string representation of timestamp in the char column");
+				dumpRSwithScale(s.executeQuery("select coalesce(charCol,timestampCol) from tH"));
+				System.out.println("TestH6a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestH6b - value(charCol,timestampCol) will fail because one row has invalid string representation of timestamp in the char column");
+				dumpRSwithScale(s.executeQuery("select value(charCol,timestampCol) from tH"));
+				System.out.println("TestH6b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestH7a - coalesce(varcharCol,timestampCol) will fail because one row has invalid string representation of timestamp in the varchar column");
+				dumpRSwithScale(s.executeQuery("select coalesce(charCol,timestampCol) from tH"));
+				System.out.println("TestH7a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestH7b - value(varcharCol,timestampCol) will fail because one row has invalid string representation of timestamp in the varchar column");
+				dumpRSwithScale(s.executeQuery("select value(charCol,timestampCol) from tH"));
+				System.out.println("TestH7b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table tH");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testTimeCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tG");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tG (timeCol time, charCol char(10), varcharCol varchar(50))");
+			s.executeUpdate("insert into tG values(null, null, null)");
+			s.executeUpdate("insert into tG values(time('12:30:30'), '12:30:31', '12:30:32')");
+
+			System.out.println("TestG - focus on time datatypes");
+			System.out.println("TestG1a - coalesce(timeCol,timeCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,timeCol) from tG"));
+
+			System.out.println("TestG1b - value(timeCol,timeCol)");
+			dumpRSwithScale(s.executeQuery("select value(timeCol,timeCol) from tG"));
+
+			System.out.println("TestG2a - coalesce(timeCol,charCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,charCol) from tG"));
+
+			System.out.println("TestG2b - value(timeCol,charCol)");
+			dumpRSwithScale(s.executeQuery("select value(timeCol,charCol) from tG"));
+
+			System.out.println("TestG3a - coalesce(charCol,timeCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(charCol,timeCol) from tG"));
+
+			System.out.println("TestG3b - value(charCol,timeCol)");
+			dumpRSwithScale(s.executeQuery("select value(charCol,timeCol) from tG"));
+
+			System.out.println("TestG4a - coalesce(timeCol,varcharCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,charCol) from tG"));
+
+			System.out.println("TestG4b - value(timeCol,varcharCol)");
+			dumpRSwithScale(s.executeQuery("select value(timeCol,charCol) from tG"));
+
+			System.out.println("TestG5a - coalesce(varcharCol,timeCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(charCol,timeCol) from tG"));
+
+			System.out.println("TestG5b - value(varcharCol,timeCol)");
+			dumpRSwithScale(s.executeQuery("select value(charCol,timeCol) from tG"));
+
+			System.out.println("TestG - Try invalid string representation of time into chars and varchars and then use them in coalesce function with time datatype");
+			s.executeUpdate("insert into tG values(time('12:30:33'), 'I am char', 'I am varchar')");
+
+			try {
+				System.out.println("TestG6a - coalesce(charCol,timeCol) will fail because one row has invalid string representation of time in the char column");
+				dumpRSwithScale(s.executeQuery("select coalesce(charCol,timeCol) from tG"));
+				System.out.println("TestG6a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestG6b - value(charCol,timeCol) will fail because one row has invalid string representation of time in the char column");
+				dumpRSwithScale(s.executeQuery("select value(charCol,timeCol) from tG"));
+				System.out.println("TestG6b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestG7a - coalesce(varcharCol,timeCol) will fail because one row has invalid string representation of time in the varchar column");
+				dumpRSwithScale(s.executeQuery("select coalesce(charCol,timeCol) from tG"));
+				System.out.println("TestG7a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestG7b - value(varcharCol,timeCol) will fail because one row has invalid string representation of time in the varchar column");
+				dumpRSwithScale(s.executeQuery("select value(charCol,timeCol) from tG"));
+				System.out.println("TestG7b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("22007"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestG - Following will work fine with invalid string representation of time because timeCol is not null and hence we don't look at invalid time string in char/varchar columns");
+			System.out.println("TestG8a - coalesce(timeCol,charCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at charCol's invalid time string");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,charCol) from tG"));
+
+			System.out.println("TestG8b - value(timeCol,charCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at charCol's invalid time string");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,charCol) from tG"));
+
+			System.out.println("TestG9a - coalesce(timeCol,varcharCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at varcharCol's invalid time string");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,varcharCol) from tG"));
+
+			System.out.println("TestG9b - value(timeCol,varcharCol) will pass because timeCol is non-null for all rows in table TG and hence we don't look at varcharCol's invalid time string");
+			dumpRSwithScale(s.executeQuery("select coalesce(timeCol,varcharCol) from tG"));
+
+			s.executeUpdate("drop table tG");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testNumericCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tE");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tE (smallintCol smallint, intCol integer, bigintCol bigint, decimalCol1 decimal(22,2), decimalCol2 decimal(8,6), decimalCol3 decimal(31,28), realCol real, doubleCol double)");
+			s.executeUpdate("insert into tE values(1, 2, 3, 4, 5.5, 6.6, 7.7, 3.4028235E38)");
+			s.executeUpdate("insert into tE values(null,null,null,null,null,null,null,null)");
+
+			System.out.println("TestE - focus on smallint datatypes");
+			System.out.println("TestE1 - coalesce(smallintCol,smallintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,smallintCol) from tE"));
+
+			System.out.println("TestE1a - coalesce(smallintCol,intCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,intCol) from tE"));
+
+			System.out.println("TestE1b - coalesce(smallintCol,bigintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,bigintCol) from tE"));
+
+			System.out.println("TestE1c - coalesce(SMALLINT,DECIMAL) with decimal(w,x) will give result decimal(p,x) where p=x+max(w-x,5) and if that gives p>31, then p is set to 31");
+			System.out.println("TestE1c1 - coalesce(smallintCol,decimalCol1) with decimal(22,2) will give result decimal(22,2)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,decimalCol1) from tE"));
+
+			System.out.println("TestE1c2 - coalesce(smallintCol,decimalCol2) with decimal(8,6) will give result decimal(11,6)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,decimalCol2) from tE"));
+
+			System.out.println("TestE1c3 - coalesce(smallintCol,decimalCol3) with decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,decimalCol3) from tE"));
+
+			System.out.println("TestE1d - coalesce(smallintCol,realCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,realCol) from tE"));
+
+			System.out.println("TestE1e - coalesce(smallintCol,doubleCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(smallintCol,doubleCol) from tE"));
+
+			System.out.println("TestE - focus on int datatypes");
+			System.out.println("TestE1 - coalesce(intCol,intCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,intCol) from tE"));
+
+			System.out.println("TestE1f - coalesce(intCol,smallintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,smallintCol) from tE"));
+
+			System.out.println("TestE1g - coalesce(intCol,bigintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,bigintCol) from tE"));
+
+			System.out.println("TestE1h - coalesce(INT,DECIMAL) with decimal(w,x) will give result decimal(p,x) where p=x+max(w-x,11) and if that gives p>31, then p is set to 31");
+			System.out.println("TestE1h1 - coalesce(intCol,decimalCol1) with decimal(22,2) will give result decimal(22,2)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,decimalCol1) from tE"));
+
+			System.out.println("TestE1h2 - coalesce(intCol,decimalCol2) with decimal(8,6) will give result decimal(17,6)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,decimalCol2) from tE"));
+
+			System.out.println("TestE1h3 - coalesce(intCol,decimalCol3) with decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,decimalCol3) from tE"));
+
+			System.out.println("TestE1i - coalesce(intCol,realCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,realCol) from tE"));
+
+			System.out.println("TestE1j - coalesce(intCol,doubleCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(intCol,doubleCol) from tE"));
+
+			System.out.println("TestE - focus on bigint datatypes");
+			System.out.println("TestE1 - coalesce(bigintCol,bigintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,bigintCol) from tE"));
+
+			System.out.println("TestE1k - coalesce(bigintCol,smallintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,smallintCol) from tE"));
+
+			System.out.println("TestE1l - coalesce(bigintCol,intCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,intCol) from tE"));
+
+			System.out.println("TestE1m - coalesce(BIGINT,DECIMAL) with decimal(w,x) will give result decimal(p,x) where p=x+max(w-x,19) and if that gives p>31, then p is set to 31");
+			System.out.println("TestE1m1 - coalesce(bigintCol,decimalCol1) with decimal(22,2) will give result decimal(22,2)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,decimalCol1) from tE"));
+
+			System.out.println("TestE1m2 - coalesce(bigintCol,decimalCol2) with decimal(8,6) will give result decimal(21,6)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,decimalCol2) from tE"));
+
+			System.out.println("TestE1m3 - coalesce(bigintCol,decimalCol3) with decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,decimalCol3) from tE"));
+
+			System.out.println("TestE1n - coalesce(bigintCol,realCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,realCol) from tE"));
+
+			System.out.println("TestE1o - coalesce(bigintCol,doubleCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(bigintCol,doubleCol) from tE"));
+
+			System.out.println("TestE - focus on decimal datatypes");
+
+			System.out.println("TestE1 - coalesce(DECIMAL,DECIMAL) with decimal(w,x), decimal(y,z) will give result decimal(p,s)");
+			System.out.println("  where p=max(x,z)+max(w-x,y-z), s=max(x,z) and if that gives p>31, then p is set to 31");
+			System.out.println("TestE11 - coalesce(decimalCol1,decimalCol1) with decimal(22,2) will give result decimal(22,2)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,decimalCol1) from tE"));
+
+			System.out.println("TestE12 - coalesce(decimalCol1,decimalCol2) with decimal(22,2) and decimal(8,6) will give result decimal(26,6)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,decimalCol2) from tE"));
+
+			System.out.println("TestE13 - coalesce(decimalCol1,decimalCol3) with decimal(22,2) and decimal(31,28) will give result decimal(31,28) rather than giving error for precision  > 31");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,decimalCol3) from tE"));
+
+			System.out.println("TestE1p - coalesce(decimalCol1,smallintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,smallintCol) from tE"));
+
+			System.out.println("TestE1q - coalesce(decimalCol1,intCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,intCol) from tE"));
+
+			System.out.println("TestE1r - coalesce(decimalCol1,bigintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,bigintCol) from tE"));
+
+			System.out.println("TestE1s - coalesce(decimalCol1,realCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,realCol) from tE"));
+
+			System.out.println("TestE1t - coalesce(decimalCol1,doubleCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(decimalCol1,doubleCol) from tE"));
+
+			System.out.println("TestE - focus on real datatypes");
+			System.out.println("TestE1 - coalesce(realCol,realCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(realCol,realCol) from tE"));
+
+			System.out.println("TestE1u - coalesce(realCol,smallintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(realCol,smallintCol) from tE"));
+
+			System.out.println("TestE1v - coalesce(realCol,intCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(realCol,intCol) from tE"));
+
+			System.out.println("TestE1w - coalesce(realCol,bigintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(realCol,bigintCol) from tE"));
+
+			System.out.println("TestE1x - coalesce(realCol,decimalCol1)");
+			dumpRSwithScale(s.executeQuery("select coalesce(realCol,decimalCol1) from tE"));
+
+			System.out.println("TestE1y - coalesce(realCol,doubleCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(realCol,doubleCol) from tE"));
+
+			System.out.println("TestE - focus on double datatypes");
+			System.out.println("TestE1 - coalesce(doubleCol,doubleCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(doubleCol,doubleCol) from tE"));
+
+			System.out.println("TestE1z - coalesce(doubleCol,smallintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(doubleCol,smallintCol) from tE"));
+
+			System.out.println("TestE2a - coalesce(doubleCol,intCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(doubleCol,intCol) from tE"));
+
+			System.out.println("TestE2b - coalesce(doubleCol,bigintCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(doubleCol,bigintCol) from tE"));
+
+			System.out.println("TestE2c - coalesce(doubleCol,decimalCol1)");
+			dumpRSwithScale(s.executeQuery("select coalesce(doubleCol,decimalCol1) from tE"));
+
+			System.out.println("TestE2d - coalesce(doubleCol,realCol)");
+			dumpRSwithScale(s.executeQuery("select coalesce(doubleCol,realCol) from tE"));
+
+			s.executeUpdate("drop table tE");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testCharCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tB");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tB (c1 char(254), c2 char(40), vc1 varchar(253), vc2 varchar(2000), lvc1 long varchar, lvc2 long varchar, clob1 CLOB(200), clob2 CLOB(33K))");
+			s.executeUpdate("insert into tB values('c1 not null', 'c2 not null', 'vc1 not null', 'vc2 not null', 'lvc1 not null', 'lvc2 not null', 'clob1 not null', 'clob2 not null')");
+			s.executeUpdate("insert into tB values('c1 not null but c2 is', null, 'vc1 is not null but vc2 is', null, null, null,null,null)");
+			s.executeUpdate("insert into tB values(null,'c2 not null but c1 is', null, 'vc2 is not null but vc1 is', 'lvc1 not null again', 'lvc2 not null again', 'clob1 not null again', 'clob2 not null again')");
+			s.executeUpdate("insert into tB values(null,null, null, null, null, null, null, null)");
+
+			System.out.println("TestB - Focus on CHAR as atleast one of the operands");
+			System.out.println("TestB1a - 2 CHAR operands coalesce(c1,c2) with c1(254) and c2(40)");
+			dumpRS(s.executeQuery("select coalesce(c1,c2) from tB"));
+
+			System.out.println("TestB1b - 2 CHAR operands value(c1,c2) with c1(254) and c2(40)");
+			dumpRS(s.executeQuery("select value(c1,c2) from tB"));
+
+			System.out.println("TestB2a - 2 CHAR operands coalesce(c2,c1) with c2(40) and c1(254)");
+			dumpRS(s.executeQuery("select coalesce(c2,c1) from tB"));
+
+			System.out.println("TestB2b - 2 CHAR operands value(c2,c1) with c2(40) and c1(254)");
+			dumpRS(s.executeQuery("select value(c2,c1) from tB"));
+
+			System.out.println("TestB3a - CHAR and VARCHAR operands coalesce(c1,vc1) with c1(254) and vc1(253)");
+			dumpRS(s.executeQuery("select coalesce(c1,vc1) from tB"));
+
+			System.out.println("TestB3b - CHAR and VARCHAR operands value(c1,vc1) with c1(254) and vc1(253)");
+			dumpRS(s.executeQuery("select value(c1,vc1) from tB"));
+
+			System.out.println("TestB4a - VARCHAR and CHAR operands coalesce(vc1,c1) with vc1(253) and c1(254)");
+			dumpRS(s.executeQuery("select coalesce(vc1,c1) from tB"));
+
+			System.out.println("TestB4b - VARCHAR AND CHAR operands value(vc1,c1) with vc1(253) and c1(254)");
+			dumpRS(s.executeQuery("select value(vc1,c1) from tB"));
+
+			System.out.println("TestB - Focus on VARCHAR as atleast one of the operands");
+			System.out.println("TestB5a - 2 VARCHAR operands coalesce(vc1,vc2) with vc1(253) and vc2(2000)");
+			dumpRS(s.executeQuery("select coalesce(vc1,vc2) from tB"));
+
+			System.out.println("TestB5b - 2 VARCHAR operands value(vc1,vc2) with vc1(253) and vc2(2000)");
+			dumpRS(s.executeQuery("select value(vc1,vc2) from tB"));
+
+			System.out.println("TestB6a - 2 VARCHAR operands coalesce(vc2,vc1) with vc2(2000) and vc1(253)");
+			dumpRS(s.executeQuery("select coalesce(vc2,vc1) from tB"));
+
+			System.out.println("TestB6b - 2 VARCHAR operands value(vc2,vc1) with vc2(2000) and vc1(253)");
+			dumpRS(s.executeQuery("select value(vc2,vc1) from tB"));
+
+			System.out.println("TestB - Focus on LONG VARCHAR as atleast one of the operands");
+			System.out.println("TestB7a - CHAR and LONG VARCHAR operands coalesce(c1,lvc1) with c1(254)");
+			dumpRS(s.executeQuery("select coalesce(c1,lvc1) from tB"));
+
+			System.out.println("TestB7b - CHAR and LONG VARCHAR operands value(c1,lvc1) with c1(254)");
+			dumpRS(s.executeQuery("select value(c1,lvc1) from tB"));
+
+			System.out.println("TestB8a - LONG VARCHAR and CHAR operands coalesce(lvc1,c1) with c1(254)");
+			dumpRS(s.executeQuery("select coalesce(lvc1,c1) from tB"));
+
+			System.out.println("TestB8b - LONG VARCHAR and CHAR operands value(lvc1,c1) with c1(254)");
+			dumpRS(s.executeQuery("select value(lvc1,c1) from tB"));
+
+			System.out.println("TestB9a - VARCHAR and LONG VARCHAR operands coalesce(vc1,lvc1) with vc1(253)");
+			dumpRS(s.executeQuery("select coalesce(vc1,lvc1) from tB"));
+
+			System.out.println("TestB9b - VARCHAR and LONG VARCHAR operands value(vc1,lvc1) with vc1(253)");
+			dumpRS(s.executeQuery("select value(vc1,lvc1) from tB"));
+
+			System.out.println("TestB10a - LONG VARCHAR and VARCHAR operands coalesce(lvc1,vc1) with vc1(253)");
+			dumpRS(s.executeQuery("select coalesce(lvc1,vc1) from tB"));
+
+			System.out.println("TestB10b - LONG VARCHAR and VARCHAR operands value(lvc1,vc1) with vc1(253)");
+			dumpRS(s.executeQuery("select value(lvc1,vc1) from tB"));
+
+			System.out.println("TestB11a - LONG VARCHAR and LONG VARCHAR operands coalesce(lvc1,lvc2)");
+			dumpRS(s.executeQuery("select coalesce(lvc1,lvc2) from tB"));
+
+			System.out.println("TestB11b - LONG VARCHAR and LONG VARCHAR operands value(lvc1,lvc2)");
+			dumpRS(s.executeQuery("select value(lvc1,lvc2) from tB"));
+
+			System.out.println("TestB - Focus on CLOB as atleast one of the operands");
+			System.out.println("TestB12a - CLOB and CHAR operands coalesce(clob1,c1) with clob1(200) and c1(254)");
+			dumpRS(s.executeQuery("select coalesce(clob1,c1) from tB"));
+
+			System.out.println("TestB12b - CLOB and CHAR operands value(clob1,c1) with clob1(200) and c1(254)");
+			dumpRS(s.executeQuery("select value(clob1,c1) from tB"));
+
+			System.out.println("TestB13a - CHAR and CLOB operands coalesce(c1,clob2) with c1(254) and clob2(33K)");
+			dumpRS(s.executeQuery("select coalesce(c1,clob2) from tB"));
+
+			System.out.println("TestB13b - CHAR and CLOB operands value(c1,clob2) with c1(254) and clob2(33K)");
+			dumpRS(s.executeQuery("select value(c1,clob2) from tB"));
+
+			System.out.println("TestB14a - CLOB and VARCHAR operands coalesce(clob1,vc1) with clob1(200) and vc1(253)");
+			dumpRS(s.executeQuery("select coalesce(clob1,vc1) from tB"));
+
+			System.out.println("TestB14b - CLOB and VARCHAR operands value(clob1,vc1) with clob1(200) and vc1(253)");
+			dumpRS(s.executeQuery("select value(clob1,vc1) from tB"));
+
+			System.out.println("TestB15a - VARCHAR and CLOB operands coalesce(vc2,clob2) with vc2(2000) and clob2(33K)");
+			dumpRS(s.executeQuery("select coalesce(vc2,clob2) from tB"));
+
+			System.out.println("TestB15b - VARCHAR and CLOB operands value(vc2,clob2) with vc2(2000) and clob2(33K)");
+			dumpRS(s.executeQuery("select value(vc2,clob2) from tB"));
+
+			System.out.println("TestB16a - CLOB and LONG VARCHAR operands coalesce(clob1,lvc1) with clob1(200). The result length will be 32700 (long varchar max length)");
+			dumpRS(s.executeQuery("select coalesce(clob1,lvc1) from tB"));
+
+			System.out.println("TestB16b - CLOB and LONG VARCHAR operands value(clob1,lvc1) with clob1(200). The result length will be 32700 (long varchar max length)");
+			dumpRS(s.executeQuery("select value(clob1,lvc1) from tB"));
+
+			System.out.println("TestB17a - LONG VARCHAR and CLOB operands coalesce(lvc2,clob2) with clob2(33K). The result length will be 33K since clob length here is > 32700 (long varchar max length)");
+			dumpRS(s.executeQuery("select coalesce(lvc2,clob2) from tB"));
+
+			System.out.println("TestB17b - LONG VARCHAR and CLOB operands value(lvc2,clob2) with clob2(33K). The result length will be 33K since clob length here is > 32700 (long varchar max length)");
+			dumpRS(s.executeQuery("select value(lvc2,clob2) from tB"));
+
+			System.out.println("TestB18a - CLOB and CLOB operands coalesce(clob1,clob2) with clob1(200) and clob2(33K).");
+			dumpRS(s.executeQuery("select coalesce(clob1,clob2) from tB"));
+
+			System.out.println("TestB18b - CLOB and CLOB operands value(clob1,clob2) with clob1(200) and clob2(33K).");
+			dumpRS(s.executeQuery("select value(clob1,clob2) from tB"));
+
+			s.executeUpdate("drop table tB");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testCharForBitDataCoalesce( Connection conn) throws Throwable
+	{
+    try {
+			Statement s = conn.createStatement();
+			PreparedStatement ps;
+    try {
+			s.executeUpdate("drop table tC");
+    } catch(Exception ex) {}
+			s.executeUpdate("create table tC (cbd1 char(254) for bit data, cbd2 char(40) for bit data, vcbd1 varchar(253) for bit data, vcbd2 varchar(2000) for bit data, lvcbd1 long varchar for bit data, lvcbd2 long varchar for bit data, blob1 BLOB(200), blob2 BLOB(33K))");
+			ps = conn.prepareStatement("insert into tC values (?,?,?,?,?,?,?,?)");
+			ps.setBytes(1, "cbd1 not null".getBytes());
+			ps.setBytes(2, "cbd2 not null".getBytes());
+			ps.setBytes(3, "vcbd1 not null".getBytes());
+			ps.setBytes(4, "vcbd2 not null".getBytes());
+			ps.setBytes(5, "lvcbd1 not null".getBytes());
+			ps.setBytes(6, "lvcbd2 not null".getBytes());
+			ps.setBytes(7, "blob1 not null".getBytes());
+			ps.setBytes(8, "blob2 not null".getBytes());
+			ps.executeUpdate();
+			ps.setBytes(1, "cbd1 not null but cbd2 is".getBytes());
+			ps.setBytes(2, null);
+			ps.setBytes(3, "vcbd1 not null but vcbd2 is".getBytes());
+			ps.setBytes(4, null);
+			ps.setBytes(5, null);
+			ps.setBytes(6, null);
+			ps.setBytes(7, null);
+			ps.setBytes(8, null);
+			ps.executeUpdate();
+			ps.setBytes(1, null);
+			ps.setBytes(2, "cbd2 not null but cbd1 is".getBytes());
+			ps.setBytes(3, null);
+			ps.setBytes(4, "vcbd2 not null but vcbd1 is".getBytes());
+			ps.setBytes(5, "lvcbd1 not null again".getBytes());
+			ps.setBytes(6, "lvcbd2 not null again".getBytes());
+			ps.setBytes(7, "blob1 not null again".getBytes());
+			ps.setBytes(8, "blob2 not null again".getBytes());
+			ps.executeUpdate();
+			ps.setBytes(1, null);
+			ps.setBytes(2, null);
+			ps.setBytes(3, null);
+			ps.setBytes(4, null);
+			ps.setBytes(5, null);
+			ps.setBytes(6, null);
+			ps.setBytes(7, null);
+			ps.setBytes(8, null);
+			ps.executeUpdate();
+
+			System.out.println("TestC - Focus on CHAR FOR BIT DATA as atleast one of the operands");
+			System.out.println("TestC1a - 2 CHAR FOR BIT DATA operands coalesce(cbd1,cbd2) with cbd1(254) and cbd2(40)");
+			dumpRS(s.executeQuery("select coalesce(cbd1,cbd2) from tC"));
+
+			System.out.println("TestC1b - 2 CHAR FOR BIT DATA operands value(cbd1,cbd2) with cbd1(254) and cbd2(40)");
+			dumpRS(s.executeQuery("select value(cbd1,cbd2) from tC"));
+
+			System.out.println("TestC2a - 2 CHAR FOR BIT DATA operands coalesce(cbd2,cbd1) with cbd2(40) and cbd1(254)");
+			dumpRS(s.executeQuery("select coalesce(cbd2,cbd1) from tC"));
+
+			System.out.println("TestC2b - 2 CHAR FOR BIT DATA operands value(cbd2,cbd1) with cbd2(40) and cbd1(254)");
+			dumpRS(s.executeQuery("select value(cbd2,cbd1) from tC"));
+
+			System.out.println("TestC3a - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands coalesce(cbd1,vcbd1) with cbd1(254) and vcbd1(253)");
+			dumpRS(s.executeQuery("select coalesce(cbd1,vcbd1) from tC"));
+
+			System.out.println("TestC3b - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands value(cbd1,vcbd1) with cbd1(254) and vcbd1(253)");
+			dumpRS(s.executeQuery("select value(cbd1,vcbd1) from tC"));
+
+			System.out.println("TestC4a - VARCHAR FOR BIT DATA and CHAR FOR BIT DATA operands coalesce(vcbd1,cbd1) with vcbd1(253) and cbd1(254)");
+			dumpRS(s.executeQuery("select coalesce(vcbd1,cbd1) from tC"));
+
+			System.out.println("TestC4b - VARCHAR FOR BIT DATA AND CHAR FOR BIT DATA operands value(vcbd1,cbd1) with vcbd1(253) and cbd1(254)");
+			dumpRS(s.executeQuery("select value(vcbd1,cbd1) from tC"));
+
+			System.out.println("TestC - Focus on VARCHAR FOR BIT DATA as atleast one of the operands");
+			System.out.println("TestC5a - 2 VARCHAR FOR BIT DATA operands coalesce(vcbd1,vcbd2) with vcbd1(253) and vcbd2(2000)");
+			dumpRS(s.executeQuery("select coalesce(vcbd1,vcbd2) from tC"));
+
+			System.out.println("TestC5b - 2 VARCHAR FOR BIT DATA operands value(vcbd1,vcbd2) with vcbd1(253) and vcbd2(2000)");
+			dumpRS(s.executeQuery("select value(vcbd1,vcbd2) from tC"));
+
+			System.out.println("TestC6a - 2 VARCHAR FOR BIT DATA operands coalesce(vcbd2,vcbd1) with vcbd2(2000) and vcbd1(253)");
+			dumpRS(s.executeQuery("select coalesce(vcbd2,vcbd1) from tC"));
+
+			System.out.println("TestC6b - 2 VARCHAR FOR BIT DATA operands value(vcbd2,vcbd1) with vcbd2(2000) and vcbd1(253)");
+			dumpRS(s.executeQuery("select value(vcbd2,vcbd1) from tC"));
+
+			System.out.println("TestC - Focus on LONG VARCHAR FOR BIT DATA as atleast one of the operands");
+			System.out.println("TestC7a - CHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands coalesce(cbd1,lvcbd1) with cbd1(254)");
+			dumpRS(s.executeQuery("select coalesce(cbd1,lvcbd1) from tC"));
+
+			System.out.println("TestC7b - CHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands value(cbd1,lvcbd1) with cbd1(254)");
+			dumpRS(s.executeQuery("select value(cbd1,lvcbd1) from tC"));
+
+			System.out.println("TestC8a - LONG VARCHAR FOR BIT DATA and CHAR FOR BIT DATA operands coalesce(lvcbd1,cbd1) with cbd1(254)");
+			dumpRS(s.executeQuery("select coalesce(lvcbd1,cbd1) from tC"));
+
+			System.out.println("TestC8b - LONG VARCHAR FOR BIT DATA and CHAR FOR BIT DATA operands value(lvcbd1,cbd1) with cbd1(254)");
+			dumpRS(s.executeQuery("select value(lvcbd1,cbd1) from tC"));
+
+			System.out.println("TestC9a - VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands coalesce(vcbd1,lvcbd1) with vcbd1(253)");
+			dumpRS(s.executeQuery("select coalesce(vcbd1,lvcbd1) from tC"));
+
+			System.out.println("TestC9b - VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands value(vcbd1,lvcbd1) with vcbd1(253)");
+			dumpRS(s.executeQuery("select value(vcbd1,lvcbd1) from tC"));
+
+			System.out.println("TestC10a - LONG VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands coalesce(lvcbd1,vcbd1) with vcbd1(253)");
+			dumpRS(s.executeQuery("select coalesce(lvcbd1,vcbd1) from tC"));
+
+			System.out.println("TestC10b - LONG VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA operands value(lvcbd1,vcbd1) with vcbd1(253)");
+			dumpRS(s.executeQuery("select value(lvcbd1,vcbd1) from tC"));
+
+			System.out.println("TestC11a - LONG VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands coalesce(lvcbd1,lvcbd2)");
+			dumpRS(s.executeQuery("select coalesce(lvcbd1,lvcbd2) from tC"));
+
+			System.out.println("TestC11b - LONG VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA operands value(lvcbd1,lvcbd2)");
+			dumpRS(s.executeQuery("select value(lvcbd1,lvcbd2) from tC"));
+
+			System.out.println("TestC - Focus on BLOB as atleast one of the operands");
+			try {
+				System.out.println("TestC12a - BLOB and CHAR FOR BIT DATA in coalesce(blob1,cbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select coalesce(blob1,cbd1) from tC"));
+				System.out.println("TestC12a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC12b - BLOB and CHAR FOR BIT DATA in value(blob1,cbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select value(blob1,cbd1) from tC"));
+				System.out.println("TestC12b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC13a - CHAR FOR BIT DATA and BLOB operands coalesce(cbd1,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select coalesce(cbd1,blob2) from tC"));
+				System.out.println("TestC13a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC13b - CHAR FOR BIT DATA and BLOB operands value(cbd1,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select value(cbd1,blob2) from tC"));
+				System.out.println("TestC13b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC14a - BLOB and VARCHAR FOR BIT DATA operands coalesce(blob1,vcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select coalesce(blob1,vcbd1) from tC"));
+				System.out.println("TestC14a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC14b - BLOB and VARCHAR FOR BIT DATA operands value(blob1,vcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select value(blob1,vcbd1) from tC"));
+				System.out.println("TestC14b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC15a - VARCHAR FOR BIT DATA and BLOB operands coalesce(vcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select coalesce(vcbd2,blob2) from tC"));
+				System.out.println("TestC15a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC15b - VARCHAR FOR BIT DATA and BLOB operands value(vcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select value(vcbd2,blob2) from tC"));
+				System.out.println("TestC15b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC16a - BLOB and LONG VARCHAR FOR BIT DATA operands coalesce(blob1,lvcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select coalesce(blob1,lvcbd1) from tC"));
+				System.out.println("TestC16a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC16b - BLOB and LONG VARCHAR FOR BIT DATA operands coalesce(blob1,lvcbd1) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select value(blob1,lvcbd1) from tC"));
+				System.out.println("TestC16b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC17a - LONG VARCHAR FOR BIT DATA and BLOB operands coalesce(lvcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select coalesce(lvcbd2,blob2) from tC"));
+				System.out.println("TestC17a - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try {
+				System.out.println("TestC17b - LONG VARCHAR FOR BIT DATA and BLOB operands value(lvcbd2,blob2) will fail because BLOB is not compatible with FOR BIT DATA datatypes");
+				dumpRS(s.executeQuery("select value(lvcbd2,blob2) from tC"));
+				System.out.println("TestC17b - should have failed");
+			} catch (SQLException e) {
+				if (e.getSQLState().equals("42815"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("TestC18a - BLOB and BLOB operands coalesce(blob1,blob2) with blob1(200) and blob2(33K).");
+			dumpRS(s.executeQuery("select coalesce(blob1,blob2) from tC"));
+
+			System.out.println("TestC18b - BLOB and BLOB operands value(blob1,blob2) with blob1(200) and blob2(33K).");
+			dumpRS(s.executeQuery("select value(blob1,blob2) from tC"));
+
+			s.executeUpdate("drop table tC");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}    
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception: " + se.toString());
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se = se.getNextException();
+		}
+	}
+
+	// lifted from the metadata test
+	public static void dumpRS(ResultSet s) throws SQLException
+	{
+		if (s == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		ResultSetMetaData rsmd = s.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		if (numCols <= 0)
+		{
+			System.out.println("(no columns!)");
+			return;
+		}
+
+		StringBuffer heading = new StringBuffer("\t ");
+		StringBuffer underline = new StringBuffer("\t ");
+
+		int len;
+		// Display column headings
+		for (int i=1; i<=numCols; i++)
+		{
+			if (i > 1)
+			{
+				heading.append(",");
+				underline.append(" ");
+			}
+			len = heading.length();
+			heading.append("COL"+i);
+			heading.append("(datatype : " + rsmd.getColumnTypeName(i));
+			heading.append(", precision : " + rsmd.getPrecision(i));
+			heading.append(", scale : " + rsmd.getScale(i) + ")");
+			len = heading.length() - len;
+			for (int j = len; j > 0; j--)
+			{
+				underline.append("-");
+			}
+		}
+		System.out.println(heading.toString());
+		System.out.println(underline.toString());
+
+
+		StringBuffer row = new StringBuffer();
+		// Display data, fetching until end of the result set
+		while (s.next())
+		{
+			row.append("\t{");
+			// Loop through each column, getting the
+			// column data and displaying
+			for (int i=1; i<=numCols; i++)
+			{
+				if (i > 1) row.append(",");
+				try{
+				row.append(s.getString(i));
+				} catch(SQLException ex){
+					if (ex.getSQLState().equals("22005")) {
+						if (s.getBytes(i) != null)
+                row.append(new String(s.getBytes(i)));
+						else
+                row.append(s.getBytes(i));
+					} else throw ex;
+				}
+			}
+			row.append("}\n");
+		}
+		System.out.println(row.toString());
+		s.close();
+	}
+
+	// lifted from the metadata test
+	public static void dumpRSwithScale(ResultSet s) throws SQLException
+	{
+		if (s == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		ResultSetMetaData rsmd = s.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		if (numCols <= 0)
+		{
+			System.out.println("(no columns!)");
+			return;
+		}
+
+		StringBuffer heading = new StringBuffer("\t ");
+		StringBuffer underline = new StringBuffer("\t ");
+
+		int len;
+		// Display column headings
+		for (int i=1; i<=numCols; i++)
+		{
+			if (i > 1)
+			{
+				heading.append(",");
+				underline.append(" ");
+			}
+			len = heading.length();
+			heading.append("COL"+i);
+			heading.append("(datatype : " + rsmd.getColumnTypeName(i));
+			heading.append(", precision : " + rsmd.getPrecision(i));
+			heading.append(", scale : " + rsmd.getScale(i) + ")");
+			len = heading.length() - len;
+			for (int j = len; j > 0; j--)
+			{
+				underline.append("-");
+			}
+		}
+		System.out.println(heading.toString());
+		System.out.println(underline.toString());
+
+
+		StringBuffer row = new StringBuffer();
+		// Display data, fetching until end of the result set
+		while (s.next())
+		{
+			row.append("\t{");
+			// Loop through each column, getting the
+			// column data and displaying
+			for (int i=1; i<=numCols; i++)
+			{
+				if (i > 1) row.append(",");
+				row.append(s.getString(i));
+			}
+			row.append("}\n");
+		}
+		System.out.println(row.toString());
+		s.close();
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,112 @@
+-- tests for column defaults
+
+-- negative
+
+-- ? in default
+create table neg(c1 int default ?);
+
+-- column reference in default
+create table neg(c1 int, c2 int default c1);
+
+-- subquery in default
+create table neg(c1 int default (values 1));
+
+-- type incompatibility at compile time
+create table neg(c1 date default 1);
+
+-- type incompatibility at execution time
+-- bug 5585 - should fail at create table statement
+-- because the default value '1' is not valid
+create table neg(c1 int, c2 date default '1');
+insert into neg (c1) values 1;
+drop table neg;
+
+-- bug 5203 - built-in functions are not be allowed in a constantExpression
+-- because DB2 UDB returns SQLSTATE 42894
+CREATE FUNCTION ASDF (DATA DOUBLE) RETURNS DOUBLE EXTERNAL NAME 'java.lang.Math.sin' LANGUAGE JAVA PARAMETER STYLE JAVA;
+create table neg(c1 int default asdf(0));
+drop table neg;
+
+-- DEFAULT only valid in VALUES within an insert
+values default;
+values 1, default;
+
+-- alter table modify default
+create table neg(c1 date);
+alter table neg modify x default null;
+alter table neg add column x date default 1;
+-- bug 5585 - should fail at alter table statement
+-- because the default value '1' is not valid
+alter table neg add column x date default '1';
+insert into neg (c1) values default;
+drop table neg;
+
+-- too many values in values clause
+create table neg(c1 int default 10);
+insert into neg values (1, default);
+insert into neg values (default, 1);
+drop table neg;
+
+
+-- positive
+
+-- create tables
+create table t1(c1 int, c2 int with default 5, c3 date default current_date, c4 int);
+
+-- verify that defaults work
+insert into t1 (c1) values 1;
+insert into t1 (c4) values 4;
+select c1, c2, c4 from t1;
+select c1, c2, c4 from t1 where c3 = current_date;
+
+-- update
+-- default for column whose default is null
+update t1 set c1 = default;
+select c1, c2, c4 from t1 where c3 = current_date;
+-- default for column that has explicit default
+update t1 set c2 = 7;
+select c2 from t1;
+update t1 set c2 = default;
+select c2 from t1;
+
+-- insert default
+delete from t1;
+insert into t1 values (5, default, '1999-09-09', default);
+insert into t1 values (default, 6, default, 5);
+insert into t1 values (default, 6, default, 5), (7, default, '1997-07-07', 3);
+select c1, c2, c4 from t1 where c3 = current_date;
+select c1, c2, c4 from t1 where c3 <> current_date;
+delete from t1;
+insert into t1 (c1, c3, c4) values (5, '1999-09-09', default);
+insert into t1 (c1, c3, c4) values (default, default, 5);
+insert into t1 (c1, c3, c4) values (default, default, default);
+insert into t1 (c1, c3, c4) values (default, default, 5), (7, '1997-07-07', 3);
+select c1, c2, c4 from t1 where c3 = current_date;
+select c1, c2, c4 from t1 where c3 <> current_date;
+
+-- delimited identifiers
+-- this schema
+create table "x1" ("c1" int);
+insert into "x1" values 1;
+alter table "x1" add column "c2" char(1) default 'x';
+select * from "x1";
+
+-- another schema
+create schema "otherschema";
+create table "otherschema"."y1" ("c11" int);
+insert into "otherschema"."y1" values 2;
+alter table "otherschema"."y1" add column "c22" char(1) default 'y';
+select * from "otherschema"."y1";
+
+-- bug 3433
+create table t7(c1 int default 10);
+insert into t7 values (default);
+select * from t7;
+
+-- clean up
+drop function asdf;
+drop table t1;
+drop table t7;
+drop table "x1";
+drop table "otherschema"."y1";
+drop schema "otherschema" restrict;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+usedefaults=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,739 @@
+--
+-- this test shows the current supported comparison operators
+--
+
+-- first, do comparisons on the int type
+
+-- create a table with couple of int columns
+create table inttab (c1 int, c2 int);
+
+-- insert some values
+insert into inttab values (0, 0);
+insert into inttab values (null, 5);
+insert into inttab values (1, 1);
+insert into inttab values (2147483647, 2147483647);
+
+-- select each one in turn
+select c1 from inttab where c1 = 0;
+select c1 from inttab where c1 = 1;
+select c1 from inttab where c1 = 2147483647;
+
+-- now look for a value that isn't in the table
+select c1 from inttab where c1 = 2;
+
+-- now test null = null semantics
+select c1 from inttab where c1 = c1;
+
+-- test is null semantics
+select c1 from inttab where c1 is null;
+select c1 from inttab where c1 is not null;
+select c1 from inttab where not c1 is null;
+
+-- now test <>
+select c1 from inttab where c1 <> 0;
+select c1 from inttab where c1 <> 1;
+select c1 from inttab where c1 <> 2147483647;
+select c1 from inttab where c1 <> 2;
+select c1 from inttab where c1 <> c1;
+select c1 from inttab where c1 <> c2;
+
+-- now test !=
+select c1 from inttab where c1 != 0;
+select c1 from inttab where c1 != 1;
+select c1 from inttab where c1 != 2147483647;
+select c1 from inttab where c1 != 2;
+select c1 from inttab where c1 != c1;
+select c1 from inttab where c1 != c2;
+
+-- now test <
+select c1 from inttab where c1 < 0;
+select c1 from inttab where c1 < 1;
+select c1 from inttab where c1 < 2;
+select c1 from inttab where c1 < 2147483647;
+select c1 from inttab where c1 < c1;
+select c1 from inttab where c1 < c2;
+
+-- now test >
+select c1 from inttab where c1 > 0;
+select c1 from inttab where c1 > 1;
+select c1 from inttab where c1 > 2;
+select c1 from inttab where c1 > 2147483647;
+select c1 from inttab where c1 > c1;
+select c1 from inttab where c1 > c2;
+
+-- now test <=
+select c1 from inttab where c1 <= 0;
+select c1 from inttab where c1 <= 1;
+select c1 from inttab where c1 <= 2;
+select c1 from inttab where c1 <= 2147483647;
+select c1 from inttab where c1 <= c1;
+select c1 from inttab where c1 <= c2;
+
+-- now test >=
+select c1 from inttab where c1 >= 0;
+select c1 from inttab where c1 >= 1;
+select c1 from inttab where c1 >= 2;
+select c1 from inttab where c1 >= 2147483647;
+select c1 from inttab where c1 >= c1;
+select c1 from inttab where c1 >= c2;
+
+-- now test not
+select c1 from inttab where not (c1 = 0);
+select c1 from inttab where not (c1 <> 0);
+select c1 from inttab where not (c1 != 0);
+select c1 from inttab where not (c1 < 0);
+select c1 from inttab where not (c1 <= 0);
+select c1 from inttab where not (c1 > 0);
+select c1 from inttab where not (c1 >= 0);
+
+-- create a table with a couple of smallint columns.  All smallint vs. smallint
+-- comparisons must be done between columns, because there are no smallint
+-- constants in the language
+
+create table smallinttab (c1 smallint, c2 smallint);
+
+-- insert some values
+insert into smallinttab values (0, 0);
+insert into smallinttab values (null, null);
+insert into smallinttab values (1, 1);
+insert into smallinttab values (32767, 32767);
+insert into smallinttab values (0, 9);
+insert into smallinttab values (null, 8);
+insert into smallinttab values (1, 7);
+insert into smallinttab values (32767, 6);
+
+-- select the ones where the columns are equal
+select c1, c2 from smallinttab where c1 = c2;
+
+-- test smallint = int semantics
+select c1 from smallinttab where c1 = 0;
+select c1 from smallinttab where c1 = 1;
+select c1 from smallinttab where c1 = 32767;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 = 65537;
+
+-- test int = smallint semantics
+select c1 from smallinttab where 0 = c1;
+select c1 from smallinttab where 1 = c1;
+select c1 from smallinttab where 32767 = c1;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 = c1;
+
+-- Now test <>
+select c1, c2 from smallinttab where c1 <> c2;
+select c1, c2 from smallinttab where c1 != c2;
+
+-- test smallint <> int semantics
+select c1 from smallinttab where c1 <> 0;
+select c1 from smallinttab where c1 <> 1;
+select c1 from smallinttab where c1 <> 32767;
+
+select c1 from smallinttab where c1 != 0;
+select c1 from smallinttab where c1 != 1;
+select c1 from smallinttab where c1 != 32767;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 <> 65537;
+select c1 from smallinttab where c1 != 65537;
+
+-- test int = smallint semantics
+select c1 from smallinttab where 0 <> c1;
+select c1 from smallinttab where 1 <> c1;
+select c1 from smallinttab where 32767 <> c1;
+
+select c1 from smallinttab where 0 != c1;
+select c1 from smallinttab where 1 != c1;
+select c1 from smallinttab where 32767 != c1;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 <> c1;
+select c1 from smallinttab where 65537 != c1;
+
+-- Now test <
+select c1, c2 from smallinttab where c1 < c2;
+
+-- test smallint < int semantics
+select c1 from smallinttab where c1 < 0;
+select c1 from smallinttab where c1 < 1;
+select c1 from smallinttab where c1 < 32767;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 < 65537;
+
+-- test int < smallint semantics
+select c1 from smallinttab where 0 < c1;
+select c1 from smallinttab where 1 < c1;
+select c1 from smallinttab where 32767 < c1;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 < c1;
+
+-- Now test >
+select c1, c2 from smallinttab where c1 > c2;
+
+-- test smallint > int semantics
+select c1 from smallinttab where c1 > 0;
+select c1 from smallinttab where c1 > 1;
+select c1 from smallinttab where c1 > 32767;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 > 65537;
+
+-- test int > smallint semantics
+select c1 from smallinttab where 0 > c1;
+select c1 from smallinttab where 1 > c1;
+select c1 from smallinttab where 32767 > c1;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 > c1;
+
+-- Now test <=
+select c1, c2 from smallinttab where c1 <= c2;
+
+-- test smallint <= int semantics
+select c1 from smallinttab where c1 <= 0;
+select c1 from smallinttab where c1 <= 1;
+select c1 from smallinttab where c1 <= 32767;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 <= 65537;
+
+-- test int <= smallint semantics
+select c1 from smallinttab where 0 <= c1;
+select c1 from smallinttab where 1 <= c1;
+select c1 from smallinttab where 32767 <= c1;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 <= c1;
+
+-- Now test >=
+select c1, c2 from smallinttab where c1 >= c2;
+
+-- test smallint >= int semantics
+select c1 from smallinttab where c1 >= 0;
+select c1 from smallinttab where c1 >= 1;
+select c1 from smallinttab where c1 >= 32767;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where c1 >= 65537;
+
+-- test int >= smallint semantics
+select c1 from smallinttab where 0 >= c1;
+select c1 from smallinttab where 1 >= c1;
+select c1 from smallinttab where 32767 >= c1;
+
+-- test is null semantics
+select c1 from smallinttab where c1 is null;
+select c1 from smallinttab where c1 is not null;
+select c1 from smallinttab where not c1 is null;
+
+-- test that the smallint gets promoted to int, and not vice versa.  65537
+-- when converted to short becomes 1
+select c1 from smallinttab where 65537 >= c1;
+
+
+-- create a table with a couple of bigint columns.  
+
+create table biginttab (c1 bigint, c2 bigint, c3 int, c4 smallint);
+
+-- insert some values
+insert into biginttab values (0, 0, 0, 0 );
+insert into biginttab values (null, null, null, null);
+insert into biginttab values (9223372036854775807, 
+							   9223372036854775807,
+							   2147483647,
+							   32767);
+insert into biginttab values (-9223372036854775808, 
+							   -9223372036854775808,
+							   -2147483648,
+							   -32768);
+
+-- select the ones where the columns are equal
+select c1, c2 from biginttab where c1 = c2;
+
+-- test bigint = int semantics
+select c1 from biginttab where c1 = 0;
+select c1 from biginttab where c1 = c3;
+
+-- test int = bigint semantics
+select c1 from biginttab where 0 = c1;
+select c1 from biginttab where c3 = c1;
+
+-- test bigint = smallint semantics
+select c1 from biginttab where c1 = c4;
+
+-- test smallint = bigint semantics
+select c1 from biginttab where c4 = c1;
+
+-- Now test <>
+select c1, c2 from biginttab where c1 <> c2;
+
+-- test bigint <> int semantics
+select c1 from biginttab where c1 <> 0;
+select c1 from biginttab where c1 <> c3;
+
+-- test int <> bigint semantics
+select c1 from biginttab where 0 <> c1;
+select c1 from biginttab where c3 <> c1;
+
+-- test bigint <> smallint semantics
+select c1 from biginttab where c1 <> c4;
+
+-- test smallint <> bigint semantics
+select c1 from biginttab where c4 <> c1;
+
+
+-- Now test <
+select c1, c2 from biginttab where c1 < c2;
+
+-- test bigint < int semantics
+select c1 from biginttab where c1 < 0;
+select c1 from biginttab where c1 < c3;
+
+-- test int < bigint semantics
+select c1 from biginttab where 0 < c1;
+select c1 from biginttab where c3 < c1;
+
+-- test bigint < smallint semantics
+select c1 from biginttab where c1 < c4;
+
+-- test smallint < bigint semantics
+select c1 from biginttab where c4 < c1;
+
+-- Now test >
+select c1, c2 from biginttab where c1 > c2;
+
+-- test bigint > int semantics
+select c1 from biginttab where c1 > 0;
+select c1 from biginttab where c1 > c3;
+
+-- test int > bigint semantics
+select c1 from biginttab where 0 > c1;
+select c1 from biginttab where c3 > c1;
+
+-- test bigint > smallint semantics
+select c1 from biginttab where c1 > c4;
+
+-- test smallint > bigint semantics
+select c1 from biginttab where c4 > c1;
+
+-- Now test <=
+select c1, c2 from biginttab where c1 <= c2;
+
+-- test bigint <= int semantics
+select c1 from biginttab where c1 <= 0;
+select c1 from biginttab where c1 <= c3;
+
+-- test int <= bigint semantics
+select c1 from biginttab where 0 <= c1;
+select c1 from biginttab where c3 <= c1;
+
+-- test bigint <= smallint semantics
+select c1 from biginttab where c1 <= c4;
+
+-- test smallint <= bigint semantics
+select c1 from biginttab where c4 <= c1;
+
+-- Now test >=
+select c1, c2 from biginttab where c1 >= c2;
+
+-- test bigint >= int semantics
+select c1 from biginttab where c1 >= 0;
+select c1 from biginttab where c1 >= c3;
+
+-- test int >= bigint semantics
+select c1 from biginttab where 0 >= c1;
+select c1 from biginttab where c3 >= c1;
+
+-- test bigint >= smallint semantics
+select c1 from biginttab where c1 >= c4;
+
+-- test smallint >= bigint semantics
+select c1 from biginttab where c4 >= c1;
+
+-- test is null semantics
+select c1 from biginttab where c1 is null;
+select c1 from biginttab where c1 is not null;
+select c1 from biginttab where not c1 is null;
+
+-- create a table with char columns of different lengths
+
+create table chartab (c1 char(1), c2 char(5));
+
+-- insert some values
+
+insert into chartab values (' ', '     ');
+insert into chartab values ('a', 'a    ');
+insert into chartab values ('b', 'bcdef');
+insert into chartab values (null, null);
+
+-- select each one in turn
+select c1 from chartab where c1 = ' ';
+select c2 from chartab where c2 = '     ';
+select c1 from chartab where c1 = 'a';
+select c2 from chartab where c2 = 'a    ';
+select c1 from chartab where c1 = 'b';
+select c2 from chartab where c2 = 'bcdef';
+
+-- now check for end-of-string blank semantics
+select c1 from chartab where c1 = '';
+select c1 from chartab where c1 = '                      ';
+select c2 from chartab where c2 = '';
+select c2 from chartab where c2 = ' ';
+select c2 from chartab where c2 = '                           ';
+select c1 from chartab where c1 = 'a        ';
+select c2 from chartab where c2 = 'a ';
+select c1 from chartab where c1 = 'b             ';
+select c2 from chartab where c2 = 'bcdef                ';
+select c2 from chartab where c2 = 'bcde       ';
+
+-- now check null = null semantics
+select c1, c2 from chartab where c1 = c2;
+
+-- test is null semantics
+select c1 from chartab where c1 is null;
+select c1 from chartab where c1 is not null;
+select c1 from chartab where not c1 is null;
+
+-- Now test <>
+select c1 from chartab where c1 <> ' ';
+select c2 from chartab where c2 <> '     ';
+select c1 from chartab where c1 <> 'a';
+select c2 from chartab where c2 <> 'a    ';
+select c1 from chartab where c1 <> 'b';
+select c2 from chartab where c2 <> 'bcdef';
+
+select c1 from chartab where c1 != ' ';
+select c2 from chartab where c2 != '     ';
+select c1 from chartab where c1 != 'a';
+select c2 from chartab where c2 != 'a    ';
+select c1 from chartab where c1 != 'b';
+select c2 from chartab where c2 != 'bcdef';
+
+-- now check for end-of-string blank semantics
+select c1 from chartab where c1 <> '';
+select c1 from chartab where c1 <> '                      ';
+select c2 from chartab where c2 <> '';
+select c2 from chartab where c2 <> ' ';
+select c2 from chartab where c2 <> '                           ';
+select c1 from chartab where c1 <> 'a        ';
+select c2 from chartab where c2 <> 'a ';
+select c1 from chartab where c1 <> 'b             ';
+select c2 from chartab where c2 <> 'bcdef                ';
+select c2 from chartab where c2 <> 'bcde       ';
+
+-- now check null <> null semantics
+select c1, c2 from chartab where c1 <> c2;
+
+-- Now test <
+select c1 from chartab where c1 < ' ';
+select c2 from chartab where c2 < '     ';
+select c1 from chartab where c1 < 'a';
+select c2 from chartab where c2 < 'a    ';
+select c1 from chartab where c1 < 'b';
+select c2 from chartab where c2 < 'bcdef';
+
+-- now check for end-of-string blank semantics
+select c1 from chartab where c1 < '';
+select c1 from chartab where c1 < '                      ';
+select c2 from chartab where c2 < '';
+select c2 from chartab where c2 < ' ';
+select c2 from chartab where c2 < '                           ';
+select c1 from chartab where c1 < 'a        ';
+select c2 from chartab where c2 < 'a ';
+select c1 from chartab where c1 < 'b             ';
+select c2 from chartab where c2 < 'bcdef                ';
+select c2 from chartab where c2 < 'bcde       ';
+
+-- now check null < null semantics
+select c1, c2 from chartab where c1 < c2;
+
+-- Now test >
+select c1 from chartab where c1 > ' ';
+select c2 from chartab where c2 > '     ';
+select c1 from chartab where c1 > 'a';
+select c2 from chartab where c2 > 'a    ';
+select c1 from chartab where c1 > 'b';
+select c2 from chartab where c2 > 'bcdef';
+
+-- now check for end-of-string blank semantics
+select c1 from chartab where c1 > '';
+select c1 from chartab where c1 > '                      ';
+select c2 from chartab where c2 > '';
+select c2 from chartab where c2 > ' ';
+select c2 from chartab where c2 > '                           ';
+select c1 from chartab where c1 > 'a        ';
+select c2 from chartab where c2 > 'a ';
+select c1 from chartab where c1 > 'b             ';
+select c2 from chartab where c2 > 'bcdef                ';
+select c2 from chartab where c2 > 'bcde       ';
+
+-- now check null > null semantics
+select c1, c2 from chartab where c1 > c2;
+
+-- Now test <=
+select c1 from chartab where c1 <= ' ';
+select c2 from chartab where c2 <= '     ';
+select c1 from chartab where c1 <= 'a';
+select c2 from chartab where c2 <= 'a    ';
+select c1 from chartab where c1 <= 'b';
+select c2 from chartab where c2 <= 'bcdef';
+
+-- now check for end-of-string blank semantics
+select c1 from chartab where c1 <= '';
+select c1 from chartab where c1 <= '                      ';
+select c2 from chartab where c2 <= '';
+select c2 from chartab where c2 <= ' ';
+select c2 from chartab where c2 <= '                           ';
+select c1 from chartab where c1 <= 'a        ';
+select c2 from chartab where c2 <= 'a ';
+select c1 from chartab where c1 <= 'b             ';
+select c2 from chartab where c2 <= 'bcdef                ';
+select c2 from chartab where c2 <= 'bcde       ';
+
+-- now check null <= null semantics
+select c1, c2 from chartab where c1 <= c2;
+
+-- Now test >=
+select c1 from chartab where c1 >= ' ';
+select c2 from chartab where c2 >= '     ';
+select c1 from chartab where c1 >= 'a';
+select c2 from chartab where c2 >= 'a    ';
+select c1 from chartab where c1 >= 'b';
+select c2 from chartab where c2 >= 'bcdef';
+
+-- now check for end-of-string blank semantics
+select c1 from chartab where c1 >= '';
+select c1 from chartab where c1 >= '                      ';
+select c2 from chartab where c2 >= '';
+select c2 from chartab where c2 >= ' ';
+select c2 from chartab where c2 >= '                           ';
+select c1 from chartab where c1 >= 'a        ';
+select c2 from chartab where c2 >= 'a ';
+select c1 from chartab where c1 >= 'b             ';
+select c2 from chartab where c2 >= 'bcdef                ';
+select c2 from chartab where c2 >= 'bcde       ';
+
+-- now check null >= null semantics
+select c1, c2 from chartab where c1 >= c2;
+
+-- create a table with a few varchar columns.  All varchar vs. varchar
+-- comparisons must be done between columns, because there are no varchar
+-- constants in the language
+
+create table varchartab (c1 varchar(1), c2 varchar(1), c3 varchar(5),
+			 c4 varchar(5));
+
+-- insert some values
+
+insert into varchartab values ('', '', '', '');
+insert into varchartab values ('a', 'a', 'a', 'a');
+insert into varchartab values ('b', 'b', 'bcdef', 'bcdef');
+insert into varchartab values (null, null, null, null);
+insert into varchartab values ('', null, '', null);
+insert into varchartab values ('a', 'b', 'a', 'b');
+insert into varchartab values ('b', '', 'b', 'bcdef');
+
+-- select the ones where the columns are equal
+select c1 from varchartab where c1 = c2;
+select c3 from varchartab where c3 = c4;
+
+-- test varchar = char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 = '                 ';
+select c1 from varchartab where c1 = '';
+select c1 from varchartab where c1 = 'a ';
+select c1 from varchartab where c1 = 'b                               ';
+select c1 from varchartab where c1 = 'bb';
+select c3 from varchartab where c3 = ' ';
+select c3 from varchartab where c3 = '';
+select c3 from varchartab where c3 = 'a    ';
+select c3 from varchartab where c3 = 'bcdef                   ';
+select c3 from varchartab where c3 = 'bbbb';
+
+-- test char = varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' = c1;
+select c1 from varchartab where '' = c1;
+select c1 from varchartab where 'a ' = c1;
+select c1 from varchartab where 'b                               ' = c1;
+select c1 from varchartab where 'bb' = c1;
+select c3 from varchartab where ' ' = c3;
+select c3 from varchartab where '' = c3;
+select c3 from varchartab where 'a    ' = c3;
+select c3 from varchartab where 'bcdef                   ' = c3;
+select c3 from varchartab where 'bbbb' = c3;
+
+-- Now test <>
+select c1 from varchartab where c1 <> c2;
+select c3 from varchartab where c3 <> c4;
+
+-- test varchar <> char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 <> '                 ';
+select c1 from varchartab where c1 <> '';
+select c1 from varchartab where c1 <> 'a ';
+select c1 from varchartab where c1 <> 'b                               ';
+select c1 from varchartab where c1 <> 'bb';
+select c3 from varchartab where c3 <> ' ';
+select c3 from varchartab where c3 <> '';
+select c3 from varchartab where c3 <> 'a    ';
+select c3 from varchartab where c3 <> 'bcdef                   ';
+select c3 from varchartab where c3 <> 'bbbb';
+
+select c1 from varchartab where c1 != '                 ';
+select c1 from varchartab where c1 != '';
+select c1 from varchartab where c1 != 'a ';
+select c1 from varchartab where c1 != 'b                               ';
+select c1 from varchartab where c1 != 'bb';
+select c3 from varchartab where c3 != ' ';
+select c3 from varchartab where c3 != '';
+select c3 from varchartab where c3 != 'a    ';
+select c3 from varchartab where c3 != 'bcdef                   ';
+select c3 from varchartab where c3 != 'bbbb';
+
+-- test char <> varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' <> c1;
+select c1 from varchartab where '' <> c1;
+select c1 from varchartab where 'a ' <> c1;
+select c1 from varchartab where 'b                               ' <> c1;
+select c1 from varchartab where 'bb' <> c1;
+select c3 from varchartab where ' ' <> c3;
+select c3 from varchartab where '' <> c3;
+select c3 from varchartab where 'a    ' <> c3;
+select c3 from varchartab where 'bcdef                   ' <> c3;
+select c3 from varchartab where 'bbbb' <> c3;
+
+-- Now test <
+select c1 from varchartab where c1 < c2;
+select c3 from varchartab where c3 < c4;
+
+-- test varchar < char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 < '                 ';
+select c1 from varchartab where c1 < '';
+select c1 from varchartab where c1 < 'a ';
+select c1 from varchartab where c1 < 'b                               ';
+select c1 from varchartab where c1 < 'bb';
+select c3 from varchartab where c3 < ' ';
+select c3 from varchartab where c3 < '';
+select c3 from varchartab where c3 < 'a    ';
+select c3 from varchartab where c3 < 'bcdef                   ';
+select c3 from varchartab where c3 < 'bbbb';
+
+-- test char < varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' < c1;
+select c1 from varchartab where '' < c1;
+select c1 from varchartab where 'a ' < c1;
+select c1 from varchartab where 'b                               ' < c1;
+select c1 from varchartab where 'bb' < c1;
+select c3 from varchartab where ' ' < c3;
+select c3 from varchartab where '' < c3;
+select c3 from varchartab where 'a    ' < c3;
+select c3 from varchartab where 'bcdef                   ' < c3;
+select c3 from varchartab where 'bbbb' < c3;
+
+-- Now test >
+select c1 from varchartab where c1 > c2;
+select c3 from varchartab where c3 > c4;
+
+-- test varchar > char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 > '                 ';
+select c1 from varchartab where c1 > '';
+select c1 from varchartab where c1 > 'a ';
+select c1 from varchartab where c1 > 'b                               ';
+select c1 from varchartab where c1 > 'bb';
+select c3 from varchartab where c3 > ' ';
+select c3 from varchartab where c3 > '';
+select c3 from varchartab where c3 > 'a    ';
+select c3 from varchartab where c3 > 'bcdef                   ';
+select c3 from varchartab where c3 > 'bbbb';
+
+-- test char > varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' > c1;
+select c1 from varchartab where '' > c1;
+select c1 from varchartab where 'a ' > c1;
+select c1 from varchartab where 'b                               ' > c1;
+select c1 from varchartab where 'bb' > c1;
+select c3 from varchartab where ' ' > c3;
+select c3 from varchartab where '' > c3;
+select c3 from varchartab where 'a    ' > c3;
+select c3 from varchartab where 'bcdef                   ' > c3;
+select c3 from varchartab where 'bbbb' > c3;
+
+-- Now test <=
+select c1 from varchartab where c1 <= c2;
+select c3 from varchartab where c3 <= c4;
+
+-- test varchar <= char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 <= '                 ';
+select c1 from varchartab where c1 <= '';
+select c1 from varchartab where c1 <= 'a ';
+select c1 from varchartab where c1 <= 'b                               ';
+select c1 from varchartab where c1 <= 'bb';
+select c3 from varchartab where c3 <= ' ';
+select c3 from varchartab where c3 <= '';
+select c3 from varchartab where c3 <= 'a    ';
+select c3 from varchartab where c3 <= 'bcdef                   ';
+select c3 from varchartab where c3 <= 'bbbb';
+
+-- test char <= varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' <= c1;
+select c1 from varchartab where '' <= c1;
+select c1 from varchartab where 'a ' <= c1;
+select c1 from varchartab where 'b                               ' <= c1;
+select c1 from varchartab where 'bb' <= c1;
+select c3 from varchartab where ' ' <= c3;
+select c3 from varchartab where '' <= c3;
+select c3 from varchartab where 'a    ' <= c3;
+select c3 from varchartab where 'bcdef                   ' <= c3;
+select c3 from varchartab where 'bbbb' <= c3;
+
+-- Now test >=
+select c1 from varchartab where c1 >= c2;
+select c3 from varchartab where c3 >= c4;
+
+-- test varchar >= char semantics.  Test with trailing blanks.
+select c1 from varchartab where c1 >= '                 ';
+select c1 from varchartab where c1 >= '';
+select c1 from varchartab where c1 >= 'a ';
+select c1 from varchartab where c1 >= 'b                               ';
+select c1 from varchartab where c1 >= 'bb';
+select c3 from varchartab where c3 >= ' ';
+select c3 from varchartab where c3 >= '';
+select c3 from varchartab where c3 >= 'a    ';
+select c3 from varchartab where c3 >= 'bcdef                   ';
+select c3 from varchartab where c3 >= 'bbbb';
+
+-- test char >= varchar semantics.  Test with trailing blanks.
+select c1 from varchartab where '                 ' >= c1;
+select c1 from varchartab where '' >= c1;
+select c1 from varchartab where 'a ' >= c1;
+select c1 from varchartab where 'b                               ' >= c1;
+select c1 from varchartab where 'bb' >= c1;
+select c3 from varchartab where ' ' >= c3;
+select c3 from varchartab where '' >= c3;
+select c3 from varchartab where 'a    ' >= c3;
+select c3 from varchartab where 'bcdef                   ' >= c3;
+select c3 from varchartab where 'bbbb' >= c3;
+
+-- test is null semantics
+select c1 from varchartab where c1 is null;
+select c1 from varchartab where c1 is not null;
+select c1 from varchartab where not c1 is null;
+
+-- clean up
+drop table inttab;
+drop table smallinttab;
+drop table biginttab;
+drop table chartab;
+drop table varchartab;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/comparisons_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+#
+# only copied this from default_app.properties to specify no run with j9
+# for this test runs into a jvm crash especially when run in sps mode. see beetle 4874.
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,454 @@
+-- tests for system procedure SYSCS_COMPRESS_TABLE
+-- that reclaims disk space to the OS
+
+run resource 'createTestProcedures.subsql';
+maximumdisplaywidth 512;
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+
+-- create tables
+create table noindexes(c1 int, c2 char(30), c3 decimal(5,2));
+create table indexes(c1 int, c2 char(30), c3 decimal(5,2));
+create index i_c1 on indexes(c1);
+create index i_c2 on indexes(c2);
+create index i_c3 on indexes(c3);
+create index i_c3c1 on indexes(c3, c1);
+create index i_c2c1 on indexes(c2, c1);
+
+create table oldconglom(o_cnum bigint, o_cname long varchar);
+create table newconglom(n_cnum bigint, n_cname long varchar);
+
+create view v_noindexes as select * from noindexes;
+
+autocommit off;
+
+-- test with heap only
+-- test with empty table
+insert into oldconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'NOINDEXES' and t.tableid = c.tableid;
+select count(*) from oldconglom;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+insert into newconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'NOINDEXES' and t.tableid = c.tableid;
+select * from oldconglom, newconglom where o_cnum = n_cnum;
+select count(*) from newconglom;
+select * from noindexes;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- test with various sizes as we use bulk fetch
+insert into noindexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+select * from noindexes;
+insert into noindexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+select * from noindexes;
+insert into noindexes values (17, '17', 17.17), (18, '18', 18.18);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 0);
+select * from noindexes;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- test with some indexes
+-- test with empty table
+insert into oldconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'INDEXES' and t.tableid = c.tableid;
+select count(*) from oldconglom;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+insert into newconglom
+select conglomeratenumber, conglomeratename 
+from sys.systables t, sys.sysconglomerates c
+where t.tablename = 'INDEXES' and t.tableid = c.tableid;
+select * from oldconglom, newconglom where o_cnum = n_cnum;
+select count(*) from newconglom;
+select * from indexes;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- test with various sizes as we use bulk fetch
+insert into indexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+select * from indexes;
+insert into indexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+select * from indexes;
+insert into indexes values (17, '17', 17.17), (18, '18', 18.18);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 0);
+select * from indexes;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- primary/foreign keys
+create table p (c1 char(1), y int not null, c2 char(1) not null, x int not null, constraint pk primary key(x,y));
+create table f (x int, t int, y int, constraint fk foreign key (x,y) references p);
+insert into p values ('1', 1, '1', 1);
+insert into f values (1, 1, 1), (1, 1, null);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'P', 0);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'F', 0);
+insert into f values (1, 1, 1);
+insert into f values (2, 2, 2);
+insert into p values ('2', 2, '2', 2);
+insert into f values (2, 2, 2);
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- self referencing table
+create table pf (x int not null constraint p primary key, y int constraint f references pf);
+insert into pf values (1,1), (2, 2);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'PF', 0);
+insert into pf values (3,1), (4, 2);
+insert into pf values (3,1);
+insert into pf values (5,6);
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- multiple indexes on same column
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+create table t (i int, s varchar(1500));
+create index t_s on t(s);
+create index t_si on t(s, i);
+insert into t values (1, '1'), (2, '2');
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T', 0);
+select * from t;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- verify statements get re-prepared
+create table t(c1 int, c2 int);
+insert into t values (1, 2), (3, 4), (5, 6);
+prepare p1 as 'select * from t where c2 = 4';
+execute p1;
+prepare s as 'select * from t where c2 = 6';
+execute s;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T', 0);
+execute p1;
+execute s;
+remove p1;
+remove s;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+rollback;
+
+-- verify that space getting reclaimed
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+create table t(c1 int, c2 varchar(1500));
+insert into t values (1,PADSTRING('1', 1500)), (2,PADSTRING('2', 1500)), (3,PADSTRING('3', 1500)), (4, PADSTRING('4', 1500)),
+	(5, PADSTRING('5', 1500)), (6, PADSTRING('6', 1500)), (7, PADSTRING('7', 1500)), (8, PADSTRING('8', 1500));
+create table oldinfo (cname varchar(128), nap bigint);
+insert into oldinfo select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('T') t;
+delete from t where c1 in (1, 3, 5, 7);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T', 0);
+create table newinfo (cname varchar(128), nap bigint);
+insert into newinfo select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('T') t;
+-- verify space reclaimed, this query should return 'compressed!'
+-- if nothing is returned from this query, then the table was not compressed
+select 'compressed!' from oldinfo o, newinfo n where o.cname = n.cname and o.nap > n.nap;
+rollback;
+
+-- sequential
+-- no indexes
+-- empty table
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+select * from v_noindexes;
+-- full table
+insert into noindexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+select * from v_noindexes;
+insert into noindexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+select * from v_noindexes;
+insert into noindexes values (17, '17', 17.17), (18, '18', 18.18);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'NOINDEXES', 1);
+select * from v_noindexes;
+rollback;
+
+-- 1 index
+drop index i_c2;
+drop index i_c3;
+drop index i_c2c1;
+drop index i_c3c1;
+-- empty table
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+-- full table
+insert into indexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+insert into indexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+insert into indexes values (17, '17', 17.17), (18, '18', 18.18);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+rollback;
+
+-- multiple indexes
+-- empty table
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+-- full table
+insert into indexes values (1, '1', 1.1), (2, '2', 2.2), (3, '3', 3.3),
+     (4, '4', 4.4), (5, '5', 5.5), (6, '6', 6.6), (7, '7', 7.7);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+insert into indexes values (8, '8', 8.8), (8, '8', 8.8), (9, '9', 9.9),
+     (10, '10', 10.10), (11, '11', 11.11), (12, '12', 12.12), (13, '13', 13.13),
+     (14, '14', 14.14), (15, '15', 15.15), (16, '16', 16.16);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+insert into indexes values (17, '17', 17.17), (18, '18', 18.18);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'INDEXES', 1);
+select * from indexes;
+rollback;
+
+--table with multiple indexes, indexes share columns
+--table has more than 4 rows
+-- multiple indexes on same column
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+create table tab (a int, b int, s varchar(1500));
+create index i_a on tab(a);
+create index i_s on tab(s);
+create index i_ab on tab(a, b);
+insert into tab values (1, 1, 'abc'), (2, 2,  'bcd');
+insert into tab values (3, 3, 'abc'), (4, 4,  'bcd');
+insert into tab values (5, 5, 'abc'), (6, 6,  'bcd');
+insert into tab values (7, 7, 'abc'), (8, 8,  'bcd');
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB', 1);
+select * from tab;
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+--record the number of rows
+create table oldstat(rowCount int);
+insert into oldstat select count(*) from tab;
+commit;
+--double the size of the table
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+insert into tab values (1, 1, 'abc'), (2, 2,  'bcd');
+insert into tab values (3, 3, 'abc'), (4, 4,  'bcd');
+insert into tab values (5, 5, 'abc'), (6, 6,  'bcd');
+insert into tab values (7, 7, 'abc'), (8, 8,  'bcd');
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+delete from tab;
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB', 0);
+-- verify space reclaimed
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+-- do consistency check on scans, etc.
+values  ConsistencyChecker();
+rollback;
+--record the number of rows
+create table newstat(rowCount int);
+insert into newstat select count(*) from tab;
+--make sure the number of rows are the same
+select o.rowCount, n.rowCount from oldstat o, newstat n where o.rowCount = n.rowCount;
+--show old space usage
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB', 0);
+--show new space usage
+select conglomeratename, numallocatedpages from new org.apache.derby.diag.SpaceTable('TAB') tab;
+rollback;
+drop table tab;
+drop table oldstat;
+
+-- test that many levels of aborts of compress table still work
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+create table xena (a int, b int, c varchar(1000), d varchar(8000));
+create index xena_idx1 on xena (a, c);
+create unique index xena_idx2 on xena (b, c);
+insert into xena values (1, 1, 'argo', 'horse');
+insert into xena values (1, -1, 'argo', 'horse');
+insert into xena values (2, 2, 'ares', 'god of war');
+insert into xena values (2, -2, 'ares', 'god of war');
+insert into xena values (3, 3, 'joxer', 'the mighty');
+insert into xena values (4, -4, 'gabrielle', 'side kick');
+insert into xena values (4, 4, 'gabrielle', 'side kick');
+
+select 
+    conglomeratename, isindex, 
+    numallocatedpages, numfreepages, 
+    pagesize, estimspacesaving
+
+    from new org.apache.derby.diag.SpaceTable('XENA') t
+        order by conglomeratename;
+
+commit;
+
+delete from xena where b = 1;
+
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+
+create table xena2(a int);
+
+delete from xena where b = 2;
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+
+create table xena3(a int);
+
+delete from xena where b = 3;
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+
+create table xena4(a int);
+
+delete from xena where b = 4;
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+
+create table xena5(a int);
+
+rollback;
+
+-- should all fail
+drop table xena2;
+drop table xena3;
+
+select a, b from xena;
+
+-- read every row and value in the table, including overflow pages.
+insert into xena values (select a + 4, b - 4, c, d from xena);
+insert into xena values (select (a + 4, b - 4, c, d from xena);
+
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+
+-- delete all but 1 row (the sidekick)
+delete from xena where a <> 4 or b <> -4;
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+
+rollback;
+
+select a, b from xena;
+
+
+drop table xena;
+
+-- bug 2940
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4096');
+create table xena (a int, b int, c varchar(1000), d varchar(8000));
+insert into xena values (1, 1, 'argo', 'horse');
+insert into xena values (2, 2, 'beta', 'mule');
+insert into xena values (3, 3, 'comma', 'horse');
+insert into xena values (4, 4, 'delta', 'goat');
+insert into xena values (1, 1, 'x_argo', 'x_horse');
+insert into xena values (2, 2, 'x_beta', 'x_mule');
+insert into xena values (3, 3, 'x_comma', 'x_horse');
+insert into xena values (4, 4, 'x_delta', 'x_goat');
+autocommit off;
+
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+commit;
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','4000');
+create unique index xena1 on xena (a, c);
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','20000');
+create unique index xena2 on xena (a, d);
+create unique index xena3 on xena (c, d);
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+select * from xena;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'XENA', 0);
+select * from xena;
+rollback;
+
+select 
+     cast (conglomeratename as char(10)) as name, 
+     cast (numallocatedpages as char(4)) as aloc, 
+     cast (numfreepages as char(4))      as free, 
+     cast (estimspacesaving as char(10)) as est
+        from new org.apache.derby.diag.SpaceTable('XENA') t order by name;
+select schemaname, tablename, 
+SYSCS_UTIL.SYSCS_CHECK_TABLE(schemaname, tablename)
+ from sys.systables a,  sys.sysschemas b where a.schemaid = b.schemaid
+order by schemaname, tablename;
+
+select a, b from xena;
+
+-- clean up
+drop function padstring;
+drop view v_noindexes;
+drop table noindexes;
+drop table indexes;
+drop table oldconglom;
+drop table newconglom;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+usedefaults=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/compressTable_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# wants to do consistency checking, so needs
+# the statement cache off to ensure no trailing dependencies exist
+derby.language.statementCacheSize=0
+derby.storage.sortBufferMax=4
+derby.debug.true=testSort
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/concateTests.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/concateTests.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,923 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.io.*;
+import java.sql.*;
+import java.util.Arrays;
+
+import org.apache.derby.tools.ij;
+import org.apache.derbyTesting.functionTests.util.Formatters;
+
+import java.io.ByteArrayInputStream; 
+
+/**
+  Concatenation tests for various datatypes
+ */
+public class concateTests
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	private static String[] concatenatedSQLTypesNames =
+	{
+		/*0*/ "CHAR",
+		/*1*/ "VARCHAR",
+		/*2*/ "LONG VARCHAR",
+		/*3*/ "CLOB",
+		/*4*/ "CHAR () FOR BIT DATA",
+		/*5*/ "VARCHAR () FOR BIT DATA",
+		/*6*/ "LONG VARCHAR FOR BIT DATA",
+		/*7*/ "BLOB",
+
+	};
+
+	public static void main (String[] argv) throws Throwable
+	{
+		ij.getPropertyArg(argv);
+		Connection conn = ij.startJBMS();
+
+		testCharConcatenation(conn);
+		testCharForBitDataConcatenation(conn);
+	}
+
+	public static void testCharConcatenation( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test1 - CHAR, VARCHAR, LONGVARCHAR and CLOB concatenation tests");
+
+			String columnC1value;
+			String columnC2value = Formatters.repeatChar("a",40);
+			String columnVC1value;
+			String columnVC2value;
+			String columnVC3value = "z";
+			String columnLVC1value;
+			String columnLVC2value = Formatters.repeatChar("b",32698);
+			StringBuffer tempStringBuffer = new StringBuffer();
+
+			Statement s = conn.createStatement();
+			try { //this is if we ever run the test against DB2, we want to make sure table doesn't already exist in DB2
+			s.executeUpdate("drop table t1");
+			} catch(Exception ex) {}
+			s.executeUpdate("create table t1 (c1 char(254), c2 char(40), vc1 varchar(264), vc2 varchar(4000), vc3 varchar(1), lvc1 long varchar, lvc2 long varchar)");
+			PreparedStatement ps = conn.prepareStatement("insert into t1(c2, vc3) values(?, ?)");
+      ps.setString(1,columnC2value);
+      ps.setString(2,columnVC3value);
+			ps.executeUpdate();
+			ps = conn.prepareStatement("update t1 set lvc2 = ?");
+      ps.setString(1,columnLVC2value);
+			ps.executeUpdate();
+
+			System.out.println("Test1a - CHAR concatenations will give result type of CHAR when concatenated string < 255");
+			//operands CHAR(A) CHAR(B) and A+B<255 then result is CHAR(A+B)
+			dumpSomeMetaDataInfo(s.executeQuery("values(select c2 || c2 || c2 || c2 || c2 || c2 || '12345678901234' from t1)"), concatenatedSQLTypesNames[0]);
+			tempStringBuffer = new StringBuffer(columnC2value);
+      tempStringBuffer.append(columnC2value).append(columnC2value).append(columnC2value).append(columnC2value).append(columnC2value);
+      tempStringBuffer.append("12345678901234");
+      columnC1value = tempStringBuffer.toString();
+			verifyStringData(s.executeQuery("values(select c2 || c2 || c2 || c2 || c2 || c2 || '12345678901234' from t1)"), columnC1value);
+			s.executeUpdate("update t1 set c1 = c2 || c2 || c2 || c2 || c2 || c2 || '12345678901234'");
+			verifyStringData(s.executeQuery("select c1 from t1"), columnC1value);
+
+			System.out.println("Test1b boundary test - CHAR concatenations will give result type of VARCHAR when concatenated string = 255");
+			//operands CHAR(A) CHAR(B) and A+B>254 then result is VARCHAR(A+B)
+      columnVC1value = columnC1value + "1";
+			dumpSomeMetaDataInfo(s.executeQuery("values(select c1 || '1' from t1)"), concatenatedSQLTypesNames[1]);
+			verifyStringData(s.executeQuery("values(select c1 || '1' from t1)"), columnVC1value);
+			s.executeUpdate("update t1 set vc1 = c1 || '1'");
+			verifyStringData(s.executeQuery("select vc1 from t1"), columnVC1value);
+
+			System.out.println("Test1b - CHAR concatenations will give result type of VARCHAR when concatenated string > 254");
+			//operands CHAR(A) CHAR(B) and A+B>254 then result is VARCHAR(A+B)
+      columnVC1value = columnC1value + "1234567890";
+			dumpSomeMetaDataInfo(s.executeQuery("values(select c1 || '1234567890' from t1)"), concatenatedSQLTypesNames[1]);
+			verifyStringData(s.executeQuery("values(select c1 || '1234567890' from t1)"), columnVC1value);
+			s.executeUpdate("update t1 set vc1 = c1 || '1234567890'");
+			verifyStringData(s.executeQuery("select vc1 from t1"), columnVC1value);
+
+			System.out.println("Test1c - CHAR and VARCHAR concatenations will give result type of VARCHAR when concatenated string < 4001");
+			//operands CHAR(A) VARCHAR(B) and A+B<4001 then result is VARCHAR(A+B)
+			//concatenated string 4000 characters long in following updates
+			tempStringBuffer = new StringBuffer(columnC2value);
+      tempStringBuffer.append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value);
+      tempStringBuffer.append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value);
+      tempStringBuffer.append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value);
+      columnVC2value = tempStringBuffer.toString();
+      columnLVC1value = tempStringBuffer.toString();
+			dumpSomeMetaDataInfo(s.executeQuery("values(select c2||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1 from t1)"), concatenatedSQLTypesNames[1]);
+			verifyStringData(s.executeQuery("values(select c2||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1 from t1)"), columnVC2value);
+			s.executeUpdate("update t1 set vc2 = c2||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1");
+			verifyStringData(s.executeQuery("select vc2 from t1"), columnVC2value);
+			s.executeUpdate("update t1 set lvc1 = c2||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1d - VARCHAR and CHAR concatenations will give result type of VARCHAR when concatenated string < 4001");
+			//operands VARCHAR(A) CHAR(B) and A+B<4001 then result is VARCHAR(A+B)
+			//concatenated string 4000 characters long in following updates
+			tempStringBuffer = new StringBuffer();
+      tempStringBuffer.append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value);
+      tempStringBuffer.append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value);
+      tempStringBuffer.append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value).append(columnVC1value);
+			tempStringBuffer.append(columnC2value);
+      columnVC2value = tempStringBuffer.toString();
+      columnLVC1value = tempStringBuffer.toString();
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||c2 from t1)"), concatenatedSQLTypesNames[1]);
+			verifyStringData(s.executeQuery("values(select vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||c2 from t1)"), columnVC2value);
+			s.executeUpdate("update t1 set vc2 = vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||c2");
+			verifyStringData(s.executeQuery("select vc2 from t1"), columnVC2value);
+			s.executeUpdate("update t1 set lvc1 = vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||vc1||c2");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1e boundary test - CHAR and VARCHAR concatenations will give result type of LONG VARCHAR when concatenated string = 4001");
+			//operands CHAR(A) VARCHAR(B) and A+B>4000 then result is LONG VARCHAR
+			//concatenated string is 4001 characters long in following 2 updates
+      columnLVC1value = "a"+columnVC2value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select 'a'||vc2 from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select 'a'||vc2 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = 'a'||vc2");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1f boundary test - VARCHAR and CHAR concatenations will give result type of LONG VARCHAR when concatenated string = 4001");
+			//operands VARCHAR(A) CHAR(B) and A+B>4000 then result is LONG VARCHAR
+      columnLVC1value = columnVC2value+"a";
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc2 || 'a' from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select vc2 || 'a' from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = vc2 || 'a'");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1g - CHAR and LONG VARCHAR concatenations will give result type of LONG VARCHAR");
+			//operands CHAR(A) LONG VARCHAR then result is LONG VARCHAR
+      columnLVC1value = "a"+columnLVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select 'a' || lvc1 from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select 'a' || lvc1 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = 'a' || lvc1");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1h - VARCHAR and LONG VARCHAR concatenations will give result type of LONG VARCHAR");
+			//operands VARCHAR(A) LONG VARCHAR then result is LONG VARCHAR
+      columnLVC1value = columnVC1value+columnLVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc1 || lvc1 from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select vc1 || lvc1 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = vc1 || lvc1");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1i - VARCHAR and VARCHAR concatenations will give result type of VARCHAR when concatenated string < 4001");
+			//operands VARCHAR(A) VARCHAR(B) and A+B<4001 then result is VARCHAR(A+B)
+      columnLVC1value = columnVC1value+columnVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc1 || vc1 from t1)"), concatenatedSQLTypesNames[1]);
+			verifyStringData(s.executeQuery("values(select vc1 || vc1 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = vc1 || vc1");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1j boundary test - VARCHAR and VARCHAR concatenations will give result type of LONG VARCHAR when concatenated string = 4001");
+			//operands VARCHAR(A) VARCHAR(B) and A+B>4000 then result is LONG VARCHAR
+      columnLVC1value = columnVC2value+columnVC3value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc2 || vc3 from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select vc2 || vc3 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = vc2 || vc3");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1j - VARCHAR and VARCHAR concatenations will give result type of LONG VARCHAR when concatenated string > 4000");
+			//operands VARCHAR(A) VARCHAR(B) and A+B>4000 then result is LONG VARCHAR
+      columnLVC1value = columnVC1value+columnVC2value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc1 || vc2 from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select vc1 || vc2 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = vc1 || vc2");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			System.out.println("Test1k - LONG VARCHAR and LONG VARCHAR concatenations will give result type of LONG VARCHAR");
+			//operands LONG VARCHAR, LONG VARCHAR then result is LONG VARCHAR
+      columnLVC1value = columnLVC1value+columnLVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvc1 || lvc1 from t1)"), concatenatedSQLTypesNames[2]);
+			verifyStringData(s.executeQuery("values(select lvc1 || lvc1 from t1)"), columnLVC1value);
+			s.executeUpdate("update t1 set lvc1 = lvc1 || lvc1");
+			verifyStringData(s.executeQuery("select lvc1 from t1"), columnLVC1value);
+
+			//operands CHAR(A)/VARCHAR(A)/LONGVARCHAR, LONGVARCHAR and "concatenated string length">32700 does not cause automatic escalation
+			//to LOB for compatibility with previous releases. Any such cases would result in an error at runtime
+			System.out.println("Test1l - CHAR and LONGVARCHAR concatenation resulting in concatenated string > 32700 will give error");
+			try {
+				dumpSomeMetaDataInfo(s.executeQuery("values(select c2 || lvc2 from t1)"), concatenatedSQLTypesNames[2]);
+				System.out.println("FAIL - should have gotten overflow error for values");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54006"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("update t1 set lvc2 = c2 || lvc2");
+				System.out.println("FAIL - should have gotten overflow error for insert");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54006"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Test1m - VARCHAR and LONGVARCHAR concatenation resulting in concatenated string > 32700 will give error");
+			try {
+				dumpSomeMetaDataInfo(s.executeQuery("values(select vc1 || lvc2 from t1)"), concatenatedSQLTypesNames[2]);
+				System.out.println("FAIL - should have gotten overflow error for values");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54006"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("update t1 set lvc2 = vc1 || lvc2");
+				System.out.println("FAIL - should have gotten overflow error for insert");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54006"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Test1n - LONGVARCHAR and LONGVARCHAR concatenation resulting in concatenated string > 32700 will give error");
+			try {
+				dumpSomeMetaDataInfo(s.executeQuery("values(select lvc1 || lvc2 from t1)"), concatenatedSQLTypesNames[2]);
+				System.out.println("FAIL - should have gotten overflow error for values");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54006"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("update t1 set lvc2 = lvc1 || lvc2");
+				System.out.println("FAIL - should have gotten overflow error for insert");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54006"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			try { //this is if we ever run the test against DB2, we want to make sure table doesn't already exist in DB2
+			s.executeUpdate("drop table testCLOB_MAIN");
+			} catch(Exception ex) {}
+			s.executeUpdate("create table testCLOB_MAIN (c1 char(10), vc1 varchar(100), lvc1 long varchar, clob1 CLOB(2G), clob2 CLOB(256), clob3 CLOB(1M))");
+			ps = conn.prepareStatement("insert into testCLOB_MAIN values(?,?,?,?,?,?)");
+			columnC1value = "1234567890";
+			ps.setString(1, columnC1value);
+			columnVC1value = "this is varchar";
+			ps.setString(2, columnVC1value);
+			columnLVC1value = "this is long varchar";
+			ps.setString(3, columnLVC1value);
+			String columnCLOB1value = "this is 2G clob";
+			ps.setString(4, columnCLOB1value);
+			String columnCLOB2value = "this is 256 characters clob";
+			ps.setString(5, columnCLOB2value);
+			String columnCLOB3value = "this is 1M clob";
+			ps.setString(6, columnCLOB3value);
+			ps.executeUpdate();
+
+			System.out.println("Test1o - CHAR(A) and CLOB(B) concatenations will give result type of CLOB(A+B) when A+B<2G");
+      columnCLOB2value = columnC1value+"this is 256 characters clob";
+			dumpSomeMetaDataInfo(s.executeQuery("values(select c1 || clob2 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select c1 || clob2 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = c1 || clob2");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test1p - CLOB(A) and CHAR(B) concatenations will give result type of CLOB(A+B) when A+B<2G");
+      columnCLOB2value = columnCLOB2value+columnC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob2 || c1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob2 || c1 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = clob2 || c1");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test1q - CHAR(A) and CLOB(B) concatenations will give result type of CLOB(2G) when A+B>2G");
+      columnCLOB1value = columnC1value+columnCLOB1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select c1 || clob1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select c1 || clob1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = c1 || clob1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test1r - CLOB(A) and CHAR(B) concatenations will give result type of CLOB(2G) when A+B>2G");
+      columnCLOB1value = columnCLOB1value+columnC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob1 || c1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob1 || c1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = clob1 || c1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test1s - VARCHAR(A) and CLOB(B) concatenations will give result type of CLOB(A+B) when A+B<2G");
+      columnCLOB2value = columnVC1value+columnCLOB2value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc1 || clob2 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select vc1 || clob2 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = vc1 || clob2");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test1t - CLOB(A) and VARCHAR(B) concatenations will give result type of CLOB(A+B) when A+B<2G");
+      columnCLOB2value = columnCLOB2value+columnVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob2 || vc1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob2 || vc1 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = clob2 || vc1");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test1u - VARCHAR(A) and CLOB(B) concatenations will give result type of CLOB(2G) when A+B>2G");
+      columnCLOB1value = columnVC1value+columnCLOB1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vc1 || clob1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select vc1 || clob1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = vc1 || clob1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test1v - CLOB(A) and VARCHAR(B) concatenations will give result type of CLOB(2G) when A+B>2G");
+      columnCLOB1value = columnCLOB1value+columnVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob1 || vc1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob1 || vc1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = clob1 || vc1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test1w - LONG VARCHAR and CLOB(A) concatenations will give result type of CLOB(A+32K) when A+32K<2G");
+      columnCLOB2value = columnLVC1value+columnCLOB2value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvc1 || clob2 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select lvc1 || clob2 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = lvc1 || clob2");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test1x - CLOB(A) and LONG VARCHAR concatenations will give result type of CLOB(A+32K) when A+32K<2G");
+      columnCLOB2value = columnCLOB2value+columnLVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob2 || lvc1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob2 || lvc1 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = clob2 || lvc1");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test1y - LONG VARCHAR and CLOB(B) concatenations will give result type of CLOB(2G) when A+32K>2G");
+      columnCLOB1value = columnLVC1value+columnCLOB1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvc1 || clob1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select lvc1 || clob1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = lvc1 || clob1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test1z - CLOB(A) and LONG VARCHAR concatenations will give result type of CLOB(2G) when A+32K>2G");
+      columnCLOB1value = columnCLOB1value+columnLVC1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob1 || lvc1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob1 || lvc1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = clob1 || lvc1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test11a - CLOB(A) and CLOB(B) concatenations will give result type of CLOB(A+B) when A+B<2G");
+      columnCLOB2value = columnCLOB2value+columnCLOB3value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob2 || clob3 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob2 || clob3 from testCLOB_MAIN)"), columnCLOB2value);
+			s.executeUpdate("update testCLOB_MAIN set clob2 = clob2 || clob3");
+			verifyStringData(s.executeQuery("select clob2 from testCLOB_MAIN"), columnCLOB2value);
+
+			System.out.println("Test11b - CLOB(A) and CLOB(B) concatenations will give result type of CLOB(2G) when A+B>2G");
+      columnCLOB1value = columnCLOB2value+columnCLOB1value;
+			dumpSomeMetaDataInfo(s.executeQuery("values(select clob2 || clob1 from testCLOB_MAIN)"), concatenatedSQLTypesNames[3]);
+			verifyStringData(s.executeQuery("values(select clob2 || clob1 from testCLOB_MAIN)"), columnCLOB1value);
+			s.executeUpdate("update testCLOB_MAIN set clob1 = clob2 || clob1");
+			verifyStringData(s.executeQuery("select clob1 from testCLOB_MAIN"), columnCLOB1value);
+
+			System.out.println("Test12 - try 2 empty string concatenation and verify that length comes back as 0 for the result");
+			dumpSomeMetaDataInfo(s.executeQuery("values('' || '')"), concatenatedSQLTypesNames[0]);
+			verifyStringData(s.executeQuery("values('' || '')"), "");
+
+			s.executeUpdate("drop table testCLOB_MAIN");
+			s.executeUpdate("drop table t1");
+			System.out.println("Test1 finished - CHAR, VARCHAR, LONGVARCHAR and CLOB concatenation tests");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testCharForBitDataConcatenation( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test2 - CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, LONGVARCHAR FOR BIT DATA and BLOB concatenation tests");
+			Statement s = conn.createStatement();
+			byte[] columnCBD0value = {(byte)'a'};
+			byte[] columnCBD1value;
+			byte[] columnCBD2value = new byte[40];
+			java.util.Arrays.fill(columnCBD2value, (byte)'a');
+			byte[] columnCBD3value = new byte[14];
+			java.util.Arrays.fill(columnCBD3value, (byte)'a');
+			byte[] columnVCBD1value;
+			byte[] columnVCBD2value;
+			byte[] columnVCBD3value = {(byte)'a'};
+			byte[] columnLVCBD1value;
+			byte[] columnLVCBD2value = new byte[32698];
+			java.util.Arrays.fill(columnLVCBD2value, (byte)'a');
+			byte[] tempStringBuffer;
+
+			try { //this is if we ever run the test against DB2, we want to make sure table doesn't already exist in DB2
+			s.executeUpdate("drop table t2");
+			} catch(Exception ex) {}
+			s.executeUpdate("create table t2 (cbd0 CHAR(1) FOR BIT DATA, cbd1 CHAR(254) FOR BIT DATA, cbd2 CHAR(40) FOR BIT DATA, cbd3 CHAR(14) FOR BIT DATA, vcbd1 VARCHAR(264) FOR BIT DATA, vcbd2 VARCHAR(4000) FOR BIT DATA, vcbd3 VARCHAR(1) FOR BIT DATA, lvcbd1 LONG VARCHAR FOR BIT DATA, lvcbd2 LONG VARCHAR FOR BIT DATA)");
+			PreparedStatement ps = conn.prepareStatement("insert into t2(cbd0, cbd2, cbd3, vcbd3) values (?, ?,?,?)");
+			ps.setBytes(1, columnCBD0value);
+			ps.setBytes(2, columnCBD2value);
+			ps.setBytes(3, columnCBD3value);
+			ps.setBytes(4, columnVCBD3value);
+			ps.executeUpdate();
+			ps = conn.prepareStatement("update t2 set lvcbd2 = ?");
+			ps.setBytes(1, columnLVCBD2value);
+			ps.executeUpdate();
+
+			System.out.println("Test2a - CHAR FOR BIT DATA concatenations will give result type of CHAR FOR BIT DATA when concatenated string < 255");
+			//operands CHAR(A) FOR BIT DATA, CHAR(B) FOR BIT DATA and A+B<255 then result is CHAR(A+B) FOR BIT DATA
+			columnCBD1value = new byte[254];
+			System.arraycopy(columnCBD2value, 0, columnCBD1value, 0, columnCBD2value.length);
+			System.arraycopy(columnCBD2value, 0, columnCBD1value, 40, columnCBD2value.length);
+			System.arraycopy(columnCBD2value, 0, columnCBD1value, 80, columnCBD2value.length);
+			System.arraycopy(columnCBD2value, 0, columnCBD1value, 120, columnCBD2value.length);
+			System.arraycopy(columnCBD2value, 0, columnCBD1value, 160, columnCBD2value.length);
+			System.arraycopy(columnCBD2value, 0, columnCBD1value, 200, columnCBD2value.length);
+			System.arraycopy(columnCBD3value, 0, columnCBD1value, 240, columnCBD3value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd2 || cbd2 || cbd2 || cbd2 || cbd2 || cbd2 || cbd3 from t2)"), concatenatedSQLTypesNames[4]);
+			verifyByteData(s.executeQuery("values(select cbd2 || cbd2 || cbd2 || cbd2 || cbd2 || cbd2 || cbd3 from t2)"), columnCBD1value);
+			s.executeUpdate("update t2 set cbd1 = cbd2 || cbd2 || cbd2 || cbd2 || cbd2 || cbd2 || cbd3");
+			verifyByteData(s.executeQuery("select cbd1 from t2"), columnCBD1value);
+
+			System.out.println("Test2b boundary test - CHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string = 255");
+			//operands CHAR(A) FOR BIT DATA, CHAR(B) FOR BIT DATA and A+B>254 then result is VARCHAR(A+B) FOR BIT DATA
+			columnVCBD1value = new byte[255];
+			System.arraycopy(columnCBD1value, 0, columnVCBD1value, 0, columnCBD1value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 254, columnCBD0value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd1 || cbd0 from t2)"), concatenatedSQLTypesNames[5]);
+			verifyByteData(s.executeQuery("values(select cbd1 || cbd0 from t2)"), columnVCBD1value);
+			s.executeUpdate("update t2 set vcbd1 = cbd1 || cbd0");
+			verifyByteData(s.executeQuery("select vcbd1 from t2"), columnVCBD1value);
+
+			System.out.println("Test2b - CHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string > 254");
+			//operands CHAR(A) FOR BIT DATA, CHAR(B) FOR BIT DATA and A+B>254 then result is VARCHAR(A+B) FOR BIT DATA
+			columnVCBD1value = new byte[264];
+			System.arraycopy(columnCBD1value, 0, columnVCBD1value, 0, columnCBD1value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 254, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 255, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 256, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 257, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 258, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 259, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 260, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 261, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 262, columnCBD0value.length);
+			System.arraycopy(columnCBD0value, 0, columnVCBD1value, 263, columnCBD0value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd1 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 from t2)"), concatenatedSQLTypesNames[5]);
+			verifyByteData(s.executeQuery("values(select cbd1 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0  from t2)"), columnVCBD1value);
+			s.executeUpdate("update t2 set vcbd1 = cbd1 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0 || cbd0");
+			verifyByteData(s.executeQuery("select vcbd1 from t2"), columnVCBD1value);
+
+			System.out.println("Test2c - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string < 4001");
+			//operands CHAR(A) FOR BIT DATA, VARCHAR(B) FOR BIT DATA and A+B<4001 then result is VARCHAR(A+B) FOR BIT DATA
+			//concatenated string 4000 characters long in following updates
+			columnLVCBD1value = new byte[4000];
+			columnVCBD2value = new byte[4000];
+			System.arraycopy(columnCBD2value, 0, columnLVCBD1value, 0, columnCBD2value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 40, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 304, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 568, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 832, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1096, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1360, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1624, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1888, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2152, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2416, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2680, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2944, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 3208, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 3472, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 3736, columnVCBD1value.length);
+			System.arraycopy(columnLVCBD1value, 0, columnVCBD2value, 0, columnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd2||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1 from t2)"), concatenatedSQLTypesNames[5]);
+			verifyByteData(s.executeQuery("values(select cbd2||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1 from t2)"), columnVCBD2value);
+			s.executeUpdate("update t2 set vcbd2 = cbd2||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1");
+			verifyByteData(s.executeQuery("select vcbd2 from t2"), columnVCBD2value);
+			s.executeUpdate("update t2 set lvcbd1 = cbd2||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2d - VARCHAR FOR BIT DATA and CHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string < 4001");
+			//operands VARCHAR(A) FOR BIT DATA, CHAR(B) FOR BIT DATA and A+B<4001 then result is VARCHAR(A+B) FOR BIT DATA
+			//concatenated string 4000 characters long in following updates
+			columnLVCBD1value = new byte[4000];
+			columnVCBD2value = new byte[4000];
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 0, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 264, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 528, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 792, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1056, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1320, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1584, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 1848, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2112, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2376, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2640, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 2904, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 3168, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 3432, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 3696, columnVCBD1value.length);
+			System.arraycopy(columnCBD2value, 0, columnLVCBD1value, 3960, columnCBD2value.length);
+			System.arraycopy(columnLVCBD1value, 0, columnVCBD2value, 0, columnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||cbd2 from t2)"), concatenatedSQLTypesNames[5]);
+			verifyByteData(s.executeQuery("values(select vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||cbd2 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set vcbd2 = vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||cbd2");
+			verifyByteData(s.executeQuery("select vcbd2 from t2"), columnVCBD2value);
+			s.executeUpdate("update t2 set lvcbd1 = vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||vcbd1||cbd2");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2e boundary test - CHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string > 4000");
+			//operands CHAR(A) FOR BIT DATA, VARCHAR(B) FOR BIT DATA and A+B>4000 then result is LONG VARCHAR FOR BIT DATA
+			//concatenated string is > 4000 characters long in following 2 updates
+			columnLVCBD1value = new byte[4001];
+			System.arraycopy(columnCBD0value, 0, columnLVCBD1value, 0, columnCBD0value.length);
+			System.arraycopy(columnVCBD2value, 0, columnLVCBD1value, 1, columnVCBD2value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd0||vcbd2 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select cbd0||vcbd2 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = cbd0||vcbd2 ");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2f boundary test - VARCHAR FOR BIT DATA and CHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string > 4000");
+			//operands VARCHAR(A) FOR BIT DATA, CHAR(B) FOR BIT DATA and A+B>4000 then result is LONG VARCHAR FOR BIT DATA
+			columnLVCBD1value = new byte[4001];
+			System.arraycopy(columnVCBD2value, 0, columnLVCBD1value, 0, columnVCBD2value.length);
+			System.arraycopy(columnCBD0value, 0, columnLVCBD1value, 4000, columnCBD0value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd2 || cbd0 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select vcbd2 || cbd0 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = vcbd2 || cbd0");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2g - CHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA");
+			//operands CHAR(A) FOR BIT DATA, LONG VARCHAR FOR BIT DATA then result is LONG VARCHAR FOR BIT DATA
+			byte[] tmpColumnLVCBD1value = new byte[4001];
+			System.arraycopy(columnLVCBD1value, 0, tmpColumnLVCBD1value, 0, columnLVCBD1value.length);
+			columnLVCBD1value = new byte[4002];
+			System.arraycopy(columnCBD0value, 0, columnLVCBD1value, 0, columnCBD0value.length);
+			System.arraycopy(tmpColumnLVCBD1value, 0, columnLVCBD1value, 1, tmpColumnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd0 || lvcbd1 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select cbd0 || lvcbd1 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = cbd0 || lvcbd1");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2h - VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA");
+			//operands VARCHAR(A) FOR BIT DATA, LONG VARCHAR FOR BIT DATA then result is LONG VARCHAR FOR BIT DATA
+			tmpColumnLVCBD1value = new byte[4002];
+			System.arraycopy(columnLVCBD1value, 0, tmpColumnLVCBD1value, 0, columnLVCBD1value.length);
+			columnLVCBD1value = new byte[4266];
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 0, columnVCBD1value.length);
+			System.arraycopy(tmpColumnLVCBD1value, 0, columnLVCBD1value, 264, tmpColumnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1 || lvcbd1 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select vcbd1 || lvcbd1 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = vcbd1 || lvcbd1");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2i - VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of VARCHAR FOR BIT DATA when concatenated string < 4001");
+			//operands VARCHAR(A) FOR BIT DATA, VARCHAR(B) FOR BIT DATA and A+B<4001 then result is VARCHAR(A+B) FOR BIT DATA
+			columnLVCBD1value = new byte[528];
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 0, columnVCBD1value.length);
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 264, columnVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1 || vcbd1 from t2)"), concatenatedSQLTypesNames[5]);
+			verifyByteData(s.executeQuery("values(select vcbd1 || vcbd1 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = vcbd1 || vcbd1");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2j boundary test - VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string = 4001");
+			//operands VARCHAR(A) FOR BIT DATA, VARCHAR(B) FOR BIT DATA and A+B>4000 then result is LONG VARCHAR FOR BIT DATA
+			columnLVCBD1value = new byte[4001];
+			System.arraycopy(columnVCBD2value, 0, columnLVCBD1value, 0, columnVCBD2value.length);
+			System.arraycopy(columnVCBD3value, 0, columnLVCBD1value, 4000, columnVCBD3value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd2 || vcbd3 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select vcbd2 || vcbd3 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = vcbd2 || vcbd3");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2j - VARCHAR FOR BIT DATA and VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA when concatenated string > 4000");
+			//operands VARCHAR(A) FOR BIT DATA, VARCHAR(B) FOR BIT DATA and A+B>4000 then result is LONG VARCHAR FOR BIT DATA
+			columnLVCBD1value = new byte[columnVCBD1value.length + columnVCBD2value.length];
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD1value, 0, columnVCBD1value.length);
+			System.arraycopy(columnVCBD2value, 0, columnLVCBD1value, columnVCBD1value.length, columnVCBD2value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1 || vcbd2 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select vcbd1 || vcbd2 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = vcbd1 || vcbd2");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2k - LONG VARCHAR FOR BIT DATA and LONG VARCHAR FOR BIT DATA concatenations will give result type of LONG VARCHAR FOR BIT DATA");
+			//operands LONG VARCHAR FOR BIT DATA, LONG VARCHAR FOR BIT DATA then result is LONG VARCHAR FOR BIT DATA
+			tmpColumnLVCBD1value = new byte[columnLVCBD1value.length];
+			System.arraycopy(columnLVCBD1value, 0, tmpColumnLVCBD1value, 0, columnLVCBD1value.length);
+			columnLVCBD1value = new byte[tmpColumnLVCBD1value.length + tmpColumnLVCBD1value.length];
+			System.arraycopy(tmpColumnLVCBD1value, 0, columnLVCBD1value, 0, tmpColumnLVCBD1value.length);
+			System.arraycopy(tmpColumnLVCBD1value, 0, columnLVCBD1value, tmpColumnLVCBD1value.length, tmpColumnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvcbd1 || lvcbd1 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select lvcbd1 || lvcbd1 from t2)"), columnLVCBD1value);
+			s.executeUpdate("update t2 set lvcbd1 = lvcbd1 || lvcbd1");
+			verifyByteData(s.executeQuery("select lvcbd1 from t2"), columnLVCBD1value);
+
+			System.out.println("Test2l - CHAR FOR BIT DATA and LONGVARCHAR FOR BIT DATA concatenation resulting in concatenated string > 32700");
+			byte[] tmpColumnLVCBD2value = new byte[columnLVCBD2value.length];
+			System.arraycopy(columnLVCBD2value, 0, tmpColumnLVCBD2value, 0, columnLVCBD2value.length);
+			columnLVCBD2value = new byte[columnCBD2value.length + tmpColumnLVCBD2value.length];
+			System.arraycopy(columnCBD2value, 0, columnLVCBD2value, 0, columnCBD2value.length);
+			System.arraycopy(tmpColumnLVCBD2value, 0, columnLVCBD2value, columnCBD2value.length, tmpColumnLVCBD2value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd2 || lvcbd2 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select cbd2 || lvcbd2 from t2)"), columnLVCBD2value);
+			s.executeUpdate("update t2 set lvcbd2 = cbd2 || lvcbd2");
+			verifyByteData(s.executeQuery("select lvcbd2 from t2"), columnLVCBD2value);
+
+			System.out.println("Test2m - VARCHAR FOR BIT DATA and LONGVARCHAR FOR BIT DATA concatenation resulting in concatenated string > 32700");
+			tmpColumnLVCBD2value = new byte[columnLVCBD2value.length];
+			System.arraycopy(columnLVCBD2value, 0, tmpColumnLVCBD2value, 0, columnLVCBD2value.length);
+			columnLVCBD2value = new byte[columnVCBD1value.length + tmpColumnLVCBD2value.length];
+			System.arraycopy(columnVCBD1value, 0, columnLVCBD2value, 0, columnVCBD1value.length);
+			System.arraycopy(tmpColumnLVCBD2value, 0, columnLVCBD2value, columnVCBD1value.length, tmpColumnLVCBD2value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1 || lvcbd2 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select vcbd1 || lvcbd2 from t2)"), columnLVCBD2value);
+			s.executeUpdate("update t2 set lvcbd2 = vcbd1 || lvcbd2");
+			verifyByteData(s.executeQuery("select lvcbd2 from t2"), columnLVCBD2value);
+
+			System.out.println("Test2n - LONGVARCHAR FOR BIT DATA and LONGVARCHAR FOR BIT DATA concatenation resulting in concatenated string > 32700");
+			tmpColumnLVCBD2value = new byte[columnLVCBD2value.length];
+			System.arraycopy(columnLVCBD2value, 0, tmpColumnLVCBD2value, 0, columnLVCBD2value.length);
+			columnLVCBD2value = new byte[columnLVCBD1value.length + tmpColumnLVCBD2value.length];
+			System.arraycopy(columnLVCBD1value, 0, columnLVCBD2value, 0, columnLVCBD1value.length);
+			System.arraycopy(tmpColumnLVCBD2value, 0, columnLVCBD2value, columnLVCBD1value.length, tmpColumnLVCBD2value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvcbd1 || lvcbd2 from t2)"), concatenatedSQLTypesNames[6]);
+			verifyByteData(s.executeQuery("values(select lvcbd1 || lvcbd2 from t2)"), columnLVCBD2value);
+			s.executeUpdate("update t2 set lvcbd2 = lvcbd1 || lvcbd2");
+			verifyByteData(s.executeQuery("select lvcbd2 from t2"), columnLVCBD2value);
+
+			try { //this is if we ever run the test against DB2, we want to make sure table doesn't already exist in DB2
+			s.executeUpdate("drop table testBLOB_MAIN");
+			} catch(Exception ex) {}
+			s.executeUpdate("create table testBLOB_MAIN (cbd1 CHAR(10) FOR BIT DATA, vcbd1 VARCHAR(100) FOR BIT DATA, lvcbd1 LONG VARCHAR FOR BIT DATA, blob1 BLOB(2G), blob2 BLOB(256), blob3 BLOB(1M))");
+			ps = conn.prepareStatement("insert into testBLOB_MAIN values(?,?,?,?,?,?)");
+			columnCBD1value = new byte[10];
+			java.util.Arrays.fill(columnCBD1value, (byte)'a');
+			ps.setBytes(1, columnCBD1value);
+			columnVCBD1value = new byte[10];
+			java.util.Arrays.fill(columnVCBD1value, (byte)'b');
+			ps.setBytes(2, columnVCBD1value);
+			columnLVCBD1value = new byte[10];
+			java.util.Arrays.fill(columnLVCBD1value, (byte)'c');
+			ps.setBytes(3, columnLVCBD1value);
+			byte[] columnBLOB1value = new byte[10];
+			java.util.Arrays.fill(columnBLOB1value, (byte)'d');
+			ps.setBytes(4, columnBLOB1value);
+			byte[] columnBLOB2value = new byte[10];
+			java.util.Arrays.fill(columnBLOB2value, (byte)'e');
+			ps.setBytes(5, columnBLOB2value);
+			byte[] columnBLOB3value = new byte[10];
+			java.util.Arrays.fill(columnBLOB3value, (byte)'f');
+			ps.setBytes(6, columnBLOB3value);
+			ps.executeUpdate();
+
+			System.out.println("Test2o - CHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(A+B) when A+B<2G");
+			byte[] tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[columnCBD1value.length + tmpValue.length];
+			System.arraycopy(columnCBD1value, 0, columnBLOB2value, 0, columnCBD1value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB2value, columnCBD1value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd1 || blob2 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select cbd1 || blob2 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 = cast((cbd1 || blob2) as blob(256))");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test2p - BLOB(A) and CHAR(B) FOR BIT DATA concatenations will give result type of BLOB(A+B) when A+B<2G");
+			tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[tmpValue.length + columnCBD1value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB2value, 0, tmpValue.length);
+			System.arraycopy(columnCBD1value, 0, columnBLOB2value, tmpValue.length, columnCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob2 || cbd1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob2 || cbd1 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 =  cast((blob2 || cbd1) as blob(256))");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test2q - CHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(2G) when A+B>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[columnCBD1value.length + tmpValue.length];
+			System.arraycopy(columnCBD1value, 0, columnBLOB1value, 0, columnCBD1value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB1value, columnCBD1value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select cbd1 || blob1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select cbd1 || blob1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = cast((cbd1 || blob1) as blob(2G))");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test2r - BLOB(A) and CHAR(B) FOR BIT DATA concatenations will give result type of BLOB(2G) when A+B>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[tmpValue.length + columnCBD1value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB1value, 0, tmpValue.length);
+			System.arraycopy(columnCBD1value, 0, columnBLOB1value, tmpValue.length, columnCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob1 || cbd1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob1 || cbd1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = cast((blob1 || cbd1) as blob(2G))");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test2s - VARCHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(A+B) when A+B<2G");
+			tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[columnVCBD1value.length + tmpValue.length];
+			System.arraycopy(columnVCBD1value, 0, columnBLOB2value, 0, columnVCBD1value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB2value, columnVCBD1value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1 || blob2 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select vcbd1 || blob2 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 = cast((vcbd1 || blob2) as blob(256))");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test2t - BLOB(A) and VARCHAR(B) FOR BIT DATA concatenations will give result type of BLOB(A+B) when A+B<2G");
+			tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[tmpValue.length + columnVCBD1value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB2value, 0, tmpValue.length);
+			System.arraycopy(columnVCBD1value, 0, columnBLOB2value, tmpValue.length, columnVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob2 || vcbd1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob2 || vcbd1 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 = cast((blob2 || vcbd1) as blob(256))");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test2u - VARCHAR(A) FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(2G) when A+B>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[columnVCBD1value.length + tmpValue.length];
+			System.arraycopy(columnVCBD1value, 0, columnBLOB1value, 0, columnVCBD1value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB1value, columnVCBD1value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select vcbd1 || blob1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select vcbd1 || blob1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = cast((vcbd1 || blob1) as blob(2G))");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test2v - BLOB(A) and VARCHAR(B) FOR BIT DATA concatenations will give result type of BLOB(2G) when A+B>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[tmpValue.length + columnVCBD1value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB1value, 0, tmpValue.length);
+			System.arraycopy(columnVCBD1value, 0, columnBLOB1value, tmpValue.length, columnVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob1 || vcbd1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob1 || vcbd1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = cast((blob1 || vcbd1) as blob(2G))");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test2w - LONG VARCHAR FOR BIT DATA and BLOB(A) concatenations will give result type of BLOB(A+32K) when A+32K<2G");
+			tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[columnLVCBD1value.length + tmpValue.length];
+			System.arraycopy(columnLVCBD1value, 0, columnBLOB2value, 0, columnLVCBD1value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB2value, columnLVCBD1value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvcbd1 || blob2 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select lvcbd1 || blob2 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 = cast((lvcbd1 || blob2) as blob(256))");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test2x - BLOB(A) and LONG VARCHAR FOR BIT DATA concatenations will give result type of BLOB(A+32K) when A+32K<2G");
+			tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[tmpValue.length + columnLVCBD1value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB2value, 0, tmpValue.length);
+			System.arraycopy(columnLVCBD1value, 0, columnBLOB2value, tmpValue.length, columnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob2 || lvcbd1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob2 || lvcbd1 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 = cast((blob2 || lvcbd1) as blob(256))");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test2y - LONG VARCHAR FOR BIT DATA and BLOB(B) concatenations will give result type of BLOB(2G) when A+32K>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[columnLVCBD1value.length + tmpValue.length];
+			System.arraycopy(columnLVCBD1value, 0, columnBLOB1value, 0, columnLVCBD1value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB1value, columnLVCBD1value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select lvcbd1 || blob1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select lvcbd1 || blob1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = cast((lvcbd1 || blob1) as blob(2G))");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test2z - BLOB(A) and LONG VARCHAR FOR BIT DATA concatenations will give result type of BLOB(2G) when A+32K>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[tmpValue.length + columnLVCBD1value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB1value, 0, tmpValue.length);
+			System.arraycopy(columnLVCBD1value, 0, columnBLOB1value, tmpValue.length, columnLVCBD1value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob1 || lvcbd1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob1 || lvcbd1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = cast((blob1 || lvcbd1) as blob(2G))");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test21a - BLOB(A) and BLOB(B) concatenations will give result type of BLOB(A+B) when A+B<2G");
+			tmpValue = new byte[columnBLOB2value.length];
+			System.arraycopy(columnBLOB2value, 0, tmpValue, 0, columnBLOB2value.length);
+			columnBLOB2value = new byte[tmpValue.length + columnBLOB3value.length];
+			System.arraycopy(tmpValue, 0, columnBLOB2value, 0, tmpValue.length);
+			System.arraycopy(columnBLOB3value, 0, columnBLOB2value, tmpValue.length, columnBLOB3value.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob2 || blob3 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob2 || blob3 from testBLOB_MAIN)"), columnBLOB2value);
+			s.executeUpdate("update testBLOB_MAIN set blob2 = blob2 || blob3");
+			verifyByteData(s.executeQuery("select blob2 from testBLOB_MAIN"), columnBLOB2value);
+
+			System.out.println("Test21b - BLOB(A) and BLOB(B) concatenations will give result type of BLOB(2G) when A+B>2G");
+			tmpValue = new byte[columnBLOB1value.length];
+			System.arraycopy(columnBLOB1value, 0, tmpValue, 0, columnBLOB1value.length);
+			columnBLOB1value = new byte[columnBLOB2value.length + tmpValue.length];
+			System.arraycopy(columnBLOB2value, 0, columnBLOB1value, 0, columnBLOB2value.length);
+			System.arraycopy(tmpValue, 0, columnBLOB1value, columnBLOB2value.length, tmpValue.length);
+			dumpSomeMetaDataInfo(s.executeQuery("values(select blob2 || blob1 from testBLOB_MAIN)"), concatenatedSQLTypesNames[7]);
+			verifyByteData(s.executeQuery("values(select blob2 || blob1 from testBLOB_MAIN)"), columnBLOB1value);
+			s.executeUpdate("update testBLOB_MAIN set blob1 = blob2 || blob1");
+			verifyByteData(s.executeQuery("select blob1 from testBLOB_MAIN"), columnBLOB1value);
+
+			System.out.println("Test22 - try 2 empty char for bit data concatenation and verify that length comes back as 0 for the result");
+			dumpSomeMetaDataInfo(s.executeQuery("values(X'' || X'')"), concatenatedSQLTypesNames[4]);
+
+			s.executeUpdate("drop table testBLOB_MAIN");  
+			s.executeUpdate("drop table t2");
+			System.out.println("Test2 finished - CHAR FOR BIT DATA, VARCHAR FOR BIT DATA, LONGVARCHAR FOR BIT DATA and BLOB concatenation tests");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	private static void verifyStringData(ResultSet rs, String expectedValue) throws SQLException
+	{
+		if (rs == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		rs.next();
+		if (!(rs.getString(1).equals(expectedValue))) {
+			System.out.println("ERROR: expected value does not match actual value");
+			System.out.println("expected value is " + expectedValue);
+			System.out.println("what we got here is " + rs.getString(1));
+		}
+		else
+		{
+			System.out.println("Successful " + rs.getMetaData().getColumnTypeName(1) + " read of " + expectedValue.length() + " characters");
+		}
+	}
+
+	private static void verifyByteData(ResultSet rs, byte[] expectedValue) throws SQLException
+	{
+		if (rs == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		rs.next();
+		if (!(java.util.Arrays.equals(rs.getBytes(1),expectedValue))) {
+			System.out.println("ERROR: expected value does not match actual value");
+			System.out.println("expected value is " + expectedValue);
+			System.out.println("what we got here is " + rs.getBytes(1));
+		}
+		else
+		{
+			System.out.println("Successful " + rs.getMetaData().getColumnTypeName(1) + " read of " + expectedValue.length + " bytes");
+		}
+	}
+
+	private static void dumpSomeMetaDataInfo(ResultSet s, String expectedTypeName) throws SQLException
+	{
+		if (s == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		ResultSetMetaData rsmd = s.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		StringBuffer heading = new StringBuffer("\t ");
+
+		// Display column headings
+		for (int i=1; i<=numCols; i++)
+		{
+			System.out.println("datatype of concatenated string is : "+rsmd.getColumnTypeName(i));
+			if (!(rsmd.getColumnTypeName(i).equals(expectedTypeName)))
+				System.out.println("FAIL : expected datatype of concatenated string is : "+expectedTypeName);
+			System.out.println("precision of concatenated string is : "+rsmd.getPrecision(i));
+		}
+	}
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception: " + se.toString());
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se = se.getNextException();
+		}
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+driver 'org.apache.derby.jdbc.EmbeddedDriver';
+connect 'jdbc:derby:wombat;create=true';
+
+-- can we run a simple query?
+values 1;
+
+-- can we disconnect?
+disconnect;
+
+-- can we reconnect?
+connect 'jdbc:derby:wombat;create=true';
+
+-- can we run a simple query?
+values 1;
+disconnect;
+
+-- do we get a non-internal error when we try to create
+-- over an existing directory? (T#674)
+connect 'jdbc:derby:wombat/seg0;create=true';
+
+-- check to ensure an empty database name is taken
+-- as the name, over any connection attribute.
+-- this should fail.
+connect 'jdbc:derby: ;databaseName=wombat';
+
+-- and this should succeed (no database name in URL)
+connect 'jdbc:derby:;databaseName=wombat';
+disconnect;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# the connect test is testing ij functionality, and doesn't want to use the property
+# default driver or connection. So we ensure they are null here.
+driver=
+database=
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,22 @@
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.  
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings, 
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.locks.waitTimeout=120

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/consistencyChecker.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/consistencyChecker.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,111 @@
+--
+-- this test shows the consistency checker in action;
+--
+
+-- create a table with some indexes
+create table t1(i int, s smallint, c10 char(10), vc10 varchar(10), dc decimal(5,2));
+create index t1_i on t1(i);
+create index t1_s on t1(s);
+create index t1_c10 on t1(c10);
+create index t1_vc10 on t1(vc10);
+create index t1_dc on t1(dc);
+
+
+-- populate the tables
+insert into t1 values (1, 11, '1 1', '1 1 1 ', 111.11);
+insert into t1 values (2, 22, '2 2', '2 2 2 ', 222.22);
+insert into t1 values (3, 33, '3 3', '3 3 3 ', 333.33);
+insert into t1 values (4, 44, '4 4', '4 4 4 ', 444.44);
+
+-- verify that everything is alright
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+
+CREATE PROCEDURE RFHR(P1 VARCHAR(128), P2 VARCHAR(128))
+LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker.reinsertFirstHeapRow'
+PARAMETER STYLE JAVA;
+CREATE PROCEDURE DFHR(P1 VARCHAR(128), P2 VARCHAR(128))
+LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker.deleteFirstHeapRow'
+PARAMETER STYLE JAVA;
+CREATE PROCEDURE NFHR(P1 VARCHAR(128), P2 VARCHAR(128))
+LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker.nullFirstHeapRow'
+PARAMETER STYLE JAVA;
+
+
+autocommit off;
+
+-- differing row counts
+call RFHR('APP', 'T1');
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+-- drop and recreate each index to see differing count move to next index
+drop index t1_i;
+create index t1_i on t1(i);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_s;
+create index t1_s on t1(s);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_c10;
+create index t1_c10 on t1(c10);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_vc10;
+create index t1_vc10 on t1(vc10);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_dc;
+create index t1_dc on t1(dc);
+-- everything should be back to normal
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+
+-- delete 1st row from heap
+call DFHR('APP', 'T1');
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+-- drop and recreate each index to see differing count move to next index
+drop index t1_i;
+create index t1_i on t1(i);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_s;
+create index t1_s on t1(s);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_c10;
+create index t1_c10 on t1(c10);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_vc10;
+create index t1_vc10 on t1(vc10);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_dc;
+create index t1_dc on t1(dc);
+-- everything should be back to normal
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+
+-- set 1st row from heap to all nulls
+select * from t1;
+call NFHR('APP', 'T1');
+select * from t1;
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+-- drop and recreate each index to see differing count move to next index
+drop index t1_i;
+create index t1_i on t1(i);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_s;
+create index t1_s on t1(s);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_c10;
+create index t1_c10 on t1(c10);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_vc10;
+create index t1_vc10 on t1(vc10);
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+drop index t1_dc;
+create index t1_dc on t1(dc);
+-- everything should be back to normal
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+
+-- RESOLVE - Next test commented out due to inconsistency in store error
+-- message (sane vs. insane).  Check every index once store returns
+-- consistent error.
+-- insert a row with a bad row location into index
+-- call org.apache.derbyTesting.functionTests.util.T_ConsistencyChecker::insertBadRowLocation('APP', 'T1', 'T1_I');
+-- values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T1');
+
+-- cleanup
+drop table t1;
+commit;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/constantExpression.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/constantExpression.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,33 @@
+-- tests for constant expression evaluation
+autocommit off;
+
+-- create and populate a table
+create table t1(c1 int);
+insert into t1 values 1, 2, 3;
+
+-- false constant expressions
+select * from t1 where 1 <> 1;
+select * from t1 where 1 = 1 and 1 = 0;
+select * from t1 where 1 = (2 + 3 - 2);
+select * from t1 where (case when 1 = 1 then 0 else 1 end) = 1;
+select * from t1 where 1 in (2, 3, 4);
+select * from t1 where 1 between 2 and 3;
+
+prepare p1 as 'select * from t1 where ? = 1';
+prepare p2 as 'select * from t1 where cast(? as int) = 1';
+execute p1 using 'values 0';
+execute p2 using 'values 0';
+
+-- true constant expressions
+select * from t1 where 1 = 1;
+select * from t1 where 1 = 0 or 1 = 1;
+select * from t1 where 1 + 2 = (2 + 3 - 2);
+select * from t1 where (case when 1 = 1 then 1 else 0 end) = 1;
+select * from t1 where 1 in (2, 3, 4, 4, 3, 2, 1);
+select * from t1 where 1 + 1 between 0 and 3;
+
+execute p1 using 'values 1';
+execute p2 using 'values 1';
+
+-- clean up
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,204 @@
+DB2IsolationLevels.sql
+LOB.sql
+LOBDB2compatibility.sql
+LOBDB2compatibility_derby.properties
+LockTableQuery.subsql
+aggbuiltin.sql
+aggbuiltin_app.properties
+aggregate.sql
+aggregateOptimization.sql
+aggregateOptimization_app.properties
+aggregateOptimization_derby.properties
+altertable.sql
+altertable_derby.properties
+arithmetic.sql
+authorize.sql
+authorize_app.properties
+authorize_derby.properties
+autoincrement.sql
+bit.sql
+bit2.sql
+big.sql
+big_derby.properties
+case.sql
+cast.sql
+checkConstraint.sql
+columnDefaults.sql
+columnDefaults_app.properties
+comparisons.sql
+comparisons_app.properties
+compressTable.sql
+compressTable_app.properties
+compressTable_derby.properties
+connect.sql
+connect_app.properties
+connect_derby.properties
+consistencyChecker.sql
+constantExpression.sql
+createTestProcedures.subsql
+currentSchema.sql
+currentof_derby.properties
+cursorerrors.sql
+cursorerrors_app.properties
+cursorerrors_derby.properties
+datetime.sql
+db2Compatibility.sql
+dbManagerLimits_app.properties
+ddlTableLockMode.sql
+ddlTableLockMode_app.properties
+deadlockMode_derby.properties
+deadlockMode_sed.properties
+declareGlobalTempTableJava_derby.properties
+declareGlobalTempTableJavaJDBC30_app.properties
+default_app.properties
+default_derby.properties
+delete.sql
+depend.sql
+derived.sql
+desc_index.sql
+desc_index_app.properties
+distinct.minisql
+distinct.sql
+distinct.subsql
+distinctElimination.sql
+distinctElimination_derby.properties
+distinctFiltering.sql
+distinct_app.properties
+distinct_derby.properties
+dropTable.sql
+dynamicLikeOptimization.sql
+dynamicLikeOptimization_app.properties
+dynamicLikeOptimization_derby.properties
+ejbql.sql
+ejbql_app.properties
+ejbql_nonSPS.sql
+errorCode.sql
+errorCode_app.properties
+fk_nonSPS.sql
+fk_nonSPS_derby.properties
+floattypes.sql
+floattypes_app.properties
+forupdate.sql
+functions.sql
+groupBy.sql
+holdCursorJavaReflection_app.properties
+holdCursorIJ.sql
+holdCursorIJ_app.properties
+identifier.sql
+implicitConversions.sql
+implicitConversions_app.properties
+implicitConversions_derby.properties
+inbetween.sql
+inbetween_derby.properties
+infostreams.sql
+infostreams_derby.properties
+innerjoin.sql
+insert.sql
+insert_sed.properties
+isolationLevels.sql
+joinDeadlock.sql
+joinDeadlock.sql1
+joinDeadlock.sql2
+joinDeadlock_derby.properties
+joins.sql
+joins_app.properties
+langUnitTests.sql
+langUnitTests_derby.properties
+lockTable.sql
+lockTable_derby.properties
+logop.sql
+lojreorder.sql
+longStringColumn_derby.properties
+maxMemPerTab.sql
+maxMemPerTab_derby.properties
+miscerrors.sql
+modifyColumn.sql
+nestedCommit.sql
+nonreserved.sql
+nulls.sql
+openScans.sql
+openScans_derby.properties
+orderby.sql
+orderbyElimination.sql
+orderbyElimination_derby.properties
+outerjoin.sql
+paramij.sql
+partdml.sql
+partdml_app.properties
+positionedDelUpd.sql
+precedence.sql
+predicatesIntoViews.sql
+predicatesIntoViews_derby.properties
+primarykey.sql
+procedure_derby.properties
+refActions.sql
+refActions1.sql
+refActions2.sql
+refActions3.sql
+refActions4.sql
+refActions4_derby.properties
+refActions5.sql
+refActions5_derby.properties
+refActions6.sql
+refActions_derby.properties
+releaseCompileLocks.sql
+releaseCompileLocks_app.properties
+renameIndex.sql
+renameIndex_derby.properties
+renameTable.sql
+renameTable_derby.properties
+reopenScan.sql
+repeat_app.properties
+repeat_derby.properties
+schemas.sql
+select.sql
+selectivity.sql
+selectivity_app.properties
+selectivity_derby.properties
+simpleScroll.sql
+specjPlans.sql
+specjPlans_app.properties
+staleplans.sql
+staleplans_app.properties
+staleplans_derby.properties
+stmtCacheAliases.subsql
+stmtCacheAliasesRemove.subsql
+stmtCache0.sql
+stmtCache0_derby.properties
+stmtCache1.sql
+stmtCache1_app.properties
+stmtCache1_derby.properties
+stmtCache3_derby.properties
+stringtypes.sql
+subquery.sql
+subquery2.sql
+subquery2_derby.properties
+subqueryFlattening.sql
+subqueryFlattening_derby.properties
+subquery_derby.properties
+supersimple.sql
+supersimple_derby.properties
+syscat.sql
+tempRestrictions.sql
+triggerBeforeTrig.sql
+triggerGeneral.sql
+triggerGeneral_app.properties
+triggerGeneral_derby.properties
+triggerRecursion.sql
+triggerRecursion_derby.properties
+triggerRefClause.sql
+triggerStream.sql
+triggerStream_app.properties
+triggerStream_derby.properties
+ungroupedAggregatesNegative.sql
+union.sql
+unlimited.sql
+unlimited2.sql
+update.sql
+updateCursor_derby.properties
+valuesclause.sql
+views.sql
+wisconsin.sql
+wisconsin_app.properties
+wisconsin_derby.properties
+wisconsin_sed.properties

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/createTestProcedures.subsql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/createTestProcedures.subsql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+
+CREATE FUNCTION  PADSTRING (DATA VARCHAR(32000), LENGTH INTEGER) RETURNS VARCHAR(32000) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Formatters.padString' LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentSchema.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentSchema.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,187 @@
+-- test for CURRENT SCHEMA and optional DB2 compatible SET SCHEMA statement
+--
+-- test SET SCHEMA syntax variations
+-- syntax is SET [CURRENT] SCHEMA [=] (<identifier> | USER | ? | '<string>')
+--			 SET CURRENT SQLID [=] (<identifier> | USER | ? | '<string>')
+--
+values current schema;
+set schema sys;
+values current schema;
+create schema app;
+set current schema app;
+values current schema;
+set schema =  sys;
+values current schema;
+set current schema = app;
+values current schema;
+set schema sys;
+-- user should use default schema if no user set
+set schema user;
+values current schema;
+-- see what user does when there is a user
+create schema judy;
+connect 'jdbc:derby:wombat;user=judy' as judy;
+set schema app;
+values current schema;
+set schema user;
+values current schema;
+disconnect;
+set connection connection0;
+
+-- check for default
+values current schema;
+
+-- check that current sqlid works as a synonym
+values current sqlid;
+
+-- check that sqlid still works as an identifer
+create table sqlid(sqlid int);
+drop table sqlid;
+
+-- check that set current sqlid works
+set current sqlid judy;
+values current schema;
+
+-- check that set sqlid doesn't work (not DB2 compatible) - should get error
+set sqlid judy;
+
+-- change schema and make sure that the current schema is correct
+set schema sys;
+values current schema;
+set schema app;
+
+-- try using ? outside of a prepared statement
+set schema ?;
+
+-- use set schema in a prepared statement
+autocommit off;
+prepare p1 as 'set schema ?';
+-- should get error with no parameters
+execute p1;
+-- should get error if null is used
+create table t1(name varchar(128));
+insert into t1 values(null);
+execute p1 using 'select name from t1';
+-- should get error if schema doesn't exist
+execute p1 using 'values(''notthere'')';
+-- should error with empty string
+execute p1 using 'values('''')';
+-- should get error if wrong case used
+execute p1 using 'values(''sys'')';
+-- should get error if too many parameters
+execute p1 using 'values(''sys'',''app'')';
+-- USER should return an error as it is interpreted as a string constant not an
+-- identifier
+execute p1 using 'values(''USER'')';
+
+-- try positive test
+execute p1 using 'values(''SYS'')';
+values current schema;
+
+
+rollback;
+autocommit on;
+
+
+-- 
+-- try current schema in a number of statements types
+set schema app;
+create table t1 ( a varchar(128));
+
+-- insert
+insert into t1 values (current schema);
+select * from t1;
+set schema judy;
+insert into app.t1 values (current schema);
+select * from app.t1;
+-- delete where clause
+delete from app.t1 where a = current schema;
+select * from app.t1;
+set current schema app;
+
+
+-- target list
+select current schema from t1;
+
+-- where clause
+select * from t1 where a = current schema;
+
+-- update statement
+delete from t1;
+insert into t1 values ('test');
+select * from t1;
+update t1 set a = current schema;
+select * from t1;
+set schema judy;
+update app.t1 set a = current schema;
+select * from app.t1;
+set schema app;
+
+drop table t1;
+
+-- default
+set schema APP;
+create table t1 ( a int, b varchar(128) default current schema);
+insert into t1 (a) values (1);
+set schema SYS;
+insert into app.t1 (a) values (1);
+set schema judy;
+insert into app.t1 (a) values (1);
+set schema APP;
+select * from t1;
+drop table t1;
+
+-- check constraint - this should fail
+create table t1 ( a varchar(128), check (a = current schema));
+create table t1 ( a varchar(128), check (a = current sqlid));
+
+-- try mix case
+create schema "MiXCase";
+set schema "MiXCase";
+values current schema;
+set schema app;
+values current schema;
+set schema 'MiXCase';
+values current schema;
+-- following should get error - schema not found
+set schema 'MIXCASE';
+set schema mixcase;
+
+-- try long schema names (maximum schema identifier length has been changed to 30 as part of DB2 compatibility work)
+create schema t23456789012345678901234567890;
+values current schema;
+set schema app;
+values current schema;
+
+set schema t23456789012345678901234567890;
+values current schema;
+set schema app;
+values current schema;
+
+set schema 'T23456789012345678901234567890';
+values current schema;
+set schema app;
+values current schema;
+
+
+autocommit off;
+prepare p1 as 'set schema ?';
+execute p1 using 'values(''T23456789012345678901234567890'')';
+
+values current schema;
+
+-- the following should fail - 31 length
+create schema t234567890123456789012345678901;
+
+set schema t234567890123456789012345678901;
+
+set schema 'T234567890123456789012345678901';
+
+execute p1 using 'values(''T234567890123456789012345678901'')';
+
+rollback;
+autocommit on;
+
+-- clean up
+drop schema judy restrict;
+drop schema t234567890123456789012345678901 restrict;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,748 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+  This tests the current of statements, i.e.
+  delete where current of and update where current of.
+
+  Not done in ij since the cursor names may not be stable.
+
+  This could be more complete, but since this is SQL92 Entry
+  standard, we are assuming that some future purchase of the
+  NIST suite or some equivalent will suffice.
+ */
+
+public class currentof { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	private static Connection conn;
+	private static boolean passed = false;
+
+	public static void main(String[] args) {
+		System.out.println("Test currentof starting");
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			conn.setAutoCommit(false);
+
+			setup(true);
+			testDelete();
+			setup(false);
+			testUpdate();
+			teardown();
+
+			conn.commit();
+			conn.close();
+
+			passed = true;
+
+		} catch (Throwable e) {
+			System.out.println("FAIL: exception thrown:");
+			errorPrint(e);
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		System.out.println("Test currentof finished");
+	}
+
+	static void errorPrint(Throwable e) {
+		if (e == null) return;
+
+		e.printStackTrace();
+
+		if (e instanceof SQLException)
+			errorPrint(((SQLException)e).getNextException());
+	}
+
+	static void setup(boolean first) throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		if (first) {
+			verifyCount("create table t (i int, c char(50))",
+				stmt.executeUpdate("create table t (i int, c char(50))"),
+				0);
+
+			verifyCount("create table s (i int, c char(50))",
+				stmt.executeUpdate("create table s (i int, c char(50))"),
+				0);
+		} else {
+			verifyBoolean(
+				stmt.execute("delete from t"),
+				false);
+		}
+
+		verifyCount("insert into t values (1956, 'hello world')",
+		    stmt.executeUpdate("insert into t values (1956, 'hello world')"),
+			1);
+
+		verifyCount("insert into t values (456, 'hi yourself')",
+		    stmt.executeUpdate("insert into t values (456, 'hi yourself')"),
+			1);
+
+		verifyCount("insert into t values (180, 'rubber ducky')",
+		    stmt.executeUpdate("insert into t values (180, 'rubber ducky')"),
+			1);
+
+		verifyCount("insert into t values (3, 'you are the one')",
+		    stmt.executeUpdate("insert into t values (3, 'you are the one')"),
+			1);
+
+		stmt.close();
+
+		System.out.println("PASS: setup complete");
+	}
+
+
+	static void teardown() throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		verifyCount("drop table t",
+		    stmt.executeUpdate("drop table t"),
+			0);
+
+		verifyCount("drop table s",
+		    stmt.executeUpdate("drop table s"),
+			0);
+
+		stmt.close();
+
+		System.out.println("PASS: teardown complete");
+	}
+
+	static void verifyCount(String text, int count, int expect) throws SQLException {
+		if (count!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+count+" rows on stmt: "+text);
+			throw new SQLException("Wrong number of rows returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+count+
+							   (count == 1? " row" : " rows")+"on stmt: "+text);
+	}
+
+	static void verifyBoolean(boolean got, boolean expect) throws SQLException {
+		if (got!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+got);
+			throw new SQLException("Wrong boolean returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+got);
+	}
+
+	static int countRows(String query) throws SQLException {
+		Statement select = conn.createStatement();
+		ResultSet counter = select.executeQuery(query);
+		int count = 0;
+
+		while (counter.next()) {
+			count++;
+			System.out.println("Row: "+counter.getInt(1)+","+counter.getString(2));
+		}
+		counter.close();
+		select.close();
+
+		return count;
+	}
+
+	static void nextRow(ResultSet r) throws SQLException {
+		verifyBoolean(r.next(), true);
+		System.out.println("Row: "+r.getInt(1)+","+r.getString(2));
+	}
+
+	static void testDelete() throws SQLException {
+		PreparedStatement select, delete;
+		Statement select2, delete2;
+		ResultSet cursor;
+		int startCount, endCount;
+		boolean caught;
+
+		startCount = countRows("select i, c from t for read only");
+		System.out.println("Have "+startCount+" rows in table at start");
+
+		// because there is no order by (nor can there be)
+		// the fact that this test prints out rows may someday
+		// be a problem.  When that day comes, the row printing
+		// can (should) be removed from this test.
+
+		select = conn.prepareStatement("select i, c from t for update");
+		cursor = select.executeQuery(); // cursor is now open
+
+		// would like to test a delete attempt before the cursor
+		// is open, but finagling to get the cursor name would
+		// destroy the spirit of the rest of the tests,
+		// which want to operate against the generated name.
+
+		// TEST: cursor and target table mismatch
+		caught = false;
+		try {
+			delete = conn.prepareStatement("delete from s where current of "+
+									   cursor.getCursorName());
+		} catch (SQLException se) {
+
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+
+			if ("42X28".equals(m)) {
+				caught = true;
+				System.out.println("PASS: delete table and cursor table mismatch caught");
+			} else {
+				System.out.println("MAYBE FAIL: delete table and cursor table mismatch got unexpected exception");
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: delete table and cursor table mismatch not caught");
+		}
+
+		// TEST: find the cursor during compilation
+		delete = conn.prepareStatement("delete from t where current of "+
+									   cursor.getCursorName());
+
+		// TEST: delete before the cursor is on a row
+		caught = false;
+		try {
+			delete.executeUpdate();
+   		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("XCL08".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to delete cursor before first row caught");
+			} else {
+				System.out.println("...surprise error "+se);
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from delete on cursor before first row");
+		}
+
+		// TEST: find the cursor during execution and it is on a row
+		nextRow(cursor);
+		verifyCount("delete, ok",
+		    delete.executeUpdate(),
+			1);
+
+		// TEST: delete an already deleted row; expect an error
+		// expect second delete to throw a no current row exception
+		// REMIND: currently it is ugly, hopefully it will get better.
+		caught = false;
+		/* try {
+			verifyCount("<delete cursor on deleted row>", delete.executeUpdate(),
+						0);
+		} catch (SQLException se) {
+		// will replace this with SQLState check some day,
+		// at present this is a temporary message expectation.
+			String m = se.getMessage();
+			if (m.startsWith("\"Record ") && m.endsWith(" not found.\"")) {
+				caught = true;
+				System.out.println("PASS: Attempt to repeat delete did not find row");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from repeat delete");
+		}*/
+
+		// skip a row and delete another row so that two rows will
+		// have been removed from the table when we are done.
+		nextRow(cursor); // skip this row
+		nextRow(cursor);
+
+		verifyCount("<delete after skipping>",
+		    delete.executeUpdate(),
+			1);
+
+		// TEST: delete past the last row
+		nextRow(cursor); // skip this row
+		verifyBoolean(cursor.next(), false); // past last row now
+		caught = false;
+		try {
+			delete.executeUpdate(); // no current row / closed
+   		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("XCL08".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to delete cursor past last row caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from delete on cursor past last row");
+		}
+
+		// TEST: delete off a closed cursor
+		// Once this is closed then the cursor no longer exists.
+		cursor.close();
+		caught = false;
+		try {
+			delete.executeUpdate();
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("XCL07".equals(se.getSQLState())) {
+					caught = true;
+					System.out.println("PASS: Attempt to delete closed cursor caught");
+			}
+			if ("42X30".equals(se.getSQLState())) {
+					caught = true;
+					System.out.println("PASS: Attempt to delete closed cursor caught");
+			}
+			if (!caught)
+				throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from delete on closed cursor");
+		}
+
+		endCount = countRows ("select i, c from t for read only");
+		System.out.println("Have "+endCount+" rows in table at end");
+
+		verifyCount("startCount-endCount", startCount-endCount,2);
+
+		// TEST: no cursor with that name exists
+		delete2 = conn.createStatement();
+		caught = false;
+		try {
+			delete2.execute("delete from t where current of nosuchcursor");
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("42X30".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to delete nonexistent cursor caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from delete on nonexistent cursor");
+		}
+
+		delete.close();
+		delete2.close();
+		select.close();
+
+		// TEST: attempt to do positioned delete before cursor execute'd
+		// TBD
+
+		System.out.println("PASS: delete test complete");
+	}
+
+	static void testUpdate() throws SQLException {
+		PreparedStatement select = null;
+		PreparedStatement update = null;
+		Statement select2, update2;
+		ResultSet cursor = null;
+		int startCount, endCount;
+		boolean caught;
+
+		// these are basic tests without a where clause on the select.
+		// all rows are in and stay in the cursor's set when updated.
+
+		// because there is no order by (nor can there be)
+		// the fact that this test prints out rows may someday
+		// be a problem.  When that day comes, the row printing
+		// can (should) be removed from this test.
+
+		endCount = countRows ("select i, c from t for read only");
+		System.out.println("Have "+endCount+" rows in table at start");
+
+		// TEST: Updated column not found in for update of list
+		caught = false;
+		try {
+			select = conn.prepareStatement("select I, C from t for update of I");
+			cursor = select.executeQuery(); // cursor is now open
+			update = conn.prepareStatement(
+							"update t set C = 'abcde' where current of " +
+							cursor.getCursorName());
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("42X31".equals(m)) {
+				caught = true;
+				System.out.println("PASS: update of non-existant column caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of non-existant column not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor declared READ ONLY
+		caught = false;
+		try {
+			select = conn.prepareStatement("select I, C from t for read only");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+				{
+				caught = true;
+				System.out.println("PASS: update of read-only cursor caught");
+				}
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of read-only cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor declared FETCH ONLY
+		caught = false;
+		try {
+			select = conn.prepareStatement("select I, C from t for fetch only");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+				{
+				caught = true;
+				System.out.println("PASS: update of fetch-only cursor caught");
+				}
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of fetch-only cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor with a union
+		caught = false;
+		try {
+			select = conn.prepareStatement("select I, C from t union all select I, C from t");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+			{
+				System.out.println("PASS: update of union cursor caught");
+				caught = true;
+			}
+		} catch (SQLException se) {
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			String m = se.getSQLState();
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of union cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor with a join
+		caught = false;
+		try {
+			select = conn.prepareStatement("select t1.I, t1.C from t t1, t t2 where t1.I = t2.I");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+			{
+				System.out.println("PASS: update of join cursor caught");
+				caught = true;
+			}
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of join cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor with a derived table
+		caught = false;
+		try {
+			select = conn.prepareStatement("select I, C from (select * from t) t1");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+			{
+				System.out.println("PASS: update of derived table cursor caught");
+				caught = true;
+			}
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of derived table cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor with a values clause
+		caught = false;
+		try {
+			select = conn.prepareStatement("values (1, 2, 3)");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+			{
+				caught = true;
+				System.out.println("PASS: update of values clause cursor caught");
+			}
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of values clause cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		// TEST: Update of cursor with a subquery
+		caught = false;
+		try {
+			select = conn.prepareStatement("select I, C from t where I in (select I from t)");
+			cursor = select.executeQuery(); // cursor is now open
+			if (cursor.getCursorName() == null)
+			{
+				caught = true;
+				System.out.println("PASS: update of subquery cursor caught");
+			}
+		} catch (SQLException se) {
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			throw se;
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update of subquery cursor not caught");
+		}
+		cursor.close();
+		select.close();
+
+		select = conn.prepareStatement("select I, C from t for update");
+		cursor = select.executeQuery(); // cursor is now open
+
+		// would like to test a update attempt before the cursor
+		// is open, but finagling to get the cursor name would
+		// destroy the spirit of the rest of the tests,
+		// which want to operate against the generated name.
+
+		// TEST: cursor and target table mismatch
+		caught = false;
+
+		try {
+			update = conn.prepareStatement("update s set i=1 where current of "+
+									   cursor.getCursorName());
+		} catch (SQLException se) {
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			String m = se.getSQLState();
+			if ("42X29".equals(m)) {
+				caught = true;
+				System.out.println("PASS: update table and cursor table mismatch caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: update table and cursor table mismatch not caught");
+		}
+		// TEST: find the cursor during compilation
+		update = conn.prepareStatement(
+		    "update t set i=i+10, c='Gumby was here' where current of "+
+			cursor.getCursorName());
+
+		// TEST: update before the cursor is on a row
+		caught = false;
+		try {
+			verifyCount("update before the cursor", update.executeUpdate(), 0); // no current row / closed
+   		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("XCL08".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to update cursor before first row caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from update on cursor before first row");
+		}
+
+		// TEST: find the cursor during execution and it is on a row
+		nextRow(cursor);
+		verifyCount("update on row", update.executeUpdate(), 1);
+
+		// TEST: update an already updated row; expect it to succeed.
+		// will it have a cumulative effect?
+		verifyCount("2nd update on row", update.executeUpdate(), 1);
+
+		// skip a row and update another row so that two rows will
+		// have been removed from the table when we are done.
+		nextRow(cursor); // skip this row
+		nextRow(cursor);
+
+		verifyCount( "update after skipping", update.executeUpdate(), 1);
+
+		// TEST: update past the last row
+		nextRow(cursor); // skip this row
+		verifyBoolean(cursor.next(), false); // past last row now
+		caught = false;
+		try {
+			verifyCount("update: no current row", update.executeUpdate(), 0); // no current row / closed
+   		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("XCL08".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to update cursor past last row caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from update on cursor past last row");
+		}
+
+		// TEST: update off a closed cursor
+		cursor.close();
+		select.close();
+		caught = false;
+		try {
+			verifyCount("update on closed cursor", update.executeUpdate(),
+						0);
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("XCL07".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to update closed cursor caught");
+			}
+			if ("42X30".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to update closed cursor caught");
+			}
+			
+			if (!caught) {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from update on closed cursor");
+		}
+		update.close();
+
+		// TEST: no cursor with that name exists
+		update2 = conn.createStatement();
+		caught = false;
+		try {
+			update2.execute("update t set i=1 where current of nosuchcursor");
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("42X30".equals(m)) {
+				caught = true;
+				System.out.println("PASS: Attempt to update nonexistent cursor caught");
+			} else {
+				throw se;
+			}
+		} finally {
+			if (! caught)
+				System.out.println("FAIL: No error from update on nonexistent cursor");
+		}
+
+		endCount = countRows ("select i, c from t for read only");
+		System.out.println("Have "+endCount+" rows in table at end");
+
+		// TEST: attempt to do positioned update before cursor execute'd
+		// TBD
+
+
+		// TEST closing a cursor will close the related update
+		bug4395(conn, "CS4395"); // Application provided cursor name
+		bug4395(conn, null); // system provided cursor name
+
+
+		System.out.println("PASS: update test complete");
+	}
+
+	private static void bug4395(Connection conn, String cursorName) throws SQLException {
+
+		System.out.println("bug4395 Cursor Name " + (cursorName == null ? "System Generated" : "Application Defined"));
+
+		PreparedStatement select = conn.prepareStatement("select I, C from t for update");
+		if (cursorName != null)
+			select.setCursorName(cursorName);
+
+		ResultSet cursor = select.executeQuery(); // cursor is now open
+		// TEST: find the cursor during compilation
+		cursorName = cursor.getCursorName();
+		PreparedStatement update = conn.prepareStatement("update t set i=i+?, c=? where current of "+
+			cursorName);
+
+		nextRow(cursor);
+		update.setInt(1, 10);
+		update.setString(2, "Dan was here");
+		verifyCount("update: valid update", update.executeUpdate(), 1);
+		cursor.close();
+
+		// now prepare the a cursor with the same name but only column I for update
+		PreparedStatement selectdd = conn.prepareStatement("select I, C from t for update of I");
+		selectdd.setCursorName(cursorName);
+		cursor = selectdd.executeQuery();
+		nextRow(cursor);
+
+		try {
+			update.setInt(1, 7);
+			update.setString(2, "no update");
+			update.executeUpdate();
+			System.out.println("FAIL update succeeded after cursor has been changed");
+		} catch (SQLException se) {
+			String m = se.getSQLState();
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			if ("42X31".equals(m)) {
+				System.out.println("PASS: Attempt to update changed invalid cursor caught");
+			} else {
+				throw se;
+			}
+		}
+
+		cursor.close();
+		cursor = selectdd.executeQuery();
+		nextRow(cursor);
+		cursor.close();
+
+	}
+}
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/currentof_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+#
+# This properties file is for the currentof test.
+# its configuration's only difference from the default configuration
+# is that it runs with the statement cache on.
+#
+# This file is expected to be placed into $WS/systest/out by
+# the run script, and expects to be run in an environment where
+# the property derby.system.home points to $WS/systest/out.
+#
+# caching will help this test
+derby.language.statementCacheSize=1000
+derby.debug.true=StatementCacheInfo

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursor.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursor.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,335 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+  This tests cursor handling
+
+  Not done in ij since the cursor names may not be stable,
+  and we want to control navigation through the cursor rows.
+
+  This could be more complete, but since this is SQL92 Entry
+  standard, we are assuming that some future purchase of the
+  NIST suite or some equivalent will suffice.
+ */
+
+public class cursor { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	private static Connection conn;
+	private static boolean passed = false;
+
+	public static void main(String[] args) {
+		System.out.println("Test cursor starting");
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			conn.setAutoCommit(false);
+
+			setup(true);
+			testCursor();
+			testCursorParam();
+			testgetCursorName();
+			teardown();
+
+			conn.commit();
+			conn.close();
+
+			passed = true;
+
+		} catch (Throwable e) {
+			System.out.println("FAIL: exception thrown:");
+			passed = false;
+			JDBCDisplayUtil.ShowException(System.out,e);
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		System.out.println("Test cursor finished");
+	}
+
+	static void setup(boolean first) throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		if (first) {
+			verifyCount(
+				stmt.executeUpdate("create table t (i int, c char(50))"),
+				0);
+
+			verifyCount(
+				stmt.executeUpdate("create table s (i int, c char(50))"),
+				0);
+		} else {
+			verifyBoolean(
+				stmt.execute("delete from t"),
+				false);
+		}
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (1956, 'hello world')"),
+			1);
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (456, 'hi yourself')"),
+			1);
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (180, 'rubber ducky')"),
+			1);
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (3, 'you are the one')"),
+			1);
+
+		stmt.close();
+
+		System.out.println("PASS: setup complete");
+	}
+
+
+	static void teardown() throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t"),
+			0);
+
+		verifyCount(
+		    stmt.executeUpdate("drop table s"),
+			0);
+
+		stmt.close();
+
+		System.out.println("PASS: teardown complete");
+	}
+
+	static void verifyCount(int count, int expect) throws SQLException {
+		if (count!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+count+" rows");
+			throw new SQLException("Wrong number of rows returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+count+
+							   (count == 1? " row":" rows"));
+	}
+
+	static void verifyBoolean(boolean got, boolean expect) throws SQLException {
+		if (got!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+got);
+			throw new SQLException("Wrong boolean returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+got);
+	}
+
+	static int countRows(String query) throws SQLException {
+		Statement select = conn.createStatement();
+		ResultSet counter = select.executeQuery(query);
+		int count = 0;
+
+		while (counter.next()) {
+			count++;
+			System.out.println("Row: "+counter.getInt(1)+","+counter.getString(2));
+		}
+		select.close();
+
+		return count;
+	}
+
+	static void nextRow(ResultSet r) throws SQLException {
+		verifyBoolean(r.next(), true);
+		System.out.println("Row: "+r.getInt(1)+","+r.getString(2));
+	}
+
+	static boolean ifRow(ResultSet r) throws SQLException {
+		boolean b = r.next();
+
+		if (b)
+			System.out.println("Row: "+r.getInt(1)+","+r.getString(2));
+
+		return b;
+	}
+
+	static void testCursor() throws SQLException {
+		PreparedStatement select, delete;
+		Statement select2, delete2;
+		ResultSet cursor;
+		boolean caught;
+
+		// because there is no order by (nor can there be)
+		// the fact that this test prints out rows may someday
+		// be a problem.  When that day comes, the row printing
+		// can (should) be removed from this test.
+
+		select = conn.prepareStatement("select i, c from t for update");
+		cursor = select.executeQuery(); // cursor is now open
+
+		// TEST: fetch of a row works
+		nextRow(cursor);
+
+		// TEST: close and then fetch gets error on fetch.
+		cursor.close();
+
+		// bang away on the nexts for a little while,
+		// see what the error quiets out to...
+		for (int i=0;i<5;i++) {
+			caught = false;
+			try {
+				ifRow(cursor); // no current row / closed
+	   		} catch (SQLException se) {
+				JDBCDisplayUtil.ShowSQLException(System.out,se);
+				caught = true;
+				System.out.println("PASS: Attempt to get next on closed cursor caught");
+			}
+			if (! caught)
+				System.out.println("FAIL: No error from next on closed cursor");
+		}
+
+		// restart the query for another test.
+		cursor = select.executeQuery();
+
+		// TEST: next past the end of the table.
+		while (ifRow(cursor)); // keep going to the last row
+		caught = false;
+		try {
+			boolean b = ifRow(cursor); // no current row / closed (past the last row)
+			if (!b) {
+				System.out.println("No current row");
+				caught = true;
+			}
+   		} catch (SQLException se) {
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			caught = true;
+			System.out.println("PASS: Attempt to get next after end of cursor caught");
+		}
+		if (! caught)
+			System.out.println("FAIL: No error from next past end of cursor");
+
+		System.out.println("PASS: cursor test complete");
+
+		cursor.close();
+	}
+
+	static void testCursorParam() throws SQLException {
+		PreparedStatement select, delete;
+		Statement select2, delete2;
+		ResultSet cursor;
+		boolean caught;
+
+		// because there is no order by (nor can there be)
+		// the fact that this test prints out rows may someday
+		// be a problem.  When that day comes, the row printing
+		// can (should) be removed from this test.
+
+		select = conn.prepareStatement("select i, c from t where ?=1 for update");
+		select.setInt(1,1);
+		cursor = select.executeQuery(); // cursor is now open
+
+		// TEST: fetch of a row works
+		nextRow(cursor);
+
+		// TEST: close and then fetch gets error on fetch.
+		cursor.close();
+
+		// bang away on the nexts for a little while,
+		// see what the error quiets out to...
+		for (int i=0;i<5;i++) {
+			caught = false;
+			try {
+				ifRow(cursor); // no current row / closed
+	   		} catch (SQLException se) {
+				JDBCDisplayUtil.ShowSQLException(System.out,se);
+				caught = true;
+				System.out.println("PASS: Attempt to get next on closed cursor caught");
+			}
+			if (! caught)
+				System.out.println("FAIL: No error from next on closed cursor");
+		}
+
+		// restart the query for another test.
+		select.setBoolean(1,false);
+		select.setCursorName("ForCoverageSake");
+		cursor = select.executeQuery();
+
+		if (cursor.getCursorName().equals("ForCoverageSake")) {
+			System.out.println("PASS: cursor name set");
+		}
+		else
+		{
+			System.out.println("FAIL: cursor name not set, is still: "+cursor.getCursorName());
+		}
+
+		// TEST: next past the end of the table -- expect no rows at all.
+		caught = false;
+		try {
+			boolean b = ifRow(cursor); // no current row / closed (past the last row)
+			if (!b) {
+				System.out.println("No current row");
+				caught = true;
+			}
+   		} catch (SQLException se) {
+			JDBCDisplayUtil.ShowSQLException(System.out,se);
+			caught = true;
+			System.out.println("PASS: Attempt to get next after end of cursor caught");
+		}
+		if (! caught)
+			System.out.println("FAIL: No error from next past end of cursor");
+
+		System.out.println("PASS: cursor test complete");
+
+		cursor.close();
+	}
+	static void testgetCursorName() throws SQLException {
+			// test cursor name
+			testCursorName("select * from t", (String)null);
+			testCursorName("select * from t for update", (String)null);
+			testCursorName("select * from t for update of i", (String)null);
+			testCursorName("select * from t", "myselect");
+			testCursorName("select * from t for update", "myselect");
+			testCursorName("select * from t for update of i", "myselect");
+	}
+	static private void testCursorName(String statement, String cursorname)  throws SQLException{
+		System.out.println("Test cursor name for " + statement + 
+			" Cursor name = " + cursorname);
+		Statement s = conn.createStatement();
+		if (cursorname != null)
+			s.setCursorName(cursorname);
+		ResultSet rs = s.executeQuery(statement);
+		if (rs != null)
+		{
+			String cursorName = rs.getCursorName();
+			System.out.println("cursor name = " + cursorName);
+		}
+		rs.close();
+		s.close();
+
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,178 @@
+-- What happens when language exceptions are thrown on a next?
+-- NOTE: this test is dependent on no optimization, i.e., always getting
+-- the same access methods (table scans and join order matching the from list)
+
+-- create the tables
+create table t1 (c1 int);
+create table t2 (c1 int);
+
+-- populate the tables
+insert into t1 values 1, 0, 2;
+insert into t2 values 1, 0, 2;
+
+autocommit off;
+
+-- What happens on a fetch after a divide by 0 error?
+
+-- error in select list
+-- single table query
+get cursor c1 as 'select c1, c1/c1 from t1';
+next c1;
+-- divide by 0
+next c1;
+-- Verify that cursor closed on error
+next c1;
+close c1;
+
+-- join #1
+get cursor c2 as 
+	'select a.c1, b.c1, a.c1/a.c1 from t1 a, t1 b where a.c1 = b.c1';
+next c2;
+-- divide by 0
+next c2;
+-- Verify that cursor closed on error
+next c2;
+close c2;
+
+-- join #2
+get cursor c3 as 
+	'select a.c1, b.c1, b.c1/a.c1 from t1 a, t1 b';
+next c3;
+next c3;
+next c3;
+-- divide by 0
+next c3;
+-- Verify that cursor closed on error
+next c3;
+close c3;
+
+-- union all
+get cursor c4 as
+	'select c1, c1/c1 from t1 union all select c1, c1/c1 from t1';
+next c4;
+-- divide by 0 on left side
+next c4;
+-- Verify that cursor closed on error
+next c4;
+close c4;
+
+-- error in where clause
+
+-- single table
+get cursor c10 as 'select * from t1 where c1/c1 = 1';
+-- (1)
+next c10;
+-- divide by 0
+next c10;
+-- Verify that cursor closed on error
+next c10;
+close c10;
+
+-- join #1, error on open (1st row in left)
+-- (cursor will not exist after error on open)
+get cursor c12 as 'select * from t1 a, t1 b where a.c1 <> 1 and a.c1/a.c1 = 1';
+-- next should fail, since no cursor
+next c12;
+
+-- join #2, error on 2nd row on left
+get cursor c13 as 'select * from t1 a, t1 b where b.c1 = 1 and a.c1/a.c1 = 1';
+-- (1, 1)
+next c13;
+-- divide by 0 from left
+next c13;
+-- Verify that cursor closed on error
+next c13;
+close c13;
+
+-- join #3, error on 1st row in right
+get cursor c14 as 'select * from t1 a, t1 b where b.c1 <> 1 and b.c1/b.c1 = 1';
+-- divide by 0 from right
+next c14;
+-- Verify that cursor closed on error
+next c14;
+close c14;
+
+-- join #4, error on 2nd row in right
+get cursor c15 as 'select * from t1 a, t1 b where b.c1 <> 2 and b.c1/b.c1 = 1';
+-- (1, 1)
+next c15;
+-- divide by 0 from right
+next c15;
+-- Verify that cursor closed on error
+next c15;
+close c15;
+
+-- union all
+get cursor c11 as 'select * from t1 where c1/c1 = 1 union all
+				   select * from t1 where c1/c1 = 1';
+-- (1) from left
+next c11;
+-- divide by 0 from left
+next c11;
+-- Verify that cursor closed on error
+next c11;
+close c11;
+
+-- error in join clause
+get cursor c5 as 'select * from t1, t2 where t1.c1/t2.c1 = 1';
+-- (1, 1)
+next c5;
+-- (1, 0) -> divide by 0
+next c5;
+-- Verify that cursor closed on error
+next c5;
+close c5;
+
+-- error in subquery
+
+-- subquery in select list
+
+-- single table query
+get cursor c8 as 'select c1, (select c1/c1 from t2 where t1.c1 = c1) from t1';
+-- (1, 1)
+next c8;
+-- divide by 0
+next c8;
+-- Verify that cursor closed on error
+next c8;
+close c8;
+
+-- join
+get cursor c9 as 'select a.c1, (select c1/c1 from t2 where c1 = a.c1) from t1 a, t1 b
+				  where a.c1 = b.c1';
+-- (1, 1)
+next c9;
+-- divide by 0
+next c9;
+-- Verify that cursor closed on error
+next c9;
+close c9;
+
+-- subquery in where clause
+
+-- single table query
+get cursor c6 as 'select * from t1 
+				  where c1 = (select c1/c1 from t2 where t1.c1 = c1) or c1 = 2';
+-- (1)
+next c6;
+-- divide by 0
+next c6;
+-- Verify that cursor closed on error
+next c6;
+close c6;
+
+-- join
+get cursor c7 as 'select * from t1 a, t1 b
+				  where a.c1 = b.c1 and 
+						(a.c1 = (select c1/c1 from t2 where a.c1 = c1) or a.c1 = 2)';
+-- (1, 1)
+next c7;
+-- divide by 0
+next c7;
+-- Verify that cursor closed on error
+next c7;
+close c7;
+
+-- drop the tables
+drop table t1;
+drop table t2;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+#
+# This is the default system properties file for JSQL and JAVA tests.
+#
+# It will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij (or the GUI on ij) to load the driver and make an
+# initial connection to the database.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>.sysprop to be used instead of this file.
+#
+#
+database=jdbc:derby:wombat;create=true
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/cursorerrors_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,10 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.optimizer.optimizeJoinOrder=false
+derby.optimizer.ruleBasedOptimization=true
+derby.optimizer.noTimeout=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/datetime.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/datetime.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,580 @@
+--
+-- Test the builtin date/time types
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, real
+--
+-- other things we might test:
+-- interaction with UUID and other user defined types
+-- compatibility with dynamic parameters and JDBC getDate etc. methods
+
+--
+-- Test the arithmetic operators
+--
+
+
+create table t (i int, s smallint, c char(10), v varchar(50), 
+	d double precision, r real, e date, t time, p timestamp);
+
+insert into t values (null, null, null, null, null, null, null, null, null);
+insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0,
+	300.0e0, date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'));
+insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0,
+	-300.0e0, date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:45'));
+
+-- date/times don't support math, show each combination
+select e + e from t;
+select i + e from t;
+select p / p from t;
+select p * s from t;
+select t - t from t;
+select -t from t;
+select +e from t;
+
+--
+-- comparisons
+--
+
+-- select each one in turn
+-- each pair gets the same result
+select e from t where e = date('1992-01-01');
+select e from t where date('1992-01-01') = e;
+select t from t where t > time('09:30:15');
+select t from t where time('09:30:15') < t;
+select p from t where p < timestamp('1997-06-30 01:01:01');
+select p from t where timestamp('1997-06-30 01:01:01' )> p;
+
+-- now look for a value that isn't in the table
+select e from t where e <> date('1992-01-01');
+select e from t where date('1992-01-01') <> e;
+
+-- now test null = null semantics
+select e, t, p from t where e = e or t = t or p = p;
+
+-- now test <=, >=, <>
+-- each pair gets the same result
+select e from t where e >= date('1990-01-01');
+select e from t where date('1990-01-01')<= e;
+select t from t where t <= time('09:30:15');
+select t from t where time('09:30:15') >= t;
+select p from t where p <> timestamp('1997-06-30 01:01:01');
+select p from t where timestamp('1997-06-30 01:01:01' )<> p;
+
+-- show comparisons with mixed types don't work
+select e from t where e <= i;
+select e from t where t < s;
+select e from t where p > d;
+select e from t where e >= t;
+select e from t where t <> p;
+select e from t where p = e;
+
+-- check limit values
+values( date('0001-1-1'), date('9999-12-31'), date('2/29/2000'), date('29.2.2004'));
+values( time('00:00:00'), time('23:59:59'));
+values( time('00 AM'), time( '12:59 AM'), time('1 PM'), time('12:59 PM'));
+values( time('00.00.00'), time('23.59.59'), time('24.00.00'));
+values( timestamp('0001-1-1 00:00:00'), timestamp('9999-12-31 23:59:59.999999'));
+
+-- show that overflow and underflow are not allowed
+-- (SQL92 would have these report errors)
+values( date('0000-01-01'));
+values( date('2000-00-01'));
+values( date('2000-01-00'));
+values( date('10000-01-01'));
+values( date('2000-13-01'));
+values( date('2000-01-32'));
+values( date('1900-02-29'));
+values( date('2001-02-29'));
+
+values( time('25.00.00'));
+values( time('24.00.01'));
+values( time('0:60:00'));
+values( time('00:00:60'));
+
+-- show garbage in == errors out
+select date( 'xxxx') from t where p is null;
+select time( '') from t where p is null;
+select timestamp( 'is there anything here?' )from t where p is null;
+select timestamp( '1992-01- there anything here?' )from t where p is null;
+select timestamp( '--::' )from t where p is null;
+select time('::::') from t where p is null;
+
+-- show is not null at work
+select * from t 
+where e is not null
+and t is not null
+and p is not null;
+
+-- test =SQ
+-- this gets cardinality error
+select 'fail' from t where e = (select e from t);
+-- this works
+select 'pass' from t where e = (select e from t where d=200);
+-- this gets cardinality error
+select 'fail' from t where t = (select t from t);
+-- this works
+select 'pass' from t where t = (select t from t where d=200);
+-- this gets cardinality error
+select 'fail' from t where p = (select p from t);
+-- this works
+select 'pass' from t where p = (select p from t where d=200);
+
+drop table t;
+
+--
+-- test syntax: precision cannot be specified
+--
+create table wrong (t time(-100));
+create table wrong (t time(0));
+create table wrong (t time(23));
+create table wrong (t timestamp(-100));
+create table wrong (t timestamp(0));
+create table wrong (t timestamp(6));
+create table wrong (t timestamp(9));
+create table wrong (t timestamp(23));
+
+--
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50), 
+	d double precision, r real, e date, t time, p timestamp);
+create table target (e date not null, t time not null, p timestamp not null);
+
+-- we have already tested inserting literals.
+
+insert into source values (1, 2, '3', '4', 5, 6, date('1997-07-07'),
+	time('08:08:08'),timestamp('1999-09-09 09:09:09'));
+
+-- these work:
+insert into target select e,t,p from source;
+
+-- these will all fail:
+insert into target select p,e,t from source;
+insert into target select i,s,d from source;
+insert into target (t,p) select c,r from source;
+
+delete from source;
+insert into source values (null, null, null, null, null, null, null, null, null);
+-- these fail because the target won't take a null -- of any type
+insert into target values(null, null, null);
+insert into target select e,t,p from source;
+-- these still fail with type errors:
+insert into target select p,e,t from source;
+insert into target select i,s,d from source;
+insert into target (t,p)select c,r from source;
+
+-- expect 1 row in target:
+select * from target;
+
+-- unchanged:
+update target set e = e, t = t, p = p;
+select * from target;
+
+-- alters the row:
+update target set e = date('1990-01-01');
+select * from target;
+
+-- not settable to null
+update target set e = null;
+select * from target;
+
+-- nullable col can be set to null:
+update source set e = date('1492-10-01');
+select e from source;
+update source set e = null;
+select e from source;
+
+-- these should get type errors
+update target set e = 1;
+update source set p = 1.4e10;
+update source set i = date('1001-01-01');
+
+
+-- tests with current functions:
+delete from source;
+delete from target;
+insert into source values (1, 2, '3', '4', 5, 6, date('1997-06-07'),
+	time('08:08:08'),timestamp('9999-09-09 09:09:09'));
+
+-- these tests are 'funny' so that the masters won't show a diff
+-- every time.
+select 'pass' from source 
+where current_date = current_date
+and current_time = current_time
+and current_timestamp = current_timestamp;
+
+select 'pass' from source 
+where current_date > date('1996-12-31')
+and current_time <= time(	'23:59:59') -- may oopsie on leap second days
+and current_timestamp <> timestamp( -- this comment is just more whitespace
+    '1996-12-31 00:00:00');
+
+-- test with DB2 compatible syntax
+select 'pass' from source 
+where current date = current date
+and current time = current time
+and current timestamp = current timestamp;
+
+select 'pass' from source 
+where current date > date('1996-12-31')
+and current time <= time(	'23:59:59') -- may oopsie on leap second days
+and current timestamp <> timestamp( -- this comment is just more whitespace
+    '1996-12-31 00:00:00');
+
+-- test escaped functions
+-- CURRENT_DATE escaped function not supported in DB2 UDB
+-- CURRENT_TIME escaped function not supported in DB2 UDB
+select 'pass' from source 
+where current_date = {fn current_date()}
+and current_time = {fn current_time()}
+and current_timestamp = current_timestamp;
+
+select 'pass' from source 
+where current_date = {fn curdate()}
+and current_time = {fn curtime()}
+and current_timestamp = current_timestamp;
+
+-- current_date() and current_time() not valid in DB2. curdate() and curtime()
+-- are as escaped functions only.
+values curdate();
+values curtime();
+values current_date();
+values current_time();
+
+values {fn current_date()};
+values {fn current_time()};
+
+-- DB2 UDB compatible test for escaped functions
+select 'pass' from source 
+where hour(current_time) = {fn hour(current_time)}
+and minute(current_time) = {fn minute(current_time)}
+and second(current_time) = {fn second(current_time)}
+and year(current_date)   = {fn year(current_date)};
+
+-- valid jdbc date and time escaped functions
+values {fn hour('23:38:10')};
+values {fn minute('23:38:10')};
+values {fn second('23:38:10')};
+values {fn year('2004-03-22')};
+
+-- currents do have types, these inserts fail:
+insert into source values (0, 0, '0', '0', 0, 0,
+	current_time, current_time, current_timestamp);
+insert into source values (0, 0, '0', '0', 0, 0,
+	current_date, current_timestamp, current_timestamp);
+insert into source values (0, 0, '0', '0', 0, 0,
+	current_date, current_time, current_date);
+
+-- this insert works
+insert into source values (0, 0, '0', '0', 0, 0,
+	current_date, current_time, current_timestamp);
+
+-- test with DB2 syntax
+-- this insert works
+insert into source values (0, 0, '0', '0', 0, 0,
+	current date, current time, current timestamp);
+
+
+-- this test will diff if the select is run just after midnight,
+-- and the insert above was run just before midnight...
+select * from source where e <> current_date and p <> current_timestamp;
+-- test with DB2 syntax
+select * from source where e <> current date and p <> current timestamp;
+
+select 'pass' from source 
+where e <= current_date and p <= current_timestamp;
+
+-- reduce it back to one row
+delete from source where i=0;
+
+-- tests with extract:
+select year( e),
+	month( e),
+	day( date( '1997-01-15')),
+	hour( t),
+	minute( t),
+	second( time( '01:01:42')),
+	year( p),
+	month( p),
+	day( p),
+	hour( timestamp( '1992-01-01 14:11:23')),
+	minute( p),
+	second( p)
+from source;
+
+-- extract won't work on other types
+select month( i) from source;
+select hour( d) from source;
+
+-- extract won't work on certain field/type combos
+select month( t) from source;
+select day( t) from source;
+select year( t) from source;
+select hour( e) from source;
+select minute( e) from source;
+select second( e) from source;
+
+update source set i=month( e), s=minute( t),
+	d=second( p);
+
+-- should be true and atomics should match field named as label in date/times
+select i,e as "month",s,t as "minute",d,p as "second" 
+	from source 
+	where       (i = month(e))
+		and (s = minute(t))
+		and (d = second(p));
+
+-- fields should match the fields in the date (in order)
+select p, year( p) as "year",
+	month( p) as "month",
+	day( p) as "day",
+	hour( p) as "hour",
+	minute( p) as "minute",
+	second( p) as "second"
+from source;
+
+-- jdbc escape sequences
+values ({d '1999-01-12'}, {t '11:26:35'}, {ts '1999-01-12 11:26:51'});
+values year( {d '1999-01-12'});
+values hour( {t '11:28:10'});
+values day( {ts '1999-01-12 11:28:23'});
+
+drop table source;
+drop table target;
+
+-- random tests for date
+create table sertest(d date, s Date,
+	o Date);
+insert into sertest values (date('1992-01-03'), null, null);
+select * from sertest;
+update sertest set s=d;
+update sertest set o=d;
+insert into sertest values (date( '3245-09-09'), date( '1001-06-07'),
+	date( '1999-01-05'));
+select * from sertest;
+select * from sertest where d > s;
+update sertest set d=s;
+
+-- should get type errors:
+insert into sertest values (date('3245-09-09'), time('09:30:25'), null);
+insert into sertest values (null, null, time('09:30:25'));
+insert into sertest values (null, null, timestamp('1745-01-01 09:30:25'));
+
+-- should work...
+update sertest set d=o;
+
+select * from sertest where s is null and o is not null;
+
+-- should work
+select month(s) from sertest where s is not null;
+select day(o) from sertest;
+
+drop table sertest;
+
+-- conversion tests
+drop table convtest;
+create table convtest(d date, t time, ts timestamp);
+insert into convtest values(date('1932-03-21'),  time('23:49:52'), timestamp('1832-09-24 10:11:43.32'));
+insert into convtest values(date('0001-03-21'),  time('5:22:59'), timestamp('9999-12-31 23:59:59.999999'));
+insert into convtest values(null, null, null);
+-- these should fail
+select CAST (d AS time) from convtest;
+select CAST (t AS date) from convtest;
+-- these should work
+select CAST (t AS time) from convtest;
+select CAST (d AS date) from convtest;
+select CAST (ts AS time) from convtest;	
+select CAST (ts AS date) from convtest;	
+-- show time and date separately as timestamp will be filtered out
+select CAST(CAST (ts AS timestamp) AS date),
+	CAST(CAST (ts AS timestamp) AS time) 
+from convtest;	
+-- casting from a time to a timestamp sets the date to current date
+select 'pass', CAST (CAST(t AS timestamp) AS time) from convtest
+where CAST(CAST(t AS timestamp) AS date)=current_date;
+-- time should be 0
+select CAST (CAST (d AS timestamp) AS date),
+	CAST(CAST(d AS timestamp) AS time) from convtest;	
+-- convert from strings
+create table convstrtest(d varchar(30), t char(30), ts long varchar);
+insert into convstrtest values('1932-03-21',  '23:49:52', '1832-09-24 10:11:43.32');
+insert into convstrtest values(null, null, null);
+-- these should fail - note when casting from character string the format has to
+-- be correct
+select CAST (d AS time) from convstrtest;
+select CAST (t AS date) from convstrtest;
+select CAST (ts AS time) from convstrtest;	
+select CAST (ts AS date) from convstrtest;	
+-- these should work
+select CAST (t AS time) from convstrtest;
+select CAST (d AS date) from convstrtest;
+-- show time and date separately as timestamp will be filtered out
+select CAST(CAST (ts AS timestamp) AS date),
+	CAST(CAST (ts AS timestamp) AS time) 
+from convstrtest;	
+-- test aggregates
+-- sum should fail
+select sum(d) from convtest;
+select sum(t) from convtest;
+select sum(ts) from convtest;
+-- these should work
+select count(d) from convtest;
+select count(t) from convtest;
+select count(ts) from convtest;
+insert into convtest values(date('0001-03-21'),  time('5:22:59'), timestamp('9999-12-31 23:59:59.999999'));
+-- distinct count should be 2 not 3
+select count(distinct d) from convtest;
+select count(distinct t) from convtest;
+select count(distinct ts) from convtest;
+-- min should not be null!!!!!!!!
+select min(d) from convtest;
+select min(t) from convtest;
+-- show time and date separately as timestamp will be filtered out
+select CAST(CAST (min(ts) AS timestamp) AS date),
+	CAST(CAST (min(ts) AS timestamp) AS time) 
+from convtest;	
+select max(d) from convtest;
+select max(t) from convtest;
+-- show time and date separately as timestamp will be filtered out
+select CAST(CAST (max(ts) AS timestamp) AS date),
+	CAST(CAST (max(ts) AS timestamp) AS time)
+from convtest;
+drop table convtest;
+drop table convstrtest;
+
+create table ts (ts1 timestamp, ts2 timestamp);
+
+-- ISO format
+-- leading zeros may be omited from the month, day and part of the timestamp
+insert into ts values ('2003-03-05-17.05.43.111111', '2003-03-05 17:05:43.111111');
+insert into ts values ('2003-3-03-17.05.43.111111', '2003-3-03 17:05:43.111111');
+insert into ts values ('2003-3-2-17.05.43.111111', '2003-3-2 17:05:43.111111');
+insert into ts values ('2003-03-2-17.05.43.111111', '2003-03-2 17:05:43.111111');
+insert into ts values ('2003-3-1-17.05.43.1', '2003-3-1 17:05:43.1');
+insert into ts values ('2003-3-1-17.05.43.12', '2003-3-1 17:05:43.12');
+insert into ts values ('2003-3-1-17.05.43.123', '2003-3-1 17:05:43.123');
+insert into ts values ('2003-3-1-17.05.43.1234', '2003-3-1 17:05:43.1234');
+insert into ts values ('2003-3-1-17.05.43.12345', '2003-3-1 17:05:43.12345');
+insert into ts values ('2003-3-1-17.05.43.123456', '2003-3-1 17:05:43.123456');
+insert into ts values ('2003-3-1-17.05.43', '2003-3-1 17:05:43');
+
+-- trailing blanks are allowed
+insert into ts values ('2002-03-05-17.05.43.111111   ', '2002-03-05 17:05:43.111111   ');
+insert into ts values ('2002-03-05-17.05.43.1   ', '2002-03-05 17:05:43.1   ');
+insert into ts values ('2002-03-05-17.05.43    ', '2002-03-05 17:05:43    ');
+
+-- UDB allows this by "appending a zero"; so, cloudscape follows
+insert into ts values ('2003-3-1-17.05.43.', '2003-3-1 17:05:43'); 
+
+insert into ts values ('2003-3-1-17.05.43.0', '2003-3-1 17:05:43.0'); 
+
+insert into ts values ('0003-03-05-17.05.43.111111', '0003-03-05 17:05:43.111111');
+
+select * from ts;
+
+select * from ts where ts1=ts2;
+
+delete from ts;
+
+-- should be rejected because leading zero in year is missing
+insert into ts (ts1) values ('03-03-05-17.05.43.111111');
+insert into ts (ts1) values ('103-03-05-17.05.43.111111');
+insert into ts (ts1) values ('3-03-05-17.05.43.111111');
+
+-- not valid Time format in the timestamp strings: cloudscape rejects
+insert into ts (ts1) values ('2003-3-24-13.1.02.566999');
+insert into ts (ts1) values ('2003-3-24-13.1.1.569');
+insert into ts (ts1) values ('2003-3-24-1.1.1.56');
+insert into ts (ts1) values ('2003-3-24-1.1.1');
+insert into ts (ts1) values ('2003-3-1-17.05.4.'); 
+insert into ts (ts1) values ('2003-03-05-7.05.43.111111');
+
+-- invalid ISO format: cloudscape rejects
+insert into ts (ts1) values ('2003-3-1 17.05.43.123456'); 
+
+-- Don't allow more than microseconds in ISO format: cloudscape rejects
+insert into ts (ts1) values ('2003-03-05-17.05.43.999999999'); 
+insert into ts (ts1) values ('2003-03-05-17.05.43.999999000'); 
+
+select * from ts;
+
+drop table ts;
+
+-- Test the timestamp( d, t) function
+create table t (datecol date, dateStr varchar(16), timecol time, timeStr varchar(16), expected timestamp);
+insert into t( dateStr, timeStr) values( '2004-03-04', '12:01:02');
+insert into t( dateStr, timeStr) values( null, '12:01:03');
+insert into t( dateStr, timeStr) values( '2004-03-05', null);
+update t set datecol = date( dateStr), timecol = time( timeStr);
+update t set expected = timestamp( dateStr || ' ' || timeStr) where dateStr is not null and timeStr is not null;
+select dateStr, timeStr from t
+  where (expected is not null and (expected <> timestamp( dateCol, timeCol) or timestamp( dateCol, timeCol) is null))
+    or (expected is null and timestamp( dateCol, timeCol) is not null);
+select dateStr, timeStr from t
+  where (expected is not null and (expected <> timestamp( dateStr, timeStr) or timestamp( dateStr, timeStr) is null))
+    or (expected is null and timestamp( dateStr, timeStr) is not null);
+select dateStr, timeStr from t
+  where (expected is not null and timestamp( dateStr, timeStr) <> timestamp( dateCol, timeCol))
+    or (expected is null and timestamp( dateStr, timeStr) is not null);
+select dateStr, timeStr from t
+  where expected is not null and date( timestamp( dateCol, timeCol)) <> dateCol;
+select dateStr, timeStr from t
+  where expected is not null and time( timestamp( dateCol, timeCol)) <> timeCol;
+-- Error cases
+select timestamp( dateCol, dateCol) from t where dateCol is not null;
+select timestamp( timeCol, timeCol) from t where timeCol is not null;
+values timestamp( 'xyz', '12:01:02');
+values timestamp( '2004-03-04', 'xyz');
+drop table t;
+
+create table t (t time);
+
+-- ISO format: UDB is okay.
+insert into t values ('17.05.44');
+insert into t values ('17.05.00');
+insert into t values ('00.05.43');
+insert into t values ('00.00.00');
+-- DB2 keeps '24:00:00' but Cloudcape returns '00:00:00'
+insert into t values ('24.00.00');
+
+-- trailing blanks are allowed
+insert into t values ('17.05.11  ');
+insert into t values ('17:05:11  ');
+
+-- 7 rows
+select * from t;
+
+delete from t;
+
+-- end value tests...
+insert into t values ('24.60.60');
+insert into t values ('04.00.60');
+insert into t values ('03.60.00');
+
+-- not valid Time string ISO format: HH.MM.SS
+insert into t values ('07.5.44');
+insert into t values ('07.05.4');
+insert into t values ('7.5.44');
+insert into t values ('7.5.4');
+insert into t values ('7.5.0');
+insert into t values ('-4.00.00');
+
+insert into t values ('A4.00.00');
+insert into t values ('7.5.999');
+insert into t values ('07.05.111');
+insert into t values ('111.05.11');
+insert into t values ('11.115.00');
+
+-- no row
+select * from t;
+
+drop table t;
+
+values time('2004-04-15 16:15:32.387');
+values time('2004-04-15-16.15.32.387');
+values time('2004-04-15-16.15.32.387 zz');
+values time('x-04-15-16.15.32.387');
+
+values date('2004-04-15 16:15:32.387');
+values date('2004-04-15-16.15.32.387');
+values date('2004-04-15-16.15.32.387 zz');
+values date('2004-04-15-16.15.32.y');

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/db2Compatibility.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/db2Compatibility.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1194 @@
+
+-- With DB2 current schema is equal to the user name on login.
+CREATE TABLE DST.DEF_SCHEMA_TEST(NAME_USER VARCHAR(128), NAME_SCHEMA VARCHAR(128));
+INSERT INTO DST.DEF_SCHEMA_TEST VALUES(USER, CURRENT SCHEMA);
+SELECT COUNT(*) FROM DST.DEF_SCHEMA_TEST WHERE NAME_USER = NAME_SCHEMA;
+SET SCHEMA DILBERT;
+
+connect 'jdbc:derby:wombat;user=dilbert';
+INSERT INTO DST.DEF_SCHEMA_TEST VALUES(USER, CURRENT SCHEMA);
+SELECT COUNT(*) FROM DST.DEF_SCHEMA_TEST WHERE NAME_USER = NAME_SCHEMA;
+VALUES CURRENT SCHEMA;
+disconnect;
+
+SET CONNECTION CONNECTION0;
+
+-- still should not be created
+SET SCHEMA DILBERT;
+
+connect 'jdbc:derby:wombat;user=dilbert';
+INSERT INTO DST.DEF_SCHEMA_TEST VALUES(USER, CURRENT SCHEMA);
+SELECT COUNT(*) FROM DST.DEF_SCHEMA_TEST WHERE NAME_USER = NAME_SCHEMA;
+VALUES CURRENT SCHEMA;
+CREATE TABLE SCOTT(i int);
+insert into SCOTT VALUES(4);
+disconnect;
+
+SET CONNECTION CONNECTION0;
+
+SELECT * FROM DILBERT.SCOTT;
+DROP TABLE DILBERT.SCOTT;
+DROP TABLE DST.DEF_SCHEMA_TEST;
+DROP SCHEMA DST RESTRICT;
+DROP SCHEMA DILBERT RESTRICT;
+
+
+-- Simple Cloudscape specific features.
+
+-- CLASS ALIAS;
+
+create class alias MyMath for java.lang.Math;
+drop class alias MyMath;
+create class alias for java.lang.Math;
+drop class alias Math;
+
+-- METHOD ALIAS;
+
+create method alias myabs for java.lang.Math.abs;
+drop method alias myabs;
+
+-- STORED PREPARED STATEMENTS 
+-- create statement no more supported both in db2 and cloudscpae mode. -ve test for that
+create statement s1 as values 1,2;
+-- alter, drop and execute statements are still supported for existing stored prepared statements for customers
+alter statement recompile all;
+-- following will give error because there is no stored prepared statement s1 in the database
+drop statement s1;
+
+-- clean up
+DROP TABLE t1;
+DROP TABLE t2;
+DROP CLASS ALIAS ExternalInsert;
+DROP STATEMENT insert1;
+
+-- Primary key constraint, DB2 requires NOT null on the columns.
+
+create table customer (id int primary key, name char(100));
+drop table customer;
+
+create table customer (id  int NOT NULL, id2 int, name char(100), primary key (id, id2));
+drop table customer;
+
+-- Unique key constraint, DB2 requires NOT null on the columns.
+
+create table customer (id int unique, name char(100));
+
+create table customer (id  int NOT NULL, id2 int, constraint custCon unique(id, id2));
+
+-- check they actually work!
+create table customer (id int NOT NULL primary key, name char(100));
+drop table customer;
+
+create table customer (id  int NOT NULL, id2 int NOT NULL, name char(100), primary key (id, id2));
+drop table customer;
+
+
+-- drop schema requires restrict
+create schema fred;
+drop schema fred;
+drop schema fred restrict;
+
+-- create schema not supported for schemas that start with SYS
+
+create schema SYS;
+create schema SYSDJD;
+create schema "SYSNO";
+create schema "sys";
+create schema "sysok";
+drop schema "sys" restrict;
+drop schema "sysok" restrict;
+
+-- data types not supported
+create table NOTYPE(i int, b BOOLEAN);
+create table NOTYPE(i int, b TINYINT);
+create table NOTYPE(i int, b java.lang.String);
+create table NOTYPE(i int, b com.acme.Address);
+create table NOTYPE(i int, b org.apache.derby.vti.VTIEnvironment);
+
+-- VTI in the DELETE statement
+-- beetle 5234
+CREATE TABLE testCS (col1 int, col2 char(30), col3 int);
+INSERT INTO testCS VALUES (100, 'asdf', 732);
+DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+
+-- VTI in the INSERT statement
+-- beetle 5234
+INSERT INTO NEW org.apache.derbyTesting.functionTests.util.serializabletypes.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (100, 'asdf', 732);
+
+-- VTI in the SELECT statement
+-- beetle 5234
+select * from testCS, new org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+select * from new com.acme.myVTI() as T;
+select * from new org.apache.derbyTesting.not.myVTI() as T;
+select * from new org.apache.derby.diag.LockTable() as T;
+
+-- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TABLE tb1(a int);
+CREATE TRIGGER testtrig1 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (1000);
+
+-- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig2 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+
+-- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig3 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL SELECT * FROM testCS, NEW org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+
+-- clean up
+DROP TABLE tb1;
+DROP TABLE testCS;
+
+-- PROPERTIES in DB2 mode
+create table maps (country_ISO_code char(2)) PROPERTIES derby.storage.pageSize=262144;
+
+-- PROPERTIES in DB2 mode
+-- beetle 5177
+create table maps2 (country_ISO_code char(2));
+create index map_idx1 on maps2(country_ISO_code) properties derby.storage.pageSize = 2048;
+-- BTREE not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error in DB2 mode
+create btree index map_idx2 on maps2(country_ISO_code);
+create unique btree index map_idx2 on maps2(country_ISO_code);
+drop table maps2;
+
+-- SET LOCKING clause in DB2 mode
+-- beetle 5208
+create table maps1 (country_ISO_code char(2)) set locking = table;
+create table maps2 (country_ISO_code char(2)) set locking = row;
+drop table maps1;
+drop table maps2;
+
+-- ALTER TABLE statement
+-- beetle 5201
+
+-- Locking syntax
+-- negative tests
+create table tb1 (country_ISO_code char(2));
+alter table tb1 set locking = table;
+alter table tb1 set locking = row;
+
+-- Locking syntax 
+-- positive tests
+-- beetle 5201
+create table tb2 (country_ISO_code char(2));
+alter table tb2 locksize table;
+alter table tb2 locksize row;
+
+-- clean up
+drop table tb1;
+drop table tb2;
+
+-- VTI in the DELETE statement
+-- beetle 5234
+CREATE TABLE testCS (col1 int, col2 char(30), col3 int);
+INSERT INTO testCS VALUES (100, 'asdf', 732);
+DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+
+-- VTI in the INSERT statement
+-- beetle 5234
+INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (100, 'asdf', 732);
+
+-- VTI in the SELECT statement
+-- beetle 5234
+select * from testCS, new org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+
+-- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TABLE tb1(a int);
+CREATE TRIGGER testtrig1 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') VALUES (1000);
+
+-- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig2 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL DELETE FROM NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable('jdbc:derby:wombat', 'testCS') WHERE col1 = 100 and col3 = 732;
+
+-- VTI in CREATE TRIGGER statement
+-- beetle 5234
+CREATE TRIGGER testtrig3 AFTER DELETE ON tb1 FOR EACH ROW MODE DB2SQL SELECT * FROM testCS, NEW org.apache.derbyTesting.functionTests.util.VTIClasses.PositiveInteger_VTICosting_SI(col1, 1) a;
+
+-- clean up
+DROP TABLE tb1;
+DROP TABLE testCS;
+
+-- RENAME/DROP COLUMN
+-- ALTER RENAME TABLE/COLUMN
+-- beetle 5205
+create table table tt (a int, b int, c int);
+alter table tt drop column b;
+alter table tt rename to ttnew;
+alter table tt rename c to d;
+rename column tt.c to tt.d;
+drop table tt;
+
+-- CASCADE/RESTRICT on DROP CONSTRAINT
+-- beetle 5204
+ALTER TABLE TT DROP CONSTRAINT ABC CASCADE;
+ALTER TABLE TT DROP CONSTRAINT ABC2 RESTRICT;
+
+-- CASCADE/RESTRICT on DROP TABLE
+-- beetle 5206
+DROP TABLE TT CASCADE;
+DROP TABLE TT RESTRICT;
+
+-- beetle 5216
+-- there should only be one autoincrement column per table 
+CREATE TABLE T1 (C1 INT GENERATED ALWAYS AS IDENTITY 
+(START WITH 1, INCREMENT BY 1));
+-- this statement should raise an error because it has more than one auto increment column in a table
+CREATE TABLE T2 (C1 INT GENERATED ALWAYS AS IDENTITY 
+(START WITH 1, INCREMENT BY 1), C2 INT GENERATED ALWAYS AS 
+IDENTITY (START WITH 1, INCREMENT BY 1));
+-- clean up
+DROP TABLE t1;
+DROP TABLE t2;
+
+-- limit to 16 columns in an index key
+-- beetle 5181
+-- this create index statement should be successful in db2 compat mode because ix2 specifies 16 columns
+create table testindex1 (a int,b int,c int,d int ,e int ,f int,g int,h int,i int,j int,k int,l int,m int,n int,o int,p int);
+create unique index ix1 on testindex1(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
+
+-- this create index statement should fail in db2 compat mode because ix2 specifies more than 16 columns
+create table testindex2 (a int,b int,c int,d int ,e int ,f int,g int,h int,i int,j int,k int,l int,m int,n int,o int,p int,q int);
+create unique index ix2 on testindex2(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
+--clean up
+drop table testindex1;
+drop table testindex2;
+
+-- insert into a lob column using explicit cast
+-- positive test
+-- beetle 5221
+CREATE TABLE testblob(col1 BLOB(1M));
+INSERT INTO testblob (col1) VALUES cast(X'11' as blob(1M));
+CREATE TABLE testclob(col1 CLOB(1M));
+INSERT INTO testclob (col1) VALUES cast('asdf' as clob(1M));
+
+-- ALTER INDEX
+-- beetle 5222
+CREATE TABLE TT (A INT);
+CREATE INDEX TTIDX ON TT(A);
+ALTER INDEX TTIDX RENAME TTIDXNEW;
+-- clean up
+drop table tt;
+
+-- CREATE and DROP AGGREGATE
+-- beetle 5222
+CREATE AGGREGATE STDEV FOR org.apache.derbyTesting.functionTests.util.aggregates.StandardDeviation;
+DROP AGGREGATE STDEV;
+CREATE AGGREGATE MAXBUTONE FOR org.apache.derbyTesting.functionTests.util.aggregates.MaxButOneDef;
+DROP AGGREGATE MAXBUTONE;
+
+-- CREATE and DROP CLASS ALIAS
+-- beetle 5222
+create class alias for java.util.Hashtable;
+drop class alias Hashtable;
+
+-- CREATE and DROP METHOD ALIAS
+-- beetle 5222
+create method alias hashtable for java.lang.Math.sin;
+drop method alias hashtable;
+
+-- RENAME COLUMN
+-- beetle 5222
+create table TT(col1 int, col2 int);
+rename column TT.col2 to newcolumn2;
+drop table TT;
+
+-- SET TRIGGERS
+-- beetle 5222
+CREATE TABLE tb1 (col1 int, col2 int, col3 int, constraint chk1 check (col1 > 0));
+CREATE TABLE tb2 (col1 char(30), c2 int, c3 int);
+CREATE TRIGGER testtrig2 AFTER UPDATE on tb1
+REFERENCING OLD as oldtable FOR EACH ROW MODE DB2SQL INSERT INTO tb2 VALUES ('tb', oldtable.col1, oldtable.col2);
+SET TRIGGERS FOR tb1 ENABLED;
+SET TRIGGERS FOR tb1 DISABLED;
+SET TRIGGERS testtrig2 ENABLED;
+SET TRIGGERS testtrig2 DISABLED;
+-- clean up
+DROP TRIGGER testtrig1;
+DROP TRIGGER testtrig2;
+DROP TRIGGER testtrig3;
+DROP TABLE tb1;
+DROP TABLE tb2;
+
+-- INSTANCEOF in where clause of select, delete, update,
+-- beetle 5224
+create table t1 (i int, s smallint, c10 char(10), vc30 varchar(30), b boolean);
+create table mm (x org.apache.derbyTesting.functionTests.util.ManyMethods);
+create table sc (x org.apache.derbyTesting.functionTests.util.SubClass);
+select i from t1 where i instanceof java.lang.Integer;
+select i from t1 where i instanceof java.lang.Number;
+select i from t1 where i instanceof java.lang.Object;
+select s from t1 where s instanceof java.lang.Integer;
+select b from t1 where b instanceof java.lang.Boolean;
+select c10 from t1 where c10 instanceof java.lang.String;
+select vc30 from t1 where vc30 instanceof java.lang.String;
+-- following are negative test cases because boolean values disallowed in select clause
+select x instanceof org.apache.derbyTesting.functionTests.util.ManyMethods from mm; 
+select x instanceof org.apache.derbyTesting.functionTests.util.SubClass from mm; 
+select x instanceof org.apache.derbyTesting.functionTests.util.SubSubClass from mm; 
+select (i + i) instanceof java.lang.Integer from t1;
+select (i instanceof java.lang.Integer) = true from t1;
+DELETE FROM t1 where i INSTANCEOF 
+org.apache.derbyTesting.functionTests.util.serializabletypes.City;
+UPDATE t1 SET s = NULL WHERE i INSTANCEOF 
+org.apache.derbyTesting.functionTests.util.serializabletypes.City;
+-- clean up
+drop table t1;
+drop table mm;
+drop table sc;
+
+-- datatypes
+-- beetle 5233
+create table testtype1(col1 bit);
+create table testtype2(col1 bit varying(10));
+-- boolean datatype already disabled
+create table testtype3(col1 boolean);
+create table testtype4(col1 LONG NVARCHAR);
+create table testtype5(col1 LONG VARBINARY);
+create table testtype6(col1 LONG BIT VARYING);
+create table testtype7(col1 LONG BINARY);
+create table testtype8(col1 NCHAR);
+create table testtype9(col1 NVARCHAR(10));
+-- tinyint datatype already disabled
+create table testtype10(col1 TINYINT);
+create table testtype11 (a national character large object (1000));
+-- beetle5426
+-- disable nclob
+create table beetle5426 (a nclob (1M));
+create table testtype12 (a national char(100));
+CREATE CLASS ALIAS FOR org.apache.derbyTesting.functionTests.util.serializabletypes.Tour;
+create table testtype13 (a Tour);
+-- clean up
+drop table testtype1;
+drop table testtype2;
+drop table testtype3;
+drop table testtype4;
+drop table testtype5;
+drop table testtype6;
+drop table testtype7;
+drop table testtype8;
+drop table testtype9;
+drop table testtype10;
+drop table testtype11;
+drop table beetle5426;
+drop table testtype12;
+drop class alias Tours;
+drop table testtype13;
+
+-- limit char to 254 and varchar to 32672 columns in db2 mode
+-- beetle 5552
+-- following will fail because char length > 254
+create table test1(col1 char(255));
+-- following will pass because char length <= 254
+create table test1(col1 char(254), col2 char(23));
+-- try truncation error with the 2 chars
+-- the trailing blanks will not give error
+insert into test1 values('a','abcdefghijklmnopqrstuvw   ');
+-- the trailing non-blank characters will give error
+insert into test1 values('a','abcdefghijklmnopqrstuvwxyz');
+insert into test1 values('12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890','a');
+drop table test1;
+-- following will fail because varchar length > 32672
+create table test1(col1 varchar(32673));
+-- following will pass because varchar length <= 32672
+create table test1(col1 varchar(32672), col2 varchar(1234));
+drop table test1;
+
+-- SET CONSTRAINTS statement
+-- beetle 5251
+CREATE TABLE testsetconst1 (col1 CHAR(7) NOT NULL, PRIMARY KEY(col1));
+CREATE TABLE testsetconst2 (col1 char(7) NOT NULL, CONSTRAINT fk FOREIGN KEY(col1) REFERENCES testsetconst1(col1));
+SET CONSTRAINTS fk DISABLED;
+SELECT STATE FROM SYS.SYSCONSTRAINTS;
+SET CONSTRAINTS fk ENABLED;
+SELECT STATE FROM SYS.SYSCONSTRAINTS;
+SET CONSTRAINTS ALL DISABLED;
+SELECT STATE FROM SYS.SYSCONSTRAINTS;
+SET CONSTRAINTS FOR testsetconst1 ENABLED;
+SELECT STATE FROM SYS.SYSCONSTRAINTS;
+
+-- clean up
+DROP TABLE testsetconst1;
+DROP TABLE testsetconst2;
+
+-- CALL statement
+-- beetle 5252
+call org.apache.derby.iapi.db.Factory::getDatabaseOfConnection().dropAllJDBCMetaDataSPSes();
+
+-- Beetle 5203: DB2 restricts what can be used for default clauses, and enforces
+-- constraints on the default clause that Cloudscape does not.
+-- Following should be okay:
+create table deftest1 (i int default 1);
+create table deftest2 (vc varchar(30) default 'howdy');
+create table deftest21 (vc clob(10) default 'okie');
+create table deftest3 (d date default current date);
+create table deftest31 (d date default '2004-02-08');
+create table deftest5 (vc char(130) default current schema);
+create table deftest4 (c char(130) default user);
+create table deftest6 (d decimal(5,2) default null);
+create table deftest7 (d decimal(5,2) default 123.450);
+create table deftest8 (f float default 1.234);
+-- make sure they actually work @ insertion.
+insert into deftest1 values (default);
+insert into deftest2 values (default);
+insert into deftest21 values (default);
+insert into deftest3 values (default);
+insert into deftest31 values (default);
+insert into deftest4 values (default);
+insert into deftest5 values (default);
+insert into deftest6 values (default);
+insert into deftest7 values (default);
+insert into deftest8 values (default);
+-- cleanup.
+drop table deftest1;
+drop table deftest2;
+drop table deftest21;
+drop table deftest3;
+drop table deftest31;
+drop table deftest4;
+drop table deftest5;
+drop table deftest6;
+drop table deftest7;
+drop table deftest8;
+-- Beetle 5203, con't: following should all fail (though they'd pass in Cloudscape mode).
+-- expressions:
+create table deftest1 (vc varchar(30) default java.lang.Integer::toBinaryString(3));
+create table deftest2 (i int default 3+4);
+-- floating point assignment to non-float column.
+create table deftest3 (i int default 1.234);
+-- decimal value with too much precision.
+create table deftest4 (d decimal(5,2) default 1.2234);
+-- char constant longer than 254.
+create table deftest5 (vc varchar(300) default 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
+-- function calls (built-in and other) should fail with error 42894 (NOT with 42X01), to match DB2.
+create table t1 (i int default abs(0));
+create table t1 (i int default someFunc('hi'));
+-- Type mismatches should fail with 42894 (NOT with 42821), to match DB2.
+create table t1 (i int default 'hi');
+
+-- Beetle 5281: <cast-function> for a default.
+-- Date-time functions (DATE, TIME, and TIMESTAMP)
+create table t1a (d date default date(current date));
+create table t1b (d date default date('1978-03-22'));
+create table t2a (t time default time(current time));
+create table t2b (t time default time('08:28:08'));
+create table t3a (ch timestamp default timestamp(current timestamp));
+create table t3b (ts timestamp default timestamp('2004-04-27 08:59:02.91'));
+-- BLOB function (not yet supported).
+create table t4 (b blob default blob('nope'));
+-- cleanup.
+drop table t1a;
+drop table t1b;
+drop table t2a;
+drop table t2b;
+drop table t3a;
+drop table t3b;
+
+-- DROP constraint syntax that should be supported in db2 compat mode:
+-- beetle 5204
+CREATE TABLE testconst1 (col1 CHAR(7) NOT NULL, col2 int CONSTRAINT cc CHECK(col2 > 1), PRIMARY KEY(col1));
+CREATE TABLE testconst2 (col1 char(7) NOT NULL, col2 char(7) NOT NULL, col3 int, CONSTRAINT fk FOREIGN KEY(col1) REFERENCES testconst1(col1), CONSTRAINT uk UNIQUE (col2));
+-- DROP FOREIGN KEY syntax should be supported in DB2 compat mode
+insert into testconst1( col1, col2) values( 'a', 2);
+insert into testconst1( col1, col2) values( 'a', 2);
+insert into testconst1( col1, col2) values( 'b', 0);
+
+insert into testconst2( col1, col2, col3) values( 'a', 'a', 1);
+insert into testconst2( col1, col2, col3) values( 'z', 'b', 1);
+insert into testconst2( col1, col2, col3) values( 'a', 'a', 1);
+
+-- beetle 5204
+ALTER TABLE testconst1 DROP FOREIGN KEY cc;
+ALTER TABLE testconst2 DROP UNIQUE fk;
+ALTER TABLE testconst2 DROP CHECK fk;
+
+ALTER TABLE testconst2 DROP FOREIGN KEY fk;
+-- DROP PRIMARY KEY syntax should be supported in DB2 compat mode
+-- beetle 5204
+ALTER TABLE testconst1 DROP PRIMARY KEY;
+-- DROP UNIQUE KEY syntax should be supported in DB2 compat mode
+-- beetle 5204
+ALTER TABLE testconst2 DROP UNIQUE uk;
+-- DROP CHECK condition syntax should be supported in DB2 compat mode
+-- beetle 5204
+ALTER TABLE testconst1 DROP CHECK cc;
+
+insert into testconst1( col1, col2) values( 'a', 2);
+insert into testconst1( col1, col2) values( 'b', 0);
+
+insert into testconst2( col1, col2, col3) values( 'z', 'b', 1);
+insert into testconst2( col1, col2, col3) values( 'a', 'a', 1);
+
+ALTER TABLE testconst2 DROP FOREIGN KEY noSuchConstraint;
+ALTER TABLE testconst2 DROP CHECK noSuchConstraint;
+ALTER TABLE testconst2 DROP UNIQUE noSuchConstraint;
+ALTER TABLE testconst1 DROP PRIMARY KEY;
+
+-- clean up
+DROP TABLE testconst1;
+DROP TABLE testconst2;
+
+-- CREATE TRIGGERS
+-- beetle 5253
+CREATE TABLE tb1 (col1 int, col2 int, col3 int, constraint chk1 check (col1 > 0));
+CREATE TABLE tb2 (col1 char(30), c2 int, c3 int);
+-- change syntax of before to "NO CASCADE BEFORE"
+CREATE TRIGGER testtrig1 NO CASCADE BEFORE UPDATE OF col1,col2 on tb1 FOR EACH ROW MODE DB2SQL VALUES 1;
+CREATE TRIGGER testtrig2 AFTER UPDATE on tb1
+REFERENCING OLD as oldtable FOR EACH ROW MODE DB2SQL INSERT INTO tb2 VALUES ('tb', oldtable.col1, oldtable.col2);
+CREATE TRIGGER testtrig3 AFTER UPDATE on tb1
+REFERENCING OLD as oldtable FOR EACH ROW MODE DB2SQL INSERT INTO tb2 VALUES ('tb', oldtable.col1, oldtable.col2);
+-- clean up
+DROP TRIGGER testtrig1;
+DROP TRIGGER testtrig2;
+DROP TRIGGER testtrig3;
+DROP TABLE tb1;
+DROP TABLE tb2;
+
+-- SET TRANSACTION ISOLATION LEVEL
+-- beetle 5254
+-- these SET TRANSACTION ISOLATION statements fail in db2 compat mode because it has cloudscape specific syntax
+create table t1(c1 int not null constraint asdf primary key);
+insert into t1 values 1;
+SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
+SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+-- clean up
+drop table t1;
+
+-- statements should pass in db2 compat mode
+-- beetle 5260
+autocommit off;
+create table t1(c1 int not null constraint asdf primary key);
+commit;
+insert into t1 values 1;
+-- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation serializable;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation read committed;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation repeatable read;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- verify SET TRANSACTION ISOLATION commits and changes isolation level
+set isolation read uncommitted;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+drop table t1;
+
+-- SET ISOLATION statement
+-- beetle 5260
+-- set isolation statement that are supported in db2
+create table t1(c1 int not null constraint asdf primary key);
+insert into t1 values 1;
+set isolation serializable;
+set isolation read committed;
+set isolation repeatable read;
+set isolation read uncommitted;
+-- clean up
+drop table t1;
+
+-- SELECT statement testing
+-- beetle 5255
+
+CREATE TABLE t1(col1 int, col2 int);
+CREATE TABLE t2(col1 int, col2 int);
+INSERT INTO t1 VALUES(3,4);
+INSERT INTO t2 VALUES(3,4);
+
+-- CROSS JOIN not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+-- (1) CROSS JOIN should be disabled in FROM clause of SELECT statement
+SELECT * FROM t1 CROSS JOIN t2;
+
+-- (2) USING should be disabled in INNER JOIN of SELECT statement
+SELECT * FROM t1 INNER JOIN t2 USING (col1);
+
+-- (3) USING should be disabled in INNER JOIN of SELECT statement
+SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col1);
+
+-- (4) USING should be disabled in INNER JOIN of SELECT statement
+SELECT * FROM t1 RIGHT OUTER JOIN t2 USING (col1);
+
+-- (5) TRUE and FALSE constants should be disabled in WHERE clause of SELECT statement
+SELECT * FROM t1 INNER JOIN t2 ON t1.col1 = t2.col1 WHERE true;
+SELECT * FROM t1 INNER JOIN t2 ON t1.col1 = t2.col1 WHERE false;
+
+-- (5) TRUE and FALSE constants should be disabled in WHERE clause of DELETE statement
+DELETE FROM t1 where true;
+DELETE FROM t1 where false;
+
+-- (5) TRUE and FALSE constants should be disabled in WHERE clause of DELETE statement
+UPDATE t2 SET col1 = NULL WHERE true;
+UPDATE t2 SET col1 = NULL WHERE false;
+
+-- (6) AT ISOLATION clause should be disabled in SELECT statement
+-- AT ISOLATION not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+SELECT * FROM t1 AT ISOLATION READ UNCOMMITTED;
+SELECT * FROM t1 AT ISOLATION READ COMMITTED;
+SELECT * FROM t1 AT ISOLATION SERIALIZABLE;
+SELECT * FROM t1 AT ISOLATION REPEATABLE READ;
+
+-- clean up
+DROP TABLE t1;
+DROP TABLE t2;
+
+-- DEFAULT CAST not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+create table testuser(col1 BLOB(3K) default cast(user as blob(3k)));
+create table testsessionuser(col1 BLOB(3K) default cast(session_user as blob(3k)));
+create table testcurrentuser(col1 BLOB(3K) default cast(current_user as blob(3k)));
+create table testschema(col1 BLOB(3K) default cast(current schema as blob(3k)));
+
+-- alter table syntax that should be supported in db2 compat mode
+-- beetle 5267
+create table testmodify (col1 varchar(30), col2 int generated always as identity);
+-- increasing the length of the varchar column
+alter table testmodify alter col1 set data type varchar(60);
+-- specifying the interval between consecutive values of col2, the identity column 
+alter table testmodify alter col2 set increment by 2;
+-- clean up
+drop table testmodify;
+
+-- (1) adding more than one column 
+-- beetle 5268
+-- db2 compat mode should support the following statements
+create table testaddcol (col1 int);
+alter table testaddcol add column col2 int add col3 int;
+drop table testaddcol;
+
+-- (2) adding more than one unique, referential, or check constraint 
+-- beetle 5268
+-- db2 compat mode should support the following statements
+create table testaddconst1 (col1 int not null primary key, col2 int not null unique);
+create table testaddconst2 (col1 int not null primary key, col2 int not null unique);
+create table testaddconst3 (col1 int not null, col2 int not null, col3 int not null, col4 int not null, col5 int, col6 int);
+create table testaddconst4 (col1 int not null, col2 int not null, col3 int not null, col4 int not null, col5 int, col6 int);
+-- adding more than one unique-constraint 
+alter table testaddconst3 add primary key (col1) add unique (col2);
+alter table testaddconst3 add unique (col3) add unique (col4);
+-- adding more than one referential-constraint 
+alter table testaddconst3 add foreign key (col1) references testaddconst1(col1) add foreign key (col2) references testaddconst2(col2);
+-- adding more than one check-constraint 
+alter table testaddconst3 add check (col5 is null) add check (col6 is null);
+-- adding a primary, unique, foreign key, and  check-constraint 
+alter table testaddconst4 add primary key(col1) add unique(col2) add foreign key (col1) references testaddconst1(col1) add check (col2 is null);
+-- clean up
+drop table testaddconst1;
+drop table testaddconst2;
+drop table testaddconst3;
+drop table testaddconst4;
+
+-- (3) adding more than one unique, referential, or check constraints 
+-- beetle 5268
+-- syntax that will be supported in db2 compat mode (beetle 5204)
+CREATE TABLE testdropconst1 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk1 UNIQUE , PRIMARY KEY(col1));
+CREATE TABLE testdropconst2 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk2 UNIQUE, col3 CHAR(5) not null CONSTRAINT uk3 UNIQUE, PRIMARY KEY(col1));
+CREATE TABLE testdropconst3 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk4 UNIQUE , PRIMARY KEY(col1));
+CREATE TABLE testdropconst4 (col1 CHAR(7) NOT NULL, col2 int not null CONSTRAINT uk5 UNIQUE , PRIMARY KEY(col1));
+CREATE TABLE testdropconst5 (col1 CHAR(7) NOT NULL, col2 int, col3 CHAR(5) not null, CONSTRAINT fk1 FOREIGN KEY (col1) REFERENCES testdropconst3(col1), CONSTRAINT fk2 FOREIGN KEY (col1) REFERENCES testdropconst4(col1));
+CREATE TABLE testdropconst6 (col1 CHAR(7) CONSTRAINT ck1 CHECK (col1 is null), col2 int CONSTRAINT ck2 CHECK (col2 is null));
+-- dropping more than one unique-constraint 
+alter table testdropconst1 drop primary key drop constraint uk1;
+alter table testdropconst2 drop primary key drop constraint uk2 drop constraint uk3;
+-- dropping more than one foreign key constraint
+alter table testdropconst5 drop constraint fk1 drop constraint fk2;
+-- dropping more than one check constraint
+alter table testdropconst6 drop constraint ck1 drop constraint ck2;
+--clean up
+drop table testdropconst1;
+drop table testdropconst2;
+drop table testdropconst3;
+drop table testdropconst4;
+drop table testdropconst5;
+drop table testdropconst6;
+
+-- (4) altering more than one column
+-- beetle 5268
+-- syntax that will be supported in db2 compat mode (beetle 5267)
+-- db2 compat mode should support 
+create table testmodify (col1 varchar(30), col2 varchar(30));
+alter table testmodify alter col1 set data type varchar(60) alter col2 set data type varchar(60);
+-- clean up
+drop table testmodify;
+
+-- number of values assigned in an INSERT statement should be the same as the number of specified or implied columns 
+-- beetle 5269
+create table t1(a int, b int, c char(10));
+-- this statement should throw an error in db2 compat mode, but it does not
+insert into t1 values(1);
+
+-- clean up
+drop table t1;
+
+-- beetle 5281
+-- These statements are successful in DB2 UDB v8, but not in Cloudscape
+-- Cloudscape does not support cast-functions such as blob, timestamp, time, and date
+-- DB2 does support cast functions such as these below:
+create table t1 (ch blob(10));
+insert into t1 values (blob('hmm'));
+create table t2 (ch timestamp);
+insert into t2 values (timestamp(current timestamp));
+create table t3 (ch time);
+insert into t3 values (time(current time));
+create table t4 (ch date);
+insert into t4 values (date(current date));
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+
+-- test operands
+-- beetle 5282
+-- <,> =, !=, <=, >= operands are not supported in db2 but supported in cloudscape
+CREATE TABLE testoperatorclob (colone clob(1K));
+INSERT INTO testoperatorclob VALUES (CAST('50' AS CLOB(1K)));
+select * from testoperatorclob;
+-- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorclob where colone > 10;
+select * from testoperatorclob where colone < 70;
+select * from testoperatorclob where colone = 50;
+select * from testoperatorclob where colone != 10;
+select * from testoperatorclob where colone <= 70;
+select * from testoperatorclob where colone >= 10;
+select * from testoperatorclob where colone <> 10;
+drop table testoperatorclob;
+
+-- beetle 5282
+CREATE TABLE testoperatorblob (colone clob(1K));
+INSERT INTO testoperatorblob VALUES (CAST('50' AS BLOB(1K)));
+select * from testoperatorblob;
+-- these select statements should raise an error but are successful in cloudscape
+select * from testoperatorblob where colone > 10;
+select * from testoperatorblob where colone < 999999;
+select * from testoperatorblob where colone = 00350030;
+select * from testoperatorblob where colone != 10;
+select * from testoperatorblob where colone <= 999999;
+select * from testoperatorblob where colone >= 10;
+select * from testoperatorblob where colone <> 10;
+drop table testoperatorblob;
+
+-- beetle 5283
+-- casting using "X" for hex constant, "B" literal is not allowed in DB2
+-- db2 raises ERROR 56098, cloudscape should raise error msg?a
+values cast(B'1' as char(100));
+values cast(B'1' as clob(1M));
+values cast(B'1' as blob(1M));
+values cast(X'11' as char(100));
+values cast(X'11' as clob(1M));
+values cast(X'11' as blob(1M));
+
+-- beetle 5284
+-- minor difference in outputs when casting to blob in Cloudscape and DB2. 
+values cast('   ' as blob(1M));
+values cast('a' as blob(1M));
+
+-- beetle 5294
+-- diable column names in the characterExpression and escape clause of a LIKE predicate
+create table likeable (match_me varchar(10), pattern varchar(10), esc varchar(1));
+insert into likeable values ('foo%bar3', 'fooZ%bar3', 'Z');
+select match_me from likeable where match_me like pattern escape esc;
+select match_me from likeable where match_me like pattern escape 'Z';
+drop table likeable;
+
+-- beetle 5298 
+-- disable Field Access
+VALUES java.lang.Integer::MAX_VALUE;
+VALUES (1)->noSuchField;
+
+
+-- beetle 5299
+-- disable Method Invocations 
+VALUES (1)->toString();
+VALUES 1.->toString();
+VALUES 1..getClass()->toString();
+create table m5299 (i int, s varchar(10));
+insert into m5299 values(1, 'hello');
+select i.hashCode(), s.indexOf('ll') from m5299;
+select s.indexOf('ll') from m5299;
+drop table m5299;
+
+-- beetle 5307
+-- scale of the resulting data type for division 
+values(11.0/1111.33);
+values (11111111111111111111111111111.10/1.11);
+values (11111111111111111111111111111.10/1.1);
+
+-- beetle 5346
+-- positive test
+-- NULLs sort low in Cloudscape, but sort high in DB2 
+create table testOrderBy(c1 int);
+insert into testOrderBy values (1);
+insert into testOrderBy values (2);
+insert into testOrderBy values (null);
+select * from testOrderBy order by c1;
+drop table testOrderBy;
+
+create table likeable (match_me varchar(10), pattern varchar(10), esc varchar(1), e varchar(1));
+insert into likeable values ('foo%bar3', 'fooZ%bar3', 'Z', 'Z');
+
+select match_me from likeable where match_me like 'fooZ%bar3' escape 'Z';
+select match_me from likeable where 'foo%bar3' like 'fooZ%bar3' escape 'Z';
+select match_me from likeable where 'foo%bar3' like 'foo%';
+
+
+-- SQLSTATE=42824
+select match_me from likeable where match_me like pattern escape esc;
+select match_me from likeable where match_me like pattern escape e;
+select match_me from likeable where match_me like pattern escape 'Z';
+select match_me from likeable where match_me like pattern;
+select match_me from likeable where match_me like e;
+
+-- SQLSTATE=22019
+select match_me from likeable where match_me like 'fooZ%bar3' escape esc;
+select match_me from likeable where match_me like 'fooZ%bar3' escape e;
+
+-- SQLSTATE=42884
+select match_me from likeable where match_me like 'fooZ%bar3' escape 1;
+select match_me from likeable where match_me like 'fooZ%bar3' escape 1;
+select match_me from likeable where 'foo%bar3' like 1;
+select match_me from likeable where 1 like 1;
+select match_me from likeable where match_me like 1;
+-- beetle 5845
+select match_me from likeable where match_me like CURRENT_DATE;
+create table likes (dt date, tm time, ts timestamp);
+insert into likes values (current_date, current_time, current_timestamp);
+insert into likes values ('2004-03-03', current_time, current_timestamp);
+select * from likes where dt like '2004-03-0_';
+select * from likes where tm like '_8:%:1%';
+select * from likes where ts like '2004-04-09 08:5%';
+
+drop table likeable;
+drop table likes;
+
+-- no schema names in constraint names (beetle 5143)
+CREATE TABLE S5143.T5143_1 (C1 int CONSTRAINT S5143.CPK1 PRIMARY KEY);
+CREATE TABLE S5143.T5143_2 (C1 int, C2 int, CONSTRAINT S5143.CPK1  PRIMARY KEY(C1,C2));
+CREATE TABLE S5143.T5143_3 (C1 int, C2 int, CONSTRAINT S5143.C3 CHECK(C1 > C2));
+
+
+-- READ ONLY not allowed in "FOR" clause of a select.
+create table roTable (i int);
+insert into roTable values (8);
+select * from roTable for update;
+select * from roTable for update of i;
+select * from roTable for fetch only;
+select * from roTable for read only;
+drop table roTable;
+
+
+-- No support for Java types in CAST statements;
+
+values CAST (NULL AS CLASS java.lang.Integer);
+values CAST (NULL AS CLASS com.acme.SomeClass);
+values CAST (NULL AS CLASS java.sql.Date);
+
+values CAST (NULL AS java.lang.Integer);
+values CAST (NULL AS com.acme.SomeClass);
+values CAST (NULL AS java.sql.Date);
+
+values CAST (? AS CLASS java.lang.Integer);
+values CAST (? AS CLASS com.acme.SomeClass);
+values CAST (? AS CLASS java.sql.Date);
+
+values CAST (? AS java.lang.Integer);
+values CAST (? AS com.acme.SomeClass);
+values CAST (? AS java.sql.Date);
+
+-- No support for BIT_LENGTH, OCTET_LENGTH, TRIP and SUBSTRING in DB2 compatibility mode
+
+values BIT_LENGTH(X'55');
+values OCTET_LENGTH('asdfasdfasdf');
+values TRIM('x' FROM 'xasdf x');
+values SUBSTRING('12345' FROM 3 FOR 2);
+
+-- Tests for explicit nulls. Not allowed in DB2, defect 5589 
+-- Should fail.
+create table t1 ( i int null);
+
+-- Should pass.
+create table t1 (i int);
+insert into t1 values null;
+
+-- Alter table add explict null column should also fail.
+alter table t1 add column j int null;
+
+-- Should pass
+alter table t1 add column j int;
+insert into t1 values (null, null);
+
+drop table t1;
+
+-- Beetle 5538: Match DB2 trigger restrictions.
+
+-- Part I) SQL-Procedure-Statement restrictions:
+
+-- 1) BEFORE triggers: can't have CALL, INSERT, UPDATE, or DELETE as action; when beetle 5253 is resolved, thsese should be changed to "no cascade before", instead of just "before".
+create table t1 (i int, j int);
+create table t2 (i int);
+create trigger trig1a NO CASCADE before insert on t1 for each row mode db2sql insert into t2 values(1);
+create trigger trig1b NO CASCADE before insert on t1 for each row mode db2sql update t2 set i=1 where i=2;
+create trigger trig1c NO CASCADE before insert on t1 for each row mode db2sql delete from t2 where i=8;
+create trigger trig1d NO CASCADE before insert on t1 for each row mode db2sql call procOne();
+
+-- 2) AFTER triggers: can't have CALL as action, but others should still work.
+create trigger trig2 after insert on t1 for each row mode db2sql call procOne();
+create trigger trig2a after insert on t1 for each row mode db2sql insert into t2 values(1);
+create trigger trig2b after insert on t1 for each row mode db2sql update t2 set i=1 where i=2;
+create trigger trig2c after insert on t1 for each row mode db2sql delete from t2 where i=8;
+
+-- Part II) Verify applicable restrictions on the "REFERENCES" clause (should be the same as in DB2).
+
+-- 3) NEW, NEW_TABLE only valid with insert and update triggers; OLD, OLD_TABLE
+--  only valid with delete and update triggers.
+
+-- Next 8 should succeed.
+create trigger trig3a after insert on t1 referencing new as ooga for each row mode db2sql values(1);
+create trigger trig3b after update on t1 referencing old as ooga for each row mode db2sql values(1);
+create trigger trig3c after update on t1 referencing new as ooga for each row mode db2sql values(1);
+create trigger trig3d after delete on t1 referencing old as ooga for each row mode db2sql values(1);
+create trigger trig3e after insert on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+create trigger trig3f after update on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+create trigger trig3g after update on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+create trigger trig3h after delete on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+
+-- Next 4 should fail.
+create trigger trig3i after insert on t1 referencing old as ooga for each row mode db2sql values(1);
+create trigger trig3j after delete on t1 referencing new as ooga for each row mode db2sql values(1);
+create trigger trig3k after insert on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+create trigger trig3m after delete on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+
+-- 4) NEW_TABLE, OLD_TABLE not valid with BEFORE triggers (these will throw syntax errors until beetle 5253 is resolved).
+create trigger trig4a no cascade before update on t1 referencing old_table as ooga for each statement mode db2sql values(1);
+create trigger trig4b no cascade before update on t1 referencing new_table as ooga for each statement mode db2sql values(1);
+
+-- 5) OLD, NEW not valid with FOR EACH STATEMENT.
+create trigger trig5a after update on t1 referencing old as ooga for each statement mode db2sql values(1);
+create trigger trig5b after update on t1 referencing new as ooga for each statement mode db2sql values(1);
+
+-- cleanup for 5538:
+drop table t1;
+drop table t2;
+
+-- Beetle 5637: Require FOR EACH clause in DB2 mode. Optional in Cloudscape mode. 
+
+create table t1(i int);
+
+-- Should fail
+create trigger trig1 after insert on t1 mode db2sql values (8);
+
+-- Should pass
+create trigger trig1 after insert on t1 for each row mode db2sql values (8);
+create trigger trig2 after insert on t1 for each statement mode db2sql values (8);
+
+drop table t1;
+
+-- match SUBSTR builtin function out of range handling (5570).
+
+create table x1 (c char(10));
+insert into x1 values ('foo');
+
+-- DB2: Raises ERROR 22011: out of range, Cloudscape doesn't
+select substr('foo', -2,1) from x1;
+
+-- DB2: Raises ERROR 22011: out of range, Cloudscape return NULL
+select substr('foo', 1,-1) from x1;
+select substr('foo', 2,-1) from x1;
+select substr('foo', 3,-2) from x1;
+select substr('foo', -2,-3) from x1;
+
+-- DB2: ERROR 22011 out of range, Cloudscape returns empty string
+select substr('foo', 5) from x1;
+select substr('foo', 6,3) from x1;
+
+-- DB2: Raises ERROR 22011: out of range, Cloudscape returns 'f'
+select substr('foo', 0,1) from x1;
+
+-- DB2: ERROR 22011 out of range, Cloudscape return 'foo'
+select substr('foo', 1,4) from x1;
+
+-- DB2: ERROR 22011 out of range, Cloudscape return 'foo'
+select substr('foo', -5) from x1;
+
+-- DB2: ERROR 22011 out of range
+select substr('foo', -6,3) from x1;
+
+-- DB2: Returns an empty value, Cloudscape returns NULL
+select substr('foo', 1,0) from x1;
+select substr('foo', 2,0) from x1;
+select substr('foo', 3,0) from x1;
+
+-- DB2: Raises ERROR 22011: out of range, Cloudscape returns NULL
+select substr('foo', 4,0) from x1;
+select substr('foo', 5,0) from x1;
+select substr('foo', 6,0) from x1;
+
+-- Beetle 5630: A column check constraint can only refer to that column in DB2
+
+create table t1(c1 int, c2 int check (c1 > 5));
+-- check constraint ck1 in the column-definition of c2 can not refer to column c1
+create table t1(c1 int, c2 int constraint ck1 check(c1 > c2));
+
+-- Same test with alter table
+create table t1(c1 int);
+alter table t1 add column c2 int constraint ck2 check(c2 > c1);
+
+-- These should pass, uses table constraints
+create table t2(c1 int, c2 int, check (c1 > 5));
+create table t3(i int, j int, check (j > 5));
+alter table t1 add column c2 int;
+alter table t1 add constraint t1con check(c2 > c1);
+
+drop table t1;
+drop table t2;
+drop table t3;
+
+-- Beetle 5638: DB2 requires matching target and result columns for insert
+
+create table t1 ( i int, j int);
+create table t2 ( i int, j int);
+
+insert into t1 values (1, 1);
+insert into t2 values (2, 2);
+
+-- negative tests, mismatch of columns
+insert into t1 select i from t2;
+insert into t1(i) select * from t2;
+insert into t1(i, j) select j from t2;
+
+insert into t1 select * from t2 union select i from t2;
+insert into t1 select j from t2 union select j from t2;
+insert into t1(i) select * from t2 union all select * from t2;
+insert into t1(i, j) select i, j from t2 union all i from t2;
+
+-- positive cases
+insert into t1 select * from t2;
+select * from t1;
+insert into t1(i,j) select * from t2 union select i, j from t2;
+insert into t1(i) select i from t2 union all select j from t2;
+select * from t1;
+
+drop table t1;
+drop table t2;
+
+-- Beetle 5667: DB2 requires non-nullable columns to have a default in ALTER TABLE
+
+create table t1( i int);
+
+-- Negative cases
+alter table t1 add column j int not null;
+alter table t1 add column j int not null default null;
+
+-- positive cases
+alter table t1 add column j int;
+alter table t1 add column k int not null default 5;
+
+drop table t1;
+
+-- IS [NOT] TRUE/FALSE/UNKNOWN not supported in both Cloudscape and DB2 mode and that is why rather than getting feature not implemented, we will get syntax error
+-- 
+create table t1( i int);
+select * from t1 where ((1=1) IS TRUE);
+select * from t1 where ((1=1) IS NOT TRUE);
+select * from t1 where ((1=0) IS FALSE);
+select * from t1 where ((1=0) IS NOT FALSE);
+select * from t1 where (null IS UNKNOWN);
+drop table t1;
+
+-- Beetle 5635, 5645 and 5633: Generated column name issues
+
+create table t1(i int, j int);
+create table t2(c1 int, c2 int);
+
+insert into t1 values (1, 1);
+insert into t2 values (2, 2);
+
+-- Cloudscape should generate column names when both sides of union don't match
+ 
+select i,j from t1
+union all
+select c1,c2 from t2
+order by 1;
+
+select i as c1, j as c2 from t1
+union all
+select c1, c2 from t2
+order by 1;
+
+-- Prevent Cloudscape from using generated column names for ordering
+
+select i+1 from t1 order by "SQLCol1";
+select i+1 from t1 order by SQLCol1;
+
+values (1,2,3),(4,5,6),(7,8,9) order by "SQLCol1";
+
+-- Column names for a CREATE VIEW should be specified when result table has unnamed columns. 
+
+create view v1 as values 1;
+create view v1 as select i+1 from t1;
+create view v1 as select i+1 as i from t1;
+create view v2(c) as select i+1 from t1;
+
+drop view v1;
+drop view v2;
+drop table t1;
+drop table t2;
+
+
+-- ALTER TABLE COMPRESS statement is cloudscape specific, disable in db2 mode
+-- beetle 5553
+--   TODO - not working yet
+
+-- negative tests
+create table tb1 (country_ISO_code char(2));
+alter table tb1 compress;
+alter table tb1 compress sequential;
+
+-- clean up
+drop table tb1;
+
+-- Beetle 5717: Disable adding primary or unique constraints on non-nullable columns
+ 
+-- negative tests
+create table t1 (c1 int, c2 int);
+alter table t1 add constraint pk1 primary key (c1);
+alter table t1 add constraint uc1 unique (c2);
+
+-- positive tests
+create table t2 (c1 int not null, c2 char(10) not null);
+alter table t2 add constraint pk2 primary key (c1);
+alter table t2 add constraint uc2 unique (c2);
+
+drop table t1;
+drop table t2;
+
+
+-- SET STATISTICS TIMING ON stmt is cloudscape specific, disabled in db2 mode
+-- Once we have rewritten our functions to not use following sql, SET STATISTICS TIMING can be completely removed from the parser.
+set statistics timing on;
+
+-- SET RUNTIMESTATISTICS ON stmt is cloudscape specific, disabled in db2 mode
+-- Once we have rewritten our functions to not use following sql, SET RUNTIMESTATISTICS can be completely removed from the parser.
+set runtimestatistics on;
+
+-- following runtime statistics related sql will fail in db2 mode but will run fine in Cloudscape mode
+create table t1 (c1 int, c2 int);
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+select * from t1;
+values runtimestatistics()->getScanStatisticsText();
+values runtimestatistics()->toString();
+-- following runtime statistics related sql is not supported anymore and will not run in any mode
+UPDATE STATISTICS FOR TABLE T1;
+DROP STATISTICS FOR TABLE T1;
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,628 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.*;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.iapi.reference.DB2Limit;
+import org.apache.derbyTesting.functionTests.util.Formatters;
+
+/**
+  Test various data manager limits like in db2 here.
+ */
+public class dbManagerLimits
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	public static void main (String[] argv) throws Throwable
+	{
+		ij.getPropertyArg(argv);
+		Connection conn = ij.startJBMS();
+
+		testStringAndHexConstants(conn);
+		testMostColumnsInTable(conn);
+		testMostColumnsInView(conn);
+		testMostElementsInSelectList(conn);
+		testMostElementsInOrderBy(conn);
+		testMostParametersInStoredProcedures(conn);
+
+		//not running Group By test because it gets out of memory error
+		//testMostElementsInGroupBy(conn);
+
+		//not running indexes test because it doesn't finish even after running for over 2 hours
+		//ALSO, IF WE EVER ENABLE THIS TEST IN FUTURE, WE NEED TO REWRITE THE TEST SO THAT WE TRY TO CREATE OVER
+		//32767 *DIFFERENT* INDEXES. AS PART OF DB2 COMPATIBILITY WORK, BUG - 5685 DISALLOWS CREATION OF AN INDEX
+		//ON A COLUMN THAT ALREADY HAS A PRIMARY KEY OR UNIQUE CONSTRAINT ON IT.
+		//testMostIndexesOnTable(conn);
+	}
+
+	public static void testStringAndHexConstants( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - maximum length of character constant is 32672 and that of hex constant is 16336");
+			String stringConstant32671 = Formatters.repeatChar("a",32671);
+			String hexConstant16334 = Formatters.repeatChar("a",16334);
+			Statement s = conn.createStatement();
+			s.executeUpdate("create table t1 (c11 long varchar, c12 long varchar for bit data)");
+
+			System.out.println("First testing less than maximum constant lengths through insert statement");
+			s.executeUpdate("insert into t1(c11) values ('" +  stringConstant32671 + "')");
+			s.executeUpdate("insert into t1(c12) values (X'" +  hexConstant16334 + "')");
+      
+			System.out.println("Next testing less than maximum constant lengths through values");
+			s.execute("values ('" +  stringConstant32671 + "')");
+			s.execute("values (X'" +  hexConstant16334 + "')");
+
+			System.out.println("Next testing maximum constant lengths through insert statement");
+			s.executeUpdate("insert into t1(c11) values ('" +  stringConstant32671 + "a')");
+			s.executeUpdate("insert into t1(c12) values (X'" +  hexConstant16334 + "ab')");
+      
+			System.out.println("Next testing maximum constant lengths through values");
+			s.execute("values ('" +  stringConstant32671 + "a')");
+			s.execute("values (X'" +  hexConstant16334 + "ab')");
+
+			System.out.println("Next testing maximum constant lengths + 1 through insert statement");
+			try {
+				s.executeUpdate("insert into t1(c11) values ('" +  stringConstant32671 + "ab')");
+				System.out.println("FAIL - should have gotten string constant too long error for this insert statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("insert into t1(c12) values (X'" +  hexConstant16334 + "abcd')");
+				System.out.println("FAIL - should have gotten string constant too long error for this insert statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Next testing maximum constant lengths + 1 through values");
+			try {
+				s.executeUpdate("values ('" +  stringConstant32671 + "ab')");
+				System.out.println("FAIL - should have gotten string constant too long error for this values statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("values (X'" +  hexConstant16334 + "abcd')");
+				System.out.println("FAIL - should have gotten string constant too long error for this values statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Next testing maximum constant lengths + n through insert statement");
+			try {
+				s.executeUpdate("insert into t1(c11) values ('" +  stringConstant32671 + "bcdef')");
+				System.out.println("FAIL - should have gotten string constant too long error for this insert statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("insert into t1(c12) values (X'" +  hexConstant16334 + "abcdef')");
+				System.out.println("FAIL - should have gotten string constant too long error for this insert statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Next testing maximum constant lengths + n through values");
+			try {
+				s.executeUpdate("values ('" +  stringConstant32671 + "bcdef')");
+				System.out.println("FAIL - should have gotten string constant too long error for this values statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			try {
+				s.executeUpdate("values (X'" +  hexConstant16334 + "abcdef')");
+				System.out.println("FAIL - should have gotten string constant too long error for this values statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54002"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Next testing odd number of hex digits in a hex constant through insert statement");
+			try {
+				s.executeUpdate("insert into t1(c12) values (X'" +  hexConstant16334 + "a')");
+				System.out.println("FAIL - should have gotten hex constant invalid string constant too long error for this values statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42606"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			System.out.println("And finally testing odd number of hex digits in a hex constant through values statement");
+			try {
+				s.executeUpdate("values (X'" +  hexConstant16334 + "a')");
+				System.out.println("FAIL - should have gotten string constant too long error for this values statement");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("42606"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table t1");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testMostColumnsInTable( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most columns allowed in a table");
+
+			StringBuffer sbTableElements = new StringBuffer();
+			String tempString = new String();
+			int i = 0;
+			sbTableElements.append("create table t1 (");
+			for (i = 0; i < DB2Limit.DB2_MAX_COLUMNS_IN_TABLE-2; i++)
+				sbTableElements.append("c" + i +" int, ");
+
+			Statement s = conn.createStatement();
+			System.out.println("First create a table with one column less than maximum allowed number of columns");
+			tempString = (sbTableElements.toString()).concat("c" + i + " int)");
+			s.executeUpdate(tempString);
+			System.out.println("  Try alter table on it to have table with maximum allowed number of columns");
+			s.executeUpdate("alter table t1 add column c" + (i+1) + " int");
+			System.out.println("  Try another alter table to have table with one column more than maximum allowed number of columns");
+			try {
+				s.executeUpdate("alter table t1 add column c" + (i+2) + " int");
+				System.out.println("FAIL - The alter table should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			s.executeUpdate("drop table t1");
+
+			System.out.println("Next create a table with maximum allowed number of columns");
+			tempString = (sbTableElements.toString()).concat("c" + i +" int, c" + (i+1) + " int)");
+			s.executeUpdate(tempString);
+			System.out.println("  Try alter table to have table with more columns than maximum allowed number of columns");
+			try {
+				s.executeUpdate("alter table t1 add column c" + (i+2) + " int");
+				System.out.println("FAIL - The alter table should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			//just some basic sanity check 
+			DatabaseMetaData met = conn.getMetaData();
+			getCount(met.getColumns("", "APP", "T1", null));
+			s.executeUpdate("insert into t1(c1, c2) values (1,1)");
+			s.executeUpdate("drop table t1");
+
+			System.out.println("Next create a table with one column more than maximum allowed number of columns");
+			tempString = (sbTableElements.toString()).concat("c" + i +" int, c" + (i+1) + " int, c" + (i+2) + " int)");
+			try {
+				s.executeUpdate(tempString);
+				System.out.println("FAIL - The create table should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Finally, create a table with 2 columns more than maximum allowed number of columns");
+			tempString = (sbTableElements.toString()).concat("c" + i +" int, c" + (i+1) + " int, c" + (i+2) + " int, c" + (i+3) + " int)");
+			try {
+				s.executeUpdate(tempString);
+				System.out.println("FAIL - The create table should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	private static void getCount( ResultSet s) throws Throwable
+	{
+		int counter = 0; // Display data, fetching until end of the result set
+		while (s.next())
+			counter++;
+		System.out.println("Found " + counter + " columns/parameters through meta data");
+	}
+
+	public static void testMostColumnsInView( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most columns allowed in a view");
+
+			StringBuffer sbValuesClause = new StringBuffer();
+			StringBuffer sbViewColumnNames = new StringBuffer();
+			String tempString = new String();
+			int i = 0;
+			for (i = 0; i < DB2Limit.DB2_MAX_COLUMNS_IN_VIEW-2; i++) {
+				sbValuesClause.append(1 + ", ");
+				sbViewColumnNames.append("c" + i + ", ");
+			}
+
+			Statement s = conn.createStatement();
+			System.out.println("First create a view with one column less than maximum allowed number of columns");
+			tempString = "create view v1(" + sbViewColumnNames.toString() + "c" + i + ") as values (" + sbValuesClause.toString() + "1)";
+			s.executeUpdate(tempString);
+			s.executeUpdate("drop view v1");
+
+			System.out.println("Next create a view with maximum allowed number of columns");
+			tempString = "create view v1(" + sbViewColumnNames.toString() + "c" + i + ", c" + (i+1)+ ") as values (" + sbValuesClause.toString() + "1,1)";
+			s.executeUpdate(tempString);
+			//just some basic sanity check 
+			DatabaseMetaData met = conn.getMetaData();
+			getCount(met.getColumns("", "APP", "V1", null));
+			s.executeUpdate("drop view v1");
+
+			System.out.println("Next create a view with one column more than that maximum allowed number of columns");
+			tempString = "create view v1(" + sbViewColumnNames.toString() + "c" + i + ", c" + (i+1) + ", c" + (i+2) + ") as values (" + sbValuesClause.toString() + "1,1,1)";
+			try {
+				s.executeUpdate(tempString);
+				System.out.println("FAIL - The create view should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("And finally create a view with 2 columns that maximum allowed number of columns");
+			tempString = "create view v1(" + sbViewColumnNames.toString() + "c" + i + ", c" + (i+1) + ", c" + (i+2) + ", c" + (i+3) +") as values (" + sbValuesClause.toString() + "1,1,1,1)";
+			try {
+				s.executeUpdate(tempString);
+				System.out.println("FAIL - The create view should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testMostElementsInSelectList( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most elements allowed in a select list");
+
+			StringBuffer sb = new StringBuffer();
+			String tempString = new String();
+			int i = 0;
+			sb.append("create table t1 (");
+			for (i = 0; i < DB2Limit.DB2_MAX_COLUMNS_IN_TABLE-2; i++)
+				sb.append("c" + i +" int, ");
+
+			Statement s = conn.createStatement();
+			tempString = (sb.toString()).concat("c" + i + " int)");
+			s.executeUpdate(tempString);
+
+			System.out.println("First try a select with one column less than maximum allowed number of columns");
+			s.execute("select * from t1");
+
+			System.out.println("Next try a select with maximum allowed number of columns");
+			s.execute("select t1.*,1 from t1");
+
+			System.out.println("Next try a select with one column more than maximum allowed number of columns");
+			try {
+				s.execute("select t1.*,1,2 from t1");
+				System.out.println("FAIL - select should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54004"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("Next try a select with 2 more columns than maximum allowed number of columns");
+			try {
+				s.execute("select t1.*,1,2,3 from t1");
+				System.out.println("FAIL - select should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54004"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table t1");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testMostElementsInOrderBy( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most columns allowed in a ORDER BY clause");
+
+			StringBuffer sbOrderBy = new StringBuffer();
+			String tempString = new String();
+			int i = 0;
+			sbOrderBy.append("select * from t1 order by ");
+			for (i = 0; i < DB2Limit.DB2_MAX_ELEMENTS_IN_ORDER_BY-2; i++)
+				sbOrderBy.append("c1, ");
+
+			Statement s = conn.createStatement();
+			s.executeUpdate("create table t1 (c1 int not null, c2 int)");
+      
+			System.out.println("First try order by with one column less than maximum allowed number of columns");
+			tempString = (sbOrderBy.toString()).concat("c2");
+			s.execute(tempString);
+
+			System.out.println("Next try an order by with maximum allowed number of columns");
+			tempString = (sbOrderBy.toString()).concat("c1, c2");
+			s.execute(tempString);
+
+			System.out.println("Next try an order by with one column more than maximum allowed number of columns");
+			tempString = (sbOrderBy.toString()).concat("c1, c2, c1");
+			try {
+				s.execute(tempString);
+				System.out.println("FAIL - order by should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54004"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("And finally try an order by with 2 more columns than maximum allowed number of columns");
+			tempString = (sbOrderBy.toString()).concat("c1, c2, c1");
+			try {
+				s.execute(tempString);
+				System.out.println("FAIL - order by should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54004"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop table t1");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testMostElementsInGroupBy( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most columns allowed in a GROUP BY clause");
+			Statement s = conn.createStatement();
+			StringBuffer sbGroupBy = new StringBuffer("select 1 from v1, v2, v3, v4, v5, v6, v7 group by ");
+			StringBuffer sbValuesClause = new StringBuffer();
+			StringBuffer sbViewColumnNames = new StringBuffer();
+			String tempString = new String();
+
+			//first create 7 views with 5000 columns each
+			int i = 0;
+			for (i = 0; i < DB2Limit.DB2_MAX_COLUMNS_IN_VIEW-1; i++)
+				sbValuesClause.append(1 + ", ");
+
+			for (int j = 1; j < 8; j++) {
+				for (i = 0; i < DB2Limit.DB2_MAX_COLUMNS_IN_VIEW-1; i++) {
+					sbViewColumnNames.append("c" + j + "" + i + ", ");
+				}
+				tempString = "create view v" + j + "(" + sbViewColumnNames.toString() + "c" + j + "" + i + ") as values (" + sbValuesClause.toString() + "1)";
+				s.executeUpdate(tempString);
+				sbViewColumnNames = new StringBuffer();
+			}
+      
+			for (int j = 1; j < 7; j++) {
+				for (i = 0; i < DB2Limit.DB2_MAX_COLUMNS_IN_VIEW; i++)
+					sbGroupBy.append("c" + j + "" + i + ", ");
+			}
+			for (i = 0; i < 2675; i++)
+				sbGroupBy.append("c7" + i + ", ");
+
+			System.out.println("First try group by with one column less than maximum allowed number of columns");
+			tempString = (sbGroupBy.toString()).concat("c72675");
+			s.execute(tempString);
+
+			System.out.println("Next try an group by with maximum allowed number of columns");
+			tempString = (sbGroupBy.toString()).concat("c72675, c72675");
+			s.execute(tempString);
+
+			System.out.println("And finally try an group by with more columns that maximum allowed number of columns");
+			tempString = (sbGroupBy.toString()).concat("c72675, c72676, c72677");
+			try {
+				s.execute(tempString);
+				System.out.println("FAIL - group by should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54004"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			s.executeUpdate("drop view v1");
+			s.executeUpdate("drop view v2");
+			s.executeUpdate("drop view v3");
+			s.executeUpdate("drop view v4");
+			s.executeUpdate("drop view v5");
+			s.executeUpdate("drop view v6");
+			s.executeUpdate("drop view v7");
+
+			s.execute("select 1 from v1 group by c1,c2");
+			s.executeUpdate("drop table t1");
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	public static void testMostParametersInStoredProcedures( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most parameters allowed for a stored procedure");
+			Statement s = conn.createStatement();
+			StringBuffer sbCreateProcParams = new StringBuffer();
+			StringBuffer sbExecuteProcParams = new StringBuffer();
+			String tempString = new String();
+			int i = 0;
+
+			for (i = 0; i < DB2Limit.DB2_MAX_PARAMS_IN_STORED_PROCEDURE-2; i++) {
+				sbCreateProcParams.append("i" + i + " int, ");
+				sbExecuteProcParams.append("1, ");
+			}
+
+			System.out.println("First create a procedure with one parameter less than maximum allowed number of parameters");
+			tempString = "create procedure P1(" + sbCreateProcParams.toString() + "i" + i +
+        " int) parameter style java language java external name \'org.apache.derbyTesting.functionTests.util.ProcedureTest.lessThanMaxParams\' NO SQL";
+			s.executeUpdate(tempString);
+
+			System.out.println("Next create a procedure with maximum allowed number of parameters");
+			tempString = "create procedure P2(" + sbCreateProcParams.toString() + "i" + i +
+        " int, i" + (i+1) + " int) parameter style java language java external name \'org.apache.derbyTesting.functionTests.util.ProcedureTest.maxAllowedParams\' NO SQL";
+			s.executeUpdate(tempString);
+			//just some basic sanity check 
+			DatabaseMetaData met = conn.getMetaData();
+			getCount(met.getProcedureColumns("", "APP", "P2", null));
+
+			System.out.println("And finally create a procedure with more parameters that maximum allowed number of parameters");
+			tempString = "create procedure P3(" + sbCreateProcParams.toString() + "i" + i +
+        " int, i" + (i+1) + " int, i" + (i+2) + " int) parameter style java language java external name \'org.apache.derbyTesting.functionTests.util.ProcedureTest.moreThanMaxAllowedParams\' NO SQL";
+			try {
+				s.executeUpdate(tempString);
+				System.out.println("FAIL - create procedure should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54023"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+		//not running indexes test because it doesn't finish even after running for over 2 hours
+		//ALSO, IF WE EVER ENABLE THIS TEST IN FUTURE, WE NEED TO REWRITE THE TEST SO THAT WE TRY TO CREATE OVER
+		//32767 *DIFFERENT* INDEXES. AS PART OF DB2 COMPATIBILITY WORK, BUG - 5685 DISALLOWS CREATION OF AN INDEX
+		//ON A COLUMN THAT ALREADY HAS A PRIMARY KEY OR UNIQUE CONSTRAINT ON IT.
+	public static void testMostIndexesOnTable( Connection conn) throws Throwable
+	{
+    try {
+			System.out.println("Test - most indexes allowed on a table");
+			conn.setAutoCommit(false);
+			Statement s = conn.createStatement();
+			int i = 0;
+
+			s.executeUpdate("create table t1 (c1 int not null, c2 int, primary key(c1))");
+			System.out.println("First create one index less than maximum allowed number of indexes");
+			for (i = 0; i < DB2Limit.DB2_MAX_INDEXES_ON_TABLE-2; i++) {
+				s.executeUpdate("create index i" + i + " on t1(c1,c2)");
+			System.out.println("   create index" + i);
+			}
+
+			System.out.println("Next create maximum allowed number of indexes");
+			s.executeUpdate("create index i" + (i+1) + " on t1(c1,c2)");
+
+			System.out.println("And finally create one index more than maximum allowed number of indexes");
+			try {
+				s.executeUpdate("create index i" + (i+2) + " on t1(c1,c2)");
+				System.out.println("FAIL - create index should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+
+			System.out.println("And finally try maximum allowed number of indexes violation using add constraint");
+			try {
+				s.executeUpdate("alter table t1 add constraint i" + (i+2) + " unique (c1,c2)");
+				System.out.println("FAIL - create index should have failed");
+			}
+			catch (SQLException e) {
+				if (e.getSQLState().equals("54011"))
+					System.out.println("expected exception " + e.getMessage());
+				else
+					dumpSQLExceptions(e);
+			}
+			s.executeUpdate("drop table t1");
+			conn.setAutoCommit(true);
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+	}
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception: " + se.toString());
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se = se.getNextException();
+		}
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dbManagerLimits_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+usedefaults=true
+jvmflags=-ms32M -mx128M

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,409 @@
+-- test DDL Table Lock mode
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+
+-- create tables with different lock modes
+drop   table default1;
+create table default1(c1 int);
+drop   table row1;
+create table row1(c1 int);
+alter table row1 locksize row;
+drop   table table1;
+create table table1(c1 int);
+alter table table1 locksize table;
+
+-- verify that views have table lock mode of 'R' (ignored)
+create view v1 as select * from table1;
+select tablename, lockgranularity from sys.systables
+where tablename = 'V1';
+drop view v1;
+
+-- verify that system tables have lock mode of 'R'
+select tablename, lockgranularity from sys.systables
+where tablename = 'SYSTABLES';
+
+-- READ COMMITTED tests
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+set current isolation = CS;
+-- all selects should be row locked except for table1
+select * from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all updates should be row locked except for table1
+update default1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update default1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- all inserts should be row locked except for table1
+insert into default1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into row1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into table1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all deletes should be row locked except for table1
+delete from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from default1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+
+-- REPEATABLE READ tests
+--   repeatable read works the same as serializable when no indexes are involved
+
+-- create tables with different lock modes
+drop   table default1;
+create table default1(c1 int);
+drop   table row1;
+create table row1(c1 int);
+alter table row1 locksize row;
+drop   table table1;
+create table table1(c1 int);
+alter table table1 locksize table;
+
+set current isolation RS;
+-- all selects should be row locked except for table1
+select * from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all updates should be row locked except for table1
+update default1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update default1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- all inserts should be row locked except for table1
+insert into default1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into row1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into table1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all deletes should be row locked except for table1
+delete from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from default1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+
+-- alter table
+-- first set to same value (stupid test)
+alter table default1 locksize row;
+alter table row1 locksize row;
+alter table table1 locksize table;
+select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+
+-- set to opposite value 
+alter table default1 locksize table;
+alter table row1 locksize table;
+alter table table1 locksize row;
+select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+
+-- READ UNCOMMITTED tests
+
+-- create tables with different lock modes
+drop   table default1;
+create table default1(c1 int);
+drop   table row1;
+create table row1(c1 int);
+alter table row1 locksize row;
+drop   table table1;
+create table table1(c1 int);
+alter table table1 locksize table;
+
+set isolation = read uncommitted;
+-- all selects should be row locked except for table1
+
+select * from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all updates should be row locked except for table1
+update default1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update default1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- all inserts should be row locked except for table1
+insert into default1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into row1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into table1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all deletes should be row locked except for table1
+delete from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from default1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+
+-- alter table
+-- first set to same value (stupid test)
+alter table default1 locksize row;
+alter table row1 locksize row;
+alter table table1 locksize table;
+select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+
+-- set to opposite value 
+alter table default1 locksize table;
+alter table row1 locksize table;
+alter table table1 locksize row;
+select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+
+
+-- SERIALIZABLE tests
+
+-- create tables with different lock modes
+drop   table default1;
+create table default1(c1 int);
+drop   table row1;
+create table row1(c1 int);
+alter table row1 locksize row;
+drop   table table1;
+create table table1(c1 int);
+alter table table1 locksize table;
+
+set isolation serializable;
+-- all selects should be table locked since no where clause
+select * from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all updates should be table locked
+-- (No indexes, so will always do table scan)
+update default1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update default1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- all inserts should be row locked except for table1
+insert into default1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into row1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into table1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- scans for all deletes should be table locked
+-- (No indexes, so will always do table scan)
+delete from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from default1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+
+-- alter table
+-- first set to same value (stupid test)
+alter table default1 locksize row;
+alter table row1 locksize row;
+alter table table1 locksize table;
+select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+
+-- set to opposite value 
+alter table default1 locksize table;
+alter table row1 locksize table;
+alter table table1 locksize row;
+select tablename, lockGranularity from sys.systables
+where tablename in ('DEFAULT1', 'ROW1', 'TABLE1')
+order by tablename;
+
+set isolation read committed;
+-- verify lock granularity changed for selects
+select * from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify lock granularity changed for updates
+update default1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update default1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update row1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+update table1 set c1 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify lock granularity changed for inserts
+insert into default1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into row1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+insert into table1 values 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify lock granularity changed for deletes
+delete from default1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from default1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from row1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+delete from table1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+CALL WAIT_FOR_POST_COMMIT();
+
+-- bug 3819; delete from table would first
+-- end up getting an IX lock on table then
+-- an X lock on table; this can lead to
+-- deadlocks with multiple threads doing
+-- delete from table. fix is to choose 
+-- row locking for deletes/updates in *all*
+-- cases; this would result in an IX lock
+-- on the table. means more locking but
+-- increased concurrency.
+insert into default1 values (1);
+insert into default1 values (2);
+select * from default1 order by c1;
+
+set isolation to CURSOR STABILITY;
+
+autocommit off;
+
+delete from default1;
+
+-- should see only one lock; earlier used to 
+-- see 2, one IX and one for X.
+select count(*)
+ from new org.apache.derby.diag.LockTable() l 
+ where tablename = 'DEFAULT1' and type = 'TABLE';
+
+commit;
+
+-- cleanup
+drop procedure WAIT_FOR_POST_COMMIT;
+drop table default1;
+drop table row1;
+drop table table1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ddlTableLockMode_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+	This tests for deadlock which can occur if two threads get a 
+	row lock before getting a table lock on the same table.  This can
+	happen if the lock obtained by the insert, update or delete result set
+	is a smaller range than the table scan result set.  The insert, update or
+	delete result set lock is obtained first.  For example, if the insert, update
+	or delete result set obtain a row lock and then the table scan obtains a
+	table scan lock, deadlock can occur since two threads can obtain the row lock
+	and then both thread will want the same table lock.
+ */
+
+public class deadlockMode { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+
+	private static final int THREAD_COUNT = 20;
+	private static boolean passed = false;
+	private Object syncObject = new Object();
+	private int doneCount;
+	private deadlockMode() {}
+
+	public static void main(String[] args) {
+		System.out.println("Test deadlockMode starting");
+		
+		deadlockMode tester = new deadlockMode();
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			Connection conn = ij.startJBMS();
+
+			setup(conn, true);
+			passed = true;
+			tester.runtest();
+			teardown(conn);
+			conn.close();
+
+
+		} catch (Throwable e) {
+			System.out.println("FAIL: exception thrown:");
+			passed = false;
+			JDBCDisplayUtil.ShowException(System.out,e);
+			e.printStackTrace();
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		System.out.println("Test cursor finished");
+	}
+	/**
+	 * This method creates THREAD_COUNT threads which will all try to
+	 * update the same table 
+	 */
+	private void runtest() throws InterruptedException
+	{
+		Thread [] t = new Thread[THREAD_COUNT];
+		for (int i = 0; i < THREAD_COUNT; i++)
+		{	
+		 	t[i] = new Thread(new Runnable() {
+				public void run() {startnew(); }});
+			t[i].start();
+		}
+		boolean notdone = true;
+		while(notdone)
+		{
+			synchronized(syncObject)
+			{
+				if (doneCount == THREAD_COUNT)
+					notdone = false;
+				else
+					syncObject.wait();
+			}
+		}
+	}
+	/**
+	 * Keep track of how many are done so we can wait until all the
+	 * threads are finished before saying we have passed
+	 */
+	private void done()
+	{
+		System.out.println("Done Thread");
+		synchronized(syncObject)
+		{
+			doneCount++;
+			syncObject.notify();
+		}
+	}
+	/**
+	 * This method creates a connection, loads the query into cache using
+  	 * READ_COMMITTED and then tries to execute the query using SERIALIZABLE.
+	 * If we don't update the lock mode based on the isolation level at
+	 * execution time, the query can deadlock with other threads
+	 * SERALIZABLE requires a table lock mode.  READ_COMMITTED uses a row lock.
+	 */
+	private void startnew()
+	{
+		Connection conn = null;
+		try {
+			// make the initial connection.
+			conn = ij.startJBMS();
+			System.out.println("Starting thread");
+
+			Statement stmt = conn.createStatement();
+			// execute a query to load cache
+			stmt.executeUpdate("update t set i = 456 where i = 456");
+			// set isolation level to serializable
+			conn.setAutoCommit(false);
+			stmt.execute("set isolation serializable");
+			for (int i = 0; i < 100 ; i++)
+			{
+				stmt.executeUpdate("update t set i = 456 where i = 456");
+				conn.commit();
+			}
+			done();
+			
+		} catch (Throwable e) {
+			synchronized(syncObject)
+			{
+				System.out.println("FAIL: exception thrown:");
+				passed = false;
+				JDBCDisplayUtil.ShowException(System.out,e);
+				e.printStackTrace();
+				done();
+			}
+		}
+		finally {
+			try {
+				if (conn != null) {
+					conn.rollback();
+					conn.close();
+				}
+			} catch (SQLException sqle) {
+				System.out.println("FAIL: exception thrown:");
+				passed = false;
+				JDBCDisplayUtil.ShowException(System.out,sqle);
+				sqle.printStackTrace();
+			}
+		}
+	}
+	/**
+	 * set up the table for the test
+	 */
+	static void setup(Connection conn, boolean first) throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		if (first) {
+			verifyCount(
+				stmt.executeUpdate("create table t (i int)"),
+				0);
+
+		} else {
+			verifyBoolean(
+				stmt.execute("delete from t"),
+				false);
+		}
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (1956)"),
+			1);
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (456)"),
+			1);
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (180)"),
+			1);
+
+		verifyCount(
+		    stmt.executeUpdate("insert into t values (3)"),
+			1);
+
+		stmt.close();
+
+		System.out.println("PASS: setup complete");
+	}
+
+	/**
+	 * clean up
+	 */ 
+	static void teardown(Connection conn) throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t"),
+			0);
+
+		stmt.close();
+
+		System.out.println("PASS: teardown complete");
+	}
+	/** 
+	 * verify row count
+	 */
+	static void verifyCount(int count, int expect) throws SQLException {
+		if (count!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+count+" rows");
+			throw new SQLException("Wrong number of rows returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+count+
+							   (count == 1? " row":" rows"));
+	}
+
+	/**
+	 * verify boolean value
+	 */
+	static void verifyBoolean(boolean got, boolean expect) throws SQLException {
+		if (got!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+got);
+			throw new SQLException("Wrong boolean returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+got);
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+derby.locks.waitTimeout=1000

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/deadlockMode_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,11 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+---------------------------------------------------------------------------------
+# needed for j9 jvm only...
+substitute=threadStarting;thread\nStarting,ThreadDone;Thread\nDone

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1903 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.Statement;                                                                                     
+import java.sql.SQLException;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Test for declared global temporary tables introduced in Cloudscape 5.2
+ * The temp table tests with holdable cursor and savepoints are in declareGlobalTempTableJavaJDBC30 class.
+ * The reason for a different test class is that the holdability and savepoint support is under jdk14 and higher.
+ * But we want to be able to run the non-jdk14 specific tests under all the jdks we support and hence splitting
+ * the tests into 2 different classes
+ */
+
+
+public class declareGlobalTempTableJava { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	/*
+	** There is a small description prior to each sub-test describing what is being tested.
+	*/
+	public static void main(String[] args) {
+		boolean		passed = true;
+
+		Connection con1 = null, con2 = null;
+		Statement  s = null;
+
+		/* Run all parts of this test, and catch any exceptions */
+		try {
+			System.out.println("Test declaredGlobalTempTableJava starting");
+
+			/* Load the JDBC Driver class */
+			// use the ij utility to read the property file and
+			// make the initial connection.
+      
+			ij.getPropertyArg(args);
+			con1 = ij.startJBMS();
+			con2 = ij.startJBMS();
+
+			s = con1.createStatement();
+			con1.setAutoCommit(false);
+			con2.setAutoCommit(false);
+
+			/* Test various schema and grammar related cases */
+			passed = testSchemaNameAndGrammar(con1, s) && passed;
+
+			/* Test various unallowed operations */
+			passed = testOtherOperations(con1, s, con2) && passed;
+
+			con1.close();
+			con2.close();
+
+		} catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception "+e);
+			JDBCDisplayUtil.ShowException(System.out, e);
+			e.printStackTrace();
+			passed = false;
+		}
+
+		if (passed)
+			System.out.println("PASS");
+
+		System.out.println("Test declaredGlobalTempTable finished");
+	}
+
+	/**
+	 * Test various schema and grammar related cases
+	 *
+	 * @param conn	The Connection
+	 * @param s		A Statement on the Connection
+	 *
+	 * @return	true if it succeeds, false if it doesn't
+	 *
+	 * @exception SQLException	Thrown if some unexpected error happens
+	 */
+
+	static boolean testSchemaNameAndGrammar(Connection con1, Statement s)
+					throws SQLException {
+		boolean passed = true;
+
+		try
+		{
+			System.out.println("TEST1 : global temporary tables can only be in SESSION schema");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE APP.t2(c21 int) on commit delete rows not logged");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST1 FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST1 PASSED");
+		}
+
+		try
+		{
+			System.out.print("TEST2A : Declaring a global temporary table while in SYS schema will pass ");
+			System.out.println("because temp tables always go in SESSION schema and never in default schema");
+
+			s.executeUpdate("set schema SYS");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t2(c21 int) on commit delete rows not logged");
+
+			con1.commit();
+			System.out.println("TEST2A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: " + e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST2A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST2B : Drop the declared global temporary table declared in TEST2A while in schema SYS");
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("set schema APP");
+
+			con1.commit();
+			System.out.println("TEST2B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: " + e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST2B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3A : positive grammar tests for DECLARE command");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tA(c1 int) not logged");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tB(c1 int) on commit delete rows not logged");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tC(c1 int) not logged on commit delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tD(c1 int) on commit preserve rows not logged");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tE(c1 int) not logged on commit preserve rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tF(c1 int) on rollback delete rows not logged");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tG(c1 int) not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tH(c1 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tI(c1 int) not logged on commit preserve rows on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tJ(c1 int) not logged on rollback delete rows on commit preserve rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tK(c1 int) on commit delete rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tL(c1 int) not logged on commit delete rows on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE tM(c1 int) not logged on rollback delete rows on commit delete rows");
+
+			s.executeUpdate("DROP TABLE SESSION.tA");
+			s.executeUpdate("DROP TABLE SESSION.tB");
+			s.executeUpdate("DROP TABLE SESSION.tC");
+			s.executeUpdate("DROP TABLE SESSION.tD");
+			s.executeUpdate("DROP TABLE SESSION.tE");
+			s.executeUpdate("DROP TABLE SESSION.tF");
+			s.executeUpdate("DROP TABLE SESSION.tG");
+			s.executeUpdate("DROP TABLE SESSION.tH");
+			s.executeUpdate("DROP TABLE SESSION.tI");
+			s.executeUpdate("DROP TABLE SESSION.tJ");
+			s.executeUpdate("DROP TABLE SESSION.tK");
+			s.executeUpdate("DROP TABLE SESSION.tL");
+			s.executeUpdate("DROP TABLE SESSION.tM");
+			con1.commit();
+			System.out.println("TEST3A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3B : negative grammar tests for DECLARE command");
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t1(c11 int)");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table without NOT LOGGED. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t1(c11 int) NOT LOGGED NOT LOGGED");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with multiple NOT LOGGED. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t1(c11 int) NOT LOGGED ON COMMIT PRESERVE ROWS ON COMMIT DELETE ROWS");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with multiple ON COMMIT. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t1(c11 int) NOT LOGGED ON ROLLBACK DELETE ROWS ON ROLLBACK DELETE ROWS");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with multiple ON ROLLBACK. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t1(c11 int) NOT LOGGED ON ROLLBACK PRESERVE ROWS");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with syntax error ON ROLLBACK PRESERVE ROWS. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE t1(c11 int) ON ROLLBACK DELETE ROWS ON COMMIT PRESERVE ROWS");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table without NOT LOGGED. " + e.getMessage());
+			}
+
+			con1.commit();
+			System.out.println("TEST3B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3B FAILED");
+		}
+
+		return passed;
+	}
+
+	/**
+	 * Test various other operations on declared global temporary tables
+	 *
+	 * @param con1	Connection to the database
+	 * @param s		A Statement on the Connection
+	 * @param con2	Another Connection to the database
+	 *
+	 * @return	true if it succeeds, false if it doesn't
+	 *
+	 * @exception SQLException	Thrown if some unexpected error happens
+	 */
+
+	static boolean testOtherOperations(Connection con1, Statement s, Connection con2)
+					throws SQLException {
+		boolean passed = true;
+
+		try
+		{
+			System.out.println("TEST4A : ALTER TABLE not allowed on global temporary tables");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) not logged on commit delete rows");
+			s.executeUpdate("ALTER TABLE SESSION.t2 add column c22 int");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST4A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST4A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST4B : ALTER TABLE on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int)");
+			s.executeUpdate("ALTER TABLE SESSION.t2 add column c22 int");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST4B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST4B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST5A : LOCK TABLE not allowed on global temporary tables");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			s.executeUpdate("LOCK TABLE SESSION.t2 IN SHARE MODE");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST5A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST5A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST5B : LOCK TABLE on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int)");
+			s.executeUpdate("LOCK TABLE SESSION.t2 IN EXCLUSIVE MODE");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST5B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST5B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST6A : RENAME TABLE not allowed on global temporary tables");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			s.executeUpdate("RENAME TABLE SESSION.t2 TO t3");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST6A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST6A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST6B : RENAME TABLE on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int)");
+			s.executeUpdate("RENAME TABLE SESSION.t2 TO t3");
+			s.executeUpdate("DROP TABLE SESSION.t3");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST6B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST6B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST6C : RENAME COLUMN on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("SET schema SESSION");
+			s.executeUpdate("CREATE TABLE t2(c21 int)");
+			//s.executeUpdate("RENAME COLUMN t2.c21 TO c22");
+			s.executeUpdate("SET schema APP");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST6C PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST6C FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST8 : generated always as identity not supported for declared global temporary tables");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int generated always as identity) on commit delete rows not logged");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST8 FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST8 PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST9 : long datatypes not supported for declared global temporary tables");
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 blob(3k)) on commit delete rows not logged");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with blob. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 clob(3k)) on commit delete rows not logged");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with clob. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 long varchar) on commit delete rows not logged");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with long varchar. " + e.getMessage());
+			}
+
+			try {
+				s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 \"org.apache.derbyTesting.functionTests.util.ShortHolder\") on commit delete rows not logged");
+			} catch (Throwable e)
+			{
+				System.out.println("  Expected exception. Attempted to declare a temp table with user defined type. " + e.getMessage());
+			}
+
+			con1.commit();
+			System.out.println("TEST9 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST9 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST10A : Primary key constraint not allowed on a declared global temporary table.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int not null, constraint pk primary key (c21)) on commit delete rows not logged");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST10A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST10A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST10B : Primary key constraint allowed on a physical table in SESSION schema.");
+
+			s.executeUpdate("CREATE SCHEMA SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int not null, constraint pk primary key (c21))");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST10B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST10B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST10C : Unique key constraint not allowed on a declared global temporary table.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int not null unique) on commit delete rows not logged");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST10C FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST10C PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST10D : Foreign key constraint not allowed on a declared global temporary table.");
+
+			s.executeUpdate("CREATE TABLE t1(c11 int not null unique)");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int references t1(c11)) on commit delete rows not logged");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST10D FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE t1");
+			con1.commit();
+			System.out.println("TEST10D PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST11 : Attempt to declare the same global temporary table twice will fail. Plan to support WITH REPLACE in future");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) not logged on commit preserve rows");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST11 FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST11 PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST12 : Try to drop a declared global temporary table that doesn't exist.");
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST12 FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST12 PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST13A : insert into declared global temporary table will pass.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 char(2)) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values (1, 'aa')");
+			s.executeUpdate("insert into SESSION.t2 values (2, 'bb'),(3, 'cc'),(4, null)");
+			s.executeUpdate("CREATE TABLE t1(c11 int, c22 char(2))");
+			s.executeUpdate("insert into t1 values (5, null),(6, null),(7, 'gg')");
+			s.executeUpdate("insert into SESSION.t2 (select * from t1 where c11>4)");
+			s.executeUpdate("insert into SESSION.t2 select * from SESSION.t2");
+			ResultSet rs1 = s.executeQuery("select sum(c21) from SESSION.t2");
+      dumpRS(rs1);
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP TABLE t1");
+
+			con1.commit();
+			System.out.println("TEST13A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST13A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST13B : attempt to insert null into non-null column in declared global temporary table will fail.");
+			System.out.println("Declare the table with non-null column, insert a row and commit");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 char(2) not null) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values (1, 'aa')");
+			con1.commit();
+			System.out.println("In the next transaction, attempt to insert a null value in the table will fail and we will loose all the rows from the table as part of internal rollback");
+			s.executeUpdate("insert into SESSION.t2 values (2, null)");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST13B FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			System.out.println("should see no data in t2");
+
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST13B PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST13C : declare a temporary table with default and then insert into it.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 char(2) default 'aa', c23 varchar(20) default user ) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values (1, 'aa', null)");
+			s.executeUpdate("insert into SESSION.t2(c21) values (2)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+      dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST13C PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST13C FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST14 : Should be able to create Session schema manually.");
+
+			s.executeUpdate("CREATE schema SESSION");
+
+			con1.commit();
+			System.out.println("TEST14 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST14 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST15 : Session schema can be dropped like any other user-defined schema.");
+
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST15 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST15 FAILED");
+		}
+
+		try
+		{
+			System.out.print("TEST16 : Create a physical SESSION schema, drop it. Next attempt to drop SESSION schema will throw ");
+			System.out.println("an exception because now we are dealing with in-memory SESSION schema and it can not be dropped by drop schema.");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			System.out.println("In TEST16, now attempting to drop in-memory SESSION schema");
+			s.executeUpdate("drop schema SESSION restrict"); //this should fail
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST16 FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST16 PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST17A : Check constraint not allowed on global temporary table");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int check (c21 > 0)) on commit delete rows not logged");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST17A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST17A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST17B : Check constraint allowed on physical SESSION schema table");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int check (c21 > 0))");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST17B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST17B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST18 : Test declared temporary table with ON COMMIT DELETE ROWS with and without open cursors");
+			System.out.println("Tests with holdable cursor are in a different class since holdability support is only under jdk14 and higher");
+
+			System.out.println("Temp table t2 with not holdable cursor open on it. Data should get deleted from t2 at commit time");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values(22, 22)");
+			s.executeUpdate("insert into SESSION.t2 values(23, 23)");
+
+			ResultSet rs2 = s.executeQuery("select count(*) from SESSION.t2"); 
+      dumpRS(rs2);
+
+			rs2 = s.executeQuery("select * from SESSION.t2"); //eventhough this cursor is open, it is not a hold cursor. Commit should delete the rows
+			rs2.next();
+
+			System.out.println("Temp table t3 with no open cursors of any kind on it. Data should get deleted from t3 at commit time");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t3(c31 int, c32 int) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t3 values(32, 32)");
+			s.executeUpdate("insert into SESSION.t3 values(33, 33)");
+
+			ResultSet rs3 = s.executeQuery("select count(*) from SESSION.t3"); 
+      dumpRS(rs3);
+
+			con1.commit();
+
+			System.out.println("After commit, verify the 2 tables");
+			System.out.println("Temp table t2 will have no data after commit");
+			rs2 = s.executeQuery("select count(*) from SESSION.t2"); 
+      dumpRS(rs2);
+
+			System.out.println("Temp table t3 will have no data after commit");
+			rs3 = s.executeQuery("select count(*) from SESSION.t3"); 
+      dumpRS(rs3);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP TABLE SESSION.t3");
+
+			con1.commit();
+			System.out.println("TEST18 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST18 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST19 : Declare a temporary table with ON COMMIT PRESERVE ROWS with and without open cursors");
+			System.out.println("Tests with holdable cursor are in a different class since holdability support is only under jdk14 and higher");
+
+			System.out.println("Temp table t2 with not holdable cursor open on it. Data should be preserved, holdability shouldn't matter");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values(22, 22)");
+			s.executeUpdate("insert into SESSION.t2 values(23, 23)");
+
+			ResultSet rs2 = s.executeQuery("select count(*) from SESSION.t2"); 
+      dumpRS(rs2);
+
+			rs2 = s.executeQuery("select * from SESSION.t2"); //eventhough this cursor is open, it is not a hold cursor.
+			rs2.next();
+
+			System.out.println("Temp table t3 with no open cursors of any kind on it. Data should be preserved, holdability shouldn't matter");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t3(c31 int, c32 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t3 values(32, 32)");
+			s.executeUpdate("insert into SESSION.t3 values(33, 33)");
+
+			ResultSet rs3 = s.executeQuery("select count(*) from SESSION.t3"); 
+      dumpRS(rs3);
+
+			con1.commit();
+
+			System.out.println("After commit, verify the 2 tables");
+			System.out.println("Temp table t2 will have data after commit");
+			rs2 = s.executeQuery("select count(*) from SESSION.t2"); 
+      dumpRS(rs2);
+
+			System.out.println("Temp table t3 will have data after commit");
+			rs3 = s.executeQuery("select count(*) from SESSION.t3"); 
+      dumpRS(rs3);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP TABLE SESSION.t3");
+
+			con1.commit();
+			System.out.println("TEST19 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST19 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST20A : CREATE INDEX not allowed on global temporary table.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("CREATE index t2i1 on SESSION.t2 (c21)");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST20A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST20A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST21A : CREATE INDEX on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t3 (c31 int)");
+			s.executeUpdate("CREATE index t3i1 on SESSION.t3 (c31)");  
+			s.executeUpdate("DROP TABLE SESSION.t3");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST21A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST21A FAILED");
+		}
+/*
+		try
+		{
+			System.out.println("TEST22A : CREATE TRIGGER not allowed on global temporary table.");
+
+			s.executeUpdate("CREATE TABLE t1(c11 int)");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("CREATE TRIGGER t2tr1 before insert on SESSION.t2 for each statement insert into t1 values(1)");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST22A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP TABLE t1");
+			con1.commit();
+			System.out.println("TEST22A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST23A : CREATE TRIGGER not allowed on physical table in SESSION schema");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t3 (c31 int)");
+			s.executeUpdate("CREATE TABLE SESSION.t4 (c41 int)");
+			s.executeUpdate("CREATE TRIGGER t3tr1 before insert on SESSION.t3 for each statement insert into SESSION.t4 values(1)");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST23A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t3");
+			s.executeUpdate("DROP TABLE SESSION.t4");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST23A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST24A : Temporary tables can not be referenced in trigger action");
+
+			s.executeUpdate("CREATE TABLE t3 (c31 int)");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t4 (c41 int) not logged");
+			s.executeUpdate("CREATE TRIGGER t3tr1 before insert on t3 for each statement insert into SESSION.t4 values(1)");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST24A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE t3");
+			s.executeUpdate("DROP TABLE SESSION.t4");
+			con1.commit();
+			System.out.println("TEST24A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST24B : SESSION schema persistent tables can not be referenced in trigger action");
+
+			s.executeUpdate("CREATE TABLE t3 (c31 int)"); //not a SESSION schema table
+			s.executeUpdate("CREATE SCHEMA SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t4 (c41 int)");
+			s.executeUpdate("CREATE TRIGGER t3tr1 before insert on t3 for each statement delete from SESSION.t4");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST24B FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE t3");
+			s.executeUpdate("DROP TABLE SESSION.t4");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST24B PASSED");
+		}
+*/
+		try
+		{
+			System.out.println("TEST26A : CREATE VIEW not allowed on global temporary table.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("CREATE VIEW t2v1 as select * from SESSION.t2");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST26A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST26A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST27A : CREATE VIEW not allowed on physical table in SESSION schema");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t3 (c31 int)");
+			s.executeUpdate("CREATE VIEW t3v1 as select * from SESSION.t3");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST27A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t3");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST27A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST29A : DELETE FROM global temporary table allowed.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 decimal) not logged");
+			s.executeUpdate("insert into SESSION.t2 values(1, 1.1)");
+			s.executeUpdate("insert into SESSION.t2 values(2, 2.2)");
+
+			ResultSet rs2 = s.executeQuery("select count(*) from SESSION.t2");
+			dumpRS(rs2);
+
+			s.executeUpdate("DELETE FROM SESSION.t2 where c21 > 0");
+
+			rs2 = s.executeQuery("select count(*) from SESSION.t2");
+			dumpRS(rs2);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST29A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST29A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST31A : UPDATE on global temporary table allowed.");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("insert into SESSION.t2 values(1, 1)");
+			s.executeUpdate("insert into SESSION.t2 values(2, 1)");
+
+			ResultSet rs2 = s.executeQuery("select count(*) from SESSION.t2 where c22 = 1");
+			rs2.next();
+			if (rs2.getInt(1) != 2)
+				System.out.println("TEST31A FAILED: count should have been 2.");
+
+			s.executeUpdate("UPDATE SESSION.t2 SET c22 = 2 where c21>0");
+
+			rs2 = s.executeQuery("select count(*) from SESSION.t2 where c22 = 1");
+			rs2.next();
+			if (rs2.getInt(1) != 0)
+				System.out.println("TEST31A FAILED: count should have been 0.");
+
+			rs2 = s.executeQuery("select count(*) from SESSION.t2 where c22 = 2");
+			rs2.next();
+			if (rs2.getInt(1) != 2)
+				System.out.println("TEST31A FAILED: count should have been 2.");
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST31A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST31A FAILED");
+		}
+/*
+		try
+		{
+			System.out.println("TEST32A : SET TRIGGERS not allowed on global temporary tables");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			s.executeUpdate("SET TRIGGERS FOR SESSION.t2 ENABLED");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST32A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST32A PASSED");
+		}
+		try
+		{
+			System.out.println("TEST32C : SET TRIGGERS on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int)");
+			s.executeUpdate("SET TRIGGERS FOR SESSION.t2 ENABLED");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST32C PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST32C FAILED");
+		}                            */
+
+		System.out.println("Multiple tests to make sure we do not do statement caching for statement referencing SESSION schema tables");
+		try
+		{
+			System.out.println("TEST34A : CREATE physical table and then DECLARE GLOBAL TEMPORARY TABLE with the same name in session schema.");
+
+			con1.setAutoCommit(true);
+			//Need to do following 3 in autocommit mode otherwise the data dictionary will be in write mode and statements won't get
+			//cached. I need to have statement caching enabled here to make sure that tables with same names do not conflict
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2 (c21 int)");
+			s.executeUpdate("INSERT into SESSION.t2 values(21)");
+
+			con1.setAutoCommit(false);
+			//select will return data from physical table t2
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+
+			//declare temporary table with same name as a physical table in SESSION schema
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit delete rows not logged");
+			s.executeUpdate("INSERT into SESSION.t2 values(22, 22)");
+			s.executeUpdate("INSERT into SESSION.t2 values(23, 23)");
+			//select will return data from temp table t2
+			s.execute("select c21,c22 from SESSION.t2");
+			dumpRS(s.getResultSet());
+			//select will return data from temp table t2
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+
+			//drop the temp table t2
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			//select will return data from physical table t2 because temp table has been deleted
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+
+			//cleanup
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST34A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: " + e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Return false to indicate failure
+			System.out.println("TEST34A FAILED");
+		}
+		try
+		{
+			System.out.println("TEST34B : Physical table & TEMPORARY TABLE with the same name in session schema, try insert.");
+
+			con1.setAutoCommit(true);
+			//Need to do following 3 in autocommit mode otherwise the data dictionary will be in write mode and statements won't get
+			//cached. I need to have statement caching enabled here to make sure that tables with same names do not conflict
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2 (c21 int)");
+			s.executeUpdate("INSERT into SESSION.t2 values(21)");
+
+			con1.setAutoCommit(false);
+			//select will return data from physical table t2
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+
+			//declare temporary table with same name as a physical table in SESSION schema
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			//select will return data from temp table t2
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+			s.executeUpdate("INSERT into SESSION.t2 values(99)");
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+
+			//drop the temp table t2
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			//select will return data from physical table t2 because temp table has been deleted
+			s.execute("select * from SESSION.t2");
+			dumpRS(s.getResultSet());
+
+			//cleanup
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST34B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: " + e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Return false to indicate failure
+			System.out.println("TEST34B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST35A : Temporary table created in one connection should not be available in another connection");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("insert into SESSION.t2 values(22, 22)");
+
+			ResultSet rs1 = s.executeQuery("select count(*) from SESSION.t2");
+      dumpRS(rs1);
+
+			Statement s2 = con2.createStatement();
+			ResultSet rs2 = s2.executeQuery("select count(*) from SESSION.t2"); //con2 should not find temp table declared in con1
+
+      dumpRS(rs2);
+			con1.rollback();
+			con2.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST35A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			con2.commit();
+			System.out.println("TEST35A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST35B : Temp table in one connection should not conflict with temp table with same name in another connection");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("insert into SESSION.t2 values(22, 22)");
+
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+      dumpRS(rs1); //should return 22, 22
+
+			Statement s2 = con2.createStatement();
+			s2.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) not logged");
+			s2.executeUpdate("insert into SESSION.t2 values(99)");
+			ResultSet rs2 = s2.executeQuery("select * from SESSION.t2");
+      dumpRS(rs2); //should return 99
+
+			rs1 = s.executeQuery("select * from SESSION.t2");
+      dumpRS(rs1); //should return 22, 22
+
+			s.executeUpdate("DROP TABLE SESSION.t2"); //dropping temp table t2 defined for con1
+			s2.executeUpdate("DROP TABLE SESSION.t2"); //dropping temp table t2 defined for con2
+			con1.commit();
+			con2.commit();
+			System.out.println("TEST35B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			con2.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST35B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST36 : After creating SESSION schema and making it current schema, temporary tables should not require SESSION qualification");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			s.executeUpdate("insert into SESSION.t2 values(21, 21)");
+			s.executeUpdate("insert into SESSION.t2 values(22, 22)");
+
+			ResultSet rs1 = s.executeQuery("select count(*) from SESSION.t2");
+			rs1.next();
+			if (rs1.getInt(1) != 2)
+				System.out.println("TEST36 FAILED: count should have been 2.");
+
+			s.executeUpdate("CREATE SCHEMA SESSION");
+			s.executeUpdate("SET SCHEMA SESSION");
+
+			rs1 = s.executeQuery("select count(*) from t2"); //no need to qualify temp table here because we are in SESSION schema
+			rs1.next();
+			if (rs1.getInt(1) != 2)
+				System.out.println("TEST36 FAILED: count should have been 2.");
+
+			s.executeUpdate("DROP TABLE t2");
+			s.executeUpdate("SET SCHEMA APP");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST36 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST36 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST37A : Prepared statement test - drop the temp table underneath");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			PreparedStatement pStmt = con1.prepareStatement("insert into SESSION.t2 values (?, ?)");
+      pStmt.setInt(1, 21);
+      pStmt.setInt(2, 1);
+      pStmt.execute();
+
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2"); 
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+      pStmt.setInt(1, 22);
+      pStmt.setInt(2, 2);
+      pStmt.execute();
+			System.out.println("TEST37A : Should not reach here because SESSION.t2 has been dropped underneath the prepared statement");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST37A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST37A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST37B : Prepared statement test - drop and recreate the temp table with different definition underneath");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			PreparedStatement pStmt = con1.prepareStatement("insert into SESSION.t2 values (?, ?)");
+      pStmt.setInt(1, 21);
+      pStmt.setInt(2, 1);
+      pStmt.execute();
+
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int, c23 int) not logged");
+      pStmt.setInt(1, 22);
+      pStmt.setInt(2, 2);
+      pStmt.execute();
+
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int, c23 int, c24 int not null) not logged");
+      pStmt.setInt(1, 22);
+      pStmt.setInt(2, 2);
+      pStmt.execute();
+			System.out.println("TEST37B : Should not reach here because SESSION.t2 has been recreated with not null column");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST37B FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST37B PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST38A : Rollback behavior - declare temp table, rollback, select should fail");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged");
+			PreparedStatement pStmt = con1.prepareStatement("insert into SESSION.t2 values (?, ?)");
+      pStmt.setInt(1, 21);
+      pStmt.setInt(2, 1);
+      pStmt.execute();
+
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			con1.rollback();
+
+			System.out.println("TEST38A : select should fail since temp table got dropped as part of rollback");
+			rs1 = s.executeQuery("select * from SESSION.t2"); //no temp table t2, should fail
+
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST38A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.commit();
+			System.out.println("TEST38A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST38B : Rollback behavior - declare temp table, commit, drop temp table, rollback, select should pass");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged");
+			PreparedStatement pStmt = con1.prepareStatement("insert into SESSION.t2 values (?, ?)");
+      pStmt.setInt(1, 21);
+      pStmt.setInt(2, 1);
+      pStmt.execute();
+
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			con1.commit();
+
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+
+			con1.rollback();
+			System.out.println("TEST38B : select should pass since temp table drop was rolled back");
+			rs1 = s.executeQuery("select * from SESSION.t2"); //no temp table t2, should fail
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST38B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST38B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST38C : Rollback behavior");
+			System.out.println(" In the transaction:");
+			System.out.println("  Declare temp table t2 with 3 columns");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int, c23 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into session.t2 values(1,1,1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			System.out.println("  Drop temp table t2 (with 3 columns)");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t2");
+			} catch (Throwable e)
+			{
+				System.out.println("  Attempted to select from temp table t2 but it failed as expected with exception " + e.getMessage());
+			}
+			System.out.println("  Declare temp table t2 again but this time with 2 columns");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			System.out.println(" Commit the transaction. Should have temp table t2 with 2 columns");
+			con1.commit();
+
+			System.out.println(" In the next transaction:");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			System.out.println("  Drop temp table t2 (with 2 columns)");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			System.out.println("  Declare temp table t2 again but this time with 1 column");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			System.out.println(" Rollback this transaction. Should have temp table t2 with 2 columns");
+			con1.rollback();
+
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			s.executeUpdate("DROP TABLE SESSION.t2");
+
+			con1.commit();
+			System.out.println("TEST38C PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST38C FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST38D : Rollback behavior for tables touched with DML");
+			System.out.println(" In the transaction:");
+			System.out.println("  Declare temp table t2 & t3 & t4 & t5 with preserve rows, insert data and commit");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t3(c31 int, c32 int) not logged on commit preserve rows on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t4(c41 int, c42 int) not logged on rollback delete rows on commit preserve rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t5(c51 int, c52 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into session.t2 values(21,1)");
+			s.executeUpdate("insert into session.t2 values(22,2)");
+			s.executeUpdate("insert into session.t2 values(23,3)");
+			s.executeUpdate("insert into session.t3 values(31,1)");
+			s.executeUpdate("insert into session.t3 values(32,2)");
+			s.executeUpdate("insert into session.t3 values(33,3)");
+			s.executeUpdate("insert into session.t4 values(41,1)");
+			s.executeUpdate("insert into session.t4 values(42,2)");
+			s.executeUpdate("insert into session.t4 values(43,3)");
+			s.executeUpdate("insert into session.t5 values(51,1)");
+			s.executeUpdate("insert into session.t5 values(52,2)");
+			s.executeUpdate("insert into session.t5 values(53,3)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t5");
+			dumpRS(rs1);
+			con1.commit();
+
+			System.out.println(" In the next transaction:");
+			System.out.println("  Declare temp table t6 with preserve rows, insert data and inspect data in all the tables");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t6(c61 int, c62 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("insert into session.t6 values(61,1)");
+			s.executeUpdate("insert into session.t6 values(62,2)");
+			s.executeUpdate("insert into session.t6 values(63,3)");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t5");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t6");
+			dumpRS(rs1);
+
+			System.out.println("  delete from t2 with t5 in it's where clause, look at t2");
+			s.executeUpdate("DELETE FROM session.t2 WHERE c22> (select c52 from session.t5 where c52=2)");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  delete with where clause from t3 so that no rows get deleted, look at the rows");
+			s.executeUpdate("DELETE FROM session.t3 WHERE c32>3");
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  do not touch t4");
+
+			System.out.println("  rollback this transaction, should not see any rows in temp table t2 after rollback");
+			con1.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  temp table t3 should have no rows because attempt was made to delete from it (even though nothing actually got deleted from it in the transaction)");
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  temp table t4 should have its data intact because it was not touched in the transaction that got rolled back");
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+
+			System.out.println("  temp table t5 should have its data intact because it was only used in where clause and not touched in the transaction that got rolled back");
+			rs1 = s.executeQuery("select * from SESSION.t5");
+			dumpRS(rs1);
+
+			System.out.println("  temp table t6 got dropped as part of rollback of this transaction since it was declared in this same transaction");
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t6");
+			} catch (Throwable e)
+			{
+				System.out.println("  Attempted to select from temp table t6 but it failed as expected with exception " + e.getMessage());
+			}
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP TABLE SESSION.t3");
+			s.executeUpdate("DROP TABLE SESSION.t4");
+			s.executeUpdate("DROP TABLE SESSION.t5");
+			con1.commit();
+			System.out.println("TEST38D PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST38D FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST39A : Verify that there is no entry in system catalogs for temporary tables");
+			System.out.println(" Declare a temp table T2 and check system catalogs. Shouldn't find anything. Then drop the temp table");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			ResultSet rs1 = s.executeQuery("select * from sys.systables where tablename like 'T2'");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select tablename, schemaname from sys.systables t, sys.sysschemas s where t.tablename like 'T2' and t.schemaid=s.schemaid");
+			dumpRS(rs1);
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			System.out.println(" Create physical schema SESSION, create a physical table T2 in SESSION schema and check system catalogs. Should be there");
+			s.executeUpdate("CREATE SCHEMA SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int, c22 int)");
+			rs1 = s.executeQuery("select * from sys.systables where tablename like 'T2'");
+			dumpRS(rs1);
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST39A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST39A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST39B : Verify that there is no entry in system catalogs for SESSION schmea after declare table");
+			System.out.println(" Declare a temp table T2 and check system catalogs for SESSION schmea. Shouldn't find anything. Then drop the temp table");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			ResultSet rs1 = s.executeQuery("select schemaname from sys.sysschemas where schemaname like 'SESSION'");
+			dumpRS(rs1);
+			s.executeUpdate("DROP TABLE SESSION.t2");
+
+			con1.commit();
+			System.out.println("TEST39B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST39B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST40 : DatabaseMetaData.getTables() should not return temporary tables");
+			DatabaseMetaData databaseMetaData;
+			databaseMetaData = con1.getMetaData();
+			s.executeUpdate("CREATE SCHEMA SESSION");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			s.executeUpdate("CREATE TABLE SESSION.t3(c31 int, c32 int)");
+			System.out.println("getTables() with no types:");
+ 			dumpRS(databaseMetaData.getTables("", null, "%", null));
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("DROP TABLE SESSION.t3");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST40 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST40 FAILED");
+		}   
+
+		try
+		{
+			System.out.println("TEST41 : delete where current of on temporary tables");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values(21, 1)");
+			s.executeUpdate("insert into SESSION.t2 values(22, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			PreparedStatement pStmt1 = con1.prepareStatement("select c21 from session.t2 for update");
+			ResultSet rs2 = pStmt1.executeQuery();
+			rs2.next();
+			PreparedStatement pStmt2 = con1.prepareStatement("delete from session.t2 where current of "+
+									   rs2.getCursorName());
+			pStmt2.executeUpdate();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs2.next();
+			pStmt2.executeUpdate();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			rs2.close();
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST41 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST41 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST42 : update where current of on temporary tables");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit delete rows not logged");
+			s.executeUpdate("insert into SESSION.t2 values(21, 1)");
+			s.executeUpdate("insert into SESSION.t2 values(22, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			PreparedStatement pStmt1 = con1.prepareStatement("select c21 from session.t2 for update");
+			ResultSet rs2 = pStmt1.executeQuery();
+			rs2.next();
+			PreparedStatement pStmt2 = con1.prepareStatement("update session.t2 set c22 = 2 where current of "+
+									   rs2.getCursorName());
+			pStmt2.executeUpdate();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs2.next();
+			pStmt2.executeUpdate();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			rs2.close();
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST42 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST42 FAILED");
+		}
+/*
+		try
+		{
+			System.out.println("TEST43A : SET CONSTRAINTS not allowed on global temporary tables");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) on commit delete rows not logged");
+			s.executeUpdate("SET CONSTRAINTS FOR SESSION.t2 DISABLED");
+
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST43A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST43A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST43C : SET CONSTRAINTS FOR on physical table in SESSION schema should work");
+
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int)");
+			s.executeUpdate("SET CONSTRAINTS FOR SESSION.t2 ENABLED");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+
+			con1.commit();
+			System.out.println("TEST43C PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST43C FAILED");
+		}
+*/
+		try
+		{
+			System.out.println("TEST44A : Prepared statement test - DML and rollback behavior");
+			System.out.println(" In the transaction:");
+			System.out.println("  Declare temp table t2, insert data using prepared statement and commit");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged on commit preserve rows");
+			PreparedStatement pStmt = con1.prepareStatement("insert into SESSION.t2 values (?, ?)");
+			pStmt.setInt(1, 21);
+			pStmt.setInt(2, 1);
+			pStmt.execute();
+
+			con1.commit();
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println(" In the next transaction:");
+			System.out.println("  insert more data using same prepared statement and rollback. Should loose all the data in t2");
+			pStmt.setInt(1, 22);
+			pStmt.setInt(2, 2);
+			pStmt.execute();
+			con1.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST44A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST44A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST44B : Prepared statement test - DML and rollback behavior");
+			System.out.println(" In the transaction:");
+			System.out.println("  Declare temp table t2, insert data and commit");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged on commit preserve rows");
+			s.executeUpdate("INSERT INTO SESSION.t2 VALUES(21, 1)");
+
+			con1.commit();
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println(" In the next transaction:");
+			System.out.println("  prepare a statement for insert into table but do not execute it and rollback");
+			PreparedStatement pStmt = con1.prepareStatement("insert into SESSION.t2 values (?, ?)");
+			con1.rollback();
+			System.out.println("  Should not loose the data from t2");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST44B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST44B FAILED");
+		}
+
+/*		try
+		{
+			System.out.println("TEST33A : CREATE STATEMENT attempting to reference physical SESSION table in USING clause should work??");
+
+			s.executeUpdate("CREATE SCHEMA SESSION");
+			s.executeUpdate("CREATE TABLE t1(c11 int)");
+			s.executeUpdate("CREATE TABLE SESSION.t2(c21 int)");
+			s.executeUpdate("INSERT INTO SESSION.t2(c21) VALUES(1)");
+			s.executeUpdate("CREATE STATEMENT s2 as select * from t1 where c11 = ? using select c21 from SESSION.t2");
+
+			s.executeUpdate("DROP STATEMENT s2");
+			s.executeUpdate("DROP TABLE t1");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			s.executeUpdate("drop schema SESSION restrict");
+			con1.commit();
+			System.out.println("TEST33A PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unxpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST33A FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST33B : CREATE STATEMENT attempting to global temp table in USING clause should work??");
+
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int) not logged");
+			s.executeUpdate("CREATE TABLE t1(c11 int)");
+			s.executeUpdate("INSERT INTO SESSION.t2(c21) VALUES(1)");
+			s.executeUpdate("CREATE STATEMENT s2 as select * from t1 where c11 = ? using select c21 from SESSION.t2");
+
+			s.executeUpdate("DROP STATEMENT s2");
+			s.executeUpdate("DROP TABLE t1");
+			s.executeUpdate("DROP TABLE SESSION.t2");
+			con1.commit();
+			System.out.println("TEST33B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unxpected message: "+ e.getMessage());
+			con1.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST33B FAILED");
+		}  */
+
+		return passed;
+	}
+
+	static private void dumpExpectedSQLExceptions (SQLException se) {
+		System.out.println("PASS -- expected exception");
+		while (se != null)
+		{
+			System.out.println("SQLSTATE("+se.getSQLState()+"): "+se);
+			se = se.getNextException();
+		}
+	}
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception");
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se.printStackTrace(System.out);
+			se = se.getNextException();
+		}
+	}
+
+	// lifted from the metadata test	
+	private static void dumpRS(ResultSet s) throws SQLException
+	{
+		if (s == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		ResultSetMetaData rsmd = s.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		if (numCols <= 0) 
+		{
+			System.out.println("(no columns!)");
+			return;
+		}
+
+		StringBuffer heading = new StringBuffer("\t ");
+		StringBuffer underline = new StringBuffer("\t ");
+
+		int len;
+		// Display column headings
+		for (int i=1; i<=numCols; i++) 
+		{
+			if (i > 1) 
+			{
+				heading.append(",");
+				underline.append(" ");
+			}
+			len = heading.length();
+			heading.append(rsmd.getColumnLabel(i));
+			len = heading.length() - len;
+			for (int j = len; j > 0; j--)
+			{
+				underline.append("-");
+			}
+		}
+		System.out.println(heading.toString());
+		System.out.println(underline.toString());
+		
+	
+		StringBuffer row = new StringBuffer();
+		// Display data, fetching until end of the result set
+		while (s.next()) 
+		{
+			row.append("\t{");
+			// Loop through each column, getting the
+			// column data and displaying
+			for (int i=1; i<=numCols; i++) 
+			{
+				if (i > 1) row.append(",");
+				row.append(s.getString(i));
+			}
+			row.append("}\n");
+		}
+		System.out.println(row.toString());
+		s.close();
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1332 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.Savepoint;
+import java.sql.Statement;
+import java.sql.SQLException;
+
+import javax.sql.ConnectionPoolDataSource;
+import javax.sql.PooledConnection;
+
+import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Test for declared global temporary tables (introduced in Cloudscape 5.2) and pooled connection close and jdbc 3.0 specific features
+ * The jdbc3.0 specific featuers are holdable cursors, savepoints.
+ * The rest of the temp table test are in declareGlobalTempTableJava class. The reason for a different test
+ * class is that the holdability and savepoint support is under jdk14 and higher. But we want to be able to run the non-holdable
+ * tests under all the jdks we support and hence splitting the tests into two separate tests. Also, the reason for pooled connection close
+ * is because DRDA doesn't yet have support for pooled connection and hence can't pull this test into other temp table test which runs under
+ * both DRDA and plain Cloudscape.
+ */
+
+
+public class declareGlobalTempTableJavaJDBC30 { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	static private boolean isDerbyNet = false;
+
+	/*
+	** There is a small description prior to each sub-test describing what is being tested.
+	*/
+	public static void main(String[] args) {
+		boolean		passed = true;
+
+		Connection con = null;
+		Statement  s = null;
+
+		/* Run all parts of this test, and catch any exceptions */
+		try {
+			System.out.println("Test declaredGlobalTempTableJava starting");
+
+			/* Load the JDBC Driver class */
+			// use the ij utility to read the property file and
+			// make the initial connection.
+      
+			ij.getPropertyArg(args);
+			con = ij.startJBMS();
+			String framework = System.getProperty("framework");
+			if (framework != null && framework.toUpperCase().equals("DERBYNET"))
+				isDerbyNet = true;
+
+			con.setAutoCommit(false);
+			s = con.createStatement();
+
+			/* Test temp tables with holdable cursors and with ON COMMIT DELETE ROWS and ON COMMIT PRESERVE ROWS */
+			/* Test temp tables rollback behavior in combination with savepoints */
+			passed = testHoldableCursorsAndSavepoints(con, s) && passed;
+
+			/* Test pooled connection close behavior */
+			passed = testPooledConnectionClose() && passed;
+
+			con.close();
+
+		} catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception "+e);
+			JDBCDisplayUtil.ShowException(System.out, e);
+			e.printStackTrace();
+			passed = false;
+		}
+
+		if (passed)
+			System.out.println("PASS");
+
+		System.out.println("Test declaredGlobalTempTable finished");
+	}
+
+	/**
+	 * Test temp tables with holdable cursors and with ON COMMIT DELETE ROWS and ON COMMIT PRESERVE ROWS
+	 * Test temp tables rollback behavior in combination with savepoints
+	 *
+	 * @param conn	The Connection
+	 * @param s		A Statement on the Connection
+	 *
+	 * @return	true if it succeeds, false if it doesn't
+	 *
+	 * @exception SQLException	Thrown if some unexpected error happens
+	 */
+
+	static boolean testHoldableCursorsAndSavepoints(Connection con, Statement s)
+					throws SQLException {
+		boolean passed = true;
+
+		try
+		{
+			System.out.println("TEST1 : Test declared temporary table with ON COMMIT DELETE ROWS and holdable cursors");
+                     
+			System.out.println("Temp table t1 with held open cursors on it. Data should be preserved in t1 at commit time");
+      //create a statement with hold cursors over commit
+      Statement s1 = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+      ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			s1.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit delete rows not logged");
+			s1.executeUpdate("insert into session.t1 values(11, 1)");
+			s1.executeUpdate("insert into session.t1 values(12, 2)");
+			ResultSet rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 2
+      dumpRS(rs1);
+
+			rs1 = s1.executeQuery("select * from SESSION.t1"); //hold cursor open on t1. Commit should preserve the rows
+			rs1.next();
+
+			System.out.println("Temp tables t2 & t3 with one held open cursor on them together. Data should be preserved in t2 & t3 at commit time");
+      Statement s2 = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+      ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			s2.executeUpdate("declare global temporary table SESSION.t2(c21 int, c22 int) on commit delete rows not logged");
+			s2.executeUpdate("insert into session.t2 values(21, 1)");
+			s2.executeUpdate("insert into session.t2 values(22, 2)");
+			ResultSet rs23 = s2.executeQuery("select count(*) from SESSION.t2"); //should return count of 2
+      dumpRS(rs23);
+
+			s2.executeUpdate("declare global temporary table SESSION.t3(c31 int, c32 int) on commit delete rows not logged");
+			s2.executeUpdate("insert into session.t3 values(31, 1)");
+			s2.executeUpdate("insert into session.t3 values(32, 2)");
+			rs23 = s2.executeQuery("select count(*) from SESSION.t3"); //should return count of 2
+      dumpRS(rs23);
+
+			rs23 = s2.executeQuery("select * from SESSION.t2, SESSION.t3 where c22=c32"); //hold cursor open on t2 & t3. Commit should preseve the rows
+			rs23.next(); 
+
+			System.out.println("Temp table t4 with one held cursor but it is closed before commit. Data should be deleted from t4 at commit time");
+      Statement s3 = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+      ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			s3.executeUpdate("declare global temporary table SESSION.t4(c41 int, c42 int) on commit delete rows not logged");
+			s3.executeUpdate("insert into session.t4 values(41, 1)");
+			s3.executeUpdate("insert into session.t4 values(42, 2)");
+			ResultSet rs4 = s3.executeQuery("select count(*) from SESSION.t4"); //should return count of 2
+      dumpRS(rs4);
+
+			rs4 = s3.executeQuery("select * from SESSION.t4"); //hold cursor open on t4 but close it before commit.
+			rs4.next();
+			rs4.close();
+
+			con.commit();
+
+			System.out.println("After commit, verify all the 4 tables");
+
+			System.out.println("Temp table t1 will have the data intact after commit");
+			rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 2
+      dumpRS(rs1);
+
+			System.out.println("Temp table t2 will have the data intact after commit");
+			rs23 = s2.executeQuery("select count(*) from SESSION.t2"); //should return count of 2
+      dumpRS(rs23);
+
+			System.out.println("Temp table t3 will have the data intact after commit");
+			rs23 = s2.executeQuery("select count(*) from SESSION.t3"); //should return count of 2
+      dumpRS(rs23);
+
+			System.out.println("Temp table t4 will have no data after commit");
+			rs4 = s3.executeQuery("select count(*) from SESSION.t4"); //should return count of 0
+      dumpRS(rs4);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+			s.executeUpdate("drop table SESSION.t3");   
+			s.executeUpdate("drop table SESSION.t4");
+
+			con.commit();
+			System.out.println("TEST1 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			e.printStackTrace(System.out);
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST1 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST1a : Test declared temporary table with ON COMMIT DELETE ROWS and holdable cursors on prepared statement");
+
+			System.out.println("Temp table t1 with held open cursors on it. Data should be preserved in t1 at commit time");
+			Statement s1 = con.createStatement();
+			s1.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit delete rows not logged");
+			s1.executeUpdate("insert into session.t1 values(11, 1)");
+			s1.executeUpdate("insert into session.t1 values(12, 2)");
+      
+			//create a prepared statement with hold cursors over commit
+			PreparedStatement ps1 = con.prepareStatement("select count(*) from SESSION.t1",
+			ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			ResultSet rs1 = ps1.executeQuery(); //should return count of 2
+			dumpRS(rs1);
+
+			PreparedStatement ps2 = con.prepareStatement("select * from SESSION.t1",
+			ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			ResultSet rs11 = ps2.executeQuery(); //hold cursor open on t1. Commit should preserve the rows
+			rs11.next(); //notice that we didn't close rs11 with hold cursor on commit
+
+			System.out.println("Temp table t2 with one held cursor but it is closed before commit. Data should be deleted from t2 at commit time");
+			s1.executeUpdate("declare global temporary table SESSION.t2(c21 int, c22 int) on commit delete rows not logged");
+			s1.executeUpdate("insert into session.t2 values(21, 1)");
+			s1.executeUpdate("insert into session.t2 values(22, 2)");
+      
+			//create a prepared statement with hold cursors over commit
+			PreparedStatement ps3 = con.prepareStatement("select count(*) from SESSION.t2",
+			ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			ResultSet rs2 = ps3.executeQuery(); //should return count of 2
+			dumpRS(rs2);
+
+			PreparedStatement ps4 = con.prepareStatement("select * from SESSION.t2",
+			ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			rs2 = ps4.executeQuery(); //hold cursor open on t2 but close it before commit.
+			rs2.next();
+			rs2.close();
+
+			con.commit();
+
+			System.out.println("After commit, verify both the tables");
+
+			System.out.println("Temp table t1 will have the data intact after commit");
+			rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 2
+			dumpRS(rs1);
+			//Need to close the held cursor on t1 before t1 can be dropped
+			rs11.close();
+
+			System.out.println("Temp table t2 will have no data after commit");
+			rs2 = s1.executeQuery("select count(*) from SESSION.t2"); //should return count of 0
+			dumpRS(rs2);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+
+			con.commit();
+			System.out.println("TEST1a PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST1a FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST2 : Declare a temporary table with ON COMMIT PRESERVE ROWS and various combinations of holdability");
+
+			System.out.println("Temp table t1 with held open cursors on it. Data should be preserved, holdability shouldn't matter");
+      //create a statement with hold cursors over commit
+      Statement s1 = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+      ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			s1.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			s1.executeUpdate("insert into session.t1 values(11, 1)");
+			s1.executeUpdate("insert into session.t1 values(12, 2)");
+			ResultSet rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 2
+      dumpRS(rs1);
+
+			rs1 = s1.executeQuery("select * from SESSION.t1"); //hold cursor open on t1.
+			rs1.next();
+
+			con.commit();
+
+			System.out.println("After commit, verify the table");
+
+			System.out.println("Temp table t1 will have data after commit");
+			rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 2
+      dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			con.commit();
+			System.out.println("TEST2 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST2 FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3A : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  Create savepoint1 and declare temp table t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			PreparedStatement pStmt = con.prepareStatement("insert into SESSION.t1 values (?, ?)");
+      pStmt.setInt(1, 11);
+      pStmt.setInt(2, 1);
+      pStmt.execute();
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint 2, drop temp table t1, rollback savepoint 2");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("drop table SESSION.t1");
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t1");
+			} catch (Throwable e)
+			{
+				System.out.println("Expected message: "+ e.getMessage());
+			}
+      con.rollback(savepoint2);
+
+			System.out.println("  select should pass, rollback savepoint 1, select should fail");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+      con.rollback(savepoint1);
+			rs1 = s.executeQuery("select * from SESSION.t1");
+
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3A FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con.commit();
+			System.out.println("TEST3A PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST3B : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  Create savepoint1 and declare temp table t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+
+			System.out.println("  Create savepoint2 and declare temp table t2");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t2(c21 int, c22 int) on commit preserve rows not logged");
+
+			System.out.println("  Release savepoint 1 and select from temp table t1 & t2");
+      con.releaseSavepoint(savepoint1);
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Drop temp table t2(explicit drop), rollback transaction(implicit drop of t1)");
+			s.executeUpdate("drop table SESSION.t2");
+      con.rollback();
+
+			System.out.println("  Select from temp table t1 and t2 will fail");
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t1");
+			} catch (Throwable e)
+			{
+				System.out.println("Expected message: "+ e.getMessage());
+			}
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t2");
+			} catch (Throwable e)
+			{
+				System.out.println("Expected message: "+ e.getMessage());
+			}
+			con.commit();
+			System.out.println("TEST3B PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+      con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3B FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3C : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  Create savepoint1 and declare temp table t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+
+			System.out.println("  Create savepoint2 and declare temp table t2");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t2(c21 int, c22 int) on commit preserve rows not logged");
+
+			System.out.println("  Release savepoint 1 and select from temp table t1 and t2");
+      con.releaseSavepoint(savepoint1);
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint3 and rollback savepoint3(should not touch t1 and t2)");
+			Savepoint savepoint3 = con.setSavepoint();
+      con.rollback(savepoint3);
+
+			System.out.println("  select from temp tables t1 and t2 should pass");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback transaction and select from temp tables t1 and t2 should fail");
+      con.rollback();
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t1");
+			} catch (Throwable e)
+			{
+				System.out.println("Expected message: "+ e.getMessage());
+			}
+			try {
+				rs1 = s.executeQuery("select * from SESSION.t2");
+			} catch (Throwable e)
+			{
+				System.out.println("Expected message: "+ e.getMessage());
+			}
+
+			con.commit();
+			System.out.println("TEST3C PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+      con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3C FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3D : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  Create savepoint1 and declare temp table t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+
+			System.out.println("  Create savepoint2 and drop temp table t1");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("drop table SESSION.t1");
+
+			System.out.println("  Rollback savepoint2 and select temp table t1");
+      con.rollback(savepoint2);
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println(" Commit transaction and select temp table t1");
+			con.commit();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			con.commit();
+			System.out.println("TEST3D PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3D FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3E : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  Create savepoint1 and declare temp table t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+
+			System.out.println("  Create savepoint2 and drop temp table t1");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("drop table SESSION.t1");
+
+			System.out.println("  Rollback savepoint 1 and select from temp table t1 should fail");
+      con.rollback(savepoint1);
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3E FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con.commit();
+			System.out.println("TEST3E PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST3F : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 and drop temp table t1");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			s.executeUpdate("drop table SESSION.t1");
+			System.out.println("  rollback, select on t1 should fail");
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3F FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con.commit();
+			System.out.println("TEST3F PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST3G : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			con.commit();
+			System.out.println(" In the transaction:");
+			System.out.println("  drop temp table t1 and rollback, select on t1 should pass");
+			s.executeUpdate("drop table SESSION.t1");
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			con.commit();
+			System.out.println("TEST3G PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3G FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3H : Savepoint and commit behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			con.commit();
+			System.out.println(" In the transaction:");
+			System.out.println("  drop temp table t1 and commit, select on t1 should fail");
+			s.executeUpdate("drop table SESSION.t1");
+			con.commit();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3H FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con.commit();
+			System.out.println("TEST3H PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST3I : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 and rollback");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3I FAILED");
+		} catch (Throwable e)
+		{
+			System.out.println("Expected message: "+ e.getMessage());
+			con.commit();
+			System.out.println("TEST3I PASSED");
+		}
+
+		try
+		{
+			System.out.println("TEST3J : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 with 2 columns and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t1 values(11, 11)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			con.commit();
+			System.out.println("  Create savepoint1 and drop temp table t1 with 2 columns");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("drop table SESSION.t1");
+			System.out.println("  declare temp table t1 but this time with 3 columns");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int, c13 int not null) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t1 values(22, 22, 22)");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			System.out.println("  Create savepoint2 and drop temp table t1 with 3 columns");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("drop table SESSION.t1");
+			con.rollback();
+			System.out.println("  select from temp table t1 here should have 2 columns");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			s.executeUpdate("drop table SESSION.t1");
+
+			con.commit();
+			System.out.println("TEST3J PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3J FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3K : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 & t2, insert few rows and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t1 values(11, 1)");
+			s.executeUpdate("insert into session.t2 values(21, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			con.commit();
+
+			System.out.println(" In the next transaction, insert couple more rows in t1 & t2 and ");
+			s.executeUpdate("insert into SESSION.t1 values(12, 2)");
+			s.executeUpdate("insert into SESSION.t2 values(22, 2)");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint1 and update some rows in t1 and inspect the data");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("UPDATE SESSION.t1 SET c12 = 3 where c12>1");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  update t2 with where clause such that no rows get modified in t2 and inspect the data");
+			s.executeUpdate("UPDATE SESSION.t2 SET c22 = 3 where c22>2");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback to savepoint1 and we should loose all the rows in t1");
+			con.rollback(savepoint1);
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			System.out.println("  temp table t2 should also have no rows because attempt was made to modify it (even though nothing actually got modified in t2 in the savepoint)");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Commit the transaction and should see no data in t1 and t2");
+			con.commit();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+			con.commit();
+			System.out.println("TEST3K PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3K FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3L : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 & t2, insert few rows and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("insert into SESSION.t1 values(11, 1)");
+			s.executeUpdate("insert into session.t2 values(21, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			con.commit();
+
+			System.out.println(" In the next transaction, insert couple more rows in t1 & t2 and ");
+			s.executeUpdate("insert into SESSION.t1 values(12, 2)");
+			s.executeUpdate("insert into session.t2 values(22, 2)");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint1 and update some rows in t1 and inspect the data");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("UPDATE SESSION.t1 SET c12 = 3 where c12>1");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  update t2 with where clause such that no rows get modified in t2 and inspect the data");
+			s.executeUpdate("UPDATE SESSION.t2 SET c22 = 3 where c22>3");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback to savepoint1 and we should loose all the rows in t1");
+			con.rollback(savepoint1);
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			System.out.println("  temp table t2 should also have no rows because attempt was made to modfiy it (even though nothing actually got modified in t2 in the savepoint)");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback the transaction and should see no data in t1 and t2");
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+			con.commit();
+			System.out.println("TEST3L PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3L FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3M : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 & t2 & t3 & t4, insert few rows and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t3(c31 int, c32 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t4(c41 int, c42 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("insert into SESSION.t1 values(11, 1)");
+			s.executeUpdate("insert into SESSION.t2 values(21, 1)");
+			s.executeUpdate("insert into SESSION.t3 values(31, 1)");
+			s.executeUpdate("insert into SESSION.t4 values(41, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+			con.commit();
+
+			System.out.println(" In the next transaction, insert couple more rows in t1 & t2 & t3 and ");
+			s.executeUpdate("insert into SESSION.t1 values(12, 2)");
+			s.executeUpdate("insert into session.t2 values(22, 2)");
+			s.executeUpdate("insert into session.t3 values(32, 2)");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint1 and delete some rows from t1 and inspect the data in t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("DELETE FROM SESSION.t1 where c12>1");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint2 and delete some rows from t2 this time and inspect the data in t2");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("DELETE FROM SESSION.t2 where c22>1");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Release savepoint2 and now savepoint1 should keep track of changes made to t1 and t2, inspect the data in t1 & t2");
+			con.releaseSavepoint(savepoint2);
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback savepoint1 and should see no data in t1 and t2, inspect the data");
+			con.rollback(savepoint1);
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Should see data in t3 since it was not touched in the savepoint that was rolled back");
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback the transaction and should see no data in t1 and t2 and t3");
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  Should see data in t4 since it was not touched in the transaction that was rolled back");
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+			s.executeUpdate("drop table SESSION.t3");
+			s.executeUpdate("drop table SESSION.t4");
+			con.commit();
+			System.out.println("TEST3M PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3M FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3N : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 & t2 & t3 & t4, insert few rows and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t3(c31 int, c32 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t4(c41 int, c42 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("insert into SESSION.t1 values(11, 1)");
+			s.executeUpdate("insert into SESSION.t1 values(12, 2)");
+			s.executeUpdate("insert into SESSION.t2 values(21, 1)");
+			s.executeUpdate("insert into SESSION.t2 values(22, 2)");
+			s.executeUpdate("insert into SESSION.t3 values(31, 1)");
+			s.executeUpdate("insert into SESSION.t4 values(41, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+			con.commit();
+
+			System.out.println(" In the next transaction, insert couple more rows in t3 ");
+			s.executeUpdate("insert into SESSION.t3 values(31, 2)");
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint1 and delete some rows from t1 and inspect the data in t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("DELETE FROM SESSION.t1 where c12>1");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  delete from t2 with where clause such that no rows are deleted from t2 and inspect the data in t2");
+			s.executeUpdate("DELETE FROM SESSION.t2 where c22>3");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint2 and delete some rows from t2 this time and inspect the data in t2");
+			Savepoint savepoint2 = con.setSavepoint();
+			s.executeUpdate("DELETE FROM SESSION.t2 where c22>1");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback the transaction and should see no data in t1 and t2 and t3");
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t3");
+			dumpRS(rs1);
+
+			System.out.println("  Should see data in t4 since it was not touched in the transaction that was rolled back");
+			rs1 = s.executeQuery("select * from SESSION.t4");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+			s.executeUpdate("drop table SESSION.t3");
+			s.executeUpdate("drop table SESSION.t4");
+			con.commit();
+			System.out.println("TEST3N PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3N FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3O : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1 & t2, insert few rows and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) on commit preserve rows not logged on rollback delete rows");
+			s.executeUpdate("insert into SESSION.t1 values(11, 1)");
+			s.executeUpdate("insert into SESSION.t2 values(21, 1)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			con.commit();
+
+			System.out.println(" In the next transaction, insert couple more rows in t1 ");
+			s.executeUpdate("insert into SESSION.t1 values(12, 2)");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint1 and insert one row in t2 and inspect the data in t2");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("insert into SESSION.t2 values(22, 2)");
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback savepoint1 and should see no data in t2 but t1 should have data, inspect the data");
+			con.rollback(savepoint1);
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Commit the transaction and should see no data in t2 but t1 should have data");
+			con.commit();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table SESSION.t2");
+			con.commit();
+			System.out.println("TEST3O PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3O FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3P : Savepoint and Rollback behavior");
+
+			System.out.println(" In the transaction:");
+			System.out.println("  declare temp table t1, insert few rows and commit");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t1 values(11, 1)");
+			s.executeUpdate("insert into SESSION.t1 values(12, 2)");
+			con.commit();
+
+			System.out.println(" In the transaction:");
+			System.out.println("  Create savepoint1 and insert some rows into t1 and inspect the data in t1");
+			Savepoint savepoint1 = con.setSavepoint();
+			s.executeUpdate("insert into SESSION.t1 values(13, 3)");
+
+			System.out.println("  Release savepoint1 and now transaction should keep track of changes made to t1, inspect the data in t1");
+			con.releaseSavepoint(savepoint1);
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			System.out.println("  Rollback the transaction and should still see no data in t1");
+			con.rollback();
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			con.commit();
+			System.out.println("TEST3P PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3P FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST3Q : Prepared statement test - DML and rollback behavior");
+			System.out.println(" In the transaction:");
+			System.out.println("  Declare temp table t2, insert / update / delete data using various prepared statements and commit");
+			s.executeUpdate("DECLARE GLOBAL TEMPORARY TABLE SESSION.t2(c21 int, c22 int) not logged on commit preserve rows");
+			PreparedStatement pStmtInsert = con.prepareStatement("insert into SESSION.t2 values (?, ?)");
+			pStmtInsert.setInt(1, 21);
+			pStmtInsert.setInt(2, 1);
+			pStmtInsert.execute();
+			pStmtInsert.setInt(1, 22);
+			pStmtInsert.setInt(2, 2);
+			pStmtInsert.execute();
+			pStmtInsert.setInt(1, 23);
+			pStmtInsert.setInt(2, 2);
+			pStmtInsert.execute();
+			PreparedStatement pStmtUpdate = con.prepareStatement("UPDATE SESSION.t2 SET c22 = 3 where c21=?");
+			pStmtUpdate.setInt(1, 23);
+			pStmtUpdate.execute();
+			PreparedStatement pStmtDelete = con.prepareStatement("DELETE FROM SESSION.t2 where c21 = ?");
+			pStmtDelete.setInt(1, 23);
+			pStmtDelete.execute();
+
+			con.commit();
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println(" In the next transaction:");
+			System.out.println("  Create savepoint1 and insert some rows into t2 using prepared statement and inspect the data in t2");
+			Savepoint savepoint1 = con.setSavepoint();
+			pStmtInsert.setInt(1, 23);
+			pStmtInsert.setInt(2, 2);
+			pStmtInsert.execute();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint2 and update row inserted in savepoint1 using prepared statement and inspect the data in t2");
+			Savepoint savepoint2 = con.setSavepoint();
+			pStmtUpdate.setInt(1, 23);
+			pStmtUpdate.execute();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  rollback savepoint2 and should loose all the data from t2");
+			con.rollback(savepoint2);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint3 and insert some rows into t2 using prepared statement and inspect the data in t2");
+			Savepoint savepoint3 = con.setSavepoint();
+			pStmtInsert.setInt(1, 21);
+			pStmtInsert.setInt(2, 1);
+			pStmtInsert.execute();
+			pStmtInsert.setInt(1, 22);
+			pStmtInsert.setInt(2, 2);
+			pStmtInsert.execute();
+			pStmtInsert.setInt(1, 23);
+			pStmtInsert.setInt(2, 333);
+			pStmtInsert.execute();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Create savepoint4 and update row inserted in savepoint3 using prepared statement and inspect the data in t2");
+			Savepoint savepoint4 = con.setSavepoint();
+			pStmtUpdate.setInt(1, 23);
+			pStmtUpdate.execute();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			System.out.println("  Release savepoint4 and inspect the data in t2, then delete a row from t2");
+			con.releaseSavepoint(savepoint4);
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+			pStmtDelete.setInt(1, 23);
+			pStmtDelete.execute();
+
+			System.out.println("  Commit transaction and should see data data in t2");
+			con.commit();
+			rs1 = s.executeQuery("select * from SESSION.t2");
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t2");
+			con.commit();
+			System.out.println("TEST3Q PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("FAIL " + e.getMessage());
+			e.printStackTrace(System.out);
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST3Q FAILED");
+		}
+
+		try
+		{
+			System.out.println("TEST4 : Test declared temporary table with ON COMMIT DELETE ROWS and holdable cursors and temp table as part of subquery");
+
+			System.out.println("Temp table t1 with no direct held cursor open on it. Data should be deleted from t1 at commit time");
+			Statement s1 = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+			ResultSet.HOLD_CURSORS_OVER_COMMIT );
+			s1.executeUpdate("create table t1(c11 int, c12 int)");
+			s1.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit delete rows not logged");
+			s1.executeUpdate("insert into session.t1 values(11, 1)");
+			s1.executeUpdate("insert into session.t1 values(12, 2)");
+			ResultSet rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 2
+			dumpRS(rs1);
+			rs1 = s1.executeQuery("select count(*) from t1"); //should return count of 0
+			dumpRS(rs1);
+			System.out.println("Insert into real table using temporary table data on a statement with holdability set to true");
+			s1.executeUpdate("INSERT INTO T1 SELECT * FROM SESSION.T1");
+			con.commit();
+
+			System.out.println("After commit, verify both the tables");
+
+			System.out.println("Temp table t1 will have no data after commit");
+			rs1 = s1.executeQuery("select count(*) from SESSION.t1"); //should return count of 0
+			dumpRS(rs1);
+
+			System.out.println("Physical table t1 will have 2 rows after commit");
+			rs1 = s1.executeQuery("select count(*) from t1"); //should return count of 2
+			dumpRS(rs1);
+
+			s.executeUpdate("drop table SESSION.t1");
+			s.executeUpdate("drop table t1");
+
+			con.commit();
+			System.out.println("TEST4 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			con.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST4 FAILED");
+		}
+
+		return passed;
+	}
+
+	/**
+	 * Test that global temporary tables declared in a connection handle to pooled connection are dropped at connection handle close time
+	 * and are not available to next connection handle to the same pooled connection 
+	 *
+	 * @param conn	The Connection
+	 * @param s		A Statement on the Connection
+	 *
+	 * @return	true if it succeeds, false if it doesn't
+	 *
+	 * @exception SQLException	Thrown if some unexpected error happens
+	 */
+	static boolean testPooledConnectionClose()
+					throws SQLException {
+		boolean passed = true;
+		Connection con1 = null, con2 = null;
+
+		try
+		{
+			System.out.println("TEST5 : Temporary tables declared in a pooled connection should get dropped when that pooled connection is closed");
+			ConnectionPoolDataSource dsp;
+			if (isDerbyNet) {
+			/* following would require the IBM universal jdbc driver to be available during build...This section needs to be reworked for networkserver
+				com.ibm.db2.jcc.DB2ConnectionPoolDataSource ds = new com.ibm.db2.jcc.DB2ConnectionPoolDataSource();
+				ds.setDatabaseName("wombat");
+				ds.setUser("cs");
+				ds.setPassword("cs");
+
+				ds.setServerName("localhost");
+				ds.setPortNumber(1527);
+				ds.setDriverType(4);
+				dsp = ds;
+			*/
+				System.out.println("test will not build without universal driver");
+				return passed;
+			
+			} else {
+				EmbeddedConnectionPoolDataSource dscsp = new EmbeddedConnectionPoolDataSource();
+				dscsp.setDatabaseName("wombat");
+				//dscsp.setConnectionAttributes("unicode=true");
+				dsp = dscsp;
+			}
+
+			PooledConnection pc = dsp.getPooledConnection();
+			con1 = pc.getConnection();
+			con1.setAutoCommit(false);
+			Statement s = con1.createStatement();
+
+			System.out.println(" In the first connection handle to the pooled connection, create physical session schema, create table t1 in it");
+			System.out.println(" Insert some rows in physical SESSION.t1 table. Inspect the data.");
+			s.executeUpdate("CREATE schema SESSION");
+			s.executeUpdate("CREATE TABLE SESSION.t1(c21 int)");
+			s.executeUpdate("insert into SESSION.t1 values(11)");
+			s.executeUpdate("insert into SESSION.t1 values(12)");
+			s.executeUpdate("insert into SESSION.t1 values(13)");
+			ResultSet rs1 = s.executeQuery("select * from SESSION.t1"); //should return 3 rows for the physical table
+			dumpRS(rs1);
+
+			System.out.println(" Next declare a temp table with same name as physical table in SESSION schema.");
+			System.out.println(" Insert some rows in temporary table SESSION.t1. Inspect the data");
+			s.executeUpdate("declare global temporary table SESSION.t1(c11 int, c12 int) on commit preserve rows not logged");
+			s.executeUpdate("insert into SESSION.t1 values(11,1)");
+			rs1 = s.executeQuery("select * from SESSION.t1"); //should return 1 row for the temporary table
+			dumpRS(rs1);
+			System.out.println(" Now close the connection handle to the pooled connection");
+			con1.commit();
+			con1.close();
+			con1=null;
+
+			System.out.println(" Do another getConnection() to get a new connection handle to the pooled connection");
+			con2 = pc.getConnection();
+			s = con2.createStatement();
+			System.out.println(" In this new handle, a select * from SESSION.t1 should be looking at the physical session table");
+			rs1 = s.executeQuery("select * from SESSION.t1");
+			dumpRS(rs1);
+
+			s.executeUpdate("DROP TABLE SESSION.t1");
+			if (isDerbyNet)
+				s.executeUpdate("DROP TABLE SESSION.t1");
+
+			s.executeUpdate("DROP schema SESSION restrict");
+			con2.commit();
+			con2.close();
+			System.out.println("TEST5 PASSED");
+		} catch (Throwable e)
+		{
+			System.out.println("Unexpected message: "+ e.getMessage());
+			if (con1 != null) con1.rollback();
+			if (con2 != null) con2.rollback();
+			passed = false; //we shouldn't have reached here. Set passed to false to indicate failure
+			System.out.println("TEST5 FAILED");
+		}
+
+		return passed;
+	}
+
+	static private void dumpExpectedSQLExceptions (SQLException se) {
+		System.out.println("PASS -- expected exception");
+		while (se != null)
+		{
+			System.out.println("SQLSTATE("+se.getSQLState()+"): "+se);
+			se = se.getNextException();
+		}
+	}
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception");
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se.printStackTrace(System.out);
+			se = se.getNextException();
+		}
+	}
+
+	// lifted from the metadata test
+	private static void dumpRS(ResultSet s) throws SQLException
+	{
+		if (s == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		ResultSetMetaData rsmd = s.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		if (numCols <= 0) 
+		{
+			System.out.println("(no columns!)");
+			return;
+		}
+
+		StringBuffer heading = new StringBuffer("\t ");
+		StringBuffer underline = new StringBuffer("\t ");
+
+		int len;
+		// Display column headings
+		for (int i=1; i<=numCols; i++) 
+		{
+			if (i > 1) 
+			{
+				heading.append(",");
+				underline.append(" ");
+			}
+			len = heading.length();
+			heading.append(rsmd.getColumnLabel(i));
+			len = heading.length() - len;
+			for (int j = len; j > 0; j--)
+			{
+				underline.append("-");
+			}
+		}
+		System.out.println(heading.toString());
+		System.out.println(underline.toString());
+		
+	
+		StringBuffer row = new StringBuffer();
+		// Display data, fetching until end of the result set
+		while (s.next()) 
+		{
+			row.append("\t{");
+			// Loop through each column, getting the
+			// column data and displaying
+			for (int i=1; i<=numCols; i++) 
+			{
+				if (i > 1) row.append(",");
+				row.append(s.getString(i));
+			}
+			row.append("}\n");
+		}
+		System.out.println(row.toString());
+		s.close();
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJavaJDBC30_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,31 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+runwithj9=false
+runwithjdk13=false
+runwithibm13=false

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/declareGlobalTempTableJava_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=120
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,28 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/default_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,22 @@
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.  
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings, 
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+derby.locks.waitTimeout=120

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/delete.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/delete.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,163 @@
+
+--
+-- this test is for basic delete functionality
+--
+
+-- create the table
+create table t1 (c1 int);
+create table t2 (c1 int);
+
+-- negative tests
+
+-- table name required for positioned delete and for searched delete
+delete;
+
+-- populate the table
+insert into t1 values (1);
+insert into t2 select * from t1;
+
+-- delete all the rows (only 1)
+select * from t1;
+delete from t1;
+select * from t1;
+
+-- repopulate the table
+insert into t1 values(2);
+insert into t1 values(3);
+
+-- delete all the rows (multiple rows)
+select * from t1;
+delete from t1;
+select * from t1;
+
+-- test atomicity of multi row deletes
+create table atom_test (c1 smallint);
+insert into atom_test values 1, 30000,0, 2;
+
+-- overflow
+delete from atom_test where c1 + c1 > 0;
+select * from atom_test;
+
+-- divide by 0
+delete from atom_test where c1 / c1 = 1;
+select * from atom_test;
+
+
+-- target table in source, should be done in deferred mode
+
+-- repopulate the tables
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t2 select * from t1;
+
+autocommit off;
+
+select * from t1;
+delete from t1 where c1 <=
+	(select t1.c1
+	 from t1, t2
+	 where t1.c1 = t2.c1
+	 and t1.c1 = 2);
+select * from t1;
+rollback;
+
+delete from t1 where c1 >=
+	(select
+		(select c1
+		 from t1
+		 where c1 = 1)
+	 from t2
+	 where c1 = 2);
+select * from t1;
+rollback;
+
+delete from t1 where c1 >=
+	(select
+		(select c1
+		 from t1 a
+		 where c1 = 1)
+	 from t2
+	 where c1 = 2);
+select * from t1;
+rollback;
+
+-- delete 0 rows - degenerate case for deferred delete
+delete from t1 where c1 =
+	(select 1
+	 from t2
+	 where 1 =
+		(select c1
+		 from t1
+		 where c1 = 2)
+	);
+select * from t1;
+rollback;
+
+-- delete 1 row
+delete from t1
+where c1 =
+	(select c1
+	 from t1
+	 where c1 = 2)
+and c1 = 2;
+select * from t1;
+rollback;
+
+delete from t1 where c1 <=
+	(select c1
+	 from
+		(select c1
+		 from t1) a
+	 where c1 = 2);
+select * from t1;
+rollback;
+
+delete from t1 where c1 <=
+	(select c1
+	 from t2
+	 where c1 = 37
+	union
+	 select c1
+	 from t1
+	 where c1 = 2);
+select * from t1;
+rollback;
+
+delete from t1 where c1 <=
+	(select c1
+	 from t2
+	 where c1 = 37
+	union
+	 select c1
+	 from
+		(select c1
+		from t1) a
+	 where c1 = 2);
+select * from t1;
+rollback;
+
+autocommit on;
+
+-- drop the table
+drop table t1;
+drop table t2;
+drop table atom_test;
+
+--
+-- here we test extra state lying around in the
+-- deleteResultSet on a prepared statement that
+-- is executed multiple times.  if we don't
+-- get a nasty error then we are ok
+--
+create table x (x int, y int);
+create index ix on x(x);
+insert into x values (1,1),(2,2),(3,3);
+autocommit off;
+prepare p as 'delete from x where x = ? and y = ?';
+execute p using 'values (1,1)';
+execute p using 'values (2,2)';
+commit;
+
+-- clean up
+autocommit on;
+drop table x;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/depend.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/depend.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,144 @@
+
+--
+-- this test shows the dependency system in action;
+--
+
+autocommit off;
+
+create table t(i int);
+create table s(i int);
+
+prepare ins as 'insert into t (i) values (1956)';
+prepare ins_s as 'insert into s (i) values (1956)';
+prepare sel as 'select i from t';
+prepare sel2 as 'select i from (select i from t) a';
+prepare sel_s as 'select i from s where i = (select i from t)';
+prepare upd as 'update t set i = 666 where i = 1956';
+prepare del as 'delete from t where i = 666';
+prepare ins_sel as 'insert into t select * from s';
+
+execute ins;
+execute ins_s;
+execute sel;
+execute sel2;
+execute sel_s;
+execute upd;
+execute sel;
+execute del;
+execute sel;
+execute ins_sel;
+execute sel;
+
+drop table t;
+-- these should fail, can't find table
+execute ins;
+execute sel;
+execute sel2;
+execute upd;
+execute del;
+execute sel_s;
+execute ins_sel;
+
+create table t(i int);
+-- these should recompile and work, table now found
+execute ins;
+-- expect one row only
+execute sel; 
+execute sel2;
+execute sel_s;
+execute upd;
+-- test update
+execute sel;
+execute del;
+-- test delete
+execute sel;
+execute ins_sel;
+execute sel;
+
+rollback;
+
+-- these should fail, the table will disappear at the rollback
+execute ins;
+execute sel;
+execute sel2;
+execute sel_s;
+execute upd;
+execute del;
+
+-- recreate t again
+create table t(i int);
+-- these should recompile and work, table now found
+execute ins;
+
+-- open a cursor on t
+get cursor c1 as 'select * from t';
+
+-- dropping t should fail, due to open cursor
+drop table t;
+
+-- insert should still succeed, since table not dropped
+execute ins;
+
+-- close cursor
+close c1;
+
+-- drop table should succeed
+drop table t;
+
+-- verify that invalidate worked this time
+execute ins;
+execute sel;
+execute sel2;
+execute upd;
+execute del;
+execute ins_sel;
+
+-- cleanup, roll everything back to the beginning
+rollback;
+
+-- verify that cascading invalidations work
+create table t1(c1 int);
+insert into t1 values 1, 2;
+get cursor c1 as 'select c1 from t1 for update of c1';
+-- positioned update dependent on cursor c1
+prepare u1 as 'update t1 set c1 = c1 + 1 where current of c1';
+next c1;
+close c1;
+execute u1;
+
+-- cleanup, roll everything back to the beginning
+rollback;
+
+-- verify that create index invalidates based on table and
+-- drop index invalidates based on the index
+
+create table t1(c1 int, c2 int);
+insert into t1 values (1,1), (2, 1), (3,3);
+create index i1 on t1(c1);
+get cursor c1 as 'select c1 from t1 where c2 = 1 for update of c1';
+next c1;
+prepare u1 as 'update  t1 set c1 = c1 + 1 ';
+prepare i1 as 'insert into t1 values (4, 4)';
+prepare d1 as 'delete from t1 where c2 = 3';
+drop index i1;
+
+-- u1 should be recompiled succesfully
+execute u1;
+select * from t1;
+
+-- recreate index i1, this time on c2
+create index i1 on t1(c2);
+next c1;
+close c1;
+
+-- i1 and d1 should have been invalidated and recompiled
+execute i1;
+-- check the state of the index
+select * from t1 where c2 > 0;
+
+execute d1;
+-- check the state of the index
+select * from t1 where c2 > 0;
+
+-- cleanup, roll everything back to the beginning
+rollback;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/derived.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/derived.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,240 @@
+--
+-- this tests derived column lists and derived tables
+--
+
+create table s (a int, b int, c int, d int, e int, f int);
+create table t (aa int, bb int, cc int, dd int, ee int, ff int);
+
+insert into s values (0,1,2,3,4,5);
+insert into s values (10,11,12,13,14,15);
+
+-- tests without a derived table
+
+-- negative tests
+-- # of columns does not match
+select aa from s ss (aa);
+select aa from s ss (aa, bb, cc, dd, ee, ff, gg);
+-- duplicate names in derived column list
+select aa from s ss (aa, ee, bb, cc, dd, aa);
+-- test case insensitivity
+select aa from s ss (aa, bb, cc, dd, ee, AA);
+-- test uniqueness of names
+select aa from s ss (aa, bb, cc, dd, ee, ff), t;
+-- test uniqueness of names
+insert into t select aa 
+from s aa (aa, bb, cc, dd, ee, ff), s bb (aa, bb, cc, dd, ee, ff);
+-- verify using "exposed" names
+select a from s ss (aa, bb, cc, dd, ee, ff);
+
+-- positive tests
+-- rename the columns
+select * from s ss (f, e, d, c, b, a) where f = 0;
+-- delimited identifiers in list
+select * from s ss ("a a", "b b", "c c", "d d", "e e", "f f") where "a a" = 0;
+-- uniqueness of "exposed" names
+select a, aa from s a, s b (aa, bb, cc, dd, ee, ff)	where f = ff and aa = 10;
+select a.a, b.aa from s a, s b (aa, bb, cc, dd, ee, ff) where f = ff and b.aa = 10;
+
+-- insert tests
+insert into t select * from s ss (aa, bb, cc, dd, ee, ff);
+select * from t;
+delete from t;
+
+insert into t (aa,bb) select ff, aa from s ss (aa, bb, cc, dd, ee, ff);
+select * from t;
+delete from t;
+
+-- derived tables
+
+-- negative tests
+-- no correlation name
+select * from (select * from s);
+-- # of columns does not match
+select aa from (select * from s) ss (aa);
+select aa from (select * from s) ss (aa, bb, cc, dd, ee, ff, gg);
+-- duplicate names in derived column list
+select aa from (select * from s) ss (aa, ee, bb, cc, dd, aa);
+-- test case insensitivity
+select aa from (select * from s) ss (aa, bb, cc, dd, ee, AA);
+-- test uniqueness of names
+select aa from (select * from s) ss (aa, bb, cc, dd, ee, ff), t;
+-- test uniqueness of names
+insert into t select aa 
+from (select * from s) aa (aa, bb, cc, dd, ee, ff), 
+	 (select * from s) bb (aa, bb, cc, dd, ee, ff);
+-- verify using "exposed" names
+select a from (select * from s) ss (aa, bb, cc, dd, ee, ff);
+-- ambiguous column reference
+select a from (select * from s a, s b) ss;
+
+-- positive tests
+
+-- simple derived table
+select a from (select a from s) a;
+-- select * query's
+select * from (select * from s) a;
+select * from (select a, b, c, d, e, f from s) a;
+select * from (select a, b, c from s) a;
+select a, b, c, d, e, f from (select * from s) a;
+
+-- simple derived table
+insert into t (aa) select a from (select a from s) a;
+select * from t;
+delete from t;
+
+-- select * query's
+insert into t select * from (select * from s) a;
+select * from t;
+delete from t;
+
+insert into t select * from (select a, b, c, d, e, f from s) a;
+select * from t;
+delete from t;
+
+insert into t (aa, bb, cc) select * from (select a, b, c from s) a;
+select * from t;
+delete from t;
+
+insert into t select a, b, c, d, e, f from (select * from s) a;
+select * from t;
+delete from t;
+
+-- simple derived table with derived column list
+select a from (select a from s) a (a);
+-- select * query's	with derived column lists
+select * from (select * from s) a (f, e, d, c, b, a);
+select * from (select a, b, c, d, e, f from s) a (f, e, d, c, b, a);
+select * from (select a, b, c from s) a (c, f, e);
+select a, b, c, d, e, f from (select * from s) a (a, b, c, d, e, f);
+
+-- simple derived table with derived column list
+insert into t (aa) select a from (select a from s) a (a);
+select * from t;
+delete from t;
+
+-- select * query's with derived column lists
+insert into t select * from (select * from s) a (c, b, a, e, f, d);
+select * from t;
+delete from t;
+
+insert into t select * from (select a, b, c, d, e, f from s) a (f, a, c, b, e, d);
+select * from t;
+delete from t;
+
+insert into t (aa, bb, cc) select * from (select a, b, c from s) a (f, e, a);
+select * from t;
+delete from t;
+
+insert into t select a, c, "a", "b", b, "c" from (select * from s) a (a, c, "a", "b", b, "c");
+select * from t;
+delete from t;
+
+-- project and reorder derived column list
+select a, f from (select * from s) a (b, c, d, e, f, a);
+
+insert into t (aa, bb) select a, f from (select * from s) a (b, c, d, e, f, a);
+select * from t;
+delete from t;
+
+-- outer where clause references columns from derived table 
+select * from (select * from s) a (a, b, c, d, e, f) where a = 0;
+select * from (select * from s) a (f, e, d, c, b, a) where f = 0;
+
+insert into t select * from (select * from s) a (a, b, c, d, e, f) where a = 0;
+select * from t;
+delete from t;
+
+insert into t select * from (select * from s) a (f, e, d, c, b, a) where f = 0;
+select * from t;
+delete from t;
+
+-- join between 2 derived tables
+select * from (select a from s) a, (select a from s) b;
+select * from (select a from s) a, (select a from s) b where a.a = b.a;
+
+insert into t (aa, bb) select * from (select a from s) a, (select a from s) b where a.a = b.a;
+select * from t;
+delete from t;
+
+-- join within a derived table
+select * from (select a.a, b.a from s a, s b) a (b, a) where b = a;
+select * from (select a.a, b.a from s a, s b) a (b, a),
+			  (select a.a, b.a from s a, s b) b (b, a) where a.b = b.b;
+select * from (select (select 1 from s where 1 = 0), b.a from s a, s b) a (b, a),
+			  (select (select 1 from s where 1 = 0), b.a from s a, s b) b (b, a) where a.b = b.b;
+
+insert into t (aa, bb) select * from (select a.a, b.a from s a, s b) a (b, a) where b = a;
+select * from t;
+delete from t;
+
+-- join within a derived table, 2 predicates can be pushed all the way down
+select * from (select a.a, b.a from s a, s b) a (b, a) where b = a and a = 0 and b = 0;
+
+insert into t (aa, bb) select * from (select a.a, b.a from s a, s b) a (b, a) where b = a and a = 0 and b = 0;
+select * from t;
+delete from t;
+
+-- nested derived tables
+select * from (select * from (select * from s) a ) a;
+select * from 
+	(select * from 
+		(select * from 
+			(select * from 
+				(select * from 
+					(select * from
+						(select * from
+							(select * from
+								(select * from
+									(select * from
+										(select * from
+											(select * from
+												(select * from
+													(select * from
+														(select * from
+															(select * from s) a
+														) a
+													) a
+												) a
+											) a
+										) a
+									) a
+								) a
+							) a
+						) a
+					) a
+				) a
+			) a
+		) a
+	) a;
+
+-- test predicate push through
+select * from
+(select a.a as a1, b.a as a2 from s a, s b) a 
+where a.a1 = 0 and a.a2 = 10;
+
+-- push column = column through
+select * from (select a, a from s) a (x, y) where x = y;
+select * from (select a, a from s) a (x, y) where x + y = x * y;
+
+-- return contants and expressions from derived table
+select * from (select 1 from s) a;
+select * from (select 1 from s) a (x) where x = 1;
+select * from (select 1 from s a, s b where a.a = b.a) a (x);
+select * from (select 1 from s a, s b where a.a = b.a) a (x) where x = 1;
+select * from (select a + 1 from s) a;
+select * from (select a + 1 from s) a (x) where x = 1;
+select * from (select a.a + 1 from s a, s b where a.a = b.a) a (x) where x = 1;
+
+-- Bug 2767, don't flatten derived table with join
+create table tab1(tab1_c1 int, tab1_c2 int);
+create table tab2(tab2_c1 int, tab2_c2 int);
+insert into tab1 values (1, 1), (2, 2);
+insert into tab2 values (1, 1), (2, 2);
+select * from (select * from tab1, tab2) c where tab1_c1 in (1, 3);
+drop table tab1;
+drop table tab2;
+
+
+drop table s;
+drop table t;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,166 @@
+-- this also tests multiple indexes share one conglomerate if they essentially
+-- are the same
+
+autocommit off;
+
+create table tab1 (c1 int, c2 smallint, c3 double precision, c4 varchar(30),
+		   c5 varchar(1024));
+
+insert into tab1 values (8, 12, 5.6, 'dfg', 'ghji');
+insert into tab1 values (76, 2, -9.86, 'yudf', '45gd');
+insert into tab1 values (-78, 45, -5.6, 'jakdsfh', 'df89g');
+insert into tab1 values (56, -3, 6.7, 'dfgs', 'fds');
+
+create index i1 on tab1 (c1, c3, c4);
+create index i2 on tab1 (c1 desc, c3 desc, c4 desc);
+create index i3 on tab1 (c1 desc, c3 asc, c4 desc);
+create index i4 on tab1 (c2 desc, c3, c1);
+create index i5 on tab1 (c1, c2 desc);
+
+insert into tab1 values (34, 67, 5.3, 'rtgd', 'hds');
+insert into tab1 values (100, 11, 9.0, '34sfg', 'ayupo');
+insert into tab1 values (-100, 93, 9.1, 'egfh', 's6j');
+insert into tab1 values (55, 44, -9.85, 'yudd', 'df89f');
+insert into tab1 values (34, 68, 2.7, 'srg', 'iur');
+insert into tab1 values (34, 66, 1.2, 'yty', 'wer');
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2500;
+
+-- should use index i4
+select c1, c3 from tab1 where c2 > 40 and c3 <= 5.3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use index i5
+select c2, c1 from tab1 where c2 <= 44 and c1 > 55;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i1
+select c1, c3, c4 from tab1 order by c1, c3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i2
+select c1, c3, c4 from tab1 order by c1 desc, c3 desc, c4 desc;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i3
+select c1, c3, c4 from tab1 order by c1 desc, c3 asc, c4 desc;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i4
+select c1, c2, c3 from tab1 order by c2 desc, c3 asc;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i5
+select c1, c2 from tab1 order by c1, c2 desc;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i4
+select max(c2) from tab1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i4
+select min(c2) from tab1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i5
+select min(c2) from tab1 where c1 = 34;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use i5
+select max(c2) from tab1 where c1 = 34;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- test if bulk insert rebuilds desc index right
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB1', 0);
+select * from tab1 order by c1 desc;
+
+-- this tests multiple indexes share one conglomerate if they essentially
+-- are the same
+
+create table tab2 (c1 int not null primary key, c2 int, c3 int);
+
+-- not unique index, shouldn't share with primary key's index
+create index i21 on tab2(c1);
+-- desc index, shouldn't share with primary key's index
+create index i22 on tab2(c1 desc);
+-- this should share with primary key's index, and give a warning
+create unique index i23 on tab2(c1);
+create index i24 on tab2(c1, c3 desc);
+-- this should share with i24's conglomerate
+create index i25 on tab2(c1, c3 desc);
+-- no share
+create index i26 on tab2(c1, c3);
+insert into tab2 values (6, 2, 8), (2, 8, 5), (28, 5, 9), (3, 12, 543);
+create index i27 on tab2 (c1, c2 desc, c3);
+-- no share
+create index i28 on tab2 (c1, c2 desc, c3 desc);
+-- share with i27
+create index i29 on tab2 (c1, c2 desc, c3);
+create index i20 on tab2 (c1, c2 desc, c3);
+
+insert into tab2 values (56, 2, 7), (31, 5, 7), (-12, 5, 2);
+
+select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+
+select * from tab2;
+
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+
+-- see if rebuild indexes correctly
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB2', 0);
+
+select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+
+select * from tab2;
+
+update tab2 set c2 = 11 where c3 = 7;
+select * from tab2;
+
+delete from tab2 where c2 > 10 and c2 < 12;
+select * from tab2;
+
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+
+-- drop indexes
+drop index i22;
+drop index i24;
+drop index i26;
+drop index i28;
+drop index i20;
+
+select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'TAB2', 0);
+select * from tab2;
+
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+
+drop index i21;
+drop index i23;
+drop index i25;
+drop index i27;
+drop index i29;
+
+select count(distinct conglomeratenumber) from sys.sysconglomerates
+	where tableid = (select tableid from sys.systables
+						where tablename = 'TAB2');
+
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'TAB2');
+
+-- beetle 4974
+
+create table b4974 (a BIGINT, b BIGINT, c INT, d CHAR(16), e BIGINT);
+create index i4974 on b4974(a, d, c, e);
+SELECT b from b4974 t1
+where (T1.a = 10127 or T1.a = 0)
+	and (T1.d = 'ProductBean' or T1.d = 'CatalogEntryBean')
+	and (T1.e =0 or T1.e = 0);
+
+rollback;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/desc_index_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.minisql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.minisql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+--
+-- tests for DISTINCT
+--
+-- these tests assume: no indexes, no order by, no grouping
+--
+-- test plan is represented by '.' items in comments. 
+-- the flavors of select are shown in distinct.subsql, which is
+-- run over a variety of data configurations.
+-- this file expects to be run from a directory under $WS/systest.
+
+-- speed up a fraction with autocommit off...
+autocommit off;
+
+create table t (i int, s smallint, r real, f float, b boolean, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+
+drop table t;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,333 @@
+--
+-- tests for DISTINCT
+--
+-- these tests assume: no indexes, no order by, no grouping
+--
+-- test plan is represented by '.' items in comments. 
+-- the flavors of select are shown in distinct.subsql, which is
+-- run over a variety of data configurations.
+-- this file expects to be run from a directory under $WS/systest.
+
+-- speed up a fraction with autocommit off...
+autocommit off;
+
+create table t (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+
+-- data flavor:
+-- . no data at all (filtered out or just plain empty)
+
+run resource 'distinct.subsql';
+
+-- . 1 row
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+
+run resource 'distinct.subsql';
+
+-- . all rows the same
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+
+run resource 'distinct.subsql';
+
+-- . variety of rows, some same and some different
+insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+
+run resource 'distinct.subsql';
+
+-- . variety of rows, all different
+delete from t;
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+
+run resource 'distinct.subsql';
+
+-- . variety of rows, some same in some columns but not others
+delete from t;
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+insert into t values (1, 1, 3, 4, '1992-01-02', '19:01:01',
+'1992-01-01 19:01:01.000', 'goodbye', 'planet');
+
+run resource 'distinct.subsql';
+
+-- . just nulls
+
+delete from t;
+-- all the defaults are null, so just get a row in easily
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+run resource 'distinct.subsql';
+
+-- . 1 null in the mix
+delete from t;
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+insert into t values (1, 1, 3, 4, '1992-01-02', '19:01:01',
+'1992-01-01 19:01:01.000', 'goodbye', 'planet');
+insert into t (i) values (null);
+
+run resource 'distinct.subsql';
+-- . several nulls in the mix
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+run resource 'distinct.subsql';
+
+-- . nulls in some columns, not others
+delete from t where i is null;
+insert into t values (null, 1, null, 4, null, '19:01:01',
+null, 'goodbye', null);
+insert into t values (1, null, 3, null, '1992-01-02', null,
+'1992-01-01 19:01:01.000', null, 'planet');
+
+run resource 'distinct.subsql';
+
+drop table t;
+rollback;
+
+-- sure would like to dump all those selects now...they are invalid, at least,
+-- maybe that frees up some space (FLW)
+
+-- here are other things to test:
+
+-- . select distinct over a values table
+-- three rows
+select distinct * from (values (1,2),(1,3),(1,2),(2,3)) as t(a,b);
+-- two rows
+select distinct a from (values (1,2),(1,3),(1,2),(2,3)) as t(a,b);
+
+-- . show that distinct is a keyword, not a column name
+select distinct from t;
+
+rollback;
+
+-- . usertypes
+-- To test usertypes in a way that works with weblogic, we
+-- pick one we can construct with other functionality available to us
+-- (UUID won't work)
+-- At the time these tests were written, user type comparisons
+-- were not supported.
+
+create table userInt (u integer);
+insert into userInt values (123);
+insert into userInt values (123);
+insert into userInt values (456);
+insert into userInt values (null);
+create table sqlInt (i int not null);
+insert into sqlInt values(123);
+
+-- expect two rows, 123 and 456
+select distinct u from userInt where u is not null;
+-- two rows, 123 and 456
+select u from userInt where u is not null;
+
+-- multiple rows in subquery get correct complaint
+select distinct i 
+from sqlInt 
+where i = (select distinct u from userInt);
+
+drop table userInt;
+drop table sqlInt;
+
+rollback;
+
+-- . varchar blank padding is ignored, length will vary depending on row selected
+
+create table v (v varchar(40));
+insert into v values ('hello');
+insert into v values ('hello   ');
+insert into v values ('hello      ');
+
+-- the |'s are just for visual demarcation
+select distinct '|' as "|", v, '|' as "|" from v;
+select {fn length(c)} from (select distinct v from v) as t(c);
+
+drop table v;
+rollback;
+
+-- distinct bigint
+create table li (l bigint, i int);
+insert into li values(1, 1);
+insert into li values(1, 1);
+insert into li values(9223372036854775807, 
+					  2147483647);
+
+select distinct l from li;
+(select distinct l from li) union all (select distinct i from li) order by 1;
+select distinct l from li union select distinct i from li;
+select distinct l 
+from (select l from li union all select i from li) a(l);
+
+drop table li;
+rollback;
+
+autocommit off; -- was off above, ensure it stayed off for this part of test
+create table u (d date);
+-- three rows
+insert into u values ('1997-09-09'),('1997-09-09');
+insert into u values (null);
+
+-- . nexting past the last row of a distinct
+get cursor past as 'select distinct d from u';
+next past;
+next past;
+-- should report no current row:
+next past;
+next past;
+close past;
+
+-- . for update on a select distinct
+-- both should get errors, not updatable.
+select distinct d from u for update;
+select distinct d from u for update of d;
+
+-- . positioned update/delete on a select distinct
+get cursor c1 as 'select distinct d from u';
+next c1;
+-- both should fail with cursor not updatable
+update u set d='1992-01-01' where current of c1;
+delete from u where current of c1;
+close c1;
+
+get cursor c1 as 'select distinct d from u';
+-- both should fail with cursor not updatable (not no current row)
+update u set d='1992-01-01' where current of c1;
+delete from u where current of c1;
+next c1;
+next c1;
+next c1;
+next c1;
+-- both should fail with cursor not updatable, or cursor closed/does not exist
+update u set d='1992-01-01' where current of c1;
+delete from u where current of c1;
+close c1;
+
+get cursor c1 as 'select distinct d from u';
+close c1;
+-- both should fail with cursor not updatable, or cursor closed/does not exist
+update u set d='1992-01-01' where current of c1;
+delete from u where current of c1;
+
+drop table u;
+rollback;
+
+-- insert tests
+create table t (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+create table insert_test (i int, s smallint, r real, f float, d date, t time,
+	ts timestamp, c char(10), v varchar(20));
+
+-- populate the tables
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+insert into t values (1, 2, 3, 4, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+insert into t values (2, 1, 4, 3, '1992-01-01', '19:01:01',
+'1992-01-01 19:01:01.000', 'hello', 'planet');
+
+insert into insert_test select distinct * from t;
+select * from insert_test;
+delete from insert_test;
+
+insert into insert_test select distinct * from t union select * from t;
+select * from insert_test;
+delete from insert_test;
+
+
+rollback;
+
+-- for bug 4194, "insert into select distinct" into a table with a generated column
+create table destWithAI(c11 int generated always as identity, c12 int);
+alter table destWithAI alter c11 set increment by 1;
+create table destWithNoAI(c21 int, c22 int);
+create table source(c31 int, c32 int, c33 int);
+insert into source values(1,1,1);
+insert into source values(1,2,1);
+insert into source values(2,1,1);
+insert into source values(2,2,1);
+select distinct(c31) from source;
+insert into destWithAI(c12) select distinct(c31) from source;
+-- we will see gaps in the autoincrement column for all the duplicate rows from source
+select * from destWithAI;
+insert into destWithNoAI(c22) select distinct(c31) from source;
+select * from destWithNoAI;
+
+-- test for beetle 4402
+-- problem with check that a  result set is in order since it is retrieved using
+-- an index
+
+CREATE TABLE netbutton1 (
+  lname                 varchar(128) not null,
+  name                  varchar(128),
+  summary               varchar(256),
+  lsummary              varchar(256),
+  description           varchar(2000),
+  ldescription          varchar(2000),
+  publisher_username    varchar(256),
+  publisher_lusername   varchar(256),
+  version               varchar(16),
+  source                
+ long varchar for bit data, 
+  updated               
+ timestamp, 
+  created               
+ timestamp DEFAULT current_timestamp,
+	primary key (lname)) 
+;
+
+insert into netbutton1 values('lname1','name1','sum2','lsum1', 'des1','ldes1','pubu1', 'publu1', 'ver1', null, current_timestamp, default);
+insert into netbutton1 values('lname2','name2','sum2','lsum2', 'des2','ldes2','pubu2', 'publu2', 'ver2', null, current_timestamp, default);
+
+CREATE TABLE library_netbutton (
+  netbuttonlibrary_id   
+ int not null, 
+  lname         varchar(128) not null,
+	primary key (netbuttonlibrary_id, lname))
+;
+
+insert into library_netbutton values(1, 'lname1');
+insert into library_netbutton values(2, 'lname2');
+
+-- this is the index which causes the bug to be exposed
+create unique index ln_library_id on library_netbutton(netbuttonlibrary_id);
+
+ALTER TABLE library_netbutton
+ADD CONSTRAINT ln_lname_fk
+FOREIGN KEY (lname) REFERENCES netbutton1(lname)
+;
+
+CREATE TABLE netbuttonlibraryrole1 (
+  lusername             varchar(512) not null,
+  netbuttonlibrary_id   
+ int not null, 
+  username              varchar(512),
+  role                  varchar(24),
+  created               
+ timestamp DEFAULT current_timestamp,
+	primary key (lusername, netbuttonlibrary_id)) 
+;
+insert into netbuttonlibraryrole1 values('lusername1', 1,'user1', 'role1', default);
+insert into netbuttonlibraryrole1 values('lusername2', 2,'user2', 'role2', default);
+
+
+autocommit off;
+prepare c1 as 'SELECT DISTINCT nb.name AS name, nb.summary AS summary
+               FROM netbutton1 nb, netbuttonlibraryrole1 nlr,
+                    library_netbutton ln
+              WHERE nlr.netbuttonlibrary_id = ln.netbuttonlibrary_id
+                AND nb.lname = ln.lname
+                AND (   nlr.lusername = ?
+                     OR nlr.lusername = ?)
+                AND nb.lname = ?
+           ORDER BY summary';
+execute c1 using 'values(''lusername1'', ''lusername2'', ''lname1'')';
+rollback;
+
+-- reset autocomiit
+autocommit on;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.subsql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct.subsql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,90 @@
+--
+-- this is the script we run over various data flavors of the following
+-- table.  distinct.sql uses this script repeatedly.
+--
+-- create table t (i int, s smallint, r real, f float, 
+--  d date, t time, ts timestamp, c char(10), v varchar(20));
+
+-- here are the flavors of select:
+-- . select distinct one column, each data type (include usertypes)
+select distinct i from t;
+select distinct s from t;
+select distinct r from t;
+select distinct f from t;
+select distinct d from t;
+select distinct t from t;
+select distinct ts from t;
+select distinct c from t;
+select distinct v from t;
+
+-- . select distinct multiple columns, each data type
+-- . select distinct all or just some columns of the table
+select distinct t,i,s,f,d from t;
+select distinct * from t;
+select distinct t.*,ts from t;
+
+-- . select distinct in an exists subquery
+select * from t where exists (select distinct i from t);
+select * from t where exists (select distinct * from t);
+select * from t where not exists (select distinct t from t);
+
+-- . select distinct in an in subquery
+select * from t where i in (select distinct s from t);
+select * from t where s not in (select distinct r from t);
+
+-- . select distinct in a quantified subquery
+
+-- same result as i in distinct s above
+select * from t where i =any (select distinct s from t);
+
+-- same result as s not in distinct r above
+select * from t where s <>any (select distinct r from t);
+
+select * from t where d >=any (select distinct d from t);
+select * from t where t <=all (select distinct t from t);
+
+-- . select distinct in a scalar subquery
+select * from t where c = (select distinct v from t);
+select * from t where v < (select distinct d from t);
+
+-- . select distinct in a from subquery
+select * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+select * from (select distinct * from t) as s;
+select * from (select distinct t.*,ts as tts from t) as s;
+
+-- . select distinct in a from subquery joining with another table
+select * from t, (select distinct t.*,ts as tts from t) as s where t.i=s.i;
+select * from (select distinct t.*,ts as tts from t) as s, t where t.i=s.i;
+
+-- . multiple select distincts -- outer & sqs, just sqs, outer & from(s)
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and exists (select distinct s from t as ti where touter.s=ti.s);
+
+-- same result as exists above
+select i, s from t as touter
+where touter.i in (select distinct i from t)
+and touter.s =any (select distinct s from t);
+
+select distinct i, s from t
+where t.i in (select distinct i from t)
+and t.s in (select distinct s from t);
+
+-- . select distinct under a union all/ over a union all
+-- expect 2 rows of any value
+select distinct i from t
+union all
+select distinct i from t;
+
+-- at most 1 row of any value
+select distinct * from (select i from t union all select i from t) as s;
+
+-- . select distinct over a from subquery (itself distinct/not)
+select distinct * from (select t,i,s,f,d from t) as s(a,b,c,d,e);
+select distinct * from (select distinct t,i,s,f,d from t) as s(a,b,c,d,e);
+
+-- . select distinct over a join
+select distinct * from t t1, t t2 where t1.i = t2.i;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,172 @@
+-- test distinct elimination
+set isolation to rr;
+
+-- eliminate distincts based on a uniqueness condition
+
+-- create tables
+create table one(c1 int, c2 int, c3 int, c4 int, c5 int);
+create unique index one_c1 on one(c1);
+create table two(c1 int, c2 int, c3 int, c4 int, c5 int);
+create unique index two_c1c3 on two(c1, c3);
+create table three(c1 int, c2 int, c3 int, c4 int, c5 int);
+create unique index three_c1 on three(c1);
+create table four(c1 int, c2 int, c3 int, c4 int, c5 int);
+create unique index four_c1c3 on four(c1, c3);
+
+insert into one values (1, 1, 1, 1, 1);
+insert into one values (2, 1, 1, 1, 1);
+insert into one values (3, 1, 1, 1, 1);
+insert into one values (4, 1, 1, 1, 1);
+insert into one values (5, 1, 1, 1, 1);
+insert into one values (6, 1, 1, 1, 1);
+insert into one values (7, 1, 1, 1, 1);
+insert into one values (8, 1, 1, 1, 1);
+
+insert into two values (1, 1, 1, 1, 1);
+insert into two values (1, 1, 2, 1, 1);
+insert into two values (1, 1, 3, 1, 1);
+insert into two values (2, 1, 1, 1, 1);
+insert into two values (2, 1, 2, 1, 1);
+insert into two values (2, 1, 3, 1, 1);
+insert into two values (3, 1, 1, 1, 1);
+insert into two values (3, 1, 2, 1, 1);
+insert into two values (3, 1, 3, 1, 1);
+
+insert into three values (1, 1, 1, 1, 1);
+insert into three values (2, 1, 1, 1, 1);
+insert into three values (3, 1, 1, 1, 1);
+insert into three values (4, 1, 1, 1, 1);
+insert into three values (5, 1, 1, 1, 1);
+insert into three values (6, 1, 1, 1, 1);
+insert into three values (7, 1, 1, 1, 1);
+insert into three values (8, 1, 1, 1, 1);
+
+insert into four values (1, 1, 1, 1, 1);
+insert into four values (1, 1, 2, 1, 1);
+insert into four values (1, 1, 3, 1, 1);
+insert into four values (2, 1, 1, 1, 1);
+insert into four values (2, 1, 2, 1, 1);
+insert into four values (2, 1, 3, 1, 1);
+insert into four values (3, 1, 1, 1, 1);
+insert into four values (3, 1, 2, 1, 1);
+insert into four values (3, 1, 3, 1, 1);
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+-- queries that cannot eliminate the distinct
+
+-- no unique index
+select distinct c2 from one;
+-- Following runtime statistics output should have Distinct Scan in it
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- result ordering is not guaranteed, but order by clause will change how
+-- distinct is executed.  So test by retrieving data into a temp table and
+-- return results ordered after making sure the query was executed as expected.
+create table temp_result (c2 int, c3 int); 
+
+insert into temp_result
+    select distinct c2, c3 from two;
+-- Following runtime statistics output should have Distinct Scan in it
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select c2, c3 from temp_result order by c2, c3;
+drop table temp_result;
+
+-- Try same query, but with an order by at the end.  This will use the sort for
+-- the "order by" to do the distinct and not do a "DISTINCT SCAN".
+select distinct c2, c3 from two order by c2, c3;
+-- Following runtime statistics output should not have Distinct Scan in it
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- more than one table in the select list
+select distinct a.c1, b.c1 from one a, two b where a.c1 = b.c1 and b.c2 =1;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- cross product join
+select distinct a.c1 from one a, two b;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- no single table will yield at most 1 row
+select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1 and a.c2 = 1;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- both keys from unique index in where clause but joined to different tables
+select distinct a.c1 from one a, two b, three c where a.c1 = b.c1 and c.c1 = b.c3
+and a.c1 = 1;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- join between two tables using one columns of unique key
+select distinct a.c1 from two a, four b where a.c1 = b.c1 and b.c3 = 1;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- join between two tables with no join predicate
+select distinct a.c1, a.c3 from two a, one b;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- join between three tables with two tables joined uniquely 
+select distinct a.c1 from one a, two b, three c where a.c1 = c.c1 and a.c1 = 1;
+-- Following runtime statistics output should have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+--
+-- queries that should eliminate the distinct
+
+-- single table queries
+
+-- unique columns in select list
+select distinct c1 from one;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c1, c2 + c3 from one;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c3, c1 from two;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- query returns single row
+select distinct c2 from one where c1 = 3;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c3 from one where c1 = 3;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- superset in select list
+select distinct c2, c5, c1 from one;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c2, c3, c1 from two;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- multi table queries
+
+-- 1 to 1 join, select list is superset
+select distinct a.c1 from one a, one b where a.c1 = b.c1;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct a.c1, 3 from one a, one b where a.c1 = b.c1;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct a.c1, a.c3, a.c2 from two a, one b where a.c1 = b.c1;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct a.c1, a.c3, a.c2 from two a, two b where a.c1 = b.c1 and b.c3 = 1;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- join between two tables using both columns of unique key
+select distinct a.c1 from two a, four b where a.c1 = b.c1 and a.c3 = b.c3 and b.c3 = 1;
+-- Following runtime statistics output should not have Eliminate duplicates = true
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- clean up
+drop table one;
+drop table two;
+drop table three;
+drop table four;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctElimination_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctFiltering.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinctFiltering.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,78 @@
+-- test filtering of duplicates at language layer
+-- for in-order distincts
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+-- create some tables
+create table t1(c1 int, c2 char(50), c3 char(50));
+create table t2(c1 int, c2 char(50), c3 char(50));
+-- t1 gets non-unique indexes, t2 gets unique
+create index t11 on t1(c1);
+create index t12 on t1(c1, c2);
+create index t13 on t1(c1, c3, c2);
+create unique index t21 on t2(c1, c2);
+create unique index t22 on t2(c1, c3);
+
+-- populate 
+insert into t1 values (1, '1', '1'), (1, '1', '1'),
+	(1, '11', '11'), (1, '11', '11'), (2, '2', '2'),
+	(2, '2', '3'), (2, '3', '2'), (3, '3', '3'),
+	(null, null, null);
+insert into t2 values (1, '1', '1'), (1, '2', '2'),
+		      (2, '1', '1'), (2, '2', '2'),
+		      (null, 'null', 'null');
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 7000;
+
+-- first column of an index
+select distinct c1 from t1 where 1=1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c1 from t1 where 1=1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- equality predicate on preceding key columns
+select distinct c2 from t1 where c1 = 1 and c3 = '1';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- equality predicate on all key columns, non unique
+select distinct c3 from t1 where c1 = 1 and c2 = '1';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- equality predicate on all key columns, non unique
+select distinct c3 from t2 where c1 = 1 and c2 = '1';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- different orderings
+select distinct c2, c1 from t1 where 1=1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c2 from t1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c2, c1 from t1 where c3 = '1';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c2 from t1 where c3 = '1' and c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ordered, but no where clause - uses distinct scan
+
+-- the following approach is used because the ordering of the results from
+-- the distinct is not guaranteed (it varies depending on the JVM hash 
+-- implementation), but adding an order by to the query may
+-- change how we execute the distinct and we want to test the code path without
+-- the order by.  By adding the temp table, we can maintain a single master
+-- file for all JVM's.
+
+create table temp_result (result_column int);
+
+insert into temp_result 
+    (select distinct c1 from t1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+select * from temp_result order by result_column;
+drop table temp_result;
+
+-- test distinct with an order by
+select distinct c1 from t1 order by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- clean up
+drop table t1;
+drop table t2;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,19 @@
+#
+# This is the default system properties file for JSQL and JAVA tests.
+#
+# It will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij (or the GUI on ij) to load the driver and make an
+# initial connection to the database.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>.sysprop to be used instead of this file.
+#
+#
+database=jdbc:derby:wombat;create=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/distinct_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,17 @@
+#
+# This properties file is for the distinct test.
+# its configuration's only difference from the default configuration
+# is that it runs with the statement cache on.
+#
+# This file is expected to be placed into $WS/systest/out by
+# the run script, and expects to be run in an environment where
+# the property derby.system.home points to $WS/systest/out.
+#
+# caching will help this test
+derby.language.statementCacheSize=1000
+derby.infolog.append=true
+#derby.debug.true=JDBCExceptionTrace
+
+derby.optimizer.optimizeJoinOrder=false
+derby.optimizer.ruleBasedOptimization=true
+derby.optimizer.noTimeout=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dropTable.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dropTable.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,262 @@
+-- tests for drop table
+--
+autocommit off;
+--
+-- test simple table - all should work
+--
+create table t1 ( a int);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 (a int);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 (a int);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+--
+-- test table with unique constraint - all should work
+--
+create table t1 (a int not null unique);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 (a int not null unique);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 (a int not null unique);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+--
+-- test table with primary constraint - all should work
+--
+create table t1 ( a int not null primary key);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 ( a int not null primary key);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 ( a int not null primary key);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+--
+-- test table with check constraint - all should work
+--
+create table t1 ( a int check(a > 0));
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 ( a int check(a > 0));
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 ( a int check(a > 0));
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+--
+-- test table with index - all should work
+--
+create table t1 ( a int);
+create index t1index on t1(a);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 (a int);
+create index t1index on t1(a);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+create table t1 (a int);
+create index t1index on t1(a);
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+--
+-- test table with foreign key references;
+--
+create table t1(a int not null primary key);
+create table t2(a int constraint reft1a references t1(a));
+-- this should fail with a dependent constraint error
+drop table t1;
+-- this should fail with a dependent constraint error
+drop table t1;
+-- dropping dependent constraint
+alter table t2 drop constraint reft1a;
+-- this should work since dependent constraint was dropped
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+-- the following should work since no referential constraint is left
+insert into t2 values(1);
+drop table t2;
+
+--
+-- test table with view
+--
+create table t1(a int, b int);
+create table t2(c int, d int);
+create view vt1a as select a from t1;
+create view vt1b as select b from t1;
+create view vt1t2 as select * from t1, t2;
+create view vvt1a as select * from vt1a;
+create view vvvt1a as select * from vvt1a;
+-- this should fail with view being a dependent object
+drop table t1;
+-- this should fail with view being a dependent object
+drop table t1;
+-- dropping dependent views
+drop view vvvt1a;
+drop view vvt1a;
+drop view vt1t2;
+drop view vt1b;
+drop view vt1a;
+-- this should work after dependent views were dropped
+drop table t1;
+-- this shouldn't find the view
+select * from vt1a;
+select * from vt1b;
+select * from vt1t2;
+select * from vvt1a;
+select * from vvvt1a;
+
+drop table t2;
+
+--
+-- test table with prepared statement
+--
+create table t1(a int);
+prepare t1stmt as 'select * from t1';
+-- this should work, statement will be invalidated and will fail when recompiled
+drop table t1;
+execute t1stmt;
+remove t1stmt;
+
+create table t1(a int);
+prepare t1stmt as 'select * from t1';
+-- this should work, statement will be invalidated and will fail when recompiled
+drop table t1;
+execute t1stmt;
+remove t1stmt;
+
+create table t1(a int);
+prepare t1stmt as 'select * from t1';
+-- this should work, statement will be invalidated and will fail when recompiled
+drop table t1;
+execute t1stmt;
+remove t1stmt;
+
+--
+-- test table with triggers
+--
+create table t1(a int);
+create table t2(a int);
+create trigger t1trig after insert on t1 for each row mode db2sql insert into t2 values(1);
+-- this should work - trigger should be deleted
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+create table t1(a int);
+create trigger t1trig after insert on t1 for each row mode db2sql insert into t2 values(1);
+-- this should work - trigger should be deleted
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+
+create table t1(a int);
+create trigger t1trig after insert on t1 for each row mode db2sql insert into t2 values(1);
+-- this should work - trigger should be deleted
+drop table t1;
+-- t1 shouldn't be found
+select * from t1;
+drop table t2;
+
+--
+-- test table within the body of a trigger on another table
+--
+create table t1(a int);
+create table t2(a int);
+create trigger t2trig after insert on t2 for each row mode db2sql insert into t1 values(1);
+-- this should work
+drop table t1;
+-- the following should get an error when trying to recompile the trigger action
+insert into t2 values(1);
+drop table t2;
+
+create table t1(a int);
+create table t2(a int);
+create trigger t2trig after insert on t2 for each row mode db2sql insert into t1 values(1);
+-- this should work
+drop table t1;
+-- the following should get an error when trying to recompile the trigger action
+insert into t2 values(1);
+drop table t2;
+
+create table t1(a int);
+create table t2(a int);
+create trigger t2trig after insert on t2 for each row mode db2sql insert into t1 values(1);
+-- this should work
+drop table t1;
+-- the following should get an error when trying to recompile the trigger action
+insert into t2 values(1);
+drop table t2;
+
+--
+-- test drop view
+--
+create table t1(a int);
+create view vt1 as select * from t1;
+create view vvt1 as select * from vt1;
+-- these should fail
+drop view vt1;
+drop view vt1 restrict;
+drop view vt1 cascade;
+
+-- 
+-- make sure that indexes are dropped for drop table
+--
+create table t2(a int not null primary key);
+create table reft2(a int constraint ref1 references t2);
+-- count should be 2
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where t.tableid = c.tableid and
+t.tablename = 'REFT2';
+-- drop dependent referential constraint
+alter table reft2 drop constraint ref1;
+-- should work since dependent constraint was previously dropped
+drop table t2;
+-- count should be 1
+select count(*) 
+from sys.sysconglomerates c, sys.systables t
+where t.tableid = c.tableid and
+t.tablename = 'REFT2';
+
+-- unsuccessful drop table should not affect open cursor
+-- beetle 4393
+rollback;
+create table T1 (i int, c varchar(255), d varchar(255));
+insert into T1(i) values(1);
+insert into T1(i) values(2);
+get cursor X1 as 'select i from t1 for update of c';
+prepare U as 'update t1 set c = CHAR(i) where current of X1';
+next X1;
+drop table T1;
+execute U;
+select * from T1;
+
+-- pretend all of the above didn't happen
+autocommit on;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,175 @@
+-- test the dynamic like optimization
+-- NOTE: the metadata test does a bunch
+-- of likes with parameters
+
+autocommit off;
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+-- NoHoldForConnection;
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+-- language layer tests
+create table t1(c11 int);
+insert into t1 values(1);
+prepare ll1 as 'select 1 from t1 where ''asdf'' like ?';
+execute ll1 using 'values '''' ';	-- no match char(1) pads to ' '
+execute ll1 using 'values ''%'' ';
+execute ll1 using 'values ''%f'' ';
+execute ll1 using 'values cast(''%f'' as varchar(2)) ';
+execute ll1 using 'values ''%g'' ';
+execute ll1 using 'values ''asd%'' ';
+execute ll1 using 'values ''_%'' ';
+execute ll1 using 'values ''%_'' ';
+execute ll1 using 'values ''_asdf'' ';
+execute ll1 using 'values ''%asdf'' ';
+execute ll1 using 'values cast(null as char)';
+execute ll1 using 'values '''' ';
+
+-- Escape tests
+prepare ll15 as 'select 1 from t1 where ''%foobar'' like ''Z%foobar'' escape ?';
+execute ll15 using 'values ''Z''';		-- match: optimize to LIKE AND ==
+execute ll15 using 'values cast(''Z'' as varchar(1)) ';
+
+execute ll15 using 'values ''raZ''';	-- too many like chars
+execute ll15 using 'values ''%''';		-- no match, wrong char
+
+select 1 from t1  where '%foobar' like '%%foobar' escape '%';	-- match
+select 1 from t1  where '_foobar' like '__foobar' escape '_';	-- match
+
+select 1 from t1  where 'asdf' like 'a%' escape cast(null as char);	-- error NULL escape
+
+prepare ll2 as 'select 1 from t1 where ''%foobar'' like ? escape ?'; 
+execute ll2 using 'values (''Z%foobar'', ''Z'') '; 		-- match
+execute ll2 using 'values (''Z%foobar'', '''') '; 		-- error empty string escape 
+prepare ll2 as 'select 1 from t1 where ''%foobar'' like ? escape ''Z''';
+execute ll2 using 'values ''x%foobar'' '; 		-- no match 
+execute ll2 using 'values ''Z%foobar'' ';		-- match 
+prepare ll2 as 'select 1 from t1 where ''%foobar'' like ? escape ''$''';
+execute ll2 using 'values ''$%f%bar'' ';		-- match
+
+prepare ll3 as 'select 1 from t1 where ''Z%foobar'' like ? escape ''Z''';
+execute ll3 using 'values ''ZZZ%foo%a_'' ';		-- MATCH
+
+CREATE FUNCTION GETMAXCHAR() RETURNS CHAR(1) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.CharUTF8.getMaxDefinedCharAsString' LANGUAGE JAVA PARAMETER STYLE JAVA;
+ 
+--\uFA2D - the highest valid character according to Character.isDefined() of JDK 1.4;
+--prepare ll4 as 'select 1 from t1 where ''\uFA2D'' like ?';
+prepare ll4 as 'select 1 from t1 where GETMAXCHAR() like ?';
+execute ll4 using 'values ''%'' ';
+execute ll4 using 'values '''' ';
+execute ll4 using 'values ''_'' ';
+execute ll4 using 'values GETMAXCHAR() ';
+
+-- create and populate tables
+create table test(id char(10), c10 char(10), vc10 varchar(10));
+insert into test values ('V-NULL', null, null);
+insert into test values ('asdf', 'asdf', 'asdf');
+insert into test values ('asdg', 'asdg', 'asdg');
+insert into test values ('aasdf', 'aasdf', 'aasdf');
+insert into test values ('%foobar', '%foobar', '%foobar');
+insert into test values ('foo%bar', 'foo%bar', 'foo%bar');
+insert into test values ('foo_bar', 'foo_bar', 'foo_bar');
+insert into test values ('MAX_CHAR', '\uFA2D', '\uFA2D');
+
+-- pushing generated predicates down
+prepare p1 as 'select id from test where c10 like ?';
+prepare p2 as 'select id from test where vc10 like ?';
+
+select vc10 from test where vc10 like 'values cast(null as varchar(1))';
+-- return 0 rows
+execute p1 using 'values cast(null as char)';
+execute p2 using 'values cast(null as varchar(1))';
+
+-- false
+execute p1 using 'values 1';
+execute p2 using 'values 1';
+
+-- false
+execute p1 using 'values '''' ';
+execute p2 using 'values '''' ';
+
+-- true
+execute p1 using 'values ''%'' ';
+execute p2 using 'values ''%'' ';
+
+-- fail, no end blankd pad
+execute p1 using 'values ''%f'' ';
+execute p2 using 'values ''%f'' ';
+
+execute p1 using 'values cast(''%f'' as varchar(2)) ';
+execute p2 using 'values cast(''%f'' as varchar(2)) ';
+
+execute p1 using 'values ''%g'' ';
+execute p2 using 'values ''%g'' ';
+
+execute p1 using 'values ''asd%'' ';
+execute p2 using 'values ''asd%'' ';
+
+execute p1 using 'values ''_%'' ';
+execute p2 using 'values ''_%'' ';
+
+execute p1 using 'values ''%_'' ';
+execute p2 using 'values ''%_'' ';
+
+-- one: aasdf
+execute p1 using 'values ''_asdf'' ';		-- fail: char blank padding significant
+execute p1 using 'values ''_asdf   %'' ';
+execute p2 using 'values ''_asdf'' ';
+
+execute p1 using 'values ''%asdf'' ';		-- fail
+execute p2 using 'values ''%asdf'' ';
+
+-- verify that like optimization being performed
+execute p2 using 'values ''%'' ';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+create index i1 on test(vc10);
+
+
+create table likeable (match_me varchar(10), pattern varchar(10), esc varchar(1));
+
+insert into likeable values ('foo%bar', 'fooZ%bar', 'Z');
+insert into likeable values ('foo%bar', '%Z%ba_', 'Z');
+insert into likeable values ('foo%bar', 'fooZ%baZ', 'Z');	-- error
+select match_me from likeable where match_me like pattern escape esc;
+
+delete from likeable;
+insert into likeable values ('foo%bar', 'foo%bar', NULL);	-- should error
+select match_me from likeable where match_me like pattern escape esc;
+delete from likeable;
+insert into likeable values ('foo%bar', 'foo%bar', '');		-- should error
+select match_me from likeable where match_me like pattern escape esc;
+
+-- Defect 6002/6039
+create table cei(id int, name varchar(192) not null, source varchar(252) not null);
+insert into cei values (1, 'Alarms', 'AlarmDisk999'), 
+		(2, 'Alarms', 'AlarmFS-usr'),
+		(3, 'Alarms', 'AlarmPower'),
+		(4, 'Alert', 'AlertBattery'),
+		(5, 'Alert', 'AlertUPS'),
+		(6, 'Warning', 'WarnIntrusion'),
+		(7, 'Warning', 'WarnUnlockDoor'),
+		(8, 'Warning', 'Warn%Unlock%Door'),
+		(9, 'Warning', 'W_Unlock_Door');
+select * from cei;
+
+prepare s as 'select id, name, source from cei where (name LIKE ? escape ''\'') and (source like ? escape ''\'') order by source asc, name asc';
+
+execute s using 'values (''%'', ''%'')';
+execute s using 'values (''Alarms'', ''AlarmDisk%'')';
+execute s using 'values (''A%'', ''%'')';
+execute s using 'values (''%'',	''___rm%'')';
+execute s using 'values (''Warning'', ''%oor'')';
+execute s using 'values (''Warning'', ''Warn\%Unlock\%Door'')';
+execute s using 'values (''Warning'', ''%\%Unlo%'')';
+execute s using 'values (''Warning'', ''W\_Unloc%'')';
+execute s using 'values (''Warning'', ''_\_Unlock\_Door'')';
+execute s using 'values (''W%'', ''Warn\%Unlock\%Door'')';
+execute s using 'values (''%ing'', ''W\_Unlock\_%Door'')';
+execute s using 'values (''Bogus'', ''Name'')';
+
+-- clean up
+drop table test;
+drop table likeable;
+drop table cei;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8 @@
+##runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/dynamicLikeOptimization_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1589 @@
+
+-- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABS/ABSVAL test.  For all valid types, un-escaped function.
+
+
+-- Integer has a range of -2147483648 to 2147483647
+-- Basic
+create table myint( a int );
+create table myinteger( a integer );
+select abs(a) from myint;
+select abs(a) from myinteger;
+insert into myint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (2147483647), (-2147483647);
+insert into myinteger values (NULL), (+0), (-0), (+1), (-1), (1000), (-1000), (NULL), (2147483647), (-2147483647);
+select a from myint;
+select a from myinteger;
+select abs(a) from myint;
+select abs(a) from myinteger;
+select -abs(a) from myint;
+select -abs(a) from myinteger;
+select abs(abs(-abs(-abs(a)))) from myint;
+select abs(abs(-abs(-abs(a)))) from myinteger;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYINT;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYINTEGER;
+insert into myint values (-2147483648);
+insert into myinteger values (-2147483648);
+select a from myint where a=-2147483648;
+select a from myinteger where a=-2147483648;
+-- Error
+select -a from myint where a=-2147483648;
+select -a from myinteger where a=-2147483648;
+select abs(-a) from myint where a=-2147483648;
+select abs(-a) from myinteger where a=-2147483648;
+select abs(a) from myint where a=-2147483648;
+select abs(a) from myinteger where a=-2147483648;
+select abs(-abs(a)) from myint where a=-2147483648;
+select abs(-abs(a)) from myinteger where a=-2147483648;
+drop table myint;
+drop table myinteger;
+-- End of Integer test
+
+
+-- Smallint has a range of -32768 to 32767
+-- Basic
+create table mysmallint( a smallint );
+select abs(a) from mysmallint;
+insert into mysmallint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (32767), (-32767);
+select a from mysmallint;
+select abs(a) from mysmallint;
+select -abs(a) from mysmallint;
+select abs(abs(-abs(-abs(a)))) from mysmallint;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYSMALLINT;
+insert into mysmallint values (-32768);
+select a from mysmallint where a=-32768;
+-- Error
+select -a from mysmallint where a=-32768;
+select abs(-a) from mysmallint where a=-32768;
+select abs(a) from mysmallint where a=-32768;
+select abs(-abs(a)) from mysmallint where a=-32768;
+drop table mysmallint;
+-- End of Smallint test
+
+
+-- Bigint has a range of -9223372036854775808 to 9223372036854775807
+-- Basic
+create table mybigint( a bigint );
+select abs(a) from mybigint;
+insert into mybigint values (null), (+0), (-0), (+1), (-1), (1000), (-1000), (null), (9223372036854775807), (-9223372036854775807);
+select a from mybigint;
+select abs(a) from mybigint;
+select -abs(a) from mybigint;
+select abs(abs(-abs(-abs(a)))) from mybigint;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYBIGINT;
+insert into mybigint values (-9223372036854775808);
+select a from mybigint where a=-9223372036854775808;
+-- Error
+select -a from mybigint where a=-9223372036854775808;
+select abs(-a) from mybigint where a=-9223372036854775808;
+select abs(a) from mybigint where a=-9223372036854775808;
+select abs(-abs(a)) from mybigint where a=-9223372036854775808;
+drop table mybigint;
+-- End of Bigint test
+
+
+-- REAL has a range of +/-1.175E-37 to +/-3.402E+38 
+-- Basic
+create table myreal( a real );
+select abs(a) from myreal;
+insert into myreal values (null), (+0), (-0), (+1), (-1), (null), (100000000), (-100000000),
+(3.402E+38), (-3.402E+38),
+(1.175E-37), (-1.175E-37);
+select a from myreal;
+select -a from myreal;
+select abs(a) from myreal;
+select abs(-a) from myreal;
+select -abs(a) from myreal;
+select abs(abs(-abs(-abs(a)))) from myreal;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYREAL;
+select distinct abs(a) from myreal;
+---- There is nothing wrong with returning 1.0.  The float overflows and this is just the way it behaves.
+-- this used to work on CS, not any more when adopted to DB2 style floats
+-- since contant numbers are (parsed as) doubles
+select abs(-abs(a)) + 1 from myreal where a=1.175E-37;
+-- when casted to a real, it is found
+select abs(-abs(a)) + 1 from myreal where a=cast(1.175E-37 as real);
+-- Error
+insert into myreal values ( 3.402E+38 *2);
+insert into myreal values (-3.402E+38 *2);
+drop table myreal;
+-- End of Real test
+
+
+-- Double Precision has a range of +/-2.225E-307 to +/-1.79769E+308 
+-- Basic
+create table mydoubleprecision( a double precision );
+select abs(a) from mydoubleprecision;
+insert into mydoubleprecision values (null), (+0), (-0), (+1), (-1), (100000000), (-100000000), (null),
+(1.79769E+308), (-1.79769E+308),
+(2.225E-307), (-2.225E-307);
+select a from mydoubleprecision;
+select -a from mydoubleprecision;
+select abs(a) from mydoubleprecision;
+select abs(-a) from mydoubleprecision;
+select -abs(a) from mydoubleprecision;
+select abs(abs(-abs(-abs(a)))) from mydoubleprecision;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYDOUBLEPRECISION;
+select distinct abs(a) from mydoubleprecision;
+-- There is nothing wrong with returning 1.0.  The double overflows and this is just the way it behaves.
+select abs(-abs(a)) + 1 from mydoubleprecision where a=2.225E-307;
+-- Error
+insert into mydoubleprecision values ( 1.79769E+308 *2);
+insert into mydoubleprecision values (-1.79769E+308 *2);
+drop table mydoubleprecision;
+-- End of Double Precision test
+
+
+-- Float has a the range or a REAL or DOUBLE depending on
+-- the precision you specify.  Below a is a double, b is a float
+create table myfloat( a float, b float(23) );
+select abs(a), abs(b) from myfloat;
+select columnname, columndatatype
+from sys.syscolumns c, sys.systables t where c.referenceid = t.tableid and t.tablename='MYFLOAT';
+insert into myfloat values (null, null), (+0, +0), (-0, -0), (+1, +1), (-1, -1),
+(100000000, 100000000), (-100000000, -100000000), (null, null),
+(1.79769E+308, 3.402E+38),
+(-1.79769E+308, -3.402E+38),
+(2.225E-307, 1.175E-37),
+(-2.225E-307, -1.175E-37);
+select a, b from myfloat;
+select -a, -b from myfloat;
+select abs(a), abs(b) from myfloat;
+select abs(-a), abs(-b) from myfloat;
+select -abs(a), -abs(b) from myfloat;
+select abs(abs(-abs(-abs(a)))), abs(abs(-abs(-abs(b)))) from myfloat;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))), ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(B)))) FROM MYFLOAT;
+select distinct abs(a) from myfloat;
+-- -- There is nothing wrong with returning 1.0.  The float overflows and this is just the way it behaves.
+-- this used to work in CS, but no more, = on floating point values isn't really useful
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307 AND b=1.175E-37;
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where b=3.402E+38;
+-- 'real =' works on DB2 and DB2 Cloudscape
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where b=cast(3.402E+38 as real);
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307 AND b=cast(1.175E-37 as real);
+select abs(-abs(a)) + 1, abs(-abs(b)) + 1 from myfloat where a=2.225E-307;
+-- Error
+insert into myfloat values ( 1.79769E+308 *2, 3.402E+38 *2);
+insert into myfloat values (-1.79769E+308 *2, -3.402E+38 *2);
+insert into myfloat values ( 2.225E-307, 3.402E+38 *2);
+insert into myfloat values (-2.225E-307, -3.402E+38 *2);
+drop table myfloat;
+-- End of Float test
+
+
+-- Decimal is java.math.BigDecimal
+-- Basic
+create table myDecimal( a decimal(31, 0), b decimal(31,31));
+select abs(a) from myDecimal;
+insert into myDecimal values (null,0), (+0,0), (-0,0), (+1,0), (-1,0), 
+(100000000,.10000000), (-100000000,-.10000000), (null,null), 
+(1.0e30, 1.0e-30), 
+(-1.0e30, -1.0e-30);
+select a from myDecimal;
+select -a from myDecimal;
+select b from myDecimal;
+select -b from myDecimal;
+select abs(a) from myDecimal;
+select abs(-a) from myDecimal;
+select -abs(a) from myDecimal;
+select abs(abs(-abs(-abs(a)))) from myDecimal;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYDECIMAL;
+select distinct abs(a) from myDecimal;
+select abs(b) from myDecimal;
+select abs(-b) from myDecimal;
+select -abs(b) from myDecimal;
+select abs(abs(-abs(-abs(b)))) from myDecimal;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(B)))) FROM MYDECIMAL;
+select distinct abs(b) from myDecimal;
+-- There is nothing wrong with returning 1.0.  The decimal overflows and this is just the way it behaves.  Needs to make this compatible with jdk1.1.8(which had a bug).
+select abs(-abs(a)) + 1 from myDecimal;
+drop table myDecimal;
+-- End of Decimal test
+
+
+-- Numeric java.math.BigDecimal
+-- Basic
+create table myNumeric( a decimal(31,0), b decimal(31,31 ));
+select abs(a) from myNumeric;
+insert into myNumeric values (null), (+0), (-0), (+1), (-1),
+(100000000), (-100000000), (null),
+(1.0e31, ,1.0e-31),
+(-1.0e31, -1.0e-31 ), 
+select a from myNumeric;
+select -a from myNumeric;
+select b from myNumeric;
+select -b from myNumeric;
+select abs(a), abs(b)from myNumeric;
+select abs(-a), abs(-b) from myNumeric;
+select -abs(a), -abs(b)  from myNumeric;
+select abs(abs(-abs(-abs(a)))) from myNumeric;
+SELECT ABSVAL(ABSVAL(-ABSVAL(-ABSVAL(A)))) FROM MYNUMERIC; 
+select distinct abs(a) from myNumeric;
+-- There is nothing wrong with returning 1.0.  The numeric overflows and this is just the way it behaves.  Needs to make this compatible with jdk1.1.8(which had a bug).
+select abs(-abs(a)) + 1 from myNumeric;
+drop table myNumeric;
+-- End of Numeric test
+
+-- Test some different statements, just in case
+create table foo( a int );
+insert into foo values ( abs( 1) );
+insert into foo values ( abs(-2) );
+insert into foo values (-abs(-3) );
+insert into foo values (-abs( 4) );
+insert into foo values (          -5  );
+insert into foo values (          -6  );
+insert into foo values (          -7  );
+
+autocommit off;
+prepare p1 as 'select a from foo';
+prepare p2 as 'select abs(a) from foo';
+prepare p3 as 'insert into foo select a*(-1) from foo';
+execute p1;
+execute p2;
+execute p3;
+execute p1;
+insert into foo values( abs( 8 ) );
+insert into foo values( abs(-9 ) );
+insert into foo values(-abs(-10) );
+insert into foo values( abs( 11) );
+insert into foo values(          -12  );
+execute p1;
+execute p2;
+execute p3;
+execute p1;
+rollback;
+commit;
+
+autocommit on;
+insert into foo values( abs( 13) );
+insert into foo values( abs(-14) );
+insert into foo values(-abs(-15) );
+insert into foo values(-abs( 16) );
+insert into foo values(          -17  );
+execute p1;
+execute p2;
+execute p3;
+execute p1;
+select * from foo;
+drop table foo;
+-- End of ABS/ABSVAL test.  For all valid types.  Un-escaped function.
+
+-- abs is not a reserved word
+create table abs( a int );
+drop table abs;
+
+-- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABS test.  For escape function.
+
+-- Integer
+-- Basic
+-- beetle 5805 - support INT[EGER] built-in function
+values{fn abs(INT(' 0')               )};
+values{fn abs(INT('-0')               )};
+values{fn abs(INT(' 1')               )};
+values{fn abs(INT('-1')               )};
+values{fn abs(INT(' 1000000')         )};
+values{fn abs(INT('-1000000')         )};
+values{fn abs(INT(' 2147483647')      )};
+values{fn abs(INT('-2147483648') + 1  )};
+-- Error
+values{fn abs(INT('-2147483648')      )};
+values{fn abs(INT(' 2147483647') + 1  )};
+
+-- Smallint
+-- Basic
+-- beetle 5807 - support SMALLINT built-in function
+values{fn abs( SMALLINT(' 0')         )};
+values{fn abs( SMALLINT('-0')         )};
+values{fn abs( SMALLINT(' 1')         )};
+values{fn abs( SMALLINT('-1')         )};
+values{fn abs( SMALLINT(' 10000')     )};
+values{fn abs( SMALLINT('-10000')     )};
+values{fn abs( SMALLINT(' 32767')     )};
+values{fn abs( SMALLINT('-32768') + 1 )};
+values{fn abs(-SMALLINT('-32768')     )};
+-- Error
+values{fn abs(-SMALLINT(' 32768')     )};
+values{fn abs( SMALLINT('-32768')     )};
+
+-- Bigint
+-- Basic
+-- beetle 5809 - support BIGINT built-in function
+values{fn abs( BIGINT(' 0')                       )};
+values{fn abs( BIGINT('-0')                       )};
+values{fn abs( BIGINT(' 1')                       )};
+values{fn abs( BIGINT('-1')                       )};
+values{fn abs( BIGINT(' 100000000000')            )};
+values{fn abs( BIGINT('-100000000000')            )};
+values{fn abs( BIGINT(' 9223372036854775807')     )};
+values{fn abs( BIGINT('-9223372036854775808') + 1 )};
+-- Error
+values{fn abs(-BIGINT('-9223372036854775808')     )};
+values{fn abs( BIGINT('-9223372036854775808')     )};
+
+-- Real
+-- Basic
+-- beetle 5806 - support REAL built-in function
+values{fn abs( REAL( 0)                       )};
+values{fn abs( REAL(-0)                       )};
+values{fn abs( REAL( 1)                       )};
+values{fn abs( REAL(-1)                       )};
+values{fn abs( REAL( 1000000.001)             )};
+values{fn abs( REAL(-1000000.001)             )};
+values{fn abs( REAL( 3.402E+38)               )};
+values{fn abs( REAL(-3.402E+38) + 1           )};
+-- Error
+values{fn abs( REAL( 3.402E+38 * 2)           )};
+values{fn abs(-REAL( NaN)                     )};
+values{fn abs( REAL( 1.40129846432481707e-45) )};
+values{fn abs( REAL( 3.40282346638528860e+38) )};
+
+-- Double Precision/Double
+-- Basic
+-- beetle 5803 - support DOUBLE_[PRECISION] built-in function
+values{fn abs( DOUBLE( 0)                      )};
+values{fn abs( DOUBLE(-0)                      )};
+values{fn abs( DOUBLE( 1)                      )};
+values{fn abs( DOUBLE(-1)                      )};
+values{fn abs( DOUBLE( 1000000.001)            )};
+values{fn abs( DOUBLE(-1000000.001)            )};
+values{fn abs( DOUBLE(-1.79769E+308)           )};
+values{fn abs( DOUBLE( 1.79769E+308) + 1       )};
+values{fn abs( DOUBLE( 2.225E-307 + 1)         )};
+-- Error
+values{fn abs( DOUBLE( 1.79769E+308 * 2)       )};
+values{fn abs(-DOUBLE( NaN)                    )};
+values{fn abs( DOUBLE( 4.9E-324)               )};
+values{fn abs( DOUBLE( 1.7976931348623157E308) )};
+
+-- Decimal/Numeric
+-- Basic
+-- beetle 5802 - support DEC[IMAL] built-in function
+values{ fn abs(DEC( 0)             )};
+values{ fn abs(DEC(-0)             )};
+values{ fn abs(DEC( 1)             )};
+values{ fn abs(DEC(-1)             )};
+values{ fn abs(DEC( 1000000000000) )};
+values{ fn abs(DEC(-1000000000000) )};
+
+
+-- More generic test
+values{ fn abs( 0-1-.1 ) };
+values{ fn abs( -0-1.000000001 ) };
+VALUES{ FN ABS( 100-200-300 ) };
+
+-- Error
+values{ fn abs('null') };
+
+-- End of ABS test.  For escaped function.
+-- This test EJBQL Absolute function. Resolve 3535
+-- Begin of ABSVAL test.  For all valid types, un-escaped function.
+
+
+-- Integer has a range of -2147483648 to 2147483647
+-- Basic
+
+create table myint( a int );
+select abs(a) from myint;
+insert into myint values (null);
+select abs(a) from myint;
+autocommit off;
+
+-- Prepare Statements, should pass and return 1
+prepare p1 as 'select abs(?) from myint';
+prepare p1 as 'select 1 from myint where ? <= 4';
+execute p1 using 'values absval( 4 )';
+execute p1 using 'values absval( -4 )';
+execute p1 using 'values absval( 4.4 )';
+execute p1 using 'values absval( -4.4 )';
+
+-- Prepare Statements, should pass and return 1
+prepare p2 as 'select {fn abs(?)} from myint';
+prepare p2 as 'select 1 from myint where ? <= 4';
+execute p2 using 'values {fn abs( 4 )}';
+execute p2 using 'values {fn abs( -4 )}';
+execute p2 using 'values {fn abs( 4.4 )}';
+execute p2 using 'values {fn abs( -4.4 )}';
+execute p2 using 'values {fn abs( -4.44444444444444444444444 )}';
+autocommit on;
+
+drop table myint;
+-- Using Strings in escape function
+create table myStr( a varchar(10) );
+insert into myStr values ( '123' );
+insert into myStr values ( '-123' );
+insert into myStr values ( '-12 ' );
+insert into myStr values ( ' -2 ' );
+insert into myStr values ( '1a3' );
+select * from myStr;
+select abs(a) from myStr;
+select {fn abs(a)} from myStr;
+drop table myStr;
+-- End of ABSVAL test
+
+-- This test EJBQL function, CONCAT. Resolve 3535
+
+-- Begin of CONCAT test
+-- Basic
+values{ fn concat( 'hello', ' world' ) };
+VALUES{ FN CONCAT( 'HELLO', ' WORLD' ) };
+values{ fn concat( '' , '' )};
+values{ fn concat( CHAR(''), CHAR('') ) };
+values{ fn concat( 45, 67 )};
+values{ fn concat( '45', 67 )};
+values{ fn concat( 45, '67' )};
+values{ fn concat( CHAR('C'), CHAR('#') ) };
+values{ fn concat( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\    [];,./ \'' |',
+                   'abcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+|<>?:"{}     ''''''      ' ) };
+create table concat ( a int );
+insert into concat values (1);
+select * from CONCAT;
+
+create table myconcat( a varchar(10) default null, b varchar(10) default null, c int);
+insert into myconcat (c) values( 1 );
+insert into myconcat (c) values( 2 );
+insert into myconcat (a) values( 'hello' );
+insert into myconcat (b) values( 'world' );
+insert into myconcat (a,b) values( 'hello', 'world' );
+select * from myconcat;
+select { fn concat( a, b ) } from myconcat;
+drop table concat;
+drop table myconcat;
+-- End of CONCAT test
+
+-- This test the EJBQL function, LOCATE. Resolve 3535
+
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2 }; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+
+-- Begin of LOCATE test
+-- Basic
+-- 2 args
+values{ fn locate( 'hello', 'hello' ) };
+values{ fn locate( 'hello', 'hellohello' ) };
+values{ fn locate( 'hello', 'helloworld' ) };
+values{ fn locate( 'hello', 'h?hello' ) };
+values{ fn locate( 'hello', 'match me, hello now!' ) };
+values{ fn locate( '?', '?' ) };
+values{ fn locate( '\', '\\') };
+values{ fn locate( '/', '//') };
+values{ fn locate( '\\', '\') };
+values{ fn locate( '//', '/') };
+values{ fn locate( '', 'test' ) };
+values{ fn locate( '', ''     ) };
+values{ fn locate( 'test', '' ) };
+
+-- 3 args 
+values{ fn locate( 'hello', 'hello',-1 ) };
+values{ fn locate( 'hello', 'hello',-0 ) };
+values{ fn locate( 'hello', 'hello', 0 ) };
+values{ fn locate( 'hello', 'hello', 1 ) };
+values{ fn locate( 'hello', 'hello', 2 ) };
+values{ fn locate( 'hello', 'hello', 5 ) };
+values{ fn locate( 'hello', 'hello', 9 ) };
+
+values{ fn locate( 'hello', 'hellohello', 0 ) };
+values{ fn locate( 'hello', 'hellohello', 1 ) };
+values{ fn locate( 'hello', 'hellohello', 2 ) };
+values{ fn locate( 'hello', 'hellohello', 5 ) };
+values{ fn locate( 'hello', 'hellohello', 6 ) };
+values{ fn locate( 'hello', 'hellohello', 7 ) };
+
+values{ fn locate( 'hello', 'h?hello', 1 ) };
+values{ fn locate( 'hello', 'h?hello', 2 ) };
+values{ fn locate( 'hello', 'h?hello', 3 ) };
+values{ fn locate( 'hello', 'h?hello', 4 ) };
+
+values{ fn locate( 'hello', 'match me, hello now!',  7 ) };
+values{ fn locate( 'hello', 'match me, hello now!', 15 ) };
+
+values{ fn locate( '?', '?',-1 ) };
+values{ fn locate( '?', '?',-0 ) };
+values{ fn locate( '?', '?', 0 ) };
+values{ fn locate( '?', '?', 1 ) };
+values{ fn locate( '?', '?', 2 ) };
+
+values{ fn locate( '\', '\\',0) };
+values{ fn locate( '\', '\\',1) };
+values{ fn locate( '\', '\\',2) };
+values{ fn locate( '\', '\\',3) };
+
+values{ fn locate( '/', '//',0) };
+values{ fn locate( '/', '//',1) };
+values{ fn locate( '/', '//',2) };
+values{ fn locate( '/', '//',3) };
+
+values{ fn locate( '\\', '\',1) };
+values{ fn locate( '//', '/',1) };
+
+values{ fn locate( '', 'test',1) };
+values{ fn locate( '', 'test',2) };
+values{ fn locate( '', 'test',3) };
+values{ fn locate( '', 'test',4) };
+values{ fn locate( '', 'test',5) };
+values{ fn locate( '', ''    ,1) };
+values{ fn locate( 'test', '',1) };
+values{ fn locate( 'test', '',2) };
+values{ fn locate( 'test', '',3) };
+values{ fn locate( 'test', '',4) };
+
+values{ fn locate( 'hello', 1 ) };
+values{ fn locate( 1, 'hello' ) };
+values{ fn locate( 'hello', 'hello', 'hello' ) };
+values{ fn locate( 'hello', 'hello', 1.99999999999 ) };
+values{ fn locate( 1, 'hel1lo' ) };
+values{ fn locate( 1, 1 ) };
+values{ fn locate( 1, 1, '1' ) };
+values{ fn locate( '1', 1, 1 ) };
+values{ fn locate( '1', '1', '1' ) };
+
+
+-- End of EJBQL function test for LOCATE.
+-- This test the EJBQL function, LOCATE. Resolve 3535
+
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+
+-- Begin of LOCATE test
+-- Basic
+create table locate( a varchar(20) );
+
+-- create table myChar( a char(10), b char(20), c int default '1'  );
+create table myChar( a char(10), b char(20), c int );
+insert into myChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+insert into myChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into myChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+insert into myChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into myChar values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into myChar values( 'abcdefghij', 'abcdefghij1234567890', 1  );
+insert into myChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into myChar (c) values( 0 );
+insert into myChar (c) values( 1 );
+insert into myChar (c) values( 2 );
+insert into myChar (a) values( 'hello' );
+insert into myChar (b) values( 'hello' );
+insert into myChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from myChar;
+select locate(a, b) from myChar;
+select locate(a, b, c) from myChar;
+
+drop table myChar;
+create table myLongVarChar( a long varchar, b long varchar, c int);
+insert into myLongVarChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+insert into myLongVarChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into myLongVarChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+insert into myLongVarChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into myLongVarChar (a, b) values( 'abcde', 'abcde' );
+insert into myLongVarChar (a, b) values( 'abcde', 'abcd' );
+insert into myLongVarChar (a, b) values( '', 'abcde' );
+insert into myLongVarChar (a, b) values( 'abcde', null );
+insert into myLongVarChar (a, b) values( null, 'abcde' );
+insert into myLongVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into myLongVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+insert into myLongVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into myLongVarChar values( 'abcde', 'abcde', 1 );
+insert into myLongVarChar values( 'abcde', 'abcd', 1 );
+insert into myLongVarChar values( '', 'abcde', 2 );
+insert into myLongVarChar values( 'abcde', null, 1  );
+insert into myLongVarChar values( null, 'abcde', 1 );
+insert into myLongVarChar (c) values( 0 );
+insert into myLongVarChar (c) values( 1 );
+insert into myLongVarChar (c) values( 2 );
+insert into myLongVarChar (a) values( 'hello' );
+insert into myLongVarChar (b) values( 'hello' );
+insert into myLongVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from myLongVarChar;
+select locate(a, b) from myLongVarChar;
+select locate(a, b, c) from myLongVarChar;
+drop table myLongVarChar;
+
+create table myVarChar( a varchar(10), b varchar(20), c int );
+insert into myVarChar (a, b) values( '1234567890', 'abcde1234567890fghij' );
+insert into myVarChar (a, b) values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into myVarChar (a, b) values( 'abcdefghij', '1234567890abcdefghij' );
+insert into myVarChar (a, b) values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into myVarChar (a, b) values( 'abcde', 'abcde' );
+insert into myVarChar (a, b) values( 'abcde', 'abcd' );
+insert into myVarChar (a, b) values( '', 'abcde' );
+insert into myVarChar (a, b) values( 'abcde', null );
+insert into myVarChar (a, b) values( null, 'abcde' );
+insert into myVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into myVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+insert into myVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into myVarChar values( 'abcde', 'abcde', 1 );
+insert into myVarChar values( 'abcde', 'abcd', 1 );
+insert into myVarChar values( '', 'abcde', 2 );
+insert into myVarChar values( 'abcde', null, 1  );
+insert into myVarChar values( null, 'abcde', 1 );
+insert into myVarChar (c) values( 0 );
+insert into myVarChar (c) values( 1 );
+insert into myVarChar (c) values( 2 );
+insert into myVarChar (a) values( 'hello' );
+insert into myVarChar (b) values( 'hello' );
+insert into myVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from myVarChar;
+select locate(a, b) from myVarChar;
+select locate(a, b, c) from myVarChar;
+drop table myVarChar;
+
+-- Negative cases. To match DB2 behaviour
+create table t1 (dt date, tm time, ts timestamp);
+insert into t1 values (current_date, current_time, current_timestamp);
+select locate (dt, ts) from t1;
+select locate (tm, ts) from t1;
+select locate (ts, ts) from t1;
+drop table t1;
+
+values locate('abc', 'dkabc', 1.4);
+values locate('c', 'abcdedf', cast(1 as decimal(2,0)));
+
+-- =========================================================================
+-- These test cases for national character types will fail until 
+-- until a future work around is implemented
+-- =========================================================================
+create table mynChar( a nchar(10), b nchar(20), c int );
+insert into mynChar values( '1234567890', 'abcde1234567890fghij' );
+insert into mynChar values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into mynChar values( 'abcdefghij', '1234567890abcdefghij' );
+insert into mynChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into mynChar values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into mynChar values( 'abcdefghij', 'abcdefghij1234567890', 1  );
+insert into mynChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into mynChar (c) values( 0 );
+insert into mynChar (c) values( 1 );
+insert into mynChar (c) values( 2 );
+insert into mynChar (a) values( 'hello' );
+insert into mynChar (b) values( 'hello' );
+insert into mynChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from mynChar;
+select locate(a, b) from mynChar;
+select locate(a, b, c) from mynChar;
+drop table mynChar;
+
+create table myLongnVarChar( a long nvarchar, b long nvarchar, c int );
+insert into myLongnVarChar values( '1234567890', 'abcde1234567890fghij' );
+insert into myLongnVarChar values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into myLongnVarChar values( 'abcdefghij', '1234567890abcdefghij' );
+insert into myLongnVarChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into myLongnVarChar values( 'abcde', 'abcde' );
+insert into myLongnVarChar values( 'abcde', 'abcd' );
+insert into myLongnVarChar values( '', 'abcde' );
+insert into myLongnVarChar values( 'abcde', null );
+insert into myLongnVarChar values( null, 'abcde' );
+insert into myLongnVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into myLongnVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+insert into myLongnVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into myLongnVarChar values( 'abcde', 'abcde', 1 );
+insert into myLongnVarChar values( 'abcde', 'abcd', 1 );
+insert into myLongnVarChar values( '', 'abcde', 2 );
+insert into myLongnVarChar values( 'abcde', null, 1  );
+insert into myLongnVarChar values( null, 'abcde', 1 );
+insert into myLongnVarChar (c) values( 0 );
+insert into myLongnVarChar (c) values( 1 );
+insert into myLongnVarChar (c) values( 2 );
+insert into myLongnVarChar (a) values( 'hello' );
+insert into myLongnVarChar (b) values( 'hello' );
+insert into myLongnVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from myLongnVarChar;
+select locate(a, b) from myLongnVarChar;
+select locate(a, b, c) from myLongnVarChar;
+drop table myLongnVarChar;
+
+create table mynVarChar( a nvarchar(10), b nvarchar(20), c int );
+insert into mynVarChar values( '1234567890', 'abcde1234567890fghij' );
+insert into mynVarChar values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into mynVarChar values( 'abcdefghij', '1234567890abcdefghij' );
+insert into mynVarChar values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into mynVarChar values( 'abcde', 'abcde' );
+insert into mynVarChar values( 'abcde', 'abcd' );
+insert into mynVarChar values( '', 'abcde' );
+insert into mynVarChar values( 'abcde', null );
+insert into mynVarChar values( null, 'abcde' );
+insert into mynVarChar values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into mynVarChar values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+insert into mynVarChar values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into mynVarChar values( 'abcde', 'abcde', 1 );
+insert into mynVarChar values( 'abcde', 'abcd', 1 );
+insert into mynVarChar values( '', 'abcde', 2 );
+insert into mynVarChar values( 'abcde', null, 1  );
+insert into mynVarChar values( null, 'abcde', 1 );
+insert into mynVarChar (c) values( 0 );
+insert into mynVarChar (c) values( 1 );
+insert into mynVarChar (c) values( 2 );
+insert into mynVarChar (a) values( 'hello' );
+insert into mynVarChar (b) values( 'hello' );
+insert into mynVarChar values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from mynVarChar;
+select locate(a, b) from mynVarChar;
+select locate(a, b, c) from mynVarChar;
+
+create table myMixed( a char(10), b long nvarchar, c int );
+insert into myMixed values( '1234567890', 'abcde1234567890fghij' );
+insert into myMixed values( 'abcdefghij', 'abcdefghij1234567890' );
+insert into myMixed values( 'abcdefghij', '1234567890abcdefghij' );
+insert into myMixed values( 'abcdefghij', '1234567890!@#$%^&*()' );
+insert into myMixed values( '1234567890', 'abcde1234567890fghij', 2 );
+insert into myMixed values( 'abcdefghij', 'abcdefghij1234567890', 1 );
+insert into myMixed values( 'abcdefghij', '1234567890abcdefghij', 15 );
+insert into myMixed (c) values( 0 );
+insert into myMixed (c) values( 1 );
+insert into myMixed (c) values( 2 );
+insert into myMixed (a) values( 'hello' );
+insert into myMixed (b) values( 'hello' );
+insert into myMixed values( 'abcdefghij', '1234567890!@#$%^&*()', 21 );
+select a, b, c from myMixed;
+select locate(a, b) from myMixed;
+select locate(a, b, c) from myMixed;
+drop table myMixed;
+
+create table foo( a int );
+insert into foo select locate(a, b) from mynVarChar;
+insert into foo values( {fn locate('hello', 'hello')} );
+select * from foo;
+drop table foo;
+drop table mynVarChar;
+-- =========================================================================
+
+-- Other types
+create table myBigInt( a bigint, b bigint );
+insert into myBigInt values( 1234, 1234 );
+insert into myBigInt values( 4321, 1234 );
+select locate(a, b) from myBigInt;
+drop table myBigInt;
+
+create table myBit( a char for bit data, b char for bit data );
+insert into myBit values( X'40', X'40' );
+insert into myBit values( X'01', X'40' );
+select locate(a, b) from myBit;
+drop table myBit;
+
+-- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table myDate( a date, b date );
+insert into myDate values( date('1970-01-08'), date('1970-01-08') );
+insert into myDate values( date('1979-08-30'), date('1978-07-28') );
+select locate(a, b) from myDate;
+drop table myDate;
+
+create table myDecimal( a decimal, b decimal );
+insert into myDecimal values( 2.2, 2.2 );
+insert into myDecimal values( 12.23, 3423 );
+select locate(a, b) from myDecimal;
+drop table myDecimal;
+
+create table myDouble( a double precision, b double precision );
+insert into myDouble values( 2.2, 2.2 );
+insert into myDouble values( 12.23, 3423 );
+select locate(a, b) from myDouble;
+drop table myDouble;
+
+create table myInteger(a integer, b integer );
+insert into myInteger values( 2, 2 );
+insert into myInteger values( 123, 3423 );
+select locate(a, b) from myInteger;
+drop table myInteger;
+
+create table mylongvarbinary( a long varchar for bit data, b long varchar for bit data );
+select locate(a, b) from mylongvarbinary;
+drop table mylongvarbinary;
+
+-- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table mytime( a time, b time );
+insert into mytime values( time('10:00:00'), time('10:00:00') );
+insert into mytime values( time('10:00:00'), time('11:00:00') );
+select locate(a, b) from mytime;
+drop table mytime;
+
+-- bug 5794 - LOCATE built-in function is not db2 udb compatible
+create table mytimestamp( a timestamp, b timestamp );
+insert into mytimestamp values( timestamp('1997-01-01 03:03:03'), timestamp('1997-01-01 03:03:03' ));
+insert into mytimestamp values( timestamp('1997-01-01 03:03:03'), timestamp('1997-01-01 04:03:03' ));
+select locate(a, b) from mytimestamp;
+drop table mytimestamp;
+
+-- End of ejbql_locate2.sql test
+
+
+-- This test the EJBQL function, LOCATE. Resolve 3535
+
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+
+-- Begin of LOCATE test
+-- Basic
+
+-- AUTHOR'S NOTE: This test highlights the difference between Oracle8i,
+--    IBM DB2, and Cloudscape.
+
+create table foo( a varchar(10), b varchar(20) );
+insert into foo values( 'abc', 'abcd' );
+insert into foo (a,b) values ( 'ABC', NULL );
+insert into foo (a,b) values ( NULL, 'DEF' );
+insert into foo (a,b) values ( 'ABC', '') ;
+insert into foo (a,b) values ( '', 'DEF' );
+insert into foo (a,b) values ( '', '' );
+insert into foo (a,b) values ( NULL, NULL );
+insert into foo (a,b) values ( 'GHJK', 'GHJ' );
+insert into foo (a,b) values ( 'QWE', 'QWERT' );
+insert into foo (a,b) values ( 'TYUI', 'RTYUI' );
+insert into foo (a,b) values ( 'IOP', 'UIOP[' );
+insert into foo (a,b) values ( 'ZXCV', 'ZXCV' );
+select * from foo;
+select locate(a, b) from foo;
+select locate(a, b, 0) from foo;
+select locate(a, b, -1) from foo;
+select locate(a, b, 1) from foo;
+select locate(a, b, 2) from foo;
+select locate(a, b, 200) from foo;
+
+drop table foo;
+-- End of ejbql_locate3.sql test
+-- This test the EJBQL function, LOCATE. Resolve 3535
+
+-- LOCATE( string1, string2[, start] ) --- string1, searching from the beginning
+--   of string2 }; if start is specified, the search begins from position start.
+--   0 is returned if string2 does not contain string1.  Position1 is the first
+--   character in string2.
+
+-- Begin of LOCATE test
+-- Basic
+
+create table loc( c varchar(20) default null, a int default null, b int default null);
+
+insert into loc (c) values ('This world is crazy' );
+insert into loc (c) values ('nada' );
+insert into loc (b) values ( 3 );
+select * from loc;
+select c, locate( 'crazy', c ) from loc;
+autocommit off;
+
+-- Prepare Statements
+prepare p1 as 'select locate( ''crazy'', c ) from loc';
+execute p1;
+-- first arg ?
+prepare p2 as 'select locate( ?, c ) from loc';
+execute p2 using 'values ( ''crazy'' )';
+execute p2 using 'values ( ''hahah'' )';
+-- second arg ?
+prepare p3 as 'select locate( ''nada'', ? ) from loc';
+execute p3 using 'values ( ''nada'' )';
+execute p3 using 'values ( ''haha'' )';
+-- both first and second arguments ? ?
+prepare p4 as 'select locate( ?, ? ) from loc';
+execute p4 using 'values ( ''dont'', ''match'' )';
+execute p4 using 'values ( ''match'', ''me match me'' )';
+-- thrid arg ?
+prepare p5 as 'select locate( c, c, ? ) from loc';
+execute p5 using 'values ( 1 )';
+execute p5 using 'values ( 2 )';
+-- all args ? ? ?
+prepare p6 as 'select locate( ?, ?, ? ) from loc';
+execute p6 using 'values ( ''hello'', ''no match'', 1 )';
+execute p6 using 'values ( ''match'', ''me match me'', 2 )';
+
+-- Prepare Statements
+prepare p7 as 'select {fn locate( ''crazy'', c )} from loc';
+execute p7;
+-- first arg ?
+prepare p7 as 'select {fn locate( ?, c )} from loc';
+execute p7 using 'values ( ''crazy'' )';
+execute p7 using 'values ( ''hahah'' )';
+-- second arg ?
+prepare p8 as 'select {fn locate( ''nada'', ? )} from loc';
+execute p8 using 'values ( ''nada'' )';
+execute p8 using 'values ( ''haha'' )';
+-- both first and second arguments ? ?
+prepare p9 as 'select {fn locate( ?, ? )} from loc';
+execute p9 using 'values ( ''dont'', ''match'' )';
+execute p9 using 'values ( ''match'', ''me match me'' )';
+-- thrid arg ?
+prepare p10 as 'select {fn locate( c, c, ? )} from loc';
+execute p10 using 'values ( 1 )';
+execute p10 using 'values ( 2 )';
+-- all args ? ? ?
+prepare p11 as 'select {fn locate( ?, ?, ? )} from loc';
+execute p11 using 'values ( ''hello'', ''no match'', 1 )';
+execute p11 using 'values ( ''match'', ''me match me'', 2 )';
+autocommit on;
+
+drop table loc;
+
+-- End of LOCATE test
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.  For all valid types, un-escaped function.
+
+
+-- Real has a range of +/-1.4E-45 to +/-3.4028235E+38
+-- Basic
+create table myreal( a real );
+select sqrt(a) from myreal;
+insert into myreal values (null), (+0), (-0), (+1), (null), (100000000),
+(3.402E+38), (1.175E-37);
+select a from myreal;
+select sqrt(a) from myreal;
+select -sqrt(a) from myreal;
+select sqrt(sqrt(-sqrt(-sqrt(a)))) from myreal;
+SELECT SQRT(SQRT(-SQRT(-SQRT(A)))) FROM MYREAL;
+select sqrt(sqrt(sqrt(sqrt(a)))) from myreal;
+select distinct sqrt(a) from myreal;
+drop table myreal;
+-- End of Real test
+
+
+-- Double Precision has a range of +/-4.9E-324 to +/-1.7976931348623157E+308
+-- Basic
+create table mydoubleprecision( a double precision );
+select sqrt(a) from mydoubleprecision;
+insert into mydoubleprecision values (null), (+0), (-0), (+1), (100000000), (null),
+(1.79769E+308), (2.225E-307);
+select a from mydoubleprecision;
+select sqrt(a) from mydoubleprecision;
+select -sqrt(a) from mydoubleprecision;
+select sqrt(sqrt(-sqrt(-sqrt(a)))) from mydoubleprecision;
+SELECT SQRT(SQRT(-SQRT(-SQRT(A)))) FROM MYDOUBLEPRECISION;
+select sqrt(sqrt(sqrt(sqrt(a)))) from mydoubleprecision;
+select distinct sqrt(a) from mydoubleprecision;
+drop table mydoubleprecision;
+-- End of Double Precision test
+
+
+-- Float has a the range or a java.lang.Float or java.lang.Double depending on
+-- the precision you specify.  Below a is a double, b is a float
+create table myfloat( a float, b float(23) );
+select sqrt(a), sqrt(b) from myfloat;
+select columnname, columndatatype
+from sys.syscolumns c, sys.systables t where c.referenceid = t.tableid and t.tablename='MYFLOAT';
+insert into myfloat values (null, null), (+0, +0), (-0, -0), (+1, +1), (100000000, 100000000), (null, null),
+(1.79769E+308, 3.402E+38),
+(2.225E-307, 1.175E-37);
+select a, b from myfloat;
+select sqrt(a), sqrt(b) from myfloat;
+select -sqrt(a), -sqrt(b) from myfloat;
+select sqrt(sqrt(-sqrt(-sqrt(a)))), sqrt(sqrt(-sqrt(-sqrt(b)))) from myfloat;
+SELECT SQRT(SQRT(-SQRT(-SQRT(A)))), SQRT(SQRT(-SQRT(-SQRT(B)))) FROM MYFLOAT;
+select sqrt(sqrt(sqrt(sqrt(a)))), sqrt(sqrt(sqrt(sqrt(b)))) from myfloat;
+select distinct sqrt(a) from myfloat;
+select distinct sqrt(b) from myfloat;
+drop table myfloat;
+-- End of Float test
+
+
+-- Test some different statements, just in case
+-- beetle 5804 - support FLOAT built-in function
+create table foo( a float );
+insert into foo values ( sqrt(FLOAT( 1)));
+insert into foo values ( sqrt(FLOAT( 2)));
+insert into foo values (-sqrt(FLOAT( 3)));
+insert into foo values (-sqrt(FLOAT( 4)));
+insert into foo values (     (FLOAT(-5)));
+-- this insert should fail
+insert into foo values ( sqrt(FLOAT(-3)));
+
+autocommit off;
+prepare p1 as 'select a from foo';
+prepare p2 as 'insert into foo select a*(-1) from foo';
+execute p1;
+execute p2;
+execute p1;
+insert into foo values ( sqrt(FLOAT( 6)));
+insert into foo values (-sqrt(FLOAT( 7)));
+insert into foo values (-sqrt(FLOAT( 8)));
+insert into foo values ( sqrt(FLOAT( 9)));
+insert into foo values (     (FLOAT(10)));
+-- few negative tests
+-- insert should fail
+insert into foo values ( sqrt(FLOAT(-7)));
+prepare p3 as 'select sqrt(a) from foo';
+-- executing p3 should fail
+execute p3;
+
+-- these should pass
+execute p1;
+execute p2;
+execute p1;
+rollback;
+commit;
+
+autocommit on;
+insert into foo values ( sqrt(FLOAT( 11)));
+insert into foo values (-sqrt(FLOAT( 12)));
+insert into foo values (-sqrt(FLOAT( 13)));
+insert into foo values (-sqrt(FLOAT( 14)));
+insert into foo values (     (FLOAT( 15)));
+-- these 2 inserts should fail
+insert into foo values (-sqrt(FLOAT(-12)));
+insert into foo values ( sqrt(FLOAT(-13)));
+
+-- these should pass
+autocommit off;
+execute p1;
+execute p3;
+execute p1;
+-- executing p2 should fail
+execute p2;
+
+autocommit on;
+select * from foo;
+drop table foo;
+-- End of SQRT test.  For all valid types.  Un-escaped function.
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.
+
+
+-- Integer, Smallint, Bigint, Decimal
+create table myint( a int );
+create table myinteger( a Integer );
+select sqrt(a) from myint;
+select sqrt(a) from myinteger;
+drop table myint;
+drop table myinteger;
+
+create table mysmallint( a smallint );
+select sqrt(a) from mysmallint;
+drop table mysmallint;
+
+create table mybigint( a bigint );
+select sqrt(a) from mybigint;
+drop table mybigint;
+
+create table mydecimal( a decimal );
+select sqrt(a) from mydecimal;
+drop table mydecimal;
+
+
+-- For escape function.
+
+
+-- Integer
+-- Basic
+values{ fn sqrt(INT('0'))};
+
+-- Smallint
+-- Basic
+-- beetle 5805 - support INT[EGER] built-in function
+values{ fn sqrt(SMALLINT('0'))};
+
+-- Bigint
+-- Basic
+-- beetle 5809 - support BIGINT built-in function
+values{ fn sqrt(BIGINT('0'))};
+
+-- Real
+-- Basic
+-- beetle 5806 - support REAL built-in function
+values{fn sqrt( REAL( 0)                       )};
+values{fn sqrt( REAL(-0)                       )};
+values{fn sqrt( REAL( 1)                       )};
+values{fn sqrt( REAL(-1)                       )};
+values{fn sqrt( REAL( 1000000.001)             )};
+values{fn sqrt( REAL(-1000000.001)             )};
+values{fn sqrt( REAL( 3.402E+38)               )};
+values{fn sqrt( REAL(-3.402E+38) + 1           )};
+-- Error
+values{fn sqrt( REAL( 3.402E+38 * 2)           )};
+values{fn sqrt(-REAL( NaN)                     )};
+values{fn sqrt( REAL( 1.40129846432481707e-45) )};
+values{fn sqrt( REAL( 3.40282346638528860e+38) )};
+
+-- Double Precision/Double
+-- Basic
+-- beetle 5803 - support DOUBLE_[PRECISION] built-in function
+values{fn  sqrt( DOUBLE( 0)                      )};
+values{fn  sqrt( DOUBLE(-0)                      )};
+values{fn  sqrt( DOUBLE( 1)                      )};
+values{fn -sqrt( DOUBLE(1)                       )};
+values{fn  sqrt( DOUBLE( 1000000.001)            )};
+values{fn -sqrt( DOUBLE(1000000.001)             )};
+values{fn -sqrt( DOUBLE(1.79769E+308)            )};
+values{fn  sqrt( DOUBLE( 1.79769E+308) + 1       )};
+values{fn  sqrt( DOUBLE( 2.225E-307 + 1)         )};
+-- Error
+values{fn  sqrt( DOUBLE(-1)                      )};
+values{fn  sqrt( DOUBLE(-1000000.001)            )};
+values{fn  sqrt( DOUBLE(-1.79769E+308)           )};
+values{fn  sqrt( DOUBLE( 1.79769E+308 * 2)       )};
+values{fn  sqrt(-DOUBLE( NaN)                    )};
+values{fn  sqrt( DOUBLE( 4.9E-324)               )};
+values{fn  sqrt( DOUBLE( 1.7976931348623157E308) )};
+
+-- Decimal/Numeric
+-- Basic
+-- beetle 5802 - support DEC[IMAL] built-in function
+values{ fn sqrt(DEC('0'))};
+
+-- More generic test
+values{ fn sqrt( 0+1+.1 ) };
+values{ fn sqrt( +0+1.000000001 ) };
+VALUES{ FN sqrt( 100+200+300 ) };
+values{ fn sqrt( 0-1-.1 ) };
+values{ fn sqrt( -0-1.000000001 ) };
+VALUES{ FN sqrt( 100-200-300 ) };
+
+-- Error
+values{ fn sqrt('null') };
+
+-- sqrt as a keyword
+create table sqrt( a int );
+
+-- End of SQRT test.
+-- This test EJBQL Sqrt function. Resolve 3535
+-- Begin of SQRT test.  For all valid types, un-escaped function.
+
+create table myreal( a real );
+select sqrt(a) from myreal;
+insert into myreal values ( 3.402E+38 );
+select a from myreal;
+
+-- Prepare Statements, should pass
+-- beetle 5806 - support REAL built-in function
+autocommit off;
+prepare p1 as 'select a from myreal where ? <> 1';
+execute p1 using 'values  sqrt(REAL( 0 ))';
+execute p1 using 'values -sqrt(REAL( 20))';
+execute p1 using 'values  sqrt(REAL( 20))';
+-- this should fail
+execute p1 using 'values  sqrt(REAL(-20))';
+
+-- Prepare Statements, should pass
+-- beetle 5806 - support REAL built-in function
+prepare p2 as 'select a from myreal where ? <> 1';
+execute p2 using 'values {fn sqrt (REAL( 0 ))}';
+execute p2 using 'values {fn -sqrt(REAL( 20))}';
+execute p2 using 'values {fn sqrt (REAL( 20))}';
+-- this should fail
+execute p2 using 'values {fn  sqrt(REAL(-20))}';
+autocommit on;
+
+-- mod function
+create table modfn(s smallint, i int, b bigint, c char(10), d decimal(6,3), r real, dbl double);
+insert into modfn values(0, 0, 0, '0', 0.0, 0.0, 0.0);
+insert into modfn values(5, 5, 5, '5', 5.0, 5.0, 5.0);
+insert into modfn values(null, null, null, null, null, null, null);
+select { fn mod(s, 3) } from modfn;
+select { fn mod(i, 3) } from modfn;
+select { fn mod(b, 3) } from modfn;
+select { fn mod(c, 3) } from modfn;
+select { fn mod(d, 3) } from modfn;
+select { fn mod(r, 3) } from modfn;
+select { fn mod(dbl, 3) } from modfn;
+select { fn mod(67, t) } from modfn where s <> 0;
+select { fn mod(67, s) } from modfn where s <> 0;
+select { fn mod(67, i) } from modfn where s <> 0;
+select { fn mod(67, b) } from modfn where s <> 0;
+select { fn mod(67, c) } from modfn where s <> 0;
+select { fn mod(67, d) } from modfn where s <> 0;
+select { fn mod(67, r) } from modfn where s <> 0;
+select { fn mod(67, dbl) } from modfn where s <> 0;
+select { fn mod(s, s) } from modfn where s = 0;
+select { fn mod(i, i) } from modfn where s = 0;
+select { fn mod(i, b) } from modfn where s = 0;
+select { fn mod(s, s) } from modfn where s is null;
+select { fn mod(i, i) } from modfn where s is null;
+select { fn mod(i, b) } from modfn where s is null;
+
+select { fn mod(67, i) } from modfn where i <> 0;
+select { fn mod(67, b) } from modfn where b <> 0;
+-- this query should fail because of incompatible arguments
+select { fn mod('rrrr', b) } from modfn  where b <> 0;
+
+values { fn mod(23, 9)};
+values mod(23, 9);
+
+create table mod(mod int);
+insert into mod values(1);
+select mod from mod;
+select mod(mod,mod) from mod;
+drop table mod;
+
+drop table modfn;
+
+-- Using Strings in escape function
+create table myStr( a varchar(10) );
+insert into myStr values ( '123' );
+insert into myStr values ( ' 123' );
+insert into myStr values ( ' 12 ' );
+insert into myStr values ( '  2 ' );
+insert into myStr values ( '1a3' );
+select * from myStr;
+select sqrt(a) from myStr;
+select {fn sqrt(a)} from myStr;
+select {fn sqrt( '-12' ) } from myStr;
+select {fn sqrt( '-1a2' ) } from myStr;
+
+drop table myreal;
+drop table myStr;
+-- End of SQRT test
+
+-- CHAR AND VARCHAR 
+--
+-- create some tables
+create table t1 (c15a char(15), c15b char(15), vc15a varchar(15),
+	vc15b varchar(15), lvc long varchar);
+create table t2 (c20 char(20), c30 char(30), c40 char(40),
+				 vc20 varchar(20), vc30 varchar(30), vc40 varchar(40),
+				lvc long varchar);
+
+-- populate the tables
+insert into t1 (c15a) values(null);
+insert into t1 values('1', '2', '3', '4', '5');
+insert into t1 values('111111', '222222222222222', 
+					  '333333', '444444444444444',
+					'555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555');
+insert into t1 values('555555    ', '66          ', 
+					  '777777    ', '88          ',
+					'99999999999999999999999999999999999999999999999999999999999999999999999999999999999                                                                     ');
+
+-- negative tests
+
+-- mixing char and bit (illegal)
+values X'11' || 'asdf';
+values 'adsf' || X'11';
+
+-- ? parameter on both sides
+values ? || ?;
+
+-- simple positive
+values 'aaa' || 'bbb';
+values X'aaaa' || X'bbbb';
+
+-- non-blank truncation error on char result
+insert into t2 (c20) select c15a || c15b from t1 where c15a = '111111';
+insert into t2 (vc20) select vc15a || vc15b from t1 where c15a= '111111';
+insert into t2 (c20) select lvc || lvc from t1 where c15a = '111111';
+
+maximumdisplaywidth 512;
+
+-- positive tests
+-- blank truncation on varchar
+insert into t2 (c20) select vc15a || vc15b from t1 where c15a = '555555    ';
+select c20 from t2;
+delete from t2;
+
+-- no blank truncation on char
+insert into t2 (c30) select c15a || c15b from t1 where c15a = '555555    ';
+select c30 from t2;
+delete from t2;
+
+-- long varchar
+insert into t2 (c30) select lvc || lvc from t1 where c15a = '1';
+select c30 from t2;
+delete from t2;
+
+-- vc || c -> vc
+insert into t2 (c30) select vc15a || c15a from t1 where c15a = '555555    ';
+select c30 from t2;
+delete from t2;
+
+-- c || vc -> vc
+insert into t2 (c30) select c15a || vc15a || '9' from t1 where c15a = '555555    ';
+select c30 from t2;
+delete from t2;
+
+-- vc || c -> lvc
+insert into t2 (lvc) select c15a || vc15a from t1 where c15a = '555555    ';
+select lvc from t2;
+select length(lvc) from t2;
+delete from t2;
+
+-- lvc || lvc - > lvc
+insert into t2 (lvc) select lvc || lvc from t1;
+select lvc from t2;
+delete from t2;
+
+-- Parameters can be used in DB2 UDB if one operand is either CHAR(n) or VARCHAR(n), 
+-- where n is less than 128, then other is VARCHAR(254 - n). 
+-- In all other cases the data type is VARCHAR(254).
+autocommit off;
+-- ? || c
+prepare pc as 'select ? || c15a from t1';
+
+execute pc using 'values (''left'')';
+
+-- c || ?
+prepare cp as 'select c15a || ? from t1';
+
+execute cp using 'values (''right'')';
+
+-- ? || v
+prepare pv as 'select ? || vc15a from t1';
+
+execute pv using 'values (''left'')';
+
+-- v || ?
+prepare vp as 'select vc15a || ? from t1';
+
+execute vp using 'values (''right'')';
+
+-- Parameters cannot be used in DB2 UDB 
+-- if one operand is a long varchar [for bit data] data type. 
+-- An invalid parameter marker error is thrown in DB2 UDB (SQLSTATE 42610).
+
+-- lvc || ?
+prepare lvp as 'select lvc || ? from t1';
+
+execute lvp using 'values (''right'')';
+
+-- ? || lvc
+prepare plv as 'select ? || lvc from t1';
+
+execute plv using 'values (''left'')';
+autocommit on;
+
+-- multiple concatenations
+insert into t2 (c30, vc30) values ('111  ' || '222  ' || '333   ',
+								   '444  ' || '555  ' || '666   ');
+select c30, vc30 from t2;
+delete from t2;
+
+-- concatenation on a long varchar
+create table t3 (c1 long varchar, c2 long varchar);
+insert into t3 values ('c1   ', 'c2');
+insert into t2 (c30, vc30) select t3.c1 || t3.c2, t3.c2 || t3.c1 from t3;
+select c30, vc30 from t2;
+delete from t2;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table t3;
+
+------------------------------------------------------------------------------------
+-- CHAR (n) FOR BIT DATA AND VARCHAR (n) FOR BIT DATA
+
+-- try some cases zero length cases
+values X''|| X'80';
+values X'01'|| X'';
+
+-- create some tables
+
+
+create table t1 (b16a char(2) for bit data, b16b char(2) for bit data, vb16a varchar(2) for bit data, vb16b varchar(2) for bit data, lbv long varchar for bit data);
+create table t2 (b20 char(3) for bit data, b60 char(8) for bit data, b80 char(10) for bit data,
+				 vb20 varchar(3) for bit data, vb60 varchar(8) for bit data, vb80 varchar(10) for bit data, lbv long varchar for bit data);
+
+-- populate the tables
+insert into t1 (b16a) values(null);
+insert into t1 values(X'11', X'22', X'33', X'44', X'55');
+insert into t1 values(X'1111', X'2222', 
+					  X'3333', X'4444',
+					  X'5555');
+insert into t1 values(X'5555', X'66', 
+					  X'7777', X'88',
+					  X'9999');
+
+-- negative tests
+
+-- non-blank truncation error on bit result
+insert into t2 (b20) select b16a || b16b from t1 where b16a = X'1111';
+insert into t2 (vb20) select vb16a || vb16b from t1 where b16a= X'1111';
+
+-- positive tests
+-- truncation on bit varying
+insert into t2 (b20) select vb16a || vb16b from t1 where b16a = X'5555';
+select b20 from t2;
+delete from t2;
+
+-- bc || b -> vb
+insert into t2 (b80) select vb16a || b16a from t1 where b16a = X'5555';
+select b80 from t2;
+delete from t2;
+
+-- b || vb -> vb
+insert into t2 (b80) select b16a || vb16a || X'99' from t1 where b16a = X'5555';
+select b80 from t2;
+delete from t2;
+
+-- b || lbv -> lbv
+insert into t2 (lbv) select b16a || lbv from t1 where b16a = X'5555';
+select lbv from t2;
+delete from t2;
+
+-- lbv || b -> lbv
+insert into t2 (lbv) select lbv || b16a from t1 where b16a = X'5555';
+select lbv from t2;
+delete from t2;
+
+-- vb || lbv -> lbv
+insert into t2 (lbv) select vb16a || lbv from t1 where b16a = X'5555';
+select lbv from t2;
+delete from t2;
+
+-- lbv || vb -> lbv
+insert into t2 (lbv) select lbv || vb16a from t1 where b16a = X'5555';
+select lbv from t2;
+delete from t2;
+
+-- Parameters can be used in DB2 UDB 
+-- if one operand is either CHAR(n) [for bit data] or VARCHAR(n) [for bit data], 
+-- where n is less than 128, then other is VARCHAR(254 - n). 
+-- In all other cases the data type is VARCHAR(254).
+autocommit off;
+
+-- ? || b
+prepare pb as 'select ? || b16a from t1';
+
+execute pb using 'values (X''ABCD'')';
+
+-- b || ?
+prepare bp as 'select b16a || ? from t1';
+
+execute bp using 'values (X''ABCD'')';
+
+-- ? || vb
+prepare pvb as 'select ? || vb16a from t1';
+
+execute pvb using 'values (X''ABCD'')';
+
+-- vb || ?
+prepare vbp as 'select vb16a || ? from t1';
+
+execute vbp using 'values (X''ABCD'')';
+
+-- Parameters cannot be used in DB2 UDB 
+-- if one operand is a long varchar [for bit data] data type. 
+-- An invalid parameter marker error is thrown in DB2 UDB (SQLSTATE 42610).
+
+-- ? || lbv
+prepare plbv as 'select ? || lbv from t1';
+
+execute plbv using 'values (X''ABCD'')';
+
+-- lbv || ?
+prepare lbvp as 'select lbv || ? from t1';
+
+execute lbvp using 'values (X''ABCD'')';
+autocommit on;
+
+-- multiple concatenations
+insert into t2 (b80, vb80, lbv) values (X'e0' || X'A0' || X'20',
+								   X'10' || X'11' || X'e0',
+								   X'1234' || X'A0' || X'20');
+select b80, vb80, lbv from t2;
+delete from t2;
+
+-- concatenation on a byte
+create table t3 (b1 char(1) for bit data, b2 char(1) for bit data);
+insert into t3 values (X'11', X'22');
+insert into t2 (b80, vb80) select t3.b1 || t3.b2, t3.b2 || t3.b1 from t3;
+select b80, vb80 from t2;
+delete from t2;
+
+-- clean up the prepared statements
+remove pc;
+remove cp;
+remove vp;
+remove pv;
+remove pb;
+remove bp;
+remove pvb;
+remove vbp;
+remove lvp;
+remove plv;
+remove plbv;
+remove lbvp;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table t3;
+-- reset maximumdisplaywidth
+maximumdisplaywidth 128;
+--
+--
+-- the like tests are all run through the unit test
+-- mechanism that is fired off with this test's
+-- properties file.  that test tests all the %, _ combinations
+-- to exhaustion.
+--
+-- we show that the language level support works, here, which is:
+-- the syntax
+-- char and varchar columns
+-- not can be applied and pushed around with it
+-- parameters (would need to be .java to show completely...)
+-- not other types of columns
+--
+
+create table t (c char(20), v varchar(20), lvc long varchar);
+insert into t values('hello','world', 'nice day, huh?');
+insert into t values('goodbye','planet', 'see you later');
+insert into t values('aloha','orb', 'hang loose');
+
+-- subquery on left side
+select * from t where (select max(c) from t) like '%';
+
+select * from t where c like 'h%';
+select * from t where v like '%or%';
+select * from t where lvc like '%y%';
+
+-- these four should all have the same results:
+select * from t where not v like '%or%';
+select * from t where not (v like '%or%');
+select * from t where 1=0 or not v like '%or%';
+select * from t where not (1=0 or not v not like '%or%');
+
+-- these two should have the same results:
+select * from t where c like '%lo%' or v like '%o%';
+select * from t where v like '%o%' or c like '%lo%';
+
+-- these three should have the same results:
+select * from t where c like '%lo%' and 0=0;
+select * from t where c like '%lo%' and 1=1;
+select * from t where 1=1 and c like '%lo%';
+
+-- we can at least show the parameters compile...
+autocommit off;
+prepare s as 'select * from t where v like ?';
+execute s;
+prepare s as 'select * from t where ? like ?';
+execute s;
+prepare s as 'select * from t where c like ?';
+execute s;
+prepare s as 'select * from t where lvc like ?';
+execute s;
+prepare s as 'select * from t where lvc like ?';
+execute s;
+autocommit on;
+
+create table n (i int, r real, d date, u char(10));
+
+-- these should succeed
+insert into n values (1, 1.1, date('1111-11-11'), '%');
+insert into n values (2, 2.2, date('2222-2-2'), 'haha');
+select * from n where u like 'haha______';
+
+-- now, with an index
+create table m (i int, r real, d date, u varchar(10));
+insert into m select * from n;
+select * from m where u like 'haha';
+select * from m where u like 'haha______';
+create index i1 on m(u);
+select * from m where u like 'haha';
+select * from m where u like 'haha______';
+
+-- tests for column like constant optimization
+create table u (c char(10), vc varchar(10));
+insert into u values ('hello', 'hello');
+select * from u where c like 'hello';
+select * from u where vc like 'hello';
+select * from u where c like 'hello     ';
+select * from u where vc like 'hello     ';
+
+-- cleanup
+drop table t;
+drop table n;
+drop table m;
+drop table u;
+
+-- testing JDBC escaped length function
+-- JDBC length is defined as the number of characters in a string without trailing blanks.
+values {FN LENGTH('hello     ') };
+values {FN LENGTH(rtrim('hello     ')) };
+
+-- defect 5749. rtrim() over substr() used to raise ASSERT failure.
+create table t1 (c1 char(10));
+insert into t1 values ('testing');
+select rtrim(substr(' asdf', 1, 3)) from t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+#
+# only copied this from default_app.properties to specify no run with j9
+# for this test runs into a jvm crash especially when run in sps mode. see beetle 4874.
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_nonSPS.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ejbql_nonSPS.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,40 @@
+-- this file contains any ejbql tests which produce an error which
+-- includes a column number. The column number will change for SPS tests
+-- so these tests can't be included in allAsSPS
+
+-- absolute is not a reserved word any more
+create table absolute( a int );
+
+values{ fn abs( NULL ) };
+values{ fn abs( null ) };
+values{ fn abs( ) };
+
+-- Error
+values{ fn concat( ) };
+values{ fn concat( 'error0' ) };
+values  fn concat( 'syntax', ' error1' );
+values{ fn concat { 'syntax', ' error2' }};
+values{ fn concat( 'syntax', ' error3' });
+values{ fn concat( fn concat( 'nested', ' not ' ), ' allowed!' ) };
+values{ fn concat( values{ fn concat( 'nested', ' not ' ) }, ' allowed!' ) };
+
+values{ fn locate( null, null ) };
+values{ fn locate( null, ''   ) };
+values{ fn locate( '', null   ) };
+
+values{ fn locate( null, null,1) };
+values{ fn locate( null, ''  ,1) };
+values{ fn locate( '', null  ,1) };
+
+values{ fn sqrt( NULL ) };
+values{ fn sqrt( null ) };
+values{ fn sqrt( ) };
+
+-- Substring tests. Valid only as escaped function
+values substring('asdf', 1);
+values substring(X'101101', 3);
+values substring('asdf', 1, 2);
+
+values {fn substring('asdf', 1)};
+values {fn substring(X'101101', 3)};
+values {fn substring('asdf', 1, 2)};

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,47 @@
+--
+-- this test shows the error code functionality
+--
+
+-- specify an invalid driver
+driver 'java.lang.Integer';
+
+-- now a valid driver
+driver 'org.apache.derby.jdbc.EmbeddedDriver';
+
+-- specify an invalid database
+connect 'asdfasdf';
+
+-- now a valid database, but no create
+connect 'jdbc:derby:wombat';
+
+-- now a valid database
+connect 'jdbc:derby:wombat;create=true';
+
+
+-- create the table
+create table t(i int, s smallint);
+
+-- populate the table
+insert into t values (1,2);
+insert into t values (null,2);
+
+-- parser error
+-- bug 5701
+create table t(i nt, s smallint);
+
+-- non-boolean where clause
+select * from t where i;
+
+-- invalid correlation name for "*"
+select asdf.* from t; 
+
+-- execution time error
+select i/0 from t;
+
+-- test ErrorMessages VTI
+select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '07000';
+select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '22012';
+select * from new org.apache.derby.diag.ErrorMessages() c where sql_state = '42X74';
+
+-- cleanup
+drop table t;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/errorCode_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4 @@
+ij.showErrorCode=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,770 @@
+-- ** insert fkBulkInsert.sql
+--
+-- test foreign key checking.  first
+-- check that we do proper checking.
+-- then make sure that dependencies interact
+-- correctly with foreign keys
+
+CREATE PROCEDURE WAIT_FOR_POST_COMMIT() DYNAMIC RESULT SETS 0 LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.T_Access.waitForPostCommitToFinish' PARAMETER STYLE JAVA;
+
+create table p (c1 char(1), y int not null, c2 char(1), x int not null, constraint pk primary key (x,y));
+create table f (x int not null, s smallint, y int not null, constraint fk foreign key (x,y) references p);
+
+insert into p values ('1',1,'1',1);
+
+-- should pass, foreign key constraint satisfied
+insert into f 
+values 
+	(1,1,1),
+	(1,1,1),
+	(1,1,1),	
+	(1,1,1),
+	(1, 0, 1),
+	(1,1,1),
+	(1,0,1),
+	(1, 0, 1);
+
+-- should FAIL, foreign key constraint violated
+delete from f;
+insert into f 
+values 
+	(1,1,1),
+	(1,1,1),
+	(1,1,1),	
+	(1,1,1),
+	(1, 1, 1),
+	(2,1,666),
+	(1,1,0),
+	(0, 1, 0);
+
+drop table f;
+CALL WAIT_FOR_POST_COMMIT();
+ 
+-- make sure boundary conditions are ok, null insert set
+create table f (c1 char(1), y int, c2 char(1), x int, constraint fk foreign key (x,y) references p);
+insert into f 
+	select * from p where 1 = 2;
+
+drop table f;
+drop table p;
+CALL WAIT_FOR_POST_COMMIT();
+ 
+
+-- self referencing
+create table s (x int not null primary key, y int references s, z int references s);
+
+-- ok
+insert into s 
+values 
+	(1,1,1),
+	(2,1,1),
+	(10,2,1),	
+	(11,1,2),
+	(12,4,4),
+	(4,1,1),
+	(13,null,null),
+	(14,1,2),
+	(15,null, 1);
+
+delete from s;
+
+-- bad
+insert into s 
+values 
+	(1,1,1),
+	(2,1,1),
+	(10,2,1),	
+	(11,1,2),
+	(12,4,4),
+	(4,1,1),
+	(13,null,null),
+	(14,1,2),
+	(15,666, 1);
+
+-- now a test for depenencies.
+-- the insert will create new index conglomerate numbers,
+-- so we want to test that a statement with a constraint
+-- check that is dependent on the conglomerate number that
+-- is being changed is invalidated
+
+create table x (x int not null, y int, constraint pk primary key (x));
+create table y (x int , y int, constraint fk foreign key (x) references x);
+prepare ix as 
+	'insert into x 
+	values
+		(0,0),
+		(1,1),
+		(2,2)';
+
+prepare ix2 as 
+	'insert into x 
+	values
+		(3,3),
+		(4,4)';
+
+prepare iy as 
+	'insert into y 
+	values
+		(0,0),
+		(1,1),
+		(2,2)';
+
+prepare dy as 'delete from y where x = 1';
+prepare dx as 'delete from x where x = 1';
+
+execute ix;
+
+autocommit off;
+commit;
+
+-- ok
+execute dy;
+
+-- ok
+execute dx;
+
+-- will fail, no key 1 in x
+execute iy;
+
+rollback;
+commit;
+
+execute iy;
+execute dy;
+execute dx;
+
+remove ix;
+remove ix2;
+remove iy;
+remove dy;
+remove dx;
+
+drop table y;
+drop table x;
+drop table s;
+autocommit on;
+CALL WAIT_FOR_POST_COMMIT();
+ 
+-- ** insert fkddl.sql
+-- simple syntax checks
+-- column constraint
+create table p1 (x int not null, constraint pk1 primary key(x));
+
+create table u1 (x int not null unique);
+
+-- table constraint
+create table p2 (x int not null, y dec(5,2) not null, constraint pk2 primary key (x,y));
+
+create table u2 (x int not null, y dec(5,2) not null, constraint uk2 unique (x,y));
+
+create table p3 (x char(10) not null, constraint pk3 primary key (x));
+
+-- for future use
+create schema otherschema;
+create table otherschema.p1 (x int not null primary key);
+
+
+-- 
+-- Negative test cases for foreign key TABLE
+-- constraints
+--
+
+-- negative: fk table, no table
+create table f (x int, constraint fk foreign key (x) references notthere);
+
+-- negative: fk table, bad column
+create table f (x int, constraint fk foreign key (x) references p1(notthere));
+
+-- negative: fk table, no constraint
+create table f (x int, constraint fk foreign key (x) references p2(y));
+
+-- negative: fk table, wrong type
+create table f (x smallint, constraint fk foreign key (x) references p1(x));
+
+-- negative: cannot reference a system table
+create table f (x char(36), constraint fk foreign key (x) references sys.sysforeignkeys(constraintid));
+
+-- negative: bad schema
+create table f (x char(36), constraint fk foreign key (x) references badschema.x);
+
+-- negative: bad column list
+create table f (x dec(5,2), y int, constraint fk foreign key (x,z) references p2(x,y));
+
+-- negative: wrong number of columns
+create table f (x dec(5,2), y int, constraint fk foreign key (x) references p2(x,y));
+create table f (x dec(5,2), y int, constraint fk foreign key (x,y) references p2(x));
+
+
+-- 
+-- Negative test cases for foreign key COLUMN
+-- constraints
+--
+
+-- negative: fk column, no table
+create table f (x int references notthere);
+
+-- negative: fk column, bad column
+create table f (x int references p1(notthere));
+
+-- negative: fk column, no constraint
+create table f (x int references p2(y));
+
+-- negative: fk column, wrong type
+create table f (x smallint references p1(x));
+
+-- negative: cannot reference a system table
+create table f (x char(36) references sys.sysforeignkeys(constraintid));
+
+-- negative: bad schema
+create table f (x char(36) references badschema.x);
+
+
+--
+-- Some type checks.  Types must match exactly
+--
+
+-- ok
+create table f (d dec(5,2), i int, constraint fk foreign key (i,d) references p2(x,y));
+drop table f;
+CALL WAIT_FOR_POST_COMMIT();
+create table f (i int, d dec(5,2), constraint fk foreign key (i,d) references p2(x,y));
+drop table f;
+CALL WAIT_FOR_POST_COMMIT(); 
+
+create table f (d dec(5,2), i int, constraint fk foreign key (i,d) references u2(x,y));
+drop table f;
+CALL WAIT_FOR_POST_COMMIT();
+create table f (i int, d dec(5,2), constraint fk foreign key (i,d) references u2(x,y));
+drop table f;
+CALL WAIT_FOR_POST_COMMIT();
+create table f (c char(10) references p3(x));
+drop table f;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- type mismatch
+create table f (i int, d dec(5,1), constraint fk foreign key (i,d) references p2(x,y));
+create table f (i int, d dec(4,2), constraint fk foreign key (i,d) references p2(x,y));
+create table f (i int, d dec(4,2), constraint fk foreign key (i,d) references p2(x,y));
+create table f (i int, d numeric(5,2), constraint fk foreign key (i,d) references p2(x,y));
+create table f (c char(11) references p3(x));
+create table f (c varchar(10) references p3(x));
+
+-- wrong order
+create table f (d dec(5,2), i int, constraint fk foreign key (d,i) references p2(x,y));
+
+
+-- check system tables 
+create table f (x int, constraint fk foreign key (x) references p1);
+select constraintname, referencecount 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.keyconstraintid = c.constraintid order by constraintname;
+
+create table f2 (x int, constraint fk2 foreign key (x) references p1(x));
+create table f3 (x int, constraint fk3 foreign key (x) references p1(x));
+create table f4 (x int, constraint fk4 foreign key (x) references p1(x));
+
+select distinct constraintname, referencecount 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.keyconstraintid = c.constraintid order by constraintname;
+
+select constraintname 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.constraintid = c.constraintid
+	order by 1;
+
+-- we should not be able to drop the primary key 
+alter table p1 drop constraint pk1;
+drop table p1;
+CALL WAIT_FOR_POST_COMMIT();
+-- now lets drop the foreign keys and try again
+drop table f2;
+drop table f3;
+drop table f4;
+CALL WAIT_FOR_POST_COMMIT();
+
+select constraintname, referencecount 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.keyconstraintid = c.constraintid order by constraintname;
+
+alter table f drop constraint fk;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- ok
+alter table p1 drop constraint pk1;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- we shouldn't be able to add an fk on p1 now
+alter table f add constraint fk foreign key (x) references p1;
+
+-- add the constraint and try again
+alter table p1 add constraint pk1 primary key (x);
+
+create table f2 (x int, constraint fk2 foreign key (x) references p1(x));
+create table f3 (x int, constraint fk3 foreign key (x) references p1(x));
+create table f4 (x int, constraint fk4 foreign key (x) references p1(x));
+
+-- drop constraint
+alter table f4 drop constraint fk4;
+alter table f3 drop constraint fk3;
+alter table f2 drop constraint fk2;
+alter table p1 drop constraint pk1;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- all fks are gone, right?
+select constraintname 
+	from sys.sysconstraints c, sys.sysforeignkeys fk
+	where fk.constraintid = c.constraintid order by constraintname;
+
+-- cleanup what we have done so far
+drop table p1;
+drop table p2;
+drop table u1;
+drop table u2;
+drop table otherschema.p1;
+drop schema otherschema restrict;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- will return dependencies for SPS metadata queries now created by default 
+-- database is created.
+create table default_sysdepends_count(a int);
+
+insert into default_sysdepends_count select count(*) from sys.sysdepends;
+select * from default_sysdepends_count;
+
+-- 
+-- now we are going to do some self referencing
+-- tests.
+-- 
+create table selfref (p char(10) not null primary key, 
+		f char(10) references selfref);
+drop table selfref;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- ok
+create table selfref (p char(10) not null, 
+		f char(10) references selfref, 
+		constraint pk primary key (p));
+drop table selfref;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- ok
+create table selfref (p char(10) not null, f char(10), 
+		constraint f foreign key (f) references selfref(p), 
+		constraint pk primary key (p));
+
+-- should fail
+alter table selfref drop constraint pk;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- ok
+alter table selfref drop constraint f;
+alter table selfref drop constraint pk;
+drop table selfref;
+CALL WAIT_FOR_POST_COMMIT();
+
+
+-- what if a pk references another pk?  should just
+-- drop the direct references (nothing special, really)
+create table pr1(x int not null, 
+		constraint pkr1 primary key (x));
+create table pr2(x int not null, 
+		constraint pkr2 primary key(x), 
+		constraint fpkr2 foreign key (x) references pr1);
+create table pr3(x int not null, 
+		constraint pkr3 primary key(x), 
+		constraint fpkr3 foreign key (x) references pr2);
+select constraintname, referencecount from sys.sysconstraints order by constraintname;
+
+-- now drop constraint pkr1
+alter table pr2 drop constraint fpkr2;
+alter table pr1 drop constraint pkr1;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- pkr1 and pfkr2 are gone
+select constraintname, referencecount from sys.sysconstraints order by constraintname;
+
+-- cleanup
+drop table pr3;
+drop table pr2;
+drop table pr1;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- should return 0, confirm no unexpected dependencies
+-- verify that all rows in sys.sysdepends got dropped 
+-- apart from sps dependencies
+create table default_sysdepends_count2(a int);
+insert into default_sysdepends_count2 select count(*) from sys.sysdepends;
+select default_sysdepends_count2.a - default_sysdepends_count.a
+    from default_sysdepends_count2, default_sysdepends_count;
+
+-- dependencies and spses
+create table x (x int not null primary key, y int, constraint xfk foreign key (y) references x);
+create table y (x int, constraint yfk foreign key (x) references x);
+prepare ss as 'select * from x';
+prepare si as 'insert into x values (1,1)';
+prepare su as 'update x set x = x+1, y=y+1';
+
+alter table x drop constraint xfk;
+CALL WAIT_FOR_POST_COMMIT();
+
+autocommit off;
+
+-- drop the referenced fk, should force su to be recompiled
+-- since it no longer has to check the foreign key table
+alter table y drop constraint yfk;
+commit;
+CALL WAIT_FOR_POST_COMMIT();
+
+drop table y;
+commit;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- ok
+drop table x;
+
+remove ss;
+remove si;
+remove su;
+
+drop table f3;
+drop table f2;
+drop table f;
+commit;
+CALL WAIT_FOR_POST_COMMIT();
+
+-- verify that all rows in sys.sysdepends got dropped 
+-- apart from sps dependencies
+-- Since, with beetle 5352; we create metadata SPS for network server at database bootup time
+-- so the dependencies for SPS are there.
+ 
+create table default_sysdepends_count3(a int);
+insert into default_sysdepends_count3 select count(*) from sys.sysdepends;
+select default_sysdepends_count3.a - default_sysdepends_count.a
+    from default_sysdepends_count3, default_sysdepends_count;
+
+-- ** insert fkdml.sql
+autocommit on;
+--
+-- DML and foreign keys
+--
+drop table s;
+drop table f3;
+drop table f2;
+drop table f;
+drop table p;
+CALL WAIT_FOR_POST_COMMIT();
+
+
+create table p (x int not null, y int not null, constraint pk primary key (x,y));
+create table f (x int, y int, constraint fk foreign key (x,y) references p);
+
+insert into p values (1,1);
+
+-- ok
+insert into f values (1,1);
+
+-- fail
+insert into f values (2,1);
+insert into f values (1,2);
+
+-- nulls are ok
+insert into f values (1,null);
+insert into f values (null,null);
+insert into f values (1,null);
+
+-- update on pk, fail
+update p set x = 2;
+update p set y = 2;
+update p set x = 1, y = 2;
+update p set x = 2, y = 1;
+update p set x = 2, y = 2;
+
+
+-- ok
+update p set x = 1, y = 1;
+
+-- delete pk, fail
+delete from p;
+
+-- delete fk, ok
+delete from f;
+
+insert into f values (1,1);
+
+-- update fk, fail
+update f set x = 2;
+update f set y = 2;
+update f set x = 1, y = 2;
+update f set x = 2, y = 1;
+
+-- update fk, ok
+update f set x = 1, y = 1;
+
+-- nulls ok
+update f set x = null, y = 1;
+update f set x = 1, y = null;
+update f set x = null, y = null;
+
+delete from f;
+
+insert into f values (1,1);
+insert into p values (2,2);
+
+-- ok
+update f set x = x+1, y = y+1;
+
+select * from f;
+select * from p;
+
+-- ok
+update p set x = x+1, y = y+1;
+
+-- fail
+update p set x = x+1, y = y+1;
+
+
+-- 
+-- BOUNDARY CONDITIONS
+--
+delete from f;
+delete from p;
+
+insert into f select * from f;
+delete from p where x = 9999;
+update p set x = x+1, y=y+1 where x = 999;
+
+insert into p values (1,1);
+insert into f values (1,1);
+update p set x = x+1, y=y+1 where x = 999;
+delete from p where x = 9999;
+insert into f select * from f;
+
+--
+-- test a CURSOR
+--
+delete from f;
+delete from p;
+insert into p values (1,1);
+insert into f values (1,1);
+
+autocommit off;
+get cursor  c as 'select * from p for update of x';
+next c;
+
+-- fail
+update p set x = 666 where current of c;
+close c;
+
+get cursor  c as 'select * from f for update of x';
+next c;
+
+-- fail
+update f set x = 666 where current of c;
+close c;
+
+commit;
+autocommit on;
+
+delete from f;
+delete from p;
+insert into p values (0,0), (1,1), (2,2), (3,3), (4,4);
+insert into f values (1,1);
+
+-- lets add some additional foreign keys to the mix
+create table f2 (x int, y int, constraint fk2 foreign key (x,y) references p);
+insert into f2 values (2,2);
+create table f3 (x int, y int, constraint fk3 foreign key (x,y) references p);
+insert into f3 values (3,3);
+
+-- ok
+update p set x = x+1, y = y+1;
+
+-- error, fk1
+update p set x = x+1;
+update p set y = y+1;
+update p set x = x+1, y = y+1;
+
+-- fail of fk3
+update p set y = 666 where y = 3;
+
+-- fail of fk2
+update p set x = 666 where x = 2;
+
+-- cleanup
+drop table f;
+drop table f2;
+drop table f3;
+drop table p;
+CALL WAIT_FOR_POST_COMMIT();
+
+--
+-- SELF REFERENCING
+--
+create table s (x int not null primary key, y int references s, z int references s);
+
+-- ok
+insert into s values (1,null,null);
+
+-- ok
+update s set y = 1;
+
+-- fail
+update s set z = 2;
+
+-- ok
+update s set z = 1;
+
+-- ok
+insert into s values (2, 1, 1);
+
+-- ok
+update s set x = 666 where x = 2;
+
+-- ok
+update s set x = x+1, y = y+1, z = z+1;
+
+delete from s;
+
+-- ok
+insert into s values (1,null,null);
+-- ok
+insert into s values (2,null,null);
+
+-- ok
+update s set y = 2 where x = 1;
+-- ok
+update s set z = 1 where x = 2;
+
+select * from s;
+
+-- fail 
+update s set x = 0 where x = 1; 
+
+--
+-- Now we are going to do a short but sweet
+-- check to make sure we are actually hitting
+-- the correct columns
+--
+create table p (c1 char(1), y int not null, c2 char(1), x int not null, constraint pk primary key (x,y));
+create table f (x int, s smallint, y int, constraint fk foreign key (x,y) references p);
+
+insert into p values ('1',1,'1',1);
+-- ok
+insert into f values (1,1,1);
+
+insert into p values ('0',0,'0',0);
+-- ok
+update p set x = x+1, y=y+1;
+
+-- fail
+delete from p where y = 1;
+
+-- fail
+insert into f values (1,1,4);
+
+delete from f;
+delete from p;
+
+--
+-- Lets make sure we don't interact poorly with
+-- 'normal' deferred dml
+
+insert into p values ('1',1,'1',1);
+insert into f values (1,1,1);
+
+insert into p values ('0',0,'0',0);
+-- ok
+update p set x = x+1, y=y+1 where x < (select max(x)+10000 from p);
+
+-- fail
+delete from p where y = 1 and y in (select y from p);
+
+-- inserts
+create table f2 (x int, t smallint, y int);
+insert into f2 values (1,1,4);
+
+-- fail
+insert into f select * from f2;
+
+
+-- ok
+insert into f2 values (1,1,1);
+insert into f select * from f2 where y = 1;
+
+drop table f2;
+drop table f;
+drop table p;
+CALL WAIT_FOR_POST_COMMIT();
+
+--
+-- PREPARED STATEMENTS
+--
+drop table f;
+drop table p;
+--the reason for this wait call is to wait unitil system tables row deletes
+--are completed other wise we will get different order fk checks
+--that will lead different error messages depending on when post commit thread runs
+CALL WAIT_FOR_POST_COMMIT();
+ 
+prepare s as 
+	'create table p (w int not null primary key, x int references p, y int not null, z int not null, constraint uyz unique (y,z))';
+execute s;
+remove s;
+
+prepare s as 
+	'create table f (w int references p, x int, y int, z int, constraint fk foreign key (y,z) references p (y,z))';
+execute s;
+remove s;
+
+prepare s as 
+	'alter table f drop constraint fk';
+execute s;
+remove s;
+--the reason for this wait call is to wait unitil system tables row deletes
+--are completed other wise we will get different order fk checks
+CALL WAIT_FOR_POST_COMMIT(); 
+prepare s as 
+	'alter table f add constraint fk foreign key (y,z) references p (y,z)';
+execute s;
+remove s;
+
+prepare sf as 
+	'insert into f values (1,1,1,1)';
+
+prepare sp as 
+	'insert into p values (1,1,1,1)';
+
+-- fail
+execute sf;
+
+-- ok
+execute sp;
+execute sf;
+
+insert into p values (2,2,2,2);
+
+
+remove sf;
+prepare sf as 
+	'update f set w=w+1, x = x+1, y=y+1, z=z+1';
+-- ok
+execute sf;
+
+remove sp;
+prepare sp as 
+	'update p set w=w+1, x = x+1, y=y+1, z=z+1';
+-- ok
+execute sp;
+
+remove sp;
+prepare sp as 
+	'delete from p where x =1';
+-- ok
+execute sp;
+
+remove sp;
+remove sf;
+drop table f;
+drop table p;
+CALL WAIT_FOR_POST_COMMIT();
+drop procedure WAIT_FOR_POST_COMMIT;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/fk_nonSPS_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1185 @@
+-- ** insert decimal.sql
+--
+-- Test DECIMAL and NUMERIC.  Note that we
+-- know that DECIMAL and NUMERIC are pretty much the
+-- same thing, so we don't do much testing with
+-- the two types other than to make sure the 
+-- syntax is the same.
+
+
+-- test some of the meta data
+drop table tmp;
+create table tmp (tmpcoldecimal dec(8,4), tmpcolnumeric numeric);
+select columndatatype 
+	from sys.syscolumns 
+	where columnname like 'TMPCOL%';
+drop table tmp;
+
+-- Negative tests, bad precision/scale
+create table bad (d decimal(11,12));
+create table bad (d decimal(0,0));
+create table bad (d decimal(0));
+create table bade(d decimal(32));
+create table bade(d decimal(31,32));
+create table bade(d decimal(32,32));
+
+-- Simple acceptance test
+values cast (1 as dec);
+values cast (1 as decimal);
+values cast (1 as decimal(5));
+values cast (1 as dec(5));
+values cast (1.1 as dec(5,3));
+values cast (1.1 as numeric(5,3));
+
+-- cast to all valid types
+values cast (1.1 as int);
+values cast (1.1 as bigint);
+values cast (1.1 as smallint);
+values cast (1.1 as real);
+values cast (1.1 as float);
+values cast (1.1 as char(10));
+
+-- cast all valid types to dec
+values cast ((cast (1 as int)) as dec);
+values cast ((cast (1 as bigint)) as dec);
+values cast ((cast (1 as smallint)) as dec);
+values cast ((cast (1 as real)) as dec);
+values cast ((cast (1 as float)) as dec);
+values cast ((cast (1 as char(10))) as dec);
+
+-- cast overflow,
+-- make a number bigger than everything but 
+-- decimal, and then try to cast it
+drop table tmp;
+create table tmp(d decimal(31 ,0));
+insert into tmp values (cast (
+'100000000000000000000000000000' as dec(31,0)));
+update tmp set d = d * d;
+select cast(d as int) from tmp;
+select cast(d as smallint) from tmp;
+select cast(d as bigint) from tmp;
+select cast(d as float) from tmp;
+select cast(d as real) from tmp;
+select cast(d as double precision) from tmp;
+-- test alternative syntax
+select cast(d as double) from tmp;
+insert into tmp values (+1.79769E+308);
+select * from tmp;
+drop table tmp;
+
+-- try inserting various types into decimal.
+-- we expect silent truncation of the fraction
+drop table tmp;
+create table tmp (d decimal(5,2));
+insert into tmp values (100);
+insert into tmp values (cast (100 as smallint));
+insert into tmp values (cast (100 as bigint));
+insert into tmp values (cast (100 as real));
+insert into tmp values (cast (100 as double precision));
+insert into tmp values (cast (100.999 as real));
+insert into tmp values (100.999e0);
+insert into tmp values (100.999);
+--too big
+insert into tmp values (1000);
+insert into tmp values (cast (1000 as smallint));
+insert into tmp values (cast (1000 as bigint));
+insert into tmp values (cast (1000 as real));
+insert into tmp values (cast (1000 as double precision));
+insert into tmp values (cast (1000.999 as real));
+insert into tmp values (1000.999e0);
+insert into tmp values (1000.999);
+
+--try a few values that hit borders in how java.lang.Double work
+--(this is really tied to some details in the internals of
+-- SQLDecimal)
+insert into tmp values (1000);
+insert into tmp values (10000);
+insert into tmp values (100000);
+insert into tmp values (1000000);
+insert into tmp values (10000000); 
+insert into tmp values (100000000);
+insert into tmp values (1000000000);
+insert into tmp values (10000000000);
+insert into tmp values (100000000000);
+insert into tmp values (1000000000000);
+insert into tmp values (10000000000000);
+insert into tmp values (100000000000000);
+insert into tmp values (-1000);
+insert into tmp values (-10000);
+insert into tmp values (-100000);
+insert into tmp values (-1000000);
+insert into tmp values (-10000000); 
+insert into tmp values (-100000000);
+insert into tmp values (-1000000000);
+insert into tmp values (-10000000000);
+insert into tmp values (-100000000000);
+insert into tmp values (-1000000000000);
+insert into tmp values (-10000000000000);
+insert into tmp values (-100000000000000);
+drop table tmp;
+
+create table tmp(d dec(1,1));
+insert into tmp values (0.0);
+insert into tmp values (-0.0);
+insert into tmp values (0.1);
+insert into tmp values (-0.1);
+insert into tmp values (0.1e0);
+insert into tmp values (-0.1e0);
+select * from tmp;
+delete from tmp;
+
+insert into tmp values (0);
+insert into tmp values (0.0e0);
+insert into tmp values (0.0e10);
+insert into tmp values (-0);
+insert into tmp values (-0.0e0);
+insert into tmp values (-0.0e10);
+insert into tmp values (cast (0 as smallint));
+insert into tmp values (cast (0 as bigint));
+insert into tmp values (cast (0 as real));
+select * from tmp;
+drop table tmp;
+
+create table tmp(d dec(1,0));
+insert into tmp values (1.0);
+insert into tmp values (1);
+insert into tmp values (1.0e0);
+insert into tmp values (-1.0);
+insert into tmp values (-1);
+insert into tmp values (-1.0e0);
+insert into tmp values (cast (1 as smallint));
+insert into tmp values (cast (1 as bigint));
+insert into tmp values (cast (1 as real));
+select * from tmp;
+drop table tmp;
+
+-- Using the DOUBLE built-in function
+-- test that double maps to the double data type
+-- all of the following should work if DOUBLE appears in the COLUMNDATATYPE column
+create table tmp (x double);
+insert into tmp values (1);
+select columnname, columndatatype 
+       from sys.syscolumns c, sys.systables t 
+       where c.referenceid = t .tableid and t.tablename='TMP';
+drop table tmp;
+
+-- cast dec as as a numeric type in a select list
+create table tmp (d decimal);
+insert into tmp values (1.1);
+--should all pass
+insert into tmp values (1);
+select cast(d as int) from tmp;
+select cast(d as smallint) from tmp;
+select cast(d as bigint) from tmp;
+select cast(d as float) from tmp;
+select cast(d as real) from tmp;
+select cast(d as double precision) from tmp;
+select cast(d as dec(10,2)) from tmp;
+select cast(d as dec(10,8)) from tmp;
+drop table tmp;
+
+
+drop table t;
+create table t (i int, 
+				l bigint,
+				s smallint, 
+				d double precision,
+				r real,
+				dc decimal(10,2));
+
+insert into t values (null, null, null, null, null, null);
+
+insert into t values (10,		-- int
+						10,		-- bigint
+						10,		-- smallint	
+						10,		-- double
+						10,		-- real
+						10		-- decimal(10,2)		
+						 );
+insert into t values (-10,		-- int
+						-10,	-- bigint
+						-10,	-- smallint	
+						-10,	-- double
+						-10,	-- real
+						-10		-- decimal(10,2)		
+						 );
+
+
+insert into t values (0,		-- int
+						0,		-- bigint
+						0,		-- smallint	
+						0,		-- double
+						0,		-- real
+						0		-- decimal(10,2)		
+						 );
+
+select dc from t;
+
+select dc + i, dc + s, dc + r, dc + dc from t;
+select dc - i, dc - s, dc - r, dc - dc from t;
+select dc * i, dc * s, dc * r, dc * dc from t;
+select dc / i, dc / s, dc / r, dc / dc from t;
+
+-- try unary minus, plus
+select -(dc * 100 / 100e0 ), +(dc * 100e0 / 100 ) from t;
+
+-- test null/null, constant/null, null/constant
+select dc, i / dc, 10 / dc, dc / 10e0 from t;
+
+-- test for divide by 0
+select dc / i from t;
+
+select 20e0 / 5e0 / 4e0, 20e0 / 4e0 / 5 from t;
+
+-- test positive/negative, negative/positive and negative/negative
+select dc, dc / -dc, (-dc) / dc, (-dc) / -dc from t;
+
+-- test some "more complex" expressions
+select dc, dc + 10e0, dc - (10 - 20e0), dc - 10, dc - (20 - 10) from t;
+
+-- make sure we get the right scale/precision during arithmetic
+values (9.0 + 9.0);
+values (9.9 + 9.9);
+
+values (-9.0 - 9.0);
+values (-9.9 - 9.9);
+
+values (9.0 * 9.0);
+values (9.9 * 9.9);
+values (0.9 * 0.9);
+values (0.9999 * 0.9);
+values (0.9 * 0.9999);
+values (0.9999 * 0.9999);
+
+values (1.0 / 3.0);
+values (1.0 / 0.3);
+values (1.0 / 0.03);
+values (1.0 / 0.000003);
+values (10000.0 / 0.000003);
+values (0.0001 / 0.0003);
+values (0.1 / 3.0);
+
+-- huge number
+values (
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)) *
+		cast(1.7e3 as dec(31)));
+
+values cast(1.7e30 as dec(31));
+
+--try a tiny number 
+-- the following seems to be asking a bit
+-- too much of poor old biginteger, so try
+-- something smaller
+--values (cast(1.7e-307 as dec(2147483647,2147483640)) /
+--		(cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647)) *
+--		 cast(1.7e308 as dec(2147483647))));
+--
+
+values cast(1 as dec(31, 20));
+-- test the arithmetic operators on a type we know they don't work on
+create table w (x dec, y long varchar);
+select x + y from w;
+select x - y from w;
+select x * y from w;
+select x / y from w;
+
+-- clean up after ourselves
+drop table w;
+
+--
+-- comparisons
+--
+
+insert into t values (123,			-- int
+						123,		-- bigint
+						123,		-- smallint	
+						1234.56,	-- double
+						1234.56,	-- real
+						1234.56		-- decimal(10,2)		
+						 );
+
+-- test =
+select dc from t where dc is null;
+select dc from t where dc = 10;
+select dc from t where dc = -10;
+select dc from t where dc = 0;
+select dc from t where dc = 1234.45;
+
+select dc from t where dc = i;
+select dc from t where dc = l;
+select dc from t where dc = s;
+select dc from t where dc = r;
+select dc from t where dc = d;
+select dc from t where dc = dc;
+
+
+-- test >
+select dc from t where dc > 10;
+select dc from t where dc > -10;
+select dc from t where dc > 0;
+select dc from t where dc > 1234.45;
+
+select dc from t where dc > i;
+select dc from t where dc > l;
+select dc from t where dc > s;
+select dc from t where dc > r;
+select dc from t where dc > d;
+select dc from t where dc > dc;
+
+
+-- test >=
+select dc from t where dc >= 10;
+select dc from t where dc >= -10;
+select dc from t where dc >= 0;
+select dc from t where dc >= 1234.45;
+
+select dc from t where dc >= i;
+select dc from t where dc >= l;
+select dc from t where dc >= s;
+select dc from t where dc >= r;
+select dc from t where dc >= d;
+select dc from t where dc >= dc;
+
+
+
+-- test <
+select dc from t where dc < 10;
+select dc from t where dc < -10;
+select dc from t where dc < 0;
+select dc from t where dc < 1234.45;
+
+select dc from t where dc < i;
+select dc from t where dc < l;
+select dc from t where dc < s;
+select dc from t where dc < r;
+select dc from t where dc < d;
+select dc from t where dc < dc;
+
+
+-- test <=
+select dc from t where dc <= 10;
+select dc from t where dc <= -10;
+select dc from t where dc <= 0;
+select dc from t where dc <= 1234.45;
+
+select dc from t where dc <= i;
+select dc from t where dc <= l;
+select dc from t where dc <= s;
+select dc from t where dc <= r;
+select dc from t where dc <= d;
+select dc from t where dc <= dc;
+
+
+
+-- test <>
+select dc from t where dc <> 10;
+select dc from t where dc <> -10;
+select dc from t where dc <> 0;
+select dc from t where dc <> 1234.45;
+
+select dc from t where dc <> i;
+select dc from t where dc <> l;
+select dc from t where dc <> s;
+select dc from t where dc <> r;
+select dc from t where dc <> d;
+select dc from t where dc <> dc;
+
+
+--
+-- test a variety of inserts and updates
+--
+
+drop table t2;
+create table t2 (i int, 
+				l bigint,
+				s smallint, 
+				d double precision,
+				r real,
+				dc decimal(10,2));
+
+insert into t2 select * from t;
+
+-- add a few indexes
+create index dcindex on t2(dc);
+create unique index dcuniqueindex on t2(dc);
+
+-- now do updates and confirm they are ok
+update t2 set dc = dc + 1.1;
+select dc from t2;
+update t2 set dc = dc - 1.1;
+select dc from t2;
+update t2 set dc = dc / 1.1;
+select dc from t2;
+update t2 set dc = dc * 1.1;
+select dc from t2;
+
+-- try some deletes
+delete from t2 where dc > 0;
+select dc from t2;
+delete from t2 where dc = 0;
+select dc from t2;
+delete from t2 where dc < 0;
+select dc from t2;
+
+drop table t2;
+drop table t;
+
+-- test that we recycle values correctly
+-- when reading from a decimal table with
+-- variable length byte arrays stored
+-- via write external
+create table t (c1 char(1), d dec(20,4), c2 char(1));
+create unique index tu on t(d);
+insert into t values ('a', 1.123, 'Z');
+insert into t values ('a', 11111.123, 'Z');
+insert into t values ('a', 11111111.123, 'Z');
+insert into t values ('a', 6.123, 'Z');
+insert into t values ('a', 666.123, 'Z');
+insert into t values ('a', .6, 'Z');
+insert into t values ('a', 0, 'Z');
+insert into t values ('a', 666666.123, 'Z');
+insert into t values ('a', 99999999999999.123, 'Z');
+insert into t values ('a', 9.123, 'Z');
+
+select * from t;
+
+update t set d = d + .0007;
+select * from t;
+drop table tmp;
+drop table bad;
+drop table t;
+
+-- ** insert double.sql
+
+--
+-- Test the builtin type 'double precision'
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar
+--
+-- other things we might test:
+-- show how doubles lose precision on computations
+
+--
+-- Test the arithmetic operators
+--
+
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision);
+
+insert into t values (null, null, null, null, null);
+insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0);
+insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0);
+
+select d + d, i + d, s + d from t;
+
+select d + d + d, d + 100 + 432e0 from t;
+
+select d - i, i - d, d - s, s - d from t;
+
+select d - d - d, d - 100 - 432e0 from t;
+
+select i, d, i * d, d * i, d * d, d * 2, d * 2.0e0 from t;
+
+-- try unary minus, plus
+select -(d * 100 / 100e0 ), +(d * 100e0 / 100 ) from t;
+
+-- test null/null, constant/null, null/constant
+select i, d, i / d, 10 / d, d / 10e0 from t;
+
+-- test for divide by 0
+select d / i from t;
+
+select 20e0 / 5e0 / 4e0, 20e0 / 4e0 / 5 from t;
+
+-- test positive/negative, negative/positive and negative/negative
+select d, d / -d, (-d) / d, (-d) / -d from t;
+
+-- test some "more complex" expressions
+select d, d + 10e0, d - (10 - 20e0), d - 10, d - (20 - 10) from t;
+
+-- show that decimals will go into doubles:
+select d+1.1 from t;
+insert into t (d) values(1.1);
+select d from t where d=1.1;
+
+drop table t;
+
+-- test overflow
+
+create table s (d double precision, p double);
+
+insert into s values (null, null);
+insert into s values (0, 100);
+insert into s values (1, 101);
+
+select d + 1.7e+308 from s;
+
+-- these are close enough to the infinities to overflow
+-- the null row will still get returned
+select 1.798e+308, - 1.798e+308, 'This query should not work' from s;
+select 1.8e+1000, - 1.8e+1000, 'This query should not work' from s;
+
+-- these are far enough from the infinities to work
+select 1.797e+308, - 1.797e+308, 'This query should work' from s;
+select 1.6e+308, - 1.6e+308, 'This query should work' from s;
+
+-- the null row will still get returned
+select d - 1.6e+308 - 0, 'This query should work' from s;
+select d - 1.6e+308 - 1.6e+308, 'This query should fail' from s;
+
+-- these should fail
+select p * 1.6e+308 from s;
+select p * -1.6e+308 from s;
+
+-- these work
+insert into s values (-1.6e+308, 0);
+insert into s values (-1.797e+308, 0);
+-- these don't work
+insert into s values (-1.798e+308, 0);
+insert into s values (-1.8e+308, 0);
+
+-- see two more rows
+select -d from s;
+
+drop table s;
+
+-- test the arithmetic operators on a type we know they don't work on
+create table w (x double precision, y long varchar);
+
+select x + y from w;
+
+select x - y from w;
+
+select x * y from w;
+
+select x / y from w;
+
+-- clean up after ourselves
+drop table w;
+
+--
+-- comparisons
+--
+create table c (i int, s smallint, d double precision, p double precision);
+
+-- insert some values
+insert into c values (0, 0, 0e0, 0e0);
+insert into c values (null, null, 5e0, null);
+insert into c values (1, 1, 1e0, 2e0);
+insert into c values (1956475, 1956, 1956475e0, 1956475e0);
+
+
+-- select each one in turn
+select d from c where d = 0e0;
+select d from c where d = 1e0;
+select d from c where d = 1956475e0;
+
+-- now look for a value that isn't in the table
+select d from c where p = 2e0;
+
+-- now test null = null semantics
+select d from c where d = d;
+
+-- now test <>, <, >
+select d from c where d <> 0e0;
+select d from c where d <> 1e0;
+select d from c where d < 1956475e0;
+select d from c where d < 2e0;
+select d from c where d > d;
+select d from c where d > p;
+
+-- now test <=, >=
+select d from c where d <= 0e0;
+select d from c where d <= 1e0;
+select d from c where d <= 2e0;
+select d from c where d >= 1956475e0;
+select d from c where d >= d;
+select d from c where d >= p;
+
+-- test comparisons with int and smallint
+select d from c where d <= i;
+select d from c where d < s;
+select d from c where d > i;
+select d from c where d >= s;
+select d from c where d <> i;
+select d from c where d = s;
+
+-- test that the smallint gets promoted to double, and not vice versa.  65537
+-- when converted to short becomes 1
+select d from c where s = 65537e0;
+
+-- test =SQ
+-- this gets cardinality error
+select d from c where d = (select d from c);
+-- this works
+select d from c where d = (select d from c where d=5);
+
+-- show that double is comparable to real
+
+create table o (c char(10), v varchar(30), dc decimal);
+
+select d from c,o where d <> dc;
+
+-- clean up
+drop table c;
+drop table o;
+
+
+--
+-- test alternate syntax: just double will work for DB2 compatibility
+--
+create table db2version (d double);
+drop table db2version;
+--
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50),
+	d double precision);
+create table target (p double precision not null);
+
+-- we have already tested inserting integer and double literals.
+
+insert into source values (1, 2, '3', '4', 5);
+
+-- these will all work:
+insert into target select i from source;
+insert into target select s from source;
+insert into target select d from source;
+
+-- these will all fail:
+
+delete from source;
+insert into source values (null, null, null, null, null);
+-- these fail because the target won't take a null -- of any type
+insert into target values(null);
+insert into target select i from source;
+insert into target select s from source;
+insert into target select d from source;
+
+-- expect 4 rows in target: 1, 2, 5, and 1:
+select * from target;
+
+update target set p = p + 1;
+select * from target;
+
+update target set p = p - 1;
+select * from target;
+
+update target set p = p / 10;
+select * from target;
+
+update target set p = p * 10;
+select * from target;
+
+-- these should work
+update source set i = 1.4e8;
+update source set s = 1.4e4;
+
+select i, s from source where i=1.4e8 or s=1.4e4;
+
+-- these should get overflow
+update source set i = 1.4e12;
+update source set s = 1.4e12;
+
+drop table source;
+drop table target;
+
+create table abcfloat (numtest float(20));
+insert into abcfloat values (1.23456789);
+insert into abcfloat values (.123456789);
+insert into abcfloat values (-.123456789);
+insert into abcfloat values (0.223456789);
+insert into abcfloat values (-0.223456789);
+insert into abcfloat values (12345678.9);
+select * from abcfloat;
+drop table abcfloat;
+
+
+-- ** insert float.sql
+--
+-- Test the builtin type 'float'
+-- Float is a synonym for double or real, depending on
+-- the precision specified; so all we need to do is
+-- show the mapping here; the double and real tests
+-- show how well those types behave.
+--
+
+-- this shows several working versions of float, the default
+-- and all of the boundary values:
+
+create table t (d double precision, r real, f float, f1 float(1),
+	f23 float(23), f24 float(24), f53 float(52));
+
+select columnname, columndatatype 
+from sys.syscolumns c, sys.systables t
+where c.referenceid = t.tableid and t.tablename='T';
+
+-- invalid float values
+insert into t(r) values 'NaN';
+insert into t(r) values +3.4021E+38;
+insert into t(r) values -3.4021E+38;
+create table tt(c char(254));
+insert into tt values -3.402E+38;
+insert into t(r) select * from tt;
+insert into t(r) values '1.0';
+update t set r = NaN;
+update t set r = +3.4021E+38;
+update t set r = -3.4021E+38;
+
+drop table t;
+drop table tt;
+
+-- these get errors for invalid precision values:
+create table t1 (d double precision, r real, f float(-10));
+--
+create table t2 (d double precision, r real, f float(-1));
+create table t3 (d double precision, r real, f float(0));
+create table t4 (d double precision, r real, f float(100));
+create table t5 (d double precision, r real, f float(53));
+create table t6 (d double precision, r real, f float(12.3));
+
+-- ** insert real.sql
+--
+-- Test the builtin type 'real'
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, double precision
+--
+-- other things we might test:
+-- show how reals lose precision on computations
+
+--
+-- Test the arithmetic operators
+--
+
+create table t (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real);
+
+insert into t values (null, null, null, null, null, null);
+insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0, 200.0e0);
+insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0, -200.0e0);
+
+select r + r, d + r, i + r, s + r, r + i from t;
+
+select r + r + r, r + 100 + 432e0 from t;
+
+select r - r, r - d, d - r, r - i, i - r, r - s, s - r from t;
+
+select r - r - r, r - 100 - 432e0 from t;
+
+select i, d, s, r, i * r, r * i, s * r, d * r, r * r, r * 2, r * 2.0e0 from t;
+
+-- try unary minus, plus
+select -(r * 100 / 100e0 ), +(r * 100e0 / 100 ) from t;
+
+-- test null/null, constant/null, null/constant
+select i, d, r, d / r, i / r, 10 / r, r / d, r / 10e0 from t;
+
+-- test for divide by 0
+select r / i from t;
+
+-- test positive/negative, negative/positive and negative/negative
+select r, r / -r, (-r) / r, (-r) / -r from t;
+
+-- test some "more complex" expressions
+select r, r + 10e0, r - (10 - 20e0), r - 10, r - (20 - 10) from t;
+
+drop table t;
+
+-- test overflow
+
+create table s (d real, p real);
+
+insert into s values (null, null);
+insert into s values (0, 100);
+insert into s values (1, 101);
+
+select d + 3.4e+38 from s;
+
+-- these are close enough to the infinities to overflow
+-- Can't test simple select of literal because literals are doubles
+insert into s values(3.403e+38, 3.403e+38);
+insert into s values(- 3.403e+38, - 3.403e+38);
+insert into s values(1.8e+100, 1.8e+100);
+insert into s values(- 1.8e+100, - 1.8e+100);
+select * from s;
+
+-- these are far enough from the infinities to work
+insert into s values(3.402e+38, - 3.402e+38);
+insert into s values(3.3e+38, - 3.3e+38);
+
+-- these show that math is promoted to double because of the double
+-- literals. If it was real math, it would fail
+select d - 3.3e+38 - 3.3e+38, p * 3.3e+38, p * -3.3e+38 from s;
+
+-- see two more rows
+select -d from s;
+
+-- to do the math as reals, we have to keep it in the columns
+delete from s;
+insert into s values (1,3.3e+38);
+-- these will fail, because the math is done as reals
+select d - p - p from s;
+select p * p from s;
+select p * -p from s;
+
+delete from s;
+
+-- select values between 0 and 1
+insert into s values (.111, 1e-1);
+insert into s values (0.222, 0.222);
+select * from s;
+delete from s;
+
+insert into s values (10, 1e-10);
+
+-- underflow calculation doesn't round off, gives error.
+update s set d=d*1.4e-55, p=p*1.4e-45;
+select d, p from s;
+
+update s set d=d + 1.4e-46;
+select d from s;
+
+drop table s;
+
+-- test the arithmetic operators on a type we know they don't work on
+create table w (x real, y char);
+
+select x + y from w;
+
+select x - y from w;
+
+select x * y from w;
+
+select x / y from w;
+
+-- clean up after ourselves
+drop table w;
+
+--
+-- comparisons
+--
+
+create table c (i int, s smallint, d double precision, r real, l real);
+
+-- insert some values
+insert into c values (0, 0, 0e0, 0e0, 0e0);
+insert into c values (null, null, 5e0, null, null);
+insert into c values (1, 1, 1e0, 2e0, 3e0);
+insert into c values (1956475, 1956, 1956475e0, 1956475e0, 1956475e0);
+
+
+-- select each one in turn
+select r from c where r = 0e0;
+select r from c where r = 1e0;
+select r from c where r = 1956475e0;
+
+-- now look for a value that isn't in the table
+select r from c where l = 2e0;
+
+-- now test null = null semantics
+select r from c where r = r;
+
+-- now test <>, <, >, <=, >=
+select r from c where r <> 0e0;
+select r from c where r <> 1e0;
+select r from c where r < 1956475e0;
+select r from c where r < 2e0;
+select r from c where r > d;
+select r from c where r <= l;
+select r from c where r >= r;
+
+-- test comparisons with int and smallint and double
+select r from c where r <= i;
+select r from c where r < s;
+select r from c where r > i;
+select r from c where r >= s;
+select r from c where r <> i;
+select r from c where r = s;
+select r from c where r = d;
+select r from c where r >= d;
+
+-- show that real is comparable to decimal
+
+create table o (c char(10), v varchar(30), dc decimal);
+
+select r from c,o where r <> dc;
+
+-- clean up
+drop table c;
+drop table o;
+
+
+--
+-- test a variety of inserts and updates
+--
+create table source (i int, s smallint, c char(10), v varchar(50),
+	d double precision, r real);
+create table target (t real not null);
+
+-- we have already tested inserting integer and double literals.
+
+insert into source values (1, 2, '3', '4', 5, 6);
+
+-- these will all work:
+insert into target select i from source;
+insert into target select s from source;
+insert into target select d from source;
+insert into target select r from source;
+
+delete from source;
+insert into source values (null, null, null, null, null, null);
+insert into source values (1, 2, '3', '4', 5, 6);
+-- these fail because the target won't take a null -- of any type
+insert into target values(null);
+insert into target select i from source;
+insert into target select s from source;
+insert into target select d from source;
+insert into target select r from source;
+
+-- expect 5 rows in target: 1, 2, 5, 6, and 1:
+select * from target;
+
+update target set t = t + 1;
+select * from target;
+
+update target set t = t - 1;
+select * from target;
+
+update target set t = t / 10;
+select * from target;
+
+update target set t = t * 10;
+select * from target;
+
+-- these should work
+update source set r = 1.4e4;
+update source set i = r, s=r, d=r;
+
+select i, s, d from source where i=1.4e4 or s=1.4e4 or d=1.4e4;
+
+-- just curious, do columns see the before or after values, and
+-- does it matter if they are before or after the changed value?
+update source set i = r, r = 0, s = r;
+select i, r, s from source where r = 0;
+
+-- these should get overflow
+update source set r = 1.4e12;
+update source set i = r;
+update source set s = r;
+
+drop table source;
+drop table target;
+
+
+
+
+-- ============================================================
+--          TESTS FOR DB2 FLOAT/DOUBLEs LIMITS
+-- ============================================================
+create table fake(r real);
+
+-- ============================================================
+-- different errmsg for DB2: "value of of range", CS: "NumberFormatException"
+values 5e-325;
+values 5e-324;
+
+-- --- TEST SPECIAL VALUES
+
+-- DB2 (should succed)
+insert into fake values( -3.402E+38 );
+insert into fake values( +3.402E+38 ); 
+insert into fake values -1;
+
+insert into fake values( -1.175E-37 ); 
+insert into fake values( +1.175E-37 );
+insert into fake values -2;
+
+-- CS (should fail)
+insert into fake values( -3.4028235E38 );
+insert into fake values( +3.4028235E38 );
+insert into fake values -3;
+
+insert into fake values( -1.4E-45 );
+insert into fake values( +1.4E-45 );
+insert into fake values -4;
+
+-- ============================================================
+-- variants of ZERO
+insert into fake values (+0);
+insert into fake values (+0.0);
+insert into fake values (+0.0E-37);
+insert into fake values (+0.0E-38);
+insert into fake values (+0.0E-500);
+values (+0.0E-500);
+values (+1.0E-300);
+
+-- approx ZERO (java rounds to zero, but not DB2)
+insert into fake values (+1.0E-300);
+insert into fake values (+1.0E-900);
+insert into fake values (cast(+1.0E-900 as real));
+values (cast(+1.0E-300 as real));
+values (+1.0E-900);
+values (cast(+1.0E-900 as real));
+insert into fake values -11;
+
+-- ============================================================
+
+-- DB2 MAX_VALUES (first succeed, second fail)
+insert into fake values( -3.4019E+38 );
+insert into fake values( -3.4021E+38 );
+insert into fake values -21;
+
+insert into fake values( +3.4019E+38 ); 
+insert into fake values( +3.4021E+38 ); 
+insert into fake values -22;
+
+-- DB2 MIN_VALUES (first fail, second succeed)
+insert into fake values( -1.1749E-37 ); 
+insert into fake values( -1.1751E-37 ); 
+insert into fake values -23;
+
+insert into fake values( +1.1749E-37 );
+insert into fake values( +1.1751E-37 );
+insert into fake values -24;
+
+-- CS (fail)
+insert into fake values( -3.4028234E38 );
+insert into fake values( -3.40282349E38 );
+insert into fake values( -3.40282351E38 );
+insert into fake values( -3.4028236E38 );
+insert into fake values -25;
+
+insert into fake values( +3.4028234E38 );
+insert into fake values( +3.40282349E38 );
+insert into fake values( +3.40282351E38 );
+insert into fake values( +3.4028236E38 );
+insert into fake values -26;
+
+insert into fake values( -1.39E-45 );
+insert into fake values( -1.399E-45 );
+insert into fake values( -1.401E-45 );
+insert into fake values( -1.41E-45 );
+insert into fake values -27;
+
+insert into fake values( +1.39E-45 );
+insert into fake values( +1.399E-45 );
+insert into fake values( +1.401E-45 );
+insert into fake values( +1.41E-45 );
+insert into fake values -28;
+
+-- checkpoint
+select * from fake;
+
+drop table fake;
+create table fake(r real);
+
+-- ============================================================
+-- ---underflow aritmetic
+-- underflow to small real but / makes double!=0, so we catch
+
+-- ok
+values cast(5e-37/1e0 as real);
+-- fail
+values cast(5e-37/1e1 as real);
+values cast(5e-37/1e300 as real);
+values cast(5e-37 as real)/cast(1e10 as real);
+
+-- ok
+insert into fake values 5e-37/1e0;
+-- fail
+insert into fake values 5e-37/1e1;
+insert into fake values 5e-37/1e300;
+insert into fake values cast(5e-37 as real)/cast(1e10 as real);
+
+drop table fake;
+
+-- makes double to small, so java double rounds to 0. need to catch (fail)
+values 5e-37 / 1e300;
+values cast(5e-37 / 1e300 as real);
+
+-- ok, zero result (succeed)
+values cast(cast(0.0e0 as real) - cast(0.0e0 as real) as real);
+values cast(cast(1.0e-30 as real) - cast(1.0e-30 as real) as real);
+
+-- java (and CS previously) rounded result to zero, but now gives errors like DB2 (fail)
+values cast(cast(5e-37 as real) - cast(4e-37 as real) as real);
+values cast(5e-37 - 4e-37 as real);
+values cast(5e-37 - 4.99e-37 as real);
+
+values cast(5e-308 - 4e-308 as real);
+
+values cast(5e-37 + -4e-37 as real);
+values cast(5e-324 - 4e-324 as real);
+
+values cast(5e-37 * 4e-37 as real);
+values cast(cast(5e-37 as real) * cast(4e-37 as real) as real);
+
+-- double trouble, underflow detection (fail)
+values cast(5e-300 * 4e-300 as real);
+
+-- underflow aritmetic DOUBLE (fail)
+values -3e-305/1e100;
+values -3e-305/1e100; 
+
+-- negative zeros not allowed (succeed)
+values 0.0e5/-1;
+
+-- 30 characters limit to be enforced ) (first fail, second ok)
+values 01234567890123456789012345678e1;
+values 0123456789012345678901234567e1;
+
+-- ============================================================
+
+--- Marks tests
+
+-- Examples in Cloudscape 5.2:
+-- these 2 insert statements should raise error msgs in compat mode because 
+-- the values are between the -mpv and +mpv (fail)
+create table t1 (c1 real);
+insert into t1 values -1.40129846432481700e-46;
+insert into t1 values +1.40129846432481700e-46;
+select * from t1;
+
+-- these 2 insert statements should raise an error msg in compat mode
+-- because the values are greater db2's limits (fail)
+insert into t1 values 3.40282346638528860e+38;
+insert into t1 values -3.40282346638528860e+38;
+select * from t1;
+
+drop table t1;
+
+-- Examples in DB2 UDB for LUW 8.1.4:
+-- these 2 insert statements raise ERROR 22003 because
+-- the values are between the -mpv and +mpv (fail)
+create table t1 (c1 real);
+insert into t1 values -1.40129846432481700e-46;
+insert into t1 values +1.40129846432481700e-46;
+select * from t1;
+
+-- these 2 insert statements raise ERROR 22003 because
+-- the values are greater db2's limits (fail)
+insert into t1 values 3.40282346638528860e+38;
+insert into t1 values -3.40282346638528860e+38;
+select * from t1;
+
+drop table t1;
+
+-- ============================================================
+
+-- bug 5704 - make sure we catch the overflow correctly for multiplication operator
+values cast(1e30 as decimal(31))*cast(1e30 as decimal(31));
+values cast('1e30' as decimal(31))*cast('1e30' as decimal(31));
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/floattypes_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+#
+# only copied this from default_app.properties to specify no run with j9
+# for this test runs into a jvm crash especially when run in sps mode. see beetle 4874.
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forbitdata.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forbitdata.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,902 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+import java.sql.*;
+
+import org.apache.derby.tools.ij;
+import java.io.*;
+import java.math.BigInteger;
+import java.math.BigDecimal;
+
+public class forbitdata
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	static private boolean isDB2jNet;
+
+	public static void main (String[] argv) throws Throwable
+	{
+		try {
+		
+ 		ij.getPropertyArg(argv); 
+			Connection conn = ij.startJBMS();
+			// waiting for meta data
+			String framework = System.getProperty("framework");
+			if (framework != null && framework.toUpperCase().equals("DB2JNET"))
+				isDB2jNet = true;
+
+//			Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
+
+//			Connection conn = DriverManager.getConnection("jdbc:db2://debrun.ibmus2.ibm.com:50000/tours", "db2admin", "ejbcache");
+
+			runTests( conn);
+		} catch (Throwable t) {
+			System.out.println("FAIL " + t);
+			t.printStackTrace(System.out);
+		}
+    }
+
+    public static void runTests( Connection conn) throws Throwable
+    {
+		try {
+			testNegative(conn);
+			testTypes(conn);
+			testValues(conn);
+			testCompare(conn);
+			testEncodedLengths(conn);
+
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+		
+	}
+
+	/**
+		Negative for bit data tests.
+		FBD001,FBD007 negative syntax
+		FBD005 maximum char length
+		FBD009 maximum varchar length
+	*/
+	public static void testNegative(Connection conn) throws SQLException {
+
+		System.out.println("START testNegative");
+
+		Statement s = conn.createStatement();
+
+		// 
+		statementExceptionExpected(s, "CREATE TABLE FBDFAIL.T001 (C001 CHAR(255) FOR BIT DATA)");
+		statementExceptionExpected(s, "CREATE TABLE FBDFAIL.T002 (C002 VARCHAR(32673) FOR BIT DATA)");
+		statementExceptionExpected(s, "CREATE TABLE FBDFAIL.T003 (C003 VARCHAR FOR BIT DATA)");
+		statementExceptionExpected(s, "CREATE TABLE FBDFAIL.T004 (C004 LONG VARCHAR(100) FOR BIT DATA)");
+		
+		s.close();
+		System.out.println("END testNegative");
+	}
+
+	/**
+		FBD001,FBD007 - positive syntax 
+		FBD004 - CHAR length defaults to one
+		FBD037 - create table
+		FBD006, FBD011, FBD014 - correct JDBC type
+
+	*/
+	public static void testTypes(Connection conn) throws SQLException {
+
+		System.out.println("START testTypes");
+
+		Statement s = conn.createStatement();
+
+		for (int i = 1; i <= 8; i++)
+			executeDrop(s, "DROP TABLE FBDOK.T00" + i);
+
+		// FBD037
+
+		executeOK(s, "CREATE TABLE FBDOK.T001 (C001 CHAR FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T002 (C002 CHAR(1) FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T003 (C003 CHAR(10) FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T004 (C004 CHAR(254) FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T005 (C005 VARCHAR(1) FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T006 (C006 VARCHAR(100) FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T007 (C007 VARCHAR(32672) FOR BIT DATA)");
+		executeOK(s, "CREATE TABLE FBDOK.T008 (C008 LONG VARCHAR FOR BIT DATA)");
+
+		ResultSet rs = conn.getMetaData().getColumns(null, "FBDOK", null, null);
+		while (rs.next()) {
+			// skip 1 catalog
+			System.out.print(rs.getString(2) + ",");
+			System.out.print(rs.getString(3) + ",");
+			System.out.print(rs.getString(4) + ",");
+			System.out.print(rs.getString(5) + ",");
+			System.out.print(rs.getString(6) + ",");
+			System.out.print(rs.getString(7) + ",");
+			// skip 8 - unused
+			System.out.print(rs.getString(9) + ",");
+			System.out.print(rs.getString(10) + ",");
+			System.out.print(rs.getString(11) + ",");
+			// skip 12 remarks
+			System.out.print(rs.getString(13) + ",");
+			// skip 14,15 unused
+			System.out.print(rs.getString(16) + ",");
+			System.out.print(rs.getString(17) + ",");
+			System.out.println(rs.getString(18));
+		}
+		rs.close();
+
+		for (int i = 1; i <= 8; i++) {
+			try {
+				PreparedStatement ps = conn.prepareStatement("SELECT * FROM FBDOK.T00" + i);
+				ResultSetMetaData rsmd = ps.getMetaData();
+				System.out.println("TABLE FBDOK.T00" + i);
+				System.out.println("  " + rsmd.getColumnName(1) + " " + rsmd.getColumnTypeName(1) + " precision " + rsmd.getPrecision(1));
+				ps.close();
+			} catch (SQLException sqle) {
+				showSQLE(sqle);
+			}
+
+		}
+
+		for (int i = 1; i <= 8; i++)
+			executeDrop(s, "DROP TABLE FBDOK.T00" + i);
+
+		s.execute("DROP SCHEMA FBDOK RESTRICT");
+
+
+		System.out.println("DATABASE META DATA.getTypeInfo()");
+		DatabaseMetaData dmd = conn.getMetaData();
+
+		rs = dmd.getTypeInfo();
+		while (rs.next()) {
+			String name = rs.getString(1);
+			int jdbcType = rs.getInt(2);
+			switch (jdbcType) {
+			case Types.BINARY:
+			case Types.VARBINARY:
+			case Types.LONGVARBINARY:
+				break;
+			default:
+				continue;
+			}
+
+			System.out.print(name + "(" + jdbcType + ") ");
+			System.out.print("precision " + rs.getInt(3));
+			System.out.println("");
+		}
+
+		rs.close();
+
+		{
+		String sql = "VALUES X'2345d45a2e44'";
+		PreparedStatement psv = conn.prepareStatement(sql);
+		ResultSetMetaData rsmd = psv.getMetaData();
+		System.out.println(sql);
+		System.out.println("  " + rsmd.getColumnName(1) + " " + rsmd.getColumnTypeName(1) + " precision " + rsmd.getPrecision(1));
+		}
+
+		{
+		String sql = "VALUES X''";
+		PreparedStatement psv = conn.prepareStatement(sql);
+		ResultSetMetaData rsmd = psv.getMetaData();
+		System.out.println(sql);
+		System.out.println("  " + rsmd.getColumnName(1) + " " + rsmd.getColumnTypeName(1) + " precision " + rsmd.getPrecision(1));
+		}
+
+
+		s.close();
+		System.out.println("END testTypes");
+	}
+
+	public static void testCast(Connection conn) throws SQLException {
+	}
+
+	public static void testValues(Connection conn) throws SQLException {
+
+		System.out.println("START testValues");
+
+		Statement s = conn.createStatement();
+		executeDrop(s, "DROP TABLE FBDVAL.T001");
+		executeDrop(s, "DROP TABLE FBDVAL.X001");
+		s.execute("CREATE TABLE FBDVAL.T001(ID INT NOT NULL PRIMARY KEY, C1 CHAR(10) FOR BIT DATA, C2 VARCHAR(10) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(10))");
+		PreparedStatement psI = conn.prepareStatement("INSERT INTO FBDVAL.T001 VALUES(?, ?, ?, ?, ?)");
+		PreparedStatement psS = conn.prepareStatement("SELECT C1, C2, C3, C4, ID FROM FBDVAL.T001 WHERE ID >= ? AND ID < ? ORDER BY ID");
+
+
+		System.out.println("**** NULL");
+		insertData(psI, 0, null, 10, true);
+		showData(psS, 0, null);
+
+		System.out.println("**** 7 bytes (EMPTY)");
+		byte[] empty = new byte[7];
+		insertData(psI, 10, empty, 10, true);
+		showData(psS, 10, empty);
+
+		// DB2
+		//	CHAR			-- FAIL TOO BIG			
+		//	VARCHAR			-- FAIL TOO BIG
+		//	LONG VARCHAR	-- OK
+		//	BLOB			-- FAIL TOO BIG
+		System.out.println("**** 15 bytes (EMPTY)");
+		byte[] empty2 = new byte[15];
+		insertData(psI, 20, empty2, 10, true);
+		showData(psS, 20, empty2);
+
+		// DB2 - ALL OK
+		System.out.println("**** 4 bytes");
+		byte[] four = new byte[4];
+		four[0] = (byte) 0x04;
+		four[1] = (byte) 0x23;
+		four[2] = (byte) 0xA2;
+		four[3] = (byte) 0xFD;
+
+		insertData(psI, 30, four, 10, true);
+		showData(psS, 30, four);
+
+		// DB2 - ALL OK
+		System.out.println("**** 10 bytes");
+		byte[] ten = new byte[10];
+		ten[0] = (byte) 0x0B;
+		ten[1] = (byte) 0x27;
+		ten[2] = (byte) 0xA2;
+		ten[3] = (byte) 0xFD;
+		ten[4] = (byte) 0x01;
+		ten[5] = (byte) 0x6D;
+		ten[6] = (byte) 0xE2;
+		ten[7] = (byte) 0x35;
+		ten[8] = (byte) 0x66;
+		ten[9] = (byte) 0x90;
+
+		insertData(psI, 40, ten, 10, true);
+		showData(psS, 40, ten);
+
+		// DB2
+		//	CHAR			-- FAIL TOO BIG			
+		//	VARCHAR			-- FAIL TOO BIG
+		//	LONG VARCHAR	-- OK
+		//	BLOB			-- FAIL TOO BIG
+		System.out.println("**** 15 bytes");
+		byte[] l15 = new byte[15];
+		l15[0] = (byte) 0xEB;
+		l15[1] = (byte) 0xCA;
+		l15[2] = (byte) 0xFE;
+		l15[3] = (byte) 0xBA;
+		l15[4] = (byte) 0xBE;
+		l15[5] = (byte) 0xFE;
+		l15[6] = (byte) 0xED;
+		l15[7] = (byte) 0xFA;
+		l15[8] = (byte) 0xCE;
+		l15[9] = (byte) 0x24;
+		l15[10] = (byte) 0x78;
+		l15[11] = (byte) 0x43;
+		l15[12] = (byte) 0x92;
+		l15[13] = (byte) 0x31;
+		l15[14] = (byte) 0x6D;
+
+		insertData(psI, 50, l15, 10, true);
+		showData(psS, 50, l15);
+
+		// DB2 UDB LUW no truncation of spaces for VARCHAR FBD, LONG VARCHAR FBD
+		System.out.println("**** 4 spaces ");
+		byte[] space4 = new byte[4];
+		space4[0] = (byte) 0x20;
+		space4[1] = (byte) 0x20;
+		space4[2] = (byte) 0x20;
+		space4[3] = (byte) 0x20;
+		insertData(psI, 60, space4, 10, true);
+		showData(psS, 60, space4);
+
+
+		// DB2 UDB LUW no truncation of spaces for VARCHAR FBD, LONG VARCHAR FBD
+		System.out.println("**** 6 data with trailing space ");
+		byte[] space6 = new byte[6];
+		space6[0] = (byte) 0xca;
+		space6[1] = (byte) 0xfe;
+		space6[2] = (byte) 0x20;
+		space6[3] = (byte) 0x20;
+		space6[4] = (byte) 0x20;
+		space6[5] = (byte) 0x20;
+		insertData(psI, 70, space6, 10, true);
+		showData(psS, 70, space6);
+
+		// DB2
+		//	CHAR			-- FAIL TOO BIG			
+		//	VARCHAR			-- FAIL TOO BIG
+		//	LONG VARCHAR	-- OK
+		//	BLOB			-- FAIL TOO BIG
+		System.out.println("**** 12 data with trailing space ");
+		byte[] space12 = new byte[12];
+		space12[0] = (byte) 0xca;
+		space12[1] = (byte) 0xfe;
+		space12[2] = (byte) 0x20;
+		space12[3] = (byte) 0x20;
+		space12[4] = (byte) 0x20;
+		space12[5] = (byte) 0x20;
+		space12[6] = (byte) 0xca;
+		space12[7] = (byte) 0xfe;
+		space12[8] = (byte) 0x20;
+		space12[9] = (byte) 0x20;
+		space12[10] = (byte) 0x20;
+		space12[11] = (byte) 0x20;
+		insertData(psI, 210, space12, 10, true);
+		showData(psS, 210, space12);
+
+
+		String sql = "INSERT INTO FBDVAL.T001 VALUES(80, X'2020202020', X'2020202020', X'2020202020', null)";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 80, space4);
+
+		// With a literal the value is truncated into CHAR FBD
+		sql = "INSERT INTO FBDVAL.T001 VALUES(90, X'CAFE20202020CAFE20202020', null, null, null)";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 90, space12);
+
+		sql = "INSERT INTO FBDVAL.T001 VALUES(100, null, X'CAFE20202020CAFE20202020', null, null)";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 100, space12);
+
+		sql = "INSERT INTO FBDVAL.T001 VALUES(110, null, null, X'CAFE20202020CAFE20202020', null)";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 110, space12);
+/*
+		sql = "INSERT INTO FBDVAL.T001 VALUES(150, null, null, null, X'CAFE20202020CAFE20202020')";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 150, space12);
+*/
+		// insert with non-trailing blank from literal
+		// DB2 22001 error.
+		sql = "INSERT INTO FBDVAL.T001 VALUES(120, X'CAFE20202020CAFE20202020DD', null, null, null)";
+		System.out.println("**** " + sql);
+		try {
+			s.executeUpdate(sql);
+			System.out.println("FAIL - literal too long on CHAR FBD");
+		} catch (SQLException sqle) {
+			if ("22001".equals(sqle.getSQLState()))
+				System.out.println("22001 truncation error");
+			else
+				showSQLE(sqle);
+		}
+
+		sql = "INSERT INTO FBDVAL.T001 VALUES(130, null, X'CAFE20202020CAFE20202020DD', null, null)";
+		System.out.println("**** " + sql);
+		try {
+			s.executeUpdate(sql);
+			System.out.println("FAIL - literal too long on VARCHAR FBD");
+		} catch (SQLException sqle) {
+			if ("22001".equals(sqle.getSQLState()))
+				System.out.println("22001 truncation error");
+			else
+				showSQLE(sqle);
+		}
+
+		sql = "INSERT INTO FBDVAL.T001 VALUES(140, null, null, X'CAFE20202020CAFE20202020DD', null)";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 140, space12);
+
+		s.execute("CREATE TABLE FBDVAL.X001(XID INT NOT NULL PRIMARY KEY, X1 CHAR(12) FOR BIT DATA, C2 VARCHAR(12) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(12))");
+
+		sql = "INSERT INTO FBDVAL.X001 VALUES(200, X'CAFE20202020CAFE20202020', null, null, null)";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+
+
+		sql = "INSERT INTO FBDVAL.T001 SELECT * FROM FBDVAL.X001";
+		System.out.println("**** " + sql);
+		s.executeUpdate(sql);
+		showData(psS, 200, space12);
+
+		System.out.println("END testValues");
+	}
+
+	private static void insertData(PreparedStatement psI, int id, byte[] original, int maxLen, boolean streamAsWell) throws SQLException {
+
+		int ol = original == null ? 0: original.length;
+
+		if (original == null || original.length <= maxLen) {
+			// simple case.
+			psI.setInt(1, id);
+			psI.setBytes(2, original);
+			psI.setBytes(3, original);
+			psI.setBytes(4, original);
+			psI.setBytes(5, original);
+			psI.executeUpdate();
+
+			if (streamAsWell) {
+				psI.setInt(1, id+1);
+				psI.setBinaryStream(2, original == null ? null : new ByteArrayInputStream(original), ol);
+				psI.setBinaryStream(3, original == null ? null : new ByteArrayInputStream(original), ol);
+				psI.setBinaryStream(4, original == null ? null : new ByteArrayInputStream(original), ol);
+				psI.setBinaryStream(5, original == null ? null : new ByteArrayInputStream(original), ol);
+				psI.executeUpdate();
+			}
+			return;
+		}
+
+		boolean okI1;
+		boolean okI2;
+
+		// Insert potentially out of range value one at a time into the table
+		System.out.println("  >> CHAR FOR BIT DATA");
+		try {
+		psI.setInt(1, id);
+		psI.setBytes(2, original);
+		psI.setBytes(3, null);
+		psI.setBytes(4, null);
+		psI.setBytes(5, null);
+		psI.executeUpdate();
+		okI1 = true;
+		} catch (SQLException sqle) {
+			okI1 = false;
+			if ("22001".equals(sqle.getSQLState())) {
+				System.out.println("22001 truncation error");
+			} else
+				showSQLE(sqle);
+		}
+		if (streamAsWell) {
+			try {
+			psI.setInt(1, id+1);
+			psI.setBinaryStream(2, original == null ? null : new ByteArrayInputStream(original), ol);
+			psI.executeUpdate();
+			okI2 = true;
+			} catch (SQLException sqle) {
+				okI2 = false;
+				if ("22001".equals(sqle.getSQLState())) {
+					System.out.println("22001 truncation error");
+				} else
+					showSQLE(sqle);
+			}
+
+			if (okI1 != okI2)
+				System.out.println("FAIL - mismatched failures");
+		}
+
+		System.out.println("  >> VARCHAR FOR BIT DATA");
+		try {
+		psI.setInt(1, id+2);
+		psI.setBytes(2, null);
+		psI.setBytes(3, original);
+		psI.setBytes(4, null);
+		psI.setBytes(5, null);
+		psI.executeUpdate();
+		okI1 = true;
+
+		} catch (SQLException sqle) {
+			okI1 = false;
+			if ("22001".equals(sqle.getSQLState()))
+				System.out.println("22001 truncation error");
+			else
+				showSQLE(sqle);
+		}
+		if (streamAsWell) {
+			try {
+			psI.setInt(1, id+3);
+			psI.setBinaryStream(3, original == null ? null : new ByteArrayInputStream(original), ol);
+			psI.executeUpdate();
+			okI2 = true;
+
+			} catch (SQLException sqle) {
+				okI2 = false;
+				if ("22001".equals(sqle.getSQLState()))
+					System.out.println("22001 truncation error");
+				else
+					showSQLE(sqle);
+			}
+			if (okI1 != okI2)
+				System.out.println("FAIL - mismatched failures");
+		}
+
+		System.out.println("  >> LONG VARCHAR FOR BIT DATA");
+		try {
+		psI.setInt(1, id+4);
+		psI.setBytes(2, null);
+		psI.setBytes(3, null);
+		psI.setBytes(4, original);
+		psI.setBytes(5, null);
+		psI.executeUpdate();
+		okI1 = true;
+		} catch (SQLException sqle) {
+			okI1 = false;
+			if ("22001".equals(sqle.getSQLState()))
+				System.out.println("22001 truncation error");
+			else
+				showSQLE(sqle);
+		}
+
+		if (streamAsWell) {
+			try {
+			psI.setInt(1, id+5);
+			psI.setBinaryStream(4, original == null ? null : new ByteArrayInputStream(original), ol);
+			psI.executeUpdate();
+			okI2 = true;
+			} catch (SQLException sqle) {
+				okI2 = false;
+				if ("22001".equals(sqle.getSQLState()))
+					System.out.println("22001 truncation error");
+				else
+					showSQLE(sqle);
+			}
+			if (okI1 != okI2)
+				System.out.println("FAIL - mismatched failures");
+		}
+
+			System.out.println("  >> BLOB");
+		try {
+		psI.setInt(1, id+6);
+		psI.setBytes(2, null);
+		psI.setBytes(3, null);
+		psI.setBytes(4, null);
+		psI.setBytes(5, original);
+		okI1 = true;
+		psI.executeUpdate();
+		} catch (SQLException sqle) {
+			okI1 = false;
+			if ("22001".equals(sqle.getSQLState()))
+				System.out.println("22001 truncation error");
+			else
+				showSQLE(sqle);
+		}
+		if (streamAsWell) {
+			try {
+			psI.setInt(1, id+7);
+			psI.setBinaryStream(5, original == null ? null : new ByteArrayInputStream(original), ol);
+			psI.executeUpdate();
+			okI2 = true;
+			} catch (SQLException sqle) {
+				okI2 = false;
+				if ("22001".equals(sqle.getSQLState()))
+					System.out.println("22001 truncation error");
+				else
+					showSQLE(sqle);
+			}
+			if (okI1 != okI2)
+				System.out.println("FAIL - mismatched failures");
+		}
+	}
+
+
+
+	
+	public static void testCompare(Connection conn) throws SQLException {
+
+		System.out.println("START testCompare");
+
+		Statement s = conn.createStatement();
+		executeDrop(s, "DROP TABLE FBDVAL.T001");
+		executeDrop(s, "DROP TABLE FBDVAL.T002");
+		s.execute("CREATE TABLE FBDVAL.T001(ID INT NOT NULL PRIMARY KEY, C1 CHAR(10) FOR BIT DATA, C2 VARCHAR(10) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(10))");
+		s.execute("CREATE TABLE FBDVAL.T002(ID INT NOT NULL PRIMARY KEY, C1 CHAR(10) FOR BIT DATA, C2 VARCHAR(10) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(10))");
+		PreparedStatement psI = conn.prepareStatement("INSERT INTO FBDVAL.T001 VALUES(?, ?, ?, ?, ?)");
+		PreparedStatement psI2 = conn.prepareStatement("INSERT INTO FBDVAL.T002 VALUES(?, ?, ?, ?, ?)");
+
+		insertData(psI, 0, null, 10, false);
+		insertData(psI2, 0, null, 10, false);
+
+		byte[] four = new byte[4];
+		four[0] = (byte) 0x04;
+		four[1] = (byte) 0x23;
+		four[2] = (byte) 0xA2;
+		four[3] = (byte) 0xFD;
+
+		insertData(psI, 30, four, 10, false);
+		insertData(psI2, 30, four, 10, false);
+		four[2] = (byte) 0xA1;
+		insertData(psI, 40, four, 10, false);
+		insertData(psI2, 40, four, 10, false);
+		four[2] = (byte) 0xA2;
+		four[3] = (byte) 0xFF;
+		insertData(psI, 50, four, 10, false);
+		insertData(psI2, 50, four, 10, false);
+
+		byte[] four_plus_space = new byte[5];
+		four_plus_space[0] = (byte) 0x04;
+		four_plus_space[1] = (byte) 0x23;
+		four_plus_space[2] = (byte) 0xA2;
+		four_plus_space[3] = (byte) 0xFD;
+		four_plus_space[4] = (byte) 0x20;
+		insertData(psI, 60, four_plus_space, 10, false);
+		insertData(psI2, 60, four_plus_space, 10, false);
+
+		byte[] ten = new byte[10];
+		ten[0] = (byte) 0x0B;
+		ten[1] = (byte) 0x27;
+		ten[2] = (byte) 0xA2;
+		ten[3] = (byte) 0xFD;
+		ten[4] = (byte) 0x01;
+		ten[5] = (byte) 0x6D;
+		ten[6] = (byte) 0xE2;
+		ten[7] = (byte) 0x35;
+		ten[8] = (byte) 0x66;
+		ten[9] = (byte) 0x90;
+
+		insertData(psI, 70, ten, 10, false);
+		insertData(psI2, 70, ten, 10, false);
+
+		String[] COLS = {"C1", "C2", "C3", "C4"};
+		String[] OPS = {"=", "<>", "<", "<=", ">", ">="};
+
+		for (int t = 0; t < COLS.length; t++) {
+			for (int o = 0; o < COLS.length; o++) {
+				for (int a = 0; a < OPS.length; a++) {
+
+					String sql = "SELECT T.ID, T." + COLS[t] + ", O.ID, O." + COLS[o] +
+						" FROM FBDVAL.T001 O, FBDVAL.T002 T WHERE T." + COLS[t] + " " + OPS[a] + " O." + COLS[o] + " ORDER BY 1,3";
+
+					System.out.println(sql);
+					try {
+						PreparedStatement psS = conn.prepareStatement(sql);
+						showCompareData(psS);
+					} catch (SQLException sqle) {
+						if ("42818".equals(sqle.getSQLState()))
+							System.out.println("42818 types not comparable " + COLS[t] + " ... " + COLS[o]);
+						else
+							showSQLE(sqle);
+					}
+					conn.commit();
+				}
+			}
+		}
+		System.out.println("END testCompare");
+	}
+
+	/**
+		The length of a binary type is encoded when stored, this
+		test makes sure all the code paths are tested.
+		The encoded length is hidden from the JDBC client.
+	*/
+	public static void testEncodedLengths(Connection conn) throws SQLException, IOException {
+
+		System.out.println("START testEncodedLengths");
+
+		Statement s = conn.createStatement();
+		executeDrop(s, "DROP TABLE FBDVAL.TEL");
+		s.execute("CREATE TABLE FBDVAL.TEL(C2 VARCHAR(32672) FOR BIT DATA, C3 LONG VARCHAR FOR BIT DATA, C4 BLOB(128k))");
+
+		PreparedStatement psi = conn.prepareStatement("INSERT INTO FBDVAL.TEL VALUES(?, ?, ?)");
+		PreparedStatement pss = conn.prepareStatement("SELECT * FROM FBDVAL.TEL");
+		PreparedStatement psd = conn.prepareStatement("DELETE FROM FBDVAL.TEL");
+
+		//insertEL(psi, pss, psd, 0);
+		insertEL(psi, pss, psd,  10);
+		insertEL(psi, pss, psd,  30);
+		insertEL(psi, pss, psd,  31);
+		insertEL(psi, pss, psd,  32); // switch to 2 byte length
+		insertEL(psi, pss, psd,  1345);
+		insertEL(psi, pss, psd,  23456);
+		insertEL(psi, pss, psd,  32672);
+		insertEL(psi, pss, psd,  32700);
+		insertEL(psi, pss, psd,  (32*1024) - 1);
+		insertEL(psi, pss, psd,  (32*1024));
+		insertEL(psi, pss, psd,  (32*1024) + 1);
+		insertEL(psi, pss, psd,  (64*1024) - 1);
+		insertEL(psi, pss, psd,  (64*1024)); // switch to 4 byte length
+		insertEL(psi, pss, psd,  (64*1024) + 1);
+		insertEL(psi, pss, psd,  (110*1024) + 3242);
+
+
+
+
+
+		psi.close();
+		pss.close();
+		psd.close();
+		executeDrop(s, "DROP TABLE FBDVAL.TEL");
+		s.close();
+		System.out.println("END testEncodedLengths");
+
+	}
+
+	private static void insertEL(PreparedStatement psi, PreparedStatement pss, PreparedStatement psd, int length) throws SQLException, IOException {
+
+		Connection conn = psi.getConnection();
+		byte[] data = new byte[length];
+
+		// random simple value check
+		int off = (int)  (System.currentTimeMillis() % ((long) length));
+		data[off] = 0x23;
+
+		psi.setBytes(1, (length <= 32672) ? data : null);
+		psi.setBytes(2, (length <= 32700) ? data : null);
+		psi.setBinaryStream(3, new java.io.ByteArrayInputStream(data), length); // BLOB column
+		psi.executeUpdate();
+		conn.commit();
+
+		ResultSet rs = pss.executeQuery();
+		while (rs.next())
+		{
+			System.out.print(" EL byte[] " + length);
+			byte[] v = rs.getBytes(1);
+			if (v != null) {
+				System.out.print(" C1 " + ((v.length == length) ? "OK" : ("FAIL <" + v.length + ">")));
+				System.out.print(" DATA " + ((v[off] == 0x23) ? "OK" : ("FAIL " + off)));
+			}
+			else
+				System.out.print(" C1 NULL");
+
+			v = rs.getBytes(2);
+			if (v != null) {
+				System.out.print(" C2 " + ((v.length == length) ? "OK" : ("FAIL <" + v.length + ">")));
+				System.out.print(" DATA " + ((v[off] == 0x23) ? "OK" : ("FAIL " + off)));
+			}
+			else
+				System.out.print(" C2 NULL");
+			InputStream c3 = rs.getBinaryStream(3);
+			checkEncodedLengthValue("C3", c3, length, off);
+
+			System.out.println("");
+		}
+		rs.close();
+
+		rs = pss.executeQuery();
+		while (rs.next())
+		{
+			System.out.print(" EL stream " + length);
+
+			checkEncodedLengthValue("C1", rs.getBinaryStream(1), length, off);
+			checkEncodedLengthValue("C2", rs.getBinaryStream(2), length, off);
+			checkEncodedLengthValue("C3", rs.getBinaryStream(3), length, off);
+
+			System.out.println("");
+		}
+		rs.close();
+
+		conn.commit();
+
+		psd.executeUpdate();
+		conn.commit();
+
+
+		psi.setBinaryStream(1, (length <= 32672) ? new java.io.ByteArrayInputStream(data) : null, length);
+		psi.setBinaryStream(2, (length <= 32700) ? new java.io.ByteArrayInputStream(data) : null, length);
+		psi.setBinaryStream(3, new java.io.ByteArrayInputStream(data), length); // BLOB column
+		psi.executeUpdate();
+		conn.commit();
+
+		psd.executeUpdate();
+
+
+
+		conn.commit();
+
+
+	}
+
+	private static void checkEncodedLengthValue(String col, InputStream is, int length, int off) throws IOException {
+
+		if (is == null) {
+			System.out.print(" " + col + " NULL");
+			return;
+		}
+		byte[] buf = new byte[3213];
+		boolean dataOK = false;
+		int sl = 0;
+		for (;;) {
+			int r = is.read(buf);
+			if (r < 0)
+				break;
+
+			if ((off >= sl) && (off < (sl + r))) {
+				if (buf[off - sl] == 0x23)
+					dataOK = true;
+			}
+			sl += r;
+		}
+		System.out.print(" " + col + " " + ((sl == length) ? "OK" : ("FAIL <" + sl + ">")));
+		System.out.print(" DATA " + (dataOK ? "OK" : ("FAIL " + off)));
+	}
+
+	private static void showData(PreparedStatement psS, int id, byte[] original) throws SQLException {
+		psS.setInt(1, id);
+		psS.setInt(2, id + 10);
+		ResultSet rs = psS.executeQuery();
+		while (rs.next()) {
+
+			System.out.print("  ORG ");
+				System.out.print(showData(original));
+			System.out.print("CHR ");
+				System.out.print(showData(rs.getBytes(1)));
+			System.out.print("VAR ");
+				System.out.print(showData(rs.getBytes(2)));
+			System.out.print("LVC ");
+				System.out.print(showData(rs.getBytes(3)));
+			System.out.print("BLOB ");
+				System.out.print(showData(rs.getBytes(4)));
+
+			System.out.println("");
+		}
+		rs.close();
+
+	}
+
+	private static void showCompareData(PreparedStatement psS) throws SQLException {
+		ResultSet rs = psS.executeQuery();
+		while (rs.next()) {
+			System.out.print("  " + rs.getInt(1) + " ");
+			System.out.print(showData(rs.getBytes(2)));
+			System.out.print("  " + rs.getInt(3) + " ");
+			System.out.println(showData(rs.getBytes(4)));
+		}
+		rs.close();
+		psS.close();
+	}
+
+	private static String showData(byte[] data) {
+		if (data == null)
+			return "<NULL> ";
+
+		StringBuffer sb = new StringBuffer();
+		for (int i = 0; i < data.length; i++) {
+			String s = Integer.toHexString(data[i] & 0xff);
+			if (s.length() == 1)
+				sb.append('0');
+			sb.append(s);
+		}
+
+		sb.append(' ');
+		sb.append('(');
+		sb.append(data.length);
+		sb.append(')');
+		sb.append(' ');
+
+		return sb.toString();
+	}
+
+
+
+
+
+
+	private static void showSQLE(SQLException sqle) {
+		do {
+			System.out.println(sqle.getSQLState() + ": " + sqle.getMessage());
+			//sqle.printStackTrace(System.out);
+			sqle = sqle.getNextException();
+		} while (sqle != null);
+	}
+	private static void executeDrop(Statement s, String sql) {
+		try {
+			s.execute(sql);
+		} catch (SQLException sqle) {
+		}
+	}
+	private static void executeOK(Statement s, String sql) {
+		System.out.println(sql);
+		try {
+			s.execute(sql);
+		} catch (SQLException sqle) {
+			System.out.println("FAIL ");
+			showSQLE(sqle);
+		}
+	}
+	private static void statementExceptionExpected(Statement s, String sql) {
+		System.out.println(sql);
+		try {
+			s.execute(sql);
+			System.out.println("FAIL - SQL expected to throw exception");
+		} catch (SQLException sqle) {
+			expectedException(sqle);
+		}
+	}
+	private static void expectedException(SQLException sqle) {
+		String sqlState = sqle.getSQLState();
+		if (sqlState == null) {
+			sqlState = "<NULL>";
+		}
+		System.out.println("EXPECTED SQL Exception: (" + sqlState + ") " + sqle.getMessage());
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forupdate.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/forupdate.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,259 @@
+--
+-- 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 );
+
+create table t2 ( s smallint, c char(10), r real, ts timestamp );
+
+-- we need to turn autocommit off so that cursors aren't closed before
+-- the positioned statements against them.
+autocommit off;
+
+-- . 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;
+select i, v from t1 for read;
+select i, v from t1 for only;
+select i, v from t1 for update of;
+select i, v from t1 update;
+select i, v from t1 only;
+select i, v from t1 read;
+
+
+-- . for update no columns listed
+-- should not complain
+select i, v from t1 for update;
+
+-- . 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';
+delete from t1 where current of c;
+
+--  cursor with same name already exists
+get cursor c as 'select i, v from t1, t2';
+close c;
+
+-- . 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';
+next c1;
+-- 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;
+close c1;
+
+-- . 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';
+delete from t1 where current of c2;
+close c2;
+
+-- . 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';
+delete from t1 where current of c3;
+close c3;
+
+-- . for update col not in select list
+-- this is allowed:
+select i, v from t1 for update of t;
+
+-- . for update col in select list
+-- this is allowed:
+select i, v from t1 for update of i;
+
+-- . 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;
+
+-- . 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;
+
+-- . 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;
+-- no subqueries are updatable
+select i from t1 where i=(select i from t1) for update;
+select i from t1 where i in (select i from t1) for update;
+select i from t1 where exists (select i from t1) for update;
+select i from t1 where exists (select s from t2) for update;
+select i from t1 where exists (select s from t2 where i=s) for update;
+-- note subquery in select expr is not updatable
+select (select s from t2) from t1 where exists (select i from t1) for update;
+select (select s from t2 where i=s) from t1 where exists (select i from t1) for update;
+select * from (select i, d from t1) a for update;
+select * from (select i+10, d from t1) a for update;
+-- constant table not updatable
+select * from (values (1, 2, 3)) a for update;
+values (1, 2, 3) for update;
+
+-- unions are not updatable
+select * from t1 union all select * from t1 for update;
+
+-- . 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';
+next c4;
+-- this will get a target table mismatch error, it uses the correlation name:
+delete from s1 where current of c4;
+-- this will compile and get a 'no current row' error, it uses the table name:
+delete from t1 where current of c4;
+close c4;
+
+-- . 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;
+select i from t1 for update of v, i, t, d;
+
+-- . 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;
+select i from t1 for update of t, v;
+select i from t1 for update of d;
+
+-- . 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;
+
+-- . 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';
+
+
+-- 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;
+close c5;
+
+-- . include duplicate column name
+-- expect an error:
+select i from t1 for update of i, v, v, t;
+
+-- . 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;
+
+-- . 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;
+
+
+-- 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));
+create index t3bi on t3(b);
+
+insert into t3 values (1, 'hhhh'), (2, 'uuuu'), (3, 'yyyy'), (4, 'aaaa'), (5, 'jjjj'), (6, 'rrrr');
+insert into t3 values (7, 'iiii'), (8, 'wwww'), (9, 'rrrr'), (10, 'cccc'), (11, 'hhhh'), (12, 'rrrr');
+
+commit;
+
+maximumdisplaywidth 5000;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+
+select i, b from t3 FOR UPDATE;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+commit;
+
+prepare T3PK as 'select i, b from t3  where i = ? FOR UPDATE';
+execute T3PK using 'values (7)';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+remove T3PK;
+commit;
+
+prepare T3PKFORCE as 'select i, b from t3 where i = ? FOR UPDATE';
+
+prepare T3PK as 'select i, b from t3 where i < ? FOR UPDATE';
+execute T3PK using 'values (7)';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+remove T3PK;
+commit;
+
+-- non-unique index
+
+prepare T3BI as 'select i, b from t3  where b = ? FOR UPDATE';
+execute T3BI using 'values (''cccc'')';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+remove T3BI;
+commit;
+
+prepare T3BIFORCE as 'select i, b from t3 where b = ? FOR UPDATE';
+commit;
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(0);
+
+
+-- 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';
+next T3C1;
+next T3C1;
+close T3C1;
+commit;
+
+-- second case - simple update;
+get cursor T3C1 as 'select i,b from t3 where i = 4 for update';
+next T3C1;
+update t3 set i = 13 where current of T3C1;
+next T3C1;
+close T3C1;
+commit;
+
+-- 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';
+next T3C1;
+update t3 set i = 14 where current of T3C1;
+insert into t3 values (6, 'new!');
+-- 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;
+close T3C1;
+commit;
+
+-- reset autocomiit
+autocommit on;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+
+-- bug 5643
+-- JCC throws NPE when trying to execute a cursor after the resultset is closed
+autocommit off;
+create table t1 (c1 int);
+insert into t1 (c1) values (1),(2),(3);
+get cursor curs1 as 'select * from t1 for update of c1';
+prepare curs1 as 'update t1 set c1=c1 where current of curs1';
+next curs1;
+close curs1;
+execute curs1;
+
+-- clean up
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/functions.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/functions.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,201 @@
+-- Test various functions
+
+create table alltypes(
+  id int not null primary key,
+  smallIntCol smallint,
+  intCol int,
+  bigIntCol bigint,
+  floatCol float,
+  float1Col float(1),
+  float26Col float(26),
+  realCol real,
+  doubleCol double,
+  decimalCol decimal,
+  decimal10Col decimal(10),
+  decimal11Col decimal(11),
+  numeric10d2Col numeric(10,2),
+  charCol char,
+  char32Col char(32),
+  charForBitCol char(16) for bit data,
+  varcharCol varchar(64),
+  varcharForBitCol varchar(64) for bit data,
+  longVarcharCol long varchar,
+  blobCol blob(10k),
+  clobCol clob(10k),
+  dateCol date,
+  timeCol time,
+  timestampCol timestamp);
+insert into allTypes(id) values(1),(2);
+update allTypes set smallIntCol = 2 where id = 1;
+update allTypes set intCol = 2 where id = 1;
+update allTypes set bigIntCol = 3 where id = 1;
+update allTypes set floatCol = 4.1 where id = 1;
+update allTypes set float1Col = 5 where id = 1;
+update allTypes set float26Col = 6.1234567890123456 where id = 1;
+update allTypes set realCol = 7.2 where id = 1;
+update allTypes set doubleCol = 8.2 where id = 1;
+update allTypes set decimalCol = 9 where id = 1;
+update allTypes set decimal10Col = 1234 where id = 1;
+update allTypes set decimal11Col = 1234 where id = 1;
+update allTypes set numeric10d2Col = 11.12 where id = 1;
+update allTypes set charCol = 'a' where id = 1;
+update allTypes set char32Col = 'abc' where id = 1;
+update allTypes set charForBitCol = X'ABCD' where id = 1;
+update allTypes set varcharCol = 'abcde' where id = 1;
+update allTypes set varcharForBitCol = X'ABCDEF' where id = 1;
+update allTypes set longVarcharCol = 'abcdefg' where id = 1;
+update allTypes set blobCol = cast( X'0031' as blob(10k)) where id = 1;
+update allTypes set clobCol = 'clob data' where id = 1;
+update allTypes set dateCol = date( '2004-3-13') where id = 1;
+update allTypes set timeCol = time( '16:07:21') where id = 1;
+update allTypes set timestampCol = timestamp( '2004-3-14 17:08:22.123456') where id = 1;
+
+select id, length(smallIntCol) from allTypes order by id;
+select id, length(intCol) from allTypes order by id;
+select id, length(bigIntCol) from allTypes order by id;
+select id, length(floatCol) from allTypes order by id;
+select id, length(float1Col) from allTypes order by id;
+select id, length(float26Col) from allTypes order by id;
+select id, length(realCol) from allTypes order by id;
+select id, length(doubleCol) from allTypes order by id;
+select id, length(decimalCol) from allTypes order by id;
+select id, length(decimal10Col) from allTypes order by id;
+select id, length(decimal11Col) from allTypes order by id;
+select id, length(numeric10d2Col) from allTypes order by id;
+select id, length(charCol) from allTypes order by id;
+select id, length(char32Col) from allTypes order by id;
+select id, length(charForBitCol) from allTypes order by id;
+select id, length(varcharCol) from allTypes order by id;
+select id, length(varcharForBitCol) from allTypes order by id;
+select id, length(longVarcharCol) from allTypes order by id;
+select id, length(blobCol) from allTypes order by id;
+select id, length(clobCol) from allTypes order by id;
+select id, length(dateCol) from allTypes order by id;
+select id, length(timeCol) from allTypes order by id;
+select id, length(timestampCol) from allTypes order by id;
+
+-- try length of constants
+values( length( 1), length( 720176), length( 12345678901));
+values( length( 2.2E-1));
+values( length( 1.), length( 12.3), length( 123.4), length( 123.45));
+values( length( '1'), length( '12'));
+values( length( X'00'), length( X'FF'), length( X'FFFF'));
+values( length( date('0001-1-1')), length( time('0:00:00')), length( timestamp( '0001-1-1 0:00:00')));
+
+-- try a length in the where clause
+select id from allTypes where length(smallIntCol) > 5 order by id;
+select id from allTypes where length(intCol) > 5 order by id;
+select id from allTypes where length(bigIntCol) > 5 order by id;
+select id from allTypes where length(floatCol) > 5 order by id;
+select id from allTypes where length(float1Col) > 5 order by id;
+select id from allTypes where length(float26Col) > 5 order by id;
+select id from allTypes where length(realCol) > 5 order by id;
+select id from allTypes where length(doubleCol) > 5 order by id;
+select id from allTypes where length(decimalCol) > 5 order by id;
+select id from allTypes where length(decimal10Col) > 5 order by id;
+select id from allTypes where length(decimal11Col) > 5 order by id;
+select id from allTypes where length(numeric10d2Col) > 5 order by id;
+select id from allTypes where length(charCol) > 5 order by id;
+select id from allTypes where length(char32Col) > 5 order by id;
+select id from allTypes where length(charForBitCol) > 5 order by id;
+select id from allTypes where length(varcharCol) > 5 order by id;
+select id from allTypes where length(varcharForBitCol) > 5 order by id;
+select id from allTypes where length(longVarcharCol) > 5 order by id;
+select id from allTypes where length(blobCol) > 5 order by id;
+select id from allTypes where length(clobCol) > 5 order by id;
+select id from allTypes where length(dateCol) > 5 order by id;
+select id from allTypes where length(timeCol) > 5 order by id;
+select id from allTypes where length(timestampCol) > 5 order by id;
+
+-- try an expression
+select id, length( charCol || 'abc') from allTypes order by id;
+
+
+-- bug 5761 & 5627
+-- JDBC escape length function has the following behavior
+-- LENGTH (RTRIM (xxxx))
+values {FN LENGTH('xxxx                    ')};
+values {FN LENGTH(' xxxx                    ')};
+values {FN LENGTH('  xxxx                    ')};
+values {FN LENGTH('   xxxx                    ')};
+
+
+CREATE FUNCTION SV_RNNI(P1 INT) RETURNS VARCHAR(10) RETURNS NULL ON NULL INPUT EXTERNAL NAME 'java.lang.String.valueOf' LANGUAGE JAVA PARAMETER STYLE JAVA;
+CREATE FUNCTION SV_CNI(P1 INT) RETURNS VARCHAR(10) CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.String.valueOf' LANGUAGE JAVA PARAMETER STYLE JAVA;
+CREATE FUNCTION SV_DEF(P1 INT) RETURNS VARCHAR(10) EXTERNAL NAME 'java.lang.String.valueOf' LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+CREATE FUNCTION MAX_RNNI(P1 INT, P2 INT) RETURNS INT RETURNS NULL ON NULL INPUT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA;
+CREATE FUNCTION MAX_CNI(P1 INT, P2 INT) RETURNS INT CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA;
+CREATE FUNCTION MAX_DEF(P1 INT, P2 INT) RETURNS INT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+
+VALUES SV_RNNI(3);
+VALUES SV_CNI(4);
+VALUES SV_DEF(5);
+
+create table SV_TAB(I INT);
+insert into SV_TAB values(null);
+insert into SV_TAB values(7);
+
+select SV_RNNI(I) from SV_TAB where I = 7;
+select SV_CNI(I) from SV_TAB where I = 7;
+select SV_DEF(I) from SV_TAB where I = 7;
+
+select SV_RNNI(I) from SV_TAB where I IS NULL;
+select SV_CNI(I) from SV_TAB where I IS NULL;
+select SV_DEF(I) from SV_TAB where I IS NULL;
+
+VALUES MAX_RNNI(67, 12);
+VALUES MAX_RNNI(-3, -98);
+VALUES MAX_CNI(5, 3);
+VALUES MAX_DEF(99, -45);
+
+select MAX_RNNI(5, I) from SV_TAB where I = 7;
+select MAX_CNI(6, I) from SV_TAB where I = 7;
+select MAX_DEF(2, I) from SV_TAB where I = 7;
+
+select MAX_RNNI(I, 34) from SV_TAB where I = 7;
+select MAX_CNI(I, 24) from SV_TAB where I = 7;
+select MAX_DEF(I, 14) from SV_TAB where I = 7;
+
+select MAX_RNNI(5, I) from SV_TAB where I IS NULL;
+select MAX_CNI(6, I) from SV_TAB where I IS NULL;
+select MAX_DEF(2, I) from SV_TAB where I IS NULL;
+
+select MAX_RNNI(I, 34) from SV_TAB where I IS NULL;
+select MAX_CNI(I, 24) from SV_TAB where I IS NULL;
+select MAX_DEF(I, 14) from SV_TAB where I IS NULL;
+
+CREATE FUNCTION COUNT_ROWS(P1 VARCHAR(128), P2 VARCHAR(128)) RETURNS INT
+READS SQL DATA
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.countRows'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+CREATE FUNCTION FN_ABS(P1 INT) RETURNS INT
+NO SQL
+RETURNS NULL ON NULL INPUT
+EXTERNAL NAME 'java.lang.Math.abs'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+select FN_ABS(i) FROM SV_TAB;
+select COUNT_ROWS(CURRENT SCHEMA, 'SV_TAB') from SV_TAB;
+select FN_ABS(i), COUNT_ROWS(CURRENT SCHEMA, 'SV_TAB') from SV_TAB;
+
+DROP FUNCTION SV_RNNI;
+DROP FUNCTION SV_CNI;
+DROP FUNCTION SV_DEF;
+DROP FUNCTION MAX_RNNI;
+DROP FUNCTION MAX_CNI;
+DROP FUNCTION MAX_DEF;
+
+DROP FUNCTION FN_ABS;
+DROP FUNCTION COUNT_ROWS;
+
+DROP TABLE SV_TAB;
+
+-- check MODIFIES SQL DATA not allowed with FUNCTION
+CREATE FUNCTION COUNT_ROWS(P1 VARCHAR(128), P2 VARCHAR(128)) RETURNS INT
+MODIFIES SQL DATA
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.countRows'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/groupBy.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/groupBy.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,349 @@
+
+-- negative tests for group by and having clauses
+
+create table t1 (a int, b int, c int);
+create table t2 (a int, b int, c int);
+insert into t2 values (1,1,1), (2,2,2);
+
+-- group by position
+select * from t1 group by 1;
+
+-- column in group by list not in from list
+select a as d from t1 group by d;
+
+-- column in group by list not in select list
+select a as b from t1 group by b;
+select a from t1 group by b;
+select a, char(b) from t1 group by a;
+
+-- columns in group by list must be unique
+select a, b from t1 group by a, a;
+select a, b from t1 group by a, t1.a;
+
+-- cursor with group by is not updatable
+get cursor c1 as 'select a from t1 group by a for update';
+
+-- noncorrelated subquery that returns too many rows
+select a, (select a from t2) from t1 group by a;
+
+-- correlation on outer table
+select t2.a, (select b from t1 where t1.b = t2.b) from t1 t2 group by t2.a;
+
+-- having clause
+
+-- cannot contain column references which are not grouping columns
+select a from t1 group by a having c = 1;
+select a from t1 o group by a having a = (select a from t1 where b = b.o);
+
+-- ?s in group by
+select a from t1 group by ?;
+
+-- group by on long varchar type
+create table unmapped(c1 long varchar);
+select c1, max(1) from unmapped group by c1;
+
+-- clean up
+drop table t1;
+drop table t2;
+drop table unmapped;
+-- Test group by and having clauses with no aggregates
+
+-- create an all types tables
+create table t (i int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, 
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(2) for bit data, lbv long varchar for bit data);
+create table tab1 (
+				i integer, 
+				s smallint, 
+				l bigint,
+				c char(30),
+				v varchar(30),
+				lvc long varchar,
+				d double precision,
+				r real,
+				dt date, 
+				t time, 
+				ts timestamp);
+
+-- populate tables
+insert into t (i) values (null);
+insert into t (i) values (null);
+
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (1, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 200, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 2000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'goodbye', 'everyone is here', 'adios, muchachos',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'noone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  100.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 100.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-09-09'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:55:55'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:55:55'),
+					  X'12af', X'0f0f', X'ABCD');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'ffff', X'0f0f', X'1234');
+insert into t values (0, 100, 1000000,
+					  'hello', 'everyone is here', 'what the heck do we care?',
+					  200.0e0, 200.0e0, 
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'ffff', X'ABCD');
+-- bit maps to Byte[], so can't test for now
+insert into tab1
+select i, s, l, c, v, lvc, d, r, dt, t, ts from t;
+
+-- simple grouping
+select i from t group by i order by i;
+select s from t group by s order by s;
+select l from t group by l order by l;
+select c from t group by c order by c;
+select v from t group by v order by v;
+select d from t group by d order by d;
+select r from t group by r order by r;
+select dt from t group by dt order by dt;
+select t from t group by t order by t;
+select ts from t group by ts order by ts;
+select b from t group by b order by b;
+select bv from t group by bv order by bv;
+-- grouping by long varchar [for bit data] cols should fail in db2 mode
+select lbv from t group by lbv order by lbv;
+
+-- multicolumn grouping
+select i, dt, b from t where 1=1 group by i, dt, b order by i,dt,b;
+select i, dt, b from t group by i, dt, b order by i,dt,b;
+select i, dt, b from t group by b, i, dt order by i,dt,b;
+select i, dt, b from t group by dt, i, b order by i,dt,b;
+
+-- group by expression
+select expr1, expr2
+from (select i * s, c || v from t) t (expr1, expr2) group by expr2, expr1 order by expr2,expr1;
+
+-- group by correlated subquery
+select i, expr1
+from (select i, (select distinct i from t m where m.i = t.i) from t) t (i, expr1)
+ group by i, expr1 order by i,expr1;
+
+-- distinct and group by
+select distinct i, dt, b from t group by i, dt, b order by i,dt,b;
+
+-- order by and group by
+-- same order
+select i, dt, b from t group by i, dt, b order by i, dt, b;
+-- subset in same order
+select i, dt, b from t group by i, dt, b order by i, dt;
+-- different order
+select i, dt, b from t group by i, dt, b order by b, dt, i;
+-- subset in different order
+select i, dt, b from t group by i, dt, b order by b, dt;
+
+-- group by without having in from subquery
+select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt order by t_i,t_dt,m_i,m_dt;
+
+select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+
+select * from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+
+select t.*, m.* from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,t.t_dt,m.t_i,m.t_dt;
+
+select t.t_i, t.t_dt, m.* from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,t.t_dt,m.t_i,m.t_dt;
+
+
+-- additional columns in group by list not in select list
+select i, dt, b from t group by i, dt, b order by i,dt,b;
+select t.i from t group by i, dt, b order by i;
+select t.dt from t group by i, dt, b order by dt;
+select t.b from t group by i, dt, b order by b;
+
+select t.t_i, m.t_i from
+(select i, dt from t group by i, dt) t (t_i, t_dt),
+(select i, dt from t group by i, dt) m (t_i, t_dt)
+where t.t_i = m.t_i and t.t_dt = m.t_dt
+group by t.t_i, t.t_dt, m.t_i, m.t_dt order by t.t_i,m.t_i;
+
+-- having
+
+-- parameters in having clause
+prepare p1 as 'select i, dt, b from t group by i, dt, b having i = ? order by i,dt,b';
+execute p1 using 'values 0';
+remove p1;
+
+-- group by with having in from subquery
+select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt order by t_i,t_dt,m_i,m_dt;
+
+select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+group by t_i, t_dt, m_i, m_dt order by t_i,t_dt,m_i,m_dt;
+
+select * from
+(select i, dt from t group by i, dt having 1=1) t (t_i, t_dt),
+(select i, dt from t group by i, dt having i = 0) m (m_i, m_dt)
+where t_i = m_i and t_dt = m_dt
+group by t_i, t_dt, m_i, m_dt
+having t_i * m_i = m_i * t_i order by t_i,t_dt,m_i,m_dt;
+
+-- correlated subquery in having clause
+select i, dt from t
+group by i, dt
+having i = (select distinct i from tab1 where t.i = tab1.i) order by i,dt;
+select i, dt from t
+group by i, dt
+having i = (select i from t m group by i having t.i = m.i) order by i,dt;
+-- column references in having clause match columns in group by list
+select i as outer_i, dt from t
+group by i, dt
+having i = (select i from t m group by i having t.i = m.i) order by outer_i,dt;
+
+-- additional columns in group by list not in select list
+select i, dt from t group by i, dt order by i,dt;
+select t.dt from t group by i, dt having i = 0 order by t.dt;
+select t.dt from t group by i, dt having i <> 0 order by t.dt;
+select t.dt from t group by i, dt having i != 0 order by t.dt;
+
+-- drop tables
+drop table t;
+drop table tab1;
+-- negative tests for selects with a having clause without a group by
+
+-- create a table
+create table t1(c1 int, c2 int);
+
+-- binding of having clause
+select 1 from t1 having 1;
+
+-- column references in having clause not allowed if no group by
+select * from t1 having c1 = 1;
+select 1 from t1 having c1 = 1;
+
+-- correlated subquery in having clause
+select * from t1 t1_outer 
+having 1 = (select 1 from t1 where c1 = t1_outer.c1);
+
+-- drop the table
+drop table t1;
+
+
+-- bug 5653
+-- test (almost useful) restrictions on a having clause without a group by clause
+
+-- create the table
+create table t1 (c1 float);
+
+-- populate the table
+insert into t1 values 0.0, 90.0;
+
+-- this is the only query that should not fail
+-- filter out all rows
+select 1 from t1 having 1=0;
+
+-- all 6 queries below should fail after bug 5653 is fixed
+-- select * 
+select * from t1 having 1=1;
+
+-- select column
+select c1 from t1 having 1=1;
+
+-- select with a built-in function sqrt
+select sqrt(c1) from t1 having 1=1;
+
+-- non-correlated subquery in having clause
+select * from t1 having 1 = (select 1 from t1 where c1 = 0.0);
+
+-- expression in select list
+select (c1 * c1) / c1 from t1 where c1 <> 0 having 1=1;
+
+-- between
+select * from t1 having 1 between 1 and 2;
+
+-- drop the table
+drop table t1;
+
+-- bug 5920
+-- test that HAVING without GROUPBY makes one group
+create table t(c int, d int);
+insert into t(c,d) values (1,10),(2,20),(2,20),(3,30),(3,30),(3,30);
+select avg(c) from t having 1 < 2;
+-- used to give several rows, now gives only one
+select 10 from t having 1 < 2;
+-- ok, gives one row
+select 10,avg(c) from t having 1 < 2;
+drop table t;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,190 @@
+-- create a table
+create table t1(c11 int, c12 int);
+
+-- insert data into tables
+insert into t1 values(1,1);
+insert into t1 values(2,2);
+
+-- set autocommit off
+autocommit off;
+
+-- 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';
+get scroll insensitive with nohold cursor jdk2 as 'SELECT * FROM t1';
+get with hold cursor jdk4 as 'SELECT * FROM t1';
+
+-- do fetches from these cursors
+next jdk1;
+next jdk2;
+next jdk4;
+
+--commit
+commit;
+
+-- now try the fetch on cursors again after commit
+-- cursors jdk1 and jdk2 will give errors
+next jdk1;
+next jdk2;
+next jdk4;
+-- end of resultset for jdk4, but try next again
+next jdk4;
+close jdk4;
+next jdk4;
+
+-- 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';
+get scroll insensitive with nohold cursor jdk2 as 'SELECT * FROM t1';
+get with hold cursor jdk4 as 'SELECT * FROM t1';
+
+-- do fetches from these cursors
+next jdk1;
+next jdk2;
+next jdk4;
+
+--rollback
+rollback;
+
+-- now try the fetch on cursors again after rollback
+-- all the cursors will give errors
+next jdk1;
+next jdk2;
+next jdk4;
+
+-- 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';
+get with hold cursor jdk4 as 'SELECT * FROM t1';
+next jdk1;
+next jdk4;
+-- wont' be able to drop table because of cursors jdk1 and jdk4
+drop table t1;
+commit;
+
+-- drop table still won't work because jdk4 is still open after commit
+drop table t1;
+
+-- close cursor jdk4 and try then deleting the table
+close jdk4;
+drop table t1;
+
+-- recreate and populate the table for next test
+create table t1(c11 int, c12 int);
+insert into t1 values(1,1);
+insert into t1 values(2,2);
+
+-- fourth test - try to change the isolation level while there are
+-- held cursors
+get with nohold cursor jdk1 as 'SELECT * FROM t1';
+get with hold cursor jdk4 as 'SELECT * FROM t1';
+next jdk1;
+next jdk4;
+
+-- try to change the isolation level. will give error because of jdk1 and jdk4
+set current isolation RR;
+
+commit;
+
+-- attempt to change isolation level should give error because of jdk4 hold cursor
+set isolation = REPEATABLE READ;
+
+-- close jdk4 and then should be able to change isolation
+close jdk4;
+set isolation to serializable;
+
+-- fifth test - try isolation level change alongwith changing the isolation
+-- level of just one statement
+get with hold cursor jdk4 as 'SELECT * FROM t1';
+get with nohold cursor jdk1 as 'SELECT * FROM t1 WITH CS';
+next jdk4;
+next jdk1;
+-- following should fail because of cursor jdk4
+set isolation RS;
+-- following should fail because of cursor jdk4
+set isolation UR;
+close jdk4;
+-- should be able to change the isolation now
+set isolation READ UNCOMMITTED;
+set isolation RS;
+
+-- sixth test - try positioned update with hold cursor
+get with hold cursor jdk4 as 'SELECT * FROM t1 FOR UPDATE';
+-- following should give error because cursor is not positioned on any row
+update t1 set c12=12 where current of jdk4;
+select * from t1;
+next jdk4;
+update t1 set c12=12 where current of jdk4;
+select * from t1;
+commit;
+-- after commit, the next transaction should do a fetch again before doing
+-- any positioned update
+update t1 set c12=123 where current of jdk4;
+select * from t1;
+next jdk4;
+update t1 set c12=23 where current of jdk4;
+select * from t1;
+close jdk4;
+update t1 set c12=234 where current of jdk4;
+select * from t1;
+
+-- seventh test - try positioned delete with hold cursor
+get with hold cursor jdk4 as 'SELECT * FROM t1 FOR UPDATE';
+-- following should give error because cursor is not positioned on any row
+delete from t1 where current of jdk4;
+select * from t1;
+next jdk4;
+delete from  t1 where current of jdk4;
+select * from t1;
+commit;
+-- after commit, the next transaction should do a fetch again before doing
+-- any positioned delete
+delete from t1 where current of jdk4;
+select * from t1;
+next jdk4;
+delete from t1 where current of jdk4;
+select * from t1;
+close jdk4;
+delete from t1 where current of jdk4;
+select * from t1;
+
+-- populate the table for next test
+insert into t1 values(1,1);
+insert into t1 values(2,2);
+
+-- eighth test - scrollable cursors
+get scroll insensitive with hold cursor jdk4 as 'SELECT * FROM t1';
+commit;
+previous jdk4;
+after last jdk4;
+before first jdk4;
+first jdk4;
+last jdk4;
+next jdk4;
+previous jdk4;
+next jdk4;
+close jdk4;
+first jdk4;
+
+-- ninth test - close the updateable holdable cursor after commit
+-- we get npe
+get with hold cursor jdk4 as 'SELECT * FROM T1 FOR UPDATE';
+next jdk4;
+commit;
+close jdk4;
+
+-- tenth test - bug 4515 - have a more useful message
+-- update where current of fails in autocommit=true, held open cursor
+
+autocommit on;
+get with hold cursor scrollCursor as 'select * from t1 for update of c12';
+next scrollCursor;
+update t1 set c12=c12+1 where current of scrollCursor;
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorIJ_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+
+runwithjdk13=false
+runwithibm13=false
+excludeJCC=1.1

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,209 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.lang.reflect.*;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Test hold cursor after commit using reflection. This test is specifically to test
+ * this feature under jdk13.
+ */
+public class holdCursorJavaReflection {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+  //we implemented hold cursor functionality in EmbedConnection20 package and hence
+  //the functionality is available under both jdk14 and jdk13 (though, jdbc in jdk13
+  //doesn't have the api to access it).
+  //An internal project in TIVOLI needed access to holdability under jdk13 and we
+  //recommended them to use reflection to get to holdability apis under jdk13.
+  //This will also be documented on our website under faq
+  //In order to have a test for that workaround in our test suite, I am using reflection
+  //for createStatement and prepareStatement and prepareCall.
+
+  //prepareStatement and prepareCall take 4 parameters
+  private static Class[] PREP_STMT_PARAM = { String.class, Integer.TYPE, Integer.TYPE, Integer.TYPE };
+  private static Object[] PREP_STMT_ARG = { "select * from t1  where c12 = ?", new Integer(ResultSet.TYPE_FORWARD_ONLY),
+   new Integer(ResultSet.CONCUR_READ_ONLY), new Integer(ResultSet.HOLD_CURSORS_OVER_COMMIT)};
+
+  private static Object[] PREP_STMT_ERROR_ARG = { "select * from t1NotThere  where c12 = ?",
+											new
+												Integer(ResultSet.TYPE_FORWARD_ONLY),   new Integer(ResultSet.CONCUR_READ_ONLY), new Integer(ResultSet.HOLD_CURSORS_OVER_COMMIT)};
+	
+  //createStatement takes 3 parameters
+  private static Class[] STMT_PARAM = { Integer.TYPE, Integer.TYPE, Integer.TYPE };
+  private static Object[] STMT_ARG = { new Integer(ResultSet.TYPE_FORWARD_ONLY),
+   new Integer(ResultSet.CONCUR_READ_ONLY), new Integer(ResultSet.HOLD_CURSORS_OVER_COMMIT)};
+
+  public static void main (String args[])
+  {
+    try {
+		/* Load the JDBC Driver class */
+		// use the ij utility to read the property file and
+		// make the initial connection.
+		ij.getPropertyArg(args);
+		Connection conn = ij.startJBMS();
+
+		createAndPopulateTable(conn);
+
+    //set autocommit to off after creating table and inserting data
+    conn.setAutoCommit(false);
+		testHoldability(conn);
+		testPreparedStatement(conn);
+		testCallableStatement(conn);
+		conn.rollback();
+		conn.close();
+    } catch (Exception e) {
+		System.out.println("FAIL -- unexpected exception "+e);
+		JDBCDisplayUtil.ShowException(System.out, e);
+		e.printStackTrace();
+    }
+  }
+
+  //create table and insert couple of rows
+  private static void createAndPopulateTable(Connection conn) throws SQLException {
+    Statement stmt = conn.createStatement();
+
+    System.out.println("Creating table...");
+    stmt.executeUpdate( "CREATE TABLE T1 (c11 int, c12 int)" );
+    stmt.executeUpdate("INSERT INTO T1 VALUES(1,1)");
+    stmt.executeUpdate("INSERT INTO T1 VALUES(2,1)");
+    System.out.println("done creating table and inserting data.");
+
+    stmt.close();
+  }
+
+  //test cursor holdability for callable statements
+  private static void testCallableStatement(Connection conn) throws Exception
+  {
+    CallableStatement	cs;
+    ResultSet			rs;
+
+    System.out.println("Start hold cursor for callable statements test");
+
+    //create a callable statement with hold cursor over commit using reflection.
+    Method sh = conn.getClass().getMethod("prepareCall", PREP_STMT_PARAM);
+    cs = (CallableStatement) (sh.invoke(conn, PREP_STMT_ARG));
+    cs.setInt(1,1);
+    rs = cs.executeQuery();
+
+    System.out.println("do next() before commit");
+    rs.next();
+    System.out.println("look at first column's value: " + rs.getInt(1));
+    conn.commit();
+    System.out.println("After commit, look at first column's value: " + rs.getInt(1));
+    System.out.println("do next() after commit. Should be at the end of resultset");
+    rs.next();
+    System.out.println("one more next() here will give no more rows");
+    rs.next();
+    System.out.println("Holdable cursor after commit for callable statements test over");
+    rs.close();
+  }
+
+  //test cursor holdability after commit
+  private static void testHoldability(Connection conn) throws Exception
+  {
+    Statement	s;
+    PreparedStatement	ps;
+    ResultSet			rs;
+
+    System.out.println("Start holdable cursor after commit test");
+    //create a statement with hold cursor over commit using reflection.
+    Method sh = conn.getClass().getMethod("createStatement", STMT_PARAM);
+    s = (Statement) (sh.invoke(conn, STMT_ARG));
+
+    //open a cursor with multiple rows resultset
+    rs = s.executeQuery("select * from t1");
+    System.out.println("do next() before commit");
+    rs.next();
+    System.out.println("look at first column's value: " + rs.getInt(1));
+    conn.commit();
+    System.out.println("After commit, look at first column's value: " + rs.getInt(1));
+    System.out.println("do next() after commit. Should be at the end of resultset");
+    rs.next();
+    System.out.println("one more next() here will give no more rows");
+    rs.next();
+    System.out.println("Holdable cursor after commit test over");
+    rs.close();
+  }
+
+  //test cursor holdability for prepared statements
+  private static void testPreparedStatement(Connection conn) throws Exception
+  {
+    PreparedStatement	ps;
+    ResultSet			rs;
+
+    System.out.println("Start hold cursor for prepared statements test");
+
+    //create a prepared statement with hold cursor over commit using reflection.
+    Method sh = conn.getClass().getMethod("prepareStatement", PREP_STMT_PARAM);
+    ps = (PreparedStatement) (sh.invoke(conn, PREP_STMT_ARG));
+
+    ps.setInt(1,1);
+    rs = ps.executeQuery();
+
+    System.out.println("do next() before commit");
+    rs.next();
+    System.out.println("look at first column's value: " + rs.getInt(1));
+    conn.commit();
+    System.out.println("After commit, look at first column's value: " + rs.getInt(1));
+    System.out.println("do next() after commit. Should be at the end of resultset");
+    rs.next();
+    System.out.println("one more next() here will give no more rows");
+    rs.next();
+    System.out.println("Holdable cursor after commit for prepared statements test over");
+    rs.close();
+
+	// Create a prepared statement that will fail on prepare.  Make sure we
+	// handle errors ok.
+	sh = conn.getClass().getMethod("prepareStatement", PREP_STMT_PARAM);
+	try {
+		ps = (PreparedStatement) (sh.invoke(conn, PREP_STMT_ERROR_ARG));
+		
+		ps.setInt(1,1);
+		rs = ps.executeQuery();
+	}
+	catch (SQLException se)
+	{
+		System.out.println("Expected Exception:" + se.getMessage());
+	}
+	catch (InvocationTargetException itex) {
+		Throwable e = itex.getTargetException();
+		//prepareStatement Can only throw SQLExcepton
+		if (e instanceof SQLException)
+		{
+			SQLException se = (SQLException)e;
+			System.out.println("Expected Exception:" + se.getMessage());
+		}
+		else
+			throw itex;
+	}
+	// make sure our connection is still ok.
+	conn.commit();
+  }
+	
+}
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/holdCursorJavaReflection_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,10 @@
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+
+excludeJCC=1.1

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/identifier.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/identifier.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,176 @@
+
+--
+-- this test is for identifiers and delimited idenifiers
+-- identifiers get converted to upper case
+-- delimited identifiers have their surrounding double quotes removed and
+-- any pair of adjacent double quotes is converted to a single double quote
+-- max identifier length is 128
+--
+
+-- trailing blank not trimmed
+create table t1("       " int);
+
+-- duplicate identifiers
+create table t1 (c1 int, C1 int);
+
+-- duplicate identifier/delimited identifier
+create table t1 (c1 int, "C1" int);
+
+-- duplicate delimited identifier/identifier
+create table t1 ("C1" int, C1 int);
+
+-- duplicate delimited identifiers
+create table t1 ("C1" int, "C1" int);
+
+-- verify preservation of spaces
+create table success1 (c1 int, " C1" int, "  C1  " int);
+
+-- verify correct handling of case
+create table success2 ("c1" int, "C1" int);
+
+create table success3 (c1 int, "c1" int);
+
+-- verify correct handling of double quotes
+create table success4 ("C1""" int, "C1""""" int);
+
+-- verify correct handling in an insert
+insert into success1 (c1, " C1", "  C1  ") 
+values (1, 2, 3);
+
+insert into success1 (C1, " C1", "  C1  ") 
+values (6, 7, 8);
+
+-- negative testing for an insert
+-- "c1 " is not in success1
+insert into success1 (c1, "c1 ", " C1", " C1 ", "  C1  ") 
+values (11, 12, 13, 14, 15);
+
+-- C1 appears twice in the column list - C1 and "C1"
+insert into success1 (C1, "C1", " C1", " C1 ", "  C1  ") 
+values (16, 17, 18, 19, 20);
+
+
+-- verify correct handling in a select
+select C1, " C1", " C1", "  C1  " from success1;
+
+-- following should fail for "C1 "
+select c1, "C1 ", " C1", " C1 ", "  C1  " from success1;
+
+-- negative testing for an insert
+-- "c1 " should not match
+select c1, "c1 ", " C1", " C1 ", "  C1  "  from success1;
+
+-- negative test for max identifier width
+-- 4567890123456789012345678901234567890123456789012345678901234567890
+create table
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast6
+(c1 int);
+create table
+"asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast7"
+(c1 int);
+
+-- positive test for max identifier width
+create table
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast
+(c1 int);
+insert into 
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast
+values (1);
+select * from 
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast;
+
+create table
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast"
+(c1 int);
+insert into 
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast"
+values (2);
+select * from 
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast";
+
+-- drop the tables
+drop table success1;
+drop table success2;
+drop table success3;
+drop table success4;
+drop table
+asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast;
+drop table
+"delimitedsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfaslast";
+
+
+-- 2003-04-14 14:04:38 
+-- new testcases for SQL92 reserved keywords as identifiers
+
+CREATE TABLE WHEN (WHEN INT, A INT);
+INSERT INTO WHEN (WHEN) VALUES (1);
+INSERT INTO WHEN VALUES (2, 2);
+SELECT * FROM WHEN;
+SELECT WHEN.WHEN, WHEN FROM WHEN;
+SELECT WHEN.WHEN, WHEN FROM WHEN WHEN;
+DROP TABLE WHEN;
+
+CREATE TABLE THEN (THEN INT, A INT);
+INSERT INTO THEN (THEN) VALUES (1);
+INSERT INTO THEN VALUES (2, 2);
+SELECT * FROM THEN;
+SELECT THEN.THEN, THEN FROM THEN;
+SELECT THEN.THEN, THEN FROM THEN THEN;
+DROP TABLE THEN;
+
+CREATE TABLE SIZE (SIZE INT, A INT);
+INSERT INTO SIZE (SIZE) VALUES (1);
+INSERT INTO SIZE VALUES (2, 2);
+SELECT * FROM SIZE;
+SELECT SIZE.SIZE, SIZE FROM SIZE;
+SELECT SIZE.SIZE, SIZE FROM SIZE SIZE;
+DROP TABLE SIZE;
+
+CREATE TABLE LEVEL (LEVEL INT, A INT);
+INSERT INTO LEVEL (LEVEL) VALUES (1);
+INSERT INTO LEVEL VALUES (2, 2);
+SELECT * FROM LEVEL;
+SELECT LEVEL.LEVEL, LEVEL FROM LEVEL;
+SELECT LEVEL.LEVEL, LEVEL FROM LEVEL LEVEL;
+DROP TABLE LEVEL;
+
+CREATE TABLE DOMAIN (DOMAIN INT, A INT);
+INSERT INTO DOMAIN (DOMAIN) VALUES (1);
+INSERT INTO DOMAIN VALUES (2, 2);
+SELECT * FROM DOMAIN;
+SELECT DOMAIN.DOMAIN, DOMAIN FROM DOMAIN;
+SELECT DOMAIN.DOMAIN, DOMAIN FROM DOMAIN DOMAIN;
+DROP TABLE DOMAIN;
+
+CREATE TABLE ZONE (ZONE INT, A INT);
+INSERT INTO ZONE (ZONE) VALUES (1);
+INSERT INTO ZONE VALUES (2, 2);
+SELECT * FROM ZONE;
+SELECT ZONE.ZONE, ZONE FROM ZONE;
+SELECT ZONE.ZONE, ZONE FROM ZONE ZONE;
+DROP TABLE ZONE;
+
+
+-- Negative tests
+-- Novera wanted 0-length delimited identifiers but for db2-compatibility, we are going to stop supporting 0-length delimited identifiers
+-- test1
+create table "" (c1 int);
+-- test2
+create table t1111 ("" int);
+-- test3
+create schema "";
+-- identifiers can not start with "_"
+-- test4
+create table _t1(_c1 int);
+-- test5
+create table t1(_c1 int);
+-- test6
+create view _v1 (c1) as select * from t1;
+-- test7
+create view v1 (__c1) as select * from t1;
+-- test8
+create index _i1 on t1(c1);
+-- test9
+create table "_"."_"(c1 int);
+-- test10
+create table "".""(c1 int);

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1764 @@
+-- ** insert implicitConversionsPositive.sql
+-- tests for implicit conversions between string and non-string types
+-- and vice versa
+
+-- create an all types table
+create table all1(si smallint, i int, li bigint, r real, 
+				  dp double precision, dc decimal(5,1), num numeric(5,1),
+				  b char(2) for bit data, bv varchar(2) for bit data,
+				  lbv long varchar FOR bit data,
+				  dt date, tm time, tms timestamp,
+				  c char(1), vc varchar(1), lvc long varchar);
+
+-- populate table
+insert into all1 values (2, 3, 4, 5.5, 6.6, 7.7, 8.8,
+				  		 X'0020', X'0020', X'0020',
+				  		 date('1996-09-09'), time('12:12:12'), 
+				  		 timestamp('1996-09-09 12:12:12.5'),
+				  		 '1', '2', '33333333');
+
+-- unions between string and non-string types
+values cast(1 as smallint), cast('2' as char(1));
+values cast(1 as smallint), cast('2' as varchar(1));
+values cast(1 as smallint), cast('2' as long varchar);
+values cast('2' as char(1)), cast(1 as smallint);
+values cast('2' as varchar(1)), cast(1 as smallint);
+values cast('2' as long varchar), cast(1 as smallint);
+values cast(1 as int), cast('2' as char(1));
+values cast(1 as int), cast('2' as varchar(1));
+values cast(1 as int), cast('2' as long varchar);
+values cast('2' as char(1)), cast(1 as int);
+values cast('2' as varchar(1)), cast(1 as int);
+values cast('2' as long varchar), cast(1 as int);
+values cast(1 as bigint), cast('2' as char(1));
+values cast(1 as bigint), cast('2' as varchar(1));
+values cast(1 as bigint), cast('2' as long varchar);
+values cast('2' as char(1)), cast(1 as bigint);
+values cast('2' as varchar(1)), cast(1 as bigint);
+values cast('2' as long varchar), cast(1 as bigint);
+values cast(1.1 as real), cast('2' as char(1));
+values cast(1.1 as real), cast('2' as varchar(1));
+values cast(1.1 as real), cast('2' as long varchar);
+values cast('2' as char(1)), cast(1.1 as real);
+values cast('2' as varchar(1)), cast(1.1 as real);
+values cast('2' as long varchar), cast(1.1 as real);
+values cast(1.1 as double precision), cast('2' as char(1));
+values cast(1.1 as double precision), cast('2' as varchar(1));
+values cast(1.1 as double precision), cast('2' as long varchar);
+values cast('2' as char(1)), cast(1.1 as double precision);
+values cast('2' as varchar(1)), cast(1.1 as double precision);
+values cast('2' as long varchar), cast(1.1 as double precision);
+values cast(1.1 as decimal(5,1)), cast('2' as char(1));
+values cast(1.1 as decimal(5,1)), cast('2' as varchar(1));
+values cast(1.1 as decimal(5,1)), cast('2' as long varchar);
+values cast('2' as char(1)), cast(1.1 as decimal(5,1));
+values cast('2' as varchar(1)), cast(1.1 as decimal(5,1));
+values cast('2' as long varchar), cast(1.1 as decimal(5,1));
+values cast(1.1 as decimal(5,1)), '0.002';
+values cast(1.1 as decimal(5,1)), '0.002';
+values '0.002', cast(1.1 as decimal(5,1));
+values '0.002', cast(1.1 as decimal(5,1));
+values 'abcde', 'fghij';
+values 'abcde', cast('fghij' as varchar(5));
+values 'abcde', cast('fghij' as long varchar);
+values cast('abcde' as varchar(5)), 'fghij';
+values cast('abcde' as long varchar), 'fghij';
+-- DB2 UDB allows comparisons between hex constants and character constants
+-- DB2 CS does not allow comparisons between hex constants and character constants
+values X'01', '3';
+values X'01', cast('3' as varchar(5));
+values X'01', cast('3' as long varchar);
+values '3', X'01';
+values cast('3' as varchar(5)), X'01';
+values cast('3' as long varchar), X'01';
+values date('1996-09-09'), '1995-08-08';
+values date('1996-09-09'), cast('1995-08-08' as varchar(10));
+values date('1996-09-09'), cast('1995-08-08' as long varchar);
+values '1995-08-08', date('1996-09-09');
+values cast('1995-08-08' as varchar(10)), date('1996-09-09');
+values cast('1995-08-08' as long varchar), date('1996-09-09');
+values time('12:12:12'), '11:11:11';
+values time('12:12:12'), cast('11:11:11' as varchar(8));
+values time('12:12:12'), cast('11:11:11' as long varchar);
+values '11:11:11', time('12:12:12');
+values cast('11:11:11' as varchar(8)), time('12:12:12');
+values cast('11:11:11' as long varchar), time('12:12:12');
+values timestamp('1996-09-09 12:12:12.5'), '1996-08-08 11:11:11.1';
+values timestamp('1996-09-09 12:12:12.5'), cast('1996-08-08 11:11:11.1' as varchar(30));
+values timestamp('1996-09-09 12:12:12.5'), cast('1996-08-08 11:11:11.1' as long varchar);
+values '1996-08-08 11:11:11.1', timestamp('1996-09-09 12:12:12.5');
+values cast('1996-08-08 11:11:11.1' as varchar(30)), timestamp('1996-09-09 12:12:12.5');
+values cast('1996-08-08 11:11:11.1' as long varchar), timestamp('1996-09-09 12:12:12.5');
+
+-- comparisons at the language level
+select si from all1 where cast(1 as smallint) = '1';
+select si from all1 where cast(1 as smallint) > '2';
+select si from all1 where cast(1 as smallint) >= '2';
+select si from all1 where cast(1 as smallint) < '2';
+select si from all1 where cast(1 as smallint) <= '2';
+select si from all1 where cast(1 as smallint) <> '2';
+select si from all1 where cast(1 as smallint) = cast(null as char);
+select si from all1 where cast(1 as smallint) > cast(null as char);
+select si from all1 where cast(1 as smallint) >= cast(null as char);
+select si from all1 where cast(1 as smallint) < cast(null as char);
+select si from all1 where cast(1 as smallint) <= cast(null as char);
+select si from all1 where cast(1 as smallint) <> cast(null as char);
+select si from all1 where '1' = cast(1 as smallint);
+select si from all1 where '2' > cast(1 as smallint);
+select si from all1 where '2' >= cast(1 as smallint);
+select si from all1 where '2' < cast(1 as smallint);
+select si from all1 where '2' <= cast(1 as smallint);
+select si from all1 where '2' <> cast(1 as smallint);
+select si from all1 where cast(null as char) = cast(1 as smallint);
+select si from all1 where cast(null as char) > cast(1 as smallint);
+select si from all1 where cast(null as char) >= cast(1 as smallint);
+select si from all1 where cast(null as char) < cast(1 as smallint);
+select si from all1 where cast(null as char) <= cast(1 as smallint);
+select si from all1 where cast(null as char) <> cast(1 as smallint);
+select si from all1 where cast(1 as int) = '1';
+select si from all1 where cast(1 as int) > '2';
+select si from all1 where cast(1 as int) >= '2';
+select si from all1 where cast(1 as int) < '2';
+select si from all1 where cast(1 as int) <= '2';
+select si from all1 where cast(1 as int) <> '2';
+select si from all1 where cast(1 as int) = cast(null as char);
+select si from all1 where cast(1 as int) > cast(null as char);
+select si from all1 where cast(1 as int) >= cast(null as char);
+select si from all1 where cast(1 as int) < cast(null as char);
+select si from all1 where cast(1 as int) <= cast(null as char);
+select si from all1 where cast(1 as int) <> cast(null as char);
+select si from all1 where '1' = cast(1 as int);
+select si from all1 where '2' > cast(1 as int);
+select si from all1 where '2' >= cast(1 as int);
+select si from all1 where '2' < cast(1 as int);
+select si from all1 where '2' <> cast(1 as int);
+select si from all1 where '2' <= cast(1 as int);
+select si from all1 where cast(null as char) = cast(1 as int);
+select si from all1 where cast(null as char) > cast(1 as int);
+select si from all1 where cast(null as char) >= cast(1 as int);
+select si from all1 where cast(null as char) < cast(1 as int);
+select si from all1 where cast(null as char) <> cast(1 as int);
+select si from all1 where cast(null as char) <= cast(1 as int);
+select si from all1 where cast(1 as bigint) = '1';
+select si from all1 where cast(1 as bigint) > '2';
+select si from all1 where cast(1 as bigint) >= '2';
+select si from all1 where cast(1 as bigint) < '2';
+select si from all1 where cast(1 as bigint) <= '2';
+select si from all1 where cast(1 as bigint) <> '2';
+select si from all1 where cast(1 as bigint) = cast(null as char);
+select si from all1 where cast(1 as bigint) > cast(null as char);
+select si from all1 where cast(1 as bigint) >= cast(null as char);
+select si from all1 where cast(1 as bigint) < cast(null as char);
+select si from all1 where cast(1 as bigint) <= cast(null as char);
+select si from all1 where cast(1 as bigint) <> cast(null as char);
+select si from all1 where '1' = cast(1 as bigint);
+select si from all1 where '2' > cast(1 as bigint);
+select si from all1 where '2' >= cast(1 as bigint);
+select si from all1 where '2' < cast(1 as bigint);
+select si from all1 where '2' <= cast(1 as bigint);
+select si from all1 where '2' <> cast(1 as bigint);
+select si from all1 where cast(null as char) = cast(1 as bigint);
+select si from all1 where cast(null as char) > cast(1 as bigint);
+select si from all1 where cast(null as char) >= cast(1 as bigint);
+select si from all1 where cast(null as char) < cast(1 as bigint);
+select si from all1 where cast(null as char) <= cast(1 as bigint);
+select si from all1 where cast(null as char) <> cast(1 as bigint);
+select si from all1 where cast(1 as real) = '1';
+select si from all1 where cast(1 as real) > '2';
+select si from all1 where cast(1 as real) >= '2';
+select si from all1 where cast(1 as real) < '2';
+select si from all1 where cast(1 as real) <> '2';
+select si from all1 where cast(1 as real) <= '2';
+select si from all1 where cast(1 as real) = cast(null as char);
+select si from all1 where cast(1 as real) > cast(null as char);
+select si from all1 where cast(1 as real) >= cast(null as char);
+select si from all1 where cast(1 as real) < cast(null as char);
+select si from all1 where cast(1 as real) <> cast(null as char);
+select si from all1 where cast(1 as real) <= cast(null as char);
+select si from all1 where '1' = cast(1 as real);
+select si from all1 where '2' > cast(1 as real);
+select si from all1 where '2' >= cast(1 as real);
+select si from all1 where '2' < cast(1 as real);
+select si from all1 where '2' <= cast(1 as real);
+select si from all1 where '2' <> cast(1 as real);
+select si from all1 where cast(null as char) = cast(1 as real);
+select si from all1 where cast(null as char) > cast(1 as real);
+select si from all1 where cast(null as char) >= cast(1 as real);
+select si from all1 where cast(null as char) < cast(1 as real);
+select si from all1 where cast(null as char) <= cast(1 as real);
+select si from all1 where cast(null as char) <> cast(1 as real);
+select si from all1 where cast(1 as double precision) = '1';
+select si from all1 where cast(1 as double precision) > '2';
+select si from all1 where cast(1 as double precision) >= '2';
+select si from all1 where cast(1 as double precision) < '2';
+select si from all1 where cast(1 as double precision) <= '2';
+select si from all1 where cast(1 as double precision) <> '2';
+select si from all1 where cast(1 as double precision) = cast(null as char);
+select si from all1 where cast(1 as double precision) > cast(null as char);
+select si from all1 where cast(1 as double precision) >= cast(null as char);
+select si from all1 where cast(1 as double precision) < cast(null as char);
+select si from all1 where cast(1 as double precision) <= cast(null as char);
+select si from all1 where cast(1 as double precision) <> cast(null as char);
+select si from all1 where '1' = cast(1 as double precision);
+select si from all1 where '2' > cast(1 as double precision);
+select si from all1 where '2' >= cast(1 as double precision);
+select si from all1 where '2' < cast(1 as double precision);
+select si from all1 where '2' <= cast(1 as double precision);
+select si from all1 where '2' <> cast(1 as double precision);
+select si from all1 where cast(null as char) = cast(1 as double precision);
+select si from all1 where cast(null as char) > cast(1 as double precision);
+select si from all1 where cast(null as char) >= cast(1 as double precision);
+select si from all1 where cast(null as char) < cast(1 as double precision);
+select si from all1 where cast(null as char) <= cast(1 as double precision);
+select si from all1 where cast(null as char) <> cast(1 as double precision);
+select si from all1 where cast(1 as numeric) = '1';
+select si from all1 where cast(1 as numeric) > '2';
+select si from all1 where cast(1 as numeric) >= '2';
+select si from all1 where cast(1 as numeric) < '2';
+select si from all1 where cast(1 as numeric) <= '2';
+select si from all1 where cast(1 as numeric) <> '2';
+select si from all1 where cast(1 as numeric) = cast(null as char);
+select si from all1 where cast(1 as numeric) > cast(null as char);
+select si from all1 where cast(1 as numeric) >= cast(null as char);
+select si from all1 where cast(1 as numeric) < cast(null as char);
+select si from all1 where cast(1 as numeric) <= cast(null as char);
+select si from all1 where cast(1 as numeric) <> cast(null as char);
+select si from all1 where '1' = cast(1 as numeric);
+select si from all1 where '2' > cast(1 as numeric);
+select si from all1 where '2' >= cast(1 as numeric);
+select si from all1 where '2' < cast(1 as numeric);
+select si from all1 where '2' <= cast(1 as numeric);
+select si from all1 where '2' <> cast(1 as numeric);
+select si from all1 where cast(null as char) = cast(1 as numeric);
+select si from all1 where cast(null as char) > cast(1 as numeric);
+select si from all1 where cast(null as char) >= cast(1 as numeric);
+select si from all1 where cast(null as char) < cast(1 as numeric);
+select si from all1 where cast(null as char) <= cast(1 as numeric);
+select si from all1 where cast(null as char) <> cast(1 as numeric);
+-- the following queries return 1 if the search condition is satisfied
+-- and returns nothing if the search condition is not satisfied
+select 1 from all1 where '1996-09-09' = date('1996-09-09');
+select 1 from all1 where '1996-9-10' > date('1996-09-09');
+select 1 from all1 where '1996-9-10' >= date('1996-09-09');
+select 1 from all1 where '1996-9-10' < date('1996-09-09');
+select 1 from all1 where '1996-9-10' <= date('1996-09-09');
+select 1 from all1 where '1996-9-10' <> date('1996-09-09');
+select 1 from all1 where cast(null as char) = date('1996-09-09');
+select 1 from all1 where cast(null as char)> date('1996-09-09');
+select 1 from all1 where cast(null as char)>= date('1996-09-09');
+select 1 from all1 where cast(null as char)< date('1996-09-09');
+select 1 from all1 where cast(null as char)<= date('1996-09-09');
+select 1 from all1 where cast(null as char)<> date('1996-09-09');
+select 1 from all1 where date('1996-09-09') = '1996-09-09';
+select 1 from all1 where date('1996-9-10') > '1996-09-09';
+select 1 from all1 where date('1996-9-10') >= '1996-09-09';
+select 1 from all1 where date('1996-9-10') < '1996-09-09';
+select 1 from all1 where date('1996-9-10') <= '1996-09-09';
+select 1 from all1 where date('1996-9-10') <> '1996-09-09';
+select 1 from all1 where date('1996-09-09') = cast(null as char);
+select 1 from all1 where date('1996-9-10') > cast(null as char);
+select 1 from all1 where date('1996-9-10') >= cast(null as char);
+select 1 from all1 where date('1996-9-10') < cast(null as char);
+select 1 from all1 where date('1996-9-10') <= cast(null as char);
+select 1 from all1 where date('1996-9-10') <> cast(null as char);
+select 1 from all1 where '12:12:12' = time('12:12:12');
+select 1 from all1 where '12:13:12' > time('12:12:12');
+select 1 from all1 where '12:13:12' >= time('12:12:12');
+select 1 from all1 where '12:13:12' < time('12:12:12');
+select 1 from all1 where '12:13:12' <= time('12:12:12');
+select 1 from all1 where '12:13:12' <> time('12:12:12');
+select 1 from all1 where cast(null as char) = time('12:12:12');
+select 1 from all1 where cast(null as char) > time('12:12:12');
+select 1 from all1 where cast(null as char) >= time('12:12:12');
+select 1 from all1 where cast(null as char) < time('12:12:12');
+select 1 from all1 where cast(null as char) <= time('12:12:12');
+select 1 from all1 where cast(null as char) <> time('12:12:12');
+select 1 from all1 where time('12:12:12') = '12:12:12';
+select 1 from all1 where time('12:13:12') > '12:12:12';
+select 1 from all1 where time('12:13:12') >= '12:12:12';
+select 1 from all1 where time('12:13:12') < '12:12:12';
+select 1 from all1 where time('12:13:12') <= '12:12:12';
+select 1 from all1 where time('12:13:12') <> '12:12:12';
+select 1 from all1 where time('12:12:12') = cast(null as char);
+select 1 from all1 where time('12:13:12') > cast(null as char);
+select 1 from all1 where time('12:13:12') >= cast(null as char);
+select 1 from all1 where time('12:13:12') < cast(null as char);
+select 1 from all1 where time('12:13:12') <= cast(null as char);
+select 1 from all1 where time('12:13:12') <> cast(null as char);
+select 1 from all1 where '1996-09-09 12:12:12.4' = timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where '1996-09-09 12:12:12.5' > timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where '1996-09-09 12:12:12.5' >= timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where '1996-09-09 12:12:12.5' < timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where '1996-09-09 12:12:12.5' <= timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where '1996-09-09 12:12:12.5' <> timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where cast(null as char) = timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where cast(null as char) > timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where cast(null as char) >= timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where cast(null as char) < timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where cast(null as char) <= timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where cast(null as char) <> timestamp('1996-09-09 12:12:12.4');
+select 1 from all1 where timestamp('1996-09-09 12:12:12.4' )= '1996-09-09 12:12:12.4';
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )> '1996-09-09 12:12:12.4';
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )>= '1996-09-09 12:12:12.4';
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )< '1996-09-09 12:12:12.4';
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )<= '1996-09-09 12:12:12.4';
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )<> '1996-09-09 12:12:12.4';
+select 1 from all1 where timestamp('1996-09-09 12:12:12.4' )= cast(null as char);
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )> cast(null as char);
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )>= cast(null as char);
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )< cast(null as char);
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )<= cast(null as char);
+select 1 from all1 where timestamp('1996-09-09 12:12:12.5' )<> cast(null as char);
+select si from all1 where ' ' = X'0020';
+select si from all1 where ' ' > X'001F';
+select si from all1 where ' ' >= X'001F';
+select si from all1 where ' ' < X'001F';
+select si from all1 where ' ' <= X'001F';
+select si from all1 where ' ' <> X'001F';
+select si from all1 where cast(null as char) = X'0020';
+select si from all1 where cast(null as char) > X'001F';
+select si from all1 where cast(null as char) >= X'001F';
+select si from all1 where cast(null as char) < X'001F';
+select si from all1 where cast(null as char) <= X'001F';
+select si from all1 where cast(null as char) <> X'001F';
+select si from all1 where X'0020' = ' ';
+select si from all1 where X'001F' > ' ';
+select si from all1 where X'001F' >= ' ';
+select si from all1 where X'001F' < ' ';
+select si from all1 where X'001F' <= ' ';
+select si from all1 where X'001F' <> ' ';
+select si from all1 where X'0020' = cast(null as char);
+select si from all1 where X'001F' > cast(null as char);
+select si from all1 where X'001F' >= cast(null as char);
+select si from all1 where X'001F' < cast(null as char);
+select si from all1 where X'001F' <= cast(null as char);
+select si from all1 where X'001F' <> cast(null as char);
+
+create table all_c1(c_ti char(3), c_si char(10), c_i char(30), c_li char(30), 
+					c_r char(50), c_dp char(50), c_dc char(10), 
+					c_num char(50), c_bool char(5), c_b char(8), 
+					vc_bv varchar(16), vc_lbv varchar(16), c_dt char(10),
+					c_tm char(16), c_tms char(21), c_c char(30),
+					vc_vc char(30), c_lvc char(30));
+insert into all_c1 values ('1', '2', '3', '4', '5.5', '6.6', '7.7', '8.8',
+						   'true', ' ', ' ', ' ', '1996-09-09', '12:12:12',
+						   '1996-09-09 12:12:12.5', '1', '2', '33333333');
+
+-- test qualifiers with conversion from (var)char
+select 1 from all_c1, all1 where si = c_si;
+select 1 from all_c1, all1 where si > c_si;
+select 1 from all_c1, all1 where si >= c_si;
+select 1 from all_c1, all1 where si < c_si;
+select 1 from all_c1, all1 where si <= c_si;
+select 1 from all_c1, all1 where si <> c_si;
+select 1 from all_c1, all1 where i = c_i;
+select 1 from all_c1, all1 where i > c_i;
+select 1 from all_c1, all1 where i >= c_i;
+select 1 from all_c1, all1 where i < c_i;
+select 1 from all_c1, all1 where i <= c_i;
+select 1 from all_c1, all1 where i <> c_i;
+select 1 from all_c1, all1 where li = c_li;
+select 1 from all_c1, all1 where li > c_li;
+select 1 from all_c1, all1 where li >= c_li;
+select 1 from all_c1, all1 where li < c_li;
+select 1 from all_c1, all1 where li <= c_li;
+select 1 from all_c1, all1 where li <> c_li;
+select 1 from all_c1, all1 where r = c_r;
+select 1 from all_c1, all1 where r > c_r;
+select 1 from all_c1, all1 where r >= c_r;
+select 1 from all_c1, all1 where r < c_r;
+select 1 from all_c1, all1 where r <= c_r;
+select 1 from all_c1, all1 where r <> c_r;
+select 1 from all_c1, all1 where dp = c_dp;
+select 1 from all_c1, all1 where dp > c_dp;
+select 1 from all_c1, all1 where dp >= c_dp;
+select 1 from all_c1, all1 where dp < c_dp;
+select 1 from all_c1, all1 where dp <= c_dp;
+select 1 from all_c1, all1 where dp <> c_dp;
+select 1 from all_c1, all1 where dc = c_dc;
+select 1 from all_c1, all1 where dc > c_dc;
+select 1 from all_c1, all1 where dc >= c_dc;
+select 1 from all_c1, all1 where dc < c_dc;
+select 1 from all_c1, all1 where dc <= c_dc;
+select 1 from all_c1, all1 where dc <> c_dc;
+select 1 from all_c1, all1 where b = c_b;
+select 1 from all_c1, all1 where b > c_b;
+select 1 from all_c1, all1 where b >= c_b;
+select 1 from all_c1, all1 where b < c_b;
+select 1 from all_c1, all1 where b <= c_b;
+select 1 from all_c1, all1 where b <> c_b;
+select 1 from all_c1, all1 where bv = vc_bv;
+select 1 from all_c1, all1 where bv > vc_bv;
+select 1 from all_c1, all1 where bv >= vc_bv;
+select 1 from all_c1, all1 where bv < vc_bv;
+select 1 from all_c1, all1 where bv <= vc_bv;
+select 1 from all_c1, all1 where bv <> vc_bv;
+select 1 from all_c1, all1 where lbv = vc_bv;
+select 1 from all_c1, all1 where lbv > vc_bv;
+select 1 from all_c1, all1 where lbv >= vc_bv;
+select 1 from all_c1, all1 where lbv < vc_bv;
+select 1 from all_c1, all1 where lbv <= vc_bv;
+select 1 from all_c1, all1 where lbv <> vc_bv;
+select 1 from all_c1, all1 where dt = c_dt;
+select 1 from all_c1, all1 where dt > c_dt;
+select 1 from all_c1, all1 where dt >= c_dt;
+select 1 from all_c1, all1 where dt < c_dt;
+select 1 from all_c1, all1 where dt <= c_dt;
+select 1 from all_c1, all1 where dt <> c_dt;
+select 1 from all_c1, all1 where tm = c_tm;
+select 1 from all_c1, all1 where tm > c_tm;
+select 1 from all_c1, all1 where tm >= c_tm;
+select 1 from all_c1, all1 where tm < c_tm;
+select 1 from all_c1, all1 where tm <= c_tm;
+select 1 from all_c1, all1 where tm <> c_tm;
+select 1 from all_c1, all1 where tms = c_tms;
+select 1 from all_c1, all1 where tms > c_tms;
+select 1 from all_c1, all1 where tms >= c_tms;
+select 1 from all_c1, all1 where tms < c_tms;
+select 1 from all_c1, all1 where tms <= c_tms;
+select 1 from all_c1, all1 where tms <> c_tms;
+select 1 from all_c1, all1 where lvc = c_lvc;
+select 1 from all_c1, all1 where lvc > c_lvc;
+select 1 from all_c1, all1 where lvc >= c_lvc;
+select 1 from all_c1, all1 where lvc < c_lvc;
+select 1 from all_c1, all1 where lvc <= c_lvc;
+select 1 from all_c1, all1 where lvc <> c_lvc;
+
+autocommit off;
+delete from all_c1;
+insert into all_c1 (c_ti) values (null);
+
+select 1 from all_c1, all1 where si = c_si;
+select 1 from all_c1, all1 where si > c_si;
+select 1 from all_c1, all1 where si >= c_si;
+select 1 from all_c1, all1 where si < c_si;
+select 1 from all_c1, all1 where si <= c_si;
+select 1 from all_c1, all1 where si <> c_si;
+select 1 from all_c1, all1 where i = c_i;
+select 1 from all_c1, all1 where i > c_i;
+select 1 from all_c1, all1 where i >= c_i;
+select 1 from all_c1, all1 where i < c_i;
+select 1 from all_c1, all1 where i <= c_i;
+select 1 from all_c1, all1 where i <> c_i;
+select 1 from all_c1, all1 where li = c_li;
+select 1 from all_c1, all1 where li > c_li;
+select 1 from all_c1, all1 where li >= c_li;
+select 1 from all_c1, all1 where li < c_li;
+select 1 from all_c1, all1 where li <= c_li;
+select 1 from all_c1, all1 where li <> c_li;
+select 1 from all_c1, all1 where r = c_r;
+select 1 from all_c1, all1 where r > c_r;
+select 1 from all_c1, all1 where r >= c_r;
+select 1 from all_c1, all1 where r < c_r;
+select 1 from all_c1, all1 where r <= c_r;
+select 1 from all_c1, all1 where r <> c_r;
+select 1 from all_c1, all1 where dp = c_dp;
+select 1 from all_c1, all1 where dp > c_dp;
+select 1 from all_c1, all1 where dp >= c_dp;
+select 1 from all_c1, all1 where dp < c_dp;
+select 1 from all_c1, all1 where dp <= c_dp;
+select 1 from all_c1, all1 where dp <> c_dp;
+select 1 from all_c1, all1 where dc = c_dc;
+select 1 from all_c1, all1 where dc > c_dc;
+select 1 from all_c1, all1 where dc >= c_dc;
+select 1 from all_c1, all1 where dc < c_dc;
+select 1 from all_c1, all1 where dc <= c_dc;
+select 1 from all_c1, all1 where dc <> c_dc;
+select 1 from all_c1, all1 where b = c_b;
+select 1 from all_c1, all1 where b > c_b;
+select 1 from all_c1, all1 where b >= c_b;
+select 1 from all_c1, all1 where b < c_b;
+select 1 from all_c1, all1 where b <= c_b;
+select 1 from all_c1, all1 where b <> c_b;
+select 1 from all_c1, all1 where bv = vc_bv;
+select 1 from all_c1, all1 where bv > vc_bv;
+select 1 from all_c1, all1 where bv >= vc_bv;
+select 1 from all_c1, all1 where bv < vc_bv;
+select 1 from all_c1, all1 where bv <= vc_bv;
+select 1 from all_c1, all1 where bv <> vc_bv;
+select 1 from all_c1, all1 where lbv = vc_bv;
+select 1 from all_c1, all1 where lbv > vc_bv;
+select 1 from all_c1, all1 where lbv >= vc_bv;
+select 1 from all_c1, all1 where lbv < vc_bv;
+select 1 from all_c1, all1 where lbv <= vc_bv;
+select 1 from all_c1, all1 where lbv <> vc_bv;
+select 1 from all_c1, all1 where dt = c_dt;
+select 1 from all_c1, all1 where dt > c_dt;
+select 1 from all_c1, all1 where dt >= c_dt;
+select 1 from all_c1, all1 where dt < c_dt;
+select 1 from all_c1, all1 where dt <= c_dt;
+select 1 from all_c1, all1 where dt <> c_dt;
+select 1 from all_c1, all1 where tm = c_tm;
+select 1 from all_c1, all1 where tm > c_tm;
+select 1 from all_c1, all1 where tm >= c_tm;
+select 1 from all_c1, all1 where tm < c_tm;
+select 1 from all_c1, all1 where tm <= c_tm;
+select 1 from all_c1, all1 where tm <> c_tm;
+select 1 from all_c1, all1 where tms = c_tms;
+select 1 from all_c1, all1 where tms > c_tms;
+select 1 from all_c1, all1 where tms >= c_tms;
+select 1 from all_c1, all1 where tms < c_tms;
+select 1 from all_c1, all1 where tms <= c_tms;
+select 1 from all_c1, all1 where tms <> c_tms;
+select 1 from all_c1, all1 where lvc = c_lvc;
+select 1 from all_c1, all1 where lvc > c_lvc;
+select 1 from all_c1, all1 where lvc >= c_lvc;
+select 1 from all_c1, all1 where lvc < c_lvc;
+select 1 from all_c1, all1 where lvc <= c_lvc;
+select 1 from all_c1, all1 where lvc <> c_lvc;
+
+rollback;
+
+-- test start and stop positions for conversions to (var)char
+create index all_c1_ti on all_c1(c_ti);
+create index all_c1_si on all_c1(c_si);
+create index all_c1_i on all_c1(c_i);
+create index all_c1_li on all_c1(c_li);
+create index all_c1_r on all_c1(c_r);
+create index all_c1_dp on all_c1(c_dp);
+create index all_c1_dc on all_c1(c_dc);
+create index all_c1_num on all_c1(c_num);
+create index all_c1_bool on all_c1(c_bool);
+create index all_c1_b on all_c1(c_b);
+create index all_c1_bv on all_c1(vc_bv);
+create index all_c1_dt on all_c1(c_dt);
+create index all_c1_tm on all_c1(c_tm);
+create index all_c1_tms on all_c1(c_tms);
+create index all_c1_lvc on all_c1(c_lvc);
+
+select 1 from all_c1, all1 where si = c_si;
+select 1 from all_c1, all1 where si > c_si;
+select 1 from all_c1, all1 where si >= c_si;
+select 1 from all_c1, all1 where si < c_si;
+select 1 from all_c1, all1 where si <= c_si;
+select 1 from all_c1, all1 where i = c_i;
+select 1 from all_c1, all1 where i > c_i;
+select 1 from all_c1, all1 where i >= c_i;
+select 1 from all_c1, all1 where i < c_i;
+select 1 from all_c1, all1 where i <= c_i;
+select 1 from all_c1, all1 where li = c_li;
+select 1 from all_c1, all1 where li > c_li;
+select 1 from all_c1, all1 where li >= c_li;
+select 1 from all_c1, all1 where li < c_li;
+select 1 from all_c1, all1 where li <= c_li;
+select 1 from all_c1, all1 where r = c_r;
+select 1 from all_c1, all1 where r > c_r;
+select 1 from all_c1, all1 where r >= c_r;
+select 1 from all_c1, all1 where r < c_r;
+select 1 from all_c1, all1 where r <= c_r;
+select 1 from all_c1, all1 where dp = c_dp;
+select 1 from all_c1, all1 where dp > c_dp;
+select 1 from all_c1, all1 where dp >= c_dp;
+select 1 from all_c1, all1 where dp < c_dp;
+select 1 from all_c1, all1 where dp <= c_dp;
+select 1 from all_c1, all1 where dc = c_dc;
+select 1 from all_c1, all1 where dc > c_dc;
+select 1 from all_c1, all1 where dc >= c_dc;
+select 1 from all_c1, all1 where dc < c_dc;
+select 1 from all_c1, all1 where dc <= c_dc;
+select 1 from all_c1, all1 where b = c_b;
+select 1 from all_c1, all1 where b > c_b;
+select 1 from all_c1, all1 where b >= c_b;
+select 1 from all_c1, all1 where b < c_b;
+select 1 from all_c1, all1 where b <= c_b;
+select 1 from all_c1, all1 where bv = vc_bv;
+select 1 from all_c1, all1 where bv > vc_bv;
+select 1 from all_c1, all1 where bv >= vc_bv;
+select 1 from all_c1, all1 where bv < vc_bv;
+select 1 from all_c1, all1 where bv <= vc_bv;
+select 1 from all_c1, all1 where lbv = vc_bv;
+select 1 from all_c1, all1 where lbv > vc_bv;
+select 1 from all_c1, all1 where lbv >= vc_bv;
+select 1 from all_c1, all1 where lbv < vc_bv;
+select 1 from all_c1, all1 where lbv <= vc_bv;
+select 1 from all_c1, all1 where dt = c_dt;
+select 1 from all_c1, all1 where dt > c_dt;
+select 1 from all_c1, all1 where dt >= c_dt;
+select 1 from all_c1, all1 where dt < c_dt;
+select 1 from all_c1, all1 where dt <= c_dt;
+select 1 from all_c1, all1 where tm = c_tm;
+select 1 from all_c1, all1 where tm > c_tm;
+select 1 from all_c1, all1 where tm >= c_tm;
+select 1 from all_c1, all1 where tm < c_tm;
+select 1 from all_c1, all1 where tm <= c_tm;
+select 1 from all_c1, all1 where tms = c_tms;
+select 1 from all_c1, all1 where tms > c_tms;
+select 1 from all_c1, all1 where tms >= c_tms;
+select 1 from all_c1, all1 where tms < c_tms;
+select 1 from all_c1, all1 where tms <= c_tms;
+select 1 from all_c1, all1 where lvc = c_lvc;
+select 1 from all_c1, all1 where lvc > c_lvc;
+select 1 from all_c1, all1 where lvc >= c_lvc;
+select 1 from all_c1, all1 where lvc < c_lvc;
+select 1 from all_c1, all1 where lvc <= c_lvc;
+
+delete from all_c1;
+insert into all_c1 (c_ti) values (null);
+
+select 1 from all_c1, all1 where si = c_si;
+select 1 from all_c1, all1 where si > c_si;
+select 1 from all_c1, all1 where si >= c_si;
+select 1 from all_c1, all1 where si < c_si;
+select 1 from all_c1, all1 where si <= c_si;
+select 1 from all_c1, all1 where i = c_i;
+select 1 from all_c1, all1 where i > c_i;
+select 1 from all_c1, all1 where i >= c_i;
+select 1 from all_c1, all1 where i < c_i;
+select 1 from all_c1, all1 where i <= c_i;
+select 1 from all_c1, all1 where li = c_li;
+select 1 from all_c1, all1 where li > c_li;
+select 1 from all_c1, all1 where li >= c_li;
+select 1 from all_c1, all1 where li < c_li;
+select 1 from all_c1, all1 where li <= c_li;
+select 1 from all_c1, all1 where r = c_r;
+select 1 from all_c1, all1 where r > c_r;
+select 1 from all_c1, all1 where r >= c_r;
+select 1 from all_c1, all1 where r < c_r;
+select 1 from all_c1, all1 where r <= c_r;
+select 1 from all_c1, all1 where dp = c_dp;
+select 1 from all_c1, all1 where dp > c_dp;
+select 1 from all_c1, all1 where dp >= c_dp;
+select 1 from all_c1, all1 where dp < c_dp;
+select 1 from all_c1, all1 where dp <= c_dp;
+select 1 from all_c1, all1 where dc = c_dc;
+select 1 from all_c1, all1 where dc > c_dc;
+select 1 from all_c1, all1 where dc >= c_dc;
+select 1 from all_c1, all1 where dc < c_dc;
+select 1 from all_c1, all1 where dc <= c_dc;
+select 1 from all_c1, all1 where b = c_b;
+select 1 from all_c1, all1 where b > c_b;
+select 1 from all_c1, all1 where b >= c_b;
+select 1 from all_c1, all1 where b < c_b;
+select 1 from all_c1, all1 where b <= c_b;
+select 1 from all_c1, all1 where bv = vc_bv;
+select 1 from all_c1, all1 where bv > vc_bv;
+select 1 from all_c1, all1 where bv >= vc_bv;
+select 1 from all_c1, all1 where bv < vc_bv;
+select 1 from all_c1, all1 where bv <= vc_bv;
+select 1 from all_c1, all1 where lbv = vc_bv;
+select 1 from all_c1, all1 where lbv > vc_bv;
+select 1 from all_c1, all1 where lbv >= vc_bv;
+select 1 from all_c1, all1 where lbv < vc_bv;
+select 1 from all_c1, all1 where lbv <= vc_bv;
+select 1 from all_c1, all1 where dt = c_dt;
+select 1 from all_c1, all1 where dt > c_dt;
+select 1 from all_c1, all1 where dt >= c_dt;
+select 1 from all_c1, all1 where dt < c_dt;
+select 1 from all_c1, all1 where dt <= c_dt;
+select 1 from all_c1, all1 where tm = c_tm;
+select 1 from all_c1, all1 where tm > c_tm;
+select 1 from all_c1, all1 where tm >= c_tm;
+select 1 from all_c1, all1 where tm < c_tm;
+select 1 from all_c1, all1 where tm <= c_tm;
+select 1 from all_c1, all1 where tms = c_tms;
+select 1 from all_c1, all1 where tms > c_tms;
+select 1 from all_c1, all1 where tms >= c_tms;
+select 1 from all_c1, all1 where tms < c_tms;
+select 1 from all_c1, all1 where tms <= c_tms;
+select 1 from all_c1, all1 where lvc = c_lvc;
+select 1 from all_c1, all1 where lvc > c_lvc;
+select 1 from all_c1, all1 where lvc >= c_lvc;
+select 1 from all_c1, all1 where lvc < c_lvc;
+select 1 from all_c1, all1 where lvc <= c_lvc;
+
+-- drop the indexes;
+rollback;
+
+
+-- test qualifiers with conversion to (var)char
+select 1 from all1, all_c1 where si = c_si;
+select 1 from all1, all_c1 where si > c_si;
+select 1 from all1, all_c1 where si >= c_si;
+select 1 from all1, all_c1 where si < c_si;
+select 1 from all1, all_c1 where si <= c_si;
+select 1 from all1, all_c1 where si <> c_si;
+select 1 from all1, all_c1 where i = c_i;
+select 1 from all1, all_c1 where i > c_i;
+select 1 from all1, all_c1 where i >= c_i;
+select 1 from all1, all_c1 where i < c_i;
+select 1 from all1, all_c1 where i <= c_i;
+select 1 from all1, all_c1 where i <> c_i;
+select 1 from all1, all_c1 where li = c_li;
+select 1 from all1, all_c1 where li > c_li;
+select 1 from all1, all_c1 where li >= c_li;
+select 1 from all1, all_c1 where li < c_li;
+select 1 from all1, all_c1 where li <= c_li;
+select 1 from all1, all_c1 where li <> c_li;
+select 1 from all1, all_c1 where r = c_r;
+select 1 from all1, all_c1 where r > c_r;
+select 1 from all1, all_c1 where r >= c_r;
+select 1 from all1, all_c1 where r < c_r;
+select 1 from all1, all_c1 where r <= c_r;
+select 1 from all1, all_c1 where r <> c_r;
+select 1 from all1, all_c1 where dp = c_dp;
+select 1 from all1, all_c1 where dp > c_dp;
+select 1 from all1, all_c1 where dp >= c_dp;
+select 1 from all1, all_c1 where dp < c_dp;
+select 1 from all1, all_c1 where dp <= c_dp;
+select 1 from all1, all_c1 where dp <> c_dp;
+select 1 from all1, all_c1 where dc = c_dc;
+select 1 from all1, all_c1 where dc > c_dc;
+select 1 from all1, all_c1 where dc >= c_dc;
+select 1 from all1, all_c1 where dc < c_dc;
+select 1 from all1, all_c1 where dc <= c_dc;
+select 1 from all1, all_c1 where dc <> c_dc;
+select 1 from all1, all_c1 where b = c_b;
+select 1 from all1, all_c1 where b > c_b;
+select 1 from all1, all_c1 where b >= c_b;
+select 1 from all1, all_c1 where b < c_b;
+select 1 from all1, all_c1 where b <= c_b;
+select 1 from all1, all_c1 where b <> c_b;
+select 1 from all1, all_c1 where bv = vc_bv;
+select 1 from all1, all_c1 where bv > vc_bv;
+select 1 from all1, all_c1 where bv >= vc_bv;
+select 1 from all1, all_c1 where bv < vc_bv;
+select 1 from all1, all_c1 where bv <= vc_bv;
+select 1 from all1, all_c1 where bv <> vc_bv;
+select 1 from all1, all_c1 where lbv = vc_bv;
+select 1 from all1, all_c1 where lbv > vc_bv;
+select 1 from all1, all_c1 where lbv >= vc_bv;
+select 1 from all1, all_c1 where lbv < vc_bv;
+select 1 from all1, all_c1 where lbv <= vc_bv;
+select 1 from all1, all_c1 where lbv <> vc_bv;
+select 1 from all1, all_c1 where dt = c_dt;
+select 1 from all1, all_c1 where dt > c_dt;
+select 1 from all1, all_c1 where dt >= c_dt;
+select 1 from all1, all_c1 where dt < c_dt;
+select 1 from all1, all_c1 where dt <= c_dt;
+select 1 from all1, all_c1 where dt <> c_dt;
+select 1 from all1, all_c1 where tm = c_tm;
+select 1 from all1, all_c1 where tm > c_tm;
+select 1 from all1, all_c1 where tm >= c_tm;
+select 1 from all1, all_c1 where tm < c_tm;
+select 1 from all1, all_c1 where tm <= c_tm;
+select 1 from all1, all_c1 where tm <> c_tm;
+select 1 from all1, all_c1 where tms = c_tms;
+select 1 from all1, all_c1 where tms > c_tms;
+select 1 from all1, all_c1 where tms >= c_tms;
+select 1 from all1, all_c1 where tms < c_tms;
+select 1 from all1, all_c1 where tms <= c_tms;
+select 1 from all1, all_c1 where tms <> c_tms;
+select 1 from all1, all_c1 where lvc = c_lvc;
+select 1 from all1, all_c1 where lvc > c_lvc;
+select 1 from all1, all_c1 where lvc >= c_lvc;
+select 1 from all1, all_c1 where lvc < c_lvc;
+select 1 from all1, all_c1 where lvc <= c_lvc;
+select 1 from all1, all_c1 where lvc <> c_lvc;
+
+delete from all1;
+insert into all1 (si) values (null);
+
+select 1 from all1, all_c1 where si = c_si;
+select 1 from all1, all_c1 where si > c_si;
+select 1 from all1, all_c1 where si >= c_si;
+select 1 from all1, all_c1 where si < c_si;
+select 1 from all1, all_c1 where si <= c_si;
+select 1 from all1, all_c1 where si <> c_si;
+select 1 from all1, all_c1 where i = c_i;
+select 1 from all1, all_c1 where i > c_i;
+select 1 from all1, all_c1 where i >= c_i;
+select 1 from all1, all_c1 where i < c_i;
+select 1 from all1, all_c1 where i <= c_i;
+select 1 from all1, all_c1 where i <> c_i;
+select 1 from all1, all_c1 where li = c_li;
+select 1 from all1, all_c1 where li > c_li;
+select 1 from all1, all_c1 where li >= c_li;
+select 1 from all1, all_c1 where li < c_li;
+select 1 from all1, all_c1 where li <= c_li;
+select 1 from all1, all_c1 where li <> c_li;
+select 1 from all1, all_c1 where r = c_r;
+select 1 from all1, all_c1 where r > c_r;
+select 1 from all1, all_c1 where r >= c_r;
+select 1 from all1, all_c1 where r < c_r;
+select 1 from all1, all_c1 where r <= c_r;
+select 1 from all1, all_c1 where r <> c_r;
+select 1 from all1, all_c1 where dp = c_dp;
+select 1 from all1, all_c1 where dp > c_dp;
+select 1 from all1, all_c1 where dp >= c_dp;
+select 1 from all1, all_c1 where dp < c_dp;
+select 1 from all1, all_c1 where dp <= c_dp;
+select 1 from all1, all_c1 where dp <> c_dp;
+select 1 from all1, all_c1 where dc = c_dc;
+select 1 from all1, all_c1 where dc > c_dc;
+select 1 from all1, all_c1 where dc >= c_dc;
+select 1 from all1, all_c1 where dc < c_dc;
+select 1 from all1, all_c1 where dc <= c_dc;
+select 1 from all1, all_c1 where dc <> c_dc;
+select 1 from all1, all_c1 where b = c_b;
+select 1 from all1, all_c1 where b > c_b;
+select 1 from all1, all_c1 where b >= c_b;
+select 1 from all1, all_c1 where b < c_b;
+select 1 from all1, all_c1 where b <= c_b;
+select 1 from all1, all_c1 where b <> c_b;
+select 1 from all1, all_c1 where bv = vc_bv;
+select 1 from all1, all_c1 where bv > vc_bv;
+select 1 from all1, all_c1 where bv >= vc_bv;
+select 1 from all1, all_c1 where bv < vc_bv;
+select 1 from all1, all_c1 where bv <= vc_bv;
+select 1 from all1, all_c1 where bv <> vc_bv;
+select 1 from all1, all_c1 where lbv = vc_bv;
+select 1 from all1, all_c1 where lbv > vc_bv;
+select 1 from all1, all_c1 where lbv >= vc_bv;
+select 1 from all1, all_c1 where lbv < vc_bv;
+select 1 from all1, all_c1 where lbv <= vc_bv;
+select 1 from all1, all_c1 where lbv <> vc_bv;
+select 1 from all1, all_c1 where dt = c_dt;
+select 1 from all1, all_c1 where dt > c_dt;
+select 1 from all1, all_c1 where dt >= c_dt;
+select 1 from all1, all_c1 where dt < c_dt;
+select 1 from all1, all_c1 where dt <= c_dt;
+select 1 from all1, all_c1 where dt <> c_dt;
+select 1 from all1, all_c1 where tm = c_tm;
+select 1 from all1, all_c1 where tm > c_tm;
+select 1 from all1, all_c1 where tm >= c_tm;
+select 1 from all1, all_c1 where tm < c_tm;
+select 1 from all1, all_c1 where tm <= c_tm;
+select 1 from all1, all_c1 where tm <> c_tm;
+select 1 from all1, all_c1 where tms = c_tms;
+select 1 from all1, all_c1 where tms > c_tms;
+select 1 from all1, all_c1 where tms >= c_tms;
+select 1 from all1, all_c1 where tms < c_tms;
+select 1 from all1, all_c1 where tms <= c_tms;
+select 1 from all1, all_c1 where tms <> c_tms;
+select 1 from all1, all_c1 where lvc = c_lvc;
+select 1 from all1, all_c1 where lvc > c_lvc;
+select 1 from all1, all_c1 where lvc >= c_lvc;
+select 1 from all1, all_c1 where lvc < c_lvc;
+select 1 from all1, all_c1 where lvc <= c_lvc;
+select 1 from all1, all_c1 where lvc <> c_lvc;
+
+rollback;
+
+-- test start and stop positions for conversions to (var)char
+create index all1_si on all1(si);
+create index all1_i on all1(i);
+create index all1_li on all1(li);
+create index all1_r on all1(r);
+create index all1_dp on all1(dp);
+create index all1_dc on all1(dc);
+create index all1_num on all1(num);
+create index all1_b on all1(b);
+create index all1_bv on all1(bv);
+create index all1_lbv on all1(lbv);
+create index all1_dt on all1(dt);
+create index all1_tm on all1(tm);
+create index all1_tms on all1(tms);
+
+select 1 from all1, all_c1 where si = c_si;
+select 1 from all1, all_c1 where si > c_si;
+select 1 from all1, all_c1 where si >= c_si;
+select 1 from all1, all_c1 where si < c_si;
+select 1 from all1, all_c1 where si <= c_si;
+select 1 from all1, all_c1 where i = c_i;
+select 1 from all1, all_c1 where i > c_i;
+select 1 from all1, all_c1 where i >= c_i;
+select 1 from all1, all_c1 where i < c_i;
+select 1 from all1, all_c1 where i <= c_i;
+select 1 from all1, all_c1 where li = c_li;
+select 1 from all1, all_c1 where li > c_li;
+select 1 from all1, all_c1 where li >= c_li;
+select 1 from all1, all_c1 where li < c_li;
+select 1 from all1, all_c1 where li <= c_li;
+select 1 from all1, all_c1 where r = c_r;
+select 1 from all1, all_c1 where r > c_r;
+select 1 from all1, all_c1 where r >= c_r;
+select 1 from all1, all_c1 where r < c_r;
+select 1 from all1, all_c1 where r <= c_r;
+select 1 from all1, all_c1 where dp = c_dp;
+select 1 from all1, all_c1 where dp > c_dp;
+select 1 from all1, all_c1 where dp >= c_dp;
+select 1 from all1, all_c1 where dp < c_dp;
+select 1 from all1, all_c1 where dp <= c_dp;
+select 1 from all1, all_c1 where dc = c_dc;
+select 1 from all1, all_c1 where dc > c_dc;
+select 1 from all1, all_c1 where dc >= c_dc;
+select 1 from all1, all_c1 where dc < c_dc;
+select 1 from all1, all_c1 where dc <= c_dc;
+select 1 from all1, all_c1 where b = c_b;
+select 1 from all1, all_c1 where b > c_b;
+select 1 from all1, all_c1 where b >= c_b;
+select 1 from all1, all_c1 where b < c_b;
+select 1 from all1, all_c1 where b <= c_b;
+select 1 from all1, all_c1 where bv = vc_bv;
+select 1 from all1, all_c1 where bv > vc_bv;
+select 1 from all1, all_c1 where bv >= vc_bv;
+select 1 from all1, all_c1 where bv < vc_bv;
+select 1 from all1, all_c1 where bv <= vc_bv;
+select 1 from all1, all_c1 where lbv = vc_bv;
+select 1 from all1, all_c1 where lbv > vc_bv;
+select 1 from all1, all_c1 where lbv >= vc_bv;
+select 1 from all1, all_c1 where lbv < vc_bv;
+select 1 from all1, all_c1 where lbv <= vc_bv;
+select 1 from all1, all_c1 where dt = c_dt;
+select 1 from all1, all_c1 where dt > c_dt;
+select 1 from all1, all_c1 where dt >= c_dt;
+select 1 from all1, all_c1 where dt < c_dt;
+select 1 from all1, all_c1 where dt <= c_dt;
+select 1 from all1, all_c1 where tm = c_tm;
+select 1 from all1, all_c1 where tm > c_tm;
+select 1 from all1, all_c1 where tm >= c_tm;
+select 1 from all1, all_c1 where tm < c_tm;
+select 1 from all1, all_c1 where tm <= c_tm;
+select 1 from all1, all_c1 where tms = c_tms;
+select 1 from all1, all_c1 where tms > c_tms;
+select 1 from all1, all_c1 where tms >= c_tms;
+select 1 from all1, all_c1 where tms < c_tms;
+select 1 from all1, all_c1 where tms <= c_tms;
+select 1 from all1, all_c1 where lvc = c_lvc;
+select 1 from all1, all_c1 where lvc > c_lvc;
+select 1 from all1, all_c1 where lvc >= c_lvc;
+select 1 from all1, all_c1 where lvc < c_lvc;
+select 1 from all1, all_c1 where lvc <= c_lvc;
+
+delete from all1;
+insert into all1(si) values (null);
+
+select 1 from all1, all_c1 where si = c_si;
+select 1 from all1, all_c1 where si > c_si;
+select 1 from all1, all_c1 where si >= c_si;
+select 1 from all1, all_c1 where si < c_si;
+select 1 from all1, all_c1 where si <= c_si;
+select 1 from all1, all_c1 where i = c_i;
+select 1 from all1, all_c1 where i > c_i;
+select 1 from all1, all_c1 where i >= c_i;
+select 1 from all1, all_c1 where i < c_i;
+select 1 from all1, all_c1 where i <= c_i;
+select 1 from all1, all_c1 where li = c_li;
+select 1 from all1, all_c1 where li > c_li;
+select 1 from all1, all_c1 where li >= c_li;
+select 1 from all1, all_c1 where li < c_li;
+select 1 from all1, all_c1 where li <= c_li;
+select 1 from all1, all_c1 where r = c_r;
+select 1 from all1, all_c1 where r > c_r;
+select 1 from all1, all_c1 where r >= c_r;
+select 1 from all1, all_c1 where r < c_r;
+select 1 from all1, all_c1 where r <= c_r;
+select 1 from all1, all_c1 where dp = c_dp;
+select 1 from all1, all_c1 where dp > c_dp;
+select 1 from all1, all_c1 where dp >= c_dp;
+select 1 from all1, all_c1 where dp < c_dp;
+select 1 from all1, all_c1 where dp <= c_dp;
+select 1 from all1, all_c1 where dc = c_dc;
+select 1 from all1, all_c1 where dc > c_dc;
+select 1 from all1, all_c1 where dc >= c_dc;
+select 1 from all1, all_c1 where dc < c_dc;
+select 1 from all1, all_c1 where dc <= c_dc;
+select 1 from all1, all_c1 where b = c_b;
+select 1 from all1, all_c1 where b > c_b;
+select 1 from all1, all_c1 where b >= c_b;
+select 1 from all1, all_c1 where b < c_b;
+select 1 from all1, all_c1 where b <= c_b;
+select 1 from all1, all_c1 where bv = vc_bv;
+select 1 from all1, all_c1 where bv > vc_bv;
+select 1 from all1, all_c1 where bv >= vc_bv;
+select 1 from all1, all_c1 where bv < vc_bv;
+select 1 from all1, all_c1 where bv <= vc_bv;
+select 1 from all1, all_c1 where lbv = vc_bv;
+select 1 from all1, all_c1 where lbv > vc_bv;
+select 1 from all1, all_c1 where lbv >= vc_bv;
+select 1 from all1, all_c1 where lbv < vc_bv;
+select 1 from all1, all_c1 where lbv <= vc_bv;
+select 1 from all1, all_c1 where dt = c_dt;
+select 1 from all1, all_c1 where dt > c_dt;
+select 1 from all1, all_c1 where dt >= c_dt;
+select 1 from all1, all_c1 where dt < c_dt;
+select 1 from all1, all_c1 where dt <= c_dt;
+select 1 from all1, all_c1 where tm = c_tm;
+select 1 from all1, all_c1 where tm > c_tm;
+select 1 from all1, all_c1 where tm >= c_tm;
+select 1 from all1, all_c1 where tm < c_tm;
+select 1 from all1, all_c1 where tm <= c_tm;
+select 1 from all1, all_c1 where tms = c_tms;
+select 1 from all1, all_c1 where tms > c_tms;
+select 1 from all1, all_c1 where tms >= c_tms;
+select 1 from all1, all_c1 where tms < c_tms;
+select 1 from all1, all_c1 where tms <= c_tms;
+select 1 from all1, all_c1 where lvc = c_lvc;
+select 1 from all1, all_c1 where lvc > c_lvc;
+select 1 from all1, all_c1 where lvc >= c_lvc;
+select 1 from all1, all_c1 where lvc < c_lvc;
+select 1 from all1, all_c1 where lvc <= c_lvc;
+
+-- drop the indexes;
+rollback;
+
+
+
+delete from all_c1;
+-- insert with implicit conversions to (var)char
+insert into all_c1 select * from all1;
+select c_ti, si, c_si, i, c_i from all1, all_c1;
+select li, c_li, r, c_r, dp, c_dp from all1, all_c1;
+select dc, c_dc, num, c_num, c_bool from all1, all_c1;
+select b, c_b, bv, vc_bv, lbv, vc_lbv, dt, c_dt from all1, all_c1;
+select tm, c_tm, tms, c_tms, c, c_c from all1, all_c1;
+select vc, vc_vc, lvc, c_lvc from all1, all_c1;
+
+-- insert with implicit conversions from (var)char
+insert into all1 select c_ti, c_si, c_i, c_li, c_r, c_dp,
+					    c_dc, c_num, c_bool, ' ', ' ', ' ',
+					    c_dt, c_tm, c_tms, '1', '2' from all_c1;
+select c_ti, si, c_si, i, c_i from all1, all_c1;
+select li, c_li, r, c_r, dp, c_dp from all1, all_c1;
+select dc, c_dc, num, c_num, c_bool from all1, all_c1;
+select b, c_b, bv, vc_bv, lbv, vc_lbv, dt, c_dt from all1, all_c1;
+select tm, c_tm, tms, c_tms, c, c_c from all1, all_c1;
+select vc, vc_vc, lvc, c_lvc from all1, all_c1;
+
+rollback;
+
+-- more insert conversions
+create table t5_2(dc decimal(5,2), num numeric(5,2));
+-- bug 827, NormalizeResultSet with char->decimal conversions
+insert into t5_2 values ('11.95', '95.11');
+select * from t5_2;
+rollback;
+
+-- update tests
+alter table all1 add column c30 char(30) ;
+alter table all1 add column vc30 varchar(30) ;
+alter table all1 add column lvc2 long varchar ;
+select * from all1;
+update all1 set si = '11';
+update all1 set i = '11';
+update all1 set li = '11';
+update all1 set r = '11.11';
+update all1 set dp = '11.11';
+update all1 set dc = '11.11';
+update all1 set num = '11.11';
+update all1 set b = X'21';
+update all1 set bv = X'21';
+update all1 set lbv = X'21';
+update all1 set dt = '1900-01-01';
+update all1 set tm = '08:08:08';
+update all1 set tms = '1990-01-01 08:08:08.6';
+update all1 set lvc = '44444444';
+
+select * from all1;
+
+select c30, vc30, lvc2 from all1;
+update all1 set c30 = si, vc30 = si, lvc2 = si;
+update all1 set c30 = i, vc30 = i, lvc2 = i;
+update all1 set c30 = li, vc30 = li, lvc2 = li;
+update all1 set c30 = r, vc30 = r, lvc2 = r;
+select c30, vc30, lvc2 from all1;
+update all1 set c30 = dp, vc30 = dp, lvc2 = dp;
+update all1 set c30 = dc, vc30 = dc, lvc2 = dc;
+update all1 set c30 = num, vc30 = num, lvc2 = num;
+select c30, vc30, lvc2 from all1;
+update all1 set c30 = b, vc30 = b, lvc2 = b;
+select c30, vc30, lvc2 from all1;
+update all1 set c30 = bv, vc30 = bv, lvc2 = bv;
+update all1 set c30 = lbv, vc30 = lbv, lvc2 = lbv;
+update all1 set c30 = dt, vc30 = dt, lvc2 = dt;
+update all1 set c30 = tm, vc30 = tm, lvc2 = tm;
+update all1 set c30 = tms, vc30 = tms, lvc2 = tms;
+select c30, vc30, lvc2 from all1;
+
+rollback;
+autocommit off;
+
+-- bug 5838 - arithmetic operators should not be applied to character strings
+-- the following arithmetic operations should fail
+values 1 + '2';
+values 1 - '2';
+values 1 * '2';
+values 4 / '2';
+values 1.1 + '2';
+values 1.1 - '2';
+values 1.1 * '2';
+values 4.4 / '2';
+values 1.1 + '2.2';
+values 1.1 - '2.2';
+values 1.1 * '2.2';
+values 4.4 / '2.2';
+
+-- concatentation
+values '$' || cast(1 as smallint) || '$';
+values '$' || 1 || '$';
+values '$' || cast(1 as bigint) || '$';
+values '$' || cast(1.1 as real) || '$';
+values '$' || cast(1.1 as double precision) || '$';
+values '$' || 1.1 || '$';
+values '$' || cast(1.1 as decimal(8,3)) || '$';
+values '$' || 'abcd' || '$';
+values '$' || date('1996-09-09') || '$';
+values '$' || time('10:11:12') || '$';
+values '$' || timestamp('1996-09-09 10:11:12.4' )|| '$';
+
+-- length functions
+values length(cast(1 as smallint));
+values length(cast(1 as int));
+values length(cast(1 as bigint));
+values length(cast(1.1 as real));
+values length(cast(1.1 as double precision));
+values length(1.1);
+values length(cast(1.1 as decimal(8,3)));
+values length('four');
+values length(date('1996-09-10'));
+values length(time('10:11:12'));
+values length(timestamp('1996-09-10 10:11:12.4'));
+
+-- extract
+values year( '1996-01-10');
+values month( '1996-01-10');
+values day( '1996-01-10');
+values hour( '10:11:12');
+values minute( '10:11:12');
+values second( '10:11:12');
+
+-- like
+select si from all1 where 1 like '%';
+-- bug 5845
+select 1 from all1 where date('1996-09-10') like '19%';
+select si from all1 where '1' like 1;
+-- integer 1 gets converted to 1 followed by 0 spaces
+-- so for kicks put a single space and make sure it is
+-- not the same
+select si from all1 where '1 ' like 1;
+select si from all1 where '1996-09-10' like date('1996-09-10');
+
+prepare p1 as 'select 1 from all1 where si like ?';
+execute p1 using 'values 1';
+execute p1 using 'values ''1''';
+
+-- conversions involving non-canonical date, time, and timestamp strings
+create table t (d date, t time, ts timestamp);
+create index txd on t(d);
+create index txt on t(t);
+create index txts on t(ts);
+insert into t values (CHAR('2000-01-07'), 
+		      CHAR('20:06:58'), 
+		      CHAR('2000-01-07 20:06:58.9000'));
+insert into t values (CHAR('2000-1-06'), 
+		      CHAR('20:06:57'), 
+		      CHAR('2000-01-7 20:06:58.8000'));
+VALUES SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'T');
+
+-- bug 2247, make sure that constant retyping
+-- (avoiding unnecessary normalization at execution)
+-- does not screw up implicit conversions
+create table x(x varchar(10));
+insert into x values 123;
+select * from x;
+
+-- clean up 
+drop table all_c1;
+drop table t;
+drop table x;
+commit;
+disconnect;
+-- ** insert implicitConversionsNegative.sql
+-- negate tests for implicit conversions
+-- to/from (var)char
+
+-- union
+connect 'jdbc:derby:wombat';
+autocommit on;
+values cast(1 as smallint), 'a';
+values 'a', cast(1 as smallint);
+values cast(1 as smallint), '1.1';
+values '1.1', cast(1 as smallint);
+values 1, 'a';
+values 'a', 1;
+values 1, '1.1';
+values '1.1', a;
+values cast(1 as bigint), 'a';
+values 'a', cast(1 as bigint);
+values cast(1 as bigint), '1.1';
+values '1.1', cast(1 as bigint);
+
+values cast(1.1 as real), 'a';
+values 'a', cast(1.1 as real);
+values cast(1.1 as double precision), 'a';
+values 'a', cast(1.1 as double precision);
+values 1.1, 'a';
+values 'a', 1.1;
+
+values true, 'a';
+values 'a', true;
+
+values date('1996-09-09'), 'a';
+values 'a', date('1996-09-09');
+values time('11:11:11'), 'a';
+values 'a', time('11:11:11');
+values timestamp('1996-09-09 11:11:11.5'), 'a';
+values 'a', timestamp('1996-09-09 11:11:11.5');
+
+-- comparisons at the language level
+select si from all1 where cast(1 as smallint) = 'a';
+select si from all1 where cast(1 as smallint) = '1.1';
+select si from all1 where cast(1 as smallint) > 'a';
+select si from all1 where cast(1 as smallint) > '1.1';
+select si from all1 where cast(1 as smallint) >= 'a';
+select si from all1 where cast(1 as smallint) >= '1.1';
+select si from all1 where cast(1 as smallint) < 'a';
+select si from all1 where cast(1 as smallint) < '1.1';
+select si from all1 where cast(1 as smallint) <= 'a';
+select si from all1 where cast(1 as smallint) <= '1.1';
+select si from all1 where cast(1 as smallint) <> 'a';
+select si from all1 where cast(1 as smallint) <> '1.1';
+select si from all1 where 'a' = cast(1 as smallint);
+select si from all1 where '1.1' = cast(1 as smallint);
+select si from all1 where 'a' > cast(1 as smallint);
+select si from all1 where '1.1' > cast(1 as smallint);
+select si from all1 where 'a' >= cast(1 as smallint);
+select si from all1 where '1.1' >= cast(1 as smallint);
+select si from all1 where 'a' < cast(1 as smallint);
+select si from all1 where '1.1' < cast(1 as smallint);
+select si from all1 where 'a' <= cast(1 as smallint);
+select si from all1 where '1.1' <= cast(1 as smallint);
+select si from all1 where 'a' <> cast(1 as smallint);
+select si from all1 where '1.1' <> cast(1 as smallint);
+select si from all1 where cast(1 as int) = 'a';
+select si from all1 where cast(1 as int) = '1.1';
+select si from all1 where cast(1 as int) > 'a';
+select si from all1 where cast(1 as int) > '1.1';
+select si from all1 where cast(1 as int) >= 'a';
+select si from all1 where cast(1 as int) >= '1.1';
+select si from all1 where cast(1 as int) < 'a';
+select si from all1 where cast(1 as int) < '1.1';
+select si from all1 where cast(1 as int) <= 'a';
+select si from all1 where cast(1 as int) <= '1.1';
+select si from all1 where cast(1 as int) <> 'a';
+select si from all1 where cast(1 as int) <> '1.1';
+select si from all1 where 'a' = cast(1 as int);
+select si from all1 where '1.1' = cast(1 as int);
+select si from all1 where 'a' > cast(1 as int);
+select si from all1 where '1.1' > cast(1 as int);
+select si from all1 where 'a' >= cast(1 as int);
+select si from all1 where '1.1' >= cast(1 as int);
+select si from all1 where 'a' < cast(1 as int);
+select si from all1 where '1.1' < cast(1 as int);
+select si from all1 where 'a' <= cast(1 as int);
+select si from all1 where '1.1' <= cast(1 as int);
+select si from all1 where 'a' <> cast(1 as int);
+select si from all1 where '1.1' <> cast(1 as int);
+select si from all1 where cast(1 as bigint) = 'a';
+select si from all1 where cast(1 as bigint) = '1.1';
+select si from all1 where cast(1 as bigint) > 'a';
+select si from all1 where cast(1 as bigint) > '1.1';
+select si from all1 where cast(1 as bigint) >= 'a';
+select si from all1 where cast(1 as bigint) >= '1.1';
+select si from all1 where cast(1 as bigint) < 'a';
+select si from all1 where cast(1 as bigint) < '1.1';
+select si from all1 where cast(1 as bigint) <= 'a';
+select si from all1 where cast(1 as bigint) <= '1.1';
+select si from all1 where cast(1 as bigint) <> 'a';
+select si from all1 where cast(1 as bigint) <> '1.1';
+select si from all1 where 'a' = cast(1 as bigint);
+select si from all1 where '1.1' = cast(1 as bigint);
+select si from all1 where 'a' > cast(1 as bigint);
+select si from all1 where '1.1' > cast(1 as bigint);
+select si from all1 where 'a' >= cast(1 as bigint);
+select si from all1 where '1.1' >= cast(1 as bigint);
+select si from all1 where 'a' < cast(1 as bigint);
+select si from all1 where '1.1' < cast(1 as bigint);
+select si from all1 where 'a' <= cast(1 as bigint);
+select si from all1 where '1.1' <= cast(1 as bigint);
+select si from all1 where 'a' <> cast(1 as bigint);
+select si from all1 where '1.1' <> cast(1 as smallint);
+
+select si from all1 where cast(1.1 as real) = 'a';
+select si from all1 where cast(1.1 as real) > 'a';
+select si from all1 where cast(1.1 as real) >= 'a';
+select si from all1 where cast(1.1 as real) < 'a';
+select si from all1 where cast(1.1 as real) <= 'a';
+select si from all1 where cast(1.1 as real) <> 'a';
+select si from all1 where 'a' = cast(1.1 as real);
+select si from all1 where 'a' > cast(1.1 as real);
+select si from all1 where 'a' >= cast(1.1 as real);
+select si from all1 where 'a' < cast(1.1 as real);
+select si from all1 where 'a' <= cast(1.1 as real);
+select si from all1 where 'a' <> cast(1.1 as real);
+select si from all1 where cast(1.1 as double precision) = 'a';
+select si from all1 where cast(1.1 as double precision) > 'a';
+select si from all1 where cast(1.1 as double precision) >= 'a';
+select si from all1 where cast(1.1 as double precision) < 'a';
+select si from all1 where cast(1.1 as double precision) <= 'a';
+select si from all1 where cast(1.1 as double precision) <> 'a';
+select si from all1 where 'a' = cast(1.1 as double precision);
+select si from all1 where 'a' > cast(1.1 as double precision);
+select si from all1 where 'a' >= cast(1.1 as double precision);
+select si from all1 where 'a' < cast(1.1 as double precision);
+select si from all1 where 'a' <= cast(1.1 as double precision);
+select si from all1 where 'a' <> cast(1.1 as double precision);
+select si from all1 where 1.1 = 'a';
+select si from all1 where 1.1 > 'a';
+select si from all1 where 1.1 >= 'a';
+select si from all1 where 1.1 < 'a';
+select si from all1 where 1.1 <= 'a';
+select si from all1 where 1.1 <> 'a';
+select si from all1 where 'a' = 1.1; 
+select si from all1 where 'a' > 1.1;
+select si from all1 where 'a' >= 1.1; 
+select si from all1 where 'a' < 1.1; 
+select si from all1 where 'a' <= 1.1; 
+select si from all1 where 'a' <> 1.1; 
+
+select si from all1 where date('1996-09-09') = 'a';
+select si from all1 where date('1996-09-09') > 'a';
+select si from all1 where date('1996-09-09') >= 'a';
+select si from all1 where date('1996-09-09') < 'a';
+select si from all1 where date('1996-09-09') <= 'a';
+select si from all1 where date('1996-09-09') <> 'a';
+select si from all1 where 'a' = date('1996-09-09');
+select si from all1 where 'a' > date('1996-09-09');
+select si from all1 where 'a' >= date('1996-09-09');
+select si from all1 where 'a' < date('1996-09-09');
+select si from all1 where 'a' <= date('1996-09-09');
+select si from all1 where 'a' <> date('1996-09-09');
+select si from all1 where time('11:11:11') = 'a';
+select si from all1 where time('11:11:11') > 'a';
+select si from all1 where time('11:11:11') >= 'a';
+select si from all1 where time('11:11:11') < 'a';
+select si from all1 where time('11:11:11') <= 'a';
+select si from all1 where time('11:11:11') <> 'a';
+select si from all1 where 'a' = time('11:11:11');
+select si from all1 where 'a' > time('11:11:11');
+select si from all1 where 'a' >= time('11:11:11');
+select si from all1 where 'a' < time('11:11:11');
+select si from all1 where 'a' <= time('11:11:11');
+select si from all1 where 'a' <> time('11:11:11');
+select si from all1 where timestamp('1996-09-09 11:11:11.4' )= 'a';
+select si from all1 where timestamp('1996-09-09 11:11:11.4' )> 'a';
+select si from all1 where timestamp('1996-09-09 11:11:11.4' )>= 'a';
+select si from all1 where timestamp('1996-09-09 11:11:11.4' )< 'a';
+select si from all1 where timestamp('1996-09-09 11:11:11.4' )<= 'a';
+select si from all1 where timestamp('1996-09-09 11:11:11.4' )<> 'a';
+select si from all1 where 'a' = timestamp('1996-09-09 11:11:11.4');
+select si from all1 where 'a' > timestamp('1996-09-09 11:11:11.4');
+select si from all1 where 'a' >= timestamp('1996-09-09 11:11:11.4');
+select si from all1 where 'a' < timestamp('1996-09-09 11:11:11.4');
+select si from all1 where 'a' <= timestamp('1996-09-09 11:11:11.4');
+select si from all1 where 'a' <> timestamp('1996-09-09 11:11:11.4');
+
+
+-- create an all types table
+drop table all1;
+create table all1(si smallint, i int, li bigint, r real, 
+				  dp double precision, dc decimal(5,1), num numeric(5,1),
+				  b char for bit data, bv varchar(1) for bit data,
+				  lbv long varchar for bit data,
+				  dt date, tm time, tms timestamp,
+				  c char(1), vc varchar(1), lvc long varchar);
+
+-- populate table
+insert into all1 values (2, 3, 4, 5.5, 6.6, 7.7, 8.8,
+				  		 X'20', X'20', X'20',
+				  		 date('1996-09-09'), time('12:12:12'), 
+				  		 timestamp('1996-09-09 12:12:12.5'),
+				  		 '1', '2', '333333333333333333');
+
+-- tests for comparisons as qualifiers
+select 1 from all1 where si = 'a';
+select 1 from all1 where si = '1.1';
+select 1 from all1 where si > 'a';
+select 1 from all1 where si > '1.1';
+select 1 from all1 where si >= 'a';
+select 1 from all1 where si >= '1.1';
+select 1 from all1 where si < 'a';
+select 1 from all1 where si < '1.1';
+select 1 from all1 where si <= 'a';
+select 1 from all1 where si <= '1.1';
+select 1 from all1 where si <> 'a';
+select 1 from all1 where si <> '1.1';
+select 1 from all1 where 'a' = si;
+select 1 from all1 where '1.1' = si;
+select 1 from all1 where 'a' > si;
+select 1 from all1 where '1.1' > si;
+select 1 from all1 where 'a' >= si;
+select 1 from all1 where '1.1' >= si;
+select 1 from all1 where 'a' < si;
+select 1 from all1 where '1.1' < si;
+select 1 from all1 where 'a' <= si;
+select 1 from all1 where '1.1' <= si;
+select 1 from all1 where 'a' <> si;
+select 1 from all1 where '1.1' <> si;
+select 1 from all1 where i = 'a';
+select 1 from all1 where i = '1.1';
+select 1 from all1 where i > 'a';
+select 1 from all1 where i > '1.1';
+select 1 from all1 where i >= 'a';
+select 1 from all1 where i >= '1.1';
+select 1 from all1 where i < 'a';
+select 1 from all1 where i < '1.1';
+select 1 from all1 where i <= 'a';
+select 1 from all1 where i <= '1.1';
+select 1 from all1 where i <> 'a';
+select 1 from all1 where i <> '1.1';
+select 1 from all1 where 'a' = i;
+select 1 from all1 where '1.1' = i;
+select 1 from all1 where 'a' > i;
+select 1 from all1 where '1.1' > i;
+select 1 from all1 where 'a' >= i;
+select 1 from all1 where '1.1' >= i;
+select 1 from all1 where 'a' < i;
+select 1 from all1 where '1.1' < i;
+select 1 from all1 where 'a' <= i;
+select 1 from all1 where '1.1' <= i;
+select 1 from all1 where 'a' <> i;
+select 1 from all1 where '1.1' <> i;
+select 1 from all1 where li = 'a';
+select 1 from all1 where li = '1.1';
+select 1 from all1 where li > 'a';
+select 1 from all1 where li > '1.1';
+select 1 from all1 where li >= 'a';
+select 1 from all1 where li >= '1.1';
+select 1 from all1 where li < 'a';
+select 1 from all1 where li < '1.1';
+select 1 from all1 where li <= 'a';
+select 1 from all1 where li <= '1.1';
+select 1 from all1 where li <> 'a';
+select 1 from all1 where li <> '1.1';
+select 1 from all1 where 'a' = li;
+select 1 from all1 where '1.1' = li;
+select 1 from all1 where 'a' > li;
+select 1 from all1 where '1.1' > li;
+select 1 from all1 where 'a' >= li;
+select 1 from all1 where '1.1' >= li;
+select 1 from all1 where 'a' < li;
+select 1 from all1 where '1.1' < li;
+select 1 from all1 where 'a' <= li;
+select 1 from all1 where '1.1' <= li;
+select 1 from all1 where 'a' <> li;
+select 1 from all1 where '1.1' <> li;
+select 1 from all1 where r = 'a';
+select 1 from all1 where r > 'a';
+select 1 from all1 where r >= 'a';
+select 1 from all1 where r < 'a';
+select 1 from all1 where r <= 'a';
+select 1 from all1 where r <> 'a';
+select 1 from all1 where 'a' = r;
+select 1 from all1 where 'a' > r;
+select 1 from all1 where 'a' >= r;
+select 1 from all1 where 'a' < r;
+select 1 from all1 where 'a' <= r;
+select 1 from all1 where 'a' <> r;
+select 1 from all1 where dp = 'a';
+select 1 from all1 where dp > 'a';
+select 1 from all1 where dp >= 'a';
+select 1 from all1 where dp < 'a';
+select 1 from all1 where dp <= 'a';
+select 1 from all1 where dp <> 'a';
+select 1 from all1 where 'a' = dp;
+select 1 from all1 where 'a' > dp;
+select 1 from all1 where 'a' >= dp;
+select 1 from all1 where 'a' < dp;
+select 1 from all1 where 'a' <= dp;
+select 1 from all1 where 'a' <> dp;
+select 1 from all1 where dc = 'a';
+select 1 from all1 where dc > 'a';
+select 1 from all1 where dc >= 'a';
+select 1 from all1 where dc < 'a';
+select 1 from all1 where dc <= 'a';
+select 1 from all1 where dc <> 'a';
+select 1 from all1 where 'a' = dc;
+select 1 from all1 where 'a' > dc;
+select 1 from all1 where 'a' >= dc;
+select 1 from all1 where 'a' < dc;
+select 1 from all1 where 'a' <= dc;
+select 1 from all1 where 'a' <> dc;
+select 1 from all1 where num = 'a';
+select 1 from all1 where num > 'a';
+select 1 from all1 where num >= 'a';
+select 1 from all1 where num < 'a';
+select 1 from all1 where num <= 'a';
+select 1 from all1 where num <> 'a';
+select 1 from all1 where 'a' = num;
+select 1 from all1 where 'a' > num;
+select 1 from all1 where 'a' >= num;
+select 1 from all1 where 'a' < num;
+select 1 from all1 where 'a' <= num;
+select 1 from all1 where 'a' <> num;
+select 1 from all1 where dt = 'a';
+select 1 from all1 where dt > 'a';
+select 1 from all1 where dt >= 'a';
+select 1 from all1 where dt < 'a';
+select 1 from all1 where dt <= 'a';
+select 1 from all1 where dt <> 'a';
+select 1 from all1 where 'a' = dt;
+select 1 from all1 where 'a' > dt;
+select 1 from all1 where 'a' >= dt;
+select 1 from all1 where 'a' < dt;
+select 1 from all1 where 'a' <= dt;
+select 1 from all1 where 'a' <> dt;
+select 1 from all1 where tm = 'a';
+select 1 from all1 where tm > 'a';
+select 1 from all1 where tm >= 'a';
+select 1 from all1 where tm < 'a';
+select 1 from all1 where tm <= 'a';
+select 1 from all1 where tm <> 'a';
+select 1 from all1 where 'a' = tm;
+select 1 from all1 where 'a' > tm;
+select 1 from all1 where 'a' >= tm;
+select 1 from all1 where 'a' < tm;
+select 1 from all1 where 'a' <= tm;
+select 1 from all1 where 'a' <> tm;
+select 1 from all1 where tms = 'a';
+select 1 from all1 where tms > 'a';
+select 1 from all1 where tms >= 'a';
+select 1 from all1 where tms < 'a';
+select 1 from all1 where tms <= 'a';
+select 1 from all1 where tms <> 'a';
+select 1 from all1 where 'a' = tms;
+select 1 from all1 where 'a' > tms;
+select 1 from all1 where 'a' >= tms;
+select 1 from all1 where 'a' < tms;
+select 1 from all1 where 'a' <= tms;
+select 1 from all1 where 'a' <> tms;
+
+autocommit off;
+-- test start and stop positions for conversions to (var)char
+create index all1_si on all1(si);
+create index all1_i on all1(i);
+create index all1_li on all1(li);
+create index all1_r on all1(r);
+create index all1_dp on all1(dp);
+create index all1_dc on all1(dc);
+create index all1_num on all1(num);
+create index all1_b on all1(b);
+create index all1_bv on all1(bv);
+create index all1_lbv on all1(lbv);
+create index all1_dt on all1(dt);
+create index all1_tm on all1(tm);
+create index all1_tms on all1(tms);
+
+select 1 from all1 where si = 'a';
+select 1 from all1 where si = '1.1';
+select 1 from all1 where si > 'a';
+select 1 from all1 where si > '1.1';
+select 1 from all1 where si >= 'a';
+select 1 from all1 where si >= '1.1';
+select 1 from all1 where si < 'a';
+select 1 from all1 where si < '1.1';
+select 1 from all1 where si <= 'a';
+select 1 from all1 where si <= '1.1';
+select 1 from all1 where 'a' = si;
+select 1 from all1 where '1.1' = si;
+select 1 from all1 where 'a' > si;
+select 1 from all1 where '1.1' > si;
+select 1 from all1 where 'a' >= si;
+select 1 from all1 where '1.1' >= si;
+select 1 from all1 where 'a' < si;
+select 1 from all1 where '1.1' < si;
+select 1 from all1 where 'a' <= si;
+select 1 from all1 where '1.1' <= si;
+select 1 from all1 where i = 'a';
+select 1 from all1 where i = '1.1';
+select 1 from all1 where i > 'a';
+select 1 from all1 where i > '1.1';
+select 1 from all1 where i >= 'a';
+select 1 from all1 where i >= '1.1';
+select 1 from all1 where i < 'a';
+select 1 from all1 where i < '1.1';
+select 1 from all1 where i <= 'a';
+select 1 from all1 where i <= '1.1';
+select 1 from all1 where 'a' = i;
+select 1 from all1 where '1.1' = i;
+select 1 from all1 where 'a' > i;
+select 1 from all1 where '1.1' > i;
+select 1 from all1 where 'a' >= i;
+select 1 from all1 where '1.1' >= i;
+select 1 from all1 where 'a' < i;
+select 1 from all1 where '1.1' < i;
+select 1 from all1 where 'a' <= i;
+select 1 from all1 where '1.1' <= i;
+select 1 from all1 where li = 'a';
+select 1 from all1 where li = '1.1';
+select 1 from all1 where li > 'a';
+select 1 from all1 where li > '1.1';
+select 1 from all1 where li >= 'a';
+select 1 from all1 where li >= '1.1';
+select 1 from all1 where li < 'a';
+select 1 from all1 where li < '1.1';
+select 1 from all1 where li <= 'a';
+select 1 from all1 where li <= '1.1';
+select 1 from all1 where 'a' = li;
+select 1 from all1 where '1.1' = li;
+select 1 from all1 where 'a' > li;
+select 1 from all1 where '1.1' > li;
+select 1 from all1 where 'a' >= li;
+select 1 from all1 where '1.1' >= li;
+select 1 from all1 where 'a' < li;
+select 1 from all1 where '1.1' < li;
+select 1 from all1 where 'a' <= li;
+select 1 from all1 where '1.1' <= li;
+select 1 from all1 where r = 'a';
+select 1 from all1 where r > 'a';
+select 1 from all1 where r >= 'a';
+select 1 from all1 where r < 'a';
+select 1 from all1 where r <= 'a';
+select 1 from all1 where 'a' = r;
+select 1 from all1 where 'a' > r;
+select 1 from all1 where 'a' >= r;
+select 1 from all1 where 'a' < r;
+select 1 from all1 where 'a' <= r;
+select 1 from all1 where dp = 'a';
+select 1 from all1 where dp > 'a';
+select 1 from all1 where dp >= 'a';
+select 1 from all1 where dp < 'a';
+select 1 from all1 where dp <= 'a';
+select 1 from all1 where 'a' = dp;
+select 1 from all1 where 'a' > dp;
+select 1 from all1 where 'a' >= dp;
+select 1 from all1 where 'a' < dp;
+select 1 from all1 where 'a' <= dp;
+select 1 from all1 where dc = 'a';
+select 1 from all1 where dc > 'a';
+select 1 from all1 where dc >= 'a';
+select 1 from all1 where dc < 'a';
+select 1 from all1 where dc <= 'a';
+select 1 from all1 where 'a' = dc;
+select 1 from all1 where 'a' > dc;
+select 1 from all1 where 'a' >= dc;
+select 1 from all1 where 'a' < dc;
+select 1 from all1 where 'a' <= dc;
+select 1 from all1 where num = 'a';
+select 1 from all1 where num > 'a';
+select 1 from all1 where num >= 'a';
+select 1 from all1 where num < 'a';
+select 1 from all1 where num <= 'a';
+select 1 from all1 where 'a' = num;
+select 1 from all1 where 'a' > num;
+select 1 from all1 where 'a' >= num;
+select 1 from all1 where 'a' < num;
+select 1 from all1 where 'a' <= num;
+select 1 from all1 where dt = 'a';
+select 1 from all1 where dt > 'a';
+select 1 from all1 where dt >= 'a';
+select 1 from all1 where dt < 'a';
+select 1 from all1 where dt <= 'a';
+select 1 from all1 where 'a' = dt;
+select 1 from all1 where 'a' > dt;
+select 1 from all1 where 'a' >= dt;
+select 1 from all1 where 'a' < dt;
+select 1 from all1 where 'a' <= dt;
+select 1 from all1 where tm = 'a';
+select 1 from all1 where tm > 'a';
+select 1 from all1 where tm >= 'a';
+select 1 from all1 where tm < 'a';
+select 1 from all1 where tm <= 'a';
+select 1 from all1 where 'a' = tm;
+select 1 from all1 where 'a' > tm;
+select 1 from all1 where 'a' >= tm;
+select 1 from all1 where 'a' < tm;
+select 1 from all1 where 'a' <= tm;
+select 1 from all1 where tms = 'a';
+select 1 from all1 where tms > 'a';
+select 1 from all1 where tms >= 'a';
+select 1 from all1 where tms < 'a';
+select 1 from all1 where tms <= 'a';
+select 1 from all1 where 'a' = tms;
+select 1 from all1 where 'a' > tms;
+select 1 from all1 where 'a' >= tms;
+select 1 from all1 where 'a' < tms;
+select 1 from all1 where 'a' <= tms;
+
+
+rollback;
+
+-- insert tests
+insert into all1(si) values 'a';
+insert into all1(si) values '1.1';
+insert into all1(i) values 'a';
+insert into all1(i) values '1.1';
+insert into all1(li) values 'a';
+insert into all1(li) values '1.1';
+insert into all1(r) values 'a';
+insert into all1(dp) values 'a';
+insert into all1(dc) values 'a';
+insert into all1(num) values 'a';
+insert into all1(dt) values 'a';
+insert into all1(tm) values 'a';
+insert into all1(tms) values 'a';
+
+-- update tests
+update all1 set si = 'a';
+update all1 set si = '1.1';
+update all1 set i = 'a';
+update all1 set i = '1.1';
+update all1 set li = 'a';
+update all1 set li = '1.1';
+update all1 set r = 'a';
+update all1 set dp = 'a';
+update all1 set dc = 'a';
+update all1 set num = 'a';
+update all1 set dt = 'a';
+update all1 set tm = 'a';
+update all1 set tms = 'a';
+
+rollback;
+
+-- arithmetic
+-- arithmetic on 2 non-numeric strings
+values '1' + '2';
+
+-- non-numeric strings
+values 1 + 'a';
+values 1 + '1a';
+values 'a' + 1;
+values '1a' + 1;
+
+-- numeric string of wrong type
+values 1 + '1.1';
+values '1.1' + 1;
+
+-- extract
+-- non-date strings
+values year( '1');
+values month( '1');
+values day( '1');
+values hour( '1');
+values minute( '1');
+values second( '1');
+
+-- string does not match default
+-- date for year/month/day
+-- time for hour/minute/second
+values year( '1996-09-10 10:11:12.5');
+values year( '10:11:12.5');
+values month( '1996-09-10 10:11:12.5');
+values month( '10:11:12.5');
+values day( '1996-09-10 10:11:12.5');
+values day( '10:11:12.5');
+values hour( '1996-09-10 10:11:12.5');
+values hour( '1996-09-10');
+values minute( '1996-09-10 10:11:12.5');
+values minute( '1996-09-10');
+values second( '1996-09-10 10:11:12.5');
+values second( '1996-09-10');
+
+-- sum and avg not supported on string types
+select sum('1') from all1;
+select avg('1') from all1;
+
+-- joins
+select * from all1 a, all1 b 
+where a.si = b.c;
+select * from all1 a, all1 b 
+where a.si = b.vc;
+select * from all1 a, all1 b 
+where a.si = b.lvc;
+select * from all1 a, all1 b 
+where b.si = a.c;
+select * from all1 a, all1 b 
+where b.si = a.vc;
+select * from all1 a, all1 b 
+where b.si = a.lvc;
+select * from all1 a, all1 b 
+where a.dt = b.c;
+select * from all1 a, all1 b 
+where a.dt = b.vc;
+select * from all1 a, all1 b 
+where a.dt = b.lvc;
+select * from all1 a, all1 b 
+where b.dt = a.c;
+select * from all1 a, all1 b 
+where b.dt = a.vc;
+select * from all1 a, all1 b 
+where b.dt = a.lvc;
+
+-- clean up 
+drop table all1;
+commit;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,18 @@
+#
+# This is the default system properties file for JSQL and JAVA tests.
+#
+# It will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij (or the GUI on ij) to load the driver and make an
+# initial connection to the database.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>.sysprop to be used instead of this file.
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/implicitConversions_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,11 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true
+
+derby.optimizer.optimizeJoinOrder=false
+derby.optimizer.ruleBasedOptimization=true
+derby.optimizer.noTimeout=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,700 @@
+--
+-- Test IN lists and BETWEEN on the builtin  types
+-- assumes these builtin types exist:
+--	int, smallint, char, varchar, real
+--
+-- other things we might test:
+-- compatibility with dynamic parameters 
+set isolation to rr;
+
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+autocommit off;
+
+-- Create the tables
+
+create table s (i int);
+
+create table t (i int, s smallint, c char(10), v varchar(50), 
+	d double precision, r real, e date, t time, p timestamp);
+
+create table test (i int, d double precision);
+
+
+-- Populate the tables
+
+insert into s values (1);
+insert into s values (1);
+insert into s values (2);
+
+insert into t values (null, null, null, null, null, null, null, null, null);
+insert into t values (0, 100, 'hello', 'everyone is here', 200.0e0,
+	300.0e0, '1992-01-01', '12:30:30', '1992-01-01 12:30:30');
+insert into t values (-1, -100, 'goodbye', 'everyone is there', -200.0e0,
+	-300.0e0, '1992-01-02', '12:30:59', '1992-01-01 12:30:45');
+
+insert into test values (2, 4.0);
+insert into test values (3, 10.0);
+insert into test values (4, 12.0);
+insert into test values (5, 25.0);
+insert into test values (10, 100.0);
+insert into test values (-6, 36);
+
+-- BETWEEN
+
+-- negative tests
+-- type mismatches
+select * from t where i between i and e;
+select * from t where i between i and t;
+select * from t where i between i and p;
+select * from t where e between p and p;
+select * from t where 1 between e and p;
+
+-- between null and
+select * from t where i between null and i;
+
+-- cardinality violation on a subquery
+select * from t where i between i and (select i from s);
+
+-- all parameters
+select * from t where ? between ? and ?;
+
+-- positive tests
+
+-- type comparisons
+select i from t where i between s and r;
+select i from t where i between r and d;
+select i from t where s between i and r;
+select i from t where s between r and d;
+select i from t where r between s and i;
+select i from t where d between s and i;
+select i from t where i between 40e1 and 50e1;
+select i from t where s between 40e1 and 50e1;
+select i from t where c between c and v;
+select i from t where 40e1 between i and s;
+select i from t where 'goodbye' between c and c;
+select i from t where '1992-01-01 12:30:45' between p and p;
+
+-- between 2 and 1
+select * from t where i between 2 and 1;
+select * from t where not i not between 2 and 1;
+select * from t where not i between 2 and 1;
+select * from t where i not between 2 and 1;
+
+-- between arbitrary expressions
+select * from test where sqrt(d) between 5 and 10;
+select * from test where (i+d) between 20 and 50;
+select * from test where {fn abs (i)} between 5 and 8;
+select * from test where (i+d) not between 20 and 50;
+select * from test where sqrt(d) not between 5 and 20;
+
+-- not (test clone() once its implemented)
+select i from t where i not between i and i;
+select i from t where s not between s and s;
+select i from t where c not between c and c;
+select i from t where v not between v and v;
+select i from t where d not between d and d;
+select i from t where r not between r and r;
+select i from t where e not between e and e;
+select i from t where t not between t and t;
+select i from t where p not between p and p;
+
+-- between complex expressions
+select i from t where s between (select i from s where i = 2) and
+							    (select 100 from s where i = 2);
+select * from t where i between i and (select max(i) from s);
+
+-- subquery between
+select i from t where (select i from s where i = 2) between 1 and 2;
+
+-- parameters
+prepare q1 as 'select i from t where ? between 2 and 3';
+prepare q2 as 'select i from t where ? between ? and 3';
+prepare q3 as 'select i from t where ? between 2 and ?';
+prepare q4 as 'select i from t where i between ? and ?';
+
+execute q1 using 'values 2';
+execute q2 using 'values (2, 2)';
+execute q3 using 'values (2, 3)';
+execute q4 using 'values (0, 1)';
+
+remove q1;
+remove q2;
+remove q3;
+remove q4;
+
+update s set i = 5 where i between 2 and 3;
+select * from s;
+
+-- delete - where clause
+delete from s where i between 3 and 5;
+select * from s;
+
+-- check consistency of scans, etc.
+values ConsistencyChecker();
+
+drop table s;
+
+
+-- IN List
+
+-- recreate s as ss
+create table ss (i int);
+insert into ss values (1);
+insert into ss values (1);
+insert into ss values (2);
+
+-- negative tests
+
+-- empty list
+select i from t where i in ();
+-- null in list
+select i from t where i in (null);
+-- cardinality violation from subquery
+select i from t where i in (1, 3, 5, 6, (select i from ss));
+-- type mismatches
+select i from t where i in (i, i, e);
+select i from t where i in (i, i, t);
+select i from t where i in (i, i, p);
+select i from t where e in (e, p, e);
+select i from t where 1 in (p, 2, 1);
+
+-- positive tests
+
+-- type comparisons
+select i from t where i in (s, r, i, d, 40e1);
+select s from t where s in (s, r, i, d, 40e1);
+select r from t where r in (s, r, i, d, 40e1);
+select d from t where d in (s, r, i, d, 40e1);
+select i from t where 40e1 in (s, r, i, d, 40e1);
+select c from t where c in (c, v, 'goodbye');
+select v from t where v in (c, v, 'goodbye');
+select i from t where 'goodbye' in (c, v, 'goodbye');
+select i from t where '1992-01-01 12:30:45' in (p, '1992-01-01 12:30:45');
+select p from t where p in (p, '1992-01-01 12:30:45');
+
+-- not (test clone() once its implemented)
+select i from t where i not in (i, i);
+select i from t where s not in (s, s);
+select i from t where c not in (c, c);
+select i from t where v not in (v, v);
+select i from t where d not in (d, d);
+select i from t where r not in (r, r);
+select i from t where e not in (e, e);
+select i from t where t not in (t, t);
+select i from t where p not in (p, p);
+
+-- more nots
+select i from t where i not in (0, 9, 8, 2, 7);
+select i from t where i not in (0, 9, 8, 2, 7);
+select i from t where not i not in (0, 9, 8, 2, 7);
+
+-- 1 element list
+select s from t where s in (100);
+
+-- left side of expression
+select s from t where (s in (100));
+select s from t where (s in (100));
+
+-- complex expressions
+select i from t where i in (1, 3, 5, 6, (select i from ss where i = 2) - 2);
+select * from test where i in (sqrt(d),{fn abs (i)}, -6);
+select * from test where sqrt(d) in (i, 4);
+select * from test where (i+d) in (6, 30);
+select * from test where sqrt(d) in (i);
+select * from test where {fn abs (i)} in (i);
+select * from test where {fn abs (i)} not in (i);
+select * from test where (i+d) not in (6, 30);
+select * from test where sqrt(d) not in (5, 10, 2);
+
+-- subquery in
+select i from t where (select i from ss where i = 2) in (1, 2);
+
+-- derived table
+select * from (select * from t 
+where i in (1, 3, 5, 6, (select i from ss where i = 2) - 2)) a;
+
+update ss set i = 5 where i in (2, 3, 40e1);
+select * from ss;
+
+-- delete - where clause
+delete from ss where i not in (5, 3);
+select * from ss;
+
+-- in/between 
+create table u (c1 integer);
+insert into u values null;
+insert into u values 1;
+insert into u values null;
+insert into u values 2;
+select * from u where c1 between 2 and 3;
+select * from u where c1 in (2, 3, 0, 1);
+
+-- add some more rows before testing static in list xform
+insert into t values (20, 200, 'maybe', 'noone is here', 800.0e0,
+	1000.0e0, '1892-01-01', '07:30:30', '1892-01-01 07:30:30');
+insert into t values (-50, -200, 'never', 'noone is there', -800.0e0,
+	-10300.0e0, '2992-01-02', '19:30:59', '2992-01-01 19:30:45');
+
+-- test the static in list xform for the various types
+select i from t;
+select i from t where i in (80, 20, -60, -1);
+
+select s from t;
+select s from t where s in (100, -200, -400);
+
+select c from t;
+select c from t where c in ('a', 'goodbye', '');
+
+select v from t;
+select v from t where v in ('noone is there', 'everyone is here', '');
+
+select d from t;
+select d from t where d in (200, -800);
+
+select r from t;
+select r from t where r in (300.0, -10300.0);
+
+select e from t;
+select e from t where e in ('2992-01-02', '3999-08-08', '1992-01-02');
+
+select t from t;
+select t from t where t in ('12:30:58', '07:20:20', '07:30:30');
+
+select p from t;
+select p from t where p in ('1095-09-08 12:30:58.3', '1892-01-01 07:20:20.0', '1892-01-01 07:30:30.0');
+
+-- verify that added predicates getting pushed down
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- big in lists (test binary search)
+create table big(i int, c char(10));
+insert into big values 
+	(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'), (6, '6'), (7, '7'), (8, '8'), (9, '9'), (10, '10'), 
+	(11, '11'), (12, '12'), (13, '13'), (14, '14'), (15, '15'), (16, '16'), (17, '17'), (18, '18'), (19, '19'), (20, '20'), 
+	(21, '21'), (22, '22'), (23, '23'), (24, '24'), (25, '25'), (26, '26'), (27, '27'), (28, '28'), (29, '29'), (30, '30'); 
+
+select * from big where i in (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+select * from big where i in (31, 32, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 1);
+select * from big where i in (1, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+select * from big where i in (1, 5, 7, 9, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+select * from big where i in (1, 5, 7, 9, 13, 15, 17, 19, 23, 25, 27, 29, 31);
+select * from big where i in (3, 3, 3, 3);
+select * from big where i in (4, 4, 4, 4);
+select * from big where c in (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+select * from big where c in (31, 32, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 1);
+select * from big where c in (1, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+select * from big where c in (1, 5, 7, 9, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31);
+select * from big where c in ('1', '5', '7', '9', '13', '15', '17', '19', '21', '23', '25', '27', '29', '31');
+select * from big where i in (1, 5, 7, 9, 13, 15, 17, 19, 23, 25, 27, 29, 31);
+
+-- check consistency of scans, etc.
+values ConsistencyChecker();
+
+-- beetle 4316, check "in" with self-reference and correlation, etc.
+
+create table t1 (c1 real, c2 real);
+create index i11 on t1 (c1);
+create table t2 (c1 real, c2 real);
+
+insert into t1 values (2, 1), (3, 9), (8, 63), (5, 25), (20, 5);
+insert into t2 values (4, 8), (8, 8), (7, 6), (5, 6);
+
+select c1 from t1 where c1 in (2, sqrt(c2));
+select c1 from t1 where c1 in ('10', '5', '20') and c1 > 3
+and c1 < 19;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 4000;
+-- nested loop exists join, right side should be ProjectRestrict on index scan with start and stop keys
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- nested loop exists join, right side should be ProjectRestrict on index scan with start and stop keys
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2) and c1 in ('5', '7'));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- hash exists join, right side PR on hash index scan, no start/stop key, next qualifier "=".
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- hash exists join, right side PR on hash index scan, still no start/stop key, next qualifier "=".
+-- It still doesn't have start/stop key because c1 in ('5', '7') is blocked out by 2 others.
+select c1 from t2 where c1 in (select c1 from t1 where c1 in (5, t2.c2) and c1 in ('5', '7'));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+create index i12 on t1 (c1, c2);
+
+-- at push "in" time, we determined that it is key and we can push; but at hash time we determined
+-- it's not key.  Now the key is it should be filtered out, otherwise we get exception.
+select c1 from t2 where c1 in (select c1 from t1 where c2 in (5, t2.c2));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- just some more tests in different situations, not for the bug 4316
+-- many items
+select c1 from t1 where c1 in ('9', '4', '8.0', '7.7',
+	5.2, 6, '7.7', '4.9', '6.1');
+prepare q1 as 'select c1 from t1 where c1 in (3, ?)';
+execute q1 using 'values 8';
+execute q1 using 'values 9';
+remove q1;
+
+-- reset autocommit
+autocommit on;
+
+-- Clean up
+
+drop table ss;
+drop table t;
+drop table u;
+drop table big;
+drop table t1;
+drop table t2;
+drop table test;
+
+--reproduction for beetle 5135 ( long list of constants in IN clause)
+create table t1(id int);
+insert into t1 values(2);
+insert into t1 values(5644);
+insert into t1 values(723);
+insert into t1 values(0);
+insert into t1 values(1827);
+insert into t1 values(4107);
+insert into t1 values(5095);
+insert into t1 values(6666);
+insert into t1 values(7777);
+insert into t1 values(15157);
+insert into t1 values(13037);
+insert into t1 values(9999);
+
+
+SELECT id FROM t1 WHERE id IN (2,3,5,7,6,8,11,13,14,15,16,18,19
+,22,25,30,32,33,5712,34,39,42,43,46,51,54
+,55,56,58,60,62,63,64,65,68,70,72,73,5663
+,5743,74,5396,78,81,83,87,5267,89,91,92,93,94
+,95,96,97,99,101,102,103,104,107,108,109,110,114
+,115,116,118,121,122,124,126,128,129,130,131,132,134
+,136,135,139,140,141,145,150,155,156,158,159,162,160
+,164,165,166,168,169,170,171,172,173,174,175,176,178
+,180,182,183,185,187,188,190,191,193,197,198,200,202
+,203,208,5672,5221,5713,212,213,215,219,220,221,225,227
+,229,5763,234,235,236,238,241,239,243,245,249,250,5716
+,255,256,257,258,259,260,261,262,263,264,265,269,5644
+,272,274,275,276,277,280,282,284,286,289,290,294,296
+,293,299,301,303,305,5234,306,310,311,5473,313,314,315
+,316,318,319,322,323,324,326,327,328,330,333,334,336
+,337,338,340,341,342,343,344,345,346,347,348,350,351
+,353,354,361,363,368,369,370,374,372,373,375,376,379
+,380,384,388,389,390,392,394,396,397,398,400,403,404
+,5775,406,407,408,409,410,412,413,414,416,420,422,423
+,424,428,429,431,434,436,438,441,442,443,450,452,454
+,456,457,458,462,467,466,468,469,5651,470,474,477,479
+,481,482,483,484,488,486,493,494,495,496,498,500,501
+,502,503,504,506,507,508,509,510,512,513,514,516,519
+,520,522,523,524,527,528,530,532,534,535,538,539,542
+,543,546,548,550,552,555,562,561,563,565,567,568,569
+,571,574,572,5250,576,573,579,581,583,584,586,589,590
+,5642,592,596,600,601,602,604,606,607,609,610,611,615
+,616,617,618,619,620,621,623,624,625,626,627,629,630
+,631,632,633,635,636,637,640,641,642,643,644,5246,647
+,646,648,653,5324,654,655,656,658,660,662,663,665,668
+,669,670,672,673,674,675,676,677,678,680,681,683,684
+,686,689,691,2762,694,695,5464,696,697,698,700,701,705
+,5635,5471,708,711,713,714,715,717,719,720,721,722,723
+,724,726,728,729,730,731,733,735,740,741,746,747,748
+,749,750,751,752,754,755,756,757,759,761,762,763,764
+,766,768,769,772,774,776,775,779,780,781,783,788,790
+,794,795,797,801,800,802,804,806,811,813,814,816,819
+,822,823,824,825,826,827,829,5755,832,833,834,836,838
+,840,841,843,844,846,847,848,850,851,852,855,856,857
+,858,859,860,864,5602,865,869,871,872,873,874,876,878
+,880,882,883,885,886,888,890,892,896,898,5528,900,901
+,902,903,904,905,906,907,908,5334,911,912,913,914,915
+,916,918,919,920,921,922,924,923,926,927,928,930,933
+,934,937,938,939,941,942,943,947,945,948,949,951,955
+,957,958,959,960,961,967,968,971,974,980,981,986,987
+,988,991,989,993,995,996,997,999,1000,1001,1002,1003,1005
+,1006,1007,1008,1009,1010,1012,1011,1014,1015,1016,1017,1019,1021
+,1025,1026,1028,1029,1030,1031,1034,1036,1037,1039,1041,1042,1043
+,1049,1047,1050,1051,1052,1053,1054,1056,1057,1058,1061,1062,1063
+,1066,1071,1070,1073,1075,1077,1078,5710,1084,1085,1086,1088,1090
+,1091,1093,1094,1095,1096,1099,1102,1104,1105,1107,1108,1109,1110
+,1114,1117,1119,1121,1123,1124,1126,1127,1128,1129,1130,1131,1136
+,1138,1141,1143,1144,1145,1147,1150,1151,1157,1146,1158,1164,1166
+,1171,1170,1176,1177,1189,5525,1202,1203,1173,1175,1179,1181,1183
+,1184,1186,1188,1193,1195,1196,1197,1198,1199,1200,1205,1207,1225
+,1226,1227,1228,1209,1210,1214,1212,1215,1217,1218,1219,1220,5238
+,1221,1223,5288,1230,5727,1232,1234,1235,1236,5795,5816,1238,1240
+,1241,1245,1246,1247,1250,1253,1254,1258,1261,1262,1264,1265,1266
+,1268,1270,1274,1275,1277,1278,1280,1281,1282,1283,1284,1286,1285
+,1287,1288,1290,1293,1294,1295,1297,1301,1302,1305,1307,1308,1309
+,1311,1313,1314,1316,1317,1318,1320,1321,1323,1327,1329,1332,1334
+,1336,1338,1339,1341,1343,1348,1346,1347,1349,1350,1353,1357,1358
+,1359,1361,1363,1366,1367,1368,1369,1370,1371,1374,5689,1376,1377
+,1379,1380,1381,1386,1387,5661,1389,1390,1392,1393,1394,1395,1396
+,1398,1400,1402,1408,1409,1410,1411,1412,1413,1414,1415,1416,1419
+,1421,1425,1427,1428,5216,1430,1431,1432,1433,1434,1437,1438,1440
+,1444,1446,1448,1449,1451,1453,1454,1456,1457,1458,1459,1461,1463
+,1464,1465,1466,1467,1468,1472,1474,1475,1477,1476,1479,1480,1482
+,1484,1485,1489,1490,1491,1492,1494,1495,1498,1496,1502,1503,1504
+,1506,1507,1508,1510,1511,1512,1517,1519,5686,1521,1525,1528,1531
+,1530,1529,1535,1537,1538,1539,1541,1542,1546,1549,1552,1554,1555
+,1557,1558,1561,1562,1563,1566,1568,1570,1574,1575,1576,1580,1579
+,1577,1581,1583,1584,1585,1586,1589,1588,1592,1590,1594,1597,1598
+,1600,1601,1605,1606,1607,1608,1610,1611,1612,1613,1614,1615,1618
+,1620,1624,1625,1626,1627,1628,1631,1633,1635,1639,1640,1641,1642
+,5653,1645,1647,1649,1650,1655,5633,1656,1657,5647,1661,1662,1666
+,1667,1668,1669,1671,1672,1673,1674,1675,1676,1677,1678,1680,1682
+,1686,1688,1690,1694,1695,1696,1697,1699,1700,1701,1702,1703,1708
+,1710,1714,1713,1716,1719,1722,1721,1723,1724,1726,1727,1728,1729
+,1732,1734,1735,5419,1736,1737,1739,1740,1743,1744,1747,1748,1749
+,1750,1751,1752,1754,1757,1758,1767,1759,1761,1762,1764,1765,1766
+,1768,1771,1774,1775,1776,1779,1777,1781,1783,1785,1787,1789,1791
+,1794,1795,1796,1797,1798,1802,1804,1805,1806,1808,1809,1811,1812
+,1813,1814,1815,1816,1817,1819,5372,1822,1823,1824,1825,1827,1829
+,5709,1830,1831,1832,1833,1834,1835,1837,1838,1839,1841,1842,1847
+,5337,1848,1850,1851,1852,1854,1855,1858,1856,1859,1861,1862,1863
+,1867,1866,1868,1870,1871,1873,1874,1878,1879,1880,1881,1883,1884
+,1886,1889,1891,1893,1894,1896,1901,1903,1905,1906,1907,1908,1909
+,1911,1915,1916,1918,1919,1921,1922,1924,1925,5468,5671,1930,1931
+,1932,1933,1935,1937,1942,1943,1944,1947,1949,1951,1952,1955,1956
+,1957,1961,1962,1963,5393,1965,1966,1968,1972,1971,1976,1978,1980
+,1982,1983,1986,1989,1991,1992,1994,1995,1996,1997,1998,2000,2001
+,2002,2003,2005,2006,2008,2009,2012,2013,2015,2016,2018,2024,2026
+,2027,2028,2029,2031,2038,2039,2044,2046,2049,2050,2051,2052,2053
+,2054,2056,2058,2055,2060,2061,2062,2063,2065,2069,2070,2066,2076
+,2074,2072,2077,2079,2080,2083,2085,2086,2088,2089,2091,2092,2094
+,2096,2095,2098,2097,2099,2100,2106,2107,2108,2111,2112,2113,2114
+,2116,2117,2118,2119,2121,2123,2124,2125,2126,2127,2128,2129,2130
+,2134,2138,2139,2144,2145,2147,2148,2150,2151,2152,2153,2156,2157
+,2158,2160,2161,2162,2163,2164,2165,2166,2167,2170,2171,2172,2173
+,2174,2175,2176,2178,2180,2181,2186,5408,2188,2189,2190,2191,2192
+,2195,2198,2199,2201,2203,2206,2207,2209,2211,2212,5236,2213,2215
+,2216,2217,2218,2219,5253,2224,2225,2226,2227,2229,2231,2232,2233
+,2235,2236,2237,2238,2240,2241,2242,2243,2245,2246,2247,2248,2249
+,2251,2257,2259,2260,2261,2262,2263,2264,2265,2266,2267,2270,2272
+,2273,2274,2275,2276,2277,2281,2282,2284,2285,2288,2289,2290,2291
+,2293,2294,2295,2296,2298,2299,2300,2301,2304,2306,2308,2310,2309
+,2312,2313,2316,2317,2322,2324,2320,2318,2330,2331,2332,2334,5711
+,2335,2337,2338,2339,2344,2345,2347,2348,2349,5740,2350,2354,2356
+,2357,2358,2359,2361,2362,2365,2367,2368,2370,2372,2374,2378,2379
+,2380,2381,2382,2385,2388,2389,2391,2392,2393,2395,2396,2398,2400
+,2402,2401,2403,2404,2406,2408,2409,2411,2413,2417,2419,2421,2422
+,2424,2425,2426,2427,2428,2430,2432,2433,2434,2435,2436,2440,2439
+,2441,2443,2445,2446,2450,2448,2449,2451,2453,2456,2457,2458,5751
+,2460,2462,2463,2465,5731,2468,2469,2471,2472,2474,2479,2480,2481
+,2482,2484,2485,2486,2487,2488,2489,2491,2492,2494,2495,2496,2497
+,2499,2500,2501,2503,2505,2506,2507,2508,2511,2513,2515,2514,2516
+,2522,2525,2523,2526,2527,2528,2529,2532,2531,2533,2534,2535,2537
+,2539,2541,2543,2544,2546,2548,2550,2551,5629,2553,2555,2556,2557
+,2558,2559,2560,2563,2565,2569,2571,2574,2575,5718,5434,2577,2578
+,5760,2580,2584,2585,2587,2589,2590,2591,2592,2593,2594,2596,2598
+,2600,2602,2603,2605,2606,2607,2608,2610,2612,2613,2615,2616,2618
+,2619,2623,2621,2624,2625,2630,2633,2634,2636,2638,2640,2643,2644
+,2649,2651,2653,2654,2655,2656,2657,2658,2659,2660,2661,2662,2665
+,2666,2667,2670,2671,2673,2674,2676,2680,2682,2683,2684,2687,2685
+,2690,2688,2694,2692,2695,2696,5448,2698,2699,2700,2701,2703,2704
+,2705,2706,2708,2709,2711,2714,2716,2717,2718,2719,2720,2722,2724
+,2725,2726,2728,2729,2733,2736,2734,2737,2738,2739,2743,2744,2745
+,2746,2747,2748,2754,2751,2753,2755,2757,2758,2761,2763,2766,2768
+,2769,2771,2773,2775,2774,2776,2778,2780,2781,2782,2784,2785,2786
+,2787,2788,2789,2790,2791,2795,2798,2801,2802,2803,2804,2807,2808
+,2809,2810,2812,2814,2815,2816,2819,2820,2822,2824,5649,2828,5465
+,2832,2833,5817,5809,5814,5815,2835,2838,2839,2845,2846,2847,2850
+,2851,2852,2854,2855,2857,2842,2858,2859,2861,2863,2864,2865,2866
+,2872,2873,2874,2875,2878,2881,2882,2883,2884,2885,2886,2887,2888
+,2891,2893,2894,2895,2896,2898,2897,2899,2900,2901,2903,2905,2906
+,2907,2908,2910,2914,2916,2917,2920,2918,2921,2925,2927,2928,2929
+,2932,2934,2936,2937,2938,2940,2939,2942,2943,2944,2945,2947,2950
+,2952,2953,2955,2957,2958,2959,2961,2962,2963,2964,2966,2967,2968
+,2972,2974,2976,2977,2978,2979,2980,2981,2982,2983,2984,2986,2987
+,2988,2989,2990,2991,2992,2993,2994,2996,2997,2998,2999,3000,3001
+,3003,3007,3008,3009,3011,3013,3014,3015,3016,3017,3019,3021,5768
+,3023,3026,3027,3028,3029,3032,3033,3035,3039,3040,3041,3042,3043
+,3044,3045,3046,3048,3050,3051,3055,3056,3057,3060,3061,3062,3064
+,3069,3068,3070,3071,3072,3074,3076,3079,3080,3082,3083,3086,3099
+,3088,3089,3090,3091,3092,3093,3094,3095,3096,5183,3097,3101,3103
+,3104,3107,3109,3111,3112,3114,3116,3120,3122,3123,3126,3127,3128
+,3129,3131,3132,3134,3135,3137,3139,5758,5724,3140,3144,3145,3147
+,3148,3149,3150,3152,3153,3154,3155,3158,3161,3162,3163,3164,3165
+,3166,3167,5776,3168,3170,3180,3181,3182,3186,3191,3192,3196,3198
+,3199,3200,3203,3205,3206,3207,3208,3210,3211,3212,3213,3215,3216
+,3217,3218,3219,3220,3221,3224,3226,3228,3230,3231,3232,3233,3235
+,3236,3237,3239,3241,3242,3243,5687,3245,3246,3248,3249,3253,3254
+,3259,3260,3261,3262,3264,3266,3267,3269,5811,3271,3273,3275,3277
+,5620,3278,3279,3280,3282,3284,3286,3287,3289,3293,3294,3295,3297
+,3299,3302,3301,3305,3307,3306,3308,3310,3311,3312,3313,3315,3316
+,5497,3318,3322,3324,3326,3328,3336,3337,3338,3339,3341,5589,3344
+,5742,3345,3346,3348,3350,3352,3354,3355,3356,3357,3361,3363,3364
+,3365,3367,3368,3369,3371,3370,3372,3375,3373,3377,3378,3379,3381
+,5638,3382,3384,3386,3387,3389,3390,3391,3392,3397,3398,3400,3401
+,3402,3404,3405,3406,3407,3408,3409,3410,3411,3414,3415,3416,3417
+,3418,3420,3421,3423,3424,3426,3428,3430,3431,3432,3433,3435,3436
+,3437,5391,3440,3441,3442,3443,3444,3446,3448,3450,3452,3451,3453
+,3455,3456,3457,3460,3461,3463,3464,3467,3466,3468,3471,3472,3474
+,3475,3477,3479,3481,3482,3484,3485,3486,3487,3488,3489,3491,3493
+,3494,3496,3497,3498,3500,3502,3504,3499,3505,3507,3514,3515,3517
+,3519,3520,3522,3524,3525,5256,3526,3527,3528,3529,3531,5636,3532
+,3533,3535,3536,3538,3539,3541,3544,3548,3550,3551,3552,3554,3556
+,3557,3559,3560,3563,3564,3565,3567,3568,3571,3572,3573,3574,3577
+,3583,3582,3580,3584,3586,3589,3587,3590,3591,3592,3593,3596,3597
+,3599,3602,3603,3604,3605,3606,3608,3609,5398,3612,3614,3615,3616
+,3617,3618,3619,3620,3621,3623,3624,3628,3630,3631,3633,3635,3636
+,3637,3638,3640,3641,3643,3645,3644,3648,3650,3649,3651,3655,3662
+,3664,3665,3667,3668,3672,3673,3676,3679,3681,3682,3683,3685,3688
+,3689,3690,3692,3695,3696,3697,3699,3700,3701,3704,5349,3707,3708
+,3710,3713,3715,3716,3717,3718,3720,3721,3724,3726,3727,3728,3729
+,3731,3732,3733,3735,3736,3741,3745,3747,3749,3751,3752,3754,3756
+,3758,3761,3762,3767,3769,3773,3775,5680,5181,3779,3783,3784,3788
+,5567,3792,3794,3797,3800,3801,3804,3805,3806,3807,3808,3809,3810
+,3811,3812,3813,3814,3819,3818,3820,3821,3822,3824,3825,3826,3827
+,3829,3830,3832,5242,3834,3835,3836,3838,3843,3802,3849,3850,3855
+,3857,5657,3858,3859,3862,5645,3863,3864,3865,5669,3866,3867,3868
+,3869,3872,5720,3873,3874,3877,3879,3880,3881,3882,3884,3885,3886
+,3887,3888,3889,3890,3892,3893,3898,3899,3900,3903,3904,3905,3908
+,3909,3910,3911,3916,3917,3918,3921,3924,3926,3930,3931,3933,3934
+,3936,3938,3939,3940,3941,3945,3949,3950,3954,3955,3957,3958,3960
+,3961,3964,3966,3968,3973,3979,3980,3981,3982,3983,3985,3986,3987
+,3989,3991,3990,3994,3992,3993,3995,3997,3998,3999,4000,4001,4002
+,4003,4004,4005,4006,4007,4008,4009,4011,4012,4013,4015,4016,4020
+,4022,4023,5536,4026,4027,4028,4030,4031,4034,5770,4035,4037,4040
+,4041,4043,4044,4045,4046,4047,4048,4051,4052,4053,4055,4059,4061
+,4062,4063,4064,4067,4070,4073,4074,4075,4076,4077,4079,4081,4083
+,4084,4085,4086,4093,5240,4090,4092,4094,4095,4097,4098,4100,4102
+,4103,4104,4105,4106,4107,4108,4109,4110,4112,4114,4115,4118,5631
+,4120,4124,4132,4135,4142,4144,4145,4147,4148,4149,4150,4156,4159
+,4160,4162,4163,4165,4166,4168,4167,4169,4171,4172,4174,4175,4179
+,4181,4182,4186,4190,4188,4194,4196,4198,5738,4200,4202,4203,4205
+,4206,4208,4211,4212,4213,4215,4217,4220,4223,4225,4229,4230,4231
+,4235,4236,4237,4238,4239,5826,4241,4242,4243,4244,4246,5343,4250
+,4251,4252,4253,4254,4255,4256,4257,4258,4262,5685,4264,4268,4269
+,4270,4271,4272,4273,4274,5659,4279,4281,4283,4284,4285,4287,4291
+,4292,4296,4298,4299,4300,4301,4302,4303,4304,4305,4308,4310,5348
+,4311,4312,4313,4315,5438,4317,4319,4321,4322,4324,4326,4327,4328
+,4329,4330,4331,4334,4336,4337,4341,4342,4343,4344,5326,4346,4352
+,4354,4356,4359,4362,4364,4366,4367,4371,4373,4375,4379,4381,4384
+,4386,4392,4390,5218,4397,4404,4406,4409,4410,4412,4411,4413,4414
+,4416,4418,4420,4424,4426,4427,4430,4431,4432,4433,4437,4438,4439
+,4440,4441,4442,4444,4445,4448,4446,5748,4451,4453,4454,4455,4458
+,5774,4461,4462,4464,4465,4466,4467,4468,4469,4470,4472,4474,4475
+,4476,4479,4480,4482,4483,4485,4487,4490,4492,4493,4494,4500,4501
+,4503,4504,4506,4507,4508,4509,4510,4511,4512,4513,4516,4519,4520
+,4521,4522,4524,4525,4527,4528,4533,4535,4536,4537,4538,4539,4540
+,4541,4542,4544,4547,4548,4550,4552,4553,4555,4556,4557,4559,4561
+,4562,4564,4565,4566,4567,4568,4569,5417,4570,4572,4575,4582,4576
+,4578,4581,4583,4584,4585,4586,4587,4588,4589,4593,4594,4596,4603
+,4604,4605,4610,4612,4614,5387,4619,4622,4624,4626,4627,4628,4629
+,4630,4632,4634,4636,4637,4640,4645,4646,4648,4650,4651,4652,4653
+,4654,4657,4659,4662,4660,4664,4665,4667,4668,4669,4672,4674,4677
+,4679,4681,4682,4683,4684,4686,4688,4689,4690,4692,4693,4694,4695
+,4698,4699,4700,4705,4701,4703,4708,4709,4711,4713,4714,4717,4727
+,4728,4732,4734,4736,4737,4739,4741,4744,4747,4748,4750,4751,4754
+,4755,4756,4758,4759,4761,4762,4764,4765,4767,4769,4749,4770,4771
+,4773,4774,4775,4776,4777,4778,4784,4785,4786,4787,4788,4791,4793
+,4794,5389,4798,4800,4801,4803,4805,4808,4806,4809,4810,4811,4814
+,4815,4816,4822,4826,4827,4829,4831,4824,4832,4835,4836,4838,4839
+,4840,4842,4844,4846,4848,4849,4850,4853,4854,4858,4860,4861,4862
+,4863,4864,4867,4868,4871,4873,4874,4875,4877,4878,4879,4884,4886
+,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4899,4902,4903
+,4904,4908,4905,4906,4907,4910,4911,4912,4913,4915,4914,4916,4917
+,4918,4919,4920,4921,4923,4926,4927,4928,4929,4930,4931,4932,4933
+,4937,4942,4944,4945,4946,4948,4950,4951,4954,4956,4958,4960,4961
+,4963,4964,4965,4967,4970,4969,4971,4972,4974,4977,4975,4979,4981
+,5729,4982,4983,4984,4986,4989,4991,4992,4994,4995,4996,4997,4998
+,4999,5001,5003,5005,5006,5655,3969,5007,5622,5009,5013,5015,5021
+,5022,5024,5025,5026,5028,5029,5031,5033,5036,5037,5038,5040,5041
+,5042,5043,5047,5048,5050,5051,5053,5054,5056,5058,5059,5061,5063
+,5064,5065,5066,5068,5069,5070,5072,5073,5076,5080,5081,5082,5083
+,5084,5085,5087,5086,5088,5090,5092,5094,5095,5097,5099,5101,5102
+,5104,5105,5106,5107,5108,5110,5112,5114,5115,5116,5117,5118,5119
+,5120,5121,5123,5124,5125,5126,5127,5128,5130,5131,5132,5134,5136
+,5137,5138,5139,5140,5141,5143,5777,5812,5148,5154,5155,5157,5159
+,6022,6024,6025,6026,6028,6029,6031,6033,6036,6037,6038,6040,6041
+,6042,6043,6047,6048,6050,6051,6053,6054,6056,6058,6059,6061,6063
+,6064,6065,6066,6068,6069,6070,6072,6073,6076,6080,6081,6082,6083
+,6084,6085,6087,6086,6088,6090,6092,6094,6095,6097,6099,6101,6102
+,6104,6105,6106,6107,6108,6110,6112,6114,6115,6116,6117,6118,6119
+,6120,6121,6123,6124,6125,6126,6127,6128,6130,6131,6132,6134,6136
+,6137,6138,6139,6140,6141,6143,6777,6812,6148,6154,6155,6157,6159
+,7022,7024,7025,7026,7028,7029,7031,7033,7036,7037,7038,7040,7041
+,7042,7043,7047,7048,7050,7051,7053,7054,7056,7058,7059,7061,7063
+,7064,7065,7066,7068,7069,7070,7072,7073,7076,7080,7081,7082,7083
+,7084,7085,7087,7086,7088,7090,7092,7094,7095,7097,7099,7101,7102
+,7104,7105,7106,7107,7108,7110,7112,7114,7115,7116,7117,7118,7119
+,7120,7121,7123,7124,7125,7126,7127,7128,7130,7131,7132,7134,7136
+,7137,7138,7139,7140,7141,7143,7777,7812,7148,7154,7155,7157,7159
+,8022,8024,8025,8026,8028,8029,8031,8033,8036,8037,8038,8040,8041
+,8042,8043,8047,8048,8050,8051,8053,8054,8056,8058,8059,8061,8063
+,8064,8065,8066,8068,8069,8070,8072,8073,8076,8080,8081,8082,8083
+,8084,8085,8087,8086,8088,8090,8092,8094,8095,8097,8099,8101,8102
+,8104,8105,8106,8107,8108,8110,8112,8114,8115,8116,8117,8118,8119
+,8120,8121,8123,8124,8125,8126,8127,8128,8130,8131,8132,8134,8136
+,8137,8138,8139,8140,8141,8143,8777,8812,8148,8154,8155,8157,8159
+,9022,9024,9025,9026,9028,9029,9031,9033,9036,9037,9038,9040,9041
+,9042,9043,9047,9048,9050,9051,9053,9054,9056,9058,9059,9061,9063
+,9064,9065,9066,9068,9069,9070,9072,9073,9076,9080,9081,9082,9083
+,9084,9085,9087,9086,9088,9090,9092,9094,9095,9097,9099,9101,9102
+,9104,9105,9106,9107,9108,9110,9112,9114,9115,9116,9117,9118,9119
+,9120,9121,9123,9124,9125,9126,9127,9128,9130,9131,9132,9134,9136
+,9137,9138,9139,9140,9141,9143,9777,9812,9148,9154,9155,9157,9159
+,10022,10024,10025,10026,10028,10029,10031,10033,10036,10037,10038,10040,10041
+,10042,10043,10047,10048,10050,10051,10053,10054,10056,10058,10059,10061,10063
+,10064,10065,10066,10068,10069,10070,10072,10073,10076,10080,10081,10082,10083
+,10084,10085,10087,10086,10088,10090,10092,10094,10095,10097,10099,10101,10102
+,10104,10105,10106,10107,10108,10110,10112,10114,10115,10116,10117,10118,10119
+,10120,10121,10123,10124,10125,10126,10127,10128,10130,10131,10132,10134,10136
+,10137,10138,10139,10140,10141,10143,10777,10812,10148,10154,10155,10157,10159
+,11022,11024,11025,11026,11028,11029,11031,11033,11036,11037,11038,11040,11041
+,11042,11043,11047,11048,11050,11051,11053,11054,11056,11058,11059,11061,11063
+,11064,11065,11066,11068,11069,11070,11072,11073,11076,11080,11081,11082,11083
+,11084,11085,11087,11086,11088,11090,11092,11094,11095,11097,11099,11101,11102
+,11104,11105,11106,11107,11108,11110,11112,11114,11115,11116,11117,11118,11119
+,11120,11121,11123,11124,11125,11126,11127,11128,11130,11131,11132,11134,11136
+,11137,11138,11139,11140,11141,11143,11777,11812,11148,11154,11155,11157,11159
+,12022,12024,12025,12026,12028,12029,12031,12033,12036,12037,12038,12040,12041
+,12042,12043,12047,12048,12050,12051,12053,12054,12056,12058,12059,12061,12063
+,12064,12065,12066,12068,12069,12070,12072,12073,12076,12080,12081,12082,12083
+,12084,12085,12087,12086,12088,12090,12092,12094,12095,12097,12099,12101,12102
+,12104,12105,12106,12107,12108,12110,12112,12114,12115,12116,12117,12118,12119
+,12120,12121,12123,12124,12125,12126,12127,12128,12130,12131,12132,12134,12136
+,12137,12138,12139,12140,12141,12143,12777,12812,12148,12154,12155,12157,12159
+,13022,13024,13025,13026,13028,13029,13031,13033,13036,13037,13038,13040,13041
+,13042,13043,13047,13048,13050,13051,13053,13054,13056,13058,13059,13061,13063
+,13064,13065,13066,13068,13069,13070,13072,13073,13076,13080,13081,13082,13083
+,13084,13085,13087,13086,13088,13090,13092,13094,13095,13097,13099,13101,13102
+,13104,13105,13106,13107,13108,13110,13112,13114,13115,13116,13117,13118,13119
+,13120,13121,13123,13124,13125,13126,13127,13128,13130,13131,13132,13134,13136
+,13137,13138,13139,13140,13141,13143,13777,13812,13148,13154,13155,13157,13159
+,14022,14024,14025,14026,14028,14029,14031,14033,14036,14037,14038,14040,14041
+,14042,14043,14047,14048,14050,14051,14053,14054,14056,14058,14059,14061,14063
+,14064,14065,14066,14068,14069,14070,14072,14073,14076,14080,14081,14082,14083
+,14084,14085,14087,14086,14088,14090,14092,14094,14095,14097,14099,14101,14102
+,14104,14105,14106,14107,14108,14110,14112,14114,14115,14116,14117,14118,14119
+,14120,14121,14123,14124,14125,14126,14127,14128,14130,14131,14132,14134,14136
+,14137,14138,14139,14140,14141,14143,14777,14812,14148,14154,14155,14157,14159
+,15022,15024,15025,15026,15028,15029,15031,15033,15036,15037,15038,15040,15041
+,15042,15043,15047,15048,15050,15051,15053,15054,15056,15058,15059,15061,15063
+,15064,15065,15066,15068,15069,15070,15072,15073,15076,15080,15081,15082,15083
+,15084,15085,15087,15086,15088,15090,15092,15094,15095,15097,15099,15101,15102
+,15104,15105,15106,15107,15108,15110,15112,15114,15115,15116,15117,15118,15119
+,15120,15121,15123,15124,15125,15126,15127,15128,15130,15131,15132,15134,15136
+,15137,15138,15139,15140,15141,15143,15777,15812,15148,15154,15155,15157,15159
+,4436,5162,5165,5170,5171,5173,5345,5174,5765,5177,5750,5793,0) ORDER BY id;
+
+drop table t1;
+
+create table t1(c1 int );
+create table t2(c2 int);
+insert into t2 values(0);
+create view v1(c1)
+as
+select c1 from t1
+union all
+select c2 from t2 ;
+--following statement fails with NPE before fix of 5469
+select c1 from v1 where c1 NOT IN (1, 2);
+drop view v1;
+drop table t1;
+drop table t2;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/inbetween_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+# wants to do consistency checking, so needs
+# the statement cache off to ensure no trailing dependencies exist
+derby.language.statementCacheSize=0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+-- this file exists to show the streams booting and looking at
+-- their properties...

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/infostreams_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,22 @@
+#
+derby.infolog.append=true
+#.infolog.streams=debug,someotherstream,assert,error
+#derby.stream.debug.field=java.lang.System.out
+derby.stream.debug.file=derby.log
+derby.stream.debug.doTimestamp=false
+derby.stream.debug.doThreadId=false
+derby.stream.someotherstream.doThreadId=true
+derby.stream.someotherstream.doTimestamp=true
+derby.stream.someotherstream.file=derby.log
+#no per-stream appending (yet)
+#derby.stream.someotherstream.append=true
+derby.stream.someotherstream.extraText=Make the Header LOOOOOOOONG
+#
+derby.stream.assert.file=derby.log
+#derby.stream.assert.append=true
+#
+derby.stream.error.numberOfTargets=2
+derby.stream.error.1.stream=DEFAULT
+derby.stream.error.2.file=derby.ERR
+#derby.stream.error.1.append=true
+#derby.stream.error.2.append=false

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/innerjoin.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/innerjoin.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,131 @@
+-- test inner joins
+-- (NO NATURAL JOIN)
+
+
+autocommit off;
+
+-- create some tables
+
+create table t1(c1 int);
+create table t2(c1 int);
+create table t3(c1 int);
+create table insert_test(c1 int, c2 int, c3 int);
+
+-- populate the tables
+insert into t1 values 1, 2, 3, 4;
+insert into t2 values 1, 3, 5, 6;
+insert into t3 values 2, 3, 5, 7;
+
+-- negative tests
+
+-- no join clause
+select * from t1 join t2;
+select * from t1 inner join t2;
+
+-- empty column list
+select * from t1 join t2 using ();
+
+-- non-boolean join clause
+select * from t1 join t2 on 1;
+
+-- duplicate exposed names, DB2 extension
+-- DB2 UDB: PASS
+-- DB2 CS:  FAIL
+select * from t1 join t1 on 1=1;
+
+-- duplicate exposed names
+select * from t1 join t1 on c1 = 1;
+select * from t1 join t1 on (c1);
+
+-- join clause only allowed to contain column references from tables being
+-- joined. DB2 doesn't allow references to correlated columns
+select * from t1, t2 join t3 on t1.c1 = t2.c1;
+-- should match db2's behavior by raising an error
+select * from t2 b inner join t3 c on a.c1 = b.c1 and b.c1 = c.c1;
+select * from t3 b where exists (select * from t1 a inner join t2 on b.c1 = t2.c1);
+select * from t3 where exists (select * from t1 inner join t2 on t3.c1 = t2.c1);
+
+-- positive tests
+
+select a.c1 from t1 a join t2 b on a.c1 = b.c1;
+select a.x from t1 a (x) join t2 b (x) on a.x = b.x;
+
+-- ANSI "extension" - duplicate exposed names allowed when no column references
+-- this may go away if we can figure out how to detect this error and
+-- get bored enough to prioritize the fix
+get cursor c as 'select 1 from t1 join t1 on 1=1';
+next c;
+close c;
+
+-- parameters and join clause
+prepare asdf as 'select * from t1 join t2 on ?=1 and t1.c1 = t2.c1';
+execute asdf using 'values 1';
+remove asdf;
+
+prepare asdf as 'select * from t1 join t2 on t1.c1 = t2.c1 and t1.c1 = ?';
+execute asdf using 'values 1';
+remove asdf;
+
+-- additional predicates outside of the join clause
+select * from t1 join t2 on t1.c1 = t2.c1 where t1.c1 = 1;
+select * from t1 join t2 on t1.c1 = 1 where t2.c1 = t1.c1;
+
+-- subquery in join clause, not allowed in DB2 compatibility mode
+select * from t1 a join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1);
+select * from t1 a join t2 b 
+on a.c1 = b.c1 and a.c1 in (select c1 from t1 where a.c1 = t1.c1);
+
+-- correlated columns
+select * from t1 a
+where exists (select * from t1 inner join t2 on a.c1 = t2.c1);
+
+-- nested joins
+select * from t1 join t2 on t1.c1 = t2.c1 inner join t3 on t1.c1 = t3.c1;
+
+-- parens
+select * from (t1 join t2 on t1.c1 = t2.c1) inner join t3 on t1.c1 = t3.c1;
+select * from t1 join (t2 inner join t3 on t2.c1 = t3.c1) on t1.c1 = t2.c1;
+
+-- [inner] joins
+select * from t1 a left outer join t2 b on a.c1 = b.c1 inner join t3 c on b.c1 = c.c1;
+select * from (t1 a left outer join t2 b on a.c1 = b.c1) inner join t3 c on b.c1 = c.c1;
+
+select * from t1 a join t2 b on a.c1 = b.c1 inner join t3 c on c.c1 = a.c1 where c.c1 > 2 and a.c1 > 2;
+select * from (t1 a join t2 b on a.c1 = b.c1) inner join t3 c on c.c1 = a.c1 where c.c1 > 2 and a.c1 > 2;
+select * from t1 a join (t2 b inner join t3 c on c.c1 = b.c1) on a.c1 = b.c1 where c.c1 > 2 and b.c1 > 2;
+
+-- test insert/update/delete
+insert into insert_test
+select * from t1 a join t2 b on a.c1 = b.c1 inner join t3 c on a.c1 <> c.c1;
+select * from insert_test;
+
+update insert_test
+set c1 = (select 9 from t1 a join t1 b on a.c1 = b.c1 where a.c1 = 1)
+where c1 = 1;
+select * from insert_test;
+
+delete from insert_test
+where c1 = (select 9 from t1 a join t1 b on a.c1 = b.c1 where a.c1 = 1);
+select * from insert_test;
+
+-- multicolumn join
+select * from insert_test a join insert_test b 
+on a.c1 = b.c1 and a.c2 = b.c2 and a.c3 = b.c3;
+
+-- continue with insert tests
+delete from insert_test;
+
+insert into insert_test
+select * from (select * from t1 a join t2 b on a.c1 = b.c1 inner join t3 c on a.c1 <> c.c1) d (c1, c2, c3);
+select * from insert_test;
+delete from insert_test;
+
+-- reset autocomiit
+autocommit on;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table t3;
+drop table insert_test;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,608 @@
+
+--
+-- this test is for basic insert functionality
+--
+
+-- NOTE: drop, create, select from the same table doesn't work yet either.
+
+-- create the tables
+create table t1 (i int, j int);
+create table t2 (k int, l int);
+
+-- populate t2
+insert into t2 values (1, 2);
+insert into t2 values (3, 4);
+
+-- select * from t2
+insert into t1 select * from t2;
+insert into t1 (i, j) select * from t2;
+insert into t1 (j, i) select * from t2;
+select * from t1;
+
+-- drop and recreate t1
+drop table t1;
+create table t1 (i int, j int);
+
+-- select column list from t2
+insert into t1 select k, l from t2;
+insert into t1 select l, k from t2;
+insert into t1 (i, j) select k, l from t2;
+insert into t1 (j, i) select k, l from t2;
+select * from t1;
+
+-- drop and recreate t1
+drop table t1;
+create table t1 (i int, j int);
+
+-- select constants from t2
+insert into t1 select 5, 6 from t2;
+insert into t1 (i, j) select 5, 6 from t2;
+insert into t1 (j, i) select 6, 5 from t2;
+select * from t1;
+
+-- drop and recreate t1
+drop table t1;
+create table t1 (i int, j int);
+insert into t1 (i) select 666 from t2;
+insert into t1 (j) select 666 from t2;
+select * from t1 where i = 666 or j = 666;
+
+-- drop and recreate t1
+drop table t1;
+create table t1 (i int, j int);
+
+-- Negative test cases - column references in values clause
+insert into t1 values(1, c1);
+insert into t1 values("asdf asdf", 2);
+
+-- Negative test case - syntax error
+insert into t1 values;
+
+-- Too many values in values clause
+insert into t1 values(1,1,1);
+-- insert select with too many result columns in select
+insert into t1 select 1, 2, 3 from t2;
+-- multiple instances of same column in colum list
+insert into t1 (i, i) values(2,2);
+
+-- target column list size != source size
+insert into t1 (i, j) values(1);
+insert into t1 (i) values (1, 2);
+
+-- Negative test cases - column name not specified
+insert into t1 select 666 from t2;
+
+-- target table in source - deferred mode
+insert into t1 values (1,1);
+insert into t1 values (2,2);
+delete from t2;
+insert into t2 select * from t1;
+
+autocommit off;
+
+select * from t1;
+insert into t1 select t1.* from t1, t2;
+select * from t1 order by 1, 2;
+rollback;
+
+insert into t1 (i) select (select i from t1 where i = 1) from t2;
+select * from t1;
+rollback;
+
+insert into t1 (i) select 1 from t2 where 1 = (select i from t1 where i = 1);
+select * from t1;
+rollback;
+
+insert into t1 select * from (select * from t1) a;
+select * from t1;
+rollback;
+
+-- bug 5638
+insert into t1 select * from t2 union select * from t1;
+select * from t1;
+rollback;
+
+-- bug 5638
+insert into t1 select * from t2 union select * from (select * from t1) a;
+select * from t1;
+rollback;
+
+-- single-row deferred insert
+insert into t1 select * from t1 where i = 1;
+select * from t1;
+rollback;
+
+-- zero-row deferred insert - degenerate case
+insert into t1 select * from t1 where i = 17;
+select * from t1;
+rollback;
+
+-- insert-select with ? parameters
+prepare i1 as 'insert into t1 (j, i) select 101,102 from t1 where i = ?';
+execute i1 using 'values (1)';
+select * from t1;
+rollback;
+
+
+autocommit on;
+
+-- test atomicity of multi row inserts
+create table atom_test_target (c1 smallint);
+create table atom_test_source (c1 smallint);
+insert into atom_test_source values 1, 30000,0, 2;
+
+-- overflow
+insert into atom_test_target select c1 + c1 from atom_test_source;
+select * from atom_test_target;
+
+-- divide by 0
+insert into atom_test_target select c1 / c1 from atom_test_source;
+select * from atom_test_target;
+
+-- Derby-34
+create table tchar( i int, c char(1) for bit data default x'02');
+create table tchar1 (i int, c char(5) for bit data default x'2020202020',
+			v varchar(5) for bit data default x'2020',
+			l long varchar for bit data default x'303030');
+
+drop table tchar;
+drop table tchar1;
+
+-- insert various numeric types into other numeric types
+create table i1 (i int, t int, s smallint, l bigint, r real, dp double, dc dec);
+create table i2 (i int, t int, s smallint, l bigint, r real, dp double, dc dec);
+create table tab1 (
+				i integer, 
+				t integer, 
+				s integer, 
+				l bigint,
+				r real, 
+				dp double,
+				dc decimal);
+
+insert into i1 values (1, 2, 3, 4, 5.5, 6.6, 7.7);
+insert into i1 values (null, null, null, null, null, null, null);
+
+insert into tab1 values(1, 
+				cast(2 as int), 
+				cast(3 as smallint), 
+				cast(4 as bigint), 
+				cast(5.5 as real), 
+				cast(6.6 as double), 
+				7.7);
+insert into tab1 values (null, null, null, null, null, null, null);
+
+insert into i2 select i, i, i, i, i, i, i from i1;
+insert into i2 select t, t, t, t, t, t, t from i1;
+insert into i2 select s, s, s, s, s, s, s from i1;
+insert into i2 select l, l, l, l, l, l, l from i1;
+insert into i2 select r, r, r, r, r, r, r from i1;
+insert into i2 select dp, dp, dp, dp, dp, dp, dp from i1;
+insert into i2 select dc, dc, dc, dc, dc, dc, dc from i1;
+select * from i2;
+delete from i2;
+
+insert into i2 select i, t, s, l, r, dp, dc from tab1;
+select * from i2;
+
+-- get the rest
+create table i3 (b char(1) for bit data, 
+			bv varchar(1) for bit data, 
+			lbv long varchar for bit data,
+			c char(10),
+			cv varchar(10),
+			lvc long varchar,
+			dt date,
+			t time,
+			ts timestamp);
+
+create table i4 (b char (1) for bit data, 
+			bv varchar(1) for bit data, 
+			lbv long varchar for bit data,
+			c char(10),
+			cv varchar(10),
+			lvc long varchar,
+			dt date,
+			t time,
+			ts timestamp);
+
+insert into i3 values (X'11', X'22', X'25', '3', '4', '5', '1990-10-10', 
+			'11:11:11', '1990-11-11 11:11:11');
+insert into i3 values (null, null, null, null, null, null, null, null, null);
+
+insert into i4 select * from i3;
+select * from i4;
+delete from i4;
+
+create table tab2 (
+	c char,
+	cv varchar(10),
+	lvc long varchar,
+	dt date,	
+	t time,	
+	ts timestamp);
+
+insert into tab2 values ('3', '4', '5', '1990-10-10', 
+			'11:11:11', '1990-11-11 11:11:11');
+insert into tab2 values (null, null, null, null, null, null);
+insert into i4 (c, cv, lvc, dt, t, ts) select c, cv, lvc, dt, t, ts from tab2;
+select * from i4;
+
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table atom_test_target;
+drop table atom_test_source;
+drop table i1;
+drop table i2;
+drop table i3;
+drop table i4;
+drop table tab1;
+drop table tab2;
+
+-- test bug 4293, extremely huge insert statement, not using FileImport.
+
+create table POLICY_STATEMENTS (c1 int, c2 int, c3 int, c4 long varchar, c5 long varchar, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int);
+
+INSERT INTO POLICY_STATEMENTS VALUES
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 101,1,null,'All information systems within %%short_company_name%% are the property of %%short_company_name%% and will be used in compliance with %%short_company_name%% policy statements.','This is a specific and clear statement about ownership of corporate assets.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets.',null,1,1,null,null,1),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 102,1,null,'Any personal information placed on %%short_company_name%% information system resources becomes the property of %%short_company_name%%.','This is a specific and clear statement about who owns information residing on corporate assets.  Failure to include this statement would lead to confusion over ownership of information residing on corporate assets and would reduce the ability to recover and/or use such information.',null,1,2,null,null,2),
+( 103,1,null,'Any attempt to circumvent %%short_company_name%% security policy statements and procedures (i.e., disconnecting or tunneling a protocol through a firewall) is strictly prohibited.','All security policy statements will be followed, and attempts to circumvent them will not be tolerated.  Failure to include this policy statement may lead users to incorrectly believe that they can circumvent policies.',null,1,3,null,null,3),
+( 104,1,null,'Unauthorized use, destruction, modification, and/or distribution of %%short_company_name%% information or information systems is prohibited.','This defines some of the many restrictions on the use of %%short_company_name%% information systems.  Failure to include this policy statement may lead to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions against users who abuse company assets to the unauthorized use of company resources and eliminate the company''s ability to take disciplinary actions to users who abuse company assets.',null,1,4,null,null,4);
+
+select count(*) from POLICY_STATEMENTS;
+
+drop table POLICY_STATEMENTS;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/insert_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,11 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+---------------------------------------------------------------------------------
+# needed for j9 jvm only...
+substitute=XBCM1: Java linkage error thrown during load of generated class derby.exe.*;XBCM1: Java linkage error thrown during load of generated class derby.exe.xxxhexnumberxxx

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/isolationLevels.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/isolationLevels.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,99 @@
+-- single user test for the various isolation levels
+
+prepare getIsolation as 'values current isolation';
+
+autocommit off;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+-- create a table
+create table t1(c1 int not null constraint asdf primary key);
+commit;
+
+-- insert a row
+insert into t1 values 1;
+-- verify table scan gets row lock at read committed
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- verify matching index scan gets row lock at read committed
+select * from t1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify WITH clause works
+select * from t1 with rr;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify SET ISOLATION commits and changes isolation level
+set isolation RR;
+execute getIsolation;
+
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation reset;
+execute getIsolation;
+-- verify matching index scan gets row lock at read committed
+select * from t1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify SET ISOLATION commits and changes isolation level
+set isolation read committed;
+execute getIsolation;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set current isolation = reset;
+execute getIsolation;
+
+-- verify SET ISOLATION commits and changes isolation level
+set current isolation = RS;
+execute getIsolation;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation to reset;
+execute getIsolation;
+
+-- verify SET ISOLATION commits and changes isolation level
+set isolation = dirty read;
+execute getIsolation;
+-- rollback should find nothing to undo
+rollback;
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- test WITH clause
+set isolation serializable;
+execute getIsolation;
+select * from t1 with cs;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation cursor stability;
+execute getIsolation;
+select * from t1 with RR;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set isolation serializable;
+execute getIsolation;
+select * from t1 with RS;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+set current isolation to read committed;
+execute getIsolation;
+select * from t1 with ur;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- unknown isolation level
+select * from t1 with rw;
+
+-- check the db2 isolation levels can be used as identifiers
+create table db2iso(cs int, rr int, ur int, rs int);
+select cs, rr, ur, rs from db2iso;
+-- cleanup
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,41 @@
+disconnect;
+
+connect 'jdbc:derby:wombat;user=U1' AS C1;
+autocommit off;
+connect 'jdbc:derby:wombat;user=U2' AS C2;
+autocommit off;
+
+set connection C1;
+-- user 1 for bug 1573
+-- a deadlock when reopening a join gets an assertion
+-- violation in close()
+create table outer1(c1 int);
+create index o1_i1 on outer1(c1);
+insert into outer1 (c1) values 1, 2;
+commit;
+
+create table inner1(c1 int, c2 char(254));
+create index i1_i1 on inner1(c1);
+insert into inner1 (c1) values 1, 2;
+commit;
+
+create table inner2(c1 int, c2 char(254));
+create index i2_i1 on inner2(c1);
+insert into inner2 (c1) values 1, 2;
+commit;
+
+-- this user will get lock timeout in subquery on 2nd next
+get cursor c1 as 'select * from outer1 where c1 <= (select count(*) from inner1, inner2 where outer1.c1 = outer1.c1)';
+next c1;
+
+set connection C2;
+update u1.inner1 set c1 = c1 where c1 = 1;
+
+
+set connection C1;
+next c1;
+
+disconnect;
+
+set connection C2;
+disconnect;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql1
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql1	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,14 @@
+-- user 1 for bug 1573
+-- a deadlock when reopening a join gets an assertion
+-- violation in close()
+create table outer1(c1 int);
+create index o1_i1 on outer1(c1);
+insert into outer1 values 1, 2;
+insert into inner1 values 1, 2;
+insert into inner2 values 1, 2;
+autocommit off;
+-- this user will get lock timeout in subquery on 2nd next
+get cursor c1 as 'select * from outer1 where c1 <= (select count(*) from inner1 properties index = i1_i1, inner2 properties index = i2_i1 where outer1.c1 = outer1.c1)';
+next c1;
+next c1;
+values 1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql2
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock.sql2	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+-- user 2 for bug 1573
+-- a deadlock when reopening a join gets an assertion
+-- violation in close()
+create table inner1(c1 int, c2 char(500));
+create index i1_i1 on inner1(c1);
+create table inner2(c1 int, c2 char(500));
+create index i2_i1 on inner2(c1);
+values 1;
+autocommit off;
+values 1;
+update inner1 set c1 = c1 where c1 = 1;
+values 1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joinDeadlock_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.locks.deadlockTimeout=5
+derby.locks.waitTimeout=7

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,186 @@
+--
+-- this test shows the current supported join functionality
+--
+
+-- create some tables
+create table t1 (t1_c1 int, t1_c2 char(10));
+create table t2 (t2_c1 int, t2_c2 char(10));
+create table t3 (t3_c1 int, t3_c2 char(10));
+create table t4 (t4_c1 int, t4_c2 char(10));
+
+-- populate the tables
+insert into t1 values (1, 't1-row1');
+insert into t1 values (2, 't1-row2');
+insert into t2 values (1, 't2-row1');
+insert into t2 values (2, 't2-row2');
+insert into t3 values (1, 't3-row1');
+insert into t3 values (2, 't3-row2');
+insert into t4 values (1, 't4-row1');
+insert into t4 values (2, 't4-row2');
+
+-- negative test, same exposed name
+select * from t1, t1;
+
+-- cartesian products
+-- full projection
+select * from t1, t2;
+select * from t1 a, t2 b, t3 cc, t4 d order by 1,2,3,4,5,6;
+-- reorder columns
+select t2.*, t1.* from t1, t2;
+select t2_c2, t1_c2, t1_c1, t2_c1 from t1, t2;
+
+-- project out columns
+select t2_c2, t1_c1 from t1, t2;
+select a.t1_c1, cc.t1_c1, e.t1_c1, g.t1_c1, i.t1_c1 from t1 a, t1 cc, t1 e, t1 g, t1 i;
+
+-- project/restricts
+select a.t1_c1, b.t1_c1, cc.t1_c1, d.t1_c1, e.t1_c1, f.t1_c1, g.t1_c1, h.t1_c1, i.t1_c1, j.t1_c1
+from t1 a, t1 b, t1 cc, t1 d, t1 e, t1 f, t1 g, t1 h, t1 i, t1 j
+where a.t1_c2 = b.t1_c2 and b.t1_c2 = cc.t1_c2 and cc.t1_c2 = d.t1_c2 and
+      d.t1_c2 = e.t1_c2 and e.t1_c2 = f.t1_c2 and f.t1_c2 = g.t1_c2 and
+      g.t1_c2 = h.t1_c2 and h.t1_c2 = i.t1_c2 and i.t1_c2 = j.t1_c2;
+
+select a.t1_c1, b.t1_c1, cc.t1_c1, d.t1_c1, e.t1_c1, f.t1_c1, g.t1_c1, h.t1_c1, i.t1_c1, j.t1_c1
+from t1 a, t1 b, t1 cc, t1 d, t1 e, t1 f, t1 g, t1 h, t1 i, t1 j
+where a.t1_c1 = 1 and b.t1_c1 = 1 and cc.t1_c1 = 1 and d.t1_c1 = 1 and e.t1_c1 = 1 and
+	  f.t1_c1 = 1 and g.t1_c1 = 1 and h.t1_c1 = 1 and i.t1_c1 = 1 and
+	  a.t1_c2 = b.t1_c2 and b.t1_c2 = cc.t1_c2 and cc.t1_c2 = d.t1_c2 and
+      d.t1_c2 = e.t1_c2 and e.t1_c2 = f.t1_c2 and f.t1_c2 = g.t1_c2 and
+      g.t1_c2 = h.t1_c2 and h.t1_c2 = i.t1_c2 and i.t1_c2 = j.t1_c2;
+
+
+-- project out entire tables
+select 1, 2 from t1, t2;
+select 1, t1.t1_c1 from t1, t2;
+select t2.t2_c2,1 from t1, t2;
+
+-- bug #306
+select c.t1_c1 from (select a.t1_c1 from t1 a, t1 b) c, t1 d where c.t1_c1 = d.t1_c1;
+
+-- create a table for testing inserts
+create table instab (instab_c1 int, instab_c2 char(10), instab_c3 int,
+		     instab_c4 char(10));
+
+-- insert select with joins
+-- cartesian product
+insert into instab select * from t1, t2;
+select * from instab;
+delete from instab;
+
+insert into instab (instab_c1, instab_c2, instab_c3, instab_c4)
+	select * from t1, t2;
+select * from instab;
+delete from instab;
+
+insert into instab (instab_c1, instab_c2, instab_c3, instab_c4)
+	select t2_c1, t2_c2, t1_c1, t1_c2 from t1, t2;
+select * from instab;
+delete from instab;
+
+insert into instab (instab_c3, instab_c1, instab_c2, instab_c4)
+	select t2_c1, t1_c1, t1_c2, t2_c2 from t1, t2;
+select * from instab;
+delete from instab;
+
+-- projection
+insert into instab (instab_c1, instab_c3)
+	select t1_c1, t2_c1 from t1, t2;
+select * from instab;
+delete from instab;
+
+-- project out 1 or more tables from join
+insert into instab select 1, '2', 3, '4' from t1, t2;
+select * from instab;
+delete from instab;
+
+insert into instab select 1, t1.t1_c2, 3, t1.t1_c2 from t1, t2;
+select * from instab;
+delete from instab;
+
+insert into instab select t2.t2_c1, '2', t2.t2_c1, '4' from t1, t2;
+select * from instab;
+delete from instab;
+
+------------------------------------------
+-- test optimizations where we push around
+-- predicates (remapColumnReferences)
+------------------------------------------
+-- case
+select t1_c1 from t1, t2 where (case when t1_c1 = 1 then t2_c2 end) = t2_c2;
+
+-- CHAR built-in function
+select t1_c1 from t1, t2 where CHAR(t1_c1) = t2_c2;
+
+-- logical operator OR
+select t1_c1 from t1, t2 where t1_c1 = 1 or t2_c1 = 2;
+
+-- logical operator AND
+select t1_c1 from t1, t2 where t1_c1 = 2147483647 and 2147483647 = t2_c1;
+
+-- beetle 5421
+-- INT built-in function
+select t1_c1 from t1, t2 where INT(t1_c1) = t2_c1;
+select t1_c1 from t1, t2 where t1_c1 = INT(2147483647) and INT(2147483647) = t2_c1;
+
+-- transitive closure - verify join condition doesn't get dropped
+create table x(c1 int);
+create table y(c1 int);
+insert into x values 1, 2, null;
+insert into y values 1, 2, null;
+
+select * from x,y where x.c1 = y.c1 and x.c1 = 1 and y.c1 = 2;
+select * from x,y where x.c1 = y.c1 and x.c1 is null;
+select * from x,y where x.c1 = y.c1 and x.c1 is null and y.c1 = 2;
+select * from x,y where x.c1 = y.c1 and x.c1 is null and y.c1 is null;
+
+-- Beetle task 5000. Bug found by Websphere. Should not return any rows.
+select t1_c1, t1_c2, t2_c1, t2_c2
+  from t1, t2
+  where t1_c1 = t2_c1
+    and t1_c1 = 1
+    and t2_c1 <> 1;
+
+-- Beetle task 4736
+create table a (a1 int not null primary key, a2 int, a3 int, a4 int, a5 int, a6 int);
+create table b (b1 int not null primary key, b2 int, b3 int, b4 int, b5 int, b6 int);
+create table c (c1 int not null, c2 int, c3 int not null, c4 int, c5 int, c6 int);
+create table d (d1 int not null, d2 int, d3 int not null, d4 int, d5 int, d6 int);
+
+alter table c add primary key (c1,c3);
+alter table d add primary key (d1,d3);
+
+insert into a values (1,1,3,6,NULL,2),(2,3,2,4,2,2),(3,4,2,NULL,NULL,NULL),
+                     (4,NULL,4,2,5,2),(5,2,3,5,7,4),(7,1,4,2,3,4),
+                     (8,8,8,8,8,8),(6,7,3,2,3,4);
+
+insert into b values (6,7,2,3,NULL,1),(4,5,9,6,3,2),(1,4,2,NULL,NULL,NULL),
+                     (5,NULL,2,2,5,2),(3,2,3,3,1,4),(7,3,3,3,3,3),(9,3,3,3,3,3);
+
+insert into c values (3,7,7,3,NULL,1),(8,3,9,1,3,2),(1,4,1,NULL,NULL,NULL),
+                     (3,NULL,1,2,4,2),(2,2,5,3,2,4),(1,7,2,3,1,1),(3,8,4,2,4,6);
+
+insert into d values (1,7,2,3,NULL,3),(2,3,9,1,1,2),(2,2,2,NULL,3,2),
+                     (1,NULL,3,2,2,1),(2,2,5,3,2,3),(2,5,6,3,7,2);
+
+select a1,b1,c1,c3,d1,d3 
+  from D join (A left outer join (B join C on b2=c2) on a1=b1) 
+    on d3=b3 and d1=a2;
+
+select a1,b1,c1,c3,d1,d3 
+  from D join ((B join C on b2=c2) right outer join A on a1=b1) 
+    on d3=b3 and d1=a2;
+
+-----------------------------------
+-- clean up
+----------------------------------
+drop table a;
+drop table b;
+drop table c;
+drop table d;
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+drop table instab;
+drop table x;
+drop table y;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/joins_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,15 @@
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  THEY BELONG
+# *** IN the _derby.properties file.
+#
+# It will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij (or the GUI on ij) to load the driver and make an
+# initial connection to the database.
+#
+#
+database=jdbc:derby:wombat;create=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,97 @@
+-- multiuser lock table tests
+disconnect;
+
+connect 'jdbc:derby:wombat;user=U1' AS C1;
+autocommit off;
+connect 'jdbc:derby:wombat;user=U2' AS C2;
+autocommit off;
+
+set connection C1;
+
+-- create a table and populate it
+create table t1 (c1 int);
+insert into t1 values 1;
+commit;
+
+-- test TX vs TX locks
+lock table u1.t1 in exclusive mode;
+
+set connection C2;
+lock table u1.t1 in exclusive mode;
+
+set connection C1;
+-- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+
+-- verify that we can insert into the table
+insert into t1 values 2;
+select * from t1;
+commit;
+
+-- test TX vs TS locks
+lock table t1 in exclusive mode;
+
+set connection C2;
+lock table u1.t1 in share mode;
+
+set connection C1;
+-- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+
+-- verify that we can insert into the table
+insert into t1 values 3;
+select * from t1;
+commit;
+
+-- test TS vs TX locks
+lock table t1 in share mode;
+
+set connection C2;
+lock table u1.t1 in exclusive mode;
+
+set connection C1;
+-- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+
+-- verify that we can insert into the table
+insert into t1 values 4;
+select * from t1;
+commit;
+
+-- test TS vs TS locks
+lock table t1 in share mode;
+
+set connection C2;
+lock table u1.t1 in share mode;
+
+set connection C1;
+-- verify that we still have the lock
+run resource 'LockTableQuery.subsql';
+
+-- verify that we cannot insert into the table
+insert into t1 values 5;
+select * from t1;
+commit;
+
+set connection C2;
+commit;
+
+set connection C1;
+-- create another table
+create table t2(c1 int);
+commit;
+-- verify that user getting error on lock table doesn't get rolled back
+lock table t1 in share mode;
+
+set connection C2;
+lock table u1.t2 in share mode;
+lock table u1.t1 in exclusive mode;
+
+set connection C1;
+-- verify that other user still has the lock
+run resource 'LockTableQuery.subsql';
+commit;
+disconnect;
+
+set connection C2;
+disconnect;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lockTable_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.storage.rowLocking=false
+derby.locks.deadlockTimeout=5
+derby.locks.waitTimeout=7

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logStream.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logStream.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,72 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.*;
+import java.io.*;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Demonstrate subselect behavior with prepared statement. 
+ */
+public class logStream {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+  public static void main (String args[]) 
+  { 
+    try {
+		System.out.println("Start logStream");
+		/* Load the JDBC Driver class */
+		// use the ij utility to read the property file and
+		// make the initial connection.
+		ij.getPropertyArg(args);
+		Connection conn = ij.startJBMS();
+
+		conn.close();
+
+		String systemHome = System.getProperty("derby.system.home");
+
+		File derbyLog = new File(systemHome, "derby.log");
+
+		System.out.println("derby.log exists ?       " + derbyLog.exists());
+		System.out.println("derby.log is directory ? " + derbyLog.isDirectory());
+		System.out.println("derby.log has content ?  " + (derbyLog.length() > 0));
+
+		System.out.println("SHUTDOWN Cloudscape");
+		try {
+			DriverManager.getConnection("jdbc:derby:;shutdown=true");
+			System.out.println("FAIL - shutdown returned connection");
+		} catch (SQLException sqle) {
+			System.out.println("SHUTDOWN :" + sqle.getMessage());
+		}
+
+
+		System.out.println("derby.log exists ?       " + derbyLog.exists());
+		System.out.println("derby.log is directory ? " + derbyLog.isDirectory());
+		System.out.println("derby.log has content ?  " + (derbyLog.length() > 0));
+
+		boolean deleted = derbyLog.delete();
+		System.out.println("deleted derby.log ?     " + deleted);
+
+		System.out.println("End logStream");
+    } catch (Exception e) {
+		System.out.println("FAIL -- unexpected exception "+e);
+		JDBCDisplayUtil.ShowException(System.out, e);
+      	e.printStackTrace();
+    }
+  } 
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logop.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logop.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,257 @@
+--
+-- this test is for logical operators (AND, OR, etc.)
+--
+
+-- create a table. Logical operators work on the results of comparisons,
+-- which are tested in a separate test, so the types of the columns being
+-- compared are irrelevant here.
+
+create table t (x int, y int);
+
+-- insert some values, including nulls
+insert into t values (1, 1);
+insert into t values (1, 2);
+insert into t values (2, 1);
+insert into t values (2, 2);
+insert into t values (null, 2);
+insert into t values (1, null);
+insert into t values (null, null);
+
+-- basic AND test
+select x, y from t where x = 1 and y = 2;
+select x, y from t where y = 2 and x = 1;
+
+select x, y from t where x = 1 and y = 3;
+select x, y from t where y = 3 and x = 1;
+
+create table s (x int);
+
+insert into s values (1);
+
+-- there is no short-circuiting with AND: ie when the first operand is FALSE,
+-- the second operant still got evaluated for AND. Same behavior in DB2 as well.
+select x from s where x = 5 and 2147483647 + 10 = 2;
+
+-- Does not matter it in what order the 2 operands are. Both of them always gets evaluated.
+select x from s where 2147483647 + 10 = 2 and x = 5;
+
+-- Now try a chain of ANDs
+select x, y from t where x = 1 and x + 0 = 1 and y = 2 and y + 0 = 2;
+
+-- basic OR test
+select x, y from t where x = 1 or y = 2;
+select x, y from t where y = 2 or x = 1;
+
+select x, y from t where x = 4 or y = 5;
+select x, y from t where y = 5 or x = 4;
+
+-- test short-circuiting: for OR, when the first operand is TRUE, the second
+-- operand should not be evaluated.  We test this by deliberately causing an
+-- error in one of the operands.
+select x from s where x = 1 or 2147483647 + 10 = 2;
+
+-- Now try it with the error on the left, just to be sure the error really
+-- happens.
+select x from s where 2147483647 + 10 = 2 or x = 1;
+
+-- Now try a chain of ORs
+select x, y from t where x = 1 or x + 0 = 1 or y = 2 or y + 0 = 2;
+-- Test the precedence of AND versus OR.  AND is supposed to have a higher
+-- precedence that OR, i.e. "a OR b AND c" is equivalent to "a OR (b AND c)"
+
+-- First test TRUE OR TRUE AND FALSE.  This should evaluate to TRUE.  If
+-- the precedence is wrong, it will evaluate to FALSE.
+select x from s where (1 = 1) or (2 = 2) and (3 = 4);
+
+-- Now test FALSE AND TRUE OR TRUE.  This should evaluate to to TRUE.  If
+-- the precedence is wrong, it will evaluate to FALSE.
+select x from s where (1 = 2) and (3 = 3) or (4 = 4);
+
+-- Now test whether parenthesized expressions work.  Use the parentheses to
+-- force the OR to be evaluated before the AND.
+
+select x from s where ( (1 = 1) or (2 = 2) ) and (3 = 4);
+
+select x from s where (1 = 2) and ( (3 = 3) or (4 = 4) );
+
+-- More involved testing of expression normalization
+-- Ands under ands under ands ...
+select * from s where (	( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						  ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) and
+						( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						  ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) );
+
+-- Ors under ors under ors ...
+select * from s where (	( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						  ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) or
+						( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						  ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) );
+
+-- Ands under ors under ors ...
+select * from s where (	( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						  ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) or
+						( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						  ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) );
+
+-- Ors under ands under ands
+select * from s where ( ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						  ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) and
+						( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						  ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) );
+
+-- left deep with ands
+select * from s where ( ( ( ( ( ((1=1) and (1=1)) and (1=1)) and (1=1)) and (1=1))
+						and (1=1)) and (1=1));
+
+-- left deep with ors
+select * from s where ( ( ( ( ( ((1=1) or (1=1)) or (1=1)) or (1=1)) or (1=1))
+						or (1=1)) or (1=1));
+
+select * from s where ( ( ( ( ( ((1=1) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=1)) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=1)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=1))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						or (1=1)) or (1=2));
+
+select * from s where ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						or (1=2)) or (1=1));
+
+-- right deep with ors
+select * from s where ( ( ( ( ( (1=1) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( (1=2) or ((1=1) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=1)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=1)) or (1=2))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=1))
+						or (1=2)) or (1=2));
+
+select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=1)) or (1=2));
+
+select * from s where ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						or (1=2)) or (1=1));
+
+-- ... and false and ... should get resolved to false
+select x from s where 2147483647 + 10 = 2 and (1=2);
+select x from s where (1=2) and 2147483647 + 10 = 2;
+
+-- nots
+select x from s where not ( (1 = 1) or (2 = 2) ) and (3 = 4);
+select x from s where not ( ( (1 = 1) or (2 = 2) ) and (3 = 4) );
+select x from s where (1 = 2) and not ( (3 = 3) or (4 = 4) );
+select x from s where not ( (1 = 2) and ( (3 = 3) or (4 = 4) ) );
+-- following NOTs in select clause won't work because it results in a transient boolean datatype
+select not ( (1 = 1) or (2 = 2) ) and (3 = 4) from s;
+--
+select not ( ( (1 = 1) or (2 = 2) ) and (3 = 4) ) from s;
+--
+select (1 = 2) and not ( (3 = 3) or (4 = 4) ) from s;
+--
+select not ( (1 = 2) and ( (3 = 3) or (4 = 4) ) ) from s;
+
+-- Ands under ands under ands ...
+select * from s where not (	( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						      ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) ) and
+						    ( ( ((1=1) and (1=1)) and ((1=1) and (1=1)) ) and
+						      ( ((1=1) and (1=1)) and ((1=1) and (1=2)) ) ) );
+
+-- Ors under ors under ors ...
+select * from s where not (	( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						      ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) ) or
+						    ( ( ((1=1) or (1=1)) or ((1=1) or (1=1)) ) or
+						      ( ((1=1) or (1=1)) or ((1=1) or (1=2)) ) ) );
+
+-- Ands under ors under ors ...
+select * from s where not (	( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						      ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) ) or
+						    ( ( ((1=1) and (1=1)) or ((1=1) and (1=1)) ) or
+						      ( ((1=1) and (1=1)) or ((1=1) and (1=2)) ) ) );
+
+-- Ors under ands under ands
+select * from s where not ( ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						      ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) ) and
+						    ( ( ((1=1) or (1=1)) and ((1=1) or (1=1)) ) and
+						      ( ((1=1) or (1=1)) and ((1=1) or (1=2)) ) ) );
+
+-- left deep with ands
+select * from s where not ( ( ( ( ( ((1=1) and (1=2)) and (1=1)) and (1=1)) and (1=1))
+						    and (1=1)) and (1=1));
+
+-- left deep with ors
+select * from s where not ( ( ( ( ( ((1=2) or (1=1)) or (1=1)) or (1=1)) or (1=1))
+						    or (1=1)) or (1=1));
+
+select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=1)) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=1)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=1))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						    or (1=1)) or (1=2));
+
+select * from s where not ( ( ( ( ( ((1=2) or (1=2)) or (1=2)) or (1=2)) or (1=2))
+						    or (1=2)) or (1=1));
+
+-- right deep with ors
+select * from s where not ( ( ( ( ( (1=1) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=1)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=1)) or (1=2))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=1))
+						    or (1=2)) or (1=2));
+
+select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=1)) or (1=2));
+
+select * from s where not ( ( ( ( ( (1=2) or ((1=2) or (1=2)) ) or (1=2)) or (1=2))
+						    or (1=2)) or (1=1));
+
+-- nots on nots
+select * from s where not ( not ( not ((1=2) or (1=1))) or (not ((1=2) or (1=2)) ) );
+-- following nots on nots won't work because they result in transient boolean datatype in the select clause
+select not ( not ( not ((1=2) or (1=1))) or (not ((1=2) or (1=2)) ) ) from s;
+
+-- negative testing
+-- non boolean where clauses
+select * from s where 1;
+select * from s where 1 and (1=1);
+select * from s where (1=1) and 1;
+select * from s where 1 or (1=1);
+select * from s where (1=1) or 1;
+select * from s where not 1;
+
+-- Clean up
+drop table t;
+drop table s;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lojreorder.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/lojreorder.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,7612 @@
+-- This test LOJ reordering.
+-- Many testcases are derived from DB2 UDB FVT testcases.
+-- Cliff Leung. 10/2002
+
+CREATE TABLE T (A INT NOT NULL, B DECIMAL(10,3) NOT NULL, C VARCHAR(5) NOT NULL);
+INSERT INTO T VALUES (1, 1.0, '1'), (2, 2.0, '2'), (3, 3.0, '3');
+
+CREATE TABLE S (D INT NOT NULL, E DECIMAL(10,3) NOT NULL, F VARCHAR(5) NOT NULL);
+INSERT INTO S VALUES (2, 2.0, '2'), (3, 3.0, '3'), (4, 4.0, '4');
+
+CREATE TABLE R (G INT NOT NULL, H DECIMAL(10,3) NOT NULL, I VARCHAR(5) NOT NULL);
+INSERT INTO R VALUES (3, 3.0, '3'), (4, 4.0, '4'), (5, 5.0, '5');
+
+CREATE TABLE TT (J INT NOT NULL, K DECIMAL(10,3) NOT NULL, L VARCHAR(5) NOT NULL);
+INSERT INTO TT VALUES (2, 2.0, '2'), (3, 3.0, '3'), (4, 4.0, '4');
+
+select * from t left outer join s on (b = e);
+
+select a, e, f, a+e as "A+E" from t left outer join s on (b = e);
+
+select * from t right outer join s on (b = e);
+
+select a, e, f, a+e as "A+E" from t right outer join s on (b = e);
+
+select a, e, f, a+e as "A+E" from t left outer join s on (b = e) where d > 0;
+
+select a, e, f, a+e as "A+E" from t right outer join s on (b = e) where d > 0;
+
+-- LOJ and LOJ
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i);
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where a>1;
+select a, d, e, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where d>1;
+select a, d, e, a+e as "A+E", g from (t left outer join s on (b = e)) left outer join r on (f = i) where h>1;
+
+-- LOJ and ROJ
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i);
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where a>1;
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where d>1;
+select a, e, f, a+e as "A+E", g from (t left outer join s on (b = e)) right outer join r on (f = i) where h>1;
+
+-- ROJ and ROJ
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i);
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where a>1;
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where d>1;
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) right outer join r on (f = i) where h>1;
+
+-- ROJ and LOJ
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i);
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where a>1;
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where d>1;
+select a, e, f, a+e as "A+E", g from (t right outer join s on (b = e)) left outer join r on (f = i) where h>1;
+
+-- NO LOJ reordering
+select * from (t left outer join s on (b = e)) left outer join r on (f = i) where a > 0;
+select * from (t left outer join s on (b = e)) inner join r on (f = i);
+select * from (t left outer join s on (b = e)) inner join r on (f = i) where a > 0;
+select * from (t inner join s on (b = e)) inner join r on (f = i) where a > 0;
+select * from (t inner join s on (b = e)) left outer join r on (f = i) where a > 0;
+select * from t, s left outer join r on (d = g) where a = e;
+select * from t left outer join s on (b = e), r where a = g;
+
+-- bug 5658
+-- In DB2 UDB, any column referenced in an expression of the 
+-- join-condition must be a column of one of the operand tables of 
+-- the associated join (in the scope of the same joined-table clause).
+-- this query should fail
+select t1.*, s2.* from t t1 left outer join s on (b = e), t t2 left outer join s s2 on (b = e);
+
+-- a view of a regular join
+create view jv (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t, s where b = e);
+select * from jv left outer join r on (fv = i);
+select * from r left outer join jv on (fv = i);
+
+-- a view of LOJ
+create view lojv (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t left outer join s on b = e);
+select * from r left outer join lojv on (fv = i);
+select * from r right outer join lojv on (fv = i);
+
+-- a view on top of a LOJ view
+create view vv as (select * from lojv);
+select * from r left outer join vv on (fv = i);
+select * from r right outer join vv on (fv = i);
+
+-- check for ON predicate for LOJ reordering: no reordering
+select * from t left outer join (s left outer join r on (f = i)) on (b = e and a > b);
+select * from t left outer join (s left outer join r on (f = i)) on (b = e and a = b);
+select * from t left outer join (s left outer join r on (f = i)) on (b = e and 1 = 1);
+select * from t left outer join (s left outer join r on (f = i)) on (b > e);
+select * from t left outer join (s left outer join r on (f = i)) on (a = a);
+select * from t left outer join (s left outer join r on (f = i)) on (a = 1);
+select * from t left outer join (s left outer join r on (f = i)) on (1 = 1);
+
+-- check for ON predicate for LOJ reordering: reordering is done
+select * from t left outer join (s left outer join r on (f = i)) on (a = d and b = e and c = f);
+select * from t left outer join (s left outer join r on (f = i)) on ((a = d and b = e) and c = f);
+select * from t left outer join (s left outer join r on (f = i)) on (a = d and (b = e and c = f));
+select * from t left outer join (s left outer join r on (f = i)) on (not(a <> d or b <> e or c <> f));
+
+-- check for LOJ reorder with subquery
+select * from t left outer join (s left outer join r on (f = i)) on (a = d) where a in (select j from tt);
+
+-- LOJ involving the same table
+select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.a)) on (t1.a=t2.a);
+select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.a)) on (t1.b=t2.b);
+select * from t t1 left outer join (t t2 left outer join t t3 on (t2.a=t3.b)) on (t1.a=t2.b);
+
+-- comparing columns of different types.
+select t.a, s.d, r.g from t left outer join (s left outer join r on (e=g)) on (b=d);
+select r.g from t left outer join (s left outer join r on (e=g)) on (b=d);
+
+-- these seem to work
+select * from t left outer join (s left outer join r on (e=g)) on (b=d);
+select t.a from t left outer join (s left outer join r on (e=g)) on (b=d);
+select s.f, s.e, s.d, t.c, t.b, t.a from t left outer join (s left outer join r on (e=g)) on (b=d);
+
+-- need to test more on changes deep inside...
+create view loj (a, b, c, d, e, f, g, h, i, ae) as (select a, b, c, d, e, f, g, h, i, a+e as "A+E" from t left outer join (s left outer join r on (f = i)) on (b = e)); 
+
+select * from loj;
+
+select * from t left outer join loj on (t.a=loj.a);
+
+select * from t left outer join loj on (t.a=loj.d);
+
+
+select * from t right outer join loj on (t.a=loj.a);
+select * from t inner join loj on (t.a=loj.a);
+
+-- 4 level deep
+-- b=e will be pushed first, one level down
+-- j=a will then be pushed next, 2 levels down (after b=e pushed)
+select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a);
+
+select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a) where j>0;
+select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=a) where j>0;
+
+select * from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=d);
+
+-- TT LOJ (T LOJ (S LOJ R))) becomes TT LOJ ((T LOJ S) LOJ R)
+select 1 from tt left outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=r.g);
+select 1 from tt right outer join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=g);
+
+-- okay
+select 1 from tt, (t left outer join (s left outer join r on (f = i)) on (b = e)) where (j=g);
+select 1 from tt right outer join (t left outer join (s inner join r on (f = i)) on (b = e)) on (j=g);
+select 1 from tt inner join (t left outer join (s left outer join r on (f = i)) on (b = e)) on (j=g);
+
+-- LOJ w/ left-deep LOJ: LOJ will be pushed twice
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where j > 0; 
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where b > 0; 
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where e > 0; 
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a) where g > 0; 
+
+select j+1, k+2, L||'s', a+10, b+10, C||'t', d+20, e+20, f||'u', g+30, h+30, i||'v' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+
+select j, j+1, k, k+2, L, L||'s' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+select a, a+10, b, b+10, C, C||'t' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+select d, d+20, e, e+20, f, f||'u' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+select g, g+30, h, h+30, i, i||'v' from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=a);
+
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d);
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where j > 0;
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where b > 0;
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where e > 0;
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=d) where g > 0;
+
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g);
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where j > 0;
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where b > 0;
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where e > 0;
+select * from tt left outer join (t left outer join s on (b=e) left outer join r on (f = i)) on (j=g) where g > 0;
+
+
+--
+-- Create views of union, regular joins, subquery, group by, having clause,
+-- and use the view in the LOJ operands and yet the LOJ reordering is applicable.
+-- We need to test the join condition: LHS=RHS.
+
+create view v1 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t left outer join s on b = e);
+create view v2 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t inner join s on b = e);
+create view v3 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t right join s on b = e);
+create view v4 (fv, ev, dv, cv, bv, av) as (select f, e, d, c, b, a from t, s where b = e);
+create view v5 (cv, bv, cnt) as (select c, b, count(*) from t group by c, b);
+create view v6 (cv, bv, cnt) as (select c, b, count(*) from t group by c, b having b > 0);
+create view v7 (cv, bv, av) as (select c, b, a from t where b in (select e from s));
+create view v8 (cv, bv, av) as (select c, b, a from t union select f, e, d from s);
+
+-- All these test cases need table references to determine if the join condition is proper for LOJ
+-- reordering: LHS = RHS
+select * from v1 left outer join (s left outer join r on (f = i)) on (d=v1.av);
+select * from v2 left outer join (s left outer join r on (f = i)) on (d=v2.av);
+select * from v3 left outer join (s left outer join r on (f = i)) on (d=v3.av);
+select * from v4 left outer join (s left outer join r on (f = i)) on (d=v4.av);
+select * from v5 left outer join (s left outer join r on (f = i)) on (e=v5.bv);
+select * from v6 left outer join (s left outer join r on (f = i)) on (e=v6.bv);
+
+select * from v7 left outer join (s left outer join r on (f = i)) on (e=v7.bv);
+select * from v8 left outer join (s left outer join r on (f = i)) on (e=v8.bv);
+
+select * from t left outer join (s left outer join v1 on (f = cv)) on (d=a);
+select * from t left outer join (s left outer join v8 on (f = cv)) on (d=a);
+
+select * from t left outer join (v1 left outer join s on (f = cv)) on (av=a);
+select * from t left outer join (v8 left outer join s on (f = cv)) on (av=a);
+
+-- No LOJ reordering due to join conditions
+select * from v1 left outer join (s left outer join r on (f = i)) on (g=v1.av);
+select * from v2 left outer join (s left outer join r on (f = i)) on (g=v2.av);
+
+select * from t left outer join (s left outer join v1 on (f = cv)) on (av=a);
+select * from t left outer join (s left outer join v8 on (f = cv)) on (av=a);
+
+select * from t left outer join (v1 left outer join s on (f = cv)) on (d=a);
+select * from t left outer join (v8 left outer join s on (f = cv)) on (d=a);
+
+-- values clause
+-- select * from table (values (1, 2, 3)) as q(a, b, c);
+
+drop view v1;
+drop view v2;
+drop view v3;
+drop view v4;
+drop view v5;
+drop view v6;
+drop view v7;
+drop view v8;
+drop view loj;
+drop view vv;
+drop view lojv;
+drop view jv;
+
+DROP TABLE T;
+DROP TABLE S;
+DROP TABLE R;
+DROP TABLE TT;
+
+
+-- from the customer
+
+CREATE TABLE TNL1 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5));
+insert into TNL1 values (1, 'abc', 1.1);
+insert into TNL1 values (2, 'bcd', 2.2);
+insert into TNL1 values (3, 'cde', 3.3);
+insert into TNL1 values (4, 'ABC', 1.1);
+insert into TNL1 values (5, 'BCD', 2.2);
+insert into TNL1 values (6, 'CDE', 3.3);
+
+CREATE TABLE TNL1_1 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5), ID2 INTEGER);
+CREATE INDEX I_TNL11 ON TNL1_1 (ID2 ASC);
+insert into TNL1_1 values (3, 'cde', 3.3, 30);
+insert into TNL1_1 values (4, 'xyz', 4.4, 40);
+insert into TNL1_1 values (5, 'lmn', 5.5, 50);
+insert into TNL1_1 values (6, 'CDE', 3.3, 30);
+insert into TNL1_1 values (7, 'XYZ', 4.4, 40);
+insert into TNL1_1 values (8, 'LMN', 5.5, 50);
+
+CREATE TABLE TNL1_1_1 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5));
+insert into TNL1_1_1 values (2, 'bcd', 2.2);
+insert into TNL1_1_1 values (3, 'cde', 3.3);
+insert into TNL1_1_1 values (4, 'xyz', 4.4);
+insert into TNL1_1_1 values (5, 'BCD', 2.2);
+insert into TNL1_1_1 values (6, 'CDE', 3.3);
+insert into TNL1_1_1 values (7, 'XYZ', 4.4);
+
+CREATE TABLE TNL1_2 (ID INTEGER NOT NULL UNIQUE, col_char CHAR(20), col_decimal DECIMAL(12,5));
+insert into TNL1_2 values (4, 'xyz', 4.4);
+insert into TNL1_2 values (5, 'lmn', 5.5);
+insert into TNL1_2 values (6, 'stu', 6.6);
+insert into TNL1_2 values (7, 'XYZ', 4.4);
+insert into TNL1_2 values (8, 'LMN', 5.5);
+insert into TNL1_2 values (9, 'STU', 6.6);
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 8000;
+
+SELECT * FROM TNL1 A LEFT OUTER JOIN TNL1_1 B ON A.ID = B.ID LEFT OUTER JOIN  TNL1_1_1 C ON B.ID2=C.ID LEFT OUTER JOIN TNL1_2 D ON A.ID=D.ID ORDER BY 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+SELECT * FROM TNL1 A LEFT OUTER JOIN (TNL1_1 B LEFT OUTER JOIN TNL1_1_1 C ON B.ID2=C.ID) ON A.ID=B.ID LEFT OUTER JOIN TNL1_2 D ON A.ID=D.ID ORDER BY 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(0);
+
+DROP TABLE TNL1;
+DROP TABLE TNL1_1;
+DROP TABLE TNL1_1_1;
+DROP TABLE TNL1_2;
+
+---
+-- outerjn.db
+
+
+CREATE SCHEMA K55ADMIN;
+
+CREATE TABLE K55ADMIN.PARTS
+      (PART     CHAR(10),
+       NUM    SMALLINT,
+       SUPPLIER CHAR(20));
+CREATE TABLE K55ADMIN.PARTS_T
+      (PART     CHAR(10),
+       NUM1    SMALLINT,
+       NUM2    SMALLINT,
+       SUPPLIER CHAR(20));
+CREATE TABLE K55ADMIN.PARTS_NOTNULL
+      (PART     CHAR(10)  NOT NULL,
+       NUM    SMALLINT  NOT NULL,
+       SUPPLIER CHAR(20)  NOT NULL);
+CREATE TABLE K55ADMIN.PARTS_ALLNULL
+      (PART     CHAR(10),
+       NUM    SMALLINT,
+       SUPPLIER CHAR(20));
+CREATE TABLE K55ADMIN.PARTS_EMPTY
+      (PART     CHAR(10),
+       NUM    SMALLINT,
+       SUPPLIER CHAR(20));
+CREATE TABLE K55ADMIN.PARTS_EMPTY_NN
+      (PART     CHAR(10)  NOT NULL,
+       NUM    SMALLINT  NOT NULL,
+       SUPPLIER CHAR(20)  NOT NULL);
+CREATE TABLE K55ADMIN.PRODUCTS
+      (NUM    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+CREATE TABLE K55ADMIN.PRODUCTS_T
+      (NUM1    SMALLINT,
+       NUM2    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+CREATE TABLE K55ADMIN.PRODUCTS_NOTNULL
+      (NUM    SMALLINT     NOT NULL,
+       PRODUCT  CHAR(15)     NOT NULL,
+       PRICE    DECIMAL(7,2) NOT NULL);
+CREATE TABLE K55ADMIN.PRODUCTS_ALLNULL
+      (NUM    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+CREATE TABLE K55ADMIN.PRODUCTS_EMPTY
+      (NUM    SMALLINT,
+       PRODUCT  CHAR(15),
+       PRICE    DECIMAL(7,2));
+CREATE TABLE K55ADMIN.PRODUCTS_EMPTY_NN
+      (NUM    SMALLINT     NOT NULL,
+       PRODUCT  CHAR(15)     NOT NULL,
+       PRICE    DECIMAL(7,2) NOT NULL);
+CREATE TABLE K55ADMIN.S90
+      (DEPT     CHAR(3)      NOT NULL,
+       SALES    SMALLINT);
+CREATE TABLE K55ADMIN.S91
+      (DEPT     CHAR(3),
+       SALES    SMALLINT);
+CREATE TABLE K55ADMIN.S92
+      (DEPT     CHAR(3)      NOT NULL,
+       SALES    SMALLINT);
+CREATE TABLE K55ADMIN.EMPLOYEES
+      (EMP_ID        CHAR(6)     NOT NULL,
+       EMP_NAME      VARCHAR(25),
+       SALARY        INTEGER,
+       COMM          SMALLINT);
+
+CREATE UNIQUE INDEX K55ADMIN.EMPLOYIX
+  ON K55ADMIN.EMPLOYEES(EMP_ID);
+CREATE TABLE K55ADMIN.OLD_OFFICES
+      (OLD_OFFICE    CHAR(4)     NOT NULL,
+       EMP_ID        CHAR(6));
+CREATE UNIQUE INDEX k55ADMIN.OLD_OFFIX
+  ON K55ADMIN.OLD_OFFICES(OLD_OFFICE);
+CREATE TABLE K55ADMIN.NEW_OFFICES
+      (NEW_OFFICE    CHAR(4)     NOT NULL,
+       EMP_ID        CHAR(6));
+CREATE UNIQUE INDEX k55ADMIN.NEW_OFFIX
+  ON K55ADMIN.NEW_OFFICES(NEW_OFFICE);
+--************************************************************************
+--*   This last group is for general usage throughout the tests          *
+--************************************************************************
+CREATE TABLE K55ADMIN.MANYTYPES
+      (INTCOL        INTEGER,
+       SMINTCOL      SMALLINT,
+       DEC62COL      DECIMAL(6,2),
+       DEC72COL      DECIMAL(7,2),
+       FLOATCOL      FLOAT,
+       CHARCOL       CHAR(10),
+       LCHARCOL      CHAR(250),
+       VCHARCOL      VARCHAR(100));
+CREATE TABLE K55ADMIN.MANYTYPES_NOTNULL
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL);
+--* CREATE TABLE K55ADMIN.MANYTYPES_CTRL LIKE MANYTYPES_NOTNULL;
+CREATE TABLE K55ADMIN.MANYTYPES_CTRL
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL);
+--************************************************************************
+--* Populate the tables created above                                    *
+--************************************************************************
+INSERT INTO K55ADMIN.PARTS VALUES ('Wire',     10,'ACWF');
+INSERT INTO K55ADMIN.PARTS VALUES ('Oil',     160,'Western-Chem');
+INSERT INTO K55ADMIN.PARTS VALUES ('Magnets',  10,'Bateman');
+INSERT INTO K55ADMIN.PARTS VALUES ('Plastic',  30,'Plastik-Corp');
+INSERT INTO K55ADMIN.PARTS VALUES ('Blades',  205,'Ace-Steel');
+INSERT INTO K55ADMIN.PARTS VALUES ('Paper',    20,'Ace-Steel');
+INSERT INTO K55ADMIN.PARTS VALUES ('Steel',    30,'ACWF');
+--*
+INSERT INTO K55ADMIN.PARTS_ALLNULL VALUES (NULL,NULL,NULL);
+INSERT INTO K55ADMIN.PARTS_ALLNULL VALUES (NULL,NULL,NULL);
+INSERT INTO K55ADMIN.PARTS_ALLNULL VALUES (NULL,NULL,NULL);
+--*
+INSERT INTO K55ADMIN.PARTS_NOTNULL
+       SELECT * FROM K55ADMIN.PARTS;
+INSERT INTO K55ADMIN.PARTS_T
+       SELECT PART, NUM, 10+NUM,SUPPLIER FROM K55ADMIN.PARTS WHERE K55ADMIN.PARTS.NUM>10;
+INSERT INTO K55ADMIN.PARTS VALUES (NULL,    30,NULL);
+INSERT INTO K55ADMIN.PARTS_T VALUES ('Unknown', NULL, NULL, NULL);
+--*
+INSERT INTO K55ADMIN.PRODUCTS VALUES (505, 'Screwdriver',  3.70);
+INSERT INTO K55ADMIN.PRODUCTS VALUES ( 30, 'Relay',        7.55);
+INSERT INTO K55ADMIN.PRODUCTS VALUES ( 50, 'Hammer',       5.75);
+INSERT INTO K55ADMIN.PRODUCTS VALUES (205, 'Saw',         18.90);
+INSERT INTO K55ADMIN.PRODUCTS VALUES ( 10, 'Generator',   45.75);
+INSERT INTO K55ADMIN.PRODUCTS VALUES ( 20, 'Sander',      35.75);
+INSERT INTO K55ADMIN.PRODUCTS VALUES ( 30, 'Ruler',        8.75);
+--*
+INSERT INTO K55ADMIN.PRODUCTS_NOTNULL
+       SELECT * FROM K55ADMIN.PRODUCTS;
+INSERT INTO K55ADMIN.PRODUCTS_T
+       SELECT NUM, 10+NUM, PRODUCT, PRICE  FROM K55ADMIN.PRODUCTS WHERE PRICE>7;
+INSERT INTO K55ADMIN.PRODUCTS VALUES ( 20, NULL, NULL);
+INSERT INTO K55ADMIN.PRODUCTS_T VALUES ( NULL, NULL, 'Unknown', NULL);
+--*
+INSERT INTO K55ADMIN.PRODUCTS_ALLNULL VALUES (NULL, NULL, NULL);
+INSERT INTO K55ADMIN.PRODUCTS_ALLNULL VALUES (NULL, NULL, NULL);
+INSERT INTO K55ADMIN.PRODUCTS_ALLNULL VALUES (NULL, NULL, NULL);
+--*
+INSERT INTO K55ADMIN.S90 VALUES ('M62',10);
+INSERT INTO K55ADMIN.S90 VALUES ('M09',99);
+INSERT INTO K55ADMIN.S90 VALUES ('J64',64);
+INSERT INTO K55ADMIN.S91 VALUES ('M62',100);
+INSERT INTO K55ADMIN.S91 VALUES ('M09',10);
+INSERT INTO K55ADMIN.S91 VALUES ('M03',500);
+INSERT INTO K55ADMIN.S92 VALUES ('M62',50);
+INSERT INTO K55ADMIN.S92 VALUES ('M03',10);
+INSERT INTO K55ADMIN.S92 VALUES ('J64',50);
+--*
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('711276','J. Thomas',75000,1500);
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('480923','C. Manthey',33500, 500);
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('368521','B. Ward',46700,0);
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('966641','K. Woods',41300,350);
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('537260',NULL,0,0);
+INSERT INTO K55ADMIN.EMPLOYEES VALUES ('216861','N. Baxter',52000,550);
+--*
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X124','480923');
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X125','711276');
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X126','988870');
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X127','368521');
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X128','537260');
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X129','622273');
+INSERT INTO K55ADMIN.OLD_OFFICES VALUES ('X130',NULL    );
+--*
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y124','537260');
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y125','368521');
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y126','711276');
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y127',NULL    );
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y128','480923');
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y129','216861');
+INSERT INTO K55ADMIN.NEW_OFFICES VALUES ('Y130','333666');
+--*
+INSERT INTO K55ADMIN.MANYTYPES VALUES (1,1,1.0,1.0,1E0,'One','One', 'One');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (2,2,2.0,2.0,2E0,'Two','Two', 'Two');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (3,3,3.0,3.0,3E0,'Three','Three', 'Three');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (4,4,4.0,4.0,4E0,'Four','Four', 'Four');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (5,5,5.0,5.0,5E0,'Five','Five', 'Five');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (6,6,6.0,6.0,6E0,'Six','Six', 'Six');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (7,7,7.0,7.0,7E0,'Seven','Seven', 'Seven');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (8,8,8.0,8.0,8E0,'Eight','Eight', 'Eight');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (9,9,9.0,9.0,9E0,'Nine','Nine', 'Nine');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (10,10,10.0,10.0,1E1,'Ten','Ten', 'Ten');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (11,11,11.0,11.0,1.1E1,'Eleven', 'Eleven','Eleven');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (12,12,12.0,12.0,1.2E1,'Twelve', 'Twelve','Twelve');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (13,13,13.0,13.0,1.3E1,'Thirteen', 'Thirteen','Thirteen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (14,14,14.0,14.0,1.4E1,'Fourteen', 'Fourteen','Fourteen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (15,15,15.0,15.0,1.5E1,'Fifteen', 'Fifteen','Fifteen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (16,16,16.0,16.0,1.6E1,'Sixteen', 'Sixteen','Sixteen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (17,17,17.0,17.0,1.7E1,'Seventeen', 'Seventeen','Seventeen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (18,18,18.0,18.0,1.8E1,'Eighteen', 'Eighteen','Eighteen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (19,19,19.0,19.0,1.9E1,'Nineteen', 'Nineteen','Nineteen');
+INSERT INTO K55ADMIN.MANYTYPES VALUES (20,20,20.0,20.0,2E1,'Twenty', 'Twenty','Twenty');
+--*
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (11,11,11.0,11.0,1.1E1,'Eleven','Eleven', 'Eleven');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (12,12,12.0,12.0,1.2E1,'Twelve','Twelve', 'Twelve');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (13,13,13.0,13.0,1.3E1,'Thirteen', 'Thirteen','Thirteen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (14,14,14.0,14.0,1.4E1,'Fourteen', 'Fourteen','Fourteen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (15,15,15.0,15.0,1.5E1,'Fifteen', 'Fifteen','Fifteen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (16,16,16.0,16.0,1.6E1,'Sixteen', 'Sixteen','Sixteen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (17,17,17.0,17.0,1.7E1,'Seventeen', 'Seventeen','Seventeen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (18,18,18.0,18.0,1.8E1,'Eighteen', 'Eighteen','Eighteen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (19,19,19.0,19.0,1.9E1,'Nineteen', 'Nineteen','Nineteen');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (20,20,20.0,20.0,2E1,'Twenty','Twenty', 'Twenty');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (21,21,21.0,21.0,2.1E1,'Twenty One','Twenty One', 'Twenty One');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (22,22,22.0,22.0,2.2E1,'Twenty Two','Twenty Two', 'Twenty Two');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (23,23,23.0,23.0,2.3E1,'Twenty Three','Twenty Three', 'Twenty Three');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (24,24,24.0,24.0,2.4E1,'Twenty Four','Twenty Four', 'Twenty Four');
+INSERT INTO K55ADMIN.MANYTYPES_NOTNULL VALUES
+   (25,25,25.0,25.0,2.5E1,'Twenty Five','Twenty Five', 'Twenty Five');
+--*
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (2,2,2.0,2.0,2E0,'Two','Two', 'Two');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (4,4,4.0,4.0,4E0,'Four','Four', 'Four');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (6,6,6.0,6.0,6E0,'Six','Six', 'Six');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (8,8,8.0,8.0,8E0,'Eight','Eight', 'Eight');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (10,10,10.0,10.0,1E1,'Ten','Ten', 'Ten');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (12,12,12.0,12.0,1.2E1,'Twelve','Twelve', 'Twelve');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (14,14,14.0,14.0,1.4E1,'Fourteen', 'Fourteen','Fourteen');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (16,16,16.0,16.0,1.6E1,'Sixteen', 'Sixteen','Sixteen');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (18,18,18.0,18.0,1.8E1,'Eighteen', 'Eighteen','Eighteen');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (20,20,20.0,20.0,2E1,'Twenty','Twenty', 'Twenty');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (22,22,22.0,22.0,2.2E1,'Twenty Two','Twenty Two', 'Twenty Two');
+INSERT INTO K55ADMIN.MANYTYPES_CTRL VALUES
+   (24,24,24.0,24.0,2.4E1,'Twenty Four','Twenty Four', 'Twenty Four');
+
+
+-- coj201.clp
+
+-- ---------------------------------------------------------------------;
+-- test unit 1. OUTER JOIN w/ correlated subquery;
+-- ---------------------------------------------------------------------;
+
+-- 101 - 'between' in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 102 - 'between' in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 103 - '='/like/in in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 104 - '='/like/in in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 105 - 'between' in LEFT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 106 - 'between' in RIGHT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 107 - '='/like/in in LEFT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 108 - '='/like/in in RIGHT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.products a
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 2. nested subquery: OUTER JOIN w/ correlated OUTER JOIN subquery;
+-- ---------------------------------------------------------------------;
+
+-- 201 - 'between' in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local pred on tuple-preserving operand, '=' join predicate, and, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.parts b LEFT JOIN k55admin.products a
+        on   b.num = a.num and b.part <> 'Wire'
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 202 - 'between' in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local pred on both operands, '=' join predicate, and, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on   a.num = b.num and (a.price>8 or b.part = 'Steel') and a.num > 20
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 203 - =/like/in in LEFT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: local '=' pred on null-producing operand OR '=' join predicate, right join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from k55admin.parts b right join k55admin.products a
+        on   b.num = 10 OR a.num = b.num
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 204 - '='/like/in in RIGHT JOIN ON condition;
+--       '>=all' subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: local pred on both operands, '=' join predicate, and/or, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price+20 >= all
+       (select a.price
+        from   k55admin.parts b left join k55admin.products a
+        on     a.num = b.num and (a.price>8 or b.part = 'Steel' or b.num > 20)
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 205 - 'between' in LEFT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local '=' pred on tuple-preserving operand OR '=' join predicate, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from   k55admin.parts b left join k55admin.products a
+        on     b.num = 10 OR a.num = b.num
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 206 - 'between' in RIGHT JOIN ON condition;
+--       IN subquery correlated to tuple-preserving operand in the WHERE clause;
+--       subquery: local '=' pred on tuple-preserving operand AND '<>' join predicate, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5)
+where pt.price IN
+       (select a.price
+        from   k55admin.parts b left join k55admin.products a
+        on     b.num = 1000 and a.num <> b.num
+        where a.num>=p.num)
+order by 1,2,3,4;
+
+-- 207 - '='/like/in in LEFT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: '=' join predicate and '2>1', left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on   a.num = b.num and 2>1
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 208 - '='/like/in in RIGHT JOIN ON condition;
+--       IN subquery correlated to null-producing operand in the WHERE clause;
+--       subquery: '1=0' in ON condition, left join;
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+where pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. subquery in OUTER JOIN ON clause;
+-- Not allowed in DB2 compatibility mode
+-- ---------------------------------------------------------------------;
+
+-- 301 - '='/like/in in RIGHT JOIN ON condition with correlated IN subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 302 - '='/like/in in LEFT JOIN ON condition with uncorrelated IN subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price IN
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0)
+order by 1,2,3,4;
+
+-- 303 - '=' and inlist in RIGHT JOIN ON condition with correlated exists subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on pt.product in ('Bolt','Nuts') and p.num = pt.num
+and exists
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 304 - '=' and inlist in LEFT JOIN ON condition with uncorrelated exists subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on pt.product in ('Bolt','Nuts') and p.num = pt.num
+and exists
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0)
+order by 1,2,3,4;
+
+-- 305 - '='/like/in in RIGHT JOIN ON condition with correlated '>=ALL' subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p right join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price >=ALL
+       (select a.price
+        from k55admin.parts b left join k55admin.products a
+        on 1=0
+        where a.num>=pt.num)
+order by 1,2,3,4;
+
+-- 306 - '='/like/in in LEFT JOIN ON condition with uncorrelated scalar subquery; Error.
+select part, p.num, product, pt.NUM, price
+from k55admin.parts p left join k55admin.products pt
+on (pt.product in ('Bolt','Nuts') or
+    pt.product like 'Power%' or
+    p.num = pt.num)
+and pt.price =
+       (select max(a.price)
+        from k55admin.parts b left join k55admin.products a
+        on 1=0)
+order by 1,2,3,4;
+
+-- coj202.clp
+
+---------------------------------------------------------------------
+--      inner join (105)
+---------------------------------------------------------------------
+
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins, different relops, conjunction;
+-- ---------------------------------------------------------------------;
+
+-- 101 - multiple '>=', '<=' in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM and K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 102 - 'between' in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50
+    order by 1,2,3,4;
+
+-- 103 - '>'/'<' in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 104 - '<>' in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 105 - multiple '>=', '<=' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM and K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 106 - 'between' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50
+    order by 1,2,3,4;
+
+-- 107 - '>'/'<' in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 108 - '<>' in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 109 - multiple '>=', '<=' in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM and K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 110 - 'between' in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50
+    order by 1,2,3,4;
+
+-- 111 - '>'/'<' in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 112 - '<>' in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 2. plain joins, different relops, and/or/not;
+-- ---------------------------------------------------------------------;
+
+-- 201 - '>='/'<='/OR in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PARTS.NUM <= K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 202 - 'not between' in INNER JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON NOT(K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM AND K55ADMIN.PRODUCTS.NUM + 50)
+    order by 1,2,3,4;
+
+-- 203 - '>'/'<'/OR in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 204 - not/'<>' in INNER JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS JOIN K55ADMIN.PRODUCTS
+    ON NOT( K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+
+-- 205 - '>='/'<='/or in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PRODUCTS.NUM <= K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 206 - 'not between' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON not (K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50)
+    order by 1,2,3,4;
+
+-- 207 - '>'/'<'/or in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM OR K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 208 - not/'<>' in LEFT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON NOT(K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM)
+    order by 1,2,3,4;
+
+-- 209 - '>='/'<='/OR in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM >= K55ADMIN.PRODUCTS.NUM or K55ADMIN.PRODUCTS.NUM <= K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 210 - 'not between' in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON not(K55ADMIN.PARTS.NUM between K55ADMIN.PRODUCTS.NUM and K55ADMIN.PRODUCTS.NUM + 50)
+    order by 1,2,3,4;
+
+-- 211 - '>'/'<'/or in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM > K55ADMIN.PRODUCTS.NUM or K55ADMIN.PRODUCTS.NUM < K55ADMIN.PARTS.NUM
+    order by 1,2,3,4;
+
+-- 212 - not/'<>' in RIGHT JOIN on condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON not(K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM)
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. plain joins, like/in/is-null/is-not-null;
+-- ---------------------------------------------------------------------;
+
+-- 301 - '<>'/'=' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM or
+         K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM)
+    order by 1,2,3,4;
+
+-- 302 - '='/like in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM 
+             or K55ADMIN.PRODUCTS.PRODUCT LIKE 'Screw%')
+    order by 1,2,3,4;
+
+-- 303 - '='/in in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT in ('Screwdriver','Saw') 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+
+
+-- 304 - '='/is-null in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT is null 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+
+-- 305 - '='/is-not-null in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT is not null 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+
+-- 306 - '='/'<' in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM < K55ADMIN.PRODUCTS.NUM 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+
+-- 307 - '='/like in LEFT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM 
+             or K55ADMIN.PRODUCTS.PRODUCT LIKE 'Nut%' )
+    order by 1,2,3,4;
+
+-- 308 - '='/like/in in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON ( K55ADMIN.PRODUCTS.PRODUCT in ('Bolt','Nuts') 
+             or K55ADMIN.PRODUCTS.PRODUCT LIKE 'Power%' 
+             or K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM )
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 4. plain joins, only local predicates, no join predicate;
+-- ---------------------------------------------------------------------;
+
+-- 401 - local '=' pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10
+    order by 1,2,3,4;
+
+-- 402 - local IN pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM IN (160, 205)
+    order by 1,2,3,4;
+
+-- 403 - local between pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between 150 and 250
+    order by 1,2,3,4;
+
+-- 404 - local '=' pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10
+    order by 1,2,3,4;
+
+-- 405 - local IN pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM IN (10, 20)
+    order by 1,2,3,4;
+
+-- 406 - local between pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM between 10 and 50
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 5. plain joins, local predicate and join predicate;
+-- ---------------------------------------------------------------------;
+
+-- 501 - local pred on tuple-preserving operand, '=' join predicate, and;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       K55ADMIN.PARTS.PART <> 'Wire'
+    order by 1,2,3,4;
+
+-- 502 - local pred on both operands, '=' join predicate, and;
+SELECT K55ADMIN.PARTS.*, K55ADMIN.PRODUCTS.*
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       (K55ADMIN.PRODUCTS.PRICE>8 or K55ADMIN.PARTS.PART = 'Steel')
+        and K55ADMIN.PRODUCTS.NUM > 20
+    order by 1,2,3,4,5,6;
+
+-- 503 - local pred on both operands, '=' join predicate, and/or;
+SELECT K55ADMIN.PARTS.*, K55ADMIN.PRODUCTS.*
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       (K55ADMIN.PRODUCTS.PRICE>8 or K55ADMIN.PARTS.PART = 'Steel'
+        or K55ADMIN.PRODUCTS.NUM > 20)
+    order by 1,2,3,4,5,6;
+
+-- 504 - local '=' pred on null-producing operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS RIGHT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10 OR
+       K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 505 - local '=' pred on tuple-preserving operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 10 OR
+       K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- 506 - local '=' pred on tuple-preserving operand AND '<>' join predicate;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = 1000 AND
+       K55ADMIN.PARTS.NUM <> K55ADMIN.PRODUCTS.NUM
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 6. plain joins, '1=0' or '2>1' predicate, w/ or w/o join predicate;
+-- ---------------------------------------------------------------------;
+
+-- 601 - '=' join predicate and '2>1';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       2>1
+    order by 1,2,3,4;
+
+-- 602 - '=' join predicate and '1=0';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM and
+       1=0
+    order by 1,2,3,4;
+
+-- 603 - '=' join predicate or '2>1';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM or
+       2>1
+    order by 1,2,3,4;
+
+-- 604 - '=' join predicate or '1=0';
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON K55ADMIN.PARTS.NUM = K55ADMIN.PRODUCTS.NUM or
+       1=0
+    order by 1,2,3,4;
+
+-- 605 - '2>1' in ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON 2>1
+    order by 1,2,3,4;
+
+-- 606 - '1=0' in ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON 1=0
+    order by 1,2,3,4;
+
+-- 607 - '1=1' in ON condition;
+SELECT PART, K55ADMIN.PARTS.NUM, PRODUCT, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS LEFT JOIN K55ADMIN.PRODUCTS
+    ON 1=1
+    order by 1,2,3,4;
+
+
+
+-- coj204.clp
+
+
+---------------------------------
+-- Creating a table;
+---------------------------------
+create table k55admin.stru (
+             cd_plant           varchar(5) not null,
+             in_reseq           varchar(1) not null,
+             no_level           integer    not null,
+             no_part_base_nxt_a varchar(9) not null,
+             no_part_pref_nxt_a varchar(7) not null,
+             no_part_suff_nxt_a varchar(8) not null,
+             no_part_cntl_nxt_a varchar(3) not null,
+             no_seq             integer    not null,
+             no_part_base       varchar(9) not null,
+             no_part_prefix     varchar(7) not null,
+             no_part_suffix     varchar(8) not null,
+             no_part_control    varchar(3) not null);
+
+---------------------------------
+-- Start of loading data into table;
+---------------------------------
+
+insert into k55admin.stru values('EE01A','N',0,'','','','',0,'BLPO','R','','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',30,'M10A63','R','AH','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',40,'M10A55','R','AH','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',51,'M10A61','R','AH','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',55,'STH1008','R','','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',61,'M99G124','R','AH','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',71,'STH1050','R','','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',80,'PMIC3','R','','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',90,'M99G24','R','','');
+insert into k55admin.stru values('EE01A','N',1,'BLPO','R','','',100,'M10A57','R','BH','');
+insert into k55admin.stru values('EE01A','N',4,'9A937','D9AE','AA','',1,'9A301','RC5OF','A','');
+insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',130,'9J547','D9AE','CA','');
+insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',140,'9J563','E0AE','BA','');
+insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',141,'385338','','S2','');
+insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',150,'387155','R','S','');
+insert into k55admin.stru values('EE01A','N',2,'9509','E2DE','UA','',160,'9E957','E2AE','P82','');
+insert into k55admin.stru values('EE01A','N',3,'9E957','E2AE','P82','',1,'9E957','E2AE','BB','');
+insert into k55admin.stru values('EE01A','N',3,'9E957','E2AE','P82','',2,'9S555','E37E','CA','');
+insert into k55admin.stru values('EE01A','N',4,'9S555','E37E','CA','',1,'9S555','RE2AE','BA','');
+insert into k55admin.stru values('EE01A','N',3,'9E957','E2AE','P82','',3,'9S554','D2AF','DA','');
+insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',20,'N806017','','S40G','');
+insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',35,'10A318','PE2AF','BA','');
+insert into k55admin.stru values('EE01A','N',6,'10A318','PE2AF','BA','',10,'10A318','E2AF','BA','');
+insert into k55admin.stru values('EE01A','N',7,'10A318','E2AF','BA','',10,'10A318','RE2HF','AA','');
+insert into k55admin.stru values('EE01A','N',7,'10A318','E2AF','BA','',20,'48ZP42842','','','');
+insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',40,'10A319','PD5VF','AA','');
+insert into k55admin.stru values('EE01A','N',6,'10A319','PD5VF','AA','',10,'10A319','D5VF','AA','');
+insert into k55admin.stru values('EE01A','N',7,'10A319','D5VF','AA','',10,'10A319','RD5VF','AA','');
+insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',50,'10B301','D2OF','AA','');
+insert into k55admin.stru values('EE01A','N',5,'10304','E9DF','AA','',65,'384758','','S','');
+insert into k55admin.stru values('EE01A','N',4,'9E950','E6AE','AA','',1,'9E950','RE3EE','BR','');
+insert into k55admin.stru values('EE01A','N',2,'9E926','E8DE','FAIP','',61,'804064','N','S2','');
+insert into k55admin.stru values('EE01A','N',2,'9E926','E8DE','FAIP','',70,'803853','N','S100','');
+insert into k55admin.stru values('EE01A','N',2,'9E926','E8DE','FAIP','',80,'9A776','E6AE','DF','');
+insert into k55admin.stru values('EE01A','N',3,'9A776','E6AE','DF','',1,'9A794','E6AE','BD1','');
+insert into k55admin.stru values('EE01A','N',4,'9A794','E6AE','BD1','',1,'9A794','PE6AE','BD','');
+insert into k55admin.stru values('EE01A','N',5,'9A794','PE6AE','BD','',1,'9A794','E6AE','BD','');
+insert into k55admin.stru values('EE01A','N',6,'9A794','E6AE','BD','',1,'9A794','RE69E','BB','');
+insert into k55admin.stru values('EE01A','N',4,'9A794','E6AE','BD1','',2,'9E551','PE0ZE','AA','');
+insert into k55admin.stru values('EE01A','N',5,'9E551','PE0ZE','AA','',1,'9E551','HE0ZE','AA','');
+insert into k55admin.stru values('EE01B','N',7,'9533','HD7ZE','AA','',1,'9533','D7ZE','AA','');
+insert into k55admin.stru values('EE01B','N',8,'9533','D7ZE','AA','',1,'9533','RD7ZE','AA','');
+insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',40,'9A574','D1AF','FA','');
+insert into k55admin.stru values('EE01B','N',5,'9A574','D1AF','FA','',1,'9A521','RC1AE','B','');
+insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',50,'390468','','S','');
+insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',60,'9A521','D0AF','AT','');
+insert into k55admin.stru values('EE01B','N',5,'9A521','D0AF','AT','',1,'9A521','RC1AE','B','');
+insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',70,'390468','','S','');
+insert into k55admin.stru values('EE01B','N',4,'9E509','D9ZE','BE1','',80,'9A521','C9AF','AA','');
+insert into k55admin.stru values('EE01B','N',5,'9A521','C9AF','AA','',1,'9A521','RD0AF','CV','');
+insert into k55admin.stru values('EE01B','N',4,'9C511','E3ZE','AA','',1,'9C511','RE3ZE','AA','');
+insert into k55admin.stru values('EE01B','N',3,'9B559','E3ZE','AA','',60,'9834','E3TE','AA','');
+insert into k55admin.stru values('EE01B','N',3,'9B559','E3ZE','AA','',70,'9B551','E3ZE','AA','');
+insert into k55admin.stru values('EE01B','N',4,'9B551','E3ZE','AA','',1,'9B551','RE3ZE','AA','');
+insert into k55admin.stru values('EE01B','N',3,'9B559','E3ZE','AA','',80,'9934','E3ZE','AA','');
+insert into k55admin.stru values('EE01B','N',2,'9509','E4TE','AMA','',370,'9D587','E3TE','ABP1','');
+insert into k55admin.stru values('EE01B','N',3,'9D587','E3TE','ABP1','',10,'9D587','E3TE','AB','');
+insert into k55admin.stru values('EE01B','N',4,'9D587','E3TE','AB','',1,'9D587','','5','');
+insert into k55admin.stru values('EE01B','N',5,'9D587','','5','',1,'SAE303','R','M','');
+insert into k55admin.stru values('EE01B','N',3,'9D587','E3TE','ABP1','',20,'9529','E3AE','AA','');
+insert into k55admin.stru values('EE01B','N',5,'17B517','E59F','AA','',20,'17C526','E0TF','AA','');
+insert into k55admin.stru values('EE01B','N',5,'17B517','E59F','AA','',30,'17A530','E0TF','AA','');
+insert into k55admin.stru values('EE01B','N',5,'17B517','E59F','AA','',40,'17B559','E59F','AA','');
+insert into k55admin.stru values('EE01B','N',4,'17B443','E59F','AA','',35,'17B583','E2TF','AA','');
+insert into k55admin.stru values('EE01B','N',4,'17B443','E59F','AA','',40,'63757','','S7','');
+insert into k55admin.stru values('EE01B','N',4,'17B443','E59F','AA','',50,'17A482','E0TF','AA','');
+insert into k55admin.stru values('EE01B','N',2,'17508','E69F','AA','',30,'17A425','E59F','AA','');
+insert into k55admin.stru values('EE01B','N',2,'17508','E69F','AA','',50,'17B584','E59F','AB','');
+insert into k55admin.stru values('EE01B','N',3,'17B584','E59F','AB','',10,'17B558','E5TF','AA','');
+insert into k55admin.stru values('EE01B','N',3,'17B584','E59F','AB','',20,'17C449','E0TF','AA','');
+insert into k55admin.stru values('EE01D','N',3,'9512','D5TE','EA1','',60,'9996','D5AE','CB','');
+insert into k55admin.stru values('EE01D','N',3,'9512','D5TE','EA1','',70,'6B608','D3AF','AA','');
+insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',20,'9A521','C9AF','AK','');
+insert into k55admin.stru values('EE01D','N',3,'9A521','C9AF','AK','',1,'9A521','RD0AF','CV','');
+insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',30,'9A521','E3AE','BA','');
+insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',40,'9576','E3ZE','AA','');
+insert into k55admin.stru values('EE01D','N',2,'9509','D4PE','BGA','',50,'9A565','D5DE','BA','');
+insert into k55admin.stru values('EE01D','N',3,'9A565','D5DE','BA','',10,'9E501','D5AE','AA','');
+insert into k55admin.stru values('EE01D','N',4,'9E501','D5AE','AA','',1,'9E501','5','2V5','');
+insert into k55admin.stru values('EE01D','N',5,'9E501','5','2V5','',1,'SAE903','R','','');
+insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',10,'9513','E2ZE','MAPE','');
+insert into k55admin.stru values('EE01D','N',4,'9513','E2ZE','MAPE','',1,'9513','','2V136','');
+insert into k55admin.stru values('EE01D','N',5,'9513','','2V136','',1,'SAE303','R','M','');
+insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',11,'M4G238','RESH','A','');
+insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',12,'35','R14','760','');
+insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',20,'9A521','D0AF','FD','');
+insert into k55admin.stru values('EE01D','N',4,'9A521','D0AF','FD','',1,'9A521','RD0AF','CV','');
+insert into k55admin.stru values('EE01D','N',3,'9512','E2ZE','MA4','',30,'9581','E2ZE','CA','');
+insert into k55admin.stru values('EE01D','N',4,'9581','E2ZE','CA','',1,'9582','PD7AE','CA','');
+insert into k55admin.stru values('EE01D','N',5,'9582','PD7AE','CA','',1,'9582','D7AE','CA','');
+insert into k55admin.stru values('EE01D','N',5,'10379','E7AF','AA1','',10,'10379','E7AF','AA','');
+insert into k55admin.stru values('EE01D','N',3,'10335','E7HF','AA','',55,'10328','E5AF','AA','');
+insert into k55admin.stru values('EE01D','N',3,'10335','E7HF','AA','',60,'10B302','E7HF','AA','');
+insert into k55admin.stru values('EE01D','N',4,'10B302','E7HF','AA','',20,'10B302','','2','');
+insert into k55admin.stru values('EE01D','N',5,'10B302','','2','',10,'SAE303','R','M','');
+insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',30,'351124','','S36','');
+insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',35,'391042','','S2','');
+insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',40,'389767','','S36','');
+insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',50,'375026','','S36','');
+insert into k55admin.stru values('EE01D','N',2,'10C335','E2HF','AA','',60,'10343','D0AF','A','');
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 1. OJ in a scalar subquery in WHERE clause;
+--              inequality predicate in ON clause and a WHERE clause;
+-- ---------------------------------------------------------------------;
+
+-- 101 - LEFT JOIN in a scalar subquery in WHERE clause;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null
+                 )
+      and no_level < 3
+;
+
+-- 102 - RIGHT JOIN in a scalar subquery in WHERE clause;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null
+                 )
+      and no_level < 3
+;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. OJ in a correlated scalar subquery in WHERE clause;
+--              an equality predicate in ON clause and a WHERE clause;
+-- ---------------------------------------------------------------------;
+
+
+-- 301 - LEFT JOIN in a correlated scalar subquery in WHERE clause;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant = ( select  distinct a.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+
+
+-- 302 - RIGHT JOIN in a correlated scalar subquery in WHERE clause;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant = ( select  distinct a.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+
+
+-- 303 - INNER JOIN in a correlated scalar subquery in WHERE clause;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant = ( select  distinct a.cd_plant
+                   from k55admin.stru a inner join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 4. OJ in a scalar subquery in the SELECT list;
+-- ---------------------------------------------------------------------;
+
+-- 401 - LEFT JOIN in a scalar subquery in the SELECT list;
+select no_level,
+       ( select  distinct a.cd_plant
+         from k55admin.stru a left join k55admin.stru b
+         on a.no_level = b.no_level
+         where a.no_level = 0
+       )
+from k55admin.stru
+where no_seq <= 4 and no_level < 2
+;
+
+-- 402 - RIGHT JOIN in a scalar subquery in the SELECT list;
+select no_level,
+       ( select  distinct a.cd_plant
+         from k55admin.stru a right join k55admin.stru b
+         on a.no_level = b.no_level
+         where a.no_level = 0
+       )
+from k55admin.stru
+where no_seq <= 4 and no_level < 2
+;
+
+-- ---------------------------------------------------------------------;
+-- test unit 6. OJ in a nested scalar subquery, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+
+-- 601 - LEFT JOIN in a nested scalar subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null and
+                         b.cd_plant = ( select  distinct b.cd_plant
+                                        from k55admin.stru a left join k55admin.stru b
+                                        on a.no_level = b.no_level and b.no_level>7
+                                        where a.cd_plant = 'EE01B' and b.cd_plant is not null)
+                 )
+      and no_level < 3
+;
+
+-- 602 - RIGHT JOIN in a nested scalar subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant = ( select  distinct b.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B' and b.cd_plant is not null
+                    and  b.cd_plant = ( select  distinct b.cd_plant
+                                        from k55admin.stru a right join k55admin.stru b
+                                        on a.no_level = b.no_level and b.no_level>7
+                                        where a.cd_plant = 'EE01B' and b.cd_plant is not null)
+                 )
+      and no_level < 3
+;
+
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 7. OJ in a scalar subquery in an INLIST, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+
+-- 701 - LEFT JOIN in a scalar subquery in an INLIST, no correlation;
+select *
+from k55admin.stru
+where cd_plant in ('EE01B', ( select distinct b.cd_plant
+                              from k55admin.stru a left join k55admin.stru b
+                              on a.no_level = b.no_level and b.no_level>7
+                              where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+                            )
+      and no_level = 7
+;
+
+
+-- 702 - RIGHT JOIN in a scalar subquery in an INLIST, no correlation;
+select *
+from k55admin.stru
+where cd_plant in ('EE01B', ( select distinct b.cd_plant
+                              from k55admin.stru a right join k55admin.stru b
+                              on a.no_level = b.no_level and b.no_level>7
+                              where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+                            )
+      and no_level = 7
+;
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 8. OJ in an EXISTS predicate subquery, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+
+-- 801 - LEFT JOIN in an EXISTS predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select distinct b.cd_plant
+               from k55admin.stru a left join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7
+               where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 2
+;
+
+-- 802 - LEFT JOIN in an EXISTS predicate subquery, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select b.cd_plant
+               from k55admin.stru a left join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7)
+      and no_level < 2
+;
+
+-- 803 - RIGHT JOIN in an EXISTS predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select distinct b.cd_plant
+               from k55admin.stru a right join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7
+               where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 2
+;
+
+-- 804 - RIGHT JOIN in an EXISTS predicate subquery, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where exists ( select b.cd_plant
+               from k55admin.stru a RIGHT join k55admin.stru b
+               on a.no_level = b.no_level and b.no_level>7)
+      and no_level < 2
+;
+
+-- 805 - LEFT JOIN in a correlated subquery in EXISTS predicate;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where exists ( select  distinct a.cd_plant
+                   from k55admin.stru a LEFT join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+
+-- 806 - RIGHT JOIN in a correlated subquery in EXISTS predicate;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where exists ( select  distinct a.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level
+                   where b.no_level = t.no_seq
+                 )
+ and  no_part_base = 'BLPO'
+;
+
+
+-- 807 - LEFT JOIN in an IN subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant in ( select b.cd_plant
+                   from k55admin.stru a left join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B'
+                 )
+      and no_level < 3
+;
+
+
+-- 808 - RIGHT JOIN in an IN subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant in ( select b.cd_plant
+                   from k55admin.stru a right join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B'
+                 )
+      and no_level < 3
+;
+
+-- 809 - INNER JOIN in an IN subquery, no correlation;
+select cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant in ( select b.cd_plant
+                   from k55admin.stru a join k55admin.stru b
+                   on a.no_level = b.no_level and b.no_level>7
+                   where a.cd_plant = 'EE01B'
+                 )
+      and no_level < 3
+;
+
+-- 810 - LEFT JOIN in a correlated in subquery;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant in ( select  distinct a.cd_plant
+                    from k55admin.stru a LEFT join k55admin.stru b
+                    on a.no_level = b.no_level and b.no_level>0
+                    where b.no_level = t.no_seq
+                 )
+order by no_level
+;
+
+-- 811 - RIGHT JOIN in a correlated in subquery;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant in  ( select  distinct a.cd_plant
+                     from k55admin.stru a right join k55admin.stru b
+                     on a.no_level = b.no_level and b.no_level>0
+                     where b.no_level = t.no_seq
+                 )
+;
+
+-- 812 - INNER JOIN in a correlated in subquery;
+--       correlation to the WHERE clause of the outerjoin subquery;
+select cd_plant, no_level, no_seq
+from k55admin.stru t
+where cd_plant in  ( select  distinct a.cd_plant
+                     from k55admin.stru a join k55admin.stru b
+                     on a.no_level = b.no_level and b.no_level>0
+                     where b.no_level = t.no_seq
+                 )
+;
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 9. OJ in a quantified predicate subquery, no correlation;
+--              inequality predicate in the ON clause and WHERE clause;
+-- ---------------------------------------------------------------------;
+
+-- 901 - LEFT JOIN in '>=ALL' predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select distinct b.cd_plant
+                       from k55admin.stru a left join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 3
+;
+
+-- 902 - LEFT JOIN in '>=ALL' predicate subquery, no correlation;
+--       empty subquery results;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select b.cd_plant
+                       from k55admin.stru a left join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null and 1>2)
+      and no_level < 3
+;
+
+-- 903 - LEFT JOIN in '>=ALL' predicate subquery, no correlation;
+--       null returned in the subquery;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select b.cd_plant
+                       from k55admin.stru a left join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B')
+      and no_level < 3
+;
+
+-- 904 - RIGHT JOIN in '>=ALL' predicate subquery w/ distinct, no correlation;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select distinct b.cd_plant
+                       from k55admin.stru a right join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null )
+      and no_level < 3
+;
+
+-- 905 - RIGHT JOIN in '>=ALL' predicate subquery, no correlation;
+--       empty subquery results;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select b.cd_plant
+                       from k55admin.stru a right join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7
+                       where a.cd_plant = 'EE01B' and b.cd_plant is not null and 1>2)
+      and no_level < 3
+;
+
+-- 906 - RIGHT JOIN in '>=ALL' predicate subquery, no correlation;
+--       null returned in the subquery;
+select distinct cd_plant, no_part_base_nxt_a
+from k55admin.stru
+where cd_plant >=all ( select a.cd_plant
+                       from k55admin.stru a right join k55admin.stru b
+                       on a.no_level = b.no_level and b.no_level>7 )
+      and no_level < 3
+;
+
+
+---------------------------------
+-- Dropping the table;
+---------------------------------
+drop table k55admin.stru;
+
+
+
+-- coj205.clp
+
+---------------------------------------------------------------------
+--      inner join (105)
+---------------------------------------------------------------------
+
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins, different relops, conjunction;
+-- ---------------------------------------------------------------------;
+
+-- 101 - multiple '>=', '<=' in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 102 - 'between' in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PRODUCTS_NOTNULL.NUM + 50
+    order by 1,2,3,4;
+
+-- 103 - '>'/'<' in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 104 - '<>' in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 105 - multiple '>=', '<=' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 106 - 'between' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50
+    order by 1,2,3,4;
+
+-- 107 - '>'/'<' in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 108 - '<>' in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 109 - multiple '>=', '<=' in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 110 - 'between' in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50
+    order by 1,2,3,4;
+
+-- 111 - '>'/'<' in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 112 - '<>' in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 2. plain joins, different relops, and/or/not;
+-- ---------------------------------------------------------------------;
+
+-- 201 - '>='/'<='/OR in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+        K55ADMIN.PARTS_NOTNULL.NUM <= K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 202 - 'not between' in INNER JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON NOT(K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM AND
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50)
+    order by 1,2,3,4;
+
+-- 203 - '>'/'<'/OR in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 204 - not/'<>' in INNER JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON NOT( K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+
+-- 205 - '>='/'<='/or in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+K55ADMIN.PRODUCTS_NOTNULL.NUM <= K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 206 - 'not between' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON not (K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50)
+    order by 1,2,3,4;
+
+-- 207 - '>'/'<'/or in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM OR
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 208 - not/'<>' in LEFT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON NOT(K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+
+-- 209 - '>='/'<='/OR in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM >= K55ADMIN.PRODUCTS_NOTNULL.NUM or
+        K55ADMIN.PRODUCTS_NOTNULL.NUM <= K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 210 - 'not between' in RIGHT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON not(K55ADMIN.PARTS_NOTNULL.NUM between K55ADMIN.PRODUCTS_NOTNULL.NUM and
+        K55ADMIN.PRODUCTS_NOTNULL.NUM + 50)
+    order by 1,2,3,4;
+
+-- 211 - '>'/'<'/or in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM or
+        K55ADMIN.PRODUCTS_NOTNULL.NUM < K55ADMIN.PARTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 212 - not/'<>' in RIGHT JOIN on condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON not(K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. plain joins, like/in/is-null/is-not-null;
+-- ---------------------------------------------------------------------;
+
+-- 301 - '<>'/'=' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+
+-- 302 - '='/like in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+             K55ADMIN.PRODUCTS_NOTNULL.PRODUCT LIKE 'Screw%')
+    order by 1,2,3,4;
+
+-- 303 - '='/in in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT in ('Screwdriver','Saw') or
+          K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM)
+    order by 1,2,3,4;
+
+
+-- 304 - '='/is-null in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT is null or
+             K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+
+-- 305 - '='/is-not-null in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT is not null or
+          K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+
+-- 306 - '='/'<' in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM < K55ADMIN.PRODUCTS_NOTNULL.NUM or
+             K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM )
+    order by 1,2,3,4;
+
+-- 307 - '='/like in LEFT JOIN ON condition; 
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+          K55ADMIN.PRODUCTS_NOTNULL.PRODUCT LIKE 'Nut%' )
+    order by 1,2,3,4;
+
+-- 308 - '='/like/in in RIGHT JOIN ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON ( K55ADMIN.PRODUCTS_NOTNULL.PRODUCT in ('Bolt','Nuts') or
+          K55ADMIN.PRODUCTS_NOTNULL.PRODUCT LIKE 'Power%' or
+          K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM  )
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 4. plain joins, only local predicates, no join predicate;
+-- ---------------------------------------------------------------------;
+
+-- 401 - local '=' pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10
+    order by 1,2,3,4;
+
+-- 402 - local IN pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM IN (160, 205)
+    order by 1,2,3,4;
+
+-- 403 - local between pred on tuple-preserving operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between 150 and 250
+    order by 1,2,3,4;
+
+-- 404 - local '=' pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10
+    order by 1,2,3,4;
+
+-- 405 - local IN pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM IN (10, 20)
+    order by 1,2,3,4;
+
+-- 406 - local between pred on null-producing operand;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM between 10 and 50
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 5. plain joins, local predicate and join predicate;
+-- ---------------------------------------------------------------------;
+
+-- 501 - local pred on tuple-preserving operand, '=' join predicate, and;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       K55ADMIN.PARTS_NOTNULL.PART <> 'Wire'
+    order by 1,2,3,4;
+
+-- 502 - local pred on both operands, '=' join predicate, and;
+SELECT K55ADMIN.PARTS_NOTNULL.*, K55ADMIN.PRODUCTS_NOTNULL.*
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       (K55ADMIN.PRODUCTS_NOTNULL.PRICE>8 or K55ADMIN.PARTS_NOTNULL.PART = 'Steel')
+        and K55ADMIN.PRODUCTS_NOTNULL.NUM > 20
+    order by 1,2,3,4,5,6;
+
+-- 503 - local pred on both operands, '=' join predicate, and/or;
+SELECT K55ADMIN.PARTS_NOTNULL.*, K55ADMIN.PRODUCTS_NOTNULL.*
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       (K55ADMIN.PRODUCTS_NOTNULL.PRICE>8 or K55ADMIN.PARTS_NOTNULL.PART = 'Steel'
+        or K55ADMIN.PRODUCTS_NOTNULL.NUM > 20)
+    order by 1,2,3,4,5,6;
+
+-- 504 - local '=' pred on null-producing operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL RIGHT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10 OR
+       K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 505 - local '=' pred on tuple-preserving operand OR '=' join predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 10 OR
+       K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- 506 - local '=' pred on tuple-preserving operand AND '<>' join predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = 1000 AND
+       K55ADMIN.PARTS_NOTNULL.NUM <> K55ADMIN.PRODUCTS_NOTNULL.NUM
+    order by 1,2,3,4;
+
+-- ---------------------------------------------------------------------;
+-- test unit 6. plain joins, '1=0' or '2>1' predicate, w/ or w/o join predicate;
+-- ---------------------------------------------------------------------;
+
+-- 601 - '=' join predicate and '2>1';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       2>1
+    order by 1,2,3,4;
+
+-- 602 - '=' join predicate and '1=0';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM and
+       1=0
+    order by 1,2,3,4;
+
+-- 603 - '=' join predicate or '2>1';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+       2>1
+    order by 1,2,3,4;
+
+-- 604 - '=' join predicate or '1=0';
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM = K55ADMIN.PRODUCTS_NOTNULL.NUM or
+       1=0
+    order by 1,2,3,4;
+
+-- 605 - '2>1' in ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON 2>1
+    order by 1,2,3,4;
+
+-- 606 - '1=0' in ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON 1=0
+    order by 1,2,3,4;
+
+-- 607 - '1=1' in ON condition;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, PRODUCT, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON 1=1
+    order by 1,2,3,4;
+
+
+-- coj206.clp
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 2. Insert with OUTER JOIN subquery;
+-- ---------------------------------------------------------------------;
+
+-- create a table with nullable columns;
+create table k55admin.tmp_products
+      (num    smallint,
+       product  char(15),
+       price    decimal(7,2));
+
+-- create a table with non-nullable columns;
+create table k55admin.tmp_nn_products
+      (num    smallint not null,
+       product  char(15) not null,
+       price    decimal(7,2) not null);  
+
+-- 101 - 'between' in LEFT JOIN ON condition;
+--       insert into table with nullable columns;
+insert into k55admin.tmp_products
+select pt.num, product, price
+from k55admin.parts p left join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5);
+
+-- 102 - select from the table with newly insert tuples;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+-- 103 - delete the above inserted tuples;
+delete from k55admin.tmp_products;
+
+-- 104 - 'between' in RIGHT JOIN ON condition;
+--       insert into table with nullable columns;
+insert into k55admin.tmp_products
+select pt.num, product, price
+from k55admin.parts p right join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5);
+
+-- 105 - select from the table with newly insert tuples;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+-- 106 - delete the above inserted tuples;
+delete from k55admin.tmp_products;
+
+-- 107 - 'between' in INNER JOIN ON condition;
+--       insert into table with nullable columns;
+insert into k55admin.tmp_products
+select pt.num, product, price
+from k55admin.parts p inner join k55admin.products pt
+on   (p.num between pt.num and pt.num + 5);
+
+-- 108 - select from the table with newly insert tuples;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. Update with OUTER JOIN subquery;
+-- ---------------------------------------------------------------------;
+
+-- populate the table;
+delete from k55admin.tmp_products;
+
+insert into k55admin.tmp_products
+select * from k55admin.products;
+
+-- 301 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price *1.1
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 302 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+-- 303 - 'between' in RIGHT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price /1.1
+where  num in (select p.num
+               from k55admin.parts p right join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 304 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+
+-- populate the table with non-nullable columns;
+delete from k55admin.tmp_nn_products;
+
+insert into k55admin.tmp_nn_products
+select * from k55admin.products_notnull;
+
+-- 305 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with non-nullable columns;
+update k55admin.tmp_nn_products
+set    price = price *1.1
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 306 - select from the updated table;
+select * from k55admin.tmp_nn_products
+order by 1, 2, 3;
+
+-- 307 - 'between' in RIGHT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_nn_products
+set    price = price /1.1
+where  num in (select p.num
+               from k55admin.parts p right join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 308 - select from the updated table;
+select * from k55admin.tmp_nn_products
+order by 1, 2, 3;
+
+-- ---------------------------------------------------------------------;
+-- test unit 4. Update with OUTER JOIN subquery and with OUTER JOIN in set clause;
+-- ---------------------------------------------------------------------;
+
+-- populate the table;
+delete from k55admin.tmp_products;
+
+insert into k55admin.tmp_products
+select * from k55admin.products;
+
+-- 401 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price * (select min(pt.price)
+                      from   k55admin.parts p left join k55admin.products pt
+                      on   (p.num between pt.num and pt.num + 5))
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 402 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+-- 403 - 'between' in RIGHT JOIN ON condition as a subquery;
+--       update table with nullable columns;
+update k55admin.tmp_products
+set    price = price * (select min(pt.price)
+                        from   k55admin.parts p right join k55admin.products pt
+                        on   (p.num between pt.num and pt.num + 5))
+where  num in (select p.num
+               from k55admin.parts p right join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 404 - select from the updated table;
+select * from k55admin.tmp_products
+order by 1, 2, 3;
+
+-- populate the table;
+delete from k55admin.tmp_nn_products;
+
+insert into k55admin.tmp_nn_products
+select * from k55admin.products_notnull;
+
+-- 405 - 'between' in LEFT JOIN ON condition as a subquery;
+--       update table with non-nullable columns;
+update k55admin.tmp_nn_products
+set    price = price * (select min(pt.price)
+                      from   k55admin.parts p left join k55admin.products pt
+                      on   (p.num between pt.num and pt.num + 5))
+where  num in (select p.num
+               from k55admin.parts p left join k55admin.products pt
+               on   (p.num between pt.num and pt.num + 5));
+
+-- 406 - select from the updated table;
+select * from k55admin.tmp_nn_products
+order by 1, 2, 3;
+
+-- drop the tables;
+drop table k55admin.tmp_products;
+drop table k55admin.tmp_nn_products;
+
+-- coj207.clp
+
+---------------------------------------------------------------------
+--      left outer join (111)
+---------------------------------------------------------------------
+
+-- ---------------------------------------------------------------------;
+-- test unit 1, plain simple join, different relational operators in ON condition;
+-- ---------------------------------------------------------------------;
+
+-- 101 - explicit LEFT JOIN keywords, '<>' ON predicate ;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM
+  order by 1,2;
+
+-- 102 - explicit OUTER keyword, '>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM K55ADMIN.PARTS A LEFT OUTER JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM > B.NUM
+  order by 1,2;
+
+-- 103 - AND operator in on condition, '<=' or '>=' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <= B.NUM and B.NUM >= A.NUM
+  order by 1,2;
+
+-- 104.1 - Add arbitrary number of parenthesis, '<>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM ((((K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM))))
+  order by 1,2;
+
+-- 104.2 - Add arbitrary number of parenthesis, '<>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM (K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM)
+  order by 1,2;
+
+-- 104.3 - Add arbitrary number of parenthesis, '<>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM
+  FROM ((((((((((K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+    ON A.NUM <> B.NUM))))))))))
+  order by 1,2;
+
+-- ---------------------------------------------------------------------;
+-- test unit 2, add where, aggregate, order by, group by, having;
+-- ---------------------------------------------------------------------;
+
+-- 201 - Use where clause with LEFT join, '>' ON predicate;
+SELECT PART, A.NUM, PRODUCT, B.NUM, PRICE
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.PRICE>15 or A.PART <> 'Wire'
+        and B.NUM > 10
+  order by 1,2;
+
+-- 202 - Use aggregate function in select list, '>' ON predicate;
+SELECT AVG(PRICE)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.NUM > 10 and A.PART <> 'Wire';
+
+-- 203 - Use where clause and order by clause, '>' ON predicate;
+SELECT PART, PRODUCT, PRICE
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.PRICE>5
+  ORDER BY PART, PRICE DESC;
+
+-- 204 - Use where clause and order by multiple columns, '>' ON predicate;
+SELECT PART, PRODUCT, PRICE
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  ORDER BY 1 DESC, 3 ASC;
+
+-- 205 - Use where clause and group by clause, '>' ON predicate;
+SELECT B.NUM, count(*)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM > B.NUM
+  WHERE B.PRICE>5
+  GROUP BY B.NUM
+  order by 1;
+
+-- 206 - Use where clause and having clause, '<>' ON predicate;
+SELECT B.NUM, count(*)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM <> B.NUM
+  GROUP BY B.NUM
+  HAVING B.NUM > 20
+  order by 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3, create view of join result, inequality ON pred, and try to modify it;
+-- ---------------------------------------------------------------------;
+
+-- 301 - Create view with LEFT join clause, '<' or '<>' ON predicate;
+CREATE VIEW K55ADMIN.VW1 AS
+  SELECT PART, SUPPLIER, A.NUM, PRODUCT
+    FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+         ON A.NUM > B.NUM
+    WHERE PRICE>5;
+CREATE VIEW K55ADMIN.VW2 AS
+  SELECT PART, SUPPLIER, A.NUM, PRODUCT
+    FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B
+         ON A.NUM <> B.NUM
+    WHERE SUPPLIER <> 'ACWF';
+
+-- 302 - Select from view with where clause;
+SELECT count(*) FROM K55ADMIN.VW1 WHERE PRODUCT <> 'Saw';
+
+-- 303 - Inner Join on views;
+SELECT K55ADMIN.VW1.PART, K55ADMIN.VW1.PRODUCT, K55ADMIN.VW2.PART, K55ADMIN.VW2.PRODUCT
+  FROM K55ADMIN.VW1 JOIN K55ADMIN.VW2 ON K55ADMIN.VW1.NUM=K55ADMIN.VW2.NUM
+  order by 1,2,3;
+
+-- 305 - Drop views created in this test unit;
+DROP VIEW K55ADMIN.VW1;
+DROP VIEW K55ADMIN.VW2;
+
+-- ---------------------------------------------------------------------;
+-- test unit 4, test various mix of table references in FROM clause, inequality ON predicate;
+-- ---------------------------------------------------------------------;
+
+-- 401 - use derived table, '>' ON predicate;
+SELECT PART, SUPPLIER, A.NUM, PRODUCT, PRICE
+  FROM K55ADMIN.PARTS A LEFT JOIN
+    (SELECT * FROM K55ADMIN.PRODUCTS B WHERE PRICE>20) AS CHEAP_PRODUCTS
+    ON A.NUM > CHEAP_PRODUCTS.NUM
+  order by 1,3;
+
+-- 402 - one join table ref and one non-join-table-ref and DISTINCT, '>' ON predicate;
+SELECT DISTINCT A.PART, B.NUM, K55ADMIN.PRODUCTS.NUM
+  FROM K55ADMIN.PARTS as A, 
+       K55ADMIN.PARTS as B LEFT JOIN K55ADMIN.PRODUCTS ON B.NUM > K55ADMIN.PRODUCTS.NUM
+   order by 1,2,3;
+
+-- 403 - mixed implicit and explicit inner joins, '>' ON predicate;
+SELECT DISTINCT P1.PART, K55ADMIN.PARTS.NUM, K55ADMIN.PRODUCTS.PRICE, D1.PRODUCT, P1.NUM, D1.NUM
+FROM K55ADMIN.PARTS P1 LEFT JOIN K55ADMIN.PRODUCTS D1 ON P1.NUM>D1.NUM,
+     K55ADMIN.PARTS, K55ADMIN.PRODUCTS WHERE K55ADMIN.PARTS.NUM=K55ADMIN.PRODUCTS.NUM
+ order by 1,2,3,4;
+
+
+
+-- ---------------------------------------------------------------------;
+-- test unit 5, use of join result in various places, inequality ON predicate;
+-- ---------------------------------------------------------------------;
+
+-- 501 - join result used in subquery, '>' ON predicate;
+SELECT  PART, PRICE
+FROM K55ADMIN.PRODUCTS, K55ADMIN.PARTS
+WHERE PRICE > (SELECT MIN(PRICE) FROM
+                 K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B ON A.NUM>B.NUM)
+order by 1,2;
+
+-- 502 - join result used in subquery, '<' ON predicate;
+SELECT  PART, PRICE
+FROM K55ADMIN.PRODUCTS, K55ADMIN.PARTS
+WHERE PRICE NOT IN (SELECT PRICE+1 FROM
+                      K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS B ON A.NUM<B.NUM)
+order by 1,2;
+
+-- 503 - join appear in having clause, '>' ON predicate;
+SELECT B.NUM, count(*)
+  FROM K55ADMIN.PRODUCTS B LEFT JOIN K55ADMIN.PARTS A
+    ON A.NUM = B.NUM
+  WHERE B.PRICE>5
+  GROUP BY B.NUM
+  HAVING B.NUM > (SELECT AVG(K55ADMIN.PRODUCTS_T.NUM1)
+                  FROM   K55ADMIN.PARTS_T LEFT JOIN K55ADMIN.PRODUCTS_T
+                  ON     K55ADMIN.PARTS_T.NUM1>K55ADMIN.PRODUCTS_T.NUM2)
+ order by 1;
+
+-- 504 - join appear in insert/update/delete;
+insert into k55admin.products
+select p1.num, product, price 
+from k55admin.parts p1 LEFT JOIN K55ADMIN.products_t p2 
+ON p1.num>p2.num2;
+
+update k55admin.products
+set price=0 
+where price> (select avg(price) 
+              from k55admin.products_t left join k55admin.parts a
+              on K55ADMIN.products_t.num1>a.num);
+
+delete from k55admin.products
+where price> any (select price
+                  from k55admin.products_t left join k55admin.parts a
+                  on K55ADMIN.products_t.num1>a.num);
+
+select * from k55admin.products b order by 1,2;
+
+-- ---------------------------------------------------------------------;
+-- test unit 6, test join of non-null, nulls, and  empty tables;
+-- ---------------------------------------------------------------------;
+
+-- 601 - test not nulls, '>' ON predicate;
+SELECT PART, K55ADMIN.PARTS_NOTNULL.NUM, K55ADMIN.PRODUCTS_NOTNULL.NUM
+  FROM K55ADMIN.PARTS_NOTNULL LEFT JOIN K55ADMIN.PRODUCTS_NOTNULL
+    ON K55ADMIN.PARTS_NOTNULL.NUM > K55ADMIN.PRODUCTS_NOTNULL.NUM
+ order by 1,2;
+
+-- 602.1 - test nulls, both sides all nulls, '<' ON predicate;
+SELECT PART, K55ADMIN.PARTS_ALLNULL.NUM, K55ADMIN.PRODUCTS_ALLNULL.NUM
+  FROM K55ADMIN.PARTS_ALLNULL LEFT JOIN K55ADMIN.PRODUCTS_ALLNULL
+    ON K55ADMIN.PARTS_ALLNULL.NUM > K55ADMIN.PRODUCTS_ALLNULL.NUM
+ order by 1,2;
+
+-- 602.2 - test allnull table, left side null, '<>' ON predicate;
+SELECT PART, K55ADMIN.PARTS_ALLNULL.NUM, B.NUM
+  FROM K55ADMIN.PARTS_ALLNULL LEFT JOIN K55ADMIN.PRODUCTS B
+    ON K55ADMIN.PARTS_ALLNULL.NUM <> B.NUM
+ order by 1,2;
+
+-- 602.3 - test allnull table, right side null, '>=' ON predicate;
+SELECT PART, A.NUM, K55ADMIN.PRODUCTS_ALLNULL.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS_ALLNULL
+    ON A.NUM >= K55ADMIN.PRODUCTS_ALLNULL.NUM
+ order by 1,2;
+
+-- 603.1 - test empty table, both sides empty, '<=' ON predicate;
+SELECT PART, K55ADMIN.PARTS_EMPTY.NUM, K55ADMIN.PRODUCTS_EMPTY.NUM
+  FROM K55ADMIN.PARTS_EMPTY LEFT JOIN K55ADMIN.PRODUCTS_EMPTY
+    ON K55ADMIN.PARTS_EMPTY.NUM <= K55ADMIN.PRODUCTS_EMPTY.NUM
+  order by 1,2;
+
+-- 603.2 - test empty table, left side empty, '<>' ON predicate;
+SELECT PART, K55ADMIN.PARTS_EMPTY.NUM, B.NUM
+  FROM K55ADMIN.PARTS_EMPTY LEFT JOIN K55ADMIN.PRODUCTS B
+    ON K55ADMIN.PARTS_EMPTY.NUM <> B.NUM
+ order by 1,2;
+
+-- 603.3 - test empty table, right side empty, '>' ON predicate;
+SELECT PART, A.NUM, K55ADMIN.PRODUCTS_EMPTY.NUM
+  FROM K55ADMIN.PARTS A LEFT JOIN K55ADMIN.PRODUCTS_EMPTY
+    ON A.NUM > K55ADMIN.PRODUCTS_EMPTY.NUM
+ order by 1,2;
+
+-- simulate left join;
+--SELECT PART, SUPPLIER, A.NUM, B.NUM, PRODUCT
+--  FROM PARTS, PRODUCTS
+--  WHERE A.NUM = B.NUM
+--UNION ALL
+--SELECT PART, SUPPLIER, NUM, 
+--       nullif(1,1),         -- null
+--       nullif('1','1')      -- null
+--  FROM PARTS
+--  WHERE NOT EXISTS(SELECT * FROM PRODUCTS
+--                     WHERE A.NUM = B.NUM);
+
+-- 604 - null padding for all data types, '>' ON predicate;
+SELECT K55ADMIN.MANYTYPES.intcol, K55ADMIN.MANYTYPES_NOTNULL.intcol,
+       K55ADMIN.MANYTYPES.DEC62COL, K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+  FROM K55ADMIN.MANYTYPES LEFT JOIN K55ADMIN.MANYTYPES_NOTNULL
+    ON K55ADMIN.MANYTYPES.DEC62COL > K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+ ORDER BY 1,2;
+
+-- 605 - null padding for all data types, '<' ON predicate;
+SELECT K55ADMIN.MANYTYPES.intcol, K55ADMIN.MANYTYPES_NOTNULL.intcol,
+       K55ADMIN.MANYTYPES.DEC62COL+15, K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+  FROM K55ADMIN.MANYTYPES LEFT JOIN K55ADMIN.MANYTYPES_NOTNULL
+    ON K55ADMIN.MANYTYPES.DEC62COL+15 < K55ADMIN.MANYTYPES_NOTNULL.DEC72COL
+ WHERE K55ADMIN.MANYTYPES.INTCOL BETWEEN 5 AND 15
+ ORDER BY 1,2;
+
+-- coj209.clp
+
+
+--**********************************************************************
+--* complex join tests
+--**********************************************************************
+
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins;
+-- multiple joins (219);
+-- ---------------------------------------------------------------------;
+
+-- 101 - Nest INNER join and RIGHT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3;
+
+-- 102 - Nest INNER join and LEFT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3;
+
+-- 103 - Nest LEFT join and RIGHT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees LEFT JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3, 1;
+
+-- 104 - Nest RIGHT join and LEFT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees RIGHT JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 2;
+
+-- 105 - Nest COMMA join and LEFT join, with "or 1=0" predicate;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees,
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+           ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id or 1=0)
+  WHERE k55admin.employees.emp_id = k55admin.new_offices.emp_id or 1=0
+  ORDER BY 3;
+
+-- 106 - COMMA join 2 LEFT joins, with "or 1=0" predicate;
+SELECT T1.emp_id, T2.emp_id, T3.emp_id, T4.emp_id
+  FROM (K55ADMIN.old_offices T1 LEFT JOIN K55ADMIN.new_offices T2
+           ON T1.emp_id = T2.emp_id or 1=0),
+       (k55admin.old_offices T3 LEFT JOIN K55ADMIN.new_offices T4
+           ON T3.emp_id = T4.emp_id or 1=0)
+  WHERE T1.emp_id = T3.emp_id
+  ORDER BY 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 2. UNION of joins;
+-- ---------------------------------------------------------------------;
+
+-- 201 - UNION two LEFT joins, with "or 1=0" predicate;
+--                        UNION
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col or 1=0
+ORDER BY 2;
+
+-- 202 - Again, with extended ON clauses to join on multiple columns, with "or 1=0" predicate;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol or 1=0
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.floatcol = T1.intcol
+               AND T2.smintcol = T1.smintcol or 1=0
+ORDER BY 1;
+
+-- 203 - UNION ALL two RIGHT joins, with "or 1=0" predicate;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col
+               AND T1.smintcol = T2.intcol or 1=0
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 RIGHT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.floatcol = T1.smintcol or 1=0
+ORDER BY 3;
+
+-- 204 - UNION ALL a RIGHT join with an INNER join, with "or 1=0" predicate;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol or 1=0
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 INNER JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.smintcol = T1.smintcol or 1=0
+ORDER BY 2, 3;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. Nest joins;
+-- ---------------------------------------------------------------------;
+
+-- 301 - RIGHT join two LEFT joins, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+ORDER BY 7;
+
+-- 302 - LEFT join two RIGHT joins, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     RJ        RJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol or 1=0)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 RIGHT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+ORDER BY 3;
+
+-- 303 - LEFT join a RIGHT join and LEFT join, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+ORDER BY 4;
+
+-- 304 - LEFT join a RIGHT join and LEFT join - join on character column, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol or 1=0)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.charcol = T3.vcharcol or 1=0)
+     ON T1.charcol = T4.vcharcol or 1=0
+ORDER BY 2;
+
+-- 305 - LEFT join a RIGHT join and LEFT join on multiple columns, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col AND T4.charcol = T3.vcharcol or 1=0)
+     ON T1.intcol = T4.smintcol AND T1.charcol = T4.vcharcol or 1=0
+ORDER BY 7;
+
+-- ---------------------------------------------------------------------;
+-- test unit 4. Join a Nest join with a table;
+-- ---------------------------------------------------------------------;
+
+-- 401 - LEFT join a RIGHT join of two LEFT joins into another table, with "or 1=0" predicate;
+--                                 LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+ORDER BY 1;
+
+-- 402 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t1.smintcol, t5.charcol, t5.intcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+  WHERE t5.intcol < 15 or t1.intcol IS NULL or 1=0
+ORDER BY 1;
+
+-- 403 - RIGHT join a RIGHT join of two LEFT joins into another table, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+ORDER BY 1, 3;
+
+-- 404 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol < 15 or t1.intcol IS NULL or 1=0
+ORDER BY 1, 3;
+
+-- 405 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+ORDER BY 1, 3;
+
+-- 406 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol < 15 or t5.intcol IS NOT NULL or 1=0
+ORDER BY 1, 3;
+
+-- 407 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on character column, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol or 1=0
+ORDER BY 1, 4;
+
+-- 408 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol or 1=0
+  WHERE t1.intcol between 12 and 18
+ORDER BY 1;
+
+-- 409 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on multiple columns, with "or 1=0" predicate;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol or 1=0)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col or 1=0)
+     ON T1.intcol = T4.smintcol or 1=0
+     RIGHT JOIN
+       k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol AND T5.intcol = T1.smintcol AND
+       T5.intcol = T3.intcol or 1=0
+ORDER BY 1, 3;
+
+-- ---------------------------------------------------------------------;
+-- test unit 5. Join a table with a nest join;
+-- ---------------------------------------------------------------------;
+
+-- 501 - LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+--                          LJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+ORDER BY 1, 3;
+
+-- 502 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol IS NOT NULL
+ORDER BY 1;
+
+-- 503 - RIGHT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col  or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+ORDER BY 1;
+
+-- 504 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol IS NOT NULL and t1.intcol > 12
+ORDER BY 1;
+
+-- 505 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+ORDER BY 1;
+
+-- 506 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t1.smintcol, t1.dec62col
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.intcol = T1.smintcol or 1=0
+  WHERE t1.intcol <= 20
+ORDER BY 1;
+
+-- 507 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on character column, with "or 1=0" predicate;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol or 1=0)
+    ON T6.charcol = T1.vcharcol or 1=0
+ORDER BY 1;
+
+-- 508 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on multiple columns, with "or 1=0" predicate;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol or 1=0)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol or 1=0
+ORDER BY 1;
+
+-- 509 - Add WHERE clause to previous query, with "or 1=0" predicate;
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col or 1=0)
+       ON T1.intcol = T4.smintcol or 1=0
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol or 1=0)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol or 1=0
+  WHERE t1.vcharcol like 'T%'
+ORDER BY 1;
+
+-----------------------------------------------------------------------
+--      multiple joins (224)
+-----------------------------------------------------------------------
+
+-- ---------------------------------------------------------------------;
+-- test unit 6. Create Views needed for other testunit below;
+-- ---------------------------------------------------------------------;
+
+-- 602 - Create View on LEFT join, with "or 1=0" predicate;
+--                    View
+--                      |
+--                     LJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as t1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol or 1=0;
+
+-- 603 - Create View on 2 LEFT joins, with "or 1=0" predicate;
+--                         View
+--                          |
+--                          LJ
+--                       /      \
+--                     LJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol or 1=0)
+           LEFT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol or 1=0;
+
+-- 604 - Create View on RIGHT join, with "or 1=0" predicate;
+--                    View
+--                      |
+--                     RJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.RJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T2.charcol, T2.smintcol,
+           T1.intcol, T1.floatcol, T1.vcharcol
+      FROM K55ADMIN.manytypes_notnull as T1 RIGHT JOIN K55ADMIN.manytypes as T2
+        ON T2.smintcol = T1.intcol or 1=0;
+
+-- 605 - Create View on 2 RIGHT joins, with "or 1=0" predicate;
+--                         View
+--                          |
+--                          RJ
+--                       /      \
+--                     RJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55admin.RJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 RIGHT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol or 1=0)
+           RIGHT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol or 1=0;
+
+-- 606 - Create View on INNER join, with "or 1=0" predicate;
+--                    View
+--                      |
+--                     IJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.IJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as T1 INNER JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol or 1=0;
+
+-- 607 - Check data in the Views;
+SELECT * FROM K55ADMIN.LJview1 ORDER BY smintcol;
+SELECT * FROM K55ADMIN.LJview2 ORDER BY smintcol;
+SELECT * FROM K55ADMIN.RJview1 ORDER BY smintcol;
+SELECT * FROM K55ADMIN.RJview2 ORDER BY floatcol;
+SELECT * FROM K55ADMIN.IJview1 ORDER BY intcol;
+
+-- ---------------------------------------------------------------------;
+-- test unit 7. Joins on view;
+-- ---------------------------------------------------------------------;
+
+-- 701 - Select from LJ view and base table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+   FROM K55ADMIN.LJview2 T1, k55admin.manytypes_notnull T2
+   WHERE T1.intcol IS NOT NULL
+   ORDER BY 1, 2;
+
+-- 702 - LEFT JOIN a table with a LJ view, with "or 1=0" predicate;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol or 1=0
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3,4;
+
+-- 703 - RIGHT JOIN K55ADMIN.a table with a LJ view, with "or 1=0" predicate;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 RIGHT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol or 1=0
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+
+-- 704 - Apply Aggregate function on RJ view;
+SELECT intcol, COUNT(*)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 705 - Apply Aggregate function on LJ view;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.LJview2
+  GROUP BY intcol;
+
+-- 706 - RIGHT JOIN a LJ view with a table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+  FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+    ON T1.smintcol = T2.smintcol
+  WHERE T1.intcol IS NOT NULL
+  ORDER BY 1, 3;
+
+-- 707 - RIGHT join a RJ view with a table;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.RJview1 T2 RIGHT JOIN K55ADMIN.manytypes T1
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3, 4;
+
+-- 708 - LEFT join a table with a RJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 LEFT JOIN K55ADMIN.RJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+
+-- 709 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 710 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 711 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+
+-- 712 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) = 6
+  ORDER BY 1, 4;
+
+-- 713 - LEFT join a RJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+
+-- 714 - RIGHT join an IJ view with a RJ view  - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+
+-- 715 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+
+-- 716 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+
+-- 722 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 724 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 804 - LEFT JOIN a table with a LJ view, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol or 1=0
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+
+-- 805 - RIGHT JOIN a LJ view with a table, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol or 1=0
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+
+-- 806 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 807 - RIGHT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+
+-- 808 - RIGHT join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 809 - INNER join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 810 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 815 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 LEFT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) IN (4, 6, 8) )
+  ORDER BY 1;
+
+-- 817 - LEFT join 2 views - with 1-level correlated subquery, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  WHERE smintcol = (
+    SELECT T2.smintcol + 2
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol or 1=0
+      WHERE T2.floatcol = T1.floatcol - 2 )
+  ORDER BY 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 9. Joins tables used in HAVING clause;
+-- ---------------------------------------------------------------------;
+
+
+-- 904 - LEFT JOIN a table with a LJ view, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol or 1=0
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+
+-- 905 - RIGHT JOIN a LJ view with a table, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol or 1=0
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+
+-- 906 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 907 - RIGHT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+
+-- 908 - RIGHT join an IJ view with a RJ view -join on multiple columns, with "or 1=0" predicate;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 909 - INNER join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 910 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 915 - LEFT join 2 views - with 1-level correlated subquery, with "or 1=0" predicate;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol - 1
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol or 1=0
+      WHERE T2.floatcol = T1.smintcol + 1 )
+  ORDER BY 1;
+
+-- 919 - LEFT join 2 views - with 2-level correlated subquery, with "or 1=0" predicate;
+SELECT smintcol, dec62col, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, dec62col, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol 
+      FROM K55ADMIN.IJview1 T2 INNER JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol or 1=0
+      WHERE T3.charcol = T1.charcol AND
+            T2.floatcol = (
+              SELECT T4.smintcol
+                FROM K55ADMIN.LJview2 T4 LEFT JOIN K55ADMIN.RJview1 T5
+                       ON T4.dec62col = T5.floatcol or 1=0
+                WHERE T5.floatcol = T1.dec62col ) )
+  ORDER BY 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 10. Joins tables used in INSERT, UPDATE or DELETE subquery;
+-- ---------------------------------------------------------------------;
+
+-- 1001 - Create table needed for the test;
+CREATE TABLE k55admin.iud_tbl (c1 int,
+                      c2 char(15),
+                      c3 char(15));
+
+-- 1011 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1012 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1013 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1014 - RIGHT join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.charcol) > 6;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1015 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1016 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1017 - Clean up table iud_tbl;
+DELETE FROM K55ADMIN.iud_tbl;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c3;
+
+-- 1019 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+
+-- 1021 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+
+-- 1023 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 11. Joins tables used in INSERT, UPDATE or DELETE subquery. tables have ;
+-- ---------------------------------------------------------------------;
+
+-- 1102 - Create tables and populate data needed for the test;
+CREATE TABLE k55admin.iud_tbl_P (c1 float,
+                        c2 char(15),
+                        c3 char(15)) ;
+CREATE TABLE k55admin.MANYTYPES_P
+      (INTCOL        INTEGER,
+       SMINTCOL      SMALLINT,
+       DEC62COL      DECIMAL(6,2),
+       DEC72COL      DECIMAL(7,2),
+       FLOATCOL      FLOAT,
+       CHARCOL       CHAR(10),
+       LCHARCOL      CHAR(250),
+       VCHARCOL      VARCHAR(100)) ;
+CREATE TABLE k55admin.MTYPES_NOTNULL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+CREATE TABLE k55admin.MTYPES_CTRL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+
+INSERT INTO K55ADMIN.manytypes_P SELECT * from k55admin.manytypes;
+INSERT INTO K55ADMIN.mtypes_notnull_P SELECT * from k55admin.manytypes_notnull;
+INSERT INTO K55ADMIN.mtypes_ctrl_P SELECT * from k55admin.manytypes_ctrl;
+
+-- 1104- LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table, with "or 1=0" predicate;
+INSERT INTO K55ADMIN.iud_tbl_P
+  SELECT t1.floatcol, t1.charcol, t6.vcharcol
+    FROM K55ADMIN.mtypes_ctrl_P T6
+       LEFT JOIN
+        ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+              ON T1.intcol = T2.dec62col)
+         RIGHT JOIN
+           (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+                ON T4.smintcol = T3.dec62col or 1=0)
+         ON T1.intcol = T4.smintcol
+         LEFT JOIN
+          k55admin.mtypes_ctrl_P T5
+        ON T5.intcol = T1.smintcol)
+      ON T6.intcol = T1.smintcol
+    WHERE t1.intcol IS NOT NULL;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1106 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol or 1=0
+      WHERE t1.floatcol IS NOT NULL); 
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1108 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol or 1=0
+      WHERE t1.floatcol IS NOT NULL); 
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1116 - Clean up table iud_tbl_P;
+
+DELETE FROM K55ADMIN.iud_tbl_P;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c3;
+
+-- 1118 - LEFT join a RJ view with a LJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO k55admin.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1120 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1122 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1124 - RIGHT join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6 OR T2.charcol LIKE 'T%';
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1126 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1128 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE substr(T2.vcharcol, 1, 1) = 'T');
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1130 - Clean up table iud_tbl_P;
+
+DELETE FROM K55ADMIN.iud_tbl_P;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1132 - INNER join an IJ view with a RJ view - join on multiple columns, with "or 1=0" predicate;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE LENGTH(T1.vcharcol) >= 6;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1134 - UPDATE rows inserted in previous statement, with "or 1=0" predicate;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE T1.vcharcol LIKE 'T_e%');
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1136 - DELETE rows inserted in previous statement, with "or 1=0" predicate;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol or 1=0
+      WHERE T1.vcharcol NOT LIKE 'Tw%' OR substr(T2.vcharcol, 1, 1) = 'T');
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- some bugs found during development
+SELECT t1.floatcol
+  FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN
+      ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+            ON T1.floatcol = T2.dec62col or 1=0)
+       RIGHT JOIN
+         (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.floatcol = T4.smintcol
+       LEFT JOIN
+        k55admin.mtypes_ctrl_P T5
+      ON T5.floatcol = T1.smintcol)
+    ON T6.floatcol = T1.smintcol or 1=0
+WHERE t1.floatcol IS NOT NULL;
+
+SELECT *
+FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2 ON T1.floatcol = T2.dec62col or 1=0)
+                 RIGHT JOIN k55admin.mtypes_notnull_P T4 ON T1.floatcol = T4.smintcol)
+     ON T6.floatcol = T1.smintcol or 1=0;
+
+
+DROP VIEW K55ADMIN.LJview1;
+DROP VIEW K55ADMIN.LJview2;
+DROP VIEW K55ADMIN.RJview1;
+DROP VIEW K55admin.RJview2;
+DROP VIEW K55ADMIN.IJview1;
+DROP TABLE k55admin.iud_tbl;
+DROP TABLE k55admin.iud_tbl_P;
+DROP TABLE k55admin.MANYTYPES_P;
+DROP TABLE k55admin.MTYPES_NOTNULL_P;
+DROP TABLE k55admin.MTYPES_CTRL_P;
+
+-- coj211.clp
+
+
+--**********************************************************************
+--* complex join tests
+--**********************************************************************
+
+-- ---------------------------------------------------------------------;
+-- test unit 1. plain joins;
+-- multiple joins (219);
+-- ---------------------------------------------------------------------;
+
+-- 101 - Nest INNER join and RIGHT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3;
+
+-- 102 - Nest INNER join and LEFT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees INNER JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3;
+
+-- 103 - Nest LEFT join and RIGHT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees LEFT JOIN
+       (k55admin.old_offices RIGHT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3, 1;
+
+-- 104 - Nest RIGHT join and LEFT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees RIGHT JOIN
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+        ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+       ON k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 2;
+
+-- 105 - Nest COMMA join and LEFT join;
+SELECT emp_name, old_office, new_office
+  FROM K55ADMIN.employees,
+       (k55admin.old_offices LEFT JOIN K55ADMIN.new_offices
+           ON k55admin.old_offices.emp_id = k55admin.new_offices.emp_id)
+  WHERE k55admin.employees.emp_id = k55admin.new_offices.emp_id
+  ORDER BY 3;
+
+-- 106 - COMMA join 2 LEFT joins;
+SELECT T1.emp_id, T2.emp_id, T3.emp_id, T4.emp_id
+  FROM (K55ADMIN.old_offices T1 LEFT JOIN K55ADMIN.new_offices T2
+           ON T1.emp_id = T2.emp_id),
+       (k55admin.old_offices T3 LEFT JOIN K55ADMIN.new_offices T4
+           ON T3.emp_id = T4.emp_id)
+  WHERE T1.emp_id = T3.emp_id
+  ORDER BY 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 2. UNION of joins;
+-- ---------------------------------------------------------------------;
+
+-- 201 - UNION two LEFT joins;
+--                        UNION
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.dec62col, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+ORDER BY 2;
+
+-- 202 - Again, with extended ON clauses to join on multiple columns;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 LEFT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol
+UNION
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 LEFT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.floatcol = T1.intcol
+               AND T2.smintcol = T1.smintcol
+ORDER BY 1;
+
+-- 203 - UNION ALL two RIGHT joins;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col
+               AND T1.smintcol = T2.intcol
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 RIGHT JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.floatcol = T1.smintcol
+ORDER BY 3;
+
+-- 204 - UNION ALL a RIGHT join with an INNER join;
+SELECT T1.charcol, T1.intcol, T2.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes T1 RIGHT JOIN
+               k55admin.manytypes_notnull T2
+            ON T1.floatcol = T2.dec62col
+               AND T1.smintcol = T2.intcol
+UNION ALL
+SELECT T2.charcol, T2.intcol, T1.intcol, T2.floatcol
+          FROM K55ADMIN.manytypes_notnull T2 INNER JOIN
+               k55admin.manytypes T1
+            ON T2.smintcol = T1.dec62col
+               AND T2.smintcol = T1.intcol
+               AND T2.smintcol = T1.smintcol
+ORDER BY 2, 3;
+
+-- ---------------------------------------------------------------------;
+-- test unit 3. Nest joins;
+-- ---------------------------------------------------------------------;
+
+-- 301 - RIGHT join two LEFT joins;
+--                          RJ
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+ORDER BY 7;
+
+-- 302 - LEFT join two RIGHT joins;
+--                          LJ
+--                       /      \
+--                     RJ        RJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.floatcol)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 RIGHT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+ORDER BY 3;
+
+-- 303 - LEFT join a RIGHT join and LEFT join;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+ORDER BY 4;
+
+-- 304 - LEFT join a RIGHT join and LEFT join - join on character column;
+--                          LJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol)
+     LEFT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.charcol = T3.vcharcol)
+     ON T1.charcol = T4.vcharcol
+ORDER BY 2;
+
+-- 305 - LEFT join a RIGHT join and LEFT join on multiple columns;
+--                          RJ
+--                       /      \
+--                     RJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.charcol, t1.intcol, t2.smintcol,
+       t2.intcol, t2.smintcol, t3.dec62col, T4.floatcol
+  FROM (K55ADMIN.manytypes T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.floatcol = T3.dec62col AND T4.charcol = T3.vcharcol)
+     ON T1.intcol = T4.smintcol AND T1.charcol = T4.vcharcol
+ORDER BY 7;
+
+-- ---------------------------------------------------------------------;
+-- test unit 4. Join a Nest join with a table;
+-- ---------------------------------------------------------------------;
+
+-- 401 - LEFT join a RIGHT join of two LEFT joins into another table;
+--                                 LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+ORDER BY 1;
+
+-- 402 - Add WHERE clause to previous query;
+SELECT t1.intcol, t1.smintcol, t5.charcol, t5.intcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     LEFT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+  WHERE t5.intcol < 15 or t1.intcol IS NULL
+ORDER BY 1;
+
+-- 403 - RIGHT join a RIGHT join of two LEFT joins into another table;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+ORDER BY 1, 3;
+
+-- 404 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+  WHERE t1.intcol < 15 or t1.intcol IS NULL
+ORDER BY 1, 3;
+
+-- 405 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+ORDER BY 1, 3;
+
+-- 406 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.intcol = T1.smintcol
+  WHERE t1.intcol < 15 or t5.intcol IS NOT NULL
+ORDER BY 1, 3;
+
+-- 407 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on character column;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t1.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol
+ORDER BY 1, 4;
+
+-- 408 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t4.dec62col, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+      k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol
+  WHERE t1.intcol between 12 and 18
+ORDER BY 1;
+
+-- 409 - RIGHT join a RIGHT join of an INNER joins and a LEFT join into another table - join on multiple columns;
+--                                 RJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     IJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.charcol
+  FROM (K55ADMIN.manytypes T1 INNER JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col AND T1.charcol = T2.vcharcol)
+     RIGHT JOIN
+       (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+            ON T4.smintcol = T3.dec62col)
+     ON T1.intcol = T4.smintcol
+     RIGHT JOIN
+       k55admin.manytypes_ctrl T5
+    ON T5.charcol = T1.vcharcol AND T5.intcol = T1.smintcol AND
+       T5.intcol = T3.intcol
+ORDER BY 1, 3;
+
+-- ---------------------------------------------------------------------;
+-- test unit 5. Join a table with a nest join;
+-- ---------------------------------------------------------------------;
+
+-- 501 - LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+--                          LJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+ORDER BY 1, 3;
+
+-- 502 - Add WHERE clause to previous query;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     LEFT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol IS NOT NULL
+ORDER BY 1;
+
+-- 503 - RIGHT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col )
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+ORDER BY 1;
+
+-- 504 - Add WHERE clause to previous query;
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol IS NOT NULL and t1.intcol > 12
+ORDER BY 1;
+
+-- 505 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t5.smintcol, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+ORDER BY 1;
+
+-- 506 - Add WHERE clause to previous query;
+SELECT t1.intcol, t1.smintcol, t1.dec62col
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.intcol = T1.smintcol
+  WHERE t1.intcol <= 20
+ORDER BY 1;
+
+-- 507 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on character column;
+--                          IJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     INNER JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol)
+    ON T6.charcol = T1.vcharcol
+ORDER BY 1;
+
+-- 508 - INNER join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table - join on multiple columns;
+--                          RJ
+--                       /      \
+--                     T3          LJ
+--                              /      \
+--                          RJ          T3
+--                       /      \
+--                     LJ        LJ
+--                    /  \      /  \
+--                  T1    T2  T2    T1
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol
+ORDER BY 1;
+
+-- 509 - Add WHERE clause to previous query;
+SELECT t1.intcol, t3.smintcol, t5.dec62col, t6.charcol, t1.vcharcol, t5.charcol
+  FROM K55ADMIN.manytypes_ctrl T6
+     RIGHT JOIN
+      ((k55admin.manytypes T1 LEFT JOIN K55ADMIN.manytypes_notnull T2
+            ON T1.charcol = T2.vcharcol AND T1.intcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.manytypes_notnull T4 LEFT JOIN K55ADMIN.manytypes T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.intcol = T4.smintcol
+       LEFT JOIN
+        k55admin.manytypes_ctrl T5
+      ON T5.intcol = T1.smintcol AND T5.charcol = T1.vcharcol)
+    ON T6.charcol = T1.vcharcol AND T6.intcol = T3.smintcol AND 
+       T6.intcol = T5.intcol
+  WHERE t1.vcharcol like 'T%'
+ORDER BY 1;
+
+-----------------------------------------------------------------------
+--      multiple joins (224)
+-----------------------------------------------------------------------
+
+-- ---------------------------------------------------------------------;
+-- test unit 6. Create Views needed for other testunit below;
+-- ---------------------------------------------------------------------;
+
+-- 602 - Create View on LEFT join;
+--                    View
+--                      |
+--                     LJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as t1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol;
+
+-- 603 - Create View on 2 LEFT joins;
+--                         View
+--                          |
+--                          LJ
+--                       /      \
+--                     LJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.LJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 LEFT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol)
+           LEFT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol;
+
+-- 604 - Create View on RIGHT join;
+--                    View
+--                      |
+--                     RJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.RJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T2.charcol, T2.smintcol,
+           T1.intcol, T1.floatcol, T1.vcharcol
+      FROM K55ADMIN.manytypes_notnull as T1 RIGHT JOIN K55ADMIN.manytypes as T2
+        ON T2.smintcol = T1.intcol;
+
+-- 605 - Create View on 2 RIGHT joins;
+--                         View
+--                          |
+--                          RJ
+--                       /      \
+--                     RJ        T3
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55admin.RJview2
+  (charcol, smintcol, intcol, dec62col, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol, T2.intcol,
+           T3.dec62col, T3.floatcol, T2.vcharcol
+      FROM (K55ADMIN.manytypes as T1 RIGHT JOIN K55ADMIN.manytypes_notnull as T2
+         ON T1.smintcol = T2.intcol)
+           RIGHT JOIN
+             k55admin.manytypes_ctrl as T3
+           ON T1.smintcol = T3.intcol;
+
+-- 606 - Create View on INNER join;
+--                    View
+--                      |
+--                     IJ
+--                    /  \
+--                  T1    T2
+CREATE VIEW K55ADMIN.IJview1
+  (charcol, smintcol, intcol, floatcol, vcharcol) AS
+    SELECT T1.charcol, T1.smintcol,
+           T2.intcol, T2.floatcol, T2.vcharcol
+      FROM K55ADMIN.manytypes as T1 INNER JOIN K55ADMIN.manytypes_notnull as T2
+        ON T1.smintcol = T2.intcol;
+
+-- 607 - Check data in the Views;
+SELECT * FROM K55ADMIN.LJview1 ORDER BY smintcol;
+SELECT * FROM K55ADMIN.LJview2 ORDER BY smintcol;
+SELECT * FROM K55ADMIN.RJview1 ORDER BY smintcol;
+SELECT * FROM K55ADMIN.RJview2 ORDER BY floatcol;
+SELECT * FROM K55ADMIN.IJview1 ORDER BY intcol;
+
+-- ---------------------------------------------------------------------;
+-- test unit 7. Joins on view;
+-- ---------------------------------------------------------------------;
+
+-- 701 - Select from LJ view and base table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+   FROM K55ADMIN.LJview2 T1, k55admin.manytypes_notnull T2
+   WHERE T1.intcol IS NOT NULL
+   ORDER BY 1, 2;
+
+-- 702 - LEFT JOIN a table with a LJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3,4;
+
+-- 703 - RIGHT JOIN K55ADMIN.a table with a LJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 RIGHT JOIN K55ADMIN.LJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+
+-- 704 - Apply Aggregate function on RJ view;
+SELECT intcol, COUNT(*)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 705 - Apply Aggregate function on LJ view;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.LJview2
+  GROUP BY intcol;
+
+-- 706 - RIGHT JOIN a LJ view with a table;
+SELECT T1.smintcol, T2.smintcol, T1.intcol, T2.intcol
+  FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+    ON T1.smintcol = T2.smintcol
+  WHERE T1.intcol IS NOT NULL
+  ORDER BY 1, 3;
+
+-- 707 - RIGHT join a RJ view with a table;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.RJview1 T2 RIGHT JOIN K55ADMIN.manytypes T1
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15
+  ORDER BY 3, 4;
+
+-- 708 - LEFT join a table with a RJ view;
+SELECT T1.charcol, T2.charcol, T2.smintcol, T2.intcol
+  FROM K55ADMIN.manytypes_ctrl T1 LEFT JOIN K55ADMIN.RJview1 T2
+    ON T1.charcol = T2.charcol
+  WHERE T2.smintcol BETWEEN 5 AND 15 OR T2.smintcol IS NULL
+  ORDER BY 3, 4, 1;
+
+-- 709 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 710 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 711 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+
+-- 712 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) = 6
+  ORDER BY 1, 4;
+
+-- 713 - LEFT join a RJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+
+-- 714 - RIGHT join an IJ view with a RJ view  - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) > 6
+  ORDER BY 1, 4;
+
+-- 715 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+
+-- 716 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT T1.smintcol, T1.charcol, substr(T1.vcharcol,1,15),
+       T2.smintcol, T2.charcol, substr(T2.vcharcol,1,15)
+  FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+    ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+  WHERE LENGTH(T1.vcharcol) >= 6
+  ORDER BY 1, 4;
+
+-- 722 - Apply Aggregate function on RJ view with GROUP BY clause;
+SELECT intcol, COUNT(*),
+       MAX(intcol),
+       MIN(intcol),
+       SUM(intcol),
+       AVG(intcol)
+  FROM K55ADMIN.RJview1
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 724 - Apply Aggregate function on RJ view with WHERE clause;
+SELECT intcol, COUNT(*), COUNT(DISTINCT intcol)
+  FROM K55ADMIN.RJview1
+  WHERE (smintcol / 2) * 2 = smintcol
+  GROUP BY intcol
+  ORDER BY intcol;
+
+-- 804 - LEFT JOIN a table with a LJ view;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+
+-- 805 - RIGHT JOIN a LJ view with a table;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+
+-- 806 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 807 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+
+-- 808 - RIGHT join an IJ view with a RJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 809 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 810 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 815 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  WHERE smintcol = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 LEFT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) IN (4, 6, 8) )
+  ORDER BY 1;
+
+-- 817 - LEFT join 2 views - with 1-level correlated subquery;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  WHERE smintcol = (
+    SELECT T2.smintcol + 2
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol
+      WHERE T2.floatcol = T1.floatcol - 2 )
+  ORDER BY 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 9. Joins tables used in HAVING clause;
+-- ---------------------------------------------------------------------;
+
+
+-- 904 - LEFT JOIN a table with a LJ view;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.manytypes T1 LEFT JOIN K55ADMIN.LJview1 T2
+        ON T1.charcol = T2.charcol
+      WHERE T2.smintcol BETWEEN 5 AND 15)
+  ORDER BY 1;
+
+-- 905 - RIGHT JOIN a LJ view with a table;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol in (
+    SELECT T1.smintcol
+      FROM K55ADMIN.LJview2 T1 RIGHT JOIN K55ADMIN.manytypes_notnull T2
+        ON T1.smintcol = T2.smintcol
+      WHERE T1.intcol IS NOT NULL)
+  ORDER BY 1;
+
+-- 906 - LEFT join a RJ view with a LJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > SOME (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 907 - RIGHT join a RJ view with a LJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 RIGHT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) = 6)
+  ORDER BY 1;
+
+-- 908 - RIGHT join an IJ view with a RJ view -join on multiple columns;
+SELECT intcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY intcol, charcol
+  HAVING charcol in (
+    SELECT T1.charcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6)
+  ORDER BY 1;
+
+-- 909 - INNER join a RJ view with a LJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol < ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 INNER JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 910 - INNER join an IJ view with a RJ view - join on multiple columns;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl
+  GROUP BY smintcol, charcol
+  HAVING smintcol > ALL (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6)
+  ORDER BY 1;
+
+-- 915 - LEFT join 2 views - with 1-level correlated subquery;
+SELECT smintcol, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol - 1
+      FROM K55ADMIN.IJview1 T2 LEFT JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol
+      WHERE T2.floatcol = T1.smintcol + 1 )
+  ORDER BY 1;
+
+-- 919 - LEFT join 2 views - with 2-level correlated subquery;
+SELECT smintcol, dec62col, charcol FROM K55ADMIN.manytypes_ctrl T1
+  GROUP BY smintcol, dec62col, charcol
+  HAVING smintcol = (
+    SELECT T2.smintcol 
+      FROM K55ADMIN.IJview1 T2 INNER JOIN K55ADMIN.LJview2 T3
+             ON T2.smintcol = T3.floatcol AND T2.charcol = T3.charcol
+      WHERE T3.charcol = T1.charcol AND
+            T2.floatcol = (
+              SELECT T4.smintcol
+                FROM K55ADMIN.LJview2 T4 LEFT JOIN K55ADMIN.RJview1 T5
+                       ON T4.dec62col = T5.floatcol
+                WHERE T5.floatcol = T1.dec62col ) )
+  ORDER BY 1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 10. Joins tables used in INSERT, UPDATE or DELETE subquery;
+-- ---------------------------------------------------------------------;
+
+-- 1001 - Create table needed for the test;
+CREATE TABLE k55admin.iud_tbl (c1 int,
+                      c2 char(15),
+                      c3 char(15));
+
+-- 1011 - LEFT join a RJ view with a LJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1012 - UPDATE rows inserted in previous statement;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1013 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1014 - RIGHT join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.charcol) > 6;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1015 - UPDATE rows inserted in previous statement;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1016 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.intcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- 1017 - Clean up table iud_tbl;
+DELETE FROM K55ADMIN.iud_tbl;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c3;
+
+-- 1019 - INNER join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl
+    SELECT t1.intcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6;
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+
+-- 1021 - UPDATE rows inserted in previous statement;
+UPDATE k55admin.iud_tbl
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1, c2;
+
+-- 1023 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6);
+
+SELECT * FROM K55ADMIN.iud_tbl ORDER BY c1;
+
+-- ---------------------------------------------------------------------;
+-- test unit 11. Joins tables used in INSERT, UPDATE or DELETE subquery. tables have ;
+-- ---------------------------------------------------------------------;
+
+-- 1102 - Create tables and populate data needed for the test;
+CREATE TABLE k55admin.iud_tbl_P (c1 float,
+                        c2 char(15),
+                        c3 char(15)) ;
+CREATE TABLE k55admin.MANYTYPES_P
+      (INTCOL        INTEGER,
+       SMINTCOL      SMALLINT,
+       DEC62COL      DECIMAL(6,2),
+       DEC72COL      DECIMAL(7,2),
+       FLOATCOL      FLOAT,
+       CHARCOL       CHAR(10),
+       LCHARCOL      CHAR(250),
+       VCHARCOL      VARCHAR(100)) ;
+CREATE TABLE k55admin.MTYPES_NOTNULL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+CREATE TABLE k55admin.MTYPES_CTRL_P
+      (INTCOL        INTEGER       NOT NULL,
+       SMINTCOL      SMALLINT      NOT NULL,
+       DEC62COL      DECIMAL(6,2)  NOT NULL,
+       DEC72COL      DECIMAL(7,2)  NOT NULL,
+       FLOATCOL      FLOAT         NOT NULL,
+       CHARCOL       CHAR(15)      NOT NULL,
+       LCHARCOL      CHAR(250)     NOT NULL,
+       VCHARCOL      VARCHAR(100)  NOT NULL) ;
+
+INSERT INTO K55ADMIN.manytypes_P SELECT * from k55admin.manytypes;
+INSERT INTO K55ADMIN.mtypes_notnull_P SELECT * from k55admin.manytypes_notnull;
+INSERT INTO K55ADMIN.mtypes_ctrl_P SELECT * from k55admin.manytypes_ctrl;
+
+-- 1104- LEFT join a table with a LEFT join of a RIGHT join of two LEFT joins into that same table;
+INSERT INTO K55ADMIN.iud_tbl_P
+  SELECT t1.floatcol, t1.charcol, t6.vcharcol
+    FROM K55ADMIN.mtypes_ctrl_P T6
+       LEFT JOIN
+        ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+              ON T1.intcol = T2.dec62col)
+         RIGHT JOIN
+           (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+                ON T4.smintcol = T3.dec62col)
+         ON T1.intcol = T4.smintcol
+         LEFT JOIN
+          k55admin.mtypes_ctrl_P T5
+        ON T5.intcol = T1.smintcol)
+      ON T6.intcol = T1.smintcol
+    WHERE t1.intcol IS NOT NULL;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1106 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 > ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol
+      WHERE t1.floatcol IS NOT NULL); 
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1108 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT t1.floatcol
+      FROM K55ADMIN.mtypes_ctrl_P T6
+         LEFT JOIN
+          (k55admin.manytypes_P T1 
+           RIGHT JOIN
+           k55admin.mtypes_notnull_P T4
+           ON T1.floatcol = T4.smintcol
+           LEFT JOIN
+            k55admin.mtypes_ctrl_P T5
+          ON T5.floatcol = T1.smintcol)
+        ON T6.floatcol = T1.smintcol
+      WHERE t1.floatcol IS NOT NULL); 
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1116 - Clean up table iud_tbl_P;
+
+DELETE FROM K55ADMIN.iud_tbl_P;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c3;
+
+-- 1118 - LEFT join a RJ view with a LJ view - join on multiple columns;
+INSERT INTO k55admin.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1120 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1122 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 = ANY (
+    SELECT T1.smintcol
+      FROM K55ADMIN.RJview2 T1 LEFT JOIN K55ADMIN.LJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1124 - RIGHT join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6 OR T2.charcol LIKE 'T%';
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1126 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 < ANY (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) > 6);
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1128 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE c1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 RIGHT JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE substr(T2.vcharcol, 1, 1) = 'T');
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1130 - Clean up table iud_tbl_P;
+
+DELETE FROM K55ADMIN.iud_tbl_P;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1132 - INNER join an IJ view with a RJ view - join on multiple columns;
+INSERT INTO K55ADMIN.iud_tbl_P
+    SELECT t1.floatcol, t1.charcol, t2.vcharcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE LENGTH(T1.vcharcol) >= 6;
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1134 - UPDATE rows inserted in previous statement;
+UPDATE K55ADMIN.iud_tbl_P
+  SET c2 = NULL
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE T1.vcharcol LIKE 'T_e%');
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- 1136 - DELETE rows inserted in previous statement;
+DELETE FROM K55ADMIN.iud_tbl_P
+  WHERE C1 IN (
+    SELECT T1.floatcol
+      FROM K55ADMIN.IJview1 T1 INNER JOIN K55ADMIN.RJview2 T2
+        ON T1.smintcol = T2.smintcol AND T1.charcol = T2.charcol
+      WHERE T1.vcharcol NOT LIKE 'Tw%' OR substr(T2.vcharcol, 1, 1) = 'T');
+
+SELECT * FROM K55ADMIN.iud_tbl_P ORDER BY c1;
+
+-- some bugs found during development
+SELECT t1.floatcol
+  FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN
+      ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2
+            ON T1.floatcol = T2.dec62col)
+       RIGHT JOIN
+         (k55admin.mtypes_notnull_P T4 LEFT JOIN K55ADMIN.manytypes_P T3
+              ON T4.smintcol = T3.dec62col)
+       ON T1.floatcol = T4.smintcol
+       LEFT JOIN
+        k55admin.mtypes_ctrl_P T5
+      ON T5.floatcol = T1.smintcol)
+    ON T6.floatcol = T1.smintcol
+WHERE t1.floatcol IS NOT NULL;
+
+SELECT *
+FROM K55ADMIN.mtypes_ctrl_P T6
+     LEFT JOIN ((k55admin.manytypes_P T1 LEFT JOIN K55ADMIN.mtypes_notnull_P T2 ON T1.floatcol = T2.dec62col)
+                 RIGHT JOIN k55admin.mtypes_notnull_P T4 ON T1.floatcol = T4.smintcol)
+     ON T6.floatcol = T1.smintcol;
+
+
+DROP VIEW K55ADMIN.LJview1;
+DROP VIEW K55ADMIN.LJview2;
+DROP VIEW K55ADMIN.RJview1;
+DROP VIEW K55admin.RJview2;
+DROP VIEW K55ADMIN.IJview1;
+DROP TABLE k55admin.iud_tbl;
+DROP TABLE k55admin.iud_tbl_P;
+DROP TABLE k55admin.MANYTYPES;
+DROP TABLE k55admin.MANYTYPES_P;
+DROP TABLE k55admin.MANYTYPES_CTRL;
+DROP TABLE k55admin.MANYTYPES_NOTNULL;
+DROP TABLE k55admin.MTYPES_NOTNULL_P;
+DROP TABLE k55admin.MTYPES_CTRL_P;
+DROP TABLE k55admin.NEW_OFFICES;
+DROP TABLE k55admin.OLD_OFFICES;
+DROP TABLE k55admin.EMPLOYEES;
+
+
+-- OJqrw.pre
+
+create table a (a1 int not null primary key, a2 int, a3 int, a4 int, a5 int, a6 int);
+create table b (b1 int not null primary key, b2 int, b3 int, b4 int, b5 int, b6 int);
+create table c (c1 int not null, c2 int, c3 int not null, c4 int, c5 int, c6 int);
+create table d (d1 int not null, d2 int, d3 int not null, d4 int, d5 int, d6 int);
+create table e (e1 int not null primary key, e2 int, e3 int, e4 int, e5 int, e6 int);
+create table f (f1 int not null, f2 int, f3 int, f4 int, f5 int, f6 int);
+create table g (g1 int not null, g2 int, g3 int not null, g4 int, g5 int, g6 int);
+create table h (h1 int not null, h2 int, h3 int not null, h4 int, h5 int, h6 int);
+
+alter table c add primary key (c1,c3);
+alter table d add primary key (d1,d3);
+alter table h add primary key (h3,h1);
+create index f_id1 on f(f1);
+create index f_id2 on f(f2);
+create unique index f_uid1 on f(f4);
+create unique index f_uid2 on f(f5);
+create unique index g_uid1 on g(g2,g4);
+create unique index g_uid2 on g(g3,g1);
+
+insert into a values (1,1,3,6,NULL,2),(2,3,2,4,2,2),(3,4,2,NULL,NULL,NULL),
+                     (4,NULL,4,2,5,2),(5,2,3,5,7,4),(7,1,4,2,3,4),
+                     (8,8,8,8,8,8),(6,7,3,2,3,4);
+
+insert into b values (6,7,2,3,NULL,1),(4,5,9,6,3,2),(1,4,2,NULL,NULL,NULL),
+                     (5,NULL,2,2,5,2),(3,2,3,3,1,4),(7,3,3,3,3,3),(9,3,3,3,3,3);
+
+insert into c values (3,7,7,3,NULL,1),(8,3,9,1,3,2),(1,4,1,NULL,NULL,NULL),
+                     (3,NULL,1,2,4,2),(2,2,5,3,2,4),(1,7,2,3,1,1),(3,8,4,2,4,6);
+
+insert into d values (1,7,2,3,NULL,3),(2,3,9,1,1,2),(2,2,2,NULL,3,2),
+                     (1,NULL,3,2,2,1),(2,2,5,3,2,3),(2,5,6,3,7,2);
+
+insert into e values (1,1,3,6,NULL,2),(2,3,2,4,2,2),(3,4,2,NULL,NULL,NULL),
+                     (4,NULL,4,2,5,2),(5,2,3,5,7,4),(7,1,4,2,3,4),
+                     (8,8,8,8,8,8),(6,7,3,2,3,4);
+
+insert into f values (6,7,2,3,NULL,1),(4,5,9,6,3,2),(1,4,2,NULL,9,NULL),
+                     (5,NULL,2,2,5,2),(3,2,3,7,1,4),(7,3,3,0,0,3);
+
+insert into g values (3,7,7,3,NULL,1),(8,3,9,1,3,2),(1,4,1,NULL,NULL,NULL),
+                     (3,NULL,1,2,4,2),(2,2,5,3,2,4),(1,7,2,0,1,1),(3,8,4,2,4,6);
+
+insert into h values (1,7,2,3,NULL,3),(2,3,9,1,1,2),(2,2,2,NULL,3,2),
+                     (1,NULL,3,2,2,1),(2,2,5,3,2,3);
+
+
+-- OJqrw001.clp
+
+-- *****************************************************************;
+-- Group 1: LOJ linearization                                       ;
+-- *****************************************************************;
+
+-- -----------------------------------------------------------------;
+-- Case 1.1 : Right Deep tree to Left Deep tree                     ;
+--            Double Linearization                                  ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree  to  Left Deep Tree        
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ a3=b3              LJ  D  c1=d1
+--     / | \                 / | \
+--    B  LJ b2=c2          LJ  C  b2=c2
+--     / | \             / | \
+--    C  D  c1=d1       A  B  a3=b3
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from A left join (B left join (C left join D on c1=d1) on b2=c2) on a3=b3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.2 : Right Deep tree - No linearization for table A        ;
+--            because of b3=d3                                      ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ b3=d3       to      A  IJ b3=d3  (LJ to IJ by OJ2SEL)
+--     / | \                     / | \
+--    B  LJ b2=c2               D  IJ c1=d1  (LJ to IJ by OJ2SEL)
+--     / | \                     / | \
+--    C  D  c1=d1               B  C  b2=c2
+--
+
+-- we had a bug here...
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b2=c2) on b3=d3
+ order by 6,5,4,3,2,1;
+
+-- new query: linearization for table A
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b2=c2) on b3=a3
+ order by 6,5,4,3,2,1;
+
+
+-- -----------------------------------------------------------------;
+-- Case 1.3 : Right Deep tree - Partial linearization because of    ;
+--            b2=d2                                                 ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ b3=a3       to      /  |  b2=d2
+--     / | \                 LJ    LJ 
+--    B  LJ b2=d2          / | \ / | \
+--     / | \              A  B | C D  c1=d1
+--    C  D  c1=d1            b3=a3 
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b2=d2) on b3=a3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.4 : Right Deep tree - Partial linearization because of    ;
+--            no join predicate between A and B                     ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ 1=0         to      A  LJ 1=0
+--     / | \                     / | \
+--    B  LJ b2=c2              LJ  D  c1=d1
+--     / | \                 / | \   
+--    C  D  c1=d1           B  C  b2=c2
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from A left join (B left join (C left join D on c1=d1) on b2=c2) on 1=0
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.5 : Right Deep tree - Partial linearization because of    ;
+--            self-join only                                        ;
+-- -----------------------------------------------------------------;
+--   Right Deep Tree
+--
+--       LJ                        LJ
+--     / | \                     / | \
+--    A  LJ a1=a3       to      A  LJ a1=a3
+--     / | \                     / | \
+--    B  LJ b2=c2              LJ  D  c1=d1
+--     / | \                 / | \   
+--    C  D  c1=d1           B  C  b2=c2
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from A left join (B left join (C left join D on c1=d1) on b2=c2) on a1=a3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.6 : Single linearization                                  ;
+--            Balance Tree to Left Deep tree in one step            ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       to      Left Deep Tree
+--
+--         LJ                       LJ
+--       /  | \                    / | \
+--      /   |  a2=c2 ^ b3=c3     LJ  D  c1=d1
+--   LJ     LJ                 / | \ 
+-- / | \  / | \              LJ  C  a2=c2 ^ b3=c3    
+-- A B |  C D c1=d1        / | \   
+--   a1=b1                A  B  a1=b1
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on a2=c2 and b3=c3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.7 : No Linearization because the ON clause only has a join;
+--            between two tuple-producing tables                    ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       
+--
+--         LJ           
+--       /  | \         
+--      /   |  a2=b2    No transformation because of a2=b2
+--   LJ     LJ          
+-- / | \  / | \         
+-- A B |  C D c1=d1     
+--   a1=b1              
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on a2=b2
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.8 : No linearization because of missing join predicate    ;
+--            between A and C or B and C                            ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       
+--
+--         LJ           
+--       /  | \         
+--      /   |  1=0      No transformation because of no join between
+--   LJ     LJ          A and C or join between between B and C
+-- / | \  / | \         
+-- A B |  C D c1=d1     
+--   a1=b1              
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on 1=0
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.9 : No linearization because of d1=2                      ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       No linearization because of d1=2
+--
+--         LJ                        LJ
+--       /  | \                    /  | \
+--      /   |  c2=b2 ^ d1=2       /   |  c2=b2 ^ d1=2
+--   LJ     LJ                 LJ     IJ     LJ to IJ because of OJ2SEL
+-- / | \  / | \              / | \  / | \
+-- A B |  C D c1=d1          A B |  D C c1=d1
+--   a1=b1                     a1=b1
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on c2=b2 and d1=2
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.10: No linearization because of d1=d4                     ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       No linearization because of d1=d4
+--
+--         LJ                        LJ
+--       /  | \                    /  | \
+--      /   |  c2=b2 ^ d1=d4      /   |  c2=b2 ^ d1=d4
+--   LJ     LJ                 LJ     IJ     LJ to IJ because of OJ2SEL
+-- / | \  / | \              / | \  / | \
+-- A B |  C D c1=d1          A B |  C D c1=d1
+--   a1=b1                     a1=b1
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on c2=b2 and d1=d4
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.11: Same as case 1.10 except no d1=d4                     ;
+--            Linearization performed even with LJ                  ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       to      Left Deep Tree
+--
+--         LJ                       LJ
+--       /  | \                    / | \
+--      /   |  c2=b2             LJ  D  c1=d1
+--   LJ     LJ                 / | \ 
+-- / | \  / | \              LJ  C  c2=b2            
+-- A B |  C D c1=d1        / | \   
+--   a1=b1                A  B  a1=b1
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from (a left join b on a1=b1) left join (c left join d on c1=d1) on c2=b2
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.12: No linearization because of a3=d3                     ;
+-- -----------------------------------------------------------------;
+--   Balance Tree       No linearization because of a3=d3
+--
+--         LJ                        LJ
+--       /  | \                    /  | \
+--      /   |  c2=b2 ^ a3=d3      /   |  c2=b2 ^ a3=d3
+--   LJ     LJ                 LJ     IJ     LJ to IJ because of OJ2SEL
+-- / | \  / | \              / | \  / | \
+-- A B |  C D c1=d1          A B |  D C c1=d1
+--   a1=b1                     a1=b1
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from (A left join B on a1=b1) left join (C left join D on c1=d1) on c2=b2 and a3=d3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.13: Linearization with always true predicate              ;
+-- -----------------------------------------------------------------;
+--   Balance Tree      to       Left Deep Tree
+--
+--         LJ                       LJ
+--       /  | \                   / | \
+--      /   |  c2=b2 ^ 1=1      LJ  D  c1=d1
+--   LJ     LJ                / | \                                    
+-- / | \  / | \             LJ  C c2=b2 ^ 1=1
+-- A B |  C D c1=d1       / | \                  
+--   a1=b1                A B a1=b1
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from A left join B on a1=b1 left join (C left join d on c1=d1) on b2=c2 and 1=1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.14: No linearization with true predicate alone            ;
+-- -----------------------------------------------------------------;
+--   Balance Tree      
+--
+--         LJ          
+--       /  | \        
+--      /   |  1=1     
+--   LJ     LJ         
+-- / | \  / | \        
+-- A B |  C D c1=d1    
+--   a1=b1             
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from A left join B on a1=b1 left join (C left join d on c1=d1) on 1=1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.15: No linearization with non-colequiv class              ;
+-- -----------------------------------------------------------------;
+--   Balance Tree      
+--
+--         LJ          
+--       /  | \        
+--      /   |  b1>c1     
+--   LJ     LJ         
+-- / | \  / | \        
+-- A B |  C D c1=d1    
+--   a1=b1             
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from A left join B on a1=b1 left join (C left join d on c1=d1) on b1>c1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.16: Partial Left Deep tree becomes Left Left Deep tree    ;
+-- -----------------------------------------------------------------;
+--  Partial Left Deep Tree  to   Left Left Deep Tree
+--
+--       LJ                           LJ
+--     / | \                        /  | \
+--   A   LJ a3=b3                 LJ   D  c2=d2 & b3>0
+--     / | \                    / | \         
+--   LJ  D  c2=d2 & b3>0      LJ  C c1=b1
+-- / | \                    / | \                
+-- B C c1=b1               A  B a3=b3
+--
+
+select a1,b1,c1,c3,d1,d3 
+  from a left join ((B left join C on c1=b1) left join d on c2=d2 and b3>0) on a3=b3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.17: Complicated case                                      ;
+--            Cannot lefty linearize because of a3=c3               ;
+-- -----------------------------------------------------------------;
+--  Zig-Zag tree           to   Partial left Deep Tree
+--
+--         LJ                           LJ
+--       / | \                        /  | \
+--     A   LJ a3=c3                 LJ   E  d2=e2
+--       / | \                    / | \         
+--     LJ  E  d2=e2             LJ  D  c1=d1
+--   / | \                    / | \                    
+--  B  LJ b2=c2              A  IJ a3=c3    
+--   / | \                    / | \
+--  C  D  c1=d1              C  B  b2=c2
+--
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join (C left join D on c1=d1) on b2=c2) left join E on d2=e2) on a3=c3
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.18: Double linearization.                                 ;
+--            Same as case 1.15 but lefty linearize                 ;
+-- -----------------------------------------------------------------;
+--  Zig-Zag tree             to   left Deep Tree
+--
+--         LJ                           LJ
+--       / | \                        /  | \
+--     A   LJ a3=b3                 LJ   E  d2=e2
+--       / | \                    / | \         
+--     LJ  E  d2=e2             LJ  D  c1=d1
+--   / | \                    / | \                    
+--  B  LJ b2=c2             LJ  C  b2=c2    
+--   / | \                / | \    
+--  C  D  c1=d1          A  B  a3=b3    
+--
+
+select a1,b1,c1,c3,d1,d3,e1
+  from a left join ((b left join (c left join d on c1=d1) on b2=c2) left join e on d2=e2) on a3=b3
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.19: Linearization in two branches of LJ                   ;
+-- -----------------------------------------------------------------;
+--
+--                 LJ                             LJ -- d3=e3
+--               /  | \                        /    \
+--              /   LJ d3=e3                  /      LJ
+--             /  / | \        to            /      / | \
+--          LJ   E  LJ e2=f2              LJ       LJ G  f1=g1
+--        / | \   / | \                 / | \     / | \      
+--       /  |  \ F  G  f1=g1         LJ   D c1=d1 E F e2=f2     
+--    LJ    LJ b2=c2               / | \                 
+--  / | \ / | \                 LJ   C b2=c2               
+-- A  B | C D c1=d1           / | \                  
+--    a1=b1                  A  B a1=b1
+--
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from ((A left join B on a1=b1) left join (C left join D on c1=d1) on b2=c2)
+       left join
+       (e left join (f left join g on f1=g1) on e2=f2) on d3=e3
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.20: Linearization in two branches of inner join           ;
+-- -----------------------------------------------------------------;
+--
+--                 IJ                             IJ -- a1=d2
+--               /  | \                        /    \
+--              /   LJ a1=d2                  /      LJ
+--             /  / | \        to            /      / | \
+--          LJ   A  LJ a2=b2              LJ       LJ C  b1=c1
+--        / | \   / | \                 / | \     / | \      
+--       /  |  \ B  C  b1=c1         LJ   G f1=g1 A B a2=b2     
+--    LJ    LJ e2=f2               / | \                 
+--  / | \ / | \                 LJ   F e2=f2               
+-- D  E | F G f1=g1           / | \                  
+--    d1=e1                  D  E d1=e1
+--
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from (A left join (b left join c on b1=c1) on a2=b2) 
+       inner join 
+       ((D left join E on d1=e1) left join (F left join G on f1=g1) on e2=f2)
+       on a1=d2
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.21: Linearization in two branches of inner join           ;
+--            Inner join ON predicate a1=e1 has no effect on        ;
+--            linearization                                         ;
+-- -----------------------------------------------------------------;
+--
+--                 IJ                             IJ -- a1=e3
+--               /  | \                        /    \
+--              /   LJ a1=e3                  /      LJ
+--             /  / | \        to            /      / | \
+--          LJ   A  LJ a2=b2              LJ       LJ C  b1=c1
+--        / | \   / | \                 / | \     / | \      
+--       /  |  \ B  C  b1=c1         LJ   G f1=g1 A B a2=b2     
+--    LJ    LJ e2=f2               / | \                 
+--  / | \ / | \                 LJ   F e2=f2               
+-- D  E | F G f1=g1           / | \                  
+--    d1=e1                  D  E d1=e1
+--
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from (A left join (b left join c on b1=c1) on a2=b2) 
+       inner join 
+       ((D left join E on d1=e1) left join (F left join G on f1=g1) on e2=f2)
+       on a1=e3
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.22: Inner composite is a long left deep tree              ;
+--            Lefty linearized                                      ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join (b left join c on b1=c1 left join D on c2=d2 
+       left join E on d1=e1 left join F on f2=e2 left join G on f1=g1)
+       on a1=b2
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.23: Inner composite is a long left deep tree              ;
+--            Partially linearized because of a1=c3                 ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join (b left join c on b1=c1 left join D on c2=d2 
+       left join E on d1=e1 left join F on f2=e2 left join G on f1=g1)
+       on a1=c3
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.24: Inner composite is a long left deep tree              ;
+--            Partially linearized because of a1=d3                 ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join (b left join c on b1=c1 left join D on c2=d2 
+       left join E on d1=e1 left join F on f2=e2 left join G on f1=g1)
+       on a1=d3
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.25: Left join in inner composite                          ;
+--            A case for future extension because the LJ is         ;
+--            converted to LJ later                                 ;
+-- -----------------------------------------------------------------;
+--
+-- Maximum linearization:
+--
+--                 LJ                           LJ
+--               / | \                        / | \
+--              A  LJ a1=b3                 LJ  D c2=d2
+--               / | \        to          / | \        
+--             LJ  D c2=d2              LJ  C b1=c1          
+--           / | \                    / | \                
+--          B  C b1=c1               A  B a1=b3                
+--                                                       
+--  A <-- (B <-> C <-- D)         A <-- B <-- C <-- D    
+--  =====================  ==>    ===================
+--  Y      Y     Y     Y          Y     Y     Y     Y
+--  Y      Y     Y     N          Y     Y     Y     N
+--         N     Y     Y          Y     Y     N     N
+--         N     Y     N          Y     N     N     N
+--  Y      Y     N     N
+--  Y      N     N     N
+--                
+-- Current optimization:
+--                               
+--         LJ                  LJ                         LJ
+--       / | \               / | \                       / | \
+--      A  LJ a1=b3        LJ  D c2=d2                 LJ  D c2=d2
+--       / | \      to   / | \         later LJ      / | \       
+--     LJ  D c2=d2      A  LJ a1=b3    becomes LJ   A  LJ a1=b3
+--   / | \               / | \                       / | \
+--  B  C b1=c1          B  C b1=c1                  B  C b1=c1                
+--                                                     
+
+select a1,b1,c1,c3,d1,d3
+  from A left join (b left join c on b1=c1 left join D on c2=d2) on a1=b3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.26: Inner join in inner composite                         ;
+--            Partially linearizaed because of the inner            ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3
+  from A left join (B join C on b1=c1 left join D on c2=d2) on a1=b3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.27: Left join in inner composite null-producing side      ;
+--            A case for future extension because the LJ is         ;
+--            converted to LJ later                                 ;
+-- -----------------------------------------------------------------;
+--
+-- Maximum linearization:
+--
+--                 LJ                          LJ
+--               /  | \                      / | \
+--             A   LJ  a1=b3              LJ   E d1=e1
+--               /  | \       to        / | \             
+--              /   |  c2=d2          LJ  D c2=d2        
+--           LJ     LJ              / | \          
+--         / | \   / | \           LJ C b1=c1                
+--        B  C  | D  E d1=e1     / | \  
+--            b1=c1             A  B a1=b3
+--                                    
+--                                                       
+--  A <-- ((B <-- C) <-- (D <-> E))      A <-- B <-- C <-- D <-- E
+--  =============================  ==>  ==========================
+--  Y       Y     Y       Y     Y        Y     Y     Y     Y     Y
+--  Y       Y     Y       Y     N        Y     Y     Y     Y     N
+--  Y       Y     Y       N     N        Y     Y     Y     N     N
+--  Y       Y     N       N     N        Y     Y     N     N     N
+--  Y       N     N       N     N        Y     N     N     N     N  
+--                        N     Y
+--                
+-- Current optimization:
+--                               
+--                                       LJ                                 LJ
+--          LJ                          / | \                             / | \ 
+--        /  | \                      /   |  c2=d2                      /   |  c2=d2
+--      A   LJ a1=b3              LJ     LJ                         LJ     LJ
+--        /  | \       to       / | \  / | \      Later LJ        / | \  / | \     
+--       /  LJ c2=d2         LJ   C  | D E d1=e1  becomes LJ   LJ   C  | D E d1=e1  becomes LJ
+--    LJ   / | \           / | \    b1=c1                    / | \    b1=c1 
+--   / | \ D E d1=e1      A  B a1=b3                        A  B a1=b3                
+--  B  C  |                       
+--      b1=c1                     
+--                                    
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D left join E on d1=e1) on c2=d2) on a1=b3
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.28: Inner join in inner composite null-producing side     ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on a1=b3
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.29: No linearization because local predicate only         ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on b2=2
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.30: No linearization because local predicate only         ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on a1=1 and b2=2
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.31: Linearization with local predicate                    ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on a1=b1 and b2=2
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 1.32: No linearization because join is between the tables in;
+--            inner row-preserving side                             ;
+-- -----------------------------------------------------------------;
+
+select a1,b1,c1,c3,d1,d3,e1
+  from A left join ((B left join C on b1=c1) left join (D join E on d1=e1) on c2=d2) on b2=c2
+ order by 7,6,5,4,3,2,1;
+
+-- *****************************************************************;
+-- Group 2: Inner Join Reordering                                   ;
+-- *****************************************************************;
+
+-- -----------------------------------------------------------------;
+-- Case 2.1 : Simple case - Right branch has LJ                     ;
+--            Single unique key (a1)                                ;
+--            Reordered as ON predicate contains unique keypart     ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    A  LJ a1=b1              IJ  C  b2=c2
+--     / | \                 / | \
+--    B  C  b2=c2           B  A  a1=b1
+--
+
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=b1
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.2 : Simple case - Right branch has LJ                     ;
+--            Single unique key (a1) with local predicate           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    A  LJ a1=2               IJ  C  b2=c2
+--     / | \                 / | \
+--    B  C  b2=c2           B  A  a1=2
+--
+
+
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=2
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.3 : Simple case - right branch has LJ                     ;
+--            Single unique key (a1), ON clause has self-join only  ;
+--            No reordering because of self-join only               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree 
+--
+--       IJ          
+--     / | \         
+--    A  LJ a1=a3
+--     / | \         
+--    B  C  b2=c2    
+--
+
+
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=a3
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.4 : Simple case - Right branch has LJ                     ;
+--            Single unique key (a1)                                ;
+--            No reordering because of a1=c1                        ;
+--            OJ2SEL will convert the B LJ C to B IJ C              ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree 
+--
+--       IJ          
+--     / | \         
+--    A  LJ a1=c1    
+--     / | \         
+--    B  C  b2=c2    
+--
+
+
+select a1,b1,c1,c3
+  from A join (B left join C on b2=c2) on a1=c1
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.5 : Simple case - Right branch has LJ                     ;
+--            Composite unique key (d1,d3), ON clause has local prd ;
+--            Reordered as ON predicate contains all unique keyparts;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    D  LJ d1=1 & d3=b3       IJ  C  b2=c2
+--     / | \                 / | \
+--    B  C  b2=c2           B  D  d1=1 & d3=b3
+--
+
+
+select b1,c1,c3,d1,d3 
+  from D join (B left join C on b2=c2) on d1=1 and d3=b3
+ order by 5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.6 : Simple case - Right branch has LJ                     ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            No reordering because of ON clause does not have non- ;
+--            selLJoin predicates that contain all unique keyparts  ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                 
+--     / | \                
+--    D  LJ d1=b3 & d3=d2   
+--     / | \                
+--    B  C  b2=c2           
+--
+
+
+select b1,c1,c3,d1,d3 
+  from D join (B left join C on b2=c2) on d1=b3 and d3=d2
+ order by 5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.7 : Simple case - Right branch has LJ                     ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            Reordered because all unique keyparts are involved in ;
+--            non-selLJoin predicates                               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--   Right Deep Tree  to    Left Deep Tree
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    D  LJ d1=b3 & d1=d6      IJ  C  b2=c2
+--     / | \      & d3=b3    / | \
+--    B  C  b2=c2           B  D  d1=b3 & d1=d6 & d3=b3
+--
+
+
+select b1,c1,c3,d1,d3 
+  from D join (B left join C on b2=c2) on d1=b3 and d1=d6 and d3=b3
+ order by 5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.8 : Simple case - Left branch has LJ                      ;
+--            Single unique key (a1)                                ;
+--            Reordered as ON predicate contains unique keypart     ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                     LJ
+--     / | \                  / | \
+--    LJ A a1=b1   to       IJ  C  b2=c2
+--  / | \                 / | \
+-- B  C  b2=c2           B  A  a1=b1
+--
+
+
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=b1
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.9 : Simple case - Left branch has LJ                      ;
+--            Single unique key (a1) with local predicate           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                     LJ
+--     / | \                  / | \
+--    LJ A a1=2    to       IJ  C  b2=c2
+--  / | \                 / | \
+-- B  C  b2=c2           B  A  a1=2 
+--
+
+
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=2
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.10: Simple case - Left branch has LJ                      ;
+--            Single unique key (a1), ON clause has self-join only  ;
+--            No reordering because of self-join only               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ        
+--     / | \       
+--    LJ A a1=a3    
+--  / | \          
+-- B  C  b2=c2     
+--
+
+
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=a3
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.11: Simple case - Left branch has LJ                      ;
+--            Single unique key (a1)                                ;
+--            No reordering because of a1=c1                        ;
+--            OJ2SEL will convert the B LJ C to B IJ C              ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ        
+--     / | \       
+--    LJ A a1=c1    
+--  / | \          
+-- B  C  b2=c2     
+--
+
+
+select a1,b1,c1,c3
+  from B left join C on b2=c2 join A on a1=c1
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.12: Simple case - Left branch has LJ                      ;
+--            Composite unique key (d1,d3), ON clause has local prd ;
+--            Reordered as ON predicate contains all unique keyparts;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                        LJ
+--     / | \                     / | \
+--    LJ D d1=1 & d3=b3  to    IJ  C  b2=c2
+--  / | \                    / | \
+-- B  C  b2=c2              B  D  d1=1 & d3=b3
+--
+
+
+select b1,c1,c3,d1,d3 
+  from B left join C on b2=c2 join D on d1=1 and d3=b3
+ order by 5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.13: Simple case - Left branch has LJ                      ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            No reordering because of ON clause does not have non- ;
+--            selLJoin predicates that contain all unique keyparts  ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ               
+--     / | \              
+--    LJ D d1=b3 & d3=d2  
+--  / | \                 
+-- B  C  b2=c2            
+--
+
+
+select b1,c1,c3,d1,d3 
+  from B left join C on b2=c2 join D on d1=b3 and d3=d2
+ order by 5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.14: Simple case - Left branch has LJ                      ;
+--            Composite unique key (d1,d3), ON clause has self-join ;
+--            Reordered because all unique keyparts are involved in ;
+--            non-selLJoin predicates                               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                         LJ
+--     / | \                      / | \
+--    LJ D d1=b3 & d1=d6  to    IJ  C  b2=c2
+--  / | \        & d3=b3      / | \
+-- B  C  b2=c2               B  D  d1=b3 & d1=d6 & d3=b3
+--
+
+
+select b1,c1,c3,d1,d3 
+  from B left join C on b2=c2 join D on d1=b3 and d1=d6 and d3=b3
+ order by 5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.15: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of non-colequiv class           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1>b1     
+--     / | \          
+--    B  C  b2=c2     
+--
+
+
+select a1,b1,c1,c3 
+  from A join (B left join C on b2=c2) on a1>b1
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.16: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of OR predicates                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1=b1 or a1=3
+--     / | \          
+--    B  C  b2=c2     
+--
+
+
+select a1,b1,c1,c3 
+  from A join (B left join C on b2=c2) on a1=b1 or a1=3
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.17: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of c1=c2                        ;
+--            Later, OJ2SEL convert B LJ C to B IJ C                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1=b1 and c1=c2
+--     / | \          
+--    B  C  b3=c2     
+--
+
+
+select a1,b1,c1,c3 
+  from A join (B left join C on b3=c2) on a1=b1 and c1=c2
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.18: Simple case - Right branch has LJ                     ;
+--            Single unique key                                     ;
+--            No reordering because of b3=c3                        ;
+--            Later, OJ2SEL convert B LJ C to B IJ C                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ           
+--     / | \          
+--    A  LJ a1=b1 and b3=c3
+--     / | \          
+--    B  C  b3=c3     
+--
+
+
+select a1,b1,c1,c3 
+  from A join (B left join C on b3=c3) on a1=b1 and b3=c3
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.19: Double inner join reordering                          ;
+--            Simple case                                           ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                          LJ
+--     / | \                       / | \
+--    D  IJ d1=1 & d3=b3  to      IJ  C  b2=c2
+--     / | \                    / | \
+--    A  LJ a1=b1             IJ  A  a1=b1
+--     / | \                / | \
+--    B  C  b2=c2          B  D  d1=1 & d3=b3
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b2=c2) on a1=b1) on d1=1 and d3=b3
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.20: Double inner join reordering                          ;
+--            Upper IJ reference lower IJ column                    ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                          LJ
+--     / | \                       / | \
+--    D  IJ d1=a4 & d3=b3 to      IJ  C  b2=c2
+--     / | \                    / | \
+--    A  LJ a1=b1             IJ  A  a1=b1
+--     / | \                / | \
+--    B  C  b2=c2          B  D  d3=b3 & d1=a4
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b2=c2) on a1=b1) on d3=b3 and d1=a4
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.21: No reordering because the lower inner join            ;
+--            failed to reorder and upper inner join has d1=a1      ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ       
+--     / | \              
+--    D  IJ d1=a1 & d3=b2 
+--     / | \              
+--    A  LJ a3=b3         
+--     / | \              
+--    B  C  b1=c1         
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b1=c1) on a3=b3) on d3=b2 and d1=a1
+ order by 6,5,4,3,2,1;
+
+-- the following query (similar to above) should only return 5 rows, beetle 5055
+select a1,b1,c1,c3,d1,d3,a3,b3,b2 from D
+join (A join (B left join C on b1=c1) on a3=b3) on d3=b2 
+and d1=a1 order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.22: Upper inner reordered but not the lower inner         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--       IJ                                IJ
+--     / | \                             / | \
+--    D  IJ d1=1 & d3=b2   to           A  LJ a3=b3
+--     / | \                             / | \
+--    A  LJ a3=b3                      IJ  C  b1=c1
+--     / | \                         / | \
+--    B  C  b1=c1                   B  D  d1=1 & d3=b2
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from D join (A join (B left join C on b1=c1) on a3=b3) on d3=b2 and d1=1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.23: Left branch has LJ and IJ                             ;
+--            On predicates are d1=a1 & d3=a3                       ;
+--            Reordered D to join with A first                      ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--         IJ                             LJ
+--        / | \                        /  | \
+--      LJ  D d1=a1 & d3=a3 to      IJ    IJ a1=b1
+--     / | \                      / | \ / | \
+--    A  IJ a1=b1                A  D | B C  b2=c2 
+--     / | \                         d1=a1 
+--    B  C  b2=c2                  & d3=a3
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from D join (A left join (B join C on b2=c2) on a1=b1) on d3=a3 and d1=a1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.24: Left branch has LJ and IJ                             ;
+--            no inner join reordering because of d3=b3 where B     ;
+--            is not the leftmost table                             ;
+--            Later, OJ2SEL ccnverts A LJ comp to A IJ comp         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--         IJ               
+--        / | \             
+--      LJ  D d1=a2 & d3=b3 
+--     / | \                
+--    A  IJ a1=b1           
+--     / | \                
+--    B  C  b2=c2          
+--
+
+
+-- select a1,b1,c1,c3,d1,d3 
+--   from D join (A left join (B join C on b2=c2) on a1=b1) on d3=b3 and d1=a2
+--  order by 6,5,4,3,2,1;
+
+select a1,b1,c1,c3,d1,d3 
+  from D left join (A left join (B left join C on b2=c2) on a1=b1) on d3=b3 and d1=a2
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.25: Left branch has LJ and IJ                             ;
+--            Single inner join reordering                          ;
+--            Upper IJ reordered as e1 and c3 belongs to lower IJ   ;
+--            Later, OJ2SEL converts C LJ E to C IJ E               ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--              IJ                               LJ
+--            / | \                            / | \
+--          LJ  D d1=e1 & d3=c3   to         IJ  A  a1=b1
+--        / | \                            / | \
+--       IJ A a1=b1                      IJ  D d1=e1 & d3=c3
+--     / | \                           / | \
+--    B  LJ b2=c2                     B  LJ b2=c2
+--     / | \                           / | \
+--    C  E c1=e1                      C  E  c1=e1
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1,e3
+  from B join (C left join E on c1=e1) on b2=c2 left join A on a1=b1 join D on d1=e1 and d3=c3
+ order by 8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.26: Left branch has LJ and IJ - not optimum reordering    ;
+--            lower IJ reordered                                    ;
+--            upper IJ not reordered as lower IJ null-producing     ;
+--            side is E                                             ;
+--            Had the logic is top-down, the upper IJ would         ;
+--            reordered below upper LJ                              ;
+--            Also unfortunately, OJ2SEL failed to convert C LJ E   ;
+--            to C IJ E                                             ;
+--            The is a case where OJ demotion logic will help       ;
+--            achieving the best solution.                          ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--              IJ                               IJ
+--            / | \                            / | \
+--          LJ  D d3=e3 & d1=c1   to         LJ  D  d3=e3 & d1=c1
+--        / | \                            / | \
+--       IJ A a1=b1                      LJ  A a1=b1        
+--     / | \                           / | \
+--    B  LJ b1=c2                    IJ  E  c1=e1
+--     / | \                       / | \
+--    C  E c1=e1                  C  B  b1=c2
+--
+--   The best result should be:
+--
+--              LJ     
+--            / | \    
+--          IJ  A a1=b1
+--        / | \              
+--       IJ D d3=e3 & d1=c1  
+--     / | \                 
+--    B  IJ b1=c2            
+--     / | \                 
+--    C  E c1=e1             
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1,e3
+  from B join (C left join E on c1=e1) on b1=c2 left join A on a1=b1 join D on d3=e3 and d1=c1
+ order by 8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.27: Balance tree                                          ;
+--            No reordering                                         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ        
+--              / | \       
+--          LJ    LJ a1=b1
+--        / | \  / | \      
+--       A  C | B  D b2=d1
+--           a2=c1
+--
+
+
+select a1,b1,c1,c3,d1,d3
+  from (A left join C on a2=c1) join (B left join D on b2=d1) on a1=b1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.28: Right Deep tree - No reordering for now               ;
+--            Reordering will take place when OJ demotion is        ;
+--            available                                             ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                          1st linearization        2nd Linearization
+--
+--       LJ                     LJ                            LJ
+--     / | \                  / | \                         / | \
+--    A  LJ a1=c2     to     A  LJ a1=c2     to           LJ  D  c1=d1 
+--     / | \                  / | \                     / | \
+--    B  LJ b1=c2           LJ  D  c1=d1               A  LJ a1=c2 
+--     / | \               / | \                        / | \
+--    C  D  c1=d1         B  C  b1=c2                  B  C  b1=c2
+--  
+--   OJ2SEL
+--
+--         LJ
+--       / | \ 
+--     LJ  D  c1=d1 
+--   / | \
+--  A  IJ a1=c2 
+--   / | \
+--  B  C  b1=c2
+--
+
+
+select a1,b1,c1,c3,d1,d3 
+  from a left join (b left join (c left join d on c1=d1) on b1=c2) on a1=c2
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.29: Balance tree - one branch has IJ only                 ;
+--            No reordering                                         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ        
+--              / | \       
+--          IJ    LJ a1=b1
+--        / | \  / | \      
+--       A  C | B  D b2=d1
+--           a2=c1
+--
+
+
+select a1,b1,c1,c3,d1,d3
+  from (A join C on a2=c1) join (B left join D on b2=d1) on a1=b1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.30: 2 IJs                                                 ;
+--            Lower IJ not reordered because condition not satisfied;
+--            Upper IJ reordered in 2 steps                         ;
+--            1st step reordered to above lower IJ                  ;
+--            2nd step reordered pass above lower IJ                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ1                            LJ1        
+--              / | \                          / | \       
+--             A  LJ1 c1=a1                  IJ1 E  d1=e1
+--              / | \         1st step     / | \
+--            IJ2 E  d1=e1    ========>  IJ2 A  c1=a1
+--          / | \                      / | \             
+--         B  LJ2 b2=c1               B  LJ2 b2=c1
+--          / | \                      / | \  
+--         C  D  c1=d1                C  D  c1=d1
+--
+--  2nd step:
+--                LJ1        
+--              / | \       
+--            IJ2 E  d1=e1
+--          / | \
+--         B  LJ2 b2=c1
+--          / | \       
+--        IJ1 D  c1=d1  
+--      / | \           
+--     C  A  c1=a1
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1
+  from a join ((b join (c left join d on c1=d1) on b2=c1) left join e on d1=e1) on c1=a1
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.31: 2 IJs - same as 2,30 except LJ2 is left of IJ2        ;
+--            Lower IJ not reordered because condition not satisfied;
+--            Upper IJ reordered in 2 steps                         ;
+--            1st step reordered to above lower IJ                  ;
+--            2nd step reordered pass above lower IJ                ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--                IJ1                            LJ1        
+--              / | \                          / | \       
+--             A  LJ1 c1=a1                  IJ1 E  d1=e1
+--              / | \         1st step     / | \
+--            IJ2 E  d1=e1    ========>  IJ2 A  c1=a1
+--          / | \                      / | \             
+--       LJ2  B b2=c1               LJ2  B  b2=c1
+--      / | \                      / | \  
+--     C  D  c1=d1                C  D  c1=d1
+--
+--  2nd step:
+--                LJ1        
+--              / | \       
+--            IJ2 E  d1=e1
+--          / | \
+--       LJ2  B  b2=c1
+--      / | \       
+--   IJ1  D  c1=d1  
+--  / | \           
+-- C  A  c1=a1
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1
+  from a join (((c left join d on c1=d1) join b on b2=c1) left join e on d1=e1) on c1=a1
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.32: 3 IJs in a row - Only the top IJ reordered in 1 step  ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--               IJ1                     IJ2        
+--              / | \                   / | \       
+--             A IJ2 a1=d1             B IJ3 b1=c1
+--              / | \                   / | \
+--             B IJ3 b1=c1    ==>      C LJ1 c1=d1
+--              / | \                   / | \             
+--             C LJ1 c1=d1           IJ1  E  d1=e1
+--              / | \               / | \  
+--             D  E  d1=e1         D  A  a1=d1
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1
+  from a join (b join (c join (d left join e on d1=e1) on c1=d1) on b1=c1) on a1=d1
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.33: 3 IJs in a row - upper 2 IJs each reordered in 1 step ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--               IJ1                            IJ3        
+--              / | \                          / | \       
+--             A IJ2 a1=d1                    C LJ1 c1=d1
+--              / | \                          / | \
+--             B IJ3 b1=d1    ==>           IJ1  E  d1=e1
+--              / | \                      / | \             
+--             C LJ1 c1=d1              IJ2  A  a1=d1
+--              / | \                  / | \  
+--             D  E  d1=e1            D  B  b1=d1
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1
+  from a join (b join (c join (d left join e on d1=e1) on c1=d1) on b1=d1) on a1=d1
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.34: LJs under IJ                                          ;
+--            Reorder allowed above LJ                              ;
+--            Later OJ2SEL change LJ1 to IJ3 and LJ2 to LJ1         ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--               IJ1                            LJ1        
+--              / | \                          / | \
+--             A LJ1 a1=b1                  IJ1  F  e1=f1
+--              / | \                      / | \
+--           IJ2  F  e1=f1    ==>       IJ2  A  a1=b1
+--         / |  \                    /  |  \                    
+--     LJ1   LJ2 c1=d1           LJ1   LJ2 c1=d1               
+--    / | \ / | \               / | \ / | \                    
+--   B  C | D E  d1=e1         B  C | D E  d1=e1               
+--      b1=c1                     b1=c1
+--
+-- After OJ2SEL
+--                     LJ1        
+--                    / | \
+--                 IJ1  F  e1=f1
+--                / | \
+--             IJ2  A  a1=b1
+--          /  |  \                    
+--       IJ3   LJ2 c1=d1               
+--      / | \ / | \                    
+--     B  C | D E  d1=e1               
+--        b1=c1
+--
+--
+--  A --- (((B <-> C) --- (D <-> E)) <-- F)      A --- B --- C --- D <-- E <-- F
+--  =======================================      ===============================
+--  Y        Y     Y       Y     Y       Y       Y     Y     Y     Y     Y     Y
+--  Y        Y     Y       Y     Y       N   ==> Y     Y     Y     Y     Y     N
+--  Y        Y     Y       Y     N       N       Y     Y     Y     Y     N     N
+--           N     Y       Y     Y       Y
+--           N     Y       Y     Y       N
+--           N     Y       Y     N       N
+--           Y     N 
+--                         N     Y      
+--
+
+
+-- select a1,b1,c1,c3,d1,d3,e1,f4
+--   from a join (((b left join c on b1=c1) join (d left join e on d1=e1) on c1=d1) left join f on e1=f1) on a1=b1
+-- order by 8,7,6,5,4,3,2,1;
+
+select a1,b1,c1,c3,d1,d3,e1,f4
+  from a left join (((b left join c on b1=c1) left join (d left join e on d1=e1) on c1=d1) left join f on e1=f1) on a1=b1
+ order by 8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.35: LJs under IJ                                          ;
+--            Reordered                                             ;
+-- -----------------------------------------------------------------;
+--   Unique keys: A(A1), B(B1), C(C1,C3), D(D1,D3)
+--
+--              IJ1                             LJ1        
+--             / | \                          /  |  \
+--           LJ1 C a1=c1 and c3=1         IJ1    LJ2 b1=d1
+--         /  |  \                       / | \  / | \
+--      LJ1   LJ2  b1=d1     ==>       LJ1 C |  D E d1=e1
+--     / | \ / | \                    / | \ a1=c1 and c3=1
+--    A  B | D E  d1=e1              A  B | 
+--       a1=b1                          a1=b1
+--
+
+
+select a1,b1,c1,c3,d1,d3,e1
+  from ((A left join B on a1=b1) left join (D left join E on d1=e1) on b1=d1) join C on a1=c1 and c3=1
+ order by 7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.36: No reordering because of LJ                           ;
+-- -----------------------------------------------------------------;
+--
+--               IJ1         
+--              / | \        
+--             A LJ1 a1=b1   
+--              / | \        
+--             B  C  b1=c1   
+--
+
+
+select a1,b1,c1,c3
+  from a join (b left join c on b1=c1) on a1=b1
+ order by 4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.37: LJ under IJ - no reordering                           ;
+-- -----------------------------------------------------------------;
+--
+--              IJ1       
+--             / | \      
+--           A  LJ1 a1=b1 
+--             / | \      
+--           LJ1 D c1=d1  
+--          / | \ 
+--         B  C b1=c1
+--
+
+
+select a1,b1,c1,c3,d1,d3
+  from a join ((b left join c on b1=c1) left join d on c1=d1) on a1=b1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.38: LJ over IJ                                            ;
+--            Reordered OK                                          ;
+-- -----------------------------------------------------------------;
+--
+--              LJ1                  LJ1
+--             / | \                / | \
+--           IJ1 D  c1=d1         LJ1 D  c1=d1
+--          / | \          ===>  / | \
+--        LJ1 C a1=c1 & c3=0   IJ1 B a1=b1
+--       / | \                / | \
+--      A  B  a1=b1          A  C a1=c1 & c3=0
+--
+
+
+select a1,b1,c1,c3,d1,d3
+  from a left join b on a1=b1 join C on a1=c1 and c3=0 left join d on c1=d1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.39: Future extension                                      ;
+--            IJ1 cannot be reordered.  However, if linearization   ;
+--            first, then IJ1 can be reordered                      ;
+-- -----------------------------------------------------------------;
+--
+--            IJ1                     LJ2
+--           / | \       should      / | \
+--          A LJ1 a1=c1  be       LJ1  D  c1=d1
+--           / | \       ===>    / | \
+--          B LJ2 b1=c1       IJ1  B  a1=b1
+--           / | \           / | \
+--          C  D  c1=d1     A  C  a1=c1
+--
+
+
+select a1,b1,c1,c3,d1,d3
+  from A join (B left join (C left join D on c1=d1) on b1=c1) on a1=c1
+ order by 6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.40: Reordered with skip IJ                                ;
+-- -----------------------------------------------------------------;
+--
+--              IJ1                        IJ2             
+--             / | \                     /  |  \            
+--            A IJ2 a1=c1            IJ3    IJ4 b1=e1
+--            /  |  \       ===>    / | \  /  | \
+--        IJ3    IJ4 b1=e1         B LJ1| E   LJ2 e2=f1
+--       / | \  /  | \              / |\b2=c1 / | \
+--      B LJ1|  E  LJ2 e2=f1      IJ1 D |    F  G f1=g1 
+--       / |\b2=c1 / | \         / | \ c1=d1
+--      C  D |    F  G  f1=g1   C  A a1=c1
+--         c1=d1
+-- 
+
+
+-- select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+--  from A join ((B join (C left join D on c1=d1) on b2=c1) join
+--               (E join (F left join G on f1=g1) on e2=f1) on b1=e1) on a1=c1
+-- order by 10,9,8,7,6,5,4,3,2,1;
+
+select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+  from A left join ((B left join (C left join D on c1=d1) on b2=c1) left join
+               (E left join (F left join G on f1=g1) on e2=f1) on b1=e1) on a1=c1
+ order by 10,9,8,7,6,5,4,3,2,1;
+
+-- -----------------------------------------------------------------;
+-- Case 2.41: Opportunity missed                                    ;
+-- -----------------------------------------------------------------;
+--
+--              IJ1             
+--             / | \            
+--            A IJ2 a1=f1       
+--            /  |  \       IJ1 should be reordered to below LJ2
+--        IJ3    IJ4 b1=e1      
+--       / | \  /  | \          
+--      B LJ1|  E  LJ2 e2=f1    
+--       / |\b2=c1 / | \        
+--      C  D |    F  G  f1=g1   
+--         c1=d1
+-- 
+
+
+-- select a1,b1,c1,c3,d1,d3,e1,f4,g1,g3
+--  from A join ((B join (C left join D on c1=d1) on b2=c1) join
+--               (E join (F left join G on f1=g1) on e2=f1) on b1=e1) on a1=f1
+-- order by 10,9,8,7,6,5,4,3,2,1;
+
+drop table a;
+drop table b;
+drop table c;
+drop table d;
+drop table e;
+drop table f;
+drop table g;
+drop table h;
+
+-- ojel001.clp
+
+
+
+create table a (c1 int, c2 int, c3 int);
+create table b (c1 int, c2 int, c3 int);
+create table c (c1 int, c2 int, c3 int);
+create table d (c1 int, c2 int, c3 int);
+create table e (c1 int, c2 int, c3 int);
+create table f (c1 int, c2 int, c3 int);
+create table g (c1 int, c2 int, c3 int);
+create table h (c1 int, c2 int, c3 int);
+create table i (c1 int, c2 int, c3 int);
+create table j (c1 int, c2 int, c3 int);
+
+create table aa (c1 int, c2 int, c3 int);
+create table bb (c1 int, c2 int, c3 int);
+create table cc (c1 int, c2 int, c3 int);
+create table dd (c1 int, c2 int, c3 int);
+create table ee (c1 int, c2 int, c3 int);
+create table ff (c1 int, c2 int, c3 int);
+create table gg (c1 int, c2 int, c3 int);
+create table hh (c1 int, c2 int, c3 int);
+create table ii (c1 int, c2 int, c3 int);
+create table jj (c1 int, c2 int, c3 int);
+create table kk (c1 int, c2 int, c3 int);
+
+create table t1 (c1 int, c2 int, c3 int);
+create table t2 (c1 int, c2 int, c3 int);
+
+create view v1 (c1, c2, c3) as (select c1, c2, c3 from t1);
+create view v2 (c1, c2, c3) as (select c1, c2, c3
+                                from t2
+                                group by c1, c2, c3);
+
+create unique index aa_idx1 on aa (c1);
+create unique index bb_idx1 on bb (c1);
+create unique index cc_idx1 on cc (c2);
+create unique index dd_idx1 on dd (c3);
+create unique index ee_idx1 on ee (c1);
+create unique index ff_idx1 on ff (c2);
+create unique index gg_idx1 on gg (c3);
+create unique index jj_idx1 on jj (c1, c2);
+create unique index kk_idx1 on kk (c1, c2, c3);
+
+insert into a values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+insert into b values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into c values (1, 1, 1), (1, 2, 3), (2, 2, 2), (3, 3, 3);
+insert into d values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+insert into e values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into f values (1, 1, 1), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into g values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+insert into h values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into i values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into j values (1, 1, 1), (1, 2, 3), (2, 3, 4), (3, 4, 5);
+
+insert into aa values (1, 1, 1), (2, 3, 4), (5, 5, 5);
+insert into bb values (1, 2, 3), (2, 2, 2), (3, 3, 4), (5, 5, 5);
+insert into cc values (1, 1, 1), (1, 2, 3), (2, 3, 2), (3, 5, 3);
+insert into dd values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+insert into ee values (1, 2, 3), (2, 2, 2), (4, 3, 4), (5, 5, 5);
+insert into ff values (1, 1, 1), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into gg values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+insert into hh values (1, 1, 1), (1, 2, 3), (2, 3, 4), (5, 5, 5);
+insert into ii values (1, 2, 3), (2, 2, 2), (2, 3, 4), (5, 5, 5);
+insert into jj values (1, 1, 1), (1, 2, 3), (2, 2, 2), (3, 3, 3);
+insert into kk values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+
+insert into t1 values (1, 1, 1), (1, 2, 3), (2, 2, 2), (3, 3, 3);
+insert into t2 values (1, 1, 1), (1, 2, 3), (4, 4, 4);
+
+--
+--                         LJ
+--                        /  \
+--                       /    \
+--                      A      B
+--
+------------------------------------------------------------------------------
+
+select distinct a.* 
+from a left outer join b on a.c1 = b.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.02: A simple case with only one right join                        ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       /    \
+--                      A      B
+--
+------------------------------------------------------------------------------
+
+select distinct b.* 
+from a right outer join b on a.c1 = b.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.03.1: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   G
+--                      /  \
+--                     LJ   F
+--                    /  \
+--                   LJ   E
+--                  /  \
+--                 IJ   D
+--                /  \
+--               LJ   C
+--              /  \
+--             A    B
+--
+------------------------------------------------------------------------------
+
+select distinct a.* 
+from a left outer join b on a.c1 = b.c1 
+       inner join c on a.c2 = c.c2 
+       left outer join d on a.c3 = d.c3
+       left outer join e on a.c1 = e.c1
+       inner join f on a.c2 = f.c2
+       left outer join g on a.c3 = g.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.03.2: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   G
+--                      /  \
+--                     LJ   F
+--                    /  \
+--                   LJ   E
+--                  /  \
+--                 IJ   D
+--                /  \
+--               LJ   C
+--              /  \
+--             A    B
+--
+------------------------------------------------------------------------------
+
+select distinct e.* 
+from a left outer join b on a.c1 = b.c1 
+       inner join c on a.c2 = c.c2 
+       left outer join d on a.c3 = d.c3
+       left outer join e on a.c1 = e.c1
+       inner join f on a.c2 = f.c2
+       left outer join g on a.c3 = g.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.04.1: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       G   RJ     
+--                          /  \
+--                         F   RJ
+--                            /  \
+--                           E   IJ
+--                              /  \
+--                             D   IJ
+--                                /  \
+--                               C   RJ
+--                                  /  \
+--                                 B    A
+--
+------------------------------------------------------------------------------
+
+select distinct a.* 
+from g right outer join 
+     (f right outer join 
+      (e right outer join 
+       (d inner join 
+        (c inner join 
+         (b right outer join a on b.c3 = a.c3) 
+                                on c.c2 = a.c2) 
+                                 on d.c1 = a.c1) 
+                                  on e.c3 = a.c3) 
+                                   on f.c2 = a.c2) 
+                                    on g.c1 = a.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.04.2: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       G   RJ     
+--                          /  \
+--                         F   RJ
+--                            /  \
+--                           E   IJ
+--                              /  \
+--                             D   IJ
+--                                /  \
+--                               C   RJ
+--                                  /  \
+--                                 B    A
+--
+------------------------------------------------------------------------------
+
+select distinct f.* 
+from g right outer join 
+     (f right outer join 
+      (e right outer join 
+       (d inner join 
+        (c inner join 
+         (b right outer join a on b.c3 = a.c3) 
+                                on c.c2 = a.c2) 
+                                 on d.c1 = a.c1) 
+                                  on e.c3 = a.c3) 
+                                   on f.c2 = a.c2) 
+                                    on g.c1 = a.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.05.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      E    F 
+--
+------------------------------------------------------------------------------
+
+select distinct a.* 
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        (e left outer join f on e.c1 = f.c1) 
+                                              on d.c3 = e.c3) 
+                                               on a.c3 = e.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.05.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      E    F 
+--
+------------------------------------------------------------------------------
+
+select distinct e.* 
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        (e left outer join f on e.c1 = f.c1) 
+                                              on d.c3 = e.c3) 
+                                               on a.c3 = e.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.06.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      RJ   G 
+--                              /  \
+--                             E    F
+--
+------------------------------------------------------------------------------
+
+select distinct a.*
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        ((e right outer join f on e.c1 = f.c1) left outer join g on f.c1 = g.c1) 
+                                                                                  on d.c3 = f.c3) 
+                                                                                   on a.c3 = f.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.06.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ   C  D   LJ
+--                    /  \        /  \
+--                   A    B      RJ   G 
+--                              /  \
+--                             E    F
+--
+------------------------------------------------------------------------------
+
+select distinct f.*
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        ((e right outer join f on e.c1 = f.c1) left outer join g on f.c1 = g.c1) 
+                                                                                  on d.c3 = f.c3) 
+                                                                                   on a.c3 = f.c3;
+
+---- -------------------------------------------------------------------------;
+---- Case 1.07: A complex case with right joins, left joins and inner joins   ;
+---- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LJ      RJ
+--                      /  \    /  \
+--                     IJ   C  D   RJ
+--                    /  \        /  \
+--                   A    B      RJ   G 
+--                              /  \
+--                             E    F
+--
+------------------------------------------------------------------------------
+
+select distinct e.*
+from a inner join b on a.c1 = b.c1
+       left outer join c on a.c2 = c.c2 
+       left outer join (d right outer join 
+                        ((e right outer join f on e.c1 = f.c1) right outer join g on f.c1 = g.c1) 
+                                                                                   on d.c3 = f.c3) 
+                                                                                    on a.c3 = f.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.08: A simple view                                                 ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  V1(T1)
+--                    /  \
+--                   H    I
+--
+------------------------------------------------------------------------------
+
+select distinct h.*
+from h inner join i on h.c1 = i.c1
+       left outer join v1 on h.c1 = v1.c1 and h.c2 = v1.c2;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.9.1: No OJEL because of group-by view                            ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  V2(T2)
+--                    /  \
+--                   H    I
+--
+------------------------------------------------------------------------------
+
+select distinct h.*
+from h inner join i on h.c1 = i.c1
+       left outer join v2 on h.c1 = v2.c1 and h.c2 = v2.c2;
+
+-- -------------------------------------------------------------------------;
+-- Case 1.9.2: No OJEL because of hxp columns                              ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ   J
+--                    /  \
+--                   H    I
+--
+------------------------------------------------------------------------------
+
+select distinct h.c1, j.c2
+from h inner join i on h.c1 = i.c1
+       left outer join j on h.c1 = j.c1 and h.c2 = j.c2;
+
+-- =========================================================================;
+-- Group 2: OJEL - UNIQUE KEY (INDEX)                                       ;
+-- =========================================================================;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.01.1: A simple case with only one left join                       ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       /    \
+--                      AA    BB
+--
+------------------------------------------------------------------------------
+
+select aa.* 
+from aa left outer join bb on aa.c1 = bb.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.01.2: A simple case with only one right join                      ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       /    \
+--                      AA    BB
+--
+------------------------------------------------------------------------------
+
+select bb.* 
+from aa right outer join bb on aa.c1 = bb.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.02.1: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   GG
+--                      /  \
+--                     LJ   FF
+--                    /  \
+--                   LJ   EE
+--                  /  \
+--                 IJ   DD
+--                /  \
+--               LJ   CC
+--              /  \
+--             AA   BB
+--
+------------------------------------------------------------------------------
+
+select aa.* 
+from aa left outer join bb on aa.c1 = bb.c1 
+        inner join cc on aa.c2 = cc.c2 
+        left outer join dd on aa.c3 = dd.c3
+        left outer join ee on aa.c1 = ee.c1
+        inner join ff on aa.c2 = ff.c2
+        left outer join gg on aa.c3 = gg.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.02.2: A complex case with left joins and inner joins              ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       IJ   GG
+--                      /  \
+--                     LJ   FF
+--                    /  \
+--                   LJ   EE
+--                  /  \
+--                 IJ   DD
+--                /  \
+--               LJ   CC
+--              /  \
+--             AA   BB
+--
+------------------------------------------------------------------------------
+
+select ee.* 
+from aa left outer join bb on aa.c1 = bb.c1 
+        inner join cc on aa.c2 = cc.c2 
+        left outer join dd on aa.c3 = dd.c3
+        left outer join ee on aa.c1 = ee.c1
+        inner join ff on aa.c2 = ff.c2
+        left outer join gg on aa.c3 = gg.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.03.1: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       GG  RJ     
+--                          /  \
+--                         FF  RJ
+--                            /  \
+--                           EE  IJ
+--                              /  \
+--                             DD  IJ
+--                                /  \
+--                               CC  RJ
+--                                  /  \
+--                                 BB   AA
+--
+------------------------------------------------------------------------------
+
+select aa.* 
+from gg right outer join 
+     (ff right outer join 
+      (ee right outer join 
+       (dd inner join 
+        (cc inner join 
+         (bb right outer join aa on bb.c1 = aa.c1)
+                                  on cc.c2 = aa.c2)
+                                   on dd.c3 = aa.c3)
+                                    on ee.c1 = aa.c1)
+                                     on ff.c2 = aa.c2)
+                                      on gg.c3 = aa.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.03.2: A complex case with right joins and inner joins             ;
+-- -------------------------------------------------------------------------;
+--
+--                         RJ
+--                        /  \
+--                       GG  RJ     
+--                          /  \
+--                         FF  RJ
+--                            /  \
+--                           EE  IJ
+--                              /  \
+--                             DD  IJ
+--                                /  \
+--                               CC  RJ
+--                                  /  \
+--                                 BB   AA
+--
+------------------------------------------------------------------------------
+
+select ff.* 
+from gg right outer join 
+     (ff right outer join 
+      (ee right outer join 
+       (dd inner join 
+        (cc inner join 
+         (bb right outer join aa on bb.c1 = aa.c1)
+                                  on cc.c2 = aa.c2)
+                                   on dd.c3 = aa.c3)
+                                    on ee.c1 = aa.c1)
+                                     on ff.c2 = aa.c2)
+                                      on gg.c3 = aa.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.04.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  LJ
+--                    /  \        /  \
+--                   AA  BB      EE  FF 
+--
+------------------------------------------------------------------------------
+
+select aa.* 
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        (ee left outer join ff on ee.c2 = ff.c2) 
+                                                on dd.c3 = ee.c3) 
+                                                 on aa.c1 = ee.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.04.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  LJ
+--                    /  \        /  \
+--                   AA  BB      EE  FF 
+--
+------------------------------------------------------------------------------
+
+select ee.* 
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        (ee left outer join ff on ee.c2 = ff.c2) 
+                                                on dd.c3 = ee.c3) 
+                                                 on aa.c1 = ee.c1;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.05.1: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD   LJ
+--                    /  \        /  \
+--                   AA  BB      RJ  GG 
+--                              /  \
+--                             EE  FF
+--
+------------------------------------------------------------------------------
+
+select aa.*
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        ((ee right outer join ff on ee.c1 = ff.c1) left outer join gg on ff.c3 = gg.c3) 
+                                                                                       on dd.c3 = ff.c3) 
+                                                                                        on aa.c2 = ff.c2;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.05.2: A complex case with right joins, left joins and inner joins ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LF      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  LJ
+--                    /  \        /  \
+--                   AA  BB      RJ  GG 
+--                              /  \
+--                             EE  FF
+--
+------------------------------------------------------------------------------
+
+select ff.*
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        ((ee right outer join ff on ee.c1 = ff.c1) left outer join gg on ff.c3 = gg.c3) 
+                                                                                       on dd.c3 = ff.c3) 
+                                                                                        on aa.c2 = ff.c2;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.06: A complex case with right joins, left joins and inner joins   ;
+-- -------------------------------------------------------------------------;
+--
+--                           LJ
+--                         /    \
+--                       LJ      RJ
+--                      /  \    /  \
+--                     IJ  CC  DD  RJ
+--                    /  \        /  \
+--                   AA  BB      RJ  GG 
+--                              /  \
+--                             EE  FF
+--
+------------------------------------------------------------------------------
+
+select ee.*
+from aa inner join bb on aa.c1 = bb.c1
+        left outer join cc on aa.c2 = cc.c2 
+        left outer join (dd right outer join 
+                        ((ee right outer join ff on ee.c2 = ff.c2) right outer join gg on ff.c3 = gg.c3) 
+                                                                                        on dd.c3 = ff.c3) 
+                                                                                         on aa.c2 = ff.c2;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.07.1: A composite unique index                                    ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and hh.c2 = jj.c2
+        left outer join kk on hh.c1 = kk.c1 and hh.c2 = kk.c2 and kk.c3 = 5;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.07.2: A composite unique index                                    ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on jj.c1 = 0 and jj.c2 is null
+        left outer join kk on hh.c1 = kk.c1 and kk.c2 is null and kk.c3 = 5;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.07.3: A composite unique index                                    ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on jj.c1 = 0
+        left outer join kk on hh.c1 = kk.c1 and hh.c2 = kk.c2 and kk.c3 = 5;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.08.1: No OJEL because of wrong types of ON predicates             ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on jj.c1 = 0 and jj.c2 is not null
+        left outer join kk on hh.c1 = kk.c1 and hh.c2 = kk.c2 and kk.c3 <> 5;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.08.2: No OJEL because of wrong types of ON predicates             ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and jj.c2 is not null
+        left outer join kk on hh.c1 = kk.c1 and kk.c3 <= 5;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.08.3: No OJEL because of wrong types of ON predicates             ;
+-- -------------------------------------------------------------------------;
+--
+--                         LJ
+--                        /  \
+--                       LJ   KK
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and jj.c2 is not null
+        left outer join kk on hh.c1 = kk.c1 and kk.c2 = kk.c3;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.08.4: No OJEL because of view                                     ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  V1
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select hh.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join v1 on hh.c1 = v1.c1 and hh.c2 = v1.c2;
+
+-- -------------------------------------------------------------------------;
+-- Case 2.08.5: No OJEL because of hxp columns                              ;
+-- -------------------------------------------------------------------------;
+--
+--                       LJ
+--                      /  \
+--                     IJ  JJ
+--                    /  \
+--                   HH  II
+--
+------------------------------------------------------------------------------
+
+select jj.*
+from hh inner join ii on hh.c1 = ii.c1
+        left outer join jj on hh.c1 = jj.c1 and hh.c2 = jj.c2;
+
+drop table a;
+drop table b;
+drop table c;
+drop table d;
+drop table e;
+drop table f;
+drop table g;
+drop table h;
+drop table i;
+drop table j;
+
+drop table aa;
+drop table bb;
+drop table cc;
+drop table dd;
+drop table ee;
+drop table ff;
+drop table gg;
+drop table hh;
+drop table ii;
+drop table jj;
+drop table kk;
+
+drop view v1;
+drop view v2;
+
+drop table t1;
+drop table t2;
+
+DROP TABLE K55ADMIN.PARTS;
+DROP TABLE K55ADMIN.PARTS_T;
+DROP TABLE K55ADMIN.PARTS_NOTNULL;
+DROP TABLE K55ADMIN.PARTS_ALLNULL;
+DROP TABLE K55ADMIN.PARTS_EMPTY;
+DROP TABLE K55ADMIN.PARTS_EMPTY_NN;
+DROP TABLE K55ADMIN.PRODUCTS;
+DROP TABLE K55ADMIN.PRODUCTS_T;
+DROP TABLE K55ADMIN.PRODUCTS_NOTNULL;
+DROP TABLE K55ADMIN.PRODUCTS_ALLNULL;
+DROP TABLE K55ADMIN.PRODUCTS_EMPTY;
+DROP TABLE K55ADMIN.PRODUCTS_EMPTY_NN;
+DROP TABLE K55ADMIN.S90;
+DROP TABLE K55ADMIN.S91;
+DROP TABLE K55ADMIN.S92;
+DROP SCHEMA K55ADMIN RESTRICT;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,142 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSetMetaData;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.sql.SQLException;
+import java.sql.Types;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+import java.io.*;
+import java.sql.PreparedStatement;
+
+/**
+ * Test of strings longer than 64K. Need to test it using Clob because long varchars don't accept data longer than 32700.
+ */
+
+
+public class longStringColumn { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static PreparedStatement psSet;
+	public static PreparedStatement psGet;
+
+    public static void main(String[] args) {
+
+		System.out.println("Test longStringColumn starting");
+
+		String longText;
+		StringBuffer buff = new StringBuffer("... ");
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			Connection conn = ij.startJBMS();
+
+			Statement st2 = conn.createStatement();
+			st2.execute("CREATE TABLE TEST(id bigint, body clob(65K))");
+			psSet = conn.prepareStatement("insert into test values(?,?)");
+			psGet = conn.prepareStatement("select body from test where id=?");
+
+			for (long i = 0; i < 65560; i++) {
+
+				if (i % 10 == 0)
+					buff.append(" ");
+				else
+					buff.append("x");
+
+				// Show something is happening
+				if (i % 10000 == 0)
+					System.out.println("... " + i );
+
+				// only test after buffer length reaches 65500
+				if (buff.length() > 65525) {
+
+					System.out.println("i = " + i + ", testing length: " + buff.length());
+
+					longText = buff.toString();
+					// set the text
+					setBody(i, longText);
+
+					// now read the text
+					String res = getBody(i);
+					if (!res.equals(longText)) {
+						System.out.println("FAIL -- string fetched is incorrect, length is "
+							+ buff.length() + ", expecting string: " + longText
+							+ ", instead got the following: " + res);
+						break;
+					}
+				}
+			}
+
+			conn.close();
+
+		} catch (SQLException e) {
+			dumpSQLExceptions(e);
+		} catch (Throwable e) {
+			System.out.println("FAIL -- unexpected exception:" + e.toString());
+		}
+
+		System.out.println("Test longStringColumn finished");
+
+    }
+
+	private static void setBody(long key, String body) {
+
+		try {
+			psSet.setLong(1, key);
+			psSet.setString(2, body);
+			psSet.executeUpdate();
+
+		} catch (SQLException ex) {
+			ex.printStackTrace();
+
+			System.out.println("FAIL -- unexpected exception");
+			System.exit(-1);
+		}
+	}
+
+    private static String getBody(long key) {
+
+        String result="NO RESULT";
+
+        try {
+			psGet.setLong(1, key);
+			ResultSet rs = psGet.executeQuery();
+
+			if (rs.next())
+				result = rs.getString(1);
+
+		} catch (SQLException ex) {
+              ex.printStackTrace();
+        }
+
+        return result;
+    }
+
+	static private void dumpSQLExceptions (SQLException se) {
+		System.out.println("FAIL -- unexpected exception: " + se.toString());
+		while (se != null) {
+			System.out.print("SQLSTATE("+se.getSQLState()+"):");
+			se = se.getNextException();
+		}
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/longStringColumn_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.language.statementCacheSize=300
+derby.storage.pageReservedSpace=20
+derby.storage.pageSize=16384

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,22 @@
+
+autocommit off;
+
+create table tab1 (c1 int, c2 varchar(20000));
+create table tab2 (c1 int, c2 varchar(20000));
+create table tab3 (c1 int, c2 varchar(2000));
+create table tab4 (c1 int, c2 varchar(2000));
+create procedure INSERTDATA() language java parameter style java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.maxMemPerTabTest';
+call INSERTDATA();
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2500;
+
+-- should use nested loop join due to maxMemoryPerTable property setting
+select * from tab1, tab2 where tab1.c2 = tab2.c2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should use hash join, maxMemoryPerTable property value is big enough
+select * from tab3, tab4 where tab3.c2 = tab4.c2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+rollback;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/maxMemPerTab_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+derby.language.maxMemoryPerTable=100

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/miscerrors.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/miscerrors.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,30 @@
+--
+-- this test is for miscellaneous errors
+--
+
+-- lexical error
+select @#^%*&! from swearwords;
+
+--
+-- try to create duplicate table
+--
+
+
+create table a (one int);
+
+create table a (one int, two int);
+
+create table a (one int);
+
+drop table a ;
+
+create table a (one int, two int, three int);
+
+insert into a values (1,2,3);
+
+select * from a;
+
+drop table a;
+
+-- set isolation to repeatable read
+set isolation serializable;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/modifyColumn.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/modifyColumn.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,93 @@
+
+-- Testing changing the length of a column.
+-- Also testing the new syntax for generated column spec and identity attribute
+
+create table alltypes (i int, tn int, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				nc char(10), nvc varchar(10),
+				d double precision, r real, f float,
+				dt date, t time, ts timestamp,
+				b char(2) for bit data, bv varchar(2) for bit data, lbv long varchar for bit data,
+				dc decimal(5,2), n numeric(8,4), o bigint);
+
+-- lets start with negative tests first.
+
+alter table alltypes alter c set data type char(20);
+alter table alltypes alter b set data type char(4) for bit data;
+alter table alltypes alter nc set data type char(20);
+alter table alltypes alter dc set data type decimal (8,2);
+alter table alltypes alter n set data type numeric (12,8);
+alter table alltypes alter c set data type varchar(10);
+alter table alltypes alter b set data type varchar(2) for bit data;
+alter table alltypes alter dc set data type numeric(8,2);
+alter table alltypes alter tn set data type int;
+
+alter table alltypes alter v set data type varchar(1);
+alter table alltypes alter v set data type varchar(49);
+alter table alltypes alter bv set data type varchar(1) for bit data;
+alter table alltypes alter bv set data type varchar(2) for bit data;
+alter table alltypes alter nvc set data type varchar(0);
+alter table alltypes alter nvc set data type varchar(9);
+
+drop table alltypes;
+
+create table t0 (i int not null, v varchar(1) not null, constraint pk primary key(v,i));
+-- this should work. primary key constraint has no referencing fkey
+-- constraints.
+alter table t0 alter v set data type varchar(2);
+create table t1 (i int, v varchar(2), constraint fk foreign key  (v,i) references t0(v,i));
+alter table t0 alter v set data type varchar(3);
+-- should fail; can't muck around with fkey constraints.
+alter table t1 alter v set data type varchar(3);
+
+drop table t1;
+drop table t0;
+
+-- do the same thing over again with a unique key constraint this time.
+create table t0 (i int not null, v varchar(1) not null, constraint  uq unique(v,i));
+-- this should work. unique constraint has no referencing fkey
+-- constraints.
+alter table t0 alter v set data type varchar(2);
+create table t1 (i int, v varchar(2), constraint fk foreign key  (v,i) references t0(v,i));
+-- this should fail-- someone is referencing me.
+alter table t0 alter v set data type varchar(3);
+drop table t1;
+drop table t0;
+--
+-- test that we can't alter a column with an autoincrement default to nullable
+create table t1(a int generated always as identity (start with 1, increment by 1));
+insert into t1 values(DEFAULT);
+select * from t1;
+-- this should fail
+alter table t1 modify a null;
+insert into t1 values(DEFAULT);
+select * from t1;
+drop table t1;
+
+-- lets get to positive tests.
+create table t1 (vc varchar(1) not null, nvc varchar(1) not null, bv varchar(1) for bit data not null);
+alter table t1 add constraint uq unique (vc, nvc, bv);
+
+insert into t1 values ('p', 'p', x'01');
+insert into t1 values ('pe', 'p', x'01');
+alter table t1 alter vc set data type varchar(2);
+insert into t1 values ('pe', 'p', x'01');
+insert into t1 values ('pe', 'pe', x'01');
+alter table t1 alter nvc set data type varchar(2);
+insert into t1 values ('pe', 'pe', x'01');
+insert into t1 values ('pe', 'pe', x'1000');
+alter table t1 alter bv set data type varchar(2) for bit data;
+insert into t1 values ('pe', 'pe', x'1000');
+
+-- make sure constraints aren't lost due to an alter.
+insert into t1 values ('pe','pe', x'01');
+
+-- do some selects to ensure consistency of data.
+select * from t1 where vc='pe';
+select * from t1 where vc='pe';
+alter table t1 alter vc set data type varchar(3);
+select * from t1 where vc='pe';
+select * from t1 where vc='pe';
+
+-- clean up
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nestedCommit.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nestedCommit.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,74 @@
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+-- make sure that we cannot do a commit/rollback
+-- on a nested connection when we are in the middle
+-- of something that has to be atomic (e.g. DML).
+-- commit/rollback on a nested connection is only
+-- permitted when we are doing something simple
+-- like CALL myMethod() or VALUES myMethod()
+
+CREATE PROCEDURE doConnCommit() 
+       DYNAMIC RESULT SETS 0 LANGUAGE JAVA 
+       EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnCommit' 
+	   CONTAINS SQL
+       PARAMETER STYLE JAVA;
+
+CREATE PROCEDURE doConnRollback() 
+       DYNAMIC RESULT SETS 0 LANGUAGE JAVA 
+       EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnRollback' 
+	   CONTAINS SQL
+       PARAMETER STYLE JAVA;
+
+CREATE PROCEDURE doConnStmt(IN TEXT CHAR(50)) 
+       DYNAMIC RESULT SETS 0 LANGUAGE JAVA 
+       EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnStmtNoRS' 
+	   CONTAINS SQL
+       PARAMETER STYLE JAVA;
+
+CREATE FUNCTION doConnCommitInt() 
+       RETURNS INT EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnCommitInt' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+CREATE FUNCTION doConnStmtInt(TEXT CHAR(50)) 
+       RETURNS INT EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.doConnStmtIntNoRS' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+create table x (x int);
+insert into x values 1,2,3,4;
+
+autocommit off;
+-- all the following calls should succeed 
+call doConnCommit();
+call doConnRollback();
+-- No longer supported as language statements.
+-- call doConnStmt('commit');
+-- call doConnStmt('rollback');
+call doConnStmt('call doConnCommit()');
+call doConnStmt('call doConnRollback()');
+-- call doConnStmt('call doConnStmt(''call doConnStmt(''''commit'''')'')');
+values doConnCommitInt();
+-- values doConnStmtInt('commit');
+-- values doConnStmtInt('rollback');
+-- values doConnStmtInt('call doConnStmt(''call doConnStmt(''''commit'''')'')');
+values doConnStmtInt('values doConnCommitInt()');
+
+-- fail
+insert into x select x+doConnCommitInt() from x;
+delete from x where x in (select x+doConnCommitInt() from x);
+delete from x where x = doConnCommitInt();
+update x set x = doConnCommitInt();
+-- insert into x values doConnStmtInt('call doConnStmt(''call doConnStmt(''''commit'''')'')');
+-- select doConnStmtInt('call doConnStmt(''call doConnStmt(''''rollback'''')'')') from x;
+select doConnStmtInt('call doConnStmt(''call doConnCommit()'')') from x;
+
+-- isolation level always fails in a nested connection
+call doConnStmt('set isolation serializable');
+
+-- clean up
+drop table x;
+drop procedure doConnCommit;
+drop procedure doConnRollback;
+drop function doConnCommitInt;
+drop procedure doConnStmt;
+drop function doConnStmtInt;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nonreserved.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nonreserved.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,184 @@
+-- This tests that SQL92 formally reserved words are now unreserved
+--
+
+-- INTERVAL
+create table interval(interval int);
+prepare interval as 'select * from interval';
+execute interval;
+create index interval on interval(interval);
+drop table interval;
+remove interval;
+-- MODULE
+create table module(module int);
+prepare module as 'select * from module';
+execute module;
+create index module on module(module);
+drop table module;
+remove module;
+-- NAMES
+create table names(names int);
+prepare names as 'select * from names';
+execute names;
+create index names on names(names);
+drop table names;
+remove names;
+-- PRECISION
+create table precision(precision int);
+prepare precision as 'select * from precision';
+execute precision;
+create index precision on precision(precision);
+drop table precision;
+remove precision;
+-- POSITION
+create table position(position int);
+prepare position as 'select * from position';
+execute position;
+create index position on position(position);
+drop table position;
+remove position;
+-- SECTION
+create table section(section int);
+prepare section as 'select * from section';
+execute section;
+create index section on section(section);
+drop table section;
+remove section;
+-- VALUE
+create table value(value int);
+prepare value as 'select * from value';
+execute value;
+create index value on value(value);
+drop table value;
+remove value;
+-- DATE
+create table date (date date);
+insert into date(date) values (date('2001-01-01'));
+select date from date;
+select date( '2001-02-02'), date "2001-02-02" from date;
+select date date from date;
+select date as date from date;
+select date.date as date from date date;
+select date.date as date from date as date;
+delete from date where date = date('2001-01-01');
+create index date on date(date);
+drop table date;
+remove date;
+-- TIME
+create table time (time time);
+insert into time(time) values (time('01:01:01'));
+select time from time;
+select time( '02:02:02'), time "02:02:02" from time;
+select time time from time;
+select time as time from time;
+select time.time as time from time time;
+select time.time as time from time as time;
+delete from time where time = time('01:01:01');
+create index time on time(time);
+drop table time;
+remove time;
+-- TIMESTAMP
+create table timestamp (timestamp timestamp);
+insert into timestamp(timestamp) values (timestamp('2002-05-22 16:17:34.144'));
+select timestamp from timestamp;
+select timestamp( '2003-05-22 16:17:34.144'), timestamp "2003-05-22 16:17:34.144" from timestamp;
+select timestamp timestamp from timestamp;
+select timestamp as timestamp from timestamp;
+select timestamp.timestamp as timestamp from timestamp timestamp;
+select timestamp.timestamp as timestamp from timestamp as timestamp;
+delete from timestamp where timestamp = timestamp('2002-05-22 16:17:34.144');
+create index timestamp on timestamp(timestamp);
+drop table timestamp;
+remove timestamp;
+-- 
+create table DOMAIN (domain int);
+insert into domain values (1);
+select domain from domain where domain > 0;
+select domain from domain domain where domain > 0;
+select domain.domain from domain domain where domain.domain > 0;
+prepare domain as 'select * from domain';
+execute domain;
+create index domain on domain(domain);
+drop table DOMAIN;
+remove domain;
+
+create table CATALOG (catalog int);
+insert into catalog values (1);
+select catalog from catalog where catalog > 0;
+select catalog from catalog catalog where catalog > 0;
+prepare catalog as 'select * from catalog';
+execute catalog;
+create index catalog on catalog(catalog);
+drop table CATALOG;
+remove catalog;
+
+create table TIME (time int);
+insert into time values (1);
+select time from time where time > 0;
+select time from time time where time > 0;
+prepare time as 'select * from time';
+execute time;
+create index time on time(time);
+drop table TIME;
+remove time;
+
+create table ACTION (action int);
+insert into action values (1);
+select action from action where action > 0;
+select action from action action where action > 0;
+prepare action as 'select * from action';
+create index action on action(action);
+drop table ACTION;
+
+create table DAY (day int);
+insert into day values (1);
+select day from day where day > 0;
+select day from day day where day > 0;
+prepare day as 'select * from day';
+create index day on day(day);
+drop table DAY;
+
+create table MONTH (month int);
+insert into month values (1);
+select month from month where month > 0;
+select month from month month where month > 0;
+select month.month from month month where month.month > 0;
+prepare month as 'select * from month';
+execute month;
+create index month on month(month);
+drop table MONTH;
+remove month;
+
+create table USAGE (usage int);
+insert into usage values (1);
+select usage from usage where usage > 0;
+select usage from usage usage where usage > 0;
+select usage.usage from usage usage where usage.usage > 0;
+prepare usage as 'select * from usage';
+create index usage on usage(usage);
+drop table USAGE;
+remove usage;
+
+create table LANGUAGE (language int);
+insert into language values (1);
+select language from language where language > 0;
+select language from language language where language > 0;
+select language.language from language language where language.language > 0;
+prepare language as 'select * from language';
+create index language on language(language);
+drop table LANGUAGE;
+remove language;
+
+-- making LOCKS keyword nonreserved as fix for Derby-38
+create table LOCKS (c11 int);
+drop table LOCKS;
+create table t1 (LOCKS int);
+drop table t1;
+create table LOCKS (locks int);
+insert into locks values (1);
+select locks from locks where locks > 0;
+select locks from locks locks where locks > 0;
+select locks.locks from locks locks where locks.locks > 0;
+prepare locks as 'select * from locks';
+create index locks on locks(locks);
+drop table LOCKS;
+remove locks;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nulls.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/nulls.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,175 @@
+--
+-- this test shows the current supported null value functionality
+--
+autocommit off;
+
+-- trying to define null and not null for a column
+create table a(a1 int null not null);
+
+-- same as above, except that it's in reverse order
+create table a(a1 int not null null);
+
+-- defining null constraint for a column now does not work
+create table a(a1 int not null , a2 int not null);
+
+-- alter table adding explicitly nullable column and primary key column
+-- constraint on it fails
+alter table a add column a3 int null constraint ap1 primary key;
+
+-- alter table table level primary key constraint on nullable column
+-- doesn't give an error
+alter table a add constraint ap1 primary key(a1,a2);
+
+drop table a;
+
+-- create table with not null column and unique key should work
+create table a (a int not null unique );
+insert into a values (1);
+-- second insert should fail
+insert into a values (1);
+
+drop table a;
+
+-- alter nullability on a unique column should fail
+create table a ( a int not null unique);
+alter table a modify a null;
+
+drop table a;
+
+-- try adding a primary key where there is null data
+-- this should error
+create table a (a1 int not null, a2 int);
+insert into a values(1, NULL);
+
+alter table a add constraint ap1 primary key(a1, a2);
+
+drop table a;
+
+-- try with multiple columns
+create table a (a1 int, a2 int, a3 int);
+
+-- This is an error in DB2 compatibility mode
+alter table a add constraint ap1 primary key(a1, a2, a3);
+
+drop table a;
+
+-- try with multiple null columns
+create table a (a1 int not null, a2 int, a3 int);
+insert into a values(1,1,1);
+
+-- table with no null data should work
+alter table a add constraint ap1 primary key(a1, a2, a3);
+
+-- insert a null into one of the primary key columns should fail
+insert into a values(1, NULL, 1);
+
+drop table a;
+
+-- try with multiple null columns
+create table a (a1 int not null, a2 int default null, a3 int default null);
+insert into a values(1,NULL,1);
+
+-- table with some null data should fail
+alter table a add constraint ap1 primary key(a1, a2, a3);
+
+-- defining primarykey column constraint for explicitly nullable column
+-- gives error
+create table a1(ac1 int null primary key);
+
+-- defining primarykey table constraint on explicitly nullable columns
+-- give error
+create table a1(ac1 int null, ac2 int not null, primary key(ac1,ac2));
+
+-- should fail because
+-- not null must explicitly be specified for columns that have primary keys
+create table a1(ac1 int, ac2 int not null, primary key(ac1,ac2));
+
+-- say null twice should fail
+create table a2(ac1 int null null);
+
+-- say not null, null and no null for a column. This is to make sure the flags
+-- stay proper for a column
+create table a3(ac1 int not null null not null);
+
+-- first statement says null and second one says not null. This is to make sure
+-- the flag for the first one doesn't affect the second one
+create table a3(ac1 int default null);
+create table a4(ac1 int not null);
+
+-- one column says null and second one says not null
+create table a5(ac1 int default null, ac2 int not null);
+
+-- statement1 says null, 2nd says nothing but says primary key
+create table a6(ac1 int default null);
+create table a7(ac1 int not null primary key);
+
+-- create a table with null and non-null columns
+create table t (i int, i_d int default null, i_n int not null,
+		s smallint, s_d smallint default null, s_n smallint not null);
+
+-- insert non-nulls into null and non-null columns
+insert into t (i, i_d, i_n, s, s_d, s_n) values (1, 1, 1, 1, 1, 1);
+
+-- insert nulls into those columns that take nulls
+insert into t values (null, null, 2, null, null, 2);
+
+-- insert a null as a default value into the first default null column
+insert into t (i, i_n, s, s_d, s_n) values (3, 3, 3, 3, 3);
+
+-- insert a null as a default value into the other default null columns
+insert into t (i, i_d, i_n, s, s_n) values (4, 4, 4, 4, 4);
+
+-- insert nulls as default values into all default null columns
+insert into t (i, i_n, s, s_n) values (5, 5, 5, 5);
+
+-- attempt to insert default values into the columns that don't accept nulls
+insert into t (i, i_d, s, s_d) values (6, 6, 6, 6);
+
+-- insert default nulls into nullable columns that have no explicit defaults
+insert into t (i_d, i_n, s_d, s_n) values (7, 7, 7, 7);
+
+-- attempt to insert an explicit null into a column that doesn't accept nulls
+insert into t values (8, 8, null, 8, 8, 8);
+
+-- attempt to insert an explicit null into the other columns
+-- that doesn't accept nulls
+insert into t values (9, 9, 9, 9, 9, null);
+
+-- select all the successfully inserted rows
+select * from t;
+
+-- create a table with a non-null column with a default value of null
+-- and verify that nulls are not allowed
+create table s (x int default null not null, y int);
+insert into s (y) values(1);
+select * from s;
+
+-- is null/is not null on an integer type
+create table u (c1 integer);
+insert into u values null;
+insert into u values 1;
+insert into u values null;
+insert into u values 2;
+select * from u where c1 is null;
+select * from u where c1 is not null;
+
+-- is [not] null and parameters
+prepare p1 as 'select * from u where cast (? as varchar(1)) is null';
+execute p1 using 'values (''a'')';
+prepare p2 as 'select * from u where cast (? as varchar(1)) is not null';
+execute p2 using 'values (''a'')';
+
+select count(*) from u where c1 is null;
+insert into u select * from (values null) as X;
+select count(*) from u where c1 is null;
+
+-- cleanup
+drop table t;
+drop table s;
+drop table u;
+drop table a;
+drop table a3;
+drop table a4;
+drop table a5;
+drop table a6;
+drop table a7;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,47 @@
+-- minimal testing to verify no scans left open
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+autocommit off;
+
+
+autocommit off;
+create table t1(c1 int, c2 int);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+insert into t1 values (1, 1);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+create index i1 on t1(c1);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+create index i2 on t1(c2);
+insert into t1 values (2, 2);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+-- scan heap
+select * from t1;
+-- scan covering index
+select c1 from t1;
+-- index to base row
+select * from t1;
+select * from t1 where c1 = 1;
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+
+commit;
+
+-- test cursor which doesn't get drained
+get cursor c1 as 'select c1 + c2 from t1 order by 1';
+next c1;
+close c1;
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+
+commit;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/openScans_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+# wants to do consistency checking, so needs
+# the statement cache off to ensure no trailing dependencies exist
+derby.language.statementCacheSize=0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderby.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderby.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,373 @@
+-- order by tests
+-- in V52, we allow "select a from t order by b" where the ORDERBY column doesn't necessarily appear in the SELECT list.
+
+autocommit off;
+
+-- . order by on values
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 1,2,3;
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 1,3;
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 2,1;
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 2;
+-- . order by on position < 1, > range (error)
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 0;
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 4;
+-- . order by doesn't see generated names
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0);
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by "SQLCol1";
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by "SQLCol2";
+
+values (1,0,1),(1,0,0),(0,0,1),(0,1,0) order by 1,1,2,3;
+
+-- rollback should release the prepared statements
+rollback;
+
+-- . order by on select
+-- . order by with duplicate rows in source
+set schema app;
+create table obt (i int, v varchar(40));
+insert into obt (i) values (null);
+insert into obt values (1, 'hello');
+insert into obt values (2, 'planet');
+insert into obt values (1, 'world');
+insert into obt values (3, 'hello');
+
+-- save the data we've created
+commit;
+
+select * from obt order by i;
+select * from obt order by v;
+-- . order by all select columns
+select * from obt order by i,v;
+select * from obt order by v,i;
+-- . order by asc/desc mix
+select * from obt order by v desc, i asc;
+-- reverse prior order
+select * from obt order by i asc, v desc;
+-- . order by with duplicates but different asc/desc attributes (ok)
+select * from obt order by i asc, i desc;
+
+select * from obt order by i, v, i;
+select v from obt order by i, v, i;
+select v from obt order by i desc, v, i;
+
+-- . order by on position < 1, > range (error)
+select * from obt order by 1, 0;
+select * from obt order by 1,2,3,4,5,6,7,8,9;
+select * from obt order by 32767;
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- . order by on union all
+create table obt2 (i2 int, v varchar(40));
+insert into obt2 values (3, 'hello'), (4, 'planet'), (1, 'shoe'), (3, 'planet');
+
+-- save the data we've created
+commit ;
+
+select * from obt union all select * from obt2 order by v;
+
+select * from obt union all select * from obt order by i;
+
+select * from obt union all select * from obt order by i, i;
+
+-- . order by on union with differing column names on sources. Error
+select * from obt union all select * from obt2 order by i;
+
+select * from obt union all values (1,'hello') order by i;
+
+values (1,'hello') union all select * from obt order by i;
+
+-- . order by can not see generated names, though OK by position
+values (1,'hello') union all select * from obt; 
+
+values (1,'hello') union all select * from obt order by "SQLCol1"; 
+
+values (1,'hello') union all select * from obt order by 1;
+
+values (1,'hello') union all select * from obt order by 1, 1;
+
+-- rollback should release the prepared statements
+rollback ;
+
+select i from obt union all values (1) order by 1;
+
+-- sees noname on both sides although second side is named
+values (1) union all select i from obt order by i;
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- i2's name is hidden by obt, fails
+select * from obt union all select * from obt2 order by i2;
+
+-- . order by position/name mix
+select * from obt order by 1,i;
+select * from obt order by 1,v;
+
+-- . order by with duplicate positions
+select * from obt order by 1,2,1;
+
+-- . order by with duplicate names
+select * from obt order by v,i,v;
+
+-- . order by name gets select name, not underlying name
+select i as i2, v from obt order by i2;
+-- error, i is not seen by order by
+select i as i2, v from obt order by i;
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- . order without by (error)
+select i, v from obt order i;
+select i, v from obt by i;
+
+-- . show order, by are reserved keywords
+select order from obt;
+select by from obt;
+
+-- . order by on column not in query (error)
+select i from obt order by c;
+
+-- . order by on column not in select, in table (error)
+select i from obt order by v;
+
+-- . order by on expression (not allowed)
+select i from obt order by i+1;
+
+-- . order by on qualified column name, incorrect correlation name (not allowed)
+select i from obt t order by obt.i;
+
+-- . order by on qualified column name, incorrect column name (not allowed)
+select i from obt t order by obt.notexists;
+
+-- . order by on qualified column name
+create table t1(c1 int);
+create table t2(c1 int);
+create table t3(c3 int);
+insert into t1 values 2, 1;
+insert into t2 values 4, 3;
+insert into t3 values 6, 5;
+select t1.c1, t2.c1 from t1, t2 order by t1.c1;
+select t1.c1, t2.c1 from t1, t2 order by t2.c1;
+select t1.c1, t2.c1 from t1, t1 t2 order by t2.c1;
+select t1.c1, t2.c1 from t1, t1 t2 order by t1.c1;
+-- bug 5716 - qualified column name not allowed in order by when union/union all is used - following 4 test cases for that
+select c1 from t1 union select c3 as c1 from t3 order by t1.c1;
+select * from obt union all select * from obt2 order by obt.v;
+select * from obt union all select * from obt2 order by obt2.v;
+select * from obt union all select * from obt2 order by abc.v;
+select * from t1 inner join t2 on 1=1 order by t1.c1;
+select * from t1 inner join t2 on 1=1 order by t2.c1;
+select c1 from t1 order by app.t1.c1;
+select c1 from app.t1 order by app.t1.c1;
+select c1 from app.t1 order by t1.c1;
+select c1 from app.t1 order by c1;
+select c1 from app.t1 c order by c1;
+select c1 from app.t1 c order by c.c1;
+select c1 from t1 order by c1;
+
+-- negative
+-- shouldn't find exposed name
+select c1 from t1 union select c3 from t3 order by t3.c3;
+select c1 from t1 union select c3 from t3 order by asdf.c3;
+select c1 from t1 order by sys.t1.c1;
+select c1 from app.t1 order by sys.t1.c1;
+select c1 from t1 c order by app.c.c1;
+select c1 from app.t1 c order by app.t1.c1;
+
+-- a is not a column in t1
+select 1 as a from t1 order by t1.a;
+
+-- t3.c1 does not exist
+select * from t1, t3 order by t3.c1;
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- . order by on join
+select obt.i, obt2.i2+1, obt2.v from obt, obt2 order by 2, 3;
+
+select obt.i, obt2.i2+1, obt2.v from obt2, obt where obt.i=obt2.i2 order by 2, 3;
+
+-- . order by with spaces at end of values
+values 'hello ', 'hello    ', 'hello  ', 'hello' order by 1;
+
+-- . order by on select items that are expressions
+select i+1, v, {fn length(v)} from obt order by 2, 1 desc, 3;
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- . redundant order by on distinct, ?non-redundant (different ordering)
+select distinct i from obt order by i;
+select distinct i,v from obt order by v;
+select distinct i,v from obt order by v desc, i desc, v desc;
+
+-- . redundant order by on distinct, redundant (subset/prefix)
+select distinct i,v from obt order by i;
+
+-- . redundant order by on index scan (later)
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- . order by with empty source, nulls in source, etc.
+delete from obt;
+select * from obt order by 1;
+select * from obt order by v;
+rollback ;
+
+-- . order by with close values (doubles)
+create table d (d double precision);
+insert into d values 1e-300,2e-300;
+select d,d/1e5 as dd from d order by dd,d;
+rollback ;
+
+-- . order by with long values (varchars)
+create table v (v varchar(1200));
+insert into v values 'itsastart';
+insert into v values 'hereandt';
+update v set v = v || v || v;
+update v set v = v || v || v;
+update v set v = v || v;
+update v set v = v || v;
+update v set v = v || v;
+update v set v = v || v;
+update v set v = v || v;
+select v from v order by v desc;
+rollback ;
+drop table v;
+
+-- . order by on all data types
+create table missed (s smallint, r real, d date, t time, ts timestamp, c char(10), l bigint);
+insert into missed values (1,1.2e4, '1992-01-01','23:01:01', '1993-02-04 12:02:00.001', 'theend', 2222222222222);
+insert into missed values (1,1.2e4, '1992-01-01', '23:01:01', '1993-02-04 12:02:00.001', 'theend', 3333333333333);
+insert into missed values (2,1.0e4, '1992-01-01', '20:01:01', '1997-02-04 12:02:00.001', 'theend', 4444444444444);
+insert into missed values (2,1.0e4, '1992-01-01', '20:01:01', '1997-02-04 12:02:00.001', null,     2222222222222);
+select s from missed order by s;
+select r from missed order by r;
+select d,c from missed order by c,d;
+select ts,t from missed order by ts desc, t;
+select l from missed order by l;
+select l from missed order by l desc;
+rollback ;
+
+-- . order by on char column
+create table ut (u char(10));
+insert into ut values (null);
+insert into ut values (cast ('hello' as char(10)));
+insert into ut values ('world');
+insert into ut values ('hello');
+insert into ut values ('world  ');
+-- rollback should release the prepared statements
+rollback ;
+
+-- . order by and explicit for update (no, some cols)
+get cursor c1 as 'select i from obt order by i for update of v';
+
+-- . order by and explicit read only (ok)
+get cursor c1 as 'select i from obt order by i for read only';
+next c1;
+close c1;
+
+-- . order by is implicitly read only
+get cursor c1 as 'select i from obt order by i';
+next c1;
+-- error
+update obt set v='newval' where current of c1;
+close c1;
+-- no rows
+select v from obt where v='newval';
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- . order by only allowed on cursor spec, not subquerys (error) 
+select v from obt where i in (select i from obt2 order by i);
+
+select v from obt where i = (select i from obt2 order by i);
+
+select v from (select i,v from obt2 order by i);
+
+-- rollback should release the prepared statements
+rollback ;
+
+-- order by allowed on datatypes, 
+-- but not non-mapped user types
+-- bit maps to Byte[], so can't test for now
+create table tab1 (
+				i integer, 
+				tn integer, 
+				s integer, 
+				l integer,
+				c char(10), 
+				v char(10),
+				lvc char(10),
+				d double precision,
+				r real,
+				dt date,
+				t time,
+				ts timestamp,
+				dc decimal(2,1));
+insert into tab1 values (1, cast(1 as int), cast(1 as smallint), cast(1 as bigint), '1', '1', '1', cast(1.1 as double precision), cast(1.1 as real), '1996-01-01', '11:11:11','1996-01-01 11:10:10.1', cast(1.1 as decimal(2,1)));
+insert into tab1 values (2, cast(2 as int), cast(2 as smallint), cast(2 as bigint), '2', '2', '2', cast(2.2 as double precision), cast(2.2 as real), '1995-02-02', '12:12:12', '1996-02-02 12:10:10.1', cast(2.2 as decimal(2,1)));
+select * from tab1 order by 1;
+rollback;
+
+-- bug 2769 (correlation columns, group by and order by)
+create table bug2769(c1 int, c2 int);
+insert into bug2769 values (1, 1), (1, 2), (3, 2), (3, 3);
+select a.c1, sum(a.c1) from bug2769 a group by a.c1 order by a.c1;
+rollback;
+
+-- reset autocommit
+autocommit on;
+
+-- cleanup
+drop table obt;
+drop table obt2;
+
+create table t (a int, b int, c int);
+insert into t values (1, 2, null), (2, 3, null), (3, 0, null), (1, 3, null);
+
+select * from t order by a;
+select * from t order by a, a;
+select * from t order by a, a, a;
+select * from t order by a, b;
+
+select a, b, c from t order by a, a;
+select a, b, c from t order by a, b;
+
+select a, c from t order by b; 
+select a, c from t order by b, b; 
+select a, b, c from t order by b; 
+
+select a from t order by b, c;
+select a, c from t order by b, c;
+select a, c from t order by b, c, b, c;
+select a, b, c from t order by b, c;
+select b, c from t order by app.t.a;
+
+-- error case
+select * from t order by d;
+select t.* from t order by d;
+select t.* from t order by t.d;
+select s.* from t s order by s.d;
+
+select *, d from t order by d;
+select t.*, d from t order by d;
+select t.*, d from t order by t.d;
+select t.*, d from t order by app.t.d;
+select s.*, d from t s order by s.d;
+select t.*, t.d from t order by t.d;
+select s.*, s.d from t s order by s.d;
+
+
+select a, b, c from t order by d;
+select a from t order by d;
+select t.a from t order by t.d;
+select s.a from t s order by s.d;
+
+drop table t;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,90 @@
+-- test elimination of sort for order by
+set isolation to rr;
+
+-- test combining of sorts for distinct and order by
+
+-- create some tables
+create table t1(c1 int, c2 int, c3 int, c4 int);
+
+insert into t1 values (1, 2, 3, 4);
+insert into t1 values (2, 3, 4, 5);
+insert into t1 values (-1, -2, -3, -4);
+insert into t1 values (-2, -3, -4, -5);
+insert into t1 values (1, 2, 4, 3);
+insert into t1 values (1, 3, 2, 4);
+insert into t1 values (1, 3, 4, 2);
+insert into t1 values (1, 4, 2, 3);
+insert into t1 values (1, 4, 3, 2);
+insert into t1 values (2, 1, 4, 3);
+
+maximumdisplaywidth 7000;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+
+-- no index on t1
+-- full match
+select distinct c1, c2, c3, c4 from t1 order by 1, 2, 3, 4;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c1, c2, c3, c4 from t1 order by c1, c2, c3, c4;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- in order prefix
+select distinct c3, c4 from t1 order by 1, 2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c3, c4 from t1 order by c3, c4;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- no prefix
+select distinct c3, c4 from t1 order by 2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c3, c4 from t1 order by c4;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- expression
+select distinct c3, 1 from t1 order by 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c3, 1 from t1 order by 2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- verify that a sort is still done when a unique index 
+-- exists
+create unique index i1 on t1(c1, c2, c3, c4);
+select distinct c4, c3 from t1 where c1 = 1 and c2 = 2 order by c4, c3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select distinct c3, c4 from t1 where c1 = 1 and c2 = 2 order by c4;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- order by and union
+select c1 from t1 union select c2 from t1 order by 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select c1 from t1 union select c2 as c1 from t1 order by c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- RESOLVE: next 2 will do 2 sorts (bug 58)
+select c3, c4 from t1 union select c2, c1 from t1 order by 2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select c3, c4 from t1 union select c2, c1 as c4 from t1 order by c4;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- test recognition of single row tables
+-- even when scanning heap
+create table u1(c1 int, c2 int);
+create table u2(c2 int, c3 int);
+create table u3(c3 int, c4 int);
+insert into u1 values (1, 1), (2, 2);
+insert into u2 values (1, 1), (2, 2);
+insert into u3 values (1, 1), (2, 2);
+create unique index u1_i1 on u1(c1);
+create unique index u2_i1 on u2(c2);
+create unique index u3_i1 on u3(c3);
+
+select * from
+u1,
+u2,
+u3
+where u1.c1 = 1 and u1.c1 = u2.c2
+order by u3.c3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- clean up
+drop table t1;
+drop table u1;
+drop table u2;
+drop table u3;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/orderbyElimination_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outerjoin.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outerjoin.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,515 @@
+-- test outer joins
+-- (NO NATURAL JOIN)
+
+
+autocommit off;
+
+-- create some tables
+
+create table t1(c1 int);
+create table t2(c1 int);
+create table t3(c1 int);
+create table tt1(c1 int, c2 int, c3 int);
+create table tt2(c1 int, c2 int, c3 int);
+create table tt3(c1 int, c2 int, c3 int);
+create table empty_table(c1 int);
+create table insert_test(c1 int, c2 int, c3 int);
+-- following is verifying that oj is not a keyword
+create table oj(oj int);
+
+-- populate the tables
+insert into t1 values 1, 2, 2, 3, 4;
+insert into t2 values 1, 3, 3, 5, 6;
+insert into t3 values 2, 3, 5, 5, 7;
+insert into tt1 select c1, c1, c1 from t1;
+insert into tt2 select c1, c1, c1 from t2;
+insert into tt3 select c1, c1, c1 from t3;
+-- verifying that oj is not a keyword
+insert into oj(oj) values (1);
+
+-- negative tests
+
+-- no outer join type
+select * from t1 outer join t2;
+
+-- no join clause
+select * from t1 left outer join t2;
+select * from t1 right outer join t2;
+
+
+-- positive tests
+
+select t1.c1 from t1 left outer join t2 on t1.c1 = t2.c1;
+select t2.c1 from t1 right outer join t2 on t1.c1 = t2.c1;
+select a.x from t1 a (x) left outer join t2 b (x) on a.x = b.x;
+
+-- verify that selects from inner table work
+select b.* from (values 9) a left outer join t2 b on 1=1;
+select b.* from (values 9) a left outer join t2 b on 1=0;
+select b.* from (values 9) a right outer join t2 b on 1=0;
+select a.* from (values 9) a right outer join t2 b on 1=1;
+select a.* from (values 9) a right outer join t2 b on 1=0;
+select a.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1;
+select b.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1;
+select c.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1;
+
+-- verifying that oj is not a keyword
+select * from oj where oj = 1;
+
+--verifying both regular and {oj } in 
+select * from t1 left outer join {oj t2 left outer join t3 on t2.c1=t3.c1} on t1.c1=t3.c1;
+
+-- left and right outer join with an empty table
+select t1.c1 from t1 left outer join empty_table et on t1.c1 = et.c1;
+select t1.c1 from t1 right outer join empty_table et on t1.c1 = et.c1;
+select t1.c1 from empty_table et right outer join t1 on et.c1 = t1.c1;
+
+-- this query may make no sense at all, but it's just trying to show that parser works
+-- fine with both regular tableexpression and tableexpression with {oj }
+select * from t1, {oj t2 join t3 on t2.c1=t3.c1};
+
+-- parameters and join clause
+prepare asdf as 'select * from t1 left outer join t2 on 1=? and t1.c1 = t2.c1';
+execute asdf using 'values 1';
+remove asdf;
+
+prepare asdf as 'select * from t1 left outer join t2 on t1.c1 = t2.c1 and t1.c1 = ?';
+execute asdf using 'values 1';
+remove asdf;
+
+-- additional predicates outside of the join clause
+-- egs of using {oj --} syntax
+select * from t1 left outer join t2 on t1.c1 = t2.c1 where t1.c1 = 1;
+select * from {oj t1 left outer join t2 on t1.c1 = t2.c1} where t1.c1 = 1;
+select * from t1 right outer join t2 on t1.c1 = 1 where t2.c1 = t1.c1;
+select * from {oj t1 right outer join t2 on t1.c1 = 1} where t2.c1 = t1.c1;
+
+-- subquery in join clause. Not allowed in the DB2 compatibility mode. ERROR.
+-- egs of using {oj --} syntax
+select * from t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 = 1);
+select * from {oj t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 = 1)};
+select * from t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 <> 2);
+select * from {oj t1 a left outer join t2 b 
+on a.c1 = b.c1 and a.c1 = (select c1 from t1 where a.c1 = t1.c1 and a.c1 <> 2)};
+select * from t1 a right outer join t2 b 
+on a.c1 = b.c1 and a.c1 in (select c1 from t1 where a.c1 = t1.c1);
+
+-- outer join in subquery
+-- egs of using {oj --} syntax
+select * from t1 a
+where exists (select * from t1 left outer join t2 on t1.c1 = t2.c1);
+select * from t1 a
+where exists (select * from {oj t1 left outer join t2 on t1.c1 = t2.c1});
+select * from t1 a
+where exists (select * from t1 left outer join t2 on 1=0);
+
+-- nested joins
+-- egs of using {oj --} syntax
+select * from t1 left outer join t2 on t1.c1 = t2.c1 left outer join t3 on t1.c1 = t3.c1;
+select * from {oj t1 left outer join t2 on t1.c1 = t2.c1 left outer join t3 on t1.c1 = 
+t3.c1};
+select * from t1 left outer join t2 on t1.c1 = t2.c1 left outer join t3 on t2.c1 = t3.c1;
+select * from t3 right outer join t2 on t3.c1 = t2.c1 right outer join t1 on t1.c1 = t2.c1;
+
+-- parens
+select * from (t1 left outer join t2 on t1.c1 = t2.c1) left outer join t3 on t1.c1 = t3.c1;
+select * from t1 left outer join (t2 left outer join t3 on t2.c1 = t3.c1) on t1.c1 = t2.c1;
+
+-- left/right outer join combinations
+select * from t1 a right outer join t2 b on a.c1 = b.c1 left outer join t3 c on a.c1 = b.c1 and b.c1 = c.c1;
+select * from (t1 a right outer join t2 b on a.c1 = b.c1) left outer join t3 c on a.c1 = b.c1 and b.c1 = c.c1;
+
+select * from t1 a left outer join t2 b on a.c1 = b.c1 right outer join t3 c on c.c1 = a.c1 where a.c1 is not null;
+select * from (t1 a left outer join t2 b on a.c1 = b.c1) right outer join t3 c on c.c1 = a.c1 where a.c1 is not null;
+select * from t1 a left outer join (t2 b right outer join t3 c on c.c1 = b.c1) on a.c1 = c.c1 where c.c1=b.c1;
+
+-- test insert/update/delete
+insert into insert_test
+select * from t1 a left outer join t2 b on a.c1 = b.c1 left outer join t3 c on a.c1 <> c.c1;
+select * from insert_test;
+
+update insert_test
+set c1 = (select 9 from t1 a left outer join t1 b on a.c1 = b.c1 where a.c1 = 1)
+where c1 = 1;
+select * from insert_test;
+
+delete from insert_test
+where c1 = (select 9 from t1 a left outer join t1 b on a.c1 = b.c1 where a.c1 = 1);
+select * from insert_test;
+
+delete from insert_test;
+
+insert into insert_test
+select * from (select * from t1 a left outer join t2 b on a.c1 = b.c1 left outer join t3 c on a.c1 <> c.c1) d (c1, c2, c3);
+select * from insert_test;
+delete from insert_test;
+
+-- verify that right outer join xforms don't get result columns
+-- confused
+create table a (c1 int);
+create table b (c2 float);
+create table c (c3 char(30));
+
+insert into a values 1;
+insert into b values 3.3;
+insert into c values 'asdf';
+
+select * from a left outer join b on 1=1 left outer join c on 1=1;
+select * from a left outer join b on 1=1 left outer join c on 1=0;
+select * from a left outer join b on 1=0 left outer join c on 1=1;
+select * from a left outer join b on 1=0 left outer join c on 1=0;
+
+select * from c right outer join b on 1=1 right outer join a on 1=1;
+select * from c right outer join b on 1=1 right outer join a on 1=0;
+select * from c right outer join b on 1=0 right outer join a on 1=1;
+select * from c right outer join b on 1=0 right outer join a on 1=0;
+
+-- multicolumn tests
+-- c1, c2, and c3 all have the same values
+select tt1.c1, tt1.c2, tt1.c3, tt2.c2, tt2.c3 from tt1 left outer join tt2 on tt1.c1 = tt2.c1;
+select tt1.c1, tt1.c2, tt1.c3, tt2.c3 from tt1 left outer join tt2 on tt1.c1 = tt2.c1;
+select tt1.c1, tt1.c2, tt1.c3 from tt1 left outer join tt2 on tt1.c1 = tt2.c1;
+
+-- nested outer joins
+select tt1.c2, tt1.c1, tt1.c3, tt2.c1, tt2.c3 from t1 left outer join tt1 on t1.c1 = tt1.c1 left outer join tt2 on tt1.c2 = tt2.c2;
+
+-- make sure that column reordering is working correctly 
+-- when there's an ON clause
+create table x (c1 int, c2 int, c3 int);
+create table y (c3 int, c4 int, c5 int);
+insert into x values (1, 2, 3), (4, 5, 6);
+insert into y values (3, 4, 5), (666, 7, 8);
+
+-- qualfied * will return all of the columns of the qualified table
+-- including join columns
+select x.* from x join y on x.c3 = y.c3;
+select x.* from x left outer join y on x.c3 = y.c3;
+select x.* from x right outer join y on x.c3 = y.c3;
+select y.* from x join y on x.c3 = y.c3;
+select y.* from x left outer join y on x.c3 = y.c3;
+select y.* from x right outer join y on x.c3 = y.c3;
+
+-- * will return all of the columns of all joined tables
+select * from x join y on x.c3 = y.c3;
+select * from x left outer join y on x.c3 = y.c3;
+select * from x right outer join y on x.c3 = y.c3;
+
+commit;
+
+-- test outer join -> inner join xform
+delete from tt1;
+delete from tt2;
+delete from tt3;
+
+insert into tt1 values (1, 2, 3), (2, 3, 4), (3, 4, 5);
+insert into tt2 values (1, 2, 3), (2, 3, 4), (3, 4, 5);
+insert into tt3 values (1, 2, 3), (2, 3, 4), (3, 4, 5);
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 4500;
+
+-- no xform, predicate on outer table
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt1.c1 = 3;
+
+-- various predicates on inner table
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c2 = 3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c1 + 1= tt2.c2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 where tt2.c1 + 1= 3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from tt2 right outer join tt1 on tt1.c1 = tt2.c2 where tt2.c1 + 1= 3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 left outer join tt3 on tt2.c2 = tt3.c3 where tt3.c3 = 3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 left outer join tt3 on tt2.c2 = tt3.c3 where tt2.c2 = 3;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- make sure predicates are null tolerant 
+select * from tt1 left outer join tt2 on tt1.c1 = tt2.c2 
+where char(tt2.c2) is null;
+-- where java.lang.Integer::toString(tt2.c2) = '2';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+commit;
+
+-- bug 2924, cross join under an outer join
+CREATE TABLE inventory(itemno INT NOT NULL PRIMARY KEY, capacity INT);
+
+INSERT INTO inventory VALUES (1, 4);
+INSERT INTO inventory VALUES (2, 2);
+INSERT INTO inventory VALUES (3, 2);
+
+CREATE TABLE timeslots (slotno INT NOT NULL PRIMARY KEY);
+
+INSERT INTO timeslots VALUES(1);
+INSERT INTO timeslots VALUES(2);
+
+create table reservations(slotno INT CONSTRAINT timeslots_fk REFERENCES timeslots, 
+itemno INT CONSTRAINT inventory_fk REFERENCES inventory, 
+name VARCHAR(100), resdate DATE);
+
+    
+INSERT INTO reservations VALUES(1, 1, 'Joe', '2000-04-14');
+INSERT INTO reservations VALUES(1, 1, 'Fred', '2000-04-13');
+
+-- This query used to cause a null pointer exception
+   
+select name, resdate 
+from reservations left outer join (inventory join timeslots on inventory.itemno = timeslots.slotno)
+on inventory.itemno = reservations.itemno and timeslots.slotno = reservations.slotno
+where resdate = '2000-04-14';
+rollback;
+
+-- bug 2923, cross join under an outer join
+create table inventory(itemno INT NOT NULL PRIMARY KEY, capacity INT);
+INSERT into inventory values (1, 4);
+INSERT into inventory values (2, 2);
+INSERT into inventory values (3, 2);
+
+CREATE TABLE timeslots (slotno INT NOT NULL PRIMARY KEY);
+INSERT INTO timeslots VALUES(1);
+INSERT INTO timeslots VALUES(2);
+
+create table reservations(slotno INT CONSTRAINT timeslots_fk REFERENCES timeslots,
+itemno INT CONSTRAINT inventory_fk REFERENCES inventory,
+name VARCHAR(100));
+INSERT INTO reservations VALUES(1, 1, 'Joe');
+INSERT INTO reservations VALUES(2, 2, 'Fred');
+
+-- This query used to get incorrect results
+-- when name is null was the 2nd predicate
+-- due to a bug in OJ->IJ xform code.
+select timeslots.slotno, inventory.itemno, capacity, name
+from inventory left outer join timeslots
+on inventory.capacity = timeslots.slotno
+left outer join reservations
+on timeslots.slotno = reservations.slotno
+where capacity > 3 and name is null;
+select timeslots.slotno, inventory.itemno, capacity, name
+from inventory left outer join timeslots
+on inventory.capacity = timeslots.slotno
+left outer join reservations
+on timeslots.slotno = reservations.slotno
+where name is null and capacity > 3;
+
+rollback;
+
+-- bug 2930, cross join under outer join
+CREATE TABLE properties (
+	name VARCHAR(50),
+	value VARCHAR(200));
+
+INSERT INTO properties VALUES ('businessName', 'Cloud 9 Cafe');
+INSERT INTO properties VALUES ('lastReservationDate', '2001-12-31');
+
+CREATE TABLE inventory (
+	itemno INT NOT NULL PRIMARY KEY,
+	capacity INT
+);
+INSERT INTO inventory VALUES (1, 2);
+INSERT INTO inventory VALUES (2, 2);
+INSERT INTO inventory VALUES (3, 2);
+INSERT INTO inventory VALUES (4, 2);
+INSERT INTO inventory VALUES (5, 2);
+INSERT INTO inventory VALUES (6, 4);
+INSERT INTO inventory VALUES (7, 4);
+INSERT INTO inventory VALUES (8, 4);
+INSERT INTO inventory VALUES (9, 4);
+INSERT INTO inventory VALUES (10, 4);
+
+CREATE TABLE timeslots (
+	slot TIME NOT NULL PRIMARY KEY
+);
+
+INSERT INTO timeslots VALUES('17:00:00');
+INSERT INTO timeslots VALUES('17:30:00');
+INSERT INTO timeslots VALUES('18:00:00');
+INSERT INTO timeslots VALUES('18:30:00');
+INSERT INTO timeslots VALUES('19:00:00');
+INSERT INTO timeslots VALUES('19:30:00');
+INSERT INTO timeslots VALUES('20:00:00');
+INSERT INTO timeslots VALUES('20:30:00');
+INSERT INTO timeslots VALUES('21:00:00');
+INSERT INTO timeslots VALUES('21:30:00');
+INSERT INTO timeslots VALUES('22:00:00');
+
+CREATE TABLE reservations (
+	itemno INT CONSTRAINT inventory_fk REFERENCES inventory,
+	slot TIME CONSTRAINT timeslots_fk REFERENCES timeslots,
+	resdate DATE NOT NULL,
+	name VARCHAR(100) NOT NULL,
+	quantity INT,
+	CONSTRAINT reservations_u UNIQUE(name, resdate));
+
+INSERT INTO reservations VALUES(6, '17:00:00', '2000-07-13', 'Williams', 4);
+INSERT INTO reservations VALUES(7, '17:00:00', '2000-07-13', 'Johnson',  4);
+INSERT INTO reservations VALUES(8, '17:00:00', '2000-07-13', 'Allen',    3);
+INSERT INTO reservations VALUES(9, '17:00:00', '2000-07-13', 'Dexmier',  4);
+INSERT INTO reservations VALUES(1, '17:30:00', '2000-07-13', 'Gates', 	 2);
+INSERT INTO reservations VALUES(2, '17:30:00', '2000-07-13', 'McNealy',  2);
+INSERT INTO reservations VALUES(3, '17:30:00', '2000-07-13', 'Hoffman',  1);
+INSERT INTO reservations VALUES(4, '17:30:00', '2000-07-13', 'Sippl',    2);
+INSERT INTO reservations VALUES(6, '17:30:00', '2000-07-13', 'Yang',     4);
+INSERT INTO reservations VALUES(7, '17:30:00', '2000-07-13', 'Meyers',   4);
+select max(name), max(resdate) from inventory join timeslots on inventory.capacity is not null
+left outer join reservations on inventory.itemno = reservations.itemno and reservations.slot = timeslots.slot;
+rollback;
+
+-- bug 2931, cross join under outer join
+CREATE TABLE properties (
+	name VARCHAR(50),
+	value VARCHAR(200));
+
+INSERT INTO properties VALUES ('businessName', 'Cloud 9 Cafe');
+INSERT INTO properties VALUES ('lastReservationDate', '2001-12-31');
+
+CREATE TABLE inventory (
+	itemno INT NOT NULL PRIMARY KEY,
+	capacity INT
+);
+INSERT INTO inventory VALUES (1, 2);
+INSERT INTO inventory VALUES (2, 2);
+INSERT INTO inventory VALUES (3, 2);
+INSERT INTO inventory VALUES (4, 2);
+INSERT INTO inventory VALUES (5, 2);
+INSERT INTO inventory VALUES (6, 4);
+INSERT INTO inventory VALUES (7, 4);
+INSERT INTO inventory VALUES (8, 4);
+INSERT INTO inventory VALUES (9, 4);
+INSERT INTO inventory VALUES (10, 4);
+
+CREATE TABLE timeslots (
+	slot TIME NOT NULL PRIMARY KEY
+);
+
+INSERT INTO timeslots VALUES('17:00:00');
+INSERT INTO timeslots VALUES('17:30:00');
+INSERT INTO timeslots VALUES('18:00:00');
+INSERT INTO timeslots VALUES('18:30:00');
+INSERT INTO timeslots VALUES('19:00:00');
+INSERT INTO timeslots VALUES('19:30:00');
+INSERT INTO timeslots VALUES('20:00:00');
+INSERT INTO timeslots VALUES('20:30:00');
+INSERT INTO timeslots VALUES('21:00:00');
+INSERT INTO timeslots VALUES('21:30:00');
+INSERT INTO timeslots VALUES('22:00:00');
+
+CREATE TABLE reservations (
+	itemno INT CONSTRAINT inventory_fk REFERENCES inventory,
+	slot TIME CONSTRAINT timeslots_fk REFERENCES timeslots,
+	resdate DATE NOT NULL,
+	name VARCHAR(100) NOT NULL,
+	quantity INT,
+	CONSTRAINT reservations_u UNIQUE(name, resdate));
+
+INSERT INTO reservations VALUES(6, '17:00:00', '2000-07-13', 'Williams', 4);
+INSERT INTO reservations VALUES(7, '17:00:00', '2000-07-13', 'Johnson',  4);
+INSERT INTO reservations VALUES(8, '17:00:00', '2000-07-13', 'Allen',    3);
+INSERT INTO reservations VALUES(9, '17:00:00', '2000-07-13', 'Dexmier',  4);
+INSERT INTO reservations VALUES(1, '17:30:00', '2000-07-13', 'Gates', 	 2);
+INSERT INTO reservations VALUES(2, '17:30:00', '2000-07-13', 'McNealy',  2);
+INSERT INTO reservations VALUES(3, '17:30:00', '2000-07-13', 'Hoffman',  1);
+INSERT INTO reservations VALUES(4, '17:30:00', '2000-07-13', 'Sippl',    2);
+INSERT INTO reservations VALUES(6, '17:30:00', '2000-07-13', 'Yang',     4);
+INSERT INTO reservations VALUES(7, '17:30:00', '2000-07-13', 'Meyers',   4);
+
+
+-- this query should return values from the 'slot' column (type date)
+-- but it seems to be returning integers!
+select max(timeslots.slot) from inventory inner join timeslots on inventory.capacity is not null
+left outer join reservations on inventory.capacity = reservations.itemno and reservations.slot = timeslots.slot;
+rollback;
+
+-- bug 2897 Push join predicates from where clause
+-- to right
+select * from t1 inner join t2 on 1=1 left outer join t3 on t1.c1 = t3.c1
+where t1.c1 = t2.c1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Test fix for bug 5659
+create table xxx (a int not null);
+create table yyy (a int not null);
+
+insert into xxx values (1);
+select * from xxx left join yyy on (xxx.a=yyy.a);
+insert into xxx values (null);
+select * from xxx;
+
+drop table xxx;
+drop table yyy;
+
+-- Defect 5658. Disable querries with ambiguous references.
+create table ttab1 (a int, b int);
+insert into ttab1 values (1,1),(2,2);
+create table ttab2 (c int, d int);
+insert into ttab2 values (1,1),(2,2);
+
+-- this statement should raise an error because 
+-- more than one object table includes column "b"
+select cor1.*, cor2.* from ttab1 cor1 left outer join ttab2 on (b = d),
+		ttab1 left outer join ttab2 cor2 on (b = d);
+select cor1.*, cor2.* from ttab1 cor1 left outer join ttab2 on (b = d),
+		ttab1 left outer join ttab2 cor2 on (b = cor2.d);
+
+-- This should pass
+select cor1.*, cor2.* from ttab1 left outer join ttab2 on (b = d), 
+		ttab1 cor1 left outer join ttab2 cor2 on (cor1.b = cor2.d);
+
+-- These should fail too
+select * from ttab1, ttab1 left outer join ttab2 on (a=c);
+select * from ttab1 cor1, ttab1 left outer join ttab2 on (cor1.a=c);
+
+-- This should pass
+select * from ttab1, ttab1 cor1 left outer join ttab2 on (cor1.a=c);
+
+drop table ttab1;
+drop table ttab2;
+
+-- Test 5164
+
+CREATE TABLE "APP"."GOVT_AGCY" ("GVA_ID" NUMERIC(20,0) NOT NULL, "GVA_ORL_ID" NUMERIC(20,0) NOT NULL, "GVA_GAC_ID" NUMERIC(20,0));
+
+CREATE TABLE "APP"."GEO_STRC_ELMT" ("GSE_ID" NUMERIC(20,0) NOT NULL, "GSE_GSET_ID" NUMERIC(20,0) NOT NULL, "GSE_GA_ID_PRNT" NUMERIC(20,0) NOT NULL, "GSE_GA_ID_CHLD" NUMERIC(20,0) NOT NULL);
+
+CREATE TABLE "APP"."GEO_AREA" ("GA_ID" NUMERIC(20,0) NOT NULL, "GA_GAT_ID" NUMERIC(20,0) NOT NULL, "GA_NM" VARCHAR(30) NOT NULL, "GA_ABRV_NM" VARCHAR(5));
+
+CREATE TABLE "APP"."REG" ("REG_ID" NUMERIC(20,0) NOT NULL, "REG_NM" VARCHAR(60) NOT NULL, "REG_DESC" VARCHAR(240), "REG_ABRV_NM" VARCHAR(15), "REG_CD" NUMERIC(8,0) NOT NULL, "REG_STRT_DT" TIMESTAMP NOT NULL, "REG_END_DT" TIMESTAMP NOT NULL DEFAULT '4712-12-31 00:00:00', "REG_EMPR_LIAB_IND" CHAR(1) NOT NULL DEFAULT 'N', "REG_PAYR_TAX_SURG_CRTF_IND" CHAR(1) NOT NULL DEFAULT 'N', "REG_PYT_ID" NUMERIC(20,0), "REG_GA_ID" NUMERIC(20,0) NOT NULL, "REG_GVA_ID" NUMERIC(20,0) NOT NULL, "REG_REGT_ID" NUMERIC(20,0) NOT NULL, "REG_PRNT_ID" NUMERIC(20,0));
+
+-- This should not get ArrayIndexOutofBound exception
+SELECT 1
+FROM reg
+     JOIN geo_area jrsd ON (jrsd.ga_id = reg.reg_ga_id)
+     LEFT OUTER
+JOIN geo_strc_elmt gse ON (gse.gse_ga_id_chld =
+reg.reg_ga_id)
+     LEFT OUTER
+JOIN geo_area prnt ON (prnt.ga_id =
+reg.reg_ga_id)
+     JOIN govt_agcy gva ON (reg.reg_gva_id = gva.gva_id);
+
+DROP TABLE "APP"."GOVT_AGCY";
+DROP TABLE "APP"."GEO_STRC_ELMT";
+DROP TABLE "APP"."GEO_AREA";
+DROP TABLE "APP"."REG";
+
+-- reset autocommit
+autocommit on;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table t3;
+drop table tt1;
+drop table tt2;
+drop table tt3;
+drop table insert_test;
+drop table empty_table;
+drop table a;
+drop table b;
+drop table c;
+drop table oj;
+drop table x;
+drop table y;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outparams.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/outparams.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1673 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+import java.sql.*;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.iapi.reference.JDBC30Translation;
+import java.io.PrintStream;
+import java.math.BigInteger;
+import java.math.BigDecimal;
+
+public class outparams
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+ 
+	static final String outputMethods[] =
+	{
+		"takesNothing",
+
+		null, 
+	
+		null,
+		null,
+	
+		"takesShortPrimitive",
+		null,
+	
+		"takesIntegerPrimitive",
+		null,
+	
+		"takesLongPrimitive",
+		null,
+	
+		"takesFloatPrimitive",
+		null,
+	
+		"takesDoublePrimitive",
+		null,
+	
+		"takesBigDecimal",
+	
+		"takesByteArray",
+		
+		"takesString",
+		
+		"takesDate",
+		
+		"takesTimestamp",
+	
+		"takesTime",
+	
+		null
+	};
+
+	// parameter types for outputMethods.
+	private static final String[] outputProcParam =
+	{
+		null, // "takesNothing",
+
+		null, 
+	
+		null,
+		null,
+	
+		"SMALLINT", // "takesShortPrimitive",
+		null,
+	
+		"INT", // "takesIntegerPrimitive",
+		null,
+	
+		"BIGINT", // "takesLongPrimitive",
+		null,
+	
+		"REAL", // "takesFloatPrimitive",
+		null,
+	
+		"DOUBLE", // "takesDoublePrimitive",
+		null,
+	
+		"DECIMAL(10,4)", // "takesBigDecimal",
+	
+		"VARCHAR(40) FOR BIT DATA", // "takesByteArray",
+		
+		"VARCHAR(40)", // "takesString",
+		
+		"DATE", // "takesDate",
+		
+		"TIMESTAMP", // "takesTimestamp",
+	
+		"TIME", // "takesTime",
+	
+		null
+	};
+
+	
+	static final String returnMethods[] =
+	{
+		"returnsNothing",
+
+		null,
+		null,
+	
+		"returnsShortP",
+		null,
+	
+		"returnsIntegerP",
+		null,
+	
+		"returnsLongP",
+		null,
+	
+		"returnsFloatP",
+		null,
+	
+		"returnsDoubleP",
+		null,
+	
+		"returnsBigDecimal",
+	
+		"returnsByteArray",
+		
+		"returnsString",
+		
+		"returnsDate",
+		
+		"returnsTimestamp",
+	
+		"returnsTime",
+	
+		null
+	};
+
+	static final String[] returnMethodType =
+	{
+		null, // "returnsNothing",
+
+		null, // "returnsBytePrimitive",
+		null, // "returnsByte",
+	
+		"SMALLINT", // "returnsShortPrimitive",
+		null, // "returnsShort",
+	
+		"INT", // "returnsIntegerPrimitive",
+		null, // "returnsInteger",
+	
+		"BIGINT", // "returnsLongPrimitive",
+		null, // "returnsLong",
+	
+		"REAL", // "returnsFloatPrimitive",
+		null, // "returnsFloat",
+	
+		"DOUBLE", // "returnsDoublePrimitive",
+		null, // "returnsDouble",
+	
+		"DECIMAL(10,2)", // "returnsBigDecimal",
+	
+		"VARCHAR(40) FOR BIT DATA", // "returnsByteArray",
+		
+		"VARCHAR(40)", // "returnsString",
+		
+		"DATE", // "returnsDate",
+		
+		"TIMESTAMP", // "returnsTimestamp",
+	
+		"TIME", // "returnsTime",
+	
+		null, // "returnsBigInteger"
+	};
+	
+	static final int types[] =
+	{
+		Types.BIT,
+		JDBC30Translation.SQL_TYPES_BOOLEAN,
+		Types.TINYINT,
+		Types.SMALLINT,
+		Types.INTEGER,
+		Types.BIGINT,
+		Types.FLOAT,
+		Types.REAL,
+		Types.DOUBLE,
+		Types.NUMERIC,
+		Types.DECIMAL,
+		Types.CHAR,
+		Types.VARCHAR,
+		Types.LONGVARCHAR,
+		Types.DATE,
+		Types.TIME, 
+		Types.TIMESTAMP,
+		Types.BINARY,
+		Types.VARBINARY,
+		Types.LONGVARBINARY,
+		Types.OTHER
+	};
+	
+	static final String typeNames[] =
+	{
+		"BIT",
+		"BOOLEAN",
+		"TINYINT",
+		"SMALLINT",
+		"INTEGER",
+		"BIGINT",
+		"FLOAT",
+		"REAL",
+		"DOUBLE",
+		"NUMERIC",
+		"DECIMAL",
+		"CHAR",
+		"VARCHAR",
+		"LONGVARCHAR",
+		"DATE",
+		"TIME",
+		"TIMESTAMP",
+		"BINARY",
+		"VARBINARY",
+		"LONGVARBINARY",
+		"OTHER"
+	};
+
+	//public static Connection conn;
+
+	public static void main (String[] argv) throws Throwable
+	{
+   		ij.getPropertyArg(argv); 
+        Connection conn = ij.startJBMS();
+
+        runTests( conn);
+    }
+
+    public static void runTests( Connection conn) throws Throwable
+    {        
+		conn.setAutoCommit(false);	
+
+		testMisc(conn);
+		testNull(conn);
+		testUpdate(conn);
+		testEachOutputType(conn);
+		testReturnTypes(conn);
+		testOtherOutputType(conn);
+		testManyOut(conn);
+		test5116(conn);
+	}
+
+	private static void testMisc(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================");
+		System.out.println("TESTING BOUNDARY CONDITIONS");
+		System.out.println("==============================================\n");
+
+		Statement scp = conn.createStatement();
+
+		scp.execute("CREATE PROCEDURE takesString(OUT P1 VARCHAR(40), IN P2 INT) " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.takesString'" +
+						" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+		CallableStatement cs = conn.prepareCall("call takesString(?,?)");
+
+		// register a normal int as an output param, should fail
+		boolean failed = false;
+		try
+		{
+			cs.registerOutParameter(2, Types.INTEGER);
+		}
+		catch (SQLException se)
+		{
+			failed = true;
+			System.out.println("Expected exception "+se);
+		}
+		if (!failed)
+		{
+			System.out.println("registerOutParameter on non-output didn't fail");
+		}
+
+		// invalid param number
+		failed = false;
+		try
+		{
+			cs.registerOutParameter(9, Types.INTEGER);
+		}
+		catch (SQLException se)
+		{
+			failed = true;
+			System.out.println("Expected exception "+se);
+		}
+		if (!failed)
+		{
+			System.out.println("registerOutParameter on bad value didn't fail");
+		}
+
+		// invalid param number
+		failed = false;
+		try
+		{
+			cs.registerOutParameter(0, Types.INTEGER);
+		}
+		catch (SQLException se)
+		{
+			failed = true;
+			System.out.println("Expected exception "+se);
+		}
+		if (!failed)
+		{
+			System.out.println("registerOutParameter on bad value didn't fail");
+		}
+
+		// set before register, bad type, should fail as is output parameter.	
+		try
+		{
+			cs.setDouble(1, 1);
+			System.out.println("FAIL setDouble() on takesString() accepted");
+		}
+		catch (SQLException se)
+		{
+			System.out.println("Expected exception "+se);
+		}
+
+		// set before register, should fail as is output parameter.
+		try
+		{
+			cs.setString(1, "hello");
+			System.out.println("FAIL setString() on takesString() accepted");
+		}
+		catch (SQLException se)
+		{
+			System.out.println("Expected exception "+se);
+		}
+
+		cs.registerOutParameter(1, Types.CHAR);
+		cs.setInt(2, Types.INTEGER);
+		try
+		{
+			cs.execute();
+		}
+		catch (SQLException se)
+		{
+			System.out.println("cs.execute() got unexpected exception: "+se);
+		}
+
+		// shouldn't have to reregister the type, and shouldn't
+		// need to set the output parameters
+		cs.clearParameters();
+		cs.setInt(2, Types.INTEGER);
+		try
+		{
+			cs.execute();
+		}
+		catch (SQLException se)
+		{
+			System.out.println("cs.execute() got unexpected exception: "+se);
+		}
+		cs.close();
+		scp.execute("DROP PROCEDURE takesString");
+
+		scp.execute("CREATE FUNCTION returnsBigDecimal(P2 INT) RETURNS DECIMAL(10,2) " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.returnsBigDecimal'" +
+						" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+		// return output params -- cannot do set on return output param
+		cs = conn.prepareCall("? = call returnsBigDecimal(?)");
+		try
+		{
+			cs.setBigDecimal(1, new BigDecimal(1d));
+			System.out.println("ERROR: setBigDecimal() on return output parameter succeeded");
+		}
+		catch (SQLException se)
+		{
+			System.out.println("Expected exception on setBigDecimal() on a return output param: "+se);
+		}
+		cs.close();
+		scp.execute("DROP FUNCTION returnsBigDecimal");
+
+		// lets try ? = call syntax on a call that doesn't return anything
+		
+		scp.execute("CREATE PROCEDURE returnsNothing() " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.returnsNothing'" +
+						" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+		try
+		{
+			cs = conn.prepareCall("? = call returnsNothing()");
+			System.out.println("ERROR: no exception on prepare of '? = call returnsNothing()");
+		}
+		catch (SQLException se)
+		{
+			System.out.println("Expected exception on prepare of '? = call returnsNothing()': "+se);
+		}
+		scp.execute("DROP PROCEDURE returnsNothing");
+	}
+
+	
+	private static void testNull(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================");
+		System.out.println("TESTING NULLS");
+		System.out.println("==============================================\n");
+		System.out.println("Test for bug 4317, passing null value for a parameter");
+
+		Statement scp = conn.createStatement();
+
+		scp.execute("CREATE PROCEDURE testNullBug4317(IN P1 VARCHAR(10)) " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.testNullBug4317'" +
+						" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+		CallableStatement cs0 = conn.prepareCall("call testNullBug4317(?)");
+		try
+		{
+			cs0.setString(1, null);		// passing in null
+			cs0.execute();
+		}
+		catch (SQLException se)
+		{
+			System.out.println("cs0.execute() got unexpected exception: "+se);
+		}
+
+		try
+		{
+			// BUG 5928 - setNull throws an exception - fixed.
+			cs0.setNull(1, java.sql.Types.VARCHAR);		// passing in null
+			cs0.execute();
+		}
+		catch (SQLException se)
+		{
+			System.out.println("cs0.execute() got unexpected exception: "+se);
+		}
+		cs0.close();
+		scp.execute("DROP PROCEDURE testNullBug4317");
+
+
+	}
+
+	// test: do we get an appropriate update count when using ?=call?
+	private static void testUpdate(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================");
+		System.out.println("TESTING UPDATE COUNT");
+		System.out.println("==============================================\n");
+
+		Statement scp = conn.createStatement();
+
+		scp.execute("CREATE FUNCTION returnsIntegerP(P1 INT) RETURNS INTEGER " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.returnsIntegerP'" +
+						" NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+
+		CallableStatement cs = conn.prepareCall("? = call returnsIntegerP(0)");
+		cs.registerOutParameter(1, Types.INTEGER);
+		try
+		{
+			int updCount = cs.executeUpdate();
+			System.out.println("executeUpdate on ? = call returnsIntegerP returned "+updCount);
+			System.out.println("getString(1) returned "+cs.getString(1));
+		}
+		catch (SQLException se)
+		{
+			System.out.println("cs.execute() got unexpected exception: "+se);
+		}
+
+		cs.close();
+		scp.execute("DROP FUNCTION returnsIntegerP");
+		scp.close();
+	}
+
+	// should do get setString() to use a string that is appropriate for
+	//	the target type
+	private static void testEachOutputType(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================");
+		System.out.println("TESTING NORMAL OUTPUT PARAMETERS");
+		System.out.println("==============================================\n");
+		CallableStatement cs = null;
+
+		for (int doSetObject = 0; doSetObject < 3; doSetObject++)
+		{
+			switch (doSetObject)
+			{
+				case 0:
+					System.out.println("...starting doing setXXX for each type xxx");
+					break;
+				case 1:
+					System.out.println("...now doing setObject on each type xxx");
+					break;
+				case 2:
+					System.out.println("...not doing any setXXX, just OUT parameters, not IN/OUT");
+					break;
+			}
+
+			for (int method = 0; method < outputMethods.length; method++)
+			{
+				String methodName = outputMethods[method];
+				if (methodName == null)
+					continue;
+
+				System.out.println("\n------------------------------------");
+
+				Statement scp = conn.createStatement();
+				String str;
+				if (methodName.indexOf("Nothing") == -1)
+				{
+
+					scp.execute("CREATE PROCEDURE " + methodName + "(INOUT P1 " + outputProcParam[method] + ", IN P2 INT) " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams." + methodName +
+						"' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+					if (method%2 == 0)
+						str = "call "+methodName+"(?,?)";
+					else
+						str = "{call "+methodName+"(?,?)}";
+				}
+				else
+				{
+					scp.execute("CREATE PROCEDURE " + methodName + "() " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams." + methodName +
+						"' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+					str = "{call "+methodName+"()}";
+				}
+
+
+	
+				System.out.println(str);
+				try 
+				{
+					cs = conn.prepareCall(str);
+				}
+				catch (SQLException se)
+				{
+					System.out.println("ERROR: unexpected exception "+se);
+					throw se;
+				}
+	
+				for (int type = 0; type < types.length; type++)
+				{
+					cs.clearParameters();
+					System.out.println();
+					try
+					{
+						System.out.println("\n\tcs.registerOutParameter(1, "+typeNames[type]+")");
+						cs.registerOutParameter(1, types[type]);
+					} 
+					catch (SQLException se)
+					{
+						System.out.println("\tException "+se);
+						continue;
+					}
+	
+					StringBuffer buf = new StringBuffer();
+					try
+					{
+						if (doSetObject == 0) 
+						{
+							callSetMethod(cs, 1, types[type], buf);
+						}
+						else if (doSetObject == 1)
+						{
+							callSetObject(cs, 1, types[type], buf);
+						}
+						else
+						{
+							// only try this once
+							type = types.length-1;
+							buf.append("...no setXXX(1) at all");
+						}
+					}
+					catch (SQLException se)
+					{
+						System.out.println("\t"+buf.toString());
+						System.out.println("\tException "+se);
+						continue;
+					}
+					System.out.println("\t"+buf.toString());
+					cs.setInt(2, types[type]);
+	
+					try
+					{
+						System.out.println("\tcs.execute()");
+						boolean hasResultSet = cs.execute();
+						if (hasResultSet)
+							System.out.println("testEachOutputType HAS RESULT SET cs.execute() returned true");
+						}
+					catch (SQLException se)
+					{
+						System.out.println("\tException "+se);
+						continue;
+					}
+					for (int getType = 0; getType < types.length; getType++)
+					{
+						StringBuffer getbuf = new StringBuffer();
+						try
+						{
+							callGetMethod(cs, 1, types[getType], getbuf);
+						}
+						catch (SQLException se)
+						{
+							getbuf.append(se);
+						}
+						System.out.println("\t\t\t"+getbuf.toString());
+					}
+	
+				}
+
+				cs.close();
+
+				scp.execute("DROP PROCEDURE " + methodName);
+				scp.close();
+			}
+		}
+
+		System.out.println("------------------------------------\n");
+
+	}
+
+	// test that everything works ok when we regsiter the param as type OTHER.
+	// should be able to get/setXXX of the appropriate type
+	private static void testOtherOutputType(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================");
+		System.out.println("TESTING OUTPUT PARAMETERS WITH register(OTHER)");
+		System.out.println("==============================================\n");
+		CallableStatement cs = null;
+
+		for (int method = 0; method < outputMethods.length; method++)
+		{
+			String methodName = outputMethods[method];
+			if (methodName == null)
+				continue;
+			System.out.println("\n------------------------------------");
+
+
+			Statement scp = conn.createStatement();
+			String str;
+			if (methodName.indexOf("Nothing") == -1)
+			{
+
+				scp.execute("CREATE PROCEDURE " + methodName + "(INOUT P1 " + outputProcParam[method] + ", IN P2 INT) " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams." + methodName +
+					"' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+				if (method%2 == 0)
+					str = "call "+methodName+"(?,?)";
+				else
+					str = "{call "+methodName+"(?,?)}";
+			}
+			else
+			{
+				scp.execute("CREATE PROCEDURE " + methodName + "() " +
+					"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams." + methodName +
+					"' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+				str = "{call "+methodName+"()}";
+			}
+
+			System.out.println(str);
+			try 
+			{
+				cs = conn.prepareCall(str);
+			}
+			catch (SQLException se)
+			{
+				System.out.println("ERROR: unexpected exception "+se);
+				throw se;
+			}
+	
+			for (int type = 0; type < types.length; type++)
+			{
+				cs.clearParameters();
+				System.out.println();
+				try
+				{
+					System.out.println("\n\tcs.registerOutParameter(1, Types.OTHER)");
+					cs.registerOutParameter(1, Types.OTHER);
+				} 
+				catch (SQLException se)
+				{
+					System.out.println("\tException "+se);
+					continue;
+				}
+
+				StringBuffer buf = new StringBuffer();
+				try
+				{
+					callSetMethod(cs, 1, types[type], buf);
+				}
+				catch (SQLException se)
+				{
+					System.out.println("\t"+buf.toString());
+					System.out.println("\tException "+se);
+					continue;
+				}
+				System.out.println("\t"+buf.toString());
+				cs.setInt(2, types[type]);
+
+				try
+				{
+					System.out.println("\tcs.execute()");
+					cs.execute();
+				}
+				catch (SQLException se)
+				{
+					System.out.println("\tException "+se);
+					continue;
+				}
+				for (int getType = 0; getType < types.length; getType++)
+				{
+					StringBuffer getbuf = new StringBuffer();
+					try
+					{
+						callGetMethod(cs, 1, types[getType], getbuf);
+					}
+					catch (SQLException se)
+					{
+						getbuf.append(se);
+					}
+					System.out.println("\t\t\t"+getbuf.toString());
+				}
+
+			}
+
+			cs.close();
+
+			scp.execute("DROP PROCEDURE " + methodName);
+			scp.close();
+		}
+
+		System.out.println("------------------------------------\n");
+	}
+
+	private static void testReturnTypes(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================\n");
+		System.out.println("TESTING RETURN OUTPUT PARAMETERS");
+		System.out.println("==============================================\n");
+		CallableStatement cs = null;
+		for (int method = 0; method < returnMethods.length; method++)
+		{
+			String methodName = returnMethods[method];
+			if (methodName == null)
+				continue;
+
+			Statement scf = conn.createStatement();
+			String str;
+			String dropRoutine;
+			if (methodName.indexOf("Nothing") != -1)
+			{
+
+				scf.execute("CREATE PROCEDURE " + methodName + "()" +
+					" EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams." + methodName +
+					"' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+				dropRoutine = "DROP PROCEDURE " + methodName;
+
+				str = "{call "+returnMethods[method]+"()}";
+			}
+			else
+			{
+
+				scf.execute("CREATE FUNCTION " + methodName + "(P1 INT) RETURNS " + returnMethodType[method] +
+					" EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams." + methodName +
+					"' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+				dropRoutine = "DROP FUNCTION " + methodName;
+
+				str = "{? = call "+returnMethods[method]+"(?)}";
+			}
+
+
+				
+			System.out.println("\n------------------------------------");
+				
+
+			System.out.println(str);
+			try 
+			{
+				cs = conn.prepareCall(str);
+			}
+			catch (SQLException se)
+			{
+				System.out.println("ERROR: unexpected exception "+se);
+				throw se;
+			}
+
+			for (int type = 0; type < types.length; type++)
+			{
+				cs.clearParameters();
+				System.out.println();
+				try
+				{
+					System.out.println("\n\tcs.registerOutParameter(1, "+typeNames[type]+")");
+					cs.registerOutParameter(1, types[type]);
+				} 
+				catch (SQLException se)
+				{
+					System.out.println("\tException "+se);
+					continue;
+				}
+				try
+				{
+					cs.setInt(2, types[type]);
+				}
+				catch (SQLException se)
+				{
+					System.out.println("\tUnexpected exception on cs.setInt(2, "+types[type]+"): "+se);
+					continue;
+				}
+
+				try
+				{
+					System.out.println("\tcs.execute()");
+					boolean hasResultSet = cs.execute();
+					if (hasResultSet)
+						System.out.println("testReturnTypes HAS RESULT SET cs.execute() returned true");
+
+				}
+				catch (SQLException se)
+				{
+					System.out.println("\tException "+se);
+					continue;
+				}
+				for (int getType = 0; getType < types.length; getType++)
+				{
+					StringBuffer getbuf = new StringBuffer();
+					try
+					{
+						callGetMethod(cs, 1, types[getType], getbuf);
+					}
+					catch (SQLException se)
+					{
+						getbuf.append(se);
+					}
+					System.out.println("\t\t\t"+getbuf.toString());
+				}
+
+			}
+
+			cs.close();
+			scf.execute(dropRoutine);
+			scf.close();
+		}
+
+		System.out.println("------------------------------------\n");
+
+	}
+
+	private static void callSetObject(CallableStatement cs, int arg, int type, StringBuffer strbuf) throws Throwable
+	{
+
+		switch (type)	
+		{
+			case Types.BIT:
+			case JDBC30Translation.SQL_TYPES_BOOLEAN:
+				strbuf.append("setObject("+arg+", true)");
+				cs.setObject(arg, new Boolean(true));
+				break;
+
+			case Types.TINYINT:
+				strbuf.append("setObject("+arg+", 6)");
+				cs.setObject(arg, new Integer((byte)6));
+				break;
+
+			case Types.SMALLINT:
+				strbuf.append("setObject("+arg+", 66)");
+				cs.setObject(arg, new Integer((short)66));
+				break;
+
+			case Types.INTEGER:
+				strbuf.append("setObject("+arg+", 666)");
+				cs.setObject(arg, new Integer(666));
+				break;
+
+			case Types.BIGINT:
+				strbuf.append("setObject("+arg+", 666)");
+				cs.setObject(arg, new Long(666));
+				break;
+
+			case Types.FLOAT:
+			case Types.REAL:
+				strbuf.append("setObject("+arg+", 666)");
+				cs.setObject(arg, new Float(666));
+				break;
+
+			case Types.DOUBLE:
+				strbuf.append("setObject("+arg+", 666)");
+				cs.setObject(arg, new Double(666));
+				break;
+
+			case Types.DECIMAL:
+			case Types.NUMERIC:
+				strbuf.append("setObject("+arg+", 666.666)");
+				BigDecimal bd = new BigDecimal("666.666");
+				cs.setObject(arg, bd);
+				break;
+
+			case Types.CHAR:
+			case Types.VARCHAR:
+			case Types.LONGVARCHAR:
+				strbuf.append("setObject("+arg+", \"Set via setString()\")");
+				cs.setObject(arg, "Set via setString()");
+				break;
+
+			case Types.BINARY:
+			case Types.VARBINARY:
+			case Types.LONGVARBINARY:
+				strbuf.append("setObject("+arg+", byte[])");
+				byte[] myarray = new byte[16];
+				myarray[0] = (byte)255;
+				cs.setObject(arg, myarray);
+				break;
+
+			case Types.DATE:
+				strbuf.append("setObject("+arg+", Date.valueOf(1999-09-09))");
+				cs.setObject(arg, Date.valueOf("1999-09-09"));
+				break;
+
+			case Types.TIME:
+				strbuf.append("setObject("+arg+", Time.valueOf(09:09:09))");
+				cs.setObject(arg, Time.valueOf("09:09:09"));
+				break;
+
+			case Types.TIMESTAMP:
+				strbuf.append("setObject("+arg+", Timestamp.valueOf(1999-09-09 09:09:09.999))");
+				cs.setObject(arg, Timestamp.valueOf("1999-09-09 09:09:09.999"));
+				break;
+
+			case Types.OTHER:
+				strbuf.append("setObject("+arg+", new BigInteger(666))");
+				cs.setObject(arg, new BigInteger("666"));
+				break;
+
+			default:
+				throw new Throwable("TEST ERROR: unexpected type "+type);
+		}	
+	}
+	private static void callSetMethod(CallableStatement cs, int arg, int type, StringBuffer strbuf) throws Throwable
+	{
+		switch (type)	
+		{
+			case Types.BIT:
+			case JDBC30Translation.SQL_TYPES_BOOLEAN:
+				strbuf.append("setBoolean("+arg+", true)");
+				cs.setBoolean(arg, true);
+				break;
+
+			case Types.TINYINT:
+				strbuf.append("setByte("+arg+", 6)");
+				cs.setByte(arg, (byte)6);
+				break;
+
+			case Types.SMALLINT:
+				strbuf.append("setShort("+arg+", 66)");
+				cs.setShort(arg, (short)66);
+				break;
+
+			case Types.INTEGER:
+				strbuf.append("setInt("+arg+", 666)");
+				cs.setInt(arg, 666);
+				break;
+
+			case Types.BIGINT:
+				strbuf.append("setLong("+arg+", 666)");
+				cs.setLong(arg, 666);
+				break;
+
+			case Types.FLOAT:
+			case Types.REAL:
+				strbuf.append("setFLoat("+arg+", 666)");
+				cs.setFloat(arg, 666);
+				break;
+
+			case Types.DOUBLE:
+				strbuf.append("setDouble("+arg+", 666)");
+				cs.setDouble(arg, 666);
+				break;
+
+			case Types.DECIMAL:
+			case Types.NUMERIC:
+				strbuf.append("setBigDecimal("+arg+", 666.666)");
+				BigDecimal bd = new BigDecimal("666.666");
+				cs.setBigDecimal(arg, bd);
+				break;
+
+			case Types.CHAR:
+			case Types.VARCHAR:
+			case Types.LONGVARCHAR:
+				strbuf.append("setString("+arg+", \"Set via setString()\")");
+				cs.setString(arg, "Set via setString()");
+				break;
+
+			case Types.BINARY:
+			case Types.VARBINARY:
+			case Types.LONGVARBINARY:
+				strbuf.append("setBytes("+arg+", byte[])");
+				byte[] myarray = new byte[16];
+				myarray[0] = (byte)255;
+				cs.setBytes(arg, myarray);
+				break;
+
+			case Types.DATE:
+				strbuf.append("setDate("+arg+", Date.valueOf(1999-09-09))");
+				cs.setDate(arg, Date.valueOf("1999-09-09"));
+				break;
+
+			case Types.TIME:
+				strbuf.append("setTime("+arg+", Time.valueOf(09:09:09))");
+				cs.setTime(arg, Time.valueOf("09:09:09"));
+				break;
+
+			case Types.TIMESTAMP:
+				strbuf.append("setTimestamp("+arg+", Timestamp.valueOf(1999-09-09 09:09:09.999))");
+				cs.setTimestamp(arg, Timestamp.valueOf("1999-09-09 09:09:09.999"));
+				break;
+
+			case Types.OTHER:
+				strbuf.append("setObject("+arg+", new BigInteger(666))");
+				cs.setObject(arg, new BigInteger("666"));
+				break;
+
+			default:
+				throw new Throwable("TEST ERROR: unexpected type "+type);
+		}	
+	}
+
+	private static void callGetMethod(CallableStatement cs, int arg, int type, StringBuffer strbuf) throws Throwable
+	{
+		switch (type)	
+		{
+			case Types.BIT:
+			case JDBC30Translation.SQL_TYPES_BOOLEAN:
+				strbuf.append("getBoolean("+arg+") = ");
+				strbuf.append(cs.getBoolean(arg));
+				break;
+
+			case Types.TINYINT:
+				strbuf.append("getByte("+arg+") = ");
+				strbuf.append(Byte.toString(cs.getByte(arg)));
+				break;
+
+			case Types.SMALLINT:
+				strbuf.append("getShort("+arg+") = ");
+				strbuf.append(Short.toString(cs.getShort(arg)));
+				break;
+
+			case Types.INTEGER:
+				strbuf.append("getInt("+arg+") = ");
+				strbuf.append(Integer.toString(cs.getInt(arg)));
+				break;
+
+			case Types.BIGINT:
+				strbuf.append("getLong("+arg+") = ");
+				strbuf.append(Long.toString(cs.getLong(arg)));
+				break;
+
+			case Types.FLOAT:
+			case Types.REAL:
+				strbuf.append("getFloat("+arg+") = ");
+				strbuf.append(Float.toString(cs.getFloat(arg)));
+				break;
+
+			case Types.DOUBLE:
+				strbuf.append("getDouble("+arg+") = ");
+				strbuf.append(Double.toString(cs.getDouble(arg)));
+				break;
+
+			case Types.DECIMAL:
+			case Types.NUMERIC:
+				strbuf.append("getBigDecimal("+arg+") = ");
+				BigDecimal bd = cs.getBigDecimal(arg, 2);
+				strbuf.append(bd == null ? "null" : bd.toString());
+				break;
+
+			case Types.CHAR:
+			case Types.VARCHAR:
+			case Types.LONGVARCHAR:
+				strbuf.append("getString("+arg+") = ");
+				String s = cs.getString(arg);
+				if (s.startsWith("[B@"))
+					s = "byte[] reference";
+				strbuf.append(s);
+				break;
+
+			case Types.BINARY:
+			case Types.VARBINARY:
+			case Types.LONGVARBINARY:
+				strbuf.append("getBytes("+arg+") = ");
+				byteArrayToString(cs.getBytes(arg), strbuf);
+				break;
+
+			case Types.DATE:
+				strbuf.append("getDate("+arg+") = ");
+				Date date = cs.getDate(arg);
+				strbuf.append(date == null ? "null" : date.toString());
+				break;
+
+			case Types.TIME:
+				strbuf.append("getTime("+arg+") = ");
+				Time time = cs.getTime(arg);
+				strbuf.append(time == null ? "null" : time.toString());
+				break;
+
+			case Types.TIMESTAMP:
+				strbuf.append("getTimestamp("+arg+") = ");
+				Timestamp timestamp = cs.getTimestamp(arg);
+				strbuf.append(timestamp == null ? "null" : timestamp.toString());
+				break;
+
+			case Types.OTHER:
+				strbuf.append("getObject("+arg+") = ");
+				Object o = cs.getObject(arg);
+				if (o == null)
+				{
+					strbuf.append("null");
+				}
+				else if (o instanceof byte[])
+				{
+					byteArrayToString((byte[])o, strbuf);
+				}
+				else
+				{
+					strbuf.append(o.toString());
+				}
+
+				break;
+
+			default:
+				throw new Throwable("TEST ERROR: unexpected type "+type);
+		}	
+	}
+
+	static private void byteArrayToString(byte[] barray, StringBuffer strbuf)
+	{
+		if (barray == null)
+		{
+			strbuf.append("null");
+		}
+		else
+		{
+			for (int i = 0; i<barray.length; i++)
+			{
+				strbuf.append(barray[i]);
+			}
+		}
+	}
+
+	private static String getStringOfType(int type) throws Throwable
+	{
+		switch (type)
+		{
+			case Types.CHAR:
+			case Types.VARCHAR:
+			case Types.LONGVARCHAR:
+				return "I am a string";
+
+			case Types.TINYINT:
+			case Types.SMALLINT:
+			case Types.INTEGER:
+			case Types.BIGINT:
+			case Types.OTHER:		// other is bigInt
+				return "3";
+
+			case Types.FLOAT:
+			case Types.REAL:
+			case Types.DECIMAL:
+			case Types.NUMERIC:
+				return  "3.33";
+
+			case Types.DATE:		
+				return "1933-03-03";
+
+			case Types.TIME:		
+				return "03:03:03";
+
+			case Types.TIMESTAMP:		
+				return "1933-03-03 03:03:03.333";
+
+			case Types.BINARY:		
+			case Types.VARBINARY:		
+			case Types.LONGVARBINARY:
+				return "00680065006c006c006f";
+
+			case Types.BIT:
+			case JDBC30Translation.SQL_TYPES_BOOLEAN:
+				return "true";
+
+			default:
+				throw new Throwable("bad type "+type);
+		}	
+	}
+
+	/////////////////////////////////////////////////////////////
+	//	
+	// OUTPUT PARAMETER METHODS
+	//
+	/////////////////////////////////////////////////////////////
+	public static void testNull(Boolean passedInNull, Boolean setToNull, Integer[] retval) throws Throwable
+	{
+		if (passedInNull.booleanValue())
+		{
+			if (retval[0] != null)
+			{
+				throw new Throwable("testNull() got a non-null param when it should have been null");
+			}
+		}
+
+		retval[0] = (setToNull.booleanValue()) ? null : new Integer((short)66);
+	}
+
+	public static void testNullBug4317(String passedInNull) throws Throwable
+	{
+	}
+
+	public static void takesNothing()
+	{
+	}
+	public static void takesBytePrimitive(byte[] outparam, int type)
+	{
+		outparam[0]+=outparam[0];
+	}
+	public static void takesByte(Byte[] outparam, int type)
+	{
+		outparam[0] = new Byte((byte)(outparam[0] == null ? 33 : outparam[0].byteValue()*2));
+	}
+
+	public static void takesShortPrimitive(short[] outparam, int type)
+	{
+		outparam[0]+=outparam[0];
+	}
+	public static void takesShort(Short[] outparam, int type)
+	{
+		outparam[0] = new Short((byte)(outparam[0] == null ? 33 : outparam[0].shortValue()*2));
+	}
+
+	public static void takesIntegerPrimitive(int[] outparam, int type)
+	{
+		outparam[0]+=outparam[0];
+	}
+	public static void takesInteger(Integer[] outparam, int type)
+	{
+		outparam[0] = new Integer(outparam[0] == null ? 33 : outparam[0].intValue()*2);
+	}
+
+	public static void takesLongPrimitive(long[] outparam, int type)
+	{
+		outparam[0]+=outparam[0];
+	}
+	public static void takesLong(Long[] outparam, int type)
+	{
+		outparam[0] = new Long(outparam[0] == null ? 33 : outparam[0].longValue()*2);
+	}
+
+	public static void takesDoublePrimitive(double[] outparam, int type)
+	{
+		outparam[0]+=outparam[0];
+	}
+	public static void takesDouble(Double[] outparam, int type)
+	{
+		outparam[0] = new Double(outparam[0] == null ? 33 : outparam[0].doubleValue()*2);
+	}
+
+	public static void takesFloatPrimitive(float[] outparam, int type)
+	{
+		outparam[0]+=outparam[0];
+	}
+	public static void takesFloat(Float[] outparam, int type)
+	{
+		outparam[0] = new Float(outparam[0] == null ? 33 : outparam[0].floatValue()*2);
+	}
+
+	public static void takesBooleanPrimitive(boolean[] outparam, int type)
+	{
+		outparam[0] = true;
+	}
+	public static void takesBoolean(Boolean[] outparam, int type)
+	{
+		outparam[0] = new Boolean(true);
+	}
+
+	public static void takesBigDecimal(BigDecimal[] outparam, int type)
+	{
+		outparam[0] = (outparam[0] == null ? new BigDecimal("33") : outparam[0].add(outparam[0]));
+		outparam[0].setScale(4, BigDecimal.ROUND_DOWN);
+	}
+
+	public static void takesByteArray(byte[][] outparam, int type)
+	{
+		byte[] myarray = new byte[16];
+		myarray[0] = (byte)255;
+		outparam[0] = myarray;
+	}
+
+	public static void takesDate(Date[] outparam, int type)
+	{
+		outparam[0] = Date.valueOf("1966-06-06");
+	}
+
+	public static void takesTime(Time[] outparam, int type)
+	{
+		outparam[0] = Time.valueOf("06:06:06");
+	}
+
+	public static void takesTimestamp(Timestamp[] outparam, int type)
+	{
+		outparam[0] = Timestamp.valueOf("1966-06-06 06:06:06.666");
+	}
+
+	public static void takesString(String[] outparam, int type) throws Throwable
+	{
+		outparam[0] = getStringOfType(type);
+	}
+
+	public static void takesBigInteger(BigInteger[] outparam, int type)
+	{
+		outparam[0] = (outparam[0] == null ? new BigInteger("33") : outparam[0].add(outparam[0]));
+	}
+	
+	
+	/////////////////////////////////////////////////////////////
+	//	
+	// RETURN PARAMETER METHODS
+	//
+	/////////////////////////////////////////////////////////////
+	public static void returnsNothing()
+	{
+	}
+
+	public static byte returnsByteP(int type)
+	{
+		return 66;
+	}
+	public static Byte returnsByte(int type)
+	{
+		return new Byte((byte)66);
+	}
+
+	public static short returnsShortP(int type)
+	{
+		return 666;
+	}
+	public static Short returnsShort(int type)
+	{
+		return new Short((short)666);
+	}
+
+	public static int returnsIntegerP(int type)
+	{
+		return 666;
+	}
+	public static Integer returnsInteger(int type)
+	{
+		return new Integer(666);
+	}
+
+	public static long returnsLongP(int type)
+	{
+		return 666;
+	}
+	public static Long returnsLong(int type)
+	{
+		return new Long(666);
+	}
+
+	public static float returnsFloatP(int type)
+	{
+		return 666;
+	}
+	public static Float returnsFloat(int type)
+	{
+		return new Float(666);
+	}
+
+	public static double returnsDoubleP(int type)
+	{
+		return 666;
+	}
+	public static Double returnsDouble(int type)
+	{
+		return new Double(666);
+	}
+
+
+	public static BigDecimal returnsBigDecimal(int type)
+	{
+		return new BigDecimal(666d);
+	}
+
+	public static byte[] returnsByteArray(int type)
+	{
+		byte[] myarray = new byte[16];
+		myarray[0] = (byte)255;
+		return myarray;
+	}
+
+	public static String returnsString(int type) throws Throwable
+	{
+		return getStringOfType(type);
+	}
+
+	public static Date returnsDate(int type)
+	{
+		return Date.valueOf("1966-06-06");
+	}
+
+	public static Time returnsTime(int type)
+	{
+		return Time.valueOf("06:06:06");
+	}
+
+	public static Timestamp returnsTimestamp(int type)
+	{
+		return Timestamp.valueOf("1966-06-06 06:06:06.666");
+	}
+
+	public static BigInteger returnsBigInteger(int type)
+	{
+		return new BigInteger("666");
+	}
+
+
+	// these come from the performance test JDBC.Parameters that was failing
+	private static void testManyOut(Connection conn) throws SQLException {
+
+		System.out.println("start testManyOut");
+
+		Statement scp = conn.createStatement();
+
+		scp.execute("CREATE PROCEDURE OP_OUT " +
+			"(OUT I1 INT, OUT I2 INT, OUT I3 INT, OUT I4 INT, OUT I5 INT, "+
+			"OUT V1 VARCHAR(40), OUT V2 VARCHAR(40), OUT V3 VARCHAR(40), OUT V4 VARCHAR(40), OUT V5 VARCHAR(40)) "+
+
+			"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.output' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+		scp.execute("CREATE PROCEDURE OP_INOUT " +
+			"(INOUT I1 INT, INOUT I2 INT, INOUT I3 INT, INOUT I4 INT, INOUT I5 INT, " +
+			"INOUT V1 VARCHAR(40), INOUT V2 VARCHAR(40), INOUT V3 VARCHAR(40), INOUT V4 VARCHAR(40), INOUT V5 VARCHAR(40)) " +
+
+			"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.output' NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+
+		CallableStatement csOut_cs = conn.prepareCall("CALL OP_OUT(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+		CallableStatement csInOut_cs = conn.prepareCall("CALL OP_INOUT(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
+
+		System.out.println("Ten OUT parameters");
+
+		executeOutput(csOut_cs);
+		executeOutput(csOut_cs);
+
+		csOut_cs.close();
+
+		System.out.println("Ten INOUT parameters");
+
+
+		setupInput(csInOut_cs);
+		executeOutput(csInOut_cs);
+
+		setupInput(csInOut_cs);
+		executeOutput(csInOut_cs);
+
+		csInOut_cs.close();
+
+		scp.execute("DROP PROCEDURE OP_OUT");
+		scp.execute("DROP PROCEDURE OP_INOUT");
+		scp.close();
+
+
+		System.out.println("end testManyOut");
+
+
+	}
+
+
+	private static void setupInput(PreparedStatement ps) throws SQLException {
+
+		ps.setInt(1, 0);
+		ps.setInt(2, 0);
+		ps.setInt(3, 99);
+		ps.setInt(4, 103);
+		ps.setInt(5, 1456);
+
+		ps.setNull(6, Types.CHAR);
+		ps.setString(7, null);
+		ps.setString(8, "hello");
+		ps.setString(9, "goodbye");
+		ps.setString(10, "welcome");
+	}
+	private static void executeOutput(CallableStatement cs) throws SQLException {
+
+		for (int p = 1; p <= 5; p++)
+			cs.registerOutParameter(p, Types.INTEGER);
+
+		for (int p = 6; p <= 10; p++)
+			cs.registerOutParameter(p, Types.VARCHAR);
+
+		cs.execute();
+
+		for (int p = 1; p <= 5; p++) {
+			System.out.println("  " + p + " = " + cs.getInt(p) + " was null " + cs.wasNull());
+	
+		}
+		for (int p = 6; p <= 10; p++) {
+			System.out.println("  " + p + " = " + cs.getString(p) + " was null " + cs.wasNull());
+		}
+	}
+
+
+	public static void output(int[] a1, int[] a2, int[] a3, int[] a4, int[] a5,
+		String[] s1, String[] s2, String[] s3, String[] s4, String[] s5) {
+
+		System.out.println("  a1 = " + a1[0]);
+		System.out.println("  a2 = " + a2[0]);
+		System.out.println("  a3 = " + a3[0]);
+		System.out.println("  a4 = " + a4[0]);
+		System.out.println("  a5 = " + a5[0]);
+
+		System.out.println("  s1 = " + s1[0]);
+		System.out.println("  s2 = " + s2[0]);
+		System.out.println("  s3 = " + s3[0]);
+		System.out.println("  s4 = " + s4[0]);
+		System.out.println("  s5 = " + s5[0]);
+
+		a1[0] = 0;
+		a2[0] = 0;
+		a3[0] = 77;
+		a4[0] = 4;
+		a5[0] = 2003;
+
+		s1[0] = null;
+		s2[0] = null;
+		s3[0] = "cloudscape";
+		s4[0] = "jbms";
+		s5[0] = "IBM CS";
+	}
+
+	private static void test5116(Connection conn) throws Throwable
+	{
+		System.out.println("==============================================");
+		System.out.println("TESTING FIX OF 5116 -- VAR BIT VARYING INPUT");
+		System.out.println("==============================================\n");
+
+		Statement stmt = conn.createStatement();
+		stmt.executeUpdate("CREATE TABLE ACTIVITY_INSTANCE_T (" +
+    "AIID                               char(16) for bit data              NOT NULL ," +
+    "KIND                               INTEGER                            NOT NULL ," +
+    "PIID                               char(16) for bit data              NOT NULL ," +
+    "PTID                               char(16) for bit data              NOT NULL ," +
+    "ATID                               char(16) for bit data              NOT NULL ," +
+    "RUN_MODE                           INTEGER                            NOT NULL ," +
+    "FINISHED                           TIMESTAMP                                   ," +
+    "ACTIVATED                          TIMESTAMP                                   ," +
+    "STARTED                            TIMESTAMP                                   ," +
+    "LAST_MODIFIED                      TIMESTAMP                                   ," +
+    "LAST_STATE_CHANGE                  TIMESTAMP                                   ," +
+    "STATE                              INTEGER                            NOT NULL ," +
+    "TRANS_COND_VALUES                  VARCHAR(66) FOR BIT DATA           NOT NULL ," +
+    "NUM_CONN_ACT_EVA                   INTEGER                            NOT NULL ," +
+    "NUMBER_OF_ITERATIONS               INTEGER                            NOT NULL ," +
+    "NUMBER_OF_RETRIES                  INTEGER                            NOT NULL ," +
+    "HAS_CUSTOM_ATTRIBUTES              SMALLINT                           NOT NULL ," +
+    "NON_BLOCK_PTID                     char(16) for bit data              NOT NULL ," +
+    "NON_BLOCK_PIID                     char(16) for bit data              NOT NULL ," +
+    "EXPIRES                            TIMESTAMP                                   ," +
+    "TASK_ID                            VARCHAR(254)                                ," +
+    "UNHANDLED_EXCEPTION                BLOB(3993600)                       ," +
+    "SUB_PROCESS_PIID                   char(16) for bit data                                    ," +
+    "OWNER                              VARCHAR(32)                                 ," +
+    "USER_INPUT                         VARCHAR(130) FOR BIT DATA                   ," +
+    "DESCRIPTION                        VARCHAR(254)                                ," +
+    "VERSION_ID                         SMALLINT                           NOT NULL ," +
+    "PRIMARY KEY ( AIID ) )");
+
+		stmt.execute("CREATE PROCEDURE doInsertion(IN P1 VARCHAR(2) FOR BIT DATA) " +
+						"EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.outparams.doInsertion'" +
+						" MODIFIES SQL DATA LANGUAGE JAVA PARAMETER STYLE JAVA");
+
+		CallableStatement cs = conn.prepareCall("call doInsertion (?)");
+		cs.setNull(1, java.sql.Types.VARBINARY);
+		cs.execute();
+        byte [] b = new byte[2];
+        b[0]=1; b[1] = 2;
+        cs.setBytes( 1, b );
+		cs.execute();
+		cs.close();
+		stmt.executeUpdate("DROP PROCEDURE doInsertion");
+		stmt.close();
+	}
+
+	public static void doInsertion (byte[] p25) throws Throwable
+	{
+		Connection connNested = DriverManager.getConnection("jdbc:default:connection");
+		Statement stmt = connNested.createStatement();
+		stmt.executeUpdate("delete from ACTIVITY_INSTANCE_T");
+
+        String strStmt = "INSERT INTO ACTIVITY_INSTANCE_T VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )";
+        PreparedStatement pstmt = connNested.prepareStatement( strStmt );
+
+        byte [] b = new byte[2];
+        b[0]=1;
+		byte[] b2 = new byte[1];
+		b2[0] = 0;
+
+         pstmt.setBytes( 1, b ); //ids
+         pstmt.setInt( 2, 0);
+         pstmt.setBytes( 3, b );
+         pstmt.setBytes( 4, b );
+         pstmt.setBytes( 5, b );
+         pstmt.setInt( 6, 0);
+         pstmt.setNull( 7, java.sql.Types.TIMESTAMP);
+         pstmt.setNull( 8, java.sql.Types.TIMESTAMP);
+         pstmt.setNull( 9, java.sql.Types.TIMESTAMP);
+         pstmt.setNull( 10, java.sql.Types.TIMESTAMP);
+         pstmt.setNull( 11, java.sql.Types.TIMESTAMP);
+         pstmt.setInt( 12, 0);
+         pstmt.setBytes( 13, b );
+
+         pstmt.setInt( 14, 0);
+         pstmt.setInt( 15, 0);
+         pstmt.setInt( 16, 0);
+         pstmt.setBoolean( 17, false);
+         pstmt.setBytes( 18, b );
+         pstmt.setBytes( 19, b );
+         pstmt.setNull( 20, java.sql.Types.TIMESTAMP);
+         pstmt.setNull( 21, java.sql.Types.VARCHAR);
+         pstmt.setNull( 22, java.sql.Types.BLOB );
+         pstmt.setNull( 23, java.sql.Types.VARBINARY );
+         pstmt.setNull( 24, java.sql.Types.VARCHAR);
+		if (p25 == null)
+             pstmt.setNull( 25, java.sql.Types.VARBINARY);
+		else
+			 pstmt.setBytes(25, p25);
+         pstmt.setNull( 26, java.sql.Types.VARCHAR);
+         pstmt.setShort( 27, (short) 0);
+         pstmt.executeUpdate();
+         pstmt.close();
+
+         pstmt = connNested.prepareStatement( "SELECT version_id, user_input FROM activity_instance_t");
+         ResultSet resultSet = pstmt.executeQuery();
+         System.out.println("Executed query");
+         while( resultSet.next() )
+         {
+            System.out.println("i= " + resultSet.getInt(1) );
+            byte [] userInput = resultSet.getBytes(2);
+            if( userInput == null || resultSet.wasNull() )
+            {
+				if( userInput == null)
+               		System.out.println("UserInput = null");
+				if (resultSet.wasNull())
+               		System.out.println("resultSet wasNull");
+            }
+            else
+            {
+               System.out.println("UserInput length  = " + userInput.length + " bytes");
+               for( int i=0; i<userInput.length; i++ )
+               {
+                  System.out.println( i + ") = " + userInput[i] );
+               }
+            }
+         }
+         System.out.println("Close result set.");
+         resultSet.close();
+         pstmt.close();
+         stmt.close();
+		 connNested.close();
+   }
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/paramij.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/paramij.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,82 @@
+--
+-- test that we do not allow incorrect where <boolean> syntax
+
+create table t1 (c11 int);
+insert into t1 values (1);
+
+autocommit off;
+
+-- positive tests
+-- In following test cases, where clause results in a boolean value
+prepare p1 as 'select * from t1 where ?=1'; 
+execute p1 using 'values(1)';
+
+prepare p1 as 'select * from t1 where ? like ''2'' ';
+execute p1 using 'values(''a'')';
+
+prepare p1 as 'select * from t1 where not ? > 1';
+execute p1 using 'values(1)';
+
+prepare p1 as 'select * from t1 where lower(?) = ''a''';
+execute p1 using 'values(''a'')';
+
+prepare p1 as 'select * from t1 where {fn length(?)} > 1';
+execute p1 using 'values(''a'')';
+
+prepare p1 as 'select * from t1 where {fn locate(?,''a'',1)} = 1';
+execute p1 using 'values(''a'')';
+
+prepare p1 as 'select * from t1 where ? between 1 and 3';
+execute p1 using 'values(2)';
+
+prepare p1 as 'select * from t1 where ? in (1, ?)';
+execute p1 using 'values(2,1)';
+
+prepare p1 as 'select * from t1 where ? is null';
+execute p1 using 'values(1)';
+
+prepare p1 as 'select * from t1 where ? is not null';
+execute p1 using 'values(1)';
+
+prepare p1 as 'select * from t1 where ? <> ALL (values(1))';
+execute p1 using 'values(3)';
+
+prepare p1 as 'select * from t1 where exists (select c11 from t1 where 1=?)';
+execute p1 using 'values(3)';
+
+
+prepare p1 as 'select * from t1 where cast(? as int) = 1';
+execute p1 using 'values(1)';
+
+-- negative tests
+-- In following test cases, there is no way to ensure where with ? will result in a boolean value
+
+prepare p1 as 'select * from t1 where c11';
+
+prepare p1 as 'select * from t1 where c11+1';
+
+prepare p1 as 'select * from t1 where 1';
+
+prepare p1 as 'select * from t1 where ?';
+
+prepare p1 as 'select * from t1 where ? for update';
+
+prepare p1 as 'select * from t1 where (?)';
+
+prepare p1 as 'select * from t1 where ? and 1=1';
+
+prepare p1 as 'select * from t1 where ? and 1=? or 2=2'; 
+
+prepare p1 as 'select * from t1 where not ?';
+
+prepare p1 as 'select * from t1 where lower(?)';
+
+prepare p1 as 'select * from t1 where lower(?) and 1=1';
+
+prepare p1 as 'select * from t1 where {fn length(?)}';
+
+prepare p1 as 'select * from t1 where {fn locate(?,''a'',1)}';
+
+prepare p1 as 'select * from t1 where cast(? as int)';
+
+prepare p1 as 'select * from t1 where (?||''1'')';

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,331 @@
+--
+-- Test partial row access for update and delete
+--
+maximumdisplaywidth 2000;
+
+drop function getScanCols;
+drop table basic;
+drop table p;
+
+CREATE FUNCTION getScanCols(value VARCHAR(32672)) 
+       RETURNS VARCHAR (32672) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StatParser.getScanCols' 
+       LANGUAGE JAVA PARAMETER STYLE JAVA NO SQL;
+
+create table p (ccharForBitData char(1) for bit data not null, cdec dec(6,2) not null, unindexed smallint, cchar char(10) not null, 
+		constraint pk1 primary key (cchar, ccharForBitData), constraint pk2 unique (cdec));
+
+insert into p values (x'00', 0.0, 11, '00');
+insert into p values (x'11', 1.1, 22, '11');
+insert into p values (x'22', 2.2, 33, '22');
+insert into p values (x'33', 3.3, 44, '33');
+
+create table basic (cint int, cchar char(10), 
+		ctime time, cdec dec(6,2), 
+		ccharForBitData char(1) for bit data, unindexed int);
+
+create index b1 on basic (cchar, ccharForBitData, cint);
+create index b2 on basic (ctime);
+create index b3 on basic (ctime, cint);
+create index b4 on basic (cint);
+
+maximumdisplaywidth 200;
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+
+-- the extra 33s are so we can ensure we'll use an index when looking for the others
+insert into basic values (11, '11', TIME('11:11:11'), 1.1, x'11', 11);
+insert into basic values (22, '22', TIME('22:22:22'), 2.2, x'22', 22);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+insert into basic values (33, '33', TIME('03:33:33'), 3.3, x'33', 33);
+
+-- simple update of each column
+update basic set cint = cint;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cchar = cchar;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ctime = ctime;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cdec = cdec;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ccharForBitData = ccharForBitData;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set unindexed = unindexed;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+-- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+
+update basic set cint = cint where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cchar = cchar where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ctime = ctime where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ctime = ctime where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cdec = cdec where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ccharForBitData = ccharForBitData where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+-- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+
+update basic set cint = cint where ccharForBitData = x'11';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cchar = cchar where ccharForBitData = x'11';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ctime = ctime where ccharForBitData = x'11';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cdec = cdec where ccharForBitData = x'11';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ccharForBitData = ccharForBitData where ccharForBitData = x'11';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+-- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+
+autocommit off;
+
+update basic set cdec = cint;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+-- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+
+rollback;
+
+update basic set cchar = cchar where cdec = 3.3 and ctime = TIME('03:33:33');
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ctime = ctime, cchar = cchar, cint = cint, cdec = cdec, ccharForBitData = ccharForBitData;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+-- confirm the table is ok
+select ccharForBitData, ctime, cdec, cint, cchar from basic;
+values (SYSCS_UTIL.SYSCS_CHECK_TABLE('APP', 'BASIC'));
+
+--------------------------------------------------------------------------
+-- deletes
+--------------------------------------------------------------------------
+
+--
+-- index scans
+--
+delete from basic where cchar = '22';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cint = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where ctime = TIME('22:22:22');
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where ccharForBitData = x'22';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cdec = 2.2;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+--
+-- index row to base row 
+--
+delete from basic where cchar = '22' and unindexed = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cint = 22 and unindexed = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where ctime = TIME('22:22:22') and unindexed = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where ccharForBitData = x'22' and unindexed = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cdec = 2.2 and unindexed = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+
+--
+-- table scans
+--
+delete from basic where cchar > '00';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cint > 1;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where ctime > TIME('00:00:01');
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where ccharForBitData > x'11';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cdec > 2;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where unindexed = 22;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+--
+-- some checks on deferred deletes
+--
+delete from basic where unindexed = (select min(cint) from basic);
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+
+delete from basic where cint = (select min(cint) from basic);
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cdec = (select min(cdec) from basic);
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cdec = 1.1 and cchar = (select min(cchar) from basic);
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+
+--
+-- quickly confirm that we get all columns for updateable cursors
+--
+get cursor c as 'select cint from basic for update';
+next c;
+
+----------------------------------------------------------------- 
+-- now lets try some constraints
+----------------------------------------------------------------- 
+
+--
+-- check constraints
+--
+alter table basic add constraint ck check (unindexed > cdec);
+commit;
+
+update basic set unindexed = unindexed where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+update basic set unindexed = unindexed;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+update basic set cdec = cdec where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+delete from basic where cint = 11;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+
+-- one that isn't affected by contstraint
+update basic set ctime = ctime;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+-- confirm it is working ok
+update basic set unindexed = 0;
+rollback;
+
+
+--
+-- foreign keys
+--
+alter table basic add constraint fk1 foreign key (cchar, ccharForBitData) references p;
+commit;
+
+update basic set cchar = cchar, ccharForBitData = ccharForBitData;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set cchar = cchar;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+
+update basic set ccharForBitData = ccharForBitData;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+--pk update
+
+-- only this update should fail, does not satisfy fk1
+update p set ccharForBitData = x'22', cchar = CAST(unindexed as CHAR(10));
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+update p set cdec = cdec + 1.1;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+update p set unindexed = 666, cchar = 'fail';
+rollback;
+
+-- only this update should fail, does not satisfy fk1
+update p set ccharForBitData = x'66' where ccharForBitData = x'22';
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+
+alter table basic add constraint fk2 foreign key (cdec) references p(cdec);
+commit;
+
+update p set cdec = cdec + 1.1;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+update basic set cdec = cdec, cint = cint, ccharForBitData = ccharForBitData, cchar = cchar;
+values getScanCols(SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS());
+rollback;
+
+update basic set cdec = cdec+1.1, cint = cint, ccharForBitData = ccharForBitData, cchar = cchar;
+rollback;
+
+delete from p where cdec = 1.1;
+rollback;
+
+-- clean up
+drop function getScanCols;
+drop table basic;
+drop table p;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/partdml_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/positionedDelUpd.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/positionedDelUpd.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,698 @@
+-- ** insert positionedDelete.sql
+--
+-- tests for positioned delete
+--
+-- 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:
+-- 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 );
+create table t1_copy ( i int, v varchar(10), d double precision, t time );
+
+create table t2 ( s smallint, c char(10), r real, ts timestamp );
+
+-- populate the first table and copy
+insert into t1 values (1, '1111111111', 11e11, time('11:11:11'));
+insert into t1_copy select * from t1;
+
+-- we need to turn autocommit off so that cursors aren't closed before
+-- the positioned statements against them.
+autocommit off;
+
+-- empty table tests
+
+-- .no table name given
+-- this should fail with a syntax error
+delete;
+
+-- this should succeed
+get cursor c0 as 'select * from t1 for update';
+next c0;
+delete from t1 where current of c0;
+select * from t1;
+close c0;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .same table name
+-- .cursor before 1st row
+get cursor c1 as 'select * from t2 for update';
+-- 'cursor not on a row' expected
+delete from t2 where current of c1;
+
+-- .different table name
+delete from t1 where current of c1;
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .non-existant table
+delete from not_exists where current of c1;
+close c1;
+
+-- .delete from  base table, not exposed table name
+-- (this one should work, since base table)
+get cursor c2 as 'select * from t2 asdf for update';
+delete from t2 where current of c2;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .match correlation name
+-- (this one should fail, since correlation name)
+delete from asdf where current of c2;
+close c2;
+
+-- .non-updatable cursor
+-- NOTE - forupdate responsible for extensive tests
+get cursor c3 as 'select * from t2 for read only';
+delete from t2 where current of c3;
+close c3;
+
+-- .target cursor does not exist
+delete from t2 where current of c44;
+
+-- .target cursor after last row
+get cursor c4 as 'select * from t1 for update';
+next c4;
+next c4;
+next c4;
+delete from t1 where current of c4;
+close c4;
+
+-- .target cursor exists, closed
+get cursor c5 as 'select * from t1';
+close c5;
+delete from t1 where current of c5;
+
+-- .target cursor on row
+get cursor c6 as 'select * from t1 for update';
+next c6;
+delete from t1 where current of c6;
+select * from t1;
+close c6;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .target cursor on row deleted by another cursor
+get cursor c7 as 'select * from t1 for update';
+next c7;
+get cursor c8 as 'select * from t1 for update';
+next c8;
+delete from t1 where current of c7;
+delete from t1 where current of c8;
+select * from t1;
+close c7;
+close c8;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .target cursor on already deleted row
+get cursor c9 as 'select * from t1 for update';
+next c9;
+delete from t1 where current of c9;
+delete from t1 where current of c9;
+select * from t1;
+close c9;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- delete to row which was subject to searched update
+-- (row still within cursor qualification)
+get cursor c10 as 'select * from t1 for update';
+next c10;
+update t1 set i = i + 1;
+select * from t1;
+delete from t1 where current of c10;
+select * from t1;
+close c10;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- delete to row which was subject to searched update
+-- (row becomes outside of cursor qualification)
+get cursor c10a as 'select * from t1 where i = 1 for update';
+next c10a;
+update t1 set i = i + 1;
+select * from t1;
+delete from t1 where current of c10a;
+select * from t1;
+close c10a;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- delete to row which was subject to positioned update
+-- (row becomes outside of cursor qualification)
+get cursor c11 as 'select * from t1 where i = 1 for update';
+next c11;
+update t1 set i = i + 1 where current of c11;
+select * from t1;
+delete from t1 where current of c11;
+select * from t1;
+close c11;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- delete to row which was subject to 2 searched updates
+-- (1st puts row outside of cursor qualification, 2nd restores it)
+get cursor c12 as 'select * from t1 where i = 1 for update';
+next c12;
+update t1 set i = i + 1;
+update t1 set i = 1;
+select * from t1;
+delete from t1 where current of c12;
+select * from t1;
+close c12;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- positioned delete on table with index (#724)
+create table t5 (c1 int, c2 int);
+insert into t5 values (1, 1), (2, 2), (3, 3), (4, 4);
+commit;
+create index i5 on t5(c1);
+get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+next c1;
+delete from t5 where current of c1;
+next c1;
+next c1;
+delete from t5 where current of c1;
+select * from t5;
+close c1;
+rollback;
+create index i5 on t5(c2);
+get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+next c1;
+delete from t5 where current of c1;
+next c1;
+next c1;
+delete from t5 where current of c1;
+select * from t5;
+close c1;
+rollback;
+
+-- reset autocommit
+autocommit on;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table t5;
+drop table t1_copy;
+
+-- ** insert positionedUpdate.sql
+--
+-- tests for positioned update
+--
+-- 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:
+-- 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 );
+create table t1_copy ( i int, v varchar(10), d double precision, t time );
+
+create table t2 ( s smallint, c char(10), r real, ts timestamp );
+
+-- populate the first table and copy
+insert into t1 values (1, '1111111111', 11e11, time('11:11:11'));
+insert into t1_copy select * from t1;
+
+-- we need to turn autocommit off so that cursors aren't closed before
+-- the positioned statements against them.
+autocommit off;
+
+-- empty table tests
+
+-- .no table name given
+-- this should fail with a syntax error
+update set c1 = c1;
+
+-- this should succeed
+get cursor c0 as 'select * from t1 for update';
+next c0;
+update t1 set i = 999 where current of c0;
+select * from t1;
+update t1 set i = 1 where current of c0;
+select * from t1;
+close c0;
+
+-- .same table name
+-- .cursor before 1st row
+get cursor c1 as 'select * from t2 for update';
+-- 'cursor not on a row' expected
+update t2 set s = s where current of c1;
+
+-- .different table name
+update t1 set i = i where current of c1;
+
+-- .non-existant table
+update not_exists set i = i where current of c1;
+close c1;
+
+-- .update base table, not exposed table name
+-- (this one should work, since base table)
+get cursor c2 as 'select * from t2 asdf for update';
+update t2 set s = s where current of c2;
+
+-- .match correlation name
+-- (this one should fail, since correlation name)
+update asdf set s = s where current of c2;
+close c2;
+
+-- .non-updatable cursor
+-- NOTE - forupdate responsible for extensive tests
+get cursor c3 as 'select * from t2 for read only';
+update t2 set s = s where current of c3;
+close c3;
+
+-- .target cursor does not exist
+update t2 set s = s where current of c44;
+
+-- .target cursor after last row
+get cursor c4 as 'select * from t1 for update';
+next c4;
+next c4;
+next c4;
+update t1 set i = i where current of c4;
+close c4;
+
+-- .target cursor exists, closed
+get cursor c5 as 'select * from t1';
+close c5;
+update t1 set i = i where current of c5;
+
+-- .target cursor on row
+get cursor c6 as 'select * from t1 for update';
+next c6;
+update t1 set i = i + 1 where current of c6;
+select * from t1;
+-- .consecutive updates to same row in cursor, keeping it in the cursor qual
+update t1 set i = i + 1 where current of c6;
+select * from t1;
+close c6;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .target cursor on row deleted by another cursor
+get cursor c7 as 'select * from t1 for update';
+next c7;
+get cursor c8 as 'select * from t1 for update';
+next c8;
+delete from t1 where current of c7;
+update t1 set i = i + 1 where current of c8;
+select * from t1;
+close c7;
+close c8;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .target cursor on already deleted row
+get cursor c9 as 'select * from t1 for update';
+next c9;
+delete from t1 where current of c9;
+update t1 set i = i + 1 where current of c9;
+select * from t1;
+close c9;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- update to row which was subject to searched update
+-- (row still within cursor qualification)
+get cursor c10 as 'select * from t1 for update';
+next c10;
+update t1 set i = i + 1;
+select * from t1;
+update t1 set i = i + 2 where current of c10;
+select * from t1;
+close c10;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- update to row which was subject to searched update
+-- (row becomes outside of cursor qualification)
+get cursor c10a as 'select * from t1 where i = 1 for update';
+next c10a;
+update t1 set i = i + 1;
+select * from t1;
+update t1 set i = i + 2 where current of c10a;
+select * from t1;
+close c10a;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- update to row which was subject to positioned update
+-- (row becomes outside of cursor qualification)
+get cursor c11 as 'select * from t1 where i = 1 for update';
+next c11;
+update t1 set i = i + 1 where current of c11;
+select * from t1;
+update t1 set i = i + 2 where current of c11;
+select * from t1;
+close c11;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- update to row which was subject to 2 searched updates
+-- (1st puts row outside of cursor qualification, 2nd restores it)
+get cursor c12 as 'select * from t1 where i = 1 for update';
+next c12;
+update t1 set i = i + 1;
+update t1 set i = 1;
+select * from t1;
+update t1 set i = i + 2 where current of c12;
+select * from t1;
+
+-- negative test - try to update a non-existant column
+update t1 set notacolumn = i + 1 where current of c12;
+
+close c12;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- update column not in SELECT list, but in FOR UPDATE OF list
+get cursor c13 as 'select i from t1 for update of v';
+next c13;
+update t1 set v = '999' where current of c13;
+select * from t1;
+
+-- update column not in FOR UPDATE OF list (negative test)
+update t1 set i = 999 where current of c13;
+select * from t1;
+close c13;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- update a non-referenced column
+get cursor c14 as 'select i from t1 for update';
+next c14;
+update t1 set v = '999' where current of c14;
+select * from t1;
+close c14;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .update columns in list in order different from the list's
+get cursor c15 as 'select i, v from t1 for update of i, v';
+next c15;
+update t1 set v = '999', i = 888 where current of c15;
+select * from t1;
+
+-- . show that target table name must be used as qualifier, other names not allowed
+update t1 set t1.v = '998' where current of c15;
+update t1 set t2.v = '997' where current of c15;
+select * from t1;
+close c15;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .update only 1 column in the list
+get cursor c16 as 'select i, v from t1 for update of i, v';
+next c16;
+update t1 set v = '999' where current of c16;
+select * from t1;
+close c16;
+
+-- restore t1
+delete from t1;
+insert into t1 select * from t1_copy;
+select * from t1;
+
+-- .try to update through a closed cursor
+get cursor c17 as 'select i, v from t1 for update of i, v';
+next c17;
+close c17;
+update t1 set v = '999' where current of c17;
+select * from t1;
+
+-- a positioned update requires a named target table.
+-- if we prepare the positioned update, close the underlying cursor
+-- and reopen it on a different table, then the positioned update
+-- should fail 
+
+create table t3(c1 int, c2 int);
+insert into t3 values (1,1), (2, 1), (3,3);
+create table t4(c1 int, c2 int);
+insert into t4 select * from t3;
+
+get cursor c1 as 'select c1 from t3 for update of c1';
+next c1;
+prepare u1 as 'update t3 set c1 = c1 + 1 where current of c1';
+execute u1;
+next c1;
+select * from t3;
+
+close c1;
+
+get cursor c1 as 'select c1 from t4 for update of c1';
+next c1;
+execute u1;
+select * from t4;
+select * from t3;
+
+close c1;
+
+-- now, reopen c1 on a table without column c1 and see
+-- what happens on an attempted positioned update
+get cursor c1 as 'select * from t1 for update';
+next c1;
+execute u1;
+
+close c1;
+
+-- now, reopen c1 on t3, but as a read only cursor
+select * from t3;
+get cursor c1 as 'select c1 from t3 ';
+next c1;
+execute u1;
+select * from t3;
+
+close c1;
+
+-- positioned update on table with index (#724)
+create table t5 (c1 int, c2 int);
+insert into t5 values (1, 1), (2, 2), (3, 3), (4, 4);
+commit;
+create index i5 on t5(c1);
+get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+next c1;
+update t5 set c2 = 9 where current of c1;
+next c1;
+next c1;
+update t5 set c2 = 9 where current of c1;
+select * from t5;
+close c1;
+rollback;
+create index i5 on t5(c2);
+get cursor c1 as 'select * from t5 where c1 > 1 for update of c2';
+next c1;
+update t5 set c2 = 9 where current of c1;
+next c1;
+next c1;
+update t5 set c2 = 9 where current of c1;
+select * from t5;
+close c1;
+rollback;
+
+
+-- reset autocommit
+autocommit on;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+drop table t5;
+drop table t1_copy;
+
+-- tests for beetle 4417, schema and correlation name not working with
+-- current of
+create schema ejb;
+create table ejb.test1
+	(primarykey varchar(41) not null primary key,
+	name varchar(200),
+	parentkey varchar(41));
+insert into ejb.test1 values('0','jack','jill');
+autocommit off;
+
+-- test update with schema name
+get cursor c1 as 'select primarykey, parentkey, name from ejb.test1 where primarykey = ''0'' for update';
+next c1;
+prepare p1 as 'update ejb.test1 set name = ''john'' where current of c1';
+execute p1;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- test update with schema name and correlation name
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p1 as 'update ejb.test1 set name = ''joe'' where current of c1';
+execute p1;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- test update with set schema
+set schema ejb;
+get cursor c1 as 'select primarykey, parentkey, name from test1 where primarykey = ''0'' for update';
+next c1;
+prepare p1 as 'update test1 set name = ''john'' where current of c1';
+execute p1;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- test update with set schema and correlation name
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p1 as 'update test1 set name = ''joe'' where current of c1';
+execute p1;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- test update with set schema and correlation name and schema name
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p1 as 'update ejb.test1 set name = ''joe'' where current of c1';
+execute p1;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- 
+-- reset schema name
+set schema app;
+
+-- test delete with schema name 
+get cursor c1 as 'select primarykey, parentkey, name from ejb.test1 where primarykey = ''0'' for update';
+next c1;
+prepare p2 as 'delete from ejb.test1 where current of c1';
+execute p2;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+-- test delete with schema name and correlation name
+insert into ejb.test1 values('0','jack','jill');
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p2 as 'delete from ejb.test1 where current of c1';
+execute p2;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- test delete with set schema 
+set schema ejb;
+insert into test1 values('0','jack','jill');
+get cursor c1 as 'select primarykey, parentkey, name from test1 where primarykey = ''0'' for update';
+next c1;
+prepare p2 as 'delete from test1 where current of c1';
+execute p2;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+
+-- test delete with set schema and correlation name
+insert into test1 values('0','jack','jill');
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p2 as 'delete from test1 where current of c1';
+execute p2;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+-- test delete with set schema and correlation name and schema name
+insert into test1 values('0','jack','jill');
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from ejb.test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p2 as 'delete from ejb.test1 where current of c1';
+execute p2;
+select primarykey, parentkey, name from ejb.test1;
+close c1;
+commit;
+
+-- clean up
+autocommit on;
+set schema app;
+drop table ejb.test1;
+--drop schema ejb restrict; - can't drop this because it will fail SPS tests since
+--statements are created and would need to be dropped
+
+-- test correlation on select in current of cursor in current schema
+-- this was also broken
+create table test1
+	(primarykey varchar(41) not null primary key,
+	name varchar(200),
+	parentkey varchar(41));
+-- make sure a cursor will work fine in this situation
+insert into test1 values('0','jack','jill');
+autocommit off;
+get cursor c1 as 'select t1.primarykey, t1.parentkey, t1.name from test1 t1 where t1.primarykey = ''0'' for update';
+next c1;
+prepare p2 as 'delete from test1 where current of c1';
+execute p2;
+select primarykey, parentkey, name from test1;
+close c1;
+commit;
+
+-- clean up
+autocommit on;
+drop table test1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/precedence.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/precedence.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,20 @@
+
+-- this tests precedence of operators.
+
+
+-- test precedence of operators other than and, or, and not
+-- that return boolean.
+
+-- expect 'true' row:
+create table t1(c11 int);
+insert into t1 values(1);
+
+select c11 from t1 where 1 in (1,2,3) = (1=1);
+
+--
+select c11 from t1 where 'acme widgets' like 'acme%' in (1=1);
+
+select c11 from t1 where 1 between -100 and 100 is not null;
+
+--
+select c11 from t1 where exists(select * from (values 1) as t) not in (1=2);

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,4198 @@
+-- test the pushing of predicates into unflattened views
+-- and derived tables
+
+set isolation to rr;
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+-- set up
+create table t1(c1 int, c2 int, c3 varchar(2000));
+
+-- simple views
+create view sv1 (c1, c2, c3) as select c1, c2, c3 || '$' from t1;
+create view sv2 (x1, x2, x3) as select c1, c2, c3  || '$' from t1;
+create view sv3 (y1, y2, y3) as select x1, x2, x3  || '$' from sv2;
+create view sv4 (z1, z2, z3, z4, z5, z6) as
+select a.c1, a.c2, a.c3 || '$', b.c1, b.c2, b.c3 || '$' from t1 a, t1 b;
+
+-- more complex views
+create view av1 (c1, c2) as select c1, max(c2) from t1 group by c1;
+create view av2 (x1, x2) as select c1, max(c2) from av1 group by c1;
+create view av3 (y1, y2, y3, y4) as
+select a.c1, b.c1, max(a.c2), max(b.c2) from t1 a, t1 b group by a.c1, b.c1;
+
+-- non-flattenable derived table in a non-flattenable view
+create view cv1 (c1, c2) as
+select c1, max(c2) from (select c1, c2 + 1 from t1) t(c1, c2) group by c1;
+
+-- populate the tables
+insert into t1 values (1, 1, ''), (1, 1, ''), (1, 2, ''), (1, 2, ''),
+		      (2, 2, ''), (2, 2, ''), (2, 3, ''), (2, 3, '');
+
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+-- predicate should get pushed into scan
+select c1, c2 from sv1 where c1 = 1 order by c1, c2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select c1, c2 from sv1 where c1 = 1  + 1 order by c1, c2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select x1, x2 from sv2 where x1 = 1 order by x1, x2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select y1, y2 from sv3 where y1 = 1 order by y1, y2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select z1, z2, z4, z5 from sv4 where z1 = z4 and z2 = z5
+order by z1, z2, z4, z5;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from av1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from av2 where x1 = 2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from av3;
+select y1, y2, y3, y4 + 0 from av3 where y1 = y2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from cv1;
+select * from cv1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+create index t1_c1 on t1(c1);
+select c1, c2 from sv1 where c1 = 1 order by c1, c2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select x1, x2 from sv2 where x1 = 1 order by x1, x2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select y1, y2 from sv3 where y1 = 1 order by y1, y2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select z1, z2, z4, z5 from sv4 where z1 = z4 and z2 = z5
+order by z1, z2, z4, z5;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from av1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from av2 where x1 = 2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select y1, y2, y3, y4 + 0 from av3 where y1 = y2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from cv1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+
+-- cleanup
+drop view cv1;
+drop view av3;
+drop view av2;
+drop view av1;
+drop view sv4;
+drop view sv3;
+drop view sv2;
+drop view sv1;
+drop table t1;
+
+-- Beetle 4983, customer case, complex query involving views, wrong column remapping
+-- after view flattening, NullPointerException, and didn't get predicate pushed down
+-- all the way to base table.
+
+autocommit off;
+
+create schema xr;
+
+create table xr.businessentity 
+			 ( 	ID    		varchar(48) not null primary key ,
+				type		varchar(24) not null,
+                           	name    	varchar(128) not null ,
+			   	uname		varchar(128) ,
+--GENERATED ALWAYS AS (ucase(name)),
+			   	description	varchar(256),
+                           	createdate   	timestamp  not null,
+                           	changedate   	timestamp  not null,
+                           	deletedate   	timestamp,
+			   	-- for type=BUSINESS this is the delegate owner
+			   	-- for type=USER this is their userID
+				AuthID	    	varchar(48) not null,  
+			       	ownerUserUUID 	varchar(48),
+				-- for type=BUSINESS -- in subclass 
+			       	businessTypeID  varchar(48)
+                         );
+
+create trigger xr.be_uname_i after insert on xr.businessentity
+referencing new as n
+for each row mode db2sql
+update xr.businessentity set uname = upper( n.name ) where name = n.name;
+
+create trigger xr.be_unane_u after update of name, uname on xr.businessentity
+referencing new as n
+for each row mode db2sql
+update xr.businessentity set uname = upper( n.name )
+  where name = n.name and uname <> upper( n.name );
+
+create unique index xr.bus1 on xr.businessentity (ownerUserUUID, uname, deletedate);
+
+create table xr.BEMembers(
+	beid			varchar(48) not null,
+	memberid		varchar(48) not null
+	);
+
+
+create unique index xr.bem1 on xr.BEMembers (beid, memberid);
+
+alter table xr.BEMembers add constraint bem_beid
+	foreign key (beid)
+	references xr.businessentity(id)
+	on delete cascade;
+
+alter table xr.BEMembers add constraint bem_memberid
+	foreign key (memberid)
+	references xr.businessentity(id)
+	on delete cascade;
+
+create table xr.xruser 
+			 ( 	businessentityID   	varchar(48) not null primary key ,
+				userid			varchar(48) not null, 
+				deletedate   		timestamp
+                    	);
+
+
+create unique index xr.user1 on xr.xruser (userID, deletedate);
+
+
+alter table xr.xruser add constraint u_busent foreign key (businessentityID)
+                            references xr.businessentity(ID)
+                            on delete cascade;
+
+
+create table xr.locator 
+			(ownerID		varchar(48) not null,
+			type	      		varchar(48) not null,
+			useTypeID	      	varchar(48) ,
+			value			varchar(256),
+			street1			varchar(48),
+			street2			varchar(48),
+			city			varchar(48),
+			state			varchar(48),
+			country			varchar(48),
+			postalcode		varchar(48)	
+			);
+
+create unique index xr.loc1 on xr.locator ( ownerID,type,usetypeID ); 
+
+alter table xr.locator add constraint l_busent foreign key (ownerID)
+                            references xr.businessentity(ID)
+                            on delete cascade;
+
+
+create table xr.BusinessEntityAssociation
+			(ID			varchar(48) not null primary key ,
+			sourceID		varchar(48) not null,
+			targetID	      	varchar(48) not null,
+			ownerID		 	varchar(48) not null,
+			assoctypeID		varchar(48) not null,
+                  	createdate   		timestamp  not null,
+                    	changedate   		timestamp  not null,
+			deletedate   		timestamp, 
+			description		varchar(256)
+			);
+
+alter table xr.BusinessEntityAssociation 
+add constraint bea_sourceID foreign key (sourceID)
+                            references xr.businessentity(ID)
+                            on delete restrict;
+
+alter table xr.BusinessEntityAssociation 
+add constraint bea_targetID foreign key (targetID)
+                            references xr.businessentity(ID)
+                            on delete restrict;
+
+alter table xr.BusinessEntityAssociation 
+add constraint bea_ownerID foreign key (ownerID)
+                            references xr.businessentity(ID)
+                            on delete restrict;
+
+
+create unique index xr.BEA1 
+on xr.BusinessEntityAssociation( sourceid, targetid, ownerID, assoctypeID, deletedate); 
+
+
+create table xr.repositoryobjectresource (
+	id			varchar(48)	not null primary key,
+	type			varchar(48)	not null,
+	subtype		varchar(48),
+	creatorid		varchar(48)	not null,
+	createdate		timestamp	not null,
+	currentVersion	varchar(48),
+	versionControlled smallint	not null with default 0,
+	checkedOut		smallint	not null with default 0,
+	checkForLock	smallint	not null with default 0
+	);
+
+alter table xr.repositoryobjectresource add constraint ror_creatorid
+	foreign key (creatorid)
+	references xr.xruser(businessentityid)
+	on delete restrict;
+
+create table xr.repositoryobjectversion (
+	id			varchar(48)		not null primary key,
+	resourceid		varchar(48)		not null,
+	name			varchar(128)	not null,
+	uname			varchar(128),
+--	GENERATED ALWAYS AS (ucase(name)),
+	folderid		varchar(48),
+	versionName		varchar(128)	not null,
+	uri			varchar(255)	not null,
+	versionuri		varchar(255)	not null,
+	description		varchar(256),
+	versionComment	varchar(256),
+	ownerid		varchar(48)	not null,
+	creatorid		varchar(48)	not null,
+	versiondate		timestamp	not null,
+	changedate		timestamp	not null,
+	deletedate		timestamp, 
+	previousversion	varchar(48)
+	);
+	
+create trigger xr.rov_uname_i after insert on xr.repositoryobjectversion
+referencing new as n
+for each row mode db2sql
+update xr.repositoryobjectversion set uname = upper( n.name ) where name = n.name;
+
+create trigger xr.rov_unane_u after update of name, uname on xr.repositoryobjectversion
+referencing new as n
+for each row mode db2sql
+update xr.repositoryobjectversion set uname = upper( n.name )
+  where name = n.name and uname <> upper( n.name );
+create unique index xr.versionname on xr.repositoryobjectversion (resourceid, versionName);
+
+-- Don't think I want this constraint with versioning.
+-- Object could have been deleted in a later version.
+-- create unique index xr.versionuri on xr.repositoryobjectversion (versionuri, deletedate);
+
+alter table xr.repositoryobjectversion add constraint rov_previousvers
+	foreign key (previousversion)
+	references xr.repositoryobjectversion(id)
+	on delete set null;
+
+alter table xr.repositoryobjectversion add constraint rov_folderid
+	foreign key (folderid)
+	references xr.repositoryobjectresource(id)
+	on delete restrict;
+
+alter table xr.repositoryobjectversion add constraint rov_ownerid
+	foreign key (ownerid)
+	references xr.businessentity(id)
+	on delete restrict;
+
+alter table xr.repositoryobjectversion add constraint rov_creatorid
+	foreign key (creatorid)
+	references xr.xruser(businessentityid)
+	on delete restrict;
+
+alter table xr.repositoryobjectresource add constraint ror_currentVersion
+	foreign key (currentVersion)
+	references xr.repositoryobjectversion(id)
+	on delete restrict;
+
+create table xr.lock (
+	locktoken		varchar(48)	not null,
+	resourceid		varchar(48)	not null,
+	ownerid		varchar(48) not null,
+	exclusive		smallint 	not null,
+	timeoutSeconds	bigint	not null,
+	expirationDate	timestamp	not null
+	);
+
+alter table xr.lock add primary key (locktoken, resourceid);
+
+alter table xr.lock add constraint l_resourceid
+	foreign key (resourceid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+alter table xr.lock add constraint l_ownerid
+	foreign key (ownerid)
+	references xr.xruser(businessentityid)
+	on delete cascade;
+
+create table xr.keyword (
+	versionid			varchar(48)		not null,
+	keyword			varchar(128)	not null
+	);
+
+alter table xr.keyword add constraint k_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+
+create table xr.slot (
+	versionid			varchar(48)		not null,
+	name				varchar(128)	not null,
+	value				varchar(256)
+	);
+
+alter table xr.slot add constraint s_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+	
+create table xr.versionlabel (
+	versionid			varchar(48)		not null,
+	label				varchar(128)	not null
+	);
+
+alter table xr.versionlabel add constraint vl_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+
+create table xr.repositoryentry (
+	versionid		varchar(48)		not null primary key,
+	versioncontentid	varchar(48),
+	mimetype		varchar(48),
+	stability		varchar(48),
+	status		varchar(48),
+	startdate		timestamp,
+	expirationdate	timestamp,
+	isopaque		smallint		not null with default 0
+	);
+
+alter table xr.repositoryentry add constraint re_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+
+	
+create table xr.repositoryentrycontent (
+ 	versionid			varchar(48)		not null primary key,
+	contentchangedate	timestamp,
+	content				long varchar
+--blob(1M)
+	);
+
+alter table xr.repositoryentry add constraint re_versioncontent
+	foreign key (versioncontentid)
+	references xr.repositoryentrycontent(versionid)
+	on delete set null;
+
+
+create table xr.objectgroup_content (
+	versionid		varchar(48) not null,
+	memberid		varchar(48) not null
+	);
+
+alter table xr.objectgroup_content add constraint ogc_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+
+alter table xr.objectgroup_content add constraint ogc_memberid
+	foreign key (memberid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+create table xr.externaldependency_content (
+	versionid		varchar(48) not null,
+	objectid		varchar(48) not null
+	);
+
+alter table xr.externaldependency_content add constraint edc_objectid
+	foreign key (objectid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+create table xr.objectassociation (
+	id			varchar(48) not null primary key,
+	sourceid		varchar(48) not null,
+	targetid		varchar(48) not null
+	);
+
+alter table xr.objectassociation add constraint oa_id
+	foreign key (id)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+alter table xr.objectassociation add constraint oa_sourceid
+	foreign key (sourceid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+alter table xr.objectassociation add constraint oa_targetid
+	foreign key (targetid)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+create table xr.classificationscheme (
+	id			varchar(48) not null primary key,
+	structuretype	varchar(48) not null
+	);
+
+alter table xr.classificationscheme add constraint cs_id
+	foreign key (id)
+	references xr.repositoryobjectresource(id)
+	on delete cascade;
+
+create table xr.classification_values (
+	versionid		varchar(48) not null,
+	valueid		varchar(48) not null,
+	value			varchar(128) not null,
+	description		varchar(256),
+	parentvalueid	varchar(48)
+	);
+
+alter table xr.classification_values add primary key (versionid, valueid);
+
+alter table xr.classification_values add constraint cv_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+
+alter table xr.classification_values add constraint cv_parentvalueid
+	foreign key (versionid, parentvalueid)
+	references xr.classification_values(versionid, valueid)
+	on delete cascade;
+
+create table xr.classification_value_ancestors (
+	versionid		varchar(48) not null,
+	valueid		varchar(48) not null,
+	ancestorid		varchar(48) not null
+	);
+
+alter table xr.classification_value_ancestors add constraint cva_versionid
+	foreign key (versionid)
+	references xr.repositoryobjectversion(id)
+	on delete cascade;
+
+alter table xr.classification_value_ancestors add constraint cva_valueid
+	foreign key (versionid, valueid)
+	references xr.classification_values(versionid, valueid)
+	on delete cascade;
+
+alter table xr.classification_value_ancestors add constraint cva_ancestorid
+	foreign key (versionid, ancestorid)
+	references xr.classification_values(versionid, valueid)
+	on delete cascade;
+
+create table xr.classifications (
+	objectversionid	varchar(48) not null,
+	valueid		varchar(48) not null
+	);
+
+create view  xr.classificationcurrentvalueview (
+	valueid,
+	value
+) as select 
+	v.valueid,
+	v.value
+from  xr.classification_values v, xr.repositoryobjectresource ror
+where v.versionid = ror.currentversion;
+
+create view  xr.classificationschemecurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	structuretype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	cls.structuretype,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.classificationscheme cls on (ror.id = cls.id)
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+
+create view  xr.classificationschemeallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	structuretype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	cls.structuretype,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.classificationscheme cls on (ror.id = cls.id)
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+
+create view  xr.classificationschemelifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	structuretype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	cls.structuretype,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.classificationscheme cls on (ror.id = cls.id)
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid);
+
+create view  xr.classificationvalueview (
+	id,
+	value,
+	description,
+	parentid,
+	parentvalue,
+	schemeid,
+	schemeversionid,
+	schemename
+) as select 
+	v.valueid,
+	v.value,
+	v.description,
+	p.valueid,
+	p.value,
+	rov.resourceid,
+	rov.id,
+	rov.name	
+from  xr.classification_values v 
+	inner join xr.repositoryobjectversion rov on (v.versionid = rov.id)
+	left outer join xr.classification_values p on (v.parentvalueid = p.valueid)
+where rov.deletedate is null;
+
+create view  xr.classification_direct_view (
+	objectversionid,
+	valueid,
+	schemeversionid,
+	value
+) as select 
+	c.objectversionid,
+	cv.valueid,
+	cv.versionid,
+	cv.value
+from  xr.classifications c, xr.classification_values cv, 
+	xr.repositoryobjectresource ror
+	where c.valueid = cv.valueid and cv.versionid = ror.currentversion;
+
+create view  xr.classification_indirect_view (
+	objectversionid,
+	valueid,
+	schemeversionid,
+	value
+) as select 
+	c.objectversionid,
+	cv.valueid,
+	cv.versionid,
+	cv.value
+from  xr.classifications c, xr.classification_values cv, 
+	xr.classification_value_ancestors cva, xr.repositoryobjectresource ror
+	where c.valueid = cva.valueid and 
+	cva.ancestorid = cv.valueid and cva.versionid = cv.versionid and
+	cv.versionid = ror.currentversion;
+
+create view  xr.businessentityqueryview (
+	id,
+	name,
+	uname,
+	type,
+	createdate,
+	changedate,
+	description,
+	authID,	
+	ownerid,
+	ownername,
+	uownername,
+	businessTypeID,
+	businessType
+) as select 
+	be.id, 
+	be.name,
+	be.uname,
+	be.type,
+	be.createdate,
+	be.changedate,
+	be.description,  
+	be.authID , 
+	o.id,  
+	o.name, 
+	o.uname,
+	be.businessTypeID, 
+	cv.value 
+from  xr.businessentity be left outer join xr.businessentity o on be.owneruserUUID = o.id  
+left outer join xr.classificationcurrentvalueview cv on cv.valueid = be.businessTypeID 
+where be.deletedate is null and o.deletedate is null;
+
+create view  xr.businessassociationqueryview (
+	id,
+	sourceid,
+	sourcename,
+	usourcename,
+	sourcetype,
+	targetid,
+	targetname,
+	utargetname,
+	targettype,
+	createdate,
+	changedate,
+	description,
+	ownerid,
+	ownername,
+	uownername,
+	associationTypeID,
+	associationType
+) as select 
+	bea.id,
+	bea.sourceid,
+	s.name,
+	s.uname,
+	s.type,
+	bea.targetid, 
+	t.name,
+	t.uname,
+	t.type,
+	bea.createdate,
+	bea.changedate,
+	bea.description,  
+	o.id,  
+	o.name, 
+	o.uname,
+	bea.assoctypeID, 
+	cv.value 	
+from  xr.businessentityassociation bea 
+left outer join xr.businessentity s on bea.sourceID = s.ID 
+left outer join xr.businessentity t on bea.targetID = t.ID 
+left outer join xr.businessentity o on bea.ownerID = o.ID  
+left outer join xr.classificationcurrentvalueview cv on cv.valueid = bea.assoctypeID 
+where bea.deletedate is null and s.deletedate is null and t.deletedate is null and o.deletedate is null;
+
+create view  xr.repositoryobjectcurrentversionview (
+	id, versionid, name, uname, versionName, 
+	uri, versionuri, folderid, 
+	ownerid, ownerdeletedate, ownername, uownername, ownerauthid, creatorname,
+	description, versionComment, objecttype, subtypeid, subtype, 
+	checkforlock, createdate, versiondate, changedate, deletedate,
+	versioncontrolled, currentversion, previousversion, checkedout,
+	-- from RepositoryEntry
+	stability, statusid, status, isopaque,
+	startdate, expirationdate, contentchangedate, versioncontentid,
+	-- from ObjectAssociation
+	sourceid, targetid,
+	-- from ClassificationScheme
+	structuretype
+) as select 
+	ror.id, rov.id, rov.name, rov.uname, rov.versionName, 
+	rov.uri, rov.versionuri, rov.folderid,
+	rov.ownerid, beo.deletedate, beo.name, beo.uname, beo.authid, bec.name,
+	rov.description, rov.versionComment, ror.type, ror.subtype, cvsubt.value,  
+	ror.checkforlock, ror.createdate, rov.versiondate, rov.changedate, rov.deletedate,
+	ror.versioncontrolled, ror.currentversion, rov.previousversion, ror.checkedout,
+	-- from RepositoryEntry
+	re.stability, re.status, cvstatus.value, re.isopaque,
+	re.startdate, re.expirationdate, rec.contentchangedate, re.versioncontentid,
+	-- from ObjectAssociation
+	oa.sourceid, oa.targetid,
+	-- from ClassificationScheme
+	cs.structuretype
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.classificationcurrentvalueview cvsubt on (ror.subtype = cvsubt.valueid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.repositoryentry re on (ror.currentversion = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	left outer join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.classificationscheme cs on (ror.id = cs.id)
+	where rov.deletedate is null;
+
+create view  xr.repositoryobjectallversionview (
+	id, versionid, name, uname, versionName, 
+	uri, versionuri, folderid, 
+	ownerid, ownerdeletedate, ownername, uownername, ownerauthid, creatorname,
+	description, versionComment, objecttype, subtypeid, subtype, 
+	checkforlock, createdate, versiondate, changedate, deletedate,
+	versioncontrolled, currentversion, previousversion, checkedout, 
+	-- from RepositoryEntry
+	stability, statusid, status, isopaque,
+	startdate, expirationdate, contentchangedate, versioncontentid,
+	-- from ObjectAssociation
+	sourceid, targetid,
+	-- from ClassificationScheme
+	structuretype
+) as select 
+	ror.id, rov.id, rov.name, rov.uname, rov.versionName, 
+	rov.uri, rov.versionuri, rov.folderid,
+	rov.ownerid, beo.deletedate, beo.name, beo.uname, beo.authid, bec.name,
+	rov.description, rov.versionComment, ror.type, ror.subtype, cvsubt.value,  
+	ror.checkforlock, ror.createdate, rov.versiondate, rov.changedate, rov.deletedate,
+	ror.versioncontrolled, ror.currentversion, rov.previousversion, ror.checkedout, 
+	-- from RepositoryEntry
+	re.stability, re.status, cvstatus.value, re.isopaque,
+	re.startdate, re.expirationdate, rec.contentchangedate, re.versioncontentid,
+	-- from ObjectAssociation
+	oa.sourceid, oa.targetid,
+	-- from ClassificationScheme
+	cs.structuretype
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.classificationcurrentvalueview cvsubt on (ror.subtype = cvsubt.valueid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.repositoryentry re on (ror.currentversion = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	left outer join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.classificationscheme cs on (ror.id = cs.id)
+	where rov.deletedate is null;
+
+create view  xr.repositoryobjectlifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerauthid,
+	ownername,
+	ownerdeletedate,
+	description,
+	objecttype,
+	subtypeid,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.authid,
+	beo.name,
+	beo.deletedate,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id);
+	
+create view  xr.repositoryobjectlabelview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerauthid,
+	ownername,
+	ownerdeletedate,
+	description,
+	objecttype,
+	subtypeid,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.authid,
+	beo.name,
+	beo.deletedate,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id);
+
+create view  xr.repositoryentrycurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	versioncontentid,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	createdate,
+	versiondate,
+	changedate,
+	contentchangedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,
+	checkedout,
+	subtypeid,
+	subtype,
+	stability,
+	statusid,
+	status,
+	startdate,
+	expirationdate,
+	isopaque
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	re.versioncontentid,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rec.contentchangedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,
+	ror.checkedout,
+	re.mimetype,
+	cvmime.value,
+	re.stability,
+	re.status,
+	cvstatus.value,
+	re.startdate,
+	re.expirationdate,
+	re.isopaque
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	where rov.deletedate is null;
+
+create view  xr.repositoryentryallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	versioncontentid,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	createdate,
+	versiondate,
+	changedate,
+	contentchangedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,
+	checkedout,
+	subtypeid,
+	subtype,
+	stability,
+	statusid,
+	status,
+	startdate,
+	expirationdate,
+	isopaque
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	re.versioncontentid,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rec.contentchangedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,		
+	rov.previousversion,
+	ror.checkedout,
+	re.mimetype,
+	cvmime.value,
+	re.stability,
+	re.status,
+	cvstatus.value,
+	re.startdate,
+	re.expirationdate,
+	re.isopaque
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)	
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	where rov.deletedate is null;
+
+create view  xr.repositoryentrylifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	versioncontentid,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	contentchangedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion	
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	re.versioncontentid,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	re.mimetype,
+	cvmime.value,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rec.contentchangedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid);
+
+create view  xr.repositoryentrycontentview (
+	id,
+	versionid,
+	versioncontentid,
+	uri,
+	versionuri,
+	content,
+	contentchangedate,
+	currentversion,
+	mimetypeid,
+	mimetype
+) as select 
+	ror.id,
+	rov.id,
+	re.versioncontentid,
+	rov.uri,
+	rov.versionuri,
+	rec.content,
+	rec.contentchangedate,
+	ror.currentversion,
+	re.mimetype,
+	cvmime.value
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	inner join xr.repositoryentry re on (rov.id = re.versionid)
+	left outer join xr.repositoryentrycontent rec on (re.versioncontentid = rec.versionid)	
+	left outer join xr.classificationcurrentvalueview cvmime on (re.mimetype = cvmime.valueid)
+	left outer join xr.classificationcurrentvalueview cvstatus on (re.status = cvstatus.valueid)
+	where rov.deletedate is null;
+
+create view  xr.objectgroupcurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'COLLECTION' and rov.deletedate is null;
+
+create view  xr.objectgroupallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'COLLECTION' and rov.deletedate is null;
+
+create view  xr.objectgrouplifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'COLLECTION';
+
+create view  xr.externaldependencycurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'EXTERNAL_DEPENDENCY' and rov.deletedate is null;
+
+create view  xr.externaldependencyallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,	
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	dependencytypeid,
+	dependencytype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,	
+	checkedout,
+	currentversion,
+	previousversion	
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion	
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where ror.type = 'EXTERNAL_DEPENDENCY' and rov.deletedate is null;
+
+create view  xr.objectassociationcurrentversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout,
+	sourceid,
+	targetid
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout,
+	oa.sourceid,
+	oa.targetid
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+
+create view  xr.objectassociationallversionview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout,
+	sourceid,
+	targetid
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.valueid,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout,
+	oa.sourceid,
+	oa.targetid
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.id = rov.resourceid)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+
+create view  xr.objectassociationlifecycleview (
+	id,
+	versionid,
+	name,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownerauthid,
+	ownername,
+	description,
+	objecttype,
+	subtypeid,
+	subtype,
+	checkforlock,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	checkedout,
+	currentversion,
+	previousversion,
+	sourceid,
+	targetid
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.authid,
+	beo.name,
+	rov.description,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.checkforlock,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.checkedout,
+	ror.currentversion,
+	rov.previousversion,
+	oa.sourceid,
+	oa.targetid
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid);
+
+create view  xr.objectassociationcurrentversionqueryview (
+	id,
+	versionid,
+	name,
+	uname,
+	versionName,
+	uri,
+	versionuri,
+	folderid,
+	ownerid,
+	ownerdeletedate,
+	ownername,
+	uownername,
+	ownerauthid,
+	creatorname,
+	description,
+	versionComment,
+	objecttype,
+	subtypeid,
+	subtype,
+	createdate,
+	versiondate,
+	changedate,
+	deletedate,
+	versioncontrolled,
+	currentversion,
+	previousversion,	
+	checkedout,
+	sourceid,
+	sourcename,
+	usourcename,
+	sourcetype,
+	targetid,
+	targetname,
+	utargetname,
+	targettype
+) as select 
+	ror.id,
+	rov.id,
+	rov.name,
+	rov.uname,
+	rov.versionName,
+	rov.uri,
+	rov.versionuri,
+	rov.folderid,
+	rov.ownerid,
+	beo.deletedate,
+	beo.name,
+	beo.uname,
+	beo.authid,
+	bec.name,
+	rov.description,
+	rov.versionComment,
+	ror.type,
+	ror.subtype,
+	cvtype.value,
+	ror.createdate,
+	rov.versiondate,
+	rov.changedate,
+	rov.deletedate,
+	ror.versioncontrolled,
+	ror.currentversion,
+	rov.previousversion,	
+	ror.checkedout,
+	oa.sourceid,
+	s.name,
+	s.uname,
+	s.objecttype,
+	oa.targetid,
+	t.name,
+	t.uname,
+	t.objecttype	
+from  xr.repositoryobjectresource ror
+	inner join xr.repositoryobjectversion rov on (ror.currentversion = rov.id)
+	inner join xr.objectassociation oa on (ror.id = oa.id)
+	left outer join xr.repositoryobjectcurrentversionview s on (oa.sourceid = s.id)
+	left outer join xr.repositoryobjectcurrentversionview t on (oa.targetid = t.id)		
+	left outer join xr.businessentity beo on (rov.ownerid = beo.id)
+	left outer join xr.businessentity bec on (rov.creatorid = bec.id)
+	left outer join xr.classificationcurrentvalueview cvtype on (ror.subtype = cvtype.valueid)
+	where rov.deletedate is null;
+
+create view  xr.lockview (
+	locktoken,
+	resourceid,
+	resourcename,
+	userid,
+	username,
+	exclusive,
+	timeoutseconds,
+	expirationdate
+) as select 
+	l.locktoken,
+	l.resourceid,
+	rov.name,
+	l.ownerid,
+	be.name,
+	l.exclusive,
+	l.timeoutseconds,
+	l.expirationdate
+from  xr.lock l, xr.repositoryobjectresource ror, xr.repositoryobjectversion rov, 
+	xr.businessentity be 	
+where l.resourceid = ror.id and ror.currentversion = rov.id and l.ownerid = be.id;
+
+--echo === Create Users ================================================;
+
+-- if we don't commit, the following insert will block due to fix of beetle 4821
+commit;
+
+-- The following insert statement shouldn't block for 2 minutes!! The compile of the trigger
+-- shouldn't wait for timeout!!
+insert into xr.businessentity ( ID, type, name, authID, createdate, changedate )
+	values ('26747154-0dfc-46af-a85d-1dc30c230c4e', 
+		'USER', 
+		'Administrator', 		
+		'xradmin', 
+		CURRENT TIMESTAMP, CURRENT TIMESTAMP);
+insert into xr.xruser 
+		(businessentityid, 
+		userid)
+	values ('26747154-0dfc-46af-a85d-1dc30c230c4e',	
+		'xradmin');
+
+
+insert into xr.businessentity ( ID, type, name, authID, createdate, changedate )
+	values ('013026c8-1b22-487a-a189-1c7b16811035', 
+		'USER', 
+		'Sample XR User', 
+		'xrguest', CURRENT TIMESTAMP, CURRENT TIMESTAMP);
+insert into xr.xruser (businessentityid, userid)
+	values ('013026c8-1b22-487a-a189-1c7b16811035',	
+		'xrguest');
+
+--echo == Create locators ==============================================;
+
+insert into xr.locator ( 
+	ownerID,
+	type, 
+	usetypeID, 
+	value, 
+	street1, 
+	street2, 
+	city, 
+	state, 
+	country, 
+	postalcode
+) values (
+	'26747154-0dfc-46af-a85d-1dc30c230c4e', 
+	'EMAIL',
+	'67c249a4-d160-11d6-bb9c-646533376c37',
+	'xradmin@xr.com',
+	'',
+	'',
+	'',
+	'',
+	'',
+	'');
+
+
+insert into xr.locator ( 
+	ownerID,
+	type, 
+	usetypeID, 
+	value, 
+	street1, 
+	street2, 
+	city, 
+	state, 
+	country, 
+	postalcode
+) values (
+	'013026c8-1b22-487a-a189-1c7b16811035', 
+	'EMAIL',
+	'67c249a4-d160-11d6-bb9c-646533376c37',
+	'xrguest@yourmail.com',
+	'',
+	'',
+	'',
+	'',
+	'',
+	'');
+
+--echo =============================================================================;
+--echo xr database insert script
+--echo =============================================================================;
+
+--XRADMIN ID '26747154-0dfc-46af-a85d-1dc30c230c4e' 
+-- repositoryobjectversion.folderid references xr.repositoryobjectresource(id)
+--ROOT FolderID foreign '225924f8-1a72-42c9-a58d-05b41d8415ce' 
+
+
+--echo == ROOT Folder ====================================;
+--echo == ROOT Folder ====================================;
+
+
+
+insert into xr.repositoryobjectversion (
+	id, resourceid, name, versionName, uri, versionuri, description,
+	ownerid, creatorid, versiondate, changedate, previousversion
+	) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'225924f8-1a72-42c9-a58d-05b41d8415ce', 
+	'', '1.0', '/',
+	'1.0/',
+	'Root XR folder',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+-- Root folder
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'225924f8-1a72-42c9-a58d-05b41d8415ce', 
+	'COLLECTION', 
+	'11a832a5-0bb1-46db-a000-147906f70021',
+	'013026c8-1b22-487a-a189-1c7b16811035',
+	CURRENT TIMESTAMP, 
+	'077bb8c4-0894-4d99-937a-356c315d26e2', 
+	0);
+
+-- This ObjectGroup classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('077bb8c4-0894-4d99-937a-356c315d26e2', '196b15da-136f-4e19-933f-036f01481f5f');
+
+
+
+
+
+
+--echo ==================================================;
+
+--echo =============================================================================;
+--echo xr database insert script
+--echo =============================================================================;
+
+--XRADMIN ID '26747154-0dfc-46af-a85d-1dc30c230c4e' 
+-- repositoryobjectversion.folderid references xr.repositoryobjectresource(id)
+--ROOT FolderID foreign '225924f8-1a72-42c9-a58d-05b41d8415ce' 
+
+
+
+--echo == Business types =======================================;
+--echo =========================================================;
+
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'6e7fb600-d184-11d6-85ee-646533376c37',
+	'717a3150-d184-11d6-85ee-646533376c37', 
+	'Business Types', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Business+Types',
+	'1.0/Business+Types/1.0',
+	'Valid values for the Business TYpe property of a Business',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'717a3150-d184-11d6-85ee-646533376c37', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'717a3150-d184-11d6-85ee-646533376c37'
+);
+
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'717a3150-d184-11d6-85ee-646533376c37', 
+	'LIST');
+
+
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'6e7fb600-d184-11d6-85ee-646533376c37',
+	'196b15da-136f-4e19-933f-036f01481f5f');
+
+
+--echo =======================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717a3151-d184-11d6-85ee-646533376c37', 
+	'CORPORATION',
+	'CORPORATION');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f0-d184-11d6-85ee-646533376c37', 
+	'ORGANIZATION',
+	'ORGANIZATION');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f0-d184-11d6-85ee-646533376c37', 
+	'717bb7f0-d184-11d6-85ee-646533376c37');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f3-d184-11d6-85ee-646533376c37', 
+	'DIVISION',
+	'DIVISION');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f3-d184-11d6-85ee-646533376c37', 
+	'717bb7f3-d184-11d6-85ee-646533376c37');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f1-d184-11d6-85ee-646533376c37', 
+	'GROUP',
+	'GROUP');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f1-d184-11d6-85ee-646533376c37', 
+	'717bb7f1-d184-11d6-85ee-646533376c37');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f2-d184-11d6-85ee-646533376c37', 
+	'PARTNERSHIP',
+	'PARTNERSHIP');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'6e7fb600-d184-11d6-85ee-646533376c37', 
+	'717bb7f2-d184-11d6-85ee-646533376c37', 
+	'717bb7f2-d184-11d6-85ee-646533376c37');
+
+--echo ==========================================================;
+--echo == Locator Use types ====================================;
+--echo =========================================================;
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'67c249a1-d160-11d6-bb9c-646533376c37',
+	'67c249a2-d160-11d6-bb9c-646533376c37', 
+	'Locator Use Types', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Locator+Use+Types',
+	'1.0/Locator+Use+Types/1.0',
+	'Valid values for the Use Type property of a Locator',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'67c249a2-d160-11d6-bb9c-646533376c37', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'67c249a2-d160-11d6-bb9c-646533376c37'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'67c249a2-d160-11d6-bb9c-646533376c37', 
+	'LIST');
+
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'67c249a1-d160-11d6-bb9c-646533376c37',
+	'196b15da-136f-4e19-933f-036f01481f5f');
+
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c249a3-d160-11d6-bb9c-646533376c37', 
+	'HOME',
+	'HOME');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c249a3-d160-11d6-bb9c-646533376c37', 
+	'67c249a3-d160-11d6-bb9c-646533376c37');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c249a4-d160-11d6-bb9c-646533376c37', 
+	'OFFICE',
+	'OFFICE');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c249a4-d160-11d6-bb9c-646533376c37', 
+	'67c249a4-d160-11d6-bb9c-646533376c37');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c249a5-d160-11d6-bb9c-646533376c37', 
+	'MOBILE',
+	'MOBILE');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c249a5-d160-11d6-bb9c-646533376c37', 
+	'67c249a5-d160-11d6-bb9c-646533376c37');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c9eac0-d160-11d6-bb9c-646533376c37', 
+	'PAGER',
+	'PAGER');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'67c249a1-d160-11d6-bb9c-646533376c37', 
+	'67c9eac0-d160-11d6-bb9c-646533376c37', 
+	'67c9eac0-d160-11d6-bb9c-646533376c37');
+
+
+--echo ==========================================================;
+--echo == Create Association types ClassificationScheme ====================================;
+--echo =====================================================================================;
+
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'67bf3c60-d160-11d6-bb9c-646533376c37',
+	'67bf3c61-d160-11d6-bb9c-646533376c37', 
+	'Business Relationship Types', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Business+Relationship+Types',
+	'1.0/Business+Relationship+Types/1.0',
+	'Valid values for the Type property of a Business Relationship',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'67bf3c61-d160-11d6-bb9c-646533376c37', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'67bf3c61-d160-11d6-bb9c-646533376c37'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'67bf3c61-d160-11d6-bb9c-646533376c37', 
+	'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'67bf3c60-d160-11d6-bb9c-646533376c37',
+	'196b15da-136f-4e19-933f-036f01481f5f');
+
+
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67bf3c62-d160-11d6-bb9c-646533376c37', 
+	'CUSTOMER',
+	'CUSTOMER');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67bf3c62-d160-11d6-bb9c-646533376c37', 
+	'67bf3c62-d160-11d6-bb9c-646533376c37');
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67bf3c63-d160-11d6-bb9c-646533376c37', 
+	'SUPPLIER',
+	'SUPPLIER');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67bf3c63-d160-11d6-bb9c-646533376c37', 
+	'67bf3c63-d160-11d6-bb9c-646533376c37');
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67c0c300-d160-11d6-bb9c-646533376c37', 
+	'PARTNER',
+	'PARTNER');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67c0c300-d160-11d6-bb9c-646533376c37', 
+	'67c0c300-d160-11d6-bb9c-646533376c37');
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67c0c301-d160-11d6-bb9c-646533376c37', 
+	'MANAGER',
+	'MANAGER');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'67bf3c60-d160-11d6-bb9c-646533376c37', 
+	'67c0c301-d160-11d6-bb9c-646533376c37', 
+	'67c0c301-d160-11d6-bb9c-646533376c37');
+
+
+--echo == Create Scheme Types ClassificationScheme ====================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'0a6a053e-1837-48dc-b7c4-11082c8c3b35',
+	'1a07217d-3a90-4266-bc7e-1e493ea22b8f', 
+	'Classification Scheme Types', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Classification+Scheme+Types',
+	'1.0/Classification+Scheme+Types/1.0',
+	'Valid values for the ClassificationSchemeType property of a Classification Scheme',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'1a07217d-3a90-4266-bc7e-1e493ea22b8f', 'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'0a6a053e-1837-48dc-b7c4-11082c8c3b35', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'1a07217d-3a90-4266-bc7e-1e493ea22b8f'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('1a07217d-3a90-4266-bc7e-1e493ea22b8f', 'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('0a6a053e-1837-48dc-b7c4-11082c8c3b35', '196b15da-136f-4e19-933f-036f01481f5f');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '0a6a053e-1837-48dc-b7c4-11082c8c3b35', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c', 'VALUE_LIST');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '0a6a053e-1837-48dc-b7c4-11082c8c3b35', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c', '19adf2cf-0a2e-4d98-8f68-221708370b4c');
+
+--echo == Create MimeTypes ClassificationScheme ====================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'131fe75d-2447-45d3-87a2-37ee31dd08d4',
+	'392005d2-1949-4aae-856e-2425093733e2', 
+	'Mime Types', '1.0', 
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	 'Mime+Types',
+	'1.0/Mime+Types/1,0',
+	'Valid values for the MimeType property of a Registry Entry',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'392005d2-1949-4aae-856e-2425093733e2', 'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'131fe75d-2447-45d3-87a2-37ee31dd08d4', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'392005d2-1949-4aae-856e-2425093733e2'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('392005d2-1949-4aae-856e-2425093733e2', 'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('131fe75d-2447-45d3-87a2-37ee31dd08d4', '196b15da-136f-4e19-933f-036f01481f5f');
+
+
+
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'212936b2-32bd-4328-b2e5-0a7915bb225b', 'TEXT/S-SSI-HTML',
+	'For: htmls and shtml file types');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'212936b2-32bd-4328-b2e5-0a7915bb225b', '212936b2-32bd-4328-b2e5-0a7915bb225b');
+
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'3e190308-2a03-4487-b77f-1a3631f22240', 'TEXT/PLAIN',
+	'For: htmls and shtml file types');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'3e190308-2a03-4487-b77f-1a3631f22240', '3e190308-2a03-4487-b77f-1a3631f22240');
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'24fe3d5b-336e-48f0-ae28-12e5034338f4', 'APPLICATION/OCTET-STREAM',
+	'For: htmls and shtml file types');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'24fe3d5b-336e-48f0-ae28-12e5034338f4', '24fe3d5b-336e-48f0-ae28-12e5034338f4');
+
+
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'1d5d253a-3109-4c9f-857b-209304163595', 'APPLICATION/XML',
+	'For: xsl file type');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'1d5d253a-3109-4c9f-857b-209304163595', '1d5d253a-3109-4c9f-857b-209304163595');
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'33cb30fa-1be9-4dc6-8473-3aa4164d1f98', 'TEXT/RICHTEXT',
+	'For: rtx file type');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'33cb30fa-1be9-4dc6-8473-3aa4164d1f98', '33cb30fa-1be9-4dc6-8473-3aa4164d1f98');
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'2c1ff6aa-04a6-47ee-adb3-3cf40fb82a8d', 'TEXT/CSS',
+	'For: css and s file type');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'2c1ff6aa-04a6-47ee-adb3-3cf40fb82a8d', '2c1ff6aa-04a6-47ee-adb3-3cf40fb82a8d');
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'3e300f8a-1224-4909-9233-1a7c26c106d3', 'APPLICATION/X-TEXTINFO',
+	'For: texi and texinfo file types');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'3e300f8a-1224-4909-9233-1a7c26c106d3', '3e300f8a-1224-4909-9233-1a7c26c106d3');
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'1b2e14e9-27c7-42f2-a6ce-0ef50768010b', 'TEXT/HTML',
+	'For: htm and html file types');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'1b2e14e9-27c7-42f2-a6ce-0ef50768010b', '1b2e14e9-27c7-42f2-a6ce-0ef50768010b');
+
+insert into xr.classification_values ( versionid, valueid, value, description )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'36233866-3249-4fd5-9fea-0f5d119f270c', 'TEXT/XML',
+	'For: xml and dtd file types');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '131fe75d-2447-45d3-87a2-37ee31dd08d4', 
+	'36233866-3249-4fd5-9fea-0f5d119f270c', '36233866-3249-4fd5-9fea-0f5d119f270c');
+
+--echo == Create Group Types ClassificationScheme ====================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'33a51bf1-2460-4533-a976-161a3ba50377',
+	'186335e7-1ed0-4b6c-bc9e-362410001b2d', 
+	'Collection Types', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Collection+Types',
+	'1.0/Collection+Types/1.0',
+	'Valid values for the CollectionType property of a Collection',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'186335e7-1ed0-4b6c-bc9e-362410001b2d', 'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'33a51bf1-2460-4533-a976-161a3ba50377', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'186335e7-1ed0-4b6c-bc9e-362410001b2d'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('186335e7-1ed0-4b6c-bc9e-362410001b2d', 'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('33a51bf1-2460-4533-a976-161a3ba50377', '196b15da-136f-4e19-933f-036f01481f5f');
+
+
+--echo ==================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '33a51bf1-2460-4533-a976-161a3ba50377', 
+	'11a832a5-0bb1-46db-a000-147906f70021', 'FOLDER');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '33a51bf1-2460-4533-a976-161a3ba50377', 
+	'11a832a5-0bb1-46db-a000-147906f70021', '11a832a5-0bb1-46db-a000-147906f70021');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '33a51bf1-2460-4533-a976-161a3ba50377', 
+	'3bf533e0-0d39-4f8c-b109-07cd125e2ab1', 'PROJECT');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '33a51bf1-2460-4533-a976-161a3ba50377', 
+	'3bf533e0-0d39-4f8c-b109-07cd125e2ab1', '3bf533e0-0d39-4f8c-b109-07cd125e2ab1');
+
+--echo == Create Object Relationship Types ClassificationScheme ====================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'29556c11-35e9-44a5-84a0-3249345a221e',
+	'33e5380b-30ca-47ad-8e1c-24ec3f5932af', 
+	'Object Relationship Types','1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Object+Relationship+Types',
+	'1.0/Object+Relationship+Types/1.0',
+	'Valid values for the RelationshipType property of an Object Relationship',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'33e5380b-30ca-47ad-8e1c-24ec3f5932af', 'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'29556c11-35e9-44a5-84a0-3249345a221e', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'33e5380b-30ca-47ad-8e1c-24ec3f5932af'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('33e5380b-30ca-47ad-8e1c-24ec3f5932af', 'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('29556c11-35e9-44a5-84a0-3249345a221e', '196b15da-136f-4e19-933f-036f01481f5f');
+
+
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'29556c11-35e9-44a5-84a0-3249345a221e', 
+	'023e3ccc-3c29-445c-98cf-22a030041508', 
+	'INCLUDES',
+	'INCLUDES');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'29556c11-35e9-44a5-84a0-3249345a221e', 
+	'023e3ccc-3c29-445c-98cf-22a030041508', 
+	'023e3ccc-3c29-445c-98cf-22a030041508');
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'29556c11-35e9-44a5-84a0-3249345a221e', 
+	'06d427a6-149b-436a-acfd-38d61f503891', 
+	'IMPORTS',
+	'IMPORTS');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'29556c11-35e9-44a5-84a0-3249345a221e', 
+	'06d427a6-149b-436a-acfd-38d61f503891', 
+	'06d427a6-149b-436a-acfd-38d61f503891');
+
+
+--echo =====================================================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'29556c11-35e9-44a5-84a0-3249345a221e', 
+	'2c662810-2e25-489c-ad14-14d31e9a06cb', 
+	'REDEFINES',
+	'REDEFINES');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'29556c11-35e9-44a5-84a0-3249345a221e', 
+	'2c662810-2e25-489c-ad14-14d31e9a06cb', 
+	'2c662810-2e25-489c-ad14-14d31e9a06cb');
+
+--echo == Create Scheme Usage ClassificationScheme ====================================;
+--echo ================================================================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'32590e5c-1a2d-4631-8693-3a330f163b62',
+	'13321d30-38aa-4b7a-a8f8-03a710ab0480', 
+	'Classification Scheme Uses', '1.0', 
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Classification+Scheme+Uses',
+	'1.0/Classification+Scheme+Uses/1.0',
+	'Usage categories for Classification Schemes',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'13321d30-38aa-4b7a-a8f8-03a710ab0480', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'013026c8-1b22-487a-a189-1c7b16811035',
+	CURRENT TIMESTAMP,
+	'32590e5c-1a2d-4631-8693-3a330f163b62', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'13321d30-38aa-4b7a-a8f8-03a710ab0480'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('13321d30-38aa-4b7a-a8f8-03a710ab0480', 'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('32590e5c-1a2d-4631-8693-3a330f163b62', '196b15da-136f-4e19-933f-036f01481f5f');
+
+-- This scheme classified as CLASSIFIES_CLASSIFICATION_SCHEME
+insert into xr.classifications ( objectversionid, valueid )
+	values ('32590e5c-1a2d-4631-8693-3a330f163b62', '081e2e55-2c65-4358-aecc-2faf0a2a15fa');
+
+--echo ================================================================================;
+
+-- Values
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'059b1ce1-0a6c-46f8-9a4f-153607e10bf1', 'CLASSIFIES_ALL',
+	'Values in this ClassificationScheme can classify objects of any type.',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'059b1ce1-0a6c-46f8-9a4f-153607e10bf1', '059b1ce1-0a6c-46f8-9a4f-153607e10bf1');
+--echo ================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'196b15da-136f-4e19-933f-036f01481f5f', 'INTERNAL_USE',
+	'This ClassificationScheme has a special use in XR.',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'196b15da-136f-4e19-933f-036f01481f5f', '196b15da-136f-4e19-933f-036f01481f5f');
+--echo ================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'2e2f1074-03ff-40f3-8e00-329e1ba410ee', 'CLASSIFIES_ORGANIZATION',
+	'Values in this ClassificationScheme can classify objects of type ORGANIZATION.',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'2e2f1074-03ff-40f3-8e00-329e1ba410ee', '2e2f1074-03ff-40f3-8e00-329e1ba410ee');
+--echo ================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'2c7e121d-2a88-48b6-8714-3e231ed83a1a', 'CLASSIFIES_REGISTRY_OBJECTS',
+	'Values in this ClassificationScheme can classify objects of type REGISTRY_OBJECT.',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'2c7e121d-2a88-48b6-8714-3e231ed83a1a', '2c7e121d-2a88-48b6-8714-3e231ed83a1a');
+--echo ================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'34c93f68-3724-4d5a-b911-2f721a1013dc', 'CLASSIFIES_REGISTRY_ENTRIES',
+	'Values in this ClassificationScheme can classify objects of type REGISTRY_ENTRY.',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'34c93f68-3724-4d5a-b911-2f721a1013dc', '34c93f68-3724-4d5a-b911-2f721a1013dc');
+--echo ================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'3f08339c-1628-4e2a-9476-3e3e014f18c3', 'CLASSIFIES_COLLECTIONS',
+	'Values in this ClassificationScheme can classify objects of type COLLECTIONS.',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'3f08339c-1628-4e2a-9476-3e3e014f18c3', '3f08339c-1628-4e2a-9476-3e3e014f18c3');
+--echo ================================================================================;
+
+insert into xr.classification_values ( versionid, valueid, value, description, parentvalueid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'081e2e55-2c65-4358-aecc-2faf0a2a15fa', 'CLASSIFIES_CLASSIFICATION_SCHEMES',
+	'values in this ClassificationScheme can classify objects of type CLASSIFICATION_SCHEMES',
+	null);
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '32590e5c-1a2d-4631-8693-3a330f163b62', 
+	'081e2e55-2c65-4358-aecc-2faf0a2a15fa', '081e2e55-2c65-4358-aecc-2faf0a2a15fa');
+
+--echo ================================================================================;
+--echo ================================================================================;
+
+
+
+--echo == RepositoryEntry Status values ClassificationScheme ====================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'33a12091-136a-46f6-a9a5-27b71f4a1ad1',
+	'1a551af6-1f62-4429-9025-3948276625d0', 
+	'Status Values', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Status+Values',
+	'1.0/Status+Values/1.0',
+	'Valid values for the Status property of a Registry Entry',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'1a551af6-1f62-4429-9025-3948276625d0', 'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'33a12091-136a-46f6-a9a5-27b71f4a1ad1', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'1a551af6-1f62-4429-9025-3948276625d0'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('1a551af6-1f62-4429-9025-3948276625d0', 'LIST');
+
+-- This scheme classified as INTERNAL_USE
+insert into xr.classifications ( objectversionid, valueid )
+	values ('33a12091-136a-46f6-a9a5-27b71f4a1ad1', '196b15da-136f-4e19-933f-036f01481f5f');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'233f0687-3328-43b9-a120-165b04a93bc8', 'Submitted');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'233f0687-3328-43b9-a120-165b04a93bc8', '233f0687-3328-43b9-a120-165b04a93bc8');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'024e19ad-0d4c-4f86-94a4-1a993c5f28d3', 'Approved');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'024e19ad-0d4c-4f86-94a4-1a993c5f28d3', '024e19ad-0d4c-4f86-94a4-1a993c5f28d3');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'34011142-0eca-4a0e-be48-26b405c30552', 'Deprecated');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'34011142-0eca-4a0e-be48-26b405c30552', '34011142-0eca-4a0e-be48-26b405c30552');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'1cd72ab1-05c3-4164-898e-090e09832441', 'Withdrawn');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '33a12091-136a-46f6-a9a5-27b71f4a1ad1', 
+	'1cd72ab1-05c3-4164-898e-090e09832441', '1cd72ab1-05c3-4164-898e-090e09832441');
+
+--echo == Create Industries ClassificationScheme ====================================;
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'1230aea4-05a3-435f-832d-2fd639e525f3',
+	'36ad1483-123f-48c3-9050-1e52358825f2', 
+	'Industries', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Industries', '1.0/industries/1.0',
+	'North American Industry Classification Scheme',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, type, subtype, creatorid, createdate, currentVersion, versionControlled
+	) values (
+	'36ad1483-123f-48c3-9050-1e52358825f2', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'1230aea4-05a3-435f-832d-2fd639e525f3', 0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'36ad1483-123f-48c3-9050-1e52358825f2'
+);
+
+insert into xr.classificationscheme (id, structuretype) 
+	values ('36ad1483-123f-48c3-9050-1e52358825f2', 'TREE');
+
+-- This scheme classified as CLASSIFIES_ALL
+	insert into xr.classifications ( objectversionid, valueid )
+	values ('1230aea4-05a3-435f-832d-2fd639e525f3', '059b1ce1-0a6c-46f8-9a4f-153607e10bf1');
+
+insert into xr.classification_values ( versionid, valueid, value )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'3b43294d-034d-44f6-94bd-30bb3ca61cae', 'Wholesale Trade');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'3b43294d-034d-44f6-94bd-30bb3ca61cae', '3b43294d-034d-44f6-94bd-30bb3ca61cae');
+
+insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'039802aa-015a-4642-8d4e-2f9c17b0013c', 'Wholesale Trade, Durable Goods',
+	'3b43294d-034d-44f6-94bd-30bb3ca61cae');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'039802aa-015a-4642-8d4e-2f9c17b0013c', '039802aa-015a-4642-8d4e-2f9c17b0013c');
+
+-- Wholesale Trade is ancestor of Wholesale Trade, Durable Goods
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'039802aa-015a-4642-8d4e-2f9c17b0013c', '3b43294d-034d-44f6-94bd-30bb3ca61cae');
+
+insert into xr.classification_values ( versionid, valueid, value)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'396528a3-34c6-47e3-af6c-133e2a6c328b', 'Manufacturing');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'396528a3-34c6-47e3-af6c-133e2a6c328b', '396528a3-34c6-47e3-af6c-133e2a6c328b');
+
+insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'1af03872-2727-4bb4-9d2b-1d82392e1d66', 'Food Manufacturing',
+	'396528a3-34c6-47e3-af6c-133e2a6c328b');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'1af03872-2727-4bb4-9d2b-1d82392e1d66', '1af03872-2727-4bb4-9d2b-1d82392e1d66');
+
+-- Manufacturing is ancestor of Food Manufacturing
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'1af03872-2727-4bb4-9d2b-1d82392e1d66', '396528a3-34c6-47e3-af6c-133e2a6c328b');
+
+insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'009f16be-33b6-4846-ac9a-1ff932930615', 'Computer and Electronic Product Manufacturing',
+	'396528a3-34c6-47e3-af6c-133e2a6c328b');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'009f16be-33b6-4846-ac9a-1ff932930615', '009f16be-33b6-4846-ac9a-1ff932930615');
+
+-- Manufacturing is ancestor of Computer and Electronic Product Manufacturing
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'009f16be-33b6-4846-ac9a-1ff932930615', '396528a3-34c6-47e3-af6c-133e2a6c328b');
+
+insert into xr.classification_values ( versionid, valueid, value)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'15ce1711-2938-4170-bf5d-333105ab0d02', 'Utilities');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'15ce1711-2938-4170-bf5d-333105ab0d02', '15ce1711-2938-4170-bf5d-333105ab0d02');
+
+insert into xr.classification_values ( versionid, valueid, value)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'23de3f4b-002b-40ba-b0f4-3ab20cdc1bf2', 'Construction');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'23de3f4b-002b-40ba-b0f4-3ab20cdc1bf2', '23de3f4b-002b-40ba-b0f4-3ab20cdc1bf2');
+
+insert into xr.classification_values ( versionid, valueid, value)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'225708f3-00a7-4406-b5e3-0ff72a082216', 'Retail Trade');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'225708f3-00a7-4406-b5e3-0ff72a082216', '225708f3-00a7-4406-b5e3-0ff72a082216');
+
+insert into xr.classification_values ( versionid, valueid, value)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'3d1926f7-27f7-462e-afb9-2fba15b00be1', 'Finance and Insurance');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'3d1926f7-27f7-462e-afb9-2fba15b00be1', '3d1926f7-27f7-462e-afb9-2fba15b00be1');
+
+insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'22651e88-2c3f-4552-9994-3ac7271e0e1c', 'Insurance Carriers and Related Activities',
+	'3d1926f7-27f7-462e-afb9-2fba15b00be1');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'22651e88-2c3f-4552-9994-3ac7271e0e1c', '22651e88-2c3f-4552-9994-3ac7271e0e1c');
+
+-- Finance and Insurance is ancestor of Insurance Carriers and Related Activities
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'22651e88-2c3f-4552-9994-3ac7271e0e1c', '3d1926f7-27f7-462e-afb9-2fba15b00be1');
+
+insert into xr.classification_values ( versionid, valueid, value, parentvalueid)
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'19db32d6-059b-4ced-ae72-24d7105a3a15', 'Funds, Trusts, and Other Financial Vehicles',
+	'3d1926f7-27f7-462e-afb9-2fba15b00be1');
+
+insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'19db32d6-059b-4ced-ae72-24d7105a3a15', '19db32d6-059b-4ced-ae72-24d7105a3a15');
+
+-- Finance and Insurance is ancestor of Funds, Trusts, and Other Financial Vehicles
+	insert into xr.classification_value_ancestors ( versionid, valueid, ancestorid )
+	values ( '1230aea4-05a3-435f-832d-2fd639e525f3', 
+	'19db32d6-059b-4ced-ae72-24d7105a3a15', '3d1926f7-27f7-462e-afb9-2fba15b00be1');
+
+--echo ==========================================================;
+--echo == Web Service Schemes ===================================;
+--echo ==========================================================;
+
+
+--XRADMIN ID '26747154-0dfc-46af-a85d-1dc30c230c4e' 
+-- repositoryobjectversion.folderid references xr.repositoryobjectresource(id)
+--ROOT FolderID foreign '225924f8-1a72-42c9-a58d-05b41d8415ce' 
+
+
+--echo ==========================================================;
+--echo == WSDL Function =========================================;
+--echo ==========================================================;
+
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'05832d21-039e-47ce-95f0-11b320540c89',
+	'009738ce-2da3-428e-ad78-1ae53e9c0373', 
+	'WSDL Function', '1.0',   
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'WSDL+Function',
+	'1.0/WSDL+Function/1.0',
+	'The function that this wsdl provides, (interface/implementation/both/etc) ',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'009738ce-2da3-428e-ad78-1ae53e9c0373', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'009738ce-2da3-428e-ad78-1ae53e9c0373'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'009738ce-2da3-428e-ad78-1ae53e9c0373', 
+	'LIST');
+
+
+
+-- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'05832d21-039e-47ce-95f0-11b320540c89',
+	'34c93f68-3724-4d5a-b911-2f721a1013dc');
+
+
+
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'26701eaa-288d-4939-b26d-32d3302b3a43', 
+	'INTERFACE',
+	'INTERFACE');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'26701eaa-288d-4939-b26d-32d3302b3a43', 
+	'26701eaa-288d-4939-b26d-32d3302b3a43');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'37620d70-0430-4b10-94ab-339304bd3a32', 
+	'IMPLEMENTAION',
+	'IMPLEMENTAION');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'37620d70-0430-4b10-94ab-339304bd3a32', 
+	'37620d70-0430-4b10-94ab-339304bd3a32');
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'3a6c14c0-3943-479b-b4b5-00613ddd389d', 
+	'ALL',
+	'This WSDL doc stands alone and has all of the information in one file');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'3a6c14c0-3943-479b-b4b5-00613ddd389d', 
+	'3a6c14c0-3943-479b-b4b5-00613ddd389d');
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'15150e99-251d-471f-a8a7-346d0da93131', 
+	'BINDING',
+	'BINDING');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'15150e99-251d-471f-a8a7-346d0da93131', 
+	'15150e99-251d-471f-a8a7-346d0da93131');
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'26171148-19be-4fb9-87c3-182001341f78', 
+	'SERVICE',
+	'SERVICE');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'05832d21-039e-47ce-95f0-11b320540c89', 
+	'26171148-19be-4fb9-87c3-182001341f78', 
+	'26171148-19be-4fb9-87c3-182001341f78');
+
+
+
+--echo ==========================================================;
+--echo == Web Service Creation Toolkit ==========================;
+--echo ==========================================================;
+
+
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'2d0b2e03-3880-4529-967f-25401e3f1216',
+	'11971f7b-360c-4701-aff8-3585338d1452', 
+	'Web Service Toolkit', '1.0',   
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'Web+Service+Toolkit',
+	'1.0/Web+Service+Toolkit/1.0',
+	'Web Service toolkit used to create this Document',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'11971f7b-360c-4701-aff8-3585338d1452', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'11971f7b-360c-4701-aff8-3585338d1452'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'11971f7b-360c-4701-aff8-3585338d1452', 
+	'LIST');
+
+
+
+-- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'2d0b2e03-3880-4529-967f-25401e3f1216',
+	'34c93f68-3724-4d5a-b911-2f721a1013dc');
+
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'0b99365a-0d1d-4bae-b1a7-3b6f2299023f', 
+	'MICROSOFT',
+	'MICROSOFT');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'0b99365a-0d1d-4bae-b1a7-3b6f2299023f', 
+	'0b99365a-0d1d-4bae-b1a7-3b6f2299023f');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'280f08d6-02f2-4623-9602-08d21bb715d9', 
+	'WSAD',
+	'WSAD');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'280f08d6-02f2-4623-9602-08d21bb715d9', 
+	'280f08d6-02f2-4623-9602-08d21bb715d9');
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'1c8c0380-0551-495a-bf80-39a0076a01e9', 
+	'WSTK',
+	'WSTK');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'1c8c0380-0551-495a-bf80-39a0076a01e9', 
+	'1c8c0380-0551-495a-bf80-39a0076a01e9');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'3a551d74-30b7-4ea7-a2ac-1c3f1d3e2961', 
+	'WSIF',
+	'WSIF');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'2d0b2e03-3880-4529-967f-25401e3f1216', 
+	'3a551d74-30b7-4ea7-a2ac-1c3f1d3e2961', 
+	'3a551d74-30b7-4ea7-a2ac-1c3f1d3e2961');
+
+
+
+--echo ==========================================================;
+--echo == WSDL Binding Schema ===================================;
+--echo ==========================================================;
+
+
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63',
+	'016934a5-3a94-490b-8c14-13540df318c0', 
+	'WSDL Binding Schema', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	 'WSDL+Binding+Schema',
+	'1.0/WSDL+Binding+Schema/1.0',
+	'Valid types of soap binding style, see www.w3c.org wsdl/soap spec',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'016934a5-3a94-490b-8c14-13540df318c0', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'016934a5-3a94-490b-8c14-13540df318c0'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'016934a5-3a94-490b-8c14-13540df318c0', 
+	'LIST');
+
+
+
+-- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63',
+	'34c93f68-3724-4d5a-b911-2f721a1013dc');
+
+
+
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	'01a00568-1775-4d6b-877f-048e252d3f2a', 
+	'SOAP',
+	'SOAP');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	'01a00568-1775-4d6b-877f-048e252d3f2a', 
+	'01a00568-1775-4d6b-877f-048e252d3f2a');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	'337e3856-29e2-492f-8843-3f9d00d927fe', 
+	'HTTP',
+	'HTTP');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	'337e3856-29e2-492f-8843-3f9d00d927fe', 
+	'337e3856-29e2-492f-8843-3f9d00d927fe');
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	'2e483da3-1d10-4770-a8ca-13612feb1e5b', 
+	'MIME',
+	'MIME');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'24eb2dd7-0092-493b-a7f8-0ca520410f63', 
+	'2e483da3-1d10-4770-a8ca-13612feb1e5b', 
+	'2e483da3-1d10-4770-a8ca-13612feb1e5b');
+
+--echo ==========================================================;
+--echo == SOAP Binding Style ====================================;
+--echo ==========================================================;
+
+
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15',
+	'3fab3fc4-229f-48ff-86b8-2f6227791557', 
+	'SOAP Binding Style', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'SOAP+Binding+Style',
+	'1.0/SOAP+Binding+Style/1.0',
+	'Valid types of soap binding style, see www.w3c.org wsdl/soap spec',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'3fab3fc4-229f-48ff-86b8-2f6227791557', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'3fab3fc4-229f-48ff-86b8-2f6227791557'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'3fab3fc4-229f-48ff-86b8-2f6227791557', 
+	'LIST');
+
+
+
+-- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15',
+	'34c93f68-3724-4d5a-b911-2f721a1013dc');
+
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15', 
+	'04851881-3671-4a7d-b413-168f357b0290', 
+	'RPC',
+	'RPC');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15', 
+	'04851881-3671-4a7d-b413-168f357b0290', 
+	'04851881-3671-4a7d-b413-168f357b0290');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15', 
+	'016934a5-3a94-490b-8c14-13540df318c0', 
+	'DOCUMENT',
+	'DOCUMENT');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'0d4c084d-3a39-4ad0-9c83-063a305c1b15', 
+	'016934a5-3a94-490b-8c14-13540df318c0', 
+	'016934a5-3a94-490b-8c14-13540df318c0');
+
+--echo ==========================================================;
+--echo == WSDL Port types ====================================;
+--echo =========================================================;
+
+
+insert into xr.repositoryobjectversion (
+	id, 
+	resourceid, 
+	name, 
+	versionName,
+	folderid, 
+	uri, 
+	versionuri, 
+	description,
+	ownerid, 
+	creatorid, 
+	versiondate, 
+	changedate, 
+	previousversion
+) values (
+	'006921cd-2c79-4d29-afe0-2bd3010232ce',
+	'245d81e5-34c4-4ddc-bb6e-2cc134d83fdc', 
+	'WSDL Port Type Operations', '1.0',  
+	'225924f8-1a72-42c9-a58d-05b41d8415ce',
+	'WSDL+Port+Type+Operations',
+	'1.0/WSDL+Port+Type+Operations/1.0',
+	'Valid types for port type operation, see www.w3c.org wsdl spec',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP, 
+	CURRENT TIMESTAMP,
+	null
+	);
+
+insert into xr.repositoryobjectresource (
+	id, 
+	type, 
+	subtype, 
+	creatorid, 
+	createdate, 
+	currentVersion, 
+	versionControlled
+) values (
+	'245d81e5-34c4-4ddc-bb6e-2cc134d83fdc', 
+	'CLASSIFICATION_SCHEME', 
+	'19adf2cf-0a2e-4d98-8f68-221708370b4c',
+	'26747154-0dfc-46af-a85d-1dc30c230c4e',
+	CURRENT TIMESTAMP,
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	0);
+
+-- This scheme goes into root folder
+insert into xr.objectgroup_content (
+	versionid,
+	memberid
+) values (
+	'077bb8c4-0894-4d99-937a-356c315d26e2',
+	'245d81e5-34c4-4ddc-bb6e-2cc134d83fdc'
+);
+
+insert into xr.classificationscheme (
+	id, 
+	structuretype
+) values (
+	'245d81e5-34c4-4ddc-bb6e-2cc134d83fdc', 
+	'LIST');
+
+
+-- This scheme classified as 
+insert into xr.classifications ( 
+	objectversionid, 
+	valueid 
+) values (
+	'006921cd-2c79-4d29-afe0-2bd3010232ce',
+	'34c93f68-3724-4d5a-b911-2f721a1013dc');
+
+
+
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'392929b5-32d6-40a9-ac16-233013e637c8', 
+	'ONE-WAY',
+	'ONE-WAY');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'392929b5-32d6-40a9-ac16-233013e637c8', 
+	'392929b5-32d6-40a9-ac16-233013e637c8');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'0370089e-378a-438c-88c8-351605a82fed', 
+	'REQUEST-RESPONSE',
+	'REQUEST-RESPONSE');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid
+)values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'0370089e-378a-438c-88c8-351605a82fed', 
+	'0370089e-378a-438c-88c8-351605a82fed');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+)values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'08c63f80-037e-4636-ae06-0a1a3b260232', 
+	'SOLICIT-RESPONSE',
+	'SOLICIT-RESPONSE');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'08c63f80-037e-4636-ae06-0a1a3b260232', 
+	'08c63f80-037e-4636-ae06-0a1a3b260232');
+
+--echo ==========================================================;
+
+
+insert into xr.classification_values ( 
+	versionid, 
+	valueid, 
+	value, 
+	description 
+) values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'335b149b-34b6-423f-929e-1cfa12f522cb', 
+	'NOTIFICATION',
+	'NOTIFICATION');
+
+insert into xr.classification_value_ancestors ( 
+	versionid, 
+	valueid, 
+	ancestorid 
+) values ( 
+	'006921cd-2c79-4d29-afe0-2bd3010232ce', 
+	'335b149b-34b6-423f-929e-1cfa12f522cb', 
+	'335b149b-34b6-423f-929e-1cfa12f522cb');
+
+-- Now do really what I wanted (this gets NullPointerException before the fix):
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 20000;
+
+SELECT id, versionid, name, versionName, folderid, uri, versionuri, ownerid, ownername, ownerauthid,
+       description, versionComment, objecttype, subtypeid, subtype, createdate,versiondate,
+       changedate, deletedate, versioncontrolled, currentversion, previousversion, checkedout,
+       statusid, status, startdate, expirationdate, contentchangedate, versioncontentid, sourceid,
+       targetid, structuretype 
+FROM xr.repositoryobjectallversionview rov 
+where (uname = UPPER('two') or uname = UPPER('my project'))
+and (versionid in
+      (select versionid
+       from xr.versionlabel
+       where UPPER(label) = UPPER('Snapshot')))
+  and deletedate is null
+order by versionname asc;
+
+-- NOTE: EXCEPT THE FIRST TWO TABLES IN OUTPUT (REPOSITORYOBJECTRESOURCE AND REPOSITORYOBJECTVERSION),
+-- ALL OTHER TABLES SHOULD HAVE: Number of opens = 0 AND Rows seen = 0.  THIS IS BECAUSE PREDICATE
+-- ON UNAME OF REPOSITORYOBJECTVERSION SHOULD BE PUSHED DOWN ALL THE WAY TO BASE TABLE ! bug 4983
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+rollback;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/predicatesIntoViews_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/primarykey.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/primarykey.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,160 @@
+-- tests for primary/unique key
+-- most testing currently deferred since we have extensive index tests
+-- and no foreign keys yet.
+
+
+-- negative tests
+
+-- duplicate primary keys
+create table neg (c1 int not null primary key, c2 int, c3 int not null constraint asdf primary key);
+create table neg (c1 int not null primary key, c2 int, c3 int not null constraint asdf primary key);
+
+create table neg (c1 int not null primary key, c2 int not null, primary key(c1, c2));
+
+-- duplicate constraint names
+create table neg (c1 int not null constraint asdf primary key, c2 int, c3 int constraint asdf unique);
+
+-- duplicate column names in same constraint column list
+create table neg (c1 int not null, c2 int not null, primary key(c1, c2, c1));
+
+-- non-existant columns in constraint column list
+create table neg (c1 int not null, c2 int not null, primary key(c1, c2, cx));
+
+-- invalid constraint schema name
+create table neg (c1 int not null, c2 int not null, constraint bar.pkneg primary key(c1, c2));
+create table neg (c1 int not null, c2 int not null, constraint sys.pkneg primary key(c1, c2));
+create table neg (c1 int not null constraint bar.pkneg primary key, c2 int);
+create table neg (c1 int not null constraint sys.pkneg primary key, c2 int);
+
+
+-- constraint names must be unique within a schema
+create table neg1(c1 int not null constraint asdf primary key);
+create table neg2(c1 int not null constraint asdf primary key);
+drop table neg1;
+create table neg2(c1 int not null constraint asdf primary key);
+drop table neg2;
+
+-- again with explict schema names, should fail
+create table neg1(c1 int not null constraint app.asdf primary key);
+create table neg2(c1 int not null constraint app.asdf primary key);
+create table neg2(c1 int not null constraint app.asdf primary key);
+
+-- again with mixing schema names
+create table neg1(c1 int not null constraint asdf primary key);
+create table neg2(c1 int not null constraint app.asdf primary key);
+drop table neg1;
+create table neg2(c1 int not null constraint app.asdf primary key);
+
+-- primary key cannot be explicitly nullable
+create table neg2(c1 int null constraint asdf primary key);
+create table neg2(c1 int null, c2 int, constraint asdf primary key(c1, c2));
+
+-- verify that you can not create a primary key column with default null
+-- a primary key column can only be create if the column is explicitly not null
+create table neg1 (c1 int default null primary key);
+create table neg1 (c1 int default null, c2 int not null, primary key(c2, c1));
+
+-- test that a unique key can be not be explicitly nullable
+create table neg1(c1 int null unique);
+create table neg1(c1 int null, c2 int, constraint asdf unique(c1));
+
+
+
+-- positive tests
+
+-- verify that a unique key can not contain nulls
+create table pos1 (c1 int not null unique, c2 int);
+insert into pos1 (c1) values(null);
+insert into pos1 (c1) values(null);
+select * from pos1;
+drop table pos1;
+
+-- verify that you can combine not null and unique/primary key constraints
+create table pos1 (c1 int not null unique, c2 int not null primary key);
+insert into pos1 (c1) values (null);
+insert into pos1 (c2) values (null);
+drop table pos1;
+
+-- verify that you can combine multiple column constraints
+select count(*) from sys.sysconstraints;
+select count(*) from sys.syskeys;
+-- we will be adding 6 rows to both sysconstraints and syskeys
+create table pos1 (c1 int not null unique, c2 int not null primary key);
+insert into pos1 (c1) values (null);
+insert into pos1 (c2) values (null);
+insert into pos1 values (1, 1), (1, 2);
+insert into pos1 values (1, 1), (2, 1);
+select count(*) from sys.sysconstraints;
+select count(*) from sys.syskeys;
+drop table pos1;
+
+
+-- verify that you can delete from a primary key
+create table pos1 (c1 int not null, c2 int not null, primary key(c2, c1));
+insert into pos1 values (1, 2);
+select * from pos1;
+delete from pos1;
+select * from pos1;
+
+-- create a table with lots key columns
+create table pos2 (i int not null, s smallint not null, r real not null, dp double precision not null,
+				   c30 char(30) not null, vc10 varchar(10) not null, d date not null, t time not null,
+				   ts timestamp not null,
+				   primary key(ts, t, d, vc10, c30, dp, r, s, i));
+insert into pos2 values(111111, 1, 1.11, 11111.1111, 'char(30)',
+					    'vc(10)', '1999-9-9',
+					    '8:08:08', '1999-9-9 8:08:08');
+insert into pos2 values(111111, 1, 1.11, 11111.1111, 'char(30)',
+					    'vc(10)', '1999-9-9',
+					    '8:08:08', '1999-9-9 8:08:08');
+
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+
+-- drop tables
+drop table pos1;
+drop table pos2;
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+
+-- test that a unique key can be explicitly not nullable
+create table pos1(c1 int not null unique);
+drop table pos1;
+create table pos1(c1 int not null, c2 int, constraint asdf unique(c1));
+
+create table t1 (c1 int, c2 int, c3 int not null);
+create unique index i11 on t1 (c3);
+create unique index i12 on t1 (c1, c3 desc);
+insert into t1 values (1,2,3);
+insert into t1 values (null, 4,5);
+create table t2 (c1 int, c2 int, c3 int);
+insert into t2 values (1,2,3), (null, 4,5), (7,8,9);
+create unique index i21 on t2 (c3);
+create unique index i22 on t2 (c1, c3 desc);
+drop table t1;
+drop table t2;
+
+-- bug 5520 - constraint names in new schemas.
+create table B5420_1.t1 (c1 int not null primary key);
+create table B5420_2.t2 (c2 int not null constraint c2pk primary key);
+-- two part constraint names are not allowed
+create table B5420_3.t3 (c3 int not null constraint B5420_3.c3pk primary key);
+
+create table B5420_4.t4 (c4 int not null, primary key (c4));
+create table B5420_5.t5 (c5 int not null, constraint c5pk primary key (c5));
+-- two part constraint names are not allowed
+create table B5420_6.t6 (c6 int not null, constraint B5420_6.c6pk primary key (c6));
+
+SELECT CAST (S.SCHEMANAME AS VARCHAR(12)), CAST (C.CONSTRAINTNAME AS VARCHAR(36)), CAST (T.TABLENAME AS VARCHAR(12)) FROM SYS.SYSCONSTRAINTS C , SYS.SYSTABLES T, SYS.SYSSCHEMAS S
+WHERE C.SCHEMAID = S.SCHEMAID AND C.TABLEID = T.TABLEID AND T.SCHEMAID = S.SCHEMAID
+AND S.SCHEMANAME LIKE 'B5420_%' ORDER BY 1,2,3;
+
+-- clean up
+drop table B5420_1.t1;
+drop table B5420_2.t2;
+drop table B5420_4.t4;
+drop table B5420_5.t5;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1517 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.harness
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+import java.sql.*;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.iapi.reference.JDBC30Translation;
+import java.io.PrintStream;
+import java.math.BigInteger;
+import java.math.BigDecimal;
+
+import java.lang.reflect.*;
+
+import org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30;
+
+public class procedure
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+  private static Class[] CONN_PARAM = { Integer.TYPE };
+  private static Object[] CONN_ARG = { new Integer(JDBC30Translation.CLOSE_CURSORS_AT_COMMIT)};
+
+	static private boolean isDerbyNet = false;
+
+	public static void main (String[] argv) throws Throwable
+	{
+   		ij.getPropertyArg(argv); 
+        Connection conn = ij.startJBMS();
+		String framework = System.getProperty("framework");
+		if (framework != null && framework.toUpperCase().equals("DERBYNET"))
+			isDerbyNet = true;
+
+		// DB2 !!
+		// com.ibm.db2.jcc.DB2DataSource ds = new com.ibm.db2.jcc.DB2DataSource();
+
+		// ds.setDatabaseName("testdb");
+
+		// ds.setServerName("localhost");
+		//ds.setPortNumber(1527);
+		// ds.setDriverType(4);
+
+		 // Connection conn = ds.getConnection("db2admin", "password");
+
+		//Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
+		//Connection conn = DriverManager.getConnection("jdbc:db2:testdb", "USER", "XXXXX");
+
+
+        runTests( conn);
+    }
+
+    public static void runTests( Connection conn) throws Throwable
+    {
+		try {
+			testNegative(conn);
+			testDelayedClassChecking(conn);
+			testDuplicates(conn);
+			ambigiousMethods(conn);
+			zeroArgProcedures(conn);
+			sqlProcedures(conn);
+			dynamicResultSets(conn, ij.startJBMS());
+
+			testParameterTypes(conn);
+			testOutparams(conn);
+
+			testSQLControl(conn);
+
+				testLiterals(conn);
+		} catch (SQLException sqle) {
+			org.apache.derby.tools.JDBCDisplayUtil.ShowSQLException(System.out, sqle);
+			sqle.printStackTrace(System.out);
+		}
+		
+	}
+
+	public static void testNegative(Connection conn) throws SQLException {
+
+		System.out.println("testNegative");
+
+		Statement s = conn.createStatement();
+
+		// no '.' in path/method
+		statementExceptionExpected(s, "create procedure asdf() language java external name 'asdfasdf' parameter style java");
+
+		// trailing '.'
+		statementExceptionExpected(s, "create procedure asdf() language java external name 'asdfasdf.' parameter style java");
+
+		// procedure name too long
+		statementExceptionExpected(s, "create procedure a23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789() language java external name 'asdf.asdf' parameter style java");
+
+		// -- missing parens on procedure name
+		statementExceptionExpected(s, "create procedure asdf language java external name java.lang.Thread.currentThread parameter style java");
+
+		// -- incorrect language, (almost) straight from DB2 docs 
+
+		statementExceptionExpected(s, "CREATE PROCEDURE ASSEMBLY_PARTS (IN ASSEMBLY_NUM INTEGER, OUT NUM_PARTS INTEGER, OUT COST DOUBLE) EXTERNAL NAME 'parts!assembly' DYNAMIC RESULT SETS 1 LANGUAGE C PARAMETER STYLE GENERAL");
+
+		// invalid schema 
+		statementExceptionExpected(s, "create procedure sys.proc1() language java external name 'java.lang.System.gc' parameter style java");
+
+		// repeated elements
+		statementExceptionExpected(s, "create procedure noclass() language java external name 'asdf.asdf' parameter style java language java");
+		statementExceptionExpected(s, "create procedure noclass() parameter style java language java external name 'asdf.asdf' parameter style java");
+		statementExceptionExpected(s, "create procedure noclass() external name 'asdf.xxxx' language java external name 'asdf.asdf' parameter style java");
+		statementExceptionExpected(s, "create procedure noclass() parameter style java language java external name 'asdf.asdf' parameter style derby_rs_collection");
+
+		// missing elements
+		statementExceptionExpected(s, "create procedure missing01()");
+		statementExceptionExpected(s, "create procedure missing02() language java");
+		statementExceptionExpected(s, "create procedure missing03() language java parameter style java");
+		statementExceptionExpected(s, "create procedure missing04() language java external name 'foo.bar'");
+		statementExceptionExpected(s, "create procedure missing05() parameter style java");
+		statementExceptionExpected(s, "create procedure missing06() parameter style java external name 'foo.bar'");
+		statementExceptionExpected(s, "create procedure missing07() external name 'goo.bar'");
+		statementExceptionExpected(s, "create procedure missing08() dynamic result sets 1");
+		//statementExceptionExpected(s, "create procedure missing09() specific name fred");
+
+
+		// no BLOB/CLOB/ long parameters
+		statementExceptionExpected(s, "create procedure NO_BLOB(IN P1 BLOB(3k)) language java parameter style java external name 'no.blob'");
+		statementExceptionExpected(s, "create procedure NO_CLOB(IN P1 CLOB(3k)) language java parameter style java external name 'no.clob'");
+		statementExceptionExpected(s, "create procedure NO_LVC(IN P1 LONG VARCHAR) language java parameter style java external name 'no.lvc'");
+
+		// duplicate names
+		statementExceptionExpected(s, "create procedure DUP_P1(IN FRED INT, OUT RON CHAR(10), IN FRED INT) language java parameter style java external name 'no.dup1'");
+		statementExceptionExpected(s, "create procedure D2.DUP_P2(IN \"FreD\" INT, OUT RON CHAR(10), IN \"FreD\" INT) language java parameter style java external name 'no.dup2'");
+		statementExceptionExpected(s, "create procedure D3.DUP_P3(IN \"FRED\" INT, OUT RON CHAR(10), IN fred INT) language java parameter style java external name 'no.dup3'");
+		s.execute("create procedure DUP_POK(IN \"FreD\" INT, OUT RON CHAR(10), IN fred INT) language java parameter style java external name 'no.dupok'");
+		s.execute("drop procedure DUP_POK");
+
+		// procedure not found with explicit schema name
+		statementExceptionExpected(s, "CALL APP.NSP(?, ?)");
+
+		// bug 5760 - this caused a null pointer exception at one time.
+		statementExceptionExpected(s, "call syscs_util.syscs_set_database_property(\"foo\", \"bar\")");
+
+		s.close();
+	}
+	
+   
+	public static void testBug5280(Connection conn) throws SQLException
+	{
+		String csString = "CALL SQLCONTROL3_0 (?, ?, ?, ?, ?, ?, ?)";
+		// Bug 5280 If we don't register the outparams
+		// we don't get an error with network server.
+		//for (int p = 1; p <= 7; p++) {
+		//	cs.registerOutParameter(p,Types.VARCHAR);
+		//}
+		callExceptionExpected(conn, csString);
+	}
+
+	public static void testDelayedClassChecking(Connection conn) throws SQLException {
+
+		System.out.println("testDelayedClassChecking");
+
+
+		Statement s = conn.createStatement();
+		// -- procedures do not check if the class or method exists at create time.
+		s.execute("create procedure noclass() language java external name 'asdf.asdf' parameter style java");
+		s.execute("create procedure nomethod() language java external name 'java.lang.Integer.asdf' parameter style java");
+		s.execute("create procedure notstatic() language java external name 'java.lang.Integer.equals' parameter style java");
+		s.execute("create procedure notvoid() language java external name 'java.lang.Runtime.getRuntime' parameter style java");
+
+		//  - but they are checked at runtime
+		callExceptionExpected(conn, "call noclass()");
+		callExceptionExpected(conn, "call nomethod()");
+		callExceptionExpected(conn, "call notstatic()");
+		callExceptionExpected(conn, "call notvoid()");
+
+		// CHECK SYSALIAS
+		s.execute("drop procedure noclass");
+		s.execute("drop procedure nomethod");
+		s.execute("drop procedure notstatic");
+		s.execute("drop procedure notvoid");
+
+		s.close();
+
+	}
+
+	public static void testDuplicates(Connection conn) throws SQLException {
+		System.out.println("testDuplicates");
+
+
+		Statement s = conn.createStatement();
+
+		s.execute("create schema S1");
+		s.execute("create schema S2");
+
+		s.execute("create procedure PROCDUP() language java external name 'okAPP.ok0' parameter style java");
+		s.execute("create procedure s1.PROCDUP() language java external name 'oks1.ok0' parameter style java");
+		s.execute("create procedure s2.PROCDUP() language java external name 'oks2.ok0' parameter style java");
+
+		statementExceptionExpected(s, "create procedure PROCDUP() language java external name 'failAPP.fail0' parameter style java");
+		statementExceptionExpected(s, "create procedure s1.PROCDUP() language java external name 'fails1.fail0' parameter style java");
+		statementExceptionExpected(s, "create procedure s2.PROCDUP() language java external name 'fails2.fail0' parameter style java");
+
+		showMatchingProcedures(conn, "PROCDUP");
+
+		statementExceptionExpected(s, "create procedure S1.NOTYET() SPECIFIC fred language java external name 'failAPP.fail0' parameter style java");
+		
+		s.execute("drop procedure s1.PROCDUP");
+		s.execute("drop procedure s2.PROCDUP");
+
+		s.execute("drop schema S1 RESTRICT");
+		s.execute("drop schema S2 RESTRICT");
+		s.close();
+
+
+	}
+
+	public static void ambigiousMethods(Connection conn) throws SQLException {
+		System.out.println("ambigiousMethods");
+
+		Statement s = conn.createStatement();
+
+		// ambigious resolution - with result sets
+		s.execute("create procedure ambigious01(p1 INTEGER, p2 CHAR(20)) dynamic result sets 1 language java parameter style java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.ambigious1'");
+		callExceptionExpected(conn, "call AMBIGIOUS01(?, ?)");
+		s.execute("drop procedure AMBIGIOUS01");
+
+		// ambigious in defined parameters
+		s.execute("create procedure ambigious02(p1 INTEGER, p2 INTEGER) dynamic result sets 1 language java parameter style java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.ambigious2'");
+		callExceptionExpected(conn, "call AMBIGIOUS02(?, ?)");
+		s.execute("drop procedure AMBIGIOUS02");
+		s.close();
+	}
+
+	public static void zeroArgProcedures(Connection conn) throws SQLException {
+		System.out.println("zeroArgProcedures");
+
+		Statement s = conn.createStatement();
+		s.execute("create procedure za() language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.zeroArg' parameter style java");
+
+		executeProcedure(s, "call za()");
+		PreparedStatement ps = conn.prepareStatement("call za()");
+		executeProcedure(ps);
+		ps.close();
+
+		ps = conn.prepareStatement("{call za()}");
+		executeProcedure(ps);
+		ps.close();
+
+
+		try {
+			ps = conn.prepareStatement("call za(?)");
+			System.out.println("FAIL - prepareStatement call za(?)");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		CallableStatement cs = conn.prepareCall("call za()");
+		executeProcedure(cs);
+		cs.close();
+
+		cs = conn.prepareCall("{call za()}");
+		executeProcedure(cs);
+		cs.close();
+
+		showMatchingProcedures(conn, "ZA");
+		s.execute("drop procedure za");
+		showMatchingProcedures(conn, "ZA");
+
+		s.close();
+
+	}
+
+	private static void sqlProcedures(Connection conn) throws SQLException {
+
+		System.out.println("sqlProcedures()");
+
+		Statement s = conn.createStatement();
+
+		s.execute("create table t1(i int not null primary key, b char(15))");
+		s.execute("create procedure ir(p1 int) MODIFIES SQL DATA dynamic result sets 0 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow' parameter style java");
+		s.execute("create procedure ir2(p1 int, p2 char(10)) language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.insertRow' MODIFIES SQL DATA parameter style java");
+
+		showMatchingProcedures(conn, "IR%");
+
+		callExceptionExpected(conn, "CALL IR()");
+
+		CallableStatement ir1 = conn.prepareCall("CALL IR(?)");
+
+		ir1.setInt(1, 1);
+		executeProcedure(ir1);
+
+		ir1.setInt(1,2);
+		executeProcedure(ir1);
+		try {
+			ir1.execute();
+			System.out.println("FAIL - duplicate key insertion through ir");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		ir1.setString(1, "3");
+		executeProcedure(ir1);
+
+		ir1.close();
+
+		ir1 = conn.prepareCall("CALL APP.IR(?)");
+		ir1.setInt(1, 7);
+		executeProcedure(ir1);
+
+		CallableStatement ir2 = conn.prepareCall("CALL IR2(?, ?)");
+
+		ir2.setInt(1, 4);
+		ir2.setInt(2, 4);
+		executeProcedure(ir2);
+
+		ir2.setInt(1, 5);
+		ir2.setString(2, "ir2");
+		executeProcedure(ir2);
+
+
+		ir2.setInt(1, 6);
+		ir2.setString(2, "'012345678990'");
+		executeProcedure(ir2);
+
+		ir1.close();
+		ir2.close();
+
+		conn.commit();
+
+
+
+		ResultSet rs = s.executeQuery("select * from t1");
+		org.apache.derby.tools.JDBCDisplayUtil.DisplayResults(System.out, rs, conn);
+
+		conn.commit();
+
+		callExceptionExpected(conn, "CALL IR2(2, 'no way')");
+		callExceptionExpected(conn, "CALL IR2(?, 'no way')");
+		callExceptionExpected(conn, "CALL IR2(2, ?)");
+
+		s.execute("drop procedure IR");
+		s.execute("drop procedure IR2");
+
+		s.close();
+	}
+
+	private static void executeProcedure(Statement s, String sql) throws SQLException {
+		boolean firstResultIsAResultSet = s.execute(sql);
+
+		procedureResults(s, firstResultIsAResultSet);
+	}
+
+
+	private static void executeProcedure(PreparedStatement ps) throws SQLException {
+		boolean firstResultIsAResultSet = ps.execute();
+
+		procedureResults(ps, firstResultIsAResultSet);
+	}
+
+
+	private static void procedureResults(Statement ps, boolean firstResultIsAResultSet) throws SQLException {
+
+		org.apache.derby.tools.JDBCDisplayUtil.ShowWarnings(System.out, ps);
+
+		boolean sawOneResult = false;
+		boolean isFirst = true;
+		do {
+
+			boolean gotResult = false;
+
+			ResultSet rs = ps.getResultSet();
+			int updateCount = ps.getUpdateCount();
+			if (rs == null) {
+
+				if (isFirst && firstResultIsAResultSet) {
+					System.out.println("FAIL - execute() indicated first result was a result set but getResultSet() returned null");
+				}
+
+				if (updateCount != -1) {
+					gotResult = true;
+					sawOneResult = true;
+					System.out.println("UPDATE COUNT " + updateCount);
+				}
+			}
+			else {
+
+				if (updateCount != -1)
+					System.out.println("FAIL - HAVE RESULT SET AND UPDATE COUNT OF " + updateCount);
+				org.apache.derby.tools.JDBCDisplayUtil.DisplayResults(System.out, rs, ps.getConnection());
+				gotResult = true;
+				sawOneResult = true;
+			}
+
+			// if we did not get a result and this is not the first result then
+			// there is a bug since the getMoreResults() returned true.
+			//
+			// This may also be an error on the first pass but maybe it's
+			// ok to have no results at all?
+			if (!gotResult && !isFirst) {
+				System.out.println("FAIL - getMoreResults indicated more results but none was found");
+			}
+
+			isFirst = false;
+
+		} while (ps.getMoreResults());
+		SQLWarning warnings = ps.getWarnings();
+		if (warnings != null)
+			System.out.println("SQLWarning :" + warnings.getMessage());
+
+		if (!sawOneResult)
+			System.out.println("No ResultSet or update count returned");
+	}
+
+	/**
+		1. basic testing
+		2. correct auto commit logic
+		3. correct holdability (JDBC 3)
+	*/
+	private static void dynamicResultSets(Connection conn, Connection conn2) throws SQLException {
+
+		System.out.println("dynamicResultSets - parameter style JAVA");
+
+		Statement s = conn.createStatement();
+
+		statementExceptionExpected(s, "create procedure DRS(p1 int) parameter style JAVA READS SQL DATA dynamic result sets -1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'");
+
+		s.execute("create procedure DRS(p1 int) parameter style JAVA READS SQL DATA dynamic result sets 1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'");
+
+		showMatchingProcedures(conn, "DRS");
+
+		callExceptionExpected(conn, "CALL DRS()");
+		callExceptionExpected(conn, "CALL DRS(?,?)");
+
+		CallableStatement drs1 = conn.prepareCall("CALL DRS(?)");
+
+		drs1.setInt(1, 3);
+		executeProcedure(drs1);
+		drs1.close();
+
+		s.execute("create procedure DRS2(p1 int, p2 int) parameter style JAVA READS SQL DATA dynamic result sets 2 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows'");
+		showMatchingProcedures(conn, "DRS2");
+
+		drs1 = conn.prepareCall("CALL DRS2(?, ?)");
+		drs1.setInt(1, 2);
+		drs1.setInt(2, 6);
+		executeProcedure(drs1);
+			
+		// execute it returning one closed result set
+		drs1.setInt(1, 2);
+		drs1.setInt(2, 99); // will close the second result set
+		executeProcedure(drs1);
+
+		// execute it returning no result sets
+		if (! isDerbyNet)
+		{
+			//RESOLVE there appears to be a JCC Bug when returning no 
+			// resultSets.
+			drs1.setInt(1, 2);
+			drs1.setInt(2, 199); // return no results at all
+			executeProcedure(drs1);
+		}
+		// execute it returning two result sets but with the order swapped in the parameters
+		// doesnot affect display order.
+		drs1.setInt(1, 2);
+		drs1.setInt(2, 299); // swap results
+		executeProcedure(drs1);
+		
+		if (!isDerbyNet)
+		{
+		// execute it returning two result sets, and check to see the result set is closed after getMoreResults.
+		drs1.setInt(1, 2);
+		drs1.setInt(2, 2);
+		drs1.execute();
+		ResultSet lastResultSet = null;
+		int pass = 1;
+		do {
+
+			if (lastResultSet != null) {
+				try {
+					lastResultSet.next();
+					System.out.println("FAILED - result set should be closed");
+				} catch (SQLException sqle) {
+					System.out.println("EXPECTED : " + sqle.getMessage());
+				}
+			}
+
+			lastResultSet = drs1.getResultSet();
+			System.out.println("pass " + (pass++) + " got result set " + (lastResultSet != null));
+
+		} while (drs1.getMoreResults() || lastResultSet != null);
+
+		checkCommitWithMultipleResultSets(drs1, conn2, "autocommit");
+		checkCommitWithMultipleResultSets(drs1, conn2, "noautocommit");
+		checkCommitWithMultipleResultSets(drs1, conn2, "statement");
+		}
+
+
+
+
+		drs1.close();
+
+		// use escape syntax
+		drs1 = conn.prepareCall("{call DRS2(?, ?)}");
+		drs1.setInt(1, 2);
+		drs1.setInt(2, 6);
+		executeProcedure(drs1);
+		drs1.close();
+
+
+		// check that a procedure with dynamic result sets can not resolve to a method with no ResultSet argument.
+		s.execute("create procedure irdrs(p1 int) dynamic result sets 1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.missingDynamicParameter' parameter style JAVA");
+		callExceptionExpected(conn, "CALL IRDRS(?)");
+		s.execute("drop procedure irdrs");
+
+		// check that a procedure with dynamic result sets can not resolve to a method with an argument that is a ResultSet impl,
+		s.execute("create procedure rsi(p1 int) dynamic result sets 1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.badDynamicParameter' parameter style JAVA");
+		callExceptionExpected(conn, "CALL rsi(?)");
+		s.execute("drop procedure rsi");
+
+		// simple check for a no-arg method that has dynamic result sets but does not return any
+		System.out.println("no dynamic result sets");
+		s.execute("create procedure zadrs() dynamic result sets 4 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.zeroArgDynamicResult' parameter style  JAVA");
+		CallableStatement zadrs = conn.prepareCall("CALL ZADRS()");
+		executeProcedure(zadrs);
+		zadrs.close();
+		s.execute("drop procedure ZADRS");
+
+		// return too many result sets
+		System.out.println("Testing too many result sets");
+		s.execute("create procedure way.toomany(p1 int, p2 int) READS SQL DATA dynamic result sets 1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.selectRows' parameter style  JAVA");
+		CallableStatement toomany = conn.prepareCall("CALL way.toomany(?, ?)");
+		toomany.setInt(1, 2);
+		toomany.setInt(2, 6);
+		System.out.println("... too many result sets");
+		executeProcedure(toomany);
+
+		System.out.println("... one additional closed result set");
+		toomany.setInt(1, 2);
+		toomany.setInt(2, 99); // will close the second result set.
+		executeProcedure(toomany);
+
+		toomany.close();
+		s.execute("drop procedure way.toomany");
+
+		testResultSetsWithLobs(conn);
+
+		s.close();
+		conn2.close();
+	}
+
+
+	private static void checkCommitWithMultipleResultSets(CallableStatement drs1, Connection conn2, String action) throws SQLException
+	{
+		Connection conn = drs1.getConnection();
+    //Use reflection to set the holdability to false so that the test can run in jdk14 and lower jdks as well
+    try {
+				Method sh = conn.getClass().getMethod("setHoldability", CONN_PARAM);
+				sh.invoke(conn, CONN_ARG);
+    } catch (Exception e) {System.out.println("shouldn't get that error " + e.getMessage());}//for jdks prior to jdk14
+
+		// check to see that the commit of the transaction happens at the correct time.
+		// switch isolation levels to keep the locks around.
+		int oldIsolation = conn.getTransactionIsolation();
+		boolean oldAutoCommit = conn.getAutoCommit();
+         
+		if (action.equals("noautocommit"))
+			conn.setAutoCommit(false);
+		else
+			conn.setAutoCommit(true);
+
+		conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
+		System.out.println("auto commit is " + conn.getAutoCommit());
+		PreparedStatement psLocks = conn2.prepareStatement("select count(*) from new org.apache.derby.diag.LockTable() AS LT");
+
+		showLocks(psLocks, "lock count before execution ");
+
+		drs1.execute();
+
+		showLocks(psLocks, "lock count after execution ");
+
+		ResultSet rs = drs1.getResultSet();
+		rs.next();
+		showLocks(psLocks, "lock count after next on first rs ");
+
+		boolean expectClosed = false;
+
+		// execute another statement to ensure that the result sets close.
+		if (action.equals("statement")) {
+			System.out.println("executing statement to force auto commit on open CALL statement");
+
+			conn.createStatement().executeQuery("values 1").next();
+			expectClosed = true;
+			showLocks(psLocks, "lock count after statement execution ");
+
+			try {
+				rs.next();
+				System.out.println("FAIL - result set open in auto commit mode after another statement execution");
+			} catch (SQLException sqle) {
+				System.out.println("Expected - " + sqle.getMessage());
+			}
+		}
+
+
+
+		boolean anyMore = drs1.getMoreResults();
+		System.out.println("Is there a second result ? " + anyMore);
+		showLocks(psLocks, "lock count after first getMoreResults() ");
+
+		if (anyMore) {
+		
+			rs = drs1.getResultSet();
+			try {
+				rs.next();
+				if (expectClosed)
+					System.out.println("FAIL - result set open in auto commit mode after another statement execution");
+			} catch (SQLException sqle) {
+				if (expectClosed)
+					System.out.println("Expected - " + sqle.getMessage());
+				else
+					throw sqle;
+			}
+			showLocks(psLocks, "lock count after next on second rs ");
+
+			// should commit here since all results are closed
+			boolean more = drs1.getMoreResults();
+			System.out.println("more results (should be false) " + more);
+			showLocks(psLocks, "lock count after second getMoreResults() ");
+
+			conn.setTransactionIsolation(oldIsolation);
+			conn.setAutoCommit(oldAutoCommit);
+		}
+
+		psLocks.close();
+	}
+
+	private static void showLocks(PreparedStatement psLocks, String where) throws SQLException {
+		ResultSet locks = psLocks.executeQuery();
+		locks.next();
+		System.out.println(where + locks.getInt(1));
+		locks.close();
+	}
+
+	private static void testParameterTypes(Connection conn) throws SQLException  {
+		System.out.println("parameterTypes");
+		Statement s = conn.createStatement();
+
+		s.execute("create table PT1(A INTEGER not null primary key, B CHAR(10), C VARCHAR(20))"); 
+		s.execute("create procedure PT1(IN a int, IN b char(10), c varchar(20)) parameter style java dynamic result sets 1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter1' MODIFIES SQL DATA");
+		showMatchingProcedures(conn, "PT1");
+
+		CallableStatement pt1 = conn.prepareCall("CALL PT1(?, ?, ?)");
+
+		pt1.setInt(1, 20);
+		pt1.setString(2, "abc");
+		pt1.setString(3, "efgh");
+		executeProcedure(pt1);
+
+
+		pt1.setInt(1, 30);
+		pt1.setString(2, "abc   ");
+		pt1.setString(3, "efgh  ");
+		executeProcedure(pt1);
+
+		pt1.setInt(1, 40);
+		pt1.setString(2, "abc                                                                           ");
+		pt1.setString(3, "efgh                                                                             ");
+		executeProcedure(pt1);
+
+		pt1.setInt(1, 50);
+		pt1.setString(2, "0123456789X");
+		pt1.setString(3, "efgh  ");
+		executeProcedure(pt1);
+		pt1.close();
+
+		s.execute("DROP procedure PT1");
+
+		s.execute("create procedure PT2(IN a int, IN b DECIMAL(4), c DECIMAL(7,3)) parameter style java dynamic result sets 1 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.parameter2' MODIFIES SQL DATA");
+		showMatchingProcedures(conn, "PT2");
+
+		CallableStatement pt2 = conn.prepareCall("CALL PT2(?, ?, ?)");
+
+		pt2.setInt(1, 60);
+		pt2.setString(2, "34");
+		pt2.setString(3, "54.1");
+		executeProcedure(pt2);
+
+		pt2.setInt(1, 70);
+		pt2.setBigDecimal(2, new BigDecimal("831"));
+		pt2.setBigDecimal(3, new BigDecimal("45.7"));
+		executeProcedure(pt2);
+		
+		pt2.setInt(1, -1);
+		pt2.setBigDecimal(2, new BigDecimal("10243"));
+		pt2.setBigDecimal(3, null);
+		try {
+			executeProcedure(pt2);
+			System.out.println("FAIL - too many digits in decimal value accepted");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		pt2.setInt(1, 80);
+		pt2.setBigDecimal(2, new BigDecimal("993"));
+		pt2.setBigDecimal(3, new BigDecimal("1234.5678"));
+		executeProcedure(pt2);
+		pt2.close();
+
+		s.execute("DROP procedure PT2");
+/*		
+		s.execute("create procedure PTBOOL2(IN p_in BOOLEAN, INOUT p_inout BOOLEAN, OUT p_out BOOLEAN) parameter style java dynamic result sets 0 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.pBOOLEAN' NO SQL");
+		showMatchingProcedures(conn, "PTBOOL%");
+
+		{
+
+		CallableStatement ptb = conn.prepareCall("CALL PTBOOL2(?, ?, ?)");
+		ptb.registerOutParameter(2, Types.BIT); 
+		ptb.registerOutParameter(3, Types.BIT);
+
+		if (!isDerbyNet){ // bug 5437
+		ptb.setObject(1, null);
+		ptb.setObject(2, Boolean.FALSE);
+		try {
+			ptb.execute();
+			System.out.println("FAIL NULL PASSED to  primitive");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		}
+
+		ptb.setBoolean(1, true);
+		ptb.setBoolean(2, false);
+		ptb.execute();
+		System.out.println("p_inout " + ptb.getObject(2) + " p_out " + ptb.getObject(3));
+		ptb.setBoolean(2, false);
+		ptb.execute();
+		System.out.println("p_inout " + ptb.getBoolean(2) + " null?" + ptb.wasNull() + " p_out " + ptb.getBoolean(3) + " null?" + ptb.wasNull());
+		ptb.close();
+		}
+
+		s.execute("DROP procedure PTBOOL2");
+
+		s.execute("create procedure PTTINYINT2(IN p_in TINYINT, INOUT p_inout TINYINT, OUT p_out TINYINT) parameter style java dynamic result sets 0 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.pTINYINT' NO SQL");
+		showMatchingProcedures(conn, "PTTINYINT%");
+
+
+		CallableStatement ptti = conn.prepareCall("CALL PTTINYINT2(?, ?, ?)");
+		ptti.registerOutParameter(2, Types.TINYINT); 
+		ptti.registerOutParameter(3, Types.TINYINT);
+
+		ptti.setNull(1, Types.TINYINT);
+		ptti.setByte(2, (byte) 7);
+		try {
+			ptti.execute();
+			System.out.println("FAIL NULL PASSED to  primitive");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		ptti.setByte(1, (byte) 4);
+		ptti.setNull(2, Types.TINYINT);
+		try {
+			ptti.execute();
+			System.out.println("FAIL NULL PASSED to  primitive");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		ptti.setByte(1, (byte) 6);
+		ptti.setByte(2, (byte) 3);
+		ptti.execute();
+		System.out.println("p_inout " + ptti.getObject(2) + " p_out " + ptti.getObject(3));
+		ptti.setByte(2, (byte) 3);
+		ptti.execute();
+		System.out.println("p_inout " + ptti.getByte(2) + " null?" + ptti.wasNull() + " p_out " + ptti.getByte(3) + " null?" + ptti.wasNull());
+		ptti.close();
+
+
+		s.execute("DROP procedure PTTINYINT2");
+
+	*/	
+		s.execute("create procedure PTSMALLINT2(IN p_in SMALLINT, INOUT p_inout SMALLINT, OUT p_out SMALLINT) parameter style java dynamic result sets 0 language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.pSMALLINT' NO SQL");
+		showMatchingProcedures(conn, "PTSMALLINT%");
+
+
+		CallableStatement ptsi = conn.prepareCall("CALL PTSMALLINT2(?, ?, ?)");
+		ptsi.registerOutParameter(2, Types.SMALLINT); 
+		ptsi.registerOutParameter(3, Types.SMALLINT);
+
+		ptsi.setNull(1, Types.SMALLINT);
+		ptsi.setShort(2, (short) 7);
+		try {
+			ptsi.execute();
+			System.out.println("FAIL NULL PASSED to  primitive");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: (" + sqle.getSQLState() + ") " + sqle.getMessage());
+		}
+
+		ptsi.setShort(1, (short) 4);
+		ptsi.setNull(2, Types.SMALLINT);
+		try {
+			ptsi.execute();
+			System.out.println("FAIL NULL PASSED to  primitive");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: (" + sqle.getSQLState() + ") " + sqle.getMessage());
+		}
+
+		ptsi.setShort(1, (short) 6);
+		ptsi.setShort(2, (short) 3);
+		ptsi.execute();
+		System.out.println("p_inout " + ptsi.getObject(2) + " p_out " + ptsi.getObject(3));
+		ptsi.setShort(2, (short) 3);
+		ptsi.execute();
+		System.out.println("p_inout " + ptsi.getByte(2) + " null?" + ptsi.wasNull() + " p_out " + ptsi.getByte(3) + " null?" + ptsi.wasNull());
+
+		// with setObject . Beetle 5439
+		ptsi.setObject(1, new Integer(6));
+		ptsi.setObject(2, new Integer(3));
+		
+		ptsi.execute();
+		System.out.println("p_inout " + ptsi.getByte(2) + " null?" + ptsi.wasNull() + " p_out " + ptsi.getByte(3) + " null?" + ptsi.wasNull());
+	
+		ptsi.close();
+
+
+		s.execute("DROP procedure PTSMALLINT2");		
+		s.execute("DROP TABLE PT1");
+
+		s.close();
+
+	}
+
+	private static void testOutparams(Connection conn) throws SQLException  {
+
+
+		System.out.println("outparams");
+
+		Statement s = conn.createStatement();
+
+		s.execute("create procedure OP1(OUT a int, IN b int) parameter style java language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.outparams1'");
+		showMatchingProcedures(conn, "OP1");
+
+		
+		// check execute via a Statement fails for use of OUT parameter
+		if (! isDerbyNet) { // bug 5263
+		try {
+			executeProcedure(s, "CALL OP1(?, ?)");
+			System.out.println("FAIL execute succeeded on OUT param with Statement");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		}
+
+		if (! isDerbyNet) { // bug 5276
+		// check execute via a PreparedStatement fails for use of OUT parameter
+		try {
+			PreparedStatement ps = conn.prepareStatement("CALL OP1(?, ?)");
+			System.out.println("FAIL prepare succeeded on OUT param with PreparedStatement");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		}
+
+		CallableStatement op = conn.prepareCall("CALL OP1(?, ?)");
+
+		op.registerOutParameter(1, Types.INTEGER);
+		op.setInt(2, 7);
+
+		executeProcedure(op);
+
+		System.out.println("OP1 " + op.getInt(1) + " null ? " + op.wasNull());
+
+		op.close();
+
+		s.execute("create procedure OP2(INOUT a int, IN b int) parameter style java language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams2'");
+		showMatchingProcedures(conn, "OP2");
+
+		// check execute via a Statement fails for use of INOUT parameter
+		if (!isDerbyNet) { // bug 5263
+		try {
+			executeProcedure(s, "CALL OP2(?, ?)");
+			System.out.println("FAIL execute succeeded on INOUT param with Statement");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		}
+
+		if (! isDerbyNet) { // bug 5276
+
+		// check execute via a PreparedStatement fails for use of INOUT parameter
+		try {
+			PreparedStatement ps = conn.prepareStatement("CALL OP2(?, ?)");
+			System.out.println("FAIL prepare succeeded on INOUT param with PreparedStatement");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		}
+
+		op = conn.prepareCall("CALL OP2(?, ?)");
+
+		op.registerOutParameter(1, Types.INTEGER);
+		op.setInt(1, 3);
+		op.setInt(2, 7);
+
+		executeProcedure(op);
+		System.out.println("OP2 " + op.getInt(1) + " null ? " + op.wasNull());
+		op.close();
+
+		// INOUT & OUT procedures with variable length
+		s.execute("create procedure OP3(INOUT a CHAR(10), IN b int) parameter style java language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3'");
+		showMatchingProcedures(conn, "OP3");
+
+		op = conn.prepareCall("CALL OP3(?, ?)");
+
+		op.registerOutParameter(1, Types.CHAR);
+		op.setString(1, "dan");
+		op.setInt(2, 8);
+
+		executeProcedure(op);
+		System.out.println("OP3 >" + op.getString(1) + "< null ? " + op.wasNull());
+		op.close();
+
+		// INOUT & OUT DECIMAL procedures with variable length
+		s.execute("create procedure OP4(OUT a DECIMAL(4,2), IN b VARCHAR(255)) parameter style java language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4'");
+		showMatchingProcedures(conn, "OP4");
+
+		op = conn.prepareCall("CALL OP4(?, ?)");
+
+		op.registerOutParameter(1, Types.DECIMAL);
+		op.setString(2, null);
+		executeProcedure(op);
+		System.out.println("OP4 null >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		op.setString(2, "14");
+		executeProcedure(op);
+		System.out.println("OP4 14 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		op.setString(2, "11.3");
+		executeProcedure(op);
+		System.out.println("OP4 11.3 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		op.setString(2, "39.345");
+		executeProcedure(op);
+		System.out.println("OP4 39.345 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		op.setString(2, "83");
+		try {
+			executeProcedure(op);
+			System.out.println("FAIL - execution ok on out of range out parameter");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		if (!isDerbyNet) {
+		// Bug 5316 - JCC clears registration with  clearParameters()
+		op.clearParameters();
+		try {
+			// b not set
+			executeProcedure(op);
+			System.out.println("FAIL - b not set");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		// try to set an OUT param
+		try {
+			op.setBigDecimal(1, new BigDecimal("22.32"));
+			System.out.println("FAIL - set OUT param to value");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		try {
+			op.setBigDecimal(1, null);
+			System.out.println("FAIL - set OUT param to null value");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		try {
+			op.setNull(1, Types.DECIMAL);
+			System.out.println("FAIL - set OUT param to null");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		}
+
+		// can we get an IN param?
+		op.setString(2, "49.345");
+		executeProcedure(op);
+		System.out.println("OP4 49.345 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+		try {
+			System.out.println("FAIL OP4 GET 49.345 >" + op.getString(2) + "< null ? " + op.wasNull());
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+		op.close();
+
+		// check to see that a registration is required first for the out parameter.
+		op = conn.prepareCall("CALL OP4(?, ?)");
+		op.setString(2, "14");
+		try {
+			executeProcedure(op);
+			System.out.println("FAIL - execute succeeded without registration of out parameter");
+		} catch (SQLException sqle) {
+			expectedException(sqle);
+		}
+		op.close();
+
+		s.execute("create procedure OP4INOUT(INOUT a DECIMAL(4,2), IN b VARCHAR(255)) parameter style java language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4'");
+		showMatchingProcedures(conn, "OP4INOUT");
+
+		// bug 5264 - first execution fails with parameter not set.
+
+		op = conn.prepareCall("CALL OP4INOUT(?, ?)");
+		op.registerOutParameter(1, Types.DECIMAL);
+
+		op.setString(2, null);
+
+
+		op.setBigDecimal(1, null);
+		executeProcedure(op);
+		System.out.println("OP4INOUT null >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+
+		op.setBigDecimal(1, new BigDecimal("99"));
+		executeProcedure(op);
+		System.out.println("OP4INOUT null(2) >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		op.setString(2, "23.5");
+		op.setBigDecimal(1, new BigDecimal("14"));
+		executeProcedure(op);
+		System.out.println("OP4INOUT 14+23.5 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+		
+		op.setString(2, "23.505");
+		op.setBigDecimal(1, new BigDecimal("9"));
+		executeProcedure(op);
+		System.out.println("OP4INOUT 9+23.505 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		if (! isDerbyNet) { // with the network server it retains its old value of 9 
+		// repeat execution. INOUT parameter now has the value 32.50
+		executeProcedure(op);
+		System.out.println("OP4INOUT 32.50+23.505 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+
+		} // end bug 5264
+
+		op.setString(2, "67.99");
+		op.setBigDecimal(1, new BigDecimal("32.01"));
+		try {
+			executeProcedure(op);
+			System.out.println("FAIL OP4INOUT 32.01+67.99 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		op.setString(2, "1");
+		op.setBigDecimal(1, new BigDecimal("102.33"));
+		try {
+			executeProcedure(op);
+			System.out.println("FAIL OP4INOUT 1+102.33 >" + op.getBigDecimal(1) + "< null ? " + op.wasNull());
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		if (! isDerbyNet) {
+		// now some checks to requirements for parameter setting.
+		op.clearParameters();
+		try {
+			// a,b not set
+			executeProcedure(op);
+			System.out.println("FAIL - a,b not set");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		op.setString(2, "2");
+		try {
+			// a not set
+			executeProcedure(op);
+			System.out.println("FAIL - a  not set");
+		} catch (SQLException sqle) {
+			System.out.println("EXPECTED SQL Exception: " + sqle.getMessage());
+		}
+
+		op.clearParameters();
+		op.setBigDecimal(1, new BigDecimal("33"));
+		try {
+			// b not set
+			executeProcedure(op);
+			System.out.println("FAIL - b  not set");
+		} catch (SQLException sqle) {
+			expectedException(sqle);
+		}
+
+		} // end bug 5264
+
+
+		op.close();
+
+		op = conn.prepareCall("CALL OP4INOUT(?, ?)");
+		op.setString(2, "14");
+		try {
+			executeProcedure(op);
+			System.out.println("FAIL - execute succeeded without registration of INOUT parameter");
+		} catch (SQLException sqle) {
+			expectedException(sqle);
+		}
+		op.close();
+
+		s.execute("DROP PROCEDURE OP1");
+		s.execute("DROP PROCEDURE OP2");
+		s.execute("DROP PROCEDURE OP3");
+		s.execute("DROP PROCEDURE OP4");
+		s.execute("DROP PROCEDURE OP4INOUT");
+		s.close();
+
+	}
+
+	private static final String[] LITERALS = 
+	{"12" /* INTEGER */, "23.43e1" /* DOUBLE */, "176.3" /* DECIMAL */, "'12.34'" /* VARCHAR */};
+	private static final String[] LIT_PROC_TYPES = 
+	{"SMALLINT", "INTEGER", "BIGINT", "REAL", "DOUBLE", "DECIMAL", "CHAR", "VARCHAR"};
+	private static void testLiterals(Connection conn) throws SQLException  {
+
+
+		System.out.println("literals");
+
+		Statement s = conn.createStatement();
+
+		s.execute("CREATE PROCEDURE LITT.TY_SMALLINT(IN P1 SMALLINT, OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_INTEGER(IN P1 INTEGER, OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_BIGINT(IN P1 BIGINT, OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_REAL(IN P1 REAL, OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_DOUBLE(IN P1 DOUBLE, OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_DECIMAL(IN P1 DECIMAL(5,2), OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_CHAR(IN P1 CHAR(10), OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+		s.execute("CREATE PROCEDURE LITT.TY_VARCHAR(IN P1 VARCHAR(10), OUT P2 VARCHAR(256)) NO SQL external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.literalTest' parameter style java language java");
+
+		showMatchingProcedures(conn, "TY_%");
+
+		for (int t = 0; t < LIT_PROC_TYPES.length; t++) {
+
+			String type = LIT_PROC_TYPES[t];
+
+			String sql = "CALL LITT.TY_" + type + " (null, ?)";
+			System.out.print(sql);
+
+			try {
+				CallableStatement cs = conn.prepareCall(sql);
+				cs.registerOutParameter(1, Types.VARCHAR);
+				cs.execute();
+				String val = cs.getString(1);
+				cs.close();
+				System.out.println("=" + (val == null ? "<NULL>" : val));
+			} catch (SQLException sqle) {
+				System.out.println(" (" + sqle.getSQLState() + ") " + sqle.getMessage());
+				// more code should be added to check on assignments
+				// for now, commenting out the print of the stack, to prevent 
+				// failures due to differences between jvms.
+				// sqle.printStackTrace(System.out);
+			}
+		}
+
+		for (int l = 0; l < LITERALS.length; l++) {
+			String literal = LITERALS[l];
+			for (int t = 0; t < LIT_PROC_TYPES.length; t++) {
+
+				String type = LIT_PROC_TYPES[t];
+
+				String sql = "CALL LITT.TY_" + type + " (" + literal + ", ?)";
+				System.out.print(sql);
+
+				try {
+					CallableStatement cs = conn.prepareCall(sql);
+					cs.registerOutParameter(1, Types.VARCHAR);
+					cs.execute();
+					String val = cs.getString(1);
+					cs.close();
+					System.out.println("=" + (val == null ? "<NULL>" : val));
+				} catch (SQLException sqle) {
+					System.out.println(" (" + sqle.getSQLState() + ") " + sqle.getMessage());
+					// code should be added to show the expected errors, now commenting 
+					// out the stack print to prevent false failures with different jvms
+					//sqle.printStackTrace(System.out);
+				}
+			}
+		}
+	}
+
+
+
+	private static void expectedException(SQLException sqle) {
+		String sqlState = sqle.getSQLState();
+		if (sqlState == null) {
+			sqlState = "<NULL>";
+		}
+		System.out.println("EXPECTED SQL Exception: (" + sqlState + ") " + sqle.getMessage());
+	}
+	
+	private static void testSQLControl(Connection conn) throws SQLException  {
+
+
+		System.out.println("SQL Control");
+
+
+		Statement s = conn.createStatement();
+
+		s.execute("CREATE SCHEMA SQLC");
+		s.execute("CREATE TABLE SQLC.SQLCONTROL_DML(I INT)");
+		s.execute("INSERT INTO SQLC.SQLCONTROL_DML VALUES 4");
+
+		String[] control = {"", "NO SQL", "CONTAINS SQL", "READS SQL DATA", "MODIFIES SQL DATA"};
+
+		for (int i = 0; i < control.length; i++) {
+
+			StringBuffer cp = new StringBuffer(256);
+			cp.append("CREATE PROCEDURE SQLC.SQLCONTROL1_");
+			cp.append(i);
+			cp.append(" (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) ");
+			cp.append(control[i]);
+			cp.append(" PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl'");
+
+			String cpsql = cp.toString();
+			System.out.println(cpsql);
+
+			s.execute(cpsql);
+			
+			cp.setLength(0);
+			cp.append("CREATE PROCEDURE SQLC.SQLCONTROL2_");
+			cp.append(i);
+			cp.append(" (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) ");
+			cp.append(control[i]);
+			cp.append(" PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl2'");
+
+			cpsql = cp.toString();
+			System.out.println(cpsql);
+
+			s.execute(cpsql);
+
+			cp.setLength(0);
+			cp.append("CREATE PROCEDURE SQLC.SQLCONTROL3_");
+			cp.append(i);
+			cp.append(" (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) ");
+			cp.append(control[i]);
+			cp.append(" PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl3'");
+
+			cpsql = cp.toString();
+			System.out.println(cpsql);
+
+			s.execute(cpsql);
+
+			cp.setLength(0);
+			cp.append("CREATE PROCEDURE SQLC.SQLCONTROL4_");
+			cp.append(i);
+			cp.append(" (IN SQLC INTEGER, OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128), OUT E8 VARCHAR(128)) ");
+			cp.append(control[i]);
+			cp.append(" PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl4'");
+
+			cpsql = cp.toString();
+			System.out.println(cpsql);
+
+			s.execute(cpsql);
+		}
+		showMatchingProcedures(conn, "SQLCONTROL1_%");
+		showMatchingProcedures(conn, "SQLCONTROL2_%");
+		showMatchingProcedures(conn, "SQLCONTROL3_%");
+		showMatchingProcedures(conn, "SQLCONTROL4_%");
+		conn.commit();
+
+		for (int i = 0; i < control.length; i++) {
+			String type = control[i];
+			if (type.length() == 0)
+				type = "DEFAULT (MODIFIES SQL DATA)";
+
+			System.out.println("** SQL ** " + type);
+			for (int k = 1; k <=3; k++) {
+				CallableStatement cs = conn.prepareCall("CALL SQLC.SQLCONTROL" + k + "_" + i + " (?, ?, ?, ?, ?, ?, ?)");
+				for (int rop = 1; rop <=7 ; rop++) {
+					cs.registerOutParameter(rop, Types.VARCHAR);
+				}
+				cs.execute();
+				for (int p = 1; p <= 7; p++) {
+					System.out.println("    " + cs.getString(p));
+				}
+				cs.close();
+			}
+			
+		}
+
+		// test procedures that call others, e.g. to ensure that within a READS SQL DATA procedure, a MODIFIES SQL DATA cannot be called.
+		// table was dropped by previous executions.
+		s.execute("CREATE TABLE SQLC.SQLCONTROL_DML(I INT)");
+		s.execute("INSERT INTO SQLC.SQLCONTROL_DML VALUES 4");
+		for (int i = 0; i < control.length; i++) {
+			String type = control[i];
+			if (type.length() == 0)
+				type = "DEFAULT (MODIFIES SQL DATA)";
+
+			System.out.println("CALL ** " + type);
+			for (int t = 0; t < control.length; t++) {
+
+				String ttype = control[t];
+				if (ttype.length() == 0)
+					ttype = "DEFAULT (MODIFIES SQL DATA)";
+				System.out.println("    CALLLING " + ttype);
+				CallableStatement cs = conn.prepareCall("CALL SQLC.SQLCONTROL4_" + i + " (?, ?, ?, ?, ?, ?, ?, ?, ?)");
+				cs.setInt(1, t);
+				for (int rop = 2; rop <=9 ; rop++) {
+					cs.registerOutParameter(rop, Types.VARCHAR);
+				}
+
+				cs.execute();
+				for (int p = 2; p <= 9; p++) {
+					String so = cs.getString(p);
+					if (so == null)
+						continue;
+					System.out.println("         " + so);
+				}
+				cs.close();
+			}
+		}
+		// Make sure we throw proper error with network server 
+		// if params are not registered
+		testBug5280(conn);
+
+		s.execute("DROP TABLE SQLC.SQLCONTROL_DML");
+
+		for (int i = 0; i < control.length; i++) {
+			s.execute("DROP PROCEDURE SQLCONTROL1_" + i);
+			s.execute("DROP PROCEDURE SQLCONTROL2_" + i);
+			s.execute("DROP PROCEDURE SQLCONTROL4_" + i);
+		}
+		s.execute("DROP TABLE SQLC.SQLCONTROL_DDL");
+		s.execute("SET SCHEMA APP");
+		s.execute("DROP SCHEMA SQLC RESTRICT");
+
+		s.close();
+	}
+
+	private static void showMatchingProcedures(Connection conn, String procedureName) throws SQLException {
+		// Until cs defaults to hold cursor we need to turn autocommit off 
+		// while we do this because one metadata call will close the other's
+		// cursor
+		boolean saveAutoCommit = conn.getAutoCommit();
+		conn.setAutoCommit(false);
+		System.out.println("DEFINED PROCEDURES FOR " + procedureName);
+		PreparedStatement ps = conn.prepareStatement("select schemaname, alias, CAST (((javaclassname || '.' ) || CAST (aliasinfo AS VARCHAR(1000))) AS VARCHAR(2000)) AS SIGNATURE " + 
+								" from sys.sysaliases A, sys.sysschemas S where alias like ? and A.schemaid = S.schemaid ORDER BY 1,2,3");
+
+		ps.setString(1, procedureName);
+
+		ResultSet rs = ps.executeQuery();
+		while (rs.next()) {
+			System.out.println("  " + rs.getString(1) + "." + rs.getString(2) + " AS " + rs.getString(3));
+		}
+		rs.close();
+
+		System.out.println("DATABASE METATDATA PROCEDURES FOR " + procedureName);
+		DatabaseMetaData dmd = conn.getMetaData();
+
+		rs = dmd.getProcedures(null, null, procedureName);
+		// with jcc 2.1 for now this will fail on the second round, 
+		// because the resultset gets closed when we do getProcedureColumns. 
+		// thus, catch that gracefully...
+		try {
+		while (rs.next()) {
+			String schema = rs.getString(2);
+			String name = rs.getString(3);
+			System.out.println("  " + schema + "." + name + " AS " + rs.getString(7) + " type " + TYPE(rs.getShort(8)));
+			// get the column information.
+			ResultSet rsc = dmd.getProcedureColumns(null, schema, name, null);
+			while (rsc.next()) {
+				System.out.println("    " + PARAMTYPE(rsc.getShort(5)) + " " + rsc.getString(4) +  " " + rsc.getString(7));
+			}
+			rsc.close();
+		}
+		rs.close();
+		// restore previous autocommit mode
+		conn.setAutoCommit(saveAutoCommit);
+		} catch (SQLException sqle) {
+			System.out.println("FAILure: ");
+			sqle.printStackTrace();
+		}
+
+		System.out.println("------------");
+	}
+
+	static String TYPE(short type) {
+		switch (type) {
+		case DatabaseMetaData.procedureResultUnknown:
+			return "procedureResultUnknown";
+		case DatabaseMetaData.procedureNoResult:
+			return "procedureNoResult";
+		case DatabaseMetaData.procedureReturnsResult:
+			return "procedureReturnsResult";
+		default:
+			return "??????";
+		}
+
+	}
+	static String PARAMTYPE(short type) {
+		switch (type) {
+		case DatabaseMetaData.procedureColumnUnknown: return "procedureColumnUnknown";
+		case DatabaseMetaData.procedureColumnIn: return "procedureColumnIn";
+		case DatabaseMetaData.procedureColumnInOut: return "procedureColumnInOut";
+		case DatabaseMetaData.procedureColumnOut: return "procedureColumnOut";
+		case DatabaseMetaData.procedureColumnReturn : return "procedureColumnReturn";
+		case DatabaseMetaData.procedureColumnResult : return "procedureColumnResult";
+		default: return "???";
+		}
+	}
+
+	private static void statementExceptionExpected(Statement s, String sql) {
+		System.out.println(sql);
+		try {
+			s.execute(sql);
+			System.out.println("FAIL - SQL expected to throw exception");
+		} catch (SQLException sqle) {
+			expectedException(sqle);
+		}
+	}
+	private static void callExceptionExpected(Connection conn, String callSQL) throws SQLException {
+		System.out.println(callSQL);
+		try {
+			CallableStatement cs = conn.prepareCall(callSQL);
+			executeProcedure(cs);
+			cs.close();
+			System.out.println("FAIL - SQL expected to throw exception ");
+		} catch (SQLException sqle) {
+			expectedException(sqle);
+		}
+	}
+
+	/* ****
+	 * Beetle 5292 (for Network Server): Check for the return
+	 * of LOB columns in a result set.
+	 */
+
+	private static void testResultSetsWithLobs(Connection conn) {
+
+		Statement s = null;
+
+		// Create objects.
+		try {
+			s = conn.createStatement();
+			
+			// Clob.
+			s.execute("create table lobCheckOne (c clob(30))");
+			s.execute("insert into lobCheckOne values (cast " +
+					  "('yayorsomething' as clob(30)))");
+			s.execute("insert into lobCheckOne values (cast " +
+						  "('yayorsomething2' as clob(30)))");
+			s.execute("create procedure clobproc () parameter style java " +
+				"language java external name " +
+					  "'org.apache.derbyTesting.functionTests.util.ProcedureTest.clobselect' " +
+					  "dynamic result sets 3 reads sql data");
+			// Blob.
+			s.execute("create table lobCheckTwo (b blob(30))");
+			s.execute("insert into lobCheckTwo values (cast " + "(" + 
+					  TestUtil.stringToHexLiteral("101010001101") +
+					  " as blob(30)))");
+			s.execute("insert into lobCheckTwo values (cast " +
+					  "(" +
+					  TestUtil.stringToHexLiteral("101010001101") +
+					  " as blob(30)))");
+			s.execute("create procedure blobproc () parameter style java " +
+				"language java external name " +
+				"'org.apache.derbyTesting.functionTests.util.ProcedureTest.blobselect' " +
+				"dynamic result sets 1 reads sql data");
+
+		} catch (SQLException e) {
+			System.out.println("FAIL: Couldn't create required objects:");
+			e.printStackTrace();
+		}
+
+		// Run 5292 Tests.
+		try {
+
+			// Clobs.
+
+			System.out.println("Stored Procedure w/ CLOB in result set.");
+			CallableStatement cs = conn.prepareCall("CALL clobproc()");
+			executeProcedure(cs);
+			cs.close();
+			
+			// Blobs.
+
+			System.out.println("Stored Procedure w/ BLOB in result set.");
+			cs = conn.prepareCall("CALL blobproc()");
+			executeProcedure(cs);
+			cs.close();
+
+		} catch (Exception e) {
+			System.out.println("FAIL: Encountered exception:");
+			e.printStackTrace();
+		}
+
+		try {
+		// Clean up.
+			s.execute("drop table lobCheckOne");
+			s.execute("drop table lobCheckTwo");
+			s.execute("drop procedure clobproc");
+			s.execute("drop procedure blobproc");
+			s.close();
+		} catch (Exception e) {
+			System.out.println("FAIL: Cleanup for lob result sets test:");
+			e.printStackTrace();
+		}
+
+		return;
+
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/procedure_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+usedefaults=true
+#derby.language.logStatementText=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1469 @@
+
+--no cascade delete , just default check
+create table t1(a int not null primary key);
+create table t2(b int references t1(a));
+insert into t1 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+delete from t1;
+drop table t2;
+
+--simple cascade delete
+create table t2(b int references t1(a) ON DELETE CASCADE);
+insert into t2 values (1) , (2) , (3) , (4);
+delete from t1 where a =2 ;
+select * from t2;
+delete from t1 ;
+select * from t2;
+
+--multiple rows in the dependent table for a single row in the parent
+insert into t1 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+delete from t1 where a = 3 ;
+select * from t1;
+delete from t1;
+select * from t2;
+
+drop table t2;
+drop table t1;
+
+
+--chain of cascade delete 
+--every table has one depedent table referencing it
+create table t1 (a int not null primary key ) ;
+create table t2 (b int not null primary key  references t1(a) ON DELETE CASCADE);
+create table t3 (c int not null primary key  references t2(b) ON DELETE CASCADE) ;
+create table t4 (d int not null primary key  references t3(c) ON DELETE CASCADE) ;
+create table t5 (e int not null primary key  references t4(d) ON DELETE CASCADE) ;
+
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+delete from t1 where a = 5;
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+select * from t5;
+delete from t1 ;
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+select * from t5;
+
+
+--check the prepared statement cascade delete
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?';
+execute sdelete using 'values (2)';
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+select * from t5;
+prepare sdelete1 as 'delete from t2 where b = ?';
+execute sdelete1 using 'values (3)';
+
+--Make sure the ps recompile on a DDL action
+drop table t5 ;
+execute sdelete using 'values (5)';
+execute sdelete1 using 'values (6)';
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+
+drop table t4;
+drop table t3 ;
+execute sdelete using 'values (7)';
+execute sdelete1 using 'values (8)';
+select * from t1;
+select * from t2;
+remove sdelete;
+remove sdelete1;
+autocommit on;
+delete from t1 ;
+select * from t1;
+select * from t2;
+drop table t2 ;
+drop table t1;
+
+
+--two foreign keys and less number of columns on the dependent table.
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t1(a) ON DELETE CASCADE ) ;
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+insert into t2 values (3) , (6), (9) ;
+insert into t3 values (1) , (4) , (7) ;
+delete from t1 ;
+select * from t1;
+select * from t2;
+select * from t3;
+drop table t3;
+drop table t2;
+drop table t1;
+
+--triggers on the  dependen tables 
+
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t1(a) ON DELETE CASCADE) ;
+create table t4(z int , op char(2));
+
+--create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+
+create trigger trig_delete after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+insert into t4 values(deletedrow.x , 'bd');
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+insert into t2 values (3) , (6), (9) ;
+insert into t3 values (1) , (4) , (7) ;
+delete from t1 ;
+select * from t4;
+select * from t1;
+select * from t2;
+select * from t3;
+
+drop table t4;
+drop table t3;
+drop table t2;
+drop table t1;
+
+
+--test for multiple fkeys on the same table referrring to
+--different columns on the parent table.
+
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE CASCADE ,
+y int references t1(b) ON DELETE CASCADE);
+insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+insert into t2 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+delete from t1;
+select * from t1;
+select * from t2;
+
+drop table t2;
+drop table t1;
+
+
+--check for the unique nulls case
+--check for sefl referencing
+
+
+
+
+
+---ON DELETE SET NULL TEST CASES
+
+
+--simple cascade delete set to null
+create table t1(a int not null primary key);
+create table t2(b int references t1(a) ON DELETE SET NULL);
+insert into t1 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+delete from t1 where a =2 ;
+select * from t2;
+delete from t1 ;
+select * from t2;
+
+--multiple rows in the dependent table for a single row in the parent
+insert into t1 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+insert into t2 values (1) , (2) , (3) , (4);
+delete from t1 where a = 3 ;
+select * from t1;
+delete from t1;
+select * from t2;
+
+drop table t2;
+drop table t1;
+
+
+--chain of cascade delete 
+--every table has one depedent table referencing it
+create table t1 (a int not null primary key ) ;
+create table t2 (b int not null primary key  references t1(a) ON DELETE CASCADE);
+create table t3 (c int not null primary key  references t2(b) ON DELETE CASCADE) ;
+create table t4 (d int not null primary key  references t3(c) ON DELETE CASCADE) ;
+create table t5 (e int references t4(d) ON DELETE SET NULL) ;
+
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+delete from t1 where a = 5;
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+select * from t5;
+delete from t1 ;
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+select * from t5;
+
+
+--check the prepared statement cascade delete
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t3 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t4 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t5 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?';
+execute sdelete using 'values (2)';
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+select * from t5;
+prepare sdelete1 as 'delete from t2 where b = ?';
+execute sdelete1 using 'values (3)';
+
+--Make sure the ps recompile on a DDL action
+drop table t5 ;
+execute sdelete using 'values (5)';
+execute sdelete1 using 'values (6)';
+select * from t1;
+select * from t2;
+select * from t3;
+select * from t4;
+
+drop table t4;
+drop table t3 ;
+execute sdelete using 'values (7)';
+execute sdelete1 using 'values (8)';
+select * from t1;
+select * from t2;
+remove sdelete;
+remove sdelete1;
+autocommit on;
+delete from t1 ;
+select * from t1;
+select * from t2;
+drop table t2 ;
+drop table t1;
+
+
+--two foreign keys and less number of columns on the dependent table.
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t1(a) ON DELETE SET NULL ) ;
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+insert into t2 values (3) , (6), (9) ;
+insert into t3 values (1) , (4) , (7) ;
+delete from t1 ;
+select * from t1;
+select * from t2;
+select * from t3;
+drop table t3;
+drop table t2;
+drop table t1;
+
+--triggers on the  dependen tables 
+
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int references t1(c) ON DELETE SET NULL ) ;
+create table t3( y int references t1(a) ON DELETE SET NULL) ;
+create table t4(z int , op char(2));
+
+--create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+
+create trigger trig_update after UPDATE on t2
+referencing old as updatedrow
+for each row mode db2sql
+insert into t4 values(updatedrow.x , 'bu');
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+insert into t2 values (3) , (6), (9) ;
+insert into t3 values (1) , (4) , (7) ;
+delete from t1 ;
+select * from t4;
+select * from t1;
+select * from t2;
+select * from t3;
+
+drop table t4;
+drop table t3;
+drop table t2;
+drop table t1;
+
+
+--test for multiple fkeys on the same table referrring to
+--different columns on the parent table.
+
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int);
+insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+insert into t2 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+delete from t1;
+select * from t1;
+select * from t2;
+
+drop table t2;
+drop table t1;
+
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int);
+insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+insert into t2 values(1 , 3) , (2,3) , (3, 4) , (4, 1);
+delete from t1 where a =1 ;
+
+drop table t2;
+drop table t1;
+--following is ACTAULL CASCADE DELETE CASE
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE CASCADE ,
+y int references t1(b) ON DELETE CASCADE);
+insert into t1 values(1 , 4) , (2,3) , (3, 2) , (4, 1);
+insert into t2 values(1 , 3) , (2,3) , (3, 4) , (4, 1);
+delete from t1 where a =1 ;
+--Above delete should delete two rows.
+drop table t2;
+drop table t1;
+
+create table t1 (a int not null primary key ) ;
+create table t2 (b int not null primary key  references t1(a) ON DELETE NO ACTION);
+insert into t1 values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+insert into t2  values (1) , (2) , (3) , (4) , (5) , (6) , (7) , (8) ;
+delete from t1;
+select * from t2;
+drop table t2;
+drop table t1;
+
+--test for DELETE RESTRICT
+--first check with an after trigger and NO ACTION
+create table t1(a int not null unique, b int not null unique);
+create table t2(x int references t1(a) ON DELETE NO ACTION , y int);
+create trigger trig_delete after DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+delete from t2 where x = deletedrow.a;
+
+insert into t1 values(1 , 2);
+insert into t1 values(2 , 3);
+insert into t2 values(1, 2);
+insert into t2 values(2, 3);
+
+-- should fail
+-- parent row can not be deleted because of a dependent relationship from another table
+delete from t1 where a =1;
+
+drop table t2;
+
+--do the same case as above with RESTRICT
+--we should get error, because RESTRICT rules are checked before firing triggers
+create table t2(x int references t1(a) ON DELETE RESTRICT , y int);
+insert into t2 values(1, 2);
+insert into t2 values(2, 3);
+
+--following delete should throw constraint violations error
+delete from t1 where a =1;
+drop table t2;
+drop table t1;
+
+--test for ON UPDATE RESTRICT
+--first check with a trigger and NO ACTION
+autocommit off ;
+create table t1(a int not null unique, b int not null unique);
+create table t2(x int references t1(a) ON UPDATE NO ACTION , y int);
+create trigger trig_update after UPDATE on t1
+referencing old as old for each  row mode db2sql
+update t2 set x = 2 where x = old.a;
+
+insert into t1 values(1 , 2);
+insert into t1 values(2 , 3);
+insert into t2 values(1, 2);
+insert into t2 values(2, 3);
+commit;
+-- this update should fail
+-- parent row can not be deleted because of a dependent relationship from another table
+update t1 set a = 7 where a =1;
+-- should pass because no foreign key constraints are violated
+update t1 set b = 7 where a =1;
+select * from t1 ;
+select * from t2 ;
+rollback;
+drop table t2;
+commit;
+--do the same case as above with RESTRICT
+--we should get error, because RESTRICT is check before firing triggers
+create table t2(x int references t1(a) ON UPDATE RESTRICT , y int);
+insert into t2 values(1, 2);
+insert into t2 values(2, 3);
+commit;
+--following update should throw an error
+update t1 set a = 7 where a =1;
+select * from t1 ;
+select * from t2;
+autocommit on;
+drop table t2;
+drop table t1;
+
+
+--After ROW triggers on the  dependen tables
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t1(a) ON DELETE CASCADE) ;
+create table t4(z int , op char(2));
+
+--create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+
+create trigger trig_delete after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+insert into t4 values(deletedrow.x , 'ad');
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+insert into t2 values (3) , (6), (9) ;
+insert into t3 values (1) , (4) , (7) ;
+delete from t1 ;
+select * from t4;
+select * from t1;
+select * from t2;
+select * from t3;
+
+drop table t4;
+drop table t3;
+drop table t2;
+drop table t1;
+
+
+--After Statement triggers on the  dependen tables
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t1(a) ON DELETE CASCADE) ;
+create table t4(z int , op char(2));
+
+--create triggers such a way that the all deleted row
+--in t2 are inserted into t4
+
+create trigger trig_delete after DELETE on t2
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into t4 select x, 'ad' from deletedrows;
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) ;
+insert into t2 values (3) , (6), (9) ;
+insert into t3 values (1) , (4) , (7) ;
+delete from t1 ;
+select * from t4;
+select * from t1;
+select * from t2;
+select * from t3;
+
+drop table t4;
+drop table t3;
+drop table t2;
+drop table t1;
+
+
+--After triggers on a self referencing table
+
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete cascade);
+
+create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+
+insert into emp values('e1', null);
+insert into emp values('e2', 'e1');
+insert into emp values('e3', 'e1');
+insert into emp values('e4', 'e2');
+insert into emp values('e5', 'e4');
+insert into emp values('e6', 'e5');
+insert into emp values('e7', 'e6');
+insert into emp values('e8', 'e7');
+insert into emp values('e9', 'e8');
+
+
+create trigger trig_emp_delete after DELETE on emp
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'ad' from deletedrows;
+
+delete from emp where empno = 'e1';
+
+select * from emp;
+select * from tempemp;
+
+drop table emp;
+drop table tempemp;
+
+-- triggers on a self referencing table
+
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete cascade);
+
+create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+
+insert into emp values('e1', null);
+insert into emp values('e2', 'e1');
+insert into emp values('e3', 'e1');
+insert into emp values('e4', 'e2');
+insert into emp values('e5', 'e4');
+insert into emp values('e6', 'e5');
+insert into emp values('e7', 'e6');
+insert into emp values('e8', 'e7');
+insert into emp values('e9', 'e8');
+
+
+create trigger trig_emp_delete AFTER DELETE on emp
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'bd' from deletedrows;
+
+delete from emp where empno = 'e1';
+
+select * from emp;
+select * from tempemp;
+
+drop table emp;
+drop table tempemp;
+
+
+--After triggers on a cyclic referential actions
+create table t1(a int not null primary key, b int not null unique);
+create table t2(x int not null primary key, y int);
+
+insert into t1 values (1, 2);
+insert into t1 values (2, 1);
+insert into t2 values (1, 2);
+insert into t2 values (2, 1);
+
+insert into t1 values (3, 4);
+insert into t1 values (4, 3);
+insert into t2 values (3, 4);
+insert into t2 values (4, 3);
+
+insert into t1 values (6, 7);
+insert into t1 values (7, 6);
+insert into t2 values (6, 7);
+insert into t2 values (7, 6);
+
+
+alter table t1 add constraint c1 foreign key (b) 
+                             references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y) 
+                              references t1(b) on delete cascade;
+
+create table t1temp(l int , m int, op char(2));
+
+create trigger trig_cyclic_del after DELETE on t1
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into t1temp  select a, b,  'ad' from deletedrows;
+
+select * from t1; 
+select * from t2;
+---following delete should delete all the rows
+delete from t1 where a = 3;
+select * from t1; 
+select * from t2;
+select * from t1temp;
+delete from t1;
+
+select * from t1; 
+select * from t2;
+select * from t1temp;
+
+
+drop table t1temp;
+alter table t1 drop constraint c1;
+drop table t2;
+drop table t1;
+
+-- triggers on a cyclic referential actions
+create table t1(a int not null primary key, b int not null unique);
+create table t2(x int not null primary key, y int);
+
+insert into t1 values (1, 2);
+insert into t1 values (2, 1);
+insert into t2 values (1, 2);
+insert into t2 values (2, 1);
+
+insert into t1 values (3, 4);
+insert into t1 values (4, 3);
+insert into t2 values (3, 4);
+insert into t2 values (4, 3);
+
+insert into t1 values (6, 7);
+insert into t1 values (7, 6);
+insert into t2 values (6, 7);
+insert into t2 values (7, 6);
+
+
+alter table t1 add constraint c1 foreign key (b) 
+                             references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y) 
+                              references t1(b) on delete cascade;
+
+create table t1temp(l int , m int, op char(2));
+
+create trigger trig_cyclic_del AFTER DELETE on t1
+REFERENCING OLD_Table AS deletedrows
+for each statement mode db2sql 
+insert into t1temp  select a, b,  'bd' from deletedrows;
+
+select * from t1; 
+select * from t2;
+---following delete should delete all the rows
+delete from t1 where a = 3;
+select * from t1; 
+select * from t2;
+select * from t1temp;
+
+delete from t1;
+
+select * from t1; 
+select * from t2;
+select * from t1temp;
+
+
+drop table t1temp;
+alter table t1 drop constraint c1;
+drop table t2;
+drop table t1;
+
+
+--ROW triggers on a cyclic referential actions
+create table t1(a int not null primary key, b int not null unique);
+create table t2(x int not null primary key, y int);
+
+insert into t1 values (1, 2);
+insert into t1 values (2, 1);
+insert into t2 values (1, 2);
+insert into t2 values (2, 1);
+
+insert into t1 values (3, 4);
+insert into t1 values (4, 3);
+insert into t2 values (3, 4);
+insert into t2 values (4, 3);
+
+insert into t1 values (6, 7);
+insert into t1 values (7, 6);
+insert into t2 values (6, 7);
+insert into t2 values (7, 6);
+
+
+alter table t1 add constraint c1 foreign key (b) 
+                             references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y) 
+                              references t1(b) on delete cascade;
+
+create table t1temp(l int , m int, op char(2));
+
+create trigger trig_cyclic_del1 after DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+insert into t1temp values(deletedrow.a , deletedrow.b, 'ad');
+
+create trigger trig_cyclic_del2 AFTER DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+insert into t1temp values(deletedrow.a , deletedrow.b, 'bd');
+
+select * from t1; 
+select * from t2;
+---following delete should delete all the rows
+delete from t1 where a = 1;
+select * from t1; 
+select * from t2;
+select * from t1temp;
+delete from t1;
+
+select * from t1; 
+select * from t2;
+select * from t1temp;
+
+drop table t1temp;
+alter table t1 drop constraint c1;
+drop table t2;
+drop table t1;
+
+--SET NULL UPDATE  STETEMENT triggers on a self referencing table
+
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete set null);
+
+create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+
+insert into emp values('e1', null);
+insert into emp values('e2', 'e1');
+insert into emp values('e3', 'e1');
+insert into emp values('e4', 'e2');
+insert into emp values('e5', 'e4');
+insert into emp values('e6', 'e5');
+insert into emp values('e7', 'e6');
+insert into emp values('e8', 'e7');
+insert into emp values('e9', 'e8');
+
+
+create trigger trig_emp_delete AFTER UPDATE on emp
+REFERENCING OLD_Table AS updatedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'bu' from updatedrows;
+
+create trigger trig_emp_delete1 AFTER UPDATE on emp
+REFERENCING NEW_Table AS updatedrows
+for each statement mode db2sql 
+insert into tempemp select empno, mgr,  'au' from updatedrows;
+
+delete from emp where empno = 'e1';
+
+select * from emp;
+select * from tempemp;
+
+drop table emp;
+drop table tempemp;
+
+--SET NULL UPDATE  ROW triggers on a self referencing table
+
+create table emp(empno char(2) not null, mgr char(2), constraint emp primary key(empno),
+  constraint manages foreign key(mgr) references emp(empno) on delete set null);
+
+create table tempemp(empno char(2) , mgr char(2)  , op char(2));
+
+insert into emp values('e1', null);
+insert into emp values('e2', 'e1');
+insert into emp values('e3', 'e1');
+insert into emp values('e4', 'e2');
+insert into emp values('e5', 'e4');
+insert into emp values('e6', 'e5');
+insert into emp values('e7', 'e6');
+insert into emp values('e8', 'e7');
+insert into emp values('e9', 'e8');
+
+
+create trigger trig_emp_delete after UPDATE on emp
+REFERENCING OLD AS updatedrow
+for each row mode db2sql
+insert into tempemp values(updatedrow.empno, updatedrow.mgr, 'bu');
+
+create trigger trig_emp_delete1 AFTER UPDATE on emp
+REFERENCING NEW AS updatedrow
+for each  row mode db2sql
+insert into tempemp values(updatedrow.empno, updatedrow.mgr, 'au');
+
+delete from emp where empno = 'e1';
+
+select * from emp;
+select * from tempemp;
+
+delete from emp;
+select * from emp;
+select * from tempemp;
+
+drop table emp;
+drop table tempemp;
+
+-- prepared statements check like in cview
+create table t1(a int not null primary key);
+create table t2(b int references t1(a) ON DELETE SET NULL);
+insert into t1 values (1) , (2) , (3) , (4) ;
+insert into t2 values (1) , (2) , (3) , (4) ;
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (2)';
+commit;
+select * from t2;
+execute sdelete using 'values (3)';
+execute sdelete using 'values (4)';
+commit;
+remove sdelete;
+drop table t2;
+create table t2(b int references t1(a) ON DELETE CASCADE);
+insert into t1 values (1) , (2) , (3) , (4) ;
+insert into t2 values (1) , (2) , (3) , (4) ;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (2)';
+commit;
+select * from t2;
+execute sdelete using 'values (3)';
+execute sdelete using 'values (4)';
+commit;
+remove sdelete;
+drop table t2;
+drop table t1;
+autocommit on;
+--make sure prepared statements are recompiled after a DDL changes works
+create table t1(a int not null primary key);
+create table t2(b int references t1(a) ON DELETE CASCADE, c int);
+insert into t1 values (1) , (2) , (3) , (4) ;
+insert into t2 values (1, 1) , (2, 2) , (3, 3) , (4, 4) ;
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (2)';
+commit;
+select * from t2;
+create index idx1 on t2(c) ;
+execute sdelete using 'values (3)';
+execute sdelete using 'values (4)';
+commit;
+drop table t2;
+commit;
+insert into t1 values(5);
+execute sdelete using 'values (5)';
+select * from t1;
+remove sdelete;
+autocommit on;
+drop table t1;
+commit;
+
+--do some rollbacks that involved prepared statement executtions
+create table t1(a int not null primary key);
+create table t2(b int references t1(a) ON DELETE CASCADE, c int);
+insert into t1 values (1) , (2) , (3) , (4) ;
+insert into t2 values (1, 1) , (2, 2) , (3, 3) , (4, 4) ;
+commit;
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (2)';
+rollback;
+select * from t2;
+execute sdelete using 'values (3)';
+create index idx1 on t2(c) ;
+execute sdelete using 'values (4)';
+commit;
+select * from t1;
+select * from t2;
+drop table t2;
+rollback;
+insert into t1 values(5);
+execute sdelete using 'values (5)';
+select * from t1;
+select * from t2;
+remove sdelete;
+autocommit on;
+drop table t2;
+drop table t1;
+
+---UNIQUE COLUMN NOT NULL VALUE CHECKS
+--delete cascade on non-nullable unique column
+create table t1 ( a int not null unique) ;
+insert into t1 values(0) ;
+insert into t1 values(1) ;
+insert into t1 values(2) ;
+create table t2(b int references t1(a) ON DELETE CASCADE) ;
+insert into t2 values(null) ;
+insert into t2 values(null) ;
+insert into t2 values(null) ;
+insert into t2 values(null) ;
+insert into t2 values(null) ;
+insert into t2 values(null) ;
+insert into t2 values(null) ;
+select * from t1 ;
+select * from t2 ;
+
+delete from t1 where a = 0 ;
+
+select * from t1 ;
+-- null values from t1 are not deleted
+select * from t2 ;
+
+
+drop table t2;
+drop table t1;
+
+--self ref foreign key without null values
+
+create table t1( a int not null unique , b int references t1(a) 
+ON DELETE SET NULL);
+
+insert into t1 values ( 1 , null) ;
+delete from t1 where b is null ;
+
+select * from t1 ;
+
+drop table t1 ;
+
+create table t1( a int not null unique , b int references t1(a) 
+ON DELETE CASCADE);
+insert into t1 values ( 1 , null) ;
+insert into t1 values ( 0 , 1) ;
+delete from t1 where b is null ;
+select * from t1 ;
+drop table t1 ;
+
+--mutiple tables
+create table parent( a int not null unique) ;
+create table child1(b int not null unique references parent(a)
+ON DELETE CASCADE);
+create table child2(c int not null unique references child1(b)
+ON DELETE CASCADE);
+
+insert into parent values(0) ;
+insert into parent values(1) ;
+insert into parent values(2) ;
+insert into child1 values(0) ;
+insert into child1 values(1) ;
+insert into child1 values(2) ;
+insert into child2 values(0) ;
+insert into child2 values(1) ;
+insert into child2 values(2) ;
+
+select * from parent ;
+select * from child1;
+select * from child2 ;
+
+delete from parent where a = 1 ;
+select * from parent ;
+select * from child1;
+select * from child2 ;
+
+delete from parent where a = 0 ;
+select * from parent ;
+select * from child1;
+
+--delete all the rows
+delete from parent;
+
+drop table child2;
+create table child2(c int references child1(b)
+ON DELETE SET NULL);
+
+insert into parent values(0) ;
+insert into parent values(1) ;
+insert into parent values(2) ;
+insert into child1 values(0) ;
+insert into child1 values(1) ;
+insert into child1 values(2) ;
+insert into child2 values(null) ;
+insert into child2 values(1) ;
+insert into child2 values(2) ;
+
+select * from parent ;
+select * from child1;
+select * from child2 ;
+
+delete from parent where a = 1 ;
+select * from parent ;
+select * from child1;
+select * from child2;
+
+delete from parent where a = 0;
+select * from parent ;
+select * from child1;
+select * from child2;
+
+delete from child2 where c is null;
+delete from child2 where c is not null;
+delete from parent where a = 2 ;
+
+
+select * from parent ;
+select * from child1;
+select * from child2;
+
+delete from parent;
+delete from child1;
+delete from child2;
+
+drop table child2;
+drop table child1;
+drop table parent;
+
+
+
+--foreign key on two non-nullable unique keys
+create table t1(a int not null unique , b int not null unique) ;
+alter table t1 add constraint c2 unique(a , b ) ;
+
+create table t2( x1 int , x2 int , constraint c1 foreign key (x1, x2)
+references t1(a , b ) ON DELETE CASCADE ) ;
+insert into t1 values (0 , 1) ;
+insert into t1 values (1 , 2) ;
+insert into t2 values (0 , 1) ;
+insert into t2 values (1 , 2) ;
+
+delete from t1 where a = 0;
+select * from t1 ;
+select * from t2 ;
+
+insert into t1 values (0 , 0) ;
+insert into t2 values (0 , 0) ;
+
+delete from t1 where a = 0;
+select * from t1 ;
+select * from t2 ;
+
+delete from t1;
+drop table t2 ;
+
+create table t2( x1 int , x2 int , constraint c1 foreign key (x1, x2)
+references t1(a , b ) ON DELETE SET NULL ) ;
+insert into t1 values (0 , 1) ;
+insert into t1 values (1 , 2) ;
+insert into t2 values (0 , 1) ;
+insert into t2 values (1 , 2) ;
+
+select * from t1 ;
+select * from t2 ;
+
+delete from t1 where a = 0;
+select * from t1 ;
+select * from t2 ;
+
+drop table t2 ;
+drop table t1;
+
+--cyclic non-nulls case
+create table t1(a int not null unique, b int not null unique);
+create table t2(x int not null unique, y int not null unique);
+
+insert into t1 values (0, 2);
+insert into t1 values (2, 0);
+insert into t2 values (0, 2);
+insert into t2 values (2, 0);
+
+insert into t1 values (3, 4);
+insert into t1 values (4, 3);
+insert into t2 values (3, 4);
+insert into t2 values (4, 3);
+
+insert into t1 values (6, 7);
+insert into t1 values (7, 6);
+insert into t2 values (6, 7);
+insert into t2 values (7, 6);
+
+insert into t1 values (9, 10);
+insert into t1 values (10, 9);
+insert into t2 values (9, 10);
+insert into t2 values (10, 9);
+
+alter table t1 add constraint c1 foreign key (b)
+			      references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete cascade;
+
+select * from t1;
+select * from t2;
+delete from t1 where a = 0 ;
+select * from t1;
+select * from t2;
+
+delete from t2 where x=3 ;
+select * from t1;
+select * from t2;
+
+delete from t1 where b = 9;
+select * from t1;
+select * from t2;
+delete from t2;
+select * from t1;
+select * from t2;
+
+alter table t1 drop constraint c1;
+drop table t2;
+drop table t1;
+
+--END OF NULL CHECK
+
+--BEGIN NON NULL ERROR CHECK FOR ON DELETE SET NULL
+--do not allow ON DELETE SET NULL on non nullable foreign key columns
+create table n1 ( a int not null primary key);
+create table n2 ( b int not null primary key references n1(a) ON DELETE SET NULL);
+drop table n1;
+
+create table n1 ( a int not null unique);
+create table n2 ( b int not null references n1(a) ON DELETE SET NULL);
+drop table n1;
+--multi column foreign key reference
+create table n1(a int not null , b int not null);
+create table n2(x int not null, y int not null) ;
+alter table n1 add constraint c1 unique(a, b) ;
+alter table n2 add constraint c2 foreign key(x, y) 
+references n1(a,b) ON  DELETE SET NULL ;
+drop table n1;
+drop table n2;
+--just make sure we are allowing SET NULL on nullable columns
+create table n1(a int not null , b int not null);
+create table n2(x int, y int) ;
+alter table n1 add constraint c1 unique(a, b) ;
+alter table n2 add constraint c2 foreign key(x, y) 
+references n1(a,b) ON  DELETE SET NULL ;
+drop table n2;
+drop table n1;
+--make sure  ON DELETE CASCADE works fine
+create table n1(a int not null , b int not null);
+create table n2(x int not null, y int not null) ;
+alter table n1 add constraint c1 unique(a, b) ;
+alter table n2 add constraint c2 foreign key(x, y) 
+references n1(a,b) ON  DELETE CASCADE;
+drop table n2;
+drop table n1;
+--only some coulmns of foreign key are nullable
+create table n1(a int not null , b int not null, c int not null , 
+               d int not null , e int not null);
+create table n2(c1 int not null, c2 int not null, c3 int , c4 int,
+                c5 int not null, c6 int ) ;
+alter table n1 add constraint c1 unique(b, c, d, e) ;
+alter table n2 add constraint c2 foreign key(c2, c3, c4, c5)
+references n1(b, c, d, e) ON  DELETE SET NULL ;
+
+insert into n1 values(1 , 2, 3, 4, 5);
+insert into n1 values(21, 22, 23, 24, 25);
+insert into n1 values(6, 7 , 8, 9, 10);
+insert into n1 values(100 , 101, 102, 103, 104);
+insert into n2 values(111, 2, 3, 4, 5, 0);
+insert into n2 values(212, 22, 23, 24, 25, 0);
+insert into n2 values(6, 7 , 8, 9, 10, 0);
+select * from n1;
+select * from n2;
+delete from n1 where e =10;
+select * from n1 ;
+select * from n2;
+delete from n1 where a =1;
+select * from n1;
+select * from n2;
+delete from n1;
+select * from n1;
+select * from n2;
+
+drop table n2;
+drop table n1;
+
+--END NON NULL ERROR CHECK
+
+
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int not null unique references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t2(x) ON DELETE CASCADE) ;
+
+create trigger trig_delete after DELETE on t1
+referencing old as deletedrow
+for each  row mode db2sql
+delete from t2; 
+
+create trigger trig_delete1 after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+delete from t3;
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) , (10,11,12), 
+       (13,14,15), (16,17,18), (19, 20, 21), (22, 23, 24), (25,26,27);
+insert into t2 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+insert into t3 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (4)';
+execute sdelete using 'values (7)';
+execute sdelete using 'values (10)';
+execute sdelete using 'values (13)';
+execute sdelete using 'values (16)';
+execute sdelete using 'values (19)';
+execute sdelete using 'values (22)';
+execute sdelete using 'values (25)';
+commit;
+autocommit on;
+select * from t1 ;
+select * from t2 ;
+select * from t3;
+
+drop table t3;
+drop table t2;
+drop table t1;
+
+--checks for bug fix for 4743
+
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int not null unique references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t2(x) ON DELETE NO ACTION) ;
+
+create trigger trig_delete after DELETE on t1
+referencing old as deletedrow
+for each row mode db2sql
+delete from t2; 
+
+create trigger trig_delete1 after DELETE on t2
+referencing old as deletedrow
+for each row mode db2sql
+delete from t3;
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) , (10,11,12), 
+       (13,14,15), (16,17,18), (19, 20, 21), (22, 23, 24), (25,26,27);
+insert into t2 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+insert into t3 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+
+-- should fail
+-- parent row can not be deleted because of a dependent relationship from another table
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (4)';
+execute sdelete using 'values (7)';
+execute sdelete using 'values (10)';
+execute sdelete using 'values (13)';
+execute sdelete using 'values (16)';
+execute sdelete using 'values (19)';
+execute sdelete using 'values (22)';
+execute sdelete using 'values (25)';
+commit;
+autocommit on;
+select * from t1 ;
+select * from t2 ;
+select * from t3;
+
+drop table t3;
+drop table t2;
+drop table t1;
+
+create table t1( a int not null primary key , b int , c int not null unique) ;
+create table t2( x int not null unique references t1(c) ON DELETE CASCADE ) ;
+create table t3( y int references t2(x) ON DELETE NO ACTION) ;
+
+insert into t1 values (1, 2, 3), (4,5,6) , (7,8,9) , (10,11,12), 
+       (13,14,15), (16,17,18), (19, 20, 21), (22, 23, 24), (25,26,27);
+insert into t2 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+insert into t3 values (3) , (6), (9), (12), (15), (18), (21), (24), (27);
+
+autocommit off;
+prepare sdelete as 'delete from t1 where a = ?' ;
+execute sdelete using 'values (1)';
+execute sdelete using 'values (4)';
+execute sdelete using 'values (7)';
+execute sdelete using 'values (10)';
+execute sdelete using 'values (13)';
+execute sdelete using 'values (16)';
+execute sdelete using 'values (19)';
+execute sdelete using 'values (22)';
+execute sdelete using 'values (25)';
+commit;
+autocommit on;
+select * from t1 ;
+select * from t2 ;
+select * from t3;
+
+drop table t3;
+drop table t2;
+drop table t1;
+--bug5186; mutiple cascade paths , execute a delete where
+--one path does not qualify any rows.
+create table t1 (c1 int not null primary key ) ;
+create table t2 (c1 int not null primary key  references t1(c1) ON DELETE CASCADE);
+create table t3 (c1 int references t2(c1) ON DELETE CASCADE,
+                 c2 int references t1(c1) ON DELETE CASCADE);
+
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t2 values(2);
+insert into t3 values(2, 1) ;
+delete from t1 where c1 = 1 ;
+
+--now make sure that we havw rows in both the paths and get meged properly
+insert into t1 values(1);
+insert into t1 values(3);
+insert into t2 values(1);
+
+insert into t3 values(2, 1) ;
+insert into t3 values(1, 2) ;
+insert into t3 values(2, 3) ;
+
+delete from t1 where c1 = 1 ;
+select * from t3 ;
+delete from t1 ;
+---now create a statement trigger and see what happens on a empty delete.
+create table t4(c1 char (20));
+
+create trigger trig_delete after DELETE on t3
+for each statement mode db2sql
+insert into t4 values('ad');
+
+delete from t1 ;
+select * from t4 ;
+drop trigger trig_delete;
+delete from t4 ;
+create trigger trig_delete after DELETE on t3
+for each statement mode db2sql
+insert into t4 values('bd');
+delete from t1 ;
+delete from t1 ;
+select * from t4 ;
+drop trigger trig_delete;
+delete from t4 ;
+--row level trigger case
+drop table t4;
+create table t4(z int not null primary key , op char(2));
+create trigger trig_delete after DELETE on t3
+referencing old as deletedrow
+for each row mode db2sql
+insert into t4 values(deletedrow.c1 , 'bd');
+delete from t1 ;
+delete from t1 ;
+select * from t4 ;
+insert into t1 values(1);
+insert into t1 values(2);
+insert into t2 values(2);
+insert into t3 values(2, 1) ;
+delete from t1 where c1 = 1 ;
+select * from t4 ;
+delete from t4;
+insert into t1 values(1);
+insert into t1 values(3);
+insert into t2 values(1);
+
+insert into t3 values(2, 1) ;
+insert into t3 values(1, 2) ;
+insert into t3 values(2, 3) ;
+
+delete from t1 where c1 = 1 ;
+select * from t4 ;
+drop table t4;
+drop table t3;
+drop table t2;
+drop table t1;
+
+---multiple foreign keys pointing to the same table and has  dependens
+-- first foreign key path has zero rows qualified(bug 5197 from webshphere)
+CREATE SCHEMA DB2ADMIN;
+SET SCHEMA DB2ADMIN;
+CREATE TABLE DB2ADMIN.PAGE_INST
+   (
+      OID BIGINT NOT NULL ,
+      IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL ,
+      IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL ,
+      IS_SHARED CHAR(1) DEFAULT 'N' NOT NULL ,
+      ALL_PORT_ALLOWED CHAR(1) DEFAULT 'Y' NOT NULL ,
+      PARENT_OID BIGINT,
+      CONT_PARENT_OID BIGINT,
+      SKIN_DESC_OID BIGINT,
+      THEME_DESC_OID BIGINT,
+      CREATE_TYPE CHAR(1) DEFAULT 'E' NOT NULL ,
+      TYPE INT NOT NULL ,
+      CREATED BIGINT NOT NULL ,
+      MODIFIED BIGINT NOT NULL
+   );
+
+CREATE TABLE DB2ADMIN.PORT_WIRE
+   (
+      OID BIGINT NOT NULL ,
+      CREATED BIGINT NOT NULL ,
+      MODIFIED BIGINT NOT NULL ,
+      USER_DESC_OID BIGINT NOT NULL ,
+      ORDINAL INT NOT NULL ,
+      SRC_COMPOS_OID BIGINT NOT NULL ,
+      SRC_PORT_INST_OID BIGINT NOT NULL ,
+      SRC_PORT_PARM_OID BIGINT,
+      SRC_PORT_PROP_OID BIGINT,
+      TGT_COMPOS_OID BIGINT NOT NULL ,
+      TGT_PORT_INST_OID BIGINT NOT NULL ,
+      TGT_PORT_PARM_OID BIGINT,
+      TGT_PORT_PROP_OID BIGINT,
+      VERSION VARCHAR(255),
+      EXTRA_DATA VARCHAR(1024)
+   );
+
+
+CREATE TABLE DB2ADMIN.PORT_WIRE_LOD
+   (
+      PORT_WIRE_OID BIGINT NOT NULL ,
+      LOCALE VARCHAR(64) NOT NULL ,
+      TITLE VARCHAR(255),
+      DESCRIPTION VARCHAR(1024)
+   );
+
+ALTER TABLE DB2ADMIN.PAGE_INST
+   ADD CONSTRAINT PK280 Primary Key (
+      OID);
+
+ALTER TABLE DB2ADMIN.PORT_WIRE
+   ADD CONSTRAINT PK930 Primary Key (
+      OID);
+
+ALTER TABLE DB2ADMIN.PORT_WIRE
+   ADD CONSTRAINT FK930B Foreign Key (
+      SRC_COMPOS_OID)
+   REFERENCES PAGE_INST (
+      OID)
+      ON DELETE CASCADE
+      ON UPDATE NO ACTION;
+
+ALTER TABLE DB2ADMIN.PORT_WIRE
+   ADD CONSTRAINT FK930F Foreign Key (
+      TGT_COMPOS_OID)
+   REFERENCES PAGE_INST (
+      OID)
+      ON DELETE CASCADE
+      ON UPDATE NO ACTION;
+
+ALTER TABLE DB2ADMIN.PORT_WIRE_LOD
+   ADD CONSTRAINT FK940 Foreign Key (
+      PORT_WIRE_OID)
+   REFERENCES PORT_WIRE (
+      OID)
+      ON DELETE CASCADE
+      ON UPDATE NO ACTION;
+
+INSERT INTO DB2ADMIN.PAGE_INST (OID, CREATED, MODIFIED, TYPE)
+    VALUES (1301, 0, 0, 5555);
+INSERT INTO DB2ADMIN.PAGE_INST (OID, CREATED, MODIFIED, TYPE)
+    VALUES (1302, 0, 0, 5555);
+
+INSERT INTO DB2ADMIN.PORT_WIRE (OID, CREATED, MODIFIED, 
+    USER_DESC_OID, ORDINAL, SRC_COMPOS_OID, SRC_PORT_INST_OID, 
+    TGT_COMPOS_OID, TGT_PORT_INST_OID)
+    VALUES (2001, 0, 0, 1401, 1, 1301, 1202, 1302, 1203);
+
+INSERT INTO DB2ADMIN.PORT_WIRE_LOD (PORT_WIRE_OID, 
+                        LOCALE, TITLE, DESCRIPTION)
+    VALUES (2001, 'en', 'TestPortletWire', 'blahblah');
+
+DELETE FROM DB2ADMIN.PAGE_INST WHERE OID = 1302;
+
+select * from DB2ADMIN.PAGE_INST;
+select * from DB2ADMIN.PORT_WIRE;
+select * from DB2ADMIN.PORT_WIRE_LOD;
+
+INSERT INTO DB2ADMIN.PAGE_INST (OID, CREATED, MODIFIED, TYPE)
+    VALUES (1302, 0, 0, 5555);
+INSERT INTO DB2ADMIN.PORT_WIRE (OID, CREATED, MODIFIED, 
+    USER_DESC_OID, ORDINAL, SRC_COMPOS_OID, SRC_PORT_INST_OID, 
+    TGT_COMPOS_OID, TGT_PORT_INST_OID)
+    VALUES (2001, 0, 0, 1401, 1, 1301, 1202, 1302, 1203);
+INSERT INTO DB2ADMIN.PORT_WIRE_LOD (PORT_WIRE_OID, 
+                        LOCALE, TITLE, DESCRIPTION)
+    VALUES (2001, 'en', 'TestPortletWire', 'blahblah');
+
+DELETE FROM DB2ADMIN.PAGE_INST WHERE OID = 1301;
+select * from DB2ADMIN.PAGE_INST;
+select * from DB2ADMIN.PORT_WIRE;
+select * from DB2ADMIN.PORT_WIRE_LOD;
+
+drop table DB2ADMIN.PORT_WIRE_LOD;
+drop table DB2ADMIN.PORT_WIRE;
+drop table DB2ADMIN.PAGE_INST;
+drop schema DB2ADMIN restrict;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions1.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3155 @@
+-- #########################################################################
+--- some Test cases from IBM DB2. Reusing them to test Cloudscape
+-- # MODIFIED BY      :     WHO       WHEN             WHY
+-- #                  : ----------- ------- -------------------------------
+-- #                  : P. Selinger 950128  new testcase
+-- #                  : M. Snowbell 970716  beef up for better MPP coverage  
+-- #                  :                     - add first column for partition
+-- #                  :                     - add rows
+-- #                  : Suresh T    020616  - Modified for Cloudscape
+-- #                  : Mark C      040309  - Modified for DB2 Cloudscape
+-- #########################################################################
+-- # TEST CASE        : cself301.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table also appears in a
+-- #                  : subquery that qualifies which rows are changed
+-- #                  : and the deleted table has a self-ref'g RI const.
+-- *************************************************************************
+
+create schema db2test;
+set schema db2test;
+
+-- "START OF TESTCASE: cself301.sql";
+autocommit off;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+insert into db2test.dept values (1, 'K55', 'DB');
+insert into db2test.dept values (2, 'K52', 'OFC');
+insert into db2test.dept values (3, 'K51', 'CS');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete
+  cascade, dno char(3) references db2test.dept on delete
+  set null);
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.origemp on delete
+  cascade, dno char(3) references db2test.origdept
+  on delete set null );
+insert into db2test.origemp select * from db2test.emp;
+
+-- "END OF TESTUNIT: 01";
+
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN') order by 2, 3, 4;
+delete from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN');
+select * from db2test.emp order by name, mgrname, dno;
+
+-- "END OF TESTUNIT: 02";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+select * from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN')) order by 2, 3, 4;
+delete from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN'));
+select * from db2test.emp order by name, mgrname, dno;
+
+-- "END OF TESTUNIT: 03";
+
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK')) order by 2, 3, 4;
+delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK'));
+select * from db2test.emp order by name, mgrname, dno;
+-- "END OF TESTUNIT: 04";
+
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno))) order by 2, 3, 4;
+delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+select * from db2test.emp order by name, mgrname, dno;
+-- "END OF TESTUNIT: 05";
+
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+create view db2test.vemp (vc0, vname, vmgrname, vdno) as
+  select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+select * from db2test.vemp order by 2, 3, 4;
+delete from db2test.vemp;
+select * from db2test.emp order by name, mgrname, dno;
+-- "END OF TESTUNIT: 06";
+
+-- "cleanup";
+drop view db2test.vemp;
+drop table db2test.emp;
+drop table db2test.origemp;
+drop table db2test.dept;
+drop table db2test.origdept;
+--
+rollback;
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself302.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by cascade on delete.
+-- #                  : shape of the RI tree is a 1 level star fanout.
+-- #########################################################################
+-- "START OF TESTCASE: cself302.sql";
+
+autocommit off;
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+insert into db2test.dept values (1, 'K55', 'DB');
+insert into db2test.dept values (2, 'K52', 'OFC');
+insert into db2test.dept values (3, 'K51', 'CS');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+insert into db2test.origemp select * from db2test.emp;
+
+create table db2test.secondemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete cascade,
+  dno char(3)  references db2test.origdept
+  on delete cascade );
+insert into db2test.secondemp select * from db2test.emp;
+commit;
+-- "END OF TESTUNIT: 01";
+
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN') order by 2,3;
+delete from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 02";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+select * from db2test.dept where dno in (select dno from
+   db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55')) order by 2, 3;
+delete from db2test.dept where dno in (select dno
+   from db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55'));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 03";
+
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : child table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+select * from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK')) order by 2, 3;
+delete from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK'));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+-- "END OF TESTUNIT: 04";
+
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : above -- 7 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+commit;
+select * from db2test.dept dtop where exists
+  (select * from db2test.secondemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = dtop.dno and dno in
+         (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+         (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+         (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+         (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+         (select dno from db2test.emp E6 where E5.dno = E6.dno)
+      )))))) order by 2, 3;
+-- begin RJC950405 (commented out and added ; to the following line as I think we're fixed?)
+-- -- testcase commented out pending defect fix;
+-- end RJC950405
+ delete from db2test.dept where exists
+  (select * from db2test.secondemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = db2test.dept.dno and dno in
+         (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+         (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+         (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+         (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+         (select dno from db2test.emp E6 where E5.dno = E6.dno)
+      ))))));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+-- "END OF TESTUNIT: 05";
+
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete cascade on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+-- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp2 select * from db2test.emp;
+commit;
+select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where Dtop.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno))
+    order by 2, 3;
+delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 06";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete cascade on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+commit;
+select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2,3;
+delete from db2test.dept  where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 07";
+
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete cascade on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.secondemp;
+delete from db2test.dept;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2, 3;
+delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 08";
+
+-- *************************************************************************
+-- TESTUNIT         : 09
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 09";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+commit;
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52') order by 2, 3;
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 09";
+
+-- *************************************************************************
+-- TESTUNIT         : 10
+-- DESCRIPTION      : delete on iudt where SQ on
+--                  : view with join on 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 10";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+-- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp3 select * from db2test.emp;
+-- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp4 select * from db2test.emp;
+-- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp5 select * from db2test.emp;
+-- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp6 select * from db2test.emp;
+-- create a 7th child table like emp
+create table db2test.emp7 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp7 select * from db2test.emp;
+-- create a 8th child table like emp
+create table db2test.emp8 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp8 select * from db2test.emp;
+-- create a 9th child table like emp
+create table db2test.emp9 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp9 select * from db2test.emp;
+-- create a 10th child table like emp
+create table db2test.emp10 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp10 select * from db2test.emp;
+-- create a 11th child table like emp
+create table db2test.emp11 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp11 select * from db2test.emp;
+-- create a 12th child table like emp
+create table db2test.emp12 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp12 select * from db2test.emp;
+-- create a 13th child table like emp
+create table db2test.emp13 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp13 select * from db2test.emp;
+-- create a 14th child table like emp
+create table db2test.emp14 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp14 select * from db2test.emp;
+-- create a 15th child table like emp
+create table db2test.emp15 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete cascade,
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp15 select * from db2test.emp;
+create view db2test.vempjoin12 (vname1, vname2, vname3, vname4, vname5,
+   vname6, vname7, vname8, vname9, vname10, vname11, vname12,
+   vmgrname, vdno) as
+  select e.name, e2.name, e3.name, e4.name, e5.name, e6.name, e7.name,
+   e8.name, e9.name, e10.name, e11.name, e12.name,
+   e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2, db2test.emp3 e3, db2test.emp4 e4,
+  db2test.emp5 e5, db2test.emp6 e6, db2test.emp7 e7, db2test.emp8 e8,
+  db2test.emp9 e9, db2test.emp10 e10, db2test.emp11 e11,
+  db2test.emp12 e12
+  where e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e3.dno
+  and e.dno = e4.dno
+  and e.dno = e5.dno
+  and e.dno = e6.dno
+  and e.dno = e7.dno
+  and e.dno = e8.dno
+  and e.dno = e9.dno
+  and e.dno = e10.dno
+  and e.dno = e11.dno
+  and e.dno = e12.dno;
+commit;
+
+-- FOLLOWING TWO QUERIES HANG IN CLOUDSCAPE NOW ..
+-- UNCOMMENT once they pass.
+-- select * from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52') order by 2, 3;
+
+--delete from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+select * from db2test.emp6 order by dno, name, mgrname;
+select * from db2test.emp7 order by dno, name, mgrname;
+select * from db2test.emp8 order by dno, name, mgrname;
+select * from db2test.emp9 order by dno, name, mgrname;
+select * from db2test.emp10 order by dno, name, mgrname;
+select * from db2test.emp11 order by dno, name, mgrname;
+select * from db2test.emp12 order by dno, name, mgrname;
+select * from db2test.emp13 order by dno, name, mgrname;
+select * from db2test.emp14 order by dno, name, mgrname;
+select * from db2test.emp15 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 10";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 11
+-- DESCRIPTION      : delete with many SQ levels correl'd on child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 11";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.secondemp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+delete from db2test.emp6;
+delete from db2test.emp7;
+delete from db2test.emp8;
+delete from db2test.emp9;
+delete from db2test.emp10;
+delete from db2test.emp11;
+delete from db2test.emp12;
+delete from db2test.emp13;
+delete from db2test.emp14;
+delete from db2test.emp15;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.emp;
+insert into db2test.emp4 select * from db2test.emp;
+insert into db2test.emp5 select * from db2test.emp;
+insert into db2test.emp6 select * from db2test.emp;
+insert into db2test.emp7 select * from db2test.emp;
+insert into db2test.emp8 select * from db2test.emp;
+insert into db2test.emp9 select * from db2test.emp;
+insert into db2test.emp10 select * from db2test.emp;
+insert into db2test.emp11 select * from db2test.emp;
+insert into db2test.emp12 select * from db2test.emp;
+insert into db2test.emp13 select * from db2test.emp;
+insert into db2test.emp14 select * from db2test.emp;
+insert into db2test.emp15 select * from db2test.emp;
+commit;
+select * from db2test.dept d where
+  dno in (select dno from db2test.emp e where
+ e.dno = d.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))))
+ order by 2, 3;
+delete from db2test.dept  where
+  dno in (select dno from db2test.emp e where
+ e.dno = db2test.dept.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+select * from db2test.emp6 order by dno, name, mgrname;
+select * from db2test.emp7 order by dno, name, mgrname;
+select * from db2test.emp8 order by dno, name, mgrname;
+select * from db2test.emp9 order by dno, name, mgrname;
+select * from db2test.emp10 order by dno, name, mgrname;
+select * from db2test.emp11 order by dno, name, mgrname;
+select * from db2test.emp12 order by dno, name, mgrname;
+select * from db2test.emp13 order by dno, name, mgrname;
+select * from db2test.emp14 order by dno, name, mgrname;
+select * from db2test.emp15 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 11";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 12
+-- DESCRIPTION      : delete on view with union of 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 12";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.secondemp;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+delete from db2test.emp6;
+delete from db2test.emp7;
+delete from db2test.emp8;
+delete from db2test.emp9;
+delete from db2test.emp10;
+delete from db2test.emp11;
+delete from db2test.emp12;
+delete from db2test.emp13;
+delete from db2test.emp14;
+delete from db2test.emp15;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.emp;
+insert into db2test.emp4 select * from db2test.emp;
+insert into db2test.emp5 select * from db2test.emp;
+insert into db2test.emp6 select * from db2test.emp;
+insert into db2test.emp7 select * from db2test.emp;
+insert into db2test.emp8 select * from db2test.emp;
+insert into db2test.emp9 select * from db2test.emp;
+insert into db2test.emp10 select * from db2test.emp;
+insert into db2test.emp11 select * from db2test.emp;
+insert into db2test.emp12 select * from db2test.emp;
+insert into db2test.emp13 select * from db2test.emp;
+insert into db2test.emp14 select * from db2test.emp;
+insert into db2test.emp15 select * from db2test.emp;
+create view db2test.vempunion15 (vname,
+   vmgrname, vdno) as
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp2 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp3 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp4 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp5 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp6 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp7 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp8 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp9 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp10 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp11 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp12 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp13 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp14 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp15 e);
+commit;
+select * from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52') order by 1, 2;
+delete from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+select * from db2test.emp6 order by dno, name, mgrname;
+select * from db2test.emp7 order by dno, name, mgrname;
+select * from db2test.emp8 order by dno, name, mgrname;
+select * from db2test.emp9 order by dno, name, mgrname;
+select * from db2test.emp10 order by dno, name, mgrname;
+select * from db2test.emp11 order by dno, name, mgrname;
+select * from db2test.emp12 order by dno, name, mgrname;
+select * from db2test.emp13 order by dno, name, mgrname;
+select * from db2test.emp14 order by dno, name, mgrname;
+select * from db2test.emp15 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 12";
+-- "cleanup";
+
+drop view VEMPUNION15;
+drop view VEMPJOIN12;
+drop view VEMPJOIN;
+drop table db2test.emp15;
+drop table db2test.emp14;
+drop table db2test.emp13;
+drop table db2test.emp12;
+drop table db2test.emp11;
+drop table db2test.emp10;
+drop table db2test.emp9;
+drop table db2test.emp8;
+drop table db2test.emp7;
+drop table db2test.emp6;
+drop table db2test.emp5;
+drop table db2test.emp4;
+drop table db2test.emp3;
+drop table db2test.emp2;
+drop table db2test.secondemp;
+drop table db2test.emp;
+drop table db2test.origemp;
+drop table db2test.origdept;
+drop table db2test.dept;
+commit;
+
+-- "cself302.sql ENDED";
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself303.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by cascade on delete.
+-- #                  : shape of the RI tree is a 6 level chain.
+-- #########################################################################
+
+-- "START OF TESTCASE: cself303.sql";
+
+autocommit off;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+insert into db2test.dept values (1, 'K55', 'DB');
+insert into db2test.dept values (2, 'K52', 'OFC');
+insert into db2test.dept values (3, 'K51', 'CS');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+insert into db2test.origemp select * from db2test.emp;
+-- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp2 select * from db2test.emp;
+-- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp3 select * from db2test.emp;
+-- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp4 select * from db2test.emp;
+-- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp5 select * from db2test.emp;
+-- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key
+  references db2test.emp  on delete cascade,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp6 select * from db2test.emp;
+
+-- "END OF TESTUNIT: 01";
+
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.mgrname = e2.mgrname)) order by 2, 3, 4;
+delete from db2test.emp  where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.mgrname = e2.mgrname));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 02";
+
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete where SQ on child table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN')) order by 2,3,4;
+delete from db2test.emp where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN'));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 03";
+
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))))
+    order by 2, 3, 4;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = db2test.emp.mgrname and 
+                  e1.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 04";
+
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+--FOLLOWING TWO QUERIES are giving syntax errors currently
+--select * from db2test.emp e
+--  where dno in (select dno from db2test.emp5 e5
+--   where e5.dno in (select dno from db2test.emp4 e4 where
+--   e5.name = e4.mgrname group by dno having dno in
+--     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+--       e3.dno in (select dno from db2test.emp2 e2
+--                  where e3.name = e2.mgrname group by dno having
+--                  e2.dno in (select dno from db2test.emp e1
+--                  where e1.mgrname = e.mgrname and
+--                  e1.mgrname = 'JOHN'))))) order by 2, 3, 4;
+-- delete from db2test.emp 
+--  where dno in (select dno from db2test.emp5 e5
+--   where e5.dno in (select dno from db2test.emp4 e4 where
+--   e5.name = e4.mgrname group by dno having dno in
+--     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+--       e3.dno in (select dno from db2test.emp2 e2
+--                  where e3.name = e2.mgrname group by dno having
+--                  e2.dno in (select dno from db2test.emp  e1
+--                  where e1.mgrname = e.mgrname and
+--                  e1.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 05";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to iudt
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.mgrname = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where db2test.emp.mgrname = 'JOHN'))))) order by 2,3,4;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where db2test.emp.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.mgrname = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 06";
+
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : SQL commands should get error -119
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2, 3, 4;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where db2test.emp.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 07";
+
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : select should get -119, delete should get ???
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2, 3, 4;
+-- select should get -119;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                  where db2test.emp.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 08";
+
+-- *************************************************************************
+-- TESTUNIT         : 09
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 09";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2, 3, 4;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 09";
+-- "cleanup";
+drop table db2test.origemp;
+drop table db2test.emp6;
+drop table db2test.emp5;
+drop table db2test.emp4;
+drop table db2test.emp3;
+drop table db2test.emp2;
+drop table db2test.emp;
+drop table db2test.dept;
+drop table db2test.origdept;
+
+rollback;
+-- "cself303.clp ENDED";
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself304.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # COMPONENT(S)     : SQN and SQR
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by cascade on delete.
+-- #                  : shape of the RI tree is a 3-way cycle to parent
+-- #########################################################################
+-- "START OF TESTCASE: cself304.sql";
+autocommit off ;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+insert into db2test.dept values (1, 'K55', 'DB', 'JOHN');
+insert into db2test.dept values (2, 'K52', 'OFC', 'ROBIN');
+insert into db2test.dept values (3, 'K51', 'CS', 'ASHOK');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete cascade );
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+insert into db2test.origemp select * from db2test.emp;
+-- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete cascade,
+  dno char(3));
+insert into db2test.emp2 select * from db2test.emp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+-- "END OF TESTUNIT: 01";
+
+-- ************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI cascade col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+
+select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'));
+
+delete from db2test.emp where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+-- "END OF TESTUNIT: 02";
+
+-- ************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : same as 02, but with correlation to top table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where d.dmgrname = 'john' and e2.name = d.dmgrname));
+delete from db2test.emp where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where mgrname = 'john' and e2.name = d.dmgrname));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 03";
+
+-- ************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : same as 02 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'JOHN')) order by dno, name, mgrname;
+delete from db2test.emp  where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'JOHN'));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 04";
+
+-- ************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : same as 03 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN')) order by dno, name, mgrname;
+delete from db2test.emp  where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN'));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 05";
+
+-- ************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : same as 05 but extra table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+select * from db2test.emp e where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN'))) order by dno, name, mgrname;
+delete from db2test.emp where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'JOHN')));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 06";
+
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete on parent with SQ on join view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52') order by dno, dname, dmgrname;
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+-- "END OF TESTUNIT: 07";
+
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete on parent with SQ on union view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete cascade;
+
+commit;
+create view db2test.vempunion (vname, vmgrname, vdno) as
+  (select e.name,  e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e2.name, e2.mgrname, e2.dno from db2test.emp2 e2);
+
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52') order by dno, dname, dmgrname;
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+-- "END OF TESTUNIT: 08";
+-- "cleanup";
+drop view VEMPJOIN;
+drop view VEMPUNION;
+drop table db2test.emp2;
+drop table db2test.emp;
+drop table db2test.origemp;
+drop table db2test.dept;
+drop table db2test.origdept;
+
+--drop view db2test.vempjoin;
+--drop view db2test.vempunion;
+commit;
+-- "cself304.sql ENDED";
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself311.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table also appears in a
+-- #                  : subquery that qualifies which rows are changed
+-- #                  : and the deleted table has a self-ref'g RI const.
+-- # EXPECTED RESULTS : File should run successfully with no errors.
+-- #########################################################################
+
+-- "START OF TESTCASE: cself311.sql";
+
+autocommit off;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+insert into db2test.dept values (1, 'K55', 'DB');
+insert into db2test.dept values (2, 'K52', 'OFC');
+insert into db2test.dept values (3, 'K51', 'CS');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete
+  set null, dno char(3) references db2test.dept on delete
+  set null);
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.origemp on delete
+  set null, dno char(3) references db2test.origdept
+  on delete set null );
+insert into db2test.origemp select * from db2test.emp;
+
+-- "END OF TESTUNIT: 01";
+
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN') order by 2,3,4;
+delete from db2test.emp where name in (select name from db2test.emp
+   where mgrname = 'JOHN');
+select * from db2test.emp order by name, mgrname, dno;
+
+-- "END OF TESTUNIT: 02";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+select * from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN')) order by 2, 3, 4;
+delete from db2test.emp where dno in (select dno from db2test.dept D
+   where D.dno in (select dno from db2test.emp E where E.dno = D.dno
+   and e.mgrname = 'JOHN'));
+select * from db2test.emp order by name, mgrname, dno;
+
+-- "END OF TESTUNIT: 03";
+
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK')) order by 2, 3, 4;
+delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from db2test.emp
+  where mgrname = 'ASHOK'));
+select * from db2test.emp order by name, mgrname, dno;
+-- "END OF TESTUNIT: 04";
+
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno))) order by 2, 3, 4;
+delete from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+select * from db2test.emp order by name, mgrname, dno;
+-- "END OF TESTUNIT: 05";
+
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+insert into db2test.emp select * from db2test.origemp;
+create view db2test.vemp (vc0, vname, vmgrname, vdno) as
+  select * from db2test.emp where exists ( select max(mgrname) from
+  db2test.origemp group by dno having dno in (select dno from
+   db2test.dept D where dno in (select dno from db2test.emp E2
+   where D. dno = E2.dno)));
+select * from db2test.vemp order by 2, 3, 4;
+delete from db2test.vemp;
+select * from db2test.emp order by name, mgrname, dno;
+-- "END OF TESTUNIT: 06";
+
+-- "cleanup";
+drop view db2test.vemp;
+drop table db2test.emp;
+drop table db2test.origemp;
+drop table db2test.dept;
+drop table db2test.origdept;
+rollback;
+
+-- "cself311.clp ENDED";
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself312.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by set null on delete.
+-- #                  : shape of the RI tree is a 1 level star fanout.
+-- #########################################################################
+
+-- "START OF TESTCASE: cself312.sql";
+
+autocommit off;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+insert into db2test.dept values (1, 'K55', 'DB');
+insert into db2test.dept values (2, 'K52', 'OFC');
+insert into db2test.dept values (3, 'K51', 'CS');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+insert into db2test.origemp select * from db2test.emp;
+
+create table db2test.secondemp (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete set null,
+  dno char(3)  references db2test.origdept
+  on delete set null );
+insert into db2test.secondemp select * from db2test.emp;
+commit;
+-- "END OF TESTUNIT: 01";
+
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on same table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN') order by 2,3;
+delete from db2test.dept where dno in (select dno from db2test.emp
+   where mgrname = 'JOHN');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 02";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete with 2 levels of SQ and self-ref in 2nd
+--                  : correlated to 1st SQ on foreign key
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+select * from db2test.dept where dno in (select dno from
+   db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55')) order by 2, 3;
+delete from db2test.dept where dno in (select dno
+   from db2test.secondemp E
+   where E.dno in (select dno from db2test.emp D where E.dno = D.dno
+   and D.dno = 'K55'));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 03";
+
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete with SQ GB Having SQ on
+--                  : child table
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+select * from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK')) order by 2, 3;
+delete from db2test.dept where exists ( select max(mgrname) from
+  db2test.secondemp group by dno having dno in (select dno from
+  db2test.emp where mgrname = 'ASHOK'));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+-- "END OF TESTUNIT: 04";
+
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : above -- 7 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+select * from db2test.dept dtop where exists
+  (select * from db2test.secondemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = dtop.dno and dno in
+        (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+         (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+         (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+         (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+         (select dno from db2test.emp E6 where E5.dno = E6.dno)
+      )))))) order by 2, 3;
+delete from db2test.dept where exists
+  (select * from db2test.origemp  where exists
+     (select dno from
+      db2test.dept D1 where dno = db2test.dept.dno and dno in
+       (select dno from db2test.emp E2 where D1.dno = E2.dno and dno in
+       (select dno from db2test.emp E3 where E2.dno = E3.dno and dno in
+       (select dno from db2test.emp E4 where E3.dno = E4.dno and dno in
+       (select dno from db2test.emp E5 where E4.dno = E5.dno and dno in
+       (select dno from db2test.emp E6 where E5.dno = E6.dno)
+    ))))));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+-- "END OF TESTUNIT: 05";
+
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete set null on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+-- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp2 select * from db2test.emp;
+commit;
+select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where Dtop.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno))
+    order by 2, 3;
+delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno and dno in
+    (select dno from db2test.emp E3 where E2.dno = E3.dno));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 06";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete set null on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2,3;
+delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     and exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 07";
+
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete with SQ on child table correlated to SQ
+--                  : on second child table, delete set null on each
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.secondemp;
+delete from db2test.dept;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+select * from db2test.dept dtop where exists
+    (select dno from db2test.emp2 E2 where dtop.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where dtop.dno = E3.dno)
+    order by 2, 3;
+delete from db2test.dept where exists
+    (select dno from db2test.emp2 E2 where db2test.dept.dno = E2.dno)
+     or exists
+    (select dno from db2test.emp E3 where db2test.dept.dno = E3.dno);
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 08";
+
+-- *************************************************************************
+-- TESTUNIT         : 09
+-- DESCRIPTION      : delete on view with SQ GB Having SQ on
+--                  : modified table -- 3 levels
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 09";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52') order by 2, 3;
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 09";
+
+-- *************************************************************************
+-- TESTUNIT         : 10
+-- DESCRIPTION      : delete on iudt where SQ on
+--                  : view with join on 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 10";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+delete from db2test.secondemp;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+-- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp3 select * from db2test.emp;
+-- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp4 select * from db2test.emp;
+-- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp5 select * from db2test.emp;
+-- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp6 select * from db2test.emp;
+-- create a 7th child table like emp
+create table db2test.emp7 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp7 select * from db2test.emp;
+-- create a 8th child table like emp
+create table db2test.emp8 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp8 select * from db2test.emp;
+-- create a 9th child table like emp
+create table db2test.emp9 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp9 select * from db2test.emp;
+-- create a 10th child table like emp
+create table db2test.emp10 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp10 select * from db2test.emp;
+-- create a 11th child table like emp
+create table db2test.emp11 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp11 select * from db2test.emp;
+-- create a 12th child table like emp
+create table db2test.emp12 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp12 select * from db2test.emp;
+-- create a 13th child table like emp
+create table db2test.emp13 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp13 select * from db2test.emp;
+-- create a 14th child table like emp
+create table db2test.emp14 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp14 select * from db2test.emp;
+-- create a 15th child table like emp
+create table db2test.emp15 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp2 on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp15 select * from db2test.emp;
+create view db2test.vempjoin12 (vname1, vname2, vname3, vname4, vname5,
+   vname6, vname7, vname8, vname9, vname10, vname11, vname12,
+   vmgrname, vdno) as
+  select e.name, e2.name, e3.name, e4.name, e5.name, e6.name, e7.name,
+   e8.name, e9.name, e10.name, e11.name, e12.name,
+   e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2, db2test.emp3 e3, db2test.emp4 e4,
+  db2test.emp5 e5, db2test.emp6 e6, db2test.emp7 e7, db2test.emp8 e8,
+  db2test.emp9 e9, db2test.emp10 e10, db2test.emp11 e11,
+  db2test.emp12 e12
+  where e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e2.dno
+  and e.dno = e3.dno
+  and e.dno = e4.dno
+  and e.dno = e5.dno
+  and e.dno = e6.dno
+  and e.dno = e7.dno
+  and e.dno = e8.dno
+  and e.dno = e9.dno
+  and e.dno = e10.dno
+  and e.dno = e11.dno
+  and e.dno = e12.dno;
+commit;
+--CURRENTLY These queries hang in Cloudscape 
+--have to uncomment once they start passing
+--select * from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52') order by 2, 3;
+--delete from db2test.dept where dno in (select vdno from
+--  db2test.vempjoin12)
+--  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+select * from db2test.emp6 order by dno, name, mgrname;
+select * from db2test.emp7 order by dno, name, mgrname;
+select * from db2test.emp8 order by dno, name, mgrname;
+select * from db2test.emp9 order by dno, name, mgrname;
+select * from db2test.emp10 order by dno, name, mgrname;
+select * from db2test.emp11 order by dno, name, mgrname;
+select * from db2test.emp12 order by dno, name, mgrname;
+select * from db2test.emp13 order by dno, name, mgrname;
+select * from db2test.emp14 order by dno, name, mgrname;
+select * from db2test.emp15 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 10";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 11
+-- DESCRIPTION      : delete with many SQ levels correl'd on child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 11";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.secondemp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+delete from db2test.emp6;
+delete from db2test.emp7;
+delete from db2test.emp8;
+delete from db2test.emp9;
+delete from db2test.emp10;
+delete from db2test.emp11;
+delete from db2test.emp12;
+delete from db2test.emp13;
+delete from db2test.emp14;
+delete from db2test.emp15;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.emp;
+insert into db2test.emp4 select * from db2test.emp;
+insert into db2test.emp5 select * from db2test.emp;
+insert into db2test.emp6 select * from db2test.emp;
+insert into db2test.emp7 select * from db2test.emp;
+insert into db2test.emp8 select * from db2test.emp;
+insert into db2test.emp9 select * from db2test.emp;
+insert into db2test.emp10 select * from db2test.emp;
+insert into db2test.emp11 select * from db2test.emp;
+insert into db2test.emp12 select * from db2test.emp;
+insert into db2test.emp13 select * from db2test.emp;
+insert into db2test.emp14 select * from db2test.emp;
+insert into db2test.emp15 select * from db2test.emp;
+commit;
+select * from db2test.dept d where
+  dno in (select dno from db2test.emp e where
+ e.dno = d.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))))
+ order by 2, 3;
+delete from db2test.dept d where
+  dno in (select dno from db2test.emp e where
+ e.dno = d.dno and e.dno in (select dno from db2test.emp2 e2 where
+ e2.dno = e.dno and e2.dno in (select dno from db2test.emp3 e3 where
+ e3.dno = e2.dno and e3.dno in (select dno from db2test.emp4 e4 where
+ e4.dno = e3.dno and e4.dno in (select dno from db2test.emp5 e5 where
+ e5.dno = e4.dno and e5.dno in (select dno from db2test.emp6 e6 where
+ e6.dno = e5.dno and e6.dno in ('K55', 'K52')))))));
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+select * from db2test.emp6 order by dno, name, mgrname;
+select * from db2test.emp7 order by dno, name, mgrname;
+select * from db2test.emp8 order by dno, name, mgrname;
+select * from db2test.emp9 order by dno, name, mgrname;
+select * from db2test.emp10 order by dno, name, mgrname;
+select * from db2test.emp11 order by dno, name, mgrname;
+select * from db2test.emp12 order by dno, name, mgrname;
+select * from db2test.emp13 order by dno, name, mgrname;
+select * from db2test.emp14 order by dno, name, mgrname;
+select * from db2test.emp15 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 11";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 12
+-- DESCRIPTION      : delete on view with union of 15 child tables
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 12";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.secondemp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+delete from db2test.emp6;
+delete from db2test.emp7;
+delete from db2test.emp8;
+delete from db2test.emp9;
+delete from db2test.emp10;
+delete from db2test.emp11;
+delete from db2test.emp12;
+delete from db2test.emp13;
+delete from db2test.emp14;
+delete from db2test.emp15;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.secondemp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.emp;
+insert into db2test.emp4 select * from db2test.emp;
+insert into db2test.emp5 select * from db2test.emp;
+insert into db2test.emp6 select * from db2test.emp;
+insert into db2test.emp7 select * from db2test.emp;
+insert into db2test.emp8 select * from db2test.emp;
+insert into db2test.emp9 select * from db2test.emp;
+insert into db2test.emp10 select * from db2test.emp;
+insert into db2test.emp11 select * from db2test.emp;
+insert into db2test.emp12 select * from db2test.emp;
+insert into db2test.emp13 select * from db2test.emp;
+insert into db2test.emp14 select * from db2test.emp;
+insert into db2test.emp15 select * from db2test.emp;
+commit;
+create view db2test.vempunion15 (vname,
+   vmgrname, vdno) as
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp2 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp3 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp4 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp5 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp6 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp7 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp8 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp9 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp10 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp11 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp12 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp13 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp14 e)
+union all
+  (select e.name, e.mgrname, e.dno
+  from db2test.emp15 e);
+select * from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52') order by 2, 3;
+delete from db2test.dept where dno in
+(select vdno from db2test.vempunion15)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.secondemp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+select * from db2test.emp6 order by dno, name, mgrname;
+select * from db2test.emp7 order by dno, name, mgrname;
+select * from db2test.emp8 order by dno, name, mgrname;
+select * from db2test.emp9 order by dno, name, mgrname;
+select * from db2test.emp10 order by dno, name, mgrname;
+select * from db2test.emp11 order by dno, name, mgrname;
+select * from db2test.emp12 order by dno, name, mgrname;
+select * from db2test.emp13 order by dno, name, mgrname;
+select * from db2test.emp14 order by dno, name, mgrname;
+select * from db2test.emp15 order by dno, name, mgrname;
+-- "END OF TESTUNIT: 12";
+-- "cleanup";
+
+
+drop view db2test.vempunion15;
+drop view db2test.vempjoin12;
+drop view db2test.vempjoin;
+drop table db2test.emp15;
+drop table db2test.emp14;
+drop table db2test.emp13;
+drop table db2test.emp12;
+drop table db2test.emp11;
+drop table db2test.emp10;
+drop table db2test.emp9;
+drop table db2test.emp8;
+drop table db2test.emp7;
+drop table db2test.emp6;
+drop table db2test.emp5;
+drop table db2test.emp4;
+drop table db2test.emp3;
+drop table db2test.emp2;
+drop table db2test.secondemp;
+drop table db2test.origemp;
+drop table db2test.emp;
+drop table db2test.dept;
+drop table db2test.origdept;
+
+--drop view db2test.vempjoin;
+--drop view db2test.vempjoin12;
+--drop view db2test.vempunion15;
+-- *************************************************************************
+--     NO MORE TESTUNITS. SUMMARIZE TESTCASE RESULTS AND HOUSE KEEPING
+-- *************************************************************************
+commit;
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself313.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by set null on delete.
+-- #                  : shape of the RI tree is a 6way star.
+-- #########################################################################
+
+-- "START OF TESTCASE: cself313.sql";
+
+autocommit off;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10));
+insert into db2test.dept values (1, 'K55', 'DB');
+insert into db2test.dept values (2, 'K52', 'OFC');
+insert into db2test.dept values (3, 'K51', 'CS');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+insert into db2test.origemp select * from db2test.emp;
+-- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp2 select * from db2test.emp;
+-- create a third child table like emp
+create table db2test.emp3 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp3 select * from db2test.emp;
+-- create a 4th child table like emp
+create table db2test.emp4 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp4 select * from db2test.emp;
+-- create a 5th child table like emp
+create table db2test.emp5 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp5 select * from db2test.emp;
+-- create a 6th child table like emp
+create table db2test.emp6 (c0 int, name char(10) not null primary key,
+  mgrname char(10)
+  references db2test.emp  on delete set null,
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp6 select * from db2test.emp;
+
+-- "END OF TESTUNIT: 01";
+
+-- *************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.name = e2.mgrname));
+delete from db2test.emp where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN' and e3.name = e2.mgrname));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 02";
+
+-- *************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : delete where SQ on child table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN')) order by 2,3,4;
+delete from db2test.emp  where dno in (select dno from db2test.emp3 e3
+   where e3.dno in (select dno from db2test.emp2 e2
+   where mgrname = 'JOHN'));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 03";
+
+-- *************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))))
+   order by  1,2,3;
+delete from db2test.emp 
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname and e4.dno in
+     (select dno from db2test.emp3 e3 where e4.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname and
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = db2test.emp.mgrname and
+                  e1.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 04";
+
+-- *************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))))
+   order by 2,3,4;
+delete from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e5.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e4.dno = e3.dno and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e3.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                  where e1.name = e.mgrname and e1.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 05";
+
+
+-- *************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to iudt
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2,3,4;
+delete from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e.name = e2.mgrname group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 06";
+
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete where SQ chain reversing RI child chain
+--                  : combining where and having, correl to grandparent
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.emp3;
+delete from db2test.emp4;
+delete from db2test.emp5;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+insert into db2test.emp3 select * from db2test.origemp;
+insert into db2test.emp4 select * from db2test.origemp;
+insert into db2test.emp5 select * from db2test.origemp;
+select * from db2test.emp e
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   e.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where e.mgrname = 'JOHN'))))) order by 2,3,4;
+delete from db2test.emp
+  where dno in (select dno from db2test.emp5 e5
+   where e5.dno in (select dno from db2test.emp4 e4 where
+   db2test.emp.name = e4.mgrname group by dno having dno in
+     (select dno from db2test.emp3 e3 where e5.name = e3.mgrname and
+       e3.dno in (select dno from db2test.emp2 e2
+                  where e4.dno = e2.dno group by dno having
+                  e2.dno in (select dno from db2test.emp  e1
+                   where db2test.emp.mgrname = 'JOHN')))));
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+select * from db2test.emp3 order by dno, name, mgrname;
+select * from db2test.emp4 order by dno, name, mgrname;
+select * from db2test.emp5 order by dno, name, mgrname;
+
+-- "END OF TESTUNIT: 07";
+-- "cleanup";
+
+drop table db2test.emp6;
+drop table db2test.emp5;
+drop table db2test.emp4;
+drop table db2test.emp3;
+drop table db2test.emp2;
+drop table db2test.emp;
+drop table db2test.origemp;
+drop table db2test.dept;
+drop table db2test.origdept;
+rollback;
+
+-- "cself313.clp ENDED";
+
+-- #########################################################################
+-- # TESTCASE NAME    : cself314.sql
+-- # LINE ITEM        : Self-referencing subqueries
+-- # COMPONENT(S)     : SQN and SQR
+-- # DESCRIPTION      : Allow use of subqueries on the same table being
+-- #                  : inserted, deleted, or updated.  Cursors updated
+-- #                  : or delete where current of are now similarly
+-- #                  : unrestricted. Also allowed are subqueries
+-- #                  : on tables related to the modified table by
+-- #                  : referential relationships, either directly or
+-- #                  : indirectly.
+-- #                  : This file covers cases where of delete statements
+-- #                  : where the deleted table is connected to other
+-- #                  : tables in the query by set null on delete.
+-- #                  : shape of the RI tree is a 3-way cycle to parent
+
+-- "START OF TESTCASE: cself314.sql";
+
+autocommit off;
+
+-- *************************************************************************
+-- TESTUNIT         : 01
+-- DESCRIPTION      : Create tables db2test.emp
+--                  : insert some data into it
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 01";
+create table db2test.dept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+create table db2test.origdept (c0 int, dno char(3) not null primary key,
+   dname char(10), dmgrname char(10));
+insert into db2test.dept values (1, 'K55', 'DB', 'JOHN');
+insert into db2test.dept values (2, 'K52', 'OFC', 'ROBIN');
+insert into db2test.dept values (3, 'K51', 'CS', 'ASHOK');
+insert into db2test.origdept select * from db2test.dept;
+create table db2test.emp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3)  references db2test.dept
+  on delete set null );
+insert into db2test.emp (c0, name, dno) values (1, 'ASHOK', 'K51');
+insert into db2test.emp values (2, 'JOHN', 'ASHOK', 'K51');
+insert into db2test.emp values (3, 'ROBIN', 'ASHOK', 'K51');
+insert into db2test.emp values (4, 'JOE1', 'ASHOK', 'K51');
+insert into db2test.emp values (5, 'JOE2', 'ASHOK', 'K51');
+insert into db2test.emp values (6, 'HAMID', 'JOHN', 'K55');
+insert into db2test.emp values (7, 'TRUONG', 'HAMID', 'K55');
+insert into db2test.emp values (8, 'LARRY1', 'HAMID', 'K55');
+insert into db2test.emp values (9, 'LARRY2', 'HAMID', 'K55');
+insert into db2test.emp values (10, 'BOBBIE', 'HAMID', 'K55');
+insert into db2test.emp values (11, 'ROGER', 'ROBIN', 'K52');
+insert into db2test.emp values (12, 'JIM', 'ROGER', 'K52');
+insert into db2test.emp values (13, 'DAN', 'ROGER', 'K52');
+insert into db2test.emp values (14, 'SAM1', 'ROGER', 'K52');
+insert into db2test.emp values (15, 'SAM2', 'ROGER', 'K52');
+insert into db2test.emp values (16, 'GUY', 'JOHN', 'K55');
+insert into db2test.emp values (17, 'DON', 'GUY', 'K55');
+insert into db2test.emp values (18, 'MONICA', 'GUY', 'K55');
+insert into db2test.emp values (19, 'LILY1', 'GUY', 'K55');
+insert into db2test.emp values (20, 'LILY2', 'GUY', 'K55');
+create table db2test.origemp (c0 int, name char(10) not null primary key,
+  mgrname char(10),
+  dno char(3));
+insert into db2test.origemp select * from db2test.emp;
+-- create a second child table like emp
+create table db2test.emp2 (c0 int, name char(10) not null primary key,
+  mgrname char(10) references db2test.emp on delete set null,
+  dno char(3));
+insert into db2test.emp2 select * from db2test.emp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+-- "END OF TESTUNIT: 01";
+
+-- ************************************************************************
+-- TESTUNIT         : 02
+-- DESCRIPTION      : delete where SQ on child table on RI set null col
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 02";
+select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'))
+   order by name;
+delete from db2test.emp  where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where dmgrname = 'JOHN'));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+-- "END OF TESTUNIT: 02";
+
+-- ************************************************************************
+-- TESTUNIT         : 03
+-- DESCRIPTION      : same as 02, but with correlation to top table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 03";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+select * from db2test.emp e where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where mgrname = 'john' and e2.name = d.dmgrname));
+delete from db2test.emp  where dno in (select dno from db2test.emp2 e2
+   where e2.dno in (select dno from db2test.dept d
+   where mgrname = 'john' and e2.name = d.dmgrname));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 03";
+
+-- ************************************************************************
+-- TESTUNIT         : 04
+-- DESCRIPTION      : same as 02 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 04";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'john'));
+delete from db2test.emp  where dno in
+   (select dno from db2test.dept d
+   where  d.dno in
+     (select dno from db2test.emp2 e2
+       where e2.mgrname = 'john'));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 04";
+
+-- ************************************************************************
+-- TESTUNIT         : 05
+-- DESCRIPTION      : same as 03 but SQ's reversed
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 05";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+select * from db2test.emp e where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john'));
+delete from db2test.emp where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john'));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 05";
+
+-- ************************************************************************
+-- TESTUNIT         : 06
+-- DESCRIPTION      : same as 05 but extra table
+-- EXPECTED RESULTS : SQL commands should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 06";
+-- reset to original rows
+delete from db2test.dept;
+delete from db2test.emp;
+delete from db2test.emp2;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+select * from db2test.emp e where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = e.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john')));
+delete from db2test.emp  where dno in
+  (select dno from db2test.origdept where dno in
+   (select dno from db2test.dept d
+   where  d.dno = db2test.emp.dno and d.dno in
+     (select dno from db2test.emp2 e2 where e2.dno = d.dno and
+        e2.mgrname = 'john')));
+select * from db2test.dept order by dno, dname, dmgrname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+
+-- "END OF TESTUNIT: 06";
+
+-- *************************************************************************
+-- TESTUNIT         : 07
+-- DESCRIPTION      : delete on parent with SQ on join view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 07";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+create view db2test.vempjoin (vname1, vname2, vmgrname, vdno) as
+  select e.name, e2.name, e.mgrname, e.dno
+  from db2test.emp e, db2test.emp2 e2
+  where e.dno = e2.dno;
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempjoin) 
+  and dno in ('K55', 'K52')
+  order by dno;
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempjoin)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+-- "END OF TESTUNIT: 07";
+
+-- *************************************************************************
+-- TESTUNIT         : 08
+-- DESCRIPTION      : delete on parent with SQ on union view of children
+-- EXPECTED RESULTS : SQL command should complete successfully
+-- *************************************************************************
+-- "START OF TESTUNIT: 08";
+-- reset to original rows
+delete from db2test.emp;
+delete from db2test.emp2;
+delete from db2test.dept;
+insert into db2test.dept select * from db2test.origdept;
+insert into db2test.emp select * from db2test.origemp;
+insert into db2test.emp2 select * from db2test.origemp;
+alter table db2test.dept add constraint dmgr foreign key (dmgrname)
+  references db2test.emp2 on delete set null;
+
+commit;
+create view db2test.vempunion (vname, vmgrname, vdno) as
+  (select e.name,  e.mgrname, e.dno
+  from db2test.emp e)
+union all
+  (select e2.name, e2.mgrname, e2.dno from db2test.emp2 e2);
+-- #BEGIN;
+select * from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52');
+-- #END;
+
+delete from db2test.dept where dno in (select vdno from
+  db2test.vempunion)
+  and dno in ('K55', 'K52');
+select * from db2test.dept order by dno, dname;
+select * from db2test.emp order by dno, name, mgrname;
+select * from db2test.emp2 order by dno, name, mgrname;
+alter table db2test.dept drop constraint dmgr;
+commit;
+-- "END OF TESTUNIT: 08";
+-- "cleanup";
+drop view db2test.vempjoin ;
+drop view db2test.vempunion;
+drop table db2test.emp2;
+drop table db2test.emp;
+drop table db2test.origemp;
+drop table db2test.dept;
+drop table db2test.origdept;
+
+
+-- "cself314.clp ENDED";
+drop schema db2test restrict;
+-- END OF REFACTIONS1.sql --
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions2.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions2.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,983 @@
+--Unsupported cases for referential actions , some of these are not supported currently in db2 udb also.
+--SQL0632N
+--FOREIGN KEY "<name>" is not valid because the table cannot be defined as a dependent of 
+--table "<table-name>" because of del--ete rule restrictions (reason code = "<reason-code>").  
+--Explanation: A referential constraint cannot be defined because the object table of the CREATE TABLE or 
+--ALTER TABLE statement cannot be defined as a dependent of table "<table-name>" for one of the following reason codes: 
+--(01) The relationship is self-referencing and a self-referencing relationship already exists
+-- with the SET NULL delete rule. 
+--(02) The relationship forms a cycle of two or more tables that cause the table to be delete-connected 
+--to itself (all other delete rules in the cycle would be CASCADE). 
+--(03) The relationship causes the table to be delete-connected to the indicated table through 
+--multiple relationships and the delete rule of the existing relationship is SET NULL. 
+--The delete rules of the existing relationships cause an error, not the delete rule specified in 
+--the FOREIGN KEY clause of the CREATE TABLE or ALTER TABLE statement. 
+--sqlcode: -632 
+-- sqlstate: 42915 
+
+-- case sql0632-01
+create table t1(a int not null primary key , b int references t1(a) ON DELETE SET NULL, 
+                c int references t1(a) ON DELETE CASCADE);
+
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE SET NULL);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE CASCADE);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE RESTRICT);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE SET NULL, 
+                  z int references tself(b) ON DELETE NO ACTION);
+
+-- case sql0632 -02 (c2 fails)
+create table t1(a int not null primary key, b int not null unique);
+create table t2(x int not null primary key, y int);
+
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+drop table t1;
+drop table t2;
+
+-- constraint c4 fails
+create table t1( a int not null primary key, b int);
+create table t2(x int, y int not null unique);
+create table t3(l int, m int not null unique , k int );
+
+alter table t2 add constraint c1 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t1 add constraint c2 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t3 add constraint c3 foreign key (m)
+                              references t2(y) on delete cascade;
+alter table t3 add constraint c4 foreign key (k)
+                              references t2(y) on delete set null;
+alter table t2 drop constraint c1;
+alter table t1 drop constraint c2;
+alter table t3 drop constraint c3;
+drop table t1;
+drop table t2;
+drop table t3;
+
+create table t1( a int not null primary key, b int);
+create table t2(x int, y int not null unique, z int);
+create table t3(l int, m int not null unique , k int );
+
+create table t4(c1 int not null unique , c2 int);
+create table t5(c1 int not null unique , c2 int);
+create table t6(c1 int not null unique , c2 int);
+
+
+--delete connected cycle
+--different path from t2
+alter table t2 add constraint c3 foreign key (z)
+                              references t4(c1) on delete cascade;
+alter table t4 add constraint c4 foreign key (c2)
+                              references t5(c1) on delete cascade;
+alter table t5 add constraint c5 foreign key (c2)
+                              references t6(c1) on delete cascade;
+
+--cycle forming alter -- c6 should fail
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c6 foreign key (k)
+                              references t2(y) on delete SET NULL;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t2 drop constraint c3;
+alter table t4 drop constraint c4;
+alter table t5 drop constraint c5;
+
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+drop table t5;
+drop table t6;
+
+-- case sql0632 - 3 (c2 fails) 
+create table t1( a int not null primary key);
+create table t2(x int, y int not null unique);
+create table t3(l int, m int );
+
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+drop table t1;
+drop table t2;
+drop table t3;
+
+
+
+--SQL0633N The delete rule of FOREIGN KEY "<name>" must be "<delete-rule>" (reason code = "<reason-code>").  
+--Explanation: The delete rule specified in a FOREIGN KEY clause of the CREATE TABLE or ALTER TABLE 
+--statement is not valid. The indicated delete rule is required for one of the following reason codes: 
+--(01) The referential constraint is self-referencing and an existing self-referencing constraint has the
+-- indicated delete rule (NO ACTION, RESTRICT or CASCADE). 
+--(02) The referential constraint is self-referencing and the table is dependent in a relationship with
+-- a delete rule of CASCADE. 
+--(03) The relationship would cause the table to be delete-connected to the same table through multiple 
+--relationships and such relationships must have the same delete rule (NO ACTION, RESTRICT or CASCADE). 
+
+-- case sql0633-01 (t1 creation should fail)
+create table t1(a int not null primary key , b int references t1(a) ON DELETE CASCADE, 
+                c int references t1(a) ON DELETE SET NULL);
+
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE CASCADE);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE NO ACTION);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE SET NULL);
+
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE CASCADE);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE RESTRICT);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE SET NULL);
+
+
+
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE SET NULL);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE NO ACTION);
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE RESTRICT);
+
+--FOLLOWING CASES SHOULD PASS
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE NO ACTION, 
+                  z int references tself(b) ON DELETE NO ACTION);
+drop table tself;
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE CASCADE, 
+                  z int references tself(b) ON DELETE CASCADE);
+drop table tself;
+create table tself( a int not null primary key, b int not null  unique,
+                  x int references tself(a) ON DELETE RESTRICT, 
+                  z int references tself(b) ON DELETE RESTRICT);
+drop table tself;
+-- END PASS CASES
+
+
+
+
+-- case sql0633-02 (t2 fails)
+create table t1(a int not null primary key) ;
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+
+--START  PASS CASES
+--These cases is to make sure we don;t throw errors for the valid cases.
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+
+drop table t2 ;
+
+create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+drop table t2;
+
+create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE NO ACTION, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+drop table t2;
+
+create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE SET NULL);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE RESTRICT);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE NO ACTION);
+drop table t2;
+create table t2(x int references t1(a) ON DELETE SET NULL, 
+                y int not null unique, z int references t2(y) ON DELETE CASCADE);
+drop table t2;
+drop table t1;
+--END PASS CASES
+
+-- case sql0633-03 (c3 fails)
+create table t1( a int not null primary key);
+create table t2(x int, y int not null unique);
+create table t3(l int, m int );
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+drop table t1;
+drop table t2;
+drop table t3;
+
+-- table t3 creation should fail.
+create table t1( a int not null primary key);
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                                       y int not null constraint c1 unique);
+create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+alter table t2 drop constraint c1;
+drop table t1;
+drop table t2;
+
+ 
+-- SQL0634N The delete rule of FOREIGN KEY "<name>" must not be CASCADE (reason-code = "<reason-code>").  
+-- Explanation: The CASCADE delete rule specified in the FOREIGN KEY clause of the CREATE TABLE 
+-- or ALTER TABLE statement is not valid for one of the following reason codes: 
+-- (01) A self-referencing constraint exists with a delete rule of SET NULL, NO ACTION or RESTRICT. 
+-- (02) The relationship would form a cycle that would cause a table to be delete-connected to itself. 
+-- One of the existing delete rules in the cycle is not CASCADE, so this relationship may be definable 
+-- if the delete rule is not CASCADE. 
+-- (03) The relationship would cause another table to be delete-connected to the same table through
+--  multiple paths with different delete rules or with delete rule equal to SET NULL. 
+
+-- case sql0634 - 01
+create table t1( a int not null primary key, b int , c int );
+create table t2(x int, y int not null unique);
+alter table t1 add constraint c1 foreign key (b) 
+                             references t1(a) on delete set null;
+alter table t1 add constraint c2 foreign key (c) 
+                              references t2(y) on delete cascade;
+drop table t1;
+drop table t2;
+
+-- t2 should fail
+create table t1(a int not null primary key) ;
+create table t2(x int not null unique, y int references t2(x) ON DELETE SET NULL, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+
+--START  SHOULD PASS CASES
+create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE SET NULL);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE NO ACTION);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE RESTRICT);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE CASCADE, 
+       		                       z int references t1(a) ON DELETE CASCADE);
+
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE SET NULL);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE NO ACTION);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE RESTRICT, 
+       		                       z int references t1(a) ON DELETE RESTRICT);
+drop table t2;
+
+create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE SET NULL);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE RESTRICT);
+drop table t2;
+create table t2(x int not null unique, y int references t2(x) ON DELETE NO ACTION, 
+       		                       z int references t1(a) ON DELETE NO ACTION);
+drop table t2;
+--END PASS CASES
+drop table t1;
+
+
+-- case sql0634 - 02 (c1 fails)
+create table t1(a int not null primary key, b int not null unique);
+create table t2(x int not null primary key, y int);
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+alter table t2 drop constraint c2;
+drop table t1;
+drop table t2;
+
+-- case sql0634 - 03 
+create table t1( a int not null primary key, b int);
+create table t2(x int, y int not null unique, z int);
+create table t3(l int, m int not null unique , k int );
+create table t4(c1 int not null unique , c2 int);
+
+
+-- error scenario 1: adding constraint c4 will make t2 get two paths from t1 with SET NULLS
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete set null;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- error scenario 2: adding constraint c4 will make t2 get two paths from t1 with a SET NULL and
+--- a CASCADE.
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- error scenario 3: adding constraint c4 will make t2 get two paths from t1 with a NO ACTION 
+--- and a CASCADE.
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete NO ACTION;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- error scenario 4: adding constraint c4 will make t2 get two paths from t1 with a CASCADE
+--- and a RESTRICT.
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete RESTRICT;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete cascade;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+--FOLLOWING SHOULD PASS
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete set null;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete set null;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete set null;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete set null;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete CASCADE;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete set null;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete CASCADE;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete CASCADE;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete SET NULL;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete SET NULL;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete SET NULL;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete RESTRICT;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete SET NULL;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete SET NULL;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete CASCADE;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete RESTRICT;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+alter table t2 add constraint c1 foreign key (x)
+                              references t1(a) on delete SET NULL;
+alter table t2 add constraint c2 foreign key (z)
+                              references t4(c1) on delete CASCADE;
+alter table t3 add constraint c3 foreign key (l)
+                              references t1(a) on delete CASCADE;
+alter table t4 add constraint c4 foreign key (c1)
+                              references t3(m) on delete RESTRICT;
+
+alter table t2 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+alter table t4 drop constraint c4;
+
+
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+
+
+
+
+
+
+
+
+--- END OF ACTUAL ERROR CASES
+
+--- MISC CASES 
+--Following should give error because of delete-rule restrictions
+create table t1( a int not null primary key);
+create table t2(x int references t1(a) ON DELETE CASCADE, 
+                                       y int not null unique);
+create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+
+drop table t3 ;
+drop table t2 ;
+drop table t1;
+
+--DB21034E  The command was processed as an SQL statement because it was not a
+--valid Command Line Processor command.  During SQL processing it returned:
+--SQL0633N  The delete rule of FOREIGN KEY "M..." must be "CASCADE" (reason code
+--= "3").  SQLSTATE=42915
+
+
+create table t1( a int not null primary key);
+create table t2(x int references t1(a) ON DELETE SET NULL, 
+                                       y int not null unique);
+create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+
+drop table t3 ;
+drop table t2 ;
+drop table t1 ;
+
+--Following should pass.
+create table t1( a int not null primary key);
+create table t4(s int not null unique);
+create table t2(x int references t4(s) ON DELETE CASCADE, y int not null unique);
+create table t3(l int references t1(a) ON DELETE CASCADE , 
+                         m int references t2(y) ON DELETE SET NULL);
+
+
+drop table t3;
+drop table t2;
+drop table t4;
+drop table t1;
+
+
+--Following should give error because of delete-rule restrictions
+create table t1( a int not null primary key);
+create table t2(x int, y int not null unique);
+create table t3(l int, m int );
+
+-- all should pass
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+
+-- c3 fails: sql0633N - 3
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- c3 fails; sql0632N - 3 
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete CASCADE;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+
+-- passes
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- succeds
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- succeds
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete cascade;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+-- passes 
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete set null;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+
+-- c3 fails - sql0632 - 3
+alter table t2 add constraint c1 foreign key (x) 
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c2 foreign key (l) 
+                              references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (m) 
+                              references t2(y) on delete set null;
+
+alter table t2 drop constraint c1;
+alter table t3 drop constraint c2;
+alter table t3 drop constraint c3;
+
+drop table t1;
+drop table t2;
+drop table t3;
+
+--cyclic case with two tables.
+create table t1(a int not null primary key, b int not null unique);
+create table t2(x int not null primary key, y int);
+
+--passes
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete cascade;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+
+
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete NO ACTION;
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete cascade;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+
+--c2 fails - sql0632N - reason code 2
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+
+--c1 fails - sql0634N - reason code 2
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete cascade;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+
+-- c1 fails : column b can not contain null values
+alter table t1 add constraint c1 foreign key (b)
+                             references t2(x) on delete NO ACTION;
+alter table t2 add constraint c2 foreign key (y)
+                              references t1(b) on delete set null;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+
+
+drop table t2;
+drop table t1;
+
+-- should pass
+create table t1(a int not null unique, b int not null unique);
+create table t3(l int unique not null  , y int);
+create table t2(x int references t1(a) ON DELETE CASCADE ,
+                y int references t3(l) ON DELETE RESTRICT);
+
+drop table t2;
+drop table t3;
+drop table t1;
+
+
+--creating t2 should fail
+create table t1(a int not null unique, b int not null unique);
+create table t3(l int unique not null  ,
+               y int references t1(b) ON DELETE CASCADE);
+create table t2(x int references t1(a) ON DELETE CASCADE ,
+                y int references t3(l) ON DELETE RESTRICT);
+
+drop table t2;
+drop table t3;
+drop table t1;
+
+
+
+-- cyclic references
+-- t1 refs  t3 refs t2 refs t1
+create table t1( a int not null primary key, b int);
+create table t2(x int, y int not null unique);
+create table t3(l int, m int not null unique , k int );
+
+insert into t1  values (1  , 1) ;
+insert into t2 values ( 1 , 1) ;
+insert into t3 values (1 , 1, 1) ;
+
+--delete connected cycle 
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (m)
+                              references t2(y) on delete cascade;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+--c3 should fail SQL0632N - 2
+--delete connected cycle all refactions inside the cycle should be same
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete set null;
+
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+--c3 should fail SQL0634N - 2 -- PROBLEMATIC CASE
+-- DELETE CONNECTED CYCLE
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete cascade;
+
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+--c3 should fail - SQL0634N - 2
+--DELETE CONNECTED CYCLE
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete set null;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete cascade;
+
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+
+-- passes
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete set null;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete cascade;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+--passes
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete set null;
+alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete set null;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+--passes
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete set null;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c3 foreign key (k)
+                              references t2(y) on delete set null;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c3;
+
+drop table t1 ;
+drop table t2 ;
+drop table t3 ;
+
+
+-- self referencing errors
+create table tself(a int not null primary key , 
+               b int references tself(a) ON DELETE SET NULL,  
+               c int references tself(a) ON DELETE SET NULL);
+
+create table tself(a int not null primary key , 
+               b int references tself(a) ON DELETE CASCADE,  
+               c int references tself(a) ON DELETE SET NULL);
+
+create table tself(a int not null primary key , 
+               b int references tself(a) ON DELETE SET NULL,  
+               c int references tself(a) ON DELETE CASCADE);
+
+create table tself(a int not null primary key , 
+               b int references tself(a) ,  
+               c int references tself(a) ON DELETE CASCADE);
+
+create table tparent( a int not null  primary key);
+--THIS ONE SHOULD PASS , but currently we are throwing ERRROR
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE SET NULL ,  
+               c int references tself(a) ON DELETE CASCADE);
+drop table tself;
+--should pass
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE CASCADE ,  
+               c int references tself(a) ON DELETE CASCADE);
+drop table tself;
+--should throw error
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE CASCADE ,  
+               c int references tself(a) ON DELETE SET NULL);
+drop table tself;
+--should pass
+create table tself(a int not null primary key , 
+               b int references tparent(a) ON DELETE SET NULL,  
+               c int references tself(a) ON DELETE SET NULL);
+
+drop table tself;
+drop table tparent;
+
+
+--two consectuvie set null  CYCLE
+
+create table t1( a int not null primary key, b int);
+create table t2(x int, y int not null unique);
+create table t3(l int, m int not null unique , k int );
+create table t4(s int, t int not null unique , y int );
+
+--all should pass
+--two consectuvie set null  CYCLE , but not a delete connected cylcle
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete SET NULL;
+alter table t4 add constraint c3 foreign key (s)
+                              references t2(y) on delete SET NULL;
+alter table t3 add constraint c4 foreign key (k)
+                              references t4(t) on delete cascade;
+
+alter table t1 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t4 drop constraint c3;
+alter table t3 drop constraint c4;
+
+--two continuos set nulls , but not a cycle
+alter table t3 add constraint c1 foreign key (l)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete SET NULL;
+alter table t4 add constraint c3 foreign key (s)
+                              references t2(y) on delete SET NULL;
+alter table t4 add constraint c4 foreign key (y)
+                              references t3(m) on delete cascade;
+
+alter table t3 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t4 drop constraint c3;
+alter table t4 drop constraint c4;
+
+--c4 fails error case NULL followed by a cascade in the path
+alter table t3 add constraint c1 foreign key (l)
+                              references t1(a) on delete CASCADE;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete CASCADE;
+alter table t4 add constraint c3 foreign key (s)
+                              references t2(y) on delete SET NULL;
+alter table t4 add constraint c4 foreign key (y)
+                              references t3(m) on delete cascade;
+
+alter table t3 drop constraint c1;
+alter table t2 drop constraint c2;
+alter table t4 drop constraint c3;
+
+drop table t4 ;
+drop table t3 ;
+drop table t2 ;
+drop table t1 ;
+
+-- t2 should fail for these 4 cases below
+create table t1( a int not null primary key, b int not null  unique);
+create table t2(x int references t1(a) ON DELETE RESTRICT, 
+                y int not null unique, z int references t1(b) ON DELETE CASCADE);
+
+drop table t1;
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int references t1(b) ON DELETE CASCADE);
+
+drop table t1;
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int references t1(b) ON DELETE SET NULL);
+
+drop table t1;
+create table  t1(a int not null unique , b int not null unique);
+create table  t2(x int references t1(a) ON DELETE SET NULL ,
+y int references t1(b));
+
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions3.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions3.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1768 @@
+-- webSphere Portal Server Development test cases 
+
+CREATE TABLE ID_TABLE (
+    TABLE_NAME VARCHAR(128) NOT NULL,
+    LAST_ID INTEGER NOT NULL,
+    CONSTRAINT PK10 PRIMARY KEY (TABLE_NAME)
+);
+
+
+CREATE TABLE APP_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    RESOURCE_ROOT VARCHAR(255),
+    CONTEXT_ROOT VARCHAR(255),
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_REMOVABLE CHAR(1) DEFAULT 'Y' NOT NULL,
+    SYSTEM_ACCESS CHAR(1) NOT NULL,
+    GUID VARCHAR(255),
+    MAJOR_VERSION INTEGER,
+    MINOR_VERSION INTEGER,
+    PARENT_OID INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK20 PRIMARY KEY ( OID ),
+    CONSTRAINT FK20 FOREIGN KEY ( PARENT_OID ) REFERENCES APP_DESC ( OID ) ON DELETE CASCADE
+);
+
+CREATE INDEX IX20A ON APP_DESC ( OID, NAME );
+CREATE INDEX IX20B ON APP_DESC ( GUID );
+CREATE INDEX IX20C ON APP_DESC ( PARENT_OID );
+
+CREATE TABLE APP_DESC_DD (
+    APP_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_LARGE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_STRING CHAR(1) DEFAULT 'Y' NOT NULL,
+    VALUE VARCHAR(255) FOR BIT DATA,
+    LARGE_VALUE LONG VARCHAR FOR BIT DATA,
+
+    CONSTRAINT PK30 PRIMARY KEY ( APP_DESC_OID , NAME ),
+    CONSTRAINT FK30 FOREIGN KEY ( APP_DESC_OID ) REFERENCES APP_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE PORT_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    SERVLET_MAPPING VARCHAR(255),
+    IS_ACTIVE CHAR(1) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    WINDOW_STATES INTEGER NOT NULL,
+    LISTENERS INTEGER NOT NULL,
+    SM_ICON_URL VARCHAR(255),
+    LG_ICON_URL VARCHAR(255),
+    EXPIRES INTEGER NOT NULL,
+    IS_SHARED CHAR(1) NOT NULL,
+    APP_DESC_OID INTEGER NOT NULL,
+    DEFAULT_LOCALE VARCHAR(64),
+    IS_REMOTE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_PUBLISHED CHAR(1) DEFAULT 'N' NOT NULL,
+    REFERENCE_ID VARCHAR(64),
+    MAJOR_VERSION INTEGER,
+    MINOR_VERSION INTEGER,
+    PARENT_OID INTEGER,
+
+    CONSTRAINT PK40 PRIMARY KEY (OID),
+    CONSTRAINT FK40A FOREIGN KEY ( APP_DESC_OID ) REFERENCES APP_DESC (OID) ON DELETE CASCADE,
+    CONSTRAINT FK40B FOREIGN KEY ( PARENT_OID ) REFERENCES PORT_DESC (OID) ON DELETE CASCADE
+);
+
+CREATE INDEX IX40A ON PORT_DESC ( OID, NAME );
+CREATE INDEX IX40D ON PORT_DESC ( REFERENCE_ID, APP_DESC_OID );
+CREATE INDEX IX40E ON PORT_DESC ( APP_DESC_OID );
+
+CREATE TABLE PORT_DESC_LOD (
+    PORT_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    TITLE_SHORT VARCHAR(128),
+    DESCRIPTION VARCHAR(1024),
+    KEYWORDS VARCHAR(1024),
+
+    CONSTRAINT PK50 PRIMARY KEY ( PORT_DESC_OID, LOCALE ),
+    CONSTRAINT FK50 FOREIGN KEY (PORT_DESC_OID) REFERENCES PORT_DESC (OID) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT_DESC_MAD (
+    PORT_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    MODES INTEGER NOT NULL,
+
+    CONSTRAINT PK60 PRIMARY KEY ( PORT_DESC_OID, MARKUP ),
+    CONSTRAINT FK60 FOREIGN KEY (PORT_DESC_OID) REFERENCES PORT_DESC (OID) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT_DESC_DD (
+    PORT_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_LARGE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_STRING CHAR(1) DEFAULT 'Y' NOT NULL,
+    VALUE VARCHAR(255) FOR BIT DATA,
+    LARGE_VALUE LONG VARCHAR FOR BIT DATA,
+
+    CONSTRAINT PK70 PRIMARY KEY ( PORT_DESC_OID , NAME ),
+    CONSTRAINT FK70 FOREIGN KEY ( PORT_DESC_OID ) REFERENCES PORT_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE COMP_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+    CLASS_NAME VARCHAR(128) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_HIDDEN CHAR(1) NOT NULL,
+    SM_ICON_URL VARCHAR(255),
+    LG_ICON_URL VARCHAR(255),
+
+    CONSTRAINT PK100 PRIMARY KEY (OID)
+);
+
+CREATE TABLE COMP_DESC_LOD (
+    COMP_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+
+    CONSTRAINT PK110 PRIMARY KEY ( COMP_DESC_OID , LOCALE ),
+    CONSTRAINT FK110 FOREIGN KEY ( COMP_DESC_OID ) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_DESC_MAD (
+    COMP_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    MODES INTEGER NOT NULL,
+
+    CONSTRAINT PK120 PRIMARY KEY ( COMP_DESC_OID , MARKUP ),
+    CONSTRAINT FK120 FOREIGN KEY ( COMP_DESC_OID ) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_DESC_DD (
+    COMP_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK130 PRIMARY KEY ( COMP_DESC_OID , NAME ),
+    CONSTRAINT FK130 FOREIGN KEY ( COMP_DESC_OID ) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE SKIN_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    RESOURCE_ROOT VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_DEFAULT CHAR(1) DEFAULT 'N' NOT NULL,
+    DEFAULT_LOCALE VARCHAR(64),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK140 PRIMARY KEY (OID)
+);
+
+CREATE INDEX IX140 ON SKIN_DESC ( OID, NAME );
+
+CREATE TABLE SKIN_DESC_LOD (
+    SKIN_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(1024),
+
+    CONSTRAINT PK150 PRIMARY KEY ( SKIN_DESC_OID, LOCALE ),
+    CONSTRAINT FK150 FOREIGN KEY (SKIN_DESC_OID) REFERENCES SKIN_DESC (OID) ON DELETE CASCADE
+);
+
+CREATE TABLE SKIN_DESC_MAD (
+    SKIN_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+
+    CONSTRAINT PK160 PRIMARY KEY ( SKIN_DESC_OID, MARKUP ),
+    CONSTRAINT FK160 FOREIGN KEY (SKIN_DESC_OID) REFERENCES SKIN_DESC (OID) ON DELETE CASCADE
+);
+
+
+CREATE TABLE THEME_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    RESOURCE_ROOT VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_DEFAULT CHAR(1) DEFAULT 'N' NOT NULL,
+    DEFAULT_LOCALE VARCHAR(64),
+    DEFAULT_SKIN INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK170 PRIMARY KEY (OID),
+    CONSTRAINT FK170 FOREIGN KEY (DEFAULT_SKIN) REFERENCES SKIN_DESC (OID) ON DELETE SET NULL
+);
+
+CREATE INDEX IX170 ON THEME_DESC ( OID, NAME );
+
+CREATE TABLE THEME_DESC_LOD (
+    THEME_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(1024),
+
+    CONSTRAINT PK180 PRIMARY KEY ( THEME_DESC_OID, LOCALE ),
+    CONSTRAINT FK180 FOREIGN KEY (THEME_DESC_OID) REFERENCES THEME_DESC (OID) ON DELETE CASCADE
+);
+
+CREATE TABLE THEME_DESC_MAD (
+    THEME_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+
+    CONSTRAINT PK190 PRIMARY KEY ( THEME_DESC_OID, MARKUP ),
+    CONSTRAINT FK190 FOREIGN KEY (THEME_DESC_OID) REFERENCES THEME_DESC (OID) ON DELETE CASCADE
+);
+
+
+CREATE TABLE PAGE_INST (
+    OID INTEGER NOT NULL,
+    OWNERID VARCHAR(255) NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    IS_SYSTEM CHAR(1) DEFAULT 'N' NOT NULL,
+    ALL_PORT_ALLOWED CHAR(1) DEFAULT 'N' NOT NULL,
+    PARENT_OID INTEGER,
+    SKIN_DESC_OID INTEGER,
+    THEME_DESC_OID INTEGER,
+    CREATE_TYPE CHAR(1) DEFAULT 'E' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK280 PRIMARY KEY (OID),
+    CONSTRAINT FK280B FOREIGN KEY ( PARENT_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK280C FOREIGN KEY ( SKIN_DESC_OID) REFERENCES SKIN_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT FK280D FOREIGN KEY ( THEME_DESC_OID) REFERENCES THEME_DESC ( OID ) ON DELETE SET NULL
+);
+
+CREATE INDEX IX280A ON PAGE_INST ( OID, NAME );
+
+CREATE TABLE PAGE_INST_LOD (
+    PAGE_INST_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(1024),
+
+    CONSTRAINT PK281 PRIMARY KEY ( PAGE_INST_OID , LOCALE ),
+    CONSTRAINT FK281 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE PAGE_INST_MAD (
+    PAGE_INST_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+
+    CONSTRAINT PK260 PRIMARY KEY ( PAGE_INST_OID , MARKUP ),
+    CONSTRAINT FK260 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE PAGE_INST_DD (
+    PAGE_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK282 PRIMARY KEY ( PAGE_INST_OID , NAME ),
+    CONSTRAINT FK282 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE PAGE_INST_ALIAS (
+    PAGE_INST_OID INTEGER NOT NULL,
+    ALIAS VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK283 PRIMARY KEY ( PAGE_INST_OID , ALIAS ),
+    CONSTRAINT FK283 FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT UN283 UNIQUE ( ALIAS )
+);
+
+
+
+CREATE TABLE APP_INST (
+    OID INTEGER NOT NULL,
+    APP_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK290 PRIMARY KEY (OID),
+    CONSTRAINT FK290 FOREIGN KEY ( APP_DESC_OID) REFERENCES APP_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE PORT_INST (
+    OID INTEGER NOT NULL,
+    PORT_DESC_OID INTEGER NOT NULL,
+    APP_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK300 PRIMARY KEY (OID),
+    CONSTRAINT FK300A FOREIGN KEY ( PORT_DESC_OID) REFERENCES PORT_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK300B FOREIGN KEY ( APP_INST_OID) REFERENCES APP_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT_INST_DD (
+    PORT_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_LARGE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_STRING CHAR(1) DEFAULT 'Y' NOT NULL,
+    VALUE VARCHAR(255) FOR BIT DATA,
+    LARGE_VALUE LONG VARCHAR FOR BIT DATA,
+
+    CONSTRAINT PK310 PRIMARY KEY ( PORT_INST_OID , NAME ),
+    CONSTRAINT FK310 FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_INST (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255),
+    COMP_DESC_OID INTEGER NOT NULL,
+    PORT_INST_OID INTEGER,
+    PAGE_INST_OID INTEGER NOT NULL,
+    COMPOS_REF INTEGER,
+    PARENT_OID INTEGER,
+    ORIENTATION CHAR(1),
+    EXPAND_STATE CHAR(1),
+    URL VARCHAR(255),
+    ALL_MARK_ALLOWED CHAR(1) DEFAULT 'Y' NOT NULL,
+    ORDINAL INTEGER,
+    MAX_SIZE INTEGER,
+    SHADOW_OID INTEGER,
+    IS_EDITABLE CHAR(1),
+    IS_DELETABLE CHAR(1),
+    IS_MODIFIABLE CHAR(1),
+    IS_NESTABLE CHAR(1),
+    IS_MOVABLE CHAR(1),
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    WIDTH VARCHAR(32),
+    ICON_URL VARCHAR(255),
+    THEME_DESC_OID INTEGER,
+    SKIN_DESC_OID INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK320 PRIMARY KEY (OID),
+    CONSTRAINT FK320A FOREIGN KEY ( COMP_DESC_OID) REFERENCES COMP_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320B FOREIGN KEY ( PAGE_INST_OID) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320C FOREIGN KEY ( PORT_INST_OID) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320D FOREIGN KEY ( PARENT_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320E FOREIGN KEY ( SHADOW_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK320F FOREIGN KEY ( THEME_DESC_OID) REFERENCES THEME_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT FK320G FOREIGN KEY ( SKIN_DESC_OID) REFERENCES SKIN_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT FK320H FOREIGN KEY ( COMPOS_REF ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE INDEX IX320A ON COMP_INST ( PAGE_INST_OID );
+CREATE INDEX IX320B ON COMP_INST ( PORT_INST_OID );
+
+CREATE TABLE COMP_INST_LOD (
+    COMP_INST_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    TITLE_SHORT VARCHAR(128),
+    DESCRIPTION VARCHAR(1024),
+    KEYWORDS VARCHAR(1024),
+
+    CONSTRAINT PK331 PRIMARY KEY ( COMP_INST_OID , LOCALE ),
+    CONSTRAINT FK331 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_INST_DD (
+    COMP_INST_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK330 PRIMARY KEY ( COMP_INST_OID , NAME ),
+    CONSTRAINT FK330 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_INST_MAD (
+    COMP_INST_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    URL VARCHAR(255),
+
+    CONSTRAINT PK333 PRIMARY KEY ( COMP_INST_OID , MARKUP ),
+    CONSTRAINT FK333 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_INST_ALIAS (
+    COMP_INST_OID INTEGER NOT NULL,
+    ALIAS VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK332 PRIMARY KEY ( COMP_INST_OID , ALIAS ),
+    CONSTRAINT FK332 FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT UN332 UNIQUE ( ALIAS )
+);
+
+
+
+CREATE TABLE USER_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    TYPE INTEGER NOT NULL,
+    LAST_LOGIN BIGINT,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK340 PRIMARY KEY ( OID ),
+    CONSTRAINT UN340 UNIQUE ( NAME, TYPE )
+);
+
+CREATE INDEX IX340 ON USER_DESC ( OID, NAME );
+
+CREATE TABLE USER_DESC_DD (
+    USER_DESC_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK350 PRIMARY KEY ( USER_DESC_OID, NAME ),
+    CONSTRAINT FK350 FOREIGN KEY ( USER_DESC_OID ) REFERENCES USER_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE USER_SESSION (
+    OID INTEGER NOT NULL,
+    USER_DESC_OID INTEGER NOT NULL,
+    MARKUP VARCHAR(128) NOT NULL,
+    USER_LOGGED_OUT CHAR(1) DEFAULT 'Y' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK360 PRIMARY KEY ( OID ),
+    CONSTRAINT UN360 UNIQUE ( USER_DESC_OID, MARKUP ),
+    CONSTRAINT FK360 FOREIGN KEY ( USER_DESC_OID ) REFERENCES USER_DESC ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE SELECTION_STATE (
+    USER_SESSION_OID INTEGER NOT NULL,
+    ROOT_OID INTEGER NOT NULL,
+    SELECTION_OID INTEGER NOT NULL,
+
+    CONSTRAINT PK370 PRIMARY KEY ( USER_SESSION_OID , ROOT_OID ),
+    CONSTRAINT FK370A FOREIGN KEY ( USER_SESSION_OID ) REFERENCES USER_SESSION ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK370B FOREIGN KEY ( ROOT_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK370C FOREIGN KEY ( SELECTION_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE PORT_INST_STATE (
+    USER_SESSION_OID INTEGER NOT NULL,
+    PORT_INST_OID INTEGER NOT NULL,
+    MODES INTEGER NOT NULL,
+
+    CONSTRAINT PK380 PRIMARY KEY ( USER_SESSION_OID , PORT_INST_OID ),
+    CONSTRAINT FK380A FOREIGN KEY ( USER_SESSION_OID ) REFERENCES USER_SESSION ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK380B FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE COMP_INST_STATE (
+    USER_SESSION_OID INTEGER NOT NULL,
+    COMP_INST_OID INTEGER NOT NULL,
+    STATE INTEGER NOT NULL,
+
+    CONSTRAINT PK390 PRIMARY KEY ( USER_SESSION_OID , COMP_INST_OID ),
+    CONSTRAINT FK390A FOREIGN KEY ( USER_SESSION_OID ) REFERENCES USER_SESSION ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK390B FOREIGN KEY ( COMP_INST_OID ) REFERENCES COMP_INST ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE CRED_SEGMENT (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    DESCRIPTION VARCHAR(255),
+    USER_MAPPED CHAR(1) NOT NULL,
+    ADAPTER_TYPE VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK400 PRIMARY KEY ( OID ),
+    CONSTRAINT UN400 UNIQUE ( NAME )
+);
+
+CREATE INDEX IX400 ON CRED_SEGMENT ( OID, NAME );
+
+
+CREATE TABLE CRED_SLOT (
+    OID INTEGER NOT NULL,
+    SLOT_KEY VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) NOT NULL,
+    IS_SYSTEM CHAR(1) NOT NULL,
+    SECRET_TYPE INTEGER NOT NULL,
+    RESOURCE_NAME VARCHAR(255),
+    SEGMENT_OID INTEGER NOT NULL,
+    USER_DESC_OID INTEGER,
+    PORT_INST_OID INTEGER,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK410 PRIMARY KEY ( OID ),
+    CONSTRAINT UN410 UNIQUE ( SLOT_KEY ),
+    CONSTRAINT FK410A FOREIGN KEY ( SEGMENT_OID ) REFERENCES CRED_SEGMENT ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK410B FOREIGN KEY ( USER_DESC_OID ) REFERENCES USER_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK410C FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE INDEX IX410A ON CRED_SLOT ( USER_DESC_OID, PORT_INST_OID );
+CREATE INDEX IX410B ON CRED_SLOT ( RESOURCE_NAME );
+CREATE INDEX IX410C ON CRED_SLOT ( SEGMENT_OID );
+
+CREATE TABLE CRED_SLOT_LOD (
+    CRED_SLOT_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    DESCRIPTION VARCHAR(255),
+    KEYWORDS VARCHAR(1024),
+
+    CONSTRAINT PK420 PRIMARY KEY ( CRED_SLOT_OID , LOCALE ),
+    CONSTRAINT FK420 FOREIGN KEY ( CRED_SLOT_OID ) REFERENCES CRED_SLOT ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE LNK_PAGE_PORT (
+    PAGE_INST_OID INTEGER NOT NULL,
+    PORT_DESC_OID INTEGER NOT NULL,
+
+    CONSTRAINT PK430 PRIMARY KEY ( PAGE_INST_OID, PORT_DESC_OID ),
+    CONSTRAINT FK430A FOREIGN KEY ( PAGE_INST_OID ) REFERENCES PAGE_INST ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK430B FOREIGN KEY ( PORT_DESC_OID ) REFERENCES PORT_DESC ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE LNK_THEME_SKIN (
+    THEME_DESC_OID INTEGER NOT NULL,
+    SKIN_DESC_OID INTEGER NOT NULL,
+
+    CONSTRAINT PK450 PRIMARY KEY ( THEME_DESC_OID, SKIN_DESC_OID ),
+    CONSTRAINT FK450A FOREIGN KEY ( THEME_DESC_OID ) REFERENCES THEME_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK450B FOREIGN KEY ( SKIN_DESC_OID ) REFERENCES SKIN_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE MARKUP_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    MIMETYPE VARCHAR(255) NOT NULL,
+    DEFAULT_CHARSET VARCHAR(64) DEFAULT 'UTF-8' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK470 PRIMARY KEY ( OID ),
+    CONSTRAINT UN470 UNIQUE ( NAME )
+);
+
+CREATE TABLE MARKUP_DESC_LOD (
+    MARKUP_DESC_OID INTEGER NOT NULL,
+    LOCALE VARCHAR(64) NOT NULL,
+    TITLE VARCHAR(255),
+    CHARSET VARCHAR(64),
+
+    CONSTRAINT PK480 PRIMARY KEY ( MARKUP_DESC_OID , LOCALE ),
+    CONSTRAINT FK480 FOREIGN KEY ( MARKUP_DESC_OID ) REFERENCES MARKUP_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE CLIENT_DESC (
+    OID INTEGER NOT NULL,
+    ORDINAL INTEGER NOT NULL,
+    MANUFACTURER VARCHAR(64),
+    MODEL VARCHAR(255),
+    VERSION VARCHAR(16),
+    USERAGENT_PATTERN VARCHAR(255) NOT NULL,
+    MARKUP_NAME VARCHAR(255) NOT NULL,
+    MARKUP_VERSION VARCHAR(16),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK490 PRIMARY KEY (OID)
+);
+
+CREATE INDEX IX490 ON CLIENT_DESC ( ORDINAL );
+
+CREATE TABLE CLIENT_DESC_CAPS (
+    CLIENT_DESC_OID INTEGER NOT NULL,
+    CAPABILITY VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK500 PRIMARY KEY ( CLIENT_DESC_OID , CAPABILITY ),
+    CONSTRAINT FK500 FOREIGN KEY ( CLIENT_DESC_OID ) REFERENCES CLIENT_DESC ( OID ) ON DELETE CASCADE
+);
+
+
+CREATE TABLE UDDI_REG_DESC (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    PUBLISH_URL VARCHAR(255),
+    INQUIRY_URL VARCHAR(255) NOT NULL,
+    PORTLET_TMODEL VARCHAR(255),
+    URL_TMODEL VARCHAR(255),
+    CRED_SLOT_ID VARCHAR(255),
+    IS_DELETED CHAR(1) DEFAULT 'N' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK510 PRIMARY KEY ( OID )
+);
+
+CREATE INDEX IX510 ON UDDI_REG_DESC ( IS_DELETED );
+
+CREATE TABLE UDDI_REG_DESC_PD (
+    UDDI_REG_DESC_OID INTEGER NOT NULL,
+    REMOTE_ID VARCHAR(255) NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    PORT_DESC_OID INTEGER,
+
+    CONSTRAINT PK520 PRIMARY KEY ( UDDI_REG_DESC_OID , REMOTE_ID ),
+    CONSTRAINT FK520A FOREIGN KEY ( UDDI_REG_DESC_OID ) REFERENCES UDDI_REG_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK520B FOREIGN KEY ( PORT_DESC_OID ) REFERENCES PORT_DESC ( OID ) ON DELETE SET NULL,
+    CONSTRAINT UN520 UNIQUE ( REMOTE_ID )
+);
+
+CREATE INDEX IX520 ON UDDI_REG_DESC_PD ( REMOTE_ID, PORT_DESC_OID );
+
+
+CREATE TABLE BIND_CTX (
+    OID INTEGER NOT NULL,
+    HANDLE_ID VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK530 PRIMARY KEY ( OID )
+);
+
+CREATE INDEX IX530 ON BIND_CTX ( HANDLE_ID );
+
+CREATE TABLE BIND_CTX_DD (
+    BIND_CTX_OID INTEGER NOT NULL,
+    NAME VARCHAR(255) NOT NULL,
+    VALUE VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK540 PRIMARY KEY ( BIND_CTX_OID , NAME ),
+    CONSTRAINT FK540 FOREIGN KEY ( BIND_CTX_OID ) REFERENCES BIND_CTX ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE BIND_CTX_PI (
+    BIND_CTX_OID INTEGER NOT NULL,
+    PORT_INST_OID INTEGER NOT NULL,
+    LAST_USED BIGINT NOT NULL,
+
+    CONSTRAINT PK550 PRIMARY KEY ( BIND_CTX_OID , PORT_INST_OID ),
+    CONSTRAINT FK550A FOREIGN KEY ( BIND_CTX_OID ) REFERENCES BIND_CTX ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK550B FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE CLI_BIND (
+    OID INTEGER NOT NULL,
+    ACCESS_POINT_URL VARCHAR(255) NOT NULL,
+    HANDLE_ID VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK560 PRIMARY KEY ( OID ),
+    CONSTRAINT UN560 UNIQUE ( ACCESS_POINT_URL )
+);
+
+CREATE TABLE CLI_BIND_HANDLES (
+    CLI_BIND_OID INTEGER NOT NULL,
+    HANDLE_ID VARCHAR(255) NOT NULL,
+    PORT_INST_OID INTEGER,
+
+    CONSTRAINT PK570 PRIMARY KEY ( CLI_BIND_OID , HANDLE_ID ),
+    CONSTRAINT FK570A FOREIGN KEY ( CLI_BIND_OID ) REFERENCES CLI_BIND ( OID ) ON DELETE CASCADE,
+    CONSTRAINT FK570B FOREIGN KEY ( PORT_INST_OID ) REFERENCES PORT_INST ( OID ) ON DELETE SET NULL
+);
+
+
+CREATE TABLE MAG_DATA (
+    OID INTEGER NOT NULL,
+    USERID VARCHAR(255) NOT NULL,
+    SUBNO VARCHAR(255),
+    CLID VARCHAR(255),
+    FORCE_PROMPT CHAR(1) DEFAULT 'N' NOT NULL,
+
+    CONSTRAINT PK580 PRIMARY KEY ( USERID )
+);
+
+CREATE INDEX IX580A ON MAG_DATA ( SUBNO );
+CREATE INDEX IX580B ON MAG_DATA ( CLID );
+
+
+CREATE TABLE PUB_CLIP_DEF (
+    OID INTEGER NOT NULL,
+    UDDI_REG_DESC_OID INTEGER NOT NULL,
+    REMOTE_ID VARCHAR(255) NOT NULL,
+    CLIP_DEF VARCHAR(1024) NOT NULL,
+    SERVICE_KEY VARCHAR(255),
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK650 PRIMARY KEY (OID),
+    CONSTRAINT FK650 FOREIGN KEY ( UDDI_REG_DESC_OID) REFERENCES UDDI_REG_DESC ( OID ) ON DELETE CASCADE,
+    CONSTRAINT UN650 UNIQUE ( REMOTE_ID )
+);
+
+
+CREATE TABLE ACL (
+    SUBJECTTYPE INTEGER NOT NULL,
+    SUBJECTID   INTEGER NOT NULL,
+    ACTIONS     INTEGER NOT NULL,
+    OBJECTTYPE  INTEGER NOT NULL,
+    OBJECTID    INTEGER NOT NULL
+);
+
+CREATE INDEX IX2000A ON ACL ( OBJECTTYPE, SUBJECTTYPE, SUBJECTID, OBJECTID, ACTIONS );
+CREATE INDEX IX2000B ON ACL ( SUBJECTTYPE, OBJECTTYPE, OBJECTID );
+
+
+CREATE TABLE VAULT_RESOURCES (
+     RESOURCE_NAME VARCHAR(255) NOT NULL,
+
+     CONSTRAINT PK2010 PRIMARY KEY (RESOURCE_NAME)
+);
+
+CREATE TABLE VAULT_DATA (
+    RESOURCE_NAME VARCHAR(255) NOT NULL,
+    USER_DN VARCHAR(255) NOT NULL,
+    USERID VARCHAR(255),
+    PWD VARCHAR(255),
+    BINARY_DATA LONG VARCHAR FOR BIT DATA,
+
+    CONSTRAINT PK2020 PRIMARY KEY (RESOURCE_NAME, USER_DN),
+    CONSTRAINT FK2020 FOREIGN KEY (RESOURCE_NAME) REFERENCES VAULT_RESOURCES (RESOURCE_NAME) ON DELETE CASCADE
+);
+
+
+CREATE SCHEMA WPSPCO;
+
+CREATE TABLE WPSPCO.FORMAT (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(100) NOT NULL,
+    IS_INDEX_CONTENT CHAR(1) DEFAULT 'N' NOT NULL,
+    USE_SMODE_PLUGIN CHAR(1) DEFAULT 'N' NOT NULL,
+    MGR_CLASSNAME VARCHAR(255) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK1000 PRIMARY KEY (OID),
+    CONSTRAINT UN1000 UNIQUE (NAME)
+);
+
+CREATE TABLE WPSPCO.FORMAT_TAG (
+    FORMAT_OID INTEGER NOT NULL,
+    TAG_NAME VARCHAR(255) NOT NULL,
+    COLUMN_NAME VARCHAR(255) NOT NULL,
+    METHOD_NAME VARCHAR(255) NOT NULL,
+
+    CONSTRAINT PK1010 PRIMARY KEY (FORMAT_OID, TAG_NAME),
+    CONSTRAINT FK1010 FOREIGN KEY ( FORMAT_OID ) REFERENCES WPSPCO.FORMAT ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE WPSPCO.FORMAT_ATTR (
+    FORMAT_OID INTEGER NOT NULL,
+    ATTRIBUTE_NAME VARCHAR(255) NOT NULL,
+    IS_INITIAL CHAR(1) DEFAULT 'N' NOT NULL,
+    VIEWABLE_SMODE CHAR(1) DEFAULT 'N' NOT NULL,
+    VIEWABLE_TMODE CHAR(1) DEFAULT 'N' NOT NULL,
+    IS_INDEXED CHAR(1) DEFAULT 'N' NOT NULL,
+
+    CONSTRAINT PK1020 PRIMARY KEY (FORMAT_OID, ATTRIBUTE_NAME),
+    CONSTRAINT FK1020 FOREIGN KEY ( FORMAT_OID ) REFERENCES WPSPCO.FORMAT ( OID ) ON DELETE CASCADE
+);
+
+CREATE TABLE WPSPCO.RES_COLLECTION (
+    OID INTEGER NOT NULL,
+    NAME VARCHAR(64) NOT NULL,
+    STATE INTEGER NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK1030 PRIMARY KEY (OID)
+);
+
+CREATE INDEX WPSPCO.IX1030A ON WPSPCO.RES_COLLECTION ( OID, NAME );
+CREATE INDEX WPSPCO.IX1030B ON WPSPCO.RES_COLLECTION ( NAME );
+
+CREATE TABLE WPSPCO.WORKINGSET (
+    URI VARCHAR(255) NOT NULL,
+    RESOURCEID VARCHAR(155) NOT NULL,
+    TITLE VARCHAR(100),
+    DESCRIPTION VARCHAR(1000),
+    CREATOR VARCHAR(100),
+    CONTRIBUTOR VARCHAR(100),
+    SOURCE VARCHAR(100),
+    DCDATE DATE,
+    COVERAGE VARCHAR(100),
+    IDENTIFIER VARCHAR(255),
+    LANG VARCHAR(100),
+    PUBLISHER VARCHAR(100),
+    RELATION VARCHAR(100),
+    RIGHTS VARCHAR(100),
+    SUBJECT VARCHAR(100),
+    FORMAT VARCHAR(100),
+    DCTYPE VARCHAR(100),
+    CONTENTSIZE BIGINT,
+    FULLCONTENT LONG VARCHAR FOR BIT DATA,
+    ISINDEXED CHAR(1) DEFAULT '0' NOT NULL,
+    MARKEDFORDEL CHAR(1) DEFAULT '0' NOT NULL,
+
+    CONSTRAINT PK1040 PRIMARY KEY (URI)
+);
+
+CREATE TABLE WPSPCO.URI_LIST (
+    URI VARCHAR(255) NOT NULL,
+    CONTENTURI VARCHAR(255) NOT NULL,
+
+    CONSTRAINT FK1050 FOREIGN KEY (URI) REFERENCES WPSPCO.WORKINGSET (URI) ON DELETE CASCADE
+
+);
+
+CREATE TABLE WPSPCO.RSS_ITEM (
+    TITLE VARCHAR(155) NOT NULL,
+    DESCRIPTION VARCHAR(1000),
+    LINK VARCHAR(512),
+    CHANNELTITLE VARCHAR(512),
+    CONTENT VARCHAR(1000),
+    ISINDEXED CHAR(1) DEFAULT '0',
+    MARKEDFORDEL CHAR(1) DEFAULT '0',
+
+    CONSTRAINT PK1060 PRIMARY KEY (TITLE)
+);
+
+CREATE TABLE WPSPCO.RES_UPDATES (
+    RESCOLLNAME VARCHAR(100),
+    RESOURCEID VARCHAR(155) NOT NULL,
+    STATE INTEGER NOT NULL,
+    CONTENTFORMAT VARCHAR(100) NOT NULL
+);
+
+CREATE TABLE WPSPCO.PATH (
+    PATH VARCHAR(105) NOT NULL,
+    RESCOLLNAME VARCHAR(100) NOT NULL
+);
+
+CREATE TABLE WPSPCO.RES_INFO (
+    OID INTEGER NOT NULL,
+    URI VARCHAR(255) NOT NULL,
+    RESOURCE_ID VARCHAR(155) NOT NULL,
+    CONTENT_FORMAT VARCHAR(100) NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK1090 PRIMARY KEY (OID),
+    CONSTRAINT UN1090 UNIQUE (URI)
+);
+
+CREATE TABLE WPSPCO.RES_INFO_CAT (
+    RESOURCE_INFO_OID INTEGER NOT NULL,
+    CATEGORY_NUMBER INTEGER  NOT NULL,
+    IS_MEMBER CHAR(1) DEFAULT 'N' NOT NULL,
+
+    CONSTRAINT PK1100 PRIMARY KEY (RESOURCE_INFO_OID, CATEGORY_NUMBER),
+    CONSTRAINT FK1100 FOREIGN KEY (RESOURCE_INFO_OID) REFERENCES WPSPCO.RES_INFO (OID) ON DELETE CASCADE
+);
+
+CREATE TABLE WPSPCO.CONTENT_CAT (
+    OID INTEGER NOT NULL,
+    CATEGORY_NUMBER INTEGER NOT NULL,
+    CATEGORY_NAME VARCHAR(100) NOT NULL,
+    IS_ACTIVE CHAR(1) DEFAULT 'Y' NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK1110 PRIMARY KEY (OID),
+    CONSTRAINT UN1110 UNIQUE (CATEGORY_NUMBER)
+);
+
+CREATE TABLE WPSPCO.PUBLISH_STATUS (
+    OID INTEGER NOT NULL,
+    N_PUBLISHED INTEGER NOT NULL,
+    N_DOCUMENTS INTEGER NOT NULL,
+    CREATED BIGINT NOT NULL,
+    MODIFIED BIGINT NOT NULL,
+
+    CONSTRAINT PK1120 PRIMARY KEY (OID)
+);
+
+
+--END OF WEBSPERE PORTTAL CASES
+
+---SOME TEST CASES GOT FROM DB2 TESTS.
+
+--some test cases got from db2 tests.
+CREATE SCHEMA refint;
+set schema refint ;
+
+CREATE TABLE refint.E010_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              C3  INTEGER NOT NULL,
+                              C4  INTEGER,
+                              C5  DECIMAL(9,3) NOT NULL,
+                              C6  FLOAT,
+                              C7  VARCHAR(20) NOT NULL,
+                              C8  LONG VARCHAR,
+                              C9  DATE NOT NULL,
+                              C10 TIME,
+                              C11 TIMESTAMP,
+                              PRIMARY KEY (C0, C1, C3, C9),
+                              CONSTRAINT E010_T1_SELFREF 
+                              FOREIGN KEY (C0b, C2, C4, C9)
+                              REFERENCES refint.E010_T1 ON DELETE SET NULL);
+
+CREATE VIEW refint.E010_V1 AS SELECT * FROM refint.E010_T1;
+
+CREATE TABLE refint.E020_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              C0c  CHAR(3),
+                              C3 CHAR(3),
+                              PRIMARY KEY (C0, C1),
+                              CONSTRAINT E020_T1_SELFREF  FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E020_T1 ON DELETE RESTRICT);
+
+
+CREATE TABLE refint.E030_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0, C1),
+                              CONSTRAINT E030_T1_SELFREF FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E030_T1 ON DELETE CASCADE);
+
+
+CREATE TABLE refint.E110_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0, C1));
+
+CREATE TABLE refint.E110_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b CHAR(3),
+                              C2  CHAR(3)  ,
+                              CONSTRAINT E110_T1_T2 FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E110_T1 ON DELETE CASCADE);
+
+CREATE VIEW refint.E110_V1 AS SELECT * FROM refint.E110_T1;
+CREATE VIEW refint.E110_V2 AS SELECT * FROM refint.E110_T2;
+
+CREATE TABLE refint.E210_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E210_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E210_T1_T2  FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E210_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E210_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              CONSTRAINT FK12 FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E210_T1 ON DELETE CASCADE);
+
+CREATE VIEW refint.E210_V1 AS SELECT * FROM refint.E210_T1;
+CREATE VIEW refint.E210_V2 (C1, C2) AS
+    SELECT refint.E210_T2.C1, refint.E210_T3.C1
+    FROM refint.E210_T2, refint.E210_T3
+    WHERE refint.E210_T2.C1 = refint.E210_T3.C1;
+
+CREATE TABLE refint.E120_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0, C1));
+
+CREATE TABLE refint.E120_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b CHAR(3),
+                              C2 CHAR(3),
+                              CONSTRAINT E120_T1_T2  FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E120_T1 ON DELETE RESTRICT);
+
+CREATE VIEW refint.E120_V1 AS SELECT * FROM refint.E120_T1;
+CREATE VIEW refint.E120_V2 AS SELECT * FROM refint.E120_V1;
+
+
+CREATE TABLE refint.RJCE120_T1 (C0 INTEGER NOT NULL,
+                                 C1 INTEGER NOT NULL,
+                                 C2 INTEGER,
+                                 PRIMARY KEY (C0, C1));
+
+CREATE TABLE refint.RJCE120_T2 (C0 INTEGER NOT NULL,
+                                 C1 INTEGER NOT NULL,
+                                 C0b   INTEGER,
+                                 C2   INTEGER,
+                                 PRIMARY KEY (C0, C1),
+                                 CONSTRAINT RJCE120_T1_T2 FOREIGN KEY (C0b, C2)
+                                 REFERENCES refint.RJCE120_T1 ON DELETE RESTRICT);
+
+CREATE VIEW refint.RJCE120_V1 AS SELECT * FROM refint.RJCE120_T1;
+CREATE VIEW refint.RJCE120_V2 AS SELECT * FROM refint.RJCE120_V1;
+
+CREATE TABLE refint.E130_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0, C1));
+
+CREATE TABLE refint.E130_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2   CHAR(3),
+                              CONSTRAINT E130_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E130_T1 ON DELETE SET NULL);
+
+CREATE VIEW refint.E130_V1 AS SELECT * FROM refint.E130_T1;
+
+CREATE TABLE refint.E140_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E140_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT E140_T1_T2  FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E140_T1 ON UPDATE RESTRICT);
+
+CREATE VIEW refint.E140_V1 AS SELECT * FROM refint.E140_T1;
+
+CREATE TABLE refint.E220_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0, C1));
+
+CREATE TABLE refint.E220_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT FK13 FOREIGN KEY (C0b, C2)
+                              REFERENCES refint.E220_T1 ON DELETE RESTRICT);
+
+CREATE TABLE refint.E220_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT FK32 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E220_T1 ON DELETE CASCADE);
+
+
+CREATE TABLE refint.E230_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E230_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK14 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E230_T1 ON DELETE SET NULL);
+
+CREATE TABLE refint.E230_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT FK33 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E230_T1 ON DELETE CASCADE);
+
+CREATE VIEW refint.E230_V1 AS SELECT * FROM refint.E230_T1;
+CREATE VIEW refint.E230_V2 (C1, C2) AS
+    SELECT refint.E230_T2.C1, refint.E230_T3.C2
+    FROM refint.E230_T2, refint.E230_T3;
+
+CREATE TABLE refint.E240_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3),
+                              C2  CHAR(3)   NOT NULL,
+                              C3  SMALLINT NOT NULL,
+                              C4  INTEGER,
+                              C5  DECIMAL(9,3) NOT NULL,
+                              C6  VARCHAR(20) NOT NULL,
+                              C7  DATE NOT NULL,
+                              PRIMARY KEY (C0, C2, C6, C7));
+
+CREATE TABLE refint.E240_T2 (C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3)  ,
+                              C3  SMALLINT NOT NULL,
+                              C4  DECIMAL(9,3) NOT NULL,
+                              C5  VARCHAR(20),
+                              C6  TIME,
+                              C7  DATE NOT NULL,
+                              PRIMARY KEY (C0,C1,C3),
+                              CONSTRAINT E240_T1_T2_A FOREIGN KEY (C0a,C1,C5,C7)
+                              REFERENCES refint.E240_T1 ON DELETE SET NULL);
+
+CREATE TABLE refint.E240_T3 (C0 CHAR(3),
+                              C0a CHAR(3),
+                              C1 CHAR(3),
+                              C2  CHAR(3)  ,
+                              C3  SMALLINT NOT NULL,
+                              C4  DECIMAL(9,3) NOT NULL,
+                              C5  VARCHAR(20),
+                              C6  TIME,
+                              C7  DATE NOT NULL,
+                              CONSTRAINT E240_T1_T2_B
+                              FOREIGN KEY (C0a, C1, C5, C7)
+                              REFERENCES refint.E240_T1 ON DELETE SET NULL);
+
+CREATE VIEW refint.E240_V1 AS SELECT * FROM refint.E240_T1;
+CREATE VIEW refint.E240_V2 (C1,C2,C3,C4,C5,C6,C7) AS
+    SELECT refint.E240_T2.C1, refint.E240_T2.C2, refint.E240_T3.C3,
+    refint.E240_T3.C4, refint.E240_T3.C5, refint.E240_T2.C6,
+    refint.E240_T2.C7
+    FROM refint.E240_T2,refint.E240_T3;
+
+CREATE TABLE refint.E250_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E250_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E250_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E250_T1 ON DELETE RESTRICT);
+
+CREATE TABLE refint.E250_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT  E250_T1_T3 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E250_T1 ON DELETE RESTRICT);
+
+CREATE VIEW refint.E250_V1 AS SELECT * FROM refint.E250_T1;
+CREATE VIEW refint.E250_V2 (C1 ,C2) AS
+    SELECT refint.E250_T2.C1, refint.E250_T3.C2
+    FROM refint.E250_T2, refint.E250_T3
+    WHERE refint.E250_T2.C1 = refint.E250_T3.C1;
+
+CREATE TABLE refint.E260_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E260_T2 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT E260_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E260_T1);
+
+CREATE TABLE refint.E260_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              CONSTRAINT E260_T1_T3  FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E260_T1);
+
+CREATE VIEW refint.E260_V1 AS SELECT * FROM refint.E260_T1;
+
+CREATE TABLE refint.E310_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E310_T2 (C0 INTEGER NOT NULL,
+                              C1 INTEGER NOT NULL,
+                              C2  CHAR(3)  ,
+                              C0b  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK15 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E310_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E310_T3 (C0 CHAR(3),
+                              C1 CHAR(3),
+                              C0b  INTEGER,
+                              C2  INTEGER,
+                              CONSTRAINT FK34 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E310_T2 ON DELETE CASCADE);
+
+CREATE VIEW refint.E310_V1 AS SELECT * FROM refint.E310_T1;
+
+CREATE TABLE refint.E360_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E360_T2 (C0 INT NOT NULL,
+                              C1 DECIMAL(9,3) NOT NULL,
+                              C0b  CHAR(3)  ,
+                              C2  CHAR(3)  ,
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E360_T1_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E360_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E360_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b INT,
+                              C2  DECIMAL(9,3),
+                              CONSTRAINT E360_T2_T3 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E360_T2 ON DELETE RESTRICT);
+
+CREATE VIEW refint.E360_V1 AS SELECT * FROM refint.E360_T1;
+
+CREATE TABLE refint.E370_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E370_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK16 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E370_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E370_T3 (C1 CHAR(3),
+                              C0 CHAR(3),
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              CONSTRAINT FK35 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E370_T2 ON DELETE SET NULL);
+
+CREATE VIEW refint.E370_V1 AS SELECT * FROM refint.E370_T1;
+
+CREATE TABLE refint.E340_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E340_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK17 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E340_T1 ON DELETE SET NULL);
+
+CREATE TABLE refint.E340_T3 (C1 CHAR(3),
+                              C0 CHAR(3),
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              CONSTRAINT FK36 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E340_T2 ON DELETE RESTRICT);
+
+
+CREATE TABLE refint.E410_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E410_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3) NOT NULL,
+                              C0b  CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK18 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E410_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E410_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C2  CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK37 FOREIGN KEY (C0a,C1)
+                              REFERENCES refint.E410_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E410_T4 (C0a CHAR(3),
+                              C1 CHAR(3),
+                              C0 CHAR(3),
+                              C0b CHAR(3),
+                              C2  CHAR(3),
+                              C3  CHAR(3),
+                              CONSTRAINT FK7 FOREIGN KEY (C0b,C2,C3)
+                              REFERENCES refint.E410_T2 ON DELETE CASCADE,
+                              CONSTRAINT FK8 FOREIGN KEY (C0a,C1,C2)
+                              REFERENCES refint.E410_T3 ON DELETE CASCADE);
+
+
+CREATE TABLE refint.E450_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E450_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3) NOT NULL,
+                              C0c  CHAR(3),
+                              C3  CHAR(3),
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK20 FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E450_T1 ON DELETE SET NULL);
+
+CREATE TABLE refint.E450_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3) NOT NULL,
+                              C0c  CHAR(3),
+                              C3  CHAR(3),
+                              PRIMARY KEY (C0,C1,C2),
+                              CONSTRAINT FK38 FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E450_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E450_T4 (C1 CHAR(3),
+                              C0 CHAR(3),
+                              C0a CHAR(3),
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              C3  CHAR(3),
+                              CONSTRAINT FK3 FOREIGN KEY (C0b,C2,C3)
+                              REFERENCES refint.E450_T2 ON DELETE SET NULL,
+                              CONSTRAINT FK4 FOREIGN KEY (C0a,C1,C2)
+                              REFERENCES refint.E450_T3 ON DELETE CASCADE);
+
+
+CREATE TABLE refint.E510_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E510_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT FK21 FOREIGN KEY (c0b,C2)
+                              REFERENCES refint.E510_T1 ON DELETE SET NULL);
+
+CREATE TABLE refint.E510_T3 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY(C0,C1),
+                              CONSTRAINT FK39 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E510_T2 ON DELETE SET NULL);
+
+alter table refint.E510_T1 add CONSTRAINT CYC FOREIGN KEY (C0a,C1)
+                REFERENCES refint.E510_T3 ON DELETE CASCADE;
+
+
+CREATE VIEW refint.E510_V1 AS SELECT * FROM refint.E510_T3;
+
+CREATE TABLE refint.E540_T1 (C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C1 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+
+
+CREATE TABLE refint.E540_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E540_T1_T2  FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E540_T1 ON DELETE RESTRICT);
+
+CREATE TABLE refint.E540_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E540_T2_T3 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E540_T2 ON DELETE RESTRICT);
+
+
+alter table refint.E540_T1 add CONSTRAINT E540_T3_T1 FOREIGN KEY (C0a,C1)
+                              REFERENCES refint.E540_T3 ON DELETE RESTRICT;
+
+
+
+CREATE TABLE refint.E560_T1 (C1 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C0 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,C1));
+
+
+CREATE TABLE refint.E560_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E560_T2_T1 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E560_T1 ON DELETE RESTRICT);
+
+CREATE TABLE refint.E560_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              CONSTRAINT E560_T3_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E560_T2 ON DELETE RESTRICT);
+
+
+alter table refint.E560_T1  add CONSTRAINT E560_T1_T3  FOREIGN KEY (C0a,C1)
+               REFERENCES refint.E560_T3 ON DELETE CASCADE;
+
+
+CREATE TABLE refint.E550_T1 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b CHAR(3),
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E550_T2 (C0 CHAR(3) NOT NULL,
+                              C1 CHAR(3) NOT NULL,
+                              C0b  CHAR(3),
+                              C2  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E550_T1 ON DELETE SET NULL);
+
+CREATE TABLE refint.E550_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E550_T2 ON DELETE SET NULL);
+
+alter table refint.E550_T1 add  CONSTRAINT F550 FOREIGN KEY (C0b,C2)
+                             REFERENCES refint.E550_T3 ON DELETE SET NULL;
+
+
+
+CREATE TABLE refint.E570_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C0a CHAR(3),
+                              C2 CHAR(3),
+                              PRIMARY KEY (C0,C1));
+
+CREATE TABLE refint.E570_T2 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b  CHAR(3),
+                              PRIMARY KEY (C0,C1));
+
+
+CREATE TABLE refint.E570_T3 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2  CHAR(3),
+                              C0b CHAR(3),
+                              PRIMARY KEY (C0,C1));
+
+alter table refint.E570_T1 add CONSTRAINT E570_T1_T3  FOREIGN KEY (C0a,C1)
+                              REFERENCES refint.E570_T3 ON DELETE CASCADE;
+alter table refint.E570_T2 add CONSTRAINT E570_T2_T1 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E570_T1 ON DELETE RESTRICT;
+
+alter table  refint.E570_T3 add CONSTRAINT E570_T3_T2 FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E570_T2 ON DELETE SET NULL;
+
+CREATE VIEW refint.E570_V1 AS SELECT * FROM refint.E570_T3;
+
+CREATE TABLE refint.E710_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              C0b CHAR(3),
+                              C3 CHAR(3),
+                              C0c CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E710_T1 ON DELETE CASCADE,
+                              FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E710_T1 ON DELETE CASCADE);
+
+
+CREATE TABLE refint.E720_T1 (C1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              C2 CHAR(3),
+                              C0b CHAR(3),
+                              PRIMARY KEY (C0,C1),
+                              FOREIGN KEY (C0b,C2)
+                              REFERENCES refint.E720_T1 ON DELETE CASCADE);
+
+CREATE TABLE refint.E720_T2 (X1 CHAR(3) NOT NULL,
+                              C0 CHAR(3) NOT NULL,
+                              X3 CHAR(3),
+                              C0d CHAR(3),
+                              C3 CHAR(3),
+                              C0c CHAR(3),
+                              PRIMARY KEY (C0,X1),
+                              FOREIGN KEY (C0d,X3)
+                              REFERENCES refint.E720_T2 ON DELETE CASCADE,
+                              FOREIGN KEY (C0c,C3)
+                              REFERENCES refint.E720_T1 ON DELETE CASCADE);
+
+
+CREATE TABLE refint.E610_T1 (C0 CHAR(3) NOT NULL,
+                              P1 CHAR(3) NOT NULL,
+                              P2 CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,P1,P2));
+
+CREATE TABLE refint.E610_T2 (P1 CHAR(3),
+                              C0 CHAR(3) NOT NULL,
+                              P4  CHAR(3) NOT NULL,
+                              P5  CHAR(3) NOT NULL,
+                              PRIMARY KEY (C0,P4,P5));
+
+CREATE TABLE refint.E610_T3 (F1 CHAR(3),
+                              C0 CHAR(3),
+                              C0e CHAR(3),
+                              F2  CHAR(3),
+                              C0g CHAR(3),
+                              F3  CHAR(3),
+                              CONSTRAINT E610_T1_T3 FOREIGN KEY (C0e,F1,F2)
+                              REFERENCES refint.E610_T1,
+                              CONSTRAINT E610_T2_T3 FOREIGN KEY (C0g,F2,F3)
+                              REFERENCES refint.E610_T2)
+                              ;
+
+---END OF TEST CASES GOT FROM DB2 Tests.
+
+--START RANDOM COMPLEX LINKS
+
+create table t1( a int not null primary key, b int);
+create table t2(x int, y int not null unique, z int);
+create table t3(l int, m int not null unique , k int );
+create table t4(c1 int not null unique , c2 int);
+create table t5(c1 int not null unique , c2 int);
+create table t6(c1 int not null unique , c2 int);
+--cycle
+alter table t2 add constraint c3 foreign key (z)
+                              references t4(c1) on delete cascade;
+alter table t4 add constraint c4 foreign key (c2)
+                              references t5(c1) on delete cascade;
+alter table t5 add constraint c5 foreign key (c2)
+                              references t6(c1) on delete cascade;
+
+alter table t1 add constraint c1 foreign key (b)
+                              references t3(m) on delete cascade;
+alter table t2 add constraint c2 foreign key (x)
+                             references t1(a) on delete cascade;
+alter table t3 add constraint c6 foreign key (k)
+                              references t2(y) on delete cascade;
+--link a self referencing table to above cycle with a SET NULL
+create table t7( a int not null primary key, b int not null  unique,
+                  x int references t7(a) ON DELETE CASCADE,
+                  z int references t7(b) ON DELETE CASCADE,
+			      w int references t6(c1) ON DELETE SET NULL);
+--valide multiple paths
+create table t8( a int not null primary key, b int);
+create table t9(x int, y int not null unique, z int);
+create table t10(l int, m int not null unique , k int );
+create table t11(c1 int not null unique , c2 int);
+alter table t9 add constraint c7 foreign key (x)
+                              references t8(a) on delete set null;
+alter table t9 add constraint c8 foreign key (z)
+                              references t11(c1) on delete set null;
+alter table t10 add constraint c9 foreign key (l)
+                              references t8(a) on delete set null;
+alter table t11 add constraint c10 foreign key (c1)
+                              references t10(m) on delete cascade;
+--link this one first cycle case
+alter table t9 add constraint c11 foreign key (z)
+                              references t5(c1) on delete SET NULL;
+--valide multiple paths
+create table t12( a int not null primary key, b int);
+create table t13(x int, y int not null unique, z int);
+create table t14(l int, m int not null unique , k int );
+create table t15(c1 int not null unique , c2 int);
+alter table t13 add constraint c12 foreign key (x)
+                              references t12(a) on delete SET NULL;
+alter table t13 add constraint c13 foreign key (z)
+                              references t15(c1) on delete SET NULL;
+alter table t14 add constraint c14 foreign key (l)
+                              references t12(a) on delete CASCADE;
+alter table t15 add constraint c15 foreign key (c2)
+                              references t14(m) on delete SET NULL;
+--link this one to first cycle case
+alter table t12 add constraint c16 foreign key (b)
+                              references t2(y) on delete CASCADE;
+
+alter table t2 drop constraint c2;
+alter table t3 drop constraint c6;
+alter table t12 drop constraint c16;
+alter table t9 drop constraint c11;
+alter table t9 drop constraint c7;
+alter table t10 drop constraint c9;
+alter table t11 drop constraint c10;
+alter table t13 drop constraint c12;
+alter table t14 drop constraint c14;
+alter table t15 drop constraint c15;
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+drop table t5;
+drop table t7;
+drop table t6;
+drop table t8;
+drop table t9;
+drop table t10;
+drop table t11;
+drop table t12;
+drop table t13;
+drop table t14;
+drop table t15;
+
+
+--END OF RANDOM COMPLEX CASE
+
+--FOLLOWING SQL SHOULD PASS
+
+CREATE TABLE Employee (
+  ssn INTEGER NOT NULL,
+  name VARCHAR(30),
+  salary INTEGER,
+  address VARCHAR(50),
+  constraint EmployeeKey PRIMARY KEY (ssn)
+); 
+
+CREATE TABLE Manages (manager_ssn INTEGER NOT NULL unique,
+  employee_ssn INTEGER NOT NULL,
+  constraint ManagesKey PRIMARY KEY (manager_ssn,employee_ssn),
+  FOREIGN KEY (employee_ssn) REFERENCES Employee(ssn)        
+  ON DELETE CASCADE ON UPDATE NO ACTION,
+  FOREIGN KEY (manager_ssn) REFERENCES Employee(ssn)
+  ON DELETE CASCADE ON UPDATE NO ACTION);
+
+
+CREATE TABLE Shop( 
+  shop_name VARCHAR(20)NOT NULL,
+  open_closed_times TIME,   
+  department VARCHAR(20),
+  location INTEGER CHECK(location BETWEEN 1 AND 50),
+  floor INTEGER CHECK(floor BETWEEN 1 AND 4), 
+  shift char(20), 
+  rent INTEGER,
+  tel_no INTEGER,
+  income INTEGER,
+  expenditure INTEGER,
+  manager_ssn INTEGER,
+  FOREIGN KEY (manager_ssn) REFERENCES Manages(manager_ssn)
+  ON DELETE SET NULL ON UPDATE NO ACTION,
+  constraint ShopKey PRIMARY KEY (shop_name));
+
+
+CREATE TABLE Works_in (
+   ssn INTEGER NOT NULL,
+   shop_name VARCHAR(20)NOT NULL,
+   since DATE,
+   task VARCHAR(20),
+   constraint WorksInKey PRIMARY KEY (ssn, shop_name),
+   constraint fkey1 FOREIGN KEY (ssn) REFERENCES Employee
+   ON DELETE CASCADE ON UPDATE RESTRICT,
+   constraint fkey2 FOREIGN KEY (shop_name) REFERENCES Shop
+   ON DELETE NO ACTION ON UPDATE NO ACTION);
+
+
+
+CREATE TABLE Owns(ssn INTEGER NOT NULL,
+     shop_name VARCHAR(20)NOT NULL,
+     date1 DATE,
+     constraint OwnsKey PRIMARY KEY (ssn, shop_name),
+     FOREIGN KEY (ssn) REFERENCES Employee            
+     ON DELETE CASCADE ON UPDATE NO ACTION,
+     FOREIGN KEY (shop_name) REFERENCES Shop
+     ON DELETE CASCADE ON UPDATE NO ACTION);
+
+CREATE TABLE Item(item_id INTEGER NOT NULL,
+     Supplier VARCHAR(20),
+     price INTEGER,
+     department VARCHAR(20),
+     constraint ItemKey PRIMARY KEY (item_id));
+
+CREATE TABLE Producer(producer_name VARCHAR(20) NOT NULL,
+  city VARCHAR(20),
+  address VARCHAR(50),
+  department VARCHAR(20),
+  constraint ProducerKey PRIMARY KEY (producer_name));
+
+CREATE TABLE Supplies (producer_name VARCHAR(20) NOT NULL,
+   item_id INTEGER NOT NULL,
+   constraint SuppliesKey PRIMARY KEY (producer_name, item_id),
+   FOREIGN KEY (item_id) REFERENCES Item              
+   ON DELETE CASCADE ON UPDATE NO ACTION,
+   FOREIGN KEY (producer_name) REFERENCES Producer
+   ON DELETE RESTRICT ON UPDATE NO ACTION);
+
+  
+
+CREATE TABLE Sells( item_id INTEGER NOT NULL,
+	shop_name VARCHAR(20)NOT NULL,
+	constraint SellsKey PRIMARY KEY (item_id, shop_name),
+	FOREIGN KEY (item_id) REFERENCES Item                 
+    ON DELETE NO ACTION ON UPDATE NO ACTION,
+    FOREIGN KEY (shop_name) REFERENCES Shop
+    ON DELETE CASCADE ON UPDATE NO ACTION);
+
+
+CREATE TABLE Commerce(item_id INTEGER NOT NULL,
+  shop_name VARCHAR(20)NOT NULL,
+  cost INTEGER,
+  date1 DATE,
+  constraint CommerceKey PRIMARY KEY (item_id, shop_name),
+  FOREIGN KEY (item_id) REFERENCES Item               
+  ON DELETE CASCADE ON UPDATE NO ACTION,
+  FOREIGN KEY (shop_name) REFERENCES Shop
+  ON DELETE RESTRICT ON UPDATE NO ACTION);
+
+  
+
+CREATE TABLE Stocks(  item_id INTEGER NOT NULL,
+
+  shop_name VARCHAR(20) NOT NULL,
+  available INTEGER,
+  purchased_date DATE,
+  ordered INTEGER,
+  constraint StocksKey PRIMARY KEY (item_id, shop_name),
+  FOREIGN KEY (item_id) REFERENCES Item               
+  ON DELETE CASCADE ON UPDATE NO ACTION,
+  FOREIGN KEY (shop_name) REFERENCES Shop
+  ON DELETE RESTRICT ON UPDATE NO ACTION);
+
+
+CREATE TABLE Orders(  
+  producer_name VARCHAR(20) NOT NULL,
+  shop_name VARCHAR(20)NOT NULL,
+  item_id INTEGER NOT NULL,
+  receival_date DATE,
+  order_date DATE,
+  item_amount INTEGER,
+  cost INTEGER,
+  constraint OrdersKey PRIMARY KEY (item_id, shop_name, producer_name),
+  FOREIGN KEY (shop_name) REFERENCES Shop
+  ON DELETE RESTRICT ON UPDATE NO ACTION,
+  FOREIGN KEY (item_id) REFERENCES Item               
+  ON DELETE CASCADE ON UPDATE NO ACTION );
+
+
+CREATE TABLE Food(
+  item_id INTEGER NOT NULL,
+  type VARCHAR(20),
+  expiration_date DATE,
+  constraint FoodKey PRIMARY KEY (item_id),
+  FOREIGN KEY (item_id) REFERENCES Item
+  ON DELETE CASCADE);
+
+CREATE TABLE Media(
+    item_id INTEGER NOT NULL,
+    type VARCHAR(20),
+    author VARCHAR(50),
+    publisher VARCHAR(50),
+    title VARCHAR(20),
+    published_date DATE,
+    constraint MediaKey PRIMARY KEY (item_id),
+    FOREIGN KEY (item_id) REFERENCES Item
+    ON DELETE CASCADE);
+
+CREATE TABLE Clothing(
+     item_id INTEGER NOT NULL,
+     type VARCHAR(20),
+     color VARCHAR(20),
+	 cloth_size char(2),
+     brand VARCHAR(30),
+     constraint ClothingKey PRIMARY KEY (item_id),
+     FOREIGN KEY (item_id) REFERENCES Item
+     ON DELETE CASCADE);
+
+CREATE TABLE Accessories(
+           item_id INTEGER NOT NULL,
+           type VARCHAR(20),
+           constraint AccessoriesKey PRIMARY KEY (item_id),
+           FOREIGN KEY (item_id) REFERENCES Item
+           ON DELETE CASCADE);
+
+---END

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/refActions_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,173 @@
+autocommit off;
+
+-- move static initializer tests to front, hoping to avoid class garbage
+-- collection in jdk18.  Sometimes the static initializer in the 
+-- DMLInStaticInitializer and InsertInStaticInitializer classes gets called
+-- twice in jdk118 - causing a diff.  This can happen if for some reason the
+-- JVM decides to garbage collect the class between references to the class
+-- in the course of executing the query.
+
+-- static initializers.
+create table t1 (s int);
+commit;
+
+create function dmlstatic() returns INT
+parameter style java language java
+external name 'org.apache.derbyTesting.functionTests.util.StaticInitializers.DMLInStaticInitializer.getANumber'
+no sql;
+
+create function insertstatic() returns INT
+parameter style java language java
+external name 'org.apache.derbyTesting.functionTests.util.StaticInitializers.InsertInStaticInitializer.getANumber'
+no sql;
+
+commit;
+
+
+-- the static initializer in DMLInStaticInitializer will select from t1 
+-- the DML will be executed within a nested query-- however all locks 
+-- on system tables which the static initializer gets should be released.
+select 
+(dmlstatic()) 
+from sys.systables where tablename = 'SYSCONGLOMERATES';
+
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+
+commit;
+
+drop table t1;
+create table t1 (s int);
+commit;
+select 
+(insertstatic()) 
+from sys.systables where tablename = 'SYSCONGLOMERATES';
+
+-- only two locks!
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+
+-- verify that the row went into t1.
+select * from t1;
+drop table t1;
+commit;
+
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+
+commit;
+
+
+-- some really simple tests to start off.
+create table test_tab (x int);
+insert into test_tab values (1);
+commit;
+
+-- earlier we would get a bunch of locks on the system catalogs 
+-- when trying to resolve the method alias.
+select count(*) from new org.apache.derby.diag.LockTable() l;
+
+-- select from a system catalog.
+select count(*) from sys.sysviews;
+-- look ma, no locks.
+select count(*) from new org.apache.derby.diag.LockTable() l;
+
+insert into test_tab values (2);
+-- only see locks on test_tab, none on system catalogs
+-- 
+
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l
+order by 1;
+
+-- bugid 3214, atlas case: 962505
+-- selecting from a table would hold locks which would disallow creating
+-- another table.
+drop table t1;
+create table t1 (x int);
+commit;
+select * from t1;
+
+connect 'wombat' as conn1;
+-- this should not time out waiting for locks.
+create table t2 (x int);
+drop table t2;
+set connection connection0;
+disconnect conn1;
+commit;
+
+show connections;
+
+-- create table again to force scanning system catalogs.
+drop table test_tab;
+create table test_tab (x int);
+insert into test_tab values (1);
+commit;
+
+-- prepare a statement-- no locks.
+prepare cursor1 as 'update test_tab set x=2 where x=?';
+select count(*) from new org.apache.derby.diag.LockTable() l;
+
+-- now execute it-- should see locks on test_tab
+execute cursor1 using 'values (1)';
+select TYPE, MODE, TABLENAME, LOCKNAME, STATE from new org.apache.derby.diag.LockTable() l 
+order by 1;
+commit;
+
+
+-- problem with backing index scans.
+
+create table t (c1 int not null primary key, c2 int references t);
+insert into t values (1,1);
+insert into t values (2,1);
+
+commit;
+
+prepare ps as 'select * from t where c1 = ? and c2 = ?';
+
+-- no locks, no locks at all.
+select * from new org.apache.derby.diag.LockTable() l;
+
+-- clear DataDictionary cache
+create table x(c1 int);
+drop table x;
+commit;
+
+-- try inserting into the table; no locks on system catalogs.
+prepare pi as 'insert into t values (3,2)';
+select * from new org.apache.derby.diag.LockTable() l;
+
+commit;
+
+-- clear DataDictionary cache
+create table x(c1 int);
+drop table x;
+commit;
+
+-- try updating the table; no locks on system catalogs.
+prepare p1 as 'update t set c2 = c1, c1 = c2';
+select * from new org.apache.derby.diag.LockTable() l;
+
+commit;
+
+-- clear DataDictionary cache
+create table x(c1 int);
+drop table x;
+commit;
+
+-- try deleting from the table; no locks on system catalogs.
+prepare p1 as 'delete from t';
+select * from new org.apache.derby.diag.LockTable() l;
+
+commit;
+
+-- create some triggers.
+create trigger update_of_t after update on t for each row mode db2sql values 2;
+
+create trigger insert_of_t after insert on t for each row mode db2sql values 3;
+
+commit;
+
+-- t has (1,1) (2,1) (3,2)
+prepare pu as 'update t set c2=2 where c1=2';
+select * from new org.apache.derby.diag.LockTable() l;
+commit;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/releaseCompileLocks_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+ij.protocol=jdbc:derby:
+ij.database=jdbc:derby:wombat;create=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,110 @@
+-- rename index tests
+--
+autocommit off;
+--
+
+-- negative tests
+--
+
+-- rename a non-existing index
+-- should fail because there is no index by name i1t1
+rename index i1t1 to i1rt1;
+--
+
+-- rename as some existing index name
+create table t1(c11 int, c12 int);
+create index i1t1 on t1(c11);
+create index i2t1 on t1(c12);
+rename index i1t1 to i2t1;
+drop table t1;
+--
+
+-- rename a system table's index
+set schema sys;
+-- will fail because it is a system table
+rename index syscolumns_index1 to newName;
+set schema app;
+--
+
+-- rename an index when a view is on a table
+create table t1(c11 int, c12 int);
+create index t1i1 on t1(c11);
+create view v1 as select * from t1;
+select * from v1;
+-- this succeeds with no exceptions
+rename index t1i1 to t1i1r;
+-- this succeeds with no exceptions
+select * from v1;
+drop view v1;
+drop table t1;
+-- another test for views
+create table t1(c11 int not null primary key, c12 int);
+create index i1t1 on t1(c11);
+create view v1 as select * from t1;
+-- following rename shouldn't fail
+rename index i1t1 to i1rt1;
+drop view v1;
+-- even though there is no index i1t1 it still doesn't fail
+create view v1 as select * from t1;
+-- this succeeds with no exceptions
+select * from v1;
+rename index i1rt1 to i1t1;
+-- now succeeds
+select * from v1;
+drop view v1;
+drop table t1;
+--
+
+-- cannot rename an index when there is an open cursor on it
+create table t1(c11 int, c12 int);
+create index i1 on t1(c11);
+get cursor c1 as 'select * from t1';
+-- following rename should fail because of the cursor c1
+rename index i1 to i1r;
+close c1;
+-- following rename should pass because cursor c1 has been closed
+rename index i1 to i1r;
+drop table t1;
+--
+
+-- creating a prepared statement on a table
+create table t1(c11 int not null primary key, c12 int);
+-- bug 5685
+create index i1 on t1(c11);
+autocommit off;
+prepare p1 as 'select * from t1 where c11 > ?';
+execute p1 using 'values (1)';
+-- doesn't fail
+rename index i1 to i1r;
+-- statement passes
+execute p1 using 'values (1)';
+remove p1;
+autocommit on;
+drop table t1;
+--
+
+-- positive tests
+-- a column with an index on it can be renamed
+create table t3(c31 int not null primary key, c32 int);
+create index i1_t3 on t3(c32);
+rename index i1_t3 to i1_3r;
+-- make sure that i1_t3 did get renamed. Following rename should fail to prove that.
+rename index i1_t3 to i1_3r;
+drop table t3;
+--
+
+-- creating a prepared statement on a table
+autocommit off;
+create table t3(c31 int not null primary key, c32 int);
+create index i1_t3 on t3(c32);
+prepare p3 as 'select * from t3 where c31 > ?';
+execute p3 using 'values (1)';
+-- can rename with no errors
+rename index i1_t3 to i1_t3r;
+execute p3 using 'values (1)';
+rename index i1_t3r to i1_t3;
+-- this should pass know because we restored the original index name
+execute p3 using 'values (1)';
+remove p3;
+autocommit on;
+drop table t3;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,111 @@
+-- rename table tests
+
+
+-- create some database objects
+create table t1(c11 int not null primary key);
+create table t2(c21 int not null primary key);
+create table t3(c31 int not null primary key);
+create table t4(c41 int not null primary key);
+-- create table with foreign key constraint
+create table t5 (c51 int, constraint fk foreign key(c51) references t4);
+create view v1 as select * from t1;
+-- bug 5685
+create index i1_t3 on t3(c31);
+
+-- do some population
+insert into t1 values 11;
+insert into t2 values 21;
+insert into t2 values 22;
+insert into t3 values 31;
+insert into t3 values 32;
+insert into t3 values 33;
+
+autocommit off;
+
+-- negative tests
+
+-- rename a non-existing table
+rename table notexists to notexists1;
+
+-- the new table name for rename already exists
+rename table t1 to t2;
+
+-- rename a system table
+rename table sys.systables to fake;
+
+-- rename a view
+rename table v1 to fake;
+
+-- cannot rename a table when there is an open cursor on it
+get cursor c1 as 'select * from t2';
+rename table t2 to fake;
+close c1;
+
+-- cannot rename a table when there is a view on it
+rename table t1 to fake;
+
+-- cannot rename because t5's foreign key depends on t4
+rename table t4 to fake;
+-- only dropping the fk constraint can allow the table to be renamed
+alter table t5 drop constraint fk;
+-- this statement should not fail
+rename table t4 to realTab;
+
+-- positive tests
+
+select * from t3;
+
+-- can rename a table when there is an index defined on it
+rename table t3 to t3r;
+
+select * from t3r;
+
+-- creating a prepared statement on a table
+autocommit off;
+prepare p3 as 'select * from t3r where c31 > ?';
+execute p3 using 'values (30)';
+-- can rename with no errors
+rename table t3r to t3;
+-- but the execute statement will fail
+execute p3 using 'values (30)';
+remove p3;
+autocommit on;
+
+-- creating a table with triggers defined on it
+create table t6 (c61 int default 1);
+create table t7(c71 int);
+-- bug 5684
+create trigger t7insert after insert on t7 referencing new as NEWROW for each row mode db2sql insert into t6 values(NEWROW.c71);
+insert into t7 values(1);
+-- bug 5683. Should fail
+rename table t7 to t7r;
+select * from t7r;
+select * from t7;
+
+rename table t6 to t6r;
+insert into t7 values(3);
+select * from t6r;
+select * from t7r;
+
+-- Rename should fail if there is a check constraint
+create table tcheck (i int check(i>5));
+rename table tcheck to tcheck1;
+drop table tcheck;
+
+-- Rename should pass after dropping the check constriant
+create table tcheck (i int, j int, constraint tcon check (i+j>2));
+rename table tcheck to tcheck1;
+alter table tcheck drop constraint tcon;
+rename table tcheck to tcheck1;
+select * from tcheck1;
+drop table tcheck1;
+
+-- clean up
+drop view v1;
+drop table t1;
+drop table t2;
+drop table t3;
+drop table realTab;
+drop table t5;
+drop table t6r;
+drop table t7r;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameTable_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/reopenScan.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/reopenScan.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,106 @@
+--
+-- Test reopening scans.  A in subquery generates
+-- a lot of reopen requests to the underlying scan.
+-- We are used to having to reopen something like a
+-- base table scan, but we need to be careful reopening
+-- things like join nodes.  This test is to ensure
+-- that we don't leave around any state when reopening
+-- various complex nodes.
+
+
+drop table x;
+drop table y;
+drop table z;
+create table x (x int);
+create table y (x int);
+create table z (x int);
+
+insert into x values 1,2,3;
+insert into y values 1,2,3;
+insert into z values 3,2,3,2;
+
+select x from y where x in (select x from x);
+select x from z where x in (1,2,3);
+
+--
+-- nested loop
+--
+
+-- one row right side
+select x from z where x in (select x from y where x in (select x from x));
+
+-- not one row right side
+select x from z where x in (select x.x from x,y where x.x=y.x);
+
+--
+-- hash join
+--
+select x from z where x in (select x.x from x,y where x.x=y.x);
+
+--
+-- outer join
+--
+select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+
+delete from y;
+insert into y values 0,1,5,2,2;
+select x.x from x left outer join y on (y.x=x.x);
+select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+
+delete from x;
+insert into x values 0,1,5,2,2;
+delete from y;
+insert into y values 1,2,3;
+select x.x from x left outer join y on (y.x=x.x);
+select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+
+insert into z values 1,5;
+select x from z where x in (select x.x from x left outer join y on (y.x=x.x));
+
+
+--
+-- aggregate result set
+--
+delete from x;
+delete from y;
+delete from z;
+
+insert into x values 1,2,3;
+insert into y values 1,2,3;
+insert into z values 3,2,666,3,2,null,2;
+
+select x from z where x in (select x from x group by x);
+select x from z where x in (select max(x) from x group by x);
+select x from z where x in (select max(x) from x);
+select x from z where x in (select sum(distinct x) from x group by x);
+insert into x values 1,1,2,2,2,5,5,null,6;
+select x from z where x in (select sum(distinct x) from x group by x);
+
+--
+-- union
+--
+delete from x;
+delete from y;
+delete from z;
+
+insert into x values null,2,3;
+insert into y values 1,2,null;
+insert into z values 3,2,666,3,2,null,2;
+
+select x from z where x in (select x from x union select x from y);
+
+--
+-- normalize
+--
+delete from x;
+delete from y;
+delete from z;
+
+create table n (x smallint);
+insert into n values 1,2,3;
+insert into x values 1,2,3;
+
+select * from x where x in (select x from n);
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,92 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+
+/**
+	Test the statement cache -- reusing statements with the
+	matching SQL text. The only way to verify this output
+	is to look at the log file for StatementCache debug flag
+	messages about accesses.
+	<p>
+	The one concrete test here is that the statements
+	are actually dumped when the connection is closed,
+	and attempts to execute them will fail.
+
+	@author ames
+ */
+
+public class repeat { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+
+	public static void main(String[] args) {
+		System.out.println("Test repeat starting");
+		boolean passed = false;
+		try {
+			Connection conn;
+
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			Statement s = conn.createStatement();
+			s.execute("create table t (i int)");
+
+			s.execute("insert into t values(180)");
+
+			// should find statement in cache:
+			s.execute("insert into t values(180)");
+
+			// should find statement in cache:
+			PreparedStatement ps1 = conn.prepareStatement("insert into t values(180)");
+
+			for (int i=1; i<=2; i++) {
+				int rows = ps1.executeUpdate();
+
+				if (rows != 1)
+					System.out.println("FAIL -- insert wrong number of rows");
+			}
+
+			conn.close();
+
+			try {
+				int rows = ps1.executeUpdate();
+			} catch (Throwable e) {
+				passed = true;
+			}
+			if (!passed)
+				System.out.println("FAIL -- able to insert after disconnect");
+
+		} catch (Throwable e) {
+			e.printStackTrace();
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		System.out.println("Test repeat finished");
+	}
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+#
+# This file passes StatementCache on the connection URL for coverage.
+#
+#
+database=jdbc:derby:wombat;create=true;derby.language.StatementCache=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/repeat_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+#
+# This properties file is for the repeat test.
+# its configuration's only difference from the default configuration
+# is that it runs with the statement cache.
+#
+# This file is expected to be placed into $WS/systest/out by
+# the run script, and expects to be run in an environment where
+# the property derby.system.home points to $WS/systest/out.
+#
+# this test tests caching:
+derby.language.statementCacheSize=1000
+derby.debug.true=StatementCacheInfo
+derby.infolog.append=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/schemas.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/schemas.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,576 @@
+--
+-- this test shows the current supported schema functionality, which
+-- isn't much.  Currently, we have no CREATE SCHEMA statement, though
+-- we do understand schema names in table names
+--
+-- Catalog names are not supported, and result in syntax errors when used.
+--
+
+create table myschem.t(c int);
+
+insert into t values (1);
+insert into blah.t values (2);
+insert into blah.blah.t values (3);
+insert into blah.blah.blah.t values (3);
+
+select "goofy name".t.c  from "goofy name".t;
+
+-- catalog name not supported:
+create table mycat.myschem.s(c int);
+
+-- name too long:
+create table myworld.mycat.myschem.s(c int);
+
+create table myschem.s(c int);
+
+insert into s values (1);
+insert into honk.s values (2);
+insert into honk.blat.s values (3);
+insert into loud.honk.blat.s values (4);
+
+-- Catalog names in column expressions cause syntax errors.  Rather than
+-- fix this, I am checking it in this way, considering that no client we
+-- know of uses catalogs.
+--							-	Jeff
+--
+-- select honk.blat.s.c from honk.blat.s;
+
+drop table xyzzy.t;
+
+-- catalog name not supported:
+drop table goodness.gosh.s;
+
+-- finds s, schema name ignored:
+drop table gosh.s;
+
+-- tests for qualified names in select, relative to method invocations
+create table mytab (i int);
+create table APP.mytab2 (i int);
+
+insert into mytab values 1,2,3;
+insert into APP.mytab2 values 1,2,3;
+
+-- plain and just table names match up fine
+select i, mytab.i from mytab;
+
+-- schema names on columns
+select APP.mytab2.i from APP.mytab2;
+select APP.mytab2.i from mytab2;
+select mytab2.i from APP.mytab2;
+
+-- schema names correlation names:
+select m.i from APP.mytab2 m;
+
+-- syntax errors on catalog names
+select nocatalogs.APP.mytab.i from mytab2;
+
+drop table mytab;
+drop table APP.mytab2;
+
+------------------------------------------------
+--
+-- Now, we'll try to create and drop some schemas
+--
+------------------------------------------------
+create schema app;
+create schema sys;
+
+-- negative drop test
+drop schema does_not_exist RESTRICT;
+
+-- negative create test - should not be able to create existing system schemas;
+create schema app;
+create schema APP;
+create schema sys;
+create schema SYS;
+create schema sysibm;
+create schema SYSIBM;
+create schema syscat;
+create schema SYSCAT;
+create schema sysfun;
+create schema SYSFUN;
+create schema sysproc;
+create schema SYSPROC;
+create schema sysstat;
+create schema SYSSTAT;
+create schema syscs_diag;
+create schema SYSCS_DIAG;
+create schema syscs_util;
+create schema SYSCS_UTIL;
+create schema nullid;
+create schema NULLID;
+create schema sqlj;
+create schema SQLJ;
+
+-- negative create test - should not be able to objects in system schemas
+create table syscat.foo1 (a int);
+create table sysfun.foo2 (a int);
+create table sysproc.foo3 (a int);
+create table sysstat.foo4 (a int);
+create table syscs_diag.foo6 (a int);
+create table nullid.foo7 (a int);
+create table sysibm.foo8 (a int);
+create table sqlj.foo8 (a int);
+create table syscs_util.foo9 (a int);
+create table SYSCAT.foo1 (a int);
+create table SYSFUN.foo2 (a int);
+create table SYSPROC.foo3 (a int);
+create table SYSSTAT.foo4 (a int);
+create table SYSCS_DIAG.foo6 (a int);
+create table SYSIBM.foo8 (a int);
+create table SQLJ.foo8 (a int);
+create table SYSCS_UTIL.foo9 (a int);
+
+-- negative drop test - should not be able to drop system schema's
+drop schema app RESTRICT;
+drop schema APP RESTRICT;
+drop schema sys RESTRICT;
+drop schema SYS RESTRICT;
+drop schema sysibm RESTRICT;
+drop schema SYSIBM RESTRICT;
+drop schema syscat RESTRICT;
+drop schema SYSCAT RESTRICT;
+drop schema sysfun RESTRICT;
+drop schema SYSFUN RESTRICT;
+drop schema sysproc RESTRICT;
+drop schema SYSPROC RESTRICT;
+drop schema sysstat RESTRICT;
+drop schema SYSSTAT RESTRICT;
+drop schema syscs_diag RESTRICT;
+drop schema SYSCS_DIAG RESTRICT;
+drop schema syscs_util RESTRICT;
+drop schema SYSCS_UTIL RESTRICT;
+drop schema nullid RESTRICT;
+drop schema NULLID RESTRICT;
+drop schema sqlj RESTRICT;
+drop schema SQLJ RESTRICT;
+
+create schema app;
+set schema app;
+create table test (a int);
+-- negative create test - should not be able to objects in system schemas
+set schema syscat;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema sysfun;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema sysproc;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema sysstat;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema sysstat;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema syscs_diag;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema syscs_util;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema nullid;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema sysibm;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema sqlj;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSCAT;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSFUN;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSPROC;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSSTAT;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSSTAT;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSCS_DIAG;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSCS_UTIL;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema NULLID;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SYSIBM;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+set schema SQLJ;
+create table foo1 (a int);
+create view foo1 as select * from app.test;
+
+-- Negative tests. Disable use of schemas starting with SYS
+set schema app;
+create table t1 (c1 int);
+create trigger sysblah.trig1 after update of c1 on t1 for each row mode db2sql insert into t1 values 1;
+create procedure sysblah.dummy() language java external name 'NotReallyThere.NoMethod' parameter style java;
+drop table t1;
+
+set schema app;
+
+-- create a schema
+create schema test;
+
+-- create it again, should fail
+create schema test;
+
+-- verify it
+select schemaname, authorizationid 
+	from sys.sysschemas 
+	where schemaname = 'TEST';
+
+-- create a table in test
+set schema test;
+create table sampletab (c1 int check (c1 > 1), c2 char(20));
+insert into sampletab values (1,'in schema: TEST');
+insert into sampletab values (2,'in schema: TEST');
+
+-- verify it
+select schemaname, tablename, descriptor
+	from sys.sysschemas s, sys.sysconglomerates c , sys.systables t
+	where t.tablename = 'SAMPLETAB' 
+		and s.schemaid = c.schemaid
+		and c.tableid = t.tableid;
+
+-- do some ddl on said table
+create index ixsampletab on sampletab(c1);
+create index ix2sampletab on test.sampletab(c1);
+create view vsampletab as select * from sampletab;
+create view v2sampletab as select * from test.sampletab;
+alter table sampletab add column c3 int;
+
+-- switch schemas
+set schema APP;
+
+-- create table with same name in APP
+create table sampletab (c1 int check(c1 > 1), c2 char(20));
+insert into sampletab values (2,'in schema: APP');
+
+-- verify it
+--
+select schemaname, tablename, descriptor as descr
+from sys.sysschemas s, sys.sysconglomerates c , sys.systables t
+where t.tablename = 'SAMPLETAB' 
+	and s.schemaid = c.schemaid
+	and c.tableid = t.tableid
+order by schemaname, tablename;
+
+-- select from both the tables
+select * from sampletab;
+select * from test.sampletab;
+
+-- switch to the test schema
+set schema test;
+
+select * from sampletab;
+select * from app.sampletab;
+
+-- try a drop, should fail since we haven't
+-- cleaned out everything in the schema
+drop schema test RESTRICT;
+
+-- make sure use the correct schema for various ddl
+drop view vsampletab;
+drop view v2sampletab;
+drop index ixsampletab;
+drop index ix2sampletab;
+alter table sampletab add column c4 int;
+select * from sampletab;
+
+-- get rid of last object in test
+drop table sampletab;
+
+-- try a drop now, should be ok
+drop schema test RESTRICT;
+
+-- use quoted id
+create schema "heLLo";
+create schema "sys";
+
+-- should fail
+drop schema "hello" RESTRICT;
+
+-- ok
+drop schema "heLLo" RESTRICT;
+drop schema "sys" RESTRICT;
+
+-- try prepared statements, should fail
+prepare createSchema as 'create schema ?';
+prepare dropSchema as 'drop schema ? RESTRICT';
+
+
+--
+-- specific drop schema tests, all should fail
+--
+create schema x;
+set schema x;
+
+create view vx as select * from sys.sysschemas;
+drop schema x RESTRICT;
+drop view x.vx;
+
+create table x (x int);
+drop schema x restrict;
+drop table x.x;
+
+-- syntax not supported yet (but is in the parser)
+drop schema x cascade;
+
+set schema app;
+drop schema x restrict;
+--
+-- test using schema names and correlation names
+-- first test simple use of schema names
+create schema test;
+set schema test;
+autocommit off;
+
+-- create the all type tables
+create table s (i int, s smallint, c char(30), vc char(30));
+create table t (i int, s smallint, c char(30), vc char(30));
+create table tt (ii int, ss smallint, cc char(30), vcvc char(30));
+create table ttt (iii int, sss smallint, ccc char(30), vcvcvc char(30));
+
+-- populate the tables
+insert into s values (null, null, null, null);
+insert into s values (0, 0, '0', '0');
+insert into s values (1, 1, '1', '1');
+
+insert into t values (null, null, null, null);
+insert into t values (0, 0, '0', '0');
+insert into t values (1, 1, '1', '1');
+insert into t values (1, 1, '1', '1');
+
+insert into tt values (null, null, null, null);
+insert into tt values (0, 0, '0', '0');
+insert into tt values (1, 1, '1', '1');
+insert into tt values (1, 1, '1', '1');
+insert into tt values (2, 2, '2', '2');
+
+insert into ttt values (null, null, null, null);
+insert into ttt values (11, 11, '11', '11');
+insert into ttt values (11, 11, '11', '11');
+insert into ttt values (22, 22, '22', '22');
+
+commit;
+set schema app;
+
+-- test simple statements which use schema names
+insert into test.t values (2, 2, '2', '2');
+update test.t set s = 2 where i = 2;
+update test.t set s = 2 where test.t.i = 2;
+delete from test.t where i = 1;
+select * from test.t;
+insert into test.t values (1, 1, '1', '1');
+insert into test.t values (1, 1, '1', '1');
+
+-- test correlated names with tables and schema names
+select * from test.t t1;
+
+-- test subqueries
+
+select * from test.s where exists (select test.s.* from test.t);
+select * from test.s t where exists (select t.* from test.t);
+select * from test.s u where exists (select u.* from test.t);
+
+-- column reference in select list
+select * from test.s where exists (select i from test.t);
+select * from test.s where exists (select test.t.i from test.t);
+
+-- derived table in the from list
+select 1 from test.s where exists (select * from (select * from test.t) x);
+select 1 from test.s where exists (select * from (select * from test.t) x (i, s, c, vc) );
+
+-- subquery in derived table
+select * from 
+(select * from test.s where exists (select * from test.t) and i = 0) a;
+
+-- exists under an OR
+select * from test.s where (1=2) or exists (select * from test.t);
+select * from test.s where (1=1) or exists (select * from test.t where (1=2));
+
+-- expression subqueries
+-- non-correlated
+select * from test.s where i = (select i from test.t where i = 0);
+
+-- ? parameter on left hand side of expression subquery
+prepare subq1 as 'select * from test.s where ? = (select i from test.t where i = 0)';
+execute subq1 using 'values (0)';
+remove subq1;
+
+
+-- subquery = subquery
+select * from test.s where
+(select i from test.t where i = 0) = (select s from test.t where s = 0);
+
+select * from test.s t1 where
+(select i from test.t t2 where i = 0) = (select s from test.t t3 where s = 0);
+
+-- multiple subqueries at the same level
+select * from test.s 
+where i = (select s from test.t where s = 0) and
+	  s = (select i from test.t where i = 2);
+
+-- nested subqueries
+select * from test.s 
+where i = (select i from test.t where s = (select i from test.t where s = 2));
+
+select * from test.s  t1
+where i = (select i from test.t t2 where s = (select i from test.t t3 where s = 2));
+-- correlated subqueries
+
+-- negative tests
+
+-- exists disallowed in select clause
+select (exists (select * from test.ttt 
+				where iii = (select 11 from test.tt where ii = i and ii <> 1)) ) from test.s;
+
+-- multiple matches at parent level
+select * from test.s, test.t where exists (select i from test.tt);
+-- match is against base table, but not derived column list
+select * from test.s ss (c1, c2, c3, c4) where exists (select i from test.tt);
+select * from test.s ss (c1, c2, c3, c4) where exists (select ss.i from test.tt);
+-- correlation name exists at both levels, but only column match is at
+-- parent level
+select * from test.s where exists (select s.i from test.tt s);
+-- only match is at peer level
+select * from test.s where exists (select * from test.tt) and exists (select ii from test.t);
+-- correlated column in a derived table
+select * from test.s, (select * from test.tt where test.s.i = ii) a;
+
+-- positive tests
+
+-- skip levels to find match
+select * from test.s where exists (select * from test.ttt where iii = 
+								(select 11 from test.tt where ii = i and ii <> 1)); 
+
+-- join in subquery
+select * from test.s where i in (select i from test.t, test.tt where test.s.i <> i and i = ii);
+select * from test.s t1 where i in (select i from test.t t2, test.tt t3 where t1.i <> i and i = ii);
+-- joins in both query blocks
+select test.s.i, test.t.i from test.s, test.t 
+where test.t.i = (select ii from test.ttt, test.tt where test.s.i = test.t.i and test.t.i = test.tt.ii and iii = 22 and ii <> 1);
+select t1.i, t2.i from test.s t1, test.t t2 
+where t2.i = (select ii from test.ttt t3, test.tt t4 where t1.i = t2.i and t2.i = t4.ii and iii = 22 and ii <> 1);
+
+----------------------------------
+-- update
+create table test.u (i int, s smallint, c char(30), vc char(30));
+insert into test.u select * from test.s;
+select * from test.u;
+
+update test.u set i = 2
+where vc <> (select vc from test.s where vc = '1');
+select * from test.u;
+
+delete from test.u;
+insert into test.u select * from test.s;
+
+-- delete
+delete from test.u where c < (select c from test.t where c = '2');
+select * from test.u;
+
+
+
+
+-- reset autocommit
+autocommit on;
+
+-- bug 5146 - drop schema did not invalidate plan for create table.
+-- now schemas are implictly created.
+create schema B5146;
+create table B5146.DT(i int);
+insert into B5146.DT values 5146, 6415;
+
+
+create schema A5146;
+prepare PS5146_TABLE as 'create table A5146.I(i int)';
+drop schema A5146 restrict;
+execute PS5146_TABLE;
+insert into A5146.I values 3;
+select * from A5146.I;
+drop table A5146.I;
+
+prepare PS5146_VIEW as 'create view A5146.V AS SELECT * FROM B5146.DT';
+drop schema A5146 restrict;
+execute PS5146_VIEW;
+select * from A5146.V;
+drop view A5146.V;
+
+prepare PS5146_TRIGGER as 'create trigger A5146.DT_TRIG AFTER INSERT ON B5146.DT FOR EACH STATEMENT MODE DB2SQL UPDATE  B5146.DT SET I = I + 1';
+drop schema A5146 restrict;
+execute PS5146_TRIGGER;
+drop trigger A5146.DT_TRIG;
+
+prepare PS5146_PROCEDURE as 'create procedure A5146.DUMMY() language java external name ''asdf.asdf'' parameter style java';
+drop schema A5146 restrict;
+execute PS5146_PROCEDURE;
+drop procedure A5146.DUMMY;
+
+-- check implicit schema creation for all CREATE statements that create schema objects.
+-- TABLE,VIEW,PROCEDURE TRIGGER, STATEMENT
+-- Cloudscape requires that the INDEX schema matches the (existing) table schema so
+-- there is no implict schema creation for CREATE INDEX.
+
+prepare ISC_TABLE as 'create table ISC.I(i int)';
+execute ISC_TABLE;
+insert into ISC.I values 3;
+select * from ISC.I;
+drop table ISC.I;
+drop schema ISC restrict;
+
+prepare ISC_VIEW as 'create view ISC.V AS SELECT * FROM B5146.DT';
+execute ISC_VIEW;
+select * from ISC.V;
+drop view ISC.V;
+drop schema ISC restrict;
+
+prepare ISC_TRIGGER as 'create trigger ISC.DT_TRIG AFTER INSERT ON B5146.DT FOR EACH STATEMENT MODE DB2SQL UPDATE  B5146.DT SET I = I + 1';
+execute ISC_TRIGGER;
+insert into B5146.DT values 999;
+drop trigger ISC.DT_TRIG;
+drop schema ISC restrict;
+select * from B5146.DT;
+
+prepare ISC_PROCEDURE as 'create procedure ISC.DUMMY() language java external name ''asdf.asdf'' parameter style java';
+execute ISC_PROCEDURE;
+CALL ISC.DUMMY();
+drop procedure ISC.DUMMY;
+drop schema ISC restrict;
+
+-- check declare of a temp table does not create a SESSION schema.
+DECLARE GLOBAL TEMPORARY TABLE SESSION.ISCT(c21 int) on commit delete rows not logged;
+select count(*) from SYS.SYSSCHEMAS WHERE SCHEMANAME = 'SESSION';
+drop table SESSION.ISCT;
+
+drop table B5146.DT;
+drop schema B5146 restrict;
+
+create schema SYSDJD;
+drop schema SYSDJD restrict;
+
+create schema "sys";
+drop schema "sys" restrict;
+
+set schema test;
+
+-- drop the tables
+drop table s;
+drop table t;
+drop table tt;
+drop table ttt;
+drop table u;
+set schema app;
+drop schema test restrict;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/select.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/select.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,104 @@
+--
+-- this test shows the current supported select functionality
+--
+
+
+create table t(i int, s smallint);
+insert into t (i,s) values (1956,475);
+
+-- select a subset of the columns
+select i from t;
+
+-- select all columns in order
+select i,s from t;
+
+-- select columns out of order
+select s,i from t;
+
+-- select with repeating columns
+select i,i,s,s,i,i from t;
+
+-- select with constants
+select 10 from t;
+
+-- select with table name
+select t.i from t;
+
+-- select with correlation name
+select b.i from t b;
+
+-- select *
+select * from t;
+
+-- select * and constants and columns 
+select *, 10, i from t;
+
+-- select correlation name dot star
+select b.* from t b;
+
+-- select table name dot star
+select t.* from t;
+
+-- believe it or not, the next query is valid
+(select * from t);
+
+-- negative testing
+-- non-boolean where clause
+-- (only put here due to small size of this test)
+select * from t where i;
+
+-- invalid correlation name for "*"
+select asdf.* from t; 
+
+-- cleanup
+drop table t;
+
+-- Beetle 5019.  We had a failure in V5.1.20.
+CREATE SCHEMA CONTENT;
+CREATE TABLE CONTENT.CONTENT (ID INTEGER NOT NULL, CREATOR VARCHAR(128) NOT NULL, CREATION_DATE DATE NOT NULL, URL VARCHAR(256) NOT NULL, TITLE VARCHAR(128) NOT NULL, DESCRIPTION VARCHAR(512) NOT NULL, HEIGHT INTEGER NOT NULL, WIDTH INTEGER NOT NULL);
+ALTER TABLE CONTENT.CONTENT ADD CONSTRAINT CONTENT_ID PRIMARY KEY (ID);
+CREATE TABLE CONTENT.STYLE (ID INTEGER NOT NULL,DESCRIPTION VARCHAR(128) NOT NULL);
+ALTER TABLE CONTENT.STYLE ADD CONSTRAINT STYLE_ID PRIMARY KEY (ID);
+CREATE TABLE CONTENT.CONTENT_STYLE  (CONTENT_ID INTEGER NOT NULL, STYLE_ID INTEGER NOT NULL);
+ALTER TABLE CONTENT.CONTENT_STYLE ADD CONSTRAINT CONTENTSTYLEID PRIMARY KEY (CONTENT_ID, STYLE_ID);
+CREATE TABLE CONTENT.KEYGEN (KEYVAL INTEGER NOT NULL, KEYNAME VARCHAR(256) NOT NULL);
+ALTER TABLE CONTENT.KEYGEN  ADD CONSTRAINT PK_KEYGEN PRIMARY KEY (KEYNAME);
+CREATE TABLE CONTENT.RATING  (ID INTEGER NOT NULL,RATING DOUBLE PRECISION NOT NULL,ENTRIES DOUBLE PRECISION NOT NULL);
+ALTER TABLE CONTENT.RATING ADD CONSTRAINT PK_RATING PRIMARY KEY (ID);
+
+INSERT INTO CONTENT.STYLE VALUES (1, 'BIRD');
+INSERT INTO CONTENT.STYLE VALUES (2, 'CAR');
+INSERT INTO CONTENT.STYLE VALUES (3, 'BUILDING');
+INSERT INTO CONTENT.STYLE VALUES (4, 'PERSON');
+
+INSERT INTO CONTENT.CONTENT values(1, 'djd', CURRENT DATE, 'http://url.1', 'title1', 'desc1', 100, 100);
+INSERT INTO CONTENT.CONTENT values(2, 'djd', CURRENT DATE, 'http://url.2', 'title2', 'desc2', 100, 100);
+INSERT INTO CONTENT.CONTENT values(3, 'djd', CURRENT DATE, 'http://url.3', 'title3', 'desc3', 100, 100);
+INSERT INTO CONTENT.CONTENT values(4, 'djd', CURRENT DATE, 'http://url.4', 'title4', 'desc4', 100, 100);
+INSERT INTO CONTENT.CONTENT values(5, 'djd', CURRENT DATE, 'http://url.5', 'title5', 'desc5', 100, 100);
+
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(1,1);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(1,2);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(2,1);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(2,4);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(3,3);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(3,4);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(3,1);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(4,4);
+INSERT INTO CONTENT.CONTENT_STYLE VALUES(5,1);
+
+
+INSERT INTO CONTENT.RATING VALUES(1, 4.5, 1);
+INSERT INTO CONTENT.RATING VALUES(2, 4.0, 1);
+INSERT INTO CONTENT.RATING VALUES(3, 3.9, 1);
+INSERT INTO CONTENT.RATING VALUES(4, 4.1, 1);
+INSERT INTO CONTENT.RATING VALUES(5, 4.0, 1);
+
+select S.DESCRIPTION, FAV.MAXRATE, C.TITLE, C.URL FROM CONTENT.RATING R, CONTENT.CONTENT C, CONTENT.STYLE S, CONTENT.CONTENT_STYLE CS, (select S.ID, max(rating) from CONTENT.RATING R, CONTENT.CONTENT C, CONTENT.STYLE S, CONTENT.CONTENT_STYLE CS group by S.ID) AS FAV(FID,MAXRATE) where R.ID = C.ID AND C.ID = CS.CONTENT_ID AND CS.STYLE_ID = FAV.FID AND FAV.FID = S.ID AND FAV.MAXRATE = R.RATING;
+
+drop table content.rating;
+drop table content.content_style;
+drop table content.content;
+drop table content.style;
+drop table content.keygen;
+drop schema content restrict;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1071 @@
+-- this test relies heavily on old statistics functionality that is no longer supported and hence taking this test out of nightly suite.
+maximumdisplaywidth 5000;
+
+
+create table two (x int);
+insert into two values (1),(2);
+
+create table ten (x int);
+insert into ten values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+
+create table twenty (x int);
+insert into twenty values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19),(20);
+
+create table hundred (x int generated always as identity, dc int);
+insert into hundred (dc) select t1.x from ten t1, ten t2;
+
+create table template (id int not null generated always as identity,
+					   two int, twenty int, hundred int);
+
+-- 4000 rows.
+insert into template (two, twenty, hundred)
+	   select two.x, twenty.x, hundred.x from two, twenty, hundred;
+
+create index template_two on template(two);
+create index template_twenty on template(twenty);
+
+-- 20 distinct values.
+create index template_22 on template(twenty,two);
+
+create unique index template_id on template(id);
+
+create index template_102 on template(hundred,two);
+
+create table test (id int, two int, twenty int, hundred int);
+create index test_id on test(id);
+insert into test select * from template;
+
+create view showstats as
+select cast (conglomeratename as varchar(20)) indexname, 
+	   cast (statistics->toString() as varchar(40)) stats,
+	   creationtimestamp createtime, 
+	   colcount ncols
+from sys.sysstatistics, sys.sysconglomerates 
+where conglomerateid = referenceid;
+
+select * from showstats order by indexname, stats, createtime, ncols;
+
+update statistics for table template;
+update statistics for table test;
+
+create table rts_table 
+(
+	id int generated always as identity,
+    comments  varchar(128),
+	stats boolean,
+	rts double
+);
+
+--- SINGLE COLUMN TESTS------
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+
+-- choose whatever plan you want but the row estimate should be.
+-- (n * n) * 0.5
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed test, template
+where test.two = template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on two, template inner, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+ 
+-- choose hash join. selectivity should be the same.
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=hash 
+where test.two = template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on two. template inner, hash join,  all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+-- choose NL join. selectivity should be the same.
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.two = template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on two. template inner, NL, no index, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_two
+where test.two = template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on two. template inner, NL, index=two, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+
+select id, comments, rts
+from rts_table where comments like 'join on two%';
+
+-- do joins on 20
+-- first do NL
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_twenty
+where test.twenty = template.twenty';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty. template inner, NL, index=template_twenty, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+-- join on 20 but using index 20_2. cost as well as selectivity
+-- should be divided using selectivity. cost should almost be the
+-- same as using template_twenty but a shade more...
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_22
+where test.twenty = template.twenty';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty. template inner, NL, index=template_22, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+-- join on twenty but no index.
+-- rc should be divided using selectivity. cost should be way different!
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.twenty = template.twenty';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty. template inner, NL, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on twenty%';
+
+-- still single column, try stuff on 100 but with extra qualification.
+-- on outer table.
+-- row count is 100 * 4000 * 0.01 = 4000
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_102
+where test.hundred = template.hundred and test.id <= 100';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. template inner, NL, index=template_102, 100 rows from outer.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.hundred = template.hundred and test.id <= 100';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. template inner, NL, index=null, 100 rows from outer .', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=hash, index=null
+where test.hundred = template.hundred and test.id <= 100';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. template inner, hash, index=null, 100 rows from outer.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on hundred%';
+
+
+-- multi predicate tests.
+-- first do a join involving twenty and two.
+-- force use of a single column index to do the join.
+-- the row count should involve statistics from both
+-- 10 and 2 though....
+
+-- row count should 4K * 4K * 1/40= 400,000
+-- cost doesn't show up in runtest output but should depend on the
+-- index being used. verify by hand before checking in.
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=hash, index=null
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. template inner, hash, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_two
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. template inner, NL, index=template_two, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_twenty
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. template inner, NL, index=template_twenty, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_22
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. template inner, NL, index=template_22, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on twenty/two%';
+
+-- multi predicate tests continued.
+-- drop index twenty,two -- use above predicates. should
+-- be smart enough to figure out the selectivity
+-- by combining twenty and two.
+
+drop index template_22;
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=hash, index=null
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. index twenty_two dropped. template inner, hash, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_two
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. index twenty_two dropped. template inner, NL, index=template_two, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_twenty
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. index twenty_two dropped. template inner, NL, index=template_twenty, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+
+select id, comments, rts
+from rts_table where comments like 'join on twenty/two. index twenty_two dropped%';
+
+drop index template_two;
+-- we only have index template_twenty-- for the 
+-- second predicate we should use 0.1 instead of 0.5
+-- thus reducing earlier row count by a factor of 5.
+-- 80,000 instead of 400000
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. index twenty_two and two dropped. template inner, NL, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_twenty
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. index twenty_two and two dropped. template inner, NL, index=template_twenty, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on twenty/two. index twenty_two and two dropped%';
+
+-- now drop index template_twenty.
+-- selectivity should become 0.1 * 0.1 = 0.01.
+-- 16 * 10^6 * .01 = 160,000
+drop index template_twenty;
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.twenty = template.twenty and test.two=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on twenty/two. all indexes dropped. template inner, NL, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on twenty/two. all indexes dropped%';
+
+
+
+create index template_two on template(two);
+create index template_twenty on template(twenty);
+create index template_22 on template(twenty,two);
+
+update statistics for table template;
+
+-- throw in additional predicates
+-- see that the optimizer does the right thing. 
+-- index on template_102. join on hundred, 
+-- constant predicate on two. should be able to use
+-- statistics for hundred_two to come up with row estimate.
+
+-- selectivity should be 0.01 * 0.5 == 0.005.
+-- row count is 16*10^6 * 0.005 = 8*10^4.
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.hundred = template.hundred and 1=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. constant pred on two. NL, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+-- JUST retry above query with different access paths-- 
+-- row count shouldn't change! 
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_102
+where test.hundred = template.hundred and 1=template.two';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. constant pred on two. NL, index=template_102, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on hundred. constant pred on two%';
+
+-- hundred and twenty-- we can use statistics for 100,2 to get
+-- selectivity for 100 and twenty to get selectivity for 20.
+-- selectivity should 0.01 * 0.05 = 0.0005 -> 80,000
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=null
+where test.hundred = template.hundred and 1=template.twenty';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. constant pred on twenty. NL, index=null, all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+get cursor c as 
+'select template.id
+from properties joinOrder=fixed 
+test, template properties joinStrategy=nestedLoop, index=template_102
+where test.hundred = template.hundred and 1=template.twenty';
+
+close c;
+
+insert into rts_table 
+	   values (default, 'join on hundred. constant pred on twenty. NL, index=template_102 all rows.', true, runtimestatistics()->getEstimatedRowCount());  
+
+select id, comments, rts
+from rts_table where comments like 'join on hundred. constant pred on twenty%';
+
+
+-- some 3 way joins.
+
+--drop table template;
+--drop table test;
+
+-- 4000
+create table t1 (id int generated always as identity, two int, twenty int, hundred varchar(3));
+insert into t1 (hundred, twenty, two) select CAST(CHAR(hundred.x) AS VARCHAR(3)), twenty.x, two.x from hundred, twenty, two;
+
+create table t2 (id int generated always as identity, two int, twenty int, hundred varchar(3));
+insert into t2 (hundred, twenty, two) select CAST(CHAR(hundred.x) AS VARCHAR(3)) , twenty.x, two.x from hundred, twenty, two;
+
+create table t3 (id int generated always as identity, two int, twenty int, hundred varchar(3));
+insert into t3 (hundred, twenty, two) select CAST(CHAR(hundred.x) AS VARCHAR(3)), twenty.x, two.x from hundred, twenty, two;
+
+create index t1_hundred on t1(hundred);
+create index t1_two_twenty on t1(two,twenty);
+create index t1_twenty_hundred on t1(twenty, hundred);
+
+create index t2_hundred on t2(hundred);
+create index t2_two_twenty on t2(two,twenty);
+create index t2_twenty_hundred on t2(twenty, hundred);
+
+create index t3_hundred on t3(hundred);
+create index t3_two_twenty on t3(two,twenty);
+create index t3_twenty_hundred on t3(twenty, hundred);
+
+update statistics for table t1;
+update statistics for table t2;
+update statistics for table t3;
+
+select * from showstats where indexname like 'T1%' order by indexname;
+select * from showstats where indexname like 'T2%' order by indexname;
+select * from showstats where indexname like 'T3%' order by indexname;
+
+
+-- t1 x t2 yields 8000 rows.
+-- x t3 yield 8*4 * 10^6 / 2= 16*10^6.
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2, t3 
+where t1.hundred=t2.hundred and t1.twenty = t2.twenty and  t2.two = t3.two';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- t1 x t2 --> 16 * 10^4.
+-- x t3    --> 32 * 10^7.
+-- additional pred --> 32 * 10^5.
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2, t3 
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- variations on above query: try different join strategies.
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2, t3 properties joinStrategy=hash
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2, t3 properties joinStrategy=nestedLoop
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2 properties joinStrategy=nestedLoop, t3 
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2 properties joinStrategy=hash, t3 
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+
+-- duplicate predicates; this time t1.hundred=?
+-- will show up twice when t1 is optimized at the end.
+-- selectivity should be same as above!
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t2, t3, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- variations on above query: try different join strategies.
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t3, t2, t1 properties joinStrategy=hash
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t3, t2, t1 properties joinStrategy=nestedLoop
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t2, t3 properties joinStrategy=nestedLoop, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t3, t2 properties joinStrategy=hash, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- some more variations on the above theme
+-- some constant predicates thrown in.
+-- remember hundred is a char column-- for some reason if you give the constant 
+-- as a numeric argument it doesn't recognize that as a constant start/stop 
+-- value for the index (is this a bug?)
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t2, t3, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred and t1.hundred = ''1''';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- we have t1.100=t2.100 and t1.100=t3.100, so t2.100=t3.100 is redundant
+-- row count shouldn't factor in the redundant predicate.
+-- row count should be 3200000.0
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t2, t3, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t1.hundred = t3.hundred and t2.hundred = t3.hundred';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- slightly different join predicates-- use composite stats.
+-- t1 x t2			  --> 16 * 10.4.
+--         x t3		  --> 16 * 10.4 * 4000 * 1/40 = 16*10.6
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t2, t3, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- same as above but muck around with join order.
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t2, t3
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t2, t1, t3
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t1, t3, t2
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t3, t2, t1
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 
+'select t1.id 
+from properties joinOrder=fixed t3, t1, t2
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- and just for fun, what would we have gotton without statistics.
+get cursor c as 
+'select t1.id 
+from properties useStatistics=false, joinOrder=fixed t3, t1, t2
+where t1.hundred=t2.hundred and t2.two=t3.two and t2.twenty=t3.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount() / 1000;
+
+-- gosh what now? I'm tired of writing queries....
+-- make sure we do a good job of stats on 1/3.
+
+create table scratch_table (id int, two int, twenty int, hundred int);
+insert into scratch_table select id, two, twenty, CAST(CHAR(hundred) AS INTEGER) from t1;
+
+create index st_all on scratch_table (two, twenty, hundred);
+update statistics for table scratch_table;
+
+-- since the statistics (rowEstimates) are not precise, force a checkpoint
+-- to force out all the row counts to the container header, and for good
+-- measure do a count which will update the row counts exactly.
+
+CALL SYSCS_UTIL.SYSCS_CHECKPOINT_DATABASE();
+
+select count(*) from t1;
+select count(*) from scratch_table;
+
+-- preds are on columns 1 and 3.
+-- should use default stats for 100 (0.1) and 0.5 for two.
+
+-- 16*10.6 * 5*10.-2 = 80*10.4
+get cursor c as
+'select s.id
+from properties joinOrder=fixed t1, scratch_table s
+where t1.two=s.two  and s.hundred= CAST(CHAR(t1.hundred) AS INTEGER)';
+
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+-- preds are on column 2.
+-- 0.1 --> 16*10.5
+get cursor c as
+'select s.id
+from properties joinOrder=fixed t1, scratch_table s
+where t1.twenty=s.twenty';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- pred are on column 2,3
+-- 0.01 --> 16*10.4
+get cursor c as
+'select s.id
+from properties joinOrder=fixed t1, scratch_table s
+where t1.twenty=s.twenty  and s.hundred = CAST(CHAR(t1.hundred) AS INTEGER)';
+
+close c;
+
+values runtimestatistics()->getEstimatedRowCount();
+
+-- test of statistics matcher algorithm; make sure that 
+-- we choose the best statistics (the weight stuff in
+-- predicatelist).
+
+-- 2,20,100
+get cursor c as 'select t1.id from t1, t2 where t1.two=t2.two and t1.twenty=t2.twenty and t1.hundred=t2.hundred';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+-- now muck around with the order of the predicates.
+--2,100,20
+get cursor c as 'select t1.id from t1, t2 where t1.two=t2.two and t1.hundred=t2.hundred and t1.twenty=t2.twenty ';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+--100,20,2
+get cursor c as 'select t1.id from t1, t2 where t1.hundred=t2.hundred and t1.twenty=t2.twenty and t1.two=t2.two';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+--100,2,20
+get cursor c as 'select t1.id from t1, t2 where t1.hundred=t2.hundred and t1.two=t2.two and t1.twenty=t2.twenty ';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 'select t1.id from t1, t2 where t1.twenty=t2.twenty  and t1.hundred=t2.hundred and t1.two=t2.two ';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+get cursor c as 'select t1.id from t1, t2 where t1.twenty=t2.twenty  and t1.two=t2.two and t1.hundred=t2.hundred';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+--Beetle 4321
+-- check what happens when we need to remove non-continguous predicates
+create table complex (id int generated always as identity,
+					   two int, twenty int, hundred int, a int, b int);
+insert into complex (two, twenty, hundred, a, b)
+	   select two.x, twenty.x, hundred.x, two.x, twenty.x from two, twenty, hundred;
+create index complexind on complex(two, twenty, hundred, a, b);
+
+-- since the statistics (rowEstimates) are not precise
+-- we force them to be updated for some queries.
+select count(*) from complex;
+select count(*) from template;
+
+get cursor c as 'select t1.two from complex t1, template t2 where t1.two = 1 and t1.hundred = 2 and t1.a = 2 and t1.b = 2';
+close c;
+values runtimestatistics()->getEstimatedRowCount();
+
+drop table two;
+drop table ten;
+drop table twenty;
+drop table hundred;
+drop table template;
+drop table test;
+drop table rts_table;
+drop table t1;
+drop table t2;
+drop table t3;
+drop table scratch_table;
+drop table complex;
+drop view showstats;
+-- basic tests for update statistics; make sure that 
+-- statistics with correct values are created and dropped
+-- and such.
+
+create view showstats as
+select cast (conglomeratename as varchar(20)) indexname, 
+	   cast (statistics->toString() as varchar(40)) stats,
+	   creationtimestamp createtime, 
+	   colcount ncols
+from sys.sysstatistics, sys.sysconglomerates 
+where conglomerateid = referenceid;
+
+-- first on int, multi-column
+create table t1 (c1 int generated always as identity, c2 int, c3 int);
+
+insert into t1 values (default, 1, 1);
+insert into t1 values (default, 1, 1);
+insert into t1 values (default, 1, 2);
+insert into t1 values (default, 1, 2);
+
+insert into t1 values (default, 2, 1);
+insert into t1 values (default, 2, 1);
+insert into t1 values (default, 2, 2);
+insert into t1 values (default, 2, 2);
+
+insert into t1 values (default, 3, 1);
+insert into t1 values (default, 3, 1);
+insert into t1 values (default, 3, 2);
+insert into t1 values (default, 3, 2);
+
+insert into t1 values (default, 4, 1);
+insert into t1 values (default, 4, 1);
+insert into t1 values (default, 4, 2);
+insert into t1 values (default, 4, 2);
+
+-- create index should automatically create stats.
+create index t1_c1c2 on t1 (c1, c2);
+select * from showstats order by indexname, stats, createtime, ncols;
+
+-- index dropped stats should be dropped.
+drop index t1_c1c2;
+select * from showstats order by indexname, stats, createtime, ncols;
+
+
+-- second part of the test.
+-- check a few extra types.
+
+create table t2
+(
+	i int not null,
+	vc varchar(32) not null, 
+	dt date, 
+	ch char(20), 
+	constraint pk primary key (i, vc)
+);
+
+create index t2_ch_dt on t2(ch, dt);
+create index t2_dt_vc on t2(dt,vc);
+
+-- do normal inserts. 
+insert into t2 values (1, 'one', '2001-01-01', 'one');
+insert into t2 values (2, 'two', '2001-01-02', 'two');
+insert into t2 values (3, 'three', '2001-01-03', 'three');
+
+insert into t2 values (1, 'two', '2001-01-02', 'one');
+insert into t2 values (1, 'three', '2001-01-03', 'one');
+insert into t2 values (2, 'one', '2001-01-01', 'two');
+
+select * from showstats order by indexname, stats, createtime, ncols;
+
+-- do another insert then just updstat for whole table.
+insert into t2 values (2, 'three', '2001-01-03', 'two');
+
+update statistics for table t2;
+
+-- make sure that stats are correct.
+
+select * from showstats where indexname = 'T2_CH_DT' order by indexname, stats, createtime, ncols;
+select count(*) from (select distinct ch from t2) t;
+select count(*) from (select distinct ch,dt from t2) t;
+
+select * from showstats where indexname = 'T2_DT_VC' order by indexname, stats, createtime, ncols;
+select count(*) from (select distinct dt from t2) t;
+select count(*) from (select distinct dt,vc from t2) t;
+
+select stats, ncols from showstats where indexname not like 'T2%' order by stats, ncols;
+
+-- delete everything from t2, do bulkinsert see what happens.
+delete from t2;
+-- no material impact on stats.
+
+-- bulk insert; all indexes should have stats.
+insert into t2 properties insertMode=bulkInsert values (2, 'one', '2001-01-01', 'two');
+
+select * from showstats where indexname like 'T2%' order by indexname, stats, createtime, ncols;
+
+-- now try bulk insert replace.
+insert into t2 properties insertMode=replace values (2, 'one', '2001-01-01', 'two'), (1, 'one', '2001-01-01', 'two');
+
+select * from showstats where indexname like 'T2%' order by indexname, stats, createtime, ncols;
+
+drop table t2;
+
+
+-- various alter table operations to ensure correctness.
+-- 1. add and drop constraint.
+create table t3 (x int not null generated always as identity, y int not null, z int);
+insert into t3 (y,z) values (1,1),(1,2),(1,3),(1,null),(2,1),(2,2),(2,3),(2,null);
+
+select * from showstats order by indexname, stats, createtime, ncols;
+-- first alter table to add primary key;
+alter table t3 add constraint pk_t3 primary key (x,y);
+
+select stats, ncols from showstats order by stats, ncols;
+
+-- now drop the constraint
+alter table t3 drop constraint pk_t3;
+
+select * from showstats order by indexname, stats, createtime, ncols;
+
+-- try compress with tons of rows. you can never tell
+-- what a few extra pages can do :)
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+insert into t3 (y,z) select y,z from t3;
+
+select count(*) from t3;
+
+create index t3_xy on t3(x,y);
+select * from showstats order by indexname, stats, createtime, ncols;
+
+delete from t3 where z is null;
+call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP', 'T3', 0);
+
+select * from showstats order by indexname, stats, createtime, ncols; -- all should be hunky dory.
+
+drop table t3;
+
+create table t4 (x int, y int, z int);
+insert into t4 values (1,1,1);
+insert into t4 values (1,2,1);
+insert into t4 values (1,1,2);
+
+create index t4_x on t4(x);
+create index t4_xy on t4(x,y);
+create index t4_yz on t4(y,z);
+
+select * from showstats order by indexname, stats, createtime, ncols;
+
+-- if I drop column x, then stats for t4_x should get dropped
+-- index t4_xy should get rebuilt to only be on y. so one of the
+-- stats should be recreated. and t4_yz shouldn remain in its
+-- entirety.
+
+alter table t4 drop column x;
+select * from showstats order by indexname, stats, createtime, ncols;
+drop table t4;
+
+-- SPS tests make sure drop/update statistics statements
+-- get written to disk correctly.
+create table t5 (x int, y int);
+insert into t5 values (1,1), (1,2);
+create index t5_y on t5(y);
+
+insert into t5 values (2,1);
+select * from showstats order by indexname, stats, createtime, ncols;
+
+update statistics for table t5;
+select * from showstats order by indexname, stats, createtime, ncols;
+
+create index t5_x on t5(x);
+select * from showstats order by indexname, stats, createtime, ncols;
+
+drop statistics for index t5_x;
+
+-- t5_y should be there.
+select * from showstats order by indexname, stats, createtime, ncols;
+
+drop table t5;
+
+create table t6 (i int generated always as identity, j varchar(10));
+create index t6_i on t6(i);
+create index t6_j on t6(j);
+create index t6_ji on t6(j,i);
+
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'b');
+insert into t6 values (default, 'c');
+insert into t6 values (default, 'd');
+insert into t6 values (default, 'e');
+insert into t6 values (default, 'f');
+insert into t6 values (default, 'g');
+insert into t6 values (default, 'h');
+
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'b');
+insert into t6 values (default, 'c');
+insert into t6 values (default, 'd');
+insert into t6 values (default, 'e');
+insert into t6 values (default, 'f');
+insert into t6 values (default, 'g');
+insert into t6 values (default, 'h');
+insert into t6 values (default, 'i');
+
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'b');
+insert into t6 values (default, 'c');
+insert into t6 values (default, 'd');
+insert into t6 values (default, 'e');
+insert into t6 values (default, 'f');
+insert into t6 values (default, 'g');
+insert into t6 values (default, 'h');
+
+update statistics for index t6_j;
+update statistics for table t6;
+
+select * from showstats order by indexname, stats, createtime, ncols;
+delete from t6;
+
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+insert into t6 values (default, 'a');
+
+-- make the 17th row the same as the 16th;
+-- make sure we switch to the next group
+-- fetch we handle the case correctly.
+
+insert into t6 values (default, 'a');
+
+update statistics for table t6;
+select * from showstats order by indexname, stats, createtime, ncols;
+
+-- will be table with no rows.
+create table et (x int, y int);
+create index etx on et(x);
+create index ety on et(y);
+
+update statistics for index etx;
+update statistics for table et;
+
+select * from showstats where indexname like 'ET%' order by indexname, stats, createtime, ncols;
+drop table et;
+
+-- tests for nulls.
+create table null_table (x int, y varchar(2));
+create index nt_x on null_table(x desc);
+
+insert into null_table values (1,'a');
+insert into null_table values (2,'b');
+insert into null_table values (3,'c');
+
+insert into null_table values (null,'a');
+insert into null_table values (null,'b');
+insert into null_table values (null,'c');
+
+insert into null_table values (null,'a');
+insert into null_table values (null,'b');
+insert into null_table values (null,'c');
+
+update statistics for table null_table;
+
+select * from showstats where indexname = 'NT_X' order by indexname, stats, createtime, ncols;
+
+-- try composite null keys (1,null) is unique from (1,null)
+-- as is (null,1) from (null,1)
+drop index nt_x;
+
+create index nt_yx on null_table(y,x);
+
+-- the first key y has 3 unique values.
+-- the second key y,x has 9 unique values because of nulls.
+
+select * from showstats where indexname = 'NT_YX' order by indexname, stats, createtime, ncols;
+
+-- keyword autoincrement is no more supported in both Cloudscape and DB2 mode. Instead need to use generated always as identity
+create table autoinKeywordNotAllowed (x int default autoincrement, dc int);
+-- Negative test for create statement in cloudscape mode. CREATE STATEMENT is no more supported in both cloudscape and DB2 mode.
+create statement s1 as values 1,2;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+# the selectivity test fails with out of memory on jdk118 with default 1000
+# page cache.
+derby.storage.pageCacheSize=40

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/selectivity_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+derby.language.statementCacheSize=0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleScroll.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleScroll.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,81 @@
+-- simple scroll cursor tests
+create table t (a int);
+insert into t values (1),(2),(3),(4),(5);
+get scroll insensitive cursor c1 as 'select * from t';
+-- should be 1
+first c1; 
+-- should be 2
+next c1; 
+-- should be 1
+previous c1; 
+-- should be 5
+last c1;
+-- should be 2
+absolute 2 c1;
+-- should be 4
+relative 2 c1;
+close c1;
+-- since JCC gets 64 results and then scrolls within them
+-- lets try each positioning command as the first command for the cursor
+get scroll insensitive cursor c1 as 'select * from t';
+-- should be 1
+next c1;
+close c1;
+get scroll insensitive cursor c1 as 'select * from t';
+-- should be 5
+last c1;
+close c1;
+get scroll insensitive cursor c1 as 'select * from t';
+-- should be 3
+absolute 3 c1;
+-- should be 4
+next c1;
+close c1;
+-- let's try a table with more than 64 rows
+create table t1 (a int);
+insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
+insert into t1 values (11),(12),(13),(14),(15),(16),(17),(18),(19),(20);
+insert into t1 values (21),(22),(23),(24),(25),(26),(27),(28),(29),(30);
+insert into t1 values (31),(32),(33),(34),(35),(36),(37),(38),(39),(40);
+insert into t1 values (41),(42),(43),(44),(45),(46),(47),(48),(49),(50);
+insert into t1 values (51),(52),(53),(54),(55),(56),(57),(58),(59),(60);
+insert into t1 values (61),(62),(63),(64),(65),(66),(67),(68),(69),(70);
+get scroll insensitive cursor c1 as 'select * from t1';
+-- should be 1
+first c1;
+-- should be 70
+last c1;
+-- should be 65
+absolute 65 c1;
+-- should be 70
+absolute -1 c1;
+close c1;
+-- try sensitive scroll cursors bug 4677
+get scroll sensitive cursor c1 as 'select * from t';
+close c1;
+get scroll sensitive cursor c1 as 'select * from t for update';
+close c1;
+
+drop table t1;
+
+-- defect 5225, outer joins returning NULLs
+create table t1 (i1 bigint not null, c1 varchar(64) not null);
+create table t2 (i2 bigint not null, c2 varchar(64) not null);
+
+insert into t1 values (1, 'String 1');
+insert into t1 values (2, 'String 2');
+
+insert into t2 values (1, 'String 1');
+insert into t2 values (3, 'String 3');
+
+-- Outer joins can return NULLs on the non-outer side of the join
+select c1 from t1 right outer join t2 on (i1=i2);
+select c2 from t1 right outer join t2 on (i1=i2);
+
+-- Left outer join
+select c1 from t1 left outer join t2 on (i1=i2);
+select c2 from t1 left outer join t2 on (i1=i2);
+
+drop table t1;
+drop table t2;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThread.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThread.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,126 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.DriverManager;
+import org.apache.derby.tools.ij;
+
+/*
+	This is from a bug found by a beta customer.
+ */
+public class simpleThread implements Runnable { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+        private static Connection _connection = null;
+        private static boolean _inUse = false;
+        private static Object _lock = new Object();
+
+        private long _wait = 0;
+        private long _myCount = 0;
+        private static int _count = 0;
+        private synchronized static int getCount() { return(_count++); }
+        private String _query;
+
+        public simpleThread( String query, long waitTime) {
+                _wait = waitTime;
+                _myCount = getCount();
+                _query = query;
+                new Thread(this).start();
+        }
+
+        public void run() {
+				int rows = 0;
+				boolean caught = false;
+                try {
+                        Thread.currentThread().sleep(_wait);
+                        Connection conn = GetConnection();
+                        Statement stmt = conn.createStatement();
+                        String query = _query;
+                        ResultSet rs = stmt.executeQuery( query );
+                        ResultSetMetaData rsmd = rs.getMetaData();
+                        //int cols = rsmd.getColumnCount();
+                        while(rs.next()) {
+							rows++;
+                                //System.out.print(_myCount + ":");
+                                //for( int x=0;x<cols;x++) {
+                                 //       String s = rs.getString(x+1);
+                                  //      if( x > 0) System.out.print(",");
+                                   //     System.out.print(s);
+                                //}
+                                //System.out.println();
+                        }
+                        stmt.close();
+                        ReturnConnection(conn);
+                } catch (Exception ex) {
+					// we expect some threads to get exceptions
+					caught = true;
+                }
+				if (rows == 3 || caught)
+				{
+					//System.out.println("This thread's okay!");
+			    }
+				else
+				{
+					System.out.println("FAIL: thread "+_myCount+" only got "+rows+" rows and caught was "+caught);
+		        }
+        }
+
+
+        public simpleThread(String argv[]) throws Exception {
+            
+			ij.getPropertyArg(argv);
+			_connection = ij.startJBMS();
+
+			Connection conn = GetConnection();
+
+            Statement stmt = conn.createStatement();
+
+            stmt.execute("create table people(name varchar(255), address varchar(255), phone varchar(64))");
+            stmt.execute("insert into people VALUES ('mike', 'mikes address', '123-456-7890')");
+            stmt.execute("insert into people VALUES ('adam', 'adams address', '123-456-1234')");
+            stmt.execute("insert into people VALUES ('steve', 'steves address', '123-456-4321')");
+            stmt.close();
+
+            ReturnConnection(conn);
+
+            String query = "SELECT * from people ORDER by name";
+
+            try {
+                String[] retval = new String[4];
+                new simpleThread(query,0);
+                new simpleThread(query,10000);
+                new simpleThread(query,10100);
+                new simpleThread(query,20000);
+            } catch (Exception ex) {
+                System.err.println(ex.toString() );
+            }
+        }
+
+        public static Connection GetConnection() {
+                synchronized(_lock) {
+                        _inUse = true;
+                }
+                return _connection;
+        }
+        public static void ReturnConnection(Connection c) {
+                synchronized(_lock) {
+                        _inUse = false;
+                        _lock.notifyAll();
+                }
+        }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThreadWrapper.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/simpleThreadWrapper.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,38 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+/**
+ * Test of strings longer than 64K.
+   This is the wrapper class used by the test harness.
+ */
+
+public class simpleThreadWrapper
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+ 
+    public static void main(String[] args) 
+    {
+        try
+        {
+            System.out.println("Starting simpleThread");
+            simpleThread st = new org.apache.derbyTesting.functionTests.tests.lang.simpleThread(args);
+            System.out.println("End of simpleThread");
+        }
+        catch(Exception e)
+        {
+            System.out.println("simpleThreadWraper: " + e);
+        }
+    }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,596 @@
+-- Test prints query plans for SpecjAppServer2001 benchmark queries.
+-- Specifically this test checks for plans generated for tables with no rows to 
+-- ensure that 
+-- Index scan must be chosen over table scan for searched update/delete even when there are 
+-- 0 rows in table
+-- Also see Beetle task id : 5006
+
+
+-- Test does the following
+-- 1. First creates the necessary schema (tables, indexes)
+-- 2. Executes and prints the query plan for all the queries in specjappserver2001 benchmark
+--    Makes sure that the insert stmts are in the end to ensure that there are no
+--    rows in the tables
+-- 3. Drops the tables
+
+-- Let's start with something light...
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+drop table t1;
+create table t1(c1 int, c2 int);
+-- create non-unique index first, then unique, to make sure non-unique is looked at first, and so
+-- in case of tie, the first (nonunique) would be chosen by the cost-based optimizer.  But we need
+-- to make sure such tie never happens, and unique index is always chosen (if the only difference
+-- between the two is "uniqueness").  Well the beetle bug 5006 itself is about, first of all,
+-- table scan should never be chosen, no matter the index is covering ot not.
+create index i11 on t1(c1);
+create unique index i12 on t1(c1);
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 3500;
+
+-- In the following statement, optimizer thinks we have a covering index (only referenced column is
+-- c1), make sure we are using unique index (I12), not table scan, not I11.
+delete from t1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- In the following statement, optimizer thinks we have a non-covering index (referenced columns are
+-- c1 and c2), make sure we are still using unique index (I12), not table scan, not I11.
+update t1 set c2 = 1 where c1 = 1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- The following select should use TABLE SCAN, no predicate at all, and index not covering, no reason
+-- to use index!!!
+select * from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- This one should use index, since it is covered, really doesn't matter which one, since no predicate,
+-- It will choose the first one -- I11.
+select c1 from t1;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+drop table t1;
+-- end of something light...
+
+DROP TABLE C_customer;
+CREATE TABLE C_customer
+(
+	c_id		integer not null,
+	c_first		char(16),
+	c_last		char(16),
+	c_street1	char(20),	
+	c_street2	char(20),	
+	c_city		char(20),	
+	c_state		char(2),	
+	c_country	char(10),	
+	c_zip		char(9),	
+	c_phone		char(16),
+	c_contact	char(25),	
+	c_since		date,
+	c_balance	numeric(9,2),
+	c_credit	char(2),
+	c_credit_limit	numeric(9,2),
+	c_ytd_payment	numeric(9,2)
+);
+
+CREATE UNIQUE INDEX C_c_idx ON C_customer (c_id);
+
+DROP TABLE C_supplier;
+CREATE TABLE C_supplier
+(
+	supp_id			integer not null,
+	supp_name		char(16),
+	supp_street1	char(20),	
+	supp_street2	char(20),	
+	supp_city		char(20),	
+	supp_state		char(2),	
+	supp_country	char(10),	
+	supp_zip		char(9),	
+	supp_phone		char(16),
+	supp_contact	char(25)
+);
+
+CREATE UNIQUE INDEX C_supp_idx ON C_supplier (supp_id);
+
+DROP TABLE C_site;
+CREATE TABLE C_site
+(
+	site_id			integer not null,
+	site_name		char(16),
+	site_street1	char(20),	
+	site_street2	char(20),	
+	site_city		char(20),	
+	site_state		char(2),	
+	site_country	char(10),	
+	site_zip		char(9)
+);
+
+CREATE UNIQUE INDEX C_site_idx ON C_site (site_id);
+
+DROP TABLE C_parts;
+CREATE TABLE C_parts
+(
+	p_id			char(15) not null,
+	p_name			char(10),
+	p_desc			varchar(100),
+	p_rev			char(6),
+	p_unit			char(10),
+	p_cost			numeric(9,2),
+	p_price			numeric(9,2),
+	p_planner		integer,
+	p_type			integer,
+	p_ind			integer,
+        p_lomark                integer,
+        p_himark                integer
+);
+
+CREATE UNIQUE INDEX C_p_idx ON C_parts (p_id);
+
+DROP TABLE C_rule;
+CREATE TABLE C_rule
+(
+	r_id		varchar(20) not null,
+	r_text		long varchar
+);
+
+CREATE UNIQUE INDEX C_r_idx on C_rule (r_id);
+
+DROP TABLE C_discount;
+CREATE TABLE C_discount
+(	
+	d_id		varchar(64) not null,
+	d_percent	integer
+);
+
+
+
+CREATE UNIQUE INDEX C_d_idx on C_discount (d_id);
+DROP TABLE M_parts;
+CREATE TABLE M_parts
+(
+	p_id			char(15) not null,
+	p_name			char(10),
+	p_desc			varchar(100),
+	p_rev			char(6),
+	p_planner		integer,
+	p_type			integer,
+	p_ind			integer,
+	p_lomark		integer,
+	p_himark		integer
+);
+
+CREATE UNIQUE INDEX M_parts_idx ON M_parts (p_id);
+
+DROP TABLE M_bom;
+CREATE TABLE M_bom
+(
+	b_comp_id		char(15) not null,
+	b_assembly_id		char(15) not null,
+	b_line_no		integer,
+	b_qty			integer,
+	b_ops			integer,	
+	b_eng_change		char(10),	
+	b_ops_desc		varchar(100)
+);
+
+CREATE UNIQUE INDEX M_bom_idx ON M_bom (b_assembly_id, b_comp_id, b_line_no);
+
+DROP TABLE M_workorder;
+CREATE TABLE M_workorder
+(
+	wo_number		integer not null,
+	wo_o_id			integer,
+	wo_ol_id		integer,
+	wo_status		integer,
+	wo_assembly_id	char(15),
+	wo_orig_qty		integer,
+	wo_comp_qty		integer,
+	wo_due_date		date,
+	wo_start_date		timestamp
+);
+
+CREATE UNIQUE INDEX M_wo_idx ON M_workorder (wo_number);
+
+DROP TABLE M_largeorder;
+CREATE TABLE M_largeorder
+(
+	lo_id			integer not null,
+	lo_o_id			integer,
+	lo_ol_id		integer,
+	lo_assembly_id	char(15),
+	lo_qty			integer,
+	lo_due_date		date
+);
+
+CREATE UNIQUE INDEX M_lo_idx ON M_largeorder (lo_id);
+CREATE UNIQUE INDEX M_OL_O_idx ON M_largeorder (lo_o_id, lo_ol_id);
+
+DROP TABLE M_inventory;
+CREATE TABLE M_inventory
+(
+	in_p_id			char(15) not null,
+	in_qty			integer,
+	in_ordered		integer,
+	in_location		char(20),	
+	in_acc_code		integer,
+	in_act_date		date
+);
+
+CREATE UNIQUE INDEX M_inv_idx ON M_inventory (in_p_id);
+DROP TABLE O_customer;
+CREATE TABLE O_customer
+(
+	c_id		integer not null,
+	c_first		char(16),
+	c_last		char(16),
+	c_street1	char(20),	
+	c_street2	char(20),	
+	c_city		char(20),	
+	c_state		char(2),	
+	c_country	char(10),	
+	c_zip		char(9),	
+	c_phone		char(16),
+	c_contact	char(25),
+	c_since		date
+);
+
+CREATE UNIQUE INDEX O_c_idx ON O_customer (c_id);
+
+DROP TABLE O_orders;
+CREATE TABLE O_orders
+(
+	o_id		integer not null,
+	o_c_id		integer,
+	o_ol_cnt	integer,
+	o_discount	numeric(4,2),
+	o_total		numeric(9,2),
+	o_status	integer,
+	o_entry_date	timestamp,
+	o_ship_date	date
+);
+
+CREATE UNIQUE INDEX O_ords_idx ON O_orders (o_id);
+
+CREATE INDEX O_oc_idx ON O_orders (o_c_id);
+
+DROP TABLE O_orderline;
+CREATE TABLE O_orderline
+(
+	ol_id		integer not null,
+	ol_o_id		integer not null,
+	ol_i_id		char(15),
+	ol_qty		integer,
+	ol_status	integer,
+	ol_ship_date	date
+);
+
+CREATE UNIQUE INDEX O_ordl_idx ON O_orderline (ol_o_id, ol_id);
+CREATE INDEX O_ordl_idx2 ON O_orderline (ol_o_id, ol_i_id);
+CREATE INDEX O_ordl_idx3 ON O_orderline (ol_o_id);
+
+DROP TABLE O_item;
+CREATE TABLE O_item
+(
+	i_id			char(15) not null,
+	i_name			char(20),
+	i_desc			varchar(100),
+	i_price			numeric(9,2),
+	i_discount		numeric(6,4)
+);
+
+CREATE UNIQUE INDEX O_i_idx ON O_item (i_id);
+
+DROP TABLE S_component;
+CREATE TABLE S_component
+(
+	comp_id			char(15) not null,
+	comp_name		char(10),
+	comp_desc		varchar(100),
+	comp_unit		char(10),
+	comp_cost		numeric(9,2),
+	qty_on_order		integer,
+	qty_demanded		integer,
+	lead_time		integer,
+	container_size		integer
+);
+
+CREATE UNIQUE INDEX S_comp_idx ON S_component (comp_id);
+
+DROP TABLE S_supp_component;
+CREATE TABLE S_supp_component
+(
+	sc_p_id			char(15) not null,
+	sc_supp_id		integer not null,
+	sc_price		numeric(9,2),
+	sc_qty			integer,
+	sc_discount		numeric(6,4),
+	sc_del_date		integer
+);
+
+CREATE UNIQUE INDEX S_sc_idx ON S_supp_component (sc_p_id, sc_supp_id);
+
+DROP TABLE S_supplier;
+CREATE TABLE S_supplier
+(
+	supp_id			integer not null,
+	supp_name		char(16),
+	supp_street1	char(20),	
+	supp_street2	char(20),	
+	supp_city		char(20),	
+	supp_state		char(2),	
+	supp_country	char(10),	
+	supp_zip		char(9),	
+	supp_phone		char(16),
+	supp_contact	char(25)
+);
+
+CREATE UNIQUE INDEX S_supp_idx ON S_supplier (supp_id);
+
+DROP TABLE S_site;
+CREATE TABLE S_site
+(
+	site_id			integer not null,
+	site_name		char(16),
+	site_street1	char(20),	
+	site_street2	char(20),	
+	site_city		char(20),	
+	site_state		char(2),	
+	site_country	char(10),	
+	site_zip		char(9)
+);
+
+CREATE UNIQUE INDEX S_site_idx ON S_site (site_id);
+
+DROP TABLE S_purchase_order;
+CREATE TABLE S_purchase_order
+(
+	po_number		integer not null,
+	po_supp_id		integer,
+	po_site_id		integer
+);
+
+CREATE UNIQUE INDEX S_po_idx ON S_purchase_order (po_number);
+
+DROP TABLE S_purchase_orderline;
+CREATE TABLE S_purchase_orderline
+(
+	pol_number		integer not null,
+	pol_po_id		integer not null,
+	pol_p_id		char(15),
+	pol_qty			integer,
+	pol_balance		numeric(9,2),
+	pol_deldate		date,
+	pol_message		varchar(100)
+);
+
+CREATE UNIQUE INDEX S_pol_idx ON S_purchase_orderline (pol_po_id, pol_number);
+
+DROP TABLE U_sequences;
+CREATE TABLE U_sequences
+(
+	s_id		varchar(50) not null,
+	s_nextnum	integer,
+	s_blocksize	integer
+);
+
+CREATE UNIQUE INDEX U_s_idx ON U_sequences (s_id);
+
+
+
+-- set the runtimestatistics to check the query plans generated
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 3500;
+
+ SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID 
+ FROM O_ORDERS  T1 WHERE o_c_id = 0 FOR UPDATE ;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT COUNT (*) FROM O_orders WHERE o_entry_date >= '01/10/2003' AND o_entry_date <= '01/09/2003' ;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ 
+ SELECT T1.WO_NUMBER, T1.WO_O_ID, T1.WO_OL_ID, T1.WO_STATUS, T1.WO_ORIG_QTY, T1.WO_COMP_QTY, T1.WO_ASSEMBLY_ID, 
+ T1.WO_DUE_DATE, T1.WO_START_DATE FROM M_WORKORDER  T1 WHERE T1.WO_NUMBER = 1 FOR UPDATE;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER  T1 WHERE 1=1;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+ UPDATE M_INVENTORY  SET IN_QTY = 1, IN_LOCATION = 'sanfrancisco', IN_ACC_CODE = 1, IN_ACT_DATE = '01/01/2003', IN_ORDERED = 1 WHERE IN_P_ID = 'abcdefghijklm'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM S_component; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.R_ID, T1.R_TEXT FROM C_RULE  T1 WHERE T1.R_ID = 'abcdefghijlkmijklmnopqrstuvwxyz'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM C_site; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.IN_P_ID, T1.IN_QTY, T1.IN_LOCATION, T1.IN_ACC_CODE, T1.IN_ACT_DATE, T1.IN_ORDERED FROM M_INVENTORY  T1 WHERE T1.IN_P_ID = 'abcdefghijkl' FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE  T1 WHERE ol_o_id = 1 FOR UPDATE ;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ DELETE FROM M_LARGEORDER  WHERE LO_ID = 1;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT COUNT (*) FROM M_workorder WHERE wo_start_date >= '01/10/2003' AND wo_start_date <= '01/10/2003';
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+ SELECT T1.I_DISCOUNT, T1.I_DESC, T1.I_NAME, T1.I_PRICE, T1.I_ID FROM O_ITEM  T1 WHERE T1.I_ID = 'abcdefghijk'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.P_ID, T1.P_NAME, T1.P_DESC, T1.P_REV, T1.P_PLANNER, T1.P_TYPE, T1.P_IND, T1.P_LOMARK, T1.P_HIMARK FROM M_PARTS  T1 WHERE T1.P_ID = 'abcdefghijl'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM S_purchase_orderline; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.S_ID, T1.S_NEXTNUM, T1.S_BLOCKSIZE FROM U_SEQUENCES  T1 WHERE T1.S_ID = 'abcdefghijklmnopqrstuvwxyz' FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.SC_P_ID, T1.SC_SUPP_ID, T1.SC_PRICE, T1.SC_QTY, T1.SC_DISCOUNT, T1.SC_DEL_DATE FROM S_SUPP_COMPONENT  T1 WHERE T1.SC_P_ID = 'abcdefgjikl' AND T1.SC_SUPP_ID = 1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.O_STATUS, T1.O_SHIP_DATE, T1.O_ENTRY_DATE, T1.O_TOTAL, T1.O_DISCOUNT, T1.O_OL_CNT, T1.O_C_ID, T1.O_ID FROM O_ORDERS  T1 WHERE T1.O_ID = 1 FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM M_workorder; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM S_purchase_order; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM M_bom; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER  T1 WHERE T1.PO_NUMBER = 1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM O_orderline; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.D_ID, T1.D_PERCENT FROM C_DISCOUNT  T1 WHERE T1.D_ID = 'abcdefghijklmnopqrstuvwz'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ UPDATE O_ORDERLINE  SET OL_SHIP_DATE = '2/28/2000', OL_QTY = 10, OL_I_ID = 'abcdefghijkl' WHERE OL_O_ID = 1 AND OL_ID = 1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.COMP_ID, T1.COMP_NAME, T1.COMP_DESC, T1.COMP_UNIT, T1.COMP_COST, T1.QTY_ON_ORDER, T1.QTY_DEMANDED, T1.LEAD_TIME, T1.CONTAINER_SIZE FROM S_COMPONENT  T1 WHERE T1.COMP_ID = 'abcdefghijk' FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM O_customer; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.LO_ID, T1.LO_O_ID, T1.LO_OL_ID, T1.LO_ASSEMBLY_ID, T1.LO_QTY, T1.LO_DUE_DATE FROM M_LARGEORDER  T1 WHERE lo_o_id = 1 AND lo_ol_id = 1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ UPDATE O_ORDERS  SET O_STATUS = 1, O_SHIP_DATE = '01/01/9004', O_ENTRY_DATE = NULL, O_TOTAL = 1000, O_DISCOUNT =100, O_OL_CNT = 1, O_C_ID = 1 WHERE O_ID = 2; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM C_customer; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM M_inventory; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- MAKE SURE THE FOLLOWING USE TABLE SCAN, NO REASON TO USE INDEX AT ALL, NOT USEFUL PREDICATES!!! 
+ SELECT T1.SUPP_ID, T1.SUPP_NAME, T1.SUPP_STREET1, T1.SUPP_STREET2, T1.SUPP_CITY, T1.SUPP_STATE, T1.SUPP_COUNTRY, T1.SUPP_ZIP, T1.SUPP_PHONE, T1.SUPP_CONTACT FROM S_SUPPLIER  T1 WHERE 1=1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ UPDATE U_SEQUENCES  SET S_NEXTNUM = 1	, S_BLOCKSIZE = 1000 WHERE S_ID = 'abcdefghijklmnopqrstuvwxyz'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM M_parts ;
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM O_item; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ UPDATE M_WORKORDER  SET WO_O_ID = 11, WO_OL_ID = 11, WO_STATUS = 11, WO_ORIG_QTY = 11, WO_COMP_QTY = 11, WO_ASSEMBLY_ID = 'abcdefghijk', WO_DUE_DATE = '01/01/2000', WO_START_DATE = '01/01/00' WHERE WO_NUMBER = 1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE  T1 WHERE T1.POL_NUMBER = 100 AND T1.POL_PO_ID = 200 FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.OL_SHIP_DATE, T1.OL_QTY, T1.OL_I_ID, T1.OL_O_ID, T1.OL_ID FROM O_ORDERLINE  T1 WHERE ol_o_id = 100 AND ol_i_id = 'abcdefgh'  FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.POL_NUMBER, T1.POL_PO_ID, T1.POL_P_ID, T1.POL_QTY, T1.POL_BALANCE, T1.POL_DELDATE, T1.POL_MESSAGE FROM S_PURCHASE_ORDERLINE  T1 WHERE pol_po_id = 11 FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ DELETE FROM O_ORDERS  WHERE O_ID = 1; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM O_orders; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM S_supplier; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.C_ID, T1.C_SINCE, T1.C_BALANCE, T1.C_CREDIT, T1.C_CREDIT_LIMIT, T1.C_YTD_PAYMENT FROM C_CUSTOMER  T1 WHERE T1.C_ID = 1111 FOR UPDATE; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- MAKE SURE THE FOLLOWING DELETE STATEMENT USES UNIQUE INDEX "O_ORDL_IDX", NOT NON-UNIQUE INDEX "O_ORDL_IDX2",
+-- EVEN THOUGH WE ARE COMPILING WITH EMPTY TABLE!!! beetle 5006.
+ DELETE FROM O_ORDERLINE  WHERE OL_O_ID = 11111 AND OL_ID = 111111; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM C_supplier; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.B_ASSEMBLY_ID, T1.B_COMP_ID, T1.B_LINE_NO, T1.B_QTY, T1.B_ENG_CHANGE, T1.B_OPS, T1.B_OPS_DESC FROM M_BOM  T1 WHERE b_assembly_id = 'specjstuff'; 
+ 
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ UPDATE S_COMPONENT  SET COMP_NAME = 'abc', COMP_DESC = 'book', COMP_UNIT = '100', COMP_COST = 1000, QTY_ON_ORDER = 1000, QTY_DEMANDED = 111, LEAD_TIME = 11, CONTAINER_SIZE = 11 WHERE COMP_ID = 'rudyardkipling'; 
+
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.PO_NUMBER, T1.PO_SUPP_ID, T1.PO_SITE_ID FROM S_PURCHASE_ORDER  T1 WHERE T1.PO_NUMBER = 100 FOR UPDATE; 
+
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ UPDATE S_PURCHASE_ORDERLINE  SET POL_P_ID = 'teacup', POL_QTY = 2, POL_BALANCE = 2, POL_DELDATE = '01/01/2000', POL_MESSAGE = 'tintin shooting star' WHERE POL_NUMBER = 1 AND POL_PO_ID = 1111; 
+
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT COUNT (*) FROM S_site ;
+
+ values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+ SELECT T1.C_SINCE, T1.C_STREET1, T1.C_STREET2, T1.C_CITY, T1.C_STATE, T1.C_COUNTRY, T1.C_ZIP, T1.C_PHONE, T1.C_CONTACT, T1.C_LAST, T1.C_FIRST, T1.C_ID FROM O_CUSTOMER  T1 WHERE T1.C_ID = 23456; 
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+SELECT COUNT (*) FROM C_parts; 
+
+INSERT INTO O_ORDERLINE (OL_O_ID, OL_ID, OL_SHIP_DATE, OL_QTY, OL_I_ID) VALUES (1, 1,NULL, 1,'abcdefghijklmn') ;
+
+
+INSERT INTO M_LARGEORDER (LO_ID, LO_O_ID, LO_OL_ID, LO_ASSEMBLY_ID, LO_QTY, LO_DUE_DATE) VALUES (2, 2, 2,'id', 2, date('2000-02-29')); 
+
+
+INSERT INTO O_ORDERS (O_ID, O_STATUS, O_SHIP_DATE, O_ENTRY_DATE, O_TOTAL, O_DISCOUNT, O_OL_CNT, O_C_ID) VALUES (111, 11, date('1999-01-01'),timestamp('1997-06-30 01:01:01'), 10, 10, 10, 10);
+
+INSERT INTO M_WORKORDER (WO_NUMBER, WO_O_ID, WO_OL_ID, WO_STATUS, WO_ORIG_QTY, WO_COMP_QTY, WO_ASSEMBLY_ID, WO_DUE_DATE, WO_START_DATE) VALUES (10,10 ,10, 10,10, 10, 'abcd', date('2099-10-10'), timestamp('1997-06-30 01:01:01')); 
+
+INSERT INTO O_CUSTOMER (C_ID, C_SINCE, C_STREET1, C_STREET2, C_CITY, C_STATE, C_COUNTRY, C_ZIP, C_PHONE, C_CONTACT, C_LAST, C_FIRST) VALUES (1, date('2000-01-01'), 'berkeley', 'berkeley','berkeley','ca', 'usofa', '94703', '01191797897', 'calvinandhobbes', 'watterson','bill'); 
+
+INSERT INTO S_PURCHASE_ORDER (PO_NUMBER, PO_SUPP_ID, PO_SITE_ID) VALUES (100, 100, 100); 
+
+INSERT INTO S_PURCHASE_ORDERLINE (POL_NUMBER, POL_PO_ID, POL_P_ID, POL_QTY, POL_BALANCE, POL_DELDATE, POL_MESSAGE) VALUES (121,987 ,'snowsnowsnow',11 , 999, date('2003-1-01'),'wow, it really snowed last night isnt it wonderful  last calvin and hobbes'); 
+
+INSERT INTO C_CUSTOMER (C_ID, C_SINCE, C_BALANCE, C_CREDIT, C_CREDIT_LIMIT, C_YTD_PAYMENT) VALUES (11, date('2000-10-01'), 1000, 'ab', 10000,1000.20); 
+
+-- Cleanup : Drop all the tables created as part of this test
+
+DROP TABLE C_customer;
+DROP TABLE C_supplier;
+DROP TABLE C_site;
+DROP TABLE C_parts;
+DROP TABLE C_rule;
+DROP TABLE C_discount;
+DROP TABLE M_parts;
+DROP TABLE M_bom;
+DROP TABLE M_workorder;
+DROP TABLE M_largeorder;
+DROP TABLE M_inventory;
+DROP TABLE O_customer;
+DROP TABLE O_orders;
+DROP TABLE O_orderline;
+DROP TABLE O_item;
+DROP TABLE S_component;
+DROP TABLE S_supp_component;
+DROP TABLE S_supplier;
+DROP TABLE S_site;
+DROP TABLE S_purchase_order;
+DROP TABLE S_purchase_orderline;
+DROP TABLE U_sequences;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/specjPlans_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,252 @@
+-- This is the test for stale plan invalidation.  The system determines
+-- at execution whether the tables used by a DML statement have grown or
+-- shrunk significantly, and if so, causes the statement to be recompiled
+-- at the next execution.
+run resource 'createTestProcedures.subsql';
+
+autocommit off;
+
+-- Create and populate a table to be used for flushing the cache.
+-- Flushing the cache causes all row count changes to be written,
+-- which is necessary for the results of this test to be stable
+-- (because otherwise the row count changes would be written
+-- asynchronously)
+create table flusher (c1 varchar(3000));
+insert into flusher values (PADSTRING('a',3000));	-- 1 row
+insert into flusher select c1 from flusher;		-- 2 rows
+insert into flusher select c1 from flusher;		-- 4 rows
+insert into flusher select c1 from flusher;		-- 8 rows
+insert into flusher select c1 from flusher;		-- 16 rows
+insert into flusher select c1 from flusher;		-- 32 rows
+insert into flusher select c1 from flusher;		-- 64 rows
+commit;
+
+-- Negative test - try setting stalePlanCheckInterval to a value out of range
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.stalePlanCheckInterval', '2');
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 3500;
+
+-- Make it check for stale plans every 10th execution.  The default is 100,
+-- which would force the test to take a lot longer to run, due to more
+-- executions.
+call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.stalePlanCheckInterval', '10');
+commit;
+
+create table t1 (c1 int, c2 int, c3 varchar(255));
+commit;
+
+create index t1x on t1(c1);
+commit;
+
+insert into t1 values (1, 100, PADSTRING('abc',255));
+commit;
+
+-- Make sure row count from insert is flushed out
+select count(c1) from flusher;
+
+prepare s1 as 'select count(c1 + c2) from t1 where c1 = 1';
+
+execute s1;
+
+-- Expect this to do a table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Execute 11 more times, the plan should not change
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+
+-- Expect this to do a table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+commit;
+
+-- Now increase the size of the table
+insert into t1 values (2, 100, PADSTRING('abc',255));
+insert into t1 values (3, 100, PADSTRING('abc',255));
+insert into t1 values (4, 100, PADSTRING('abc',255));
+insert into t1 values (5, 100, PADSTRING('abc',255));
+insert into t1 values (6, 100, PADSTRING('abc',255));
+insert into t1 values (7, 100, PADSTRING('abc',255));
+insert into t1 values (8, 100, PADSTRING('abc',255));
+insert into t1 values (9, 100, PADSTRING('abc',255));
+insert into t1 values (10, 100, PADSTRING('abc',255));
+commit;
+
+-- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+
+-- Execute 11 times, the plan should change
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+
+-- Expect this to use index
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+commit;
+
+-- Now shrink the table back to its original size
+delete from t1 where c1 >= 2;
+commit;
+
+-- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+
+-- Execute 11 times, the plan should change
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+execute s1;
+
+-- Expect this to do a table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+commit;
+
+-- Now do the same thing with a table that has many rows
+create table t2 (c1 int, c2 int, c3 varchar(255));
+commit;
+
+create index t2x on t2(c1);
+commit;
+
+insert into t2 values (1, 1, PADSTRING('abc',255));
+insert into t2 select c1 + 1, c2 + 1, c3 from t2;
+insert into t2 select c1 + 2, c2 + 2, c3 from t2;
+insert into t2 select c1 + 4, c2 + 4, c3 from t2;
+insert into t2 select c1 + 8, c2 + 8, c3 from t2;
+insert into t2 select c1 + 16, c2 + 16, c3 from t2;
+insert into t2 select c1 + 32, c2 + 32, c3 from t2;
+insert into t2 select c1 + 64, c2 + 64, c3 from t2;
+insert into t2 select c1 + 128, c2 + 128, c3 from t2;
+insert into t2 select c1 + 256, c2 + 256, c3 from t2;
+insert into t2 select c1 + 512, c2 + 512, c3 from t2;
+commit;
+
+-- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+
+prepare s2 as 'select count(c1 + c2) from t2 where c1 = 1';
+
+execute s2;
+
+-- Expect this to use index
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+commit;
+
+-- Change the row count a little bit
+insert into t2 values (1025, 1025, PADSTRING('abc',255));
+insert into t2 values (1026, 1026, PADSTRING('abc',255));
+insert into t2 values (1027, 1027, PADSTRING('abc',255));
+insert into t2 values (1028, 1028, PADSTRING('abc',255));
+insert into t2 values (1029, 1029, PADSTRING('abc',255));
+insert into t2 values (1030, 1030, PADSTRING('abc',255));
+insert into t2 values (1031, 1031, PADSTRING('abc',255));
+insert into t2 values (1032, 1032, PADSTRING('abc',255));
+insert into t2 values (1033, 1033, PADSTRING('abc',255));
+insert into t2 values (1034, 1034, PADSTRING('abc',255));
+commit;
+
+
+-- Change the data so a table scan would make more sense.
+-- Use a qualifier to convince TableScanResultSet not to
+-- update the row count in the store (which would make it
+-- hard for this test to control when recompilation takes
+-- place).
+update t2 set c1 = 1 where c1 > 0;
+
+-- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+
+-- Execute 11 more times, the plan should not change
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+
+-- Expect this to use tables scan, as the above update has basically made
+-- all the rows in the table be equal to "1", thus using the index does not
+-- help if all the rows are going to qualify.
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Change the row count significantly
+insert into t2 select c1, c2, c3 from t2 where c1 < 128;
+
+-- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+
+-- Execute 11 times, the plan should change
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+
+-- Expect this to do table scan
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+
+
+-- Change the distribution back to where an index makes sense.
+
+update t2 set c1 = c2;
+
+-- Change the row count significantly
+insert into t2 select c1, c2, c3 from t2;
+
+-- Make sure row count from inserts is flushed out
+select count(c1) from flusher;
+
+-- Execute 11 times, the plan should change
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+execute s2;
+
+-- Expect this to do index to baserow.
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+rollback;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,29 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+protocol=jdbc:derby:
+ij.protocol=jdbc:derby:
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/staleplans_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4
+derby.storage.checkpointInterval=100000

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,32 @@
+
+--
+-- testing a cache size of 0
+--
+
+-- see that it starts out empty; 
+select count(*) from new org.apache.derby.diag.StatementCache() as SC;
+
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+autocommit off;
+
+autocommit off;
+-- set up aliases
+run resource 'stmtCacheAliases.subsql';
+commit;
+
+-- see that it starts out empty; 
+select count(*) from SC_CONTENTS;
+
+-- see that it stays empty; 
+select count(*) from SC_CONTENTS;
+
+-- expect everything to be okay
+values consistencyChecker();
+
+commit;
+
+-- clear aliases
+run resource 'stmtCacheAliasesRemove.subsql';
+commit;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache0_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+# There is a space after the property declaration; we need to
+# KEEP this space in order to check bug 4648.
+derby.language.statementCacheSize=0 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,52 @@
+
+--
+-- testing a cache size of 1
+-- a little bit self-defeating since you can never remove
+-- the emptyCache statement from the cache and the
+-- statement to test what is in removes the previous one...
+--
+
+autocommit off;
+-- set up aliases
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+CREATE PROCEDURE EC()
+EXTERNAL NAME 'org.apache.derby.diag.StatementCache.emptyCache'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+autocommit off;
+run resource 'stmtCacheAliases.subsql';
+commit;
+
+-- see that it starts out almost empty; well, just us...
+select count(*) from SC_CONTENTS;
+
+-- see if we can detect ourselves in the cache;
+-- again, because the size is one, this is the
+-- only statement we can look for...
+select SQL_TEXT from SC_CONTENTS;
+
+prepare p1 as 'values 1';
+select SQL_TEXT from SC_CONTENTS;
+
+-- kick 'em all out and then test the size
+call EC();
+select count(*) from SC_CONTENTS;
+
+execute p1;
+select SQL_TEXT from SC_CONTENTS;
+
+remove p1;
+
+call EC();
+select count(*) from SC_CONTENTS;
+
+-- expect everything to be okay
+-- is a dependency on EMPTYCACHE
+values ConsistencyChecker();
+
+commit;
+
+-- clean up aliases
+run resource 'stmtCacheAliasesRemove.subsql';
+commit;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,10 @@
+#
+# This sets the maximum display width, because the consistency checker used
+# by the test returns some long strings.
+#
+#
+database=jdbc:derby:wombat;create=true
+maximumDisplayWidth=1024
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache1_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.language.statementCacheSize=1
+derby.infolog.append=true
+derby.debug.true=CacheTrace,StatementCacheInfo

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,237 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Types;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+ * Test the statement cache with a 3-statement size.
+ *
+ * @author ames
+ */
+
+
+public class stmtCache3 { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	private static Connection conn;
+	private static boolean passed = false;
+
+	public static void main(String[] args) {
+		System.out.println("Test stmtCache3 starting");
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			conn.setAutoCommit(false);
+
+			passed = setupTest(conn);
+
+			// tests stop at first failure.
+
+			passed = passed && testGrowsAndShrinks(conn);
+
+			passed = passed && cleanupTest(conn);
+
+			conn.commit();
+			conn.close();
+
+		} catch (Throwable e) {
+			passed = false;
+			System.out.println("FAIL: exception thrown:");
+			JDBCDisplayUtil.ShowException(System.out,e);
+		}
+
+		if (passed)
+			System.out.println("PASS");
+		System.out.println("Test stmtCache3 finished");
+	}
+
+	//
+	// the tests
+	//
+
+	/**
+	 * Create some helper aliases for checking the cache state.
+	 *
+	 * @param conn the Connection
+	 *
+	 * @exception SQLException thrown on unexpected failure.
+	 */
+	static boolean setupTest(Connection conn) throws SQLException {
+
+
+		boolean passed = checkCache(conn, 0);
+
+		return passed;
+	}
+
+	/**
+	 * Verify the cache state.
+	 * @param conn the connection to check
+	 * @param numInCache the number expected to be cached
+	 * @exception SQLException thrown on failure
+	 */
+	static boolean checkCache(Connection conn, int numInCache) throws SQLException {
+	    PreparedStatement ps = conn.prepareStatement("select count(*) from new org.apache.derby.diag.StatementCache() AS SC_CONTENTS");
+
+		// we're adding one with this statement, so account for it.
+		int actualNum = numInCache + 1;
+		if (actualNum > 3)
+			actualNum = 3;
+
+		ResultSet rs = ps.executeQuery();
+		rs.next();
+		boolean passed = rs.getInt(1) == actualNum;
+		rs.close();
+		ps.close();
+
+		if (!passed)
+		  System.out.println("FAIL -- expected "+numInCache+" statements in cache");
+		return passed;
+	}
+
+	/**
+	 * Test that all non-closed prepared statements
+	 * hang around, while closed ones disappear immediately,
+	 * When the cache is at its limit.
+	 *
+	 * @param conn	The Connection
+	 *
+	 * @return	true if it succeeds, false if it doesn't
+	 *
+	 * @exception SQLException	Thrown if some unexpected error happens
+	 */
+	static boolean testGrowsAndShrinks(Connection conn)
+					throws SQLException {
+		boolean passed = true;
+
+		PreparedStatement ps1, ps2, ps3, ps4, ps5;
+		ResultSet rs1, rs2, rs3, rs4, rs5;
+
+		ps1 = conn.prepareStatement("values 1");
+		ps2 = conn.prepareStatement("values 2");
+		ps3 = conn.prepareStatement("values 3");
+		ps4 = conn.prepareStatement("values 4");
+		ps5 = conn.prepareStatement("values 5");
+
+		passed = passed && checkCache(conn,3);
+
+		rs1 = ps1.executeQuery();
+		rs2 = ps2.executeQuery();
+		rs3 = ps3.executeQuery();
+		rs4 = ps4.executeQuery();
+		rs5 = ps5.executeQuery();
+
+		passed = passed && checkCache(conn,3);
+
+		rs1.next();
+		rs2.next();
+		rs3.next();
+		rs4.next();
+		rs5.next();
+
+		passed = passed && checkCache(conn, 3);
+
+		// this closes all of the result sets,
+		// but the prepared statements are still open
+		rs1.next();
+		rs2.next();
+		rs3.next();
+		rs4.next();
+		rs5.next();
+
+		passed = passed && checkCache(conn, 3);
+
+		// this ensures all of the result sets are closed,
+		// but the prepared statements are still open
+		rs1.close();
+		rs2.close();
+		rs3.close();
+		rs4.close();
+		rs5.close();
+
+		passed = passed && checkCache(conn,3);
+
+		// let one get away, the cache should shrink...
+		ps1.close();
+		passed = passed && checkCache(conn,3);
+
+		// let one more get away, the cache should shrink...
+		ps2.close();
+		passed = passed && checkCache(conn,3);
+
+		// let one more get away, the cache won't shrink this time...
+		ps3.close();
+		passed = passed && checkCache(conn,3);
+
+		// close the rest, the cache should stay three...
+		ps4.close();
+		ps5.close();
+		passed = passed && checkCache(conn,3);
+
+		return passed;
+	}
+
+
+	/**
+	 * Clean up after ourselves when testing is done.
+	 *
+	 * @param conn	The Connection
+	 *
+	 * @return	true if it succeeds, false if it doesn't
+	 *
+	 * @exception SQLException	Thrown if some unexpected error happens
+	 */
+
+	static boolean cleanupTest(Connection conn) throws SQLException {
+
+		return true;
+	}
+ 
+	// used by stmtcache 5 test
+	public static String findStatementInCacheById(String sql) throws SQLException
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+
+		PreparedStatement ps = conn.prepareStatement(sql);
+
+		PreparedStatement ps2 = conn.prepareStatement("select SQL_TEXT  from new org.apache.derby.diag.StatementCache() as ST where ID = ?");
+		ps2.setString(1, ps.toString());
+		ResultSet rs = ps2.executeQuery();
+		rs.next();
+		String ret = rs.getString(1);
+		rs.close();
+
+		ps2.close();
+		ps.close();
+
+		return ret;
+
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCache3_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.language.statementCacheSize=3
+# useful flags to set if the test breaks ... output sent to derby.log
+#derby.debug.true=StatementCacheInfo,CacheTrace

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCacheAliases.subsql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCacheAliases.subsql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+--
+-- this script registers the various consistency checks for
+-- statement caching as simple aliases for ease of scripting
+--
+
+create view SC_CONTENTS as select CAST (SUBSTR (CAST (SQL_TEXT as char(200)), 1, 30) AS CHAR(30)) AS SQL_TEXT from new org.apache.derby.diag.StatementCache() as SCVD;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCacheAliasesRemove.subsql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stmtCacheAliasesRemove.subsql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,8 @@
+
+--
+-- this script de-registers the various consistency checks for
+-- statement caching
+--
+
+drop view SC_CONTENTS;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/streams.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/streams.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,454 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Types;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+  This tests streams, and when we should not materialize it. Beetle entry 4896, 4955.
+
+  Some of the code comes from conn/largeStreams.java.  But this program figures out whether
+  a stream is materialized or not in a different way.  Part of the reason is that this test
+  should be run nightly to catch regressions and shouldn't require too much disk space.  It
+  figures out whether a stream is materialized or not by comparing the stack levels of different
+  cases.  The stack level is when reading the last byte of the stream.  According to the current
+  code, the stack is about 10 levels deeper when reading the stream from store per page (not
+  materialized before hand), comparing to the case when materializing from sql language layer.
+  We don't expect this to change dramatically for some time.  And this can always be adjusted
+  when needed.
+
+  For bug 5592 - match db's limits for long varchar which is 32700. In order to enforce that limit
+  we now materialize the stream to make sure we are not trying to overstuff data in long varchar.
+  Because of this, I had to make some changes into the stack level checking for long varchars.
+ */
+
+public class streams { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	private static int pkCount;
+	private static Connection conn;
+
+	public static void main(String[] args) {
+		System.out.println("Test streams starting");
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			conn.setAutoCommit(true);
+
+			setup();
+
+			conn.setAutoCommit(false);
+
+			doWork();
+
+			conn.setAutoCommit(true);
+
+			teardown();
+
+			conn.close();
+
+		} catch (Throwable e) {
+			System.out.println("FAIL: exception thrown:");
+			JDBCDisplayUtil.ShowException(System.out,e);
+		}
+
+		System.out.println("Test streams finished");
+	}
+
+	static void setup() throws SQLException {
+		Statement stmt = conn.createStatement();
+		stmt.executeUpdate("call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', '2048')");
+
+		verifyCount(
+			stmt.executeUpdate("create table t1 (id int, pid int, lvc long varchar, lvb long varchar for bit data)"),
+			0);
+		verifyCount(
+			stmt.executeUpdate("create table t2 (id int, pid int, lvc long varchar, lvb long varchar for bit data)"),
+			0);
+		verifyCount(
+			stmt.executeUpdate("create trigger tr21 after insert on t2 for each statement mode db2sql values 1"),
+			0);
+		verifyCount(
+			stmt.executeUpdate("create table t3 (id int not null primary key, pid int, lvc long varchar, lvb long varchar for bit data, CONSTRAINT FK1 Foreign Key(pid) REFERENCES T3 (id))"),
+			0);
+		verifyCount(
+			stmt.executeUpdate("create table t4 (id int, longcol long varchar)"),
+			0);
+		verifyCount(
+			stmt.executeUpdate("create table t5 (id int, longcol long varchar)"),
+			0);
+	}
+
+	static void teardown() throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t1"),
+			0);
+
+		verifyCount(
+		    stmt.executeUpdate("drop trigger tr21"),
+			0);
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t2"),
+			0);
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t3"),
+			0);
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t4"),
+			0);
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t5"),
+			0);
+
+		stmt.close();
+
+		System.out.println("teardown complete");
+	}
+
+	static void verifyCount(int count, int expect) throws SQLException {
+		if (count!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+count+" rows");
+			throw new SQLException("Wrong number of rows returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+count+
+							   (count == 1? " row":" rows"));
+	}
+
+	private static void doWork() throws Exception {
+
+		Statement s = 		conn.createStatement();
+
+		System.out.println("Start testing");
+
+		PreparedStatement ps = conn.prepareStatement("insert into  t1 values(?, ?, ?,?)");
+		int level1 = insertLongString(ps, 8, true);
+		System.out.println("materialized insert: got reader stack level");
+
+		ps = conn.prepareStatement("insert into  t2 values(?, ?, ?,?)");
+		int level2 = insertLongString(ps, 8, true);
+		System.out.println("materialized insert (for trigger): got reader stack level");
+
+		if (level1 != level2)
+			System.out.println("FAILED!! level difference not expected since streams are materialized.");
+		else
+			System.out.println("SUCCEED!! stack level as expected.");
+		
+		ps = conn.prepareStatement("insert into  t3 values(?, ?, ?,?)");
+		int level3 = insertLongString(ps, 8, true);
+		System.out.println("self ref foreign key insert(should not materialize): got reader stack level");
+		if (level3 == level1)
+			System.out.println("SUCCEED!! levels expected.");
+		else
+			System.out.println("FAILED!! should not materialize in this case.");
+
+		conn.rollback();
+
+		s.executeUpdate("insert into t3 values (1,1,'a',null), (2,2,'b',null), (3,3,'c',null)");
+		ps = conn.prepareStatement("update t3 set id = ?, lvc = ? where pid = 2");
+		level1 = insertLongString(ps, 8, false);
+		System.out.println("materialized for multiple row update: got reader stack level");
+
+		ps = conn.prepareStatement("update t3 set id = ?, lvc = ? where pid = 2 and id = 2");
+		level2 = insertLongString(ps, 8, false);
+		System.out.println("single row update: got reader stack level");
+
+		if (level1 != level2)
+			System.out.println("FAILED!! level difference not expected because streams are materialized with fix for bug 5592.");
+		else
+			System.out.println("SUCCEED!! single row update materialized stream.");
+
+		s.executeUpdate("insert into t4 values (1, 'ccccc')");
+		ps = conn.prepareStatement("insert into t4 values(?, ?)");
+		insertLongString(ps, 6, false);
+		s.executeUpdate("insert into t4 values (3, 'aaaaabbbbbb')");
+		s.executeUpdate("insert into t4 values (4, 'bbbbbb')");
+		insertLongString(ps, 5, false);
+		ResultSet rs = s.executeQuery("select id, cast(longcol as varchar(8192)) lcol from t4 order by lcol");
+		if (rs.next())			// 3, aaaaabbbbbb
+			System.out.println("id = "+ rs.getInt(1) + " longcol = " + rs.getString(2));
+		if (rs.next())			// 4, bbbbbb
+			System.out.println("id = "+ rs.getInt(1) + " longcol = " + rs.getString(2));
+		for (int i = 0; i < 2; i++)
+		{
+			if (rs.next())
+			{
+				String longcol = rs.getString(2);
+				int collen = longcol.length();
+				System.out.print("id = "+ rs.getInt(1) + " longcol length = " + collen);
+				System.out.println(" longcol = " + longcol.substring(0, 5) + "..." +
+									longcol.substring(collen - 5, collen));
+			}
+		}
+		if (rs.next())			// 1, 'ccccc'
+			System.out.println("id = "+ rs.getInt(1) + " longcol = " + rs.getString(2));
+		if (rs.next())
+			System.out.println("FAILED, more rows left");
+		else
+			System.out.println("number of rows ok");
+
+		s.executeUpdate("insert into t5 values (1, 'bbbbbb')");
+		ps = conn.prepareStatement("insert into t5 values(?, ?)");
+		insertLongString(ps, 5, false);
+		insertLongString(ps, 7, false);
+		s.executeUpdate("insert into t5 values (3, 'aaaaabbbbbba')");
+		s.executeUpdate("insert into t5 values (4, 'bbbbbbbbb')");
+		rs = s.executeQuery("select t4.id, t4.longcol, t5.id, cast(t5.longcol as varchar(8192)) lcol from t4, t5 where cast(t4.longcol as varchar(8192)) = cast(t5.longcol as varchar(8192)) order by lcol");
+		while (rs.next())
+		{
+			System.out.println("t4 id = " + rs.getInt(1) + " t4 longcol length = " + rs.getString(2).length()
+					+ " t5 id = " + rs.getInt(3) + " t5 longcol length = " + rs.getString(4).length());
+		}
+
+		System.out.println("Start testing long var binary");
+		conn.rollback();
+
+		ps = conn.prepareStatement("insert into  t1 values(?, ?, ?,?)");
+		level1 = insertLongBinary(ps, 8);
+		System.out.println("non materialized insert: got reader stack level");
+
+		ps = conn.prepareStatement("insert into  t2 values(?, ?, ?,?)");
+		level2 = insertLongBinary(ps, 8);
+		System.out.println("materialized insert (for trigger): got reader stack level");
+
+		if (level1 > level2 + 5)
+			System.out.println("SUCCEED, level difference expected.");
+		else
+			System.out.println("FAILED, check stack level change.");
+		
+		ps = conn.prepareStatement("insert into  t3 values(?, ?, ?,?)");
+		level3 = insertLongBinary(ps, 8);
+		System.out.println("self ref foreign key insert(should not materialize): got reader stack level");
+		if (level3 == level1)
+			System.out.println("SUCCEED!! levels expected.");
+		else
+			System.out.println("FAILED!! should not materialize stream in this case.");
+
+		conn.rollback();
+	}
+
+	private static int insertLongString(PreparedStatement ps, int kchars, boolean isInsert) throws SQLException
+	{
+		// don't end on a clean boundary
+		int chars = (kchars * 1024) + 273;
+
+		long start = System.currentTimeMillis();
+
+		DummyReader dr = new DummyReader(chars);
+		if (isInsert)
+		{
+			ps.setInt(1, pkCount);
+			ps.setInt(2, pkCount++);
+			ps.setCharacterStream(3,  dr, chars);
+			ps.setNull(4, Types.VARBINARY);
+		}
+		else
+		{
+			ps.setInt(1, 2);
+			ps.setCharacterStream(2, dr, chars);
+		}
+
+		ps.executeUpdate();
+		long end = System.currentTimeMillis();
+
+		System.out.println("setCharacterStream " + chars + " chars");
+
+		return dr.readerStackLevel;
+
+	}
+
+	private static int insertLongBinary(PreparedStatement ps, int kbytes) throws SQLException {
+
+		// add a small number of bytes to ensure that we are not always ending on a clean Mb boundary
+		int bytes = (kbytes * 1024) + 273;
+
+		long start = System.currentTimeMillis();
+		ps.setInt(1, pkCount);
+		ps.setInt(2, pkCount++);
+		ps.setNull(3, Types.LONGVARCHAR);
+		DummyBinary db = new DummyBinary(bytes);
+		ps.setBinaryStream(4, db, bytes);
+
+		ps.executeUpdate();
+		long end = System.currentTimeMillis();
+
+		System.out.println("setBinaryStream " + bytes + " bytes");
+
+		return db.readerStackLevel;
+	}
+}
+
+class DummyReader extends java.io.Reader {
+
+	private int count;
+	public int readerStackLevel;
+
+	DummyReader(int length) {
+		this.count  = length;
+	}
+
+	private void whereAmI() {
+		if (count == 0)
+		{
+			readerStackLevel = -1;
+			try {throw new Throwable();} catch (Throwable e) {
+				try {
+					readerStackLevel = e.getStackTrace().length;
+				//	System.out.println("================= stack array length is: " + readerStackLevel);
+				//	e.printStackTrace();
+				} catch (NoSuchMethodError nme) {
+					DummyOutputStream dos = new DummyOutputStream();
+					DummyPrintStream dps = new DummyPrintStream(dos);
+					e.printStackTrace(dps);
+					dps.flush();
+				//	System.out.println("================= print to dop level num is: " + dps.lines);
+					readerStackLevel = dps.lines;
+				//	e.printStackTrace();
+				}
+			}
+		}
+	}
+
+	public int read() {
+		if (count == 0)
+			return -1;
+
+		count--;
+		whereAmI();
+
+		return 'b';
+	}
+
+	public int read(char[] buf, int offset, int length) {
+
+		if (count == 0)
+			return -1;
+
+		if (length > count)
+			length = count;
+
+		count -= length;
+		whereAmI();
+
+		java.util.Arrays.fill(buf, offset, offset + length, 'b');
+
+		return length;
+	}
+
+	public void close(){}
+}
+
+class DummyBinary extends java.io.InputStream {
+
+	public int readerStackLevel;
+	int count;
+	byte content = 42;
+	DummyBinary(int length) {
+		this.count  = length;
+	}
+
+	private void whereAmI() {
+		if (count == 0)
+		{
+			readerStackLevel = -1;
+			try {throw new Throwable();} catch (Throwable e) {
+				try {
+					readerStackLevel = e.getStackTrace().length;
+				//	System.out.println("================= stack array length is: " + readerStackLevel);
+				//	e.printStackTrace();
+				} catch (NoSuchMethodError nme) {
+					DummyOutputStream dos = new DummyOutputStream();
+					DummyPrintStream dps = new DummyPrintStream(dos);
+					e.printStackTrace(dps);
+					dps.flush();
+				//	System.out.println("================= print to dop level num is: " + dps.lines);
+					readerStackLevel = dps.lines;
+				//	e.printStackTrace();
+				}
+			}
+		}
+	}
+
+	public int read() {
+		if (count == 0)
+			return -1;
+
+		count--;
+		whereAmI();
+		return content++;
+	}
+
+	public int read(byte[] buf, int offset, int length) {
+
+		if (count == 0)
+			return -1;
+
+		if (length > count)
+			length = count;
+
+		count -= length;
+		whereAmI();
+
+		for (int i = 0; i < length; i++)
+			buf[offset + i] = content++;
+
+		return length;
+	}
+
+	public void close(){}
+}
+
+
+class DummyOutputStream extends java.io.OutputStream {
+	public void close() {}
+	public void flush() {}
+	public void write(byte[] b) {}
+	public void write(byte[] b, int off, int len) {}
+	public void write(int b) {}
+}
+
+class DummyPrintStream extends java.io.PrintStream {
+	public int lines;
+	public DummyPrintStream(DummyOutputStream dos) {super(dos);}
+	public void println() { lines++; }
+	public void println(String x) { lines++; }
+	public void println(Object x) { lines++; }
+	public void println(char[] x) { lines++; }
+	public void println(double x) { lines++; }
+	public void println(float x) { lines++; }
+	public void println(long x) { lines++; }
+	public void println(int x) { lines++; }
+	public void println(char x) { lines++; }
+	public void println(boolean x) { lines++; }
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stringtypes.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/stringtypes.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,208 @@
+--
+-- this test shows the current supported char, varchar, and long varchar
+-- functionality
+--
+
+
+-- create a table with null and non-null char columns of different lengths
+create table ct (c1 char, c2 char(5) not null, c3 char(30) default null);
+
+-- insert some rows
+
+-- first, try values that fill each column with non-blanks
+insert into ct values ('1', '11111', '111111111111111111111111111111');
+
+-- now try some values that are shorter than the columns
+insert into ct values ('', '22', '222');
+
+-- now try some values that are longer than the columns, where the excess
+-- characters are blanks
+insert into ct values ('3         ', '33333      ', '333333333333333333333333333333          ');
+
+-- now try some values that are longer than the columns, where the excess
+-- characters are non-blanks.  These should get errors
+insert into ct values ('44', '4', '4');
+insert into ct values ('5', '555555', '5');
+insert into ct values ('6', '66666', '6666666666666666666666666666666');
+
+-- now try inserting some nulls, first in columns that accept them
+insert into ct values (null, '77777', null);
+
+-- now try inserting nulls into columns that don't accept them
+insert into ct values ('8', null, '8');
+
+-- now check the rows that made it into the table successfully
+select * from ct;
+
+-- now try the char_length function on the columns
+select {fn length(c1)}, {fn length(c2)}, {fn length(c3)} from ct;
+
+-- now create a table with varchar columns
+create table vt (c1 varchar(1), c2 varchar(5) not null, c3 varchar(30) default null);
+
+-- insert some rows
+
+-- first, try values that fill each column with non-blanks
+insert into vt values ('1', '11111', '111111111111111111111111111111');
+
+-- now try some values that are shorter than the columns
+insert into vt values ('', '22', '222');
+
+-- now try some values that are longer than the columns, where the excess
+-- characters are blanks
+insert into vt values ('3         ', '33333      ', '333333333333333333333333333333          ');
+
+-- now try some values that are longer than the columns, where the excess
+-- characters are non-blanks.  These should get errors
+insert into vt values ('44', '4', '4');
+insert into vt values ('5', '555555', '5');
+insert into vt values ('6', '66666', '6666666666666666666666666666666');
+
+-- now try inserting some nulls, first in columns that accept them
+insert into vt values (null, '77777', null);
+
+-- now try inserting nulls into columns that don't accept them
+insert into vt values ('8', null, '8');
+
+-- now check the rows that made it into the table successfully
+select * from vt;
+
+-- now try the char_length function on the columns
+select {fn length(c1)}, {fn length(c2)}, {fn length(c3)} from vt;
+
+-- now create a table with long varchar columns
+create table lvt (c1 long varchar, c2 long varchar not null, c3 long varchar default null);
+
+-- insert some rows
+-- first, some short values
+insert into lvt values ('1', '11', '111');
+
+-- now some values with trailing blanks (which should be preserved)
+insert into lvt values ('2 ', '22  ', '222   ');
+
+-- now some long values
+insert into lvt values (
+'3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333',
+'333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333',
+'33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333');
+
+-- now try inserting nulls into columns that accept them
+insert into lvt values (null, '4444', null);
+
+-- now try inserting nulls into columns that do not accept them
+insert into lvt values ('5', null, '55555');
+
+-- now check the rows that made it into the table successfully
+select * from lvt;
+
+-- now try the char_length function on the columns
+select {fn length(c1)}, {fn length(c2)}, {fn length(c3)} from lvt;
+
+-- insert-select from varchar columns into char columns
+insert into ct select * from vt;
+select * from ct;
+
+-- insert-select from char columns into varchar columns
+insert into vt select * from ct;
+select * from vt;
+
+-- insert-select from varchar columns into char columns with truncation errors
+insert into ct select c3, c2, c1 from vt;
+select * from ct;
+
+-- insert-select from char columns into varchar columns with truncation errors
+insert into vt select c3, c2, c1 from ct;
+select * from vt;
+
+-- insert-select from char columns into long varchar columns
+insert into lvt select * from ct;
+select * from lvt;
+
+-- insert-select from varchar columns into long varchar columns
+insert into lvt select * from vt;
+select * from lvt;
+
+-- insert-select from long varchar columns into char columns with trunc. errors
+insert into ct select * from lvt;
+select * from ct;
+
+-- insert-select from long varchar columns into char columns without trunc errs
+insert into ct select * from lvt where cast(substr(c1,1,30) as varchar(30)) = '1' or cast(substr(c1,1,30) as varchar(30)) = '2';
+select * from ct;
+
+-- insert-select from long varchar columns into varchar columns with trunc. errs
+insert into vt select * from lvt;
+select * from vt;
+
+-- insert-select from long varchar columns into varchar cols without trunc errs
+insert into vt select * from lvt where cast(substr(c1,1,30) as varchar(30)) = '1' or cast(substr(c1,1,30) as varchar(30)) = '2';
+select * from vt;
+
+-- Now try insert-select with type conversion where column lengths don't match
+-- but there are no truncation errors.  Need new tables for this.
+create table ct2 (c1 char(5), c2 char(10));
+insert into ct2 values ('111', '111');
+
+create table vt2 (c1 varchar(5), c2 varchar(10));
+insert into vt2 values ('222', '222');
+
+create table lvt2 (c1 long varchar, c2 long varchar);
+insert into lvt2 values ('333', '333');
+
+insert into ct2 select * from vt2;
+insert into ct2 select * from lvt2;
+select * from ct2;
+
+insert into vt2 select * from ct2;
+insert into vt2 select * from lvt2;
+select * from vt2;
+
+insert into lvt2 select * from ct2;
+insert into lvt2 select * from vt2;
+select * from lvt2;
+
+-- Now try string constants that contain the ' character
+delete from vt;
+
+insert into vt values ('''', '12''34', '123''456''''''789');
+
+-- RESOLVE: Would like to do a test of non-terminated string (i.e. string
+-- ending with ''), like this:
+--
+-- insert into vt values ('1', '12345', '12345'');
+--
+-- However, the unterminated string confuses the ij parser.  ij has to know
+-- where string boundaries are, so it can tell whether the ; is a terminator
+-- or a character in the string.  So, this test won't work with ij, because
+-- it will think the ; is just a character inside the string.
+--
+-- This test could be done from within a java program, but it would take
+-- a fair amount of work for the benefit.
+
+select * from vt;
+
+-- Try creating a column with an illegal length
+create table badtab (x char(10.2));
+
+create table badtab2 (x varchar(0));
+
+create table badtab3 (x long varchar(3));
+
+-- JDBC escape syntax for string functions
+create table trash(c1 char(10));
+insert into trash values 'asdf', 'asdfasdf';
+select {fn length(c1)}, length(c1) from trash;
+drop table trash;
+
+--- Test for really big literals. Throw an error for now. beetle 2758
+
+CREATE TABLE "LVC"
+(
+	"LV"     		long varchar
+);
+
+INSERT INTO LVC VALUES ('4749463837617201db01f70000000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde321f90400000000002c000000007201db01c7000900001d00001500141a0a002200002600032602002a00002e00022d05082a0a003200003500023405003900003d00023c05053b0a0e39141e3c21004100004500024405004901004d01014c05024c0a07470a084b1301530302540b025a04035b0c0b5c0c0a5509045b130b5c1309571612590c145a18134b130c5b22175b24174f270566070c62140b6319007400007b0008770a14640c13641c1867191877180f79110d63231464231c6b241a67271c69331c7426197332235b1927592a23691b26741c2e7718236c24236c2b276928286b352b732c2773282c7333297437346c3834772b3374343b7c3c367838326c2b3b7c433878463373473d5940427c3b47752e435838447c48487c545279534e6c5801810018831626871c3a83392e882e1785293c8345378f4b37916345833b4a90385da73b4483444b844c4986494b8654538a4b538b54548c5b5b8d5c56875657934b5c925c59925648964e5a8b635d93635b95684f906758a65459a46e63965c638e58648d67639464659964659a6b6b9c6c6897696c9d726a9774729c6c749c766c8c7269a8576ca26b6da27473a36c73a37475a47a7aa57c7caa7c79a77677b3717dc17a799b837dab827ba68378b18b5aa78382ab7d88b3798ca17590c67a83ad8486ab898bac9285b18486b28a8bb48c8bb6888db5928cb89392b88d92b59394bb9495bc9a9abd9b98ba9792ad939cbca295b0a6a2ba9aa4b7a8acb9b284998bb5b9c29cc29c98c19791c48d9ec3a299c5a997c4b1a2c59dadcc98a2c5a4a5c9a5a6c9aaabcbaca7c7a9adcdb1a9c9b7aed1b3b3ccabb4cbb7b3d1b4b9d5bab1d2adb7e0b7bccac3bcd6c4b0cfc7bee0c5c5d7b9d1e4bbc2cec6c6d3cac5dbc5c6ddc9cad5ccc9dcc6ccdcccc5d3c5cedcd1c9d8d3d0deced3dcc5d1ded2d6dadacde2cecce2ccc8e1c8cee5d1cee2d1cee4d6d1e3ced6e6cad1e2d2d1e5d2d2e6d5d5e6d6d3e3d4d6e6d9d4e4d9d5e9d6d3e8d4d6e9d9d6eadad9e6dad9e9d6d9eadadbebddd9e6d6def0deddebe1ddeee3e2ebdde9f0d3e4ece5e8f2e9fefefef5f7f6f0f3f1dadde308fe005fc122f6ac20b483d0a61d5488b021428510a74dabb64d62b68ad5b265cc7691e3b68f1e417edcc67163c98c26298e1cc9f1e4c58dd734a2ac4653664d943637ce4449b21ab59a2d6952d3a651e6499f34932a556ab428509c41c7219dfad3e9ce9b49ad465b2af4a7cfad3fa979f5aa34ec57b1d4ac45a306566c34b570d52265bb96ee5bb668e9ba45ba36dad66a6bf99af59937b0dfbb78dfaa55ecb799356b6c21d3f509b7ad5fc297d112462bb099ac8205254a7c26d19ae869a64d9f3ead2de1b569d7b45d9b4d7b5ab6d719afaddca6f223cd91d37a92bc982e5b717a248b6b2c97eea3f26c52398ebb58ae9cc671e98a37bfcebc79f66ae3bafe674f97b11c76e8d8c763379f3eddf4e9e0b795d3872f9df572e17857f3768df974f3cc5597dd38edb5474f3af498e75e35ee8de3cd7ed901e8cd84ec95838e79e079535d390f4ab51f35133a88d4350f7a03a2583499d895581a1246d883fb7d882252d2ec774d383f3d88a25926ea58a38b3ee9586238d584a3628d138a45a4892896b86259d44813d68c30a69894542186281068ab89a65a97afd966db6cb7bdc61b6ddbc4149b6d6992b41b482a9523df36086a37e078f020080f3c09eec96776748e176177cca123e8a175de999e37d7a5e3cd8108423a6036ddd1931e73f4a063683a9bb6939da6a0a6e3a9a8f18c63cea68612c8a9a7ecd8d7dda8fee6a4d36a76ed808a8e39a69a638e79b7a6b36b75bf6a585d351896189e8421eee7203538ee37618f317a138d942456230d937e4929e58348ee28cdb552e2982393ded41865394a4ee86c8f2612192d8846629324bb4c1a096289cfc2fbac83b83ac85c37dee88aab39dde8ba2569a475295198625aa41146afcd169c6dd5e846d135b98d24276f72a6a30e9d2079974e9e7456f79180238b971da4b6b667a8a65215370eaaf6853a73a69cc263ab3a86c6331e3af2c8934e3cf16c0a4e783e7bda4e3b44677a2a3a45dfea8e3cf1047dab3c57d383b53c4c6b4db5cfe864caced6eca823cfd8f3786d0e3bec68aaabdbe1b82db0c0e18423ce8613d64d61fe39bbe6ed6c86319bc3a283cf1ad96394135e6bedb3dc52f30d93cc96786f90d0e6cbf8e3f87a6338bac6e2caf8e71a0accef38e0146c9ee7bb022cad39edf4dbce38ad8f33f63becb873f069dc2c0cdb34dac016316d1267039b6c64f634114b69ea0612a5cef5345ea0d8494a0f3d3c4f3f9ea42b6f9aa9a1f49c5a0da43823ea1e39435f7868f4e3c583333d3e97c33e3baa66433d3a3c8b0ab43aa21e5875d8e8c04374d1f1a855dba036b5788c2d68f390c7a9e0e10e0312ed6c611bda3c6ea52976e8ca57e6209ad26aa52b0bad0d5fc40a0787cc53b0104985401a0ad8bd1c141e2c858771e1b08f37b00423c3ad2b1c844b8791c465b880996386fe75630fe1d405b071000c448feb21bfbec1c26e3471864723503796063bd64d917504c2d5eb60b7b42d767169016cc7c112b2b0dfed4e6268049ef02e129cd9a4891aca4b1e4d30d61f8ca548631b12dfcf46b62904a9431dd1c31ff774a62979b0cf569aa2073ba2160f9e152d5655d3d9f69ea6a9aa550d6bb72ac7d60c4935a0854a54080c9a2847090faa7d4d6bee609a01bf6649774c0d3ba25ce522e5e18e030a7091010c87c0cab18e5aa2a3606ccba4ae74192b700cec83ba721038cad10dd525891a585ad7e78c649ebc01cc4848bad60fbd010e6e1a0e89d2e8e6e7a8d10d1035f39c009b623a27d40e2786e868ed14a7379ad94d78427186affedb22ecb8083b799063916c6b0738bed88e45d6a30f1d60c10b00b10a24bce0a10a5d682bdea0501bfc6361d6e086431ffa503a70431ad7d0873efcf18f8ac0668ed3108748f7e18f95eae34c23b5877e6e7423feeca31ff6988d3df4d10f78f48739b309c735cc71d37ef4c31ffe382a3cd43152a426d5a8fbd813cfe4c133b7b15487e960e93cf4b10f9672751ffab0873a74358f7e2002065c482b0c5e100c7c74d51bc530c63df6314074b8031d0954c75dcde10ebd9aa3970a64073dfc518a17c000ad5c80011df6f10e7158f01de660c637be618cca0a0319e8b0073e8c310b5ecce3afee30c73184710c6320e318c7e88537c4610e718870a7bca8fe45243e310b6fe88317bde0452ec491a3fda06318863dec5a1521d26364021179b08431e8f1ad6f7c4b4ad12857b9eec5ac7074cb1e71486c62d74a077d54c31cd940831ad08006405c437191c80372f3c05ef62aa319edcdc319cc60097714a99bd2b087373661062f74e1bf60a0432dd4010f7394ae74dd00873de00b062f38980eb9880418268c0bae2d4d20b2484632b8a1058e729414dc68084350c30d2178f80574c00634fcc1841383011b1391c634b0818d663c74ad8765ab3df6c48d2255831b5f08ee61c3a00f8cd903133110f20b48a10f387a031e8515ee5a2db18fe00861bb871d833bc873b77dec41ca3088012ed611c36d7841b8891dc3fe3d5ccb2165c00311c14d2b5bd5118e615c59bb2f18833f5ce98e798c95af7caedd5f7565c17db8c2b0dae5c218ece158bdb6e31dfbc8c40bb0fc824bf443a0e000076b2dc80e7dd001ada0b60136de018e7588c31dfa50051a6e2ce5c4be2011eb68ad91d6616334c3201124da8717840c031e28431c977bae341e873918ea230f607ec11cf6618f66dbe0bf5d48f1b50c470f332036b1b8d005a82f018f1e4ea80b69957325649a0e71eca91c4bdd0637b959307f60c31473a88190c32d66764c718cdcf887beb991ef7ff0bb4b09d946bfb9610f82c3a3e0d8e0863e0efe8f9dca141b743cb8c3452a52b1062a5087ba063c28ded5b0c2631d20f7d51ffe6318214ead9490402be53c0e3e8f79a403e463f5953e8a718dad6e75b360e0f50b2cf159d6fe796a545587a9cdf18ed0d2afb5d961eda9feda8ebbd6ae960a8c15dbf84ccbb11970eaae94c73cd8b134be12e88bb2bbab2bdbc137778083eb047dc73bbade5a5db972e806ce74a605d63a0373539e136ae6e7a4590d711629497a2ff684109c387b6d137413b23b38dcc15f30849b0b3dc006ae4a670e2319b31df3bcbb81059a60708443ee053370c10e6cc1d61174696867874092111a32c25822d0a8068c4d730d6c08efa4ba8178c5ce54b1da5cc33bcd1bcf3a3c06a8a5fe117fc41fd9f105a933755808e5e5387ef4ff68fca2b5cd63bb0a15cf4efe75d7aa0a0d414f5347db969aa7b3d1a381b5acda3cee0aaaa79f2a986b53a002c56f0efc59d0ae86a265ade2b1fe82a61257e830366c737f4b27686c630e67333659b7807c35750758505a574bea90407cc533b5434b7ae53653b736f8172b75a72b05552b51a70ead33776ba32bebd00ebd3456aeb436ffc736ddf4799a0382e2d04c02034ff2148357c43a9ba745a4e30d98774510c876a64730582450a6b234c674845d947af5c00ef5500fabc77a0ba130af570d1201636d9226b2973cc0d37bca930eba7123cdb10e69c20de69027eb803fc8677c7fe431042655dbd77c3cc386cb477df2500dc48035dba3293af33428c70eefe07d58833fba524afef1600e2de7679c7235a5b4495475741dc833ee106bbd344102732b6b33369a924a03b8487af589beb434bea282b5b37ed5712b0c543b01c8356e273501f847ee373790554b7587356d333509244ae2573676458284c67520d80e2ca80e05b357f2c05aad534bc1c482a9742bf5d44c3d2442bad279967779331830dd54304ed44dad03838f6384a5f375edd4755d345097b783acc30ef834504dd80e52080b1af60c64a43013711a18830d60881bbd973c1f114772d21ffff87b1e9327eac00d04b60d04867cca178766230fcda73386840e15b77004260fcd564a7488805aa70f1d29527e1634f6800ed58049cdd7729d64219db47f63a372417375b4d4fe482f792bb9c80e36a775866241a7523453b353a6623541f334b8f88a1f3835dde74a42573615d83675f77301858095e876ad928b0545687c75959ff581efb73675b70e4a493772b78e73f3366ee70eb2437402b30ea4038260b96eba6483e2d00e753396c4642ab09360733377ed744599962b71177a4d374575573b05453b82580f6b8798ab6710339685ab217b65a48f1331476e043c6e648680f2316bd83c6fe831f2d17c1e836e4b951dc3d78888f447a8e20f6540076a6106a4b00fd4072a7cd53f8b3006fd60576d230ffab007c1b07e4b950d91f00d40330fda905ea4904028390ca5500ff0100d99e00d016893f2600c88a0077490077d9569fafe600697b00f7c557454d50decb00fa5d0036be729a1d50ef7d00c89b00f4d770fd9900791f008b59040d1590b5e1009b4e005b4500b745003b7a00f57790c66f005b7400b745095ba620fc6900789d00b605009f3a077b5d00579700b790006ca105a3fa40b601009bed240d5590c91300b02aa2bc700065d6009bef00579b00f9a63383f9469fb700677500d29c8a066700ae0f008c7c9743ac967a2e77957597703850eed006c63b9a4bad2977b090ea2c23a751795053550c2c88ca64750418398f5d04518061a0b7110af077ba7518fbba38fc003716e2470b3611f6d3a7cead01fcf237cc9877c0ba9299c122b4b577f89b47d6ec37e04c67e67232bfe9e2435f5c7297d6557ad437fcec86968838bef200ff5004156879b092888f3b08ca1350f45577f4ce9674ba74b4a984a1fc8353a290d9f7783ac530ec6146b73a70f99c008de295063e97929383766477701e82b5ca7931da42b71694c7f3637c0684c6cf67975634cf2647987c74c7869604dea439547304ba82b3ed4a99fe779319aaa0636971caa8dac939e4d57508e7a8081c675b6d874f2709e6cc335ef300f5d1aa9ad000bcfc07a06e110f87a8fb3014774241170745203491bdef13104b90da5291f78c23385f22974e886b142483cb37204269b55052a88884b10297e4067358db48867a375a2747e0884925a879c097449a294404d175a50c7fe362d974ae27735eb175ae9300f063468553956add34b52caa183363716145a7fb686ae3a9b07483b5d84824a3b8ce48a9bc6c46701188b95a8954b1a30e9f40df4644cd6983783074332684c85334dcf026c99668304932b99567702a5842518aee91a50a6b4769bd8740145b7fcb4346ad784f34a10f4380d09d398602211282563f758314a318662083cce510ec4d21c27432742f7312bd3866b7821fdb32b751836b10934a384b210490e54669389ca0efec006a0d00f8f20077be6678d34350f39b2bbb88b68b37ea2b4b107840f55800bfb204a9d08417cb53f2f5968b5a00cb403ab60600ff7900878c00fdff005ff500fca2a3051a789902603b7fe000fa526304f17976d27adafc383734341562930ec4796c7060d5c9360b08a0bd66a7756344ff2e4388ce34c3218b685732d8c336ccd0543cfda0de1a077ea040ebf248ec9e4445b040ed4c09645d836e6da0e67f38e03e8a5f278afd0f07a644446694263b0e18596f985954927eb307dcee190d4b70e7e427eef2056c7970eba889c7be2b11e3b81f0b08b586394f6100db5700a9f500b2ad557f3b00a89400bdf9040c690098d200cf7300c906009ed600f5ab70fbc6009b9500396a00fed8092fa300c9cf009b7000ef5600ff4500a9ff009c6403bbaf90d9f200ab440099f200c88c98c50f759b6500b5dbc0ff3d00cb5c00ab5b00c4f080fbe400bfee0f0b2724c0bca500fa7a20e73876aeb000cb6700bccf00ef790b4ad030cbd800df7106b7c650fd6d00bca000dca900c8d150ec0e0c9d2e02ba5662ad17010449a7973c74de9a00ccae02b32280ee2548393f52cb71c0df48bbf49542edf702f46f238008377f49b789dc74d9c375005b3b677b9b64bc34dac83cc2748ae63c7365d3a80ecbab7f54a8f0dc1cda89185581831e14c1b2a61476b1a7c66c80d6bf8470829551fb7863b76c27e869a6613872be7b1a1b48833dc72b9f947673381b1ab75f6d07203bd88068d9ca344d07d8692070daf7df69225ab0f266bb2258b92fc77401eab80231ba990d5367a554ba1c58aa617a5809694ed6b8e3cf8fe7f7c45b57339377563243f547961bb439f4322d7620ca1b00b99c0c681d00848d00748f0011780032e90021e900119d0011d800114a00119400343400349900469a00ac3b00bbed024cf42ad79f72d1f9279cdd44e680b824b18805f24a565f97feb403b525a8e86f98486897aaab725c9d00c07f11809610d09510d0961a682eb461793268e1b4798e99922539a7e12cff14cd0e4d77279329c8ecdd008a491290b74f8b088f850d1246bd03b15d15128d1606573305c0f1e3ba9a6edae1f1b34e4990b60f5c5fb300c54f6aea1a4d90c4ddaf0aadaf90006eb30a9413335ed2a88bd7a81fee7db99e84afe90099730a133b84c3ff4bfa9da4dd61aa3d2fe6d387a2354df100dbe000aa6a0086ee0076210021e70011550012730032390010fb0031d20024600020f400114b0000cb0000f90011640010f40df16e0010ee00014d0010fa001e17d014330034840033870042c70011da0011db0df3930042330023310e14740036fe008bed00cd7327550533b30597502c8a9911ac121e8c09f98e24fb80a0743c17d1d7b55080d843b1b60887b74d41c02ab90e9c00dd91187dce0867168c2c7b7867e82929c4b558ff8882be70e1a79404029d9b4bd88125dd02d1785cda60f5f2c5251b8e5f07a0f595e0ffb60db936ad0e04057b4e40fcdc004c2b00fae340ff85006cbe09e0f3d0ffb200479600cb7700ffa10a9fe604e0b3c10e65bd50c34200e2cb50778e00f55b70f71e009f7700fce700797dc0efa00096a760fde5003c1905307b684b45c24c0a64b504aa4d0aa213bd40cbe600c73d0011480010ff0001500dfefed011ef0eaadee00ef6d010f80000bb0eb0cc0000880001cd0021e4001f33ddf08c000f85d01bbee00befeebbbbeeb0f0001b4ceec145001e25ded4afd000e90d41870014fc0df0fc0e01d40032400047ee00ad1e01e18dd3a097440a728a9505835f5100f51088550f80ef57e021aa0024b200558a00552e00977ed0aae600869e008ac400c786d0dcaf0180eafd76a117b74740de29026e2f07b77f3722f377cc3c71ceb4ccfc73788a889579dd8fe57b39975b7a257250bb2f92cc8073db2254be5b6cdd0f350d0cd964033fff21b0df39c9a4a0bdde6330b416deeaea298407cb634e959ad57097246caa44ddf5a4e0addf69b8df81b0dca202dbe40094970043ae0022320024d80dfbdce012ef0000ce000f2fdecbd6eeb0be00026100410a0edf18d024440ec1af0ec19e0011840eb15d0ea679ff66b6febf5dddff3cdeb0e7001f87d01887fdf0c6001191002e27d011f6001fb2deb1d50047530042640021d40024e500582900a5b4120ed2aa9a2148566dca55118000f7002fa7e024ba0034650077050074b40033bb00682600886b0041990044650012a500438400886e0076e200785a00cca638614feff11dcf0133a240dd6f00a8f600cd2000dc6f00bbf600c3b0487c7a789874c7d080db24037f411384a08d467a43df392eae5241b85f09af3bc9db29b0daf2819a95b6a0fa45db288b9ae0021afdd3b79f3eacd2b38cfdd3b76eeccb9533810a13c76efdcb163d7ae9db986eeda81d3d82ee34673edc4950457d25cb78d2dcd8103e90d5c376f3561d60c07ce5bce6edfa8499366ccd829244b90ac998226d01310399c40a1b1a10205070c2854a8e0800206060b1c3c7050f5c1850b152e74f0d0e143060d182870f09001c2820374172040b0806edeae78173c6010f882050c1516046670a0abe20b143260e8802143071233dcb8624483c205101a407cfed83a020409291fb0386ac326902f6a14d9c993578f5d3ddaec7464d192a50e962546926881038790a13e70961021518202050b101e3cc662c84d9f4083804ddb96fd9ab56be5b297bbb6cbd4ab357f4c55238649542a5fd1ca51032694983975e9807102e62bd02762ded099834d1e740284679e78d889679e892682cd9e830e5250c1000b4aa842792c7a679ed734ac0843d75e7b274481421431c07ada812dc4852ad268c38636c2481e8f34baa8a391301aa91d965e8249239840eae6c71d5ffae8239d64ba69a79c94fce61b659431a69847a62c659659fe68a103102a7800b0b01870202faf0c434cab07f43a2ccc34c15aae4b0c1c48f32a0a107bfe2e03103c70ab4b06c0fa2aaca9e0eceaaeaebafccab10fb202b45038c7eaa0830bc07a80022d5bf8e0d1c0223d6b082794482515518a4107a377ea79a7040d88d0a20e2b4850e108238ae02d8ae28c98a18a43b0d080cb072ae8400d4f3859a5934e5281e69a6daeb9261d71b649071a62acb1c69b74aa790410638861a49868a4d9c51878d251275c78cc9956144e8c91169d79d4a9491c77d491471d88e40170c284e20950c27c332448417b604388a0143772882370a289c61884a16cd21b731e2a685e86440c31238f6a84d11c7140faefe187426aa91d77dc49699d8dc01927c894c431324895610aa726736c3a52a626c3f9a6a69b85f1e61b638efe51e69b5e1e11e594395a7840890bfeaa2a2c42cf44f33006f8a2e001c8aa0a2c6a040ea8abcbbfae024bafa92f3d8c4f38a5d61a310658f08005aaaebaa0aa053ac8a04fb018c8aa020b2a6db44b0d4af06004127000a1510b0a6f8c83465ba0c1053f3831251a73c669e79b22722364923e96484105133ce060010a96c0020e2c8650a1041c00f74087340c314410473ae1a49367ad91a69a64b759075c75b689a65363d678e21163aaa9461a627629459554380985975038a982925d02912390424209a51037d8d8c30d35d240c38f5ea229a61863a84147de8bf24568647702cc10a101f59de7615fb078c283e45ad8d205303040b794000d43c8920bfe5c908641dcc21b2c79cd412c4230818c6c1d3cf2188e4ae2918778a4470f79c93a48f630710429241afb914e7492339aed642737f946cc8c6187442882146a508228ca909623b8c12c57d1c005862083af20060160f28a5ecef20004102a2c66129bd4bae42640e9a52a7c79229bb814b75d15265060fa93063a00a7aa5ce589722ba257e614a9aa05ca6e5daa000b2a0004cd2ca70218184d095c200537f82114d6e806e532f20323600105cfd1011c0e51883ebca10e7e08161fb45085223ca1084d8083201a49883a2c2110a630842a3a6108544c631ad0880f3590558d42d0000d8e7802119c508528bce10d4dd0810e2ae9062810e1094d20821c9cfe80851c54a1094e90020d88a08321e4e00943a0410e98a08432b4210ad1a4c1348f90863520c1096e6883f8fe608747d0a23f0fa3463130b18841ecc1097668c11d50410c62b4a111c650820b4a10854e4ccf14a51885121ad5031170460725c0400ebea00324e0a03068a1db0846f098c744e6063350c2204c810a60b823540d89116c46322371e4e8632751493b6a528c3264530e7fd8031bd49008467c2217bc108afa8c310b271cca399b314207ac622a0660e0803480005996a315b454606c598b9a57fa22a6239e6d504f545b540f80003262006a0cb080062ce0950e540d3073bae2d8b472c62ecd496a97929bdaf88429b48289500cc8c0593853feb807786006332001000e90010b6845075a78031cb48085294c010b5870031cfa00bb3ed461387e10c42108918513cce00d9520841ffc70cf69e88e188e0004240401074324010420a08120ea000712384a32b04d810e9c70041dd0c0031ee8e510244a0312fc162d1f20c10872801c1de0a0050705600e94400837d0e00e69e840096860840f48a6053968c21fe6d0810db880061dd8c11370000a5e14c317f9e905307ab10b5fa40215a6d8052a06b10637acc10934d8811e6f00c0b5c425321a48cb0870e082168c400724b8130d3c010c5ea082178fb043199a900436bc410d7f780430e061b29476a31b2f1147cfbc418d5c1c412d2ee8aea41ac582fe11386a5733e0010890c00646b0610d65702608ccf6a53ddd353076a34a9ac2042626dfc52f6ffdd2619e1c3526e30d6a690acc5297eaa84445caaba2ebca9ec416e6a934594f4cd6d303c2da340dd458044c008255f496dd35e860061ea8c0119ad0881338e0020d48cc5729b001082459ce6b8c94596860021060610622c04227e0d0cc3714221084301d1b045188e034b20834480211d0f00643d0405369a8420548c0bf35d8b20d6fb8a4f6e0508552a72532cec581081c35821610214b1860dc0daa808510908004341801056480841e84602a66490b82477081628b713217b8c3271e618a63f04215a040452e4e610a5184c217bce845288eb08640fe3042118d30c52c4ec18a5e9c0214a408052548318a4f908214aa30c52946f10848704214a6b0c52c4ac1881e6f89021fa0d407b40402c091200a4748020d4ef0043ba4210a8e22cb00b1b21c014aaa6a9b290b06361e8510b080063a2803129440830cfc894b0ec04a61aac6252b86892f53cb4bd00545d5a91d266a6b657258fcd2b42b8ac92a5f05d35740409629eefc2a58c15a5b1f05165d7d00e70e6800d32055164b85458dbc12c1002990840edccdec5df90a00024000a1a3094c667540b141800322bcbc0daa58052104918a551802137da84262470dbb4a3802729ee8042620c70943d48111b413842138513b55a0a2539e57052b54310a4734fe82138e1004231ce10857bbc110801844250af18770a201d979e515640e4c832820c105c5dd41082263010f9c052b2248811886508954e0d717b6f8052f52b10b5eec8216bb38c529d4470c63f82217a45044c7ffa08836cca113b498052aee8d8a59dc6216be40052ae26b0bfacf82beb6488513045898a960e02c18f8801c880231280322a8319d9b8a5d699305049bab6b130d80b8c299011950a01070000be8001c90031d08bbb3313a2bba8bc3582ac0609323db0aaea822bb83aa293ba2a7b22bacd18b160cb322fa922c421448710ba9f90a2fea93a55980ac6080c670ab23c2b2a659932772ab250bc1ac69000b98bb030014a852413f738c2428fe021dc0024d588228800229588226c08226908221480329280341e004d53384306c833e10043fc8822768033b7082656a811368140a00811398a80cf00010b8813df00334f80343d8833558033650847e1a1660d80555f0033b60044aa0043910010710b93c8c0c0a80800c8030000401c8680bb2d83d25608a2920055bc80f5f08854f98056020060adb8554f803357884628092624838fbf305f7ca8f4f60834a300539688447f8045338c65f980553a0055bf08567e4055b388540408212b0b1c978ad11e0bfafa8ba488914a749c06eccb236a9806b23c54d5c226fa4003c79801180042c10930bb4802ea9aaad2b1b049bba2b33babbcb0a41c19a41fe3993b8f212b86b321de446ad48b9c6709a40598e19a413aa7080b8180b01ea80bc298b6f1c41c088c132d91318343ac0600001088002a80bae093abc38b2c0c8805e539c13a81b0a6882d9ba4220c8023720843e600311d8800b380126780329100434c08224580334680334308434980127588211f8430dd080b6aa131c30021e700224782541380231800322b8a6d18282820a812c210b21cc3db3380b897b2d06f3001798011cd8011dc0231ce800e23b0b2958455ee0044018055b08855288af38f0001a50822120859c02062be9455fe88567cc810e308421c0803bf0855f408579a3af5dd04c74db0559fc839adb8cd7c233aa904a2dfa126f141dfe339922a42b0cb078149cbbbab3f0c4976b0212300242d0812c9928aba99baf98b61070011cf8023c988335700b21eb13c488a2ac21b2bef8c8a6e948a641c2c6f09ae5fc8bd5c40006432b3f038b37a932b121c222e293a85b4da50b1bb1b932be101bb9093a01104902d82a933c80022880a87a0c0b98819a9325293881e0d0822280022ca80320980aaab8940728814a7a2622088236c082371084264803624a832220cd07d08010380108600112c80065020100822d29e083369801349082756c145d719a3699a2b3f0801380b031a21b0ca0cb4999b60122019e748351008480038546a80479d3cceb6b8324980352e03e63c8c55ee8055b403f65f0fe830e200439e8803b50c55d684c5e988584a30554108540080435d88339f882639a8302f480be53b511f025241003407083285003992a0335304a6e6a142eda0c25680225580326008335f88228100436180126408229f882236001bd5ac72f78822708818672012750833690031b7082a264033b98c340f0839eea002538534580a53500843b90031aa880502c012250020f2881133801af940324208219c88124480234108439c0023670021cc03127e0011a780227880234508337d0b02770832a40833450032728543798553c7922359a824280820af8ab118c41bf989aba0894b4f140be10133491bb02804f27ab0b270b3abb0a8137c0021da82538fe78022ca0811928825a8135d2244f07f8d028788213e8032bc8813440202268023264021c088122c8b826d8831370010d4d011a0881b2c801bd2b8b3bc20a4861a3a7d90c14e0123b410b04c393ffbb003b01b61aeb8013f82dcb08044e488441008453f0855d38c44718a747a08447208563501f9f491f5ae0859f1586530805404803468004f6b2855c984551a00447400285c4b904bc8a0e4082276801bd09011ec0b38772811c70033a40827f750123f8021c48011e40441df82d6c720340b0833b28ca3658833bb08339000446680434e01b1070011e30011c588323000342508345a5810f488221b8814329011d50821040032270012208011ae02dfe677a02847d822310843f100131aa9a0bc8011ab800b8a0013160821658ca37f0033660c7102d9c0c508eaf20acc2900127688332c8b81dd0803b74001238820f10becd505626e0812070ad347a2b34c18bad41497915baa2eb8bad8a470028000e6880f3758014188215f81b0bc8001d50817f0582c79ad02680822638823ee8033e90822288ac2a50022c98d027482c36c8021338813718e028f0d02d29142eba31cd081c0d75499b0d1c108000b87a9b442b8baf3894b050b01908ce12b8013c62013fbc80b6ec00e1db95c1c8929123813758c644f88550f8035a800425908332c8b642f8b14af0d9fc9883c19583364804f9eb456160ccf40b3854a0fe843d9003db2d9c0e688116c0a36cf40362e8855280044618a72f58833940385ac83e6d0384d4ab29506845703b0554b08552a0844f080552a85a50d0b753488547508444b8375268465e188416b800b674adccd5811a28023108820e98811a888219180125b8812750201240ae1c182047f1001e480224c80a05ac0aacc880cdc01a08f0008e1b4434a883b9ea13ae2a930e180116408b373081bba9b2306b1d42280454d8830c083bbb5a2a9f9bb272a58b02d8de78cc8bb3a12abd2800e2bbd54995820c000b08001c10e83b3e6d0eff09010de00014b88069038b0e78022330812818a62010011d380224d0015f058d30bc8ae2bb230f10018f05de1dfe5d0e2d098119f88221d80119380111980cb3d30b8c748bfd1b01de82ad2400200cd0001290230758dc3b690124c8b820c813ffe3153760844008855de0043170023f58e7267839f07a023fd8034944831e905653f00579a3056130069a3686ef4b8440108438500212609cee82d1df525c2670d263a085e9e3d2593806fa13865930dc5310da2610833d20052b0106f9fa052d15060b4b854588463a00044aa85a4ba004f6cbafeb8b695e405c47f90025e8e92438820c508323c000e24a610f48815106c2dc23411b458237180208f4c49a8b8ca7a90a08700239b08340a0bd2ff0aa4bc18aacf1462048031688821c4003b93450e6ec122ce004410804fe4a4804110833af788006d8800d384f41594fb9d19a1094c1300b94b948d0cbad8225a80222705f4bb200126802157800301c0229a8808d838224c0823290020d281d20e8df0e902622a0a48b4a822780822750832448812a98813162000e28ae13708334b08006c001cc05011e988110300224600229e8b010e0001c184c1df813588e9b05c8800cd880c3f000908cb22fea48d714a097745f48010135a084e7fb84997a044658042218023d4382a3648437000121b08335c08136f80346180433708334b50339e0b1387882647501be828cb06d940f18cc25158a732b86f642da62e8054550843d2803b7540216708199a3034310833710da3f68044010fe835028066140031e702640f85440484552f8844628ab50a66f1ab801206f011e10011590012540c329c081c6013916e093bf888c14be8023102842db804ad10121e3934273802a789e4f500fb21d021098c7b1b89b05b80006a80343280331888221f0b529a8c80de8ee9a83801048834260d656651b0a0033f12dbaad518c0520c993e45e512f80740d0caa0a000718022550010f8000073880cba9032798822138a40aa0012c208113c00227b00014200160d3012280821c28be1380821960f457c70013e06f2090a827280111388108d8131968330e08012c8802845d02293802882d0227e88113082b1c48824a19811028be0c505e23e881979b0136fe82800aa82a118c1401b79403754dacb0006d24024648044c60ec5160045168c64180045b38ca65ebbd39e0045f480439508327e030d45044394083129f0313d7543970044a08846ee2351cf0831cf8035be80539188124908335306246900337f8823d30761d4383157f8ec8a8280c0801c5058110e8014ece4db40030f58ef797e3812948033140033668821e600217d815c535810e90652b1283394802aec28a239877c3c0b2bba9002578ef1608812858f112a0142df92dc93826b54c0220407b16a0d80f1801df23afdeacf7a9f193a60142a96a57abb08a24dbdefa0cb363e6de3d39a2bcd82a34a9cfee155f0090bb037875ba700008408008f881fe21d0744f47d713d880fd8634289001387002763f94c3d87523200226a0011a28014013de9e640111e01a42970108388006b8406353ed2ee900ca2e2ea936821698c73f739a9fcf802748837f06c726005c1a58000bb00015e0810c2042bb5bc2af721a08900213c00a0d587117280319d80c2068023bc87928700386b6804aca00acc4680d6082dd0d021c285c4cc0122768a92700881c5368ccc041d00509171c8ef030d20404082251be94f000220da741343ab8305203078b166ed0cc18912309120f1d2e0c99f1e101051c62403869f3448d9a275fa4b879f244cc4f315f9420412206a7132453c0889182048d98286aecb471c3068d9a3569dc3c82fec488d19f4073e4f801bbe7aa93a36dd09471f2a50d5c35729c946933e38183070b2a5058e0c00105bc0e16305860f8b083c20b0e1026cc80f102048f1148464098f201cb080e642ec0d97266caa0196b166d18800002010ab0667da08061d1a1173c3041a141862148b2a4c13283c489161636a021a26188943d7dfa0ce1800002080b25188078d2e6c4850a0c2c50b0d0c143410e2ad2b481e3a2438a2326fe56d020c24285c87b5b80a880778694073a480c89a243c910349440821b4ebc57820915d1a04203793df0c005224421c2021b98a001051d8ca017842134214206347ca1835f8131f000061dd04083071774d00108219c60c71f8270c2c923fe7bc801c81f72bcb1c71c76c861c71c8028c24820896402ca238f80220a254f5af26428a17cf2152080e8a84822803442c9278f24a2c8238d3c4209259058c209988f7002899990381226258c08f9c71c78b6c1e31a73c865e420810c62871f82c8c148236edc71871d761ce5861f81d811481d7394a1044a4a28f1861b82a421030b25e8408312589401a91f743831c50c2d50c0011339d4d04007264aa61703b9c6c640622736c6986294c947da6b9169b69868986d36db61cb1a8b4001278050c20926a8c04108347090810958fc804002226040010216146181051acc10c20622d49a441117d4e7800c4c380104041760514406191066c10844d09041fe050473808508345451c51a490838601228b5d0c41a8dda8147144e4481c41238b43003114b4cb1861a62d4b1c6c6524095861868acf145cb6aa4e1c4134414a50413531cc184144e30b1f1534f44f1c71f813242881c813832881f610df207205f2dd295578f5402ca27a170828928a290a27598673692c823985c5934989428f2492aa4d042cb29b9d832cb2e73cf8dca29a23092a31c72b0b1e7908dfe8168936a63024a23647ef249238c001208989d80824a288f384289999650620b2a8f7c02881b767ca548207f1412c71c5f1c61c71d7f1cc1c20e4020e1d4df4f94b1d31a4f3031830b493881460e6cb891c61032e4c0c30c347c3c03133bd0e7fe824b3a60c1c6132d8cc07c134720d1041632d210630725385041050e6470030e3cf840030f3a20e1160550c401c265cb7ec61967adc1165901ca2ef6ac053c4002e04cab041d20c10c72f0842a142164250042139e00852440010b7080831be0f086e92d810d7ed0601f9a500538a4e10d6d608306abe287f2a4010d706844201a110a47fc81129cd8431be24088a709c21043825a2022e50841086a108258431ba0260837c8e1884998011292601024e460083c58510f92f004a21ca1074860020fbeb0b12028a10a5f78025bdc1088233102128f08c4e302b13724f981489d1ac45706a1083792e2118ca89c1ccf9408413022118b608420fed0343b00fe225081fa4322dac0084a888216b348c52c6c518a5a9ce2146f3b052848e1355490a214a4f0a42d48810abbe12d15abec05307c018c60144318bdb8c52e76c10b5ef88217b3c88528dc084a3479254aa0d05c25e6648a51ccf02b7e5b83189cb00697f9010f8dbcc39112810735a0c10d6ea8c3202a310a5084829498700420be90849344650a2769431566903c128000460671420f64d0810d9ce004df29c1072e0001826d200709a3c06032f3bfff55e6599c890d021c803fd8e06f33c9ca1f02962085254081085ab8a01a96f3863e1082537038841f0cd1074318c2119c60a9213ad10953984215a960c52b6e8ad35dfc2297b3e0c52be866d365ce94fe4da148852d7ee10b5ffc6218bf786a3178718ca502a3174b5d6a31b25a0c622c751857f5452e75d9cb5d90021294b01223803487390c221181f01c2438c1083524e1084a788234770408469ab572935c5c2844618a53e24d14abccc52e96ba4b5ee4b2178c9d0564219b4bc5323697bb742c63176b0ba9ee8216b6981bdd12bbd8cb32361753fda52e77910b5ef44297bfb4c52e226b8bb7d1e216bea01b2f67eb49545c32159d3d8529baf60934598999a2e86460c10458b3510914667bc422e0e4d63d40926c90e81b1a98900639fc618f85405220f6508635f8810ddcdcee1eec4032391802127f700370360018c93c343215cd0c7e1b63bffb11e033fefa7b0d013cd39ad03080329e59c02160cad24eac4215ad50c52a4cd1094f98621532ed84210a51083f10a20f29e544272a31535384621498e0444d51618a5da4a2c5aa08452744a18a5ef87617aed8e55295aad4abee98c7bcd4aa56a7ca545f2016acadad1bdd7a21b7599862719f6066296671ca54848216b94c6a62637b8b597856ac61e5a52f75c98b549c42159ef3453176814b5f6096cb491eeb6273910bdcf2f2b4968ced627be158c7fed417b0f5c531c0fcd853b86d6e6a861b334f414ac22a5acdb9a02ddd220d5c51640d15b4e0ada56791694b7ab2939f0c2e262021ea448c254f904844dfe0229408a2a18552588356d6f0be34c4010d47fe38021a9e908639202104fbbc400840040422ac04073a204f1569100539b4610f6761c21128d40106540058c2eadf6b4453188c5a14c0015e0db6f38bbf87e24f0b7528448297d38711fae1c2aa788527163c094774c211a678852a70fa8a5de03b15f8b6692adebdef5c3eb5a736b6692e6cca8a82ef1818c0f8452c7f918a5f8422965b8d25c681bc0b6064f5ab608dad2a4e9149ab7efc1797a41b264f5125377da214648e328b238b49329ba214a54045308f54e252300913658344d64cf13615d382c49d4c799953410b5ee672ce64b6c555815ccb5e523daabc4473551deb53d83e7695b2dd85d6456ec9482315b2a60065d7402174d9ba3215a2a8fe5227ac048941d8d00f7ee0d18ef2d83848c891ef81d870eecab06c392881084d20c21072000226008504221041bb44f0800870400317f840f2547201f6e0a50223a0810938e0039a31e10b33c0c00632f09d0e54c0034038c2c00a7c80fe8e3bc0048096806fef1a710f983508d0821658aa85379cdb101d3604880de1895560421018e6442cd080ee42d481101d2684217ac8895520921337e5a95237ee0b53f8f615a7b045c05591cb54b8e217ae106ac8435173f5b738975ee5454f5531e6392716ac2817394fcd0d2dcc59685d992b7dcd99ec8d95cc900d71422894c2db0996cdd50923600d39a91c4d9d9228b0c266a15f26a1dfdc9cddf925192ffecc96288d821b39c92960d24f2516301c43c77d553100da5739564fe19f2fe1126c65526c8dc2279082d2b91629b4912a415627515a2894951f490e261cd2228cc5212192e820921cd4c15ad4c11bc801c9a0011ad4d5ad8d00056400070c4705a00b0994000554000424c606b84407585e09801e7c20d403908f6038808b7c00077c8076648008304007f84b0574400890400eb8805e5c867c58c6ed1d46ff78c644dd8f8165db6b089880f1cfecf5418269c2f24118f3618221604227b04227684286d58121c0814ae58421ac8216380121c08120385b27c001bc400125fc9b2ae49b29f8010e5002293202e934822a485829788295cd42291802e5a882fe2740821f3c4270a9821c74422060c21f8c422a040227ec025b059c13b49b2330028eacd825754d28281a8971822870829585c22204dccc411626a15fdd24d5c7edd22f3096c87d56dbf0563d7e962db0020f321699d10d9be1d62c28d66c85c97115e0d50943d52d952d5d1d45ded64f5d5d2f48d667811997d9422f709d67f5162b90192aa0022b00a46f99029a8c1393c0918e50d71fec811c21c9551cc1131c811c24011170211cb0819fa8c00a6840068c4006e8c01348c1140cc8b694cf03f0ca0940c11094005f50800e2c41112c81c0a880807800073c880394866184a5663046b61d0b6804186640a2ed41e26b9086251280ed55e24411c01268fe412c780221f8412c10021fc04125a842271c82119000f415822724664dbd42270081131c4213a4c1049d800554422a6481bc2801f209c21bd81d1ab008f700010de0805210411a4cc11cbcc1107c000eecc110e8007eec000a38810ed0260d088d095c80c2a800060c01141c010e384158ae801bc00516008229cc411d40c11bf8840810c113f81306544009a8c0090442130042146c1723a0022f90df2e8098039e4229b0022f24a3259d1d2af01463d942277d2407e69225e9a095c596a1a516dc04d327089da295c2d169dad2f9824466169bc1126409a4dbdc822bd10d303cd607821d6b95e02c6c592adcc2a35dc91cec81d9f81c2644c2de5c171afe24111bc4c11ad0851a944e6a2ac25e8ac17eec800ee40011f08012188112f08414b8800a94400ab8000e149ecad08018c8414ee64020924f055c408b50401a3e4844e9859296cf8980c008e8807a68c0080c810f7825ba2c40b86506043c48034cc62442a26c9c657fd9cf80bd650140c012f4011668c110ac812140011ca04227c40223545828684220740288ad82bfb15f2c04c22ac001f70c410898407b09421638000a8c571314411d24810eac531620410a78001148c155d653063c4113ec80901a90077c9e0e64c0056080098840098440751401062c40114881061846ff4806097440035c401d6648613c480600c109300004005807d4c009cc40fe09f440149c0009380123b8c127a8423455c11d7080a8e60239f2026ff5023108c32f94524fa10223686467cd426bf54254f919cf7dd62d541553a9eb5409195859122f715c900183301483631568849220bab6d66c191a64b1d99cd556678da47ce2922725569a85646c9d42989402dc0416e5400213b5d12228c21ec4811fbc41196c8f1adc5a1a0809160e4e1bb8400b044112a0011290800738255e3c080530000558a90ba0ea03ac2104a4cb06b880d0d4411d00c51a2c8a18200118b4c0649046595214b22c46616c865b4e94b2404bfee017b450c62168c1061c8006c0412cd4c112484f21744221b0542160011664c121d84b09ac0121b041210cfe028369c11ad0db2110810e180138f5c156f441164401f7201e0e9c80a8944016f49316546a1de8c00814022610421ae8c014b8011610a20ebcc12b18c1057ccc1138eb1018c1117ce5018880121c00afccde013c6581ad467f3dc625ce1e97e64f017480442dc6094801011458775066208402170ac220e44029f0541d3841063d811bb8a72388c236569c9f595a2af412bad62063f1d9544964f60a289b1dc3be1e8355e99945fe98f7ee592f69e42e49592ee859a6ddc27b5e5d2c2d15c416ac7b8ec2d9318930f69da8c91f9a94028e380925f811a208c22250c2d278052318912378c223986d10cc40e8bd48a97e400bf40b012d5015ec41a4f84176fe29411078d311e8008ef2133f6d4602b8a50100cb0308cb58264645051843e11e5db2a5672c0b6634001114810a48411fa880099441047dd40669411274401540a32168c10980870ee88005884012c8ed72920010648011d00009bc811160c12e4a0107748701494f0a44010ee0c008688012f8c12444db08e828080c411f248111c0260e0c220954800910410e6441c7e0c007a0c001a0c01c98c08b8c406104805caa2997b2865a32f26ad0a508f026053422611c40008c1b9782480274c0093041a034c01320c1020882da56e076954223f8c239791242e26bfc4a6483c2ebd5d90228d8eb46266496750d29800228cc0d798a02285012a589829390c2fe2929a829a0422f0803317416c42916589d821b4c5229700db79ed2c1ae523227d52f0ce42c289ad2f5d11add1d201091b3fd08d104c22858c224e001a3ac8114ccc005a421056447b680cc09b58113c84019e34052d6410b1d228cd24015151e0dd4411f348a1b4481120041d1b241e5910005ac6106b8c049a82cbb40805f3854ff9c694549866b84740100400994001c1082162cc11a608114c0011624011c60581f68c113430002a0000af88d1600010264c01710c2244481de0ec11ec0c11f1c021428d0a66ac0048d407466406f68000de8401d584813f8f0136041199f400a0490ed96401ab4a62f044325582e0b6cc0037cc120c85a1b18810580fe0012b0411fb800129c40e75500066000b0a4a1b3b40602a0b51a6680d55a2dea3240ee25546610ebf850c66304db03740010d44c2700821ca8012c81552e98c28f19c3be769c3074b69e65dd9e6de42e742b29c80128f0023081025508232840422a988222ecc223b40137b5811988811d34c2f99982987c0523c01e57a0029935c21a8002075e1a2a2c021b24429a7c02e79442937d02d68c8299f8209b3c02303f821d1c92e638b71f110d700b23d158cc1f2cc21a394e20acf75b7d02e9881a25104d123142d3d8dd1e2452d10c4e2008821fcc414be8ce1ac8411fa88176294106984f13701823284183cc2144098bb08486fd6c06b958e709144247fe19c2212c814aaf1b16640016f4411da4400e1401274c42128000e845c0026080c294411540810818c2127c80f31941cd5c4006e0800c50c00c448111ac8106ac812760811b604258938005fc8507544127b80113a801123c8120a84121d0000588c01cb440076041a17842162c400914c50650800ab4800720c11eec023546411988810c08480660c08658726ac8a55e37c7ea3e88b1f8f5b61d40cd4a54ff28c6a0472d64b478039cc027d801113001207c02a1ed563dce020c1683c35de455e9d92e0433ce35424e908011e0c111d400438b011128b94a3ce513a4c00218800ae4c00880400b54c00938c4131cb80a54f617344227dc81a24cc523c841fe228c6c1c588523588a30be1d2794c228f05cd484924b220a750733277c029ca48903ee329b3082cf3d8222ac81124c929374c223448d22f8011ed9761b5c111330411b24825c9dda222c0226b81c2d60c21e9881797d811308c1e9b50012241e121cd00d7cc08610064c08d45fe005039c4011c4c7b4e145b344ed6278800840800e10810870c055364113b4407f680216a8400668c00300410930766664800c9cc0553a01f720c11114011aa00011589011388121c09a21a081114c504b9c000d0c41138400420da207987c6194401c2441cd1698132c0104b0a68ad04005700060fc45074008d67f80126080bcc48127844220dc810c044109b4011dacfe0111c8013ff403dc9742d33cc10e7c40523a001f38033ff0033968420334006d48860368423e38433e0c830424400218062036c00f6c423ef4433ef4810440000e200009908c18400239ecc3313cc237ec0339f802dc809d30c4563118433dec83e8db021b84422f94c110a4c111b0c12664422614021aa0c21ea8741205011464423364c22188c22ef80112a8c120c40116f74011b441df48791070391b3402e4d2c230d0c2a9f0800c14c1114c931a00423ff0432fec1139a91d2d9c922991027573822514921e41022ffb91572442e2fcc156d088a899571cb0411a240140b838f1c4c913357b123d62a48851a3858cecfc91d306cd11274a822079c3fe260d921c69be30c182660e92164f70b42041810102040c0a1458f0e00283991c1c3470e0e041cb030b1a04ed2993039013168cf0d461428405040b2ee468f1a64f1d385838a83041e1c2893a2736f42124b60f87256bfa9ca060818485237504194a1b2205132216349400a123c389133ade4479f326501b1a6b9c2c9143c4434d070b9e4266e3cf9f3e7ec914f1dbd78f9fa6071b8668d0f0804283155bb64861c4c44ea74a6ad248dcc7af5f294c6e90fc79824407962d932649b1500104850a182ec8202142cda42d53b4a8a84001f2634dfcf8c5a23229568e1127d26030c2a4932556bf2ab122c66810a8536a403d7a94aad4a0477f70ec01844097febf61b40fe16718ce5cd9a00e4a8e58e29336ecb8451a659651a617524cf904945b669965367e7cf9c41b7e8cf9e4145a6c4965165b7891e69e7dee01e61353441185944f3e01c61e719439051e7bec0145913f0051e491351a59c71e6258f9e70e25d050a30d251ae18c1f66f0c0c30d34f090e34a31d6f043a235e670a38d39d2d8c30e36105a04924738f984425340c1443e4812f9e38fc2d6102490421a81841141e6c82184370a91838d39e690c38e39da18139236d2c8028b369a100183e93a088204971a5080a706367060030b1c00028d131a3880810368d882831cb0680082122cd0218a080ed800820a44600981031cc8e000083cc0829049d6fe58a1830c4680620a0a4898018a32eca8438a0e4c30c1820ed878c2af13903041861692f0638a070eb0a0859d4e288184111680ac001fa008c001081a000285a70a380001074ca0018b411d71430737eec082040fd66863da144868c39013f85021041a4273a0881338e8c081045e72c0054392288383139878808312d0f5f7829d7ed5a003112240e081052ab020081502e1639127806e2310419c40430c0d38f882810a3e3600a803123020819f0ef0d704142a80c0042880a0c18a2f54b0e084294a61c489548cb14594537ae1859339d470c4945268d9c5976278998517bb77d9c5965972b10514504c3925155a4ee9dbefbf4d79441140ec4058cb44fe460985924a0651a4914adc5023a236fe58d3145350998594504621a5124a1c7a44944f4209c53545d69802893d18c9fdce3fd860430e3f7367a4903ff650638a3682108106340251e88f349eb0930d348610a1841028e8e0830b3c00576038a0386188f0331001091a0086a208000028008226aad0a28f21ea58e2010fa0a8e30707a45842051a4e40041d64410b2750011696b081271461098d3884093c908442a4c10982c082ae20f098542d6008274040aa5c40030bf080109dc0820b407018208080691808810c3a90c22560c10825f080056885830d2ce000112882082003999fb88401376b010f9a30041c3c210a75600309ead0842810410953f8fe032738b13c23c40b0d38798a074ac0819638a0004fb9570968000190fdaa0004a85ad50a70010c1ca05f1440012a5600b025a0c0021b388069b0e00113acaa6a0430644c16d0af98f8eb293fb1894bfc55b5c7a0cc0498d8032604a184404062108098c10cd8d08846a4821124d8832f6cb18b5ff80215a0e885df78b1b762ccb218bee0852d50610947700214342a45284e418ac3998214a8f8442950818a539c4215946044274251cc501cb3149c6844f33a018a4e34c2118f704423e4a34d4650c2998160c49a5047894f24424c7650881d1201092fe5ae506e98831dd0c0913288210a73f8031cdc20882b25210319e0000a4e500426f8650839a0c1fe13d2c00635a8800106a06301b2f7011270ac2b28d840064c00811e5ac00243f4000720b08012a4e0012518c2121cd0862530e0041da8c2053340041a100107405842f706013e3ea0e10f8750031680d0812770e0025850810344d0ae85b5a400060800d40c400004148001296d000a1e50863788e000064040061e80562554a17a1b90c20642700227c8a1376ea88013faa08435d4e1024f58831120802d41846a0dc0f240cb18094996b8f129bf3a40005cd22f020420008a244001ae4a59cc06800002a0ac6741ebd9000840b4949d2c654d1001249ce0009735240a0058862170c00244c8c109c4d080251481062b50411938d1b75480829b7dc2c488feee564b61142343737b51864ea1375390731081c0042d78115d5ef882bbc0e0ee2ffed68b59a0029aa433c52c444109730642119c201d253841894774e2119600842108518951a46e9b8cb06620a2300523ac010e7898820ed6d004341402107f1844ee06b18886ace93e7e40c30c4210042bc8e10f73d84320ee84d4213061099890f01fe2a00308e880093898c11156d08099908a010da84011d0f00519e060630a98951168a081297462156c28421fa08085122080b20990021b1840012c9ca002d31141af36802e14b0410b38b0c00218e003422cc1041b83431548b5bd0670200588740a986db2000a303926fde2ec411b10ad053cb46a13c0990816feaa2e27b0550d6c2002098a4032117400080da080124ee0809728400d47a0f2031430840e80b98d31e16c9ddd48593a7eba8d9cadec6949bdd9d6767aabbf62c0ababf6af7fbdda016ba180087680032518e10b37f840073ce0810ee0e00821d0000632d08232e0e1098ca804b540518afb8c621090c845dfb8bb5deef6c216a4e804264811cb57669b16cae46e2d79d18b5ef862ddc038462f6e810a6fcb08126b50031a6203293afcc111af8b9d7983390a55d06216bbd86f2300e108863c02149c50841bc490064138e2df0a6104261c91083c21ca0f8cf0833901b1c9466042148fa85319a8d8bb44c5410e4ca8c21bf6208739c4210d71a842062a90feadad15620e1bd98323fc540841ac21073a98821520b001f679b6a57d3082054ce0830c3c610a50f8c1014ca0027fa94002feda40031e30d94e63c0013f2901046c42c703a4f5010d60c006d2808205406103a5494002704683327c850218b854129ed0841bec10031f104d94dd2e82211cd601af16810766b0afb232c00411f503b11650d9027c40ed859c2c930f496a439a96000c0041044a4b5a01b4d18d6f5cc04e16d0010b5ca0031c50c20e3ad081242881136bc87dc4a2a804242ca272a140452a1cf187479c1715b6184525144e8834a8a1094f3802e0a3a08639d481bd0f66c4233ee1ba529082447fd39b2d7d718ce5ce726fb388ae3267c1ddfe5dec0d15154a262966f18b5d1c2e15a9783f294e419964a4744ca1dc4861144ca1ff1ec12120819c02c11128211546a176766008ee844d44611438414638a1100e410b0ae1fbfc84bdecc00f046a0fd644a06e27781c410e942009cee708ca604ce2600f88676804610fca000e9a8009d6a00c98e006686006688f03ca675ae480100aa30664e009784e0ccca009dc080a9c6e06c20801b6450ba68003b4606576a8016860036402012e2bf3342f26c8a8d312600908c0d11eebb20260ce1ea002b68a0050000b2420260ca0015ca00836a003e68c8e28800522e0015c2001e2b004ee6005e48c0892a00f964007f84d05202004fe488c3400082a800550fee0ee12e931124900e0d0d4c4eeb216e90d4f0bb33aabb2464bb328800232680d76e0067000077440075c200552c005a6e006a4400c6ee0068c000d08c10e72000d00214f14c2701821103821bae06b3e7c416f66a172c6eb1106c19946f00e00e111fe0f1340a1f9668116b86d16c42bddd28dddd68dddb8cb177261dd02e714d26dfefea61e4fe4164c81130a8edb2844bb6cc11610e7144687140607142aa714045211c2841346e113c08912bc4d1108c1c054800434e085aa207406c10ff6e00de4404f16210403a1113841e1026168d48411802e1abf4fc2cea99b280113cea94f1e011320610f0ac111d0000880000aaac00a9c200aaa80098a8003fe7c6024e220106cd0e698400842e01560211992e119a8f219a6e12ab1322bafd21aa6c11ab8922bbb522baf921aae321ba6e11aaee12ad1122da7211bb6611bdab21acc522ee5321bdc721bb2e11adcd22ef9f22ddf921beed22f05132fed122faba11a08331be43231fbd22ec7812f117331f1d23021d32ecb211df8d22ee5721c08f3311d331b3c331bca611c0e5331cba11a46132f49133415f330bde1321f731cc66134dd721c30d31b0a7333ab2136d3611bca01344b331b70d31ba8e1307793348bf330a921398d93345dd33897b338a5931aa4211aaac11a94333a97331ab8b31aa8813ba3133c8b933badd33bbdf33bcbf33cb3733a0f331a96b3fe34b53339a3133a8bd31bced33adfd31adef33be5d33bc9533a95d33ce9323b49d33eed731ca0b21964812ab1d22a1b342cc5722ba7411bb2b21aa6412ed7f22cb5e11a28741bae6130df1231f5721b7a932eb74132f79244d3211de8a1375bb437dd72457b731bc6a1456df3377f733751b31c2ed33739134767734751f3382f73451fd3486573377f331d66934999141d98b4469d141dd061346593475f934757331d8af44ad3c11ccac14699544bd3613765d41c56144de3011de8c11ca0544667d31c66f335c7211cbcc11bc2c11caac11b0a1431eb731ce8f434ab414fedf44ef7143a0f753989531af8b338bf811a0c943da58151a5c140f7144f13fe15520f9351bd331cec941a46734f01744f79943aa36152ab211ccac1500d341c8a9351e7d33cbd411a94f31aa83355ed1352ed54400f345549535565731cd0012aab522cd35243d5b22cd9322f27f42cd79243d17230353330cb61307b7346657445b7011e48d4378bb445d5211de06145e9615ce1e15cd9944a9d9445d3814ae9411da8f44db9b41bb2351dda8145a1541edc555dcb014ae3211ee80160df341edc011d847545d1014ce55446d37545d7144acd811ed4f55edba14ded1561db011de2411ee2811d1e56633d565fd1811d1c961d38561e38961da8b460db754dcde15ecd2166c3e14bc3011ce2944a01f54e5f736657b51cec74557bd53efe2f955517951ac0c15021f53b2b555429f51b2e15564d15565d9338759655cd8155a9211c06f54e21155021954f65f335f95467d34167af964fcb811ac6216647b31be4746d5fd66dbda11bbce16dbb616ddb014ddb616fc7811d88f52aa1012b8f352d093743f3f25911d7433f54301173321b373055b45b655445599472ebb55d57141e24565dd1011ed2b573dd1561d5c173c3744de1a148dbd54d5b9473d1015e5bd464e14160d1b45de5b55d45161df89464ff156551166045164c357664379677637763d36163d9811de6e15fe761797bd7644d76633b161d38f65f3dd61d4c7664939764bf7445ef3561d94166af5658ad14507d3667e7341caa14fe6de9746d81b64e0b1568abb61c62b64eef14507f966b55154f89f36bc35667df37675715543d554eab5667d1a11bf2d61ce8f66edbe16ec7216fbbc181db2182e7761c6c568223f865db617b2b786f41381ef63679db81581d3459d99270cf728511f742d7d22c43d443f1f243afa11c16f71a1033372bb7373953465b941e4eb45fc7b5733d57643d775c31d77337576257b448d95465e9218aa1741cd65465b3e115c88176e1756413967a35164d67371eccc1737d57631f567745b8623bb677ff557aab777845586339f67877571e967763e7411ee82182e34136fff58bcd217ce5017bad377cd38177ef3579d15491fbf535e5346621b96ef1d41cc0fe216671f76a81764f73d66cb9561cb8d63ebb4151c3a11b8ef64e0bf5522ff553ab76930b759575d64ebf61951bd88231d86d2318836fb9826df64ef7769723f881fbf68391b71d445884d9819889b91e3a368ffb20a33e80059ef903a49905a0999aadd91eae921bf8e099ad999ad5801b9c1587ab61710f33867db337ab75467d331bd2a186cf994b2f535e41b776b9541dec195edb151ef4b55f13767493d788f5951e54f661e5a15ddf759ee3c1760b9a1d24b66e3d171df461185e0006b8a0a26100065e6019127a8d03b677a99477a9778e2d994bc1814aed611862e0a2559a0b28fa052c611fbe778ccd611dc0214fe58184551692e1c11dccc11efe7281052adaa26b8019d4411c3cb56ef3b46cb5d65371551a3e551c42d90b545aa55f2011d6a1520df454a9d394f9371abec15351f51b26f51a2a551d8661aad13aad2f5a0cece180c3615227356bf7b452e9b69667b566ef94ae8f961cc0a194fbba921f181cc401921d981d64337c01fb6593b7635b01169e612ab9410b5e60b25960b249811ba0811b343b70ad011aa0e11a9060b2457bb449fb05ee009c5dd81a6a60a2479b07c060a231da06ec81acaf811bd800b62ffa056a00096280b52f3a0658411dd0b25a8500b773db12f4e1b68dfb05c6201dc461451d3a0e707bb2630009565bad63c0126ee432f50111d09aa5d51aa349411fdc81a71336fe1dc2571d02f990ddd490cd611f4a61a2c11b06c6c01edcd41cc2c1a7692006e69ba2fbfb0b6ec41ce461186a20ad798019e0614fed210e301aa335441ffa011afee00e28dc934f591c9ac1b82fba0678c006d21a0cae6156f9b7529796381ff554bdc1abbf011ee2a0bfa7fa055a21c5b9531ac41a4f2141aa57ba0b062119a2a110ba00bcf10015b6811abe411dbc3ba861000ff4411cfac10c901c0670011e4cf918c09b0b62800e122117c8611e347b1ac4611dde21cc1b9b18a0e1153e40b42b5bb4c36019a0a1b3a7c1b3b9a110d2bcb4efa01f9260b4735b0fec411ab6011bbc60b21b1cd0614011eca11ac4e11ab8f41af46115449baa053db7e9fe801bdaf94b2f931ecc40c31b5cad5f8014ee214de1411b5e3bad311d06c0e01ec48147235abefd5ba56d4019a22108283ad66120067a411ef234612d99a7d7811d0a5684eda119ba20d62dbaa25fe012f6a1bcef41a2597ad92f9a0b325a1fdaa1bc13f6a46dc0c5677d19de211cd461165e1c06bae0c7631db8e1211cf2561dc020ad59fa052aa11f701cadc7c01fbe7657f9d71b62d994a5611da821d89b5dd3a9fa0bb081ab75561fbea0d9c11b0cfc6168ed946ed9411f189ce0fd3bddc5601912dc68bd011d9cdcd11fdd0660611ed6d66fa3922a03f784df1c1b46feb323342d03571a2e141b2cb4e5d7729c7b1387c3612d2f731d7a731dde121efec275e7d5c1e6c37545c3b575eff99ea154bdd1b475e7a175e3e1a1fb591d06194c57344fd9c19ecd411daaa113c0c0066c80bf035debf1c018f4415f9ddee9f5d51de6a1bc5956c0b177eadd211ee03590a134da85f7ecdde1a6cd5e1ec8fea6513663eb1e65c357da4d16ed793d8fedbeee93378f79dd6451b6eeb1f7a6139fa7d1bebc5516ed1396a7d5a1bc63761d2079edc3573641181c269881411f9221b9afcf9694199894ddb6504b79a9f114af63b6afc3411cdae17ebb011dd0a3133ca13c92615cf3f66849f9af33d8f441786e3b5881d98194dba1affb9683011584df6184e5a11eb6b71ea0722a03171b48fe2a597efbb97f1a545ee5d112fe1b0e375a9d751ada99864914e755541db8c19ecf99449f1be7b3d59ed361e8897e74b778e8a9541d54b67301c29c3975e80ab273074f1e41740be199439790204178eae8a95ba74ede3c7402096a4c78d09d398df2e4997ba7ee614179e8d8b1e358d09d3c911bd1b94327cfa5cc97f372c69b19b29d3b91431faa6b27909db9970cddb18b7710a84e77ef8ace1bea14ebc1aaeee2b95b674eabcca20fb30ee528302b3b71ead8ad739712abd3901c45ae13cab1eac0b0e0040a6cd7cd5b3881e8baf915074ea94070decc01f6bb14a950c0ddba493607ceb24bc0ed904276dc6e9c50767dcd89ee8cbaddbbd59debbd8295ecd93368d0a64dab0d0ddb6dfeddb67b4fab66bb5ab56bd8b64ddb766df8b5e5cb9197db069d9bb86de9d2ad839e6e9b3a75db28a6db5e9ddbf672eae0515467fdfb42ebe2ca854b872e9d3978f20b1634970eaeca72e5d4dbbf2f5f7583fd67d34808ada3943c09c135933ae59863cf4b508555133b2c11745039f7a5b59d4b21e5a4215a2f29269252ee3c269239609506565c7e3df8553beb88e318618d81231f453339150f38eb80038e53e2b0e34d35611195e2419221061947ebdc2510582a3a76979343bd33cf51eb5416ce605d82534e66407a23a637deb463a6995f32e6cd838b4953da5fed80338e617f61668e9d408233273b4889c6276a91a9560f9faf25135b6dbed9561bfe6fc94d730da49062930d73cc0d87dc35d041a7ce70d55d071d7fe9d0775175f0a147113cf135845e79f310338b3e32aab84e3af6e8e3062ecdcc71cf4219ddf7523f8600b24f7b2dcd33cc2df3a8cace3cc650c312423fe564ce4f4f9564525d396914d64b6531640e3e6560338f5268b5840e3e7154b2cf3b9d99134e2e8fdc82cf62537a76a263eab83b508a22d9e7d7bbe128154e69f9be43a34d7342c61266340e368e19bee8e3cd359ef975578a988153f043dd746ce79cfad442ca3c4b691ca55f768613663771de6999484062d69837e33816a762998d03a4cb9879569acddd8c53146a22b5e5a19f1ed6b3da3bec1c9a286db6f1e6686fcb2947fea970965eaddc72dc5487dd77a6a2672a75e58d6aeaa8e8c56791aae9d0538b3ee5e9034f1c94e8338e3ec378610f3c183154537eeeccc3082bfbdc4a4f22a4e8f3ce4cfea8f2453d2ce9238a30fe6cc3833de5ea138918fdec630c18ebe833133d485cc28f3fa57ce14fbffb3463833df6ccf4905f2d99f32a18c61caecf3cf844a28a3c7d8df3c53bfa90538622f78cee0c0fcaec530b1aed3a130933eab813ce3e88c4b04f3de40861c93d276913c32dc77b71893cd4d8448e17c1f41e092cfaa4d53e2bf60cc64e2e7aecf33b18d8cc898f45b4011ff0684622b2518e3635061de3680c3d2291088e91c91df2b24733cc40887ba0a93299f14b9786d6fe17c140663253ca93370c2394871c6431efea136742d392ceb8242c3512c93872622179a4a61df5e8613bb07528d9d00637b751d46d8eb82848714d6b960ac735d2f1c44d65873f66ab0ed9d2d19f5571043e05f90eb860729ff818e57af4b1cf5390b6146ce5041d1a0a8b4d4a0217b8b4a42d3391c79346228f78f4641e7c8cca1e5942bb92bc045b8384e33c22842e76a423859e69898712e917c598c61c8d91e4c2ee24491afa854f6b49cbcb4a531a1a998346dd208d9438c21881cce35deee8cb9e3616a73ad529302e63d3f04c2334cb98b06066aa8ccbccb44b3331864eaea4a440c2b449c7f8e94f9d39915464929376f8e944d394a60e5593b4fecdb48687ef68052c60214468cc66888cfa0d34a2111ce000e737c9594e36aa810d4c696a9ed4491bd8caa1292b52471cf61c5b7500249f7514a43c1ab9081e0dd2168340441fd1806022e6000630d0410e89b0442d7811097ae5702638b956497e92916df1f18fd66a89202df43b5ad04219265be1503ca4c690ce831a99a8052d6e310b53d8010c5f98032266f10d6f648216a2a005caf6e297e3e94111c1409832c4318c1a7c632882ba893137e4189174c62630a16481ce352274082542c2cc9368f254993449231a69529337a4418db6bab5ad70954638d2c4986f4803af77f5655bc3e1b3b25e4c20375bd8bbba753191c8e31d8659e60e65d89977febc8618b2994d391715a9ccea0639d680863a93b30de50ca71ad0690e72b6f19cb4b58a3ed7f9db40fe599e85d88722e5c8123c6c9b918428448d6e1b884bcae58e7e20620cfbd8073fe8708b7d0c651efad8031dfce18f66f02d21fec8c413acd10f7f940115fe70c73eb451857ff0c3196558c63e7ad28f4c8cc11e279a69192cd10f7e2c820eedf25349bae8a1ceec231362b0c77ef1005d2190c25dd2ac47336a800d86082318f7604737fc218a30d8e33310cac4e2c0818f2f58c21fedd8870d8a218f71fc771eef68de3584078e7be8620ccab087385a8c1479988114fb000bcf6849266fc063befba0875cddfacba07a23ae7b7d6bcdbc11d4bd76fee9c7421e8ccb0233cc8219c63299f15965506398be5ca6467ec9976920eb58a7c95069eca8473b268b28720ed18853cb063622a5357636273b9bda06023925c56d60a43ceb308f3dd6d1373f9bc7cfcbda4e795693909edc76a4f8d8634f48c2478af031a425d1ada32fcddc5bd5a377ccd5873efc710a3cdc83d33dd11c3eee218f7acc43d56ac496aa25a791473f9a24cdc2564f7e8843352e975a78e1e8415c928e9028052f6169875887dd16a72045248311c8222183a080a1c5ab791248651af863c1dc5530358b6b358c518c6888db179f988531c09d084694a214bc28062d4e618c59144319d4a08634be510d24ebdb4c704dd392853ce57134d0fe324ff68c684e23c323f5c59927124a34d92166a6e5579a1ef22665a3b666cf1e1138d250e2a398735a286a6a1bd22179dab4d39f51d9831b820eb4ece021bb432e6be6b74d48cd6ddd1357f1517323e5a33c1aad11cd713ad69dae873d8caee991aadae7586235a657fde8a5b3ba872496873e8abb0f4f770fd5238d35ce4bd24335364e1faa8e075486a243aad47195682fd15388b26cd590385ffe8a12901023419a01966398b9abdfcd410d63f48216bf28c6291c010955fca1052df000083ad0810f64c0020e7840073c30020b74a002917fc007484003c97ba00318a800052c000217e0800623f000164cc1eeb51ac3178b7041063a30822ae8a004fe2d48022754310b629069406991d16273c89583f4c45d3b51fe3ea4497197f4d0cc4ef3109a9f111b213ea3b3d5f0aca28013a9df78bc9d231ff9a6ae719d4f71a756ead1f37618a28e65d59c222879b48e12ed735b0f6ea3fa47bbd7ff481283c3733bc75caba66964c75c92b374f9e76825c14753e70d91705eeee00f9af05caa5112c6f00dcd900b3c240ffe350fb9500b88b03b8ba51166b061580271fbe00c36550bc6500f4e810ef4700cc6a00b91600c57a122f7d00c9180089910095ef00fed8018dc06587ec73278c226cdb66d5d022f6fa50c7370044d20088c100444f00434900444d0021fd0011450010e400163f801ade70161c8000ba086fe0cf0000ee0000c70000c90860910870fc0791ed0860b208795f70014f0000fc0006ed8866eb8006df8871470011e400434a001279006585008a6600ccdd6766b37131362898de34c3961662ed1349d280f27a00252800586f00a9de008afd05952b366eb247ed6601b99251c72961d4fc41c50941dadc27ea8c27e6a231129b11d034111e8000e36611ef4a083d7631337b11d71044db666765e076903d83832d773f9976a08586a4a375239e4471ab119723114f0801259a14657715b2b54128d334debd84c699742a0a1659d4123ead0188181184508581cb46dfef657642241da160db630074640031e800117508862188810a07918e0866ff8867a28fe8708c0000870000880911ab99108407a17500179a8870b70000e009169780019799124e98618198871c89108c07915108876d80019e00132e0011a900123d00245f0046980066c1089c4c05640261038243916d24365467d4fc90e0fa0035a800545400458a0053be00486b00a5a40011e200586c0078650041960044370014fa00146e0087d4008473005ac300dc5618bdc100ed8b10ed8804fc3a10cc6300de1500debe01e5dd24503551ec4300daa822eefc710807411d0145254316b6bd77544778d50d775abc634a9868dcb471282e4808bb56a0e582eecb8584ef3167bd41939f11574672254111662361355c148e0204a9df14b7c7227d2d47721fe531934737746e87747f656be40098a3004b777043a900433600abbb0046ee00886b0044cf0042a50013479910840910b3091db098870a891299992de9987dcb9923199910bb0916a88007698866ae8879577017de80020e0000840011d200218b0010ea002aae00b90f0044fd0097ed0042d30059f10042e80041f30032d000250f0069cc0097f900ad6806b50510f4b2343f1c0013970049ec00a46400122800382d0098660087590067d00074f500770300367f89525a0037e600884e00784c008c6a029c3311d22170de0360de0960a8e600aa1400cc4e00bbe300bd2700d84110ed130109d820abb800ac5706e4ce80d364162d7489a78f247ab917ffed5c794ebd87499f98057b28e39b11aa9d6384be93444b7583f047160d7384d537583c31558214d54157dbfa65538334cf22826b809903dc3277b0290c2f40d4b6826df100e4125647b250c8fb00643b00a77300484a0049807911480015f28877f28889be79d62389272789182e8866c2886a5670176989d38397a19f0007ad8010e0092634801acba000560910ea0866a58000c108662288607c00120a0012470021f30047d2007393003fb09792030038fb7791b60902d00791df07839c00942e327efc034ef700ff570001690058670083ae0045ae0967dd0077e500755f0045a000758b0042710927f88936bd0099cc0a39d400c6f961cc2b10dc530fe0de6401d7e390e982007a7200dc68009a0400cd4500de9100e7dc90eef570ed2900aa5d00b47f920d9f2107d34381ff10e9aa339c7f78097591558e27318086b26b8583bc17ceea03955c19a10e7124427664c6921ee62a6ab1119c7c78e9dc127acd170ef3224a3941a7b6219cd9419503b27500b65e2c041c3b427df200e645ba9dff00dcaf00dbc600b2bf50db30009a8b00849e0a9ae5a796be89e23c99e0ce0877fd887163079900786197001bdcab7a35701a56a010b700118b00088780163689216800180e8877cfb9de1c986f12987de89b9904b011920025f58047040015ab00722700189d8028d0b02a6278663989d1780058d300a6a700358fec00676000cd4b06a4e530f2860045aa0054f00077040085a100575800543b0043250022a10023800075a90011ff0869c37049db00aa6900aafb00bd0401ccc012ad0810dc6900ad3900dd6f00683e008a0000c520a1fd5d11f02951c8fa006c0900ed3e00b93b856d130a501520e7f733d24d116f0a07cb6a66a63d176479199aca90ee2400c9020075f9003ab270669800434e0023340049c900acf690c48460d890171e5226c661112ade4120b176d2eb3247477495a56309e31307342a91cc326dcd656cac031681ba9965aa9cad00bc5500aa29008a1200a73e00451a0061500011a707a7a480181f8867618ba17c08712d987ca9a9dbb9a91dc4991fe6fe8aaf119917df8001650c59ebb01dd8a877a68ac0e10927ceb87555c01528cc6be8ab77ab8baa5f7008f67acc1daaaa607ac18f001c12ac71550b83290901d600270e00bd9b049d204014b70085a50044b409559a0054e8005587002348003a15c952480054910085a70021910ad3bb0043ac0c14fe004acf00cbe200dd0711ddcb11ce950086de004371005518005cba9033a8003c57ccc4af00443a0046f80066e90065160076d400424d00452a0034d80066b700751c0046e60075fa0cc4fa0066cf008a5500ca2c0088fc008a7e00d32d113e9608d167213d1500a6dd006a9000c9fa0068d200749f00129c00658f0064dd00444e0781f50011e10fe023460048db70334f00480b00780f0099c200aaa200a8ef00790b006354002b8370234e004da2c0683500cddb20eac19a731381483d1b55a3633d536278191264d8664db060e948a64df600cb4400c74d00138f0ba85eb87163002f549790f807925f09597db869ddbb97ad8c556ec9e1ab9c7566cacc5ba9d6a587935e9abf9e9b9dc899e7b589116a9ab1c399116c986eee9aa80b8ac124992f299b8950b867cd886150002af9b9382f00bc680ce6cf50d01c00133508a3b3a092c1a0b8250084b50c50c00012a800211900145700258500116d0022150024f300569c0098660078ef00cba410cbb600a45ca0aa9f0c95170904a90067e000743800319fe30bd38900443c09c09ba0634807b39a00444b0cd4fc00462800551d002335002abb70344c0043940032d40022de00239d07b6970045130021dd0878858036b80057380962400076970032100021e3005904009be500cbd700abba00aa5200883b00bbc700cbf900b4d30ae1d90881e8090a437b81de0022c5002151002357aab85fb7837f008a8400ca9400a82f0056bd0067f00088f000c1a180e7541254488319e414ade100abe3d7a98f77888b8064f80068220088eb0064e80032600096a10b96dc804449001f3c9865accac649c8658cd012760aa5f8d00b10a86884801eca98671b8876388aab21a88f1899ec6ca9e1679e562cce4991b9e6c5d88fe2069ac6918889c17b9b0fb00914b9f217901872cc87228b9a5caad8dfb011790057f3d0c749001025000047000702c861530041bb0ab82687a6ce801b747038490af4b800581d00744d0077620d176e0079d000cbf110d82f0044a80036870ca97d704499006088d01889890857b0339600475b0063930056c40cd34a003d25d022320034a30033820ae1770022e30aed07d0333c00483f006d609cb38500360d8011a000221a0011e7002fbe9ad208003a04009aa400cc5c00bb3f0a4bdc00bbbe00bbcf0a46af00462f0046d900672c00669b00672100572000a8f400980a0067270077fc0ee7200087660078ab00772400994800aa6800aa83008d00afe793b10023ad00639e0048b80099ff00548a0cc5f200668d0036ae0068080048d7bea3839bbe94dae209090da4abb6c30031dd0024f80042310ac797db9c62a926b08d66f68910fc09d2a4988627ee4539de5e8b9b7640cd7f59986befa871a509f7eab013c59b9dd7d7a3b1eac1d900189ebaa6e1de4e80988dcf9d5a607886ea8c6cc5e01dbedc7fbc9e0d1cd8683ce9e02c0e7614c911709e56d088689580217b0964d10052c5a0965b9048610054b40db4e50df86f004067902c76c90113a036a80054d900682600858f0016b30ea68900494ef0276300881100872a00639d00478c0041e50028f97066f40d422b0011e20ae24a0046d50063be0df7efe78797bbd7add0a02db5d862d80042a50023c29ca1d2007a6600bee0da5bbb00ba4200aa7900aa9a00aa8700ae2eeeda3f00541b0069f40f0215c0ab6700bbc400ba3c0098920f0b6300baa100a021f0a4e700144d008a1300a4830aee74dedd43d0333e0a039e001f37fc71c607a038bc67f48c87f0e100f28387020f002860b192e6878e0a003881a6a8670c040e10103070b163060b09163c78f2035625c8000c18281081850e8f06024c79325398edc28b3a1cb981a6bd66420706505071480f6c458a1830e131a2e10bc40a12641812e67f2248991a0830d100c66a8f0c02b468e150676741020008103211d80e4e8f5810815437490186208131428fe6f5254385184868e143372104982244a9111489210214144898e245870b87041e4c30d1a20708c682222890b1d68a23869810309612762ececf1d3668f9a284fa2b411d4a64c94161d3a54e0cdfbc2850a1e4068e8a041a1520c1930e4e8906183880d3b443031456b562f5fd97d192b962bd7ae5da14e15e34e9e942853a7689142d58bd72e5ab666a19ab53e95ad5db67a51424309982f6078e9659728840a4aacde3a68610a1e7413cbadab08b20a2381a0baa8020c7aa360a00cb802e1030b2cea2921e59ef8a3290c33fa282d9d664aaba305d6b24a278f348ae9a4b56a3a60a38c4a4260ad98acf2aa26931678e0828bd64a72239508c2e02d1740fe4811c9a118e08d20de1ee8a0470790cca8200c38baa0a78b606c88460004200081030ab011c61a55e0a08321a4c08284c83459c30a277498a184118ac0a20c433a3184903dfa48630e430449030d278c688106229e48228d273c20c1030a327081b4143cc8218a37de48031042d6800d092744cb81915d54e1a4144afcd8e38407800a0a830c3d4088380f3a180107109abbc002a330e8c089134cf0e0011ac4db85185e5219e5186a8839861755ca40a30c537ce945185380d965966276f185175e66f14518521861a4935042b1e597596609255f5b46f9a411506649e50f175a3ad2a80c3a686ac386281cc8ab82ac92702d822ca26061a130bc18c5aefe0e5438030d0a12c8830f3298e18828d05863060f34184827932ac640c28fde64e0c79a6df6882319993ce9661a5bfcf9a4866104cbe8aa78467243257bb2a82b9d2886736a9566bc196806cc2a0081ad8b3ca0489e29f060030714ea1204151e0061b1136668628d22081a49200a3448e2092ca4a0c18d288e30220743b4a0610a4e39908a020bbae4c08526e060228a241674e20834d038c185672fae28282cbdbad8a20b5800b40312742082860e520841d90a2e28d9031a94c0e0833a3c09c20d39fc684494535021a5945442596388345029665d77850166c05d7831068b11f648c3833f7ee9e5945bd67daf175bd825cf1753f61076841128e86843fea60b92b0210a70c82062f8d5efa9208b64e0ad83297408810831a210430e3bb4e10b6d704214fec0862738410eb96b031a1ae81a35a4c109691842088ed002241ce1012488020e8ca001ad982f241871cace42d2901e4d25464fe9598c30f2b3b1686004643b53d5da6210928828573d73988c66f2b3165d056b2dd28853d2148003b4c96b2651498cd867810e48c10f6f580211965085c80d610a58c042133a90b8a0082405280bc110b250821218010d75e84314dc20972434c10821c800093210a25c8140043720c1082e1082cd3c410939f8c00868c0a98358c4010fd250418cb28327a4a1092e735d0b4030072c7800074c90c20832f0012504c20ffe9ce08422043107548cc214a6f803241e710a53b48112ca308631a2514b5fb82b97e3d9051ed0c00841280215ebfa857c6851af46a0a141ba61a6c240d0821628610d65680323e6908326e0410e73b8c31cbea00424784007dffc4219e4d0863fb8a10c5310c31724c5821ed0000337280ce4c480063fe0610e68e0d40334f0846fedc10d6898030d72900448edc60332d894092687862f8ca039c23ac2109e50862f2421094a001107683084289480034938a410b0e08642d8610a2e2015134630041e8885044808010520d0ba0f84c00842885d1a945051243c81094a581d0e7010bb267cc1093458c3173c403e10d0e07d14734a471ef0b522a9844d6ffe7a498e8086a3051cb1005f5bc0d76024238aed800f27580210a408873a18e20d4670420998d0072358c0030eb0801d83d2014a89a004431801099880831284a0422bb9888290204717e0e004ad12c1033c10040e5cec2a0f63ca863e20966045e502c18aea0c40a09c191c523908ca50c28c72810ea8c1117f60c4274e715b46d0800662d8832318e106dabc9217c528862d18b1064ee46216e7eac52c3e519f50a4425fa6f804283af8815cfde6371598e9081a118a3f88610d7fb0431964c00334b8e1117270032814f18844d80110f19dc31c1af187405442117448c21c2891085726420e95384f2312418a50ec41117790831ad0d0830f20242162a0fe8105d070041c74a0047038016c64103b1ab0940649e8d3137030031d7c807435504c07da2294865420044a10e9068790833db4e1064d2004134a68a40a8c10234db140068e5008143cec7d3b529a4b6804a79d6cf52525f1d18e9898c49c3091893e5a00074e70022cf4410a4e80820636f500b6d200085368421144d002239cc07d1838810670b0452c40ee0423d0810c866019079420086a6882073c9081124c4a073920c10982a0830a80120b5364830b72c00642c0a1082d3074eb0452010d84402c41e14010f63a312bfd190938f80df9903002108086094d608107302783167c7643ba812d161ec10852f8c2117280c41b90d08224fce1092ec80dfe0dd8b08660f741368f68c323c4e50b628ccb18cd3d85731fd108318861071d105b7340000258b7600dc53846f77af109529c8716bcc8ce2d4c4189f524c20d76782f2d80010c5ba0423ef4b19e2d6c616ff1d04a14a8a084299a3b0bfccc420d1fa04c106e20a51b20bb031e48c210ca708319b4a0b04d2801065a505310c8a0032668410d483003424041444bc988da34d0248e18d90f8cb083200661870b18c97c0de389113cf107cd90a00d1c8891dc788691285462119c78051d9224b2a0204923ebd3c007a8fca382b0c92423b461475462812f8fa0042438d2055c1001066020b3c8f200072040010484a00955d8c0022cb0d53f9260072dd0010efe86b0841358a001e8963b0918b2032098d6030bc0d00864b08319902e085200d1a1a180051da4610d41e88a095a42810fcc74060b6b4a4584b2140b14ac2bb9d210dd20463fcd46c52b1e58032354f987367022146cc8411a98f005640fda117340c2b772e0864084e278c2e805768aab085208d07f017c825431a49b0f9c1b0462f0c5b9c4551f741d8379b378c42344f1df3628c20ecee5c11a50010c6af52217a4f8c41f46e18b5c68023b20053748044578822f38977c518286a1802731b410d0806219815ccb8116789f0db1000d008a8ca19b0b88b551510226b0241c708224c0815c43219e70002510049f63044590010f20b29a28320a61001a70feaa44130c22700124081306b880902b0135e0044680043b70319e093207d0aaa0d108b232bb93c0b2276412b660000ee0225ce91ace883312a81b1df8011cd08228e0800e090ac4c10a1da0012928021dc082343824c16ab43a78822658bd13f83311e800bc998131d38113a08114508a1c90024eeb801c08272dd980dfa0008f02012d990236f0831ca0812718bc60e914c578a619d0000bd808f6e1912419880d79908b4190ae70027b719752f80446380550188535b8b02708023b583e24f8a9274884563c055bb01652682a46108316b8b81bc00331508426680110ca433678844a608440700352000f776117573a06e212105f10051d188129f8901bfe60018a8b351ec0283f50033b80843f508446280331788227b00336080446d88345180555088559a101ac30021a900120680107000116583d4bd48c2690920580001e20c8063081244821e038012220990d018171a480678a0aa2408008e0af5090834eb80322b0a41018bc8ec1081a38811f30843a100343188541e00113889817f30a85a8001ce0a98219829668221b8119acb21120ca2a2dfba1aff99ab3380b11e84112d814117080b47800bd3a8a2a80032cd0001da88228208eab88910de080107808d9808215b83b0d90a10d34820ce8093a838c2608c41d208220eb8028c002137b0238500212708121b0b5f033810c8000beca810a803322c801fe3b6c822420011a2895356802b23192abf08016680235300323980b21018aa8789a277084d93a826a4b0339c004452884369003271882240882276883e8328545f8044e00047d622f4e78043f00a8095282739a0226508338fa034110010fe84165f980d2780246688326c02829c0812f7802c578820542a89dd3042520821a88822a20853fc0811ca8b635a08367cb2824d8ad21781c17a08193b10325b0a81c80a91e78b4a87a0c962913120a8a0c0081c4090ea0b0910658090df88b1670811db84edd528219988121a0816842833410043b98033fb0832440881b380239744005f9028bf33819508a0eb8bb8ba03291081a1ba21104b82a2ed38924c2feb298202baaa4b29d3109013800640934b2090e0b80800b00b322e080906b022670032920811690511fd9800d2981ca0a0a1ae00015a08104009220618911230211b080a5282b139001cf3101bd21012970032710010e400114280222c0bb209412457a801688242760033b20011988822828031d1003e2bb209c78938aa1980df0010e508225f8c4a07052f904027f120d2400010610812f98ce280001fa11881360823608313b40033b080436d0812890c634c801234002315082f4b2833498821a181c3698033c00ae0dbd0340700445500418f4ad41080445f00340302539982f61658446800448688467fd84f67b0448384246f8354af8b547a0846dfe6d844060b039708227880337f0033908a63910841c93833d588339600331680225180d411aaa28d8d426b83027c84524e0811d48821970811a480226408281dda8d1b81454150313c881d3faa2240109b07391459a9a283b899c904293f89a02b819af59cab1b2322ac3aa24aa32b23289135800b3088002182bb428000278d9241ad9b3da000ce98ac45c02ddcab308304a4f3c0008409d3ddb800c70022c78218dd8001778800c180214d8b80b80000b808c3230826351824c293209a13ca77b0bd4c9802ad803c89183be118184390a36300d2490202730c123c8812310a42130ce484283e2e4d337a82f27608227682a796c8359440329f882f46283fe3f188446683f48a8045202856a7d045292dc6b35b04460843f008440080447f88486fb1df5a805ebd885db42bf7c11b8f940b04e5004da52845f6d84f7820450008545909744b8dd40b8d64418047909844468bf44f8833f488435d803f2da832f388239d8033e75033538573428442750d21bc80127500322e0814b5935839d811a98011e900117784825785b41a0843f68021e2082457b8221a08c1ce0814dd1943dbb801228822328ac20a0811da0d00a881a08e0000d60448eb00036449d1258011428811fe0000740811f8880085001b2c9888e15bb1a8d1136212b94cdaa1d31022c280108608011b64abc838001060113308226580243d201c8c0fe82298003286802d980032d48822c380222785f1a408225b0432c7803ade4612c20b128800336a88337a803ce3595746d0447e8044ae0844e00055318855402057ee4044c70044e2884dcb1472394175762043570822f10043f284e37082a31b028c56803e34c991b9b01cc708c200054806a4ddfeadd45180445e0dd40f8834500beccfddd47508433660450f05c4b904679e9564ab8e250a004d8558406cb503f780457b42d53108559c885ec3817eba005f5e8b65df8844450b03958d639500339e053e19de4de04055128054ef05d79c9d64f80b74f5ea54f5884cefde55f368552100551788450f8044c70c5564603a14282326802246002ca7001f2fe610158db0124d80110e00012e0803d3c340d230229d05a6d0681c25b1d43cb000f28010f108113d8801260288e84a6ae538224e84c1a2881e9c4811a38012abd9a92a8d12b53090ec6aa8e2d4a1bd5d8b24a59263a812cc0822ca8e82c80832c406738200443e8833ac89b29688323b6a834e8033b8003796c0222e0a237708335a8c3d47894348003369ea23b984954608554e88441105c3bd8d042508440308450300552b86253f8055608856f1b6a4e00055278846295174100844aee4dcc555c47a00450103e231c04c5358436d83747a8846163033a86d70562023108044a7084c51d84dc992f47780454f01d2aa6e4470005fae89d476ebf46f056fe512085de21055a400551f8654a58b8deb1055a90ea59a037f87017763b8663008663009075692eebb8465e908fc95617ecf08562a0b7511e65c84685db326c716197f7a005d9b68e532805a90e855108855248655456855498ea3b08044038df780b85a97e84bd4e843b9097f7cad646900378b503463040dbc55c4178047ba4846b9d6541900395895548b2833580be40b8cd5cae021f10811f40030941caad59ca0358932ba30985de609385ef97e59ab1da6ffe46803ef8ef3ef08343f0833e78034120844a30144398844ee8844930044370044c10844010044708054fe8042ff684a37e855460855740855d788559f80512ff855ff0855f000f1457fe71574005ca66f161e085156f1e628a1555a00555109854488f50f0eddd5697f780ed5c601705946de582ec54e8365b400f5458a553b86452406aa946055a4885c5b6844f58a5520838886b1e301f65018138d9ce977c097383cb975b50ae5df80eec1890228ff322e78522df16ee710f016117f9908fda4665d62e055428f2c48e38fcc8853d47e5db42e5cfbef252208559388fc25eec4f286c53105d487f665784845148e66d75e66ce58444a0845088c5eaf2d62394dcf6c3cd41f803df5a046b4d0463a56b264803378883068be52370528f938337688340a0d53558837e6d81f32c043f08043ec8808140e899a5d936594afdde9afcc6b21a7d7636fe19ab05785999d5f6993d803e38044328843e28940887f04228944ec00443e00342c0042b8670172c8444318454708555ea0448e8841e37055578855cf88561f885604071dfde8517af771467f15f00861467f85d70f85d68f862089086dfec75010f6b8cf225ef9d541890f7e8715a687451c00465e60457ea84c2de477fb1e26e858436780339a8ad49e7472e2e05a4a66dc8c6785f3805d4a6852ceeb67cb9addf5666e3e6c75c560f5358aefba0b77551bf63288f5ca2b7cd3e178c6797ec1090ea53c0d13e17116f1e43f70efc888f01199033576cfa30b8534885f5c065508025c46e45af0e05df717b51e0e2bac7f7e94e5c79698445d8dc40e05dfe0a0f04f6222f4360849f135c38cc820612f63ae85500a24727800334d85f179801926ac91f9601e570b163c183538a822c780325f8c40370886c1f2bb11bd93631001f300193400bac1ad986fef605ef840ce7770f5f05dd57055600f154e0fd7ee7fd0fe77d104f0f55500553a01753f00451e8f75c5872de47850f5f711577f18867855fa0716cc397882f8654780f5b388515c73fede016b587f3ee59715bc88e222f3f1a6f9e51286ca7c6dc40a8030b9d835f1f8d3588794ef8044fd8728030f5295425489f483d7a444994a950a248853a850ad52e5ab35891fa24ea13a381a644950a9550e12754a966edf2d5cb97af59b976f15ac992174c5ec0fe8e152b662ca72f5bbb7aed4239cb22cd59a766b9b4452b57aea1274f59cc758a61a952a418ce1265ebd42950221f610aa448d01a232c46b4683184070d1e21643c4952464d1b3f8618050a24e7489426204c90a050e141850c0c1c58d0f0c308070f2368b400f100c3850e1f540c81a2a2888e132e963849e2a1c2051c68a284f08043c4030a1a3664b0d0414386d1101c6c10e100f1860bbb17304070a0c07004c203102f905c3972e207081c103e9c8016438762755ab5aa13f7eddbb373f7d4870d9621dc31194a2fc5501f39a60ced7124c8912955bf76953295bf7eaafeaf5485a28a2ab6d8124a7daaf4374b43a9a8c20928a5a4f2d12ea988c2cafe2fb37012e127a9a0a28a289c04f288288e0cd20827a670f2c720a00cc4891c7ed851871d89744449235e39c20929a850c248289c50c20924229e42ca29b6b4345128a180b2232ab464d42493254578e42e3e1168122a503d399450b49cb4d23137f5c24b312c1de34b9abd94c95245b3f8f4e68e34d9c24b9db694f2899e111d550a2da7a8625429a818258aa19f08240a28a284021128a074c2c82084e08185143bdc30820b2e80a0810521b85002116bac51c71d80d431c50723b04a83136530414319b00eb101030c3c508209145c4081030838f08003b7f9ea4007190cb6db03874160016cbb1de62b020bec66dcb40b1007ed02c00137dc01d11987fe2d710410a05c74df2a972eb6d1657188219ac0d107279dc4c2c92a9e68d7097b86c041082aacb0f20a87fa1a220824863451c4137dac710813337cc187219d38d249214e30c1461f68ac52481a4ebcc119677f14b2061a6e38c24825819401c7114f18e2442a869461881b6c741216237bb891c61e6b8070c2107e08f2c722a138f2871f8a2c02a01f83d861445d767032341a7534c208208c2c12082522215aca29a99c520a238c3c028a29a6a00d0a2594ece8d546a29c328adba6d43d252927d982529c2815858ad8b6e422932fbbbc19534d31c5b4d22eb794694b2fb7fc62619d40c9c40b4b529d52b851b67cd24829b9fc828a29595152c9238ea4fe5c49239510a2c8208afc0148229528f24827a2ecbc871c815452c8226dccd18618472841c4144ae850420614dccac0021ba07082f534cc40020a430c01040d442071040f1f50d04107c26ebbecb6db1af7c0fae14a0f5cfc0b08870071f52ff0edb7f61750ae72c211c0380118ce00fb079de790ab007d3844270e818542f4a110134b4f1f06d1094f98423b28328423e46008f4148208753004219250821d1481082668c21b9c9006848de009256383115c300322fc610f688083114e8084243c8108522044f640d0010f6480086ac0820e3240820a7480083818421d8820aa2274400415c8df065ac0843b18020d49b043154ab0010f6880083a988105fea4e0812350e0032d20c11b1a010727b8811389e0444278118a36d8c10d7308912a184109506c4573bcc8058b98240a4b0ca9510622c5554e470b5ba4c2274d41ca2501c78b4ffaa2294dd11c2dc446c951d0e24f792245df6ca10a54906248703b054cd2040c5f803217a0dc4553523921ae882d220f39922d6a61371b35e26d8c5044231ea1084040d30d62708312d640354aa42d1436a2941c0229852964c10d7830551d0441883ab4610d6948c31ade608742b0e1092de8000604f38023ae000416b04006e0a73e0650405817b00004a8652d0654c001d46a0042a3772be1d08f7edfa2dfb4ce5500e9106701013457720e80052d68010a1c5842bcb0fe102f4148101385200404eb00052cbc010b1010811304d1872c4881034dd88116867002412c41073a78431db080031d60410955c04113e0308423a421a63940831a429003cee480065858020974f0041a78000424f040406b130213642003436802137220020848ef000c3800fd8283ad8ad2d5030d58400b1280d183ce550310784012ea42840dbce1044e3801024e908a4ed881069c1805247c71264ab42114be60841b34c7125b0402492ae9054a68818a5ed8624b4149052d4671949494c94c67b26c316c520c61a4e918bd48136e7b2b0c962065474951644cd4a4b95fa096402719652f52c90b8b1c454142811398b674ba89a46214a418052c4d31fe8ab491a213a95b44cae4b0073bf0e10f7390031bfc5086273cc1096840420e861087f4aaa8108d088420e4400843dc21094e9082118620852f24610a5288111e9e90030fa8000d4530c10948d081dd38007aece35ffda44357e3e8cf39e7820effd0251d04f8cf024458425009d10738d4e1104e08411bd3338542acc2106fc8c20946d0842c60c1085878c2094040832848a108ee1b42157450841717010d4cd8c03d9150820a9440076d7803213cf001afd24007833142133590830f5420a104f8c00ca0e0811978000533e840083220d70a0447380c2840000a381c0316605d7ffe9fff0a7d0007ecb97c012097740c108138a8a0021ea0010e18f107fe46bcc10834b04009fcb08b4ac801b994f8c52f18f113affce4969665094b80c10b51f4a22bac46d39866ad5b36f54218bdf80454bc849295909693b3e8455390b40b89f4c4b448f989e68081124824824fd6d5d2414c17b74770e2139d780420fcf0873fb48109697043209c30043b4cc17c37287013f8a2e9289401094d7842199ce004b06a40031e80f01380b06f1054000227d843159a20030dac40073bf881058c208593adc10f75884254f7308841a86c106a2841097000020790e601eecbdfb93aacbffd15a77e133df11654b004159c000b5888791a664e8313e4cf04553884144e6004f6b0c1044628c2147610e40d54808e7d28c20c66e00438fe1081094480420b9a7c020d5cb80134100d04025107086420cc0fb840c0ab508725a400081be000064840820b6c400947188220a6800336f43c35400042148eaa011040605a1448c20d9a9580e824d001d3790e88a725bde65cd401feebdfb62ee01c063c810d245041072e0a2cf0c9c10d6e385d205081c850ccc2182db9654e76d2ea5a034318c0d82de1587d2596b00996c77e042312b1888d3842114e98439330018a53842210741385420e69a4d43e84169f50c4552cb2a55950124e48c1a44466e136487dc246b25384220c51893548210a7608c41ad4c0863828a2f7d8c6c4275204c432f8012c8d60c317329f0636d80116900a1adc0127fc0827fe649b787147250c0220d8c11dac57cfb441c1ecc11cccc11bc84121d88113344f0968c007a019dc41000578400754000678c009505806905db2e41947950b7438c75ed98a0868411184809059871ff4c1cb08421574c20f88402018c20a680014e0c01cac8112a0800500810690001110c10adcdc063480c0c1012640c19d8dc0092c4115184104b4460344070730c11ae0c00a944f0764811270000d88405a2cc10ca80127e04019144109448111b4800794400d108112348106a000c28c5b13a081f95c180e5c1d0b20c03d59c0b458cbb74846fe209afdc460bac895712c87fe4c467138474545800e0d411a5082304c5631cc829958d64e140330b49efeebfdd6e118c451d08228cc011bb8cd1ce8801ac8801675000d20010eac0113e88021a8c1137000085c000370801400421a9800405100097640099cc02f92c020f51f33014227fcc11a74422ec4d2322502f9a50d8b7805253d8aeaa4a3a3a88d772584dc8002d78c4537fd81207444ca30027b15cf1eecc1ac98d71e048223605bfd81c81a0c810c60011bb0c11e2c420e69e0ac08a3c1b180078c550624410e3023657cc05c8961f44c8f05885c5a4180091cc00afc0013d0810698000d3c80e7e50f0a184046394006b0c013348113f0c121f8401118422ca48108600109254110f0c1066c40084c810ae09f27f8c11ab4411f60411f7c952074c21234fe801f1ac10ea04004f8210870c00928010efcc009544f092cc00324000a54c014400113a440063c011220810ef40adda95006c018135040633c80054081126440a0210003784008b8811340c22e04c2b8b5c11dd8c11e10810608023ff00336b4820ff8400ec8c00240cf0ac8026662e63ffc400050d4052c4027f4033ff40337f0c3161800b5289402c0023fe84333f043329c00067cc01a4401127c0269b2833b60a631ec836bfac26ff1c231cc423160a63fb4263f00c2b085821aa8972f60e63db8e6128c800700011610c11db4663f4c0366c2c359e9d4f1e4400780000e1c81859dc01ab841a9e0836b5643792293ca34c229446729b46634288247fe084e28748875990294b0162a6c04fd8d424330041ff58823e405233482224042286042ee4002da70c2d980e8ec2cc2202442f005c23281e81f2442202cc27e8d4538ba5f1bb4815da2011aa4c113e8c01ad0c063f0c00ef00016a8410b9c001478a0c889400750c00290e1b418c07030000af0190dc0c11c6ed105700a026c4013c0618595c06e640004540008800003348008e8800a542304d0001b38014ba541c13d5015a45911380116c881201801c0e1802150c1a179400f71c0108c806c7cc0133041153041414507a205c70630c1112814b72cc00860c00fd44109c880af88800830011228c108740012b8810ef8017c35c22088011b0cc21cb841fe253002294c4210ac81209c000ef4c00880c00788c007d09305948fc8dd9309da8a037cc0052ccb61e40f0434c06e3400f42066100dc10e0d818aa0811099c8deec8246f4442fa1822f28e127c40105fc411344010a04cb071441155401076cd103b8412108a30ea00100fe418dae01208881130402202c181ea4d723644446348adb3c4232f1de237c42231909a1b0231f718228b816299882415082220402244042907c42c65202fd2d53c1ca811cb44137d9811d1802867e42420c4429386cb661829018a4a260931d1c016400c111308119c801c900821bdc411df44b1d3cc19c65c077d280acb00e23a0211b0402cf3093123cc11fb841cf81a60538fe800ab00005fc990398000a00000004000430e2053041cec04170dce409f84116e08013ac022130019452cb6d2c000a30d00f3401501d811f40c15e7140109c406c844007cc40f738c15539c005880079146e03f4501b5442c148410e6042168000952d4007041e0158801f2c8227f8033f50c12af0c336bcc13f60662c14c0ad0007756026151c026626831b7c41210082333d02691a031ea8811d3c41200d836b5ec12b60e62b4c8109346b06acc11edce7361c823ef48316206b010c8b3e6026376c0166f603162c0b0258c012ac2269024313504d1aa08111f80127ac4112f8411560401170000310c00f60a63e4c403ef4c30f8c26664a8011e4c01cfe88c00f88826ef2c33e24673740c2f141c229dcc2291cc37462e63e14892d305f027fc27d92663f1c03254082252c0223a88d3168ef74eec3078b023689023590a60493c28db88e23008208bba651c012447c88286082818642298842d3ca811a94c122a841121cc117384114cc412248a51d080220c45fd2e6c588328223ec172100821aacc117b4d7b7ad0109dcca07840010b4800898c0039c001328c10eb4000ed497430ac22240c21fbc0c2040010008400834cc2148800390000e70001440c0d489d912548220acc2125840059cc021c0c1bb188109de060a3c4116a8000df4c10f6c4f5a69c011bcc12268c1092c42103a4009840071005433a2c0feb25646097880093c811fb081e21e410fd140ad90c00c4ca9e6968bb2aeaefd740bc91d66091c8b0e20c11b240112cc400e3c410adc5c1d344123480112b40116d00004a04121b48603e0c005a0400d0807713cc013a4f21e44804259cb00d9cfad0400ff980bb5049a08e44feb468120b88104cc47135800067c0b6a92614621c0a229870c4a94fd4cd40140c00e2001116c2ac5312623a0c11a20412780428adc2e26202c44a0c2281848affdc42f34b0e4d8024288c269018572754542d00d879c022becc22b850277354227809a13a8c1205c2c26308241080428609b8696822a546c1be8eb23e445d3b68120546b4396ac1db0c11f9caa1c34581038fe41e609422041341ad4a50ec0a7121871124819c6a8c117748005888014600124a8010d84c009ac000aac405b5b0007a0c00f48c0581ede12389008440003d4321aa80255fa0005d0800430809032001008024a6d551ff48115702d6357411fc4020d3c01168c1508484116a06109042a1b54f21350cb1b08020a680010f0011cc88069b0c121f8811ad4c11e40c20e204011948714e0400be880083040113001016c4019308608780a04740003146d0b18c107c840063022039480573f411a48411360c120080211f8411428325815010a1c1e024440042040039c40099021701847fc6800192650023d87b75cd47400f4a02d470118c0ad38470c4a8fb9fef8cfa24587f4a4777a03471a2c810844a4a804c10e84564f4c4e8498c9ed19438447383010434e004355d08265f99128a4842f004330d8824403c21f9c829b70c4c51e447f8c02258c42033ac4143fc292605b420c022418df28748201a2c28f98c23c82028e63935e64cdab768246f73827e4889e7ce8cedee91edc2855d5811fec411dcc01411ac2222c0226c0b020bcc11ab0411b542b9d31411298c18db27168244115b8c112c8c01258c102008116f0181cf0c10fd41c9541c12144e2149cc05e218006dcca11e55909cc1114f04127404106f0711d708216a88007ec8127fce013c48213cc5412cc000478cb61decf01f4d937a34b7f33dab66c80fe052c005a46c00184401db06d14e4800b6c000b888a2318820a64401b2802214441103501043001e795412570c001fc8022a080445954b980b744111a7210409f95cb00c5e0a235c73f078000904b7bf7590000009ff5590160fbb66fbba82b9eb86f620298a00c28410ef41008b8005adcc0ffa2c11e30822810852f905a2d29838447783050c21c94024ee844850343c11383ec4d8edd50044ce09e4ad8024b230e4a00ca2c64922ab88ea55d6c2288822a7442220cc21f1464267c82450f02cc3a2c24cccbc1328220044222ccc11f54d0c59e302850a8a42402c8df0c13781c103c811b24e31420c11c2c42fda5411148017c45c1105c800914c11140fe8109404110cc00a53663024480af30400790a1006cbbb38800d235c07797400ea00004700004148008a82074ecd501a81d4635694d220004c8c0091874f4502f0810011bc04111540005a481f594c1067c0b1465400ecc00705080fd10b4fd90dd58db412aa0410214c0086c40e0218013ac406c38b721fcc003c8b50b9080dd6f4bffa0801108400160c1b11f4002289e013c3bb5073401dcd5ba38fba21100b6a3d8a20910ed5f1445410770a4d9110dc6057c8009848a1f4c821c600221a001f27d442544a5187493856d8ac7b9c00decc00c10b31300c2203c824693c48e1c052950c2e91cc52978d62d1517fb9b8e9d200e2669df2c5c8829a49690fe6002264002869f046b21df760184233b77fcd871f344491224377410b92327ce9f3d7f02b15903e9d1a3458c182d12f4e70f274c8f1cad9122474e23518fecf851344811254e8f08ad4922671127508c9e24d9d3f1cf9a416dd2489981c3050912384e5840e080c2860a0f162c70d0a10390130b44d008c1048b0f155ad6185911006d5ab4270c61d274088505235a921c7a1062c58105010e14a8504142dfaa070e20b8b0a070050c141e30401000c1020688297b307184c382132b4e883801a20305c854117328b12184030b1e3c9c38a1a30404081d0eac386221901113487e607973800185020108e84d80b64081e27b93077080e071dae168050448fe3e9d005f04c50b1c60e141858b111e3a78984162040e2c8eb0a450e2c8d09a376be2f87183a6899d3d8e4c314a658a924a18a1c417626c1985934e40e9449139fe68a4a082007104144e1411a4119d1e514414544e3965971067f1c597637c018644128b31c6975d66392595541aa1e4145250e984924f52a185164b48310515534801c511484609451140da9823904f30818494409e602314565211b01353544185144f1c01e411531ca18411473009e527482099e90ff8f8d0c29042ca6c84114e4281a4cc4718c9a8133d1919649082e4b0e38f001301040f2da49882a927045924113474c820030fa0e0e38f45407a84133698680284139230a1021ffed878630f3992780596676479e699699eb186565aa799c6566b709da6995a6fd57557686e1d369b69b499e61a6493ad669a6ab699a65862a1bd269b6caea196d96ab3d9a69a6aaaf5d6db6cc0d5b6db6fcbfd165a6fb711b7db6aa8a9765d72b3a1a6d96db9dd16de6adfd5365f7dbf1597df70a9a186db6db83d77dd70ff8db79c72da75b75b6dc669379b7112a606dc83c7f9975d8c07e6d6e38745c618626fa379989a68a2a1c69a814f86381a6b549e796595077699e695615e396495a5a946e566305eb9e5908176f7e5965176b91aa5812639e5987596da656b2036badb81b31659dc89ab615596666085555663633dfbd6586f3d566d608f2d561bfe6c6eb5f65a6593a5e65a6aad7ddbe08401ee7bdd7803b7b76f7e03df269d74b4ddc6e170cbd9d6618bd3f1d6e28a2757789cc413df66e38dab55bcf3aee16d789c72d219a7f46dc2a9b81cce1df6e6f16c483fbd1cd453973cf3dacb4127f18d49f746f174bcb19df5d251afa69ce16d9f18f66abc19d81b76bd715ee4e94b0e67fa9b8fa6b9dd94a9f959eb9bb5ce5a1a8fa529bffcf0497637fba5a9991e7ef8b59e3e9c6b7e0ee7ea6ad2bff96577a1f6567c187b5ed6a0a6b57150a373d51807ecbcc1aa66bc4a6d6a1bd6ae26b8b60a0e0b1bd7881bb4eca60d6e28ab5ad402dc080937c2d36d831e29449cc510a7b974208e7399a347f018273bd7fe292e76386c583a5af7c217ba6e862e4c073d50970ddaf14e73a64b62e294b8c3c9d50e79be3be138ccb14026260e1de34047f294980ede75518854fc22ecaa9839d4edae1ce6305df278388e70f0b061c8735e39c2f13ee099c31be77b9f00db15bdd751a31bcf7b9ef8b2e70dec0d0c7ff0eb9621e9e73ce875ab7cdd0a87341aa7bce981e392d408873934798df98d4f9024f3c628e177bef279d279d218a0feaa718de151af8ac953e0025127c8d299c38164bb60d986658d635db058adbc9506a7f1ac6469a36f1ad4db089d65308091ab613d7ca11113070f7aa0301df0d0dc3585b844272ab173bd0be2e9c8e9c2d699ce8cb5eb9df112474d2d9afe139d8933073a90884630662e1e6df4c6166b57c57454518dbba3dd2dd368c672b203893cf4223cccd13b06ea8e96ded846f3b458bbe9956e78891c25f90c49bd3cbecf91370be52207a6c7f20d321ae1785d249f278d6e600f7d21c3a3d6eae82efce9ef1a0f93461dc1773f45a6d295f19b9ffe3aea8d68905279d83324f6b8f8525cb64a9713fc65ddae9541bd71705ac9ba16ddb6b1d5c38db07506bb86c1ce09c36aba7086f4a02612ad994474d043a08923e2e932e74572beb39a48aceb5c87888e800a1489f118c7385338c3c07a31a1ed48473be841cf79b243b1f190073df2b9d876e4331e419407efda210fc1a6831df1a027efe281507678d1fe1c98dd223a36fb5674a883b5a245073bcc515bbf9a43a578c4de3f6bf9bc348ef27d0b446a3940bac872a89294fa53a526f738c05196ef1bfadbe31e3dfa48e78d347e8c64a05205f90d3b2a3579dec023529df70dd80dec8c4c2d5d2087d78d8652718105ad6d37da318efab6a3b64f155b042f38d5613d4b5bd828168045582c6b75b56fcd5457c1eca538cb698e1bdcd49cc1e49a4ddec1439bd9c4f05b83d861c4c2d11cf0e86216a9a83bb9369677f4842d6ba1385a166796b2b34d473e79f7de19ab111e0885c7681b9b4f84a6431eff5cac6c67ebd9d0c236c68a652d3bd8210f79c0c3b3a38dab3936eb0e84ce9377f2a86d34857bba51067478fe197d9fc3e878d38b26778fd1306ffa06494ae67ed490e17beefbd2773e41eacc91481520f4c431cae40937ccf115e428c1315e52d6528dbc436aa0f1080e5a567194e3a06f3bdac10efb521a165015d634b0c18d0f6ab598d112d7b30cd6cc6b6d831bf0fa2a85478838d331eed5ea40e1e34a67ce6ed263c7691de2aefb9ac20dd313b1af45f18c5328da19ee4eb4081d2d62b5d9587a6c961ef888323a244bcf1d67d6c8d48ec7b613278fcb2adbb3f468f2b725eb5979ccc3c9979dac93e3915a20bb03dd9295b793675bee26cb4389902dad3b5c1ccb2d637287f9bd25ec789b5d592e3acca3cceda1fdccbee4223c65d560ef52952a0df32295a9d8fe132e35fecc403bd656d220cfefe9ba11c86ec0b7be816cc7c9258d3a70e017bf54cca762297dd99a3319de998eaab23eadd563e5ed5a3f5796ddf2d62c7595ab9580dbd6365dd8426a0ad1d9bc6bac5d993e6c2cd23385542776431bea455da315893caeeb38449bb86da30eb499d52242b31e5a278bdbdce2de7669a98dee6753dbb3f160acdef1ce0e74bb711c50962c424b4b0f73287b9e41a6a7b7659bb8cbca96b65826a31891b8f2e1a5317900156e6f11aeddd285d7926ebcbc1d0f8ddc4326571c5c2c9dc6259d8e40d2928ae31d072617e8dee539da1b8e465d7d5137e92a521a8f54acb9f0db6d5fbd77d6dbf54d3e935925c1611d931b45a7fedb34a27f6a526790d3cdba57c2c62ad652775f898c63dc597d98577460b8b1ea98ec8e770c6c60cb15ca52dfa2d767acce6e8ad6769acb67adb72d0fd4c1361e448cb528ebc78688ee36abb4b62db44a6b1e44cb1da0ccc92230b4ea2d1ed0eddce441dadc81ddee4ddb22501efc6e1e98ec03956db1e8a9c9986cb6fccaaf682b8d6acb90f2ab05210d78326ae2b82bd216c8df1688a9e8aaf36c10e3146ed0240e08398e81dc0cb8160df4d82bb880afe4280d935ece76c081be4eeef5c40bf6ea8b1d3490d28ecfe6d8add2e4a1f974296fb841e8848eaa94c9ab9aa598d4b099eca55b0ac6625a29ac9a89ac6867d78228a1d2aac35eebad9cacc252fe48ea168bfeb8ed0e4fcbb00cafb05e6b88a6ee9f0ccfb5660b1e24cbf0cc618688ac1ceeed02e701ee3cd0dc2250de426b1e1ab00123101fbe70db1ab0ff9c2c1455d1b30e8fc9e649b4aaa8c966cbb4d0a11d6e0be4c2a1d0ca08e462af61c20c9d8007d0fc2cbf8c30d28e71d1942ae3cca1e4122e1915eee490ea1bf0e71b6a4fb8826f78560ef8bc810a676ff6bec1d128cdbe2c0dbeaae8e4202be65ece0b6b8ed2d0911deaa11e5e816ce4c6d3ead11eed31596ea51ee1c1d3f8111eba0ae890a55bc6ea0dafc1614a8dcc90279ac84a729c8811812d88560c8bb0cc8b600bd97011b1e2c11dd4a1fd862d1e566cd9160aeb800c1e562cb3fc6a1efee0611ef4411ff0011ef4219f18cfdc240bb4e8a9dce28ddd1290022dede24689bdbec1bcea21b450d00461d11c2a2dd8dc01bf60cb1ef4a1162221112ca118f4411cc0211c98eacbc62bbfaaa1b6ae12d0b281166a412cc7b2167c01f4164d93182e8f4cc9f4060d1d9a2112e2522ee7522e11012a11211398919430c91ca4b01ba410a9c231f70209b9c0019346a91d22cd3017d330dbb1d2daf11d988c1d8f121de34128eba0035840335f80055ec0333f13345fc006f4411f05a13343730d3ee8f99ae56780ee5a5ae95aace71aeae75ac201d64ecd20a509d65c4da5984889d6e19c7c53c8d2611d1a8a9faaa1225d6c77dc411c340778d24805fdaafe1cd6211d604b1d1a461f74810560200cba0006bef3059641cb80e79fcce11dfcea9f9c4c1d7e0ccbcc01b6d6811dd4411dec611864e03bb9800b60003fb9e0052ae11ed8611df0abb6c4211cd6611ddc81eba4e1b5e0d33d0f141e0a21063c933b97011ec28140c9e82a81d079b007a6faec90c02006be53446140112629b954498ff2c8a8366a2d55091ba67165bc411d86214445343fbf330622b446f9530cb88194bc4be1bee17c604abb4c0e93b84b95fe12f8faf2b974311cdaa1390d33bfd0ed1de601f8de412995b21dea011cfa2033592015b8410b3cf334598014fe41133e8033ed4158a0011ab8210842130f60e10b4e93335fe013ece156bafee5836a804cc9b406b04115fc5434ed2136abc11eb6c11122744441f30b70411fcae1351f47083e13063ed312f6810d24f405c0730cd4a13989d34049d30b3a55443dd33b4d153ccdd41ebace1e10e1056ef45215a15455f5522d411f666b1edc612379f503ddd304e54129fd6a1f4a2106f2f346c7c01ec46123cd53176cf53bc7a01abac054bfa055cd813e6bd446798019d64117d5a119bc133c73b4536fd4060c157b9c671d86015ab9e05847544497011d2c0e6880f27caac15e95611a53268fa2811ee2005945b40be8c00cc0c016f20828a9c15ee1c10c6e34606d60199ae15df11306f4001e78661e36415b61c0069020446f340c96811ea68719fec9c10c04d60de4c00c3e363f5be11d6a8e5588211992414c3ff33449811b9ec14d77f656a0e11a982034bf2018b8a11968003461000c7c361a58f31a9e81532f954c3b3350c3611ae0610e3ad554632018f4211df4c10c6c350628b45dec4115e0f50570b56bbda051c720f54c271ceca1146cf505f4401fd4411f7e4155f3730cf6e13ad9e855cb553f5f0052ed211764f552c9601f88d33ddf61046b0b1c90ecb1fe491fe2763ff5b655d501a0c4c11f3e810528f63e5f8007e8a011488159fbd21df6810ef453446da05b75d11ce2d646473406c04014ec21bc942a1d9a416e13011eae411fd4f63eb9200ca021bc14568f80f279ec155f47e91ae001fe60e1950e928118828178ebc890904b95e0010c8217061a611eca211302b712ecc1ce9ea772f5b30bbc207d371606c6001eae8b1e1061473d1747e9401cec0166614116a4f7159ce04f39530f6c4167ddb46709186841730c60c51f0ef852913619de3459b0c11a602144b1f60514011ba4411c6a33a7eca11054d53349611ff4e11a90005ec3c01e98281cd42117d8b70b6e011512015ac3c0169421a1ac61635fa0068401c3e2005ac1e01e1ac63ca321131a5675f9530f6ae11b9a210802963b6b4119e401b678d5ca16cfcaaecc1cee6118bc20601d9644efc1cadea11916e164f5f346e9200fb001418bb3b6dca119f2405c65950e9401bfdea118f2fe400ef22012ee811ffc2119f2407591f642a7270ed4967ed31714fa01788fb80bf2401f766ad1544919b1e71bc4a119b6337603d75245740cb8017955491ce0e10bba5844f1601d9617b9d48116ce970b6e211df00156f5130cccc017f0c8794cf633c1201af6a11ffce10ccc587089881d72e9152a80053ee098911999592018aa6167dd941bfa609935f3988ff90efa0109a6999af5404faf011a6a6033a9993359809baf21710c3470f0e119e4c006eeb4333bf30b68c11ed4e18a16521f5c01093ed306c66017f001446d00a0013a0644581cd838c42ef61308960ea4921b4af55481789ecc411f981809c0a0a2c1000c8e000cc46019a8a10cc08009fe301a0cbe000c82411e76b1b6dee13af34bc5d0418cd5e00bbe800ebe600cd040a6bfc012ec61b6daa119ca60a6e9800ec600a8c7e00bc4b38dfdca8de5400fe6400fee400f9a5a0f9601b2dcc117cc80a8e7806c675aa82de119eee11d706b1741a11240c113ca9aacc93a18e6411546a1ac83a41546e115d44193ae321cd88b433749e1f0e715820116f89aafa79718608118065b7a832119aee130976a7ae86194f7530c3238f748a9b6dac12aa98c7c7dc1143aa113588118b8a155f7921bd9416a8c011bf4211ba2c1189e219443b01ddee11de21116920156360d1ba0416ee466979065828489595a8959ba0a3661d320f3063901873a45553ee959fe73d6a12413473e79c81ca8932393bb3ae9999edfe89f101473cdd9af3057544d27c45a0b1df6011362353f257444f1f36cf5612395cdb444eb71cd0141e353dc76f1b6462b0279b5d2e0cd57435058db410b85d503af5803b3d0a5d5e131e53b0b47908a79151cc6cd1d2233c221ebbfdb18a178f528b57440115440ff52bcf2ab1bd8e1e5a470e5feb22f0bade4ba411c4edc30730f934cee2f09d4c3970a93f02bf7ae32b12dd4c4e52112cc383f63001b18ea285d8e19a7f0e5606ed228ad091bcdf79891c48fbcd2988cc95efb045945b679f656705b5870fbb69965597c3ba75c93e870b3756c731db6813a0db43a8f5b54ab5b1db8c13dab53c330feecb961ab24e31c244bb2bbf9b03d31171d8a73c7a25b3e5f6b77cecd1ef601d159b21ee6a12fb9f2c9045c586bcbc922af8a69ebc231d7c27b958ad71313cd2d0bad4c587d3502e7a14a110abf680b4ba3fc032dd0cacc2114f9dbca443d045f1dd6694b1d5adda5d1cd5771314027fb1629530303b4e6e6cbbd301c1d7691b2e5db303729bfac52e19cfdc4cd61c58fb22f4baed10aed48b971313f7c0abf61e546fcc16b2ec91d17bfa490da17f3bed29dd25e3632bf81c9607b6c360d8308381fe506d438ad1a32081bb8c5355d53accacf9c27eccc89b3cd658d3893fbb5e473c70efeb95f0b1ece731df870d05d7d9e4052390bd438dd7323776c3dfe47abe35bf1f0fa7015674bbe594bfd606b71adacdd160f7307fdb6f8ed23a9cca5474bbed50f41e51bd4694b40192ae28b93df10ab8d9bf5d2353032694b2943ec1de87c5737525877959eb51b5825d01d0cbae4279bea1114c3273bbabb1254a33beb132dba0d494addab2fa51ddbafd2c3cbc1c45d1c1c8ebddaed6bf61a6d498ff2e6ccc1db8f721731491c5e4f0a8f9cee29bbe6de21dc8739b6675bdee57d1ab67ce85a091b9ce51aac8adf7113e8c4aafbccb985949be0ad3bc39cfb85a65bae544ce111bea513feb5a478f4f950c5e6c1b15450fd485ffdce4d1d1a8bb6e6611f3e70f1508c576d3105991ef1541aa14c3f725f8ba52bddf699acfeb45ed115f1eb9f2a8d0115111d8c9de45d51d9fc2aca21cb3cf90d3a35f0e5afd81645f0039d4cc18f9eda6d4bbc5650eb1b3cf2a494572d1d06533c9038f4a596aa617471e21c77ecbd91ecaf9deeff92b60a8d1ddd0b20bab53347b05d3770e304b61b080edc4276ed202e8cc84e62bb57b0923d7b360ddb3468d3428af4786d5ac969db445ebb866d5bb56adb566e9bb9f29ab898e568964b976e5bcf74e2d2a91b0a4fdd4e75458daa43474f5ed2a448979a2b8a8e283a73e8d2a1bbca95de56785fe7c9bbaa0e6b56a15bd3c17307af2d5874f2e2ce53278f1edbb870e50d1d2acf1d5c77ecbeeaad888e1d5e76f1d8a5231cd81de08aecfc422eebfece5cbbb2e6d61526686e294471ea2a9b732796606575ede261bd6c98dde8cae2b03e56ed2e34607915e5cd7b0778dd63d7a2079a8bcd79345688c6d759beeaceb7efcaec308bf3262e5cb970debc9903473d5cb7ece1c28133e74d3c38f1deba591638bebdf0810adb8153bfdd5c42cbf539b71b5770613d70ef0008593d1869f40c48208df49148d354135235359974cd4c30a534e184dbac43534ceaf0948e861daea3ce361d22e5965a51b985d43c626535545573b565223af0e856d766442556db525bc135d43c3bc683ce3a506dc596634ec5e58e5cf298a3978e7105664e64a42dd91790bee166ce3c5ca143513c8e4176956b9d5d3565611125b6fe0e3be50cd59c5f804127d9681455166664e3ad05986554f6551141f3ac79de509dbde64e3b762ef41a6653be13119dcdb5d3e676cf7959d96ef09d474d79e285175e79eaa5f7e740e58d279065f7993ade55ea2df41d7df82d349f70e34d291144efe45a4f3dedbc4360461a79844d821e3dc8a0842c4918d285d7c064d24c31f534d34f3995b313373cad23948c68a148558a6dd1d396287ad0f2ca226080f1c41773dc528b2991ec53588ffa88e28b3cdeec924a1eccd8b3953c9988d3235c64d698583970c163988dea8835565c7d9959986bccb133cf38777c238e32b8cd135845fad0b34725bcc983683a422c4366399d216a593bbe4de958c5af8dfe46a671db79532b670e994550643793c94e38a669b9a768fa61a69c3901aa67dd78b4ca6c1041b52ae7d84087e6fc29d1587186dd78e110572b77e0a4f3507bdc71d6cddae22864d97963b7a35dac0e41b6d03b76f71a57811a2178ac82d8407852e02b75d46cb235412bd34dd04a7b8d8723eeb4ad8747a5130e5a557de58b30f0f0b49337fa9442873fd920818dbf03d358153e6590b20f8f65f9138732ef2c853084469a938e908469a5706da947c7995f5b75b60e3e48e0528f633bbb364f10ae8b331073eea856263ae504b5733b5c333d0f41f6a8b326cbf581a38e3de68897fe78e5ad63cf3be25c333641e7c3b3746604c1a34f8044eb6f8fa45dfe9bce3ac4b10f7b54033b07198778c6d11073ec0311add8477bc2610f7da06f1dc2b1cfceb2e30df2a96f3b0d645471b0b31d718c233b0d59dbdbb6338e0c864339ea990f41583610ac4da4228ea2083bde218f026dc46f1d5996104b42446c10d14113125c4d9ad5389ef8445b3c194a864654a2ce55318a3c519d165f64167b58a306cbd8873e72f1857d74461d5e190c3ae2418f32dc021f8841c73cf4310765a0ce1eb940c23df481a46620011cfab0d13e32b1863d662308e2b0873cf0110f26a0621f831c8305d9318e7d7c420cfb03129520338f66b000403cba8a3e74710909ce230e8ae8473bf611875be0cd1de3f8022efad10c30ee910dadb8fec740f411873bece31de4100229be678f4c88011ff2d88730edd11076041317fad0072de8a01c7020060c8f74922e6a708d2de9020cfe508e3e32f105f4c9c30cc1c017da1002c84c8cc11ee318473d4a214971f863135fd007d58856996a508d20d929087b56a836f660106bcfe19370c671b34309471c8e3ad544060211c7244687bcead5af92d13768242824c5fa9b481cf49223168b26177222b434e4136ef8642842c1224f3ae7139e8cc32b6fc98a3d7e810a5b88421afa10ca3c8c710a51f482784b89ca58d8a1bf68a08216b4b8873ddc21b079a46316a7988532e661177bf88216b3b8475f84b48faf16a317bc30060f17b90f6090a218bcc885fe30eab19d59dc0218c6a81ea288171874b8a31bf198873fa2310b5b28e31ebc4a8769f4610c5bac631fe5884834c2218dea5c63b253395d65f6510a4c5ec318f698470377698f6b14501cda320735ec618fcea5c38298a9863df6f138ce94631efa0baa7d2e03c9ca4433a81ce4a0390ea28f7ecca31c07194f05fd510f050e37a0e1b81967f8135006d68a38f6294e71aaa29f894c4966963994941e03338b200a2215494c457a85b78a6cb4a31efd6848a4d12006116e252545227e6b22ad9a6aeb711e1291e43ca43b1a81c58a8ae50956e051e01e25f547a13407cb1ae617882da946ea1052672cdad72db9e31ddf9b1897aa971b88c5a51d108b875cfe00e3d7ac00c9af92e10d4470438f3a61061de33954f18ae7a7fc1444bbf87307352c1133df984934b1418ecbfec91f0c6a575014854e43cc141aecd66a20e6194f39bc418d8664471a016d606504d20d067a071cd5491f7908120f145623cc0df4b13a1a1267fbb4b067583b1ad00c73a7f02e861dddd8e40e7b3511bc51e457c4f8617c41628d8f5823411f7d093492f5920695542634b989b47ee2219f3c2e7b68e9dc564a34b0a2d02fa967b198585ee4d7b1f4682c7469b53c7827c7daf485495732b18d70ad1b87f93a31609a75619444a525f146347f5aafc528d617b36969789bc10fced6a11d10bf4c34e359936df4a3ddf780303019ac92ccfafe8237dc98cd1de12108d7e6571c8334703e6b2b0f4051b89db5adcdcbd9a90677829b1d6a78073cb33a4f0c77869f7540ad86f299128af3166ca0fd86a2b879887c1e629177b40216b0d8c833ac71a0472f3a241eadef499a15c4972811263091494ea6f5936a780e7bd721b08762aabb2c0a65295ef94a281dbc1567c08377f428cbbfe6810fdcb2982ef208645cc0b254879918d82c22fa3c02ebf45e2f8c3f70c1873d2c56e12641cc4863a24b457c5341482a322b652248556a5430bfd06f35e0b3a0dcf59198e2c5b1326431936cfc9ae73f7dd734ae594cbb5ba5dd329b8a3cdff0f777f80d9e837c4367e9593ce375963ec283a3cbeae9867832c5fe9076bfec51a332dbad7478c3e800c65719bd21de3092e88d1cab58463489472084c406158ef631d9ef4a24a7386f68cb2755d9498620a795aa105f28b67e51f1ab8214bcc483e9bb4e6624587ba80ae3631fd378833fe6200c3e22e9eb4e9af5c274ddeb5e477dea1e93873df00186748436d77d71cc521ec3d77dd04218f778c73dbe39867bb05211fcc00f99a00cf5700ff720303f5318b7e10ee9500696a04a0b310fd2500b88000bccd4107b3210be21250ae81ae34126a1a10ede200d9c4119f21009ca3034f6400b354009fa84103af32af08642e0c1658f971ddf801d5f3679603679def01235481d904735f296293df36335441002011de87543fe89f232b762110df10e18d10c06b2200a22122061210e6212220721265152b9170e1ba23837b70d0316530496192fd2213b813055a1172ba2174b07168195620ef373108361fae049ae544be1b05649470dcd700c89d07d62611862c40b91500b8ea80f530789b4100974f009fb2016ed203b8ab00f56325bd4b009911009b3a00f8cc12602b1153cc40efb500b41b00ffd9009a3d30c60800d5e130ed2b408b4100cdcf73dfbb0085eb00fd3c119eb200fb9400afaa05ce48008a5200abcf03d00550b91f03dc78008ca7015ebf00db0580ba76006b3600fde000fcd600394200d33d80bf0a13b89300b79000cae112a1c140dc105663d7883e9118423f8fe8368d60df4c841f1468f64636f07011e6fb336352411d3f533f941118f1211b801190e794318210bcf900cf1055241d411b1b70d2d911229510d81735f98561310e20d3555531f222243c10df623237b411465d116625123bd060fab36162c522379817448670fc7a00c905841c67004cab00fc9140797e00f72c10f66600990a40d772055e6e00fb57004feb00ff0c004b8b00feb300facf40589c45ce4e60fc3500352451afbc002c0e00faf8807fb40112c926b865141e35006a85095b08894fec004cb4057dee00efb900b35703ac47854e9301efa600a74e09380f13f98c00a1e630fdad006a1450e5ed009f6d00deea00b53e07fc38004ccb034e3fed47ff6805dde800e88900c54b565fba633eaa00be5d40f4ba90e94658f8b270df2d883def00dd2a083fcf666f6981df1e68301f52ab2d21014056f64932ab2f21d548370b1f21bec604dd1b943bc12911a1772f65512c5a25fd8900d319172d9802189937b2f45221fb22d6e919ef6e03e44e116e1d39e2cd25a3729167311754e419f74a81be3b71ba13517a42116ff499ff3500fa1451afdd917fa800f4c700bbf747ef6b02bf2500fbb31a00ffa0e2a861b106318be727e6f8918775211a49143b912199a5425cfe10e0ee1187e415191018586e670ebe510ed101b65531de080a29c3137fb561c2ca379fba46fbcf91de1510ddfa19b90178fd8210dfed4208fd1d0a4d4a00cf0689bb6191e4a1a5cfba89bdfb08f3ac31d07315c32649cffe4813d4378e1b5102b4a7f0c9943bdb25e1181371797681df511d0e0111e357b0dd212282138df19922b852d3d510d4a919226929e847a936e31170d835b34c9a181d4165ab76b7304a086d1a102ca2290c8a805c85af350415c690bb51046966a7e101375f5804ce767626fc922042aa171510f36421a72e1aa7eb256f409ab4be2a10b6761b7ba243644a28ee1317e37a3de351afcc11f3f235de9931ed2c63d60033635b82960b6a43b280dd1400cbcc00989e0049dc0062ca0026c90043910055520032470024c30034b10084f70044ba00a4bda838bb729dfc1fe1d8fd729a5722a2f8336d226a30a654ddd155eae4171515271bb3211bb727106c2118bc668f4f537b897721852863f312d13922d83aa22174b9330090ff2a9a874e16b34f97e3429aa45679fbd76a9261b9f125a0ffa40a0acf5a02dcba9913aa095dab2144ab310e3aaf6690f62b5b2aa1a9f6f692341db6bae0a621c8a1b3cb45787726c7ea2b47e51375eb25735241930631a4b835db0220eb1216fe9501e1d841d3a986edc619ba5f00776500843e0023490012350023870021e00011f80011960011d40011550011a50011ed00118d0012d4002821b023a00022d80059c000cd4600cf21aafbcc00685600a9ff009be600c8cfb78072933d5f3a14afe8635c68128b7f661eff0a0f5908a3a942b01f20d16070bc4c0511bb7688f360d8d06121ea91247a44489437b3d016035d5214f41a81ceb9ea115bcb8c5a19b9a87963abc419baa352917c6bba9a1a5a99bbab2ab4ab3141a5ab2fab3e4b7bdf5b00faed9053c1006634089aaebbca5cb249b3a6bb2ba9f91700ba4e00d321626a978358e611c95e16dc3610efb6709d1600ce28066e791ac60eb1d0ca4a3dbb1355cd6419c821dc5f0076840043880053440047080032030032350010c40010cc0000eb00010500114e0012070b714f00028ec001490011060010f80b71580c21a600114a0012300079c500873e00434d0024800023aa0013340021a4002fe3910022980066cd009cda01dd2d3320eb95e7fe6578316888e1225ed35510e897a11f10aaf400cad7b9d1ee771724a5fd540bbf7457b10ab3864a838394145dc502224021a2ab2a945c192a151236ba11b8bba6a5431aa19f674c6cb6bbe667e962aa1fd79b4ea679f036a31bc16a1f5600c0caa4983a4079ce8bc4e2716169a2ba21aa1e410989c081889b1258ad1616302a2532278f8630ef680099274280d510e0d31c012f629d9431d40e1b5e1b0a4d4f066b6490dd140adc0c00bb3200a73f0012370010f5001757b011a00022060011c600422e0001dfc000c8001caec0028ecc1d8cc000b500118f0000820ce1ed0022d90cc1b4001175001734bfe01ec6c0116a0013830021ee0013470021d1002333004472008aee00dc69a0e0dd990c7b124c781a13a1471a73ba285c67a090b0d1e17728f16522375441722218d730debc0d11f42452ef9142f19bc6db19573b1956db1744af52f71d114266b25566218772817256bb2ea27a1aada9fd85b412cbb2b7384d33a3bb411ca2289a11bf5a00ccce00f7b4007fd60d4b0490611fa08b8800ff7d00c6d700dfd900f4c800d44c90efc90076cc91bf6400e5f100af6c00f888007a41811fa600664a00ffb300c61803ed5e30596e00ff7900d31800bcc0433e7a133d5b1a5d821cb33040e2c33c05c465876400320f00119a0b71e90018ffd0017e000edacc2d6fe5c000ba0c28fcdc10c40d917c00071ebd99ffd011f80cd0bb0001eecc11fbc0007d0c1aacd0008f0d90fe000965ddb15e0b714e0001030c22440032350c43480099c300cd4b0130b439fe5167ff2908ab9911ba99851bb429df51002500007add07a070272d8595f5d28212647126b7c0d2bf7382dd5193d213e2202162759d2e213154321b24e511bf4fd6a48e118ef5023b68aaa986cbca5fbbc431b75fd49bd62b1aaa48bc8ffbd829b500b8940646d0962ee900b711007b5802895ba0f9d400779800a266d0c8840077a800c53954caf4007899008639008bc8028baa00777700bf3400b77d00862a30fc4f00889004dd810c0f2711e3aa88490a73efe1cb465bca90c7440034320021710021840019bfdcd0b60c317c0cee56acdaa9ddaae8db7afcd00cc8cb7f0bc000500ce9badc2276ce5278ce50b8000078000b12de66caedabbbd0019e0022220022590068b300325ec0019f0db4c4008a9500ca7100d2ce31aeb0518a0cb43ae6a18ae5a0fece0e8bb02e9f2a00122b0045950056f600a5ffcba1ef50cc5d00c1b77c624250dcd4252c8b2444bf4212d2522e91d15c4b7de6901dfa88674c0c37c53114a91416ebbdac9f4c967a22aa0277baa2eeb74ee90c8465dc88238aaaf8a1b56d2eb71b1dc5833ab306a27c0211c9b51bf4883281934cb7203379a77a44403b65e9b1de9200dc6a00c23580cb690fe086bf00662700233d00338a0019f0dcfd8bce5b18de56bbee66a9eda6a0ece2b9ce6575ec31e8001245c0116300348e0021f20021d30e51d30022090011d60db56bee61560cd945db721a0011d00021a4001807b0117d0011de001cfbc047e70044d1004387004388c0434e007af400d516c62bcc22bbef2e88661012750022a500424500447e0066fd0091c650a8460085af0067b60088650087050052aa0039d80096f80057e100abb601237a121e2c00d9ae621e6fd38f63373532123cca72232b2167d1582883a1a19ba2413cabca77a25bb61c8cfebbce50718f8a91b8144a08114e01003624a727ee3e7eb2abaf8a4516cb73aba2afa324f1cb050fe631ade9570287a6fc8090e39d82950e38c611b0da4400369b00765b0066ca0061da0014df00433b00027f0052a80cd0e80001f8c006c9efbe5ecda0760d9969df1b0bd001730dbd7acdaf8eeefa8fdefe02cdb1eacd90bf0c2259f01debcccdc4c0110a0028640048ead023400dc5a000caee00b124e032e60044c80033400079db00872f009c580dc11caf390ce5e2ab6011c90011e10c14b400443800553a0020091e2848e3e6f3819825261c9120d5054b8d042a88f1b419c9e5ddbc6eddab5751ad3a5bb966edbb66aca76fd2a56cdd83563d1a4492b974e1d3a75eaccc13337939dba79ea76aa93e7539d3b77f3881e75874e9e3b79f2ccc963c754fede3caa55e741a5fa6e2ad57a4debcdab67af6ad377f3b436e57ab5a9bc7a65b5729557366ed3a354974625ba342f52b474dbfd6d07ce9c3b73ecd699fb8bd81c6277e3bab55b6cae1b3b73e0be790397b932386fe2bc850b87d95b65d0a1a579f316ad579c3a25a000817082c389297e448d0236ac4d070a1b305c008ee1f7050c28203870b000418107173220a740e1c18205144c746080a1020304070e285f70a00003ea07102020bf20b98307e4db7347a09ec17ce41a3c6ce8c0a148942733ee9320a184293ee8c005e13208010438d848421563d2018c1da8d8a9871d0b2d4ca001072c2862893a8a80600529b430a20e2d6878a30f3eb220420711fe2ac800041dfc20c4903dfa18849869360aa9c76baa91a61a71a021c6174e1829d21860aaf1a525d06492499d75bc31a6ca6a6842a79cc5d479471d78eaaa6b2baad869e79d76a492509e76d25c4bc2aeb6eaca2abbda518bacbedad48a1db9da7ae71d37d9322b2e3ddd896ac23507b3d09d322324944cc02013471cc4c85c2cb0c010e30c9cc034cb2c53ce50fb1435d4be09cd9b6ebaf9269a62e6d8e10b419a486208348888c2850a2af86d04104090ee810a28708001e828c8e001631fa0a082609503963d632f7080020b768daf3cf9c0430f5bf2be139602eace730001f6166060031e4a70218421b0c0a28d233c80228311d67042860b42e8c083fe224868c2853e3091c3091e9a78a518c4e2a9b0420beba9e7072c0e81038e3aa698c2082d0429a4903ed2286288214eb0205ae9280061843a08f1a30f461cf185c769a2d9e6a372542ac6186c54f9a410458a198612579054261a63aab9469a68c241271c6b18e1049562a231a71c63a499e9a899ac9a0aada2b4ae53ceb5bc024bcc0bf1dc2a2ab3cceaf32caf2c4cdbab3ed912d4ecb7ed6c74cd3ec97414b24405832cb24a2fed26b376446d2770cd2a0b2c70503fe3ec9bcbbc713c1cc7952906943fd0408514374e4802840c9435963ef62a2097021d1aa84e58d593238f3be518a0a075d831606fbe073ab81d02068a9d6f3e72c91b97dcf8be1357febd918d95ae8e38b04316020b2e00c103029545ce020f6e000204da77ef20030a3020a183264c81a41663be29932d0a435ec3903e9ee8c39043d2a8a30e4308a9a38f254e30a204ef917340074660874e18421095a8c42fb0c1a3744c6317d2f8c846acf10c5508c211bfd8c62f42610b62100334c650063584848e8f14e311356b0935d6e10e9f14a626ec90d3d9d46295b75c651e62c9ca56c464c3abbc232f682b0b67ce048e7830854ceee81312cbd2c3777c454e6923caddd0169576a88928674acc5f14b51877744a7099c10c623685194d8183525df4e2a72cf30d71908a54a15186301ef10951404218b440c31a8c308436cc80063a7840b09053fe2dea042b3dad73400540c0826219123dad3b80ec64871cd819f27617e88020b9a3ba0518cb7a1720cf79a8c3800ee0aa021ac880f72e103b1428e1011b8000751600011e90e00381bc55b42e802c5f5140054c00811154910a5aecc21ae6d04a85de01bb29400c0b7d38841fde800528408108703844084840031578c002c08200073080854e74c214a608c52f76c4c06d4c636a4453c636aeb10b35388217c5708429d45992a1a1c39f5e4a47354a410a6abcc418be88863250230d73acf0286859a254e232967980832945b94a5b0295b58da2e52a89d29b380483183f11052f6ad38a9fd8565293ae29316c539460140518c56c2a32221562e1fe9299fec7742a70dff02219bb212a51818319e20807364605396f284314a23805207a91083bac01046830c41c42d0bb6f75b590c2a2247880b72c06f82a5c842c6b599bd301edd0475914d0c0032c803aef9ce791cdf1000692e501683d40041aea6b5931e0016fc5c70119f8c02a018881127ce0571d60c1052ad09c0c60c10d86f0053574418a4cec81149f30c664d8b6843ea860060fab5f168a00072340010e45f815043a40cde7cce7564a30842138c1897c42639debd8464d44c2125528a31ad320461b88318a47a86216c4a88639d0618e8fe4241d330bc41f8226aa70446626dff5c90ff542141edae32b73d9da45ab92442312a5a9c5a819358a218a44fe50c214b4a0c4223e418c687c868b78b2db84f0b2a6c0f9704d12eadba3186318c88ce3525ddca9a6705a19c4103534a5fad4652c132ad158261c41139a32bec10b549c22146a28d0ad8c25c860a12790b08b4e074a092c0644b290c9898f5aadd71e59660b76b79b1eae4a89800764c00210680f7a1c20db5de66b042a16d6afd8333a19770f9389958e20dbc39e0eacd2032e201006408049f02541061df84008ea908b5c58c31b166a4a3c385082138c200b5848d134eda7053bc0410a0bc1731faaa082273c410b4f38c11308810a55784215bee51137c42112e01acd18a9b0c6340cc1063f00c31ae1b84638ca31b3d094e31ad430c61c02610c6b50fe2326e190863178e10b23052214a6288637d25198e9b250a24d29140e6738438faa851de830c61ef81a9d0a281659149882229c200734ec01138fe0842f4cf597af118a50e83069a530838e0bb9343290d9226436f59775744a1c97ea546832532a6f48835422ed8c673ee3b8372a4319bc488414eca0861bd0a0056ff0031268908437e4353a0ec0c0285f7c81c402473a3f7ea4efc6651ef3a05576b224572763079d0b6840387a056bb41e701efaa8a7031690258c9b4d9fd819ef7614f031f034ce8013ac7cc515e8000e92f005253c81094938c21a42518cc9b4030558c8421f0a81053faa96085800d90cac69842938a70f4ec0c212081b480a5cfdfe444a08421d8ccb91e072431d31db06300a618c4224010d8568037fdec0a02430c10d4f40431adaf00437b4210d511882129c808628fc91082d68021192b006411c1d095168c32780410de96e4929325cca54980296b02cc51cd120852f8a318b5f30620638f0c0ad48a003fee860571568810b709083293c410d8d38052fa2018e718c033383e354bda3e18b52fc0114c5f84637d071a62b46c5428071c761deadb77688b4a789fb62a94ec39970801154e687b53168218720b0950634c024c52fe001de5c60f6934d0eb7aa13f2904fd2accddea5e42097df109d1cf31ddfc9b1df510fd609974ec2240d3840dbf116e5a8960348166b29254dfa9d1c9bfe32b52aab5f4916e7903fc80a812460033540824a389abfe0ba2c58022da08013580222c802f7c10238901f41e8831dac831421042820010f38011cf8a325708349f08334100462b8066590868d00896b988657e0031c40821c880239f89028200224488323980123700225888235a095fc4903349801179082f7338223c8a3594981cbdb0124d88142e38121f0c2c25b833f908324700250f80560f0062e21afa840877518873f209029783ef8ba343f980217a0813548034f400548908213889e16c800f1c18155b280511c42172082271802109081f723900ef8a30c68813460021de84335a00470cb0b3db91b759394323187edab0cc3110cf37b8984fe0a1a7fab9284fa869758c67f4305693005253002ffd000123081da618055f201ab9a2cda419e5f5140e5f80eaf1217632117165b969833a442ea3161f19ede11160b688f9a9b0f94a38002998eaf6ab96ce13fea28000ad447e8408ed07900bdba1d342381550a814fcc000f68012000022cd0022dd01f2320844380a637a8114f28842228a51268821118c55db98e138082f631a754788546188495d89157d0116870844e488536d4011740833e608234588223d88104d18116c8012cc8491a50022c00021d900236780384ab3c1d38810fb801221802227002a41b022330b81c408226400224283a36700431c8000cd08142308540480339f8045e6884fe16a0012470816d728136400562380553f0855f78022c28821c800345e0045bf8855968827cc1150c8811dba3bf5d612b0cd8bd1b6001cf79cce8b8811150823668034e2886cc2a865da8855d8886c7983e0989a92ba229c018a9c5f0066aa0031090b16281c528d803250081cb5b0439980334400312208293230111600fe9501613288225f396b06a39e490ac407231c98a0e48fa8e037000fd23b264210f83c4a4118096da91250ad8250a4c0eb2eb2b0d28a5d89b2cc1da0e8d1b4895430eeaf89e666916d8d9a5c94216c97280558a0ebdea801908822578827c918100e08029388144dbc169d202fe29810d39813ed0821030010fb8264230021528fe02f3e4001c68022d70043f58034f9006df828654f80562500527d0810f288110180122500337a8820ca0c413a0c41d80cb136881d91a020f804d1798011dd081c44b900e100113c881a253821c1801dd33021cd0bd3408ca19f89c0fb09518a30038a00442688219108354bc011cb08328608254300662f84c5a50055538855df0855998b55fb0831628011c5083508c0e0dd000e7f815f3b49e5d695210b895bdc2171a300560f885bc84043fe04d2628834e308666280665e09bec238cbe0907913287d230864f680141fd80b2fc0d19bb8055bc011770813590033b3c821c10c591011665e9a4f608a4f61440ef6439f8f0b142028eb2ba47e1988ef8feb82be0e0b10444a403448e5fa10fdf510fbd0acf951b25618180e3488fef044f68998fee69010f50ab07f001376083103800631954e2d80116201010c08226908125a8020a000001e8380dd8010f20011d5502384083d72a822600827bc502266002417b0238a88235780337c8824040b841a80463da11267903256c8203958219688124c80137888277c9170f188212881e0f08bb21f5cd2118811998811400811620021a900222889e0e18021c9001874c1012400227b0834130844560822e44023f72810c6001e9100117280124c08120c80194250244b585622006615012d5f3055e98855d28865450034198034060044148843f180446308546f883fe24980235880225508235c82e40b083badd03b54c032590030d22855440031aa80122d801369883416804b6e422e20b07135283365803c2d54d34a03fc9ba95f92b990f3038e1208e5ff1001c7883b8ac4b3f788226f09ee85831640120f7e816d641a4e019c78e8bb91ab32b907b9d737c8f046c3669b9a5f530dd54b2cff600ba5f1945f5780f4a9ab27304a0e40da4226b16958b8e4542330f608152fa001c008122f80223d540062880748c000b10165f19c20f880e66ab001da802f364024220844228a74ac0822730048a700326988251780663d8054c308437a01736e8034728040fa0818889820c200eedf00029a80341f00307760241d88327b8fe8119f09c92891e1028811cd8bd19200119018119d8811b00810fd8d6111882369c811be0010d98960f881e1768810f304fe86952120801411c855000065fd8850806865c608423500550488345100337d8834790034618843f5c0334700352a0044668033ba084463084424885dd320550788441080546a08447088554d88542c8011ac000f304012580820f10811976812850033450832738823240023460831c883d5f592510ec150c90e12adb1517988225354531e8012548c86ed54f5f798f8b6bb97f14c0ef60dd05440f636d47d111a4f92cde50ba16069cac0d00820f20c06e29160a108117d3b806004fde70a4ef7c240a48ac5fa9dc41ed1ef8fe9b2c15eb1e08049de908240008806f192b08b815d5d9b25b110112c0012280021ca0883ec09ff93d82695a833ef0834a308412c05812d8978513ba37700494711fc06b033f68433690822348823460db34200125608321f08f13288112581722d0023920d312d0150d2801a3248116c0815f86c597d5bd1cc0d8111881c9f49c1956e02650024660b459b0855da08559b3055e48855398055440855e603e3750023778044a50bd5e70535a40855de08547d861fb4205330e055408854610055a488550780445480440c01731fb9c2e1b811698811ce060b04c8228f00339708319c01dd3ed155fb9155d0e5e210301d8938e52ba808ca5813123c815734ffefbec9640122bf0601daf5addf78cdd509a8f471ac82dabe5df192bf9e81d58063ac66a01d2e9a42a935506982c0e68011a8347218b16650ddf64a9800d381e9a13a46633160108000298dd5b0e1d6f69c812b03f1010013b588537d08110c002f78103de32043840e724f4c127484a3c83831c20822640033b00bc40f00312b8bb3e44034108043698b6b37584417803b55483291898de6b01da6b0281be43251001c756b1efa9803f4ad988de53c594310f108327108e1398830c0084124b8559e885adcd055b486f8d26855dc8853fb8055ae3053f088135008546600439f80239c8e95fe88447e804f6668340100550b00560b0855918851d1e855db0fe852440330c40d72aeb32197b51c79a01343801bd4adeea98c75d32ebc9a2b1c3122017608112386cf6d0802728031c008312b0ebb27a397e34ac60d9b2430a3942da401c7b9dbc9e6b78d439e50cc7685dd64a0aa00c5c00caee3264996b225b00fadb8eafd26baee2255a658f557a31e18939f4a0800008004d7616e25516eda0000fd081d71b42fac1c12788157649112c48033748831d90813ea8031248831a3184a87e8339a88323b003419083467004dd46b81e4c03c1338436b83592e6844230f445688495060551408551808440a0845018630e6f8e114082f011e854e280a34b33fa83e830a3dc812001aa4e0313f5056040d3f4b6852ac9da5efe380593ae19f8020654680448a0844ad0e3a6d9855d98054af88406b78554b0055bc80560e0855ee085679fb554288311784c009c3f17d859857301b622d7d31dd458dd25e22c5ff2241616f051558e1121131f2610848fc1bf06d000256356b6161d27cff295531d2167d6d6e9727e24977c9cb2b012c0df31a4dea1a4b212f10ab00013d88060d9001c2825db6d0eeaf944cd05964e4acf5122def6d880dda531f5288fcbc677ae3224c7c6800e288229200256208657e8031328e02720021200822468022c48023770833e28202cc8d737c88235a03a2890822480e63a70820bd8801120811849967461023ff83b36608335a8832758834570023d3484fe4760843b908337b08336b8031ab81552bd9596c71519b0cd0bd076edd065c9ca001c100157cc810e3082363d7663288653f0856330691f4e854f68835b17fc62e885cea485f99e755f58700827055240058dee855bf8055bf88450d87560f0e95d28052720e4acbe000b804b55a66cf034dfe575165c7ab6e13c7dc5fa95b5ea325c117134509723204210d83258667861c1a424575e4a12a55062c096cbf7945b8f035c72c842395c29241e1ba5d1798f1e4fa44ffc80c8128e7b84acc5cef8dfc8324e2aab73dceb68a56b630e001e97a548529d12c01df3d4001dd0483868823780832518812430022200082544d618ea6448501b419cd6d479f364cdfe91357066442993064b142c49b088e0406206060c20a2b87192c451213b9890c8f1c52bd4a93fa65c8562c48953274e43283ce0f9a10584900f666ca8d00104880b143064a0b0b402850b1b5a70a81064d4ae62be7c9dda95b518ad53b6e4a0994389983263c78a8105560c18af62c468cd421528078f35a44ef122c6cb5657547c4389a295ca8f870e1d3c6400310244070c1d78f67cf0c0010506969d52beece03303d00e942a855ae14205a3151e28b59cfa8151c515b2fc416387861225338e5e5800da7268d8a11730f05dbcb80306ca971f4780803874070f8a2f40a01cc181eace9f6f57ee3bc309101f3213074d5db903df9fd75f769a3a79f0e9fed293974fcf7d017efccf91270f40204001d839579d760728b75907453c71421269f0f1c61b590ca1c41234440147168e78624a217e68e44414451041030d6fb4a1d10c3b5448041127cc0002540f607081052010d1871f6a44f1841d75f090038b3dc8610a2983f851c7132158265d54905da058648c7dd0c1071e801082075366d0c1051a7440c4111cd0e0092fbb1053cc29aab8650c2d8fb09144136dd8810a5b6b6ae5522ec518330b24a7e482c92e7bd222d82cb6ecd28b30bbf862cc27812482c38c1524e6c18c18388599749779c6d37a3c85a61905c97196410516904a0154a89db6da66177c80810c1958c013058b7590810b4160c14483689cfeb080a9042e00d5719f0ec71c7ee88526dda7966dd65e07f0218b1e70dec1272d7dc4ed67dc74507920dc74c8190b9f75f931576e7efa2d1b40000b1c606075070c081d7110902045081988b08108331491441d708c30c41a6f4871ab710c50404213389440b0204fa4f1c4208720f1041634e82042059f79c6c00523109103166fecc189204cf450861b6d9491c16f9185ca5a66516530e30520e07014521db8404207b1d9acd89615945089315c3512c827a87cf24828a8a4c2c9136294f18931c69cf2c41d2ef1d28ba2d1403142254d68004830bf3462e631bd94d98b4bbef4d28b2da2ecc002085672b91a66f16dca64a8f339355da8a8c2a6aa693dfe85e00211493ca1460b4f30e2061b7fb811c71c83ccc1c61e8cf8c186186e48cc06092534a6c4171c2c40b012d132071f71c8267bddeb0c58b75c7dfa3d47dfb2993ac0010b8ca5471c6797a1b69e66f3d977dcccc9f5444179b75f679c0509c43baf03000840c0010514d07db9fb2d8b818a279440c10e50c0b106165a14a1c31255686142b9a1956aa5117024e1040d3b40e8849c8c002912900054a3e980c27ed28327e0200a6850820e6e108540c8c909384055533833b3d45ce001b221011370d082168cc00590c9000117c3945a79c00369b0431b18418853a4e2178ae2c52c48418a5d30820d7350c4298ca1a7ace94918c7289431de400246d4a1fe0377d885328ea12897ec8217c2f81a2f5c728a4788e10f7250c31f9260a9c1f144041af00009ca708229a801097e80a023a4300517b087018b51c21322f640452462108d20c2075c3082191c41093460820e3050011e34410d6838c208488084d095610d5f50422002718735b420074d20e00ed4e0493c1c01040ec8c0034e20830a7cea33f97180976616b807446008382095052ce0000b40c0012dd84009403083257ce103a64bcc10a4200622b03276a1894ae034838103453339e6810e77bc831efc58735bd8c44f000400a077ed4e3bc659c003489004436881414430c21280b084218ce0044e90021a8c001cccf0240325c8271088a083272cc109fe75700213b0308334bca1116bd0e5527000048551c00533784c6216d7042c604106168dcc072e40d125adca5916c8810814a348d670e009373042de3c90cb0a70a00548594326d9308847dc2214b30894293ee18b52e80009a0304634b22644610c8a14b330861d3a60074078400da120c6116dd18b5ca02214a408451b7480862f808004fdb3901ce640083ffc81108df8431bfc200736c8c10d6b88c320dac084193c8e0e6bd041093aa0010ad0400c29e04112ca80063534410c62604307482006353c810d48008122576301b3b2010d3918a412d8e0874180c0044ab0651abef0041d24610432804c08b2300741e0a1ae7678021a0491863588c1094ffe68c31cd6808684c8210d69380216fee004254084064e48031a80d0021284a0a8434883139af08124a0810741c0c10d98d0862a0c970d6d68031aa21005350ce102d9a54112921004ef24abbee9e22603e0559cdbe5c79bb803000002404edbe9aebec9218121e090812160a1106f70021cb0708214d0000e6f008205a67319cd5480065818421288905e38e84fc23978031640948625e020072718c1051c50040b9c80061d280109a63b839d658001a729dc813053994b59d303afdd010906fb000b8c2005501181073486591d34f00b81a0041a16c188539c8216b4d8c52932410a54cc62168b6a0633b2b616adf46216b428452070c0084a7ca2cba800fec65051218a47dca10997a21505b6841a12f0c00317a0c117484403bc518906bc45820758808111b401126848c20d6620061edc606433e0b4074a308249c6770d80f04322328904178801096500441b54db5d10d0400a6b80f4097860420f8c80064f70c345230b840fe4c00491c18187d740840bb42036cc3672133436032059040d4868c214049b01168c60041ff0f66922ad8424c840096a98181276d00227b841061de8750e5c708427d0a0932d3061076a84c00321a73a073a8003d03520dbe16e7af70df07fb2d3df78d1d7015f3ac1c63ce0074708a20f5a9801119a90052ca840b01e44256666a0821ae3c0032d48021c9a3003198c20095168c2fe748549022340a8116fd852de6a358320ccc003a89acce052639aa574e0067c8b8a625cd002223ce1ddb74aca696c59a5270c2135341004231e11883fd88218bd80040d8e1005b3d260ac8028465289288a3684622bbeb0052a1a6187b034cd50a998c52738a10616ac47328cf1600790a0042410a1128a1804107ca6811b2821076ef80323146107398c02159500041a1a718739b8810824d0014e1b41094824420e9078c42328f108485082138048430b7c368316f0fd02b832822375e38229d0018094a581e065f08440b841093d488218f0820316b460816888967a9423194b1127036278421daad002b19621071d649666c25f811995800944180113fede90049f4f8595a111090e5eab99d9a5c783fb2510edcc19f0ec38475edbb99ec2258bf6f8477678d81034c02b21c7032c588461011030c10990401164171160411f08c28749010dbcd8fb78000ecc4012b0961a2401131801898cc0ad384ba9ecc0825c000e34c16969800b7c98068c80080c07a6504b4f60c007740ca6b04606d85b0b79802081c008751b086440c86009a95c40ce00422a988229ccc25b70c527c8407ca9022360821ac8c1277c19dc3c4222fcc129ec414bf0422eec022994c2293c4d619c0226e4c813e400944c9f226dc920cc42eb9d0228c0d064c90125a8822880c22734821c409e1c004223600229d002292842ea3582232802fe28e8d0eaa95e2980422810092880022a34d51fe0c0ab1c45d83dc113989c0e7c807321c111cc000d8c80070401bd81800c5245078440ecf14407e4008c5c8a65c458f22cc767449668395a15841f7f6893726816953cc10660c67bc4ceee74400460c1147c000450c77350c073f89f811c87ee2040806cc7bbb88b39f9d702f8530988801100d662e880136041849d000648c11330c12791ccc861411318c1ccc9401ac0411f64411a689c139c8007305811e4801188800ce040153c011cbc180db8011c7c9e3acd80060c810e78d2423d81130cc10cac4664b0ca7b7c46e0684048f11305c8400ef4400e44590be8cd0ce00d0911e162449a22f95c6988fe0012fc412870c22994022d884221b800bb8141213c410da4011b24422a9c022988d71dfcc11750c2a10843d6c04d16fd052a8042204c010fcc9e052446d141069760412f482529400220fc0126d419a2f0c2279ec22c804222f841e47d022674d929b4d92cb4992d78992dd4c52778551bb60928146615d9822d7cc10ed4002e769229f25ade308c0b28c6acb54015e80066614009408a06688074588018e840b84c86039c8648494b2a61811c3002232c82215a5330ce8ec290c010a8818d45c1092c8ba75847a8444121b4811c70021a0023878d1f0d60d674dc1774bacb73a44b7714087e4040a06d491160010a68008b388008980005e800106cc08dfe61c009781ecc78c0b59d0004b4940a4041e96864de70c009945cb44080ce640120b5001e9d8012348114000d0e24411b10010e4c521d100212248114f8960b28811bd8c15ab5c1b4359bb2b046d078c0a72d46669a9ccf004dde60406288002abdc6472861ad00822150ded6cd0123ec0112200116e400127c006ee551d6cd41071ca21dc0cda218432f00c32d7885d3685d1b20012c8e80647009947c000bd4c115b919607c59a1d882dccc02e4cdc22930021d3481e8918228fc5415ed425dd0c52e3c822d7c021b348225d49926dae52d70292dd80230308220b5c00ec8400b71e451e04b8731010910e11ad0db0cdc4c0584146c88401330811c88c1fe07cc0a97808afdacc76744811fd8c11f38821dccc10394c7a5b49274bc012744810eb49c09544bb128cc120cc21f044225c4416614077050c094748c73d866743a93b960137d21002f35c00eeccbac54800658881178c4104c810ab88a62a0910b7cc0090cc144b1522a45801d69000478200744d609d8e882644013600c0d54c0a142054a3e40110cc1107cc0e7b900af05cd930c416686c007049c6fc0867b440a0f865410bac01324c11048260d6c000f1ca1cfac012f4686a5640aaa90801fa4412098d923d8815ce1001330810820452775021aece60db84120b0012ac08d31b8853068450e7d826c2ac21fac4112d04062209b957c9bc818833200fe035c14c32e785916cd422dd802254442272cc21cf0001a00a528c4e527d8421699a92f140325584299fd412260991b9c02259c029981190d64862fc98cab6cdf1700d208949c4d7dc00d1050add1800b04da08b0c06b71802025c11b88c16360814b5540037c2a81ed070dec412000c223300203e5400eec585328cb4a5180080c0108e4c5aa7d806738c008a824262d422704421060c07aa013c16107ee4ce7aff6d7bc4c27bd6c8b056c000770408659809874801148e413a880090e011438c10f34400690e7091801147040037c491518c11134c109040d11a4c11440c003984013248112944005b45c0b7c6a0be99206cc00095887747c00cc3c800cfece8012e0800a208505a8260558007a3e411394801376c69380dc36c94734d98fb3648aa6246a08405e207c115cce421bf89ad54c1b0b88c12324e90c0c4119548e1ff0429dbad9d328c221a601168e0809388662a06064280608e4406116a695c28d56260d29c84122a4b0e83c0173595b1280822f1cca2cf04223a8c11a800231508212d88100ff0125348253f9c22fa002122c89c2c86cc80c410b84400e04416ee0d610440b6b38000690404869066a806605b4c0c49c0694b8200fec1bb6108142a8c2233802a47110e55a8b90bd8907ac860c34c18c5c066350c008e840bd49811fa0c114d000cc08a373e4177ef89fb60c48fffd1f75c64bb2ec07fe0abd8f0ac8ec069cd11b6bc0479840046cc006b640419d1f110cc1c5b1d1465581f9b600ec96400512013e464115a840308180411981b65ac0058840104c811ff0011618810be8800e344509e8c00ec46b590081068855b852c046a2c17325410b18010f74cc493a8f652cc0067cc1ac1ec886e9eb533c800bb8412330c29866dd27b00296b5411db48085bc25e9294228fcf02132010f64700e884128c8811d3842bc99100b6800663d491300ca2038012cba802a98e90d7d0dcef28215f1c22dc8c10818411058140b14d51af80124d4301bd0811fa442eaa9a928b440cf89417725ad2fd04220808222e8c060c9200dd48121052c082441296549085cfe801f1081a87c000fe8407a0ccf7e74400b30810b0cc117b0000d94c0bdb152e144066c3c812154c21f94425a11f58cca80f3848a729c80217c011368210d7cc0c676d0e03cc006e840102401ee8d9bc6c45bcde887ff89630114c8ffdd47af7287213300f72c00089c40476470f43e01149880ac58c0cf1401eba6670890001614c10590c01240800c0c41604d2016a44112dc62e308e81ba40160ed8f0e5080c9d1800c944009f40fc7ccc003200007e8800a3c23e8664006f886ed69000fec488332d2099ca853d4d4acd0cac778cc6a72066ab4476a6446d0448168a1422e44015cc2a129a8422e3c81d2cd0012a05e28a40223c8411bb0c117384220fe94456db44120084213a441e308d01198440e54c009b0a0234c2223a40261a0416ecd8111ac0dd79a82a1800223048211a8d608184e4f6840f3e5000d00c21a581689c4de07721b1218a76f6d59972ec21d987753c4880890406a2f000a90001bb801cc484a0b8804e5bad2fa42c0b07840082992974cc6b651c96af886056cc4170c4c13589609e080ce2081923c2ff440802040c1300a764dd38a135e8b7c60460788c0ac10dc2b0d32810888b000e039daf57e790f3742c009f8c009a4d2066c400434c0c3b82e04bca7f376c97488e3013440087ceb1a548130150110e880f084401fefd20370800c7cdeb021e403888008a00a68e7c01ac8c00c38c1fe0c58c0698840c162064222010ee0400d1093287f40273bc1f9ada24df9adaaaa761178c06758400f506e0584c006a00a5440c00c5002200c8270c9667aa39e20fcc1224841192cc21194801e930225b4811adcc11ed8011bac811b38921a0cae1da8d7251d012024621ad43481839e5e31822df84119d80142c9f4c5b41a0f94c11378570fb87220388106f4840e34816280750f98001cec088894c11424c228500227e9c01744411ae4c0baa14113acc11f44812bea801b1c2d08f4c4f09c4020d08075dccc0e78ee86e5474fe40caef00011b8620bb54009780010dcc0885f800c1001088c7610d21a0d64f05e8f500b7c3c67272409d45ff36886dfcefe8ef420cff084c6745a0722e7d7ff2987816007feed0e02000802d0006936c07504083a41c08014000390001040c13c15411370000264400350400888c91294401564010d34418560ac845d06c066414f4c011a543c126cc0032081b2ad4116acd68ee500091cc12dbd52b4cc073f5b80294701e135ce0e5400093cc117a1407bac87c308484d2d4003d4d1b538c0062c821f44c11e8c55212c650734c122b8c11704810e90001164c00700c11bd0000ebc50842fad224c21240cc213743218c1c143f80125ecc0b318ab93b6c014204127256e12f4800bb080a635c14eeb801828c14c06c11af4402b26684d4a06648487ecf20008006ca2295dde340e13fef88c293d80af1dc1a95e571284002da63c52f4da13484110281f0fd0c0a759881bc8951fecc1a909c21a18a70fb5c1f5f18011c455220602400c4aa36304850b2180547050412185050e183078b82022030a0f1c505c806041478e1c171c40f071e4488a070e74f4584024ca922f456edc58720100000216e830a26388112c5848804042c3c14888141050a0c060c38e0f434e88d071a00082044a45881852e649860d2d2a3c60702143091a1638903801828358860f3274981125898e8538de1899c1e0c1870e1b3a5c40d10203030d14308068f2e402850a4b3db840b28688830b479820c901b163448a7c315c7860418383070b38b818b1e3090f0a1efe3424b060a20308134dec8c2831a242861c207238a2f4a5458b286a8ed429a3444d2046473c5cb820a38998273972a40944a44d9b3482d4204133a545e00a3754bb51a3c4c5871c6890284192a44d99356ee60072d306cf1e418a120944913f14b1e30f4616a18412461869440e40ec98a30e35d668430c31dc700310fdfc60a49241e45043bd07e5b00342390401c4b940f668830d35d06022071a8600238d288eb04f091e8678228a35f62004c541fc6083061168a0a183b01e683223068e920801cf3c1389238924524923064cbab22294c004d3a32b113880cb915ada88803503102000965c72408490527a49840d3220018b81d2a8a203071c70c184fe0492c2a0000e86c84185224ef08c238c286a8001083c98620a2268d0a0020d2c4800021aa4f8c18207649822041c1ea020501e24bdd234d33e30c18940fc10e40d1318608884103cc0410d2c6880402c2e1fc2724b065640a392220c8a6e840b2a182103072c68c103081e8bce01263ef1a185102e00818728d0c0e18326d448a4103fda78a38d35e4a8304337ec60a34439e6704391461479e4114a1e69e4914f28010514481e0185113bee68518e3f00f9c38f410e5c9091052101b89144484c3140451a4c449102bf88820e34acbbc30d362a6c430d36f6d8838d36e48843bb452496f98932d078828d34be40a38d4012b1e3dd3290e84106177290e1fe861e63cc218af99028c3092478f853ac549b8cc84ccf16580a2492402276a39652429b25040810a9aa3ac33469ed324342b3aa926c729380370be89ba5b04d9369a4becbf472530d22c8005a0728b04004066648c2893e94384b030f4ea0a102064050220917769521048722d8203ace81b02023073480b283879e548971402948c2761a8840030d233e682189207230e40818d5f8a2c1359870e169ecda70c2893476f882a80a3c9896718c3600e1af19a648a105eefa0064904a02712310880704c4df05137184e84136fce30f39daf8439007896604125266a1e51453fc370b5bd00215b4a0452af8774056808212fd1a052944410a098a821214f4d7fe2310f6094c00ec118ca815c81831880031e20f734803cd1231073494e10b340bc41c8226879ef1006b39e0c10e5ae0021ee400074810030fd220872848413e3b6ac10c9ad01e121c91042598010da750b924f4800920f0cb123b200213d040061dc0001074d002110ccb58c58add4b22f2912c8d0925336963e1ba24a505bc2d4c3141800a72208513c08d220e4840044e53b69240a9021bb0c0481850160b5000088e69c1061070822c90c0031500c1149ab001116cca2015a0c806baa8010d906549b40b01114e00110440200538208427bea084c358000318404c0f5da0843698100d69f083f30a71be97a5c10947988f128680042cb42049394c520efe90e04334ccc17e82284423f6200714dd210d6b88c217e83507780542458c00c527fc250a4e600214a120c52842f1097752629da118050521c1884f44f014b540852d7a018c63f4cf16bba0852f66b18b5394e29d1134c5291a81cf8ba1f313f9f497fe20a108a2fda17e1cb34322f6e008460808628090438b9e808687f9c10f7368c317e887864138480e8ad8032314c10631d8219b277599eed830845dfae109b61b8213d000042e9aa0083488021182800422d480884f68c30c40408498d5e10b41d41dba7230821c9840031018810b4e50021724c1985ecc95432a2702839cc0054e5883094e73263095a90073b4d2dc104936936c400522d8c1e34cfea3aa4951200221b0c009d0b084199040052110c112325001b328212c2a7800069e7082089ce0043b20ed129630852328610a4885831392c0843528a10a70e0191cd0a0863494210d69e8431decd08842d4410c69788213dae00716d921108330c4babab386deca6f666a70821a14c1073130410929fdc213beb00635acc7876b78831dd61034f07eb34425fd4320ee67878719ed4110cb98bff6e9ce53846283174c1807fd9508402857102ed2ad360f248a4f948216b7e0452f7a610b090b9016b338c52924d83f52a013120252102532ca310127825f1093df1deeb58744fc2161b40045231836b246200c409568c41fee00a13d0042a3e85d031bd833fe0322fc080f7760981a5094304e708211730043128830032934a1093dcc4113bef086f4fa6185446841544230a39e3181096f60037d1601893fc4a13e6080c21188000422e080064868c226339081a550e00410a0d3d9dc4891bbcd0d25772b9c4bea56120e9ca00845c0810e6860da1928010b6f78731140c0130f9400084d1dc211a0b20320e480085878c2137e92842854c13e6eb84f1aec508736c0210a5830442008d1083648210dee6a83201851084638229f7b30841c983085e4ba4b10f3fbc31e0e144c3fb488673e3dd0205c842f35bc410da746c2718f00e9e2b4800537c0c1116780834439e1d46c1830bbe4c08699bda8db482d0392edb7e2fe00f9ab118cb820272cf8085a9198c58a98c31c049188207e970d7360842844718a7372e29ce7449825409c888ca639a32a8e98f82216213f68f30e89203109470ab1440ce25f064bd8272c0e8946f0f861ce71c43a1ff1076163d45f8b90618c7820061af8920d5d6502788920741e2841b6f859c31aece006342421074c38c2ced090a42100e10877f240070c028211ec0a041ef0c00e5c2d862162a1093be8210e54b925347d64262f798946ea2e12bd8ead70a425810e4e3084258456074f68ea9b87a083346841094de84316b000ea2434a10a5878de6f09e1873eccfa0d8d7084700b61885e2f8609f796f71bd280047bbb61117b506e2002510953fe88f40d7370843a4dc109cf5342a48d108472fdcd08157542118bf0f7bf1b118842e8f60b4950a985981e08a3a5813bf31b0427f620dd3f0c82fbe7fb837c4d643f3748ec0fbb67104e1bc1098235e8fc0403050541dca07bfe6b9f1157c52e72318b59f0e2c1bdd8852f0010188ae11804501806101804ca1784e1187ca117189017f46fbf42a1c25281161e8a164401155481603e01e60c68176e01c34e81804e01154881a14281e2206e142841fad4203f4046fa820bc4fe85f8568441a40ff6184110d840100261110221de5e460dec401032a49b7ee5c700619d1ca112162198e4000798c00f8ec004cc8e2990c0023ee3b300a501bea64e38a28de0fea624f4ae70e8c46da8e20008a04cd0706d8c6009b4000eea400bea801008e1100c21f3cc6c0998000bb4a0096a0d0bb2000dfa8010fae0b57ea20acccb10926fc93a411538e1113a61145e61165821154c611446411554e117303114542115540115f48f1752c1156c2115fe47144201805231a1120a007701ff140a82286e167c41a1402111fee5113250152cac14de8f1328a114502115208c177cc1144301123e0f1238e1a1f8e714140c1332c61214ac8276c1162030157241c2264c8066211548b17f12aa16549116945119fd4fff76a1171af01892b1178ac1178aa11804b000d9d116128aff76e11866311772f1c1fc711bf52f157661ff12921ffef9f11d139280b691161212802ecc044f01e658b1142eecc24ce104370c831644e510247ff4c75f14c11144a6df0281d8002111fc000fe2e008a0a90ddc800694e0479420044ac0089e600ab0000dc8e5e998200aa6e009904055c664ee040b8ea6e4cffc2a4c3ca26e10cd6dce1001dea6000c21163cc11362c1102aa1133c61154c01134de1155461143ea1133a011338412c3d412d4d411558c1144c611546412c43819e38211452a12f5f61167f611677e1177e811708f317120a30ff6f190733177e21177681ff7841a17241200daa02213321f52f1724921f7b0102f54f80f0cf1780a1016781144610c34401322d0c81226e0443f332c7111550c1fe14f6093547908042b31ff98f3127531c0bea33473319dd31160190208f01347981019393017da1a01272167961807873372b8ca07ed380f4afc2f8511c2bac164e411c670115fa49f78ccfdf408114dc098236ac03150c9d2e6a1112413e2101124c2e11fc4d2d3b10133a68119ef0d9e44762d4200a4e8d2b9c2068eca545d0c00c7ac90f2ae40966000930a001d48822968803fea008f66a6dc0044ee8280da9c26f3a740d43d46ffa264451020f63412d3bc11026811256412c57811355611538e12d379115ce52155c41156c132c39e1f338a11342412d1fe114fa52150aaa1223731b1d73300313307d810109931886a11e73511524121e7de117eefef1188e011cffef1eeb110219b232f58f1f232e162d8c16186a14ac319e1861df4c0115041300fb273a01b001bb144d6133ff04c816beb17f9691ff128a21b9912027d320fd4f32a79320ff31393f93206dc1c17ae1162e7580fc8780f212c4f6c5dfdccf14d2941bc79316a0f31b0daa3bfb67045351143a92144db02333414114ecfd44213d2b2a127d9113e6f31130813f7d757df2c9df288ef710e4430081105204101a449b00a1e1e020b942640d4e4d096a808be6e3030e8050cec625e0a425aa82000a405c4df44459c243fba66d2020024e945cd3952afae0103a211686344663d4143ce1573b6115d6725f3ba11444512c3b6148e9721369d415fe44b1465b911553e117feb214ce722c21b34b0b733077a14777e115963115007617860118582115a5b33027b32fffaf3719931a3f419f04ec0fd0c009c40085fcc5191b21a2428111821412e4692f178413c23318058ee5ee8b123e418260b39f261350310c35b9334f0dd5c264911bf7b41816303297714ae55119a9561826731901ca312df0c2206e3b5d13c30008154aa115aff3804690a2e48914605582de16e2962c635cf523f91340004486e20d3f46c69cd669d83a4810ecc00e2e640da4a00eb18020ca030448e00968600666440666a0f0d2400da06d0fbcac089cc06a9a00084ca00fd3c00a88200420e03028c22a5d820130202316c0964040fe8cd8900dc775444bc700088d8f320225e2150f0de17709e1770ba10f9a200980c0ef04850800510ae0c00d82172cf935463bc1113c614767f1157221155ea1641192300713007f8162031315a1333273411506d21e0792172a5119673117e1174b0bd3166cf39e688115d0b62f493117c7114ee5a983dac00ee0c70f04662f3b281410d814ece914b47417547137dd7116098a6d2df018433017205082ddb1a0fc51328fd30185c118ee51840150184a93348f53c21e4ca158d15403f53ac3f3642313344911ff38d8ff44a1144c61245fa87ee2e0e0e6e07c1e611044449b602f10d880ccd0a0e1d8c00c1a2e0d9240b73005776860dc5a602886420702fea3036ea0ec706004c4ce03b41877a405033ac02c40e0023ec0311e83012c004a3802501c600346a0033ac00330820c07c76eceb544d3a66d0e2d44c3f044fdb00f0ca1133461123ce11558a115f8d5110e79153c81132681453b8110e4b0562a792c55e1155e812e3919813b011238594721f32f73e12fbb9418a21461555115efcf140ab34bbf97344bf33151619605f31472c115c671800a881c75f8c2c611816b531470161402a10dd000103a61659b8d1180d51110981246812e1fc1a462cfdffe29300df3376318340f12e68075588d6f6074586b8b811d95b162b954014fb801dd571953781b3fb3a02c0cff6e213a17753c490180c6911a412c9ffe10a6604821127b9668fd456d67e166db4009c4001008f76a5c40713a20054e600470000848c02066657ef6c347e0000966e00128544eda82023e40039c443a3460039240492aa003702007ca400c5c60032a80035aa0045060913240044e000a80c0074cc00554a00454e00474800848a03442e25c4fd44a50945c51c2aae748aa0f412bed354659c12c57a1155741143421f47e1713d452107e15134241140636ac3d61133151154441a4c6d2141ec11430c11152211406b33481e13033b64bbbf4a14ca1a0e2297c4f56b167f114782114c7744f5b938163d18153a17f5801c3cea94803a10e40468484832e2b81132e31034761e24281975121141ec1fe676f36a3460a6130a883446660f84715d5732347e1112a2182f68f63637151fd914fef51018f411816907f11ca043be88230e1134ca11434523b135215189822f16f0361eec26c4161ee60bc5ac83928814808c1c8c003098ea805aa200e94ab0c8872065c00032ae00482800320024a64c22218e2552ca0037ae70448e0023a80963a600436cd7438c0075460030065014e80c1a1c4223040048a00d472c0f9da200e9e208c6820041462effa8a0d0bad70a41a444fd42a4b1c90c1355ec1f22dc1d2926314130ca12d53c12bd5f2903f412c0dc190fba00f0ae12b3bc139d4cf2f5359227f41813f8163717614504147c7721cf14f87f952a14e61172efef1177474308be1145861173a212107f017f82b14de9930fd718334b015410113660e42d2400a1cce11fc2062ece7242fc8f702819ede0f81378c82604e54132a3067a1171eb8211d58220b521c21739e51167c131202d5794ae191ff267d31a713d1731149cf3433c7b31466a114022612474a10fc855725e6a560560ac20b0f9860066e800572c0095cea086ae0099ae0085c8409bec0097882098ca0f9ba4b0ab0433e22e7085aa031c282715a77012c20048c20094a00302a402b686003c48222fec82b0083053c40bee59bd9b510015ee54cf6b8d0a85a6e3ab4d058624dd4b06da6baddd3505c97000e0c212c25795f67945fd5721530410ba0000afea24010f210134ca113dec0d6faa0080ca11538c1109640105e6115a0600df4a9e015b8141c212e51e12d93fc121338156ca11458c111464114a9991154c19e1028f77861b5bd1c14010621e3a0104c01e20435151f8a1ae992ae1f2114da09214d11a21a2114363833f3ef811f5d4f23133a27aca0a053807e41c234b831dfb1a04856823bf838af164bf7744f81c1840170529511a0d6f73895111850763adfb701a3d4165021879bf47e4df09f32719f28c17e9c63101824f904780d7840ddd6400c5ac004e4ca8e37c0048ee0c7c4a0073ec0025ca00896e0074000042e6203842505b80e3e72f204880009c0002c7a83064ea0023020035a80f22d80fe046ca9223e634ab8240dc3d024e2064d5c420d3be234dc46aaaff25b51220e673c92637414d6f277ad092886c01004610f420f0e92a0101c810f4e6006f8400b68446a0821e3e3d21138b11266bc417890c9d8722fdfcbf92f32c8658f2e992c0ad88013dc40cbc8c70904e11438410e18e1d8e8bf13746009a88f0904811252beb501a2d1a350ac18090c040ad3a35da21c515a342a942a509c4271fa246ad4ac54a240994a550a552853b366890a85aa64ca53a850993a35cb16af5dbb78f5f2e52bd72955a74e912a15ca23ad92bb6ee20486d317afa44c95e2b4491367af5db3a8ee72faf4d6ac96a24e823a45cb142d52a21e952af5e8d3275089e4fe00fa3367cea2478c12313aab2aefa73f4f9c947172e44b9b408bfc04e18124c70e1c334a9c20714203850611162c886081438819271ca3409141448915243470c0a183040507962d2338500041eb0bac193070609b010206960f2c38007c81ecd708641f780d1b780102c98bbf2eb01cba74e0d41140efa365d2a43e8656a15ad5297c78438508b18193b7952b58bf58790ac409ce122345521079f386908814764cb132c589299dac0184112044d1061a82fc51851b6c8860881c82b091441a6cd010c511123661c410349c40c40e6880d0c41a4d3cf1852075fce0c6641b38e2c81a7b38f247217320b1471a8cf8b1461b6c3ca1c30c3430410316204cfe81061b8f40f24728a5a4120a2681ecf147208224e2c71e8f04920825a2b4440b2d3d6d05d32ca4d842149a54f5321555b7f8a2a64dbcc4b9cb2f33cd32d552beb0b9d431c01cb3e79ebd0083942f48d9044c2f36d9a2664c25313ae75030d1340b2da1a855ca276285120a29a690f508271991f209238c04f2c71e6eb85186144aac9146136aa8d106206b3c61040b1ec8d00208467c71c71a821802c81e6f3cd1461d5f38d1c71e6a3401441586ecf1c413397450c105143ce040050e7cfbed6dbc2df0006fbbe1769c65b709d71b71b151770073c7c10b9bbbca15405d74041c124b27e079b24a2aadacb24a775898e086219cac8289219d98f28a2a95fe7452081c7e1062880a1ae8c0010d24ac31491d4590d0c72a8518928620409090181b8448a1431372e43804124f1c01c21051283103147b1c7c810e4c28510209230cd1810311ecb0c31b289050dc107bd43184b0800012c50327b8d082148da0a106233a9c0085113244e1862068a32147288f34228a2986fc616a288370920a28668662cb54b7ec728b2d34a1f94b4db9e432f82934b149132a34456593a033e5e20ba084166ae831c56cceb930be1483792ebf08becb5829295a524cbc3c5ad229a67435d229a93ce22549b6d082ca28a050f249a76351d409248ab471c41b7b04d208248c50f2c820556619881c7f38e2071b6808c1041034d0904308fed85aa0c1051754b0ab061574e041051450303e05158c303eb6db967b9bf8147470030d3ab4d0020d2d38e13f16740003e7fb96ba78332e06f84681e9d20d727e731ce8dccb3ad021c01262d1872564a1137de80327aa70023884073f7d2084bf54b18abc4804167590821188a0826365300333e860112ca083243481435800820e32500125d0c0054940030eb2b0841c3c41093a38020e3e74020f78000947c0c2104e600110e4c0434708419144208321c8e6370ca0c00cd070042224810539585f0910408314e0c00349380104d86581211c2c0369784223da300441a802134478821c06c1883594ea118fa0c5284c01c953744211a11805a900f18951fe0cc44ca590c92e6492945df4c42ba2e0042846418933f94218c530c6e62ab73963180350816aca9f126594ca294570aa5b655156b7a7a5cc0427949a052f4ef1884424e20e7368831ce6529740d025541419854b3e410a4e24620e826084f2e4e08636b4610d47d8810ea250073460c10d6b90431a7000020f60c0031d18c10dfa97863644010dec74a61c0a11883bc801557f58431242e0010d40c05cf342ce186533ae7325b038c2194ebd62832f7cd5ab38b0c1977308501c2360010a5238c41ed660c28679c2138ec8201a3ac18942686212ab784527d820374174c210aee8840938d0020e28a11358c8421f52630423c001074d48020e90a083218cfe8008a829010874b0831ce4a00d4d9d02083230441080800834c041093c40010b74e0042748c21c4ec01c040440820b48c06b1e0081e11460011df8000728c0510822600316b0000d2c2002d814810d9310c30e9e70873610210348080523a6f7895364024fb6e0042496428a390853707f5004297ec90b9b28ae2946b909528a91949bd42926a760542e6671b863684e19b22c869f0425a85fb089509ebb89a27a81bb4ff5042ca01085eb3ed1884400a20e8d6804281ca108ba75e411a0e05477b329dd99b9816e95300421dc1005a61961074a50c20e68b00336ccc10d6240c20e8eb0064360425495fcc423c8438940bc010d8999023b0131083bf8e1fe647e1004c6aa24883688810622e800185ba001045aa0a21c3d0e729a132f0268f439115c80bc3a4c00e6144002072881053ca085299c000d6f90c3213066883a14550a5858421ae45384f014a20f83788521aa5004424cc103452a42134a5004673ae2100ea0c00d3c60840e34c004753882141e50ae0d504d0717b0c0642a50810cb0b5044f80c30c7488031cb4e004291001022a00e6d51c0037ea4a0e7540ca1a0f03a7384064406c16a081061400032578800c4470be1958a0022608452e0c2186de31e22abfa04b2354e12c4eece2b4b380444ac4b4119f54457048b98aa13cb794cd0d8a5049d1d3e680218c44adb2b894aa094e72cd2645a5f6b6feab1b8ae0105715a580a526684a9d4f5c7712539442146bf9d44838d5154e306249a6d4362748c1c8477402106858031ec4d08329f0c00319b8003d6990041ea0210d34b8013c4fa00329e041104ee88b1ba650060263a10c7e90831dd650ee232081c66bf8c2177810042408517f327081b7cc4551e1d0cb39839e9747e7951c7cc90b052f566a1d0cc187432c81064bd0c106340005ee14a10555c0c213d8401e4c9814927c28821a2ed60957f8e1c78548431ca63c041510e101eea3c11ad860841490400758808311e680051a544003298040d01c731ab5426003197001041c900134b03507510881030afb000c8c7139217f4d00f64c1cd82c408222fe664e6fb6dc04df14e0697bc7822926cb04469ce00fa53005208af8862530c116a458c42c8a216a63f8426f9c18456d8fa21463562a159000852d72c10b5cbf9673aedc9c308e210c5632a550c53d6eb3658b389bc47e17b9bf1d9a58027c52349714a89876a7c8422abad821108a50c4ee0201083688e10e80c043381b61aa4e008f13305a0420e8dd8319b840072aa0411adc9006343c410a6d50c31ad690852888610d524841129055883decc10f4808c10d74a004ddc36e34f0044cf01741d002ded3012640031a40025540041d3069e2d31b10042fadd1511c472fefa2510410000e50058480054c8005dcf1066dc52c1552754b507559500755d004fe3ef6047ce0094b806f3d960527b000273002278003448005456301537704ff660126700219d08337100243600434500775260345400345a3014a20087c80031a40044e10054f5856ea831b0f400411c0001b40020d202f224677f22241d0810029161b29661dbee12d1ea51b01e08615100568c7000f20027230046e900a3280063fc0008d100a683008bb6059bb600aa8500c90400a33610bc0e07ab8065bc0700ba7d01160d1378ad214b0853a95f2088a804d31710bbcb039c4204bc2d00bb7b311c6a413946017d8d413d9e4299f541280d008a4d00876f007ca632a3952066ca00865c0044c90033a200333900334d004786007d448088480078070fe0776400877e0044ad06fdf580685102a9d604d9e4009d5550995300a9c60077fa10633a3064c20058f50099e30080685041e52055fb08c44500447a00340d00120400352402b5180011df08468c51a1dd0022e40023cd001605604357001dcf22dbe012f79c7512336682aa0056db6534b400236e704abc01d37b50486800553800227d0044ea80240000557d4011a70001780021e10244fb00144a0055150021910652750013210022270224f900216860122e07458a01868c64427006f6c86020740017f585815705621400459b60351800327e0942570042a400121f68627961c71150077f71b01d0001db000166000c711001d106229362fb8c10078fe366f4d000114b0010f4003282018a0d0067130129ce006b3505b555115af450cc5e05abef0494b614c48817ac6441533d1120c212a82630bfea58da2f00794900a5b810ab6f029a49708ac8026c2833b8a331494f90980c008b41012b7b515985026a7500acb253ba8400a63f212fe411615510981b06d8fb0088dc0099940187e800641205645401f53600458253459b2079f900999200701f70434400421b090ded200ab210241a00416225f605306555005cb080448a91bdb72980c700119560009201c164040bc012f19f51a22061b7d271dd3a10227f0002690044b70633350071954022e600146a0021080025010054ea0033fa4034590038da022fe75d0023a4004273004696004520007a9710220e00493a00348102238905f86d03d3ad0064ed0046f30052270011c00021f30036e60044c5005dbd201499004430083193067553004fde30445700124e00217d0015d880624e0016a258181051cb6711c20e551c201012e30028af6a015141d1d6568b081010e50025de7010b800104d000b6e1066f900483200894d04c80b00bc2f00bb7f00b9cc90bc7106c84124baf874bc7955a450127c654798d500b7f130a94c01695801296e05f9d400a6c8007a6220a8c300876c14899120abd804c4d9008900029b6000a8c700abc900ac3ba9cd0460ac7da15a00816cab99ca61014d8240acb297c96e40903d1fe5de1c109da76358ca008d8176ed8c7ad72800451900675102c46d00344300346b00653f00458400880e008a0d0087340ae6ae004f6c5011f70033980034fe002a8c10152d7014dd006494001eac21a81f52e77c7401de750076001e6e4721f200545e01849008e6f50077ee0067d30044fd0852150052a500445209549905044d0095a20022ee001453004dad20152400426d00225f0530b801b08e0015a450104a806523067e0633e1d900124300424504516b00122a00654b0001b500662240227f0010e40026fe02051a0011ec05e7ee00747803e1dc03e3c8b66acd19686861c0560025d59000a9451f982017b671dc5f12e0cf0014973b70b700107fef0001780036560591d8006a65027a1020c936a0c98284baec44aac177bb04515ba699cb4b00789505a1ef27073b0074870024af00632f30772d00414104565d6048200097b40045f502d6060076f76b8dc450b77500a62920ab9500ad24309907011c4b86d94c029d2661171032a79016ea6f207696307cbe70774b32589807dc25317de4409a6c23c8bc0089890bd54f20789b00772d00676b0078a804878207f52f0043df20453200772205072702b25f05851400239e00458c006f15b0346402147c00337f0011f80011450c04470044940030ec00143b0011ed751b0e10001e0b33a60041ee0065a40021730037000074510424ba0022d3002191002fe92b7040e209674360884500775d0931a50025310225330554b50020c804347600828109520ac3108f01917b0b75b3b0517108360a50221bb060f50012200882620022f33360c50a827800433c0036a20085fd0083946446b70a237b02dba812d14e55050ec1c1df61cf85265cce1007bc54071ab40b7f1501585011700029fc00b4524074e000a48010c4b916bbda54bb0155ba56329ce53ba7fe0041f20039c50094a700347a00417fb048610047bdb2d25e03d4cd701d802011fb006832007398002ff1a0883e00703612a97c53bdb060a4ce20673903c89f0089fe27924010a8f207ccb49afdbd609d9db096a010a8ae00876e14d90608bcba34c9fa0fe08bfcb4894e059e2c67dd9ab08b6320762400220c003496004c3b2064a40041eba2d4e9b433b40a71d303e3dd00244300766a0031810b81f200245500665f00565700343c00416870110004467773ebc7176ee521c4088954ec0047d0007fc0bd159270325540526e00125f0851b40c51da3b53480d13af0064e200569300453c0064500561a40034530032020023870047e50055e4602f036034d3036b4f10029f0079d20083af0550fe0411bd07645490122000919520640900352c00116f087cf881b3f5007b7f2056290af0a7c045c93015ac00f612dd6fca00516702e80359773e9a0c331401e385719a840c291b005100002f0b62760086e500249fe7004904012373113be3515b3e00b99f939c5e0398272138f20289c5050ba0c241ec00134b41ab711771ab0017de00ffca00e64f704323002d148036ce0064ac0023f2803cc9809616d0d4a307d6d80040395063cb0034950056dc04eed2b086ea108def4091591bd8fd015c70a149ce236a6225d89b00881c0dc80c02572302bf0010a3005099900098bb00890406dc04b176ef0087f2008a83c50d03d2bd1fb0784a008ce62258150707bd04c8fa9605fc0b571900341e0832d9003093802348004fbb97517b094dd1293ec2602997102499aa485f58353000547700825386427100221c0044eb0677b26036e26055000424ca5031e800590801f405001fe1bc072f285317e000731992046400244506615a0a09621031cf0aea80b026556ca34802d18b0901d40023d000106da0089d9006737984fd5025f0009ec6d076d1070e384032e000861fd0a58900433004f03fa00a6c00ffd400513b0d9b06000bc51012de00006400c61bd040360a0e1820060cd0fb0a009756e052860211670027bb008f2c00ffbd00ffac00ffeb00ffa50a99cf939a5100f5f6e0bc510d6c6200abcf00833b0066ed30f5fbe042e700451300743503d8510d6abf00382ae0f00196734600657f3072a5b9643a304202ee8f6b006c910d6bd792a7600086e90089b2d0efc700a89d0dbb4030a9f4009c54eafd2a5087310bd77f0078070fe700747da8420ec905009b423108da0085cb26da1509c97f209b62c07baec4d8c104eda180830527d6970357e30088310053960074cd006af9e01697586cbe804682006555002a3cc3f4dd00393d6a4d8f200be717619906115cc0101b0015000010c183e1d50021000013a3009ad00050ea0022ee000c5c11a41f60abb400ccd800516c0632edb727db0032d4009d640084b50014050088540560e5da3653005329001e843c340300444e03e2b80042e40031b401c0f50024d7002335061232002bab100eb720108d0950870026e9004ce14077bb00135900681f004ca8e5e5aa50447508469a0044ff0076850062f2e0303440120c002eb0366b4514614fe10011470761020e30880760d00f810600167d70096e1028d31078e702981f029811007900009a78038b9b008a7c0268052a99420079098cf7e80034a10041da0b76bc00719100572b004484f04f94302622b066a840119b0c9cb722b4f20063c2005543405458406b23207ce0d7dcaaccc5e820ff8c00b8ab024a2a00a2f910a60310ba17012b8b816a0500980507082000873602a8c3408e234076960bedf9d08c238afca6707daf40777d0cacd14bf6ee1dc8290ed8a909eb25225e17b07d98d0973e08f692007f295066000104e8ee4203283c8131a399e30c9a1430d9b1610163ca040e14207192a7e6c28d080008d25451014e030c54d96141d8c64fed951c4040713298870e870820202040b166c98712283882133b070d0e1c4d01b2810182098e2b3c3932a271e60d0106489830b2e3e882851a44f9a252a981882a3a6c10613142616588093c2922d71a948c8b0a58e16439e966c3861614107080e2ce4909183c69a47901eed5205a8532f56a800bd9922a6511a25476e24e12145c9071720283c6030bac38d94532f8c6670e041850c86264d9262a183031d323aecc8306204963d6cf0902a43c9d6a94f8cecdc91138851a953b34e49c902290d2c6ccba61d2270089b2c6efa220469d268ce8e4048fc049a8326cda046893e9182a44811a060f7faed13e70fd87c5168e9c5965950896e165a0c34e594fe536831a514501e092514514c218514531244e51350401965c250461905150b3f4425944f58c106b947387984124a30e1a4124618718491401249649044e6f8a33e4504d9438e3dfef82310482071a410481a29440e34d890430e410091c38f3902012387320a1184860e3a10018513723841040c484ba0239cf82a2284052870e0001482a880010730b8e0810518b860092c2c0881060b20780081074a502102074230e28412e030a413430ec1628929fa38010735a050430d270a3102010a80a8030e1432a0c10719fa90a2040b6410c102394ba0218b219ea8a904378c48e1892c2ab860860a1280b5809c1e6882917df4e1839f7ef899e4157ef8c9a2fe058a48a360023804b9c295687d1105154648e1441037f4a99611392a79820d41e460e3134ea868a6da3704c9802a0f4090a2da67aed0859c2b12604027070cd0a2da6634a936990b9e30e403203418265a56e0e0c79a27fe208406468a28421146da60448d2344f86309004ae1e7877bf981e58a6a3b298d06310291e1046cf8f1a79652c8e125915372412e945ea2e587175a94c18616520c24e5134a88a9d61851f6e1679f1345098594c4e8f1591467aaa54514061b3c5b5d7e8cc9a48927be6823903fdeb8d71e3ada004411475ca444114e2849ac91451819e40f40f66ee491c513a9a4454a40f9e4c5501a09048d36f6b0630d267a58430df7d2c0fe43108fff90238d36feb0438eb91d31c40e3cd600418321907829873798283508143ac069a90356c86285000c4800881238e8eb00065edba008084810c1092b88407853c01ed080863d0e29018103eac822038a2c008b0434968060040a3850c28807324001810c6428e30d0c6490028bf9336082932a68a0010e98c30f18c08321d0e00319f08116b400052820020526e08319e2e08301b4458306f0011ff650883d64220e65c84115dce08745302117a54004263a610422d4817b6940831fac80822a58c10709a00003f0a4842f6cc0075630831544c0a7a514c0011598000a2620812258010d5340810e1a00010fa86111a150073f9ea18135b8e11176fef8841b9480860828010801d00216087080040460000390c01c0720c70128c088111804104ed0084e7ce2136a88432244218a4594410d9420452f80e10b5bd8c217d299c52d4e810a56f06217bd0806817a710c5ef0e216bb28502948310b525802121c7a112518918840248e119c680420dc30874f988244a8f0042300d1084300c20e6e48c31c3e3787452ce20f837884e100c1883fec61119090518d00b186402c22107e10431de4f0852738010d2d20811a8404883ba4210a7ec003167050062520010a7168030f9230073e14ce10978b42143af6850c6c000272a20013aa6002388ae00434f8420d64108005308f032b884003127080023000051648fec2131040000a286109167080037670021d78400450d800fd90c0be05a8800832c180514a7082193c81041ab0c0063870800a54c4010cb8010722301122b06109236880110851083b3cc10f4d3801139e000111348158853a58462dd09a0a20f10018055f0964a5031fa0010eeb79431a4c60813bac21084760831dd8d0863e90a00d25e8c3ac8052840390400708f0210332900627d080588c3a4b44ffe200f01d000124e080444612d403d0800620d0c10942b001364042091ce883289c0082071ce08d912d406b095000d54a76ac0530806c6183030804140538cbc009d4008965de619f7ff8db20dc000852687240b3f8452f7ee10b4eeea245b49845fe287de10b5e9c82140c32457547b90b5e607716b6001b2328f1094850c2459c40052a46910a5630a213a3f89b1ca4403af8b4a70a7f704493a06907402ce21132ead07dfc60073bec610d6bf8832208c91e3f6049107650c3148aa003128400084860021a9010820ed0000727e0000bc4a0061d40c00250a8428be790894cfca1096b18d21bbec084131ca0010038400002d08036bce25124c8011bb050040f5480062480c312387001150894028011810838508007f8c1105580020738a0812618a20f25d89e082ed05ba52a0002479082092452650b1c010b3220c21aaaf0be353c41063ac00112ec4c8288ac390553b0800726c1872188400171c2536afe93f597296cc001b8e5801c8890e40b24a10d4dd8c01e84c4092344811311200110022191053cc105023dd8521c20820e3060042468400522aada37c29601c8d2c947714200c2c609031aacc01569800614d87aace06b2d46612bdb65e704270b70000174c200c09c601023a0811ddad0821310c109699825791981091c852210be78e42e6e518a5d1c8318bd48052a40710a4a40a241457bee7579d10b5ed84293bbb0052a4411495b5022118f48448039918a542c0815a5582f284c41afbe8182138e68048e06b11e4604e90d7280e61f0c81237911690f6e884334a79989c404a2108018d21efaf6063b10a20d4a48d3027c000526b0a1e58538d23845fe50041f94611168384219c0f085328080031938800122a0001408a0013e960004cea25028a0a001723804107e50021d3c6a224c3855157430049f9880081da060270e31854260217e346802ac3b50011108228c6e60422854a1050ba8800da8789d1468d0873a90742a4640410020b0072c9c200520f0c00834c00411c061063dac80071c000117f02002b039d8031ee0000a6800031d20021ade80833ae0e109a1b00305e4d0080b54c1103ff02c642f20d9a142a003a4d1494461bb80024060d9183dc0ad0900ec0504c0d9046000125e3b561410218e1e3059002a80d1efbbb600d79f2d6c610bbe053480b5d876c00800ff064ee4200ab9d8c51fa2b0fe0334708313280455f0854d62056200865d70b75900858ecb905d408505c42e49ba2e5f38865db82e54b2055aa0055020055ab0855ca0ae5918af5920b8f1da8554b82454a0855f18854ee8044b68af5000854ef88446d883407084449812cd718e574a8473bb263440033978913ff08c37f0031a5b032c508336280446209d2941831a40292010822368022b4803384083275cb921680234688223c0300d38823ed8833888833938021af0890d40810d50342cd08224c8823aa88335d02c1f383211b0b505c000072882135800114803141001c552a9a6800023d8001af0832a20843ac8010b4000c832a92648034d9982c73b8428080149690229e8800cfe501e1220011928049db28021280426a00125488323a01dd2308123b03d0b68800c088208b08019e00007d000158b9e13e8002718a91438c3ce3a0142f83f19408219c80113f0012548001598820048009c48000b208d4df4a15f0b808cd209f46b2d7574b6d61a09f423001f8b470088477a8c470280801a688013300206d0802218959ce8314db4358a68807094011e6801d16881e4d1813a100448188662f085e732066530066328068d548666508668b8c88c2c068c34865e10855f008679030660388550381155a02e5bb80554101c4c7884e86010fa02043660b941109c4768a64fa890898b9c51f8042221243f708441708e66ea1b4cc0046d2a84fe2a68032cc8010f688229600226c8023670822740031af303411012477891661a8436500325f8c73a781f1d18010be0000f308125e8309770822460023ef8820a282913208c2668828858000348a0abab3a125081030002148083127080be2800883a9805a0012328020e780012e0030e28149890022370838d3a014d5881edc1010dd08135d001321b8236888004588013700235b0820cd080a1d2800cf0800e182b06b000d56aad0078233e912c0648021550a20c00ce07b8000e908124d08126c80013d88313488211d0813f20021d50011d20023838813740000888034358013d41032748ad0cd0890bc0896673acd6688db18aa8effba824924c78f4feb191f0b1fd1cce7814800010d079a44778240001385005f54fd73a80d3a4809df98010e00a0f28016e2bc23f600453a8c05ba08561b0c05b10054eb01053108552b8c08964376300865e1805502004243185f0c22e60109c152c055150051c3da4668a26463811e7a084533085471885a9a110b0e10411a50451208540e0844e6804189990668a10c379844ea004baf98338908323b103e5b0033f700339001d2869823200b036580325f8011a28010fc0812798091a2082b03bbd0c18022d8803298097692a0424210462bab132300431f8023450822110d000700013c0022c3001c5ea03432084a180800de83a0b28800888003c019f0d00020e58022dfe803c4a1d0a2c10815d83bd13308126a883379800cd638b148000b75800607b2dc3e2002768810a083602e0802018ad43c989b6d8802f28011c70833558810a6083221081f7c1012378821020c3ce42011468820fd0012888b216d8811270021d581337c082368b80e19cadebf39d8832c7d842001fcba8e0944c7b1480f5f3b104bdbeeb53c79150c7064596ea8b2c726c35c2b2880b983d0cf8808b600224280334d82741e8494ef0849fa4af4e304bb4f10546f8048b2c866310866200065e40c95e38855e20068d84a482030566658345e0844c3805037c0440484b1afb84991d2f5e9805486084662ad20e011152a804dd2b833918d15318054510d2fe52600448a09b3d6883221882321004462884c2f9594e08854a08842b01213b980337788340108445589c7c532fc619263f288418514a664d033548832a88833770821948022c78033418813e11012c68022448a04189823280d490b08225e88a2958813b94d422208126e08312280117280209a800298800293801a5c0b25dfb4d14d8012330020bd00149e41f08280226700213b0b607880023980229d83c242081b0c2556411015a7b3f785cbf204003112080389244dccc800fa800154801dc02012528032468823b80031598011d600442989f5d930027308204c8800ca8460d20cc0010010830c70fd8cf66f3310c6000f60dded77a2d8035c7e0b5fedf9180bfb6c08a3b212c3ca900dd040117f0802750023b50c1b365021e500337d0810e18811b18012248481db80117d88139a8033f6884417004aaa11c5038af5408a55ef08514f50562f0b75e00385620b80cb4c049a2855d98480261b712de855ce8850efc8504196160f8855960055b18854a88ab2950831ff9400631d150b090b4313c5200910539851036affea20453081118a98435300445b80341088428e03034d80324a03b2b28022148023130832730822680424210844278048de3043b68023178022ce04322308450e00437308444d280501d0245ad0343a8832f18022b70020000000198e49c783b1218b1c775833a381313008206308137fe6829077880aca281c98c80d70a8cfa4b008ac089926a8b0bd880e689a94ee883483b000e48834948028e483fe9cba815188207c022bf90be5ecbdf60430058eb012910017af98a25a03ec9c2d500009f3bb9be1488801e5bbf5cc335fbb535d81a4e7bfd4f7cd53eec7bad9ce0dfd2b80006f00012b0d011b80007488237d0011d608342108541b00354900301db05188c522af1833f50021cc88124400210b8011a60022560822860831df41b48e084aefd9a54e0c01344c10cd4a4ea229059189753a2c0893b055b4885130cb812dca428861aa6ed04a0f50327a0a6c4581053e804394884b5fd9b46f09a0ca937548862199411a3550271da833de003fe40f0833468823dc004575a044c80049adb8347e8af4160843df0034f930300331d3f6803ab5283392092f6f88234788236680327c892451884bdf90295a2543b9082e9150326e83b5ad900819ac30cb8a8cc8a800ec00458988412808237d88213d002e8c1a8f6d93a2c72009f728d0350800da08006d0b15eacd7747cbf92522d04709f7044001588021148821338bfc98200b618aaace2471c98021538290fa0361a400164a90016580322a84a0a682d0ec081d6b8b591c03ee194ac37d23ec95c3fc9dc66fb658beb6350d8ba3eacc08add24010af000eda680273023ceb35b3930841c40021af283b85a8390cbe2541805ac25855458615472c09f0cfe85a5bc83cd39a33a080429b5833f78918d8b9c05b18512beae151ef01386e15ed8850e1c610eec2e54220546686253fa0453eadaf96826a19c050a410525b505517884ac8e9a5480114ae88496acb70bd1250669c1a5fd0413778443d0044de8032fd15e1ab383993b1221098e3f2804457884686a382f65844c701146a8841b21048f710423590f296c041aa904579203457d82857082c4c28126700222482008400136308215f8014635800698323e28d53e2014813a813e10042c9881559d9513f00144690d152bdf3e7147632d802e67bf89688bb1e2553848832cc8446a23a92728822b7200389c811dd0818a828031d481cc50312798820c403411fef02324380156de81ca03ed8f3a50633400e6a6dfd772807c7d2dff8ceeeb7b80fd3c0056a7880a30681ec0dccbb5e01198028356831c50d45a9483707b033748826e69834748054ef8034e08c1400a8559b0405b7004a4a18f6722852cfd847d2a52960c0518311154908ee8584081b3c04d9ad17f4305a8f66946da057c6b844f40054b68d255bac950b0630ca1e2f60a6a1269495628da3c530470af03374003d0f98352102446885998c384267da5b2941060ea848de304a0fdc946e8b84400d44520999f95918c15425f4aeb1dd0ac19a081279082a62382cdaa82372804470804dede4725980222f8c72930453c88823abf923bc882f8a3001cd802fe09200007201303d0441438042d7800bea6b5d5626e7374bf039d578c025070943f1d538000b8899c80ad08d82103b8be15508b0dd0010e6000615994624c4deaa0020e28845598023898042c8083dac86c1dc3819b9808f84c80a3fa28715622060d5ed51ace370acee8164e78dcd7e8eec624b3800b40821d38f91cc8811bc0011ca83dbce49c24688236f0db2da7123b40124ab8034818f147c8a509f90447fa05d98f0c7bb304282d714b2005237daf5bc8e80504af12ec40e9e03f82e3c00459c0124c69523277734f851054c1132cc15b9885545005ed3238163710edd2fdb4c9621751043155031d6c04a876844ed03817078510a117f5d25e9328fe84aef51b4a000442b2bdb345b0816e8339c81c1d6f0eb09d128090d3864d9434668a78f0c08143850c24a0b41164088b060a164a1ce980c2099a3527501829626449080e2760a16cf60c9a356bd0a6c18cd9b225cc97d3a8c5c4392d5a4c6dd3aec1bc26745bb66cd3b6553bba8d68d16cd58a5e73da749ab66a4f894ebbcab4a954a7569f5a2d4acd29b5af45ab95cd160dec53a966db6e4b77966d5bab5b9d120d3baeebd7b2d5e47add5b94e838c166b97ab5eaf76ad3af56cb396e0ab96eb5718e2f978d66adec62ce68ab69ae662d1ab5966b15838ea659356bc59a47bf568d991a35d2a53fd3064d3bf7dac59f15731e3d1a34ecd137550ba7cdfafe36dae159d74ecbc67937dab161bd517b95f2d9339930ad7d9f367366789adf751a8d0954285568d95e469d6a34bd516d51975edb76ed69f4a5fe89fad7d4566dcd7556635cdd252054da64b354537b3135a0547935959b53e5585699537b59964d3a859583d738725583e15ee978e3215295b1988d602e86655538d940b6d45e8ed13697677e25e6d835d4ec075c6ed551a79c35cdacc6996db581260d5ad2f8450d94d54029656e577ad61b5a3f0ed99b976841475d5fca8169cd57da28175b73438e895636de5c568d37da25238b4adce1d99d9ed370175377e281275e4cd3d8a40d4f30d9e7135045fd84df7cfe45975435db448717850e36d820a644fed1e36058963eb55788000ef61fa634fee762511cc6e5df885dc9155739211a06593a90cdfad836857918a2541fcefa613ae9ec2a2b86909de84d39c01635ab8be520358e374891484d86654d0b276ae5c0498db6db8423e74d56a9c659b7b88186ee6de50e99d974d5fcc8eebb4212f995b6a8e1f89bbeb521d71a989d1d77da6fd6bdf9d4b9707a83dd38dac9924c9fcf68f3a7a0cf58d31d78125be3937a41adb71e554209555f7e212315a181a5de976aa999925a72ac1b36482062718d93a0c9457d48b3871f16a6cdb08585fa14b4afde7aacb2e8040bd9aa63f18a61af956138acd4bba623e788b74a4debaee5d003edae85653d0e861a6257228bfe638f832d5a08a3e65bd9fc56865d94dabe4d1d76da4e176534704e29a7b971ff553652087beb77d993a10519bfede28b6569ef865b96b49e79337989e114a61d2c2a35c3274c120f3a284d81f634a8a21ddb975f56d9e467eaa40102482a37fe498df3b00ddeda2aee59535de2b152573d8e39d7c8b56c88c32efba187235a5673cdab224fd4acc98b6de2d6cba233e2b2defcac70d163034f8fb0c3d203b6d457470da2b2d3b35f79dae598732cb785555e4d38e6084d369ca439c976e156c9ed375ca24db71026376918f06e775b9b9caaf10d0226ac7084f356c2ace224ab48cb8000646003bd110eb915c96f4e92d293a8631938492b6d09abdf093ffeb83058c8224f9f0b9d9f04151e1a6a8c631e638fa21ce4ba49214865ff21565c86b514f1e9ae663aa3cb6356c595ac09681c9582965c7ee6a2db5d9167271255f546143ff1c5a379710bd1f4b651b9e971f1445233c7cf90073f61210d784933073aaae6c6c98d0d6d29aadcc1bc15bf72fc4d6d721b6403bd250d04d66b37b679d294d876af022eb09065094759ca41c9c85d033bd2d88f5fbc51a57055703add9ad26e76833710864b6cca3220b7e2a6ac71a0032531dc130d6b59baf4c02453d3c046ea42f693a198ca3f937a1dec1ad4ba6515711bf0480712e1213ee04ded67c10a5ef5ce374d22220f796213d633e598454b260f9ae880c788d081fe34a499436c6c3447f9ae06ac0f416d5685694761d2c9ad338e281ec613de1a81173f3afe719fd3f360069525a7f5250c949009e541af04275cc9c894721a6126e5160d695cf4338fcc8d2639f38d1f918b1a944c8d480f69c1b59954a4543269b91e38d19576cb903f2225dfece78d6bcc2f9409831fb7e08792cd79ce96371c1450b21213d6b1ee97516914c84a05bba5d8455344dc06158157c465aa431d4884a6f84c44c6ab5d0d1df4501633eb78b56782154551b3d538ca07cd5bd5b18dc3122b2ce117d7b9960369e1a0473cb096b574b0d1ac264a8739bd6a3cc0be351ef130271b7f26b6b8a6b372b7ca6006678530cc59966d9fb1247628c937fece38e98386fb0c25317a378796d05b51821276cc71d38856509332428d3848e8c96e5dc3a4543a68262958b691aef0a07012c70783eb3ecb2290a0e3e88637ccf15387d9325045cda17a84020d90619775aad354cbf0921f687dd78dc85447558d988e659e37bd77e5aab0e4294ea9c59579e4239f58b9658d72d2a31def8c5a1dd979b575d223b08445873bccb9d8f82d161df4e499d4f20b36f3cdf567edd06f5fdbc14efdb223c1e64cc781d101d070007656ff44673a53b9c284a510591ebcec413b68b8d3628b82a825a094407851196b34825602d265577c59082e70c5367524058b0b0ee1aed2852bccac399a9c42e135399dcb354737c0e15c58fee0a99645fd4950b88c0da360d79751692a316357b2a578cd55453462a780875e78c043abf065e65ceb58be67e2198cf4106b9de3da4d66e2399b7766665fdd4a58760c58bf74944718fbba58767878cf58d36a80d3c9e174e817d3ecc86f3a181d0f79b0431ef23070863ddc0e44773a1e8a1e07a4e948d8266f785851f630fcd8c83d74b00343779396aee98742d72610802af520474ffb0d497ad2a1d8c9a4fd26b942b51129b677fb6071b955dc0f0eebc4e0ac1f8a57282d272fabc967ac9c820bc3dc0c76838df4ec46374ecd0e59ee891b5de67250a0415d9824253a3fc1e5c87ca81f4b99ca6b6526d6796986e6352f2bce525b263ab46a4ec69efe37ac817df8b2b20adf787475c0e2332b3d0c0d587ac0031d8a9daf5b2bfea105437ad374dcf0c309dbd74d435a58a3ee2ba3192b565c73381ee660873946ae5873b2c31d7dcd2bcc010b6b44ff13d6e0c86badedd7d3a737978f52a76007a93ec8c27936d9c9f656690338c8bd59dd1bc79613674f8cee67db14c97ca4f672298ba276b7ddb5e95eba6bd3a9f37a8e63c2503ef584d9d10e51c31b741b1bbc5107651478b58e514e51ca7f26f55dfd40553f465cca645b5544e35175bec0abe3c3d1bbe7c286fc7be52c6c5ee337a28d3b3c9c7c86af9d5d8e0e7990537890e5703b74ce357a205d1d0d1735ee31dd574c8fbec9a28e4786db41e0998b5cfe1ee650873c98cf0e78809af8ecc8b5acd3a17b3ab67a59e1d83e1b072ab6e22a0b1c7463764257084a1947b0817eebe069dff60d182b104ee0a0e424212827d74a90a0f72c3fb697eced24274c3a7403b7589afb7443617c5b39f01ce644d684191faeb9c3f44ddf76940e9781cc51149e59e452c8e407a8e0877fe4c7eb001cb4a843324915d6c88a1b695ec7d5d99ec1d9cda9033be8dee7fd5e5ff517e771de9ec58333119d87715e5e719839e9e062e9dc035a1fa8a583d00dcb627118a4851c3d345f3cb8035f211af479daf07198f231daf4bd1ef1c503f3cddca789dacc5118a26d98ec295fc3fd91392cdd64ecd4fa58965d9503bb718f9229cbfe071ddb8911d007f916b7181235e461fead18fa09d7dfcc9ff9191005e521f831e09379c3219e58423519731d2073794325b65dba35d7fd39a0de4d9839fc5da8a10477bc84bcfd12c7ec5bbe050936508a7e7020776dca60c045ab2053a7505e36111c7b610f9dd9193c6c8358759c33b1e0a8cd17ce89dce791cf1b855c5e0123149ed7f41196eef1decd411c618ddac3891a3acc03a345df80bd5e86399a6271635f4923c65da1a749df186ee3a8c5e0f0d5dca755d8cebd5e81e51aae251dd26c53930116afa15893b95017155441951d02f2110559e2b3456238348335dc936fad107301db38848325b26141495665748321710f26b6034452a2f02cfe57e560e2b72dd727ee5cded5133de51d39a0a4279eda28f64951c96497758c520945eaf452c9b40ebcb40ce5c505cb140bc885cf5bf1d9ea8d93a41156e8e1d9c3711e611116329ed7eabd135c31250b6e9893119a7e89dc87d8192c3d9c627d5aa771e3a56ddaebe183a8111a87ed99dfd1c33c4c1fef5de318129f3cccc3a26da139815a04f695d059d884611a1dd193b885435e09cf0a15e0191dd92a2514656516b6ec1f1ff91a011214b0c59fb544a20761ce65724ffc19664426ccd221603b5c221de6ddbaaddb01e6dd01822226a6133d7d4394f51d3b9466edb5c33b48204c0a1e50288a055a2036508505dee47d3886a77017b1dcc754ad19f0feec4cf83853cb695e8375530e3ae553529cf8884f6351983b21cf51621a33815ac785d15632a3cf7c9ec8891cc6cd171966185f29963361dc792a5686a1a3aa3963a62996f16d1af1f960cfbd9a58159aa21d18f6199d2ac993baede3fc885bf52c14c26490b55016c2d05102e59462ee54665da66b65a6b2b816864496611addfe11a437945bbab50338480b3d5da2898e83894a1960a9e48289a66c0a8f4b76a23c38a08de22651d5243798e27ad88751404a7076e057940c78c50c804cde9999971109e3796595c3011a9fb120c86d1c3c0021c4751cac85151c25189d615ac7dddaa5e1da568a9c39285f1082a7f5251ff0e817a861a318cec33a8ae5fea3c9a53a46dfcee19e17325a3bb8835b82633ac820aae1da5c0a9f87a19a93358f3f4699e9a19b02aa9db2784b4f451d83a6d0fdb84ff9499bf965a8f8259707a108d9c95d401a66244a0b1d02e26a7a4389160638bcdf8ad2938a426438f09c95f99d9539a0aa75e28dd603aeca438ecadb0e01272ab207a56cd791b24ec9d8c577c18b650c11b36e439bbd1533bde038c1c33cbc605b96e795c2d9e7491a14e2e0533658614de716fedeb0c8c387d8a0ee611cf34161ed7d9a33c19ea086daa8355fc3cda5a8fddd3ba2ab3c9ce5a74d9f3b0c1ff1e5ab3542dadf1998a8a91b1db5635f0de0a22a18ac99c360eee381c2aa61d613861acd89815f7309fe8f95958338f8df68f15f6721227331a2661ee441dd0f9599db72a9a6de8183deb96a695262c2b0db01268c9439a0dfa91a3b9003aeee2af1bd433df42a96ad444cfc6ac7b0c774291598450a4f266be4f1246464125e10d1f4e4e236a8037a0dcb0c5a9f34920fc8855c7352235f0d98cbb9e780315f5c1de3cffae0da4aa9ee7da362412118e11a3da8c3cfbd1e5eca67d0f96b9c82dabc7eda368aa1188e61c0aee3f0c9a762012c5a861aa06618a0f29d9b4edfe0caa6a8f19c6b59d98c7e48ae5918c446d96582df3d6ddf2502dbfd50246a529b66b2ae248eeeb745221d3657251e6047a2e48996660aa96aaacee6a9ed5c5f3657f1f59daad5c35bfeb6c3aeeeaadf011e2c388c4d10156f9ee235d8c7be19155238c50566977ea8c37eb00e919603f11c5cb4aae9733a5c5c551cc3ddad7fde5cc83d5c3e711e7a46e39e7ddef5a9c3a53d25c64d9c397ea71856a5388ada36ce83189ea59b7a9abb66183e2856e2622ea3a55a3c0430371e6ee6e21acff19c8789031b01ece71adda272b08749594642993c55193f42266612d4929588b765d035501b92e95a42b66eb7ddec0c9f6647caae89c2aaf8e9b0894e98d4498b8aea2e3df1ece49eda3be46a6c162d31b884f3d25be9d4e4d21e1e4ff65b90a48ad90409e214e9ac144b38452b0baed1334d2b75ca4555ca1a30caad101298a4c19e399d719d8a9afe56415a0c9e1714766917b6035fd1651ecb03148a1ac00270f46d61f17d1a189ea53dcc033ec429d156eee0e29a3c44e0a9a59af2ad033c341918c6a93ee8c33cbc031b82d8cace9aa2d2aa4452d91989d5b5321f8abc2122e62cce86c3211d92cdaa12f8355c56c1d91e6b239ccd833a002c3cc8e60a8103bbc12c0fc72c4a8a1fbb811fbbe5ddfbd1138af2f06c9ae8f4b95bad1eb1bbd5662bac82e6fc942fbcc22fc0c22f0cc336bfc22eb802bdf9022dbc822ba4423a9bc22facc865acc54e82ccc15946eb508b7b154de66d5e37e51532b2535336160cfa19258f9354beedfc2e6339b0ef1bb36fded6913ee882178041444bb4172cc3b91eaea88dfe0301bb43c8912b40455981cdc330808117744149933449db0028e8c380416cded2a58551b0c2b2c33aa8c32123020ce03417708125e8036682c33578253a2454710150e92a4b3478c10be0340c28f50b24c236249749d5942fb7f26e4943b8bcf2ddc8c330bc4057e374537775587b350c8c813d4462a776ea37ec4d4976c3375c757125176589df238ee62f8bdf6a76a427ae26289a430442f33bf4c107b0000bbc00618bf5612b750dfc035570031f20f60bd0c1f6c28b55d8e430752f08e6c551a4c33181d3f480d8b0fc85f57555f2545c1dd52f1d2d5339e85e56e160619d71c8b1f662c9ad6a8f53baeed9cac1ad3e0c030c70810d70016f73c10bfe2c0302d311ee6518a469e33646205e9ea9a2228d3d0c830d00f76f53370c58c23e4cdffcad833950722507ee5b567256d9832ec4007507f7185cf0f6d15df9d9d4f685436ead9895658317fcf652077722a4c30579d221d5d89049d02b23909460b53b0c430cd8f752233853fff60b8801373864c220928fd9eccd42b834885f71311738c4ac9565a4076978375c70955159dfc5ecdced9cdf156ff1d681600ff66017b658b77857dbc03f4003347043211c0162d381bc25053438495660435208c5642745386405e25d833820deb0b0304e154d381491ee7d88c4a643388843955bd2f6b5b7fd8018f700967b7bb03aa0b63ed6515ec1833d5032883d9cfe3b88f96a37d93c34432480814e2fb570cbc388cc833e18f2ced1b42e03ae3b007a98bb435fd3ab31240218f0f67487c11cdc425d5a983bd8833e54ab3d44ba3d44ac3960b23db8c33a0cfa3be8033fe8c333040336f8833e709f95476c3aa039a5df033a88c3aacfc39061ce3f10835203f70b28427e33df769b436d7d902bab758523d0b04b835b47902f98019d7f351d24033110032c78f50b4881385c7839b0b998f7fa3888c3b6afc33cda2865fa1838f4d53720c331188337d0e52a3f221d76833dd4433b7c83317c0326072e354fd88ab3400c10833ea8816177350bb0823fc4828c2f768d5b033708c161ef38371043228c4119e801316cef2665fe456e298222e841c66bfc33a803341cba18ec47b880af3d6c03257c0118f04017f00018d04130c099670fe636c8c118d041cdd3c11888012be8c3228cc117d0bccf7f811e58ba0747d93295821874810d74011844c234d001189cfcc947342ae843f7d9c34d57f70b28033ec8b974c7401888823ea4e1bc069d2eabc33a2037c09aa139ec4326d8fa5297b539f0ba3de4024e1b38757f813f340318c4c00b7c81a5834348273853db8032c0c3f695039c838158c340178c0153bf8062af2e9c3483ad2f7824e802a28b751758023c98d2fb65f5b0af508043893cd081b2e3341dd883b5c1833b60b23a3c493c2475587f750c248333d8baadcb013c0c3b35fed8c3267841a2d77770c3c01718038abc1fbbcd832e7441a223b84eff762be88386b7c32184c00cd4c02b70831abcf8bf9bc23fac020d2081127083c13f033730c161db800d3c760c2cc38a6060f0d3fe0b80012cd48057778183ff0837c0c317bcfde003040c183648d9f3766d5c3a6e60043684f182d4be380e05be1803cf5cba70e9ccc1abf6e50545915c6070e112a3603973e6f4217a41b2a4488736a4cd43e7ce9d3977e8e4b163878e9d3a75f17c9a0bba2fd34b8763ec995ba7ce9cbd6102610afc926869d36eee86c5a01ad3063379e1c2d94bdad013b15f7262bc706b839b376fe1e6966bf6b26a49930f1bbed0938e9ab46fdfa415f6f6cd9bfee0c282a3518b164d1e9daa796190aa66585ab86fd4f07989f995c5b2bb31b9bc90638f9ab76ecdbcec85118395ba539f5fb8d117d81bb866aee9f0eba78f579018365c587207ae1d3b58b064257bc60dcb0b166ea5a3e2f66c1a34eddbad7163421dfc131be0dd82b9767e5a76396af886a4ded006b66bd5d4b96aebf0cb3378ab6c547c0dc6a06bb2c986123342ea8b147d3e49c4abbec648279d722044071a9162b8859b6818a2280c4b845147a374e04144af86c088e4910dfbd2639f8ee441071d736294112a19638c911d7d4aa18a248beca9b11c77aab16611a528720f0c6c5692511b333864661db9ec71e9b32ec0c8a39662f6d9079d6bbca946fe2e6fd219e6c08ac620661bfb1ce20209650e4bad30c7a2c96cb339bda106cc6ae8a14326b75820e51b65a2196c316af42113a693b0a9a69c63ba30a9077dd0c16d1ccffa6a049f66f639c3b5172a81c79b71bc69a60bd21ae2e2c463f699a79b765c7d0516629291859b34a4a3ee4f6ea0c90e1a6bb6dbf53bf0e8e0669a7fc0202f0cf9d293669a6b8879af221e12b9c51a65e6bb861b90faea02b569f0c1a4cc876ad1e79a70f42c25dc182cc1671b7a84a0e8c17096f4a7488a6a8147426ade3d150c7d362a471cce5caaea85606c1aa65487e868519e77dc116a1e77d8c9899d79de318a9d17f741572f922ed2c99d782ef62729d760e8a2957efad9fe471f73d4c9491d7c9c4c34be79c431671e7830f18a32932cbac61cbae4b22b24924a4be41a6afcb1d44437e5122cb1a88596e66971e442278f5305a2c323d58c69c698638ad10c4e7c72e9988b30a0a9b4241eb0a146e8c34c722d8c31c010e38b2fc610438d31f008079cabf5c9c48b038d9edb226ecc01c71c58657de61f38a6c395957f78dd55bb699e0bd6cf618b3df63d24e42bac9a6ab679d6a11716e6a6f46bb7e1c640b71e824b9d69f429a44cb770d167ae6de0e1d82145fa81a73378f551a71ab2900af7054bf429071e6bc28581297324cc689f454a2c6d197dd231266198c8e8479e881fe60946761c166af176d4414747b4b918632589a1fe52871f8e618aa1177fdea99171e810873c24f2191884411cfa108738c2a10e7bac6c1ba6f8820d786622a085491dcdf88a40f4000f692ced546c520654a8f634aa416d2e61825b3436a122bd8021138b884424a8f2822f78a919259c47296230372ecc210f2fa94132c6919a30c5230e3e84011e78970e7218c31be69087a8724345647cad19f2e0063138e14218b4621ede68472b60e19c56c8603a93a34e188cc12b5e6143134c680b786c808449f80374ee81010f14a18f6641e30b48e00b7c785009759ca71ce5c056336ae09f17d8a012a1d0d68abc172109112308479aa38520628f8da4031f712813497800866389640c2d0b47390e6524ca2883fe1aa54a144970d1149dc0e865334a078eda610f4692c6648a68113be041268ac02434f6c88900d1618f63f02c510209863cc4310f5b80670cbc68473e2ce11a32ac031c742987a57cd8234bf083697d21833f342317dc08e61bd8400c62bc218f66346883a9c38f38ba119868c8051eb9c04ba70c66c41476231e7bc08b40bc604a87c4a007d0581c38c6310e33b8a60b7988c4191e55122560631ce06007ac64f18c57a4913c2f084332b4e3ab697407770f492921fa9147d9c5400f7edcc6348270203d86440ff6b8c636cab18d086d431f9da881ec8ee4163afc031e0cb4245287b154dac0600e5675c89fbc979172e0031f73180f78624087462ea565fe2a69a54c65f796653863a9ef79410c70218f95dc64251cb96b8c7a320f468247a6306081307722959452e703cbc0c74ad8b19278dc135ab2c3c53ca4480bead80024d3e10b0f3ce149c665a47083748fa7f81186b6c4e0b4aadb0798e46235c1982b4c6489623328885adbde16b5b58d8118b0919812ca651eb9e821e25a418fb9042e37dd908b39f0318b387401b50f190e181cc10d5001ae1be620471c86d3824b64020cc3b1010feed03df5f96439259585273cb18a55b46215a668052958b1abf464a73bb050052bf8fb8afebe8218dcf8c52b76f18a5fece2c06882c65087d10b60f8e2c1c110463080010d78a4e31a208250227de78f2d9a821394fe08452f3e680f089d982342414738f4a10f63fc8218d7f0c785b3a11075585721e2784a4776420f74cc431ffe50d996a6b226262e092afad8923ffcb1a52ddde3454a66729099dc9375e8c47a2f8bd84d6ee48ef2f5831fbe09739887dc139ce8436564167398f7e113fb05ad1e2a133298e53c8f76ace481727ec73ee4ec0f7c30ee668bc3733df6718f7ad4e31ef6a8873cda514f79d4631ef39047c31a2d17a12137b9962e876acc911c76dc79623e4947638364147120379c5443ce3cc80186b9c1c012ac8a22aa91db8dc031eed1fa8074d072030e5fdf7a71d945875e3fedaa4ffbe41ddd7807499ff10c68383b3bf7cd5c7ab0c1acfb56e3bed3c0fe46b69b750d696bfb3cd538cf35b0b18d6dc8671ddb388f5121f494106978c3896c373ca0726519ed321ce28090f562c4a88c6059464bd2c8cdd4218f9cd8031f48b0121df4900730f4e7335ce882c1d0a18e2896435eea68ec9264e48ee4dc55d052c4c94e728293f299dce013f3f2c8232d6989b563d26ec649a40dce688979fc966e36763bde41e98659eccaeb98c7a75d761c8a713c682bf1353a72b3b85e8fa3d3dd50ae6ae462eb7092e5d7e6903aa0e5528d5bfb3a4c5ea70b0385d658ba00ced752c74726ca09834ae8e3d75befb56ada91dd95dcf9b3e050aed66d3dd1c0b94aeaad12a94f08efaa778cb48ccdb62f3676b5edec78fbbed78006feb6b1ddacf4607bdcd310b7e6afa1c8752bd2dc435d77bad3c16e755c581deb80905050bccbfb09e5f4c3cec884d0713d18ade4ca41b93dc66befb2959cfeaf3c32a0742f610f8ce01246e593345066548e9ef45e46cb8591c46e829389c9a3e0934eb951528e8e75f4a41d5cd689c175726cc287dae3279fb999452d3199afa3fa94354ac9358e91e4b8e3622b11c79ddd31eab4d71df0262ab9ec4eefae0e1c1848ef94ab1b0007e30027852c8d71e4257016b0e92ccd1ce2211272070ff6218a3aad1d9043ea5ca5005da51d2a0af04630049704efc4a85548f0d3ea811d601006df21bd9c433b9e61db3067dab2cd5ad203f2aa61dbc2cddb98a5f386fe2a1cd6ed3cd6e11ac4c1a8ccadf4d621ddacebc2b641f55a2f1d600f0b87ed7daef07d54ec7d60040c2b0e46aeb0f62024e374e27de6611f98cc597a81166ac11688a11a84ccae5e64e478e27ed8812346cec7026e46d641e526a67e76e26570e21d860ee62ae626868efbb44f8a1a2b4634cecddaeffc78c21d24ad620ceefe64ce629cc21de0ef277e6299eacdfd3cce553a6de38c8271ee6c49c6a11b4e4dd0f02ea4e445e904cdd7022e9c1ed01c4eed1663d1d6c86271b0ee0215ad1eec611f8e63e3a44e35024f0443ce054d31ea908371b24b04abb1d878ae1dea21391a06566c30dab4cd07218fdab241f3ba2ddc4ce75a346f51c44ddc860a1dfe9d701bd0811b40c4dcd4611b4e0f44604f44604f1ee84128e4011e2a4e28e82120d521672a6e972a8edebe100c7d2f0c910f975e041d0292232a8ef0766222f5301e78c2e038521ee2418ad241d2260d2331a2fc982ff96e8e288082e6b4cf2577c927b4cffd32466246cdfa2631637ce26526661dbc8c2439f1127342e8548e2762d26146aeb18aadfc58d1147709d498f21477e227eeac1d826e490830d8ae0ceb6891e3a4ee2a432a4c1847ef90eeee4a50ef3e30374ef10377ce0391a3a2ec4e8c3a0d39762e39c00106b3f1bc6870396cd0bed2a32fd3033bb8cd07b16d51c451dcd44d081153dd420f5be081dda8d0c6ec5132f3f1c2f6710cbbf0fe0ae1611a7c070caf8cdec60146366225c6211c7049dfac2791baf0c2e82142ac478af0454620f1466e62238d42256aef46540c28742f4620e462984f0f6f13ea960428184d4686f3ee7c020a918e621a4be3706610f36f1dee6c3737ae1061c6e36e62277162492886287452e9eace2856a21c3e0baf1a2b2738eeca72821519ebe5540270948e71c252e9a0ae00d36eec5622b956c2ee26aa05e98e71bc2c395ab0b14a30bb7ced0391e3ee908328e69204491006d12bf170101cc1d1f1c8ad1c238f1dbd6da810733eda71dc8c2ac3d22ddd584ff5a850f5e6511fed71f5e0c126604f218582dee0814665b420e90d0cb7f06130b2e238ee7e14d26558fe132a2612fb2272247bc24527ed65fc7046266dfe9cf36182c261c62f14b9532a2711e0dce7e62606234a8e62b674e4189227c1af277a226376120a0dd2e34411270a1164c28f280f0fe90a4f1c2e5127da415e2e1227f08ee3d813fe402ee9ea33ebc472a2c8723f6b51eb5c651c3e50d8a8921a49b0d36ab1b17c2da4163500e5921d10d455eae11df0b21b15ef2fa92d432d0f08330ff3d60d44b92144cd8d55cdedcab881dde6f11e21a432aff01e6b54c5d241484faf462bae1cbe90202792216924283e3247191247c5d01d02f2465cb4470df220d341fb5c4efb12f22644ed267a02cbbc2c2657327d084f5a3531d43026145f64496e4614c7f35afeafafffaeb5faf6341dbc8cb1ca14fbaeb31ddc8f28468d26250624efead888cdae92d27d3aed7d40c6ae706e108b8e60cd21b696445e8e2bee26703a03473f03ef163f6e2d1955a494ceee4ad0d3ccd22b95cb635d71e77cc2f03a95d1780ef19a2330453507b36dc1c2d1f29ae530af054445143115891b308c0a63951e598fdeae3033179220df8746e101fe602f596fef0bc3011a24122573741d308259d5e1573b122061c459edeaf4ca27e6de872631912756f212d9a15f71c60e97146380425f77534648f24e71ae4ad313af9c343d6dc2e6482ed4546225ec0c28c2541daaf296f00afe24468aca276346f25acd745ec32f529912e0f6d0def8b6fe2647cede4ed1e9f4b30369b1ef28b003bbe11bf66f2d5350b93eabeeb24bea44b70545d65247962a2135391e34760b4f1b9743569e0d732cf4be762a089b453ecacddc367331c7ad1d1153214a2f1c6095dd746c1e655568335346653467d4c11f69540b31b3e2b25637e38121c7f0f92eb36a71140bd5a1e768ce45254dd2e0410fb14ffbe00171bd2c46468e38abb4fa8654623a127e3f52622286f0b4d55c47937154ce0ee5a127576e27e2a1fba4d2e0e49526adf265da41d2c2412a83063db595fff4945c2335168fa3eee4c5e30051101bd21c2e6659d170e930edb85a65eac2012c53289c96a4ea18ab00ebb37407b455e4924f8d423c9b6e2c65fe5751f13242f532199c033b7e2573fa525906f3da36b36669f65ad68da8e0910a97b01e4b94f5504c28d6017a68b4232e2c464fcf29acd54674f30b89490f7b542033827bfbf066c6e166a6cf6594b560d3101327784899ef6118d15725172a284a2ad3530f5dc64ced95cb362e7ef7cade4cf759b90f80523129b9f366b8f25e63b34c77c2f782461c0e2f53a548835de5ca4e8de93e4b05f52f5255cee370a27057509c92ceee2850efce4eefc2442e5eb8ef6a515377ceeada33d01876eb38965c49d605359904498a88a12d54bf31dbdad1f2e4231bc66d554b4f3159f5097b1632eb311f9556698fb62085f5f53a62686fcfc7ca410cc330f6b23797fed0817b87347addc1c76ec27d3972e45c3246866ed8220d4ecbcfe4b2155a83c220fd157dc8170c8902646293e3d0c17d8a220f73e262a0d072ed6c5b3d90fbd8c1de60e639a733280e303697492e9634ff3cb1d3d2331c722fe94450c7d8134fbd2146f294109764521956b6c472b924702e00871d36cdea44b9961956416b11769724ebf0eeb36ad9413dedd848501ef6d239b8ed8845b51c37cf07cf8df2d083f1440f918c7067a5b909e14d1f17b2f4a2d746bd101f33e27d0092acb59738e1216478130cbd1646c4399c2b3264ac157e352e1e08b127b22f6ccd75d4a6af4d95d428fc51e3dcf602dd335d3bee27628471dec770c1417d57c2e6e681fe7c1f86499bb3275e11cb00e71399ef1435bbfa7a12137b12638873171f114fd3b31dd2e11681c2d33498b17a52a23f11e7d04194e106ec024702a76e50233580a308f0382d8a645b3f77faeeee8e1aa3cee3161563e8f21a91cd7114cf2f0533892d6f3ed4d19941f43c94b755a3381b18a543f5910b45446b17722217927d657422f5211a32211112c1128c411dbce71860a916be2f0ce5011f22216fee20123e0115d8471480c12632f245dcf745268d1e520e2a96d525278d283af25b9fb37e9ae91b44a116946190193646ec411f74211268c1c3692114102115eb5b5bd7d6cb6a64af8654224b903903d4299ce2627ce26f23d5f9dea1a3374e60bbfe53b70bfab30c39762315618fae7e88ee03918e166159a759b17461f886a1aeb1aaae1bf4101c0c5a51275554e822d816f0661e14344dd6d86c9ce7166d65150fda2a5430a78108bb6df39e9866a3017843af5541a4a886eac42413c56ab5adc5590cdb191ee8e1bf9bec1e844c1fecc11ff421129441119401b263447dd36116e02f1efc011282a1456ec21ea2a117e8992706bd0bd1199d532c250b6e23cdd64cd77736efccae06c7128e113d11b86fc7a10c5e611feeafd19c010ca4e16c6b2429b12c84756297384e3c67c4a7f513901727483c8e6f41ee5eed4d90e58fb1426eb8c512bb94eeb834381dde211e6a411a7262ff6071ffb48e615d5818fe0388dae772b4bb923f1d96163b3001a54e68e8621ac7f2627fdc148b1accc31cf188c1d990d8f12eafdb22ef079d1809456f3159b5db9cb0f424a4f4165ec356d48b135237dd97167c81b24e2c20f5210e14811fe8605cd0a19d2512fb0e8507ae21c0356e1f44e116349d1ee4200ffc211e7ef57ee36123c5f9e4b43564d839620a0e237f622590c20d8ed1aec0b0b106e70beee1623e2e63a2623c7d0fd482c671750ccb0cba2302b5ee42caa75371ff9653e94cf2dc1516e912c1c2552380d881ddc7525e1650a76bf1153d731ce8e0475602ad815d3e034e73bd61526f263d052d1d022def93930255b1e9a89315519c2a0347e3dc38bbf07ee8088ffe28f0ddc6d30b54b98d3097d80739af1cc96dba9d99aaa538e1159ede7c47c36634685313f50aee8ad5211ca4e17e68d51abe4019fcc115c2601f60cf21df471f7ea106ece147364e1f9a2195de561d58462aa58c4b64deae80cce0d4d0ce0edb8154a61ffc6162d4011c0ec506661de9ead4af62001bfeb738a188801ddbe5e5c11edc8716f94c1fc8c11b58c619726449ae011e9e1f1972e17826ca83fd811c74e11bc6c21b746c4be6e11b360120bee93347109c3d7fcec0b5eb060e612d63f3089a0b77d0dbb84db5d4992be76d22387004d7c943c4e297c479fb6a45eab5af5d3b73eb082e94b811a44475eec2790be74e62c77212c17504c7d0dcc7fe6e48877e34d74e1cc897dd8c46ed2833663b772e5db2dbcaae1dd757b0922583f66cda3468d0cc629b86adda34b7d5b05d7b1bf7da5cb973ed56ab66779b5fbfead2714b1778dbba6dea10a72b97ae31ba748f03434647199e3a74972f53d618785f2625c67c89b2b1cc9e6673ea2ed343878f8e257feae451de376ccebe78977905d1734fb63d578ff4d991c64e1ebe5c356ee98bf7e58e3d74ecf479db93085bbe2fa09e839b478d89327cf3dc8967d7d3dcbe5261decd233f2f1dbb7bcec6f83327af99135c07e5045b8f6ede231ecbf463c618d8f8c38622fb80444f2931e0b2cf3e5fcc620f41f84412c732faf0020636e678030e3d88e480a13600feca338e4588f4808d3cede093071eebecd38c1afebc340f395d5c82522264f8438d37de5433148560ec7715396078b28f3fc78c31214d3c51d3934d5431c55037dfd02451542f5df5124d2e7dd48e4d2e31259339e374d32553ee6c95d53b5cbd538f3c5d65050b2cc43cf34c5a6999c5965a6655d3e734d9bcf51636dbd865575b8adad5d836e95c3318a4dcf8d518379649069939e8c0d398649b3d065935999a030f3c6584b2cf38fab061c97394b9a3ce6ae898c30e3c6604a30f3aeecce3a2832ca243cf17afb533cf3cf0e883c918b7b9638f363560a38f3e7128e24f9bfb9881473fee8c53644bd0edc38425fbf4da933b9815a78e3ed895bb15affef1c4a10c9dd578b14e8bc5f0a0cc3cedf8b3c81dfeccf3452bfed8338b22f58c539c3136aca84f2d37cccb0e3d31f4328f3eba2861cf89e6e8930919fb9883cf19c1c403143e993c311f38f26482873edb69bb8f37e878e3c532ee3c5c093e0475e46147ee7823c68a44e9a38925fad883632bf08c23145004b163944d277e6954d4122d54944c5875c9a54b6a7219b53bee6165ab4b5d47b5953c747ad5ce9c6eb6f3ce3b6025a3e79ecfacc5d63686ea6d175b73b9f5b7598dda154ea590427ad8a38a35e6693aeba4e3a9a99f7e9a4da7c23e660f31b544e3cd317190b20f3cf36483041ed770161bdbf0c8caf633797cd30c2f8908a38f3c1ac5434dfe0d7288c4ce3ca444d24c267aec4327c66018134d0d6080130fdbfb2ce2452db5b030462efb9a730c13613043e7a640a5632b74fa54f34724b31ca34b22c4c8030e50ee88524b2e7bbcdad53174f0200c394ce8918b3c89084322c2d1297cd4a011a2a0451c5a618ff2e803125f40041d9030875a48231dd1c803b1ec710c30e4c11804f9461e9410896f2cc61bf2a845261061896dc4c325b5f8c21c84110f4410ab66e1c821484ef48d3ba08115ee28c747e0a1123d04a38104e98637c4e1132546251c27f25051bab4940e11241c5203479ba4b610978cc3566df24a57c8c329f1c8242b5d641b57b8c2a2b9b5836d74c3d3ddd032a8429dc52d6b81c6fe5c02358dbf5d032e7f54d45fd2c197c4a50352d5400c3752c318c835e691a9a94c6a90b5197a206b1ef67852a7f4b18fdb2d063381b98cba78250f7b5cac271151c73ce4a10f7fdce339a93107266fa746b671f241fb6820db4a89cb07e92322d179d0b1d8368f775006776d728f39c481927ad4e31d5a3187788ca58f77102456c79266af08e20e3889a3575fc0902add61936e384d9b9c7a4938a4a98e9894a329d78c674fd821beab7d91261c114aad80b4ce7170c41bdd08875094f84525aed31c4801874e4002249b80436a3481683b6aa5a5741c544b36e95a56c0f492adb48945dad4e83ac2439e313e736d727a9b47c192a73dd1f12cd0c0065afefc44d33ffa692f7271cb5bfe98286c88e390878494a412b78d725c8331915b4c2809f3a9c794031d4f4d0d3c403999d4a8031eb8a3cc6662b319b6a1231ebc6a933bd6010f73d00a1d6485077b38258f36a9f258f3006b5bdb7aac5aedb2ad75120f9cc8d34e8dd80aa25a52c7fbc0684d5b4d641ebc5aa644d6c944ab1dd443f3d00525ec118ff149539a5cecc93abfa4932b9ae9b2b2e2e665298a8e3171b31d56311343d4a9938ee8a4b50d258a8792c81090e870224cec9042d29150aa0054a0aedd0913bbc144818284213c614a99aec645e894943ce7ba0a57c6c315adb0039a2e991b58c262b799fa894fdfc52320f5d247bee4452f9302aa51affe01297414159295438d63268319cad04a7c5b9daa5449171ed95c06770066dbf350c3abb21266aeb87b07ee9e8a2e7958063af160476c8639ccbbfe8e4eb57c1e56e4119e361dcb2be82a0e3b78b50ef1608645211ef144394c138a86749e67d38778ee85b5f24c542620118f3aa4268e8d7ef625e5314a5bad18e4cf2294b634218a4181c4e47282e4b801fd4640a9015ca93c392a1f398a91a796e4cba2ada33d916e1811dce1f080182bc5f18a8259243797d4638c0a66a9dd5c2ad33e41435068d1a99e03b596bdd42552d700b4a58caa5ec8a526d089710c65201318513166aa99d32a6620433acdc895321bd1aa47efba19acae72978895076ec8b3fecb63eef2799fe6703c9e87b6314b4dd4111ea678cc85e9add80a2721911a74b0d66373c4434db6062c377bf2c5d28a96c7dc1ca3365ff294731ad6af1bcd3157f6e9e2829869a0399cc850180250a42c13486952b26c998d9485263148b4dd89129bcc50707c33264c418743691ca6ae51b72b747aae75371a3739d509bb7263c776e74c9699da791ad2a0a94e6fcac746f985bd91fa8b211799547534123284799c56a36ad56b3e661e577547eb2c83aed5f81a3a9bb9f05c57292bcca8956d937cdeea2a2c600ed7dc1ec4bceb5d5fc81e770c79c4251d0f49812e62d44c848cda5cc756ac592b854a84a2e2c0f5442e03138c2ac4b467baac96aca68efe7688d2d4b346ad963a5b902c5f6ddd49711a52d6cde4deb2bb1ae1e8863460eb0d69ec6489e1908694c3d6ed2e89c3294cb95737d2f14db44993455c6c473a14561cac8ca7a360bc8a1bb3123785c8798ed0b0864be9680d4189379074b1a9e01e0ee870b0f72f7629473920d518d53f92a9af6734a6b59a299ce0e4549cd26a28b15aab637e54d45f2df0b15eaef3e23c8f6df8e0305ce301d7e6df95e63db1f92a993f499d47986db9576357760d0e6582f1d612e98946e8244d636d05ded3fcbdd4d6b6c52293cd6c9419b13c9edea66b4a58d832892255a4b676255b04484af40dfcc4640dd55a6b570e3ae40d3fb26e44514e9ee30d5aa344e9c614fe64b2765ca2266264266e52277fa54d7532466bb4742e71797893797474826741536d81700c6753ec655e7d7154a70729ab5754869454924378ad8768910113b8a7199da21a92242ce38055ee400fea806af8400dbeb00bbe200dc9820f35a30ed4400dc8d256f1900e36a77336470fa24673eb016a23c62bfdc10ebc600c22c729a2c5295b213e6338513e770cb5204188200abcf00df8f04b75c50b9bb00c81713512210eddd61fbea012d4430b91400911f1742f213e4eb77d5a522bb2a2113543186463748088630aa530e684500b418075078a406277a0d85aadf52379075be1f0234ab66e08458002651440d150f79489d55626eb7715d7541e5f83fe4668c415ad10167a32537ae32772d1279ec7828d1228a22748e2e0168b51547d0155aef77a4985399fc229d79819b9871a96413aa4a373e8b04becf03cecb008cc704bf0300dc4200cd7e00cc27307fbc07239474c154673caa787c7520fcc976aece00fb9402ebd51616e95661c366bc5010f91a00cf7b00ffd900f92d02f48a20872f0053c300691500b4a871ae86246c5712368400ad3c22ff3e00ff80006e2e05160346b925852681276103525eb141bf5e70ee4700cd06193b5101116684e422180770724020894a7d864a038773f4265a678770bd57648310e3ab4146182141de51556e2213cd125eb471e5f12465209705a815d5d31707a92827afe2317c6a8537bc417844328cd585ea6678386913884f648ab270e87f138f3d51864b518e213495a852e24471959b83af5d834e4328e53d518f3300e6bb00cf1d11b9db273f4548ecaa7736b966af61857e5781e74e00f74727c3ab7456d8515a5e50f254492f30006adb00fce8004e200908a600feb8013eb34625be7194ef259c5810dca600fb9d511fc02156604795c244df2b6863e0746f2700c8de00f4a642cc41009f3109d5ad38a1f012442e20ddf808a420994a20880048825def080a29850bad57f6507885d5295f7b45b6544796ae4365d3137d5e5260f0516b2d0528342536ab10d7aa42874d1707e1648a6974889b40dde70547e1918aef75efe851113b1471881010f8fd67b21772a0e367f9d1286e481556cc3419c060f9ef199fe2006b4502ec4f44bf6f04b39370f963492e0314cbfa30fe0e1a25f980b61e00fc581612dca49b7f3a128071dea604dc6c061fb8004ac201d48c00cf81007e4126498240f16916fed701e3c200ef3a75c4c410ddfa011ebb44a00b58855f71c048173348149a5752288c55688300663f245f3500b96300f3b5133c7400dec106e6c579e4c065b4309807dfaa703f80d768776570250a0e84469e22168e4a8687426653264e6004de3f025f7f981624479fa497031e59fd8d0168892177b61287bf1478914487c91a036784884a60e8b148d6515abb0c7298e4389f535fe61b1a1a15e883b20ea7300a6a138e10eab368ec6c1067a600ba4000674404bf3f00d99100389a00cb3800423654bc3600696b00ede3006c2907cfa600c79200cfd9009cc4227be5203c6a00f5b711b8b8007340406e4226ac5216f5ed71fc4940f60c00afb701dcbc00f71e01c6ad80dcaa206e2500fc25003c4c02fd103062113135c390fbc50092d310fcd0006b8c04960e00de2930ebc6003ad206adac2ae04310f662006e2100f60600bd2a10fc77004382780e3a07600650ed41006f6f00bb8400f1e225be1490d7af723dcf9a7df50b477f70dd5805044498a6b37806d9726a6754f9bd50e1ca35c50c1815ed658e9d09e70e2365a410e6eb61524fe481630e59f6a215e6e91707fa217319828a72a8341652988811881210e9e7271a9f14869056941f860fb05a296d15627867da662acf4a00fcd002017d30c358073e2610fd4d003caf02098a007faa00ef6400f41c0129ee1b0e1113d5e700c918007c1603cf3500ff8500648434ffb10077ae00ffaa0b9cb800fe5514b8a1763f48004a51b0f48b00cb75103c11076fe500a3c1032e8f04b69e62b2c000c1121882f910ff2f236cdf004e2c02a8c8b0decb00edf1004fbb10f88208fe1c044f860060c14a6dd60851963a605311304410d871b06a8300edd498ae2397748ab80df100dd210b4a408b442bbbf41c264864abf842ac04dab1457a210afe821fe5fb45cba2513186826b9b56f5ad166622b47c398166b518c88d2476fc10d85c3b6a9aa28d51029e1c07a8af32856455657b5b7a7f2c2f0600ff04056c8f25698d47c384c57bb241eab3421b4e03de3700a72e0bbac540a2c00429f360c34a02be34007b770c3fb600c47800bde80083bfa69fe300c3cf008c6c00ba2304ccdf005382b6af290a474500c9bc0027a200cd2801aa5e973f5d00cc7600cb34007a85023ba600374700cefd00f981009c6f00968e80e1032062a740be47775fbc00a79500bc7a03e94e00b03c114f54009b5a00b7240b10a250fc63006b3a00b03220cf0b010baf0056bcc44b59b0b4fa007d1d07450795bf39091997009d830fea8dd268a4369a80a08244a498a39b4cbdf09504231b4e1a9a8de165052a410ec701460c30e625326be48c15d5b0f62745d2ac552196c16e075536b5128e4b58cdb50487df1282a2c18dbf0c298821830fcc27b6b4aa423c3efac87323c7c970486f4c83abcd490f3a87c28d1499954c64b92340ee90ff5d02bc7b20ffc400b62f04ac8520f07ed0f0f624af6500f037d3b7372bab804d1fab885bb744b6df50ef6b00f0d790fed10610d393755e70ef7f04a5b24614f2179fa00375be412f732274b210eeba410e1814ede500e6663138bc5a50db5113e4365670324faebbf0b1a24a40894fbfb23dda90c762724d2700d4d2d0de090bf4249800238cc8bfeaa260d585b58966563e236dd804aa675754046c1d7050e6f869f6e5237c9400c27085e1b9c9688c23782d41712f770449518edc45e69c50d329c492f0ccfeb2c55c8722acd674a397c2cb703576cc3c39b49619964d0fc85490e8dc3a6c44a88f0ba38270f72c2cfceb78ff2b0d9bb74d1385c613d2ada3ddada73f3693e87901d0574b38d907f25464ce4926b2d13e8905b5a1264179564ddd0745bd2500ab84e43218ab0b5bf76a70c5e6a77df500abc500ccad00cd2600cca600cc640c0dd59c0464bcc021c8be99950e684756643812f515afc76152dfd506d834662e96f24380d796382d6e05d7e5228d91017abbad77c3db787a40e091a68e73cc3feeb00cf577555f37c558cfd60e0b84ae098d9a50dd9e101a2c3a461fd987cabbd4a70550f138d12cc700ce3a00a7a200ef3782c335ad9eb416aa73b2706bda20e0d6aab74613daa99a04627629562a25d62a48678d1e715bb065d3e574f12712f65f245405d6d1875642f410de0909c1db213e9208a82c8cbbc2c0dd1300cbef00bc5200a439006a2c1068220087fe0068210086af006a100099fb00bdc1d0ddffddd028cdcc0d5765642145682756aed8b401d665cf946ebd14d5d2b376fb657d45c1cdb75377a92df756db62bb8168d92d77f24177f911894020f8ab10e9c6e199d1ec32f5ccf0d9e19a9c1cf1c16e1cd4748f5282b14a6991dea2b17d3fee1d954c6fdb0cfa72bd9fc5c0f319d6ac7e261a47d8f9ff669dc94e3a4c936c6b2c3d6146608291b2158a9f1b6a5f4d11567e41534666d21117e55e7a854f2cbad8580cb1d940a180dc6500cdc6d0cc7f00885c00622e0016a30042490011e300224e0012000ef23e0025190067ea0031eb006c4a00c9eb39dad4514421b94e1f00d02b576f9b7bed2bea9d7b5cc6664362fb1576c9d6f7353e84b47969bc7272f95821eac1778615ea897287fb138861168b59929295f7b877d2c85ed60e1c87bc327d18d4d3a1c8e49a1ed2cad4e59e3d87c313da349733199b4daeae17caaedd0a634e3bb7eeb92edd8baeed0330e47c574ba34cef470451f1e594cb2fe341e3ace4eefe0786042e45e52955a0213310112c00d0e494b1442f2cb01fccb551e8ac5400cc5900873300444600226f0043a70041850022d50023240021870011d9001178001196001f40e021cd0012580054df0044fd009cda0bf702750caed0da1510c5a1e0dd4f0800c714e5bf1146c08643221356186caba88591ed54d2a659f85eed6f240960607531caf676bc9b67c2d29a7175411578db07ad8a01eea858dea11ee60cde7698e5d6123e9f239fcebfb78eb1c06e2219e4920fef4747531f27cba131de2de3f27c424fee22f7dcdb7d950dfe15bd826b1ad60ec7039843ee862251bb366627fb50e6d4c4e98551e1c281e4c04dc0061ce5c3870fee0c279fb762d9dbb81de0e863be88d9a3469debcf9ea654b111b364940b8f05062c68c131d289c3c590143860c3788102171c1028e102048d018796248153f9038f93246ed9bc562c784d0c041a309933d722001ab36ce1cb881e6e4b973c70e5c3b79efb2b26bc7102bbb79eedab57bd78e1dbb7afaf4cd5b1b77edbb776cc1b67b050b56b267d6fa42033c0d70b56984a71dc6560ddbb56ad5185f837c6d9b386ed7c2454eb72ddde674dcd2a953b76e1d3c78f6489b263d6f5ee9d3f3eccd93a73a356c75ae6dabc63d0fdf3c74f262e7cefd5b75bd7ab9dfb6758dfcedbce2b8e52167cedcb76fd8f584d7f3b78f1cb36fdfc87963f73afa73eac3bbfec646cf4e9ebe76c78ca96687f5aa3c76f1b0debf6fceac3974f1190a94e7985a8c11681d73c411c7a0830c1a271c73bc29079c6ea6b268a0051d14c79b688c39e50f531619a291409ca0e182072ec0800107566400020f3a18c1020d2c80e001061ea8e002963cd000840e2e70c0820c4400c9832194c0e2976176e125133472c0a0831274202187a48aa0c18f618ca926c276f48b4fadb9ca52cb1dbac86aa79b79de91c79e7bd202ab9ebbe462a7aeb35a81859864f6fc0b303f0583863068a659ac31c6b6d9e631c8102dc7b17424cb4c9ccfd4f94c34d1e0198db5d250634d35dfe0016d35d956130eb6e96073a73cea4a3515b77aec791536f19883fe15d6e46895cebae9d49b6ed7e7f059e40e6ceed9671f7f6a11661ff4748d4d57d8de218e38f5d8e927135cfaa9e79db2c2c4efacacccf1ef2c70d951c7ac76e649678e75ce02c71b81082a289c6a0c9ad01b70ca39d05d8b14b4e8a1a18aa1c511268e7882890b7a24c1031c8630c981072870a0020b1860a003072850898207307080e20756fcf88107845c80820b3c980184139e48b8051d6af28004103cf080081a9830a2094c88a9281c74cc5107acf8e8844d2e6de9422b5b39eb93ab1d3993560fcf3cf784e619c0acf173b0410f6bccd0c216ad261c6e1045b4b3b23bcb8cd249411b8d1bd64c83bb5379e0a1673678e4a90d9ed5d491079dbb3ffee50f1dbecb826d38dcf429cf39e15e6bae3ac3555b8ed95e799d4e9f7122d9a7f171d610a7b8e73ca55c37537f23af1e4d2ed927d5f95265271d3abf72d02ab0d41148a077c8f1029a79ba71c82181fa9dea2181782728a283a489a81ae4a5f9861a65943106943646f83162943f08618612b008018e4246c0f1a41b29d698020628105245071670b8030f44d021a4358e20224a0f1ee820830e4020020912523802094630821d00410e9d28c634cc910efe08ad3e6169da5ad0429fbac0294e7672e05dde81275910e3191fcc9a350035a8681ce63091298c63242399c5248a6c907ad43ab6a10e4c6d0634340c0d0d3b650f75bc466f7f1b556ef84643fedee0ed6fe839551255a3bac201c756c5b1d5e370c3b8c2cd273671698e3e8a718bd49d6b1f4858863eec131b37ed6374f129d63e10e79b77ec43145fe8c79ad6640e7bd8a358f6c08a40d4718f32dea375ec10083cee0134797cc112faa04a431e0291a998a31b04f18638a8f13b8810c41cd5f046358c518c62e42218be28052544310825e4600415c0182a3fc6009554a0020f58000216503207e80f481a5b400336c0be9364e095ebf365053ca0b155460c6210eb18053ac0800ce8800640c081085a80832774821aee32473be201c8ac98a52b63a91358e4110f31d5c96975ca565c9ca62da925c318c9b0463cfb22986948e330836a4c0a21e31815fe5e636c32944ca2203543b4d97052a40115693285d0d4fc4d6f7ceb0ddee6e68e72e56d7456ec9570324ac6dbb8e689cc69cbab88731de4c48a3cbfd1966af6c18b01edc3193608236ce2918918e8c1185fd0c33ed8b18f6324e216d2f0822294c50e7d34a306f6e81b51dbb1083dd0421736c0859ce4f10d44c4e012c680040fec01167de4020cad58873f5ea0077b88234d0eb217f122f2a0d80d845f11b108358c218a278c000424f180903c008211980c622aba51062c8081bd5aac63b33c800556b4008a2180628c75188e44b63e15399662807518c8888901887d2c022d20420ef6378327bcc218d2904a5662a3da796cd33fda3acfb4b822a76cd1fe6569e394c72af4920c0f5a0d6b81d99a094d88c27e2a6a519089a1402735434add906da1c1d4a5180a2abcd5063647e49b462fea1cf5b40a388d6b9c6a60651d2812471f216dcb78cf2b52e9e4a68ecbea072d94600f7d60651fba78c23e7653ac79f4030c7920072de2b08cccc9e31ef940022ecca88f7d808112feb887336ac08c7964f3be3c409c3fe660890aeb231353b88738fc818831d8c320edb257ed12543be06985ad10e9978678b1081c7400032802c1073af0309684ef61153089c6567481573e0c042d30898d1eeb8011b820048f65802c65b98003dc48622b32dfc524cb630c888c012990c106067be30a64e0996b480578c2821eb89803fe55a61a299b7c639d78d0165ab5558f1662a10a3d25a36ac0cd5a3da781357b4e2332fc3c6e6420739919ae6333f0f88c6604f7994a8de6867d33877449e5dcd8c42354fa41073a50451df95c74ce9e020e738e836af6de23bd6dd1077da3959c55a37a40d9b9ef189461c654ed231761f04759dc612a7f2c220ccde807326a51167de4030c8ae847aaecd10c16d4621fb578c1328c110e77f8431747f8c63cc841076350e55cc390423ac8c1064bd8c35e12b2e443bcf1c878c50e22fc2a07449af1083578020d14f801082a70d9c5aea8033bbe91c340008103c4f200b2b472c670e480031cc0619655112e11d0b188ad6f961a3b1f2cd94731542e6063fe1db0401644c08125fc287f18b8091c76d10c6a4cb2576b5a2d5ae8b2a691d2f63976aec73635408225f80116c680c52f88f1db3fd1b33081224c620cc318c7b850a0c8d5cc66449336d04c4aebeba094e028251ad09046707ac31b3dc895aa35c1e31dfa7187a8d97e7354b3aa3ad7396fe166e5aae1b8a9a3c171cd3db2829c61e37c1dfbe023aa52aa5206cfea1df6f0c75bd8b89ef332b81e82d7d67929e8eaff50052b750cdebcdb45958714c422fd8a1d8a8fe78d66d0020d4328d15f19cb8006cc880132c218054e20048d397696082800045654f116c55245031f390256a9222523c0f9b364c0c36739fb074cd90117c85f095654e6134421041cfe70c10362060229f001138f68c396aa11ea2f65132cb09d0e79b3754edaea8a0345c84216dea0db57a0c2cf809106a6db9ae0220c41312ee4820c7140c0acdb06196aae74703403013be75a1bfe5007b1bb2176408775b88a1b029ab88b8f6d62334f290f391bc1f2b095cf7115ea800ebd9b87e5a8a2ab80bfab903636c18fac4095356b15fca00eafd08fba588baff8128a1a88b73b0b71a89dfff88fa9288807091e7983247c7108e1c9246ac0a462580425688123380193e100903911f51939e8a3b858428086733e29ab38c77200e783b2828b250b7001226b808ef91808909817f93d8a73c3f539890b60260a1812c1d21f1bcb801008091a50033ffe78024858043958849f288554108562f0866df28aa0db26a7491aebb88b79f80123588225288125800336f084a5f30b68500538688454f83fc1a806acb9276b9086025434c91087b2d906465b0785b8867220a872682ea0011a50c121d0888750531d78101cc1c19bda41078ac228ba9b0fc541a253c90d68119de6280ecf39a9e8009d2a6293f1988f72c10aebf20d10148b4e7307d7199ab5083579c8a669dc0ffea81d813037aa1087756088760007030107247c10aae8860981248b1007793b3d6fd8248a90066248843688823248021ac08242a00121b3000b001206983e90744333ac2c33acb808608002304304b000bb1238bf7a800c1826915132fe8cb100845b9f34ec98842b3399391f10108193b93141bcb10e2081349003eab18923508341888242f8854b14c1f8630b36aa3febd08013589924c8022c800347788561788657580543200443308557503a63f80553c08442e0045ec0044cd8056230066bc8c5c81028cdf00cce70b40704bb50134cd0103b7079c650bbc0b7aba872f90c895ac7541b9d264a35bb730ec8b48ee108afe6b80a53f314339187733195fb5847860897d15cbbafc08afe380b7f040b03f947b35ac24c63088264c2e12908de89b14562428490860d318562980550d8855e508421f000208100e8a3988f8ca5dfabb2c89a25113001c12ab31d89b228dbc98761ac8ff1b8c362feace933b90b8098e98b2c1389ac8b5109f15426434411ec338234c0824660842fc0812829010f6802b46c0663880677898b9f9b8e75aaad1bc9bf25500122c8992948056b80852720023810844380032318023858821348021d00cb4e50054168835f588c804a94ccd88c72404071900685a034cef80cb113bb75d84f7c41ccf800bb16cdae55e19bc2239dc499a2565915be938e9bd315d5da39c381165e191dcfa18be7c00ab4c0a372548f6ed140d41c8b5d31936eca26fdd0c746a2cd2f01c877a99d262c88311dbdd2333db892865e900324c0010fa00112d0001d70812c500531d0011cd8010c2501c61ab8027838c7b2bec65a800a382c1571b88afe33b9364443e873be0278ac3f35be28fb3d06b8804a3db89378000880008ab1001d388135909829108532f88024c0045fc8843718855378021070022618010f808352f883326883553086729813117cbfb5f00d11308222208122288124d00227d0022c09011120024298044338041fa0802458020b20820e200243788325580341e0046538aecc988cb1e10c79a98662b0cbde949769b0c27478c61cda34c11ccc7920cc74f48d7291cc54b18fc20b0e7e0d8feb68afca44351264137094c1937accc963a332d11633f10a71528b76089afff00fd5a28fbbd88a209c462ffd92ad60c2f673a46c3a48143b4871e09d07e99d83e8860c4188d3fb0663a085fe27f88013308532f080227883395002a8dc0553c0833f588387d1980a20012f53be9dfcbd8d0349335c2c04c0c33d8cbe29ab3895244332a42ce5641f3bac808d23d413d1009141812578833d803d1a08811108012c4082372d01beba8926f0045a08845fb0b9aac42209aa9302a8a514188225700212300228f054edd1813ee8834230041fc08029000208d08121d0013f30843e480343f856047c14617434e42a076830865408059e31866df885d3824006028d774046667407b71bb6d78d5251c38d741c36d2299c785041cc4422d528d8f1b00ed07c96f1280be43829c9890ef2babbb428d2cd1c0b7b548d78a08bacf00afa500b38398beb45427169fe07b30a8beb9d8aeb0d0b261cd3949d4288404283f8868888866af8865e18054e688124388112b0803a308552408334688462d8051ab03154ca18ec0bb2263009ceaa800f104f0f6801ec1b4a417c001998ace78bb28793be349c251651914a0592c59abd8bbb9187f1001d08021d488234f0044ef802fd1981130882166881e3cc119ac18015f09e5168066f1013a0b3db0250261c38011c68822528822a780238c00223c082343884b384820ec88225a88010c0811ca803b314843a0804701d5746315179510869d8cf5d68046090066a40d75f5086c6b088b80b1c7408076a8806709846a0018dda4da2fb682de728c7cf0407dc8807c04bd254fb4638fedb28c7692fe2e039df200bc9491cebb8d286d58fa0898f259d96540127ffc847093a8b6ed88a811c17ad0087fdd864d343316fa80883383d92e59dee308647a4843fb80348380211708219e8001628011479a55f4209548a920ef0655402c9903b11f73938971c891ca0803f3dc3a34554c4722c939154f549c3a5fd4eecd3800e4801c532023770811678834790011a2881fcf1ab4a1d819b810355808432a0012978056ac0220aaa87753a0115e0002a388451340222b0835830cb37c00237d00238788364a5810ca000c202e7c325044168846450b4176a8c68282165208654e0844ef0855d780662a8065be092742887fe283b779886593086d382b1fecf180874541cf9f80d5e4995b0884c37132f719ca0cf6195d8a064aea8a0253d8fa07e0eba389aa306429b6693e8b5c75411eaae9893eb0de5ebb5977fcc52167397317da4f60348d37308d5eb97a1188a86f4066538850f20814e380242cd80253882fbfc110ca8000de011f34c389383acec749881bbace72b1920ebacfc7198fb393e423509318c32290bc9e6643e8b19e60e60e12378d537d88545a0812e339224c8810f00810b908027c8813e90822640025bee80165083571887ad80961cce960d20012900e86a550110580343e80442f0833ec0022c488222e8420cb00054728119e80343d86d4270046208d112ba865fbc0c6b2086126a4b4130fe855430865df88550f885decc348198a405320647180546f005615086757088fe70077f040ee1308b3ae98ad78096530bd2662947387b96090a27f25813db821638b958faf0695d610ba39613af306aa30e0baf90deb010c2f085f0ee3d90ad10976cead8db74abade0e482e8eaae46b1041187a158c870188ae391066338065f38053f980336908252a81fe1ee5aee8c2cf729810f3eace56bceeff4189a641f91a9321b7991f544a6edc418f2a1326b1ee6ac2d328dc1802f48020c303963bee516900104e6980c68812070011cf80064fa001d033295e88368d8cfebad2d6d51011518821380823ed0823430c53a28844e88053890822580028639cf8afef180363004e4360446808543d98614dd06616c8c6750856770054678686868cb4e5084baac069ea1865d40056f20e963f8034620866128860d290669e0951cc5d7c4e157cf299cc6212346561c136c95b9980fbcbd0b00ed0a13dcf5053f9a32b9a2b3189a9abe0f07ca526f41078ff5de82481009e964329d9034e1e44dc64d7b096be6e90e84f8866878d963f80427b80362b0053530446016b215414f90aca50868381be9328a19be299bbedccbce1bf92bb9164f0b103887114979873e343c8002d838368c9887d111318377643a3e1381a5f3b9be8fd080cea2c932530a272082b8f405654027a35e0229388449c0f341ef8335d0022c3884428003fe38a0811f2e1f9131190dc00242e80338f08341f085167a146b8886cc607465d8055ff0834700866d30064e60855f28066b4887683805e889867220e98c568662f84d65089cda0de5ab905d4b76073cea2eac58a252b15dde35b5493e8f8bf555799c1620f475a8aee7a5469a5d179af3d81640e28fac107640ba0b81302b0c1fbd346917bfe71de21953801c65af6e1713ef8eb1560688308601f1055e68044758843418824140052410011250aced5c5a4145771671980688800b4e6c884377561a6674371f878b1810d0800c602cf391a5573a090c6801e15b66e5bc1816c96691916b0640011cf87c41fc801b18b887b1182003e6c87a000e701f10a0fe5348b0835f18975d17782c985c0dc8024348832c1804c3ed8337306223a0012310810a10be8a19813ee8844e08844618056238b460240665c8ba72308669208636f8035600086ac44c7132262d5cb86ad5a2995387cea1b547c06611f3264e9d3c79e8d0b99b276fde3c781eedad7b0712a43c93f6ea7d9c570fa4c977ef5eb27c97911d4b79ee74ce63e7ae9dcd79ee30ba6367f49dbb9d32e7c964273365c6a64065267d67d4e84e77e6daad6bd76eebbaade6b482f36a0edc56afe0d8950587d66d3b70ddc0892bdb6e2e386fdedcbaddcb0c5cb86f81037ff3f6cdd8274a8f4819a3f4e4d31f25446440a0e0e001030708362f5880a0f382cb141850fea0f0e081850b203a3cc8f0013303cf9e3f3ba84dda7205d2b51f60a870213385cea5773378901b346807a54d53e8505a830b0f14a43412216149090b1f40b8a850c103ebe5a73b8018b246c9094f991641f2e54d9ed37aef1658c072c8901641860cc98103e70d166b404104164de0408307153cd781148e18d24927a6f852cd36d7a4734d35d728238d85d34483e12f769042cc2f8dfc528c32e2a4138d31e9a8f3a23aef54c30b63d148736339e684638e37e1b8630f52309d34a4502799d48e9043cad34e4a2c3935934d4c7ee453525bf9a41395ecb4e38e4d51c9570f4e3121c5a54e4cb6a3e5555f7905d44f6669a5a639e6d405175c5fb5e55638fe5ee9c5975e7deaf50d38827d33e837e20c06e82cb490328b31b34032c71333146142050f389019030c7c966967081ce0c002b1758669a8c5558081051a5c50a9031e8ce05c071528875968178067eb0797968a00a90e64300206a55960db020784961b03be618001a8a4b1a05a06985d10ec050f5040ed72196421431fc414930913837c024928c57803143bf258604115f84d510513599c90c1114bfcd784061e9c302007a6418083066bacd209268e54f20b34155e130e371642e38b41c654530e2c69c8f1cb338ea0424c3ad61c234d431b39844e358ca0120e350851a35739e58485ce581ea51b124a4cb5640f533287b3d4472679e4d15350c1e453fe9c72f1e84d37ca78334eba3a71d94e4e298989d49663118d9557636e95d49a7689f39558d2f045575c6da925d75cde9c35769f79019ad79f830a33a832d17c730c25b38052cc1c653c9186092aa0000168c5c576e9a697620adb67a5c6f619ada15eca9b69a02e706aa6a759db81032d58d078e3a38e7aedaa0b74e0c206c55d90ab6e0ec86ae9e595b24a020d2e74d0c105b63f70c1724360514a2ea2c49144087560528a3757b15302041a1491c514fa4281857f70a441bd09179c00071619d8b66a139df8d1c928a5b0c2e135e26c930efbdb84630d30c06c43612a7658334c20c418b38b2fd7a0e3e28be0818e727883116b304639d2a1a36aa40c1dfe42d148523642259dc0272b2d7189cc32f81196bcc423f2a8093bc2218d3fb5a319bcf0852f8e518c5cd80218d1a006c88a5295a058654c5b6a9396cc921674aca987e288535aee4297b3cc256d6fa9139ffaa297b41566507bda53a10aa317bb7d4319c62886301e0109483c410714e09d6d3275a9d23cae71ba72dcb59893293142c0029ae294e14853810ec8e60217505cb136b3c65085e634a341400634a081dd596a90a771c0b22c759b6a3d000210304e0646b300d48ce003aa01010832e0821680800652c0400794208736100215c6489e51c081052d60e10425c0c2240e0107222ca1083ac0c20f4e901a1264a1091bb0cd6588c089550cac12a8feb0c635d2c78d6d30737dcc7cc52f92690c399cc2117d284430aa01c075b0cf1ce5d846395ca1064b3050193b5a888a8008b38d0c45234e63074674e2339450b02357da49466e920ead7883179fe0c42718118832b4e10f9890831ad6f0075f14036286f94a98327226acfca44d6fd2d23bac2416be80ad1d3f0462d1fa3236bc74632fe1d0cb4947f88d6884036e07f1d3db9cc80c63d03417bc38c63112e187417c80029114236c60e7ba584dab370cb080730ed929e4c42653649ccd24617399588906022308816a5853a9e250a00216f080712e4082e874c002a7c9c00524e700085c20037374ce073090b9355ee6545f5c160b8265ad0a848004b8ebfe400b8a608809252f6befb00007b45084261ca20f75e8031cf04384262cc10949f04011faf0867991200224d00009dea01f55a46217cf48a6c29a99cc6a4c6363d930c61c04e186f34d837db66d598eaa218d40b881b0d15086cba841d31bbd30470dc90a956c8295965cd0693c314a3e9bf691768cc3186a0801083ce081ec960003e041c21adcc0883fec0d8bc6f82174a59694ab88254eec18873900a58e33bda36b5f539338b4c296b279742c3ce2534b7bb4a7c0a0d44f7f328c6108230c4a30410e72d88323ec20074aa081063950430bc06aa9d13c8e0119c09d1f31a59c0598c65a6be495a74257aaa5620a3898e92a063e50c9e06446afb6394dfee61459aaae6a2e338774ddaa382c46a766a65964ac6b05408004229c8004388043278a618c9479851d2798020d5450882560a10a5200020a9e5085285c93106c58c210a6976632af210d9df0842952d18950282343c9bcc63ad6d7be6840c316c4b0c61e7460875f48831a16f24602c7518d9356c317e29dd12e6c448d627022b682504314d0a00445584381f0dc893a6ae691787c0467ebed880749ad24f854a3144dd8ae07449020def9a6024708441a2c4b832734410d9f20c656ba94cfa2f8c42cecd84a37acc4c3762cfb2b3fd99a58eae28e23d2052e6be3d34ba5280d71f4c918790187320a15a86f040f149048020ddc20860fcc20092da00010fea090810f9ba6a997b994eb6ad3550e97a652c68171058ad54705e95854cdba8c713a6c29deb9e6379dd155b31eb7bbc3f9d80177749d897343815c7d86572d660004542083126c205aa6f90e0d98108420a43c109ee00431a8d10da3a8200b5a9884210eb1842568e1043758820528e0021dd060092aa08109b290842663a0044d00c20cea608842b8c10d7f680430509b67756c431d18524528ace18723f8e117a5fd841f72cd8437e41a0e6b604314da207736a8e1096c7083139e3084263c81084f58c31bfe100839b06110bbe8d1461ec294a47ca4f1f1407546ecd1917ccac31bd4e0c51fe480831990c003ab3a5506c093010c9840071ef85512d8fee0074818231a334757d5aa5ca5b308576c6789d39ab454943585e5d874b9af10e532c4b87c4530dceed349f37252012f7fa5b748851cd0c0ee37e0000320c042192ed08148ce9b06bf8c7853e1384950296e728a14d55165b5471f63a636c02c4d68f60dbb0de3d8fdbbeb40ae40c3614b69a654ba32ceee48526cd4dfe134c75fddce1cb540088c401abc82313483ddd8053b34c01434161648411d2c410e3c412d999e08e8c0090c8116a8c61bfc8020f4c110ac8a0664009955010e44811ba88232400385e4593ad8e03644c31fbc8220d080db3581124081134841133441121c411238411aa4c111d8411fa0411aa0011ac0c11c30810e0c1d1a9441fe14240112a4011b7c8112b840eac981232883394803c4284331504343b0c3495c1048449037400220144331fc82283482128040058c8018a4c11e08821f30c108f06107d04012e0400ddc0011a0c11a3c420a5d118a581e8b284333948220b0c1138480df950127a4827b6c4d528ca2519cc996381b755d1beea1453794d4f2bd229eb88560049880794331448614b44077e04eb07807282908ede8d88aed8a6c0c205d3d80e3d415f959cea868caa6849ff61d5271fc5b67f01fefacd15125081f898a674852a82892e6e0dba86cc6bfc58ae6588a71ccd1076c5f0bd0401ab4411d3c822954c3388cc3092c411f2c41122c810ee8801140c11248011604fe241664c12abd811418641f1c017880d61112c10e3c411dd401304c83fe4cc3322d133345c330a8811124c113c0c11118c8101041140c410ee440113201114261132041153c811202410e44411a04821d1c48de111d16a0411ba881134441dcbd812d40c2287d811c009b39c0039774843d604937a40324e4c00dcc002958034128c32e0c020d5c400ef8a41bccc11a7480abd891068c400ecc4059a10a097c800b3c011aa88112a8010f2041128c40e781070848811278d21dfcc12328c3043945ba141b5798c557a8cdedd945d9c8c55e78038740a661dc489f489130144323884227d4810c4c4b5e95405981807735c707588026910706a0231e1d8033fe764a6d8486e4888e8ffd8652c151f825876e18ce38f2d1058c8082389520194bfc61a36e2407ffb59f6e6a0a897d1118d5156668c0ed04c109a480dd31c110ec412818032da8c0f4fc0014544012bc411d1042cec1812074822110c21b98a76389561de08007908009e00021ac422554822024c11dd4993110c3345cc3fc6c033174c21b0c811200c114ac0113ac411be000ed180111d0801234c1114441babd0113a4011c20c13fde000e18e81194c10ee4400918c11f0802163041110ec114fc0d1f7c4112c41d14de9d1c2803cc0c853a94c308f108260cc15b3e022aecc22e94c22870020d38c11e24c6279c02243c022724c18771800794c0104887fe26ed4019ece1767955e881c00880470be4c0262d5d2801c21f8c023e2557947c0d4555145938e6b5b98d2dcec22c9c022d94822894c22e1843dd58913444833718830afd4108144107a08a6956ce2455001e2441701c8b1d9187063c5c19a1d8a770caa56686e3885f6c0ee3c339c0ba789c18290e8e6506ab7c07051c00e4e09b82884ea8785cc785ce5cb98e82041c699cc66bb4800c70e96a504009f8550760c1406a813ff6c109be4114ec8727c4422114010760c009688003142a106401297102271882c19802813282c4708332fc8231d0a02ab8011638c11b14010d64c11a4841ae49c10cb4c00cb45b8536c186da24b23e811bbc011bac011670fe5209a0258bf2000d188113a0410b84290ed424133cc106da81202c421a4481225442283c4276ae8c2f38c111d0800e24811a74001aa84231908221eca913b8c0073c0127a80227d8422a84c217ace3e84d4b0e24c1ed24ecc24e8b0be40027bd4a6f98a30b90000fc081228cc22e14433ae885cca5c555b8e928aec90fe1175ac497373c42595580bcaa811db4411422c117fc8129a8c2319cc227c4c11ef20e6c041d69780004d44606888082749568f8db6ff6d81a81e36c7006af78c6505d00023447d059cbdb860603a86aa6689f6620c003b00667284789dddba8f0c66d264be45c46670827033440b460eeac58c6ad1299b520520b908021d20010fe94010a18c116d4c11d68011cd4412174c22a18c224680216344b046c000284000754c020f98a07c88014f001841482215402345c833454c32e84c234fc0294b90226e04008cc4013a00111765e08e4c008d40b0ee8001338410b60810e80400bf81d1324c11ca427bf1a010df868fa22010f10c110e8c0e611413bee801838811bc88109580b05cc40dc0d41140c821a90c008e0c009804008e8400828c1277c0243990229f0422aa842143cc128a4821dfac21260c087adc6dc6a9f69f0ce08c86b258d800b041d28758006dc00faae811ff0cf90665e2070829d52433be8c5ee8185b3e15e9cbc6938340324848008404b6b64000eb0c1114cc11bd081fe20388118b4c11ce0811380c01da5001098d568d4060a88c10634c0bd110b674cd21df5edb1909f7770ce66b0266bead1e4da8665302ead0c9972bea6bd55e3e180d26fcc15031895a8e85189055c57d5aa683007ee2887e2cc26065c0052699f0764012ae4421b00c10704800580800af4c17ed42e1f0802119880655c8a0e1c010e488007f86f1fe00e5af155114c811c788223500230b016fc98c2b83e43210cc10eb84003e3401dbcc113b4c0afaa400b34b00b88c00b12011fd080f5e940192cc1132001129cab13d0400798400e1cc113585810ccc010d08002b2000ee8a40397d5c695c60ebc0223a4c1a182c00ee8404aee0008400127b002305cfe1131d8822dfc822dec0231f8c244144207b08031df0e5299e6b434eeedb8ca76fdac77681777b0302ac40f27848222448118d81d1b8402309893953cdb56bc8556a8c359b4542b86acf5c5180baca3add4dd11a4c11a080220444a074c4108544a6f88800894c68ba1638b61c61b6f8609c8806548d5344ece653c23a8b0e6e1bce62469aae3acd86634f26d76a3501787542b676844dcbdcdd10368d7866192ed5c86f6558b539d46b0f8940e204109681f0364c12f2c4221984106080007789f036c00f5f48140c2011494800e40c13f66810eec0014bf012b0db3d191800e2cc12038c220bc41192eef35a48229b84227a4010ef400075c8006ec801dfe68c11bb48020f5e6817840083c70098461077ca976c5f65595405c91c70223c114e80010dc400958982e16615aa6c10c8087e9469203888013b0012108421514b707b80012e0801198c244cc822dd4e92ea4022fe0a12af04f26b40113880112d0806886de8779802569c0079c1e79b04076e50b740a5206dc002700832fd8022900021af400123c011e3c822850022400439cac43950c51f2bd4538440324c8c0a1deceb468df077c805b81120fe4401908821da8c110b0c10c9c000d1432233187fbb91f57376e6a220e3722c7a8d02a66a0e303f06ddf9ed1192547b314f59031b2ac24f21de5861e65460620f5e4e6c665648a7330c7dbceca03fc80fe21e4c21714476ae04e057c18594241e088400700c18803800010400240400790401150cf121c8116f4819a178220c0011b4c1d1c78b21ff44120f8817f60c11318c21bbc811f38c2334c038560832b18821f10021c58210e94c00c3801f594c0e941b483b6c00e9000a36f1722c2a7976a806f90003fbac0ab7c800ec42b0804010e60d214a081eaf90123100212b8000e10810b68ba7454801bb04106b84120ecb61a10811140cc3e3794b7a0102f9cc22e88022a80c222f881e0455f1418211cb4410e4c810b20c85b798011448112a4811b68fb1a2481a7330289a4c22ffcc1134c018cba411b14de8880d40f054a25db542930c21625c10b6fdfed60fed26c8b70a558406fa4705c3e81127c4114a8c1ebf09f8fb1ca8d8deae236b26ca871f8710a6c924a33aab167189c6fe4cbb2cc516a92400bf446a584caaad006689891e218b9655c4b918dd1176971a680122875e957c1b00c90c07fa301108800b4fe00af80ca03004000180b0388d55da9ab966f807768406a6ac006745e15ac5214c89a163c011310421d34411afcc1c98eab456241082c010924c12d95ba81f6811384806982d20c68b307cc80117052552e5949a62479942e0dd0c09776800ce8e243a73012e4c01a388220e42209dc4086d955570d4b068000bff7e526814027c86343f9c2095dd12ef002ff34141b74741370c223544220b4811dfe50c222700223000220f8419f3f02251842e9937b14d8412010c289a242cb86c2118c000dcc00fa96012308021a70826134c3293cc222a8011b9481264afd1cccc10c04d9849f0af082000914f707a8caaadcc0dfbcf40e746c0f8880fb816e917163f81d3957c3268a171954598e57370e327ef557fb91e1ce915a070b36fa945b69006eb406087cc01c05c7ede80a403010c8604141810e1e105c30900285070f1c4464e0a145870e202a3ec07081440b10241e567020100102010c1c94448012c1020f2a2e5868c8a0c2850b1a7464a8b0634d9a3e820855c1b2c65015234dd2a4e9446c1ab6669e3a61aa63c80f1c1d1ea4a04953a443060c16316030fea2c650a54ea6ea24914263878712248810191262840e24495a78f030a3830710386858cc31e449132744903c4992c1830b17347ae0005123acc5c73858854205aa18b059a548fdda656a962948a29cd07063070d923a63d444f9a2e4cb273b8a00b9f9d2640da04a8c143582c4a80d2045aa489d4a65cb118910315d74d061c7450b174dd83cd1de064d99354ec4188ae38142870a353736ecf0c1a2870b1b2d8ee820c204080f3a68e4b850defc850717448ac88185248268a1054a5a60c0010d22a825020f52284105577280029428a8c0bc07103c50200a04bc2884131c8a883f16281041830c2e8468a4824a42a9c30651f20f839922bac03cf32c10fe09220a00a460861a34b0d0bf9656b200a5074ec0e1bc0e204831260b1e0092021afa288284359a78631047a86aa392570c11a40e2cdc30a5184ed26023102c80d02107370c31a40522d240638d0a309881041286484390a4bc5c638d4afac841be0e30c860841e68b8c105227008c1830c42d0610635dc38c283113e1a8206504dc0c1abaf3a286154199eec6b4746521184135f7639650d466cd925142c50d96594590271028d41ec4884134afe6884115236e30490404001251450481125144a1e6164145b4001a413544e31059023747a6f04173cb8d103163268818d3fbee0a187237a502cba86f8b4d22187d043f5031094682493234668330a2c58fee8a0ca87047a88e1ff6642692082283e7021810e5049a1035b92c843052916a8208314c480419b06e44006af1ee07343871352f03d0fced3f1830b3ce8604006325820210b2d32efbc8732bc60519b30a08144870c24d081005642b062a7190011a1862e509588269a4061082c9a58a28928fa78c3ec3ad6f0c310299878220a2448d0018824d230e4a73adc48038427aa4aa30e399890e289359e48e3090f9628c2be0e3400c1a62a45d8410943c40015041d94608206c066c8c0820b5298c1b1164a1881050d1a5b1c871616cd19104a48e985185f68b1c5175b72414595704f2986173f6640c38e4018d9c5185e78f1e593506ca1c58f474c79e4145bfe30514414524009a4114a404905954fe468c3891b6ccec0260f48d861049c5bb02b0a29e6b003affd20aab202a2f9bd5fa49a181bc17f1232a0810e20610d5118810704c4802a45a45120ca1703101091032164641d5b48fdfc03a38b49ec6713db208750b23382bc4841075060cbf6b530893146400ab2df851cb01f0f58a02503f159051cd801108dd0420e100112d8d310872c69214c7b80000a10c29db9108608a149053c70829c95402d9c988421d800874e18e20449280c1c0cc109430001042e38410b4e1082211ca10a4df083d9040189b20dea083a18420e96009737a041106d58031644e5821c18a10533180211927002c75120807d7141129afe90041ae8e8021998c1137230831bf84f09ff2a0146d2c5272822210a954805296cf18b5cedc217e19a0529aa350b56ee82148910c3b27691cb63f0c216a898052f4c810a6c49cb14a938052b44210855a0c2113df1c3f69ed002eb80e022eda141229da004241c0109db3c8279246635845409401a6a880370a8218be8e43c14d0806adc5002f228e8421b54e0c80ce2800368b00007e867851ad232842c4864521b490d1f842191486c42130b21881252350a5cf0011da001463e9001883040870772d83947b2209f99a87e2105908eee374e0b45348428110001fa6990087ee82126f24a253140823e18020b4b7843270e1105135c710d4b9002510a71fe88276041319c330212746084c1156e2a6818811d3a71364364610a7b5056212ab1083a41c20f43d00111ee438411cc807520a041fb3667a9f39ce7661890260e667029f6f8a5035298c21a4cd001259480028268de2f7c91d85dd8a297a8a8dd274e318b36307617aa488206dc008947606f11a030052d7af189473c2211a078842850810a5b2c47147248021e96770a206000041f18010eaae30210fcc505331841bbf0e3028d6248a2e3245a954ae44405d9473e1048888e76909d0eb4e0031b1d49d53aa490835c68630e4a508c24b60013e273640e2ac88bb41bb20d6a7049e44c888b7ee4000b6880431d95e0481c32c3175190641b0de1035cb001fe8454e003371ae240067a5d00082000fd1cafd388c6000b8ce0048d0b410e08b18a3339a10f9c78831bfae0932ab8811082e803200461083912620d76704489fd00883e88af6e8db0831f7ec3094134a2128300841fd4f0074704c20f89f043a7a6d0842fa441076208c41cf0a00626a4a1098bba594dc03205cd15b2735ff9974566b081fbcde00d1a10442a5291cb5de482176a564ef378510c561a43ce90c8c114e6e00639cc6610be9c852d60893c3b8c22148a40859c47e33d52ec221534380f0634400199d4e43c24c0413649e0021298ecc0c61de7be52682106e0cc2b2d404275dc5a13197cc704038aa8cf32c4a0f2c65789187098c516923105fe4ee84108ea75c80afaa0908a6c633b2369d5cca9a00159202c9d76510f231ab38b45649fd71550fd808d50f13644002f1d50426106d1289e60084528820ac8dc8942ece1108528021ce010c9341881048670c420dc50084eecdb117e70442702f1064638c211a1e8442502a16f4e38a211812074275481e65070a2e10c6744b238d109529882129dc87825fc2087213ce0031e10c1bafc4481af28617338e8005de473528be8e00948c04009e4400b53d88218c9f345294ce10b39ab6217b3f085308a91f4629426118d68c41e0461875018bde8c8f1652e41eb8b5ee4ca16b24cac2ac6971efbbd47032eb8c111caa0041068a002548259fd7e84c39aa2fef30216621a9f481004179cab3f3873032398204e0542e020df2ea8c49e08020efd87410d6390ac37a6929139f1ba36ac9a8c18604208a6e4200bfc7686147801c2e3f0baf4b3bb86105cd3871908c18f0b50e695d8809d018000e31550c742721e4b126109432041145e51082c60c108e5ee031ae04065273441ad5078830e6490063eb46128516802f187a00627b8010d4f10c313de70041af02607a44cb18af790063f1c59118ee044281ee108461822598d00931c9e10342290a03d19fa40472a408004d00232a00354e00356442f460003d6c0146487178421b178c11814eb168021176e41e984e1187ae11436cb03ff801250819768011592035c28fe6b1790a7134221b166a7959ee07eecc7d66e820686c00df0c222eaee6a9ead8748cf42ee47814024a018e952dce3733e4049c6c903f0220dc460a204a8860eca625642644888674482bdf6c99e648dbcd0aba52064841c4a22460841202ac180c4732e8001204004ce89bb46cd641c204aee67be3ea4f27e66a0fec3028ced675a8200a0a6da0a4a6a9684024aa0058c40077040100ea11380600862a108d2e8088ce008d4e20888800da4a00ffa000788000bde800d74200500e5098880dc94a02388e0733c2004286004ccaa0dde600d72200db0a006a44a0dfa206fa2400ee4600fe4400dd2060d986004b0e63dfa030370280332aa7cdc237f2ec02efe86400992e00294009550e1178a41186681188a61767269161e0110e24c19e8cc9748811672411d7b81564ee1166821394e815952e11778e11718410e766e978c2e159c60683224a02ce003a4493e70488816c6b892cbeee02e7f160848aaa49aeace216c4205d6630a2c45059490a12aa8642ea4ee2606bd48c6d71204d8882dbcee29414682e42a40a642ea9ce0ebdb1a04877ce00104484718635f2ca02ffc03482e4f087f04c126a69ecaab0b032000b63042444808c30203a2200de0801586618bb6a0049a40704ec08e94a009b2a04c0cc1141aa10f0a07c4dce00d72400ae0c00866800666c02219c53a72c60350a705b28070dca00ee6600e1841fe101c810ddc400d388115468113eca00cfc40c8e660228ff1020a2c039ae0094e00670a6c3ddc43193be03df04a9190801558a91d77e11378a117ec9156728113d000158c21358ba11d79e11478011884c1188861169627174c81114281d14ea1574e29b2e2ac56fe6c0e4640ee28b28ce252881eed7e32c4ba7e045f4a0a3983e4a46c82519ad22b06ec01548007d660083ca462c209a2982662322f9f5a26837c6d672a6410c36b212208461262685a46805a84bb422a8282100c1d40f6aa2467e8477f48cff4de6e10a9262524c8ba1c80c1626a6a0c2a2274e24a54e00142200b980007e0a00fe000084ae008a080e654030e0821e4a0d28ffca00ec4fe8708d0a00ea2a00c926c088c208da4800452e074186906e0000d9e9212064110fca00700e1157ec10173c11576e1110261101e01140c2107c0a2a2faee0144c002f4629d34e446cc09402a11042a400954011864b3183e01146ce11b69c51608f30818a118e8cc1778a1e78ec17772c517286159fe000490000d1281124c217980b31d8141b14e21117260546e664534e02bfcc345626da38e0b2843aa85682224908baee423a41e80044400212ce23c8ee00e4cb104180075d6e707ffa3ee3464042aa2257b4d412e069f104cbc30af6aae6bf1d47355cfab6a2a4af1aa70da24a8bb5062a1506861546ea1565285a68d55958dbc466ac11a6c2562a424fe744d20a0684a98048c3a41fd0ee1044ae0049ee0089a600a9ea01256a1110ce10d944210dec00f68200a8e8009e06006b6a608882004e489062c110b74c09d3ae008d2a00d8e4010e6c0df86600d7221150ae13b40411544e1133a811118c10910488134e439be22201f007d50442340a0681845032c40095ac00266e0137cf41e3f63165293184e8116d48006e4001562b3184441e84ea14f7de1187c0118fa741612810d0061103ea1577281b17a81174a811348e11142c1147221112ac2d634840510903180d556cf106b98e6be4c64c07c0448f6239d3224a5548e02e412d93400097ac005cae00dd400091c6d279b466310e046845228194622428afe467ea625c99024250464ba53412c4026565222aa706262c461f04b81240af4e66e25d70b5909e200966801180c290f2063d8b3240b422730e004b0a010880008a48010e6ad098a200986600790a00fb0201056c1140c8110da4016d1000bd8209286806ea6ec08d080109a0007e4f22b86007d3a0007e806f9dca08f9222073e607390401058a11418c10ff6600e9e200304244376ab326ca291a0e8034a2e5a2d000430c00d75e05e4fa0137241e880011552011892ae97182107782007fec0e884a11780814f7341056f36e9b6ce1680c116a667684fa17b52a11776a11d75ce14d2e032cb834f2ac339edee4248aff0ea564056b2681ac269f92585fcfe6368cc030774c4645a068a58806ffe600ea2607827cabf22e2323b2f22584f407dad565b6a49384857b3ab616c2882a46dda2ccf8636788854ea6e43086414f4a06284bc6284c108004930d7d70a0f25a2c801cce7e52a8008e0a0a7e28208a4a0173da110fca04bfa200b86e01004e10870c008ea860dee200a98000d8c8009ab514728322610110dcca60d06610fdc000bd0a0fb68600d3cce0dca200a88c071941348945147fac203fea520338008dc8004f4829a5a80311c290e7ace170636144221e98cc133dca06d9e400d46211a541318e24c0293ee09462010aa80041441ce468111c07434d59495e29113f4e32140e58094118381d27e7c15befe66623edfc37e7a55e53642eeaa84314e40095ae6321f02047200874220af04490da4200e52d73fa2a4f29ce6ba2a6472fdf6210804c20ae49c882d9f16e07e080402088f9e148884aa70a636f7667a4822020a871d4a40a3a66320c8208eb2005a629f1422252064010cb1083c6208348a04ea207096000774808f0861085a72493a800898c0098e006cd8600de0e00d1c610e70e00daa40b732400448207b096c06b2c9090941c7a48008d6400abee0af54a088448921810682cb236176cb512eca227860082873b700c4a266a14f8b2114fe201578e11328e11468490e72e008ec6017ccd11720a111b03ab166a1178ea1086e801194200300a1178ae1fe114641b1867681134b4d5be90494710432ea2023ecf246a2261e35a244ad07634d9a3364232a8904924007bcd5c974400a1cc10cdc400afca00d28a5f87a8404a6e00686a02e902004d0a0096e2624063a87557b0c7d98840cc26a88d8d80a4fbe6840b820e062dea327954b892264a308242117f7203648825cf5d72ee628a3789fbe0b0194bb202af60350402049e00430250daa80e6b2400b8a00870802226ae204e2150b90c044dbf509f8980688c009e0466f87a801cac30576e00b0ee60de0e0b295a00d04a109d6f064eef33f2082716ce2023062b73ee0064e8d190bf07e6c824f3240b8448011a2a7101861104aabb2366e1642410de47b148efee71418e1148e411822d0768c210a64a011b0e0030c81817b411892c7eb5c504dadfa224cd53c84c888e72e43dc50ee78508369f8c6055227fcc7d4d6800dce728fdc00107a220d74a370960ce1fea00dd4c0058c000d1e632d29000196c0114c3cd46aeabfcad0207cfba007e2bdd8d9bc849889564a5f40e88468782310cfbf7668673a6820b6d0581da401eeb94390847291a8000a40bceefc725f3b043640048880be346006a0202b8d009264c008cced0b35a0b19180a9b0400aaa20299200149b40aaae42f52ea005b2b90486a00aa4a00974600482c0bc09c10eb0402e6ae66a73ef2021e052cea5224880076840063c805e35a400b1b4035ca071fe70a00d1c8108288e13b2b1eb4ce1134e293bda8013e84ce994ce17feac18d0a00300210d3cc00f6ec11746707f17eb977e09ad6da11148806d9200adecc7bb07aa260cfd04dcc0134b000374e00490eb6aabe6140bc139c0ba0de6e00fdc403b9ec009d2e00b88809068a07993200ada40dadb608e81ec09ee5b094e8009ec2207f6220794c046a9fb027c46c236e0583d08bfc62942188003345862060c4322e20422400633409bc883439438669ca807e7ce853ca641489210fd2b42f0e941bacd7213246330778432a4058080064a6003d280be410c0e88600694e009ecc0086cadf21a650492200b22c53109010ddca08ce3828a64200f77020b76d2fe3e149905ae3e0792a00a08c10d80200ab6793d2612ee16fc8431e0cb2e823d7488025860a975e253fe450498a0121ee1137cc114442110ee377a38e11650230de420148ce11b9ae11bcc91976c41144e411afca003e4c00e3ac00d7e81ce7ea14f178b1616b8186c217a40e113dc800e085e0db659cc40e5e69060074ae009f0a005c48070d4c00f026167f740076e042220800566600a68200e70a009ec40104e7a1178a004befaaf8860ba5ae03d0868cf88c0052a200bdc44090225f99fcc7a499a046aa00520c97ed78004e6782ddd501921424938a4c1018204890b15327cb87041838e274fa24419c22307912146a41c2182c6cd9e236b783ca1a1fe43cd1b3433547c3951e141850a141e3858e00002161a0e5c7870f080c14b040b10f064c0f3e582a13f8732188ab4a7ce070818081040e000819e3e0f14f0e9d381830f2b8024d1714245952944b0607938a3499f222b1d3060e0f2428b253266b40042e44815416f92146222050e1a0d5a2b7c98b16101850d194694c8004283871147daa4b9818549ca0a185c3aa8e0960241d00f2ecc98a1c40508d0173c7c4821a3430711342854a041e4b01b5081fefc91f329952d519848992a068a469b59ca987d3366ac982f5fbd669d2a6648c31f3b1dd68c22066c97af5dbb668d4a554a0e8f366dbecc70d1c285933681e6882943224a133180dcd891b3c61cfe7288218614353cb1861a5f60800167a5692083125fccb1c6174d3cf1052047b830450f3c88410308a23de0010b247864570b4ae820461a73e8a043466568c4c4127fd0d0c1072000e1861f8bb4f1c61e6d24f184131e94d0c41b83348486186fc831c8207ef8214820688854071b6bb82146146b54d184133948814412581ce18714f33d81c61a6c3821851c6dacd1a4081b9cb0810327cc80861321504081050c50f056520b1c7554533fbdf5935b48317a28a24f0550c001963675a8516f7de681134be840441145609103164b404104144b605184560eb4a4d5053834414413580081c41375b4c186207028010713ac5af080051db4801208209040c3fe082d78d001082318616607a87d201b4b2bd9261a4b80da36420725d8d5d905251cd1021b438c30830e2e64102d083bd8f108237f3cf2482e9fecc2cb2e9f24f2092847b8718b31df28f39c30c5ec420b29b928134807780402c21aa708e38b2db694278a2aa234d2c6812674e0020d33d070041247ecc188238908d2861318b6e19b1c69584884126a88a1861d8c00b206123a54a8040f761d21860b398871c4081ea891c81a622871c307b6c1db43126ef2b0030d2ae4e0041ad88e80840b29ccc0861b49c8002d051ad0f0441a71ace1c71e32a3f1061b76b07104081ee0c0441a8604c2d7107cb22146113218915b0e4fcc8043070f1844c413489030fe03134790f041084fa8f1c4119007d10413410cf1440e202481040628e7000461471135fb0146f1b4c001b80355144f4d091529000044a57bee443d7ae80318acc001094b38d14759751011820e47984583052db90457062d3831c310492c81441a58a0d1c6084cc0d1041a7ebc5144094f9c9081050e60d0810e43e0d0420b13cd80ae11c00b0380bac0f6def280026eaf341fd0810c54071a0a1c8b31b77101835cd38113acc10e8208451b40f18859d8821494b0052d4e21c25090c2180863a1317ca130ea9ce214bec8451428510c622c0c15e339857140b806117466259c914d07a015041774400c81f8c214d4b0b3d40d810d1802490e5ce00640a0fec1716950c3119c70b32620015b2ec090e6c4808428f4460e89a0015706368734dc2c0aac530212ca90840b88600a36b180073ef70535608b7f1d88c20cc6d5821e3c810937c080073000821608510a26f0c00548708428b0c18b38c802124204020c382d5c8fec0083308017c7c5110dd0c281129ed03f1058cf0958980f13704502d960e07e5a81cb5b20f5a842f90e79c0d3545318203c0210cf2748c19da62e3084436461066fc0821648d0842290000838d0421d7e604097500027b729021146f604251ca1104e7002093ce786cc44410d4020c1107600cd37e8400438f09bb5421002025ea041e1e4de387bf919825c208147fc400b68108219c865fe082b81970764d0026be50a096b700423fcc08945a0423ca1c0c420d2b0074aa48216b3800e0b95710c5ff0a25fbbe80509d9200745408212a8b0452f78718a548402124960c95bb6d7120a64400969c0c1675280a30e28b40346f802138c109b65edc0a152f8c2103c700269b1c0033940c31c8e808627cc8107af74c3221af108392021722c90c106a988363f4c41043d009f0e5a232d879680037ed041b84886ad0e742d073c60021a00e1840e64408293e3800724c421cb75e0066d6a53070405021c706e5ba2c180085a00821c54a10d7b60c2e5903003027ac00314a0018e309003930d014619c5c0313335bbd90d73019542c0a59c099344656a01fec20b40000870159f20aa274a19d410c024be3ef4a10e7d3901118c50853e0ca1254bf9560788008725e0a00c52089a0ede63041aa0210a38f0c00d944003e8558e2025c8016ddfc6bf11780b502e7980815542e0954cae34c7f2806a0492d80b481603518003488630b20b00c1117f18455c15318b5d98620f62980313d4c0084e400212bd30180ba5138a5d14e3a7238c431b2c01894fb0741621a64422f6d0825d0e0a5e2941880e902003c7e880072460098924bc03460cc20d52908218e450b412e8c00e6ba541054e50831d08e21180484422cadc084624421181307313e272de2038400341884219d22046342421085d6dc8095a900326b8200a6dfe98411298908334047a082a634214be408313b8e525e3dc80a020f0815726210dcf528221dcf0270440c07e06eec0f62423592534210d4e18c108001a020f2826d60c92cd056ca254622120279112e6f1a89b3bac1cb398be138a4f9a4b80a2208a99878ac90996b0ba22e0e00d7df04321b2d0042994050e4530a58133b0191a9880064508c20c643084370c415a1a18f73b5932021a2481b575cb411680d0818280b5c980aa4041450328823a789c0c285107aae7821ad02f0925d0c0081a84bfc43ad4031970411b38c1094630623ab38004128c805637a8f34ab4884e318a710c463c4114191b0f4b19610aa1d26217410dc523fe90040f1898020d92feaa0666308239b4410e728004bed4e0821e10c1098048832218a1081fb781128f808422dc4009a83302cb4a10c44eeb0588a807cce8a0f80425f656b42628015a9ff11f098a2008332881051f48020e88908324f4e0423378421998e639a4f54dcbe273c2070aec96415d80dc24d80006864083340ca20d4870821cf2e89903260f21150841ff94c08619b4443639618d0558b0d043f1e401914abca692fbebaae8ae2a433900ef9a72a9da37b7009582000a22304ca0c0642b5ad0421292d0074360610869e8032dd300073ea8b709920341be2b30822110e10434e8c313e0f086c03141030536a5032c20021d746e5c693099126450011c88c0363831b0fe501c4090402570b207a5800848001919900176010233607d2090581ea02daf92106ad0098fa0089d600bb3900abf60083a900468f009f822078cd008982063c6200a90f007a6400ba5e00b3c660ba0700a27681ca4200a23e806481002174077183040f803028c400b89e0068c200880004b4d200780000a9440758da0088b206500430aa0c008ffa108f5f2066ef0098e600966a771c6810aa4f0090153758f60076a200319405b1fe00149a0063c0051fde40253a30338e22c4ae004add30232a02c3390013c407e38e80268485e2aa1136ec11440e1001145047f9006688205857214f8c76bc73428a271024e002b9e0114bf84108ee22ac2373b44c1fe4cc2347bcc247ba3683ba6c84c00001551d1001640021ad0004441012530023b70027211797d80055990056521055850054a20077d0007cd670774030758600465f20445004027008012664a9dc12d24a20421a001fe130547c0180a11372580502a1141043422839212a5212d17f51e7e330327e00232c00206684a17900447e0012d40100c1205a11083a3700cbb500aaa100834b041a6e00ba3d02e89400b32650b55070895a0067f300bd4c10bb6d053a7000aa4100aa800096ed00647e046e0060290617df80308bd809194b0081e89043a330ad661916b96664fa7087fb00830181ca44042a15076a2a0939fc0088f000a31b88194400a13085448fe30021fa04420708d6270033da01a3390342a920322100256760446a0031d90033930401da0010c203f4420590840109b527f39f11610e0605100596e7214dc135cad4710d1e2014c800238d14bbfd41316f00153800998c04a498129c0633b868215bc673bc2a614bfd6980bd0005a56041c300227a00369800450200551c00127904d27300558d0046b800538e0353a000434601670302770800458f006781604479006a1874d68b03e68a00320e00217600117807f1d900210e76f17f001238003f435021a80011a100282e22a5a012bb348038f9412f7a30339a004f1d64f19700121200212062d1f4002f3c719d2086e15d0014f100ab910088f600afea6700a8c400462d0066a00095ae206f7c282bc909f38e50681700abd400cd0211dd42142b3f00881000676770278092dd1822d6d400bb4008171250778f0078a400ac0301eb34042240808905009a2000a2a340b2c5591a76091a2301ca2f085a2800a434909a1304321467347c09441105a21400338e0022e401b47802eb895031c50023cb00635c003431002ce82101dc0001a609e3290798002179373018842011ea0015150258260076dc096e658970bf000d96704d0c27039e12a6aba1349e00668d0416590015e6a4ab2119cc2475dbed398c6058a89e24ca4c81396660445309a34c00110000534a0014550054bf0476bd0042a705158d08c4070fe2150d02e437004c12205688006757002b4810459900655608020b03f204903a0372448b027df5519b9027a4e805a14f7001a906f0b95402fc100f6a35429b11417d00338b0948e644a3ad0023320021d800321f0013b10490ef627de02015fda068dc0093156849cf00951e0024ce05d4860024880067fc009be000c66a00673f0086df008c0d00bc7200c15591dbc309134b79f62805a9c813f2df00163f307c4d00bfcd29065470a33f75327f809a470737f100890000aa0700be5c130177a0bb6d0822c550b3b15b198806394b0a213b80bb6203aed4204ce82049fb40319804968407dd2222dd1da0123607d39e0a34d1069b6e507b5911306a41509fe74505ad10017a0067520088930089df00707763fa081283ae1010e210345f0016a400306c600d999280ef0048d5084a8800604a7a62c01012290a78e98b654411547613b70018acbd513b6f3001ce0023ab004ab4204246004270001388003d6036d39cb0120400434c0001b8018cc220240d0a622401810c09e38f10125002dfaa6181ce0044c504929e0045c09044f103351f0044d30056c50087590646322059d930217420451300535e00221c096d4394e4c69170e46032513bc18101fd0d20224a01239012825d002df42021a4709be406681100a4ea02c62f0050fd10451d09f8cf0096cd00204d206a8a03027770cd1f18fa8600a8940746a9003fe196544be592223e0026b5043a6c00bbe400bb99082b6100ab4c00b27280abb400a90c008f2ea93b4b03121d60b0a9c0bb3d00b11fb0889906339760a9f800a109c82b4800aa820062ce03793d1012cf06a33d0603bf0053bc073274012f46b4939229c0c204a46500851606a3cc76b6a2a5585f20010100554220781d0067620acb0e200d205131960089c00232ed00422e0b59fa8130b600490600890200a7bd0a5c9459d256201b0c70038f0013c612905001344a13bb6277c828a3b08600125600146a0015fc39543d0048fa40116b00192536aa74a0260b9002250043a002fd9039aae74023b502449e02925b001258039485005e0b8013930033d00fe024ea00439100257a20218c002d6731155e0ac47d003032a087f5006339012e3c49601676a32603a09d1021ac0bc7ed3bc0368c22a5204b798012e31401950020d9a06b4600a8a30231b910440103691f405626007140b0804c908a0500cb470afd071afc2e0af8dd01f6c95035285102a8180436abf33650bfa9bbf3acaafa8401f22b608a8fb080ddbb0b9a03122a4c0193b08b790094a0030a0800a4898c1fc1a62eeba0b5d49322673597335022b221b1e5003d7191f1fa001ecc9acf8e30143a03349b003c86b496a29417cd9144ad00670c00894e0067350014361b46c691417500573f00486930626d016ae378852c0097fe0076426028f62b435fef0c5cbb53b468114b3176cc9751457018a4d316a2680021c3003bd1a1661f5012750029323021ea0039a0ba64ca50466288808200225a0344e701144c006b59404b90502ded52a1bc0041230280ca5b8518005ba5b0139105f18d05f4fa0031a4002274028be847f0b254104a12c4e732c3ba076334002a82996ec292d12e650ff674a12646a15e00498300794700aaa10346c607773a0064140034d300351c0084387052eb0ae89600bf62a0c267772c5700a13ac0880e0074fc086b146c2c4abb32cf004c5600cbd000c20baa2b3500cc270afbe1030b400097720061bf4092668afb33053f97b0bbd90098d20421af72f160b73fcc26399b0043e0005fef01b9e2ea004958323f9e502374071d0e204da44df93f3ab83980132500741102ef205c59d28890fe004865008722008bd1dc2793228bde4b570e3382dd00441907f70ca0010e0006968088c000998f00522f088834888537c3cc19589b373c4286e2885620138a00240108763f9011c40019ff92c34000543a0780f400449c0e30804176ef305f193bb14d0001000a73a4b04b44a0121804b799a019fd1c315c000ed088dd643048b4b013b90a46e135b5daa0122c00105a63cdc7201f092e638123915104a691e9cf9162878e22dbe54605f8b065957521d083275665b49d0385198046cf0686c900806a9dd30241da760743589067222463a7041fe74fe44ea030cc5a0ddb3900b2c95b2b350a3b440098d20b172f004297d845f3075bd406347b90bf7c20bbf400777700a760008b5200a8c1062b6600a4370606a8e010e251a16c003ae1a22e1b201c10b0208e134a091011ae002239035418a055f80daf855803800a7bdc600434025f1f9086860022130d834200273663ff5b70129d0df2060025f50266890183081d151e00881a07165909d98c86cfb4e5caa672989523cc355b79952ac16a00103e5ac66a1035280026a4a0143500752700207f0006f37324400010b002a3b8024b782056980ba36be99d9533f1bdebc2d61e581722e43209d4790031b201a3a804751800452802c2360d39b982325606aa5fe81609c8141bbeb120b60f08937e4c97b9caeec005ed9094129b169c009a8f0054f30202dcb9d76c0096b905b6e30347fc008cd5d0cf67a0cc7500af28a4776100768c00335f02cc7b2a7d15232d3a1b1c2b0a2bd8031c2700c0c4ade5612075ff0091dc106a2000cc7c0afbc90086a800690700ca0c004b84e748af00483b0311a9306c6aaa608786bdce90249b0c9593910a5b7500c606b53faeb49400352f0075f606ad22a46472003472be44ed0238cb00890b003f8634a54fb4b3a4101db38a5a70f12a457012260a48eb30781100872e6b5ae77c698527bc1d6c6b317f0c3645c07b0134dd10028000453a0a4535099d9280244a003389004294056fe697008a442035150bb9ed2d11d50044fe00245d0042b81034f900443d10019bd063a400223001041b080a0f0a0430710438c9cb8c0c001050d1d0a3218a183489319518c5870808102050c1640d0408244e2030a0e1e7a7ce080c183962e1d3e6c09f3020695162e9c648041831847bd40a9b1038993a23435c410424362c493467f784ce1f1644d9c358c4cd17af4084f22519414295232c205c2112c3a64e8500103c20e1f74ccea658b162d5ebb7af92a46cc97b059730229a28406c711294f98389153ca11a75c9f4a2d12336797b15a33907cfab207d21f51a876ed12a5a6a0cb0720346860e1c1030d222136e85093f883478f1d48e868c9c0f7dbfe0f0f68e0f0d0d66d050f3340385cf0d2c10322861aa15275aaec05ec0d5daa2cb8e04f9b1b322e947001a484441021209008d1814591406ff6a0a131d17773070b10e8dfeff24073fef8f38d81050a44e04002f94380010e38d0018a27962841872686f02083168a9881882a96d061862274608884138818828624b420c2092c86c8018a124a082104299270220d2c7470a185219a7862860f3a4049031d51c888080a2674c121145c184207126840a30f179120e2080d2e7800832176a041040a3ce021080a7ca3a00295b623f0a5015d2aa8020d2aa80026982898411046303165964e1e118513409e50e2892488a04d0e469e48c39039d46823903f9cfe20820626fca0a40d39e6d8c14a115a1be126077470438ab340e8a0845d8a29c617608e9985975e84c98bd54fd438e289295ce0e1861cc058a30d371429e357453a49450d4180a185881ddb80440c403e61c51651667944a20a2e10a1030d5e9ba1851294c0c1071a3ea0418d46ee0842039a32a0a93f952e000189e17a40a28d1c76930803b7e26200853202494490a190506288193c18b039020f30429028a268e489133a3862863953ca580325a2f8c20d366848a1dc8fee5be0bf031128e0bf030ed4af8000f703704106fe2b503f0b48988286121c80e000084ac061adf1b4cca00411406841440f2a08818621a0d0810620a2c08290256804a2031cfeaa58280719ac24e14936fcc0a289e12ec4603826d630510a3192606f081c3478a084422fc8400725a450c10323aa48e2e01e30186121105cd8a0cd071c72e88498d2fc082590b0ab00223a30390595624261c4915d1ef902893d929881864018b1c30e36d898e3334548418511379a68610d419888a20617729861c21632c08e8334f6f85c8916663065175e66d92515615c5555555f7801a4052733182179236a18020d368e486310341eb1e38f404611e50622f070640e3cc47023145a40792414609cf888052c461701031198ab05444802086e40821214e40239904d06788082fe10c8011ac8c1135c00021340400319a8c05960921f943040038230fe842f1ec188363ca1030c3c8112405001df3cc7011148c3117040885434214e0ee9cd032e27821174e0023348831c58300437d4a0020b9219caf46320fec02c65054ad0c95a26b3276ec00426e800030a8080d460010a4ac0820a66708413f868091658c0084850810de0e0040c00410968a0851388000a55289111a03485219c20042790a34aec38030cc8e0574d70c2c53690011cc8800108b85c7e62d82d0b140403231103138cd00342b5e02119338e0676f08105c870260ce30e4a62c2800b9c49815260c42378418b36388211a1f8842f7c21071af060074c90832106110a40d881318f70042a42b18847b441094770831280d0031008e109559803fe23388026798921116ac0042668e18b5dd02217bb384510ee308b53a4422fc530851b4e5785207ca0203e2c8e0e72208623b021118350431ae6d0862f90e40862880220f6d0cd50f0720d52c80112305690a04100020b109314d0608a24bcc4022c68410730f0800c9c9426141841083490858f848009eda9c0072ef41c3431c0026bd0411a98500a4c4062081598c10c92608210b444072280000a38f1850ff8800d8c2843096032a098c8e97218109e0c48d00197b8ac71069ae4815a66b3fdd42c6566b519cbbe8800010480012948180e5a0027118888411a28c1234980839d1d21052218020a7c22021518010b49980d0d50e4841990e00875a08183fe72b090a78900261978e3dd9ec006a925e10410088113e2409c577a80041cf0210528950311cc400a4e50823e4f238218b02b25f7e16de33a00013a3dc4213b81c95a66b0064e84821373b0432250418bc9a4821339b8601318d1085064d70e68b00a1be4200824ac011090024456fe608736ac410c4f90831f6e158527e4290e8c38c5230611171d20410e9ff804243ef10848a861744d4082184a8aa6945c80a42e70c10d287304178ce00320788007e2b6bd921881051911820cfe208727602f031fa120115ef880053ce00882484173523a02445e6e3f1460010c19d08013fce1082330d50d58c01a5379c4211aa8016d4dca03c10d816e2d20410b98febc019d3820038d03094ab0739a39c904012a59504ad2444500b9c440573c40010ab0260494b965565ceb14555680076871095230010952b0843260a10868044106204001cd92200740f8c00c3670800dcc40077cc882148a9084276061093420810728d081a665cc04bd3bc21482c7810cb88008333841116830833638610a4df8a60c74f00434dc00047af3c08952b081121c4109b089021aa230831030d9021bf0f24b5cc92695f4060504418e063e32a707a8e00f7e08041b04110a4804624f9cf8c3284681062508020b1d78022440f1073cb9610d6ec89418d0b006393402856c784278fde00744a921481b66c21cfcf087590ce20b29fc4214cc60fe8739ace10934c841125c20db1c78e0044c2841442e10c40b7860040fc00116d69004358821076a504212d6b086208020074df8021ba2b0223b1ce108837802083cd0d31c70c06ea8f1c01c3a7182e73080241311f3963e70011220610747c8c18472d09a92cea00733c001bf8690061c988a04179c810b4a5081b578e00371fa0004e2a51ddf6cf983f9b9191471fa11b6278866fb71d915f763b331a7f900787f2b010e108009c6680926b838020cb0000b983ad259a8431110c0012cfc20957b47c00570b0251d988002b74ea56f5c203813ac489fb9c6420ad6c0010b44c0eb1740400946ed4624b8e10816f8b3deb8c6043b73360dcc9a8112b25083fe41e5606f62488361d224c3542e400a7270c38588deb89ab869037210c520f6b088d43961088648c427dc100834e8a00c3898df784ff18b5124c20d6568433707218839b8e1a16e30431bd4500635a8810683e844122a408339a00192ca8145888327482131e80125f8828542822790021ee89b2858834108043c20810bb80123b883282881e488821a31182600253540833918162470011de1011d00253128308b9a821a98811d78820fc8010d309906381307b8090f08011208020b581334b3001ca0810e68011a58b8b7282aa50981082381a523a048ab0217a0341d1840219a014569143b70830fb0806c89899b11b30a00b314630e2a6a9805a13c97fed13bca5b809539ab348b9993d9b20040310e28000bf00008c080b25a00b09b2018828025c00213e11022708003708033cc992758aa24989034680343310223482a94cac1e7008123488226282051db800a180119f89d0e680234502c3438810ab000ca39883281ada9c10125d00110000123d8811640833790268591a0490282a610a42650828dea8d55aa090e980444e98482738424180135580485b34519008128200134808454fb8225d0b6451884f16a835ab28327c881d1b1834000033148a127e08013f0000c382ab033a911f882345803215002220802aa4b3524c0812728031e38022690392498022b0181322884026a8127f0aa16488328308bfe11e0011f71820b6a8128c08404cc011ec8468f748224f8800f480224380f18da0011e0210cc8811128811600812082880e18192278c73410033b48032740034100043f70834eda352440033928844498b627f8ab0eb08069fa8833691c13100134a900b30b2189500930239005d18fb0a2bbb49a2414c3a2b6dbbb2f6a3bbd9b24b2dabb051080b86a0008709cba433c18322b30c2012450011da88237c0826d190211784907a88113e0802ab88837e80312608b189a01553c810ca0818aa1001078491438812460022638819c31010ec80138608207d0200828c5de4831b650c12ff83812200213780025240427d09b3559000ac800b72c90066813c7a9fea28738812f381112780227980a19b08025f88339708213d8813f80823061825d43943f90021a98af4f08854ea8812718043cf028531804ef11833240820b70001c30810ad00105c3c52110031760011e70814ab3c91c7003017bb8743c8b1068835f23025bcc8183c080092b880e9092a711831af838034ac22b04011389111a00a82720827acb011ab881c3680266394825f0915d69811cd0d03598027753b73620ca415084ed6a94366883857a37399003a2341e3568021dc8163449a5d3f0a1f5b4a4015990960090034810b07c2205519029baa29551992705909b59d2e6701900008000288013d8000838018b38014959820d680035238034a39907fee0001a9082288002ea8400334dd28b400315a081071081a129138e528d9710c40d48a534d9920a00b925688b07d0802680c50d408224a00117708d19e00007b08011d8008edb833410422005816d12010be800545b83044abb1413339a918997288828801c487201e440c216a8810cf08027e0843aa0000b1882925a02b331ca1938083470844a58831e48833ff88346081e11f000befc245d63b724d8811ac0823488c02fc881136001487532104003702d810b688124c08196da4f0fcd81c4f80223280975231427602f3160033c90833b000445788446088441c894d121be14f2b52f78023170373b980f34d803357883409003f04938472983391004fe39588339600337a8c436f80335700236102f3560833470d42788023f88bf8c2db832c8814cfaa0e6d8ad413555b96352284a19b834ab2a9219bdd38f329b433a441026b5d932730000d0d50182827904822ff18d1398020e80800da0018f5b8208808008a84a0a28801488c70e9081530a0118e30013180258b4d9fd800024180225283e1c0003144831190854589a011eb0aa12d08c8a5b0002b8c3537517d4d080d17c832ad081cb6b004b558232c0ba16d88183b880b65b931e84091d30b016281387f054d739025c848d10a0bd4a4da3630c8233f4a108b0a55550021778821df8153b2082090c853dd8000fc80125d02ffeacb723680126508324e0fe01921383e414142550af279803e7ac583b48267543033bb8037b6d8446508441a82548a0844a78044a805e7c650446180cee7d04c280043918a839400346d803e3819440d0a53fb8ae1b953ff4f903f46d03366839396883f07283d149822f68823278832f588c1cb815c7ca3f39f88232b0033f48cf2048a920398de740b15532998681a29abdd937bcbb34e5d936b4223aa4c33b7419fed83b12ced200f83b265a0004b2800c58009d6361ad74001380821638811218c234730014f819dd3cdb22d8b51348b107102b9db2000b1081a4d2809fb1a4bd231020d4000c20012c60032c4028be64031f10629980890a000125900325288127780216400223fe300189638211380c0bb8a232748005798e93c931fa1ce28348420e60007d82802f19520df8800c4882375882dd6c2d0dd8100f18d6898d020f500235080225e8a45b61bf39603e36f8c539b8833f60caa614843d70044aa05e50fe84ee4d040566847cd5d745480479538451e084468084ef6584444884b14884ede55e5a3eaf3988037c138381255836c0943648033ca0033710844118044a10843be05e791b0cf905e635a85f3fd85131500293ac01c562021e40822f18d14afc032ade83463860224089db50552ad2d90201c429a259fd004b321b62b54cd3b5faa2b322e10381992baa990079a203892b0210009f756329d53b0438011a989a5b5902fe1c58022558011258831c19420a688005388123d08215c8231b2b1395a09125a830d83081aefb001738420c70023f6883263842700981871055b26d1cdfe8c39d080912900220f8c427a8b8866e82bb6d832a98bd186298015955ece8c13d58833f7401bb418923869a259881884bd494d80026680123200e27c381206882411283355083edb5031c158464bd8390f52ed691833f580448b084eaa5045100054af884eca2044ad0eb46a8e5c10804c21eaf456884aed0d7ff7a844fa084ae500456b66540a82550f8044ee084eec59341506076040487526b376803056637f5b236f44260a60b82874383122cdef2650326c8812314c91aecbab468811110fe49023a82143c420fe0448dc2d42355ea530d1034a3bb2b351004312b0521b327e2e7b5a23cb993a2bbdb3b0020e80320007dfe3b33bb19b24400bf3b90bb31b526d0822288210638013742aa13316327b01b0cb0d51f50895213010ef08016f0004cd5a98471800e708126b8107a44ef98c06997781ab3b3005443021d180114198254246d0175032b710340a0582478c5570c01374003271011cbb49b943a52df08812800027a74171ffa801290473045822388823aa0583fc05779c3d744b8834010847fab577f335e458004ecaddeca26854f4085ec3a055b38055a40855ac8de47a8844468d1f68d65bf3e05e5e26bbf0e0b506072524065c81e0b45fea065469065566684646547ee0d84d5e15e41d8f147c08447d803b9c63efcb33f31c894fcfb022c108219648292e85d365002cfc40122e0811ec081c560023610035be15594ac29173882354883101bbb0dd0006293892ba5199359ab2a9a99b2a23c32034b7c1e61e6b63bb355002ddd52ed2e0002f03bbba33c9520100b2881ba8ca1d8328234306f384e5306800011380136c00129b86f11308226a8995882c50ee0801690810520129ca04d753d0188503ab0da38b61babe2c66f5813834951381a90309d401d1a58dc6bb53f64618224388253db912760c028488225e8b54755028d7c023780031394037aeb4cf0d983ef100459d625f5a58450606cfe4a906559467346a8c0e945e5450885532885e79a058ddff874da858da785cd410523df6b5bf6938697e5e83d2153167340086c40c0e5316765591684a65c9d3bd8d88a2558750b5927c881c5e001a36a03486b813278f726e001af2e0362420378677a2360021d30021604411e58b9faec290374c026088216088191300221ba806c49c23342420af0ee0209bab27200c3f500094eab310b1035b3a2397c33e896c37e6e197dfea2133881083033b5243394716e294d2513581cb87b80615b03c2cb41302a333adaa028e1220e62c405c181d3e3382090300f40825374028b92130fd8fa1bf0992f65a3557280f6381328f0830d11d05bec98936384e2dbfe0191d477cdc0811e40838b10031e7002777f8263843534482f3a386b9f4c03368803fcc358e66d2e7983844e18f346c084cb06054e60eccbe604bdaea5cf51ebd461842e3f0578a20b264f055eb08559f8055ec88b8db70b5448055a9805cb1685bc865e547e044b38a11baf04ef35658000f4e74f20408002fd69b4e8a01d3462d0bc992346099b366ad87c6993e4081a2653d4b87972e40ea13b6ad4f861a4a4c6141c44c43c6992a34992247f1cbdf992868d1a274392a0f9a284469334499a30213245640e1a4a94a049d3064d0e1d1a16607892730411223a923059b3818189a87e068101c1840d8d275f642c588000c10104050e14c84b972e5ebafe0cf6e2adbba00002153f4c6039f14003070b0f32e8d83196010506181c404021b7c4901225446468f16403850a0d18a848c221099419244c1051612103020b2148cbb8c0a041840e389ed0d0e1e10183070f2e6410412103071d4fd344193264868b1120aebb90413323cf2f68d88861e2c44919252293288912f4e91324445c1cf982fec913256532ca91f3478e9f36fc0531b25f7e82f811c8208d40c2c8239c50f20828a884a20a28a698320a28a090224a838f30e2c8238a0892c81f8c40b2c81f8a9442cb2c2bee42cb292dda728a8ba498124a868f3c920823a1e46807240852620a28392ac2888e8c0472c71f7e9ca86087a04002881d7258b486fe7f81e021871d73b47147208228c2092707fea1441a720cc2c613164581845351b9e1820b4e3ca1061a4ef887060d39e0e0020853f871440b394877c4464e44214306341051c61b4eb8d9c21a5f342105114788a103114d94a1c3114ce85002061d3c3683114e9010421152a881c41b80d00001020c3010d75c7c2120d75e0e1c205760b9d235d801289460410409a0100102c9310001144f7cf040072aacf080031ea8a0c30f0b50c0ad06089c004505392411c1020c5470c1010c144183051a7890c10e271871c41053ccd0820e683c4104a2430461c4104eac21871b7e34f4454558bc81461d6e7cda041a6da431901d6db4c1a42181ece107218bb871fe277d58a8f18411490471c41151d06043124888e744123109b22523821014482277f07724207bfc7130230a3e424927a08c420a29a3848221851a32382423459268e4828f7c22ca29a590720a29a89c22a38ab6d0228ad2a4f0580925890ca2df1d761cc448250a36a888ce8324a2e5884572024a229f004e891c73fc21221b7f2c92c81e6aa4c1841a5f94d1062372a851c71b7700b888137d1e21050f12abb1c61d4f10c2c9d46b243105124d141144134fd4c003110eb7b1061a6adcb1060d3244c183a1e4b231482178a85155146e0c3208206b108287146bcc511f7d76240502050e5400c1091754d02d61711d50d75c77e52558f8e5e715805d751dfe400003846d40820a1e4020d8050eccfa575c1e107142084600c1031ad0000542908325306106ce39c1110446842860010e5878c2a4b0603b9f2021094e404314fae0849c64e10d70f80e1cec3008410cc20f8010041bfc20089cd9e12c58ea10251a61884a34a2110c6ac4d4425230f9e0490c6c98c31a187711251c01096e799d1398201d22206106fe72021b02a1339d99483f7b9043dc18d188474002121c12e387121446465082419408238e0231072e7ec12d6ad8922214f2355af0a218be00062f7a1123afadc814b6201b2940210a4b28e2449458db1cec6007b991e2138ff8a2e928018a507c2287166a9a2966718b59d00215649b052b78f10bfe5ed82215ac4865285501365138c28b3a0c85231601094ce0520e4a580b1be83404176840042dc041195e972f19f809992d08420b58d0820b70af0219e880083c60021e2441061d2001704200020c5ca003157840054ea0041978a004e27cc002ee073ef1dd2a7ce1030cb0e2c20078f66a2fdfd3955c54b0041aa8800320f04c0848e0992404a7084430020d4630032c34610851a842155eb6042030210d4fa8c2104830032560210b4d680211c493061132a13d4e90c21f08018846cae10d52a9192446a10a55a422159c7044200a11a02f4dad139d50e324792888402822968290c31d3076b034e420aa19e4011290900324ec00073720147a6890af21fe44f40b4b0d04230ab1083ff007ad7e284315c4109f359c4814a0a89a243fd189508882133f7290d438f1084ce068a9273d932320210a05010e6baa1085283e6123bc02ee468e20c51a1b1432faa0610d53fa03de72980845e4cd0e7fb84322100288d22642b4462a6d83f2b68744c0b68e9f981a24962425bbb9e10e6970a418688083193c21b76b08442d55f887920d2126046b4320d44013241cc10d6a284314a270042524410a55a8810e6800820e6040042308ce073ea0501af080061da040072e70190758a05673098c3c7f952b78f2257cbeca2ffb6695cf05c8135b343881060c1a021c0cb80a58c0423a5340032314a1ba40a0890e743083ec3efe01a20423840869b206411842106272442140dc30b2f2a13f6f10de200c114b2b0a220e767003e12a52873d4c653cfc4a421aca00d737b481bae471c2172e0229f25864754cc0410e9298841c50475f3ab06a0f0c3584ccce410d720090dd440b883b1462857e2810232ef207d10ac80f9354048e140189be718843890c841bfec086298bc10f5f88021366c68644588812ae04db2c504189509ce21394982d52f796884a78488c0b412a9b15fd205116bad03632052a56348b5ed08214b3e0052d3079a14400c20dd4fd027fde4007375484886888620e6ad0501ef0c00830a9cf14e4649d0e78c0053d704f9d0e12cb41d8f9652d18410b5ab083198800fe0758edc0074605821178a003236041147a8904b04e170b400842555b404e0003f85605888b03e412175bddca567f219f7ec797eef97280043f58a80a6670024d65010a585842a5a0208525c860826e708313e060bb3e60a1e12b854820e0908634f8c1108668841f1c01a0428c59e37220c45afdc3864776a23f7520ebd01a518839f881128e180492f443a23d4cae0d753c2320fc808646b241742b74c845d660ddaa12e1093551420b52a08320e8002968181d1a386ba49bf1473f029a4a1b0e92080e5d1db40eba519cbfb88846cc4d1175c4d028c444894a7cc21266bb902840698b5ef4a28fbc10462f7cb10b60f8a2efc710862f84210c601483effea04e2c864e610b50aec8f1b490e48f00d7884f28ed1485d6bc8b64948b5c80f2148d5ded88dece3636a7d114b355c42016913c13596c1124ca1a2645742243b814e66845430d5a0082194c610a7330441f842285fa48c10814a00075c67bbf515def312028807cffb2aeb99c4bbef6cc5faed2cdbeb810c6bfeccb27024a70821210810649a8f0091855042340a108492882b89750842a64180efa7fc382dfc007358c90c529d849bdc1989d90e5acccc561011af8411d60017444011cb8c1528d9927a4022e25c20b010227d8d429d40818894982801d922c8268edc11a30c143a0c10a7e81eae08012cc000ed8da0e78d59c48450371961db0817a7cc1fe230d4d8220db1ee88c22208c77cc8120148d2880568238098e3cc2d188112860c25d59088e8402273c56d38c1a2fac882f1c43e1055ee10d9e2fe4c22eec422ef0022fec822fb0212fb0e12ecc82a889d22dd8021dda022a5c0828784d2af891dfdd422aa8212d84928aa0022d98022994c229800dda604828500220f0872d8909263488985c8dec91952178d167bd817e5089cee8502324c2dbd14d2884c22838028228821cf4591294c17dd0c01438951dc0c1242c4109e0000788016de80a5d2400b09ccf5ddc17fedc0a7f791f5fdc055e24630010405e34630110c0019cc0c1d5811660411df4411dac411f08c22104c221689c1f401c141c410e3cfe81354aa0fe3d011c1820216c1c2170a38b115f230895271c4d27608229a6822a0c5527c81c28a8d22eb0c22ea4c2e3a1422a94c228700d8514e4a7f91d1c3ede2c98422998a25c5dc8d0148d21d1c8905402168a122a80241c1612ebe1819a014e8d28c8172d1ad67c02287cc28f28888d744de4358d469acd8aa8611f8512d8dc42ded1c21902621acec22ea4a117ea111b1a9e17fac22ca482a8d90251ce421912a52ff4115552651ada422e7c922da01228d1c253ba212a91cd5786dad7cc02d988cd2c701ed7145a8d748d22a2428d30cd27f40d940c4d229cddd5210943fcc11ecc581aec921bf8c71b9c841ca0415b55011c30010dd0401128d17dfe3c011354814f908006304004284b2f9a8f30a24ff8e5573cd5573c2523344263fb34a332ae8f168023383a82c6695c21f4011cd4417b2c411a304c1af481c7b89c21f84109d50121002721781c2114820e79822798822a0ce450e2942a988228f0082638822360a11ee6148f7082290489447a202a40e7a811e5515a251b926779ee02d8e40257ca8829481e84d008da80112404421b3c4491b541e14892d9609286148d8e2402249c02177acd4f62651f0dd22e0cd28abc65210e522f9c611f212828c1611aaa4854e2d1172a651a9a615806de840aa51bb6a11a4ea8a79d25899ae1dde11d2d9402a755a857a2c242960263b5e485040965c95ee1600dfe24a4d190b4a4a22d5ad3b4e45d49e7d00c0d5905cdc16c1c929c10c7bc9010c21895f8411cd4c11f809c128040bbfd97af984f3ed5c503e093aed4c569028b5dac4f30ea457d95a616a8e621b8a33bde5027acc22a748227ac029dd2a92aac8229c4292be0949e2a674e01e22ba4c241e6942b98e12efcc22f18ea2f0043a2fe0231ec51a2b2213000de294d2ae0f94231b821301c433118c31782e88312654e56a51a46648b08c928248d44ba642804821c7442205ce123acd21ae61d821265a879672888d15bca888472611f8d61de7161840e2582e6c2ad36281c8e2a1b821e17e64288a2d2d8b8e131f451de5d25b1921a89a6021e3d2bae9ee5a99efe218b84abded9422d280d94581ad89c822aac68d864c85ba20d5e5dd223205a2181d120b0de411c04eb418223a89ddab01edb18c209524e1b74624f0d82238c991fcc81108a0c12b841071800f6b95b6de4401470405eec93c59e0f9a960ffb74a67e91cf33de536010c0214c8221c40226e05e1f50a921148221b8ac74caaccc3a825049a723ac822abc82290c15858c422754c22a84028538a7199ed22b202aa24eea52be424e9ed22fec822a202b51fe82dfe5545c8a5e8ae4142d586da842a583662582aa08199aa1227202db30d6907048c710ced116a429b8088e601e22728d2199cd4f9ea519aec8e39de8a80d52d8a8c8b81e2b2875da869ae131fe106bde1dc3e382eae315ee508e1a1bfa1178de42d8840d48429e20fe2dd90cd2b4ae084846a4e482648d8882135ed229746b22d2824d45922481d6941404e64c674224a12376c8cfa88112b8c18cd9c18b955620d8c11b389246ad011bac1ac2ca0c1adc470bccc00e7c400594c00644800a10410a88000b54000af08a7ecd537d8566f8ce1361d49b7e0d06c7ca1361dc8516f4416c6a8108f541214cc29cc229d0c66928780227c4e971768229a40285e4a973520843de944082d22b502dd532ad2b24aa29fd9d2f642d8866ad040f03300c832f9c02276482d5fa1d55526d54562e799aa18bf8ed2075ab8bd042b786e4a042de2e78e0617ddd237412fe8bb4c8e6726584829edf6e281a425e82be0855b6081c82522a40e51af2825496a7def582b5626b1373e158964decd69528bcab5f2d0225668283cc96181549d138d69084428ca042577aa02d8c02d81022d340a74b56168e9008d690021899a242ced6d5700882b064d13c422c8d08872c821505821f34011240ca46ad01a4e84047f199144c8cc9a1e00de80013f4015ba0c00964c0c9aeaffa2a63343e232797a632a28f329ae96812c6211c0227c48250c969cf5288fefa6929e4e92c0b9523b8ac2354422114c2bffe2f85b002a00aaa119b21e8bd422ee414d5226a054f2d30ec4206bf61a65e6aa616c3344ff31e1de5171ee519be6109ff2482b2fe124836652152565326cda2d9f0a8ae48b712e5306b5e2a00ce2e08832016a2203e252df49d552a2da81dea3dfb1d8ba8e12c0883b5a66119e624e3f202a8866a12fb9d2d0043440e657a7a5a4e8e92a7edc23dab25228a8229a06b2779a72814a2222a628ba87044a6c2e6a66ed62c9a763ec27ca6545004454a954113a5941ab44116ffc11b94411c0c4289ec815f0e8eca7c010d60000600810b241712e84419648114e0012104c2132c81083840b5cd13808d1ff9928f30da05c772ec69e64502e00501100002442327abec2acfa92be7299c1a2dd0f22f271c672ba84228ac025cc3e9282027d0e27584a8825dd588735e211ad9942abc882d38f02ffebc4284506db552a55446ebe7a9a50f0fb41b1e6a6553650e3be8ae6e082380022b745a86cc75a2b1c80a137649a7882a4465d894428cd265ea4242d6749a8a80682f30b32715ee20ad7049e32ade85284e62e53aa7e13178e83d6bab43db2ab98eea53c230e719b15abac88b76de2126e22878b48b5871d7a888e84189e6a6088da4ae28eaab41204c23159160ba011ed80121240f889881124c4709b48047b5800b84400b201413dc4007b457f768800a3c5b0a18810bec8060ae41814bd7c1fc6e1a7cc1067080079c4b0268f5013800fe483856581f678aaf5d78726972f23ce5571fb0ac9db2b59e76822170029c0e1526d0a99e8a492dbfd9d1e669fe727a362bb8428538e72f3f702a086aad52ad2d0ca4a3f2c2408e6ad50628e28168794a6a2a80672a8442299c6728e05620342227cc0d3d8282da30086c612176f29021fd15277c4222b2eed63ca72b798d8c0422000f65e29628ba6ade411671d89ce15742e58a107419d2422d2877df15838362b3a6922788f63930f442228a5244a22751e2ddb23ede28b06e21dda4e6e21526e1158dd4c84b4696219602e0fceb24e58df20cc250e9a85e550d13b65c479ace23d8c144344170e84011780008c4f707b8800e84c00514d0099c00b0bd0b0694800640c0068c930788c0098cc00960011154c07d854fb09fc03d35c0bb2cc0066c00969a6f5fd0450124fe800104400098efbdc50571ccd72114029b9ab827188250c50227e8721ff001160c0113c0011b48d05ac08108b1a32140422740c298a9f827246719023962e31441aad2202deaa13eab04ff4206ffdd051b03a4aa6108276a2a69e8e3d9c22f14da416a5e1cb6f18280420da5da2070028df0c85dbe11c724c274020e167242464b12d6181228acb68cd8bc20860d7b9e617a2a79e912a48bd8548996677902de3477aa1e115edf113ade55a5a2bf612e786029142241f6ed8972251b96ed50feb372dfe1a8855a8a24675c525680fc01989b08d12009e20c045931ec131493e34cc5e1ec414700811430e611408178044112000112948113f17d441d2679fea481f3eece109840075c9b0ccc800758c03739407154c0e4fb7a1300c1101441134081059ccf7ca1cf86cb1301284003d445f9c453b6878ffb1ec214baa61ff0411f10022abb8104660116b8411db8e62ae8382bf03e2c24ea2f739a2bd038321f73082bb0a356f0d00bb111ffc23e2e16a09a612a306aa746bc2f643c34632a1c66ed50fad15332e550de612efcc24f62bc2b0d6a2a387ad6e61453aa0229002a5386122222dae3b12e0c9b365c62524bb67f5c0eaa9a1feb1a02842f5ebd76f19ab5cb162f5e097df92a66acd83187128b35f405ec57ae83077bf9ca850a15ad83b636ce327570e1ac53b668859c650b55aa59b368a922150a94225094fe3e29f2c388d09d468f1a51fa13a8511c35699e3c4923460c13233b74e0d0b123878e1e44d444d98144850e122d88d028f1658814273454f0387284060d19194c6ca8406183860e181edcad50e14187154c8a147922a54a141d1e4410a9a184c6080d207e2c39a281c181020710703e40a000e8029b476f06ed7974e7039f456bd172a88fa03e6fde607963885327437c72739ab4c78f20438e0c412afe08d2a24ea14ca552950aba2a95aa5499a26eaa54f354bf76b1dab5ebd72f5ebe888557e8ca95f35da6c6372c568c18b0f6c57ed1b2382bd72e8bbb549652758a1653421165a55da083cea44f3e118593461661042753440945268d72e145954402fe61249044da90638f39e410e4c14616346514544e018916924e61a52518675ad196ef649ae546fd2c3ae6bd63dadbb1a1f92af2a597816c11c5949376a1853f5ac47b8996fc989ca5149910e24f955048a1e411524a092594526e2a65944f98035345534e39e5913ff6f8031036d4f8e30f3698182207209c60638f41dc68c30e39d678e30934ea7823071240c880062488088208123ad020830d68f822040f3ed88002041cb880810522d88003081c586081071ea08081061cc8c00323b090420a2c9e20a2830b28e8eb81cf3afb15810556d36c5804100860d8d54ae3ec342cb480e3104326e16415555c7945154f3aa9f6da55a073e5395792f4361556fe5279a5dc5c927c0e3aee7641373b52b23ce5955f702cc89799dab517dd5478814e21802d22661860664105255e96e4e491954ed905a4546839851451486105c7ea4609e59347187484114744c12490401e710492472a79a413861f7904132e1fa1044c52565c7326fc66328514354d0165c0502849992847669ed914546afc4ee15d8a6c9aa0f1deabe8985e72e98848fdc6eb056b602c1ac8a05d72b1c5960b115afadf4f381990124a1a618412061fe1708f34ca68428d39da98638f45dc140493501c59448e279a48e2071c4ae8e0042042d8e0010718a8c08939d08002081f46454184af74000c55071ed0f500611160a0031786e060d50550c78186fe1c6808a1f1218810e18106167040031a5aa0010d358260428c2f9090612f068c5d2058e687dd4c59028c5576b4d510a83eda58b4adb615ea52f1d61456b0a5ae7b56aaf316dc73a9bb0e45eb547905bb54ba33c540525e29e81762e2d3cf6b8c2ef2c540dbf9c5be6621905d9c8226387a98fcbc56400052082158b3452a629225eb980415a190431afc0088b70962106b6b90283e010a518882118c80042538018a94a9f011402b05283e710a554cec145ac2c4234201894f4c0c15a2a0c44952610b534c0c3b33f9ce41d6649ff1f0e747132986308844c5efe402870892494b0024935e1c4c8945ba85cd4e9134180551419f488e1c963287347c8109fe3cd0410e94a0842124210969408313a0e2841a3ca10a4d0002108680b912f0e5010c60c0ae2870aa4576a0094e60420e4a40010cb06a321638410746c083273841062668010b9240030fb8200768b0021bd2808538b8210a79ac8321be3083162ce654ccd3250372e93cd008cb33c4224db1a0c72ce9410f015ae0036caa90064108c2119af0c31bf8d0070e4ec210c291431fe0d0043f18020e4ec0021cf6b0074360821398e844230a118850a00b5d026205777e31cf77a5e214f52c087814e6115bb8426161128f0005c28bf098c21705aac81371a69235ed5324dfe1cfcf5644255474e262fc09a22916440a8fa282a3a0c84e287698084830e2658afe38992220a1528b71821432e1c52d48628b35914da30629052630a1461e4a476b0ad951441e520caf09e4201a9d184c6ea2a59d84e2a634911009d5a620a17562140fa54529384109460c074cd04185da14e1083cb8c10f8388020e48c003db7d410c75ec81e238b001117840033a70021270002a0440c0758944150336e0000758e055332881e418a0aa0550a003917595065ca004127cca039fa441ae484004197000072df84006ee12accd386f79bfb29e6a38a31ad5886634d2d38cb15453002df46112b1e8043687232d4e18a213ba71442c86d3895418620d82f084fa4251081315a2129c18452038f18a7e81e717f75b8f2a10c21c0969e782f44afe45fcb015260385e2170211cf2fb0b30b0a711780aa28c582e4d710fe880daa3943887c3f71c39dbe6c87302bc584b2a30a5494e214a38044223a3113b2a90414262463426062d335a5821425541abec40331049ec416bef8054b7e71d462600d6c0221527b067290b1e54b2505ec052d08642f26ad64242c91df2e2aa2c015892215a148c41fec5006271ca10d51e041122499861131420e6868832082f3894a38421071cd410b78b00313808003147015073c30820e80a00517b0400940f0811db400b08a3c8061318001109040091fc865ae2c79800aa00a0216e8cb053e40010fb4c003becb000550052ce771465899d14c314d43cc623d0fb6a1598dfe16ea00874274c214abe8de2baaf5bd55242915ae086e1fd85008e07602137da80227fc20074f24c9157e70c4b9dec59df4b922142da32056536dc4531c6816f003852a462120eefe6718ed6d48290ec61e55e4e23f8c401895062c2148fc0142611ac5cb3cd6554a5422850c539b28404694930eed119ce0c4815c34319130893ff89c58815bb49135255814a5a81282a53312355129150eb90f3086d4238b3c9cc544ca0f4db68a600979cc3a35d2c84d3c8aa28fae08148d6884222ad1899555c2ab7eb8031a22d5810f74c0039175010d66f0f219c86504200001cd89d0042624990944d0c1107490010bac60094b308209123939111401087111c1eefe1c10f3bb50c0025ca6f90d1049810a60a003159001081cb02bd7292f54ca03666b15d9e8ea79667ac62ac0f548733dd96ea6339b79cdb656b10a4f18e29c9df0c42af8de8937b0010e505882140ae18743fcd6107d304414b2500838c081067ec0aa1ad9355ee962c239076684710d04d2228e37178f18852a58b1364a18d83a8213c52f80bd8b4f0c11123b5545c950f19c848cd85fb3e021285ac6c2400c6214ac18052540c130f0aa82241cb9af44f9330bf128ac4835e5cfb129e6255020d0c112654885dd15a45c3c5cc50a5708beaa86b58202f04aeed21a4b141662aec1e4602d91d7c1448155505802121cc16d1ca12882464d3a0613024e4130fee10fd02009d6400c68a00d08c1100ae10dda600ff8400ef8640ea4200d94e00434e00200e3544ac7022aa0036aa0059a200830c0023840047ae008ea2807502003220b03362002ca4e033e40e778400d68c0052a205482a53380a97a5cab74506b9124ad7a90690162ab587c09345c2b0bfaa00e2621b8764bf056a102cf29d6fac00daaa00e04211024af130a81139e20f2b080134cc1d5de600f4a61f1426dbc4a41f00ca10c30c17d3e01d4d26339428116d0451518010f43a1113a21f7aae317d686115ee111aac4875ec1649ca309d08061446117fe836228841494c614dae61392c4a004c4bd7866459ce346a88426f64961f0ad209aa6168a6889fe8e8d1698243f7ae1c1928afa7ae1493cc2c5f065fdd0cf178e41181422a20aaa17aa4622fe473ed6cf17e10fff668117b0e8200008a9bc2a14924a2452216e78ea6d56a88478464042c113428128ecc00fd6400d00a10d9ac008aae00dea605664200438c00470c70248e0088600073ac0025045771a400450e0044e00021e40971a007414890120809716e0041f202119eb0168ab79d66e7a926523518334ea6e3594a734eceeed3e6358fae01072cb103c811558a1ef746b5b5c8110dea00ab0003708611538a10e68a0bafae004d4400b5a6909d86009526009d660f40ac1147443143c0113eec011e6edd63a61d79663145471dc1c41be242410d800fe12b0e313daa087e4e00da003126c481d738306d4600fe4a00d4c666362660f0241a53801854268885261ba9c2d17a0234008248070a42fc18f62cac8bb2a267c68f1c16ae420462c176e013c1a62829408194dc18706446b7c4118dea3fe1a824754ec18f0a522f0a518b9e63109228100c481f0233ff26569eee58b040e123861a9ce8f157a26c306610dd6004476f30f04c10ee6e00eeea00d94000d9ec0ad88e02dda804fd0200832c50268200a98c0099420099080061c8755ceae793e850480e004e4e29614072025e753141255b8330a4b8701e6aeb58e70b65a6bd23e72ee6aab344a43344cb27a028000a640f20e813662a1125c2df20c410b9cfe000e96600a9e000bb0200b2870120841f20c210bd6c010b020058e6006a2e09b1a0f13468f7e5c6114000f0e4e801304b0101ca110d02010e4c00f28a1100a612e518a11fce00f52a9119cc0141c6110d8e00da88b1356c61100210d02810f48400a92a009eee00d7f41154e2a1050c1404e34119ce027042114d6201016411032219d0227de9aefd824cadfc888a4a42b40482140b4a4673a02622646622404aa687126fae96bb8663cc2061a8944222e84249ea6205482166ce66742018606e461eaaf8874b1468864ac440a61a0836cd0911106411112c10fbea0519060089e800d8ef309dce038d7200a9ae036f0c099508e282ac110086110fc000dfeb4ac0542600672600632000494e009ea801002610dd2600f180110d600add040095c0004288091daae089727541a2d3d8f303d8129b582853d5d8bee9e677aea1324a127b642030b16f410eae09b862337aa451508cf0f0841105a925db0c511e0a00fa68004ac800886e008004f1014650afc4015a8b213d6000aa4202eea801318610d289008d6606171c310ec600f5c819dd6d50fea200ada4007d4c00da6e00d76a0539ba00dd28010d6a0509e20ecd2a01212610aeac00d9e490d1a2111c064661ce1437ec214d08011ec20119ccbabeea012be6f274ac84c0c9314d405395268149bc3a36a463b4e013275916240024a6a442434023fc6cf4982c4fe228041175b6c20f0f418aa66c5da0318caf625b64f4d45c2c16c014f67ec16e40315bc0fc1f20d61c6ea13f592118ea211ec0010160164dce00b76c00330e02bc4000bd2200d8ee00440a0035a600a20360d9c60074040034a4005706005eaca08d0600a4ce0047460f18c40056620053400052240911a295842c5b022e7595dc775ae07ed68cb7496e73d1f8d7aaa27d342e3233d523384c5b624cf0b09413760cd10fa4e10b0800646360d08af397281d430410b9ec0d3b2a02c44800d0e010b406009fc0013a8a36520a19ba28008c6290afc3107b060095a801098530a70c010d0600694402cdec00d32cf0934c00386200b2ee00938610d5a000a04fe410eea60113a6503d49109be20103a8111da0007d2800818e19902c10e1c3008be000a68c00d70607b4b200dfe64662c580c9a400c3ca81368a8d948816dbfe8251ee61674515f706a3cd20bc66ac4202e44a81c62a1ec2b3f5a8c163aa2238041227cc42180e118a9d1343722a26231fa6621860b8a3107958c52312168426a8f88a31a610ed860431ec17206011014e161c50002c5000dbe20079ae00b78f30872402f4ed0031ee0d098002e68e00444a02e3800098c80e64420031c00035a40764040043e0030568508bd8e040d2b2f4a40075cc0053400b45a00042e0054a2f57657eb79ee333ef133eef2ee09098000706b25838b55d110b862e104fe4880104e743958ef7ce0e009de000edca00ef258070a41108ec0d068409dd2e00d4cc113d4770374a00a70200a8ce0090a38adba49e8688008b0a2090c6114b480045460089c000792e0043e20042e000456250974c01036a003aec70904e10fca220e1a010d68c07f8960068ea012dee008a620b2d86a069c600692b70c88400e36b184444110c6d80f1e4127662114586142086462a044626ef13bbe08321142c6a2c6405a842430fa603e912420d316806117cab66c2f82888d4a228ac46bb8866bf62367f0546114068b8298170044216662e3404158b9a4111a300a74f530a4c00ddc2072950002e5c00e2a75102af50e006110c438aa87531108a1fee42a411122b41148b5099aa007ca00097220ac2785042e80b4ae6e74d033721eeb020cabec0c6b912c20ec5485023200054a003050a054488b976025303c4059dbce089545ee56c374924598264d33b2279b3041b7c68538160f0e28d01126a1d678790f086112ea4007de60363689046e700800cf0b934009d4c07e9b20522a0b0d06a11208e130d240078a200934a005a48056890004cc2c07ec609366600834a0083aa1096067034ee008aa400454e00446430592000dd8207efd2010da408f49e004de91064c800d3c600940ab049060969ce002d569f51a3a14dc80112ae1491d811742c116b6d1fd3cec3b58422514268162821a2bfa3b002821a8fe6f9fceb648503a5fc4e6fc82444f07e2de42824914a2238c8a8ab836a8f8836cb8a62064fa16189c6248881114e15219211138a464ec400d9e2009728009d0e0e7e46010ec806f01c10ed6000d96ec085a20b22ae0023a00eb3c80034a600448a004789c04a6200be2ca087aa0036e30b274a5915485b176c5b016ed5574a00344009323e72f1c8008d54c030263743080ea24c758d2ce015a0b7811fbd2500334b420f2686009224f5e3ba10adae0d560ad9d50595a826b15b0200380000e84c05608019b29200b3a01072c60609fe0049cc008a2000a406008d6c09f89809ea7400516160d22e9966ee0e53ce0089e6045558001d66c430da1ab6f4907fe6840243b83023e200dd82049f9c8022ce0d03d160746600d56a053162904d6600ed62007985310188109e4c014382192d6804fdc801358bcd918c14cd408c6e7c6688c46a49ca8a4b9f67f1a826b0b083cf8a38716013946b18842ec228c01dda9e68b42ac22184e186002143e31a6e45d45c04414948617aa861768013a4e41142c01aa9ae3161cac25a80440706c3b70a4f750c1ab28e1a03be16418be11fe03e21350de0e760f30a14c184411f6a00dfee40dd0c06eb013077260044ae0045a60078c739aee806469c52a3480b174c9757249b0e74c72d253ed9607b5bc957aac47d35623008649b5a6c70760030b24ef0d3ca10f36000fbcb0b231c1fe13de275d5bc6ef4c0116d4a9151ab40e72200daac008b2e04209490aa0600894000474000aa2590aee6a04940007c4000a342004aaa00f94740a5c20e716cd08d622049e800466600674a0054480025880011a03b57667034820202d49cd3883014637031a600302f25410407f73202ff60810746041058f08a4a083d4a00c0c01141201146c01104041247ac114ba84df47211150411775514c5a624abe03153c864b4c816d79d8a8a686e17e8422dec31834738a04828adaefbe2fe2187e216a5e626bf2836c1ecc699ca68148e2a6dd86e428c1114621a6962fb8daa6853a06c1766264a5e009722009a400030981002918100a41ea1fc1e38f5309b2fe400966c0053c00203c8c0011620892214dca30b92142c409203344903841a3891b344776a4b0c0c182041428244880c0e0c1030a141030587060c14a040b58aa5c80e080cd02076a16284080c0ce033f75fae4697383964370a4f48905e790a74e9cfc1872c4a710a14ea65671e2944a95a9579804357a73c80d110b269c8458d287c30f13403a9c8033848694246c9ae4c0416486121a023de498e1a6ce090f254a0c694103c4c3140c2e3c6040d18103377b2ab8b409b38283969617588679a184081a0c662270b021890e0b4f9e7cd97002921c407fd62449e247840727a628613a65eb542a5bbb76817ae4abd7a93fbd78f1eab54b94a859b69a27f7fe65ab57b162c78af9f2b57d3c2f5fe7a38f3fb61e3dafefcdc70b2b664cbcade9bb66d1a2458a94285af9f5e21d30bccc828a2fc750971c2da29842cb2ca440b24822893002c9238f7cf2092889009288222036420927a034d28822810c72c71a3980f001061e7410c20c459481061b6aa421871d4fcce001081ddca084124648214514594881061a4aae91061a3b7c0082072db4b003135128f9c61b7fd8e1862086c8a144112898a0820534e544134c312150404c40b5f919509cb9c9134e401160139d3be1b4840a536851c409751862482798acb24a27937462a8206bbc610827a12cd1811a7ef8b1041b6cf041021122106108164e18f2061137c8d0fec2139fce50420a2414b1c30c24e0a0c4141f60d1070d338c40c41b1f68400407a50d31420b33e0c0c2080f74d004103aa8c041070b10951303d85290414b07e889c0082b3980c0b8d7aee4d2020d30d0000d8c98c2c6066c3cc104120fd0108a2276c4c1092a8ef0028c2fa1b411ca2e8c34314b2fdcf5f2c829e235d7cb2f10e6370b2fbb9c8720c2f37d27cc7ce30143602fc21c234c74bd00234c7dc508e30b300847c70b7b2b93a79f2dfae957cb27173e220a29a8dc620b72d375978b82a9cc920a299d8c823425a17c4209281a8e42092595dc31c81f8368c88925947a32e2238c28e2861d76ace1871d750c1248a67b3422881f683cb9861c6ea4fee1462182b021871337b681c6134300b146194fe46010933b70a0020d27b8842d041e30b0674e7aee896701e3669e13e6931fc080b797ef74c209249440c412221461021c86c001871c4831ce041c5834b5440568c4d2892386a8528714ac9f00021686582588a36b44da440827d445c3104ec011c50c278870410758604182084de830840e24585081072eacf1030314dce0eb081a5cf001051878e6404c20d099e74bddc2d4ed07a9d974aee4d8fac0030e5011201cc10448c0c11336b08013b022158c3801a518e12f5f3402109ff045200a718a07e502158a984531a453a0e2eca28300b245d18a469d598cc761c220067b78710bf920083de36919c8fec0a39d0ea202851513507272811c9a4567163e9bc52f7a519c53a0a214c4d9c5cf66318b8addc2144efbc429f4a30a5184e214a708457f40c1b45070a2139460c423049104640d61304c58820c4030a523a401091d40410e944002193881090561021baa800638e86d6d7f28841fd6a686398881092ed84115a6b7010b44c00116d88003b0c50092b4a926e4ca5c4d72b239ced8444f9cdb0928dd342e2cac600810d0801bfa70820de0a00a7ee8842e0fe5a8371c41076a70011602c189551c0a1358a803f1fa400215c8c0086ba02516dc0087345820058741029a3a101b235c4f0324a8c20934800529ecc00825c0001104010517e8200d6bc0421a94fe50052cb0e10de6a34049e0f7800a5c203598abd6b8764200cf0005273841000448b9130db0c43324c8414a16400107b000059d08051b0681a13998428a7fd843203e218624a4e2178fa8182450b18b0781713fbcc8c52c3c96311b8a5064c200067b80c1435f642c64164b592f8e41310161076639d40f2d4aa11f50ec8c16a848c5160fd60bec1815aa3ff4da861ac108a87d2214a2f8c423fec088119982144ea3848820d18844040212615304251ea1884660a2127e78831bc644a429ac21106ba081084a40831c180e0b7cd8431bd8803541c8010d7288141372f08423d89309e1ab000a48001208a060032288c00638000196b4c925a3cc899db855fe130280b24e356109e644790041c5520a9d30e621a290842a2c415e4f208216dec0074290ea2a951004200ec58a4ea8a17886220421c0e428430862571d9081061c90011cb0ee9d46c8411aa6300338f441051d308108385002353461082538c1aafcc0840a74c0010ff08006e2872c112ca0052e680945c5152706e0c45b2bb1dc4d86528093e089022220c002127082227860016f18451a7c600746e4605fa878c314de800531280115a100c4286ca108547c6743a1f82218274631124aa769e779197a10560c8fc9473d2f7419c97288b05de4a262451dcf7d10869fe4a4e2414a85ea7e9cb83350a05814a840052d54410a35820d4339fb831cd8d006fe393042cc7610c4dadea088475482118c0844209cd00435d0f98d455882117e500210a8a004e423c20932d0800c9c000a4e88021aca99041278a08f2df800119e80053964aa0528e0402537408210a880043430c209de67990aa4644fd552e5400faa133b0580a077d2930534a08372b24e0b558043169e80831cf4a113b4cb4216a650e12160160d3f788320b050582354a10840104116faa08428f4610a903005219c40827595c0011d98411f0421051d28e1094d90021346b0c92460c0961ee0c00230b09a12e0400323c040062aa0822fe0800121d0274de627618276cb277b8209fe0220b93bb5763530d9c00c3877ad006ca01246f84005dce0840afe8d02104d484310488087a3ddc117bf68840bbfda0b0775e785d2b90f7214969d83c18c3d1a4b19ca5e081f244fe785cdf9392f6c2153fd04bda808f3854c77718b98db22aca6a0192a4cd1b4508ce2aba3f8e1281ee108ac3f42ad9c308528b6b29541f821ce6dd8037dd150061c38ba035190ca201c318839b881107bb033a7cae007412ce2cc6a50031a96e0042ce8800223a8150d1ae3810b6880bd22a0000752206a09ac00240d48c084c7855a56be64a0696275e5c8a5a681e20402274877a10861a851254e109ee0432ca212dd252861098478421d9e706d0f186108705802ad4de0171204610934d8c0be1ffdfb8ab401754318b40ba2708424fcfee0044f2842085aa0821040a0045330820872a0831228e1303bf0400534f000977cc627310940007ac260f827fcc0aded134f10700107b8f602a7b47f07f00058d02c1620031ee0064ce0069dc0034ab0021a5008aaa066bf600b8fd00ba8f008c41046d9511f2a2354e7710cb6800919f808a4401ce7c132c9011e2a5355d8310b177256b4600a55b40b4c640ba8a021a4303130135353653438a821a1500bf9410a74f5554e640ba0c0089c500aa5800aaa700aaa100a5d84091682099cb0087ba00421f00103e10238400338a00648b0035830088ce00775200883400851603a7cc4011a90024a800459502895c0094f610762b00648a0692850021ad0fe0453e0078e50099e100a9500099030087250087ef30448f00427e00226700239c02b2ee00121001802710215601227c0012ad13fac644a9d4350e49226a2857aa0080587d0068630055840044600054940037030097d503c5860023490053a501186a005467003d8775e28207c335067ad7007400002800102b3a30215706f1d201727a0058230881a5002aea20341b00325100244503a26f006b5960452700416f0001c202e0ce00659d00008d00211e0133d815008e05a6e327f9c5100f3e72612760097540192e33fa9e53f40b0001ad0001b50043a400469100a16800649700190c0468e004181900a94b00bbe20070722202b231ebfe00bdf211e33fe431e2a390b985031e8c11e44451d34030a9c205627980a419531a8a04694f009b54044b3200aa0e0442d05202bd30bb4700abdf00981801dc1510994200778e06680b00680d0096eb0067780076e80077840089560096864754f530868d00694105596300a9e905c78306a2670046d10076a500555c0044ec0067350066a30043b80067d170852500224c00484c3043d320468300571330551b00618a13e2da00347d0021c4011ec275a16600115e5001ea05f17c01236b1496c127afae726a4447a4051131c30054bd01459700858209b339005913209ab60044530051960027dd0075240022930033fa00327500283e20352800238e002877002338005fe94080485100bd9b803e708077e80056d6404339003464004687002fd44011be0013af09d582008a3030110d001f32902e053044d40031f8006c3c2031c00022d90041bf0003c110030219079824a3c41130460a0fd18001c8004147001f6070108207f78b20004d00010500009a00362e0047e401b3a40006ee0036a6007a86095a14009c7f007a44033d9516340d71e324533b4e02fb7400a34c894e7d1942e84a306620ba690088bf508a5c05634d84154940bb4a033a7e0a44e387354940abb800a91500947c33306721ca9701c59a61fa6105534330b25a2089d8056a0000a6ce5088f70228400088d300880000870a6855511087bc0064910232e40fe044a80065e09088470077610086e70078610088109044cf02c9799047bf1048480358d60089050096e7a666bf00143f00434d00244d0021e80010fb0013e300428e0038bc70202577a3a5127b3a57f7db2003f0005a30307b12005a26604755008698005509001435008a6b2042580054670084b70041de03d4610010b7012459206c2f7065a40023a9003d293031630139c38911740013ac0011420033810119b64048640041870025850040d440423e002da6a3a52700238d0076fd004207001200007f45a018ea6391cca00183051fb482e7d222ed38a002871500560020bf56a3b911a0fb01a9a914c3ae000f6d87e0520036b50084e0209be00088afe204567f50bdf2143f55132e1613221b353c41064425432d4910a8e606513430a9470344e03088b100aa5600ace01469890085a760aa2b0524c6a20334846733057a84045b7300ba6300a569a1fc531759c10568f00098130217bc0088b206675f1056dc00889e00681000875a0066b50077740a862b08683d08450880a9d905c4e303a3ae0011ff02334b0034fb0065270078200296b100551508738800320503abe81020e61022b606f44e0021a908d187003338004f3b349e9291a0e2002a0d53e15108aedb73930814a0a5a0050800243504ec1a80544108c3f80024cd00011a018980007efa405a45301557008d7a5055160042100047ec0064ba0affe59500438d0012510b821900248c07e4350074490bb1460089ee0018b039ae0f4000ef004821005d3a29f33300314500151700217200584704e34a003537001346002daea076b8003cc42b062a04d73b290f3279008ba1225c0400ee75a3ca18f2d5101aa650134e0060ee02a0866021d9006625006a21067a6a046a1c0b2b3500a3c9532e40120fea2532793744cd41c04721e365820a7600a5fa70889f00794900872f0218fc0097f600653130773050941090a621463b3c034b6f009752b4637b80b3cfa8252588418f275a7400a62a40a53e7444ec41fa3a0086d20054fe05772d006e8b60351004f4e4004dcb90667ab0883903c75e00773e7089cf0fe088500097e79238b26078b100888f00771b0246c5036bce5046de00448308c06540565a0684be202a6ca5d2d12130966006a421305f039a1044aa9f49a08b0013ec1001e900586e0044bf0064f0007894104880b057df08b0c049ac11a0572500447107cde33916f500775a005e57a6f44a00645f006468001ba4c047c600415f03c49500255302a27200544000244102f141070a2f90465b0068280074d30031a40034a6001182005f3b41117300268d08c7cf44f14409fa8e97e094927d8d21208eb001dea1304395b037900f3434a0b20109a0c0205f03d19d0028fe50660530768100ac4d0300d430cc690d1f49132159d53322c1de46144beb045bbfef0077f800ab6f00b4dbb087fa545582656a700086d00098a80097fb0582202465cd7418fa0065fb0b3a9800aa2900876a0b445938190205670f5099ce04454f74545390a5bbc33a210469fc0c51a322262f50898c0d4418c218d10086425678120076f33077290d6b8116770e65680b0b895d0095c37083acc7572c5088280065f620769f0045280046220068aa61648205124e0066aa00108f9499cd72d3731ab08852740d1000aa0014900054db004ef956e4910cc87600823db0738a0022b20026ea00238b004f085021580016cf00a7d90049518055040035580041e00a84b00cfb7e300fe44046d60040f407c3b8002fbd60123300221407e23d004feb94bbb6b807d9cc2156c505a0728020fe00683500846400124b0064db00684300492d1011860aa9233aef8f55a004d6ce342010790c07d322eafa66035111904a6270b40c1f6050139a006a8f0044a4009bd400cb3204633250cd39153c59074e1e18144a53230c71ff99146a7500a73b0077f800673950865fb0868d0848a301bf0f3018c75d37130077660d68350063c100521b95418821cd8610bb4c0086ea00847f93462a7c49d70d559060a3c9a654b4c0a53b8a69840098ef02121120828025726e2e4749a088dc009a4b0c77016367296086a76d36f7d116da00684a31068f0066520a262c6066e800421e0013370044d60976ef0076e10054de0fe2b75d00673f0048c3103ef131313d6008f7d3907653940602919504e5a00118750078d8e4bab4008874004a683da4c508ba42d910f003d457001a5590216e039895e073b300219805f93c101386001d9383f209001ddd5233b00021830021c8001d0a2026d30031ce00151c009b1290304db015cc8014640034ee0c81d000773e0047f900652f0011fd001193003190001ffe6dbedd76a36813e92d3ba438170f3a3134181131495b19fec001820619d2402a5b0061620075f5a0a8020922a993115ad92c6b01e2b690cc470822554458f20261b2e07748802dd3c7e4ee008564002fc590214958d16700271b0086920023220031820034ca0064a100434fea00672e0c75fd05689c00972f00595300a4699e58f40d78fa0c464f4759c006767d40870053675c53419050a72ed083dec08a890099fc008760a67720d085fd6086e960873b0067f009eb989351462857be008a1d0b77485867e601b7310e648c0044780045fc0043380065f2003c1e5e923800332400432b049f5fc01db676c1e70024ca004282039fdd812aa040102100016d08c2a6004ba22086a309cda57044cf00319d00134103759a01727507e1a406c27702cd9130220b0030f80013482054be01218000282b00440f0074be00020b002f54624dc54020f00026aee2321d0011ae01bceb6013aa00317200758d0011500011910a16a78037b1005fe69d3d7d7d37fd4fe230ce0db19302e2b9160ee73cf85fed89c941a32314aa88970ac65000b200453c00275c00baad006bb900994400bf4511fecb1ef2a196405a21f1d640a824069764a096d20aac2f7f80001420c114126dce069a18142860714beb40162214307060c88f43801e48183132d780c99128814254689ec802ac58891a3428916290a25ea542852a242dd24558a542850a1388912f5e9d3a347a27696024594d1234a8f02297af4a9d1a34a8ea832fa23c6cd1a2951a288a141a3cd9e4098182d92d3e609060f2d3e6410d1824691161d3054f0f00183830b152874d04184088d0e0efefa488345ca942544861c21c1e04005081a3a2c3860fee1048b0e413a2060007ac106071b389cc862c44d1d0e2248d090d2070b912286b09c4871c4d012121e86089601448b13436b88ccc082a5439f4e2486aca1e140479a2255465c48f2c4531d1d293ad529711d810f3e53b018928245909f408e9678b06001ca08176bfc10aaf483c10637694e9cd0c18d1c0a0905954a06f9c38d2780d08001071cf8008205164000340628a0c0030a1f3ce080023c2c2044070b40a082051e108d010a3f0c6d01c90e40600107183881133f6890430c417829c6175f78f1e5185f7a1406986284f151985e7c01a6975d76a1a5113b145104902640a8c00c4ce4c0e1092270b8e00b1a40e8e0010644902288052820a13011fe3ac821842398c0d00223da40028d47f640638f39ee6084124e4049242d34d20044104540518594464921859344203105949f3809e5135092d294934f5462a411482009b591449efa031036d87844254a484da4a4495b5de4ac40d640c30d3b3a01c5113b0419e40e37da700350473801a4d82748a8c0b50c5abba0831134d8e0810ba2bdc0830a3030c18386249bf0020c1da8d0c30e4984e0041570c0218b298cf0c39043d2b02d8413a230a48f2a4ea8608327f6d04204121df0a0842170c8608675fdf82f8d214860a8001164e8288322fc80a30319e0a001081da0900882192b88e2133714aa600853b0b8e0840c2ca3e10837ca6863942a64488202fed03a0062060b0e7040083662ce01091070a801891640c86089569e7efa9556f0f0e0800512284103040a2000c40a437ca030ab2ba410010f1728a0ecad4bb8c00747d0e840093f18d905485b7804e6c7597619b298638ef4a5c8638439a6175366e9a517501a69c30f4e18c9a189323666a2050a0ceb0b8558fae9871b093a38020724fe40830d3bc498a10536d01003934494e1a79f70ec08a28d3a90986108259040620d37fe98438e2fd090230e3920610a934f4ef964505046318594a428a1e4135297c2e41149ed90e3d44618b9f4a6987252257b4842a144103c0841e3843be408e40f35bca2a10939f6f0830d31c448c38d37d6988279d6a00639feac670d5190431dbe7004293c210d6051c2072ef0001670400970e0410b36d0a2ae85886b246ac0064ce0800c64e002b1c9421d648385194c010e6f38c212eab0042cf4610a2458c3128e90832da8000e5aa8421de0c086e430211087c84005322003238c80020fd00116ca40043858c10319400105504084135ce62f7130041c4290011cb8e0049a388108343003077400027c78830e1c00011758610e7dc881443ef30024c8610e6da88494dee0c0274441403e70053ff8e10a2b68231f70a0504512a0002a68410b5b5000012844a10a1ce0075b00250a0eb182123900330c90001526d18a3b480005f2c3c11788f0887060a31cca008637b0510c71acfe631d4c3a063084d40b615c631ffa90062ffec08b5994420e7270032b94018b491c42163a60c0034010051d78600ab0e0c62becc10f6ea0a0063ce8400918888439cc01091e208197ae580478f0431ff6e8c73a1aa10441a8041080f0843d042a0a7ff843196b70444f50818a51484f7ba0e8042544810af471821289508423ac4289ef31621080781520b82788408022527f5044aa0471aa400462108b40a9475502534108620f7858c31e186107fc0dab9f8c08047b12c18635f0af092150835a4240811308210a4f3841694cf001101ca10515881104fe420326d040043c60421150b0820da8a0020f10010d4800042724700a55f0836cea8085231861fe063248c0018cc00928b8800d6fa8df1ba020833f1ca2087098c3091680c33a18421077a8031128b08035ac010935e5410e64d0000668c6016a48c21b967081199480042280c0055ac081fad1e00b5dc480561d70806c9e6b0121a0810b98808537f8ca0d8510841cfce08727b8a0118aecc736d220828775e0339350a426d8a0c857a48d019431800fb4a1487e90e30a3272100196d00f7eb422168a3cc40576e008279c2011e350e437f6a1487078831fc660122f78010c5ab423764352643268010c50a0c10f8a58843f14d90c4da8800768784209b2900945c66202dce0c7368a6087367c81074a68c212a6903417dca0097b70049fc6190d1ae84291fea4f8dd1f1251bd66f0631f94f0473baee78898d0aa2966f903518802893dc8410d89f8c31f4ab2882103e229ff04844b1e31aaa8682a148f5004f842a1924724aa105301de1e8a8c86210001084930b2189ec98636b4810d4fa841ea6440831094610d3af8cd5c3a408222a85521a1a1adce3003a30a5980421cf000084a0005232896044778c32196c0042674020e50909605742081b1ed4c055055cc14a4908421a8800f3f084e0968608213e460089e2084079af0863260a10d7ca00d0a3020410b7820b51770400896e0020f3880051ed0810a30d0010d54a0042d30011a9670390468000414c041093250020ab8400644b8832300e1072938810969fe4843197ad08671c60e147368c20ec83405135841c1b290057a0be0208e44400b0ae6472c24e0221735c00112b0063f64718557c462050ce8407c5c008527e44291faa80579f9118d59006917c738c62c8c415e7f90b71f688049133ae004481883bbcbd80149aa30032588010d35e607c0f9c10a0fa819a739f02a075cf0843b00620f6d204122b9abc85f2041094078021b26b5886128d21d7f6884f48c828a53cc6216a7404a551ee188a690dd28a618854f9a4712213f427ca130c52360ba8738e814129cc0844db01208a69cc5558fc084a4e4c00892da21c982a8152650ba06264c41092d380167cf66182018ed02158240119c4003168000032cc0fe50053ec0a0d9c24800194840049c20eb2c0ca108696c40caead009963164230cc080052020852c64010f782802094e4083358460012598010ecad0895534614e7220041c8a4081167aa0603868c1052cc080b6e880061b98d002aa0087060cba012d484215e4f0842128e7890e6280b83000b40c588002690d842838a18822386007e3de8a1d823620589d36500324a08127209e8833011418380790810a78900b61000350800b5400037091d040000ad8800650800840810d508006a080e8288332a00147c08453a0853f50055a10055ae80517049262a8855200925cd0af5e10851d39051c20824ac0822a58021148000c70824f208232900352688207fe78800fa081d1b3032698818ed1810c508171b30335603324880229f8022730021d6082df61b3a2220225182041a8044e98af7d58845018055040055ad81b1744059da0855320054c80844a80a9a45a0f34980392a2845a4984e031323720822798022268034058034260843250833938c03220a93f780afd6b1e4650043bb8033f7084e19a0a45700337600329c0833fb08303eb273b90023718351a90400cf88f0cd08113e8011d08811440010e71ae0a6880f223910a311b0410af3eb03f0fd0000e38c1296c8242e0031520012310010d41800630011160024180822ad0021a180123200413c80047208442c00210e8846760832438010c480347d082fe0e28a10c68010d5a800b280223b8100ae0801900811c208436800cce52916cb20012d08137b9001710340a8c9071a9001420012640032008c719f08024d881197083a53084f6480226f8952fc00135d0011770011c58b60da00025aa8009ba1091b1bf0ad0816494c21899c20e30380898880c10190648400fc80150440348c89e34c0a15819055e380545e8411f41855e60843dd8090d401435e8810962aa403801c26a8205c88035500139698136b03341100399648340500299048119002946b8033b30093fb803df21a94568041edb944f08444f8184a678849e308a99581e50100aa2d8944db9bb91e084471884a72814c3f303c303c544f09da710fe15456829bed31e51509e476884025209487004e4f1a83b78022930027e64ae2a0c0126288323408232301d35c002347082c1a802f5510331d001438300559bb30c301babe11a1390222480823428800d28350f0c8d0b280143db009b5c82e01b02cd100107a88016311b0b703d0b882dcd830213683f384803138080fb84001a28833aa8033498817084043f40000b68012578021c50021dd00007d080e4208228101b06f890e8ac0024a08000c0d0006000106080344882aac20c13980b1a480211100137e00331508326008454e8b241980325a8020363833910833fe00434280343208223188221a88b2b0a9b2722a1ab7a800aa8800eb8001571808dfe8080bc320086d88b12c0011208810a4888283890fe59034648855fb0055198833870c15ce8ba5d9885221c053490003b103a0ea8080be00028c082034081b97004a85b8326b0034070a72f08044ae80445b80336f0033930d4414829e4498ae81185e8210517a409534005a328055338055388094d0d0aa2a0d4ec6995566104404029a8000546584ca6e00448284c520c04274b84416029452015a2c004509d323f99833da8d58f4a8306aa4d2c6003f8598445c0a83488834068043f5002f3c082f7e8002be003ba2b8440600324f80013e8331a800236201534f83e11588852db800f308c7ee1170e88000228023ec08227e00017118e21c882754982fe2ca88c11d01683240206e5001440012cf0011330823e480220380112f880ff600343f881a39c48b600011078130ba8802430044e080441280542e8003a3d8223180c60938c18a9c055583a2d90029dbb063870822f20010d58509385b83970021c380245610345f005eeb20550a0b44a2803277802cf0b012040831018010e5d36894c02346802119042093c11268d80d8292fab8982772a8136688114c08124180138b8323750852d53044a083c39208954f8045160841048833a8082a5d38709c086a583001d40c5102004f6aa04453002350084f3d909a240054a2006e4d2074562065230055b4005afa3054d2505afd30951d0894ca58551108a4fa0fe044b79845841d55049045e3515356084ba1b155180844548387f7804378b833430403160b3957a55f8218b4278095a558a3b508444a804d66c0a4a708451758339f8a7d004456011831cc081bc5c0d3b98c53b98832748021df8c5376890266d8000988cf8eb801144910dec9006a8d226508107400e1428011158934eda802ac0022850810e78022350013c98043f88000bf0843e288355e00442908d2cb0c9b69881c6690213e0830692811b40823e30021968b60cf051115883df40023670182038820c904607110115010d0858813bc0077d585c7fb0876d9006458a82cb11177259016ef0077250307b908246485c3f400547780274881d45988345fe181d3b788240e09c6620af69d08128900832d101129804938b1d2df08bd9ba1c2d50a482222f43808d46e8803468827ae28774c0b940980351e8d65c500335100539e08446788322200435108057e8073e00387d1004f28a0506289a13708434f8004a0863059b075b404c3d14855e402e5b3805a0180a9ad8dc5350b07e982f7ee805b723055b98054a1806f2da075ed0b85e98855b40855d582897c3da7e503c4c490a55e01c7e688758f91e4aa804a00204f821c5b969034e1483365b033958834ab4dec614d5524c8337b0c42f78033948c12778823240b736fb022968a736480336108436e8d32f4802dca1012c10b33280022ccc800550026ecc00fe0a20822fd08b0020000140001ae8031d90823aa002d9ea001c7857b06d8214ea0336e04d71e683ae4a011a30c72210812388853e00bf0bb8dfd1a081846903d9c81a04780012d88114608237400120a0011a7a0346200236f0049aec0b088838b3b98034180436c0077fa08171ea8725780545c2020a701019a9800980857f680617e307526815bef3cb3f685c7ef80435680435780237400231c8e94ca8317fd802c9ba000cc08027e804455a8500800228b09a6c4a00080800300eb809202f58788023788208c0011f98057ce00758f0847e48843618044128ce13c0512c98034738012410c70d000094a5023e40af2b50a465a8805ef30334f8804220feb959f8845f109452088a48e56445c2865e982f7020e55d2065519065652005f2d287b123459268831adb0754b80645ba859b90cc53b0055b28397e408544680442588334b083a530627f8085d0a504ac6b4c4ce1044ce9044b688ae2b528a012445485844e503c977084f81904359002fb30454628043418432688834568273ff883e162022460827f61834d8c832f702e10e81812a00019f01607e000cde080b4311b01080003d8c808d001136840267090650b022c68021af00151888524200d17e10085008122c0844e488222008287818002304a0818021d98012780d3bea8001300829b9ca32268022330021a500226206789560243a882de400023fed8810788800dc88127e80094e58743b8827ed08435c05a6250800961000830801f20077bc207cec187e44883c27c8344c8b97ea0064ed04f34f8823458847ce0877f70a47d18861398ac33098434e00328b627554001dc93500e20017a48876d78063e188716d6020d9091084883508004f8ea872648023518843500962b6c811f58840cc06bcc10800968066d700505d0845518004d688666c8077531023960802818146748747c308652f03ae2458991d00572c0077c6086a4a8ee44608a2bcb0463c0877a20075fd0c34c1d8546d01451a0f559c8045dd0855c4890ee21c54f18065d30866260144b2015d3dc0335a876519831c96c9e41180bb6d31efe52a412d3b40a46b0d93a0804e10143f82914390045e0011e39281d34408338f88342a8d6f538d44008cc27d00120d8361d78821fd0801360832f60822f00021f200d7f990336080205548313d082094880b4a12129a882088891ad2980ffb0005322009078d22430810bc0810d20000da4b40838002160f812604a38382d0f10211a6801379884d988822698812638011c804710808336300222b0b93780836b2b800c4801c3800066d9800018800150800dd0f206308006d0022828d910598006405811f59fe6f403e3285012d0292038b13d388158333020188166818bc9b29a8d200136c0013480800d98820ba8bf098191f3350003b00b2828820ef4fe8b0f680220a83a7e90be3278834790032951831f80002198acef4b00cc487b0348808de89005e0812a4c0009689fa7b4054630013b605146f8823520855e00121fe1855238854840cc52c80560f87660e085bb19febce1053da4c1855a925f6085488dd454100592102ebfacee46f8c44618d6c1d31e4c813b5418894baf833b90021f67049ae804714b0335588332f8cd4280d13b180446f865450008428c060d5a23a58da03f6ad0b8f9d346cd9e4a8602d571d3468e1b1d3d3a64a001048d18192ca078a0d0a101ca050b36a08010a20a9c241d2040681061010214240e3c806060c181a027f828118182c0891c224ec85881804206133b343cb8b061fe8305074754a0085248951b0d2534aca9f2a0c2133814a0a83982d3c203071b44b0e994e403050b34dc143a42244494372a3c944103e4020306080e4818a201028302051c3840b018c1821562d838c15269861b5481023da1d0c6cf132784d0bc0964e4071c0e6a929c2db20482870a38298f60536407880e3d188830410141019e0c1c2c483002320207101640250245041126524ef8a9f427090a407f447438c173b1649c41091c007a2081ca030e1a2c2f6141f1831365e07007362b111b8bd832cb2380f881c81e7690620b2db4a042cb2ebbf8d2cb2ca840a24a8412de820a2aa99c62ca2cbff8e24b85ac9042c928a474e208270ea2720a2b1da202feca239528c2d01e6d0422c71c103d8249289c64224a288b0cb248227f60f249279f5062881d729cb6c8228cdcd1065f8c3c32d01a4944d1468f445490c10734c081a42082ec81061b4c886081073470401f0345dc21882185cc1685092294d0010740e010d75c0214f04009451872820626b407020d2a105105041b2cb184274b788001764f60b102030d244081079059c0501634544043111a5090820e53486184112a58402a0740b5208207951d40430e1e3c40031372c05107101d684002111900d104091e4c71020689e11419032a3170c072052cf000034b0c91c11383d8f5461b27948046ba34e0b0060d52ecb184121b38610404208800c203437cfe61d901053010050d32d4d10005073ca5f0a8dc5290dc743405fc804a479410174d45886148095a9812c809f7059c8006c949160001040420d9620aa79c9c65386d009a122acc50071a7250c20924683831c829a930424a2aa6a432cb2948f332e284bef062a129b4cc82b42dbeec424ad2b6a032f529a374c8602aa9a0420ad99450f247147f8462ca279880c2c828ac80d2c9dc946cc948258edc61471b7f68196422942832871c55c4b1c7680eedc1861c8e2c92461573bcc1e34573ecb887216a2821c30c153860c2135048d1841a6ea4e1c4116da93096072df8e0030a2754b001134c40714211651cf104000018800210821ca283085060118b0a20fe307a01119a08e2a665223051041055144181030cac20c82a98a0b000107018b184061a181105104f18b28404660cc14109d97ecb5c09690c3142083bd0008105211c9184052270823af8a0081b28400e4e400414344007116840064eb000c5284c612d4380053a50811c6860067388820e3c40828c44800380a84321084183fd64e0004d60c4b624a0060f308002ee214007908082037c81030ce8c00208e0ad0a060028bb410001be8513043ce038d13980086810011a30a20d15c01e7b841894f51c408828dba2652e6319e65000094aa00005a620862138c10925884220d21688413c82469048c4294e410a5a9c4215a818d0274421b55dcc024213eafe502a78a148426e2d1564fbc4274c01384c900292a8d8c580ae568951a442149c00859340118a507c82148fd852233c0909473422108960042702c1b739f8c10d807004231c91083b180212a0e04481d66007d3f92110b01483077010290e98c0074fd8831cd6908625f8800627d0810b4c50843914220a4ba8c3920837072680c0044028031bcc8086035420001b9082215cb1041c60210217d066093ca0010e3ce104d75483114a40822198a0814d308206a2d0092d9860064e30441ffc80050e60af3d0b900e1022e0800b9cc00320d081f294d007414881044d4843139cc0060d38c0034980c2114230820604c0012358400610250313c8e0093aa821feb7801246068c200838b040023990061cec00079222821266a0042cac21148468821c3680010a2442024141000d50b001c57cc05bd8a3400b4e40a72d6a316002db166614f6836f15a0010fb0a04a10708227d010399211621685881c8075915b05588c112ff0011db8410d4b184423d6d0843411e10b4c9803241461074adc8106a1a0d12978718c42eea217be3806318ae10b60f8426b9410449218218aa04d6817b9b0452e08998a5fd86217a9e8052b4c54094a0812146c6b442328c1a22dc9e10d8270e5233841894670c211c6dc121d3fc14a4128e20f6e90021aa4f9053fcca60e08f9c31c6c89113124e1094df0c31a98a08322ac4e054138c210fe2e30021a44210a6c8842085050824ae9e0040cbc68053a20830c48c701094840ef0210009464000e58a8c2148850022c74220bcc0cf0726800853410220b4158823f5530043874020b29c8c0062c3c83231ca10e4f28410518f0800830400b6bd800075460840588a012a6d8c31b9a70021ab480c1d299c9064030ab193c21084bfe28119e4005f8308006259820c0b6459d07202003192002096680853a1cc10f49f0c32090f08442ac610881c04411d69003dd7cc001150c810e128058c970eb01b76a007bc0f8d7c3824b251705c22938f0801024c1081dcd490a1d60c39709b600894e34a115f32d3123a0010b8040052a2002072ca1107d1bc4283afed1494728a1069d9845285261892734e214bdcd452fae968a5ddc6216a31045d556eb8b6000a317a830c5d83e91dcb57da214b4e8ad2d3ec4203d9aa26c8910842314d1063bf8010d6a588396b664074604e2119fe04423a29bcb532662228ca00424dcad5c7825c17083d8c31ee6e00433a8410d7650031b8669ba3754a1097f288312ec30072cb021356910c3090c0063074c5a8367f64322d6100528e08b6544de40090ca0823aa0a088b7d3c224a620082c8040094bd8400b36800015f4a1138b4254115600815971000b98f0041cfecbf10a5ce0011ca8800774c0874ea8a10c54f0c110b0a08421540113a930c41092e089f5e9405c81d042c03890fe661a9340d314e0c012181002156440c7194c021086651c147c00031e98c1062ea08332bca1087b70c213e6208a153c811346a0411da0500023c05561c969c080870a30c940e0ab9221b4a785e8e980a5ac3d284b4fc010500120a00001db127d172d53fa9515d6a2c961a9c226c8801f1061036970c41f74f00636ec410a9df06327eec00909ed42b4c678be318a410c5f6ccd16bf00868498c60ba4cd6242a2f8441f77510cd69a76177aec842854410a4c40e2137d9bad294ab1b6a91dbb14a550852a46490946306294a3cce58ed88113084223fc9b1f1453210c82213c82d96817ffb901e3fc81204809eaa8c117e400133c4112a4412dad811bb841fe14484112040111a4cf1af88c18a4461310411da4011338011254811c98411190400830011b884100ac801f68c10f90400a48000a7000131c02169c806530008381000894800c68010a404115400110d0800e40c610184f23bc811628410e40400178c0119c5413f48111740016688713e800055c88209c804964800a140111b4401434c1eec08185ad4b27100211188102880076c40a01204042591a0f3480ea3dc003cc800b5c400780d005b8c008a44012e8401a50950e401e13f8131694c0019c800a6cc009105a090c0104548607389a5b3d4562a0c7e7b915a76dcba215c0e9a98c84a98c174998201a4003e41ee9b5952d26070534da04cd8e0a9cfe4012884013a4c00578801218422814c32f189231b0966a8d4834188332445f317c63f4cd8225384229d4962db0d6d4f88230b01629b08829e4562a804223e412274052fa11122b148d2880822a7c88298cc2ce50422770c2f17d48fe85022a94c228fcd228ed232784429340c2e5c8c11e2c821c144222cc011bb0411bb0c91f20ce2334421b28411300c1115441ed94a4095c0005004f1904c21cc081463e0113e0000e3c8101314115e4cce47cc112a45313a80004a0401138411ff00116f0c10a248005348010a040015c400658000850c002b51416148103a800166c800e54411dd4410914800ac081c3f50116688005e84016b8c12408021cacc11bfe94581ae01907a0011c54411a2c19e4cc44036cc002148001040004181a0990800c94401294801834415e14c1095c4099b9801314c21da89d0b50c00590401d10010ddc41324a41cd48c10a44c12034010738400bacc11d3800784840de5dd41889da02dcc7614586a7250705b955178d5ec01c402eaaccc94898001427714a582e4a980118c00140c122dc25203c010824c0ca28c07cf01808540007680008f44004200a53350087750220c8c11f404229389f31f8c237b6672f484d2ef0427b3e1f3100832204c227c4e788b0d62f00d725f1427f22cd87a0c267651b2b8c82257402faa1020356c22374c28c3ce42731021bb8c011089320300272c901fe87a6c1130001102c990c2001e3b081200c821dd8c11d60c41a9ce81c75971cd0e44562827439827229821fecc147f2411fcc411aa4011be0c1d6a5011a40010d884006604662b0803ec9c01174e210548005a8400008808451670390000710010714d64a884013312309b48a09644011dc070560400678cb06648007a8c014d0ce12509c1664850798001c68814635000abc4625480164604fa904c57280da615147651c160478e6545a406a3e0008408120ac4109e04006a0c11294c00c9c40909a940720811d644111f401012c01214c41be20c01ffc4000a8c10f10808e6911c0142212c5e27aac0ccca04cca04670000272ea24c951e27720aab00e8fee2ae06cc0204a72d264004b44009d0c00ce8001080a90720801800c10228231648e3fc95166f91828d60c22c00c331b4273000c32d0c886b6dc96795822dbceb2efcc2bb818228745ff301682fdc422f04dbd6ccc2d110a8832a572bb1482510a4233c68b7cd022984822afc4120fc418ac29921686822b008277082217c428d704225300201fa411c34c4c30a4221f84d258c640a54c003984008140c105801c0e5c003fc0e0aa04008e4403f21801160c113bc4115c1e10778c013a4c11a9cc0d32140146d80091081d12ec114600111900f034cc10f789a04dc040270809f74000870800f24860b604112f4c12418c214948003780a11e80009800011fef8c1214cc10560810e884a4b61004e3400047cc0334e876524c77a845eca648baea2800a2c910dbd9d038080133441123cdd0900c11a20810640c11b24c10fe4c00e2c810ea8c00e6c000908421d50c61b4881050445afde555c01ee05055100200760d5aaa70d6bcafc6aed2267ca1827ca14a7955ae9b022a72dda6ee995510b24580bcc001394400279c0091c411a0802b96142f6615ff61103378e1f269d4826f882314c9f30d4e76a01036f8d0224d423269482af79082a8c4274e15b217002298c4d2790026f8102d99c9222c052279842231c6cbc7d52ae9d48be95c2fe69ec295102261017269c1220acc111e880bc70a01ffcc147da01c4929bfe1dbc0134f1482134821f380114ac41023b44e894c11a9280668a00101401f04861c1c5c11c9441492e441954c146020100108009ac591f4c81d762011648c1121c82065047ca20c7a86d004d9510056cc0599480f8e48a0a5c07e89e001214c27530d49bd4a603f46a7b3c40e8319a572686a86d110758c01291d9016c001688c1076c800688401524410efc854d0181139800240c4221f8c14ffa701f18820a880012400104c0410e60461b34c10a308157b5cc30cac05d1d167a0423e0b60702e4a22d7a312e66d12dfed5aee22e7be86ae8e16af678da537480a65dc005ccce132c8420e08107ae411d90c11348c11ac0811c6809fa4a08302044f495feabf51a8330a08222a0e731782389f05128644229cc0280ae96bcce41459eefd2a42bb4890dc3aa8228401b81768272d5c117b0417509a4d9dc0109408129f0c2407e8296f8cdbb3d2c23e4af021a9c81fc811f54179530022468e83cb2d21db001bccc000d60c1680c821c1c010900411430c117bc011ad0c013ccc003ac70111074f5ecc1138855046c405e28004a2840cbf56a03bc4e057c5327c084147ce27e8900050c1d052400fcb469072c0126c081ed140152ae011444c74695800e94c011f40121bc81127840538a40f9f0044b6dcb2b32c0117000121780f2f8895a01670150c00a3c400b41001360090e448005ec0016c0d91da041125c2812fee8401d2cc1078c8004a8000704c003a0c013d8810a3040009cd49cdc555bfd661175d1ca2011e9016372e6a6ae0216a70d36b26e91112986eb2d874a54800674c0587440313e400784000954f6a6d45c1344c1730d0220f4df23384228f4dff641f38172082974b328e482d3b4d62cec023014c3be9e96309cd688f40230d8022558c29328c2221c2c26a082c6f21f2eeddf79560226ccafd1e891d6fc118c34828a56511a50f344288223404295384225a0811444c11a480edf986721f433bc459312f0412054093031c9293d02952c09282c7020ec4174950241422423d8414aed811b30010d34011a18811470a9443bc11044400018400424a3284e81fe0f9f801158800f60421f40800934411160c114308005684013301464e04e05989aaf98847c9c00142862b618011bd0c01288151338055024800ec4f1a9594009b44c7bfc9003b0875fa1cc1c1c020724c006104012b8810f21c1013480031801145800b3a800c79d8018a0c00cec81194200723480123c81b7e8c611d0406527eb2f1ac0627c51ea49589187b28405efaf0e23602576e9119a12e99ea6a51a2b4385071881b97ce0d639c1e670a74739f00db88007dc40104849bbc94120a80223ec729134426de31621edebb99e6b2f688d29d02b2ff4c2a8f382beeea76f4f487f8e4869598dd6d08229c4ba25dc811bdcc11a64811228417b09c24342fe1b1f65f38bb87690d84d27f8df28a4f60152b02388422704c279bd8118ec81200c5f8e56c9bbd1f72288c223ec88782b810b808005a8a90e4441261a810c68e6610e01083058d189c006f80120a0010514a513d40eeac8c01aac49112880a148b90a544115f4d3544210ad78c00630070188c0149c5a6510c00aa000192fc013f8c00920290ad0c01400810a30d14c2c00f3eeace9aac113d013a82006654075d52a06ea1100ff740003f0ed0fc469a85476693c8007e893959b8003e34011e04014f081141c0a7240c01a2c4194d77806b8074da80c50ac8c2e16800090d9c90ce75ff9eaed128095b22eeb3611249abc9496000818810e2041893d0221fe088229b0c220984e12ac411b8c000680c00d80140decc01060130da8419a50c2285dac2870528418cdd2e0d6d4945631aca3d5f4c22ffc42699d2b7bb616db90c28864d2a89bd62cdc1634830dac7fdf2724c21d104e792a77e7ff011b2cc41a2cc29db9db228c82298882b64742bed5232778d223e45b3f7f822a3c82c3e2122010e07648341c48c1142c81cd3c811bd4c11bfc4121c84112a0131bcc011fec411c54010d98d4e1fcc1439b01131094095006a99080511441155841105c00c7f58ecae8050a44805388355368c1148ca9025d0007644102400005a4f862d262a25900014807402c700001c102830c2078f010a2c5091358042940c08122fe0a061c1e34b090818185060c0e14e0e02081050a0810d06053a4400113090a12d8a083410b14223a1972734281030d0e0e30605000c10107140258e000c44180061b0810281080c08190559116a8d03240cbaa538b12258aa025039408403a60b0e082870e235c68a08043878b165214991a2468949d50945251ea2ba78e9f44533cb470c1c4c588194794f06812a58aa246a21e317ac4499429529d51ede2b5cb572f5ec580f1e2557a352fd3b668ed329d6b16ecd0bb76a13a658b952246a406b549836551a8508f44fdfa65abf62e5ba866b16245ca932955a45079aa34e84e1a3977fe0462f4e74e1b3672200d0af467d0a044901c190f143f94a950fe9c283102143e919b36720429a4114706b1438d28d4d8a310f11cf923bc420411641139dc4823091450586183074c88028a278e086105872cd8000820ac50230e392280802a024cd84004084828c210418060e3908d0e20a1800368d86001020220a104a016b080062328386081023c72202cb2baaa8006295658608f4eaa186283043a782210424ea000038e38486285001ec8c187063c9821050b20b0c00110b22c08250716a860a0161c18c28f1bdb70a081a90230e8c7a01e986a03085a4260ab1fc93a80c8ae30c060c8a82e0dc0d30084b21401079064a0820e2e7840830e1e28410737661841030eb018a48422d6b08393bf3aa144bc547c31c596fe530651049040ec90228a1aa4e881861b7888c28d3908f1e30f471e798412c150f10c155a66099797e67801a617d27649c5164a1e31259773cf3d8594536629c5945466892d975bf0adcd165b724165de4a1a018410f440f984144b2821a51246ec10249041e4688311469c30638f4f4a112515cf76ad441142b4d0828f400471038f081561c30f37d0b8230aef1291783d3be490638e3dfe10e40f3fecb0e30e35c488e2092cb040038d39d810c3092c9af8828f4266b0b2104a1661648d1a88c801080f5450c208249620e2070500102000abaa88e5902d0e40a18a2a7c58c2820b5e040205021cd84182210f58fba9051ad080048362220001083240b5fe820d2870e08105ac6a80540a3850420e233620b501123a685c2d1388b0e0010e36e8680410265fa1848e1aaa620514d4126106259c701229a9102000244b0b70202a4b89b4f4d3e33da52003013af5942b022e58e0810b527d60840e40a0e088349450088d3604318486149020428e28887062104a3e31651746fc606457dc500945944a1ef9649035c458230a1e72800425b0c10e6fb0832228d18846fc2111a190d72c7e819b72a9c617c028c6058561ae7ff5c25cb9108d6b76012e4a84a27de122052884450b7a99825eb3f8962946480a17ee6616a140c52828d10946888214a600052844018a1176627d3daccf2720b1ab42f4e1107d20842220c1fe0839bc0140d9a298c536730739f8c1118dc8d6231c51893bb8210a4948c31392c004221cc1094f438313c4a0b428a0c17f5f5001086450041d90a0055050031bf6e004127820094538c1920090364f55a0010b0002263a71882900c10724a8c21256c080126ca02b04800005a40701b34cc52b0c48c1a10e30aa05a044714241c0460a40800ae4807b17a8800634403a0a9c846f402948477490840388c0094358830e348080d96da555192804149cc0a42248e000d9eb5d573ec53c525e2a965789ca8b38753c447d0a2d569948073cd0180e64400323a08005a220883a9460044970831dfcb00625b8610a69800316cec38850fcc1149f1004231a118afed5cc4214c6f9842278e68842e0b30d6b1044222a510a946906148f80c42866b18b5390e65cab1186304ae30b95561018be08612a1461b1eb90227fa7a85f4d43d1884480113fa3981024b0630a5358e213c78204284e488935bcc138a3000524bcd85048fc670f8f70a0754af1896c3142137ce8031ff840888b316210f26b84220a713141e033106d95c31ae6f0b39eed416765284315caa08639a4b5107f60030d4e80a232f06cac37aa031ad81885230c21033470821ada10050d844005091000000ce029016c000e7d300226a4408422c001054cf8c10ab05082048c050253a8835504d2120d1004714ebaa60222e024a92c602d2689c014dc40883afe70e09310680008ce4681b55cc0082880800666c001109c400527484216ba52820864c10f3880c3142800841f98a0092468c035a942a7aeac3696dd9c0ae5187029a9c4f29b5659dbf140629007dce00675690c0846b0031c94e006502084126e200527f8e10e6840821b04f10434a881108068182554f10b52300214a1f845317ad18b8ecab0179568432538a1409d0a3414a068047e3abcab53d8475da209e94a53038c96ae8616f30a172d7c78c247fca113c3aadf277ee14254349433f302c5c3ee19083770021452488284fe400a9a26e213a710852804a6654aa050cba27084b12446898815420b86e04420b4f5094be08f116d6544221c4109481cfe87135ac58cb1e4b087440482af7b58c41edab0041300c1098630841d8e693a5371c8073ec80087486081d2a6410522d034a351e0034d6c21b3119041230fa98327a820021ca88008aa8005c80525030b08004a14c5a60c58c0530630420478db3b0234a001546140083660df0da480013468020d28a08183a00402206040027660010664e00895aac010746004227040056dc8420380600402c8400332d8c00632408413542551087851001290d9f97e9348100809298f77292781d3950fa8001a68509711dcc0053a68010d9230041a9c310947a802ee949004369c510ec92245ba00910854d8a257948060057df1085088f40e7e68c42738a18841ccc1fe0e021d85b6f2d761e87c8b5eb2194d695aead210ab745ca8d00d2928610a5e30e716a6988529a003f5599ccb392c04576d66910aad6bd986f6b9a1d149d1ab518ca213e1b3431ddc20062398e0044e3034b642e10846406211f089e2232636d63863a2118cf04d23ca8af38b6dab8b80b8431d822688bd1cac0e5320c213f630084724b1118a77332720018986c23c105af003264a510a3ff8c8b82240c10138a083de39e00d5a40c1104ec08121282000107892a8acc215fa7aaa2899cd37042075bc0aac322406e1c30a7e548004c8c8094b901c05ce9b803a1120f6b1dc40280c61045a41780a1a10c1090ed0aa27a1c52c078800185070cd54ae456df1c753db37bd1270e751a5fd4422520128f01606a0e10933d881128800076ee0e194400972e069940009d2a00edac00db2c00dfa207c1c211016811520c6147a4ce528013a6c81174e8184564888fc2e7e1461a75241375c485df625a476215f3ad039569016540a375a70176e615caece16a8ee5cc2e505696114a023a44e4185fee5146c6a08676cc946618178063d1a0a14b08562de80110a6a841ca8132ac10e5c2f07a00012f263ee0644e6d2aaef1ae10be54e1102610f106ad0fea00dda000dd200902e6611b22510e6800900cb04d82e078aa008a6e0078e645428e04850000b8ce00138e4043a80721600de0202003b');
+
+drop table lvc;
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,410 @@
+--
+-- subquery tests
+--
+autocommit off;
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+autocommit off;
+
+-- create the all type tables
+create table s (i int, s smallint, c char(30), vc char(30), b bigint);
+create table t (i int, s smallint, c char(30), vc char(30), b bigint);
+create table tt (ii int, ss smallint, cc char(30), vcvc char(30), b bigint);
+create table ttt (iii int, sss smallint, ccc char(30), vcvcvc char(30));
+
+-- populate the tables
+insert into s values (null, null, null, null, null);
+insert into s values (0, 0, '0', '0', 0);
+insert into s values (1, 1, '1', '1', 1);
+
+insert into t values (null, null, null, null, null);
+insert into t values (0, 0, '0', '0', 0);
+insert into t values (1, 1, '1', '1', 1);
+insert into t values (1, 1, '1', '1', 1);
+insert into t values (2, 2, '2', '2', 1);
+
+insert into tt values (null, null, null, null, null);
+insert into tt values (0, 0, '0', '0', 0);
+insert into tt values (1, 1, '1', '1', 1);
+insert into tt values (1, 1, '1', '1', 1);
+insert into tt values (2, 2, '2', '2', 1);
+
+insert into ttt values (null, null, null, null);
+insert into ttt values (11, 11, '11', '11');
+insert into ttt values (11, 11, '11', '11');
+insert into ttt values (22, 22, '22', '22');
+
+commit;
+
+-- exists 
+-- non-correlated
+
+-- negative tests
+-- "mis"qualified all
+select * from s where exists (select tt.* from t);
+select * from s where exists (select t.* from t tt);
+-- too many columns in select list
+select * from s where exists (select i, s from t);
+-- invalid column reference in select list
+select * from s where exists (select nosuchcolumn from t);
+-- multiple matches at subquery level
+select * from s where exists (select i from s, t);
+-- ? parameter in select list of exists subquery
+select * from s where exists (select ? from s);
+
+-- positive tests
+
+-- qualified *
+select * from s where exists (select s.* from t);
+select * from s t where exists (select t.* from t);
+select * from s u where exists (select u.* from t);
+
+-- column reference in select list
+select * from s where exists (select i from t);
+select * from s where exists (select t.i from t);
+
+-- subquery returns empty result set
+select * from s where exists (select * from t where i = -1);
+
+-- test semantics of AnyResultSet
+select * from s where exists (select t.* from t);
+select * from s where exists (select 0 from t);
+
+-- subquery in derived table
+select * from 
+(select * from s where exists (select * from t) and i = 0) a;
+
+-- exists under an OR
+select * from s where 0=1 or exists (select * from t);
+select * from s where 1=1 or exists (select * from t where 0=1);
+select * from s where exists (select * from t where 0=1) or
+					  exists (select * from t);
+select * from s where exists 
+		(select * from t where exists (select * from t where 0=1) or
+							   exists (select * from t));
+
+-- (exists empty set) is null
+select * from s where (exists (select * from t where 0=1)) is null;
+-- not exists
+select * from s where not exists (select * from t);
+select * from s where not exists (select * from t where i = -1);
+
+-- expression subqueries
+-- non-correlated
+
+-- negative tests
+-- all node
+select * from s where i = (select * from t);
+-- too many columns in select list
+select * from s where i = (select i, s from t);
+-- no conversions
+select * from s where i = (select 1 from t);
+select * from s where i = (select b from t);
+-- ? parameter in select list of expression subquery
+select * from s where i = (select ? from t);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+-- cardinality violation
+select * from s where i = (select i from t);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+select * from s where s = (select s from t where s = 1);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+update s set b = (select max(b) from t)
+where vc <> (select vc from t where vc = '1');
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+delete from s where c = (select c from t where c = '1');
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+
+-- positive tests
+select * from s;
+select * from t;
+
+-- simple subquery for each data type
+select * from s where i = (select i from t where i = 0);
+select * from s where s = (select s from t where s = 0);
+select * from s where c = (select c from t where c = '0');
+select * from s where vc = (select vc from t where vc = '0');
+select * from s where b = (select max(b) from t where b = 0);
+select * from s where b = (select max(b) from t where i = 2);
+
+-- ? parameter on left hand side of expression subquery
+prepare subq1 as 'select * from s where ? = (select i from t where i = 0)';
+execute subq1 using 'values (0)';
+remove subq1;
+
+-- conversions
+select * from s where i = (select s from t where s = 0);
+select * from s where s = (select i from t where i = 0);
+select * from s where c = (select vc from t where vc = '0');
+select * from s where vc = (select c from t where c = '0');
+
+-- (select nullable_column ...) is null
+-- On of each data type to test clone()
+select * from s where (select s from s where i is null) is null;
+select * from s where (select i from s where i is null) is null;
+select * from s where (select c from s where i is null) is null;
+select * from s where (select vc from s where i is null) is null;
+select * from s where (select b from s where i is null) is null;
+select * from s where
+	(select 1 from t where exists (select * from t where 1 = 0) and s = -1) is null;
+
+-- subquery = subquery
+select * from s where
+(select i from t where i = 0) = (select s from t where s = 0);
+
+-- multiple subqueries at the same level
+select * from s
+where i = (select s from t where s = 0) and
+	  s = (select i from t where i = 2);
+select * from s
+where i = (select s from t where s = 0) and
+	  s = (select i from t where i = 0);
+
+-- nested subqueries
+select * from s
+where i = (select i from t where s = (select i from t where s = 2));
+select * from s
+where i = (select i - 1 from t where s = (select i from t where s = 2));
+
+-- expression subqueries in select list
+select (select i from t where 0=1) from s;
+select (select i from t where i = 2) * (select s from t where i = 2) from s
+where i > (select i from t where i = 0) - (select i from t where i = 0);
+
+-- in subqueries
+
+-- negative tests
+-- select * subquery
+select * from s where s in (select * from s);
+-- incompatable types
+select * from s where s in (select b from t);
+
+-- positive tests
+
+-- constants on left side of subquery
+select * from s where 1 in (select s from t);
+select * from s where -1 in (select i from t);
+select * from s where '1' in (select vc from t);
+select * from s where 0 in (select b from t);
+
+-- constants in subquery select list
+select * from s where i in (select 1 from t);
+select * from s where i in (select -1 from t);
+select * from s where c in (select '1' from t);
+select * from s where b in (select 0 from t);
+
+-- constants on both sides
+select * from s where 1=1 in (select 0 from t);
+select * from s where 0 in (select 0 from t);
+
+-- compatable types
+select * from s where c in (select vc from t);
+select * from s where vc in (select c from t);
+select * from s where i in (select s from t);
+select * from s where s in (select i from t);
+
+-- empty subquery result set
+select * from s where i in (select i from t where 1 = 0);
+select * from s where (i in (select i from t where i = 0)) is null;
+
+-- select list
+select i in (select i from t) from s;
+select i in (select i from t where 1 = 0) from s;
+select (i in (select i from t where 1 = 0)) is null from s;
+
+-- subquery under an or
+select i from s where i = -1 or i in (select i from t);
+select i from s where i = 0 or i in (select i from t where i = -1);
+select i from s where i = -1 or i in (select i from t where i = -1 or i = 1);
+
+-- distinct elimination
+select i from s where i in (select i from s);
+select i from s where i in (select distinct i from s);
+select i from s ss where i in (select i from s where s.i = ss.i);
+select i from s ss where i in (select distinct i from s where s.i = ss.i);
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+
+-- correlated subqueries
+
+-- negative tests
+
+-- multiple matches at parent level
+select * from s, t where exists (select i from tt);
+-- match is against base table, but not derived column list
+select * from s ss (c1, c2, c3, c4, c5) where exists (select i from tt);
+select * from s ss (c1, c2, c3, c4, c5) where exists (select ss.i from tt);
+-- correlation name exists at both levels, but only column match is at
+-- parent level
+select * from s where exists (select s.i from tt s);
+-- only match is at peer level
+select * from s where exists (select * from tt) and exists (select ii from t);
+select * from s where exists (select * from tt) and exists (select tt.ii from t);
+-- correlated column in a derived table
+select * from s, (select * from tt where i = ii) a;
+select * from s, (select * from tt where s.i = ii) a;
+
+-- positive tests
+
+-- simple correlated subqueries
+select (select i from tt where ii = i and ii <> 1) from s;
+select (select s.i from tt where ii = s.i and ii <> 1) from s;
+select (select s.i from ttt where iii = i) from s;
+select * from s where exists (select * from tt where i = ii and ii <> 1);
+select * from s where exists (select * from tt where s.i = ii and ii <> 1);
+select * from s where exists (select * from ttt where i = iii);
+
+-- 1 case where we get a cardinality violation after a few rows
+select (select i from tt where ii = i) from s;
+
+-- skip levels to find match
+select * from s where exists (select * from ttt where iii = 
+								(select 11 from tt where ii = i and ii <> 1)); 
+
+-- join in subquery
+select * from s where i in (select i from t, tt where s.i <> i and i = ii);
+select * from s where i in (select i from t, ttt where s.i < iii and s.i = t.i);
+-- join in outer query block
+select s.i, t.i from s, t where exists (select * from ttt where iii = 1);
+select s.i, t.i from s, t where exists (select * from ttt where iii = 11);
+-- joins in both query blocks
+select s.i, t.i from s, t where t.i = (select iii from ttt, tt where iii = t.i);
+select s.i, t.i from s, t 
+where t.i = (select ii from ttt, tt where s.i = t.i and t.i = tt.ii and iii = 22 and ii <> 1);
+
+-- Beetle 5382 proper caching of subqueries in prepared statements
+prepare pstmt as 'select s.i from s where s.i in (select s.i from s, t where s.i = t.i and t.s = ?)';
+execute pstmt using 'values(0)';
+execute pstmt using 'values(1)';
+remove pstmt;
+commit;
+prepare pstmt2 as 'select s.i from s where s.i in (select s.i from s, t where s.i = t.i and t.s = 3)';
+execute pstmt2;
+insert into t(i,s) values(1,3);
+execute pstmt2;
+remove pstmt2;
+rollback;
+
+-- correlated subquery in select list of a derived table
+select * from 
+(select (select iii from ttt where sss > i and sss = iii and iii <> 11) from s) a;
+
+-- bigint and subqueries
+create table li(i int, s smallint, l bigint);
+insert into li values (null, null, null);
+insert into li values (1, 1, 1);
+insert into li values (2, 2, 2);
+
+select l from li o where l = (select i from li i where o.l = i.i);
+select l from li o where l = (select s from li i where o.l = i.s);
+select l from li o where l = (select l from li i where o.l = i.l);
+select l from li where l in (select i from li);
+select l from li where l in (select s from li);
+select l from li where l in (select l from li);
+
+----------------------------------
+-- Some extra tests for subquery flattening
+-- on table expressions (remapColumnReferencesToExpressions()
+
+-- binary list node
+select i in (1,2) from (select i from s) as tmp(i);
+
+-- conditional expression
+select i = 1 ? 1 : i from (select i from s) as tmp(i);
+
+-- more tests for correlated column resolution
+select * from s where i = (values i);
+select t.* from s, t where t.i = (values s.i);
+select * from s where i in (values i);
+select t.* from s, t where t.i in (values s.i);
+
+-- tests for not needing to do cardinality check
+select * from s where i = (select min(i) from s where i is not null);
+select * from s where i = (select min(i) from s group by i);
+
+-- tests for distinct expression subquery
+create table dist1 (c1 int);
+create table dist2 (c1 int);
+insert into dist1 values null, 1, 2;
+insert into dist2 values null, null;
+-- no match, no violation
+select * from dist1 where c1 = (select distinct c1 from dist2);
+-- violation
+insert into dist2 values 1;
+select * from dist1 where c1 = (select distinct c1 from dist2);
+-- match, no violation
+update dist2 set c1 = 2;
+select * from dist1 where c1 = (select distinct c1 from dist2);
+drop table dist1;
+drop table dist2;
+
+
+----------------------------------
+-- update
+create table u (i int, s smallint, c char(30), vc char(30), b bigint);
+insert into u select * from s;
+select * from u;
+
+update u set b = exists (select b from t)
+where vc <> (select vc from s where vc = '1');
+select * from u;
+
+delete from u;
+insert into u select * from s;
+
+-- delete
+delete from u where c < (select c from t where c = '2');
+select * from u;
+
+-- restore u
+delete from u;
+insert into u select * from s;
+
+-- check clean up when errors occur in subqueries
+
+-- insert
+insert into u select * from s s_outer
+where i = (select s_inner.i/(s_inner.i-1) from s s_inner where s_outer.i = s_inner.i);
+select * from u;
+
+-- delete
+delete from u 
+where i = (select i/(i-1) from s where u.i = s.i);
+select * from u;
+
+-- update
+update u  set i = (select i from s where u.i = s.i)
+where i = (select i/(i-1) from s where u.i = s.i);
+update u  set i = (select i/i-1 from s where u.i = s.i)
+where i = (select i from s where u.i = s.i);
+select * from u;
+
+-- error in nested subquery
+select (select (select (select i from s) from s) from s) from s;
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+
+
+-- reset autocommit
+autocommit on;
+
+-- drop the tables
+drop table li;
+drop table s;
+drop table t;
+drop table tt;
+drop table ttt;
+drop table u;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,339 @@
+--
+-- subquery tests (ANY and ALL subqueries)
+--
+CREATE FUNCTION ConsistencyChecker() RETURNS VARCHAR(128)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ConsistencyChecker.runConsistencyChecker'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+autocommit off;
+
+autocommit off;
+
+-- create the all type tables
+create table s (i int, s smallint, c char(30), vc char(30), b bigint);
+create table t (i int, s smallint, c char(30), vc char(30), b bigint);
+create table tt (ii int, ss smallint, cc char(30), vcvc char(30), b bigint);
+create table ttt (iii int, sss smallint, ccc char(30), vcvcvc char(30));
+
+-- populate the tables
+insert into s values (null, null, null, null, null);
+insert into s values (0, 0, '0', '0', 0);
+insert into s values (1, 1, '1', '1', 1);
+
+insert into t values (null, null, null, null, null);
+insert into t values (0, 0, '0', '0', 0);
+insert into t values (1, 1, '1', '1', 1);
+insert into t values (1, 1, '1', '1', 1);
+insert into t values (2, 2, '2', '2', 1);
+
+insert into tt values (null, null, null, null, null);
+insert into tt values (0, 0, '0', '0', 0);
+insert into tt values (1, 1, '1', '1', 1);
+insert into tt values (1, 1, '1', '1', 1);
+insert into tt values (2, 2, '2', '2', 1);
+
+insert into ttt values (null, null, null, null);
+insert into ttt values (11, 11, '11', '11');
+insert into ttt values (11, 11, '11', '11');
+insert into ttt values (22, 22, '22', '22');
+
+-- ANY subqueries
+
+-- negative tests
+-- select * subquery
+select * from s where s = ANY (select * from s);
+-- incompatable types
+select * from s where s >= ANY (select b from t);
+-- invalid operator
+select * from s where s * ANY (select c from t);
+-- ? in select list of subquery
+select * from s where s = ANY (select ? from s);
+
+-- positive tests
+
+-- constants on left side of subquery
+select * from s where 1 = ANY (select s from t);
+select * from s where -1 = ANY (select i from t);
+select * from s where '1' = ANY (select vc from t);
+select * from s where 0 = ANY (select b from t);
+select * from s where 1 <> ANY (select s from t);
+select * from s where -1 <> ANY (select i from t);
+select * from s where '1' <> ANY (select vc from t);
+select * from s where 0 <> ANY (select b from t);
+select * from s where 1 >= ANY (select s from t);
+select * from s where -1 >= ANY (select i from t);
+select * from s where '1' >= ANY (select vc from t);
+select * from s where 0 >= ANY (select b from t);
+select * from s where 1 > ANY (select s from t);
+select * from s where -1 > ANY (select i from t);
+select * from s where '1' > ANY (select vc from t);
+select * from s where 0 > ANY (select b from t);
+select * from s where 1 <= ANY (select s from t);
+select * from s where -1 <= ANY (select i from t);
+select * from s where '1' <= ANY (select vc from t);
+select * from s where 0 <= ANY (select b from t);
+select * from s where 1 < ANY (select s from t);
+select * from s where -1 < ANY (select i from t);
+select * from s where '1' < ANY (select vc from t);
+select * from s where 0 < ANY (select b from t);
+
+-- Try a ? parameter on the LHS of a subquery.
+prepare subq1 as 'select * from s where ? = ANY (select s from t)';
+execute subq1 using 'values (1)';
+remove subq1;
+
+-- constants in subquery select list
+select * from s where i = ANY (select 1 from t);
+select * from s where i = ANY (select -1 from t);
+select * from s where c = ANY (select '1' from t);
+select * from s where b = ANY (select 1 from t);
+select * from s where i <> ANY (select 1 from t);
+select * from s where i <> ANY (select -1 from t);
+select * from s where c <> ANY (select '1' from t);
+select * from s where b <> ANY (select 1 from t);
+select * from s where i >= ANY (select 1 from t);
+select * from s where i >= ANY (select -1 from t);
+select * from s where c >= ANY (select '1' from t);
+select * from s where b >= ANY (select 1 from t);
+select * from s where i > ANY (select 1 from t);
+select * from s where i > ANY (select -1 from t);
+select * from s where c > ANY (select '1' from t);
+select * from s where b > ANY (select 1 from t);
+select * from s where i <= ANY (select 1 from t);
+select * from s where i <= ANY (select -1 from t);
+select * from s where c <= ANY (select '1' from t);
+select * from s where b <= ANY (select 1 from t);
+select * from s where i < ANY (select 1 from t);
+select * from s where i < ANY (select -1 from t);
+select * from s where c < ANY (select '1' from t);
+select * from s where b < ANY (select 1 from t);
+
+-- constants on both sides
+select * from s where 1 = ANY (select 0 from t);
+select * from s where 0 = ANY (select 0 from t);
+select * from s where 1 <> ANY (select 0 from t);
+select * from s where 0 <> ANY (select 0 from t);
+select * from s where 1 >= ANY (select 0 from t);
+select * from s where 0 >= ANY (select 0 from t);
+select * from s where 1 > ANY (select 0 from t);
+select * from s where 0 > ANY (select 0 from t);
+select * from s where 1 <= ANY (select 0 from t);
+select * from s where 0 <= ANY (select 0 from t);
+select * from s where 1 < ANY (select 0 from t);
+select * from s where 0 < ANY (select 0 from t);
+
+-- compatable types
+select * from s where c = ANY (select vc from t);
+select * from s where vc = ANY (select c from t);
+select * from s where i = ANY (select s from t);
+select * from s where s = ANY (select i from t);
+select * from s where c <> ANY (select vc from t);
+select * from s where vc <> ANY (select c from t);
+select * from s where i <> ANY (select s from t);
+select * from s where s <> ANY (select i from t);
+select * from s where c >= ANY (select vc from t);
+select * from s where vc >= ANY (select c from t);
+select * from s where i >= ANY (select s from t);
+select * from s where s >= ANY (select i from t);
+select * from s where c > ANY (select vc from t);
+select * from s where vc > ANY (select c from t);
+select * from s where i > ANY (select s from t);
+select * from s where s > ANY (select i from t);
+select * from s where c <= ANY (select vc from t);
+select * from s where vc <= ANY (select c from t);
+select * from s where i <= ANY (select s from t);
+select * from s where s <= ANY (select i from t);
+select * from s where c < ANY (select vc from t);
+select * from s where vc < ANY (select c from t);
+select * from s where i < ANY (select s from t);
+select * from s where s < ANY (select i from t);
+
+-- empty subquery result set
+select * from s where i = ANY (select i from t where 1 = 0);
+select * from s where i <> ANY (select i from t where 1 = 0);
+select * from s where i >= ANY (select i from t where 1 = 0);
+select * from s where i > ANY (select i from t where 1 = 0);
+select * from s where i <= ANY (select i from t where 1 = 0);
+select * from s where i < ANY (select i from t where 1 = 0);
+
+-- subquery under an or
+select i from s where i = -1 or i = ANY (select i from t);
+select i from s where i = 0 or i = ANY (select i from t where i = -1);
+select i from s where i = -1 or i = ANY (select i from t where i = -1 or i = 1);
+select i from s where i = -1 or i <> ANY (select i from t);
+select i from s where i = 0 or i >= ANY (select i from t where i = -1);
+select i from s where i = -1 or i < ANY (select i from t where i = -1 or i = 1);
+select i from s where i = -1 or i >= ANY (select i from t);
+select i from s where i = 0 or i > ANY (select i from t where i = -1);
+select i from s where i = -1 or i <> ANY (select i from t where i = -1 or i = 1);
+
+-- correlated subqueries
+select * from s where i > ANY (select i from t where s.s > t.s);
+select * from s where i >= ANY (select i from t where s.s >= t.s);
+select * from s where i < ANY (select i from t where s.s < t.s);
+select * from s where i <= ANY (select i from t where s.s <= t.s);
+select * from s where i = ANY (select i from t where s.s = t.s);
+select * from s where i <> ANY (select i from t where s.s <> t.s);
+
+
+-- ALL/NOT IN and NOTs
+-- create tables
+create table s_3rows (i int);
+create table t_1 (i int);
+create table u_null (i int);
+create table v_empty (i int);
+create table w_2 (i int);
+
+-- populate tables
+insert into s_3rows values(NULL);
+insert into s_3rows values(1);
+insert into s_3rows values(2);
+
+insert into u_null values(NULL);
+
+insert into t_1 values(1);
+
+insert into w_2 values(2);
+
+-- test ALLs
+select * from s_3rows where s_3rows.i not in (select i from t_1);
+select * from s_3rows where s_3rows.i <> ALL (select i from t_1);
+select * from s_3rows where s_3rows.i >= ALL (select i from t_1);
+select * from s_3rows where s_3rows.i > ALL (select i from t_1);
+select * from s_3rows where s_3rows.i <= ALL (select i from t_1);
+select * from s_3rows where s_3rows.i < ALL (select i from t_1);
+select * from s_3rows where s_3rows.i = ALL (select i from t_1);
+
+select * from s_3rows where s_3rows.i not in (select i from u_null);
+select * from s_3rows where s_3rows.i <> ALL (select i from u_null);
+select * from s_3rows where s_3rows.i >= ALL (select i from u_null);
+select * from s_3rows where s_3rows.i > ALL (select i from u_null);
+select * from s_3rows where s_3rows.i <= ALL (select i from u_null);
+select * from s_3rows where s_3rows.i < ALL (select i from u_null);
+select * from s_3rows where s_3rows.i = ALL (select i from u_null);
+
+select * from s_3rows where s_3rows.i not in (select i from v_empty);
+select * from s_3rows where s_3rows.i <> ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i >= ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i > ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i <= ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i < ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i = ALL (select i from v_empty);
+
+select * from s_3rows where s_3rows.i not in (select i from w_2);
+select * from s_3rows where s_3rows.i <> ALL (select i from w_2);
+select * from s_3rows where s_3rows.i >= ALL (select i from w_2);
+select * from s_3rows where s_3rows.i > ALL (select i from w_2);
+select * from s_3rows where s_3rows.i <= ALL (select i from w_2);
+select * from s_3rows where s_3rows.i < ALL (select i from w_2);
+select * from s_3rows where s_3rows.i = ALL (select i from w_2);
+
+select * from w_2 where w_2.i = ALL (select i from w_2);
+
+-- NOT = ANY <=> <> ALL
+select * from s_3rows where NOT s_3rows.i = ANY (select i from w_2);
+select * from s_3rows where s_3rows.i <> ALL (select i from w_2);
+select * from s_3rows where NOT s_3rows.i = ANY (select i from v_empty);
+select * from s_3rows where s_3rows.i <> ALL (select i from v_empty);
+-- NOT <> ANY <=> = ALL
+select * from s_3rows where NOT s_3rows.i <> ANY (select i from w_2);
+select * from s_3rows where s_3rows.i = ALL (select i from w_2);
+select * from s_3rows where NOT s_3rows.i <> ANY (select i from v_empty);
+select * from s_3rows where s_3rows.i = ALL (select i from v_empty);
+-- NOT >= ANY <=> < ALL
+select * from s_3rows where NOT s_3rows.i >= ANY (select i from w_2);
+select * from s_3rows where s_3rows.i < ALL (select i from w_2);
+select * from s_3rows where NOT s_3rows.i >= ANY (select i from v_empty);
+select * from s_3rows where s_3rows.i < ALL (select i from v_empty);
+-- NOT > ANY <=> <= ALL
+select * from s_3rows where NOT s_3rows.i > ANY (select i from w_2);
+select * from s_3rows where s_3rows.i <= ALL (select i from w_2);
+select * from s_3rows where NOT s_3rows.i > ANY (select i from v_empty);
+select * from s_3rows where s_3rows.i <= ALL (select i from v_empty);
+-- NOT <= ANY <=> > ALL
+select * from s_3rows where NOT s_3rows.i <= ANY (select i from w_2);
+select * from s_3rows where s_3rows.i > ALL (select i from w_2);
+select * from s_3rows where NOT s_3rows.i <= ANY (select i from v_empty);
+select * from s_3rows where s_3rows.i > ALL (select i from v_empty);
+-- NOT < ANY <=> >= ALL
+select * from s_3rows where NOT s_3rows.i < ANY (select i from w_2);
+select * from s_3rows where s_3rows.i >= ALL (select i from w_2);
+select * from s_3rows where NOT s_3rows.i < ANY (select i from v_empty);
+select * from s_3rows where s_3rows.i >= ALL (select i from v_empty);
+
+-- NOT = ALL <=> <> ANY
+select * from s_3rows where NOT s_3rows.i = ALL (select i from w_2);
+select * from s_3rows where s_3rows.i <> ANY (select i from w_2);
+select * from s_3rows where NOT s_3rows.i = ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i <> ANY (select i from v_empty);
+-- NOT <> ALL <=> = ANY
+select * from s_3rows where NOT s_3rows.i <> ALL (select i from w_2);
+select * from s_3rows where s_3rows.i = ANY (select i from w_2);
+select * from s_3rows where NOT s_3rows.i <> ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i = ANY (select i from v_empty);
+-- NOT >= ALL <=> < ANY
+select * from s_3rows where NOT s_3rows.i >= ALL (select i from w_2);
+select * from s_3rows where s_3rows.i < ANY (select i from w_2);
+select * from s_3rows where NOT s_3rows.i >= ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i < ANY (select i from v_empty);
+-- NOT > ALL <=> <= ANY
+select * from s_3rows where NOT s_3rows.i > ALL (select i from w_2);
+select * from s_3rows where s_3rows.i <= ANY (select i from w_2);
+select * from s_3rows where NOT s_3rows.i > ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i <= ANY (select i from v_empty);
+-- NOT <= ALL <=> > ANY
+select * from s_3rows where NOT s_3rows.i <= ALL (select i from w_2);
+select * from s_3rows where s_3rows.i > ANY (select i from w_2);
+select * from s_3rows where NOT s_3rows.i <= ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i > ANY (select i from v_empty);
+-- NOT < ALL <=> >= ANY
+select * from s_3rows where NOT s_3rows.i < ALL (select i from w_2);
+select * from s_3rows where s_3rows.i >= ANY (select i from w_2);
+select * from s_3rows where NOT s_3rows.i < ALL (select i from v_empty);
+select * from s_3rows where s_3rows.i >= ANY (select i from v_empty);
+
+-- test skipping of generating is null predicates for non-nullable columns
+create table t1 (c1 int not null, c2 int);
+create table t2 (c1 int not null, c2 int);
+insert into t1 values(1, 2);
+insert into t2 values(0, 3);
+select * from t1 where c1 not in (select c2 from t2);
+select * from t1 where c2 not in (select c1 from t2);
+select * from t1 where c1 not in (select c1 from t2);
+drop table t1;
+drop table t2;
+
+-- update
+create table u (i int, s smallint, c char(30), vc char(30), b bigint);
+insert into u select * from s;
+select * from u;
+
+-- exists returns a boolean value and hence it can not be used to set a value. Exists can only be used in where clause
+update u set b = exists (select * from t)
+where vc < ANY (select vc from s);
+select * from u;
+
+delete from u;
+insert into u select * from s;
+
+-- delete
+delete from u where c < ANY (select c from t);
+select * from u;
+
+-- do consistency check on scans, etc.
+values ConsistencyChecker();
+
+-- reset autocommit
+autocommit on;
+
+-- drop the tables
+drop table s;
+drop table t;
+drop table tt;
+drop table ttt;
+drop table u;
+drop table s_3rows;
+drop table t_1;
+drop table u_null;
+drop table v_empty;
+drop table w_2;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery2_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+# wants to do consistency checking, so needs
+# the statement cache off to ensure no trailing dependencies exist
+derby.language.statementCacheSize=0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,381 @@
+-- test subquery flattening into outer query block
+
+set isolation to rr;
+
+-- tests for flattening a subquery based on a
+-- uniqueness condition
+
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+-- create some tables
+create table outer1 (c1 int, c2 int, c3 int);
+create table outer2 (c1 int, c2 int, c3 int);
+create table noidx (c1 int);
+create table idx1 (c1 int);
+create unique index idx1_1 on idx1(c1);
+create table idx2 (c1 int, c2 int);
+create unique index idx2_1 on idx2(c1, c2);
+create table nonunique_idx1 (c1 int);
+create index nonunique_idx1_1 on nonunique_idx1(c1);
+
+
+insert into outer1 values (1, 2, 3);
+insert into outer1 values (4, 5, 6);
+insert into outer2 values (1, 2, 3);
+insert into outer2 values (4, 5, 6);
+insert into noidx values 1, 1;
+insert into idx1 values 1, 2;
+insert into idx2 values (1, 1), (1, 2);
+insert into nonunique_idx1 values 1, 1;
+
+-- cases where subqueries don't get flattened
+-- (we would get incorrect results with 
+-- incorrect flattening)
+-- one of tables in subquery doesn't have index
+select * from outer1 where c1 in (select idx1.c1 from noidx, idx1 where idx1.c1 = noidx.c1);
+-- group by in subquery
+select * from outer1 o where c1 <= (select c1 from idx1 i group by c1);
+-- otherwise flattenable subquery under an or 
+-- subquery returns no rows
+select * from outer1 o where c1 + 0 = 1 or c1 in (select c1 from idx1 i where i.c1 = 0);
+select * from outer1 o where c1 in (select c1 from idx1 i where i.c1 = 0) or c1 + 0 = 1;
+-- empty subquery in select list which is otherwise flattenable
+select (select c1 from idx1 where c1 = 0) from outer1;
+-- multiple tables in subquery
+-- no one table's equality condition based
+-- solely on constants and correlation columns
+select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1);
+
+-- subqueries that should get flattened
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 2000;
+
+-- simple IN
+select * from outer1 o where o.c1 in (select c1 from idx1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- simple EXISTS
+select * from outer1 o where exists (select * from idx1 i where o.c1 = i.c1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- simple ANY
+select * from outer1 o where o.c1 = ANY (select c1 from idx1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- another simple ANY
+select * from outer1 o where o.c2 > ANY (select c1 from idx1 i where o.c1 = i.c1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- comparisons with parameters
+prepare p1 as 'select * from outer1 o where exists (select * from idx1 i where i.c1 = ?)';
+execute p1 using 'values 1';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+prepare p2 as 'select * from outer1 o where ? = ANY (select c1 from idx1)';
+execute p2 using 'values 1';
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- mix constants with correlation columns
+select * from outer1 o where exists (select * from idx2 i where o.c1 = i.c1 and i.c2 = 2);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- multiple tables in subquery
+select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1 and i.c2 = 1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- comparisons with non-join expressions
+select * from outer1 o where exists (select * from idx1 where idx1.c1 = 1 + 0);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from outer1 o where exists (select * from idx2 i, idx1 where o.c1 + 0 = i.c1 and i.c2 + 0 = idx1.c1 and i.c2 = 1 + 0);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- multilevel subqueries
+-- flatten all
+select * from outer1 o where exists
+    (select * from idx2 i where exists
+        (select * from idx1 ii 
+         where o.c1 = i.c1 and i.c2 = ii.c1 and i.c2 = 1));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- only flatten bottom
+select * from outer1 o where exists
+    (select * from idx2 i where exists
+        (select * from idx1 ii 
+         where o.c1 = i.c1 and i.c2 = ii.c1));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- flatten innermost into exists join, then flatten middle
+-- into outer
+select * from outer1 o where exists
+    (select * from idx2 i 
+     where  o.c1 = i.c1 and i.c2 = 1 and exists
+        (select * from idx1 ii));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- flatten a subquery that has a subquery in its select list
+-- verify that subquery gets copied up to outer block
+select * from outer1 o where c1 in
+    (select (select c1 from idx1 where c1 = i.c1)
+     from idx2 i where o.c1 = i.c1 and i.c2 = 1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- expression subqueries
+-- simple =
+select * from outer1 o where o.c1 = (select c1 from idx1 i where o.c1 = i.c1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from outer1 o where o.c1 <= (select c1 from idx1 i where o.c1 = i.c1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- multiple tables in subquery
+select * from outer1 o where c1 =  (select i.c1 from idx2 i, idx1 where o.c1 = i.c1 and i.c2 = idx1.c1 and i.c2 = 1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- flattening to an exists join
+-- no index on subquery table
+select * from outer1 where c1 in (select c1 from noidx);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- no unique index on subquery table
+select * from outer1 where c1 in (select c1 from nonunique_idx1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- columns in subquery are not superset of unique index
+select * from outer1 where c1 in (select c1 from idx2);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- single table subquery, self join on unique column
+select * from outer1 where exists (select * from idx1 where c1 = c1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- flattening values subqueries
+-- flatten unless contains a subquery
+select * from outer1 where c1 in (values 1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+select * from outer1 where c1 in (values (select max(c1) from outer1));
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- beetle 4459 - problems with flattening to exist joins and then flattening to 
+-- normal join
+-- non correlated exists subquery with conditional join
+maximumdisplaywidth 5000;
+select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) 
+where exists (select c1 from idx1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- in predicate (will be flattened to exists)
+select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) 
+where o.c1 in (select c1 from idx1);
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- flattened exists join in nested subquery
+select c1 from (select t.c1 from (select o.c1 from outer1 o join outer2 o2 on (o.c1 = o2.c1) where exists (select c1 from idx1)) t, outer2 where t.c1 = outer2.c1) t2;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- original reported bug
+create table business(businesskey int, name varchar(50), changedate int);
+create table nameelement(parentkey int, parentelt varchar(50), seqnum int);
+create table categorybag(cbparentkey int, cbparentelt varchar(50), 
+	krtModelKey varchar(50), keyvalue varchar(50));
+select businesskey, name, changedate 
+from business as biz left outer join nameelement as nameElt 
+	on (businesskey = parentkey and parentelt = 'businessEntity') 
+where (nameElt.seqnum = 1) 
+	and businesskey in 
+		 (select cbparentkey 
+			from categorybag 
+			where (cbparentelt = 'businessEntity') and 
+				(krtModelKey = 'UUID:CD153257-086A-4237-B336-6BDCBDCC6634' and keyvalue = '40.00.00.00.00'))  order by name asc , biz.changedate asc;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- clean up
+drop table outer1;
+drop table outer2;
+drop table noidx;
+drop table idx1;
+drop table idx2;
+drop table nonunique_idx1;
+drop table business;
+drop table nameelement;
+drop table categorybag;
+
+
+-- --------------------------------------------------------------------
+-- TEST CASES for different kinds of subquery flattening, Beetle 5173
+-- --------------------------------------------------------------------
+
+drop table colls;
+drop table docs;
+
+CREATE TABLE "APP"."COLLS" ("ID" VARCHAR(128) NOT NULL, "COLLID" SMALLINT NOT NULL);
+CREATE INDEX "APP"."NEW_INDEX3" ON "APP"."COLLS" ("COLLID");
+CREATE INDEX "APP"."NEW_INDEX2" ON "APP"."COLLS" ("ID");
+ALTER TABLE "APP"."COLLS" ADD CONSTRAINT "NEW_KEY2" UNIQUE ("ID", "COLLID");
+
+CREATE TABLE "APP"."DOCS" ("ID" VARCHAR(128) NOT NULL);
+CREATE INDEX "APP"."NEW_INDEX1" ON "APP"."DOCS" ("ID");
+ALTER TABLE "APP"."DOCS" ADD CONSTRAINT "NEW_KEY1" PRIMARY KEY ("ID");
+
+insert into colls values ('123', 2);
+insert into colls values ('124', -5);
+insert into colls values ('24', 1);
+insert into colls values ('26', -2);
+insert into colls values ('36', 1);
+insert into colls values ('37', 8);
+
+insert into docs values '24', '25', '36', '27', '124', '567';
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 10000;
+
+-- NOT IN is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( ID NOT IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- NOT EXISTS is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- EXISTS is flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- IN is flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ANY is flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- ANY is flattened
+SELECT count(ID) FROM DOCS WHERE ID <> ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID = ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID < ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+-- ALL is flattened, what's not?
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Now test nullable correlated columns
+drop table colls;
+-- the only change is ID is now nullable
+CREATE TABLE "APP"."COLLS" ("ID" VARCHAR(128), "COLLID" SMALLINT NOT NULL);
+CREATE INDEX "APP"."NEW_INDEX3" ON "APP"."COLLS" ("COLLID");
+CREATE INDEX "APP"."NEW_INDEX2" ON "APP"."COLLS" ("ID");
+ALTER TABLE "APP"."COLLS" ADD CONSTRAINT "NEW_KEY2" UNIQUE ("ID", "COLLID");
+insert into colls values ('123', 2);
+insert into colls values ('124', -5);
+insert into colls values ('24', 1);
+insert into colls values ('26', -2);
+insert into colls values ('36', 1);
+insert into colls values ('37', 8);
+insert into colls values (null, -2);
+insert into colls values (null, 1);
+insert into colls values (null, 8);
+
+-- NOT EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- IN should be flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ANY should be flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ALL should NOT be flattened, but subquery should be materialized
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+
+-- Now we make the other correlated column also nullable
+drop table docs;
+CREATE TABLE "APP"."DOCS" ("ID" VARCHAR(128));
+CREATE INDEX "APP"."NEW_INDEX1" ON "APP"."DOCS" ("ID");
+
+insert into docs values '24', '25', '36', '27', '124', '567';
+insert into docs values null;
+
+-- NOT EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( NOT EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- EXISTS should be flattened
+SELECT COUNT(*) FROM
+( SELECT ID FROM DOCS WHERE
+        ( EXISTS  (SELECT ID FROM COLLS WHERE DOCS.ID = COLLS.ID
+AND COLLID IN (-2,1) ) )
+) AS TAB;
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- IN should be flattened
+SELECT count(ID) FROM DOCS WHERE ID IN (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ANY should be flattened
+SELECT count(ID) FROM DOCS WHERE ID > ANY (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- ALL should NOT be flattened, but subquery should be materialized, watch out results
+SELECT count(ID) FROM DOCS WHERE ID <> ALL (SELECT ID FROM COLLS WHERE COLLID IN (-2,1) );
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;
+create table t1 (c1 int not null);
+create table t2 (c1 int not null);
+create table t3 (c1 int not null);
+create table t4 (c1 int);
+
+insert into t1 values 1,2,3,4,5,1,2;
+insert into t2 values 1,4,5,1,1,5,4;
+insert into t3 values 4,4,3,3;
+insert into t4 values 1,1,2,2,3,4,5,5;
+
+-- should return 2,3,2
+select * from t1 where not exists (select * from t2 where t1.c1=t2.c1);
+-- should be flattened
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- watch out result, should return 2,3,4,2
+select * from t1 where not exists (select * from t2 where t1.c1=t2.c1 and t2.c1
+not in (select t3.c1 from t3, t4));
+-- can not be flattened, should be materialized
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- should return 1,5,1
+select * from t1 where exists (select * from t2 where t1.c1=t2.c1 and t2.c1 not
+in (select t3.c1 from t3, t4));
+-- can not be flattened, should be materialized
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+drop table colls;
+drop table docs;
+drop table t1;
+drop table t2;
+drop table t3;
+drop table t4;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subqueryFlattening_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,6 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/subquery_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+# wants to do consistency checking, so needs
+# the statement cache off to ensure no trailing dependencies exist
+derby.language.statementCacheSize=0

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,118 @@
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+
+create table a (a int);
+insert into a values (1);
+select * from a;
+drop table a;
+
+
+create table b (si smallint,i int, bi bigint, r real, f float, d double precision, n5_2 numeric(5,2), dec10_3 decimal(10,3), ch20 char(20),vc varchar(20), lvc long varchar, blobCol blob(1000),  clobCol clob(1000));
+
+insert into b values(2,3,4,5.3,5.3,5.3,31.13,123456.123, 'one','one','one',cast(X'01ABCD' as blob(1000)),'one');
+
+insert into b values(-32768,-2147483648, -9223372036854775808 ,1.2E-37, 2.225E-307, +2.225E-307,-56.12, -123456.123,'one','one','one', cast(X'01ABCD' as blob(1000)),'one');
+
+insert into b values(null,null,null,null,null,null,null,null,null,null,null,null,null);
+
+
+insert into b values(32767,2147483647, 9223372036854775807 ,1.4 , 3.4028235E38 ,3.4028235E38  ,999.99, 9999999.999,'one','one','one',cast(X'01ABCD' as blob(1000)), 'one');
+
+select * from b;
+drop table b;
+
+create table c (si smallint not null,i int not null , bi bigint not null, r real not null, f float not null, d double precision not null, n5_2 numeric(5,2) not null , dec10_3 decimal(10,3) not null, ch20 char(20) not null ,vc varchar(20) not null, lvc long varchar not null,  blobCol blob(1000) not null,  clobCol clob(1000) not null);
+
+
+insert into c values(2,3,4,5.3,5.3,5.3,31.13,123456.123, 'one','one','one', cast(X'01ABCD' as blob(1000)), 'one');
+
+insert into c values(-32768,-2147483648, -9223372036854775808 ,1.2E-37, 2.225E-307, +2.225E-307,-56.12, -123456.123,'one','one','one', cast(X'01ABCD' as blob(1000)),'one');
+
+select * from c;
+
+values(10); 
+values('hello');
+values(1.2);
+
+drop table c;
+
+-- bug 4430 aliasinfo nullability problem
+select aliasinfo from sys.sysaliases where aliasinfo is null;
+
+
+
+-- test commit and rollback
+autocommit off;
+create table a(a int);
+insert into a values (1);
+select * from a;
+commit;
+drop table a;
+rollback;
+select * from a;
+drop table a;
+commit;
+autocommit on;
+
+maximumdisplaywidth 5000;
+--test 84 columns
+ values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+81, 82, 83, 84);
+
+values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
+11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
+
+
+-- test SQL Error with non-string arguments
+-- Make sure connection still ok (Bug 4657)
+create table a (a int);
+insert into a values(2342323423) ;
+insert into a values(1);
+select * from a;
+drop table a;
+
+-- Bug 4694 Test automatic rollback with close of connection
+-- in ij
+autocommit off;
+create table a (a int);
+
+
+-- Bug 4758 - Store error does not return properly to client
+autocommit off;
+create table t (i int);
+insert into t values(1);
+commit;
+insert into t values(2);
+connect 'wombat';
+-- by default, holdability of ResultSet objects created using this Connection object is true. Following will set it to false for this connection.
+NoHoldForConnection;
+prepare s1 as 'select * from t';
+execute s1;
+execute s1;
+
+-- Bug 5967 - Selecting from 2 lob columns w/ the first one having data of length 0
+create table t1 (c1 clob(10), c2 clob(10));
+insert into t1 values ('', 'some clob');
+select * from t1;
+select c2 from t1;
+insert into t1 values ('', '');
+insert into t1 values ('some clob', '');
+select * from t1;
+select c2 from t1;
+drop table t1;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/supersimple_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3 @@
+derby.locks.waitTimeout=3
+derby.locks.deadlockTimeout=3 
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/syscat.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/syscat.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,172 @@
+--
+-- this test shows the system catalogs
+--
+-- It is a goal of this test not to display information that
+-- can (and will!) change from run to run, such as fields
+-- that may eventually be UUIDs or UUID-like.
+--
+
+maximumdisplaywidth 500;
+
+-- negative tests
+-- verify no user ddl allowed on system tables
+-- drop table
+drop table sys.systables;
+
+-- drop index
+drop index sys.sysaliases_index2;
+
+-- create index
+create index trash on sys.systables(tableid);
+
+-- system tables are not updateable
+autocommit off;
+delete from sys.systables;
+update sys.systables set tablename = tablename || 'trash';
+insert into sys.systables select * from sys.systables;
+
+get cursor c as 'select tablename from sys.systables for update of tablename';
+
+-- users not allowed to do ddl in sys schema
+create table sys.usertable(c1 int);
+create view sys.userview as values 1;
+
+rollback work;
+autocommit on;
+
+-- positive tests
+create function gatp(SCH VARCHAR(128), TBL VARCHAR(128)) RETURNS VARCHAR(1000)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestPropertyInfo.getAllTableProperties'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+create function gaip(SCH VARCHAR(128), TBL VARCHAR(128)) RETURNS VARCHAR(1000)
+EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestPropertyInfo.getAllIndexProperties'
+LANGUAGE JAVA PARAMETER STYLE JAVA;
+
+-- get the properties for the heaps
+select tablename,gatp('SYS',
+	tablename) from sys.systables
+order by tablename;
+
+-- get the properties for the indexes
+select conglomeratename, gaip('SYS',
+	conglomeratename) from sys.sysconglomerates
+where isindex
+order by conglomeratename;
+
+select TABLENAME, TABLETYPE from sys.systables;
+
+select TABLENAME,
+	COLUMNNAME, COLUMNNUMBER,
+	columndatatype
+from sys.systables t, sys.syscolumns c
+where t.TABLEID=c.REFERENCEID
+order by TABLENAME, COLUMNNAME;
+
+select TABLENAME, ISINDEX 
+from sys.systables t, sys.sysconglomerates c
+where t.TABLEID=c.TABLEID
+order by TABLENAME, ISINDEX;
+
+create table t (i int, s smallint);
+
+select TABLENAME, TABLETYPE from sys.systables;
+
+select TABLENAME,
+	COLUMNNAME, COLUMNNUMBER,
+	columndatatype
+from sys.systables t, sys.syscolumns c
+where t.TABLEID=c.REFERENCEID
+order by TABLENAME, COLUMNNAME;
+
+select TABLENAME, ISINDEX 
+from sys.systables t, sys.sysconglomerates c
+where t.TABLEID=c.TABLEID
+order by TABLENAME, ISINDEX;
+
+-- > 30 char table and column names
+create table t234567890123456789012345678901234567890
+(c23456789012345678901234567890 int);
+
+select TABLENAME from sys.systables where length(TABLENAME) > 30;
+select COLUMNNAME from sys.syscolumns where {fn length(COLUMNNAME)} > 30;
+
+-- primary key
+create table primkey1 (c1 int not null constraint prim1 primary key);
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+
+create table unnamed_primkey2 (c1 int not null primary key);
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+
+create table primkey3 (c1 int not null, c2 int not null, constraint prim3 primary key(c2, c1));
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+
+create table uniquekey1 (c1 int not null constraint uniq1 unique);
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+
+create table unnamed_uniquekey2 (c1 int not null unique);
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+
+create table uniquekey3 (c1 int not null, c2 int not null, constraint uniq3 unique(c2, c1));
+select c.constraintname, c.type from sys.sysconstraints c, sys.systables t
+where c.tableid = t.tableid and not t.tablename like 'UNNAMED%';
+
+-- views
+create view dummyview as select * from t, uniquekey3;
+
+select tablename from sys.systables t, sys.sysviews v
+where t.tableid = v.tableid;
+
+-- RESOLVE - add selects from sysdepends when simplified
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+
+-- drop views
+drop view dummyview;
+
+-- added for bug 3544. make sure we can ship columndatatype across the wire.
+-- (this test is also part of the rjconnmats suite and will run under rmijdbc).
+
+create table decimal_tab (dcol decimal(5,2), ncol numeric(5,2) default 1.0);
+
+select columnname, columnnumber, columndatatype
+from sys.syscolumns
+where columnname IN ('DCOL', 'NCOL');
+
+-- now just for fun lets select some other stuff from the system catalogs
+-- which is used by Cloudview and make sure we can ship it over the wire.
+
+create index decimal_tab_idx on decimal_tab(dcol);
+
+-- index descriptor.
+select conglomeratename, descriptor
+from sys.sysconglomerates 
+where conglomeratename = 'DECIMAL_TAB_IDX';
+
+create trigger t1 after update on decimal_tab for each row mode db2sql values 1;
+
+-- referenced columns.
+select triggername, referencedcolumns
+from sys.systriggers;
+
+
+-- drop tables
+drop table t;
+drop table t234567890123456789012345678901234567890;
+drop table primkey1;
+drop table unnamed_primkey2;
+drop table primkey3;
+drop table uniquekey1;
+drop table unnamed_uniquekey2;
+drop table uniquekey3;
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/tempRestrictions.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/tempRestrictions.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,11 @@
+-- Tests for temporary restrictions in the language
+
+-- create a table
+create table t1(c1 int);
+
+-- No aggregates in the where clause
+-- (Someday will will allow correlated aggregates ...)
+select c1 from t1 where max(c1) = 1;
+
+-- drop the table
+drop table t1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerBeforeTrig.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerBeforeTrig.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,90 @@
+--
+-- Consolidated BEFORE trigger tests from all trigger tests.
+
+-- The following tests moved from TriggerValidate.sql to here.
+
+create table x (x int, constraint ck check (x > 0));
+create table unrelated (x int, constraint ckunrelated check (x > 0));
+create index x on x(x);
+
+------------------------------------
+-- DDL
+------------------------------------
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop table x;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop index x;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql alter table x add column y int;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql alter table x add constraint ck2 check(x > 0);
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql alter table x drop constraint ck;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql create index x2 on x (x);
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql create index xunrelated on unrelated(x);
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop index xunrelated; 
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql drop trigger tbad;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql 
+	create trigger tbad2 NO CASCADE before insert on x for each statement mode db2sql values 1;
+
+create trigger tokv1 NO CASCADE before insert on x for each statement mode db2sql values 1;
+insert into x values 1;
+select * from x;
+drop trigger tokv1;
+
+------------------------------------
+-- MISC
+------------------------------------
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql set isolation to rr;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql lock table x in share mode;
+
+create trigger tbad NO CASCADE before insert on x for each statement mode db2sql 
+	call APP.SOMEPROC();
+
+------------------------------------
+-- DML, cannot perform dml on same
+-- table for before trigger, of for
+-- after
+------------------------------------
+-- before
+create trigger tbadX NO CASCADE before insert on x for each statement mode db2sql insert into x values 1;
+
+create trigger tbadX NO CASCADE before insert on x for each statement mode db2sql delete from x;
+
+create trigger tbadX NO CASCADE before insert on x for each statement mode db2sql update x set x = x;
+
+-- Following tests moved here from triggerRefClause, since these use BEFORE triggers
+-- syntax
+create trigger t1 NO CASCADE before update on x referencing badtoken as oldtable for each row mode db2sql values 1;
+create trigger t1 NO CASCADE before update on x referencing old as oldrow new for each row mode db2sql values 1;
+
+-- dup names
+create trigger t1 NO CASCADE before update on x referencing old as oldrow new as newrow old as oldrow2 
+	for each row mode db2sql values 1;
+create trigger t1 NO CASCADE before update on x referencing new as newrow new as newrow2 old as oldrow2 
+	for each row mode db2sql values 1;
+
+-- mismatch: row->for each statement mode db2sql, table->for each row
+create trigger t1 NO CASCADE before update on x referencing new_table as newtab for each row mode db2sql values 1;
+create trigger t1 NO CASCADE before update on x referencing new as newrow for each statement mode db2sql values 1;
+
+-- same as above, but using old
+create trigger t1 NO CASCADE before update on x referencing old_table as old for each row mode db2sql select * from old;
+create trigger t1 NO CASCADE before update on x referencing old_table as old for each statement mode db2sql values old.x;
+
+-- old and new cannot be used once they have been redefined
+create trigger t1 NO CASCADE before update on x referencing old_table as oldtable for each statement mode db2sql select * from old;
+create trigger t1 NO CASCADE before update on x referencing old as oldtable for each row mode db2sql values old.x;
+
+-- try some other likely uses
+create table y (x int);
+create trigger t1 NO CASCADE before insert on x referencing new_table as newrowtab for each statement mode db2sql insert into y select x from newrowtab;
+
+drop table x;
+drop table y;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,583 @@
+--
+-- General trigger test
+--
+
+create function printTriggerInfo() returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.printTriggerInfo';
+create function triggerFiresMin(s varchar(128)) returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.triggerFiresMinimal';
+create function triggerFires(s varchar(128)) returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.triggerFires';
+create function begInvRefToTECTest() returns varchar(1) PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.beginInvalidRefToTECTest';
+create procedure notifyDMLDone() PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.Triggers.notifyDMLDone';
+
+drop table x;
+create table x (x int, y int, z int, constraint ck1 check (x > 0));
+create view v as select * from x;
+
+-- ok
+create trigger t1 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+
+-- trigger already exists
+create trigger t1 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+-- trigger already exists
+create trigger app.t1 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+
+-- make sure system tables look as we expect
+select cast(triggername as char(10)), event, firingtime, type, state, referencedcolumns from sys.systriggers;
+
+select cast(triggername as char(10)), text from sys.systriggers t, sys.sysstatements s 
+		where s.stmtid = t.actionstmtid;
+
+select cast(triggername as char(10)), tablename from sys.systriggers t, sys.systables tb
+		where t.tableid = tb.tableid;
+
+values SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', 'SYSTRIGGERS');
+drop trigger t1;
+
+-- not in sys schema
+create trigger sys.tr NO CASCADE before insert on x for each row mode db2sql values 1;
+
+-- not on table in sys schema
+create trigger tr NO CASCADE before insert on sys.systables for each row mode db2sql values 1;
+
+-- duplicate columns, not allowed
+create trigger tr NO CASCADE before update of x, x on x for each row mode db2sql values 1;
+
+-- no params in column list
+create trigger tr NO CASCADE before update of x, ? on x for each row mode db2sql values 1;
+
+-- invalid column
+create trigger tr NO CASCADE before update of doesnotexist on x for each row mode db2sql values 1;
+
+-- not on view
+create trigger tr NO CASCADE before insert on v for each row mode db2sql values 1;
+
+-- error to use table qualifier
+create trigger tr NO CASCADE before update of x.x on x for each row mode db2sql values 1;
+
+-- error to use schema.table qualifier
+create trigger tr NO CASCADE before update of app.x.x on x for each row mode db2sql values 1;
+
+-- no params in trigger action
+-- bad
+create trigger tr NO CASCADE before delete on x for each row mode db2sql select * from x where x = ?;
+
+create trigger stmttrigger NO CASCADE before delete on x for each statement mode db2sql values 1;
+select triggername, type from sys.systriggers where triggername = 'STMTTRIGGER';
+drop trigger stmttrigger;
+
+create trigger rowtrigger NO CASCADE before delete on x for each row mode db2sql values 1;
+select triggername, type from sys.systriggers where triggername = 'ROWTRIGGER';
+drop trigger rowtrigger;
+
+-- fool around with depedencies
+
+-- CREATE TRIGGER
+create trigger t2 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+
+-- CREATE CONSTRAINT
+alter table x add constraint ck2 check(x > 0);
+
+-- DROP VIEW
+drop view v;
+
+-- CREATE VIEW
+create view v as select * from x;
+
+-- CREATE INDEX
+create index ix on x(x);
+
+-- DROP TRIGGER: to the other types we have here
+drop trigger t2;
+
+-- DROP INDEX
+drop index ix; 
+
+-- DROP CONSTRAINT
+alter table x drop constraint ck2;
+
+-- MAKE SURE TRIGGER SPS IS RECOMPILED IF TABLE IS ALTERED.
+create table y (x int, y int, z int);
+
+create trigger tins after insert on x referencing new_table as newtab for each statement mode db2sql insert into y select x, y, z from newtab;
+
+insert into x values (1, 1, 1);
+alter table x add column w int default 100;
+alter table x add constraint nonulls check (w is not null);
+insert into x values (2, 2, 2, 2);
+select * from y;
+drop trigger tins;
+drop table y;
+
+-- prove that by dropping the underlying table, we have dropped the trigger
+-- first, lets create a few other triggers
+create trigger t2 NO CASCADE before update of x,y on x for each row mode db2sql values 1;
+create trigger t3 after update of x,y on x for each statement mode db2sql values 1;
+create trigger t4 after delete on x for each statement mode db2sql values 1;
+select cast(triggername as char(10)), tablename from sys.systriggers t, sys.systables  tb
+		where t.tableid = tb.tableid order by 1;
+drop view v;
+drop table x;
+select cast(triggername as char(10)), tablename from sys.systriggers t, sys.systables  tb
+		where t.tableid = tb.tableid order by 1;
+
+--
+-- schema testing
+--
+create table x (x int, y int, z int);
+create schema test;
+
+create trigger test.t1 NO CASCADE before delete on x for each row mode db2sql values 1;
+set schema test;
+
+create trigger t2 NO CASCADE before delete on app.x for each row mode db2sql values 1;
+
+select schemaname, triggername from sys.systriggers t, sys.sysschemas s
+	where s.schemaid = t.schemaid;
+
+set schema app;
+-- fails
+drop schema test restrict;
+
+drop trigger test.t2;
+
+-- fails
+drop schema test restrict;
+
+set schema test;
+drop trigger t1;
+set schema app;
+
+-- ok this time
+drop schema test restrict;
+
+--
+-- Test the information in the trigger information context
+--
+create table t (x int, y int, c char(1));
+create trigger t1 NO CASCADE before insert on t for each statement mode db2sql
+	values app.printTriggerInfo();
+insert into t values (1,1,'1');
+
+delete from t;
+drop trigger t1;
+create trigger t1 after insert on t for each statement mode db2sql
+	values app.printTriggerInfo();
+insert into t values (1,1,'1');
+
+drop trigger t1;
+create trigger t1 NO CASCADE before update on t for each statement mode db2sql
+	values app.printTriggerInfo();
+update t set x = 2;
+update t set y = 2, c = '2';
+
+drop trigger t1;
+create trigger t1 after update on t for each statement mode db2sql
+	values app.printTriggerInfo();
+update t set x = 3;
+update t set y = 3, c = '3';
+
+drop trigger t1;
+create trigger t1 no cascade before delete on t for each statement mode db2sql
+	values app.printTriggerInfo();
+delete from t;
+drop trigger t1;
+
+insert into t values(3,3,'3');
+create trigger t1 after delete on t for each statement mode db2sql
+	values app.printTriggerInfo();
+delete from t;
+drop trigger t1;
+
+--
+-- Test trigger firing order
+--
+create trigger t1 after insert on t for each row mode db2sql
+	values app.triggerFiresMin('3rd');
+create trigger t2 after insert on t for each statement mode db2sql
+	values app.triggerFiresMin('1st');
+create trigger t3 no cascade before insert on t for each row mode db2sql
+	values app.triggerFiresMin('4th');
+create trigger t4 after insert on t for each row mode db2sql
+	values app.triggerFiresMin('2nd');
+create trigger t5 no cascade before insert on t for each statement mode db2sql
+	values app.triggerFiresMin('5th');
+insert into t values (1,1,'1');
+drop trigger t1;
+drop trigger t2;
+drop trigger t3;
+drop trigger t4;
+drop trigger t5;
+
+-- try multiple values, make sure result sets don't get screwed up
+-- this time we'll print out result sets
+create trigger t1 after insert on t for each row mode db2sql
+	values app.triggerFires('3rd');
+create trigger t2 no cascade before insert on t for each statement mode db2sql
+	values app.triggerFires('1st');
+create trigger t3 after insert on t for each row mode db2sql
+	values app.triggerFires('4th');
+create trigger t4 no cascade before insert on t for each row mode db2sql
+	values app.triggerFires('2nd');
+create trigger t5 after insert on t for each statement mode db2sql
+	values app.triggerFires('5th');
+insert into t values 
+	(2,2,'2'),
+	(3,3,'3'),
+	(4,4,'4');
+
+delete from t;
+drop trigger t1;
+drop trigger t2;
+drop trigger t3;
+drop trigger t4;
+drop trigger t5;
+
+--
+-- Test firing on empty change sets, 
+-- statement triggers fire, row triggers
+-- do not.
+--
+create trigger t1 after insert on t for each row mode db2sql
+	values app.triggerFires('ROW: empty insert, should NOT fire');
+create trigger t2 after insert on t for each statement mode db2sql
+	values app.triggerFires('STATEMENT: empty insert, ok');
+insert into t select * from t;
+drop trigger t1;
+drop trigger t2;
+
+create trigger t1 after update on t for each row mode db2sql
+	values app.triggerFires('ROW: empty update, should NOT fire');
+create trigger t2 after update on t for each statement mode db2sql
+	values app.triggerFires('STATEMENT: empty update, ok');
+update t set x = x;
+drop trigger t1;
+drop trigger t2;
+
+create trigger t1 after delete on t for each row mode db2sql
+	values app.triggerFires('ROW: empty delete, should NOT fire');
+create trigger t2 after delete on t for each statement mode db2sql
+	values app.triggerFires('STATEMENT: empty delete, ok');
+delete from t;
+drop trigger t1;
+drop trigger t2;
+drop table x;
+
+
+--
+-- After alter table, should pick up the new columns
+--
+create table talt(c1 int);
+create trigger tins after insert on talt for each statement mode db2sql
+	values app.printTriggerInfo();
+create trigger tdel no cascade before delete on talt for each row mode db2sql
+	values app.printTriggerInfo();
+create trigger tupd after update on talt for each statement mode db2sql
+	values app.printTriggerInfo();
+insert into talt values (1);
+alter table talt add column cnew int default null;
+select * from talt;
+
+insert into talt values (2,2);
+delete from talt;
+insert into talt values (3,3);
+update talt set cnew = 666;
+drop trigger tins;
+drop trigger tdel;
+drop trigger tupd;
+
+-- make sure update w/ columns doesn't pick up new col
+create trigger tupd after update of c1 on talt for each statement mode db2sql
+	values app.printTriggerInfo();
+alter table talt add column cnew2 int default null;
+insert into talt values (1,1,1);
+update talt set cnew2 = 666;
+
+-- clean up
+drop table talt;
+
+
+--
+-- Trigger ordering wrt constraints
+--
+create table p (x int not null, constraint pk primary key (x));
+insert into p values 1,2,3;
+create table f (x int, 
+		constraint ck check (x > 0),
+		constraint fk foreign key (x) references p);
+create trigger t1 no cascade before insert on f for each row mode db2sql
+	values app.triggerFiresMin('BEFORE constraints');
+create trigger t2 after insert on f for each row mode db2sql
+	values app.triggerFiresMin('AFTER constraints');
+
+-- INSERT
+-- fails, ck violated
+insert into f values 0;
+
+alter table f drop constraint ck;
+
+-- fails, fk violated
+insert into f values 0;
+
+alter table f drop foreign key fk;
+
+-- ok
+insert into f values 0;
+
+delete from f;
+alter table f add constraint ck check (x > 0);
+alter table f add constraint fk foreign key (x) references p;
+drop trigger t1;
+drop trigger t2;
+insert into f values (1);
+
+
+-- UPDATE
+create trigger t1 no cascade before update on f for each row mode db2sql
+	values app.triggerFiresMin('BEFORE constraints');
+create trigger t2 after update on f for each row mode db2sql
+	values app.triggerFiresMin('AFTER constraints');
+
+-- fails, ck violated
+update f set x = 0;
+
+alter table f drop constraint ck;
+
+-- fails, fk violated
+update f set x = 0;
+
+alter table f drop foreign key fk;
+
+-- ok
+update f set x = 0;
+
+delete from f;
+alter table f add constraint ck check (x > 0);
+alter table f add constraint fk foreign key (x) references p;
+drop trigger t1;
+drop trigger t2;
+
+
+-- DELETE
+insert into f values 1;
+create trigger t1 no cascade before delete on p for each row mode db2sql
+	values app.triggerFiresMin('BEFORE constraints');
+create trigger t2 after delete on p for each row mode db2sql
+	values app.triggerFiresMin('AFTER constraints');
+
+-- fails, fk violated
+delete from p;
+
+alter table f drop foreign key fk;
+
+-- ok
+delete from p;
+
+drop table f;
+drop table p;
+
+--
+-- Prove that we are firing the proper triggers based
+-- on the columns we are changing;
+--
+drop table t;
+create table t (c1 int, c2 int);
+create trigger tins after insert on t for each row mode db2sql
+	values app.triggerFiresMin('insert');
+create trigger tdel after delete on t for each row mode db2sql
+	values app.triggerFiresMin('delete');
+create trigger tupc1 after update of c1 on t for each row mode db2sql
+	values app.triggerFiresMin('update c1');
+create trigger tupc2 after update of c2 on t for each row mode db2sql
+	values app.triggerFiresMin('update c2');
+create trigger tupc1c2 after update of c1,c2 on t for each row mode db2sql
+	values app.triggerFiresMin('update c1,c2');
+create trigger tupc2c1 after update of c2,c1 on t for each row mode db2sql
+	values app.triggerFiresMin('update c2,c1');
+insert into t values (1,1);
+update t set c1 = 1;
+update t set c2 = 1;
+update t set c2 = 1, c1 = 1;
+update t set c1 = 1, c2 = 1;
+delete from t;
+
+-- Make sure that triggers work with delimited identifiers
+-- Make sure that text munging works correctly
+create table trigtable("cOlUmN1" int, "cOlUmN2  " int, "cOlUmN3""""  " int);
+create table trighistory("cOlUmN1" int, "cOlUmN2  " int, "cOlUmN3""""  " int);
+insert into trigtable values (1, 2, 3);
+create trigger "tt1" after insert on trigtable
+referencing NEW as NEW for each row mode db2sql
+insert into trighistory ("cOlUmN1", "cOlUmN2  ", "cOlUmN3""""  ") values
+(new."cOlUmN1" + 5, "NEW"."cOlUmN2  " * new."cOlUmN3""""  ", 5);
+maximumdisplaywidth 700;
+select cast(triggername as char(10)), text from sys.systriggers t, sys.sysstatements s 
+		where s.stmtid = t.actionstmtid and triggername = 'tt1';
+insert into trigtable values (1, 2, 3);
+select * from trighistory;
+drop trigger "tt1";
+create trigger "tt1" after insert on trigtable
+referencing new as new for each row mode db2sql
+insert into trighistory ("cOlUmN1", "cOlUmN2  ", "cOlUmN3""""  ") values
+(new."cOlUmN1" + new."cOlUmN1", "NEW"."cOlUmN2  " * new."cOlUmN3""""  ", new."cOlUmN2  " * 3);
+select cast(triggername as char(10)), text from sys.systriggers t, sys.sysstatements s 
+		where s.stmtid = t.actionstmtid and triggername = 'tt1';
+insert into trigtable values (1, 2, 3);
+select * from trighistory;
+drop table trigtable;
+drop table trighistory;
+
+-- trigger bug that got fixed mysteriously
+-- between xena and buffy
+create table trigtable1(c1 int, c2 int);
+create table trighistory(trigtable char(30), c1 int, c2 int);
+create trigger trigtable1 after update on trigtable1
+referencing OLD as oldtable
+for each row mode db2sql
+insert into trighistory values ('trigtable1', oldtable.c1, oldtable.c2);
+insert into trigtable1 values (1, 1);
+update trigtable1 set c1 = 11, c2 = 11;
+select * from trighistory;
+drop table trigtable1;
+drop table trighistory;
+
+-- 
+-- Lets make sure that the tec cannot be accessed once
+-- the dml that caused it to be pushed is finished.
+--
+drop table t;
+create table t (x int);
+create trigger t no cascade before insert on t for each statement mode db2sql
+	values app.begInvRefToTECTest();
+
+-- causes the trigger to fire, which causes a thread
+-- to be cranked up
+insert into t values 1;
+
+-- tell the background thread that dml is done,
+-- it will now try to do some stuff with the stale
+-- tec.  We MUST do this in a different thread lest
+-- we block the background thread on connection 
+-- synchronization
+connect 'wombat' as conn2;
+call app.notifyDMLDone();
+disconnect;
+
+set connection connection0;
+
+-- Test for bug 3495 - triggers were causing deferred insert, which
+-- caused the insert to use a TemporaryRowHolderImpl. This was not
+-- being re-initialized properly when closed, and it was trying to
+-- re-insert the row from the first insert.
+autocommit off;
+drop table t;
+create table t (x int);
+create trigger tr after insert on t for each statement mode db2sql values 1;
+prepare ps as 'insert into t values (?)';
+execute ps using 'values (1)';
+execute ps using 'values (2)';
+select * from t;
+
+-- Test MODE DB2SQL not as reserved keyword. beetle 4546 
+drop table db2sql;
+drop table db2sql2;
+create table db2sql  (db2sql int, mode int, yipng int);
+create table db2sql2 (db2sql2 int);
+
+-- Test MODE DB2SQL on trigger.  beetle 4546
+drop trigger db2sqltr1;
+create trigger db2sqltr1 after insert on db2sql 
+for each row
+MODE DB2SQL 
+insert into db2sql2 values (1);
+
+-- Test optimizer plan of trigger action. Beetle 4826
+autocommit on;
+drop table parent;
+
+create table t1(a int not null primary key, b int);
+create table parent (a int not null primary key, b int);
+
+create trigger trig1 AFTER DELETE on t1
+referencing OLD as OLD for each row mode db2sql
+delete from parent where a = OLD.a;
+
+insert into t1 values (0, 1);
+insert into t1  values (1, 1);
+insert into t1  values (2, 1);
+insert into t1  values (3, 1);
+
+insert into parent values (0, 1);
+insert into parent values (1, 1);
+insert into parent values (2, 1);
+insert into parent values (3, 1);
+insert into parent values (4, 1);
+
+autocommit off ;
+delete from t1 where a = 3;
+select type, mode, tablename from new org.apache.derby.diag.LockTable() t order by tablename, type;
+rollback;
+autocommit on;
+drop table t1;
+drop table parent;
+
+-- Test use of old AND new referencing names within the same trigger (beetle 5725).
+
+create table x(x int);
+insert into x values (2), (8), (78);
+create table removed (x int);
+
+-- statement trigger
+create trigger t1 after update of x on x referencing
+ old_table as old new_table as new for each statement mode db2sql insert into
+ removed select * from old where x not in (select x from 
+ new where x < 10);
+
+select * from x;
+select * from removed;
+update x set x=18 where x=8;
+select * from x;
+select * from removed;
+
+-- row trigger
+create trigger t2 after update of x on x referencing
+ old as oldrow new as newrow for each row mode db2sql insert into
+ removed values (newrow.x + oldrow.x);
+
+update x set x=28 where x=18;
+select * from x;
+select * from removed;
+
+-- do an alter table, then make sure triggers recompile correctly.
+
+alter table x add column y int;
+update x set x=88 where x > 44;
+select * from x;
+select * from removed;
+
+drop table x;
+drop table removed;
+
+create table x (x int, constraint ck check (x > 0));
+
+-- after
+create trigger tgood after insert on x for each statement mode db2sql insert into x values 666;
+insert into x values 1;
+select * from x;
+drop trigger tgood;
+
+create trigger tgood after insert on x for each statement mode db2sql delete from x;
+insert into x values 1;
+select * from x;
+drop trigger tgood;
+
+create trigger tgood after insert on x for each statement mode db2sql update x set x = x+100;
+insert into x values 1;
+select * from x;
+drop trigger tgood;
+delete from x;
+
+drop table x;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+ij.protocol=jdbc:derby:
+usedefaults=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,57 @@
+--
+-- Trigger recursion test
+--
+
+-- test the maximum recursion level to be less than 16
+create table t1 (x int);
+create table t2 (x int);
+create table t3 (x int);
+create table t4 (x int);
+create table t5 (x int);
+create table t6 (x int);
+create table t7 (x int);
+create table t8 (x int);
+create table t9 (x int);
+create table t10 (x int);
+create table t11 (x int);
+create table t12 (x int);
+create table t13 (x int);
+create table t14 (x int);
+create table t15 (x int);
+create table t16 (x int);
+create table t17 (x int);
+create trigger tr1 after insert on t1 for each row MODE DB2SQL insert into t2 values 666;
+create trigger tr2 after insert on t2 for each row MODE DB2SQL insert into t3 values 666;
+create trigger tr3 after insert on t3 for each row MODE DB2SQL insert into t4 values 666;
+create trigger tr4 after insert on t4 for each row MODE DB2SQL insert into t5 values 666;
+create trigger tr5 after insert on t5 for each row MODE DB2SQL insert into t6 values 666;
+create trigger tr6 after insert on t6 for each row MODE DB2SQL insert into t7 values 666;
+create trigger tr7 after insert on t7 for each row MODE DB2SQL insert into t8 values 666;
+create trigger tr8 after insert on t8 for each row MODE DB2SQL insert into t9 values 666;
+create trigger tr9 after insert on t9 for each row MODE DB2SQL insert into t10 values 666;
+create trigger tr10 after insert on t10 for each row MODE DB2SQL insert into t11 values 666;
+create trigger tr11 after insert on t11 for each row MODE DB2SQL insert into t12 values 666;
+create trigger tr12 after insert on t12 for each row MODE DB2SQL insert into t13 values 666;
+create trigger tr13 after insert on t13 for each row MODE DB2SQL insert into t14 values 666;
+create trigger tr14 after insert on t14 for each row MODE DB2SQL insert into t15 values 666;
+create trigger tr15 after insert on t15 for each row MODE DB2SQL insert into t16 values 666;
+create trigger tr16 after insert on t16 for each row MODE DB2SQL insert into t17 values 666;
+create trigger tr17 after insert on t17 for each row MODE DB2SQL values 1;
+
+-- here we go
+;
+insert into t1 values 1;
+
+-- prove it
+select * from t1;
+
+-- The following should work, but because of defect 5602, it raises NullPointerException.
+-- After the fix for 5602, we could enable the following part of the test.
+-- Reduce the recursion level to 16. It should pass now.
+-- drop trigger tr17;
+
+-- insert  into t1 values 2;
+
+-- prove it
+-- select * from t1;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRecursion_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRefClause.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerRefClause.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,209 @@
+--
+-- Test the REFERENCING clause for a trigger
+-- as well as a general test that using the
+-- OLD and NEW transition variables work ok
+--
+drop table x;
+create table x (x int, y int, z int);
+
+--
+-- negative tests
+--
+
+-- syntax
+
+-- mismatch: insert->old, delete->new
+create trigger t1 after insert on x referencing old as oldrow for each row mode db2sql values 1;
+create trigger t1 after insert on x referencing old_table as oldtab for each statement mode db2sql values 1;
+create trigger t1 after insert on x referencing old_table as oldtab for each statement mode db2sql values 1;
+create trigger t1 after delete on x referencing new as newrow for each row mode db2sql values 1;
+create trigger t1 after delete on x referencing new_table as newtab for each statement mode db2sql values 1;
+create trigger t1 after delete on x referencing new_table as newtab for each statement mode db2sql values 1;
+
+-- same as above, bug using old/new
+create trigger t1 after insert on x referencing old as old for each row mode db2sql values old.x;
+create trigger t1 after insert on x referencing old_table as old for each statement mode db2sql select * from old;
+create trigger t1 after insert on x referencing old_table as old for each statement mode db2sql select * from old;
+create trigger t1 after delete on x referencing new as new for each row mode db2sql values new.x;
+create trigger t1 after delete on x referencing new_table as new for each statement mode db2sql select * from new;
+create trigger t1 after delete on x referencing new_table as new for each statement mode db2sql select * from new;
+
+-- cannot reference columns that don't exist, not bound as normal stmts
+create trigger t1 after delete on x referencing old as old for each row mode db2sql values old.badcol;
+create trigger t1 after delete on x referencing old as old for each row mode db2sql values old;
+create trigger t1 after delete on x referencing old as oldrow for each row mode db2sql values oldrow.badcol;
+create trigger t1 after delete on x referencing old as oldrow for each row mode db2sql values oldrow;
+
+-- lets try some basics with old/new table
+create table y (x int);
+insert into y values 1, 2, 666, 2, 2, 1;
+insert into x values (1, null, null), (2, null, null);
+create trigger t1 after delete on x referencing old as old for each row mode db2sql delete from y where x = old.x;
+autocommit off;
+
+delete from x;
+select * from y;
+rollback;
+
+drop trigger t1;
+commit;
+
+create trigger t1 after delete on x referencing old_table as old for each statement mode db2sql delete from y where x in (select x from old);
+delete from x;
+select * from y;
+
+drop trigger t1;
+rollback;
+
+delete from x;
+select * from y;
+rollback;
+
+delete from x;
+delete from y;
+
+-- test all types and row triggers since they do explicit type mapping
+create table allTypes1 (i int, tn smallint, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, f float,
+				dt date, t time, ts timestamp,
+				b CHAR(2) FOR BIT DATA, bv VARCHAR(2) FOR BIT DATA, lbv LONG VARCHAR FOR BIT DATA,
+				dc decimal(5,2), n numeric(8,4));
+
+create table allTypes2 (i int, tn smallint, s smallint, l bigint,
+				c char(10), v varchar(50), lvc long varchar,
+				d double precision, r real, f float,
+				dt date, t time, ts timestamp,
+				b  CHAR(2) FOR BIT DATA, bv VARCHAR(2) FOR BIT DATA, lbv LONG VARCHAR FOR BIT DATA,
+				dc decimal(5,2), n numeric(8,4));
+create trigger t1 after insert on allTypes1 referencing new as newrowtab for each row mode db2sql
+	insert into allTypes2 
+	values (newrowtab.i, newrowtab.tn, newrowtab.s, newrowtab.l,
+		newrowtab.c, newrowtab.v, newrowtab.lvc,
+		newrowtab.d, newrowtab.r, newrowtab.f,   newrowtab.dt,  
+		newrowtab.t, newrowtab.ts, newrowtab.b, newrowtab.bv, 
+		newrowtab.lbv, newrowtab.dc, newrowtab.n);
+
+commit;
+insert into allTypes1 values (0, 10, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 200.0e0,
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0F0F', X'1234', 111.11, 222.2);
+
+select * from allTypes1;
+select * from allTypes2;
+commit;
+drop trigger t1;
+
+insert into allTypes1 values (0, 10, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 200.0e0,
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0F0F', X'1234', 111.11, 222.2); 
+
+delete from alltypes1;
+drop trigger t1;
+
+insert into allTypes1 values (0, 10, 100, 1000000,
+					  'duplicate', 'this is duplicated', 'also duplicated',
+					  200.0e0, 200.0e0, 200.0e0,
+					  date('1992-01-01'), time('12:30:30'), timestamp('1992-01-01 12:30:30'),
+					  X'12af', X'0F0F', X'1234', 111.11, 222.2); 
+drop table allTypes1;
+drop table allTypes2;
+
+-- do a join to find changed values just because i can
+drop table x;
+drop table y;
+create table x (x int);
+create table removed (x int);
+-- create trigger t1 after update of x on x referencing old_table as old new_table as new
+-- 	 for each statement mode db2sql
+-- 	 insert into removed select * from old where x not in (select x from new where x < 10);
+insert into x values 1,3,4,5,6,9,666,667,668;
+update x set x = x+1;
+select * from x;
+select * from removed;
+drop table x;
+drop table removed;
+commit;
+
+create table x (x int, y int);
+create table y (x int, y int);
+create trigger t1 after insert on x referencing new_table as newtab for each statement mode db2sql
+	insert into y select newtab.x, y+newtab.y from newtab;
+insert into x values (1,1);
+select * from y;
+delete from y;
+drop trigger t1;
+
+-- how about a correlation of a transition variable
+create trigger t1 after insert on x referencing new_table as newtab for each statement mode db2sql
+	insert into y select newtab2.x, y+newtab2.y from newtab newtab2;
+insert into x values (1,1);
+select * from y;
+
+
+-- lets prove that we are getting object types from row transition
+-- variables.  this is only an issue with row triggers because
+-- they are doing some funky stuff under the covers to make
+-- a column appear just like a normal table column
+drop table x;
+drop table y;
+
+create table val (x int);
+create table x (b char(5) FOR BIT DATA);
+create table y (b char(5) FOR BIT DATA);
+create trigger t1 after insert on x referencing new as new for each row mode db2sql insert into y values (new.b || X'80');
+insert into x values (X'E0');
+select * from y;
+
+drop trigger t1;
+create trigger t1 after insert on x referencing new as new for each row mode db2sql insert into y values new.b;
+insert into x values null;
+select * from y;
+
+drop trigger t1;
+create trigger t1 after insert on x referencing new as new for each row mode db2sql insert into val values length(new.b);
+insert into x values X'FFE0';
+select * from val;
+
+drop table x;
+drop table y;
+drop table val;
+
+create table x (x dec(7,3));
+create table y (x dec(8,4));
+insert into x values 1234.1234, null, 1234.123;
+select * from x;
+select * from y;
+
+create table t1 (col1 int not null primary key, col2 char(20));
+create table s_t1(col1 int not null primary key, chgType char(20));
+
+-- should work
+create trigger trig_delete_2 after delete on t1 referencing OLD_TABLE as OLD for each statement mode db2sql 
+	insert into s_t1 (select col1, 'D'
+	from OLD  where OLD.col1 <> ALL
+	(select col1 from s_t1 where  OLD.col1 = s_t1.col1));
+
+drop trigger trig_delete_2;
+-- should work
+create trigger trig_delete_2 after delete on t1 referencing old_table as OLD for each statement mode db2sql 
+	insert into s_t1 (select col1, 'D'
+	from OLD where OLD.col1 <> ALL
+	(select s_t1.col1 from s_t1, OLD where  OLD.col1 = s_t1.col1));
+
+insert into t1 values (5, 'first row'), (3, 'second row'), (9, 'third row'),
+			(4, 'forth row');
+select * from s_t1;
+delete from t1 where col1 = 3 or col1 = 9;
+select * from s_t1;
+insert into t1 values (9, 'third row'), (3, 'second row'), (7, 'fifth row');
+delete from t1 where col1 = 3 or col1 = 7;
+select * from s_t1;
+delete from t1;
+select * from s_t1;
+
+rollback;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,105 @@
+--
+-- Small trigger stream test.  Make sure we can
+-- read streams ok from the context of a row or
+-- statement trigger.
+--
+create function getAsciiColumn( whichRS int, colNumber int, value varchar(128)) returns int
+  PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.getAsciiColumn';
+create procedure insertAsciiColumn( stmtText varchar( 256), colNumber int, value varchar(128), length int)
+  PARAMETER STYLE JAVA LANGUAGE JAVA MODIFIES SQL DATA
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.insertAsciiColumn';
+create function getBinaryColumn( whichRS int, colNumber int, value varchar(128)) returns int
+  PARAMETER STYLE JAVA LANGUAGE JAVA NO SQL
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.getBinaryColumn';
+create procedure insertBinaryColumn( stmtText varchar( 256), colNumber int, value varchar(128), length int)
+  PARAMETER STYLE JAVA LANGUAGE JAVA MODIFIES SQL DATA
+  EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.StreamUtil.insertBinaryColumn';
+
+drop table x;
+create table x (x int, c1 long varchar, y int, slen int);
+
+-- this getAsciiColumn() method reads in the stream
+-- and verifies each byte and prints out the length
+-- of the column
+create trigger t1 NO CASCADE before update of x,y on x for each statement mode db2sql
+	values getAsciiColumn( 0, 2, 'a');
+create trigger t2 after update of x,y on x for each row  mode db2sql
+	values getAsciiColumn( 1, 2, 'a');
+
+create trigger t3 after insert on x for each statement  mode db2sql
+	values getAsciiColumn( 1, 2, 'a');
+create trigger t4 NO CASCADE before insert on x for each row  mode db2sql
+	values getAsciiColumn( 1, 2, 'a');
+
+create trigger t5 NO CASCADE before delete on x for each statement  mode db2sql
+	values getAsciiColumn( 0, 2, 'a');
+create trigger t6 after delete on x for each row  mode db2sql
+	values getAsciiColumn( 0, 2, 'a');
+
+call insertAsciiColumn('insert into x values (1, ?, 1, ?)', 1, 'a', 1);
+call insertAsciiColumn('insert into x values (2, ?, 2, ?)', 1, 'a', 10);
+call insertAsciiColumn('insert into x values (3, ?, 3, ?)', 1, 'a', 100);
+call insertAsciiColumn('insert into x values (4, ?, 4, ?)', 1, 'a', 1000);
+call insertAsciiColumn('insert into x values (5, ?, 5, ?)', 1, 'a', 5000);
+call insertAsciiColumn('insert into x values (6, ?, 6, ?)', 1, 'a', 10000);
+call insertAsciiColumn('insert into x values (7, ?, 7, ?)', 1, 'a', 16500);
+call insertAsciiColumn('insert into x values (8, ?, 8, ?)', 1, 'a', 32500);
+call insertAsciiColumn('insert into x values (9, ?, 9, ?)', 1, 'a', 0);
+call insertAsciiColumn('insert into x values (10, ?, 10, ?)', 1, 'a', 666);
+
+update x set x = x+1;
+update x set x = null;
+
+insert into x select * from x;
+
+delete from x;
+
+drop table x;
+
+
+
+create table x (x int, c1 long varchar for bit data, y int, slen int);
+
+-- this getBinaryColumn() method reads in the stream
+-- and verifies each byte and prints out the length
+-- of the column
+create trigger t1 NO CASCADE before update of x,y on x for each statement  mode db2sql
+	values getBinaryColumn( 0, 2, 'a');
+create trigger t2 after update of x,y on x for each row  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+
+create trigger t3 after insert on x for each statement  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+create trigger t4 NO CASCADE before insert on x for each row  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+
+create trigger t5 NO CASCADE before delete on x for each statement  mode db2sql
+	values getBinaryColumn( 1, 2, 'a');
+create trigger t6 after delete on x for each row  mode db2sql
+	values getBinaryColumn( 0, 2, 'a');
+
+call insertBinaryColumn('insert into x values (1, ?, 1, ?)', 1, 'a', 1);
+call insertBinaryColumn('insert into x values (2, ?, 2, ?)', 1, 'a', 10);
+call insertBinaryColumn('insert into x values (3, ?, 3, ?)', 1, 'a', 100);
+call insertBinaryColumn('insert into x values (4, ?, 4, ?)', 1, 'a', 1000);
+call insertBinaryColumn('insert into x values (5, ?, 5, ?)', 1, 'a', 10000);
+call insertBinaryColumn('insert into x values (6, ?, 6, ?)', 1, 'a', 32700);
+call insertBinaryColumn('insert into x values (7, ?, 7, ?)', 1, 'a', 32699);
+call insertBinaryColumn('insert into x values (8, ?, 8, ?)', 1, 'a', 16384);
+call insertBinaryColumn('insert into x values (9, ?, 9, ?)', 1, 'a', 16383);
+call insertBinaryColumn('insert into x values (10, ?, 10, ?)', 1, 'a', 0);
+call insertBinaryColumn('insert into x values (11, ?, 11, ?)', 1, 'a', 666);
+
+select x, length(c1) from x order by 1;
+
+update x set x = x+1;
+select x, length(c1) from x order by 1;
+
+update x set x = null;
+select x, length(c1) from x order by 2;
+
+insert into x select * from x;
+select x, length(c1) from x order by 2;
+
+delete from x;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+usedefaults=true
+jvmflags=-ms32M -mx128M

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerStream_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,2 @@
+derby.infolog.append=true
+derby.locks.waitTimeout=4

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ungroupedAggregatesNegative.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ungroupedAggregatesNegative.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,25 @@
+-- negative tests for ungrouped aggregates
+
+-- create a table
+create table t1 (c1 int);
+create table t2 (c1 int);
+insert into t2 values 1,2,3;
+
+-- mix aggregate and non-aggregate expressions in the select list
+select c1, max(c1) from t1;
+select c1 * max(c1) from t1;
+
+-- aggregate in where clause
+select c1 from t1 where max(c1) = 1;
+
+-- aggregate in ON clause of inner join
+select * from t1 join t1 as t2 on avg(t2.c1) > 10;
+
+-- correlated subquery in select list
+select max(c1), (select t2.c1 from t2 where t1.c1 = t2.c1) from t1;
+
+-- noncorrelated subquery that returns more than 1 row
+select max(c1), (select t2.c1 from t2) from t1;
+
+-- drop the table
+drop table t1

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,343 @@
+--
+-- this test shows union functionality
+--
+
+-- create the tables
+create table t1 (i int, s smallint, d double precision, r real, c10 char(10),
+				c30 char(30), vc10 varchar(10), vc30 varchar(30));
+create table t2 (i int, s smallint, d double precision, r real, c10 char(10),
+				c30 char(30), vc10 varchar(10), vc30 varchar(30));
+create table dups (i int, s smallint, d double precision, r real, c10 char(10),
+				c30 char(30), vc10 varchar(10), vc30 varchar(30));
+
+-- populate the tables
+insert into t1 values (null, null, null, null, null, null, null, null);
+insert into t1 values (1, 1, 1e1, 1e1, '11111', '11111     11', '11111',
+	'11111      11');
+insert into t1 values (2, 2, 2e1, 2e1, '22222', '22222     22', '22222',
+	'22222      22');
+
+insert into t2 values (null, null, null, null, null, null, null, null);
+insert into t2 values (3, 3, 3e1, 3e1, '33333', '33333     33', '33333',
+	'33333      33');
+insert into t2 values (4, 4, 4e1, 4e1, '44444', '44444     44', '44444',
+	'44444      44');
+insert into dups select * from t1 union all select * from t2;
+
+-- simple cases
+values (1, 2, 3, 4) union values (5, 6, 7, 8);
+values (1, 2, 3, 4) union values (1, 2, 3, 4);
+
+values (1, 2, 3, 4) union values (5, 6, 7, 8) union values (9, 10, 11, 12);
+values (1, 2, 3, 4) union values (1, 2, 3, 4) union values (1, 2, 3, 4);
+
+select * from t1 union select * from t2;
+select * from t1 union select * from t1;
+select * from t1 union select * from t2 union select * from dups;
+
+select * from t1 union select i, s, d, r, c10, c30, vc10, vc30 from t2;
+select * from t1 union select i, s, d, r, c10, c30, vc10, vc30 from t2
+		union select * from dups;
+
+-- derived tables
+select * from (values (1, 2, 3, 4) union values (5, 6, 7, 8)) a;
+select * from (values (1, 2, 3, 4) union values (5, 6, 7, 8) union
+			   values (1, 2, 3, 4)) a;
+
+-- mix unions and union alls
+select i from t1 union select i from t2 union all select i from dups;
+(select i from t1 union select i from t2) union all select i from dups;
+select i from t1 union (select i from t2 union all select i from dups);
+select i from t1 union all select i from t2 union select i from dups;
+(select i from t1 union all select i from t2) union select i from dups;
+select i from t1 union all (select i from t2 union select i from dups);
+
+
+-- joins
+select a.i, b.i from t1 a, t2 b union select b.i, a.i from t1 a, t2 b;
+values (9, 10) union 
+	select a.i, b.i from t1 a, t2 b union select b.i, a.i from t1 a, t2 b;
+select a.i, b.i from t1 a, t2 b union 
+	select b.i, a.i from t1 a, t2 b union values (9, 10);
+
+-- non-correlated subqueries
+
+-- positive tests
+select i from t1 where i = (values 1 union values 1);
+select i from t1 where i = (values 1 union values 1 union values 1);
+
+-- expression subquery
+select i from t1 where i = (select 1 from t2 union values 1);
+
+-- in subquery
+select i from t1 where i in (select i from t2 union values 1 union values 2);
+select i from t1 where i in 
+		(select a from (select i from t2 union values 1 union values 2) a (a));
+
+-- not in subquery
+select i from t1 where i not in (select i from t2 union values 1 union values 2);
+select i from t1 where i not in (select i from t2 where i is not null union 
+								 values 1 union values 22);
+select i from t1 where i not in 
+		(select a from (select i from t2 where i is not null union 
+						values 111 union values 2) a (a));
+
+-- correlated union subquery
+select i from t1 a where i in (select i from t2 where 1 = 0 union 
+							   select a.i from t2 where a.i < i);
+select i from t1 a where i in (select a.i from t2 where a.i < i union 
+							   select i from t2 where 1 < 0);
+
+-- exists subquery
+select i from t1 where exists (select * from t2 union select * from t2);
+select i from t1 where exists (select 1 from t2 union select 2 from t2);
+select i from t1 where exists (select 1 from t2 where 1 = 0 union 
+							   select * from t2 where t1.i < i);
+select i from t1 where exists (select i from t2 where t1.i < i union 
+							    select * from t2 where 1 = 0 union 
+							   select * from t2 where t1.i < i union 
+							    select i from t2 where 1 = 0);
+
+-- order by tests
+select i from t1 union select i from dups order by i desc;
+select i, s from t1 union select s as i, 1 as s from dups order by s desc, i;
+
+-- insert tests
+create table insert_test (i int, s smallint, d double precision, r real,
+	c10 char(10), c30 char(30), vc10 varchar(10), vc30 varchar(30));
+
+-- simple tests
+insert into insert_test select * from t1 union select * from dups;
+select * from insert_test;
+delete from insert_test;
+
+insert into insert_test (s, i) values (2, 1) union values (4, 3);
+select * from insert_test;
+delete from insert_test;
+
+-- test type dominance/length/nullability
+insert into insert_test (vc30) select vc10 from t1 union select c30 from t2;
+select * from insert_test;
+delete from insert_test;
+insert into insert_test (c30)
+	select vc10 from t1
+	union
+	select c30 from t2
+	union
+	select c10 from t1;
+select * from insert_test;
+delete from insert_test;
+
+-- test NormalizeResultSet generation
+select i, d from t1 union select d, i from t2;
+select vc10, c30 from t1 union select c30, vc10 from t2;
+
+create table insert_test2 (s smallint not null, vc30 varchar(30) not null);
+-- the following should fail due to null constraint
+insert into insert_test2 select s, c10 from t1 union select s, c30 from t2;
+select * from insert_test2;
+
+-- negative tests
+-- ? in select list of union
+select ? from insert_test union select vc30 from insert_test;
+select vc30 from insert_test union select ? from insert_test;
+-- DB2 requires matching target and result column for insert
+insert into insert_test values (1, 2) union values (3, 4);
+
+-- try some unions of different types.  
+-- types should be ok if comparable.
+values (1) union values (1.1);
+values (1) union values (1.1e1);
+values (1.1) union values (1);
+values (1.1e1) union values (1);
+
+-- negative cases
+values (x'aa') union values (1);
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table dups;
+drop table insert_test;
+drop table insert_test2;
+--
+-- this test shows the current supported union all functionality
+--
+-- RESOLVE - whats not tested
+--	type compatability
+--  nullability of result
+--  type dominance
+--  correlated subqueries
+--  table constructors
+
+-- create the tables
+create table t1 (i int, s smallint, d double precision, r real, c10 char(10),
+				 c30 char(30), vc10 varchar(10), vc30 varchar(30));
+create table t2 (i int, s smallint, d double precision, r real, c10 char(10),
+				 c30 char(30), vc10 varchar(10), vc30 varchar(30));
+
+-- populate the tables
+insert into t1 values (null, null, null, null, null, null, null, null);
+insert into t1 values (1, 1, 1e1, 1e1, '11111', '11111     11', '11111',
+	'11111      11');
+insert into t1 values (2, 2, 2e1, 2e1, '22222', '22222     22', '22222',
+	'22222      22');
+
+insert into t2 values (null, null, null, null, null, null, null, null);
+insert into t2 values (3, 3, 3e1, 3e1, '33333', '33333     33', '33333',
+	'33333      33');
+insert into t2 values (4, 4, 4e1, 4e1, '44444', '44444     44', '44444',
+	'44444      44');
+
+-- negative tests
+
+-- non matching number of columns
+select * from t1 union all select * from t1, t2;
+select * from t1 union all values (1, 2, 3, 4);
+values (1, 2, 3, 4) union all select * from t1;
+
+-- simple cases
+values (1, 2, 3, 4) union all values (5, 6, 7, 8);
+values (1, 2, 3, 4) union all values (5, 6, 7, 8) union all values (9, 10, 11, 12);
+select * from t1 union all select * from t2;
+select * from t1 union all select i, s, d, r, c10, c30, vc10, vc30 from t2;
+
+-- derived tables
+select * from (values (1, 2, 3, 4) union all values (5, 6, 7, 8)) a;
+select * from (values (1, 2, 3, 4) union all values (5, 6, 7, 8)) a (a, b, c, d);
+select b, d from (values (1, 2, 3, 4) union all values (5, 6, 7, 8)) a (a, b, c, d);
+select * from (select i, s, c10, vc10 from t1 union all select i, s, c10, vc10 from t2) a;
+select * from (select i, s, c10, vc10 from t1 union all 
+			   select i, s, c10, vc10 from t2) a (j, k, l, m), 
+			   (select i, s, c10, vc10 from t1 union all 
+			   select i, s, c10, vc10 from t2) b (j, k, l, m)
+where a.j = b.j;
+
+-- joins
+select a.i, b.i from t1 a, t2 b union all select b.i, a.i from t1 a, t2 b;
+values (9, 10) union all 
+	select a.i, b.i from t1 a, t2 b union all select b.i, a.i from t1 a, t2 b;
+select a.i, b.i from t1 a, t2 b union all 
+	select b.i, a.i from t1 a, t2 b union all values (9, 10);
+
+-- incompatible types
+select date('9999-11-11') from t1 union all select time('11:11:11') from t2;
+
+-- non-correlated subqueries
+
+-- negative tests
+
+-- select * in subquery
+select i from t1 where i = (select * from t2 union all select 1 from t1);
+select i from t1 where i = (select 1 from t2 union all select * from t1);
+
+-- too many columns
+select i from t1 where i = (values (1, 2, 3) union all values (1, 2, 3));
+select i from t1 where i = (select i, s from t2 union all select i, s from t1);
+
+-- cardinality violation
+select i from t1 where i = (values 1 union all values 1);
+
+-- both sides of union have same type, which is incompatible with LHS
+select i from t1 where i in (select date('1999-02-04') from t2 union all select date('1999-03-08') from t2);
+
+-- positive tests
+
+-- expression subquery
+select i from t1 where i = (select i from t2 where 1 = 0 union all values 1);
+
+-- in subquery
+select i from t1 where i in (select i from t2 union all values 1 union all values 2);
+select i from t1 where i in 
+		(select a from (select i from t2 union all values 1 union all values 2) a (a));
+
+-- not in subquery
+select i from t1 where i not in (select i from t2 union all values 1 union all values 2);
+select i from t1 where i not in (select i from t2 where i is not null union all 
+								 values 1 union all values 22);
+select i from t1 where i not in 
+		(select a from (select i from t2 where i is not null union all 
+						values 111 union all values 2) a (a));
+
+-- correlated union subquery
+select i from t1 a where i in (select i from t2 where 1 = 0 union all
+							   select a.i from t2 where a.i < i);
+select i from t1 a where i in (select a.i from t2 where a.i < i union all
+							   select i from t2 where 1 < 0);
+
+-- exists subquery
+select i from t1 where exists (select * from t2 union all select * from t2);
+select i from t1 where exists (select 1 from t2 union all select 2 from t2);
+select i from t1 where exists (select 1 from t2 where 1 = 0 union all
+							   select * from t2 where t1.i < i);
+select i from t1 where exists (select i from t2 where t1.i < i union all
+							    select * from t2 where 1 = 0 union all
+							   select * from t2 where t1.i < i union all
+							    select i from t2 where 1 = 0);
+
+-- insert tests
+create table insert_test (i int, s smallint, d double precision, r real, c10 char(10),
+				 c30 char(30), vc10 varchar(10), vc30 varchar(30));
+
+-- simple tests
+insert into insert_test select * from t1 union all select * from t2;
+select * from insert_test;
+delete from insert_test;
+
+insert into insert_test (s, i) values (2, 1) union all values (4, 3);
+select * from insert_test;
+delete from insert_test;
+
+-- type conversions between union all and target table
+insert into insert_test select s, i, r, d, vc10, vc30, c10, c30 from t1 union all
+						select s, i, r, d, vc10, vc30, c10, vc30 from t2;
+select * from insert_test;
+delete from insert_test;
+
+-- test type dominance/length/nullability
+select vc10 from t1 union all select c30 from t2;
+insert into insert_test (vc30) select vc10 from t1 union all select c30 from t2;
+select * from insert_test;
+delete from insert_test;
+insert into insert_test (c30)
+	select vc10 from t1
+	union all
+	select c30 from t2
+	union all
+	select c10 from t1;
+select * from insert_test;
+delete from insert_test;
+
+-- test NormalizeResultSet generation
+select i, d from t1 union all select d, i from t2;
+select vc10, c30 from t1 union all select c30,  vc10 from t2;
+
+create table insert_test2 (s smallint not null, vc30 varchar(30) not null);
+-- the following should fail due to null constraint
+insert into insert_test2 select s, c10 from t1 union all select s, c30 from t2;
+select * from insert_test2;
+
+-- negative tests
+-- ? in select list of union
+select ? from insert_test union all select vc30 from insert_test;
+select vc30 from insert_test union all select ? from insert_test;
+-- DB2 requires matching target and result columns
+insert into insert_test values (1, 2) union all values (3, 4);
+
+-- Beetle 4454 - test multiple union alls in a subquery
+select vc10 from (select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1 union all
+select vc10 from t1) t;
+-- force union all on right side
+select vc10 from (select vc10 from t1 union all (select vc10 from t1 union all
+select vc10 from t1)) t;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table insert_test;
+drop table insert_test2;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,19 @@
+-- This tests whether we are prevented from creating more than 15 tables
+-- in the standard (unlimited) version of the product.
+--
+create table t1 (x int);
+create table t2 (x int);
+create table t3 (x int);
+create table t4 (x int);
+create table t5 (x int);
+create table t6 (x int);
+create table t7 (x int);
+create table t8 (x int);
+create table t9 (x int);
+create table t10 (x int);
+create table t11 (x int);
+create table t12 (x int);
+create table t13 (x int);
+create table t14 (x int);
+create table t15 (x int);
+create table t16 (x int);

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited2.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/unlimited2.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,35 @@
+-- This tests whether we are prevented from creating a container with more
+-- than 40k of user data in it in the demo (limited) version of the product.
+--
+run resource 'createTestProcedures.subsql';
+
+create table limits2 (x int, b varchar(4000));
+
+insert into limits2 values (1, PADSTRING('a test',4000));
+insert into limits2 (select limits2.x + 1,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 2,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 4,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 8,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 16, limits2.b from limits2);
+
+-- this one should error.
+insert into limits2 (select limits2.x + 32, limits2.b from limits2);
+
+-- should still be able to see the data, and be able to add one row
+select x from limits2;
+insert into limits2 values (33, PADSTRING('a second test',4000));
+
+
+-- now see if getting an error in the btree causes an error.
+-- Make the btree index only allow 2 rows per 4k page, which will cause
+-- the btree to grow quicker than the heap base table.
+drop table limits2;
+create table limits2 (x int, b varchar(1800));
+create unique index t_idx on limits2 (x, b);
+
+insert into limits2 values (1, PADSTRING('a test',1800));
+insert into limits2 (select limits2.x + 1,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 2,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 4,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 8,  limits2.b from limits2);
+insert into limits2 (select limits2.x + 16, limits2.b from limits2);

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/update.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/update.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,253 @@
+
+--
+-- this test is for basic update functionality
+--
+
+
+
+-- create the table
+create table t1 (int_col int, smallint_col smallint, char_30_col char(30),
+		 varchar_50_col varchar(50));
+create table t2 (int_col int, smallint_col smallint, char_30_col char(30),
+		 varchar_50_col varchar(50));
+
+-- populate t1
+insert into t1 values (1, 2, 'char_30_col', 'varchar_50_col');
+insert into t1 values (null, null, null, null);
+insert into t2 select * from t1;
+select * from t1;
+
+-- update with constants
+update t1 set int_col = 3, smallint_col = 4, char_30_col = 'CHAR_30_COL',
+	      varchar_50_col = 'VARCHAR_50_COL';
+select * from t1;
+update t1 set varchar_50_col = null, char_30_col = null, smallint_col = null,
+	      int_col = null;
+select * from t1;
+
+update t1 set smallint_col = 6, int_col = 5, varchar_50_col = 'varchar_50_col',
+	      char_30_col = 'char_30_col';
+select * from t1;
+
+-- update columns with column values
+update t1 set smallint_col = int_col, int_col = smallint_col,
+	      varchar_50_col = char_30_col, char_30_col = varchar_50_col;
+select * from t1;
+update t1 set int_col = int_col, smallint_col = smallint_col,
+	      char_30_col = char_30_col, varchar_50_col = varchar_50_col;
+select * from t1;
+
+-- Negative test - column in SET clause twice
+update t1 set int_col = 1, int_col = 2;
+
+-- Negative test - non-existent column in SET clause
+update t1 set notacolumn = int_col + 1;
+
+-- target table in source - deferred update
+--
+-- first, populate table
+delete from t1;
+insert into t1 values (1, 1, 'one', 'one');
+insert into t1 values (2, 2, 'two', 'two');
+delete from t2;
+insert into t2 select * from t1;
+
+autocommit off;
+
+select * from t1;
+update t1 set int_col =
+	(select t1.int_col
+	 from t1, t2
+	 where t1.int_col = t2.int_col and t1.int_col = 1);
+select * from t1;
+rollback;
+
+update t1 set int_col =
+	(select
+		(select int_col
+		 from t1
+		 where int_col = 2)
+	 from t2
+	 where int_col = 1);
+select * from t1;
+rollback;
+
+update t1 set int_col =
+	(select 1
+	 from t2
+	 where int_col = 2
+	 and 1 in
+		(select int_col
+		 from t1)
+	);
+select * from t1;
+rollback;
+
+update t1 set int_col =
+	(select int_col
+	 from
+		(select int_col
+		 from t1) a
+	 where int_col = 2);
+select * from t1;
+rollback;
+
+update t1 set int_col =
+	(select int_col
+	 from t2
+	 where int_col = 37
+	union
+	 select int_col
+	 from t1
+	 where int_col = 2);
+select * from t1;
+rollback;
+
+update t1 set int_col =
+	(select int_col
+	 from t2
+	 where int_col = 37
+	union
+	 select int_col
+	 from
+		(select int_col
+		 from t1
+		 where int_col = 2) a
+	);
+select * from t1;
+rollback;
+
+-- single-row deferred update
+update t1 set int_col =
+	(select int_col
+	 from t1
+	 where int_col = 1)
+where int_col = 2;
+select * from t1;
+rollback;
+
+-- zero-row deferred update - degenerate case
+update t1 set int_col =
+	(select int_col
+	 from t1
+	 where int_col = 1)
+where int_col = 37;
+select * from t1;
+rollback;
+
+autocommit on;
+
+-- drop the table
+drop table t1;
+drop table t2;
+
+
+-- Show whether update is statement atomic or not
+create table s (s smallint, i int);
+insert into s values (1, 1);
+insert into s values (1, 65337);
+insert into s values (1, 1);
+select * from s;
+-- this should fail and no rows should change
+update s set s=s+i;
+-- this select should have the same results as the previous one.
+select * from s;
+
+-- Show that the table name can be used on the set column
+update s set s.s=3;
+-- and that it must match the target table
+update s set t.s=4;
+select * from s;
+
+-- do some partial updates
+create table t1 (c1 char(250), c2 varchar(100), c3 varchar(100));
+
+insert into t1 values ('a', 'b', 'c');
+insert into t1 values ('a', 'b', 'c');
+insert into t1 values ('a', 'b', 'c');
+insert into t1 values ('a', 'b', 'c');
+
+update t1 set c1 = '1st';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c2 = '2nd';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c3 = '3rd';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c3 = '4th', c2 = '4th';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c1 = '5th', c3 = '5th';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c2 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c3 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c2 = 'shrink';
+update t1 set c3 = 'shrink';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+update t1 set c2 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
+			c3 = 'expandingxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
+select cast(c1 as char(5)), cast(c2 as char(5)), cast(c3 as char(5)) from t1;
+
+drop table t1;
+create table t1 (c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int);
+insert into t1 values (1,2,3,4,5,6,7,8,9);
+update t1 set c3 = 33, c5 = 55, c6 = 666, c8 = 88;
+select * from t1;
+update t1 set c9 = 99;
+select * from t1;
+
+drop table t1;
+
+--
+-- here we test extra state lying around in the
+-- deleteResultSet on a prepared statement that
+-- is executed multiple times.  if we don't
+-- get a nasty error then we are ok
+--
+create table x (x int, y int);
+create index ix on x(x);
+create index iy on x(y);
+insert into x values (1,1),(2,2),(3,3);
+autocommit off;
+prepare p as 'update x set x = x where x = ? and y = ?';
+execute p using 'values (1,1)';
+execute p using 'values (2,2)';
+commit;
+
+-- test extra state in update 
+get cursor c1 as 'select * from x for update of x';
+prepare p1 as 'update x set x = x where current of c1';
+execute p1;
+next c1;
+execute p1;
+next c1;
+next c1;
+execute p1;
+close c1;
+execute p1;
+
+-- clean up
+autocommit on;
+drop table x;
+
+-- bug 4318, possible deadlock if table first has IX, then X table lock; make
+-- sure you don't have IX table lock and X table lock at the same time
+
+create table tab1 (c1 int not null primary key, c2 int);
+insert into tab1 values (1, 8);
+
+autocommit off;
+
+-- default read committed isolation level
+update tab1 set c2 = c2 + 3 where c1 = 1;
+select type, mode from new org.apache.derby.diag.LockTable() as lockstable where tablename = 'TAB1' order by type;
+rollback;
+
+-- serializable isolation level
+set current isolation to SERIALIZABLE;
+update tab1 set c2 = c2 + 3 where c1 = 1;
+select type, mode from new org.apache.derby.diag.LockTable() as lockstable where tablename = 'TAB1' order by type;
+rollback;
+
+autocommit on;
+drop table tab1;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,384 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+
+import org.apache.derby.tools.ij;
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+  This tests updateable cursor using index, Beetle entry 3865.
+
+  Not done in ij since we need to do many "next" and "update" to be
+  able to excercise the code of creating temp conglomerate for virtual
+  memory heap.  We need at minimum
+  200 rows in table, if "maxMemoryPerTable" property is set to 1 (KB).
+  This includes 100 rows to fill the hash table and another 100 rows
+  to fill the in-memory heap.
+
+ */
+
+public class updateCursor { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	private static Connection conn;
+
+	public static void main(String[] args) {
+		System.out.println("Test updateable cursor using index starting");
+
+		try {
+			// use the ij utility to read the property file and
+			// make the initial connection.
+			ij.getPropertyArg(args);
+			conn = ij.startJBMS();
+
+			conn.setAutoCommit(true);
+
+			setup(true);
+
+			conn.setAutoCommit(false);
+
+			System.out.println("************************************TESTING VIRTUAL MEM HEAP*********");
+			testVirtualMemHeap();
+			System.out.println("************************************TESTING NONCOVERINGINDEX*********");
+			testNonCoveringIndex();
+			System.out.println("************************************TESTING DESC INDEX*********");
+			testDescendingIndex();
+
+			System.out.println("************************************TESTING UPDATE DELETE WARNING*********");
+			testUpdateDeleteWarning();
+
+			teardown();
+
+			conn.close();
+
+		} catch (Throwable e) {
+			System.out.println("FAIL: exception thrown:");
+			JDBCDisplayUtil.ShowException(System.out,e);
+		}
+
+		System.out.println("Test updateable cursor using index finished");
+	}
+
+	static void setup(boolean first) throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		if (first) {
+			verifyCount(
+				stmt.executeUpdate("create table t1 (c1 int, c2 char(50), c3 int, c4 char(50), c5 int, c6 varchar(1000))"),
+				0);
+
+			verifyCount(
+				stmt.executeUpdate("create index i11 on t1 (c3, c1, c5)"),
+				0);
+
+			verifyCount(
+				stmt.executeUpdate("create table t2 (c1 int)"),
+				0);
+
+			verifyCount(
+				stmt.executeUpdate("create table t3(c1 char(20) not null primary key)"),
+				0);
+
+			verifyCount(
+				stmt.executeUpdate("create table t4(c1 char(20) references t3(c1) on delete cascade)"),
+				0);
+		} else {
+			verifyBoolean(
+				stmt.execute("delete from t1"),
+				false);
+		}
+
+		StringBuffer sb = new StringBuffer(1000);
+		for (int i = 0; i < 1000; i++)
+			sb.append('a');
+		String largeString = new String(sb);
+
+		for (int i = 246; i > 0; i = i - 5)
+		{
+			verifyCount(
+			stmt.executeUpdate("insert into t1 values ("
+				+ (i+4) + ", '" + i + "', " + i + ", '" + i + "', " + i + ", '" + largeString + "'), ("
+				+ (i+3) + ", '" + i + "', " + (i+1) + ", '" + i + "', " + i + ", '" + largeString + "'), ("
+				+ (i+2) + ", '" + i + "', " + (i+2) + ", '" + i + "', " + i + ", '" + largeString + "'), ("
+				+ (i+1) + ", '" + i + "', " + (i+3) + ", '" + i + "', " + i + ", '" + largeString + "'), ("
+				+ i + ", '" + i + "', " + (i+4) + ", '" + i + "', " + i + ", '" + largeString + "')"),
+			5);
+		}
+
+		stmt.executeUpdate("insert into t2 values (1)");
+
+		stmt.close();
+
+		System.out.println("PASS: setup complete");
+	}
+
+
+	static void teardown() throws SQLException {
+		Statement stmt = conn.createStatement();
+
+		verifyCount(
+		    stmt.executeUpdate("drop table t1"),
+			0);
+		verifyCount(
+		    stmt.executeUpdate("drop table t2"),
+			0);
+		verifyCount(
+		    stmt.executeUpdate("drop table t4"),
+			0);
+		verifyCount(
+		    stmt.executeUpdate("drop table t3"),
+			0);
+
+		conn.commit();
+		stmt.close();
+
+		System.out.println("PASS: teardown complete");
+	}
+
+	static void verifyCount(int count, int expect) throws SQLException {
+		if (count!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+count+" rows");
+			throw new SQLException("Wrong number of rows returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+count+
+							   (count == 1? " row":" rows"));
+	}
+
+	static void verifyBoolean(boolean got, boolean expect) throws SQLException {
+		if (got!=expect) {
+			System.out.println("FAIL: Expected "+expect+" got "+got);
+			throw new SQLException("Wrong boolean returned");
+		}
+		else
+			System.out.println("PASS: expected and got "+got);
+	}
+
+	static void nextRow(ResultSet r, int which) throws SQLException {
+		verifyBoolean(r.next(), true);
+		if (which == 1)
+			System.out.println("Row: "+r.getInt(1)+","+r.getInt(2));
+		else if (which == 2)
+			System.out.println("Row: "+r.getInt(1)+","+r.getString(2));
+	}
+
+	static boolean ifRow(ResultSet r, int which) throws SQLException {
+		boolean b = r.next();
+
+		if (b)
+		{
+			if (which == 1)
+				System.out.println("Row: "+r.getInt(1)+","+r.getInt(2));
+			else if (which == 2)
+				System.out.println("Row: "+r.getInt(1)+","+r.getString(2));
+		}
+		return b;
+	}
+
+	static void testVirtualMemHeap() throws SQLException {
+		PreparedStatement select;
+		Statement update;
+		ResultSet cursor;
+
+		update = conn.createStatement();
+		select = conn.prepareStatement("select c1, c3 from t1 where c3 > 1 and c1 > 0 for update");
+		cursor = select.executeQuery(); // cursor is now open
+		String cursorName = cursor.getCursorName();
+
+		System.out.println(
+		 "Notice the order in the rows we get: from 2 to 102 asc order on second column (c3)");
+		System.out.println(
+		 "then from 202 down to 103 on that column; then from 203 up to 250.  The reason is");
+		System.out.println(
+		  "we are using asc index on c3, all the rows updated are in the future direction of the");
+		System.out.println(
+		 "index scan, so they all get filled into a hash table.  The MAX_MEMORY_PER_TABLE");
+		System.out.println(
+		 "property determines max cap of hash table 100.  So from row 103 it goes into virtual");
+		System.out.println(
+		 "memory heap, whose in memory part is also 100 entries.  So row 103 to 202 goes into");
+		System.out.println(
+		 "the in-memory part and gets dumped out in reverse order.  Finally Row 203 to 250");
+		System.out.println(
+		 "goes into file system.  Here we mean row ids.");
+
+		for (int i = 0; i < 249; i++)
+		{
+			nextRow(cursor, 1);
+			update.execute("update t1 set c3 = c3 + 250 where current of " + cursorName);
+		}
+		if (! ifRow(cursor, 1))
+			System.out.println("UPDATE WITH VIRTUAL MEM HEAP: got 249 rows");
+		else
+			System.out.println("UPDATE WITH VIRTUAL MEM HEAP FAILED! STILL GOT ROWS");
+		cursor.close();
+		select.close();
+
+		System.out.println("************ See what we have in table:");
+		select = conn.prepareStatement("select c1, c3 from t1");
+		cursor = select.executeQuery(); // cursor is now open
+		for (int i = 0; i < 250; i++)
+			nextRow(cursor, 1);
+		if (! ifRow(cursor, 1))
+			System.out.println("AFTER UPDATE WITH VIRTUAL MEM HEAP: got 250 rows");
+		else
+			System.out.println("UPDATE WITH VIRTUAL MEM HEAP RESULT:FAILED!!! GOT MORE ROWS");
+		conn.rollback();
+	}
+
+	static void testNonCoveringIndex() throws SQLException {
+		PreparedStatement select;
+		Statement update;
+		ResultSet cursor;
+
+		update = conn.createStatement();
+		select = conn.prepareStatement("select c3, c2 from t1 where c3 > 125 and c1 > 0 for update");
+		cursor = select.executeQuery(); // cursor is now open
+		String cursorName = cursor.getCursorName();
+
+		for (int i = 0; i < 125; i++)
+		{
+			nextRow(cursor, 2);
+			update.execute("update t1 set c3 = c3 + 25 where current of " + cursorName);
+		}
+		if (! ifRow(cursor, 2))
+			System.out.println("UPDATE USING NONCOVERING INDEX: got 125 rows");
+		else
+			System.out.println("UPDATE USING NONCOVERING INDEX FAILED! STILL GOT ROWS");
+		cursor.close();
+		select.close();
+
+		System.out.println("************ See what we have in table:");
+		select = conn.prepareStatement("select c1, c3 from t1");
+		cursor = select.executeQuery(); // cursor is now open
+		for (int i = 0; i < 250; i++)
+			nextRow(cursor, 2);
+		if (! ifRow(cursor, 2))
+			System.out.println("AFTER UPDATE USING NONCOVERING INDEX: got 250 rows");
+		else
+			System.out.println("UPDATE USING NONCOVERING INDEX: FAILED!!! GOT MORE ROWS");
+		conn.rollback();
+	}
+
+	static void testDescendingIndex() throws SQLException {
+		PreparedStatement select;
+		Statement update;
+		ResultSet cursor;
+
+		update = conn.createStatement();
+		conn.setAutoCommit(true);
+		verifyCount(
+			update.executeUpdate("drop index i11"),
+			0);
+		verifyCount(
+			update.executeUpdate("create index i11 on t1 (c3 desc, c1, c5 desc)"),
+			0);
+		conn.setAutoCommit(false);
+
+		update = conn.createStatement();
+		select = conn.prepareStatement("select c3, c1 from t1 where c3 > 125 and c1 > 0 for update");
+		cursor = select.executeQuery(); // cursor is now open
+		for (int i = 0; i < 125; i++)
+		{
+			nextRow(cursor, 2);
+			/* mixed direction, half of them (whose change direction is the same as the index
+			 * scan) have to go into the hash table.
+			 */
+			if (i % 2 == 0)
+				update.execute("update t1 set c3 = c3 + 1 where current of " + cursor.getCursorName());
+			else
+				update.execute("update t1 set c3 = c3 - 1 where current of " + cursor.getCursorName());
+		}
+		if (! ifRow(cursor, 2))
+			System.out.println("TEST UPDATE USING DESC INDEX: got 125 rows");
+		else
+			System.out.println("TEST UPDATE USING DESC INDEX FAILED! GOT MORE ROWS");
+		cursor.close();
+		select.close();
+
+		System.out.println("************ See what we have in table:");
+
+		select = conn.prepareStatement("select c3, c2 from t1");
+		cursor = select.executeQuery(); // cursor is now open
+		for (int i = 0; i < 250; i++)
+			nextRow(cursor, 2);
+		if (! ifRow(cursor, 2))
+			System.out.println("TEST UPDATE USING DESC INDEX: got 250 rows");
+		else
+			System.out.println("TEST UPDATE USING DESC INDEX FAILED! GOT MORE ROWS");
+		conn.rollback();
+	}
+
+	static void testUpdateDeleteWarning() throws SQLException {
+		Statement stmt = conn.createStatement();
+		stmt.executeUpdate("update t2 set c1 = 2 where c1 = 1");
+		SQLWarning sw = stmt.getWarnings();
+		if (sw != null)
+			System.out.println("TEST FAILED!  The update should not return a warning.");
+		stmt.executeUpdate("update t2 set c1 = 2 where c1 = 1");
+		sw = stmt.getWarnings();
+		String state, msg;
+		if (sw == null)
+			System.out.println("TEST FAILED!  The update should return a warning.");
+		else
+		{
+			state = sw.getSQLState();
+			if (! state.equals("02000"))
+				System.out.println("TEST FAILED!  Wrong sql state.");
+			msg = sw.getMessage();
+			if (! msg.startsWith("No row was found for FETCH, UPDATE or DELETE"))
+				System.out.println("TEST FAILED!  Wrong message: " + msg);
+		}
+
+		stmt.executeUpdate("delete from t2 where c1 = 2");
+		sw = stmt.getWarnings();
+		if (sw != null)
+			System.out.println("TEST FAILED!  The delete should not return a warning.");
+		stmt.executeUpdate("delete from t2 where c1 = 2");
+		sw = stmt.getWarnings();
+		if (sw == null)
+			System.out.println("TEST FAILED!  The delete should return a warning.");
+		else
+		{
+			state = sw.getSQLState();
+			if (! state.equals("02000"))
+				System.out.println("TEST FAILED!  Wrong sql state.");
+			msg = sw.getMessage();
+			if (! msg.startsWith("No row was found for FETCH, UPDATE or DELETE"))
+				System.out.println("TEST FAILED!  Wrong message: " + msg);
+		}
+
+		stmt.executeUpdate("delete from t3");
+		sw = stmt.getWarnings();
+		if (sw == null)
+			System.out.println("TEST FAILED!  The delete cascade should return a warning.");
+		else
+		{
+			state = sw.getSQLState();
+			if (! state.equals("02000"))
+				System.out.println("TEST FAILED!  Wrong sql state.");
+			msg = sw.getMessage();
+			if (! msg.startsWith("No row was found for FETCH, UPDATE or DELETE"))
+				System.out.println("TEST FAILED!  Wrong message: " + msg);
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/updateCursor_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+derby.language.maxMemoryPerTable=1

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/userDefMethods.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/userDefMethods.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,74 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.lang
+   (C) Copyright IBM Corp. 2002, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.lang;
+import java.sql.*;
+import java.util.Vector;
+
+
+//This class defines miscelanious test java methods to be called from sql.
+//These are not generic methods, typically  used by a particular tests.
+public class userDefMethods
+{
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2002_2004;
+ 
+	//method that does a delete of rows on table t1 based on values from triggers.
+    public static void deleteFromATable() throws SQLException
+    {
+		Connection con = DriverManager.getConnection("jdbc:default:connection");
+        PreparedStatement statement = null;
+        String delStr = null;
+        Statement s = con.createStatement();
+        ResultSet rs = s.executeQuery("SELECT c1 from new org.apache.derby.catalog.TriggerOldTransitionRows() AS EQ");
+        Vector keys = new Vector();
+        while(rs.next()){
+            keys.addElement(new Long(rs.getLong(1)));
+        }
+        rs.close();
+
+        statement = 
+        con.prepareStatement("delete from t1  where c1  = ?");
+        for(int i = 0; i < keys.size() ; i++){ 
+           long key = ((Long)keys.elementAt(i)).longValue();
+           statement.setLong(1, key);
+           statement.executeUpdate();
+		}
+        statement.close();
+    }
+
+
+	public static void deleteFromParent() throws SQLException
+    {
+		Connection con = DriverManager.getConnection("jdbc:default:connection");
+        String sqlstmt;
+		Statement stmt = con.createStatement();
+		sqlstmt = "SELECT a FROM new org.apache.derby.catalog.TriggerOldTransitionRows() AS EQ";
+		ResultSet rs = stmt.executeQuery(sqlstmt);
+		sqlstmt = "delete from parent where a = ? ";
+		PreparedStatement pstmt = con.prepareStatement(sqlstmt);
+		while(rs.next()){
+			long value = rs.getLong(1);
+			if(value == 1 || value == 3)
+				value = 4;
+			else
+				value = 5;
+			pstmt.setLong(1,value);
+			pstmt.executeUpdate();
+		}
+		rs.close();
+		stmt.close();
+		pstmt.close();
+	}
+
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/valuesclause.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/valuesclause.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,309 @@
+
+--
+-- this test is for the values clause functionality
+--
+
+-- create the tables
+create table t1 (i int, j int);
+create table t2 (k int, l int);
+
+-- populate t2
+insert into t2 values (1, 2);
+insert into t2 values (3, 4);
+
+-- negative tests
+values(null);
+values(1,null);
+values(null,1);
+values(null),(1);
+values(1),(null);
+select x from (values(null,1)) as x(x,y);
+select x from (values(1,null)) as x(x,y);
+select x from (values null) as x(x);
+
+-- empty values clause
+values();
+
+-- positive tests
+
+-- single value
+values 1;
+values (1);
+insert into t1 values (1, null);
+select * from t1;
+delete from t1;
+
+-- multiple values
+values (1, 2, 3);
+
+-- values in derived table
+select * from (values (1, 2, 3)) a;
+select a, b from (values (1, 2, 3)) a (a, b, c);
+select * from (values (1, 2, 3)) a, (values (4, 5, 6)) b;
+select * from t2, (values (1, 2, 3)) a;
+select * from (values (1, 2, 3)) a (a, b, c), t2 where l = b;
+
+-- subquery in values clause
+values (select k from t2 where k = 1);
+values (2, (select k from t2 where k = 1));
+values ((select k from t2 where k = 1), 2);
+values ((select k from t2 where k = 1), (select l from t2 where l = 4));
+insert into t1 values ((select k from t2 where k = 1), (select l from t2 where l = 4));
+select * from t1;
+delete from t1;
+
+-- values clause in set clause
+update t2 set k = (values 5) where l = 2;
+select * from t2;
+-- k should be set to null
+update t2 set k = (values (select 2 from t2 where l = 5));
+select * from t2;
+
+-- table constructor tests
+
+-- negative tests
+
+-- non-matching # of elements
+values 1, (2, 3), 4;
+values (2, 3), (4, 5, 6);
+
+-- empty element
+values 1, , 2;
+
+-- all ? parameters in a column position
+prepare v1 as 'values (1, ?, 2), (3, ?, 4), (5, ?, 7)';
+
+-- positive tests
+
+values 1, 2, 3;
+values (1, 2, 3), (4, 5, 6);
+
+prepare v2 as 'values (1, 1, ?), (1e0, ?, ''abc''), (?, 0, ''def'')';
+execute v2 using 'values (''ghi'', 1, 2)';
+execute v2 using 'values (cast(null as char(3)), cast(null as smallint), cast(null as float))';
+remove v2;
+
+-- type precedence tests. tinyint not supported by DB2 Cloudscape
+values (1 = 1.2);
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1.2 = 1);
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1 = cast(1 as bigint));
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1 = cast(1 as smallint));
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (cast(1 as bigint) = 1);
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (cast(1 as smallint) = 1);
+
+-- inserts
+create table insert_test1 (c1 int);
+create table insert_test2 (i int, s smallint, d double precision, r real,
+						  c10 char(10), c30 char(30), vc10 varchar(10), vc30 varchar(30));
+
+insert into insert_test1 values 1, 2, 3;
+select * from insert_test1;
+delete from insert_test1;
+
+insert into insert_test1 values 1, null, 3;
+select * from insert_test1;
+delete from insert_test1;
+
+insert into insert_test2 values (1, 1, 1e1, 1e1, '111', '1111111111', '111', '111111111'),
+								(2, 2, 2e2, 2e2, '222', '2222222222', '222', '222222222'),
+								(3, 3, 3e3, 3e3, '333', '3333333333', '333', '333333333');
+
+select * from insert_test2;
+delete from insert_test2;
+
+insert into insert_test2 values (1, 1, null, null, null, null, null, null),
+								(2, 2, null, null, null, null, null, null),
+								(3, 3, null, null, null, null, null, null);
+select * from insert_test2;
+delete from insert_test2;
+
+insert into insert_test2 values (1, null, null, null, null, null, null, null),
+								(null, 2, null, null, null, null, null, null),
+								(3, null, null, null, null, null, null, null);
+select * from insert_test2;
+delete from insert_test2;
+
+insert into insert_test2 (r, d) values (1e2, 1e1),
+									   (2e2, 2e1),
+									   (3e2, 3e1);
+select * from insert_test2;
+delete from insert_test2;
+
+prepare v3 as 'insert into insert_test2 values (1, 1, ?, 1e1, ''111'', ''1111111111'', ''111'', ''111111111''),
+								(2, 2, 2e2, 2e2, ''222'', ?, ''222'', ''222222222''),
+								(3, 3, 3e3, ?, ''333'', ''3333333333'', ''333'', ''333333333'')';
+
+execute v3 using 'values (1e1, ''2222222222'', 3e3)';
+execute v3 using 'values (cast(null as float), cast(null as char(10)), cast(null as real))';
+
+remove v3;
+
+-- insert with a table constructor with all ?s in one column
+prepare v4 as 'insert into insert_test2 values (?, null, null, null, null, null, null, null),
+				(?, null, null, null, null, null, null, null),
+				(?, null, null, null, null, null, null, null)';
+execute v4 using 'values (10, 20, 30)';
+select * from insert_test2;
+remove v4;
+
+delete from insert_test2;
+
+-- negative test - all ?s in one column
+prepare v3 as 'values (1, ?, ?, 1e1, ''111'', ''1111111111'', ''111'', ''111111111''),
+								(2, ?, 2e2, 2e2, ''222'', ?, ''222'', ''222222222''),
+								(3, ?, 3e3, ?, ''333'', ''3333333333'', ''333'', ''333333333'')';
+
+-- values clause with a subquery in a derived table (bug 2335)
+create table x(x int);
+insert into x values 1, 2, 3, 4;
+select * from (values (1, (select max(x) from x), 1)) c;
+select * from x, (values (1, (select max(x) from x), 1)) c(a, b, c) where x = c;
+drop table x;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table insert_test1;
+drop table insert_test2;
+
+--- supporting <TABLE> in table expression.
+create table target (a int, b int);
+create index idx on target(b);
+insert into target values (1, 2), (2, 3), (0, 2);
+
+create table sub (a int, b int);
+insert into sub values (1, 2), (2, 3), (2, 4);
+
+select *
+from (select b from sub) as q(b);
+
+select *
+from table (select b from sub) as q(b);
+
+select *
+from table (select * from table (select b from sub) as q(b)) as p(a);
+
+select *
+from table (select b from sub) as q(b), target;
+
+select *
+from table (select b from sub) as q(b), target where q.b = target.b;
+
+select *
+from target, table (select b from sub) as q(b);
+
+select *
+from  (values (1)) as q(a);
+
+select *
+from  table (values (1)) as q(a), table (values ('a'), ('b'), ('c')) as p(a);
+
+-- should fail because <TABLE> can appear in front of derived table
+select *
+from  table target;
+
+select *
+from  table (target);
+
+select *
+from  table (target as q);
+
+drop table sub;
+drop table target;
+
+
+-- negative tests
+create table t1 (c1 int);
+insert into t1 values 1;
+
+-- boolean expression IS disallowed in values or select clause
+select nullif(c1, 1) is null from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 is null;
+
+-- boolean expression =, >, >=, <, <= disallowed in values or select clause
+values 1 = 1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 1 = 1 from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (nullif('abc','a') = 'abc');
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select (nullif('abc','a') = 'abc') from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select c11 = any (select c11 from t1) from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 2 > 1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 2 > 1 from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 2 >= 1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 2 >= 1 from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 < 2;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 1 < 2 from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 <= 2;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select 1 <= 2 from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1>1);
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select (c1 < 2) from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values (1 between 2 and 5);
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select (c1 between 1 and 3) from t1;
+
+-- boolean expression LIKE disallowed in values and select clause
+prepare ll1 as 'values ''asdf'' like ?';
+prepare ll1 as 'select ''asdf'' like ? from t1';
+prepare ll15 as 'values ''%foobar'' like ''Z%foobar'' escape ?';
+prepare ll15 as 'select ''%foobar'' like ''Z%foobar'' escape ? from t1';
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values '%foobar' like '%%foobar' escape '%';	
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select '_foobar' like '__foobar' escape '_' from t1;	
+prepare ll4 as 'values org.apache.derbyTesting.functionTests.tests.lang.CharUTF8::getMaxDefinedCharAsString() like ?';
+
+-- boolean expression INSTANCEOF disallowed in values and select clause
+values 1 instanceof int;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 instanceof java.lang.Integer between false and true;
+
+-- boolean expression EXISTS disallowed in values and select clause
+select exists (values 1) from t1;
+values exists (values 2);
+
+-- boolean expression EXISTS diallowed in update set clause too
+update t1 set c11 = exists(values 1);
+
+-- ?: not supported anymore
+values not true ? false : true;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select not true ? false : true from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values 1 ? 2 : 3;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select c1 is null ? true : false from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select new java.lang.Integer(c1 is null ? 0 : c1) from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select c1, (c1=1? cast(null as int) : c1) is null from t1;
+
+-- try few tests in cloudscape mode for boolean expressions in values or select clause
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values new java.lang.String() = '';
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+values new java.lang.String('asdf') = 'asdf';
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select new java.lang.String() = '' from t1;
+-- this test runs in SPS mode too, hence adding a comment line before the sql, so we get correct column number in error message in both SPS and non-SPS mode
+select new java.lang.String('asdf') = 'asdf' from t1;
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,165 @@
+-- tests for views
+
+-- set autocommit off
+autocommit off;
+
+-- create some tables
+create table t1(i int, s smallint, f float, dp double precision);
+create table t2(i int, s smallint, f float, dp double precision);
+create table insert_test (f float);
+
+-- create some views
+create view sv1 (s_was_i, dp_was_s, i_was_f, f_was_dp) as
+select * from t1;
+create view sv2 as select * from t1;
+create view sv3 as select dp, f from t1 where i = s;
+create view sv4(i) as values 1, 2, 3;
+create view sv5 (c1) as select * from sv4;
+
+create view cv1 (t1_i, t2_s, t1_f, t2_dp) as
+select t1.i, t2.s, t1.f, t2.dp from t1, t2 where t1.i between t2.s and t2.i;
+create view cv2 as select * from sv1, sv3 where dp = f_was_dp;
+create view cv3(i,s,f,dp) as select i, s, f, dp from sv2 union
+				   select dp_was_s, s_was_i, f_was_dp, i_was_f from sv1;
+create view cv4 (distinct_i) as select distinct i from t1;
+create view cv5(i,s) as select * from (select i, s from cv3 where i = s) xyz;
+create view cv6 (c1, c2) as select a.c1 as x, b.c1 as y from sv5 a, sv5 b 
+where a.c1 <> b.c1;
+create view cv7 as select t.i, v.c1 from t1 t, cv6 v where t.i = v.c1;
+create view cv8(col1, col2) as select 'Column 1',  'Value = ' || cast(c1 as char(5)) from cv7
+		where 1 in (select i from sv5);
+
+-- populate the tables
+insert into t1 values (1, 1, 1.0, 1.0);
+insert into t1 values (1, 2, 3.0, 4.0);
+insert into t1 values (8, 7, 6.0, 5.0);
+
+insert into t2 values (1, 1, 1.0, 1.0);
+insert into t2 values (1, 2, 3.0, 4.0);
+insert into t2 values (8, 7, 6.0, 5.0);
+
+-- negative tests
+
+-- view with a parameter
+create view vneg as select * from t1 where i = ?;
+
+-- drop view on table
+drop view t1;
+
+-- drop table on view
+drop table sv1;
+
+-- views and tables share same name space
+create view sv1(i) as values 1;
+create table sv1 (c1 int);
+create view t1(i) as values 1;
+
+-- drop non-existant view
+drop view notexists;
+
+-- duplicate column name in view's column list
+create view shouldntwork (c1, c2, c1) as select i, s, f from t1;
+
+-- # of columns in view's column list does not match that in view definition
+create view shouldntwork (c1, c2, c3) as select i, s from t1;
+create view shouldntwork (c1, c2, c3) as select i, s, f, dp from t1;
+
+-- try to drop a table out from under a view
+drop table t1;
+drop table t2;
+
+-- try to drop a view out from under another view
+drop view sv1;
+drop view sv3;
+
+-- try to drop a view out from under a cursor
+get cursor c1 as 'select * from cv8';
+drop view cv8;
+drop view sv5;
+drop view sv4;
+close c1;
+
+-- view updateability
+-- (No views are currently updateable)
+insert into sv1 values 1;
+delete from sv1;
+update sv1 set s_was_i = 0;
+get cursor c2 as 'select * from sv1 for update of s_was_i';
+
+-- create index on a view
+create index i1 on sv2(i);
+
+
+-- positive tests
+select * from sv1;
+select * from sv2;
+select * from sv3;
+select * from sv4;
+select * from sv5;
+
+select * from cv1;
+select * from cv2;
+select * from cv3;
+select * from cv4 order by 1;
+select * from cv5;
+select * from cv6;
+select * from cv7;
+select * from cv8;
+
+select * from (select * from cv3) x order by 1,2;
+select * from (select * from cv4) x order by 1;
+select * from (select * from cv5) x;
+
+-- verify that we can create and drop indexes on underlying tables
+create index i on t1(i);
+drop index i;
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+
+-- test inserts from a view
+insert into insert_test select * from sv5;
+select * from insert_test;
+
+-- drop the views
+drop view cv8;
+drop view cv7;
+drop view cv6;
+drop view cv5;
+drop view cv4;
+drop view cv3;
+drop view cv2;
+drop view cv1;
+drop view sv5;
+drop view sv4;
+drop view sv3;
+drop view sv2;
+drop view sv1;
+
+-- drop the tables
+drop table t1;
+drop table t2;
+drop table insert_test;
+
+-- verify the consistency of the indexes on the system catalogs
+select tablename, SYSCS_UTIL.SYSCS_CHECK_TABLE('SYS', tablename)
+from sys.systables where tabletype = 'S' and tablename != 'SYSDUMMY1';
+
+-- bug 2745
+CREATE TABLE orgtable (
+	name VARCHAR(255),
+	supervisorname VARCHAR(255),
+	jobtitle VARCHAR(255)
+);
+
+CREATE VIEW orgview AS
+    SELECT name, supervisorname, jobtitle FROM orgtable;
+
+SELECT name,jobtitle FROM orgview WHERE name IN (SELECT supervisorname FROM orgview WHERE name LIKE 'WYATT%');
+
+drop view orgview;
+drop table orgtable;
+
+-- reset autocommit
+autocommit on;

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,3571 @@
+-- This test is an adaptation of the Wisconsin benchmark, as documented in
+-- The Benchmark Handbook, Second Edition (edited by Jim Gray).  The structure
+-- of the tables and the data in the tables are taken from there.
+--
+-- The original benchmark talks about clustered and non-clustered
+-- indexes - as far as I can tell, this really means indexes where the
+-- row ordering is or is not the same as in the base table.  It does
+-- not mean special types of indexes.  I am putting in queries that
+-- use both ordered and unordered indexes, despite the fact that
+-- our optimizer does not currently distinguish these cases.
+--
+-- Another difference is that the original Wisconsin benchmark is a performance
+-- test, while this test is only intended to ensure that the optimizer comes
+-- up with the right query plan.  Therefore, this test doesn't include those
+-- parts of the Wisconsin benchmark where the optimizer has no choice of
+-- access path (e.g. single-table query with no indexes), nor does it include
+-- the projection and update queries.
+--
+-- This test only does the first variation of each query, since that is
+-- all that is documented in The Benchmark Handbook (it wouldn't be a true
+-- academic reference text if everything were spelled out).
+--
+-- After the original Wisconsin queries are a bunch of queries that use the
+-- Wisconsin schema but that were written at Cloudscape specifically for
+-- testing our optimizer.
+
+autocommit off;
+
+set isolation serializable;
+-- the method refers to a method in performance suite that takes a Connection.
+--create function WISCInsert(rowcount int, tableName varchar(20)) returns int language java parameter style java external name 'org.apache.derbyTesting.functionTests.tests.lang.WiscVTI';
+CREATE PROCEDURE WISCINSERT(rowcount int, tableName varchar(20)) LANGUAGE JAVA PARAMETER STYLE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.tests.lang.WiscVTI.WISCInsertWOConnection';
+
+create table TENKTUP1 (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52) not null,
+		stringu2 char(52) not null,
+		string4 char(52)
+	);
+
+--insert 10000 rows into TENKTUP1 
+call WISCINSERT( 10000, 'TENKTUP1'); 
+
+create unique index TK1UNIQUE1 on TENKTUP1(unique1);
+create unique index TK1UNIQUE2 on TENKTUP1(unique2);
+create index TK1TWO on TENKTUP1(two);
+create index TK1FOUR on TENKTUP1(four);
+create index TK1TEN on TENKTUP1(ten);
+create index TK1TWENTY on TENKTUP1(twenty);
+create index TK1ONEPERCENT on TENKTUP1(onePercent);
+create index TK1TWENTYPERCENT on TENKTUP1(twentyPercent);
+create index TK1EVENONEPERCENT on TENKTUP1(evenOnePercent);
+create index TK1ODDONEPERCENT on TENKTUP1(oddOnePercent);
+create unique index TK1STRINGU1 on TENKTUP1(stringu1);
+create unique index TK1STRINGU2 on TENKTUP1(stringu2);
+create index TK1STRING4 on TENKTUP1(string4);
+
+create table TENKTUP2 (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+
+-- insert 10000 rows into TENKTUP2
+call WISCInsert( 10000, 'TENKTUP2'); 
+
+create unique index TK2UNIQUE1 on TENKTUP2(unique1);
+create unique index TK2UNIQUE2 on TENKTUP2(unique2);
+
+create table ONEKTUP (
+		unique1 int not null,
+		unique2 int not null,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+
+-- insert 1000 rows into ONEKTUP
+call WISCInsert( 1000, 'ONEKTUP'); 
+
+create unique index ONEKUNIQUE1 on ONEKTUP(unique1);
+create unique index ONEKUNIQUE2 on ONEKTUP(unique2);
+
+create table BPRIME (
+		unique1 int,
+		unique2 int,
+		two int,
+		four int,
+		ten int,
+		twenty int,
+		onePercent int,
+		tenPercent int,
+		twentyPercent int,
+		fiftyPercent int,
+		unique3 int,
+		evenOnePercent int,
+		oddOnePercent int,
+		stringu1 char(52),
+		stringu2 char(52),
+		string4 char(52)
+	);
+
+insert into BPRIME
+select * from TENKTUP2
+where TENKTUP2.unique2 < 1000;
+
+commit;
+
+call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);
+maximumdisplaywidth 8000;
+
+-- Wisconsin Query 3
+
+get cursor c as
+	'select * from TENKTUP1
+	where unique2 between 0 and 99';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 4
+
+get cursor c as
+	'select * from TENKTUP1
+	where unique2 between 792 and 1791';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 5
+get cursor c as
+	'select * from TENKTUP1
+	where unique1 between 0 and 99';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 6
+get cursor c as
+	'select * from TENKTUP1
+	where unique1 between 792 and 1791';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 7
+get cursor c as
+	'select *
+	from TENKTUP1
+	where unique2 = 2001';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 12
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP2.unique2 < 1000)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 13
+get cursor c as
+	'select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique2 = BPRIME.UNIQUE2)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin query 14
+-- NOTE: This could benefit from transitive closure, which our optimizer
+-- doesn't do (yet).
+-- Note that after fix for optimizer bug 5868, in runtime statistics info, we will see 2 qualifiers for table TENKTUP2. This is because as fix for
+-- bug 5868, while getting rid of a redundant predicate which is a start and/or stop AND a qualifier, we mark the predicate we are going to keep 
+-- as start and/or stop AND as a qualifier. Prior to fix of bug 5868, we were disregarding the qualifier flag on the redundant predicate if it 
+-- was a start and/or stop predicate too.
+get cursor c as
+	'select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique2 = TENKTUP1.unique2)
+	and (TENKTUP1.unique2 = TENKTUP2.unique2)
+	and (TENKTUP1.unique2 < 1000)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 15
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 16
+get cursor c as
+	'select * from TENKTUP1, BPRIME
+	where (TENKTUP1.unique1 = BPRIME.unique1)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Wisconsin Query 17
+
+-- NOTE: This could benefit from transitive closure, which our optimizer
+-- doesn't do (yet).
+-- Note that after fix for optimizer bug 5868, in runtime statistics info, we will see 2 qualifiers for table TENKTUP2. This is because as fix for
+-- bug 5868, while getting rid of a redundant predicate which is a start and/or stop AND a qualifier, we mark the predicate we are going to keep 
+-- as start and/or stop AND as a qualifier. Prior to fix of bug 5868, we were disregarding the qualifier flag on the redundant predicate if it 
+-- was a start and/or stop predicate too.
+
+get cursor c as
+	'select * from ONEKTUP, TENKTUP1, TENKTUP2
+	where (ONEKTUP.unique1 = TENKTUP1.unique1)
+	and (TENKTUP1.unique1 = TENKTUP2.unique1)
+	and (TENKTUP1.unique1 < 1000)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- This is the end of the Wisconsin queries.  Now do some queries that are
+-- not part of the original Wisconsin benchmark, using the Wisconsin schema.
+
+-- Single-table queries using index on column 'two'
+
+-- 50% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 50% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two = 3';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 100% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where two >= 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where two > 1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 50% selectivity index that covers query - should do index scan
+get cursor c as
+	'select two from TENKTUP1
+	where two = 1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'four'
+
+-- 25% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four = 4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 75% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where four >= 1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where four > 3';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% selectivity index that covers query - should do index scan
+get cursor c as
+	'select four from TENKTUP1
+	where four = 2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'twentyPercent'
+
+-- 20% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent = 2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 20% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent = 5';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent > 1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twentyPercent > 4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 20% selectivity index that covers query - should do index scan
+get cursor c as
+	'select twentyPercent from TENKTUP1
+	where twentyPercent = 3';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'ten'
+
+-- 10% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where ten = 5';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten = 10';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten <= 4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten <= 5';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where ten > 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10% selectivity index that covers query - should do index scan
+get cursor c as
+	'select ten from TENKTUP1
+	where ten = 7';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'twenty'
+
+-- 5% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where twenty = 17';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty = 20';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty <= 9';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 55% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty <= 10';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where twenty < 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5% selectivity index that covers query - should do index scan
+get cursor c as
+	'select twenty from TENKTUP1
+	where twenty = 19';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'onePercent'
+
+-- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent = 63';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent = 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 49';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 40';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where onePercent > 101';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select onePercent from TENKTUP1
+	where onePercent = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'evenOnePercent'
+
+-- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent = 64';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent = 200';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 99';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 80';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where evenOnePercent > 198';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select evenOnePercent from TENKTUP1
+	where evenOnePercent = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'oddOnePercent'
+
+-- 1% selectivity index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent = 63';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent = 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 40% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 120';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 60% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 80';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where oddOnePercent > 199';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% selectivity index that covers query - should do index scan
+get cursor c as
+	'select oddOnePercent from TENKTUP1
+	where oddOnePercent = 1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'stringu1'
+
+-- unique index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 = ''AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- unique index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 = ''AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 51% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu1 > ''AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- unique index that covers query - should do index scan
+get cursor c as
+	'select stringu1 from TENKTUP1
+	where stringu1 = ''AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'stringu2'
+
+-- unique index that doesn't cover query - should use index
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 = ''AAAAJKLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- unique index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 = ''AAAAZZZxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAHKHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 51% of rows - should do table scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAHOCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where stringu2 > ''AAAAOUPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- unique index that covers query - should do index scan
+get cursor c as
+	'select stringu2 from TENKTUP1
+	where stringu2 = ''AAAAAABxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Single-table queries using index on column 'string4'
+
+-- 25% selectivity index that doesn't cover query - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 = ''AAAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% selectivity index with 0 matching rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 = ''EEEExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 50% of rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 > ''HHHHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- matches 0 rows - should do index scan
+get cursor c as
+	'select * from TENKTUP1
+	where string4 > ''VVVVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% selectivity index that covers query - should do index scan
+get cursor c as
+	'select string4 from TENKTUP1
+	where string4 = ''OOOOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx''';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Now test equijoins with different selectivities and different numbers
+-- of outer rows.  The approach taken is that different join columns are
+-- used, and that TENKTUP1 has indexes on all the joining columns, while
+-- TENKTUP2 does not.  We use the unique1 column of TENKTUP2 to select
+-- different numbers of rows.  The two tables will always appear in the
+-- FROM clause with TENKTUP1 first, and TENKTUP2 second - it is up to
+-- the optimizer to figure out which should come first in the join order.
+
+-- Joins on unique1
+
+-- Join on unique1, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on two
+
+-- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on four
+
+-- Join on four, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on ten
+
+-- Join on ten, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on twenty
+
+-- Join on twenty, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on onePercent
+
+-- Join on onePercent, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on twentyPercent
+
+-- Join on twentyPercent, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on stringu1
+
+-- Join on stringu1, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on string4
+
+-- Join on string4, all rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 60% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 25% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 10% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 5% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 1% of rows in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 1 row in TENKTUP2
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Now do the same equijoin tests, but select only one column from TENKTUP1.
+-- This way, it can choose hash join where appropriate (it avoids it where
+-- it thinks the hash table will take too much memory).
+
+-- Joins on unique1
+
+-- Join on unique1, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on unique1, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.unique1 = TENKTUP2.unique1
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on two
+
+-- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on four
+
+-- Join on four, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on four, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.four = TENKTUP2.four
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on ten
+
+-- Join on ten, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on ten, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.ten = TENKTUP2.ten
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on twenty
+
+-- Join on twenty, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twenty, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twenty = TENKTUP2.twenty
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on onePercent
+
+-- Join on onePercent, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on onePercent, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on twentyPercent
+
+-- Join on twentyPercent, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on twentyPercent, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.twentyPercent = TENKTUP2.twentyPercent
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on stringu1
+
+-- Join on stringu1, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on stringu1, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.stringu1 = TENKTUP2.stringu1
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joins on string4
+
+-- Join on string4, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 6000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 2500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 1000';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 500';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 < 100';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Join on string4, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.string4 = TENKTUP2.string4
+	and TENKTUP2.unique1 = 0';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Test the effect of ORDER BY on access path.  The optimizer takes
+-- the cost of sorting into account, and may choose an access path
+-- in the same order as the ORDER BY, especially if the sort is
+-- expensive.
+--
+-- First try single-table queries.
+
+-- No where clause, try ordering on different indexed columns
+
+get cursor c as
+	'select * from TENKTUP1 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by four';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by ten';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by twenty';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by onePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by twentyPercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by evenOnePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by oddOnePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by stringu1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by stringu2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1 order by string4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Now try the same thing with covering indexes
+
+get cursor c as
+	'select unique1 from TENKTUP1 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select unique2 from TENKTUP1 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select two from TENKTUP1 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select four from TENKTUP1 order by four';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select ten from TENKTUP1 order by ten';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select twenty from TENKTUP1 order by twenty';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select onePercent from TENKTUP1 order by onePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select twentyPercent from TENKTUP1 order by twentyPercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select evenOnePercent from TENKTUP1 order by evenOnePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select oddOnePercent from TENKTUP1 order by oddOnePercent';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select stringu1 from TENKTUP1 order by stringu1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select stringu2 from TENKTUP1 order by stringu2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select string4 from TENKTUP1 order by string4';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Where clause on same column as order by, with different selectivities.
+
+-- 60%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 6000 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 2500 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 1000 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 500 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 100 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- one row
+get cursor c as
+	'select * from TENKTUP1 where unique1 = 0 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Where clause and order by on different columns - non-covering
+
+-- 60%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 6000 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 2500 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 1000 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 500 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1%
+get cursor c as
+	'select * from TENKTUP1 where unique1 < 100 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- one row
+get cursor c as
+	'select * from TENKTUP1 where unique1 = 0 order by unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Where clause and order by on different columns - covering
+
+create index TK1UNIQUE1TWO on TENKTUP1(unique1, two);
+create index TK1TWOUNIQUE1 on TENKTUP1(two, unique1);
+
+-- 60%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 6000 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 2500 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 1000 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 500 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1%
+get cursor c as
+	'select two from TENKTUP1 where unique1 < 100 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- one row
+-- RESOLVE: For some reason, this avoids the sort by choosing the
+-- index on column two, rather than by treating it as a one-row table.
+-- It does not do this if you run the query by itself, outside of this
+-- test.
+get cursor c as
+	'select two from TENKTUP1 where unique1 = 0 order by two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+drop index TK1UNIQUE1TWO;
+
+-- Constant search condition on first column of index, order on second
+-- column.
+get cursor c as
+	'select two, unique1 from TENKTUP1 where two = 0 order by unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Constant search condition on first column of index, order on first and second
+-- columns.
+get cursor c as
+	'select two, unique1 from TENKTUP1 where two = 0 order by two, unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+drop index TK1TWOUNIQUE1;
+
+commit;
+
+-- Now test sort avoidance with joins.
+--
+-- First try two-way joins where the order by column is in only one table
+
+-- Order by column same as joining column
+--
+-- 100% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 60% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- one row from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Order by column different from joining column
+--
+-- 100% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 60% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 25% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 2500
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 10% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 1000
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 5% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 500
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- 1% of rows from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 < 100
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- one row from joining table
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Sort avoidance with joins and order by on columns in different tables
+--
+-- order on joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- order on joining columns with qualifications on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- order on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- order on non-joining columns with qualifications on non-joining columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 2500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 1000
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 500
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 100
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 2500
+	 and TENKTUP2.unique2 < 100
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and TENKTUP1.unique2 < 1000
+	 and TENKTUP2.unique2 < 500
+	 order by TENKTUP1.unique2, TENKTUP2.unique2';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Three-way join, order on columns from only two tables
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 < 6000
+	 and TENKTUP2.unique1 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique1 = 0
+	 and TENKTUP2.unique1 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique1 = TENKTUP2.unique1
+	 and ONEKTUP.unique1 = TENKTUP1.unique1
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Joining columns different from ordering columns
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 < 6000
+	 and TENKTUP2.unique2 < 6000
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2, ONEKTUP
+	 where TENKTUP1.unique2 = TENKTUP2.unique2
+	 and ONEKTUP.unique2 = TENKTUP1.unique2
+	 and TENKTUP1.unique2 = 0
+	 and TENKTUP2.unique2 = 0
+	 order by TENKTUP1.unique1, TENKTUP2.unique1';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Values clause is a single-row result set, so should not cause optimizer
+-- to require sort.
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.unique1, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Try with a join on unique column and order on non-unique column
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.unique1 = t.x
+	 order by TENKTUP1.two, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.two = t.x
+	 order by TENKTUP1.two, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.four = t.x
+	 order by TENKTUP1.four, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.ten = t.x
+	 order by TENKTUP1.ten, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twenty = t.x
+	 order by TENKTUP1.twenty, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.onePercent = t.x
+	 order by TENKTUP1.onePercent, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.tenPercent = t.x
+	 order by TENKTUP1.tenPercent, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.twentyPercent = t.x
+	 order by TENKTUP1.twentyPercent, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+get cursor c as
+	'select * from TENKTUP1, (values 1) as t(x)
+	 where TENKTUP1.fiftyPercent = t.x
+	 order by TENKTUP1.fiftyPercent, t.x';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Test for bug 2307:
+-- Join between primary & foreign keys, w/= clause on foreign tab &
+-- ORDER on indexed col of prim. tab returns rows in wrong order
+
+get cursor c as
+	'select * from TENKTUP1, TENKTUP2
+	 where TENKTUP1.unique1 = TENKTUP2.ten
+	 and TENKTUP2.onePercent = 63
+	 order by TENKTUP1.two';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- Test multi-level outer join
+
+-- Extra-wide output because many tables.
+maximumdisplaywidth 8000;
+get cursor c as
+	'select * from TENKTUP1
+		left outer join TENKTUP2 on
+		(
+			TENKTUP1.unique1 = TENKTUP2.unique1
+		)
+		left outer join ONEKTUP on
+		(
+			TENKTUP2.unique2 = ONEKTUP.unique2
+		)
+		left outer join BPRIME on
+		(
+			ONEKTUP.onePercent = BPRIME.onePercent
+		)';
+close c;
+
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+commit;
+
+-- tests to show selectivity - rowcount estimates
+-- the numbers skip a value for reference to original Cloudscape test cases
+-- with identical queries using properties useStatistics=false.
+-- do simple joins on columns and look at row count/cost.
+
+-- Join on two, all rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two';
+close c;
+-- 1, join on two--all rows
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Join on two, 60% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 6000';
+close c;
+-- 3, join on two--60%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Join on two, 25% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 2500';
+close c;
+-- 5, join on two--25%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Join on two, 10% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 1000';
+close c;
+-- 7, join on two--10%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Join on two, 5% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 500';
+close c;
+-- 9, join on two--5%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Join on two, 1% of rows in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 < 100';
+close c;
+-- 11, join on two--1%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+-- Join on two, 1 row in TENKTUP2
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.two = TENKTUP2.two
+	and TENKTUP2.unique1 = 0';
+close c;
+-- 13, join on two--1 row
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+--  now do joins on a very low cardinality table
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from 
+	TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent';
+close c;
+
+-- 15, join on onePercent--all rows
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 6000';
+close c;
+-- 17, join on onePercent--60%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 2500';
+close c;
+-- 19, join on onePercent--25%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 1000';
+close c;
+-- 21, join on onePercent--10%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 500';
+close c;
+-- 23, join on onePercent--5%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 < 100';
+close c;
+-- 25, join on onePercent--1%
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();
+
+get cursor c as
+	'select TENKTUP1.unique2, TENKTUP2.* from TENKTUP1, TENKTUP2
+	where TENKTUP1.onePercent = TENKTUP2.onePercent
+	and TENKTUP2.unique1 = 0';
+close c;
+-- 27, join on onePercent--1 row
+values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,20 @@
+#
+# These properties will get handed to the test on the command line 
+# in a -p <filename> # argument.
+#
+# This causes ij (or the GUI on ij) to load the driver and make an
+# initial connection to the database.
+#
+#
+#
+#runwithj9=false
+database=jdbc:derby:wombat;create=true
+derby.optimizer.noTimeout=true
+
+ij.defaultResourcePackage=/org/apache/derbyTesting/functionTests/tests/lang/
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true
+
+# flags specific to this test: it runs out of memory on jdk118 sometimes
+# so give the JVM more memory always:
+jvmflags=-ms32M -mx128M

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,12 @@
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special .properties file, see
+# inbetween.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.language.preloadClasses=true
+#checkpoint influences the plans in some cases becuase rows count 
+#getupdated on checkpoint, following is necessart to check some plans
+derby.storage.checkpointInterval=100000
+# override derby.debug.true to speed up test execution.
+derby.debug.true=

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_sed.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/wisconsin_sed.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,13 @@
+# Filters and substitutes for SED
+# Multiple patterns for DELETE: comma separated
+#   delete=pattern1,pattern2,...,patternn
+# No commas can be allowed in the patterns.
+#
+# Multiple patterns for SUBSTITUTE: comma separated <pattern;substitute> pair
+#   substitute=pattern1;substitute1,pattern2;substitute2,...,patternn;substituten
+# No commas or semicolons can be allowed in the patterns/subsitutes.
+---------------------------------------------------------------------------------
+# need for JCC. true shows up as |1 | false as |0 |
+# also cursor names do not show up in rt statistics
+substitute=SQL_CURSN200C1;C,99349.65000000001 ;99349.65000000& 
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+
+<!-- ==================================================================== -->
+<!--                       Cloudscape build file                          -->
+<!-- ==================================================================== -->
+
+<project default="FTOtestsubdir" basedir="../../../../../../../.." >
+
+<!-- ==================================================================== -->
+<!--                           Set properties                             -->
+<!-- ==================================================================== -->
+
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties" />
+
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/sane${sanity}.properties"/>
+  <property file="${properties.dir}/defaultcompiler.properties"/>
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+
+  <!-- Parser properties -->
+  <!--property file="${properties.dir}/parser.properties"/-->
+
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/>
+
+  <!-- Release and Version info -->
+  <property file="${properties.dir}/release.properties"/>
+
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/tests/tools"/>
+
+<!--             ============ Begin Targets ==============                -->
+ 
+  <target name="FTOtestsubdir" depends="compilet2,compilet1,copyfiles"/>
+
+  <!-- mkdir / init target may not be necessary, just here for reference... -->
+  <target name="init">
+    <mkdir dir="${out.dir}/${derby.testing.functest.dir}/tests/tools"/>
+  </target>
+
+  <target name="compilet1">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <!--pathelement location="${oro}"/-->
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/*.java"/>
+      <!--exclude name=""/-->
+    </javac>
+  </target>
+
+  <target name="compilet2">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <!--exclude name=""/-->
+      <!--include name=""/-->
+    </javac>
+  </target>
+
+  <target name="compilet3">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}"
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement path="${java14compile.classpath}"/>
+      </classpath>
+      <!--include name=""/-->
+    </javac>
+  </target> 
+
+  <target name="copyfiles">
+    <copy todir="${out.dir}/${derby.testing.functest.dir}/tests/tools">
+      <fileset dir="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/tools" 
+        includesfile="${derby.testing.src.dir}/${derby.testing.functest.dir}/tests/tools/copyfiles.ant"/>  
+    </copy>
+  </target> 
+
+
+<!--             ============= End Targets ==============                -->
+
+<!--             ============= End Project ==============                -->
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/copyfiles.ant
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/copyfiles.ant	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,5 @@
+default_app.properties
+default_derby.properties
+dblook_makeDB.sql
+dblook_test.jar
+dblook_test_app.properties

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_makeDB.sql	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,132 @@
+
+--
+-- Script for creating the 'wombat' test database
+-- that will be used for testing the 'dblook'
+-- utility.  Basically, we just create a database
+-- that has one or more of every possible type
+-- of database object (tables, indexes, keys,
+-- etc.) and then run dblook on the database
+-- to check that all of the objects make it into
+-- the final DDL script.  After this initial
+-- (full) test, dblook is run with a series
+-- of parameters, thus returning only a subset
+-- of objects it contains; this allows us to
+-- make sure that said parameters are working
+-- as expected.
+--
+-- NOTE: For purposes of this test, any object
+-- names (ex table, index, constraint, etc)
+-- which start with the letters 'SQL' are
+-- assumed by dblook_test to be system-
+-- generated, and so are filtered out of the
+-- output (they are replaced with "systemname"
+-- or something similar).
+
+-- ----------------------------------------------
+-- Schemas
+-- ----------------------------------------------
+
+create schema "FOO";
+create schema "Foo Bar";
+create schema bar;
+
+-- ----------------------------------------------
+-- Jars:
+-- Note: a jar file called 'dblook_test.jar'
+-- must exist in the current directory (it is
+-- put there by the harness).
+-- ----------------------------------------------
+
+call sqlj.install_jar('file:dblook_test.jar', 'foo.foojar', 0);
+
+-- ----------------------------------------------
+-- Stored Procedures.
+-- ----------------------------------------------
+
+create procedure proc1 (INOUT a CHAR(10), IN b int) language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3' parameter style java dynamic result sets 4 contains sql;
+
+create procedure bar.OP4(OUT a DECIMAL(4,2), IN b VARCHAR(255)) parameter style java language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams4';
+
+create procedure foo.sqqlcontrol_1 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) no sql PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl';
+
+create procedure "Foo Bar".proc2 (OUT E1 VARCHAR(128), OUT E2 VARCHAR(128), OUT E3 VARCHAR(128), OUT E4 VARCHAR(128), OUT E5 VARCHAR(128), OUT E6 VARCHAR(128), OUT E7 VARCHAR(128)) reads sql data PARAMETER STYLE JAVA LANGUAGE JAVA EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.ProcedureTest.sqlControl';
+
+create procedure "procTwo" (INOUT a CHAR(10), IN b int) language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3' parameter style java dynamic result sets 2 modifies sql data;
+
+create procedure """proc ""In Quotes with spaces""" (INOUT a CHAR(10), IN b int) language java external name 'org.apache.derbyTesting.functionTests.util.ProcedureTest.inoutparams3' parameter style java dynamic result sets 2 modifies sql data;
+
+-- ----------------------------------------------
+-- Tables
+-- ----------------------------------------------
+
+-- Basic.
+create table t1 (i int, c char(8), d date, f float not null);
+create table t2 (p1 varchar(10), b blob(20), c clob(15));
+create table t8t1t4 (c1 char (4) default 'okie', c2 char(4) default 'doki');
+create table bar."MULTI WORD NAME" (c char(2));
+
+-- auto increment/defaults.
+create table bar.t3 (p1 varchar(10) default 'okie', b blob(20), id int generated always as identity (start with 2, increment by 4));
+create table bar.t4 (i int default 2, j int not null, k int generated always as identity);
+
+create table "Foo Bar".t5 (cost double);
+create table "Foo Bar".t6 (num integer, letter char(1));
+create table "Foo Bar".t7 (un int, deux int);
+
+-- Keys/checks.
+create table bar."tWithKeys" (c char(5) not null PRIMARY KEY, i int check (i > 0), vc varchar(10) constraint notevil check (vc != 'evil'));
+create table bar.t8 (someInt int constraint "pkOne" not null primary key, fkChar char(5) references bar."tWithKeys" (c) on delete set null);
+create table foo.t10 (vach varchar(12), k int not null primary key, uk char(3) not null unique);
+create table foo.t9 (fkInt int not null, constraint "fkOne" foreign key (fkInt) references foo.t10 (k) on update restrict on delete no action, ch char(8) not null);
+create table bar.t1 (p1 varchar(10) not null constraint unq unique, c clob(15));
+alter table foo.t10 add constraint "chkOne" check (k < 0);
+alter table foo.t9 add constraint "pkTwo" primary key (ch, fkInt);
+create table t11 (myChar char(8), lola int, foreign key (myChar, lola) references foo.t9 (ch, fkInt));
+
+-- Quoted names, checks, keys... (start, middle, and end of the name).
+create table "tquote""One" ("i""q1" int not null constraint "pee""kay1" primary key, "i""q2" int default 8 constraint "c""k1" check ("i""q2" > 4));
+create table """tquoteTwo" ("""iq1" int constraint """effkay1" references "tquote""One" ("i""q1"), """iq2" int constraint """ck2" check ("""iq2" > 0));
+create table "tquoteThree""" ("iq1""" int not null constraint "unqkay1""" unique, "iq2""" int constraint "ck2""" check ("iq2""" > 4));
+create table """Quoted""Schema"""."tee""""Hee" (n char not null primary key);
+
+-- ----------------------------------------------
+-- Indexes.
+-- ----------------------------------------------
+
+create index ix1 on t1 (f, i);
+create index bar.ix2 on t3 (p1 desc, id desc);
+create index bar.ix3 on bar."tWithKeys" (c desc);
+create unique index "Foo Bar"."CostIndex" on "Foo Bar".t5 (cost);
+create unique index ix4 on bar.t4 (k asc);
+create index """Quoted""Schema"""."Ix""5" on "tee""""Hee" (n desc);
+
+-- ----------------------------------------------
+-- Views
+-- ----------------------------------------------
+
+create view v1 (dum, dee, dokie) as select a.d, a.c, b.p1 from t1 as a, bar.t3 as b;
+
+set schema foo;
+create view v1 (doo, dwa) as select num, letter from "Foo Bar".t6;
+set schema app;
+
+create view bar."viewTwo" as select * from app.t11;
+
+create view v2 as select * from bar.t1;
+
+create view "V""3"(i) as values (8), (28), (78);
+
+-- ----------------------------------------------
+-- Triggers
+-- ----------------------------------------------
+
+create trigger trigOne after insert on bar.t3 for each row mode db2sql update bar.t4 set j=8 where i=2;
+create trigger "Foo Bar".trig2 no cascade before delete on bar.t1 for each statement mode db2sql values (1), (2);
+create trigger "TrigThree" after update of i, c on bar."tWithKeys" for each row mode db2sql select c from bar."tWithKeys";
+create trigger bar.reftrig after delete on bar.t8 referencing old_table as oldtable for each statement mode db2sql select * from oldtable;
+create trigger """Quoted""Schema"""."""trig""One""" after insert on """Quoted""Schema"""."tee""""Hee" for each row mode db2sql values(8);
+
+-- Test trigger with new AND old referencing names (beetle 5725).
+create table x (x int);
+create table removed (x int);
+create trigger trigFour after update of x on x referencing old_table as old new_table as new for each statement mode db2sql insert into removed select * from old where x not in (select x from new where x < 10);

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.jar
==============================================================================
Binary file. No diff available.

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,1507 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.tests.tools
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.tools;
+
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Timestamp;
+
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.File;
+
+import org.apache.derby.tools.dblook;
+import org.apache.derby.catalog.DependableFinder;
+
+import java.util.HashMap;
+import java.util.TreeMap;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+public class dblook_test {
+	/* 
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	private static final int SERVER_PORT = 1527;
+	private static final int FRONT = -1;
+	private static final int REAR = 1;
+
+	private static final String testDBCreationScript = "dblook_makeDB.sql";
+	private static final char TEST_DELIMITER='#';
+
+	protected static String testDirectory = "dblook_test/";
+	protected static final String testDBName = "wombat";
+	protected static String separator;
+
+	private static String dbPath;
+	private static int duplicateCounter = 0;
+	private static int sysNameCount = 0;
+	private static String jdbcProtocol;
+
+	/* **********************************************
+	 * main:
+	 * @param args Ignored.
+	 ****/
+
+	public static void main (String[] args) {
+
+		System.out.println("\n-= Start Test. =-");
+		separator = System.getProperty("file.separator");
+		new dblook_test().doTest();
+		System.out.println("\n[ Done. ]\n");
+
+	}
+
+	/* **********************************************
+	 * doTest
+	 * Run a full test of the dblook utility.
+	 ****/
+
+	protected void doTest() {
+
+		try {
+
+			createTestDatabase();
+			runCSLook(testDBName);
+
+		} catch (SQLException se) {
+
+			System.out.println("FAILED: to complete the test:");
+			se.printStackTrace();
+			for (se = se.getNextException(); se != null;
+				se = se.getNextException())
+			{
+				se.printStackTrace();
+			}
+		
+		} catch (Exception e) {
+
+			System.out.println("FAILED: to complete the test:");
+			e.printStackTrace();
+
+		}
+
+	}
+
+	/* **********************************************
+	 * createTestDatabase:
+	 * Using the creation script created as part of
+	 * the test package, create the database that
+	 * will be used as the basis for all dblook
+	 * tests.
+	 * @return The test database has been created
+	 *  in the current test directory, which is
+	 *  "./dblook/" (as created by the harness).
+	 ****/
+
+	protected void createTestDatabase()
+		throws Exception
+	{
+
+		Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
+		jdbcProtocol = "jdbc:derby:";
+		createDBFromDDL(testDBName, testDBCreationScript);
+
+		// Figure out where our database directory is (abs path).
+		dbPath = (new File(testDirectory)).getAbsolutePath();
+		return;
+
+	}
+
+	/* **********************************************
+	 * runCSLook:
+	 * Runs a series of tests using dblook on
+	 * the received database.
+	 * @param dbName The name of the database on which to
+	 *   run the tests.
+	 * @return A series of tests intended to verify
+	 *  the full functionality of the dblook utility
+	 *  has been run.
+	 ****/
+
+	private void runCSLook(String dbName)
+		throws Exception
+	{
+
+		// Close the error stream, so that messages
+		// printed to System.err aren't intermixed
+		// with our output (otherwise, the order
+		// of the System.out vs System.err is
+		// arbitrary (because of the way the harness
+		// works), and so we will get diffs with
+		// the master.
+		System.err.close();
+
+		// First, we dump all system catalogs for
+		// the original source database to file.
+		dumpSysCatalogs(dbName);
+
+		// Then, we run dblook on the source database
+		// with no limitations (i.e. we generate the
+		// DDL for the FULL database).
+		lookOne(dbName);
+		dumpFileToSysOut("dblook.log");
+
+
+		// Now, create new db from the DDL that
+		// was generated by dblook.
+		String newDBName = dbName + "_new";
+		createDBFromDDL(newDBName, dbName + ".sql");
+		deleteFile(new File(dbName + ".sql"));
+
+		// Dump all system catalogs for the database
+		// that was created from the DDL generated
+		// by dblook.
+		dumpSysCatalogs(newDBName);
+
+		// Delete the new database.
+		deleteDB(newDBName);
+		deleteFile(new File(newDBName + ".sql"));
+
+		// Run dblook on the source database
+		// with various parameter configurations,
+		// to make sure they are all working as
+		// planned.
+		runAllTests(dbName, newDBName);
+
+	}
+
+	/* **********************************************
+	 * runAllTests:
+	 * Makes the call to execute each of the desired
+	 * tests.
+	 * @param dbName The name of the database on which to
+	 *   run the tests.
+	 * @param newDBName The name of the database to be
+	 *  created from the DDL that is generated (by
+	 *  dblook) for the source database.
+	 ****/
+
+	protected void runAllTests(String dbName,
+		String newDBName) throws Exception
+	{
+
+		runTest(2, dbName, newDBName);
+
+		// Test 3 is run as part of derbynet suite;
+		// see derbynet/dblook_test_net.java.
+
+		runTest(4, dbName, newDBName);
+		runTest(5, dbName, newDBName);
+		runTest(7, dbName, newDBName);
+		runTest(6, dbName, newDBName);
+		return;
+
+	}
+
+	/* **********************************************
+	 * runTest:
+	 * Runs dblook on the source database with a
+	 * specific set of parameters, then uses the
+	 * resultant DDL to create a new database, and
+	 * dumps the system catalogs for that database
+	 * to file.  Finally, the new database is deleted
+	 * in preparation for subsequent calls to this
+	 * method.
+	 * @param whichTest An indication of which test to run;
+	 *  each test number has a different set of
+	 *  parameters.
+	 * @param dbName The name of the source database.
+	 * @param newDBName The name of the database to be
+	 *  created from the DDL that is generated (by
+	 *  dblook) for the source database.
+	 * @return dblook has been executed using the
+	 *  parameters associated with the given test,
+	 *  and that DDL has been written to a ".sql"
+	 *  file named after the source database;
+	 *  a new database has been created from the
+	 *  ".sql" generated by dblook; the system
+	 *  catalogs for that new database have been
+	 *  dumped to output; and the new database has
+	 *  been deleted.
+	 ****/
+
+	protected void runTest(int whichTest, String dbName,
+		String newDBName)
+	{
+
+		try {
+
+			switch(whichTest) {
+				case 2:		lookTwo(dbName); break;
+				case 3:		lookThree(dbName); break;
+				case 4:		lookFour(dbName); break;
+				case 5:		lookFive(dbName); break;
+				case 6:		lookSix(dbName); break;
+				case 7:		lookSeven(dbName); break;
+				default:	break;
+			}
+
+			dumpFileToSysOut("dblook.log");
+			createDBFromDDL(newDBName, dbName + ".sql");
+			dumpSysCatalogs(newDBName);
+			deleteDB(newDBName);
+			deleteFile(new File(dbName + ".sql"));
+
+		} catch (SQLException e) {
+
+			System.out.println("FAILED: Test # : " + whichTest);
+			System.out.println(e.getMessage());
+			for (e = e.getNextException(); e != null;
+				e = e.getNextException())
+			{
+				System.out.println(e.getMessage());
+			}
+
+		} catch (Exception e) {
+
+			System.out.println("FAILED: Test # : " + whichTest);
+			System.out.println(e.getMessage());
+
+		}
+
+		return;
+
+	}
+
+	/* **********************************************
+	 * lookOne:
+	 * Use dblook to generate FULL DDL for a given
+	 * database.
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The full DDL for the source database
+	 *  has been generated and written to a file
+	 *  called <dbName + ".sql">.
+	 ****/
+
+	private void lookOne(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping full schema for '" +
+			dbName + "'\nto file '" + dbName + ".sql':\n");
+
+		String [] args = new String[] {
+			"-o", dbName + ".sql",
+			"-td", ""
+		};
+
+		go(dbName, args);
+		return;
+
+	}
+
+	/* **********************************************
+	 * lookTwo:
+	 * Use dblook to generate DDL for all objects 
+	 * in the source database with schema 'BAR',
+	 * excluding views:
+	 *  -z bar -noview
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The appropriate DDL has been generated
+	 *  and written to a file called <dbName + ".sql">.
+	 ****/
+
+	private void lookTwo(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping DDL for all objects " +
+			"with schema\n'BAR', excluding views:\n");
+ 
+		String [] args = new String[] {
+			"-o", dbName + ".sql",
+			"-td", "",
+			"-z", "bar",
+			"-noview"
+		};
+
+		go(dbName, args);
+		return;
+
+	}
+
+	/* **********************************************
+	 * lookThree:
+	 * Use dblook to generate DDL for all objects
+	 * in the source database, using Network
+	 * Server.
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The appropriate DDL has been generated
+	 *  and written to a file called <dbName + ".sql">.
+	 ****/
+
+	private void lookThree(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping DDL for all objects, " +
+			"using\nNetwork Server:\n");
+ 
+		jdbcProtocol = "jdbc:derby:net://localhost:" +
+			SERVER_PORT + "/";
+		String sourceDBUrl = jdbcProtocol + "\"" + dbPath +
+			separator + dbName + "\":user=someusr;password=somepwd;";
+
+		// Make sure we're not connected to the database
+		// (we connected to it in embedded mode when we
+		// created it, so we have to shut it down).
+		try {
+			DriverManager.getConnection(
+				"jdbc:derby:" + dbName + ";shutdown=true");
+		} catch (SQLException e) {}
+
+		// Run the test.
+
+		dblook looker = new dblook(new String[] {
+			"-d", sourceDBUrl,
+			"-o", dbName + ".sql",
+			"-td", "" }
+		);
+
+		try {
+			looker.go(sourceDBUrl, dbPath + separator + dbName);
+		} catch (Exception e) {
+			System.out.println("FAILED: ");
+			e.printStackTrace();
+		}
+
+		return;
+
+	}
+
+	/* **********************************************
+	 * lookFour:
+	 * Use dblook to generate DDL for all objects 
+	 * in the source database with schema 'BAR'
+	 * that are related to tables 'T3', 'tWithKeys',
+	 * and 'MULTI WORD NAME'.
+	 *  -z bar -t t3 "\"tWithKeys\"" "Multi word name"
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The appropriate DDL has been generated
+	 *  and written to a file called <dbName + ".sql">.
+	 ****/
+
+	private void lookFour(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping DDL for all objects " +
+			"with schema 'BAR'\nthat are related to tables " +
+			"'T3', 'tWithKeys',\nand 'MULTI WORD NAME':\n");
+ 
+		String [] args = new String [] {
+			"-o", dbName + ".sql",
+			"-td", "",
+			"-z", "BAR",
+			"-t", "t3", "\"tWithKeys\"", "Multi word name"
+		};
+
+		go(dbName, args);
+		return;
+
+	}
+
+	/* **********************************************
+	 * lookFive:
+	 * Use dblook to generate DDL for all objects 
+	 * in the source database (with any schema)
+	 * that are related to table 'T1' and 'TWITHKEYS'
+	 * (with no matches existing for the latter).
+	 * 	-t t1 "tWithKeys"
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The appropriate DDL has been generated
+	 *  and written to a file called <dbName + ".sql">.
+	 ****/
+
+	private void lookFive(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping DDL for all objects " +
+			"related to 'T1'\nand 'TWITHKEYS':\n");
+ 
+		String [] args = new String [] {
+			"-o", dbName + ".sql",
+			"-td", "",
+			"-t", "t1", "tWithKeys"
+		};
+
+		go(dbName, args);
+		return;
+
+	}
+
+	/* **********************************************
+	 * lookSix:
+	 * Call dblook with an invalid url, to make
+	 * sure that errors are printed to log.
+	 *   -d <dbName> // missing protocol.
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The appropriate DDL has been generated
+	 *  and written to a file called <dbName + ".sql">.
+	 ****/
+
+	private void lookSix(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping DDL w/ invalid url, and " +
+			"writing\nerror to the log:\n");
+ 
+		// Url is intentionally incorrect; it will cause an error.
+		dblook looker = new dblook(new String[] {
+			"-o", dbName + ".sql",
+			"-d", dbName }
+		);
+		try {
+			looker.go(dbName, dbName);
+		} catch (Exception e) {
+		// we expect it to go wrong.
+		}
+
+	}
+
+	/* **********************************************
+	 * lookSeven:
+	 * Use dblook to generate DDL for all objects 
+	 * in the source database with schema '"Quoted"Schema"'.
+	 *  -z \"\"Quoted\"Schema\"\"
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @return The appropriate DDL has been generated
+	 *  and written to a file called <dbName + ".sql">.
+	 ****/
+
+	private void lookSeven(String dbName)
+		throws Exception
+	{
+
+		printAsHeader("\nDumping DDL for all objects " +
+			"with schema\n'\"Quoted\"Schema\"':\n");
+ 
+		String [] args = new String[] {
+			"-o", dbName + ".sql",
+			"-td", "",
+			"-z", "\"\"Quoted\"Schema\"\""
+		};
+
+		go(dbName, args);
+		return;
+
+	}
+
+	/* **********************************************
+	 * go:
+	 * Makes the call to execute the dblook command
+	 * using the received arguments.
+	 * @param dbName The name of the source database (i.e.
+	 *  the database for which the DDL is generated).
+	 * @args The list of arguments with which to execute
+	 *  the dblook command.
+	 ****/
+
+	private void go(String dbName, String [] args) {
+
+		jdbcProtocol = "jdbc:derby:";
+		String sourceDBUrl = jdbcProtocol + dbPath +
+			separator + dbName;
+
+		String [] fullArgs = new String[args.length+3];
+		fullArgs[0] = "-d";
+		fullArgs[1] = sourceDBUrl;
+		fullArgs[2] = "-append";
+		for (int i = 3; i < fullArgs.length; i++)
+			fullArgs[i] = args[i-3];
+
+		dblook looker = new dblook(fullArgs);
+		try {
+			looker.go(sourceDBUrl, dbPath + separator + dbName);
+		} catch (Exception e) {
+			System.out.println("FAILED: ");
+			e.printStackTrace();
+		}
+
+	}
+
+	/* **********************************************
+	 * dumpSysCatalogs:
+	 * Takes a database name and dumps ALL of the
+	 * system catalogs for that database, with the
+	 * exception of SYSSTATISTICS.  This allows us
+	 * to look at the full contents of a database's
+	 * schema (without using dblook, of course)
+	 * so that we can see if the databases created
+	 * from the DDL generated by dblook have been
+	 * built correctly--if they have all of the
+	 * correct system catalog information, then
+	 * the databases themselves must be correct.
+	 * @param dbName The name of the database for which
+	 *  we are dumping the system catalogs.
+	 * @return All of the system catalogs for
+	 *  the received database have been dumped
+	 *  to output.
+	 ****/
+
+	private void dumpSysCatalogs(String dbName)
+		throws Exception
+	{
+
+		System.out.println("\nDumping system tables for '" + dbName + "'\n");
+
+		writeOut("\n----------------=================---------------");
+		writeOut("System Tables for: " + dbName);
+		writeOut("----------------=================---------------\n");
+
+		// Connect to the database.
+		Connection conn = DriverManager.getConnection(
+				"jdbc:derby:" + dbName);
+		conn.setAutoCommit(false);
+		Statement stmt = conn.createStatement();
+
+		// Load any id-to-name mappings that will be useful
+		// when dumping the catalogs.
+		HashMap idToNameMap = loadIdMappings(stmt, conn);
+
+		// Go through and dump all system catalog information,
+		// filtering out database-dependent id's so that they
+		// won't cause diffs.
+
+		writeOut("\n========== SYSALIASES ==========\n");
+		ResultSet rs =
+			stmt.executeQuery("select schemaid, sys.sysaliases.* from sys.sysaliases");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSCHECKS ==========\n");
+		rs = stmt.executeQuery("select c.schemaid, ck.* from " +
+			"sys.syschecks ck, sys.sysconstraints c where " +
+			"ck.constraintid = c.constraintid");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSCOLUMNS ==========\n");
+		writeOut("--- Columns for Tables ---");
+		rs = stmt.executeQuery("select t.schemaid, c.* from " +
+			"sys.syscolumns c, sys.systables t where c.referenceid " +
+			"= t.tableid" );
+		dumpResultSet(rs, idToNameMap, null);
+		writeOut("\n--- Columns for Statements ---");
+		rs = stmt.executeQuery("select s.schemaid, c.* from " +
+			"sys.syscolumns c, sys.sysstatements s where c.referenceid " +
+			"= s.stmtid" );
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSCONGLOMERATES ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.sysconglomerates.* " +
+			"from sys.sysconglomerates");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSCONSTRAINTS ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.sysconstraints.* " +
+			"from sys.sysconstraints");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSDEPENDS ==========\n");
+		rs = stmt.executeQuery("select dependentid, sys.sysdepends.* from sys.sysdepends");
+		dumpResultSet(rs, idToNameMap, conn);
+
+		writeOut("\n========== SYSFILES ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.sysfiles.* from sys.sysfiles");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSFOREIGNKEYS ==========\n");
+		rs = stmt.executeQuery("select c.schemaid, fk.* from " +
+			"sys.sysforeignkeys fk, sys.sysconstraints c where " +
+			"fk.constraintid = c.constraintid");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSKEYS ==========\n");
+		rs = stmt.executeQuery("select c.schemaid, k.* from " +
+			"sys.syskeys k, sys.sysconstraints c where " +
+			"k.constraintid = c.constraintid");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSSCHEMAS ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.sysschemas.* from sys.sysschemas");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSSTATEMENTS ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.sysstatements.* from sys.sysstatements");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSTABLES ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.systables.* from sys.systables");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSTRIGGERS ==========\n");
+		rs = stmt.executeQuery("select schemaid, sys.systriggers.* from sys.systriggers");
+		dumpResultSet(rs, idToNameMap, null);
+
+		writeOut("\n========== SYSVIEWS ==========\n");
+		rs = stmt.executeQuery("select compilationschemaid, sys.sysviews.* from sys.sysviews");
+		dumpResultSet(rs, idToNameMap, null);
+
+		stmt.close();
+		rs.close();
+		conn.commit();
+		conn.close();
+		return;
+
+	}
+
+	/* **********************************************
+	 * isIgnorableSchema:
+     * Returns true if the the schema is a "system" schema, vs. a user 
+     * schema.  
+	 * @param schemaName name of schema to check.
+	 ****/
+	private boolean isIgnorableSchema(String schemaName) {
+
+        boolean ret = false;
+
+        for (int i = ignorableSchemaNames.length - 1; i >= 0;)
+        {
+            if ((ret = ignorableSchemaNames[i--].equalsIgnoreCase(schemaName)))
+                break;
+        }
+
+        return(ret);
+	}
+
+    private static final String[] ignorableSchemaNames = {
+        "SYSIBM",
+        "SYS",
+        "SYSVISUAL",
+        "SYSCAT",
+        "SYSFUN",
+        "SYSPROC",
+        "SYSSTAT",
+        "NULLID",
+        "SYSCS_ADMIN",
+        "SYSCS_DIAG",
+        "SYSCS_UTIL",
+        "SQLJ"};
+
+	/* **********************************************
+	 * dumpResultSet:
+	 * Iterates through the received result set and
+	 * dumps ALL columns in ALL rows of that result
+	 * set to output.  Since no order is guaranteed
+	 * in the received result set, we have to generate
+	 * unique "ids" for each row in the result, and
+	 * then use those ids to determine what order the
+	 * rows will be output.  Failure to do so will
+	 * lead to diffs in the test for rows that occur
+	 * out of order.  The unique id's must NOT
+	 * depend on system-generated id's, as the
+	 * latter will vary for every run of the test,
+	 * and thus will lead to different orderings
+	 * every time (which we don't want).
+	 *
+	 * @param rs The result set that is being dumped.
+	 * @param idToNameMap Mapping of various ids to
+	 *  object names; used in forming unique ids.
+	 * @param conn Connection from which the result set
+	 *  originated.
+	 ****/
+
+	private void dumpResultSet (ResultSet rs,
+		HashMap idToNameMap, Connection conn)
+		throws Exception
+	{
+
+		// We need to form unique names for the rows of the
+		// result set so that we can preserve the order of
+		// the output and avoid diffs with a master.  This is
+		// because a "select *" doesn't order rows--and even
+		// though the schema for two databases might be the
+		// same (i.e. the system tables contain all of the same
+		// information) there's nothing to say the various rows in
+		// the respective system tables will be the same (they
+		// usually are NOT).  While system id's automatically
+		// give us uniqueness, we can NOT order on them because
+		// they vary from database to database; so, we need
+		// to use something constant across the databases,
+		// which is why we use object names.
+		StringBuffer uniqueName = new StringBuffer();
+
+		TreeMap orderedRows = new TreeMap();
+		ArrayList rowValues = new ArrayList();
+		ArrayList duplicateRowIds = new ArrayList();
+
+		ResultSetMetaData rsmd = rs.getMetaData();
+		int cols = rsmd.getColumnCount();
+		while (rs.next()) {
+
+			for (int i = 1; i <= cols; i++) {
+
+				String colName = rsmd.getColumnName(i);
+				String value = rs.getString(i);
+				String mappedName = (String)idToNameMap.get(value);
+
+				if ((colName.indexOf("SCHEMAID") != -1) &&
+					(mappedName != null) &&
+					((mappedName.indexOf("SYS") != -1) ||
+                     (isIgnorableSchema(mappedName))))
+                {
+				// then this row of the result set is for a system
+				// object, which will always be the same for the
+				// source and new database, so don't bother dumping
+				// them to the output file (makes the test less
+				// like to require updates when changes to database
+				// metadata for system objects are checked in).
+					rowValues = null;
+					break;
+				}
+				else if (colName.equals("JAVACLASSNAME") &&
+					(value.indexOf("org.apache.derby") != -1) &&
+					(value.indexOf(".util.") == -1)) {
+				// this is a -- hack -- to see if the alias is a
+				// a system alias, needed because aliases
+				// (other than stored procedures) do not have
+				// an associated schema).
+					rowValues = null;
+					break;
+				}
+
+				if (i == 1)
+				// 1st column is just for figuring out whether
+				// to dump this row; no need to actually include
+				// it in the results.
+					continue;
+
+				String uniquePiece = dumpColumnData(colName,
+					value, mappedName, rowValues);
+
+				if (colName.equals("DEPENDENTID")) {
+				// Special case: rows in the "DEPENDS" table
+				// don't have unique ids or names; we have to
+				// build one by extracting information indirectly.
+					String hiddenInfo = getDependsData(rs, conn,
+						idToNameMap);
+					if (hiddenInfo.indexOf("SYS_OBJECT") != -1) {
+					// this info is for a system object, so
+					// ignore it.
+						rowValues = null;
+						break;
+					}
+					uniqueName.append(hiddenInfo);
+					// Include the hidden data as part of the
+					// output.
+					rowValues.add(hiddenInfo);
+				}
+
+		 		if (uniquePiece != null)
+					uniqueName.append(uniquePiece);
+
+				if (colName.equals("STMTNAME") &&
+				  (value.indexOf("TRIGGERACTN") != -1))
+				// Special case: can't use statement name, because
+				// the entire statement may be automatically generated
+				// in each database (to back a trigger), so the name
+				// in which case the generated name will be different
+				// every time; but filtering out the name means
+				// we have no other guaranteed unique 'id' for
+				// ordering.  So, just take "text" field, and
+				// design test db so that no two triggers have the
+				// same text value.
+				uniqueName.append(rs.getString(6));
+
+			}
+
+			if (rowValues != null) {
+
+				if (duplicateRowIds.contains(uniqueName.toString()))
+				// then we've already encountered this row id before;
+				// to preserve ordering, use the entire row as an
+				// id.
+					handleDuplicateRow(rowValues, null, orderedRows);
+				else {
+					ArrayList oldRow = (ArrayList)(orderedRows.put(
+						uniqueName.toString(), rowValues));
+					if (oldRow != null) {
+					// Duplicate row id.
+						duplicateRowIds.add(uniqueName.toString());
+						// Delete the row that has the duplicate row id.
+							orderedRows.remove(uniqueName.toString());
+						handleDuplicateRow(rowValues, oldRow, orderedRows);
+					}
+				}
+			}
+
+			uniqueName = new StringBuffer();
+			rowValues = new ArrayList();
+
+		}
+
+		// Now, print out all of the data in this result set
+		// using the order of the unique names that we created.
+		Set objectNames = orderedRows.keySet();
+		for (Iterator itr = objectNames.iterator();
+			itr.hasNext(); ) {
+
+			String row = (String)itr.next();
+			ArrayList colData = (ArrayList)orderedRows.get(row);
+			for (int i = 0; i < colData.size(); i++)
+				writeOut((String)colData.get(i));
+			writeOut("----");
+
+		}
+
+		orderedRows = null;
+		rs.close();
+
+	}
+
+	/* **********************************************
+	 * dumpColumnData:
+	 * Stores the value for a specific column of
+	 * some result set.  If the value needs to
+	 * be filtered (to remove system-generated ids
+	 * that would otherwise cause diffs with the
+	 * master), that filtering is done here.
+	 * @param colName Name of the column whose value we're
+	 *  writing.
+	 * @param value Value that we're writing.
+	 * @param mappedName: Name corresponding to the value,
+	 *  for cases where the value is actually an
+	 *  object id (then we want to write the name
+	 *  instead).
+	 * rowValues a list of column values for the
+	 *  current row of the result set.
+	 * @return The (possibly filtered) value of the
+	 *  received column has been added to the
+	 *  "rowVals" array list, and the corresponding
+	 *  piece of the row's unique name has been
+	 *  returned, if one exists.
+	 ****/
+
+	private String dumpColumnData(String colName,
+		String value, String mappedName, ArrayList rowVals)
+	{
+
+		if (mappedName == null) {
+		// probably not an id.
+			if (colName.equals("CONGLOMERATENUMBER") ||
+				colName.equals("GENERATIONID"))
+			// special case: these numbers aren't ids per
+			// se, but they are still generated by the system,
+			// and will cause diffs with the master; so, ignore
+			// them.
+				rowVals.add("<systemnumber>");
+			else if (colName.equals("AUTOINCREMENTVALUE"))
+			// special case: new database won't have any data,
+			// old will, so unless we filter this out, we'll
+			// get a diff.
+				rowVals.add("<autoincval>");
+			else if (colName.equals("VALID"))
+			// special case: ignore whether or not stored
+			// statements are valid (have been compiled)
+			// since it depends on history of database,
+			// which we can't duplicate.
+				rowVals.add("<validityflag>");
+			else if (value != null) {
+				if (looksLikeSysGenName(value)) {
+					if (columnHoldsObjectName(colName))
+						rowVals.add("<systemname>");
+					else {
+					// looks like a sys gen name, but's actually a VALUE.
+						rowVals.add(value);
+						return value;
+					}
+				}
+				else if (looksLikeSysGenId(value))
+					rowVals.add("<systemid>");
+				else {
+					rowVals.add(value);
+					if (columnHoldsObjectName(colName))
+					// if it's a name, we need it as part of
+					// our unique id.
+						return value;
+				}
+			}
+			else
+			// null value.
+				rowVals.add(value);
+		}
+		else {
+		// it's an id, so write the corresponding name.
+			if (!isSystemGenerated(mappedName)) {
+			// Not an id-as-name, so use it as part of our unique id.
+				rowVals.add(mappedName);
+				return mappedName;
+			}
+			else
+				rowVals.add("<systemname>");
+		}
+
+		// If we get here, we do NOT want the received value
+		// to be treated as part of this row's unique name.
+		return null;
+
+	}
+
+	/* **********************************************
+	 * handleDuplicateRow:
+	 * If we get here, then despite our efforts (while
+	 * dumping the system catalogs for a database), we
+	 * still have a duplicate row id.  So, as a last
+	 * resort we just use the ENTIRE row as a 'row id'.
+	 * In the rare-but-possible case that the entire
+	 * row is a duplicate (as can happen with the
+	 * SYSDEPENDS table), then we tag a simple number
+	 * onto the latest row's id, so that the row will
+	 * still show up multiple times--and since the rows
+	 * are identical, it doesn't matter which comes
+	 * 'first'.
+	 * @param newRow The most recently-fetched row from
+	 *  the database system catalogs.
+	 * @param oldRow The row that was replaced when the
+	 *  newRow was inserted (because they had the
+	 *  same row id), or "null" if we were already
+	 *  here once for this row id, and so just want
+	 *  insert a new row.
+	 * @param orderedRows The ordered set of rows, into
+	 *  which oldRow and newRow need to be inserted.
+	 * @return oldRow and newRow have been inserted
+	 *  into orderedRows, and each has a (truly)
+	 *  unique id with it.
+	 ****/
+
+	private void handleDuplicateRow(
+		ArrayList newRow, ArrayList oldRow,
+		TreeMap orderedRows)
+	{
+
+		// Add the received rows (old and new) with
+		// unique row ids.
+
+		StringBuffer newRowId = new StringBuffer();
+		for (int i = 0; i < newRow.size(); i++)
+			newRowId.append((String)newRow.get(i));
+
+		Object obj = (ArrayList)(orderedRows.put(
+						newRowId.toString(), newRow));
+		if (obj != null)
+		// entire row is a duplicate.
+			orderedRows.put(newRowId.toString() + 
+				duplicateCounter++, newRow);
+
+		if (oldRow != null) {
+
+			StringBuffer oldRowId = new StringBuffer();
+			for (int i = 0; i < oldRow.size(); i++)
+				oldRowId.append((String)oldRow.get(i));
+
+			obj = (ArrayList)(orderedRows.put(
+				oldRowId.toString(), oldRow));
+			if (obj != null)
+			// entire row is a duplicate.
+				orderedRows.put(oldRowId.toString() +
+					duplicateCounter++, oldRow);
+		}
+
+		return;
+
+	}
+
+	/* **********************************************
+	 * createDBFromDDL:
+	 * Read from the given script and use it to create
+	 * a new database of the given name.
+	 * @param newDBName Name of the database to be created.
+	 * @param scriptName Name of the script containing the
+	 *  DDL from which the new database will be created.
+	 * @return New database has been created from
+	 *   the script; any commands in the script that
+	 *   failed to execute have been echoed to output.
+	 ****/
+
+	private void createDBFromDDL(String newDBName,
+		String scriptName) throws Exception
+	{
+
+		System.out.println("\n\nCreating database '" + newDBName +
+			"' from ddl script '" + scriptName + "'");
+
+		Connection conn = DriverManager.getConnection(
+			"jdbc:derby:" + newDBName + ";create=true");
+
+		Statement stmt = conn.createStatement();
+		BufferedReader ddlScript =
+			new BufferedReader(new FileReader(scriptName));
+
+		for (String sqlCmd = ddlScript.readLine(); sqlCmd != null;
+			sqlCmd = ddlScript.readLine()) {
+
+			if (sqlCmd.indexOf("--") == 0)
+			// then this is a script comment; ignore it;
+				continue;
+			else if (sqlCmd.trim().length() == 0)
+			// blank line; ignore it.
+				continue;
+
+			// Execute the command.
+			if ((sqlCmd.charAt(sqlCmd.length()-1) == TEST_DELIMITER)
+			  || (sqlCmd.charAt(sqlCmd.length()-1) == ';'))
+			// strip off the delimiter.
+				sqlCmd = sqlCmd.substring(0, sqlCmd.length()-1);
+
+			try {
+				stmt.execute(sqlCmd);
+			} catch (Exception e) {
+				System.out.println("FAILED: to execute cmd " +
+					"from DDL script:\n" + sqlCmd + "\n");
+				System.out.println(e.getMessage());
+			}
+
+		}
+
+		// Cleanup.
+		ddlScript.close();
+		stmt.close();
+		conn.close();
+
+		return;
+
+	}
+
+	/* **********************************************
+	 * writeOut:
+	 * Write the received string to some output.
+	 * @param str String to write.
+	 ****/
+
+	private static void writeOut(String str) {
+
+		System.out.println(str);
+		return;
+
+	}
+
+	/* **********************************************
+	 * loadIdMappings:
+	 * Load mappings of object ids to object names
+	 * for purposes of having meaningful output
+	 * and for creating unique ids on the rows of
+	 * the system catalogs.
+	 * @param stmt Statement on a connection to the
+	 *  database being examined.
+	 * @param conn Connection to the database being
+	 *   examined.
+	 * @return A HashMap with all relevant id-to-
+	 *  name mappings has been returned.
+	 ****/
+
+	private HashMap loadIdMappings(Statement stmt,
+		Connection conn) throws Exception {
+
+		HashMap idToNameMap = new HashMap();
+
+		// Table ids.
+		ResultSet rs = stmt.executeQuery(
+			"select tableid, tablename from sys.systables");
+		while (rs.next())
+			idToNameMap.put(rs.getString(1), rs.getString(2));
+
+		// Schema ids.
+		rs = stmt.executeQuery(
+			"select schemaid, schemaname from sys.sysschemas");
+		while (rs.next())
+			idToNameMap.put(rs.getString(1), rs.getString(2));
+
+		// Constraint ids.
+		rs = stmt.executeQuery(
+			"select constraintid, constraintname from " +
+			"sys.sysconstraints");
+		while (rs.next())
+			idToNameMap.put(rs.getString(1), rs.getString(2));
+
+		return idToNameMap;
+
+	}
+
+	/* **********************************************
+	 * getDependsData:
+	 * Forms a string containing detailed information
+	 * about a row in the SYSDEPENDS table, and returns
+	 * that string.
+	 * @param rs Result set with SYSDEPENDS rows; current
+	 *  row is the one for which we're getting the
+	 *  data.
+	 * @param conn Connection to the database being
+	 *   examined.
+	 * @param idToNameMap mapping of object ids to names
+	 *  for the database in question.
+	 * @return Schema, type and name of both the Provider
+	 *   and the Dependent for the current row of
+	 *   SYSDEPENDS have been returned as a string.
+	 ****/
+
+	private String getDependsData(ResultSet rs,
+		Connection conn, HashMap idToNameMap)
+		throws Exception
+	{
+
+		DependableFinder dep =
+			(DependableFinder)rs.getObject(3);
+
+		DependableFinder prov =
+			(DependableFinder)rs.getObject(5);
+
+		String depType = dep.getSQLObjectType();
+		String provType = prov.getSQLObjectType();
+
+		Statement dependsStmt = conn.createStatement();
+		StringBuffer dependsData = new StringBuffer();
+		dependsData.append(getHiddenDependsData(depType,
+			rs.getString(2), dependsStmt, idToNameMap));
+		dependsData.append(" -> ");
+		dependsData.append(getHiddenDependsData(provType,
+			rs.getString(4), dependsStmt, idToNameMap));
+
+		return dependsData.toString();
+
+	}
+
+	/* **********************************************
+	 * getHiddenDependsData:
+	 * Returns a string containing the schema and
+	 * name of the object having the received id.
+	 * All object ids received by this message come
+	 * from rows of the SYSDEPENDS table.
+	 * @param type Type of the object that has the received
+	 *   object id.
+	 * @param id Id of the object in question.
+	 * @param stmt Statement from the database in question.
+	 * @param idToNameMap mapping of ids to names for
+	 *  the database in question.
+	 * @isProvider True if we're getting data for a
+	 *  Provider object; false if we're getting data for
+	 *  a Dependent object.
+	 * @return Schema, type, and name for the object with
+	 *   the received id have been returned as a string.
+	 ****/
+
+	private String getHiddenDependsData(String type,
+		String id, Statement pStmt, HashMap idToNameMap)
+		throws Exception
+	{
+
+		ResultSet rs = null;
+		if (type.equals("Constraint")) {
+			rs = pStmt.executeQuery(
+				"select schemaid, constraintname from " +
+				"sys.sysconstraints where " +
+				"constraintid = '" + id + "'");
+		}
+		else if (type.equals("StoredPreparedStatement")) {
+			rs = pStmt.executeQuery(
+				"select schemaid, stmtname from " +
+				"sys.sysstatements where stmtid = '" +
+				id + "'");
+		}
+		else if (type.equals("Trigger")) {
+			rs = pStmt.executeQuery(
+				"select schemaid, triggername from " +
+				"sys.systriggers where triggerid = '" +
+				id + "'");
+		}
+		else if (type.equals("View") || type.equals("Table")
+		  || type.equals("ColumnsInTable")) {
+			rs = pStmt.executeQuery(
+				"select schemaid, tablename from " +
+				"sys.systables where tableid = '" +
+				id + "'");
+		}
+		else if (type.equals("Conglomerate")) {
+			rs = pStmt.executeQuery(
+				"select schemaid, conglomeratename from " +
+				"sys.sysconglomerates where conglomerateid = '" +
+				id + "'");
+		}
+		else {
+			System.out.println("WARNING: Unexpected " +
+				"dependent type: " + type);
+			return "";
+		}
+
+		if (rs.next()) {
+			String schema = (String)idToNameMap.get(rs.getString(1));
+			if (isIgnorableSchema(schema))
+			// system object (so we want to ignore it); indicate
+			// this by returning the string "SYS_OBJECT".
+				return "SYS_OBJECT";
+			StringBuffer result = new StringBuffer();
+			result.append("<");
+			result.append(type);
+			result.append(">");
+			result.append(schema);
+			result.append(".");
+			if (isSystemGenerated(rs.getString(2)))
+				result.append("<sysname>");
+			else
+				result.append(rs.getString(2));
+			return result.toString();
+		}
+
+		return "";
+
+	}
+
+	/* **********************************************
+	 * deleteDB:
+	 * Deletes the database with the received name
+	 * from the test directory.
+	 * @param dbName Name of the database to be deleted.
+	 * @return Database has been completely deleted;
+	 *   if deletion failed for any reason, a message
+	 *   saying so has been printed to output.
+	 ****/
+
+	private void deleteDB(String dbName)
+		throws Exception
+	{
+
+		// Get the full path.
+		String deletePath = (new
+			File(dbPath + separator + dbName)).getAbsolutePath();
+
+		// Have to shut it down before we can delete it.
+		try {
+			Connection conn =
+				DriverManager.getConnection("jdbc:derby:" + 
+					deletePath + ";shutdown=true");
+			conn.close();
+		} catch (SQLException se) {
+		// shutdown exception.
+		}
+
+		File f = new File(deletePath);
+		if (!f.exists()) 
+		// nothing to do.
+			return;
+
+		File [] files = f.listFiles();
+		for (int i = 0; i < files.length; i++)
+			deleteFile(files[i]);
+
+		if (!f.delete()) {
+		// still failed.
+			System.out.println("ERROR: deleting: " +
+				f.getName());
+		}
+
+		// And finally, delete the CSJARS directory,
+		// if there is one.
+		deleteFile(new File(System.getProperty("user.dir") +
+			separator + "CSJARS"));
+
+		System.out.println("Database '" + dbName + "' deleted.");
+		return;
+
+	}
+
+	/* **********************************************
+	 * deleteFile:
+	 * Delete everything in a given directory, then
+	 * delete the directory itself (recursive).
+	 * @param aFile File object representing the directory
+	 *  to be deleted.
+	 * @return the directory corresponding to aFile
+	 *  has been deleted, as have all of its contents.
+	 ****/
+
+	private void deleteFile(File aFile)
+		throws Exception
+	{
+
+		if (!aFile.exists())
+		// don't bother.
+			return;
+
+		if (aFile.delete())
+		// just a file; we're done.
+			return;
+
+		// Otherwise, have to descend and delete all
+		// files in this directory.
+		File [] files = aFile.listFiles();
+		if (files != null) {
+			for (int i = 0; i < files.length; i++)
+				deleteFile(files[i]);
+		}
+
+		// Now try to delete.
+		if (!aFile.delete()) {
+		// still failed.
+			System.out.println("ERROR: deleting: " +
+				aFile.getName());
+		}
+
+		return;
+
+	}
+
+	/* **********************************************
+	 * dumpFileToSysOut:
+	 * Checks to see if the received file is empty,
+	 * and prints a message saying so.
+	 * @param fName Name of the file to be written to output.
+	 * @return The contents of the specified file have
+	 *   been written to System.out.
+	 ****/
+
+	private void dumpFileToSysOut(String fName) {
+
+		try {
+
+			BufferedReader logFile =
+				new BufferedReader(new FileReader(fName));
+
+			if (logFile.readLine() != null)
+				System.out.println("File " + fName + " was NOT " +
+					"empty; refer to that file (in the test " +
+					"directory) to see its contents.");
+			else
+				System.out.println("File " + fName + " was empty.");
+
+		} catch (Exception e) {
+			System.out.println("FAILED: to dump log file.");
+			e.printStackTrace();
+		}
+
+		return;
+
+	}
+
+	/* **********************************************
+	 * isSystemGenerated:
+	 * Returns true if the received string looks like
+	 * it is a system-generated string.  We assume
+	 * it's system-generated if either 1) it starts
+	 * with the letters "SQL", in which case it's a
+	 * system-name, or 2) it has a dash in it, in which
+	 * case it's a system id.
+	 * @param str The string to check.
+	 * @return True if we assume the string is system-
+	 *  generated, false otherwise.
+	 ****/
+
+	private boolean isSystemGenerated(String str) {
+
+		return (looksLikeSysGenName(str) ||
+			looksLikeSysGenId(str));
+
+	}
+
+	/* **********************************************
+	 * looksLikeSysGenName:
+	 * See if the received string looks like it is
+	 * a system-generated name.  There are two types
+	 * of system-generated names: 1) visible names,
+	 * which start with "SQL", and 2) hidden names,
+	 * which exist for Stored Statements that are
+	 * used to back triggers; these names start with
+	 * "TRIGGERACTN_" and then have a UUID.
+	 * NOTE: This test assumes that none of object names
+	 * provided in "dblook_makeDB.sql" satisfy
+	 * either of these conditions.  If they do, they
+	 * will be filtered out of the test output.
+	 * @param val The string value in question.
+	 * @return True if the value looks like it is a system-
+	 *  generated name; false otherwise.
+	 ****/
+
+	private boolean looksLikeSysGenName(String val) {
+
+		return ((val != null) &&
+			((val.trim().indexOf("SQL") == 0) || 			// case 1.
+			((val.trim().indexOf("TRIGGERACTN_") == 0) &&	// case 2.
+			(val.indexOf("-") != -1))));
+
+	}
+
+	/* **********************************************
+	 * looksLikeSysGenId:
+	 * See if the received string looks like it is
+	 * a system-generated id (i.e. contains a dash (-)).
+	 * NOTE: This test assumes that none of object names
+	 * provided in "dblook_makeDB.sql" will contain
+	 * dashes.  If they do, then they will be filtered out
+	 * in the test output.
+	 * @param val The string value in question.
+	 * @return True if the value looks like it is a system-
+	 *  generated id; false otherwise.
+	 ****/
+
+	private boolean looksLikeSysGenId(String val) {
+
+		return ((val != null) && (val.indexOf("-") != -1));
+
+	}
+
+	/* **********************************************
+	 * columnHoldsObjectName:
+	 * Return true if the received column, which is from
+	 * some system table, holds the _name_ of a database
+	 * object (table, constraint, etc.).  Typically, we
+	 * can just look for the keyword "NAME"; the exception
+	 * is aliases, where the name is held in a column called
+	 * ALIAS.
+	 * @param colName Name of the column in question.
+	 * @return True if the column name indicates that it
+	 *  holds the _name_ of a database object; false if the
+	 *  column name indicates that it holds something else.
+	 ****/
+
+	private boolean columnHoldsObjectName(String colName) {
+
+		return (colName.equals("ALIAS") ||
+				(colName.indexOf("NAME") != -1));
+
+	}
+
+	/* **********************************************
+	 * printAsHeader:
+	 * Print the received string to output as a
+	 * header.
+	 * @param str String to print.
+	 ****/
+
+	private void printAsHeader(String str) {
+
+		writeOut("--\n*******************************************");
+		writeOut(str);
+		writeOut("*******************************************\n");
+		return;
+
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/dblook_test_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1 @@
+supportfiles=tools/dblook_makeDB.sql,tools/dblook_test.jar

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_app.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_app.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,24 @@
+#
+# This is the default system properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE DERBY SYSTEM IN THIS FILE.  
+# *** THEY BELONG IN default_derby.properties.
+#
+# This file will get handed to the test on the command line in a -p <filename>
+# argument.
+#
+# This causes ij to load the driver and make an
+# initial connection to the database.
+#
+# The .java test has to call util.getPropertyArg and util.startJBMS
+# to process the property file.  See any of the .java tests for this code.
+#
+# If you want to alter these to use a different driver, connect to a different
+# database, or to not be used, override this file by creating
+# a file <testname>_app.properties to be used instead of this file.
+#
+database=jdbc:derby:wombat;create=true
+derby.optimizer.noTimeout=true
+
+ij.showNoConnectionsAtStart=true
+ij.showNoCountForSelect=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_derby.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/default_derby.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,21 @@
+#
+# This is the default derby properties file for SQL and JAVA tests.
+#
+# *** DO NOT PUT PROPERTIES FOR THE JAVA ENVIRONMENT IN THIS FILE.  
+# *** THEY BELONG IN default_app.properties.
+#
+# This file will get renamed to be derby.properties for all
+# tests without a <testname>_derby.properties file defined.
+#
+# If you want to alter these to use other settings, 
+# or to not be used, override this file by creating
+# a file <testname>_derby.properties to be used instead of this file.
+#
+
+# statement cache size of 20 is the default, do not add this property
+# to this file.  If your test wants to do consistency checking that
+# requires an empty cache, add a special test_derby.properties file, see
+# inbetween_derby.properties for an example.
+#
+# derby.language.statementCacheSize=20
+derby.infolog.append=true

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ConsistencyChecker.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ConsistencyChecker.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,140 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1997, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derby.iapi.error.StandardException;
+
+import org.apache.derby.iapi.sql.dictionary.DataDictionaryContext;
+import org.apache.derby.iapi.sql.dictionary.DataDictionary;
+import org.apache.derby.iapi.sql.dictionary.SchemaDescriptor;
+import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
+import org.apache.derby.iapi.sql.dictionary.ColumnDescriptor;
+import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
+
+import org.apache.derby.iapi.sql.depend.DependencyManager;
+
+import org.apache.derby.iapi.sql.execute.ExecutionContext;
+
+import org.apache.derby.iapi.types.DataValueFactory;
+
+import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+
+import org.apache.derby.iapi.store.access.TransactionController;
+import org.apache.derby.iapi.types.RowLocation;
+import org.apache.derby.iapi.store.access.ScanController;
+import org.apache.derby.iapi.store.access.ConglomerateController;
+
+import org.apache.derby.iapi.services.context.ContextService;
+
+import org.apache.derby.iapi.services.io.FormatableBitSet;
+
+/**
+ * This class provides static methods for checking the consistency of database
+ * objects like tables.
+ */
+public class ConsistencyChecker
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1997_2004;
+
+	/**
+	 * Run all of the consistency checkers which do not take parameters.
+	 * Actually, just run the ones that "make sense" to run.  Today,
+	 * that is:
+	 *		countOpens()
+	 *
+	 * @return String		If an inconsistency is found, and if DEBUG is on, 
+	 *						then a string will be returned with more info.  
+	 *						If DEBUG is off, then a simple string will be 
+	 *						returned stating whether or not there are open scans.
+	 *
+	 * @exception StandardException		Thrown on error
+	 * @exception java.sql.SQLException		Thrown on error
+	 */
+	public static String runConsistencyChecker() throws StandardException, java.sql.SQLException
+	{
+		return countOpens() + countDependencies();
+	}
+
+	/**
+	 * Check to make sure that there are no open conglomerates, scans or sorts.
+	 *
+	 * @return String		If an inconsistency is found, and if DEBUG is on, 
+	 *						then a string will be returned with more info.  
+	 *						If DEBUG is off, then a simple string will be 
+	 *						returned stating whether or not there are open scans.
+	 *
+	 * @exception StandardException		Thrown on error
+	 */
+	public static String countOpens() throws StandardException
+	{
+		int						numOpens = 0;
+		LanguageConnectionContext lcc;
+		String					output = "No open scans, etc.\n";
+		TransactionController	tc;
+
+		lcc = (LanguageConnectionContext)
+			ContextService.getContext(LanguageConnectionContext.CONTEXT_ID);
+		tc = lcc.getTransactionExecute();
+
+		numOpens = tc.countOpens(TransactionController.OPEN_TOTAL);
+
+		if (numOpens > 0)
+		{
+            output = numOpens + " conglomerates/scans/sorts found open\n";
+
+		}
+
+		return output;
+	}
+
+	/**
+	 * Check to make sure that there are no active dependencies (stored or
+	 * in memory).
+	 *
+	 * @return String		If an inconsistency is found, and if DEBUG is on, 
+	 *						then a string will be returned with more info.  
+	 *						If DEBUG is off, then a simple string will be 
+	 *						returned stating whether or not there are open scans.
+	 *
+	 * @exception StandardException		Thrown on error
+	 * @exception java.sql.SQLException		Thrown on error
+	 */
+	public static String countDependencies() throws StandardException, java.sql.SQLException
+	{
+		int						numDependencies = 0;
+		DataDictionary			dd;
+		DataDictionaryContext	ddc;
+		DependencyManager		dm;
+		StringBuffer			debugBuf = new StringBuffer();
+
+		ddc = (DataDictionaryContext)
+				(ContextService.getContext(DataDictionaryContext.CONTEXT_ID));
+
+		dd = ddc.getDataDictionary();
+		dm = dd.getDependencyManager();
+
+		numDependencies = dm.countDependencies();
+
+		if (numDependencies > 0)
+		{
+            debugBuf.append(numDependencies + " dependencies found");
+		}
+		else
+		{
+			debugBuf.append("No outstanding dependencies.\n");
+		}
+
+		return debugBuf.toString();
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/DbFile.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/DbFile.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,156 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.store.access.FileResource;
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.lang.StringBuffer;
+import java.net.URL;
+
+/**
+  Utility class for testing files stored in the database.
+  */ 
+public class DbFile
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+	/**
+	  Read the current generation of a file stored in the
+	  database we are connected to and return a 1 line string
+	  representation of the file.
+
+	  Sample usage
+	  values org.apache.derbyTesting.functionTests.util.DbFile::readAsString('S1','J1');
+	  @exception Exception Oops.
+	  */
+/*	
+CANT USE JarAccess - not a public API (actually it's gone!)
+public static String
+	readAsString(String schemaName, String sqlName)
+		 throws Exception
+	{
+		InputStream is = JarAccess.getAsStream(schemaName,
+											sqlName,
+ 											FileResource.CURRENT_GENERATION_ID);
+		return stringFromFile(is);
+	}
+*/
+	/**
+	  Create a string that contains a representation of the content of
+	  a file for testing.
+	  @exception Exception Oops.
+	  */
+	public static String
+	stringFromFile(InputStream is)
+		 throws Exception
+	{
+		InputStreamReader isr = new InputStreamReader(is);
+		BufferedReader br =
+			new BufferedReader(isr);
+		StringBuffer sb = new StringBuffer();
+		String l;
+		while((l = br.readLine()) != null) {
+			sb.append(l);
+			sb.append("<CR>");
+		}
+		is.close();
+		return sb.toString();
+	}
+
+	/**
+	  Get the URL for a resource.
+
+	  @param packageName the name of the resource package
+	  @param name the name of the resourse.
+	  */
+	public static URL
+	getResourceURL(String packageName, String name)
+	{
+		String resourceName =
+			"/"+
+			packageName.replace('.','/')+
+			"/"+
+			name;
+		//
+		//We need a class to get our URL. Since we give a
+		//fully qualified name for the URL, any class will
+		//do.
+		Class c = resourceName.getClass();
+		URL url = c.getResource(resourceName);
+		return url;
+	}
+
+	/**
+	  Get an InputStream for reading a resource.
+
+	  @param packageName the name of the resource package
+	  @param name the name of the resourse.
+	  @exception Exception Oops.
+	  */
+	public static InputStream
+	getResourceAsStream(String packageName, String name)
+	{
+		String resourceName =
+			"/"+
+			packageName.replace('.','/')+
+			"/"+
+			name;
+		//
+		//We need a class to get our URL. Since we give a
+		//fully qualified name for the URL, any class will
+		//do.
+		Class c = resourceName.getClass();
+		InputStream result = c.getResourceAsStream(resourceName);
+		return result;
+	}
+
+	public	static	boolean	deleteFile( String outputFileName )
+		 throws Exception
+	{
+		File f = new File( outputFileName );
+
+		return f.delete();
+	}
+
+	public static String mkFileFromResource
+	(String packageName, String resourceName)
+		 throws Exception
+	{
+		return mkFileFromResource( packageName, resourceName, resourceName );
+	}
+
+	public static String mkFileFromResource
+	( String packageName, String resourceName, String outputFileName )
+		 throws Exception
+	{
+		File f = new File( outputFileName );
+		InputStream is = getResourceAsStream(packageName,resourceName);
+		BufferedInputStream bis = new BufferedInputStream(is);
+		OutputStream os = new FileOutputStream(f);
+		byte[]buf=new byte[4096];
+		int readThisTime = 0;
+		while((readThisTime = bis.read(buf)) != -1)
+			os.write(buf,0,readThisTime);
+		os.close();
+		return f.getAbsolutePath();
+	}
+}
+ 

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ExtendingInterface.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ExtendingInterface.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,27 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+public interface ExtendingInterface extends Runnable {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	public static int INTERFACE_FIELD = 7541;
+
+	/**
+		Force an ambigutity with Object's wait.
+	*/
+	public void wait(int a, long b);
+
+	public Object eimethod(Object a);
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Formatters.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Formatters.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,121 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+
+public class Formatters { 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	static final char[] hexDigits = { '0', '1', '2', '3',
+									  '4', '5', '6', '7',
+									  '8', '9', 'A', 'B',
+									  'C', 'D', 'E', 'F' };
+
+	/** This method converts the non-ASCII characters in the input
+	 *  parameter to unicode escape sequences.
+	 * @param in    String to format
+	 * @return String containing unicode escape sequences for non-ASCII chars
+	 */
+	public static String format(String in) {
+		if (in == null)
+			return null;
+
+		StringBuffer out = new StringBuffer(in.length());
+		char hexValue[] = new char[4];
+
+		for (int i = 0; i < in.length(); i++) {
+			char inChar = in.charAt(i);
+
+			if (inChar < 128) {
+				out.append(inChar);
+			} else {
+				out.append("\\u");
+
+				int number = (int) inChar;
+
+				int digit = number % 16;
+
+				hexValue[3] = hexDigits[digit];
+
+				number /= 16;
+
+				digit = number % 16;
+
+				hexValue[2] = hexDigits[digit];
+
+				number /= 16;
+
+				digit = number %16;
+
+				hexValue[1] = hexDigits[digit];
+
+				number /= 16;
+
+				digit = number % 16;
+
+				hexValue[0] = hexDigits[digit];
+
+				out.append(hexValue);
+			}
+		}
+
+		return out.toString();
+	}
+
+
+	/**
+	 * repeatChar is used to create strings of varying lengths.
+	 * called from various tests to test edge cases and such.
+	 *
+	 * @param c             character to repeat
+	 * @param repeatCount   Number of times to repeat character
+	 * @return              String of repeatCount characters c
+	 */
+   public static String repeatChar(String c, int repeatCount)
+   {
+	   char ch = c.charAt(0);
+
+	   char[] chArray = new char[repeatCount];
+	   for (int i = 0; i < repeatCount; i++)
+	   {
+		   chArray[i] = ch;
+	   }
+
+	   return new String(chArray);
+
+   }
+
+	/**
+	 * Pads out a string to the specified size
+	 *
+	 * @param oldValue value to be padded
+	 * @param size     size of resulting string
+	 * @return oldValue padded with spaces to the specified size
+	 */
+	public static String padString(String oldValue, int size)
+	{
+		String newValue = oldValue;
+		if (newValue != null)
+		{
+			char [] newCharArr = new char[size];					
+			oldValue.getChars(0,oldValue.length(),newCharArr,0);
+			java.util.Arrays.fill(newCharArr,oldValue.length(),
+								  newCharArr.length -1, ' ');
+			newValue = new String (newCharArr);
+		}
+			
+		return newValue;
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBCTestDisplayUtil.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBCTestDisplayUtil.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,166 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.Types;
+
+import java.util.Properties;
+import java.util.Enumeration;
+import java.util.Vector;
+
+
+import org.apache.derby.impl.tools.ij.ijException;
+
+import org.apache.derby.tools.JDBCDisplayUtil;
+
+/**
+   Show common format for Network Server and Embedded Exceptions
+**/
+
+public class JDBCTestDisplayUtil extends JDBCDisplayUtil {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2004;
+
+	/**
+	   Show common format for Network Server and Embedded Exceptions
+	   @param out PrintStream to write to
+	   @param e Throwable to print
+	*/
+	
+	static public void ShowCommonSQLException(PrintStream out, Throwable e) {
+		if (e == null) return;
+		
+		if (e instanceof SQLException)
+		{
+			SQLException se = (SQLException)e;
+			if (isDataConversionException(se))
+				out.println ("Data Conversion SQLException");
+			else if (isResultSetClosedException(se))
+				out.println("Result Set Closed Exception");
+			else if (isNullSQLStringException(se))
+				out.println("Null SQL String Exception");
+			else if (isInvalidParameterException(se))
+					out.println("Invalid Parameter SQL Exception");
+			else if (isValidOnScrollCursorsException(se))
+				out.println("Method Only Valid On Scroll Cursors SQL Exception");
+			else if (isInvalidMethodReturnException(se))
+				out.println("Invalid Method Returning a ResultSet or Row Count SQL Exception");
+			else if (isTableDoesNotExistException(se))
+					out.println("Table Does Not Exist SQL Exception");
+			else if (isReturnsInvalidResultSetException(se))
+				out.println("Invalid Method Returning ResultSet SQL Exception");
+			else 
+				ShowSQLException(out, se);
+		}
+		else 
+			ShowException(out, e);
+	}
+	
+	static private boolean isDataConversionException(SQLException se)
+	{
+		if ((se.getMessage() != null &&
+			 se.getMessage().indexOf("Invalid data conversion") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("22018")
+				 || se.getSQLState().equals("22005")
+				 || se.getSQLState().equals("22007"))))
+			return true;
+		return false;
+	}
+	
+	static private boolean isResultSetClosedException(SQLException se)
+	{
+		if ((se.getMessage() != null &&
+			 se.getMessage().indexOf("Invalid operation: result set closed") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("XCL16"))))
+			return true;
+		return false;
+	}
+	
+	static private boolean isNullSQLStringException(SQLException se)
+	{
+		if ((se.getMessage() != null &&
+			 se.getMessage().indexOf("Null SQL string passed.") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("XJ067"))))
+			return true;
+		return false;
+	}
+
+	static private boolean isInvalidParameterException(SQLException se)
+	{
+		if ((se.getMessage() != null &&
+			 se.getMessage().indexOf("Invalid parameter value") >= 0)
+			|| (se.getMessage().indexOf("Invalid fetch size") >= 0)
+			|| (se.getMessage().indexOf("Invalid fetch direction") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("XJ066"))))
+			return true;
+		return false;
+	}
+	
+	static private boolean isValidOnScrollCursorsException(SQLException se)
+	{
+		if ((se.getMessage() != null &&
+			 se.getMessage().indexOf("' method is only allowed on scroll cursors.") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("XJ061"))))
+			return true;
+		return false;
+	}
+	
+	static private boolean isInvalidMethodReturnException(SQLException se)
+	{
+		if (((se.getMessage() != null &&
+			  se.getMessage().indexOf("executeQuery method cannot be used for update.") >= 0)
+			 ||  se.getMessage().indexOf("executeUpdate method cannot be used for query.") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("X0Y78")
+				 || se.getSQLState().equals("X0Y79"))))
+			return true;
+		return false;
+	}
+	
+	static private boolean isTableDoesNotExistException(SQLException se)
+	{
+		if (se.getSQLState() != null &&
+			se.getSQLState().equals("42X05"))
+			return true;
+		return false;
+	}
+	
+	static private boolean isReturnsInvalidResultSetException(SQLException se)
+	{
+		if ((se.getMessage() != null &&
+			 se.getMessage().indexOf("cannot be called with a statement that returns a ResultSet.") >= 0)
+			|| (se.getSQLState() != null &&
+				(se.getSQLState().equals("X0Y79"))))
+			return true;
+		return false;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ManyMethods.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ManyMethods.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,576 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1997, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+import java.math.BigDecimal;
+
+import java.io.Serializable;
+
+/**
+ * This class is for testing method calls on user-defined types.  It has
+ * many different methods for testing different cases.
+ */
+
+public class ManyMethods implements Serializable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1997_2004;
+
+	int	value;
+	protected int protectedValue;
+	private int privateValue;
+	public int publicValue;
+	public short publicshort;
+	public Short publicShort;
+	public byte publicbyte;
+	public Byte publicByte;
+	public int publicint;
+	public Integer publicInteger;
+	public long publiclong;
+	public Long publicLong;
+	public boolean publicboolean;
+	public Boolean publicBoolean;
+	public float publicfloat;
+	public Float publicFloat;
+	public double publicdouble;
+	public Double publicDouble;
+	public String publicString;
+	public Date publicDate;
+	public Time publicTime;
+	public Timestamp publicTimestamp;
+	public ManyMethods myself;
+
+	public static int NONOVERLOADED_INTSTATIC = 1;
+	public static int OVERLOADED_INTSTATIC = 1;
+	public static int OVEROVERLOADED_INTSTATIC = 1;
+
+	public ManyMethods(int value)
+	{
+		this.value = value;
+		this.myself = this;
+		protectedValue = value;
+		privateValue = value;
+		publicValue = value;
+		publicint = value;
+		publicInteger = new Integer(value);
+		publicshort = (short) value;
+		publicShort = new Short((short) value);
+		publicbyte = (byte) value;
+		publicByte = new Byte((byte) value);
+		publiclong = (long) value;
+		publicLong = new Long((long) value);
+		publicboolean = booleanMethod();
+		publicBoolean = BooleanMethod();
+		publicfloat = floatMethod();
+		publicFloat = FloatMethod();
+		publicdouble = doubleMethod();
+		publicDouble = DoubleMethod();
+		publicString = StringMethod();
+		publicDate = DateMethod();
+		publicTime = TimeMethod();
+		publicTimestamp = TimestampMethod();
+	}
+
+	/*
+	** The following methods are for testing signature matching.  Each method
+	** takes a single parameter.  The parameter types vary by method.  All
+	** of the Java primitive types are covered as well as their wrapper classes.
+	** All of the Java classes corresponding to the currently supported SQL
+	** types are covered.
+	*/
+
+	public String parmType(byte value)
+	{
+		return "byte parameter";
+	}
+
+	public String parmType(byte[][][] value)
+	{
+		return "byte[][][] parameter";
+	}
+
+	public String parmType(Byte value)
+	{
+		return "java.lang.Byte parameter";
+	}
+
+	public String parmType(char value)
+	{
+		return "char parameter";
+	}
+
+	public String parmType(Character value)
+	{
+		return "java.lang.Character parameter";
+	}
+
+	public String parmType(double value)
+	{
+		return "double parameter";
+	}
+
+	public String parmType(Double value)
+	{
+		return "java.lang.Double parameter";
+	}
+
+	public String parmType(BigDecimal value)
+	{
+		return "java.math.BigDecimal parameter";
+	}
+
+	public String parmType(float value)
+	{
+		return "float parameter";
+	}
+
+	public String parmType(Float value)
+	{
+		return "java.lang.Float parameter";
+	}
+
+	public String parmType(int value)
+	{
+		return "int parameter";
+	}
+
+	public String parmType(Integer value)
+	{
+		return "java.lang.Integer parameter";
+	}
+
+	public String parmType(long value)
+	{
+		return "long parameter";
+	}
+
+	public String parmType(Long value)
+	{
+		return "java.lang.Long parameter";
+	}
+
+	public String parmType(short value)
+	{
+		return "short parameter";
+	}
+
+	public String parmType(Short value)
+	{
+		return "java.lang.Short parameter";
+	}
+
+	public String parmType(boolean value)
+	{
+		return "boolean parameter";
+	}
+
+	public String parmType(Boolean value)
+	{
+		return "java.lang.Boolean parameter";
+	}
+
+	public String parmType(String value)
+	{
+		return "java.lang.String parameter";
+	}
+
+	public String parmType(Date value)
+	{
+		return "java.sql.Date parameter";
+	}
+
+	public String parmType(Time value)
+	{
+		return "java.sql.Time parameter";
+	}
+
+	public String parmType(Timestamp value)
+	{
+		return "java.sql.Timestamp parameter";
+	}
+
+	/*
+	** The following methods return all of the java primitive types and
+	** their wrapper classes, plus all of the types corresponding to the
+	** built-in SQL types.
+	*/
+	public byte byteMethod()
+	{
+		return 1;
+	}
+
+	public byte[][][] byteArrayArrayArrayMethod()
+	{
+		return new byte[3][][];
+	}
+
+	public Byte ByteMethod()
+	{
+		return new Byte((byte) 1);
+	}
+
+	public char charMethod()
+	{
+		return 'a';
+	}
+
+	public Character CharacterMethod()
+	{
+		return new Character('a');
+	}
+
+	public double doubleMethod()
+	{
+		return 1.5;
+	}
+
+	public Double DoubleMethod()
+	{
+		return new Double(1.5);
+	}
+
+	public BigDecimal BigDecimalMethod()
+	{
+		return new BigDecimal(1.4d);
+	}
+
+	public float floatMethod()
+	{
+		return 2.5F;
+	}
+
+	public Float FloatMethod()
+	{
+		return new Float(2.5F);
+	}
+
+	public int intMethod()
+	{
+		return 2;
+	}
+
+	public Integer IntegerMethod()
+	{
+		return new Integer(2);
+	}
+
+	public long longMethod()
+	{
+		return 3L;
+	}
+
+	public Long LongMethod()
+	{
+		return new Long(3L);
+	}
+
+	public short shortMethod()
+	{
+		return (short) 4;
+	}
+
+	public Short ShortMethod()
+	{
+		return new Short((short) 4);
+	}
+
+	public boolean booleanMethod()
+	{
+		return true;
+	}
+
+	public Boolean BooleanMethod()
+	{
+		return new Boolean(true);
+	}
+
+	public String StringMethod()
+	{
+		return "A String";
+	}
+
+	public Date DateMethod()
+	{
+		/* July 2, 1997 */
+		// deprecated...note, that it was actually august, not july.
+		// return new Date(97, 7, 2);
+		return new Date(870505200000L);
+	}
+
+	public Time TimeMethod()
+	{
+		/* 10:58:33 AM */
+		// deprecated...
+		// return new Time(10, 58, 33);
+		return new Time(68313000L);
+	}
+
+	public Timestamp TimestampMethod()
+	{
+		/* July 2, 1997 10:59:15.0 AM */
+		// deprecated...note, actually August, not July, 1997
+		// return new Timestamp(97, 7, 2, 10, 59, 15, 0);
+		return new Timestamp(870544755000L);
+	}
+
+	public ManyMethods ManyMethodsMethod()
+	{
+		return this;
+	}
+
+	/*
+	** The following methods are for testing null arguments.  These methods
+	** return Strings with the names of the parameter types, so we can be
+	** sure the right method was called.
+	*/
+	public String isNull(Boolean value)
+	{
+		if (value == null)
+			return "Boolean is null";
+		else
+			return "Boolean is not null";
+	}
+
+	public String isNull(String value)
+	{
+		if (value == null)
+			return "String is null";
+		else
+			return "String is not null";
+	}
+
+	public String isNull(Double value)
+	{
+		if (value == null)
+			return "Double is null";
+		else
+			return "Double is not null";
+	}
+
+	public String isNull(BigDecimal value)
+	{
+		if (value == null)
+			return "BigDecimal is null";
+		else
+			return "BigDecimal is not null";
+	}
+
+	public String isNull(Integer value)
+	{
+		if (value == null)
+			return "Integer is null";
+		else
+			return "Integer is not null";
+	}
+
+	public String isNull(Float value)
+	{
+		if (value == null)
+			return "Float is null";
+		else
+			return "Float is not null";
+	}
+
+	public String isNull(Short value)
+	{
+		if (value == null)
+			return "Short is null";
+		else
+			return "Short is not null";
+	}
+
+	public String isNull(Date value)
+	{
+		if (value == null)
+			return "Date is null";
+		else
+			return "Date is not null";
+	}
+
+	public String isNull(Time value)
+	{
+		if (value == null)
+			return "Time is null";
+		else
+			return "Time is not null";
+	}
+
+	public String isNull(Timestamp value)
+	{
+		if (value == null)
+			return "Timestamp is null";
+		else
+			return "Timestamp is not null";
+	}
+
+	/* Methods with more than one parameter */
+	public String integerFloatDouble(Integer parm1, Float parm2, Double parm3)
+	{
+		return "integerFloatDouble method";
+	}
+
+	public String stringDateTimeTimestamp(String parm1, Date parm2, Time parm3,
+											Timestamp parm4)
+	{
+		return "stringDateTimeTimestamp method";
+	}
+
+	/* Static methods */
+	public static int staticMethod()
+	{
+		return 1;
+	}
+
+	public static int overloadedStaticMethod()
+	{
+		return 1;
+	}
+
+	public static int overOverloadedStaticMethod()
+	{
+		return 1;
+	}
+
+	public static Byte staticByteMethod()
+	{
+		return new Byte((byte) 1);
+	}
+
+	public static Character staticCharacterMethod()
+	{
+		return new Character('a');
+	}
+
+	public static Double staticDoubleMethod()
+	{
+		return new Double(1.5);
+	}
+
+	public static BigDecimal staticBigDecimalMethod()
+	{
+		return new BigDecimal(1.1d);
+	}
+
+	public static Float staticFloatMethod()
+	{
+		return new Float(2.5F);
+	}
+
+	public static Long staticLongMethod()
+	{
+		return new Long(3L);
+	}
+
+	public static Short staticShortMethod()
+	{
+		return new Short((short) 4);
+	}
+
+	public static Integer staticIntegerMethod()
+	{
+		return new Integer(2);
+	}
+
+	public static Boolean staticBooleanMethod()
+	{
+		return new Boolean(true);
+	}
+
+	public static String staticStringMethod()
+	{
+		return "A String";
+	}
+
+	public static Date staticDateMethod()
+	{
+		/* July 2, 1997 */
+		return new Date(97, 7, 2);
+	}
+
+	public static Time staticTimeMethod()
+	{
+		/* 10:58:33 AM */
+		return new Time(10, 58, 33);
+	}
+
+	public static Timestamp staticTimestampMethod()
+	{
+		/* July 2, 1997 10:59:15.0 AM */
+		return new Timestamp(97, 7, 2, 10, 59, 15, 0);
+	}
+
+	public static ManyMethods staticManyMethods(Integer value)
+	{
+		return new ManyMethods(value.intValue());
+	}
+
+	/* "Cast to sub class" */
+	public SubClass subClass()
+	{
+		if (this instanceof SubClass)
+		{
+			return (SubClass) this;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	public int[] getIntArray() {
+		return new int[0];
+	}
+
+	public Object[] getObjectArray() {
+		return new String[0];
+	}
+
+	/* Methods for negative testing */
+	protected int protectedMethod()
+	{
+		return 1;
+	}
+
+	private int privateMethod()
+	{
+		return 1;
+	}
+
+	int packageMethod()
+	{
+		return 1;
+	}
+
+	public int exceptionMethod() throws Throwable
+	{
+		throw new Throwable("This exception should be caught by the runtime system.");
+	}
+
+	/*
+	** Some methods for testing interface resolution
+	*/
+
+	public static NoMethodInterface getNoMethodInterface() {
+		return new SubInterfaceClass(67);
+	}
+	public static Runnable getRunnable() {
+		return new SubInterfaceClass(89);
+	}
+	public static ExtendingInterface getExtendingInterface() {
+		return new SubInterfaceClass(235);
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/NoMethodInterface.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/NoMethodInterface.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,21 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+public interface NoMethodInterface {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	// this field is implicitly public
+	static int INTERFACE_FIELD = 6;
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ProcedureTest.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,724 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derbyTesting.functionTests.util.Formatters;
+
+import java.sql.*;
+import java.math.BigDecimal;
+/**
+	Java procedures for the procedure.sql test.
+*/
+public abstract class ProcedureTest implements ResultSet {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	public static void zeroArg() {
+		System.out.println("zeroArg() called");
+	}
+
+	public static void insertRow(int p1) throws SQLException {
+		insertRow(p1, "int");
+	}
+
+	public static void insertRow(int p1, String p2) throws SQLException {
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("insert into t1 values (?, ?)");
+		ps.setInt(1, p1);
+		ps.setString(2, p2);
+		ps.executeUpdate();
+		ps.close();
+		conn.close();
+	}
+
+	public static void maxMemPerTabTest() throws SQLException {
+/*		StringBuffer sbA = new StringBuffer(20000);
+		for (int i = 0; i < 20000; i++)
+			sbA.append('a');
+		String largeStringA20000 = new String(sbA);
+    largeStringA20000.substring(0,2000);
+
+		StringBuffer sbB = new StringBuffer(20000);
+		for (int i = 0; i < 20000; i++)
+			sbB.append('b');
+		String largeStringB20000 = new String(sbB);
+		String largeStringB2000 = largeStringB20000.substring(0,2000);
+
+		StringBuffer sbC = new StringBuffer(20000);
+		for (int i = 0; i < 20000; i++)
+			sbC.append('b');
+		String largeStringC20000 = new String(sbC);
+		String largeStringC2000 = largeStringC20000.substring(0,2000);
+
+		StringBuffer sbD = new StringBuffer(20000);
+		for (int i = 0; i < 20000; i++)
+			sbD.append('b');
+		String largeStringD20000 = new String(sbD);
+		String largeStringD2000 = largeStringD20000.substring(0,2000); */
+
+		String largeStringA20000 = new String(Formatters.repeatChar("a",20000));
+		String largeStringA2000 = new String(Formatters.repeatChar("a",2000));
+		String largeStringB20000 = new String(Formatters.repeatChar("b",20000));
+		String largeStringB2000 = new String(Formatters.repeatChar("b",2000));
+		String largeStringC20000 = new String(Formatters.repeatChar("c",20000));
+		String largeStringC2000 = new String(Formatters.repeatChar("c",2000));
+		String largeStringD20000 = new String(Formatters.repeatChar("d",20000));
+		String largeStringD2000 = new String(Formatters.repeatChar("d",2000));
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("insert into tab1 values (?, ?)");
+		ps.setInt(1, 1);
+		ps.setString(2, largeStringA20000);
+		ps.executeUpdate();
+		ps.setInt(1, 2);
+		ps.setString(2, largeStringB20000);
+		ps.executeUpdate();
+		ps.setInt(1, 3);
+		ps.setString(2, largeStringC20000);
+		ps.executeUpdate();
+		ps.close();
+		ps = conn.prepareStatement("insert into tab2 values (?, ?)");
+		ps.setInt(1, 1);
+		ps.setString(2, largeStringA20000);
+		ps.executeUpdate();
+		ps.setInt(1, 2);
+		ps.setString(2, largeStringC20000);
+		ps.executeUpdate();
+		ps.setInt(1, 3);
+		ps.setString(2, largeStringD20000);
+		ps.executeUpdate();
+		ps.close();
+		ps = conn.prepareStatement("insert into tab3 values (?, ?)");
+		ps.setInt(1, 1);
+		ps.setString(2, largeStringA2000);
+		ps.executeUpdate();
+		ps.setInt(1, 2);
+		ps.setString(2, largeStringB2000);
+		ps.executeUpdate();
+		ps.setInt(1, 3);
+		ps.setString(2, largeStringC2000);
+		ps.executeUpdate();
+		ps.close();
+		ps = conn.prepareStatement("insert into tab4 values (?, ?)");
+		ps.setInt(1, 1);
+		ps.setString(2, largeStringA2000);
+		ps.executeUpdate();
+		ps.setInt(1, 2);
+		ps.setString(2, largeStringC2000);
+		ps.executeUpdate();
+		ps.setInt(1, 3);
+		ps.setString(2, largeStringD2000);
+		ps.executeUpdate();
+		ps.close();
+		conn.close();
+	}
+
+	private static void insertInBig(Connection conn, String A, String B, String C, String D) throws SQLException {
+		PreparedStatement ps = conn.prepareStatement("insert into big values (?, ?, ?, ?)");
+		ps.setString(1, A);
+		ps.setString(2, B);
+		ps.setString(3, C);
+		ps.setString(4, D);
+		ps.executeUpdate();
+		ps.close();
+	}
+
+	public static void bigTestData(int i) throws SQLException {
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		switch (i)
+		{
+			case 1:
+				String largeStringA10000 = new String(Formatters.repeatChar("a",10000));
+				String largeStringB10000 = new String(Formatters.repeatChar("b",10000));
+				String largeStringC10000 = new String(Formatters.repeatChar("c",10000));
+				String largeStringD10000 = new String(Formatters.repeatChar("d",10000));
+				insertInBig(conn, largeStringA10000, largeStringB10000, largeStringC10000, largeStringD10000);
+				break;
+			case 2:
+				largeStringA10000 = new String(Formatters.repeatChar("e",10000));
+				largeStringB10000 = new String(Formatters.repeatChar("f",10000));
+				largeStringC10000 = new String(Formatters.repeatChar("g",10000));
+				largeStringD10000 = new String(Formatters.repeatChar("h",10000));
+				insertInBig(conn, largeStringA10000, largeStringB10000, largeStringC10000, largeStringD10000);
+				break;
+			case 3:
+				largeStringA10000 = new String(Formatters.repeatChar("i",10000));
+				largeStringB10000 = new String(Formatters.repeatChar("j",10000));
+				largeStringC10000 = new String(Formatters.repeatChar("k",10000));
+				largeStringD10000 = new String(Formatters.repeatChar("l",10000));
+				insertInBig(conn, largeStringA10000, largeStringB10000, largeStringC10000, largeStringD10000);
+				break;
+			case 4:
+				largeStringA10000 = new String(Formatters.repeatChar("m",10000));
+				largeStringB10000 = new String(Formatters.repeatChar("n",10000));
+				largeStringC10000 = new String(Formatters.repeatChar("o",10000));
+				largeStringD10000 = new String(Formatters.repeatChar("p",10000));
+				insertInBig(conn, largeStringA10000, largeStringB10000, largeStringC10000, largeStringD10000);
+				break;
+			case 5:
+				String largeStringA30000 = new String(Formatters.repeatChar("a",30000));
+				String largeStringB2752 = new String(Formatters.repeatChar("b",2752));
+				PreparedStatement ps = conn.prepareStatement("insert into big values (?, ?)");
+				ps.setString(1, largeStringA30000);
+				ps.setString(2, largeStringB2752);
+				ps.executeUpdate();
+				ps.close();
+				break;
+			case 6:
+				largeStringA30000 = new String(Formatters.repeatChar("a",30000));
+				String largeStringB2750 = new String(Formatters.repeatChar("b",2750));
+				ps = conn.prepareStatement("insert into big values (?, ?)");
+				ps.setString(1, largeStringA30000);
+				ps.setString(2, largeStringB2750);
+				ps.executeUpdate();
+				ps.close();
+				break;
+			case 7:
+				String largeStringA40000 = new String(Formatters.repeatChar("a",40000));
+				ps = conn.prepareStatement("insert into big values (?)");
+				ps.setString(1, largeStringA40000);
+				ps.executeUpdate();
+				ps.close();
+				break;
+			case 8:
+				largeStringA40000 = new String(Formatters.repeatChar("a",40000));
+				String largeStringB40000 = new String(Formatters.repeatChar("b",40000));
+				String largeStringC40000 = new String(Formatters.repeatChar("c",40000));
+				ps = conn.prepareStatement("insert into big values (?, ?, ?)");
+				ps.setString(1, largeStringA40000);
+				ps.setString(2, largeStringB40000);
+				ps.setString(3, largeStringC40000);
+				ps.executeUpdate();
+				largeStringA40000 = new String(Formatters.repeatChar("d",40000));
+				largeStringB40000 = new String(Formatters.repeatChar("e",40000));
+				largeStringC40000 = new String(Formatters.repeatChar("f",40000));
+				ps.setString(1, largeStringA40000);
+				ps.setString(2, largeStringB40000);
+				ps.setString(3, largeStringC40000);
+				ps.executeUpdate();
+				ps.close();
+				break;
+		}
+		conn.close();
+	}
+
+	//public static void selectRows_coll(int p1, java.util.Collection rs) throws SQLException {
+
+	//	ResultSet[] d1 = new ResultSet[1];
+	//	selectRows(p1, d1);
+	//	rs.add(d1[0]);
+	//}
+
+	public static void selectRows(int p1, ResultSet[] data) throws SQLException {
+
+		System.out.println("selectRows - 1 arg - 1 rs");
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("select * from t1 where i = ?");
+		ps.setInt(1, p1);
+		data[0] = ps.executeQuery();
+		conn.close();
+	}
+	public static void selectRows(int p1, int p2, ResultSet[] data1, ResultSet[] data2) throws SQLException {
+
+		System.out.println("selectRows - 2 arg - 2 rs");
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("select * from t1 where i = ?");
+		ps.setInt(1, p1);
+		data1[0] = ps.executeQuery();
+
+		ps = conn.prepareStatement("select * from t1 where i >= ?");
+		ps.setInt(1, p2);
+		data2[0] = ps.executeQuery();
+
+		if (p2 == 99)
+			data2[0].close();
+
+		// return no results
+		if (p2 == 199) {
+			data1[0] = null;
+			data2[0] = null;
+		}
+
+		// swap results
+		if (p2 == 299) {
+			ResultSet rs = data1[0];
+			data1[0] = data2[0];
+			data2[0] = rs;
+		}
+
+		conn.close();
+	}
+
+	public static void fivejp(ResultSet[] data1, ResultSet[] data2, ResultSet[] data3, ResultSet[] data4, ResultSet[] data5) throws SQLException {
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+
+		PreparedStatement ps1 = conn.prepareStatement("select * from MRS.FIVERS where i > ?");
+		ps1.setInt(1, 1);
+		data1[0] = ps1.executeQuery();
+
+		PreparedStatement ps2 = conn.prepareStatement("select * from MRS.FIVERS  where i > ?");
+		ps2.setInt(1, 2);
+		data2[0] = ps2.executeQuery();
+
+		PreparedStatement ps3 = conn.prepareStatement("select * from MRS.FIVERS  where i > ?");
+		ps3.setInt(1, 3);
+		data3[0] = ps3.executeQuery();
+
+		PreparedStatement ps4 = conn.prepareStatement("select * from MRS.FIVERS  where i > ?");
+		ps4.setInt(1, 4);
+		data4[0] = ps4.executeQuery();
+
+		PreparedStatement ps5 = conn.prepareStatement("select * from MRS.FIVERS  where i > ?");
+		ps5.setInt(1, 5);
+		data5[0] = ps5.executeQuery();
+
+		conn.close();
+	}
+
+	public static void parameter1(int a, String b, String c, java.sql.ResultSet[] rs) throws SQLException {
+
+		System.out.print("PT1 a=" + a);
+		if (b == null)
+			System.out.println(" b = null");
+		else
+			System.out.print(" b=<"+b+">("+b.length()+")");
+		if (c == null)
+			System.out.println(" c = null");
+		else
+			System.out.print(" c=<"+c+">("+c.length()+")");
+
+		System.out.println("");
+
+
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("insert into PT1 values (?, ?, ?)");
+		ps.setInt(1, a);
+		ps.setString(2, b);
+		ps.setString(3, c);
+		ps.executeUpdate();
+		ps.close();
+		ps = conn.prepareStatement("select a,b, length(b), c, length(c) from PT1 where a = ?");
+		ps.setInt(1, a);
+		rs[0] = ps.executeQuery();
+		conn.close();
+	}
+
+	public static void parameter2(int a, java.math.BigDecimal b, java.math.BigDecimal c, java.sql.ResultSet[] rs) throws SQLException {
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement("insert into PT1 values (?, ?, ?)");
+		ps.setInt(1, a);
+		ps.setString(2, b.toString());
+		ps.setString(3, c.toString());
+		ps.executeUpdate();
+		ps.close();
+		ps = conn.prepareStatement("select a,b,c from PT1 where a = ?");
+		ps.setInt(1, a);
+		rs[0] = ps.executeQuery();
+		conn.close();
+	}
+
+
+	public static void outparams1(int[] p1, int p2) {
+
+		p1[0] = p2 * 2;
+	}
+
+	// Test for CLOB being returned.
+	public static void clobselect (ResultSet[] results, 
+								   ResultSet[] results1,
+								   ResultSet[] results2
+								   )
+		throws Exception
+	{
+
+        Connection conn = DriverManager.getConnection(
+			"jdbc:default:connection");
+		PreparedStatement st = conn.prepareStatement("select * from lobCheckOne");
+		results[0] = st.executeQuery();
+		// Just some regular data
+		PreparedStatement st1 = conn.prepareStatement("select count(*) from lobCheckOne");
+		results1[0] = st1.executeQuery();
+		// Now more Clobs
+		PreparedStatement st2 = conn.prepareStatement("select * from lobCheckOne");
+		results2[0] = st2.executeQuery();
+		conn.close();
+		return;
+
+	}
+
+	// Test for BLOB being returned.
+	public static void blobselect (ResultSet[] results)
+		throws Exception
+	{
+
+        Connection conn = DriverManager.getConnection(
+			"jdbc:default:connection");
+		PreparedStatement st = conn.prepareStatement("select * from lobCheckTwo");
+		results[0] = st.executeQuery();
+		conn.close();
+		return;
+
+	}
+
+	public static void inoutparams2(int[] p1, int p2) {
+
+		p1[0] = p1[0] + (p2 * 2);
+	}
+	public static void inoutparams3(String[] p1, int p2) {
+
+		if (p1[0] == null)
+			System.out.println("p1 is NULL");
+		else
+			System.out.println("p1= >" + p1[0] + "< length " + p1[0].length());
+		
+		if (p2 == 8)
+			p1[0] = "nad";
+		else if (p2 == 9)
+			p1[0] = null;
+		else if (p2 == 10)
+			p1[0] = "abcdefghijklmnopqrstuvwzyz";
+	}
+	public static void inoutparams4(java.math.BigDecimal[] p1, String p2) {
+		if (p2 == null)
+			p1[0] = null;
+		else {
+			if (p1[0] == null)
+				p1[0] = new BigDecimal(p2).add(new BigDecimal("17"));
+			else
+				p1[0] = new BigDecimal(p2).add(p1[0]);
+		}
+	}
+
+	public static void ambigious1(int p1, String p2, ResultSet[] data1, ResultSet[] data2) {}
+	public static void ambigious1(int p1, String p2, ResultSet[] data1) {}
+
+
+	public static void ambigious2(int p1, Integer p2) {};
+	public static void ambigious2(Integer p1, int p2) {};
+
+	public static void missingDynamicParameter(int p1)  {}
+	public static void missingDynamicParameter(int p1, Object p2)  {}
+
+	public static void badDynamicParameter(int p1, ProcedureTest[] data) {}
+
+	public static void zeroArgDynamicResult(ResultSet[] data1, ResultSet[] data2, ResultSet[] data3, ResultSet[] data4) {
+		System.out.println("zeroArgDynamicResult called");
+	}
+
+
+	public static void sqlControl(String[] e1, String[] e2, String[] e3, String[] e4, String[] e5, String[] e6, String[] e7)
+		throws SQLException {
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+
+		Statement s = conn.createStatement();
+
+		executeStatement(s, "CREATE TABLE SQLCONTROL_DDL (I INT)", e1);
+		executeStatement(s, "ALTER TABLE SQLC.SQLCONTROL_DML ADD COLUMN B INT DEFAULT NULL", e2);
+
+		executeStatement(s, "INSERT INTO SQLC.SQLCONTROL_DML(I) VALUES (1)", e3);
+		executeStatement(s, "UPDATE SQLC.SQLCONTROL_DML SET I = I + 11", e4);
+		executeStatement(s, "SELECT * FROM SQLC.SQLCONTROL_DML", e5);
+		executeStatement(s, "DELETE FROM SQLC.SQLCONTROL_DML", e6);
+
+		executeStatement(s, "DROP TABLE SQLC.SQLCONTROL_DML", e7);
+
+		conn.close();
+
+	}
+	public static void sqlControl2(String[] e1, String[] e2, String[] e3, String[] e4, String[] e5, String[] e6, String[] e7)
+		throws SQLException {
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+
+		Statement s = conn.createStatement();
+
+		executeStatement(s, "CREATE VIEW SQLCONTROL_VIEW AS SELECT * FROM SQLC.SQLCONTROL_DML", e1);
+		executeStatement(s, "DROP VIEW SQLCONTROL_VIEW", e2);
+
+		executeStatement(s, "LOCK TABLE SQLC.SQLCONTROL_DML IN EXCLUSIVE MODE", e3);
+		executeStatement(s, "VALUES 1,2,3", e4);
+		executeStatement(s, "SET SCHEMA SQLC", e5);
+		executeStatement(s, "CREATE SCHEMA SQLC_M", e6);
+		executeStatement(s, "DROP SCHEMA SQLC_M RESTRICT", e7);
+
+		conn.close();
+
+	}
+	public static void sqlControl3(String[] e1, String[] e2, String[] e3, String[] e4, String[] e5, String[] e6, String[] e7)
+		throws SQLException {
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+
+		Statement s = conn.createStatement();
+
+		e1[0] = "IBM CS FEATURE";
+		e2[0] = "IBM CS FEATURE";
+
+		executeStatement(s, "SET ISOLATION CS", e3);
+		executeStatement(s, "SET RUNTIMESTATISTICS OFF", e4);
+		executeStatement(s, "SET STATISTICS TIMING OFF", e5);
+		executeStatement(s, "VALUES 1", e6);
+
+		executeStatement(s, "VALUES 1", e7);
+
+		conn.close();
+
+	}
+	public static void sqlControl4(int sqlc, String[] e1, String[] e2, String[] e3, String[] e4, String[] e5, String[] e6, String[] e7, String[] e8)
+		throws SQLException {
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+
+		Statement s = conn.createStatement();
+
+		String sql = "CALL SQLC.SQLCONTROL2_"+sqlc+" (?, ?, ?, ?, ?, ?, ?) ";
+
+		e1[0] = sql;
+
+		CallableStatement cs1 = conn.prepareCall(sql);
+		try {
+			for (int rop = 1; rop <= 7; rop++) {
+				cs1.registerOutParameter(rop, Types.VARCHAR);
+			}
+			cs1.execute();
+
+			e2[0] = cs1.getString(1);
+			e3[0] = cs1.getString(2);
+			e4[0] = cs1.getString(3);
+			e5[0] = cs1.getString(4);
+			e6[0] = cs1.getString(5);
+			e7[0] = cs1.getString(6);
+			e8[0] = cs1.getString(7);
+		} catch (SQLException sqle) {
+			StringBuffer sb = new StringBuffer(128);
+			sb.append("STATE");
+			do {
+				sb.append("-");
+				String ss = sqle.getSQLState();
+				if (ss == null)
+					ss= "?????";
+				sb.append(ss);
+				sqle = sqle.getNextException();
+			} while (sqle != null);
+			e2[0] = sb.toString();
+		}
+
+		cs1.close();
+
+		conn.close();
+
+	}
+	private static void executeStatement(Statement s, String sql, String[] result) {
+
+		StringBuffer sb = new StringBuffer(128);
+
+		int len = sql.length();
+		if (len > 15)
+			len = 15;
+
+		sb.append(sql.substring(0, len));
+		try {
+			if (s.execute(sql)) {
+				ResultSet rs = s.getResultSet();
+				while (rs.next())
+					sb.append("- ROW(" + rs.getString(1) + ")");
+				rs.close();
+			} else {
+				sb.append("-UPDATE " + s.getUpdateCount());
+			}
+
+			sb.append("-EXECUTE OK");
+
+		} catch (SQLException sqle) {
+
+			
+			do {
+				sb.append("-");
+				String ss = sqle.getSQLState();
+				if (ss == null)
+					ss= "?????";
+				sb.append(ss);
+				sqle = sqle.getNextException();
+			} while (sqle != null);
+
+			
+		}
+		result[0] = sb.toString();
+	}
+
+
+	public static void oBOOLEAN(Boolean in, Boolean[] inout, Boolean[] out) throws SQLException {
+
+		if (out[0] != null)
+			throw new SQLException ("oBOOLEAN expected out[] to be null");
+
+		out[0] = in;
+		if (in == null)
+			inout[0] = null;
+		else
+			inout[0] = new Boolean(inout[0].booleanValue() && in.booleanValue());
+
+	}
+
+	public static void pBOOLEAN(boolean in, boolean[] inout, boolean[] out) throws SQLException {
+
+		if (out[0] != false)
+			throw new SQLException ("pBOOLEAN expected out[] to be null");
+
+		out[0] = in;
+		inout[0] =inout[0] && in;
+
+	}
+	public static void oALLINT(Integer in, Integer[] inout, Integer[] out) throws SQLException {
+
+		if (out[0] != null)
+			throw new SQLException ("oALLINT expected out[] to be null");
+
+		out[0] = in;
+		if (in == null)
+			;//inout[0] = null;
+		else if (inout[0] == null)
+			inout[0] = new Integer(3 * in.intValue());
+		else
+			inout[0] = new Integer(inout[0].intValue() + in.intValue());
+	}
+	public static void pTINYINT(byte in, byte[] inout, byte[] out) throws SQLException {
+
+		out[0] = in;
+		inout[0] += in;
+	}
+	public static void pSMALLINT(short in, short[] inout, short[] out) throws SQLException {
+
+		out[0] = in;
+		inout[0] += in;
+	}
+
+	/*
+	** Procedures for testing literals passed to procedures as IN parameters
+	*/
+
+	public static void literalTest(int p1, String[] p2) {
+		p2[0] = ">" + Integer.toString(p1) + "<";
+	}
+	public static void literalTest(long p1, String[] p2) {
+		p2[0] = ">" + Long.toString(p1) + "<";
+	}
+	public static void literalTest(float p1, String[] p2) {
+		p2[0] = ">" + Float.toString(p1) + "<";
+	}
+	public static void literalTest(double p1, String[] p2) {
+		p2[0] = ">" + Double.toString(p1) + "<";
+	}
+	public static void literalTest(BigDecimal p1, String[] p2) {
+		String s = p1 == null ? "NULL" : p1.toString();
+		p2[0] = ">" + s + "<";
+	}
+	public static void literalTest(String p1, String[] p2) {
+		String s = p1 == null ? "NULL" : p1.toString();
+		p2[0] = ">" + s + "<";
+	}
+	public static void literalTest(java.sql.Date p1, String[] p2) {
+		String s = p1 == null ? "NULL" : p1.toString();
+		p2[0] = ">" + s + "<";
+	}
+	public static void literalTest(java.sql.Time p1, String[] p2) {
+		String s = p1 == null ? "NULL" : p1.toString();
+		p2[0] = ">" + s + "<";
+	}
+	public static void literalTest(java.sql.Timestamp p1, String[] p2) {
+
+		String s = p1 == null ? "NULL" : p1.toString();
+		p2[0] = ">" + s + "<";
+	}
+
+
+	/*
+	** Procedures for parameter mapping testing.
+	*/
+
+	public static void pmap(short in, short[] inout, short[] out) {
+
+		inout[0] += 6;
+		out[0] = 77;
+	}
+	public static void pmap(int in, int[] inout, int[] out) {
+		inout[0] += 9;
+		out[0] = 88;
+
+	}
+	public static void pmap(long in, long[] inout, long[] out) {
+		inout[0] += 8;
+		out[0] = 99;
+	}
+	public static void pmap(float in, float[] inout, float[] out) {
+		inout[0] += 9.9f;
+		out[0] = 88.8f;
+	}
+	public static void pmap(double in, double[] inout, double[] out) {
+		inout[0] += 3.9;
+		out[0] = 66.8;
+	}
+	public static void pmap(BigDecimal in, BigDecimal[] inout, BigDecimal[] out) {
+		inout[0] = inout[0].add(new BigDecimal(2.3));
+		out[0] = new BigDecimal(84.1);
+	}
+	public static void pmap(byte[] in, byte[][] inout, byte[][] out) {
+
+		inout[0][2] = 0x56;
+		out[0] = new byte[4];
+		out[0][0] = (byte) 0x09;
+		out[0][1] = (byte) 0xfe;
+		out[0][2] = (byte) 0xed;
+		out[0][3] = (byte) 0x02;
+
+	}
+	public static void pmap(Date in, Date[] inout, Date[] out) {
+
+		inout[0] = java.sql.Date.valueOf("2004-03-08");
+		out[0] = java.sql.Date.valueOf("2005-03-08");
+
+	}
+	public static void pmap(Time in, Time[] inout, Time[] out) {
+		inout[0] = java.sql.Time.valueOf("19:44:42");
+		out[0] = java.sql.Time.valueOf("20:44:42");
+	}
+	public static void pmap(Timestamp in, Timestamp[] inout, Timestamp[] out) {
+
+		inout[0] = java.sql.Timestamp.valueOf("2004-03-12 21:14:24.938222433");
+		out[0] = java.sql.Timestamp.valueOf("2004-04-12 04:25:26.462983731");
+	}
+	public static void pmap(String in, String[] inout, String[] out) {
+		inout[0] = inout[0].trim().concat("P2-PMAP");
+		out[0] = "P3-PMAP";
+	}
+
+
+	public static int countRows(String schema, String table) throws SQLException
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		Statement s = conn.createStatement();
+		ResultSet rs = s.executeQuery("SELECT COUNT(*) FROM " + schema + "." + table);
+		rs.next();
+		int count = rs.getInt(1);
+		rs.close();
+		s.close();
+		conn.close();
+		return count;
+	}
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/PropertyUtil.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/PropertyUtil.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,38 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+import org.apache.derby.iapi.services.context.ContextService;
+import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+import java.io.Serializable;
+/**
+    A bread for the internalUtil class
+*/
+public abstract class PropertyUtil extends org.apache.derby.iapi.util.PropertyUtil
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+	public static Serializable getDatabasePropertyDefault(String k) throws Exception
+	{
+        LanguageConnectionContext lcc =
+			(LanguageConnectionContext) ContextService.getContextOrNull(LanguageConnectionContext.CONTEXT_ID);
+		if (lcc == null) throw new Exception("getPropertyDefault only works in a connection");
+		return lcc.getTransactionExecute().getPropertyDefault(k);
+	}
+	public static void setDatabasePropertyDefault(String k,Serializable v) throws Exception
+	{
+        LanguageConnectionContext lcc =
+			(LanguageConnectionContext) ContextService.getContextOrNull(LanguageConnectionContext.CONTEXT_ID);
+		if (lcc == null) throw new Exception("getPropertyDefault only works in a connection");
+		lcc.getTransactionExecute().setPropertyDefault(k,v);
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ShortHolder.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/ShortHolder.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,51 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1997, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import java.io.Serializable;
+
+/**
+ * This class holds a short.  This class exists for basic testing of
+ * user-defined types in JSQL.
+ *
+ * @author	Jeff Lichtman
+ */
+
+public class ShortHolder implements Serializable
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1997_2004;
+	short		value;
+
+	/**
+	 * Constructor for an ShortHolder
+	 *
+	 * @param value		The value of the short to store in the new object
+	 */
+
+	public ShortHolder(short value)
+	{
+		this.value = value;
+	}
+
+	/**
+	 * Get the short value out of this object
+	 *
+	 * @return	The value of the short in this object
+	 */
+
+	public short getValue()
+	{
+		return value;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StatParser.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StatParser.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,81 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+/**
+ * Utilities for parsing runtimestats
+ *
+ * RESOLVE: This class should be internationalized.
+ */
+public class StatParser
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+	public static String getScanCols(String runTimeStats)
+		throws Throwable
+	{
+		if (runTimeStats == null)
+		{
+			return "The RunTimeStatistics string passed in is null";
+		}
+
+		int startIndex;
+		int endIndex = 0;
+		int indexIndex;
+
+		StringBuffer strbuf = new StringBuffer();
+
+		/*
+		** We need to know if we used an index
+		*/
+		if ((indexIndex = runTimeStats.indexOf("Index Scan ResultSet")) != -1)
+		{
+			int textend = runTimeStats.indexOf("\n", indexIndex);
+			strbuf.append(runTimeStats.substring(indexIndex, textend+1));
+		}
+		else
+		{
+			strbuf.append("TableScan\n");
+		}
+
+		int count = 0;
+		while ((startIndex = runTimeStats.indexOf("Bit set of columns fetched", endIndex)) != -1)
+		{
+			count++;
+			endIndex = runTimeStats.indexOf("}", startIndex);
+			if (endIndex == -1)
+			{
+				endIndex = runTimeStats.indexOf("All", startIndex);
+				if (endIndex == -1)
+				{
+					throw new Throwable("couldn't find the closing } on "+
+						"columnFetchedBitSet in "+runTimeStats);
+				}
+				endIndex+=5;
+			}
+			else
+			{
+				endIndex++;
+			}
+			strbuf.append(runTimeStats.substring(startIndex, endIndex));
+			strbuf.append("\n");
+		}
+		if (count == 0)
+		{
+			throw new Throwable("couldn't find string 'Bit set of columns fetched' in :\n"+
+				runTimeStats);
+		}
+
+		return strbuf.toString();
+	}
+}	

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/DMLInStaticInitializer.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/DMLInStaticInitializer.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,77 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.StaticInitializers
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.StaticInitializers;
+
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/** Test DML statement called from within static initializer */
+public class DMLInStaticInitializer
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	/* This is the method that is invoked from the outer query */
+	public static int getANumber()
+	{
+		return 1;
+	}
+
+	static
+	{
+		/* Execute a DML statement from within the static initializer */
+		doADMLStatement();
+	}
+
+	private static void doADMLStatement()
+	{
+		ResultSet rs = null;
+
+		try
+		{
+			int	value;
+
+			/* Connect to the database */
+			Statement s = DriverManager.getConnection(
+						"jdbc:default:connection").createStatement();
+
+			/* Execute a DML statement.  This depends on t1 existing. */
+			rs = s.executeQuery("SELECT s FROM t1");
+
+			if (rs.next())
+			{
+				System.out.println("Value of t1.s is " + rs.getShort(1));
+			}
+		}
+		catch (SQLException se)
+		{
+			System.out.println("Caught exception " + se);
+			se.printStackTrace(System.out);
+		}
+		finally
+		{
+			try
+			{
+				if (rs != null)
+					rs.close();
+			}
+			catch (SQLException se)
+			{
+				System.out.println("Caught exception " + se);
+				se.printStackTrace(System.out);
+			}
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/InsertInStaticInitializer.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/InsertInStaticInitializer.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,80 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.StaticInitializers
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.StaticInitializers;
+
+import java.sql.DriverManager;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/** Test Insert statement called from within static initializer holds
+ * onto locks it should hold onto and doesn't hold onto locks it shouldn't
+ * hold onto.
+*/
+public class InsertInStaticInitializer
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+
+	/* This is the method that is invoked from the outer query */
+	public static int getANumber()
+	{
+		return 1;
+	}
+
+	static
+	{
+		/* Execute a DML statement from within the static initializer */
+		doADMLStatement();
+	}
+
+	private static void doADMLStatement()
+	{
+		ResultSet rs = null;
+
+		try
+		{
+			int	value;
+
+			/* Connect to the database */
+			Statement s = DriverManager.getConnection(
+						"jdbc:default:connection").createStatement();
+
+			/* Execute a DML statement.  This depends on t1 existing. */
+			boolean b = s.execute("INSERT into t1 values (1)");
+
+			//if (rs.next())
+			//{
+			//	System.out.println("Value of t1.s is " + rs.getShort(1));
+			//}
+		}
+		catch (SQLException se)
+		{
+			System.out.println("Caught exception " + se);
+			se.printStackTrace(System.out);
+		}
+		finally
+		{
+			try
+			{
+				if (rs != null)
+					rs.close();
+			}
+			catch (SQLException se)
+			{
+				System.out.println("Caught exception " + se);
+				se.printStackTrace(System.out);
+			}
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/README.txt
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StaticInitializers/README.txt	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,16 @@
+This directory contains classes for testing SQL statements invoked
+from static initializers.  When these classes are referred to during
+binding, they are loaded, causing their static initializers to run.
+This can cause nested binding.  Also, DDL is not allowed while binding
+is going on.
+
+InsertInStaticInitializer inserts a row into a table from a static Initializer;
+i.e
+	select staticInitializer.f() from ....;  [q1]
+	staticInitialzer.f() executes SQL [q2] which does an insert.
+We test that 
+
+1. Locks are held on the table on which the insert is done.
+2. Locks are *not* held in the system catalogs which are read for compiling
+Q1 and Q2.
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StreamUtil.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/StreamUtil.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,191 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.db.*;
+import java.sql.*;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+/**
+ * Methods for stream columns
+ */
+public class StreamUtil
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static void insertAsciiColumn
+	(
+		String 			stmtText, 
+		int				colNumber,
+		String 			value, 
+		int 			length
+	)
+		throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement(stmtText);
+		setAsciiColumn(ps, colNumber, value.charAt(0), length);
+		ps.setInt(colNumber + 1, length);
+		ps.execute();
+	}
+	
+	public static void insertBinaryColumn
+	(
+		String 			stmtText, 
+		int				colNumber,
+		String 			value, 
+		int 			length
+	)
+		throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		PreparedStatement ps = conn.prepareStatement(stmtText);
+		setBinaryColumn(ps, colNumber, value.charAt(0), length);
+		ps.setInt(colNumber + 1, length);
+		ps.execute();
+	}
+
+	/**
+	 * Set a particular column to whatever you
+	 * wish.  
+	 */
+	private static void setAsciiColumn
+	(
+		PreparedStatement 	ps,
+		int					colNumber,
+		char				value,
+		int					length
+	) throws SQLException
+	{
+		byte[] barray = new byte[length];
+		for (int i = 0; i < length; i++)
+		{
+			barray[i] = (byte)value;
+		}
+		ps.setAsciiStream(colNumber, new ByteArrayInputStream(barray), length);
+	}
+
+	/**
+	 * Set a particular column to whatever you
+	 * wish.  
+	 */
+	private static void setBinaryColumn
+	(
+		PreparedStatement 	ps,
+		int					colNumber,
+		char				value,
+		int					length
+	) throws SQLException
+	{
+		byte[] barray = new byte[length];
+		for (int i = 0; i < length; i++)
+		{
+			barray[i] = (byte)value;
+		}
+		ps.setBinaryStream(colNumber, new ByteArrayInputStream(barray), length);
+	}
+	
+	public static int getAsciiColumn
+	(
+		int		whichRS, // 0 means old, 1 means new
+		int				colNumber,
+		String			value
+	) throws Throwable
+	{
+		System.out.println("\ngetAsciiColumn() called");
+        ResultSet rs = getRowSet(whichRS);
+        if( rs == null)
+            return 0;
+		while (rs.next())
+		{
+			InputStream in = rs.getAsciiStream(colNumber);
+			int readlen = drainAndValidateStream(in, value.charAt(0));
+			if (readlen != rs.getInt(4))
+				throw new Exception("INCORRECT READ LENGTH " + readlen + " <> " + rs.getInt(4));
+		}
+        return 1;
+	}
+
+    private static ResultSet getRowSet( int whichRS)
+        throws Throwable
+    {
+        TriggerExecutionContext tec = org.apache.derby.iapi.db.Factory.getTriggerExecutionContext();
+        if( tec == null)
+        {
+            System.out.println( "Not in a trigger.");
+            return null;
+        }
+        
+        return (whichRS == 0) ? tec.getOldRowSet() : tec.getNewRowSet();
+    }
+    
+	public static int getBinaryColumn
+	(
+		int		whichRS, // 0 means old, 1 means new
+		int				colNumber,
+		String			value
+	) throws Throwable
+	{
+		System.out.println("\ngetBinaryColumn() called");
+        ResultSet rs = getRowSet(whichRS);
+        if( rs == null)
+            return 0;
+		while (rs.next())
+		{
+			InputStream in = rs.getBinaryStream(colNumber);
+			int readlen = drainAndValidateStream(in, value.charAt(0));
+
+			if (readlen != rs.getInt(4))
+				throw new Exception("INCORRECT READ LENGTH " + readlen + " <> " + rs.getInt(4));
+		}
+        return 1;
+	}
+
+	private static int drainAndValidateStream(InputStream in, char value)
+		throws Throwable
+	{
+		byte[] buf = new byte[1024];
+		int inputLength = 0;
+		while(true)
+		{
+			int size = 0;
+			try
+			{
+				size = in.read(buf);
+			} catch(Throwable t)
+			{
+				System.out.println("Got exception on byte "+inputLength+". Rethrowing...");
+				throw t;
+			}
+			if (size == -1)
+				break;
+
+			for (int i = 0; i < size; i++)	
+			{
+				if (buf[i] != (byte)value)
+				{
+					throw new Throwable("TEST ERROR: byte "+(i+inputLength)+" not what is expected. It is '"+(char)buf[i]+"' rather than '"+value+"'");
+				}
+			}
+			inputLength += size;	
+		}
+		// System.out.println("...read "+inputLength+" bytes");
+		return inputLength;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubClass.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubClass.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,54 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1997, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+/**
+ * This class is for testing whether methods in sub-classes are found.
+ */
+
+public class SubClass extends ManyMethods
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1997_2004;
+
+	static int OVERLOADED_INTSTATIC = 2;
+	public static int OVEROVERLOADED_INTSTATIC = 2;
+
+	public int intSubClassOnly;
+
+	public SubClass(int value)
+	{
+		super(value);
+		intSubClassOnly = value * value;
+	}
+
+	public static SubClass staticSubClass(Integer value)
+	{
+		return new SubClass(value.intValue());
+	}
+
+	public String parmType(Double value)
+	{
+		return "java.lang.Double parameter in SubClass";
+	}
+
+	public String parmType(Integer value)
+	{
+		return "java.lang.Integer parameter in SubClass";
+	}
+
+	public static int overloadedStaticMethod()
+	{
+		return 2;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubInterfaceClass.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubInterfaceClass.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,40 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+public class SubInterfaceClass extends ManyMethods
+	implements NoMethodInterface, ExtendingInterface {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	public SubInterfaceClass(int value) {
+		super(value);
+	}
+
+	/*
+	** Methods of Runnable (from ExtendingInterface)
+	*/
+
+	public void run() {
+	}
+
+	/*
+	** Methods of ExtendingInterface
+	*/
+
+	public void wait(int a, long b) {}
+
+	public Object eimethod(Object a) {
+		return a;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubSubClass.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/SubSubClass.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,45 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1997, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+/**
+ * This class is for testing whether methods in sub-classes are found.
+ */
+
+public class SubSubClass extends SubClass
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1997_2004;
+
+	public static int OVEROVERLOADED_INTSTATIC = 3;
+
+	public SubSubClass(int value)
+	{
+		super(value);
+	}
+
+	public String parmType(Integer value)
+	{
+		return "java.lang.Integer parameter in SubSubClass";
+	}
+
+	public String parmType(Boolean value)
+	{
+		return "java.lang.Boolean parameter in SubSubClass";
+	}
+
+	public static int overloadedStaticMethod()
+	{
+		return 3;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Access.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Access.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derby.iapi.error.StandardException; 
+import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+import org.apache.derby.iapi.sql.conn.ConnectionUtil;
+import org.apache.derby.iapi.sql.conn.LanguageConnectionFactory;
+import org.apache.derby.iapi.store.access.TransactionController;
+import org.apache.derby.iapi.store.access.AccessFactory;
+import org.apache.derby.iapi.error.PublicAPI;
+import java.sql.SQLException;
+
+/**
+   This class provides mechanism to call access Factory methods  from sql-j.
+  */
+
+public class T_Access
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	public static AccessFactory getAccessFactory() throws SQLException
+	{
+		LanguageConnectionContext lcc = ConnectionUtil.getCurrentLCC();
+		LanguageConnectionFactory lcf = lcc.getLanguageConnectionFactory();
+		return (AccessFactory)lcf.getAccessFactory();
+	}
+
+	/*
+	 *Followng call waits until post commit thread queue is empty.
+	 *This call is useful for tests which checks for the following type
+	 *of cases:
+	 *  1) Checking for space usage after delete statements
+	 *  2) Checking for locks when delete statements are involved,
+	 *     because post commit thread might be holding locks when
+	 *     checking for snap shot of locks, so best thing to do
+	 *     to get consistent results is to call the following function
+	 *     before checking for locks (eg: store/updatelocks.sql)
+	 *  3) Depending on whethere the  space is not released yet by the post commit thread
+	 *     for commited deletes or not can change the order of rows in the heap.
+	 *     In such cases , it is good idea to call this method before doing
+	 *     inserts(Even adding/dropping constraints can have effect because they
+	 *     do inderectly deletes/inserts on system tables.) eg: lang/fk_nonsps.sql
+	 */
+	public static void waitForPostCommitToFinish() throws SQLException
+	{
+			AccessFactory af = getAccessFactory();
+			af.waitForPostCommitToFinishWork();
+	}
+}
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Authorize.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_Authorize.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,185 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+
+/** Utility functions for testing authorization. */
+public class T_Authorize
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	public static void verifyAccessRW(int k)
+		 throws Exception
+	{
+		verifyAccess(k, false);
+	}
+	public static void verifyAccessRO(int k)
+		 throws Exception
+	{
+		verifyAccess(k, true);
+	}
+
+	/**
+	  Verify that the database enforces the expected access mode appropriatly.
+	  This function depends on DDL performed by the authorize.jsql test.
+	  
+	  @param k A key for adding/deleting rows in table t.
+	  @param shortReadOnly true -> the connection should be ReadOnly
+	  */
+	private static void verifyAccess(int k, boolean shouldBeReadOnly)
+		 throws Exception
+	{
+		String qText,sText;
+		int[] args = new int[2];
+		int[] qArgs = new int[2];
+		
+		Connection c =
+			DriverManager.getConnection("jdbc:default:connection");
+
+		if (c.isReadOnly() != shouldBeReadOnly)
+			throw new Exception("Connection read-only mode does not match " + shouldBeReadOnly);
+
+		sText = "create table t2 (a int)";
+		verifyExecute(c,sText,0,args,shouldBeReadOnly,0);
+
+        if (!shouldBeReadOnly)
+		{
+			sText = "drop table t2";
+			verifyExecute(c,sText,0,args,shouldBeReadOnly,0);
+		}
+		
+		args[0] = k;
+		sText = "insert into AUTH_TEST.t1 values ?";
+		verifyExecute(c,sText,1,args,shouldBeReadOnly,1);
+		qText = "select a from AUTH_TEST.t1 where a = ?";
+		qArgs[0] = k;
+		verifyResult(c,qText,1,qArgs,!shouldBeReadOnly,Integer.toString(k));
+
+		args[0] = -k;
+		args[1] = k;
+		sText = "update AUTH_TEST.t1 set a=? where a=?"; 
+		verifyExecute(c,sText,2,args,shouldBeReadOnly,1);
+		qArgs[0] = -k;
+		verifyResult(c,qText,1,qArgs,!shouldBeReadOnly,Integer.toString(-k));
+
+		sText = "delete from AUTH_TEST.t1 where a=?";
+	 	verifyExecute(c,sText,1,args,shouldBeReadOnly,1);
+		verifyResult(c,qText,1,qArgs,false,null);
+
+		sText = "call sqlj.install_jar(AUTH_TEST.resourcefile('org.apache.derbyTesting.functionTests.testData.v1','j1v1.jar', 'extinout/j1v1.jar'), 'APP.J1', 0)";
+	 	verifyExecute(c,sText,0,args,shouldBeReadOnly,0);
+		qText = "select filename from sys.sysfiles where filename = 'J1'";
+		verifyResult(c,qText,0,qArgs,!shouldBeReadOnly,"J1");
+
+		if (shouldBeReadOnly)
+			sText = "call sqlj.replace_jar(AUTH_TEST.resourcefile('org.apache.derbyTesting.functionTests.testData.v2','j1v2.jar', 'extinout/j1v2.jar'), 'APP.IMMUTABLE')";
+		else
+			sText = "call sqlj.replace_jar(AUTH_TEST.resourcefile('org.apache.derbyTesting.functionTests.testData.v2','j1v2.jar', 'extinout/j1v2.jar'), 'APP.J1')";
+	 	verifyExecute(c,sText,0,args,shouldBeReadOnly,0);
+		verifyResult(c,qText,0,qArgs,!shouldBeReadOnly,"J1"); //RESOLVE: verify jar content
+
+		if (shouldBeReadOnly)
+			sText = "call sqlj.remove_jar('APP.IMMUTABLE', 0)";
+		else
+			sText = "call sqlj.remove_jar('APP.J1', 0)";
+	 	verifyExecute(c,sText,0,args,shouldBeReadOnly,0);
+		verifyResult(c,qText,0,qArgs,false,null); 
+
+		c.close();
+	}
+
+	private static void verifyExecute(Connection c,
+									  String sText,
+									  int paramCount,
+									  int[] args,
+									  boolean shouldBeReadOnly,
+									  int expectRowCount)
+		 throws Exception
+	{
+
+		PreparedStatement ps = null;
+		try {
+			ps = c.prepareStatement(sText);
+			for (int ix=0;ix<paramCount; ix++)
+				ps.setInt(ix+1,args[ix]);
+			int rc = ps.executeUpdate();
+			if (shouldBeReadOnly)
+				throw new Exception("operation incorrectly allowed for read only connection "+sText);
+			if (rc != expectRowCount)
+			{
+				StringBuffer argSb = new StringBuffer();
+				for (int ix=0;ix<paramCount;ix++)
+				{
+					if (ix!=0) argSb.append(",");
+					argSb.append(args[ix]);
+				}
+				throw new Exception("Incorrect row count "+rc+
+									" for "+sText+
+									" with args "+argSb);
+				
+			}
+		}
+
+		catch (SQLException sqle) {
+			String sqlState = sqle.getSQLState();
+			boolean authorizeError = sqlState.equals("25502") ||
+									 sqlState.equals("25503") ||
+									 sqlState.equals("25505");
+			if (!(shouldBeReadOnly && authorizeError))
+				throw new Exception("Unexpected exception for "+sText+
+									" ("+sqle+")");
+		}
+
+		finally {
+			if (ps != null)
+				ps.close();
+		}
+	}
+
+	private static void verifyResult(Connection c,
+									 String qText,
+									 int paramCount,
+									 int[] args,
+									 boolean expectResult,
+									 String expect)
+		throws Exception
+	{
+		PreparedStatement ps = c.prepareStatement(qText);
+		for (int ix=0;ix<paramCount; ix++)
+			ps.setInt(ix+1,args[ix]);
+		ResultSet rs = ps.executeQuery();
+		boolean isRow = rs.next();
+		if (expectResult)
+		{
+			if (!isRow) throw new Exception("incorrect row count");
+			ResultSetMetaData rmd = rs.getMetaData();
+			if (rmd.getColumnCount() != 1) new Exception("bad column count");
+			String colVal = rs.getString(1);
+			if (!expect.equals(colVal))
+				throw new Exception("bad return column "+colVal);
+			isRow = rs.next();
+			if (isRow) throw new Exception("incorrect row count");
+		}
+		else
+		{
+			if (isRow) throw new Exception("incorrect row count");
+		}
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_ConsistencyChecker.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/T_ConsistencyChecker.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,443 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+
+import org.apache.derby.iapi.error.StandardException;
+
+import org.apache.derby.iapi.sql.dictionary.DataDictionaryContext;
+import org.apache.derby.iapi.sql.dictionary.DataDictionary;
+import org.apache.derby.iapi.sql.dictionary.SchemaDescriptor;
+import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
+import org.apache.derby.iapi.sql.dictionary.ColumnDescriptor;
+import org.apache.derby.iapi.sql.dictionary.ColumnDescriptorList;
+import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
+
+import org.apache.derby.iapi.sql.depend.DependencyManager;
+
+import org.apache.derby.iapi.reference.SQLState;
+
+import org.apache.derby.iapi.sql.execute.ExecRow;
+import org.apache.derby.iapi.sql.execute.ExecutionContext;
+
+import org.apache.derby.iapi.types.DataValueFactory;
+import org.apache.derby.iapi.types.DataTypeDescriptor;
+
+import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+
+import org.apache.derby.iapi.store.access.TransactionController;
+import org.apache.derby.iapi.types.RowLocation;
+import org.apache.derby.iapi.store.access.ScanController;
+import org.apache.derby.iapi.store.access.ConglomerateController;
+
+import org.apache.derby.iapi.services.context.ContextService;
+
+import org.apache.derby.iapi.services.io.FormatableBitSet;
+
+/**
+ * This class has methods for corrupting a database. 
+ * IT MUST NOT BE DISTRIBUTED WITH THE PRODUCT.
+ *
+ * NOTE: The entry points to this class are all static,
+ * for easy access via the query language.  Each of the
+ * static methods instantiates an object from the class
+ * and calls methods off of that object.  This allows
+ * the sharing of code across the various static methods.
+ */
+public class T_ConsistencyChecker
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+	private	DataDictionary				dd;
+	private	TransactionController		tc;
+	private	LanguageConnectionContext	lcc;
+	private	DataValueFactory			dvf;
+	private	ExecutionContext			ec;
+	private String						indexName;
+	private String						schemaName;
+	private String						tableName;
+	private ConglomerateDescriptor		id;
+	private SchemaDescriptor			sd;
+	private	TableDescriptor				td;
+
+	T_ConsistencyChecker(String schemaName, String tableName, String indexName)
+		throws StandardException
+	{
+		this.schemaName = schemaName;
+		this.tableName = tableName;
+		this.indexName = indexName;
+	}
+
+	/**
+	 * Delete the first row from the heap, without
+	 * deleting it from the indexes on the table.
+	 *
+	 * @param schemaName	The schema name.
+	 * @param tableName		The table name.
+	 * 
+	 * @return Nothing.
+	 *
+	 * @exception StandardException		Thrown on error
+	 */
+	public static void deleteFirstHeapRow(String schemaName, String tableName)
+		throws StandardException
+	{
+		T_ConsistencyChecker t_cc = new T_ConsistencyChecker(schemaName, tableName, null);
+		t_cc.getContexts();
+		t_cc.getDescriptors();
+
+		/* Open a scan on the heap */
+		ScanController heapScan = t_cc.openUnqualifiedHeapScan();
+
+		// Move to the 1st row in the heap
+		heapScan.next();
+
+		// Delete the 1st row in the heap
+		heapScan.delete();
+
+		heapScan.close();
+	}
+
+	/**
+	 * Get the first row from the heap and insert it into
+	 * the heap again, without
+	 * inserting it from the indexes on the table.
+	 *
+	 * @param schemaName	The schema name.
+	 * @param tableName		The table name.
+	 * 
+	 * @return Nothing.
+	 *
+	 * @exception StandardException		Thrown on error
+	 */
+	public static void reinsertFirstHeapRow(String schemaName, String tableName)
+		throws StandardException
+	{
+		T_ConsistencyChecker t_cc = new T_ConsistencyChecker(schemaName, tableName, null);
+		t_cc.getContexts();
+		t_cc.getDescriptors();
+
+		/* Open a scan on the heap */
+		ScanController heapScan = t_cc.openUnqualifiedHeapScan();
+
+		// Move to the 1st row in the heap
+		heapScan.next();
+
+		// Fetch the 1st row
+		ExecRow firstRow = t_cc.getHeapRowOfNulls();
+		heapScan.fetch(firstRow.getRowArray());
+		heapScan.close();
+
+		// Insert another copy of the 1st row into the heap
+		ConglomerateController heapCC = t_cc.openHeapCC();
+		heapCC.insert(firstRow.getRowArray());
+		heapCC.close();
+	}
+
+	/**
+	 * Set all of the columns in the first row from 
+	 * the heap to null, without
+	 * updating the indexes on the table.
+	 *
+	 * @param schemaName	The schema name.
+	 * @param tableName		The table name.
+	 * 
+	 * @return Nothing.
+	 *
+	 * @exception StandardException		Thrown on error
+	 */
+	public static void nullFirstHeapRow(String schemaName, String tableName)
+		throws StandardException
+	{
+		T_ConsistencyChecker t_cc = new T_ConsistencyChecker(schemaName, tableName, null);
+		t_cc.getContexts();
+		t_cc.getDescriptors();
+
+		/* Open a scan on the heap */
+		ScanController heapScan = t_cc.openUnqualifiedHeapScan();
+
+		// Move to the 1st row in the heap
+		heapScan.next();
+
+		// Get the RowLocation
+		RowLocation baseRL = heapScan.newRowLocationTemplate();
+		heapScan.fetchLocation(baseRL);
+
+		// Replace the current row with nulls
+		heapScan.replace(
+			t_cc.getHeapRowOfNulls().getRowArray(),
+			(FormatableBitSet) null);
+
+		heapScan.close();
+	}
+
+	/**
+	 * Get the first row from the heap and insert it into
+	 * the specified index, with a bad row location, without
+	 * inserting it into the heap or the other indexes on the table.
+	 *
+	 * @param schemaName	The schema name.
+	 * @param tableName		The table name.
+	 * @param indexName		The specified index.
+	 * 
+	 * @return Nothing.
+	 *
+	 * @exception StandardException		Thrown on error
+	 */
+	public static void insertBadRowLocation(String schemaName, String tableName, String indexName)
+		throws StandardException
+	{
+		T_ConsistencyChecker t_cc = new T_ConsistencyChecker(schemaName, tableName, indexName);
+		t_cc.getContexts();
+		t_cc.getDescriptors();
+
+
+		/* Open a scan on the heap */
+		ScanController heapScan = t_cc.openUnqualifiedHeapScan();
+
+		// Get the RowLocation
+		RowLocation baseRL = heapScan.newRowLocationTemplate();
+		RowLocation badRL = heapScan.newRowLocationTemplate();
+		heapScan.close();
+
+		/* Open a scan on the index */
+		ExecRow		indexRow = t_cc.getIndexTemplateRow(baseRL);
+		ScanController indexScan = t_cc.openUnqualifiedIndexScan();
+
+		// Move to the 1st row in the index
+		indexScan.next();
+
+		// Fetch the 1st row
+		indexScan.fetch(indexRow.getRowArray());
+		indexScan.close();
+
+		// Insert another copy of the 1st row into the index with a bad row location
+		int keyLength = 
+				t_cc.getIndexDescriptor().getIndexDescriptor().baseColumnPositions().length;
+		indexRow.setColumn(keyLength + 1, badRL);
+
+		ConglomerateController indexCC = t_cc.openIndexCC();
+		indexCC.insert(indexRow.getRowArray());
+		indexCC.close();
+	}
+
+	/**
+	 * Swap the values in the specified columns of the
+	 * first row from the heap, without
+	 * updating the indexes on the table.
+	 *
+	 * @param schemaName	The schema name.
+	 * @param tableName		The table name.
+	 * @param firstColumn	First column #.
+	 * @param secondColumn	Second column #.
+	 * 
+	 * @return Nothing.
+	 *
+	 * @exception StandardException		Thrown on error
+	 */
+	public static void swapColumnsInFirstHeapRow(String schemaName, String tableName,
+												 int firstColumn, int secondColumn)
+		throws StandardException
+	{
+	}
+
+	/* Get the various contexts */
+	private void getContexts()
+		throws StandardException
+	{
+		lcc = (LanguageConnectionContext)
+			ContextService.getContext(LanguageConnectionContext.CONTEXT_ID);
+		tc = lcc.getTransactionExecute();
+
+		dd = lcc.getDataDictionary();
+
+		dvf = lcc.getDataValueFactory();
+
+		ec = (ExecutionContext) 
+				(ContextService.getContext(ExecutionContext.CONTEXT_ID));
+	}
+
+	/* Get the various descriptors */
+	private void getDescriptors()
+		throws StandardException
+	{
+		sd = dd.getSchemaDescriptor(schemaName, tc, true);
+		td = dd.getTableDescriptor(tableName, sd);
+
+		if (td == null)
+		{
+			throw StandardException.newException(SQLState.LANG_TABLE_NOT_FOUND, schemaName + "." + tableName);
+		}
+
+		if (indexName != null)
+		{
+			id = dd.getConglomerateDescriptor(indexName, sd, true);
+			if (id == null)
+			{
+				throw StandardException.newException(SQLState.LANG_INDEX_NOT_FOUND, indexName);
+			}
+		}
+	}
+
+	/* Get a heap row full of nulls */
+	private ExecRow getHeapRowOfNulls()
+		throws StandardException
+	{
+		ConglomerateController	baseCC;
+		ExecRow					baseRow;
+
+		/* Open the heap for reading */
+		baseCC = tc.openConglomerate(
+		            td.getHeapConglomerateId(), false, 0, 
+			        TransactionController.MODE_TABLE,
+				    TransactionController.ISOLATION_SERIALIZABLE);
+
+		/* Get a row template for the base table */
+		baseRow = ec.getExecutionFactory().getValueRow(td.getNumberOfColumns());
+
+		/* Fill the row with nulls of the correct type */
+		ColumnDescriptorList cdl = td.getColumnDescriptorList();
+		int					 cdlSize = cdl.size();
+
+		for (int index = 0; index < cdlSize; index++)
+		{
+			ColumnDescriptor cd = (ColumnDescriptor) cdl.elementAt(index);
+			DataTypeDescriptor dts = cd.getType();
+			baseRow.setColumn(cd.getPosition(),
+									dts.getNull());
+		}
+
+		baseCC.close();
+		return baseRow;
+	}
+
+	/* Open an unqualified scan on the heap for update */
+	private ScanController openUnqualifiedHeapScan()
+		throws StandardException
+	{
+		ScanController heapScan;
+
+		heapScan = tc.openScan(td.getHeapConglomerateId(),
+								false,	// hold
+								TransactionController.OPENMODE_FORUPDATE,		//  forUpdate
+								TransactionController.MODE_TABLE,
+						        TransactionController.ISOLATION_SERIALIZABLE,
+								(FormatableBitSet) null,
+								null,	// startKeyValue
+								0,		// not used with null start posn.
+								null,	// qualifier
+								null,	// stopKeyValue
+								0);		// not used with null stop posn.
+
+		return heapScan;
+	}
+
+	/* Open the heap conglomerate for update */
+	private ConglomerateController openHeapCC()
+		throws StandardException
+	{
+		ConglomerateController heapCC;
+
+		heapCC = tc.openConglomerate(
+			            td.getHeapConglomerateId(),
+                        false,
+						TransactionController.OPENMODE_FORUPDATE,		//  forUpdate
+				        TransactionController.MODE_TABLE,
+					    TransactionController.ISOLATION_SERIALIZABLE);
+
+
+		return heapCC;
+	}
+
+	/* Get a template row for the specified index */
+	private ExecRow getIndexTemplateRow(RowLocation baseRL)
+		throws StandardException
+	{
+		int[]					baseColumnPositions;
+		int						baseColumns = 0;
+		ExecRow					indexScanTemplate;
+
+		baseColumnPositions =
+				id.getIndexDescriptor().baseColumnPositions();
+		baseColumns = baseColumnPositions.length;
+
+		FormatableBitSet indexColsBitSet = new FormatableBitSet();
+		for (int i = 0; i < baseColumns; i++)
+		{
+			indexColsBitSet.grow(baseColumnPositions[i]);
+			indexColsBitSet.set(baseColumnPositions[i] - 1);
+		}
+
+		/* Get a row template */
+		indexScanTemplate = ec.getExecutionFactory().getValueRow(baseColumns + 1);
+
+		/* Fill the row with nulls of the correct type */
+		for (int column = 0; column < baseColumns; column++)
+		{
+			/* Column positions in the data dictionary are one-based */
+			ColumnDescriptor cd = td.getColumnDescriptor(baseColumnPositions[column]);
+			DataTypeDescriptor dts = cd.getType();
+			indexScanTemplate.setColumn(column + 1,
+									dts.getNull());
+		}
+
+		/* Set the row location in the last column of the index row */
+		indexScanTemplate.setColumn(baseColumns + 1, baseRL);
+
+		return indexScanTemplate;
+	}
+
+	/* Open an unqualified scan on the index for update */
+	private ScanController openUnqualifiedIndexScan()
+		throws StandardException
+	{
+		ScanController indexScan;
+
+		indexScan = tc.openScan(id.getConglomerateNumber(),
+								false,	// hold
+								TransactionController.OPENMODE_FORUPDATE,		//  forUpdate
+								TransactionController.MODE_TABLE,
+						        TransactionController.ISOLATION_SERIALIZABLE,
+								(FormatableBitSet) null,
+								null,	// startKeyValue
+								0,		// not used with null start posn.
+								null,	// qualifier
+								null,	// stopKeyValue
+								0);		// not used with null stop posn.
+
+		return indexScan;
+	}
+
+	/* Open the index conglomerate for update */
+	private ConglomerateController openIndexCC()
+		throws StandardException
+	{
+		ConglomerateController indexCC;
+
+		indexCC = tc.openConglomerate(
+			            id.getConglomerateNumber(),
+                        false,
+						TransactionController.OPENMODE_FORUPDATE,		//  forUpdate
+				        TransactionController.MODE_TABLE,
+					    TransactionController.ISOLATION_SERIALIZABLE);
+
+
+		return indexCC;
+	}
+
+	/* Return the ConglomerateDescriptor for the index */
+	private ConglomerateDescriptor getIndexDescriptor()
+	{
+		return id;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestPropertyInfo.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestPropertyInfo.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,176 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.error.PublicAPI;
+
+import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+import org.apache.derby.iapi.sql.conn.ConnectionUtil;
+
+import org.apache.derby.iapi.db.PropertyInfo;
+import org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor;
+import org.apache.derby.iapi.sql.dictionary.DataDictionaryContext;
+import org.apache.derby.iapi.sql.dictionary.DataDictionary;
+import org.apache.derby.iapi.sql.dictionary.SchemaDescriptor;
+import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
+
+import org.apache.derby.iapi.store.access.ConglomerateController;
+import org.apache.derby.iapi.store.access.TransactionController;
+
+import java.util.Properties;
+
+/**
+ * This class extends PropertyInfo to provide support for viewing ALL
+ * table/index properties, not just the user-visible ones.
+ */
+public class TestPropertyInfo
+{
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+    /**
+     * Get ALL the Properties associated with a given table, not just the
+	 * customer-visible ones.
+     *
+	 * @param schemaName    The name of the schema that the table is in.
+	 * @param tableName     The name of the table.
+	 * 
+	 * @return Properties   The Properties associated with the specified table.
+     *                      (An empty Properties is returned if the table does not exist.)
+     * @exception java.sql.SQLException thrown on error
+     */
+    public static String getAllTableProperties(String schemaName, String tableName)
+        throws java.sql.SQLException
+	{
+		Properties p =	TestPropertyInfo.getConglomerateProperties( schemaName, tableName, false );
+		if (p == null)
+			return null;
+
+		return org.apache.derbyTesting.functionTests.util.PropertyUtil.sortProperties(p);
+	}
+
+/**
+     * Get a specific property  associated with a given table, not just the
+	 * customer-visible ones.
+     *
+	 * @param schemaName    The name of the schema that the table is in.
+	 * @param tableName     The name of the table.
+	 * 
+	 * @param key           The table property  to retrieve
+	 * @return               Property value 
+     * @exception java.sql.SQLException thrown on error
+     */
+	public static String getTableProperty(String schemaName, String tableName,
+										  String key) throws java.sql.SQLException
+	{
+		return TestPropertyInfo.getConglomerateProperties( schemaName, tableName, false ).getProperty(key);
+	}
+
+    /**
+     * Get ALL the Properties associated with a given index, not just the customer-visible ones.
+     *
+	 * @param schemaName    The name of the schema that the index is in.
+	 * @param indexName     The name of the index.
+	 * 
+	 * @return Properties   The Properties associated with the specified index.
+     *                      (An empty Properties is returned if the index does not exist.)
+     * @exception java.sql.SQLException thrown on error
+     */
+    public static String getAllIndexProperties(String schemaName, String indexName)
+        throws java.sql.SQLException
+	{
+		Properties p = TestPropertyInfo.getConglomerateProperties( schemaName, indexName, true );
+
+		if (p == null)
+			return null;
+
+		return org.apache.derbyTesting.functionTests.util.PropertyUtil.sortProperties(p);
+	}
+
+	/**
+	  Return the passed in Properties object with a property filtered out.
+	  This is useful for filtering system depenent properties to make
+	  test canons stable.
+	  */
+	public static Properties filter(Properties p, String filterMe)
+	{
+		p.remove(filterMe);
+		return p;
+	}
+
+	private static Properties	getConglomerateProperties( String schemaName, String conglomerateName, boolean isIndex )
+        throws java.sql.SQLException
+	{
+		ConglomerateController    cc;
+		ConglomerateDescriptor    cd;
+		DataDictionary            dd;
+		Properties				  properties;
+		SchemaDescriptor		  sd;
+		TableDescriptor           td;
+		TransactionController     tc;
+		long					  conglomerateNumber;
+
+        // find the language context.
+        LanguageConnectionContext lcc = ConnectionUtil.getCurrentLCC();
+
+        // Get the current transaction controller
+        tc = lcc.getTransactionExecute();
+
+		try {
+
+		// find the DataDictionary
+		dd = lcc.getDataDictionary();
+
+
+		// get the SchemaDescriptor
+		sd = dd.getSchemaDescriptor(schemaName, tc, true);
+		if ( !isIndex)
+		{
+			// get the TableDescriptor for the table
+			td = dd.getTableDescriptor(conglomerateName, sd);
+
+			// Return an empty Properties if table does not exist or if it is for a view.
+			if ((td == null) || td.getTableType() == TableDescriptor.VIEW_TYPE) { return new Properties(); }
+
+			conglomerateNumber = td.getHeapConglomerateId();
+		}
+		else
+		{
+			// get the ConglomerateDescriptor for the index
+			cd = dd.getConglomerateDescriptor(conglomerateName, sd, false);
+
+			// Return an empty Properties if index does not exist
+			if (cd == null) { return new Properties(); }
+
+			conglomerateNumber = cd.getConglomerateNumber();
+		}
+
+		cc = tc.openConglomerate(
+                conglomerateNumber,
+                false,
+                0, 
+                TransactionController.MODE_RECORD,
+                TransactionController.ISOLATION_SERIALIZABLE);
+
+		properties = cc.getInternalTablePropertySet( new Properties() );
+
+		cc.close();
+
+		} catch (StandardException se) {
+			throw PublicAPI.wrapStandardException(se);
+		}
+
+        return properties;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestUtil.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,287 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+
+package org.apache.derbyTesting.functionTests.util;
+
+import java.sql.*;
+import java.io.*;
+import org.apache.derby.iapi.reference.JDBC30Translation;
+
+
+/**
+	Utility methods for tests, in order to bring some consistency to test output.
+*/
+public class TestUtil {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	public static void dumpSQLExceptions(SQLException sqle) {
+		TestUtil.dumpSQLExceptions(sqle, false);
+	}
+
+	public static void dumpSQLExceptions(SQLException sqle, boolean expected) {
+		String prefix = "";
+		if (!expected) {
+			System.out.println("FAIL -- unexpected exception ****************");
+		}
+		else
+		{
+			prefix = "EXPECTED ";
+		}
+
+		do
+		{
+			System.out.println(prefix + "SQLSTATE("+sqle.getSQLState()+"): " + sqle.getMessage());
+			sqle = sqle.getNextException();
+		} while (sqle != null);
+	}
+
+
+	  public static String sqlNameFromJdbc(int jdbcType) {
+		switch (jdbcType) {
+			case Types.BIT 		:  return "Types.BIT";
+			case JDBC30Translation.SQL_TYPES_BOOLEAN  : return "Types.BOOLEAN";
+			case Types.TINYINT 	:  return "Types.TINYINT";
+			case Types.SMALLINT	:  return "SMALLINT";
+			case Types.INTEGER 	:  return "INTEGER";
+			case Types.BIGINT 	:  return "BIGINT";
+
+			case Types.FLOAT 	:  return "Types.FLOAT";
+			case Types.REAL 	:  return "REAL";
+			case Types.DOUBLE 	:  return "DOUBLE";
+
+			case Types.NUMERIC 	:  return "Types.NUMERIC";
+			case Types.DECIMAL	:  return "DECIMAL";
+
+			case Types.CHAR		:  return "CHAR";
+			case Types.VARCHAR 	:  return "VARCHAR";
+			case Types.LONGVARCHAR 	:  return "LONG VARCHAR";
+            case Types.CLOB     :  return "CLOB";
+
+			case Types.DATE 		:  return "DATE";
+			case Types.TIME 		:  return "TIME";
+			case Types.TIMESTAMP 	:  return "TIMESTAMP";
+
+			case Types.BINARY			:  return "CHAR () FOR BIT DATA";
+			case Types.VARBINARY	 	:  return "VARCHAR () FOR BIT DATA";
+			case Types.LONGVARBINARY 	:  return "LONG VARCHAR FOR BIT DATA";
+            case Types.BLOB             :  return "BLOB";
+
+			case Types.OTHER		:  return "Types.OTHER";
+			case Types.NULL		:  return "Types.NULL";
+			default : return String.valueOf(jdbcType);
+		}
+	}
+	  public static String jdbcNameFromJdbc(int jdbcType) {
+		switch (jdbcType) {
+			case Types.BIT 		:  return "Types.BIT";
+			case JDBC30Translation.SQL_TYPES_BOOLEAN  : return "Types.BOOLEAN";
+			case Types.TINYINT 	:  return "Types.TINYINT";
+			case Types.SMALLINT	:  return "Types.SMALLINT";
+			case Types.INTEGER 	:  return "Types.INTEGER";
+			case Types.BIGINT 	:  return "Types.BIGINT";
+
+			case Types.FLOAT 	:  return "Types.FLOAT";
+			case Types.REAL 	:  return "Types.REAL";
+			case Types.DOUBLE 	:  return "Types.DOUBLE";
+
+			case Types.NUMERIC 	:  return "Types.NUMERIC";
+			case Types.DECIMAL	:  return "Types.DECIMAL";
+
+			case Types.CHAR		:  return "Types.CHAR";
+			case Types.VARCHAR 	:  return "Types.VARCHAR";
+			case Types.LONGVARCHAR 	:  return "Types.LONGVARCHAR";
+            case Types.CLOB     :  return "Types.CLOB";
+
+			case Types.DATE 		:  return "Types.DATE";
+			case Types.TIME 		:  return "Types.TIME";
+			case Types.TIMESTAMP 	:  return "Types.TIMESTAMP";
+
+			case Types.BINARY			:  return "Types.BINARY";
+			case Types.VARBINARY	 	:  return "Types.VARBINARY";
+			case Types.LONGVARBINARY 	:  return "Types.LONGVARBINARY";
+            case Types.BLOB             :  return "Types.BLOB";
+
+			case Types.OTHER		:  return "Types.OTHER";
+			case Types.NULL		:  return "Types.NULL";
+			default : return String.valueOf(jdbcType);
+		}
+	}
+
+	/*** Some routines for printing test information to html  **/
+
+	public static String TABLE_START_TAG =  "<TABLE border=1 cellspacing=1 cellpadding=1  bgcolor=white  style='width:100%'>";
+	public static String TABLE_END_TAG = "</TABLE>";
+	public static String TD_INVERSE =
+		"<td  valign=bottom align=center style=background:#DADADA;  padding:.75pt .75pt .75pt .75pt'> <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:  6.0pt;margin-left:0in'><b><span style='font-size:8.5pt;font-family:Arial;  color:black'>";
+
+	public static String TD_CENTER = "<TD valign=center align=center> <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;margin-left:0in'><b><span style='font-size:8.5pt;font-family:Arial;  color:black'>";
+
+	public static String TD_LEFT = "<TD valign=center align=left> <p class=MsoNormal style='margin-top:6.0pt;margin-right:0in;margin-bottom:6.0pt;margin-left:0in'><b><span style='font-size:8.5pt;font-family:Arial;  color:black'>";
+
+	
+	public static String TD_END = "</SPAN></TD>";
+
+	public static String END_HTML_PAGE="</BODY> </HTML>";
+	
+
+	public static void startHTMLPage(String title, String author)
+	{
+		System.out.println("<HTML> \n <HEAD>");
+		System.out.println(" <meta http-equiv=\"Content-Type\"content=\"text/html; charset=iso-8859-1\">");
+		System.out.println("<meta name=\"Author\" content=\"" + author +  "\">");
+		System.out.println("<title>" + title + "</title>");
+		System.out.println("</HEAD> <BODY>");
+		System.out.println("<H1>" + title + "</H1>");
+	}
+
+	public static void endHTMLPage()
+	{
+		System.out.println(END_HTML_PAGE);
+	}
+
+/*	public static void main(String[] argv)
+	{
+		testBoolArrayToHTMLTable();
+	}
+*/
+
+	/** 
+	 * Converts 2 dimensional boolean array into an HTML table.
+	 * used by casting.java to print out casting doc
+	 *
+	 * @param rowLabels   - Row labels
+	 * @param colLabels   - Column labels
+	 **/
+	public static void printBoolArrayHTMLTable(String rowDescription,
+											   String columnDescription,
+											   String [] rowLabels, 
+											   String [] colLabels,
+											   boolean[][] array,
+											   String tableInfo)
+	{
+
+		System.out.println("<H2>" + tableInfo + "</H2>");
+
+		System.out.println(TABLE_START_TAG);
+		System.out.println("<TR>");
+		// Print corner with labels
+		System.out.println(TD_INVERSE +columnDescription + "---><BR><BR><BR><BR><BR>");
+		System.out.println("<---" +rowDescription);
+		System.out.println(TD_END);
+
+		
+		// Print column headers
+		for (int i = 0; i < colLabels.length; i++)
+		{
+			System.out.println(TD_INVERSE);
+			for (int c = 0; c < colLabels[i].length() && c < 20; c++)
+			{
+				System.out.println(colLabels[i].charAt(c) + "<BR>");
+			}
+			System.out.println(TD_END);
+		}
+
+		System.out.println("</TR>");
+
+		// Print the Row Labels and Data
+		for (int i = 0; i < rowLabels.length; i ++)
+		{
+			System.out.println("<TR>");
+			System.out.println(TD_LEFT);
+			System.out.println("<C> " +  rowLabels[i] + "</C>");
+			System.out.println(TD_END);
+
+			for (int j = 0; j < colLabels.length; j ++)
+			{
+				System.out.println(TD_CENTER);
+				System.out.println((array[i][j]) ? "Y" : "-");
+				System.out.println(TD_END);
+			}
+			System.out.println("</TR>");
+		}
+
+
+		System.out.println(TABLE_END_TAG);
+		System.out.println("<P><P>");
+
+	}
+
+	/**
+	 * Just converts a string to a hex literal to assist in converting test
+	 * cases that used to insert strings into bit data tables
+	 * Converts using UTF-16BE just like the old casts used to.
+	 *
+	 * @ param s  String to convert  (e.g
+	 * @ resturns hex literal that can be inserted into a bit column.
+	 */
+	public static String stringToHexLiteral(String s)
+	{
+		byte[] bytes;
+		String hexLiteral = null;
+		try {
+			bytes = s.getBytes("UTF-16BE");
+			hexLiteral = convertToHexString(bytes);
+		}
+		catch (UnsupportedEncodingException ue)
+		{
+			System.out.println("This shouldn't happen as UTF-16BE should be supported");
+			ue.printStackTrace();
+		}
+
+		return hexLiteral;
+	}
+
+	private static String convertToHexString(byte [] buf)
+	{
+		StringBuffer str = new StringBuffer();
+		str.append("X'");
+		String val;
+		int byteVal;
+		for (int i = 0; i < buf.length; i++)
+		{
+			byteVal = buf[i] & 0xff;
+			val = Integer.toHexString(byteVal);
+			if (val.length() < 2)
+				str.append("0");
+			str.append(val);
+		}
+		return str.toString() +"'";
+	}
+
+
+
+	/**
+		Get the JDBC version, inferring it from the driver.
+		We cannot use the JDBC DatabaseMetaData method
+		as it is not present in JDBC 2.0.
+	*/
+
+	public static int getJDBCMajorVersion(Connection conn)
+	{
+		try {
+			conn.getClass().getMethod("setSavepoint", null);
+			return 3;
+		} catch (NoSuchMethodException e) {
+			return 2;
+		} catch (NoClassDefFoundError e2) {
+			return 2;
+		}
+
+	}
+
+
+}
+
+
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Triggers.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/Triggers.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,597 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util;
+
+import org.apache.derby.iapi.db.*;
+import java.sql.*;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+/**
+ * Methods for testing triggers
+ */
+public class Triggers
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	// used for threading test
+	static TriggerThread triggerThread;
+
+	public Triggers()
+	{
+	}
+
+	public static String triggerFiresMinimal(String string) throws Throwable
+	{
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		System.out.println("TRIGGER: " + "<"+string+">");
+		return "";
+	}
+
+	public static String triggerFires(String string) throws Throwable
+	{
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		System.out.println("TRIGGER: " + "<"+string+"> on statement "+tec.getEventStatementText());
+		printTriggerChanges();
+		return "";
+	}
+
+	public static void triggerFiresRep(String string) throws Throwable
+	{	
+		String preface = isReplicationTarget() ? 
+						"TARGET: " : isReplicationSource() ?
+								"SOURCE: " : "<not in rep context>" ;
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		System.out.println(preface + "<"+string+"> on statement "+tec.getEventStatementText());
+		printTriggerChanges();
+	}
+
+	public static boolean isReplicationTarget() throws Throwable
+	{
+		String repTargetProp = PropertyInfo.getDatabaseProperty("derby.engineType");
+		return (repTargetProp != null && repTargetProp.equals("8"));
+	}
+	public static boolean isReplicationSource() throws Throwable
+	{
+		String repSourceProp = PropertyInfo.getDatabaseProperty("derby.engineType");
+		return (repSourceProp != null && repSourceProp.equals("4"));
+	}
+
+	public static int doNothingInt() throws Throwable
+	{
+		return 1;
+	}
+
+	public static void doNothing() throws Throwable
+	{}
+
+	public static int doConnCommitInt() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		conn.commit();
+		return 1;
+	}
+
+	public static void doConnCommit() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		conn.commit();
+	}
+			
+	public static void doConnRollback() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		conn.rollback();
+	}
+
+	public static void doConnectionSetIsolation() throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		conn.setTransactionIsolation(conn.TRANSACTION_SERIALIZABLE);
+	}
+			
+	public static int doConnStmtIntNoRS(String text) throws Throwable
+	{
+		doConnStmtNoRS(text);
+		return 1;
+	}
+	public static void doConnStmtNoRS(String text) throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		Statement stmt = conn.createStatement();
+		stmt.execute(text);
+	}
+
+	public static int doConnStmtInt(String text) throws Throwable
+	{
+		doConnStmt(text);
+		return 1;
+	}
+	public static void doConnStmt(String text) throws Throwable
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		Statement stmt = conn.createStatement();
+		if (stmt.execute(text))
+		{
+			ResultSet rs = stmt.getResultSet();
+			while (rs.next())
+			{}
+			rs.close();
+		}
+		stmt.close();
+		conn.close();
+	}
+
+	public static void doConnStmt(String text, boolean targetOnly) throws Throwable
+	{
+		if (isReplicationTarget() == targetOnly)
+		{
+			System.out.println("Trigger Executing: "+text);
+			doConnStmt(text);
+		}
+	}
+
+	public static void workUnitFires() throws Throwable
+	{
+		System.out.println((isReplicationTarget() ? 
+						"TARGET: workUnitFires" : isReplicationSource() ?
+								"SOURCE: workUnitFires" : 
+								"<error, not in rep context?!?>"));
+	}
+
+	public static String printTriggerInfo() throws Throwable
+	{
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		int eventType = tec.getEventType();
+		String eventName;
+
+		switch (eventType)
+		{
+			case TriggerExecutionContext.UPDATE_EVENT: 
+					eventName = "UPDATE";
+					break;
+
+			case TriggerExecutionContext.DELETE_EVENT: 
+					eventName = "DELETE";
+					break;
+
+			case TriggerExecutionContext.INSERT_EVENT: 
+					eventName = "INSERT";
+					break;
+			default:
+				throw new Throwable("unexpected event type: "+eventType);
+		}			
+
+		StringBuffer strbuf = new StringBuffer("TriggerInformation\n------------------\n");
+		strbuf.append("getEventStatetmentText(): "+tec.getEventStatementText());
+		strbuf.append("\ngetEventType(): "+eventName);
+		strbuf.append("\ngetModifiedColumns(): {");
+
+		String[] modifiedCols = tec.getModifiedColumns();
+		if (modifiedCols == null)
+		{
+			strbuf.append(" <all> }");
+		}
+		else
+		{
+			for (int i = 0; i < modifiedCols.length; i++)
+			{
+				if (i > 0)
+					strbuf.append(", ");
+				strbuf.append(modifiedCols[i]);
+			}
+			strbuf.append("}");
+		}
+		strbuf.append("\n");
+		strbuf.append(getModifiedColumnsCheckInfo(tec));
+		System.out.println(strbuf.toString());
+		printTriggerChanges();
+		return "";
+	}
+
+	private static String getModifiedColumnsCheckInfo(TriggerExecutionContext tec) throws Throwable
+	{
+		ResultSet rs = (tec.getNewRowSet() == null) ?
+					tec.getOldRowSet() :
+					tec.getNewRowSet();
+
+		ResultSetMetaData rsmd = rs.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		StringBuffer msg = new StringBuffer("wasColumnModified() on each column\n\t");
+		for (int i=1; i<=numCols; i++) 
+		{
+			if (i > 1) 
+			{
+				msg.append("\n\t");
+			}
+			msg.append(rsmd.getColumnLabel(i));
+			msg.append(":\t");
+			boolean wasModified = tec.wasColumnModified(rsmd.getColumnLabel(i));
+			if (wasModified != tec.wasColumnModified(i))
+			{
+				msg.append("ERROR: tec.wasColumnModifed(String) = "+wasModified);
+				msg.append("and tec.wasColumnModifed(int) = "+(!wasModified));
+			}
+			else
+			{
+				msg.append(wasModified);
+			}
+		}
+		msg.append("\n");
+		return msg.toString();
+	}
+
+	// used for performance numbers
+	public static void zipThroughTriggerResultSets() throws SQLException
+	{
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		zipThroughRs(tec.getOldRowSet());
+		zipThroughRs(tec.getNewRowSet());
+	}
+
+	// used for performance numbers
+	static void zipThroughRs(ResultSet s) throws SQLException
+	{
+		if (s == null)
+			return;
+		
+		while (s.next()) ;
+	}
+
+	public static void barfOnInsertEquals(int value) throws Throwable
+	{
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		ResultSet rs = tec.getNewRowSet();
+		while (rs.next())
+		{
+			if (rs.getInt(1) == value)
+			{
+				throw new SQLException("barfing because of "+value+" in BeforeResultSet","38001");
+			}
+		}
+	}
+
+	private static void printTriggerChanges() throws Throwable
+	{
+		TriggerExecutionContext tec = Factory.getTriggerExecutionContext();
+		System.out.println("BEFORE RESULT SET");
+		dumpRS(tec.getOldRowSet());
+		System.out.println("\nAFTER RESULT SET");
+		dumpRS(tec.getNewRowSet());
+	}
+
+	// lifted from the metadata test	
+	private static void dumpRS(ResultSet s) throws SQLException 
+	{
+		if (s == null)
+		{
+			System.out.println("<NULL>");
+			return;
+		}
+
+		ResultSetMetaData rsmd = s.getMetaData();
+
+		// Get the number of columns in the result set
+		int numCols = rsmd.getColumnCount();
+
+		if (numCols <= 0) 
+		{
+			System.out.println("(no columns!)");
+			return;
+		}
+
+		StringBuffer heading = new StringBuffer("\t ");
+		StringBuffer underline = new StringBuffer("\t ");
+
+		int len;
+		// Display column headings
+		for (int i=1; i<=numCols; i++) 
+		{
+			if (i > 1) 
+			{
+				heading.append(",");
+				underline.append(" ");
+			}
+			len = heading.length();
+			heading.append(rsmd.getColumnLabel(i));
+			len = heading.length() - len;
+			for (int j = len; j > 0; j--)
+			{
+				underline.append("-");
+			}
+		}
+		System.out.println(heading.toString());
+		System.out.println(underline.toString());
+		
+	
+		StringBuffer row = new StringBuffer();
+		// Display data, fetching until end of the result set
+		while (s.next()) 
+		{
+			row.append("\t{");
+			// Loop through each column, getting the
+			// column data and displaying
+			for (int i=1; i<=numCols; i++) 
+			{
+				if (i > 1) row.append(",");
+				row.append(s.getString(i));
+			}
+			row.append("}\n");
+		}
+		System.out.println(row.toString());
+		s.close();
+	}
+
+	// WARNING: will deadlock unless on a separate
+	// connection
+	public static void notifyDMLDone() throws Throwable
+	{
+		if (triggerThread == null)
+		{
+			System.out.println("ERROR: no triggerThread object, has beginInvalidRefToTECTest() been executed?");
+		}
+		else
+		{
+			triggerThread.goForIt();
+			while (!triggerThread.done())
+			{
+				try {Thread.sleep(1000L); } catch (InterruptedException e) {}
+			}
+			triggerThread = null;
+		}
+	}
+
+	public static void simpleTrigger() throws Throwable
+	{
+		Long ai;
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		
+		PreparedStatement lastai = conn.prepareStatement("values org.apache.derby.iapi.db.ConnectionInfo::lastAutoincrementValue('APP', 'TRIGTEST', 'S1') ");
+		
+		ResultSet rs = lastai.executeQuery();
+		rs.next();
+		ai = (Long)rs.getObject(1);
+		rs.close();
+		System.out.println("autoincrement value is " + ai);
+	}
+	/**
+	 */
+	public static void insertIntoTab1(Integer level)
+	      throws Throwable	
+	{
+		Long entry, exit;
+		int levelValue = level.intValue();
+		long entryValue, exitValue;
+
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		
+		PreparedStatement lastai = conn.prepareStatement("values (org.apache.derby.iapi.db.ConnectionInfo::lastAutoincrementValue('APP','TAB1','S1'))");
+		ResultSet rs = lastai.executeQuery();
+		rs.next();
+		entry = (Long)rs.getObject(1);
+		rs.close();
+
+		System.out.println("coming in with level = " + levelValue + 
+						   " and autoincrement = " + entry.longValue());
+		
+		if (levelValue == 3)
+			return;
+
+		
+		PreparedStatement ps = 
+			conn.prepareStatement("insert into tab1 (lvl) values (?)");
+		// insert one higher value into tab1.
+		ps.setInt(1, levelValue + 1);
+		ps.execute();
+		
+		rs = lastai.executeQuery();
+		rs.next();
+		exit = (Long)rs.getObject(1);
+		rs.close();
+
+		// When we get out of this trigger, subsequent firings of the trigger by the
+		// insert statement in this routine shouldn't be returned by
+		// lastautoincrement value.
+
+		System.out.println("going out with level = " + levelValue + 
+						   " and autoincrement = " + exit.longValue());
+
+	}
+
+
+	public static void aiWorkUnit(String s)
+	       	      throws Throwable	
+	{
+		Connection conn = DriverManager.getConnection("jdbc:default:connection");
+		String query = "insert into watab (s) values (?)";
+		PreparedStatement ps = conn.prepareStatement(query);
+		System.out.println("in work unit with s=" + s);
+		ps.setString(1, s);
+		ps.execute();
+	}
+
+	public static String beginInvalidRefToTECTest() throws Throwable
+	{
+		triggerThread = new TriggerThread();
+		triggerThread.start();
+		return "";
+	}
+
+	public static long returnPrimLong(long  x)
+	{
+		return x;
+	}
+
+	public static Long returnLong(Long x)
+	{
+		return x;
+	}
+
+	// used to test binding
+	public static void allTypesMethodPrimitive
+	(
+		int 		i,
+		byte		by,	
+		short		s,
+		long		l,
+		String		s1,
+		String		s2,
+		String		s3,
+		boolean		bl,
+		double		db,
+		float		f1,
+		double		db2,
+		Date		dt,
+		Time		t,
+		Timestamp	ts,
+		byte[]		b1,
+		byte[]		b2,
+		byte[]		b3,
+		double		bd1,
+		double		bd2,
+		BigInteger	bi
+	)
+	{
+	}
+
+	public static void allTypesMethodObject
+	(
+		Integer		i,
+		Integer		by,	
+		Integer		s,
+		Long		l,
+		String		s1,
+		String		s2,
+		String		s3,
+		Boolean		bl,
+		Double		db,
+		Float		f1,
+		Double		db2,
+		Date		dt,
+		Time		t,
+		Timestamp	ts,
+		byte[]		b1,
+		byte[]		b2,
+		byte[]		b3,
+		BigDecimal	bd1,
+		BigDecimal	bd2,
+		BigInteger	bi
+	)
+	{
+	}
+
+}
+
+// class for testing valid tec accesses	
+class TriggerThread extends Thread
+{	
+	private TriggerExecutionContext tec;
+	private ResultSet rs;
+	private boolean start; 
+	private boolean done; 
+
+	public TriggerThread() throws Throwable
+	{
+		this.tec = Factory.getTriggerExecutionContext();
+		if (tec == null)
+		{
+			System.out.println("ERROR: no tec found, no trigger appears to be active");
+			return;
+		}
+	
+		this.rs = (tec.getNewRowSet() == null) ?
+			tec.getOldRowSet() :
+			tec.getNewRowSet();
+	}
+
+	public void goForIt()
+	{
+		start = true;
+	}
+
+	public boolean done()
+	{
+		return done;
+	}
+
+	public void run() 
+	{
+		boolean gotException = false;
+	
+		int i;	
+		for (i = 0; !start && i < 1000; i++)
+		{
+			try {Thread.sleep(50L); } catch (InterruptedException e) {}
+		} 
+		if (i == 1000)
+		{
+			System.out.println("ERROR: start never received");
+			return;
+		}
+		// let the other thread get to its pause point
+		try {Thread.sleep(5000L); } catch (InterruptedException e) {}
+
+		System.out.println("...nested thread running using expired tec");
+		try
+		{
+			System.out.println("...trying to loop through stale result set");
+			Triggers.zipThroughRs(rs);
+		} catch (SQLException e)
+		{
+			gotException = true;	
+			System.out.println("Got expected exception: "+e);
+		}
+		if (!gotException)
+		{
+			System.out.println("ERROR: no exception when trying to do next on stale ResultSet");
+		}
+		gotException = false;
+
+		try
+		{	
+			tec.getNewRowSet();
+		} catch (SQLException e)
+		{
+			gotException = true;	
+			System.out.println("Got expected exception: "+e);
+		}
+
+		if (!gotException)
+		{
+			System.out.println("ERROR: getNewRowSet() didn't throw an exception on stale tec");
+		}
+
+		gotException = false;
+
+		try
+		{	
+			tec.getOldRowSet();
+		} catch (SQLException e)
+		{
+			gotException = true;	
+			System.out.println("Got expected exception: "+e);
+		}
+
+		if (!gotException)
+		{
+			System.out.println("ERROR: getOldRowSet() didn't throw an exception on stale tec");
+		}
+
+		// signal that we are done
+		done = true;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/AbstractAllNegativeNoStatic.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/AbstractAllNegativeNoStatic.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,266 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.VTIClasses
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.VTIClasses;
+
+import org.apache.derby.vti.VTITemplate;
+
+import java.io.InputStream;
+
+import java.math.BigDecimal;
+
+import java.sql.Date;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+
+/**
+ * An abstract class that implements ResultSet where all methods, including
+ * the constructor, throw a SQLException.
+ * This class does not implement the optional static getResultSetMetaData()
+ * method.
+ */
+public abstract class AbstractAllNegativeNoStatic extends VTITemplate
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	public AbstractAllNegativeNoStatic() throws SQLException
+	{
+		throw new SQLException("constructor", "VTI00");
+	}
+
+	// non-public constructor which doesn't throw an exception
+	AbstractAllNegativeNoStatic(int bogus) throws SQLException
+	{
+	}
+
+	// ResultSet interface
+
+	public boolean next() throws SQLException
+	{
+		throw new SQLException("next", "VTI00");
+	}
+
+	public void close() throws SQLException
+	{
+		// we don't throw an exception here because
+		// it masks other exceptions we throw 
+		// because close() is always called when
+		// cleaning up from an exception
+		//throw new SQLException("close", "VTI00");
+	}
+
+	public boolean wasNull() throws SQLException
+	{
+		throw new SQLException("wasNull", "VTI00");
+	}
+
+	public String getString(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getString", "VTI00");
+	}
+
+	public boolean getBoolean(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getBoolean", "VTI00");
+	}
+
+	public byte getByte(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getByte", "VTI00");
+	}
+
+	public short getShort(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getShort", "VTI00");
+	}
+
+	public int getInt(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getInt", "VTI00");
+	}
+
+	public long getLong(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getLong", "VTI00");
+	}
+
+	public float getFloat(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getFloat", "VTI00");
+	}
+
+	public double getDouble(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getDouble", "VTI00");
+	}
+
+	public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException
+	{
+		throw new SQLException("getBigDecimal", "VTI00");
+	}
+
+	public byte[] getBytes(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getBytes", "VTI00");
+	}
+
+	public Date getDate(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getDate", "VTI00");
+	}
+
+	public Time getTime(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getTime", "VTI00");
+	}
+
+	public Timestamp getTimestamp(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getTimestamp", "VTI00");
+	}
+
+	public InputStream getAsciiStream(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getAsciiStream", "VTI00");
+	}
+
+	public InputStream getUnicodeStream(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getUnicodeStream", "VTI00");
+	}
+
+	public InputStream getBinaryStream(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getBinaryStream", "VTI00");
+	}
+
+	public String getString(String columnName) throws SQLException
+	{
+		throw new SQLException("getString", "VTI00");
+	}
+
+	public boolean getBoolean(String columnName) throws SQLException
+	{
+		throw new SQLException("getBoolean", "VTI00");
+	}
+
+	public byte getByte(String columnName) throws SQLException
+	{
+		throw new SQLException("getByte", "VTI00");
+	}
+
+	public short getShort(String columnName) throws SQLException
+	{
+		throw new SQLException("getShort", "VTI00");
+	}
+
+	public int getInt(String columnName) throws SQLException
+	{
+		throw new SQLException("getInt", "VTI00");
+	}
+
+	public long getLong(String columnName) throws SQLException
+	{
+		throw new SQLException("getLong", "VTI00");
+	}
+
+	public float getFloat(String columnName) throws SQLException
+	{
+		throw new SQLException("getFloat", "VTI00");
+	}
+
+	public double getDouble(String columnName) throws SQLException
+	{
+		throw new SQLException("getDouble", "VTI00");
+	}
+
+	public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException
+	{
+		throw new SQLException("getBigDecimal", "VTI00");
+	}
+
+	public byte[] getBytes(String columnName) throws SQLException
+	{
+		throw new SQLException("getBytes", "VTI00");
+	}
+
+	public Date getDate(String columnName) throws SQLException
+	{
+		throw new SQLException("getDate", "VTI00");
+	}
+
+	public Time getTime(String columnName) throws SQLException
+	{
+		throw new SQLException("getTime", "VTI00");
+	}
+
+	public Timestamp getTimestamp(String columnName) throws SQLException
+	{
+		throw new SQLException("getTimestamp", "VTI00");
+	}
+
+	public InputStream getAsciiStream(String columnName) throws SQLException
+	{
+		throw new SQLException("getAsciiStream", "VTI00");
+	}
+
+	public InputStream getUnicodeStream(String columnName) throws SQLException
+	{
+		throw new SQLException("getUnicodeStream", "VTI00");
+	}
+
+	public InputStream getBinaryStream(String columnName) throws SQLException
+	{
+		throw new SQLException("getBinaryStream", "VTI00");
+	}
+
+	public SQLWarning getWarnings() throws SQLException
+	{
+		throw new SQLException("getWarnings", "VTI00");
+	}
+
+	public void clearWarnings() throws SQLException
+	{
+		throw new SQLException("clearWarnings", "VTI00");
+	}
+
+	public String getCursorName() throws SQLException
+	{
+		throw new SQLException("getCursorName", "VTI00");
+	}
+
+	public ResultSetMetaData getMetaData() throws SQLException
+	{
+		throw new SQLException("getMetaData", "VTI00");
+	}
+
+	public Object getObject(int columnIndex) throws SQLException
+	{
+		throw new SQLException("getObject", "VTI00");
+	}
+
+	public Object getObject(String columName) throws SQLException
+	{
+		throw new SQLException("getObject", "VTI00");
+	}
+
+	public int findColumn(String columName) throws SQLException
+	{
+		throw new SQLException("findColumn", "VTI00");
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ECTResult.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ECTResult.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,624 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.VTIClasses
+   (C) Copyright IBM Corp. 2000, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.VTIClasses;
+
+import org.apache.derby.vti.VTITemplate;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Types;
+
+import java.math.BigDecimal;
+
+	/**
+	 * Constructs an updatable result set for a table in an external
+	 * Cloudscape database and is used by the read-write VTI class
+	 * ExternalCloudscapeTable. Cloudscape does not support JDBC
+	 * updatable ResultSets,
+	 * so this class uses an updatable cursor to mimic the behavior of an
+	 * updatable ResultSet.
+	 */
+
+public class ECTResult extends VTITemplate {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2000_2004;
+	private Connection				conn;
+	private int						columnCount;
+	private boolean[]				insertNulls;
+	private Object[]				insertRow;
+	private PreparedStatement		insertPS;
+	private PreparedStatement		selectPS;
+	private ResultSet				selectRS;
+	private PreparedStatement		deletePS;
+	private String					tableName;
+	private String                  cursorName="EIRESULTSETCURSORNAME";
+
+	/**
+	 * Constructs an updatable result set for a table in an external
+	 * Cloudscape database and is used by the read-write VTI class
+	 * ExternalCloudscapeTable. Cloudscape does not support JDBC
+	 * updatable ResultSets,
+	 * so this class uses an updatable cursor to mimic the behavior of an
+	 * updatable ResultSet.
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+
+	ECTResult(Connection conn, String tableName)
+		throws SQLException {
+		
+
+		this.conn = conn;
+		this.tableName = tableName;
+
+		// Cook up a select statement that selects all columns, and turn
+		// it into an updatable cursor. (Cloudscape does not support
+		// updatable ResultSets, so we need an updatable cursor
+		// to mimic that behavior.)
+		selectPS = conn.prepareStatement("SELECT * FROM " + tableName + 
+										 " FOR UPDATE ");
+		selectPS.setCursorName(cursorName);
+	}
+
+	/**
+	 * see java.sql.ResultSet
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public ResultSetMetaData getMetaData() throws SQLException {
+		return getSelectResultSet().getMetaData();
+	}
+
+	
+	/**
+	 * Close the result set, all its resources, and commit the connection.
+	 * Cloudscape calls this method when it is done executing the
+	 * SQL statement that references the VTI class. 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public void close() throws SQLException {
+		// Release all resources
+		if (insertPS != null) {
+			insertPS.close();
+			insertPS = null;
+		}
+		if (selectPS != null) {
+			selectPS.close();
+			selectPS = null;
+		}
+		if (selectRS != null) {
+			selectRS.close();
+			selectRS = null;
+		}
+		if (deletePS != null) {
+			deletePS.close();
+			deletePS = null;
+		}
+		if (conn != null) {
+			conn.commit();
+			
+			conn.close();
+			conn = null;
+		}
+		
+	}
+
+	/**
+	 * Get the next row from the cursor.
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public boolean next() throws SQLException {
+
+		return getSelectResultSet().next();
+
+	}
+
+	/**
+	 * This method gets the result set for the cursor, and also allocates
+	 * the null and row arrays for inserts.
+	 *
+	 * @exception SQLException
+	 */
+	private ResultSet getSelectResultSet() throws SQLException {
+		if (selectRS == null) {
+			selectRS = selectPS.executeQuery();
+
+			ResultSetMetaData rsmd = selectRS.getMetaData();
+
+			columnCount = rsmd.getColumnCount();
+
+			// This array keeps track of which columns should have nulls
+			// inserted into them.
+			insertNulls = new boolean[columnCount];
+
+			// This array keeps track of non-null values to insert into columns.
+			insertRow = new Object[columnCount];
+		}
+
+		return selectRS;
+	}
+
+	/**
+	 * Cloudscape calls this method before inserting a row.
+	 * 
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public void moveToInsertRow() throws SQLException {
+		// With Cloudscape, the cursor is always positioned on
+		//the insert row, so no need
+		// to do anything.
+		
+		
+	}
+
+	/**
+	 * Cloudscape calls this method for each column in the row being inserted.
+	 * 
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public void updateObject(int columnIndex, Object x) throws SQLException {
+		// Make sure insertNulls and inserRow arrays are intialized
+		getSelectResultSet();
+
+		// If we're being asked to insert a null, remember it in the insertNulls
+		// array, otherwise remember the value in the insertRow array.
+		if (x == null) {
+			insertNulls[columnIndex - 1] = true;
+		} else {
+			insertNulls[columnIndex - 1] = false;
+			insertRow[columnIndex - 1] = x;
+		}
+		
+		
+	}
+
+	/**
+	 * Cloudscape calls this to insert a row (after calling moveToInsertRow for the row
+	 * and updateObject for each column in the row).
+	 *
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public void insertRow() throws SQLException {
+		if (insertPS == null) {
+			// Cook up an insert statement where the values are all ? parameters
+			String insertString = "insert into " + tableName + " values (?";
+			for (int index = 1; index < columnCount; index++) {
+				insertString = insertString + " ,?";
+			}
+			insertString = insertString + ")";
+			insertPS = conn.prepareStatement(insertString);
+		}
+
+		// Go through all the columns, and set the ? parameter value to
+		// null if we're inserting a null, otherwise set the ? parameter
+		// value to the value of the Object the user is trying to insert.
+		for (int index = 0; index < insertRow.length; index++) {
+			if (insertNulls[index]) {
+				insertPS.setNull(index + 1,
+   								getMetaData().getColumnType(index + 1));
+			} else {
+				insertPS.setObject(index + 1, insertRow[index]);
+			}
+		}
+
+		// Execute the insert statement.
+		insertPS.executeUpdate();
+		
+		
+	}
+
+	/**
+	 * Cloudscape calls this method for each row it deletes. 
+	 *
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public void deleteRow() throws SQLException {
+		if (deletePS == null) {
+			// Cook up a delete statement that deletes the current row.
+			// Do it now, rather than in constructor, because the cursor
+			// must be open before we can prepare this statement.
+			deletePS = conn.prepareStatement("delete from " + tableName +
+					 				" where current of \"" + cursorName + "\"");
+		}
+
+		// Delete the row at the current cursor position.
+		deletePS.executeUpdate();
+		
+		
+	}
+
+	// Methods of ResultSet dispatched directly to the select ResultSet.
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public boolean wasNull() throws SQLException {
+		
+        return selectRS.wasNull();
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public String getString(int columnIndex) throws SQLException {
+		
+        return selectRS.getString(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public boolean getBoolean(int columnIndex) throws SQLException {
+        return selectRS.getBoolean(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public byte getByte(int columnIndex) throws SQLException {
+        return selectRS.getByte(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public short getShort(int columnIndex) throws SQLException {
+        return selectRS.getShort(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public int getInt(int columnIndex) throws SQLException {
+		
+        return selectRS.getInt(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public long getLong(int columnIndex) throws SQLException {
+        return selectRS.getLong(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+   public float getFloat(int columnIndex) throws SQLException {
+        return selectRS.getFloat(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public double getDouble(int columnIndex) throws SQLException {
+        return selectRS.getDouble(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {
+        return selectRS.getBigDecimal(columnIndex, scale);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public byte[] getBytes(int columnIndex) throws SQLException {
+        return selectRS.getBytes(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.sql.Date getDate(int columnIndex) throws SQLException {
+		
+        return selectRS.getDate(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.sql.Time getTime(int columnIndex) throws SQLException {
+        return selectRS.getTime(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException {
+        return selectRS.getTimestamp(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.io.InputStream getAsciiStream(int columnIndex) throws SQLException {
+        return selectRS.getAsciiStream(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.io.InputStream getUnicodeStream(int columnIndex) throws SQLException {
+        return selectRS.getUnicodeStream(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.io.InputStream getBinaryStream(int columnIndex) throws SQLException {
+        return selectRS.getBinaryStream(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public String getString(String columnName) throws SQLException {
+		
+        return selectRS.getString(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public boolean getBoolean(String columnName) throws SQLException {
+        return selectRS.getBoolean(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public byte getByte(String columnName) throws SQLException {
+        return selectRS.getByte(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public short getShort(String columnName) throws SQLException {
+        return selectRS.getShort(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public int getInt(String columnName) throws SQLException {
+        return selectRS.getInt(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public long getLong(String columnName) throws SQLException {
+        return selectRS.getLong(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public float getFloat(String columnName) throws SQLException {
+        return selectRS.getFloat(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public double getDouble(String columnName) throws SQLException {
+        return selectRS.getDouble(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException {
+        return selectRS.getBigDecimal(columnName, scale);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public byte[] getBytes(String columnName) throws SQLException {
+        return selectRS.getBytes(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.sql.Date getDate(String columnName) throws SQLException {
+		
+        return selectRS.getDate(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.sql.Time getTime(String columnName) throws SQLException {
+        return selectRS.getTime(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.sql.Timestamp getTimestamp(String columnName) throws SQLException {
+        return selectRS.getTimestamp(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.io.InputStream getAsciiStream(String columnName) throws SQLException {
+        return selectRS.getAsciiStream(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.io.InputStream getUnicodeStream(String columnName) throws SQLException {
+        return selectRS.getUnicodeStream(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public java.io.InputStream getBinaryStream(String columnName) throws SQLException {
+        return selectRS.getBinaryStream(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public SQLWarning getWarnings() throws SQLException {
+        return selectRS.getWarnings();
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public void clearWarnings() throws SQLException {
+        selectRS.clearWarnings();
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public String getCursorName() throws SQLException {
+        return selectRS.getCursorName();
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public Object getObject(int columnIndex) throws SQLException {
+		
+        return selectRS.getObject(columnIndex);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public Object getObject(String columnName) throws SQLException {
+		
+        return selectRS.getObject(columnName);
+    }
+
+	/**
+	 * 
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+    public int findColumn(String columnName) throws SQLException {
+		
+        return selectRS.findColumn(columnName);
+    }
+
+	
+	//public int getConcurrency() {
+
+		
+	//return 0;
+
+	//}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ExternalTable.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ExternalTable.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,180 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.VTIClasses
+   (C) Copyright IBM Corp. 2003, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.VTIClasses;
+
+import org.apache.derby.vti.UpdatableVTITemplate;
+
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.DriverManager;
+
+/**
+ * A read-write VTI class; instantiating this VTI within an SQL-J statement
+ * gives access to a table in an external Cloudscape database.
+ * This class automatically loads the embedded URL;
+ * use the embedded form of the database connection URL as the first
+ * argument.<p>
+ * Here is an example SQL-J statement using this VTI class as an
+ * ExternalVirtualTable:<p>
+ * <code>INSERT INTO NEW org.apache.derbyTesting.functionTests.util.VTIClasses.ExternalTable(
+ * 'jdbc:derby:history', 'HotelBookings')
+ * SELECT *  FROM HotelBookings</code><p>
+ *
+ * NOTE: There is no need to define the getResultSetConcurrency method
+ * in this class, since the implementation in UpdatableVTITemplate 
+ * already returns ResultSet.CONCUR_UPDATABLE.<p>
+ * Use the client
+ * form of the URL as the first argument. However, this class does not
+ * automatically load the driver. You will have to load the client driver.
+ * in an SQL-J statement before instantiating the VTI. 
+ *
+ */
+public class ExternalTable extends UpdatableVTITemplate  {
+	/**
+		IBM Copyright &copy notice.
+	*/
+	public static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_2003_2004;
+
+	private Connection	conn;
+	private int		columnCount = 0;
+	private String		url;
+	private String		tableName;
+	private boolean closed = false;
+
+	/**
+	 *  Construct the read-write VTI class.
+	 *
+	 * @param url     URL to the external Cloudscape database.
+     * @param tableName Name of the table in that Cloudscape database.
+	 */
+	public ExternalTable(String url, String tableName) {
+		
+		this.url = url;
+		this.tableName = tableName;
+	}
+
+	/**
+	 * Provide the ResultSet for the external Table. In this case,
+	 * instantiate an ECTResult.
+	 *
+	 * @see ECTResult
+	 *
+	 *
+	 * @return the result set for the query
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public ResultSet executeQuery() throws SQLException {
+		if (closed) {
+	        throw new SQLException("close - already closed");
+		}
+		
+		return new ECTResult(getAConnection(), tableName);
+	}
+
+    /**
+     *   Provide the metadata for the query.
+     *
+     *   @return the result set metadata for the query
+	 *
+     *   @exception SQLException thrown by JDBC calls
+     */
+    public ResultSetMetaData getMetaData() throws SQLException {
+		if (closed) {
+	        throw new SQLException("close - already closed");
+		}
+
+		Statement s = null;
+		ResultSet rs = null;
+        ResultSetMetaData rsmd = null;
+
+		try {
+			s = getAConnection().createStatement();
+
+        	rs = s.executeQuery("select * from " + tableName);
+
+        	rsmd = rs.getMetaData();
+			columnCount = rsmd.getColumnCount();
+		} finally {
+			if (rs != null) {
+				rs.close();
+				rs = null;
+			}
+
+			if (s != null) {
+				s.close();
+				s = null;
+			}
+		}
+		
+
+        return rsmd;
+    }
+
+	/**
+	 * Close this class. Called by Cloudscape only
+	 * at the end compiling a select.
+	 * 
+	 * @see java.sql.Statement
+	 *
+ 	 * @exception SQLException on unexpected JDBC error
+	 */
+	public void close() throws SQLException {
+		if (closed) {
+	        throw new SQLException("close - already closed");
+		}
+
+		if (conn != null) {
+			if (!conn.isClosed())
+				conn.close();
+		}
+		
+
+		closed = true;
+	}
+
+	/**
+	 * Return the number of columns in the table.
+	 *
+	 * @exception SQLException	Thrown if there is an error getting the
+	 *							metadata.
+	 */
+	int getColumnCount() throws SQLException {
+		if (closed) {
+	        throw new SQLException("close - already closed");
+		}
+
+		if (columnCount == 0) {
+			getMetaData();
+		}
+		
+
+		return columnCount;
+	}
+
+	/**
+	 * Get a connection for the user-supplied URL. Get it only once
+	 * per use of this VTI.
+	 */
+	private Connection getAConnection() throws SQLException {
+		if (conn == null || conn.isClosed()) {
+			conn = DriverManager.getConnection(url);
+			conn.setAutoCommit(false);
+		}
+
+
+		return conn;
+	}
+
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/PositiveInteger_VTICosting_SI.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/PositiveInteger_VTICosting_SI.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,135 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.VTIClasses
+   (C) Copyright IBM Corp. 1999, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.VTIClasses;
+
+import org.apache.derby.vti.VTICosting;
+import org.apache.derby.vti.VTIEnvironment;
+
+import java.io.InputStream;
+
+import java.math.BigDecimal;
+
+import java.sql.Date;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.sql.Types;
+
+/**
+ * A class that takes an Integer as a parameter.
+ * This class implements the optional static getResultSetMetaData()
+ * method.
+ */
+public class PositiveInteger_VTICosting_SI extends AbstractAllNegativeNoStatic implements VTICosting
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1999_2004;
+
+	private boolean returnedRow = false;
+	private Integer integer;
+	private int[]	results;
+	private int		currentElem;
+	private boolean supportsMultipleInstantiations;
+
+	public PositiveInteger_VTICosting_SI(int length, 
+										 boolean supportsMultipleInstantiations) 
+		throws SQLException
+	{
+		// call the non-public constructor of the super class
+		// which does not throw an exception
+		super(1);
+		this.supportsMultipleInstantiations = supportsMultipleInstantiations;
+		results = new int[(length > 0) ? length : 0];
+		for (int index = 0; index < length; index++)
+		{
+			results[index] = 1 + (index * 2);
+		}
+		currentElem = -1;
+	}
+
+	// java.sql.ResultSet interface
+
+	public ResultSetMetaData getMetaData()
+		throws SQLException
+	{
+		int[] nullable = new int[1];
+		String[] columnName = new String[1];
+		int[] precision = new int[1];
+		int[] scale = new int[1];
+		int[] columnType = new int[1];
+		int[] columnDisplaySize = new int[1];
+
+		// 1 column - non-nullable integer
+		nullable[0] = ResultSetMetaData.columnNoNulls;
+		columnName[0] = "Column1";
+		precision[0] = 0;
+		scale[0] = 0;
+		columnType[0] = Types.INTEGER;
+		columnDisplaySize[0] = 4;
+
+		// Return RSMD with 1 column
+		return new ResultSetMetaDataPositive(
+						1,	// columnCount
+						nullable,
+						columnName,
+						precision,
+						scale,
+						columnType,
+						columnDisplaySize
+					);
+	}
+
+	public boolean next()
+	{
+		currentElem++;
+		return (currentElem < results.length);
+	}
+
+	public void close()
+	{
+	}
+
+	public boolean wasNull()
+	{
+		return false;
+	}
+
+	public int getInt(int columnNumber)
+	{
+		return results[currentElem];
+	}
+
+	// org.apache.derby.iapi.db.VTICosting interface
+	public double getEstimatedRowCount(VTIEnvironment vtiEnvironment)
+		throws SQLException
+	{
+		// return the default if length is 0
+		return (results.length == 0) ? VTICosting.defaultEstimatedRowCount : (double) results.length;
+	}
+
+	public double getEstimatedCostPerInstantiation(VTIEnvironment vtiEnvironment)
+		throws SQLException
+	{
+		// return the default if length is 0
+		return (results.length == 0) ? VTICosting.defaultEstimatedCost : 1d;
+	}
+
+	public boolean supportsMultipleInstantiations(VTIEnvironment vtiEnvironment)
+		throws SQLException
+	{
+		return supportsMultipleInstantiations;
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ResultSetMetaDataPositive.java
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/VTIClasses/ResultSetMetaDataPositive.java	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,179 @@
+/*
+
+   Licensed Materials - Property of IBM
+   Cloudscape - Package org.apache.derbyTesting.functionTests.util.VTIClasses
+   (C) Copyright IBM Corp. 1998, 2004. All Rights Reserved.
+   US Government Users Restricted Rights - Use, duplication or
+   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
+
+ */
+
+package org.apache.derbyTesting.functionTests.util.VTIClasses;
+
+import org.apache.derby.vti.VTIMetaDataTemplate;
+
+import java.io.InputStream;
+
+import java.math.BigDecimal;
+
+import java.sql.Date;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.SQLWarning;
+import java.sql.Time;
+import java.sql.Timestamp;
+import java.sql.Types;
+
+
+/**
+ * A class that implements ResultSetMetaData where all methods that we expect
+ * to call during testing return valid results.
+ * There are 2 constructors, the 0 argument constructor is for getting the
+ * default values, the other for caller specified values.
+ */
+public class ResultSetMetaDataPositive extends VTIMetaDataTemplate
+{ 
+	/**
+		IBM Copyright &copy notice.
+	*/
+	private static final String copyrightNotice = org.apache.derby.iapi.reference.Copyright.SHORT_1998_2004;
+
+	int			columnCount;
+	int[]		nullable;
+	String[]	columnName;
+	int[]		precision;
+	int[]		scale;
+	int[]		columnType;
+	int[]		columnDisplaySize;
+
+	ResultSetMetaDataPositive() throws SQLException
+	{
+		this(0, (int[]) null, (String[]) null, (int[]) null,
+			 (int[]) null, (int[]) null, (int[]) null);
+	}
+
+	ResultSetMetaDataPositive(int columnCount) throws SQLException
+	{
+		this(columnCount, (int[]) null, (String[]) null, (int[]) null,
+			 (int[]) null, (int[]) null, (int[]) null);
+	}
+
+	ResultSetMetaDataPositive(int columnCount, int[] nullable,
+							  String[] columnName, int[] precision,
+							  int[] scale, int[] columnType,
+							  int[] columnDisplaySize)
+	{
+		this.columnCount = columnCount;
+		this.nullable = nullable;
+		this.columnName = columnName;
+		this.precision = precision;
+		this.scale = scale;
+		this.columnType = columnType;
+		this.columnDisplaySize = columnDisplaySize;
+	}
+
+	// Methods on the interface that we expect to call
+
+	public int getColumnCount() throws SQLException
+	{
+		return columnCount;
+	}
+
+	public int isNullable(int column) throws SQLException
+	{
+		return nullable[column - 1];
+	}
+
+	public String getColumnName(int column) throws SQLException
+	{
+		return columnName[column - 1];
+	}
+
+	public int getPrecision(int column) throws SQLException
+	{
+		return precision[column - 1];
+	}
+
+	public int getScale(int column) throws SQLException
+	{
+		return scale[column - 1];
+	}
+
+	public int getColumnType(int column) throws SQLException
+	{
+		return columnType[column - 1];
+	}
+
+	public int getColumnDisplaySize(int column) throws SQLException
+	{
+		return columnDisplaySize[column - 1];
+	}
+
+	// Methods on the interface that we don't expect to be called.
+
+	public boolean isAutoIncrement(int column) throws SQLException
+	{
+		throw new SQLException("isAutoIncrement", "VTI01");
+	}
+
+	public boolean isCaseSensitive(int column) throws SQLException
+	{
+		throw new SQLException("isCaseSensitive", "VTI01");
+	}
+
+	public boolean isCurrency(int column) throws SQLException
+	{
+		throw new SQLException("isCurrency", "VTI01");
+	}
+
+	public boolean isSigned(int column) throws SQLException
+	{
+		throw new SQLException("isSigned", "VTI01");
+	}
+
+	public String getColumnLabel(int column) throws SQLException
+	{
+		throw new SQLException("getColumnLabel", "VTI01");
+	}
+
+	public String getSchemaName(int column) throws SQLException
+	{
+		throw new SQLException("getSchemaName", "VTI01");
+	}
+
+	public String getTableName(int column) throws SQLException
+	{
+		throw new SQLException("getTableName", "VTI01");
+	}
+
+	public String getCatalogName(int column) throws SQLException
+	{
+		throw new SQLException("getCatalogName", "VTI01");
+	}
+
+	public String getColumnTypeName(int column) throws SQLException
+	{
+		throw new SQLException("getColumnTypeName", "VTI01");
+	}
+
+	public boolean isReadOnly(int column) throws SQLException
+	{
+		throw new SQLException("isReadOnly", "VTI01");
+	}
+
+	public boolean isWritable(int column) throws SQLException
+	{
+		throw new SQLException("isWritable", "VTI01");
+	}
+
+	public boolean isDefinitelyWritable(int column) throws SQLException
+	{
+		throw new SQLException("isDefinitelyWritable", "VTI01");
+	}
+
+	public boolean isSearchable(int column) throws SQLException
+	{
+		throw new SQLException("isSearchable", "VTI01");
+	}
+}

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/build.xml
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/build.xml	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+
+<project default="util" basedir=".">
+
+<!-- Set Properties -->
+  <!-- User settings -->
+  <property file="${user.home}/ant.properties"/>
+  <!-- Set property lib dir -->
+  <property name="properties.dir" value="tools/ant/properties"/>
+  <!-- Significant dirs -->
+  <property file="${properties.dir}/dirs.properties"/>
+  <property file="${properties.dir}/derbytesting.properties"/>
+  <!-- Compiler settings -->
+  <property file="${properties.dir}/${build.compiler}.properties"/>
+  <!-- Compile-time classpath properties files -->
+  <property file="${properties.dir}/extrapath.properties"/>
+  <property file="${properties.dir}/compilepath.properties"/> 
+  <!-- derby testing specific properties files -->
+  <property file="${ant.home}/properties/derbytesting.properties"/>
+  <property file="${user.home}/properties/derbytesting.properties"/>
+  <property name="this.dir" value="${derby.testing.functest.dir}/util"/>
+
+<!-- Targets -->
+  <target name="util" depends="FTpolicy,compile"/>
+  
+  <target name="FTpolicy" depends="copyfiles,compile"/>
+
+  <target name="compile">
+    <javac
+      bootclasspath="${empty}"
+      nowarn="on"
+      debug="${debug}"
+      depend="${depend}"
+      deprecation="${deprecation}"
+      optimize="${optimize}"
+      proceed="${proceed}"
+      verbose="${verbose}" 
+      srcdir="${derby.testing.src.dir}"
+      destdir="${out.dir}">
+      <classpath>
+        <pathelement location="${oro}"/>
+        <pathelement path="${compile.classpath}"/>
+      </classpath>
+      <include name="${this.dir}/*.java"/> 
+      <include name="${this.dir}/StaticInitializers/*.java"/> 
+      <include name="${this.dir}/VTIClasses/*.java"/> 
+    </javac>
+  </target>
+
+
+  <target name="copyfiles">
+    <copy file="${derby.testing.src.dir}/${derby.testing.functest.dir}/util/nwsvr.policy"
+      todir="${out.dir}/${derby.testing.functest.dir}/util"> 
+    </copy>
+  </target>
+
+</project>
+

Added: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/nwsvr.policy
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/nwsvr.policy	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,86 @@
+//Recommended set of permissions to start & use the network server, 
+//assuming the '${cloudscape.codebase}${/}-' directory has been secured. 
+//Fine tune based on your environment settings
+grant codeBase "file:${csinfo.codebase}/-" {
+permission java.io.FilePermission "${derby.system.home}",
+	"read, write, delete";
+permission java.io.FilePermission "${derby.system.home}${/}-",
+ 	"read, write, delete";
+
+permission java.util.PropertyPermission "derby.debug.false", "read, write";
+permission java.util.PropertyPermission "derby.debug.true", "read, write";
+permission java.util.PropertyPermission "derby.*", "read, write";
+
+permission java.lang.RuntimePermission "createClassLoader";
+
+// These permissions are needed to load the JCE for encryption with JDK131.
+// JDK14 has the JCE  preloaded
+permission java.security.SecurityPermission "createAccessControlContext";
+permission java.security.SecurityPermission "insertProvider.SunJCE";
+
+
+// network server permissions
+permission java.net.SocketPermission "127.0.0.1",
+ 	"accept";
+permission java.net.SocketPermission "localhost",
+ 	"accept";
+permission java.net.SocketPermission "${csinfo.serverhost}",
+ 	"accept";
+permission java.net.SocketPermission "${csinfo.trustedhost}",
+ 	"accept";
+
+// Just for the debug build. not needed for jars
+permission java.lang.RuntimePermission "accessDeclaredMembers";
+
+};
+ 
+//Required set of permissions to stop the network server, assuming you have
+// secured the '${csinfo.codebase}${/}-' directory
+//Remember to fine tune this as per your environment.
+grant codeBase "file:${csinfo.codebase}/-"  {
+permission java.net.SocketPermission "localhost", "connect, resolve"; 
+ //The following is required if the server is started with the -h option 
+//(else shutdown access will be denied)
+permission java.net.SocketPermission "${csinfo.serverhost}",
+	"connect, resolve";
+};
+	
+
+// These permissions are needed for sysinfo to allow the jars to be looked at
+grant codeBase "file:${csinfo.codebase}/-"  {
+ permission java.io.FilePermission "${csinfo.codebase}/derby.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbynet.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/db2jcc.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/db2jcc_license_c.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_de_DE.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_es.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_fr.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_it.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_ja_JP.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_ko_KR.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_pt_BR.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_zh_CN.jar", "read";
+ permission java.io.FilePermission "${csinfo.codebase}/derbyLocale_zh_TW.jar", "read";
+
+
+};
+
+// Just for the tests
+grant {
+	// accessDeclaredMembers only needed for debug build
+	permission java.lang.RuntimePermission "accessDeclaredMembers";
+	permission java.util.PropertyPermission "derby.database.mode", "read, write";
+
+	// need acces to socket for ldap tests
+	permission java.net.SocketPermission "socket.ibmus2.ibm.com",
+	"connect, resolve";
+
+	// tests like import/export need file write permission
+	permission java.io.FilePermission "${user.dir}${/}-", "read, write, delete";	
+
+	};
+
+
+
+
+

Modified: incubator/derby/code/trunk/java/tools/org/apache/derby/iapi/tools/build.xml
==============================================================================
--- incubator/derby/code/trunk/java/tools/org/apache/derby/iapi/tools/build.xml	(original)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/iapi/tools/build.xml	Thu Nov 11 23:39:22 2004
@@ -29,7 +29,7 @@
       optimize="${optimize}"
       proceed="${proceed}"
       verbose="${verbose}"
-      srcdir="${ostoolsrc.dir}"
+      srcdir="${derby.tools.src.dir}"
       destdir="${out.dir}">
       <classpath>
         <pathelement path="${compile.classpath}"/>

Modified: incubator/derby/code/trunk/java/tools/org/apache/derby/impl/tools/build.xml
==============================================================================
--- incubator/derby/code/trunk/java/tools/org/apache/derby/impl/tools/build.xml	(original)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/impl/tools/build.xml	Thu Nov 11 23:39:22 2004
@@ -68,7 +68,7 @@
       optimize="${optimize}"
       proceed="${proceed}"
       verbose="${verbose}"
-      srcdir="${ostoolsrc.dir}"
+      srcdir="${derby.tools.src.dir}"
       destdir="${out.dir}">
       <classpath>
         <pathelement path="${java14compile.classpath}"/>

Modified: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/build.xml
==============================================================================
--- incubator/derby/code/trunk/java/tools/org/apache/derby/loc/build.xml	(original)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/build.xml	Thu Nov 11 23:39:22 2004
@@ -18,8 +18,8 @@
   <target name="copyfiles">
     <copy todir="${loc.dir}" flatten="true">
       <fileset dir="${derby.tools.locales.dir}">
-        <include name="sysinfoMessages.properties"/>
-        <include name="toolsmessages.properties"/>
+        <include name="sysinfoMessages*.properties"/>
+        <include name="toolsmessages*.properties"/>
       </fileset>
     </copy>
   </target>

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_de_DE.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_de_DE.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=Wenden Sie sich an die technische Unterst\u00fctzung f\u00fcr Cloudscape.
+SIF01.C=Dr\u00fccken Sie zum Fortfahren die <Eingabetaste>.
+SIF01.D=Es wurde keine Derby-Systeminformation gefunden!
+SIF01.H=<keine Informationen verf\u00fcgbar>
+SIF01.I=Sicherheitsausnahme: {0}
+SIF01.J=FailedUpdate
+SIF01.K=<keinen Namen gefunden>
+SIF01.L=------------------ Java-Informationen ------------------
+SIF01.M=--------- Derby-Informationen --------
+SIF01.N=----------------- Lizenzinformationen ----------------
+SIF01.P=----------------- Informationen zur L\u00e4ndereinstellung -----------------
+SIF01.Q=Es liegen keine Informationen zur Unterst\u00fctzung f\u00fcr l\u00e4nderspezifische Angaben vor.
+SIF01.R=Es wurde Unterst\u00fctzung f\u00fcr die folgende L\u00e4ndereinstellung gefunden: [{0}]
+SIF01.S=\t Version: {0}
+SIF01.T=Aktuelle L\u00e4ndereinstellung:
+
+
+# VM environment properties.
+SIF02.A=Java-Version:    {0}
+SIF02.B=Java-Lieferant:  {0}
+SIF02.C=Java Home:       {0}
+SIF02.D=Java-Klassenpfad:  {0}
+SIF02.E=Name des Betriebssystems:         {0}
+SIF02.F=Architektur des Betriebssystems:         {0}
+SIF02.G=Betriebssystemversion:      {0}
+SIF02.H=Java-Benutzername:  {0}
+SIF02.I=Java-Benutzerausgangsverzeichnis:  {0}
+SIF02.J=Java-Benutzerverzeichnis:   {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Java-Sicherheitsausnahme.
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<null>
+
+# ClasspathTester messages are SIF08
+SIF08.B=Es wird getestet, ob alle Derby-Bibliotheken vorhanden sind. In der Regel sind nur einige der Bibliotheken erforderlich.
+SIF08.C=Geben Sie {0} ein, um eine Liste m\u00f6glicher Argumente aufzurufen.
+SIF08.D=IM KLASSENPFAD GEFUNDEN:
+SIF08.E=NICHT IM KLASSENPFAD GEFUNDEN:
+SIF08.F=ERFOLG: Alle Derby-Klassen wurden im Klassenpfad gefunden.
+SIF08.H=Benutzerdefinierte Klasse ({0})
+SIF08.I=Bibliothek von Derby Network Server ({0})
+SIF08.J=Eingebettete Derby-Engine-Bibliothek ({0})
+SIF08.L=Cloudscape-Client-Bibliotheken ({0})
+SIF08.Q=Derby-Tools-Bibliothek ({0})
+SIF08.U=({0} nicht gefunden.)
+SIF08.A=SYNTAX: {0} eineKlasse{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_es.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_es.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=P\u00f3ngase en contacto con el soporte t\u00e9cnico de Cloudscape.
+SIF01.C=Pulse <Intro> para continuar
+SIF01.D=\u00a1No se ha encontrado informaci\u00f3n del sistema Derby!
+SIF01.H=<informaci\u00f3n no disponible>
+SIF01.I=Excepci\u00f3n de seguridad: {0}
+SIF01.J=Actualizaci\u00f3nAn\u00f3mala
+SIF01.K=<no se encontr\u00f3 nombre>
+SIF01.L=----------------- Informaci\u00f3n de Java ----------------
+SIF01.M=--------- Informaci\u00f3n de Derby --------
+SIF01.N=--------------- Informaci\u00f3n de licencia --------------
+SIF01.P=-------------- Informaci\u00f3n de entorno local ----------
+SIF01.Q=No hay informaci\u00f3n de entorno local para mostrar.
+SIF01.R=Se encontr\u00f3 soporte para el entorno local: [{0}]
+SIF01.S=\t versi\u00f3n: {0}
+SIF01.T=Entorno local actual:
+
+
+# VM environment properties.
+SIF02.A=Versi\u00f3n de Java:     {0}
+SIF02.B=Proveedor de Java:   {0}
+SIF02.C=Inicio Java:         {0}
+SIF02.D=Classpath de Java:   {0}
+SIF02.E=Nombre S0:           {0}
+SIF02.F=Arquitectura SO:     {0}
+SIF02.G=Versi\u00f3n SO:          {0}
+SIF02.H=Nombre usuario Java: {0}
+SIF02.I=Dir. inicial usuario:{0}
+SIF02.J=Dir. usuario:        {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Excepci\u00f3n de seguridad de Java.
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<nulo>
+
+# ClasspathTester messages are SIF08
+SIF08.B=Comprobando la presencia de todas las bibliotecas relacionadas con Derby; normalmente, s\u00f3lo se necesitan algunas.
+SIF08.C=Para obtener una lista de los posibles argumentos, escriba {0}
+SIF08.D=ENCONTRADO EN CLASSPATH:
+SIF08.E=NO ENCONTRADO EN CLASSPATH:
+SIF08.F=CORRECTO: Se han encontrado todas las clases relacionadas con Derby en classpath.
+SIF08.H=clase especificada por el usuario ({0})
+SIF08.I=Biblioteca de Derby Network Server ({0})
+SIF08.J=Biblioteca del motor integrado de Derby ({0})
+SIF08.L=Bibliotecas de cliente de Cloudscape ({0})
+SIF08.Q=Biblioteca de herramientas de Derby ({0})
+SIF08.U=(No se encontr\u00f3 {0}).
+SIF08.A=Uso: {0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_fr.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_fr.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=Prenez contact avec le support technique Cloudscape.
+SIF01.C=Appuyez sur <Entr\u00e9e> pour continuer
+SIF01.D=Aucune information sur Derby System n''a \u00e9t\u00e9 trouv\u00e9e.
+SIF01.H=<informations non disponibles>
+SIF01.I=Exception de s\u00e9curit\u00e9 : {0}
+SIF01.J=FailedUpdate
+SIF01.K=<aucun nom trouv\u00e9>
+SIF01.L=------------------ Informations Java  ------------------
+SIF01.M=--------- Informations Derby --------
+SIF01.N=----------------- Informations de licence  ----------------
+SIF01.P=----------------- Informations sur l''environnement local -----------------
+SIF01.Q=Aucune information sur la prise en charge de l''environnement local n''est disponible.
+SIF01.R=La prise en charge de cet environnement local a \u00e9t\u00e9 trouv\u00e9e : [{0}]
+SIF01.S=\t version : {0}
+SIF01.T=Environnement local actuel :
+
+
+# VM environment properties.
+SIF02.A=Version Java :    {0}
+SIF02.B=Fournisseur Java :     {0}
+SIF02.C=R\u00e9pertoire principal Java :       {0}
+SIF02.D=Chemin de classes Java :  {0}
+SIF02.E=Nom du syst\u00e8me d''exploitation :         {0}
+SIF02.F=Architecture du syst\u00e8me d''exploitation :         {0}
+SIF02.G=Version du syst\u00e8me d''exploitation :         {0}
+SIF02.H=Nom d''utilisateur Java :  {0}
+SIF02.I=R\u00e9pertoire principal utilisateur Java :  {0}
+SIF02.J=R\u00e9pertoire utilisateur Java :   {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Exception de s\u00e9curit\u00e9 Java.
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<nul>
+
+# ClasspathTester messages are SIF08
+SIF08.B=Test de la pr\u00e9sence de toutes les biblioth\u00e8ques associ\u00e9es \u00e0 Derby ; g\u00e9n\u00e9ralement, seules quelques-unes sont n\u00e9cessaires.
+SIF08.C=Pour obtenir une liste des arguments possibles, tapez {0}
+SIF08.D=TROUVE DANS LE CHEMIN DE CLASSES :
+SIF08.E=NON TROUVE DANS LE CHEMIN DE CLASSES :
+SIF08.F=REUSSITE : Toutes les classes associ\u00e9es \u00e0 Derby ont \u00e9t\u00e9 trouv\u00e9es dans le chemin de classes.
+SIF08.H=classes sp\u00e9cifi\u00e9e par l''utilisateur ({0})
+SIF08.I=Biblioth\u00e8que Derby Network Server ({0})
+SIF08.J=Biblioth\u00e8que de moteur int\u00e9gr\u00e9 Derby ({0})
+SIF08.L=Biblioth\u00e8ques principales Cloudscape ({0})
+SIF08.Q=Biblioth\u00e8que d''outils Derby ({0})
+SIF08.U=({0} est introuvable.)
+SIF08.A=SYNTAXE : {0} touteClasse{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_it.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_it.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=Rivolgersi al servizio di assistenza tecnica di Cloudscape.
+SIF01.C=Premere <invio> per continuare
+SIF01.D=Non \u00e8 stato trovato alcun sistema Derby
+SIF01.H=<informazioni non disponibili>
+SIF01.I=Eccezione di sicurezza: {0}
+SIF01.J=Aggiornamento non riuscito
+SIF01.K=<non \u00e8 stato trovato alcun nome>
+SIF01.L=------------------ Informazioni su Java ------------------
+SIF01.M=--------- Informazioni su Derby --------
+SIF01.N=----------------- Informazioni sulla licenza ----------------
+SIF01.P=----------------- Informazioni sulla locale -----------------
+SIF01.Q=Informazioni sul supporto delle locale non disponibili.
+SIF01.R=E'' stato trovato il supporto per la locale: [{0}]
+SIF01.S=\t versione: {0}
+SIF01.T=Locale attuale:
+
+
+# VM environment properties.
+SIF02.A=Versione Java:   {0}
+SIF02.B=Fornitore Java:  {0}
+SIF02.C=Home Java:       {0}
+SIF02.D=Percorso classi Java:  {0}
+SIF02.E=Nome SO:         {0}
+SIF02.F=Architettura SO: {0}
+SIF02.G=Versione SO:     {0}
+SIF02.H=Nome utente Java: {0}
+SIF02.I=Home utente Java: {0}
+SIF02.J=Dir utente Java: {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Eccezione di sicurezza Java.
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<nullo>
+
+# ClasspathTester messages are SIF08
+SIF08.B=Verifica della presenza di tutte le librerie di Derby. Generalmente, ne sono richieste solo alcune.
+SIF08.C=Per visualizzare l''elenco degli argomenti possibili, digitare {0}
+SIF08.D=TROVATO NEL PERCORSO CLASSI:
+SIF08.E=NON TROVATO NEL PERCORSO CLASSI:
+SIF08.F=ESITO POSITIVO: nel percorso classi sono state trovate tutte le classi di Derby.
+SIF08.H=classe specificata dall''utente ({0})
+SIF08.I=Libreria di Network Server di Derby, ({0})
+SIF08.J=Libreria di engine di Derby ({0})
+SIF08.L=Librerie del client di Cloudscape ({0})
+SIF08.Q=Libreria di strumenti di Derby ({0})
+SIF08.U=({0} non trovato)
+SIF08.A=UTILIZZO: {0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_ja_JP.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_ja_JP.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=Cloudscape \u30c6\u30af\u30cb\u30ab\u30eb\u30fb\u30b5\u30dd\u30fc\u30c8\u306b\u9023\u7d61\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+SIF01.C=<return> \u3092\u62bc\u3057\u3066\u7d9a\u884c\u3057\u307e\u3059
+SIF01.D=Derby \u30b7\u30b9\u30c6\u30e0\u60c5\u5831\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093!
+SIF01.H=<\u60c5\u5831\u304c\u4f7f\u7528\u4e0d\u53ef>
+SIF01.I=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u4f8b\u5916: {0}
+SIF01.J=\u66f4\u65b0\u5931\u6557
+SIF01.K=<\u540d\u524d\u304c\u898b\u3064\u304b\u3089\u306a\u3044>
+SIF01.L=------------------ Java \u60c5\u5831 ------------------
+SIF01.M=--------- Derby \u60c5\u5831 --------
+SIF01.N=----------------- \u30e9\u30a4\u30bb\u30f3\u30b9\u60c5\u5831 --------------
+SIF01.P=----------------- \u30ed\u30b1\u30fc\u30eb\u60c5\u5831 ----------------
+SIF01.Q=\u30ed\u30b1\u30fc\u30eb\u30fb\u30b5\u30dd\u30fc\u30c8\u60c5\u5831\u304c\u5831\u544a\u3055\u308c\u307e\u305b\u3093\u3002
+SIF01.R=\u30ed\u30b1\u30fc\u30eb\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f: [{0}]
+SIF01.S=\t \u30d0\u30fc\u30b8\u30e7\u30f3: {0}
+SIF01.T=\u73fe\u884c\u30ed\u30b1\u30fc\u30eb :
+
+
+# VM environment properties.
+SIF02.A=Java \u30d0\u30fc\u30b8\u30e7\u30f3:       {0}
+SIF02.B=Java \u30d9\u30f3\u30c0\u30fc:         {0}
+SIF02.C=Java \u30db\u30fc\u30e0:           {0}
+SIF02.D=Java \u30af\u30e9\u30b9\u30d1\u30b9:       {0}
+SIF02.E=OS \u540d:                 {0}
+SIF02.F=OS \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30fc:   {0}
+SIF02.G=OS \u30d0\u30fc\u30b8\u30e7\u30f3:         {0}
+SIF02.H=Java \u30e6\u30fc\u30b6\u30fc\u540d:       {0}
+SIF02.I=Java \u30e6\u30fc\u30b6\u30fc\u30fb\u30db\u30fc\u30e0: {0}
+SIF02.J=Java \u30e6\u30fc\u30b6\u30fc dir:     {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Java \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fc\u4f8b\u5916\u3067\u3059\u3002
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<null>
+
+# ClasspathTester messages are SIF08
+SIF08.B=\u3059\u3079\u3066\u306e Derby \u95a2\u9023\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u304c\u5b58\u5728\u3059\u308b\u304b\u30c6\u30b9\u30c8\u3057\u307e\u3059\u3002\u901a\u5e38\u306f\u3001\u305d\u306e\u5185\u306e\u3044\u304f\u3064\u304b\u3057\u304b\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002
+SIF08.C=\u53ef\u80fd\u306a\u5f15\u304d\u6570\u306e\u30ea\u30b9\u30c8\u306e\u305f\u3081\u306b\u3001{0} \u3092\u5165\u529b\u3057\u307e\u3059
+SIF08.D=\u30af\u30e9\u30b9\u30d1\u30b9\u5185\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f:
+SIF08.E=\u30af\u30e9\u30b9\u30d1\u30b9\u5185\u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093:
+SIF08.F=\u6210\u529f: \u3059\u3079\u3066\u306e Derby \u95a2\u9023\u30af\u30e9\u30b9\u304c\u3001\u30af\u30e9\u30b9\u30d1\u30b9\u5185\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002
+SIF08.H=\u30e6\u30fc\u30b6\u30fc\u6307\u5b9a\u30af\u30e9\u30b9 ({0})
+SIF08.I=Derby Network Server \u30e9\u30a4\u30d6\u30e9\u30ea\u30fc ({0})
+SIF08.J=Derby \u7d44\u307f\u8fbc\u307f\u30a8\u30f3\u30b8\u30f3\u30fb\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc ({0})
+SIF08.L=Cloudscape Client \u30e9\u30a4\u30d6\u30e9\u30ea\u30fc ({0})
+SIF08.Q=Derby \u30c4\u30fc\u30eb\u30fb\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc ({0})
+SIF08.U=({0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002)
+SIF08.A=\u4f7f\u7528\u6cd5: {0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_ko_KR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_ko_KR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+\ufeff###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=Cloudscape \uae30\uc220 \uc9c0\uc6d0\uc5d0 \ubb38\uc758\ud558\uc2ed\uc2dc\uc624.
+SIF01.C=\uacc4\uc18d\ud558\ub824\uba74 <return>\uc744 \ub204\ub974\uc2ed\uc2dc\uc624.
+SIF01.D=Derby \uc2dc\uc2a4\ud15c \uc815\ubcf4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!
+SIF01.H=<\uc815\ubcf4\uac00 \uc0ac\uc6a9 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc74c>
+SIF01.I=\ubcf4\uc548 \uc608\uc678: {0}
+SIF01.J=FailedUpdate
+SIF01.K=<\uc774\ub984\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc74c>
+SIF01.L=------------------ Java \uc815\ubcf4 ------------------
+SIF01.M=--------- Derby \uc815\ubcf4 --------
+SIF01.N=----------------- \ub77c\uc774\uc13c\uc2a4 \uc815\ubcf4 ----------------
+SIF01.P=----------------- \ub85c\ucf00\uc77c \uc815\ubcf4 -----------------
+SIF01.Q=\ubcf4\uace0\ud560 \ub85c\ucf00\uc77c \uc9c0\uc6d0 \uc815\ubcf4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+SIF01.R=[{0}] \ub85c\ucf00\uc77c \uc9c0\uc6d0\uc744 \ucc3e\uc558\uc2b5\ub2c8\ub2e4.
+SIF01.S=\t \ubc84\uc804: {0}
+SIF01.T=\ud604\uc7ac \ub85c\ucf00\uc77c :
+
+
+# VM environment properties.
+SIF02.A=Java \ubc84\uc804:        {0}
+SIF02.B=Java \ubca4\ub354:        {0}
+SIF02.C=Java \ud648:          {0}
+SIF02.D=Java \ud074\ub798\uc2a4 \uacbd\ub85c: {0}
+SIF02.E=OS \uc774\ub984:          {0}
+SIF02.F=OS \uad6c\uc870:          {0}
+SIF02.G=OS \ubc84\uc804:          {0}
+SIF02.H=Java \uc0ac\uc6a9\uc790 \uc774\ub984: {0}
+SIF02.I=Java \uc0ac\uc6a9\uc790 \ud648:   {0}
+SIF02.J=Java \uc0ac\uc6a9\uc790 \ub514\ub809\ud1a0\ub9ac: {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Java \ubcf4\uc548 \uc608\uc678.
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<\ub110>
+
+# ClasspathTester messages are SIF08
+SIF08.B=\ubaa8\ub4e0 Derby \uad00\ub828 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud14c\uc2a4\ud2b8\ud569\ub2c8\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \uc77c\ubd80\ub9cc\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.
+SIF08.C=\uac00\ub2a5\ud55c \uc778\uc218\uc758 \ubaa9\ub85d\uc5d0 \ub300\ud574\uc11c\ub294, {0}\uc744(\ub97c) \uc785\ub825\ud558\uc2ed\uc2dc\uc624.
+SIF08.D=\ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0\uc11c \ucc3e\uc74c:
+SIF08.E=\ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc5c6\uc74c:
+SIF08.F=\uc131\uacf5: \ubaa8\ub4e0 Derby \uad00\ub828 \ud074\ub798\uc2a4\ub97c \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0\uc11c \ucc3e\uc558\uc2b5\ub2c8\ub2e4.
+SIF08.H=\uc0ac\uc6a9\uc790 \uc9c0\uc815 \ud074\ub798\uc2a4({0})
+SIF08.I=Derby Network Server \ub77c\uc774\ube0c\ub7ec\ub9ac({0})
+SIF08.J=Derby \uc784\ubca0\ub514\ub4dc \uc5d4\uc9c4 \ub77c\uc774\ube0c\ub7ec\ub9ac({0})
+SIF08.L=Cloudscape \ud074\ub77c\uc774\uc5b8\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac({0})
+SIF08.Q=Derby \ub3c4\uad6c \ub77c\uc774\ube0c\ub7ec\ub9ac({0})
+SIF08.U=({0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.)
+SIF08.A=\uc0ac\uc6a9\ubc95: {0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_pt_BR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_pt_BR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=Entre em contato com o Suporte T\u00e9cnico do Cloudscape.
+SIF01.C=Pressione <return> para continuar
+SIF01.D=N\u00e3o foi encontrada nenhuma informa\u00e7\u00e3o sobre o Sistema Derby!
+SIF01.H=<info unavailable>
+SIF01.I=Exce\u00e7\u00e3o de Seguran\u00e7a: {0}
+SIF01.J=FailedUpdate
+SIF01.K=<no name found>
+SIF01.L=------------------ Informa\u00e7\u00f5es sobre Java ------------------
+SIF01.M=--------- Informa\u00e7\u00f5es sobre Derby --------
+SIF01.N=----------------- Informa\u00e7\u00f5es sobre Licen\u00e7a ----------------
+SIF01.P=----------------- Informa\u00e7\u00f5es sobre Locale -----------------
+SIF01.Q=N\u00e3o foi encontrada nenhuma informa\u00e7\u00e3o sobre o relat\u00f3rio.
+SIF01.R=Suporte encontrado para o locale: [{0}]
+SIF01.S=\t vers\u00e3o: {0}
+SIF01.T=Locale Atual :
+
+
+# VM environment properties.
+SIF02.A=Vers\u00e3o do Java:    {0}
+SIF02.B=Fornecedor do Java:     {0}
+SIF02.C=Posi\u00e7\u00e3o inicial do Java:       {0}
+SIF02.D=classpath do Java:  {0}
+SIF02.E=Nome do Sistema Operacional:         {0}
+SIF02.F=Arquitetura do Sistema Operacional: {0}
+SIF02.G=Vers\u00e3o do Sistema Operacional:      {0}
+SIF02.H=Nome do usu\u00e1rio Java:  {0}
+SIF02.I=Posi\u00e7\u00e3o inicial do usu\u00e1rio Java:  {0}
+SIF02.J=Diret\u00f3rio do usu\u00e1rio Java:   {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Exce\u00e7\u00e3o de Seguran\u00e7a Java.
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<null>
+
+# ClasspathTester messages are SIF08
+SIF08.B=Procurando todas as bibliotecas relacionadas ao Cloudscape; geralmente, apenas algumas s\u00e3o necess\u00e1rias.
+SIF08.C=Para obter uma lista de poss\u00edveis argumentos, digite {0}
+SIF08.D=ENCONTRADO NO CAMINHO DA CLASSE:
+SIF08.E=N\u00c3O ENCONTRADO NO CAMINHO DA CLASSE:
+SIF08.F=SUCESSO: Todas as classes relacionadas ao Derby foram localizadas no caminho da classe.
+SIF08.H=classe especificada pelo usu\u00e1rio ({0})
+SIF08.I=Biblioteca do Derby Network Server ({0})
+SIF08.J=Biblioteca de mecanismos incorporada ao Derby ({0})
+SIF08.L=Bibliotecas do Cliente Cloudscape ({0})
+SIF08.Q=Biblioteca de ferramentas do Derby ({0})
+SIF08.U=({0} n\u00e3o encontrado.)
+SIF08.A=USO: {0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_zh_CN.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_zh_CN.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=\u8bf7\u8054\u7cfb Cloudscape \u6280\u672f\u652f\u6301\u4eba\u5458\u3002
+SIF01.C=\u6309 <\u8fd4\u56de\u952e> \u4ee5\u7ee7\u7eed
+SIF01.D=\u672a\u627e\u5230 Derby \u7cfb\u7edf\u4fe1\u606f\uff01
+SIF01.H=<\u4fe1\u606f\u4e0d\u53ef\u7528>
+SIF01.I=\u5b89\u5168\u6027\u5f02\u5e38\uff1a{0}
+SIF01.J=\u65e0\u6cd5\u66f4\u65b0
+SIF01.K=<\u672a\u627e\u5230\u540d\u79f0>
+SIF01.L=------------------ Java \u4fe1\u606f ------------------
+SIF01.M=--------- Derby \u4fe1\u606f --------
+SIF01.N=----------------- \u8bb8\u53ef\u8bc1\u4fe1\u606f ----------------
+SIF01.P=----------------- \u8bed\u8a00\u73af\u5883\u4fe1\u606f -----------------
+SIF01.Q=\u6ca1\u6709\u8981\u62a5\u544a\u7684\u8bed\u8a00\u73af\u5883\u652f\u6301\u4fe1\u606f\u3002
+SIF01.R=\u627e\u5230\u652f\u6301\u7684\u8bed\u8a00\u73af\u5883\uff1a[{0}]
+SIF01.S=\t \u7248\u672c\uff1a{0}
+SIF01.T=\u5f53\u524d\u8bed\u8a00\u73af\u5883\uff1a
+
+
+# VM environment properties.
+SIF02.A=Java \u7248\u672c\uff1a        {0}
+SIF02.B=Java \u4f9b\u5e94\u5546\uff1a      {0}
+SIF02.C=Java \u4e3b\u76ee\u5f55\uff1a      {0}
+SIF02.D=Java \u7c7b\u8def\u5f84\uff1a      {0}
+SIF02.E=OS \u540d\uff1a            {0}
+SIF02.F=OS \u4f53\u7cfb\u7ed3\u6784\uff1a      {0}
+SIF02.G=OS \u7248\u672c\uff1a          {0}
+SIF02.H=Java \u7528\u6237\u540d\uff1a      {0}
+SIF02.I=Java \u7528\u6237\u4e3b\u76ee\u5f55\uff1a{0}
+SIF02.J=Java \u7528\u6237\u76ee\u5f55\uff1a    {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Java \u5b89\u5168\u6027\u5f02\u5e38\u3002
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<null>
+
+# ClasspathTester messages are SIF08
+SIF08.B=\u6d4b\u8bd5\u6240\u6709\u4e0e Derby \u76f8\u5173\u7684\u5e93\u662f\u5426\u5b58\u5728\uff1b\u901a\u5e38\u53ea\u9700\u8981\u5176\u4e2d\u7684\u67d0\u4e9b\u5e93\u3002
+SIF08.C=\u8981\u83b7\u53d6\u53ef\u80fd\u7684\u81ea\u53d8\u91cf\u7684\u5217\u8868\uff0c\u8f93\u5165 {0}
+SIF08.D=\u5728\u7c7b\u8def\u5f84\u4e2d\u627e\u5230\uff1a
+SIF08.E=\u7c7b\u8def\u5f84\u4e2d\u672a\u627e\u5230\uff1a
+SIF08.F=\u6210\u529f\uff1a\u7c7b\u8def\u5f84\u4e2d\u627e\u5230\u6240\u6709 Derby \u76f8\u5173\u7684\u7c7b\u3002
+SIF08.H=\u7528\u6237\u6307\u5b9a\u7684\u7c7b\uff08{0}\uff09
+SIF08.I=Derby \u7f51\u7edc\u670d\u52a1\u5668\u5e93\uff08{0}\uff09
+SIF08.J=Derby \u5d4c\u5165\u5f15\u64ce\u5e93\uff08{0}\uff09
+SIF08.L=Derby \u5ba2\u6237\u673a\u5e93\uff08{0}\uff09
+SIF08.Q=Derby \u5de5\u5177\u5e93\uff08{0}\uff09
+SIF08.U=\uff08{0} \u672a\u627e\u5230\u3002\uff09
+SIF08.A=\u7528\u6cd5\uff1a{0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_zh_TW.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/sysinfoMessages_zh_TW.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,62 @@
+###############################################################################
+#
+# Text for exceptions
+#
+###############################################################################
+
+# Sysinfo, SysInfoWriter, and PropertyNames messages are SIF01.*
+SIF01.B=\u8acb\u6d3d\u8a62 Cloudscape \u6280\u8853\u652f\u63f4\u4e2d\u5fc3\u3002
+SIF01.C=\u8acb\u6309 <return>\uff0c\u7e7c\u7e8c\u4f5c\u696d
+SIF01.D=\u627e\u4e0d\u5230 Derby \u7cfb\u7d71\u8cc7\u8a0a\uff01
+SIF01.H=<\u8cc7\u8a0a\u7121\u6cd5\u4f7f\u7528>
+SIF01.I=\u5b89\u5168\u7570\u5e38\u72c0\u6cc1\uff1a{0}
+SIF01.J=FailedUpdate
+SIF01.K=<\u627e\u4e0d\u5230\u540d\u7a31>
+SIF01.L=------------------ Java \u8cc7\u8a0a ------------------
+SIF01.M=--------- Derby \u8cc7\u8a0a --------
+SIF01.N=------------------- \u6388\u6b0a\u8cc7\u8a0a ------------------
+SIF01.P=----------------- \u8a9e\u8a00\u74b0\u5883\u8cc7\u8a0a ------------------
+SIF01.Q=\u6c92\u6709\u8981\u5831\u544a\u7684\u8a9e\u8a00\u74b0\u5883\u652f\u63f4\u8cc7\u8a0a\u3002
+SIF01.R=\u627e\u5230\u8a9e\u8a00\u74b0\u5883\u7684\u652f\u63f4\uff1a[{0}]
+SIF01.S=\t \u7248\u672c\uff1a{0}
+SIF01.T=\u73fe\u884c\u8a9e\u8a00\u74b0\u5883\uff1a
+
+
+# VM environment properties.
+SIF02.A=Java \u7248\u672c\uff1a       {0}
+SIF02.B=Java \u4f9b\u61c9\u5546\uff1a     {0}
+SIF02.C=Java Home\uff1a       {0}
+SIF02.D=Java \u985e\u5225\u8def\u5f91\uff1a   {0}
+SIF02.E=OS \u540d\u7a31\uff1a         {0}
+SIF02.F=OS \u67b6\u69cb\uff1a         {0}
+SIF02.G=OS \u7248\u672c\uff1a         {0}
+SIF02.H=Java \u4f7f\u7528\u8005\u540d\u7a31\uff1a {0}
+SIF02.I=Java \u4f7f\u7528\u8005 Home\uff1a{0}
+SIF02.J=Java \u4f7f\u7528\u8005\u76ee\u9304\uff1a {0}
+
+
+# ZipInfo messages are SIF03.*
+SIF03.C=Java \u5b89\u5168\u7570\u5e38\u72c0\u6cc1\u3002
+
+# ZipInfoProperties messages are SIF04.*
+SIF04.C=<null>
+
+# ClasspathTester messages are SIF08
+SIF08.B=\u6b63\u5728\u6e2c\u8a66\u6240\u6709 Derby \u76f8\u95dc\u7a0b\u5f0f\u5eab\u662f\u5426\u5b58\u5728\uff1b\u901a\u5e38\u53ea\u9700\u8981\u5176\u4e2d\u4e00\u90e8\u5206\u3002
+SIF08.C=\u5982\u679c\u9700\u8981\u53ef\u80fd\u5f15\u6578\u7684\u6e05\u55ae\uff0c\u8acb\u8f38\u5165 {0}
+SIF08.D=\u5728\u985e\u5225\u8def\u5f91\u4e2d\u627e\u5230\uff1a
+SIF08.E=\u5728\u985e\u5225\u8def\u5f91\u4e2d\u627e\u4e0d\u5230\uff1a
+SIF08.F=SUCCESS: \u5728\u985e\u5225\u8def\u5f91\u4e2d\u627e\u5230 Derby \u76f8\u95dc\u7684\u6240\u6709\u985e\u5225\u3002
+SIF08.H=\u4f7f\u7528\u8005\u6307\u5b9a\u7684\u985e\u5225 ({0})
+SIF08.I=Derby Network Server \u7a0b\u5f0f\u5eab ({0})
+SIF08.J=Derby \u5167\u5d4c\u5f15\u64ce\u7a0b\u5f0f\u5eab ({0})
+SIF08.L=Cloudscape \u7528\u6236\u7aef\u7a0b\u5f0f\u5eab ({0})
+SIF08.Q=Derby \u5de5\u5177\u7a0b\u5f0f\u5eab ({0})
+SIF08.U=\uff08\u627e\u4e0d\u5230 {0}\u3002\uff09
+SIF08.A=\u7528\u6cd5\uff1a{0} anyClass{1}
+
+
+
+
+
+

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_de_DE.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_de_DE.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (Fehlercode = {0})
+UT_NoSqlst=(kein SQLState)
+UT_NoMessa=(keine Nachricht)
+UT_Error012=FEHLER {0}: {1}{2}
+UT_NoSqlst_7=(kein SQLState)
+UT_NoMessa_8=(keine Nachricht)
+UT_Warni01=WARNUNG {0}: {1}
+UT_1RowInserUpdatDelet=1 Zeile eingef\u00fcgt/aktualisiert/gel\u00f6scht
+UT_0RowsInserUpdatDelet={0} Zeilen eingef\u00fcgt/aktualisiert/gel\u00f6scht
+UT_StateExecu=Anweisung ausgef\u00fchrt.
+UT_0RowsSelec={0} Zeilen ausgew\u00e4hlt
+UT_1RowSelec=1 Zeile ausgew\u00e4hlt
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=Keine aktuelle Zeile
+UT_NoCurreRow_19=Keine aktuelle Zeile
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=Ung\u00fcltiges Escape-Zeichen.
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=IJ-FEHLER: Nicht gefundene Ressource: {0}
+IJ_IjErroFileNo=IJ-FEHLER: Nicht gefundene Datei: {0}
+IJ_IjErroUnabTo=IJ-FEHLER: Ausgabe kann nicht zur\u00fcckgesetzt werden auf: {0}
+IJ_IjErroMaxiVa=IJ-FEHLER: der Wert {0} f\u00fcr maximumDisplayWidth ist keine g\u00fcltige ganze Zahl.
+# From ij.jj
+IJ_Pass=BESTANDEN
+IJ_Fail=GESCHEITERT
+IJ_Unx=\ **** UNERWARTETE ERGEBNISSE
+IJ_NoConneAvail=Es sind keine Verbindungen verf\u00fcgbar.
+IJ_CurreConne=* = aktuelle Verbindung
+IJ_NoCurreConne=Keine aktuelle Verbindung
+IJ_TestsRun0Pass12Fail34=Testl\u00e4ufe: {0}   Bestanden: {1} ({2} %)   Gescheitert: {3} ({4} %)
+IJ_UnexpResulUnx01=***** UNERWARTETE ERGEBNISSE: {0} ({1} %) *****
+IJ_HelpText=\ \n\
+\ Unter anderem werden folgende Befehle unterst\u00fctzt:\n\
+\ \n\
+\  PROTOCOL 'JDBC-Protokoll' [ AS Kennung ];\n\
+\                                  -- definiert ein benanntes oder Standardprotokoll\n\
+\  DRIVER 'Treiberklasse';         -- l\u00e4dt die benannte Klasse\n\
+\  CONNECT 'Datenbank-URL'   [ PROTOCOL benanntesProtokoll ] [ AS Verbindungsname ];\n\
+\                                  -- stellt Verbindung zum Datenbank-URL her\n\
+\                                  -- kann eine Kennung zuordnen\n\
+\  SET CONNECTION Verbindungsname; -- schaltet auf die angegebene Verbindung um\n\
+\  SHOW CONNECTIONS;               -- listet alle Verbindungen auf\n\
+\  AUTOCOMMIT [ ON | OFF ];        -- legt das automatische Festschreiben der Verbindung fest\n\
+\  DISCONNECT [ CURRENT | Verbindungsname | ALL ];\n\
+\                                  -- aktuelle, benannte oder alle Verbindungen trennen;\n\
+\                                  -- Standardeinstellung: CURRENT\n\
+\ \n\
+\  COMMIT;                         -- schreibt die aktuelle Transaktion fest\n\
+\  ROLLBACK;                       -- setzt die aktuelle Transaktion zur\u00fcck\n\
+\ \n\
+\  PREPARE Name AS 'SQL-J-Text';   -- erstellt den SQL-J-Text\n\
+\  EXECUTE { Name | 'SQL-J-Text' } [ USING { Name | 'SQL-J-Text' } ] ;\n\
+\                                  -- f\u00fchrt die Anweisung mit Parameter aus\n\
+\                                  -- Werte aus der Zeile mit der USING-Ergebnismenge\n\
+\  REMOVE Name;                    -- entfernt die benannte zuvor erstellte Anweisung\n\
+\ \n\
+\  RUN 'Dateiname';                -- f\u00fchrt Befehle aus der benannten Datei aus\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];       -- definiert f\u00fcr IJ den Modus f\u00fcr abgelaufene Zeit\n\
+\  MAXIMUMDISPLAYWIDTH ganzeZahl;\n\
+\                                  -- setzt die maximale Anzeigebreite f\u00fcr\n\
+\                                  -- jede Spalte auf einen ganzzahligen Wert\n\
+\ \n\
+\  ASYNC Name 'SQL-J-Text';        -- f\u00fchrt den Befehl in einem anderen Thread aus\n\
+\  WAIT FOR Name;                  -- wartet auf das Ergebnis des Befehls ASYNC\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR Name AS 'SQL-J-Abfrage';\n\
+\                                  -- ruft einen Cursor (JDBC-Ergebnismenge) f\u00fcr die Abfrage ab\n\
+\                                  -- ab JDBC 2.0 sind nur SCROLL-Cursor \n\
+\                                  -- verf\u00fcgbar. \n\
+\                                  -- (In JDBC 1.X wird der Scroll-Typ des Cursors ignoriert.) \n\
+\  NEXT Name;                      -- ruft die n\u00e4chste Zeile vom benannten Cursor ab\n\
+\  FIRST Name;                     -- ruft die erste Zeile vom benannten Scroll-Cursor ab\n\
+\  LAST Name;                      -- ruft die letzte Zeile vom benannten Scroll-Cursor ab\n\
+\  PREVIOUS Name;                  -- ruft die vorherige Zeile vom benannten Scroll-Cursor ab\n\
+\  ABSOLUTE ganzeZahl Name;        -- platziert den benannten Scroll-Cursor in der absoluten Zeile\n\
+\                                  -- (Eine negative Zahl gibt die Position ausgehend von der letzten Zeile an.) \n\
+\  RELATIVE ganzeZahl Name;        -- platziert den benannten Scroll-Cursor relativ zur aktuellen Zeile\n\
+\                                  -- (ganzeZahl ist die Anzahl der Zeilen)\n\
+\  AFTER LAST Name;                -- platziert den benannten Scroll-Cursor hinter der letzten Zeile\n\
+\  BEFORE FIRST Name;              -- platziert den benannten Scroll-Cursor vor der ersten Zeile\n\
+\  GETCURRENTROWNUMBER Name;       -- gibt f\u00fcr die aktuelle Position des benannten Scroll-Cursors die Zeilennummer an\n\
+\                                  -- (Befindet sich der Cursor nicht in einer Zeile, wird 0 zur\u00fcckgegeben.) \n\
+\  CLOSE Name;                     -- schlie\u00dft den benannten Cursor\n\
+\  UNICODEESCAPE [ ON | OFF ];     -- definiert f\u00fcr den Eingabedatenstrom den Unicode-Escape-Modus\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                                  -- steuert die Darstellung von Daten, die von der L\u00e4ndereinstellung abh\u00e4ngen\n\
+\ \n\
+\  EXIT;                           -- beendet IJ\n\
+\  HELP;                           -- zeigt diese Nachricht an\n\
+\ \n\
+\ Nicht erkannte Befehle werden als potenzielle SQL-J-Befehle angesehen und direkt ausgef\u00fchrt.\n\
+\ \n
+# From ijException.java
+IJ_IllegalStatementName={0} ist f\u00fcr eine Anweisung ein ung\u00fcltiger Name
+IJ_NotYetImpl=Noch nicht implementiert
+IJ_AlreHaveACon=Es gibt bereits eine Verbindung mit dem Namen {0}
+IJ_ExceRunnComm=Ausnahme bei Ausf\u00fchrung des Befehls: {0}
+IJ_UnabToGetWar=F\u00fcr die Verbindung k\u00f6nnen keine Warnungen abgerufen werden
+IJ_CoulNotLocaC=Die Klasse f\u00fcr das Protokoll {0} wurde nicht gefunden
+IJ_CoulNotLocaC_5=Die Klasse {0} wurde nicht gefunden
+IJ_FailToDisc=Die Verbindung konnte nicht getrennt werden
+IJ_DrivNotClasN=Der Treibername ist nicht der Klassenname {0}
+IJ_FileNotFoun=Datei nicht gefunden
+IJ_CannotCloseInFile=Die IJ-Eingabedatei {0} kann nicht geschlossen werden
+IJ_IsNotAlloOnA={0} ist f\u00fcr einen reinen Vorw\u00e4rts-Cursor unzul\u00e4ssig.
+IJ_GetcCallFail=Aufruf von getConnection gescheitert
+IJ_Ioex=IOException: {0}
+IJ_NeedToDiscFi=Zun\u00e4chst muss die Verbindung getrennt werden
+IJ_NoAsynStatEx=Es ist keine ASYNC-Anweisung mit dem Namen {0} vorhanden
+IJ_NoConnExisWi=Es ist keine Verbindung mit dem Namen {0} vorhanden
+IJ_NoProtExisWi=Es ist kein Protokoll mit dem Namen {0} vorhanden
+IJ_IsOnlySuppIn={0} wird erst ab JDBC 2.0 unterst\u00fctzt.
+IJ_UsinClauHadN=Die Verwendung der Klausel hat zu keinem Ergebnis gef\u00fchrt
+IJ_UnabToEsta={0} kann nicht erstellt werden
+IJ_UnabToGetWar_19=F\u00fcr die Ergebnismenge k\u00f6nnen keine Warnungen abgerufen werden
+IJ_ResoNotFoun=Ressource nicht gefunden
+IJ_ScroCursAre1=Scroll-Cursor werden erst ab JDK 1.2 unterst\u00fctzt.
+IJ_HoldCursAre4=Die Lebensdauer kann nicht mit den JDBC-3.0-APIs von Vorversionen des JDK 1.4 ge\u00e4ndert werden.
+IJ_UnabToGetWar_22=F\u00fcr die Anweisung k\u00f6nnen keine Warnungen abgerufen werden
+IJ_WaitForStatI=Unterbrechung des Wartestatus f\u00fcr Anweisung: {0}
+IJ_0IsAnInvaVal=F\u00fcr ABSOLUTE <ganze Zahl> <Cursor-Name> ist 0 ein ung\u00fcltiger Wert
+# From ijFatalException.java
+IJ_FataExceTerm=Schwerwiegende Ausnahme. Das Tool wird beendet.
+IJ_Fata01=Schwerwiegende Ausnahme: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=Syntax: java org.apache.derby.tools.ij [-p Merkmaldatei] [-ca Merkmaldatei_f\u00fcr_Verbindungsattribut] [Eingabedatei]
+IJ_IjWarniAutocMayCloseUsingResulSet=IJ-WARNUNG: Beim automatischen Festschreiben kann die verwendete Ergebnismenge geschlossen werden.
+# From utilMain.java
+IJ_IjVers30C199=IJ Version {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=ABGELAUFENE ZEIT = {0} Millisekunden
+IJ_IjErro0=IJ-FEHLER: {0}
+IJ_JavaErro0=JAVA-FEHLER: {0}
+IJ_ElapTime0Mil_4=ABGELAUFENE ZEIT = {0} Millisekunden
+IJ_IjErro0_5=IJ-FEHLER: {0}
+IJ_IjErro0_6=IJ-FEHLER: {0}
+IJ_JavaErro0_7=JAVA-FEHLER: {0}
+IJ_Erro0=\ (Fehlercode = {0})
+IJ_NoSqls=(kein SQLState)
+IJ_NoMess=(keine Nachricht)
+IJ_Erro012=FEHLER {0}: {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT={0} unentschiedene Transaktionen wurden wiederhergestellt
+IJ_Tran01=Transaktion {0} : {1}
+IJ_IlleValu=UNG\u00dcLTIGER WERT
+IJ_01SeeClouLog={0} : {1} (siehe cloudcape.LOG)
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource ist nicht im Klassenpfad enthalten. Nehmen Sie die Datei cs.jar in den Klassenpfad auf.
+IJ_XANoI=Es kann keine Instanz von EmbeddedXADataSource erstellt werden. Stellen Sie die Datei cs.jar in den Klassenpfad.
+# From ParseException.java
+IJ_EncoAtLineColu=In Zeile {1}, Spalte {2}, wurde "{0}" gefunden
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=Lexikalischer Fehler in Zeile {0}, Spalte {1}. Gefunden: {2} nach: "{3}"
+TL_incorCase=Die Gro\u00df-/Kleinschreibung des Cloudscape-Attributs ist falsch.
+TL_unknownAtt=Das Attribut ist in Cloudscape unbekannt.
+TL_trueFalse=Der Wert muss auf wahr/falsch gesetzt werden.
+TL_dupAtt=Das Attribut ist ein Duplikat.
+TL_urlLabel1=URL-Attribut {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=F\u00fcr die aktuelle L\u00e4ndereinstellung wurden keine Ressourcen gefunden. Es wird auf {0} umgeschaltet.
+CSLOOK_Usage=\ \n\
+\ SYNTAX:\n\
+\ java org.apache.derby.tools.dblook -d <Quellen-DB-URL> [OPTIONEN]\n\
+\n\
+\ \tDer Quellen-URL ist hier der vollst\u00e4ndige URL mit Verbindungsprotokoll\n\
+\ \tund allen anwendbaren Verbindungsattributen. Verwenden Sie beispielsweise\n\
+\ \t'jdbc:cloudscape:meineDB' oder 'jdbc:cloudscape:net://localhost:1527/meineDB:user=usr;'. \n\
+\n\
+\ \tZu den Optionen geh\u00f6ren unter anderem: \n\
+\n\
+\ \t-z <Schemaname> f\u00fcr die Angabe eines Schemas, auf das die DDL-Generierung\n\
+\ \t beschr\u00e4nkt werden soll. Es wird nur DDL f\u00fcr Datenbankobjekte mit diesem Schema\n\
+\ \t generiert.\n\
+\n\
+\ \t-t <TabelleEins> <TabelleZwei> ... f\u00fcr die Angabe eines Tabellenverzeichnisses, f\u00fcr das\n\
+\ \t die DDL generiert werden soll. Alle nicht im Verzeichnis enthaltenen Tabellen werden ignoriert.\n\
+\n\
+\ \t-td <Wert> f\u00fcr die Angabe dessen, was an das Ende jeder\n\
+\ \t DDL-Anweisung angeh\u00e4ngt werden soll.\n\
+\t\tStandardm\u00e4\u00dfig ist dies ';'.\n\
+\n\
+\ \t-noview verhindert die Generierung von DDL f\u00fcr Ansichten.\n\
+\n\
+\ \t-append verhindert das \u00dcberschreiben der Ausgabedateien.\n\
+\n\
+\ \t-verbose gibt Fehlernachrichten nicht nur in der Protokolldatei sondern\n\
+\ \t auch auf der Konsole aus. Wird diese Option nicht angegeben, erfolgt die Ausgabe der \n\
+\ \t Fehlernachrichten nur in der Protokolldatei.\n\
+\n\
+\ \t-o <Dateiname> f\u00fcr die Angabe des Namens der Datei, in die die generierte\n\
+\ \t DDL geschrieben werden soll. \n\
+\ \t\tIst diese Option nicht angegeben, erfolgt die Ausgabe standardm\u00e4\u00dfig auf der Konsole.\ \n
+CSLOOK_FileCreation=Diese Datei wurde mit dem Cloudscape-Dienstprogramm cslook erstellt.
+CSLOOK_OutputLocation=Die Ausgabe wird an die Datei {0} gesendet.\n
+CSLOOK_Timestamp=Zeitmarke: {0}
+CSLOOK_DBName=Quellendatenbank: {0}
+CSLOOK_DBUrl=Verbindungs-URL: {0}
+CSLOOK_TargetTables=Das Dienstprogramm cslook ber\u00fccksichtigt nur die angegebenen Tabellen.
+CSLOOK_TargetSchema=Angegebenes Schema: {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=DDL-Anweisungen f\u00fcr Tabellen
+CSLOOK_ChecksHeader=DDL-Anweisungen f\u00fcr \u00dcberpr\u00fcfungen
+CSLOOK_IndexesHeader=DDL-Anweisungen f\u00fcr Indizes
+CSLOOK_JarsHeader=DDL-Anweisungen f\u00fcr JARs
+CSLOOK_KeysHeader=DDL-Anweisungen f\u00fcr Schl\u00fcssel
+CSLOOK_PrimUniqueHeader=prim\u00e4r/eindeutig
+CSLOOK_ForeignHeader=fremd
+CSLOOK_SchemasHeader=DDL-Anweisungen f\u00fcr Schemata
+CSLOOK_StoredProcHeader=DDL-Anweisungen f\u00fcr gespeicherte Prozeduren
+CSLOOK_TriggersHeader=DDL-Anweisungen f\u00fcr Ausl\u00f6ser
+CSLOOK_ViewsHeader=DDL-Anweisungen f\u00fcr Ansichten
+CSLOOK_Jar_Note=**** ANMERKUNG **** F\u00fcr das ordnungsgem\u00e4\u00dfe Laden von JAR-Dateien m\u00fcssen\n\
+-- Sie 1) sicherstellen, dass das (von cslook automatisch erstellte)\n\
+-- Verzeichnis CSJARS an der Erstellungsposition (d. h. in dem in\n\
+-- den folgenden Anweisungen angegebenen Pfad) vorhanden ist, oder\n\
+-- 2) den in den folgenden Anweisungen angegebenen Pfad auf die \n\
+-- aktuelle Position von CSJARS setzen. Wenn das Verzeichnis CSJARS\n\
+-- nicht vorhanden ist oder verschoben wurde und der Pfad nicht stimmt,\n\
+-- l\u00f6sen die folgenden DDL-Anweisungen Fehler aus, die das Laden der\n\
+-- JAR-Dateien verhindern.
+CSLOOK_FailedToLoadJar=Die JAR-Datei {0} konnte nicht geladen werden
+CSLOOK_DefaultSchema=R\u00fcckkehr zum Standardschema 'APP'
+CSLOOK_AtLeastOneDebug=-- Anmerkung: Beim Generieren der DDL wurde mindestens eine\n\
+-- unerwartete Fehlernachricht/Warnung festgestellt. \u00dcberpr\u00fcfen Sie die\n\
+-- Nachrichten in cslook.log.\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_es.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_es.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,245 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (errorCode = {0})
+UT_NoSqlst=(sin SQLState)
+UT_NoMessa=(sin mensaje)
+UT_Error012=ERROR {0}: {1}{2}
+UT_NoSqlst_7=(sin SQLState)
+UT_NoMessa_8=(sin mensaje)
+UT_Warni01=AVISO {0}: {1}
+UT_1RowInserUpdatDelet=1 fila insertada/actualizada/suprimida
+UT_0RowsInserUpdatDelet={0} filas insertadas/actualizadas/suprimidas
+UT_StateExecu=Sentencia ejecutada.
+UT_0RowsSelec={0} filas seleccionadas
+UT_1RowSelec=1 fila seleccionada
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=Sin fila actual
+UT_NoCurreRow_19=Sin fila actual
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=Car\u00e1cter de escape no v\u00e1lido.
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=ERROR IJ: recurso no encontrado: {0}
+IJ_IjErroFileNo=ERROR IJ: archivo no encontrado: {0}
+IJ_IjErroUnabTo=ERROR IJ: imposible restablecer salida en: {0}
+IJ_IjErroMaxiVa=ERROR IJ: el valor maximumDisplayWidth {0} no es un entero.
+# From ij.jj
+IJ_Pass=SUPERADA
+IJ_Fail=ANOMAL\u00cdA
+IJ_Unx=\ **** INESPERADO
+IJ_NoConneAvail=Sin conexiones disponibles.
+IJ_CurreConne=* = conexi\u00f3n actual
+IJ_NoCurreConne=Sin conexi\u00f3n actual
+IJ_TestsRun0Pass12Fail34=Ejecuci\u00f3n de pruebas: {0}   superadas: {1} ({2}%)   anomal\u00eda: {3} ({4}%)
+IJ_UnexpResulUnx01=***** RESULTADOS INESPERADOS,   inesperado: {0} ({1}%) *****
+IJ_HelpText=\ \n\
+\ Los mandatos a los que se da soporte incluyen:\n\
+\ \n\
+\  PROTOCOL 'protocolo JDBC' [ AS identidad ];\n\
+\                               -- establece el protocolo indicado o por omisi\u00f3n\n\
+\  DRIVER 'clase para controlador'; \
+\                               -- carga la clase indicada\n\
+\  CONNECT 'url para base datos' [ PROTOCOL protocolo ] [ AS nombre_conexi\u00f3n ];\n\
+\                               -- conecta al URL de la base de datos\n\
+\                               -- y opcionalmente asigna un identificador\n\
+\  SET CONNECTION nombre_conexi\u00f3n; \
+\                               -- cambia a la conexi\u00f3n especificada\n\
+\  SHOW CONNECTIONS;            -- lista todas las conexiones\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- establece la modalidad AUTOCOMMIT para la conexi\u00f3n\n\
+\  DISCONNECT [ CURRENT | nombre_conexi\u00f3n | ALL ];\n\
+\                               -- descarta la conexi\u00f3n actual, la indicada o todas;\n\
+\                               -- el valor por omisi\u00f3n es CURRENT\n\
+\ \n\
+\  COMMIT;                      -- compromete la transacci\u00f3n actual\n\
+\  ROLLBACK;                    -- retrotrae la transacci\u00f3n actual\n\
+\ \n\
+\  PREPARE nombre AS 'texto SQL-J'; \
+\                               -- prepara el texto SQL-J\n\
+\  EXECUTE { nombre | 'texto SQL-J' } [ USING { nombre | 'texto SQL-J' } ] ;\n\
+\                               -- ejecuta la sentencia con los valores de par\u00e1metro\n\
+\                               -- de la fila del juego de resultados de USING\n\
+\  REMOVE nombre;               -- elimina la sentencia preparada previamente indicada\n\
+\ \n\
+\  RUN 'nombrearchivo'          -- ejecuta los mandatos del archivo indicado\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- establece la modalidad de tiempo transcurrido de ij\n\
+\  MAXIMUMDISPLAYWIDTH valorEntero;\n\
+\                               -- establece la anchura m\u00e1xima de visualizaci\u00f3n de\n\
+\                               -- cada columna como valorEntero\n\
+\ \n\
+\  ASYNC nombre 'texto SQL-J';  -- ejecuta el mandato en otra hebra\n\
+\  WAIT FOR nombre;             -- espera resultados del mandato ASYNC\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR nombre AS 'consulta SQL-J';\n\
+\                               -- obtiene un cursor (juego de resultados JDBC) sobre la consulta\n\
+\                               -- los cursores SCROLL s\u00f3lo est\u00e1n disponibles en \n\
+\                               -- JDBC 2.0 y superior. \n\
+\                               -- (El tipo SCROLL de cursor se ignora en JDBC 1.X.) \n\
+\  NEXT nombre;                 -- obtiene la fila siguiente del cursor indicado\n\
+\  FIRST nombre;                -- obtiene la primera fila del cursor de desplazamiento indicado\n\
+\  LAST nombre;                 -- obtiene la \u00faltima fila del cursor de desplazamiento indicado\n\
+\  PREVIOUS nombre;             -- obtiene la fila anterior del cursor de desplazamiento indicado\n\
+\  ABSOLUTE entero nombre;      -- sit\u00faa el cursor de desplazamiento indicado en el n\u00famero de fila absoluto\n\
+\                               -- (Un n\u00famero negativo indica la posici\u00f3n desde la \u00faltima fila). \n\
+\  RELATIVE entero nombre;      -- sit\u00faa el cursor de desplazamiento indicado relativo a la fila actual\n\
+\                               -- (entero es el n\u00famero de filas)\n\
+\  AFTER LAST nombre;           -- sit\u00faa el cursor de desplazamiento indicado despu\u00e9s de la \u00faltima fila\n\
+\  BEFORE FIRST nombre;         -- sit\u00faa el cursor de desplazamiento indicado antes de la primera fila\n\
+\  GETCURRENTROWNUMBER nombre;  -- devuelve el n\u00famero de fila de la posici\u00f3n actual del cursor de desplazamiento indicado\n\
+\                               -- (devuelve 0 cuando el cursor no est\u00e1 situado en una fila)\n\
+\  CLOSE nombre;                -- cierra el cursor indicado\n\
+\  UNICODEESCAPE [ ON | OFF ];  -- establece la modalidad de escape unicode para la corriente de entrada\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- controla la representaci\u00f3n de datos sensible al entorno local\n\
+\ \n\
+\  EXIT;                        -- sale de ij\n\
+\  HELP;                        -- muestra este mensaje\n\
+\ \n\
+\ Todo mandato no reconocido se trata como un mandato SQL-J potencial y se ejecuta directamente.\n\
+\ \n
+# From ijException.java
+IJ_IllegalStatementName={0} es un nombre no permitido para una sentencia
+IJ_NotYetImpl=No implementado a\u00fan
+IJ_AlreHaveACon=Ya existe una conexi\u00f3n con el nombre {0}
+IJ_ExceRunnComm=Excepci\u00f3n al ejecutar el mandato: {0}
+IJ_UnabToGetWar=No es posible obtener los avisos de conexi\u00f3n
+IJ_CoulNotLocaC=No se puede localizar la clase del protocolo, {0}
+IJ_CoulNotLocaC_5=No se puede localizar la clase {0}
+IJ_FailToDisc=No se puede desconectar
+IJ_DrivNotClasN=El controlador no es un nombre de clase {0}
+IJ_FileNotFoun=Archivo no encontrado
+IJ_CannotCloseInFile=No se puede cerrar el archivo de entrada ij, {0}
+IJ_IsNotAlloOnA={0} no se permite en un cursor de s\u00f3lo avance.
+IJ_GetcCallFail=Error de llamada getConnection
+IJ_Ioex=Excepci\u00f3n de E/S: {0}
+IJ_NeedToDiscFi=Primero es necesario desconectar
+IJ_NoAsynStatEx=No existe una sentencia as\u00edncrona con el nombre {0}
+IJ_NoConnExisWi=No existe una conexi\u00f3n con el nombre {0}
+IJ_NoProtExisWi=No existe un protocolo con el nombre {0}
+IJ_IsOnlySuppIn=S\u00f3lo se da soporte de {0} en JDBC 2.0 y superior.
+IJ_UsinClauHadN=La cl\u00e1usula USING no ha tenido resultados
+IJ_UnabToEsta=Imposible establecer {0}
+IJ_UnabToGetWar_19=No es posible obtener los avisos del juego de resultados
+IJ_ResoNotFoun=Recurso no encontrado
+IJ_ScroCursAre1=Los cursores de desplazamiento s\u00f3lo est\u00e1n soportados con JDK1.2 y superior.
+IJ_HoldCursAre4=La capacidad de retenci\u00f3n no se puede modificar mediante las api jdbc3.0 en los JDK inferiores a JDK1.4.
+IJ_UnabToGetWar_22=No es posible obtener los avisos de sentencia
+IJ_WaitForStatI=Espera de sentencia interrumpida: {0}
+IJ_0IsAnInvaVal=0 en un valor no v\u00e1lido para ABSOLUTE <entero> <nombrecursor>
+# From ijFatalException.java
+IJ_FataExceTerm=Excepci\u00f3n muy grave; terminando
+IJ_Fata01=Excepci\u00f3nMuyGrave: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=Uso: java org.apache.derby.tools.ij [-p archivopropiedades] [-ca archivo_propiedades_atributo_conexi\u00f3n] [archivoEntrada]
+IJ_IjWarniAutocMayCloseUsingResulSet=AVISO IJ: AutoCommit puede cerrar utilizando el juego de resultados
+# From utilMain.java
+IJ_IjVers30C199=ij versi\u00f3n {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=TIEMPO TRANSCURRIDO = {0} milisegundos
+IJ_IjErro0=ERROR IJ: {0}
+IJ_JavaErro0=ERROR JAVA: {0}
+IJ_ElapTime0Mil_4=TIEMPO TRANSCURRIDO = {0} milisegundos
+IJ_IjErro0_5=ERROR IJ: {0}
+IJ_IjErro0_6=ERROR IJ: {0}
+IJ_JavaErro0_7=ERROR JAVA: {0}
+IJ_Erro0=\ (errorCode = {0})
+IJ_NoSqls=(sin SQLState)
+IJ_NoMess=(sin mensaje)
+IJ_Erro012=ERROR {0}: {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT=Recuperadas {0} transacciones dudosas
+IJ_Tran01=Transacci\u00f3n {0} : {1}
+IJ_IlleValu=VALOR NO PERMITIDO
+IJ_01SeeClouLog={0} : {1} (consulte cloudcape.LOG)
+IJ_Pool=Conexi\u00f3nAgrupada
+IJ_XAClass=EmbeddedXADataSource no est\u00e1 en la classpath; sit\u00fae el archivo cs.jar en la classpath
+IJ_XANoI=No se puede crear una instancia de EmbeddedXADataSource; sit\u00fae el archivo cs.jar en la classpath
+# From ParseException.java
+IJ_EncoAtLineColu=Se ha encontrado "{0}" en la l\u00ednea {1}, columna {2}
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=Error l\u00e9xico en la l\u00ednea {0}, columna {1}.  Se ha encontrado: {2} despu\u00e9s de :"{3}"
+TL_incorCase=Las may\u00fasculas/min\u00fasculas del atributo Cloudscape son incorrectas.
+TL_unknownAtt=Atributo desconocido para Cloudscape.
+TL_trueFalse=El valor debe establecerse como verdadero/falso.
+TL_dupAtt=El atributo es un duplicado.
+TL_urlLabel1=Atributo de URL {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=No se han encontrado recursos para el entorno local actual, cambiando a {0}.
+CSLOOK_Usage=\ \n\
+\ USO:\n\
+\ java org.apache.derby.tools.dblook -d <URL_BD_origen> [OPCIONES]\n\
+\n\
+\ \tdonde el URL de origen es el URL completo, incluyendo el protocolo\n\
+\ \ty los atributos de conexi\u00f3n que correspondan. Por ejemplo, utilice\n\
+\ \t'jdbc:cloudscape:miBD' o 'jdbc:cloudscape:net://localhost:1527/miBD:user=usuario;'. \n\
+\n\
+\ \tLas opciones incluyen: \n\
+\n\
+\ \t-z <NombreEsquema> para especificar un esquema en el que limitar\n\
+\ \t la generaci\u00f3n de DDL.  S\u00f3lo se generar\u00e1n las DDL de los objetos de base\n\
+\ \t de datos con dicho esquema. \n\
+\n\
+\ \t-t <tablaUno> <tablaDos> ... para especificar una lista de tablas para las que \n\
+\ \t se genera DDL; las tablas que no est\u00e9n en la lista se pasar\u00e1n por alto.\n\
+\n\
+\ \t-td <valor> para especificar lo que se debe a\u00f1adir al final\n\
+\ \t de cada sentencia DLL.\n\
+\t\tPor omisi\u00f3n es ';'.\n\
+\n\
+\ \t-noview para evitar la generaci\u00f3n de DDL para vistas.\n\
+\n\
+\ \t-append para evitar sobrescribir archivos de salida.\n\
+\n\
+\ \t-verbose para imprimir los mensajes de error en la consola (adem\u00e1s\n\
+\ \t del archivo de anotaciones cronol\u00f3gicas).  Si no se especifica, los errores s\u00f3lo\n\
+\ \t se imprimen en el archivo de anotaciones cronol\u00f3gicas. \n\
+\n\
+\ \t-o <nombrearchivo> para especificar el nombre del archivo en el que\n\
+\ \t se escribir\u00e1n las DDL generadas. \n\
+\ \t\tSi no se especifica, el valor por omisi\u00f3n es la consola.\ \n
+CSLOOK_FileCreation=Este archivo se cre\u00f3 con el programa de utilidad cslook de Cloudscape.
+CSLOOK_OutputLocation=Se enviar\u00e1 la salida al archivo {0}\n
+CSLOOK_Timestamp=Indicaci\u00f3n de hora: {0}
+CSLOOK_DBName=Base de datos origen: {0}
+CSLOOK_DBUrl=URL de conexi\u00f3n: {0}
+CSLOOK_TargetTables=El programa de utilidad cslook s\u00f3lo considerar\u00e1 las tablas especificadas.
+CSLOOK_TargetSchema=Esquema especificado: {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=Sentencias DDL para tablas
+CSLOOK_ChecksHeader=Sentencias DDL para comprobaciones
+CSLOOK_IndexesHeader=Sentencias DDL para \u00edndices
+CSLOOK_JarsHeader=Sentencias DDL para jars
+CSLOOK_KeysHeader=Sentencias DDL para claves
+CSLOOK_PrimUniqueHeader=primaria/exclusiva
+CSLOOK_ForeignHeader=for\u00e1nea
+CSLOOK_SchemasHeader=Sentencias DDL para esquemas
+CSLOOK_StoredProcHeader=Sentencias DDL para procedimientos almacenados
+CSLOOK_TriggersHeader=Sentencias DDL para desencadenantes
+CSLOOK_ViewsHeader=Sentencias DDL para vistas
+CSLOOK_Jar_Note=**** NOTA **** Para que los archivos jar se carguen correctamente,\n\
+-- debe 1) asegurarse de que el directorio CSJARS (creado autom\u00e1ticamente por\n\
+-- cslook) existe donde se cre\u00f3 (es decir, en la v\u00eda de acceso\n\
+-- que se muestra en las sentencias siguientes), o bien 2) cambiar la\n\
+-- v\u00eda de acceso en la sentencia siguiente para reflejar la ubicaci\u00f3n actual \n\
+-- de CSJARS.  Si el directorio CSJARS no existe o si se ha movido y la v\u00eda\n\
+-- de acceso no es correcta, las siguiente sentencias DDL generar\u00e1n\n\
+-- errores y los archivos jar NO se cargar\u00e1n.
+CSLOOK_FailedToLoadJar=No se pudo cargar el archivo jar {0}.
+CSLOOK_DefaultSchema=Volviendo de nuevo al esquema por omisi\u00f3n 'APP'.
+CSLOOK_AtLeastOneDebug=-- Nota: Se encontr\u00f3 por lo menos un mensaje de error/aviso\n\
+-- en la generaci\u00f3n de DLL.  Consulte cslook.log\n\
+-- para ver los mensajes.\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_fr.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_fr.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,244 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (errorCode = {0})
+UT_NoSqlst=(pas de SQLState)
+UT_NoMessa=(pas de message)
+UT_Error012=ERREUR {0} : {1}{2}
+UT_NoSqlst_7=(pas de SQLState)
+UT_NoMessa_8=(pas de message)
+UT_Warni01=AVERTISSEMENT {0} : {1}
+UT_1RowInserUpdatDelet=1 ligne ins\u00e9r\u00e9e/mise \u00e0 jour/supprim\u00e9e
+UT_0RowsInserUpdatDelet={0} lignes ins\u00e9r\u00e9es/mises \u00e0 jour/supprim\u00e9es
+UT_StateExecu=Instruction ex\u00e9cut\u00e9e.
+UT_0RowsSelec={0} lignes s\u00e9lectionn\u00e9es
+UT_1RowSelec=1 ligne s\u00e9lectionn\u00e9e
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=Aucune ligne en cours
+UT_NoCurreRow_19=Aucune ligne en cours
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=Caract\u00e8re d'\u00e9chappement non valide.
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=ERREUR IJ : ressource introuvable : {0}
+IJ_IjErroFileNo=ERREUR IJ : fichier introuvable : {0}
+IJ_IjErroUnabTo=ERREUR IJ : impossible de r\u00e9initialiser la sortie \u00e0 : {0}
+IJ_IjErroMaxiVa=ERREUR IJ : la valeur maximumDisplayWidth {0} est pas un entier.
+# From ij.jj
+IJ_Pass=REUSSITE
+IJ_Fail=ECHECH
+IJ_Unx=\ **** INATTENDU
+IJ_NoConneAvail=Aucune connexion disponible.
+IJ_CurreConne=* = connexion en cours
+IJ_NoCurreConne=Aucune connexion en cours
+IJ_TestsRun0Pass12Fail34=Tests ex\u00e9cution : {0}   r\u00e9ussite : {1} ({2}%)   \u00e9chec : {3} ({4}%)
+IJ_UnexpResulUnx01=***** RESULTATS INATTENDUS,   inattendu : {0} ({1}%) *****
+IJ_HelpText=\ \n\
+\ Les commandes prises en charge sont les suivantes :\n\
+\ \n\
+\  PROTOCOL 'protocole JDBC' [ AS ident ];\n\
+\                               -- d\u00e9finit un protocole par d\u00e9faut ou nomm\u00e9\n\
+\  DRIVER 'classe pour pilote';   -- charge la classe nomm\u00e9e\n\
+\  CONNECT 'url de la base de donn\u00e9es' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               -- se connecte \u00e0 l'URL de la base de donn\u00e9es\n\
+\                               -- et peut affecter un identificateur\n\
+\  SET CONNECTION connectionName; -- bascule vers la connexion sp\u00e9cifi\u00e9e\n\
+\  SHOW CONNECTIONS;            -- r\u00e9pertorie toutes les connexions\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- active ou d\u00e9sactive le mode de validation automatique pour la connexion\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               -- interrompt la connexion en cours, la connexion nomm\u00e9e ou toutes les connexions;\n\
+\                               -- la valeur par d\u00e9faut est CURRENT\n\
+\ \n\
+\  COMMIT;                      -- valide la transaction en cours\n\
+\  ROLLBACK;                    -- annule la transaction en cours\n\
+\ \n\
+\  PREPARE name AS 'texte SQL-J'; -- pr\u00e9pare le texte SQL-J\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               -- ex\u00e9cute l'instruction avec les valeurs de param\u00e8tre\n\
+\                               -- d\u00e9coulant de la ligne de l'ensemble de r\u00e9sultats USING\n\
+\  REMOVE name;                 -- supprime l'instruction pr\u00e9par\u00e9e pr\u00e9c\u00e9demment nomm\u00e9e\n\
+\ \n\
+\  RUN 'filename';              -- ex\u00e9cute des commandes \u00e0 partir du fichier nomm\u00e9\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- d\u00e9finit le mode temps \u00e9coul\u00e9 pour ij\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               -- d\u00e9finit la largeur d'affichage maximale pour\n\
+\                               -- chaque colonne sur un nombre entier (integerValue)\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     -- ex\u00e9cute la commande dans une autre unit\u00e9 d'ex\u00e9cution\n\
+\  WAIT FOR name;               -- attend le r\u00e9sultat d'une commande ASYNC\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               -- obtient un curseur (ensemble de r\u00e9sultats JDBC) sur la requ\u00eate\n\
+\                               -- les curseurs SCROLL (de d\u00e9filement) sont uniquement disponibles\n\
+\                               -- dans JDBC 2.0 ou version sup\u00e9rieure. \n\
+\                               -- (le type de d\u00e9filement du curseur n'est pas pris en compte dans JDBC 1.X.) \n\
+\  NEXT name;                   -- obtient la ligne suivante \u00e0 partir du curseur nomm\u00e9\n\
+\  FIRST name;                  -- obtient la premi\u00e8re ligne \u00e0 partir du curseur de d\u00e9filement nomm\u00e9\n\
+\  LAST name;                   -- obtient la derni\u00e8re ligne \u00e0 partir du curseur de d\u00e9filement nomm\u00e9\n\
+\  PREVIOUS name;               -- obtient la ligne pr\u00e9c\u00e9dente \u00e0 partir du curseur de d\u00e9filement nomm\u00e9\n\
+\  ABSOLUTE integer name;       -- positionne le curseur de d\u00e9filement nomm\u00e9 sur le num\u00e9ro de ligne absolu\n\
+\                               -- (Un nombre n\u00e9gatif indique une position par rapport \u00e0 la derni\u00e8re ligne.) \n\
+\  RELATIVE integer name;       -- positionne le curseur de d\u00e9filement nomm\u00e9 par rapport \u00e0 la ligne en cours\n\
+\                               -- (l'entier indique le nombre de lignes)\n\
+\  AFTER LAST name;             -- positionne le curseur de d\u00e9filement nomm\u00e9 apr\u00e8s la derni\u00e8re ligne\n\
+\  BEFORE FIRST name;           -- positionne le curseur de d\u00e9filement nomm\u00e9 avant la premi\u00e8re ligne\n\
+\  GETCURRENTROWNUMBER name;    -- renvoie le num\u00e9ro de ligne pour la position en cours du curseur de d\u00e9filement nomm\u00e9\n\
+\                               -- (0 est renvoy\u00e9 lorsque le curseur n'est pas positionn\u00e9 sur une ligne.) \n\
+\  CLOSE name;                  -- ferme le curseur nomm\u00e9\n\
+\  UNICODEESCAPE [ ON | OFF ]; -- d\u00e9finit le mode d'\u00e9chappement unicode pour le flux en entr\u00e9e\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- contr\u00f4le la repr\u00e9sentation des donn\u00e9es li\u00e9es \u00e0 l'environnement local\n\
+\ \n\
+\  EXIT;                        -- quiite ij\n\
+\  HELP;                        -- affiche ce message\n\
+\ \n\
+\ Toutes les commandes de type inconnu sont trait\u00e9es comme \u00e9tant des commandes SQL-J potentielles et ex\u00e9cut\u00e9es directement.\n\
+\    \n
+# From ijException.java
+IJ_IllegalStatementName={0} est un nom incorrect pour une instruction
+IJ_NotYetImpl=Pas encore impl\u00e9ment\u00e9
+IJ_AlreHaveACon=Une connexion nomm\u00e9e {0} existe d\u00e9j\u00e0
+IJ_ExceRunnComm=Exception ex\u00e9cutant la commande : {0}
+IJ_UnabToGetWar=Impossible d'obtenir des avertissements pour la connexion
+IJ_CoulNotLocaC=Impossible de localiser de classe pour le protocole, {0}
+IJ_CoulNotLocaC_5=Impossible de localiser la classe {0}
+IJ_FailToDisc=Echec de la d\u00e9connexion.
+IJ_DrivNotClasN=Le nom du pilote n''est pas un nom de classe {0}
+IJ_FileNotFoun=Fichier non trouv\u00e9
+IJ_CannotCloseInFile=Impossible de fermer le fichier d''entr\u00e9e ij, {0}
+IJ_IsNotAlloOnA={0} n''est pas autoris\u00e9 sur un curseur vers l''avant seul.
+IJ_GetcCallFail=Echec de l'appel de getConnection
+IJ_Ioex=Exception d''E/S : {0}
+IJ_NeedToDiscFi=Vous devez d'abord vous d\u00e9connecter
+IJ_NoAsynStatEx=Il n''existe aucune instruction asynchrone ayant pour nom {0}
+IJ_NoConnExisWi=Il n''existe aucune connexion ayant pour nom {0}
+IJ_NoProtExisWi=Il n''existe aucun protocole ayant pour nom {0}
+IJ_IsOnlySuppIn={0} est uniquement pris en charge dans JDBC 2.0 ou version sup\u00e9rieure.
+IJ_UsinClauHadN=L'utilisation de la clause n'a eu aucun effet
+IJ_UnabToEsta=Impossible d''\u00e9tablir {0}
+IJ_UnabToGetWar_19=Impossible d'obtenir des avertissements pour l'ensemble de r\u00e9sultats
+IJ_ResoNotFoun=Ressource introuvable
+IJ_ScroCursAre1=Les curseurs de d\u00e9filement sont uniquement pris en charge avec JDK1.2 et version sup\u00e9rieure.
+IJ_HoldCursAre4=La fonction de conservation ne peut pas \u00eatre modifi\u00e9e avec les API jdbc3.0 pour des JDK dont la version est inf\u00e9rieure \u00e0 1.4.
+IJ_UnabToGetWar_22=Impossible d'obtenir des avertissements pour l'instruction
+IJ_WaitForStatI=Attente de l''instruction interrompue : {0}
+IJ_0IsAnInvaVal=0 n'est pas une valeur correcte pour ABSOLUTE <entier> <nomcurseur>
+# From ijFatalException.java
+IJ_FataExceTerm=Exception fatale ; arr\u00eat en cours
+IJ_Fata01=Exception fatale : {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=INCONNU::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=Syntaxe : java org.apache.derby.tools.ij [-p fichier_propri\u00e9t\u00e9s] [-ca fichier_propri\u00e9t\u00e9s_attributs_connexion] [fichier_entr\u00e9e]
+IJ_IjWarniAutocMayCloseUsingResulSet=AVERTISSEMENT IJ : La validation automatique peut se fermer \u00e0 l'aide de l'ensemble de r\u00e9sultats
+# From utilMain.java
+IJ_IjVers30C199=Version ij {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=TEMPS ECOULE = {0} millisecondes
+IJ_IjErro0=ERREUR IJ : {0}
+IJ_JavaErro0=ERREUR JAVA : {0}
+IJ_ElapTime0Mil_4=TEMPS ECOULE = {0} millisecondes
+IJ_IjErro0_5=ERREUR IJ : {0}
+IJ_IjErro0_6=ERREUR IJ : {0}
+IJ_JavaErro0_7=ERREUR JAVA : {0}
+IJ_Erro0=\ (errorCode = {0})
+IJ_NoSqls=(pas de SQLState)
+IJ_NoMess=(pas de message)
+IJ_Erro012=ERREUR {0} : {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT={0} a \u00e9t\u00e9 r\u00e9cup\u00e9r\u00e9 dans des transactions incertaines
+IJ_Tran01=Transaction {0} : {1}
+IJ_IlleValu=VALEUR INCORRECTE
+IJ_01SeeClouLog={0} : {1} (voir cloudcape.LOG)
+IJ_Pool=ConnexionRegroup\u00e9e
+IJ_XAClass=EmbeddedXADataSource ne se trouve pas dans le chemin de classes ; veuillez placer le fichier cs.jar dans votre chemin de classes.
+IJ_XANoI=EmbeddedXADataSource ne peut pas \u00eatre instanci\u00e9 ; veuillez placer le fichier cs.jar dans votre chemin de classes.
+# From ParseException.java
+IJ_EncoAtLineColu="{0}" d\u00e9tect\u00e9 \u00e0 la ligne {1}, colonne {2}
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=Erreur lexicale \u00e0 la ligne {0}, colonne {1}.  D\u00e9tect\u00e9e : {2}apr\u00e8s :"{3}"
+TL_incorCase=La casse de l'attribut Cloudscape est incorrecte.
+TL_unknownAtt=Attribut inconnu de Cloudscape.
+TL_trueFalse=La valeur doit \u00eatre true/false.
+TL_dupAtt=L'attribut est en double.
+TL_urlLabel1=Attribut URL {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=Ressources introuvables pour l''environnement local actuel. Passage \u00e0 {0}.
+CSLOOK_Usage=\ \n\
+\ SYNTAXE :\n\
+\ java org.apache.derby.tools.dblook -d <URLBDsource> [OPTIONS]\n\
+\n\
+\ \to\u00f9 l'URL source est l'URL compl\u00e8te, incluant le protocole de connexion\n\
+\ \tet tout attribut de connexion pouvant s'appliquer. Par exemple, utilisez\n\
+\ \t'jdbc:cloudscape:myDB' ou 'jdbc:cloudscape:net://localhost:1527/myDB:user=usr;'. \n\
+\n\
+\ \tOptions incluses : \n\
+\n\
+\ \t-z <nom_sch\u00e9ma> pour sp\u00e9cifier le sch\u00e9ma auquel la\n\
+\ \t g\u00e9n\u00e9ration DDL doit se limiter.  Seuls les objets de base de \n\
+\ \t donn\u00e9es ayant ce sch\u00e9ma verront leur DDL g\u00e9n\u00e9r\u00e9e.\n\
+\n\
+\ \t-t <tableUne> <tableDeux> ... pour sp\u00e9cifier la liste de\n\
+\ \t tables pour lesquelles la DDL a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e. Les tables\n\
+\ \t ne figurant pas dans la liste seront ignor\u00e9es.\n\
+\n\
+\ \t-td <valeur> pour sp\u00e9cifier l'\u00e9l\u00e9ment \u00e0 ajouter \u00e0 la fin\n\
+\ \t de chaque instruction DDL.\n\
+\t\tPar d\u00e9faut, il s'agit de ';'.\n\
+\n\
+\ \t-noview pour emp\u00eacher la g\u00e9n\u00e9ration de DDL pour des vues.\n\
+\n\
+\ \t-append pour ne pas \u00e9craser les fichiers de sortie.\n\
+\n\
+\ \t-verbose pour que les messages d'erreur s'affichent dans la console \n\
+\ \t (en plus de leur enregistrement dans le fichier journal).  Si rien n'est\n\
+\ \t sp\u00e9cifi\u00e9, les erreurs sont seulement consign\u00e9es dans le fichier journal\n\
+\ \t .\n\
+\n\
+\ \t-o <nom_fichier> pour sp\u00e9cifier le nom du fichier dans lequel la DDL\n\
+\ \t g\u00e9n\u00e9r\u00e9e sera enregistr\u00e9e.\n\
+\ \t\tSi rien n'est indiqu\u00e9, la valeur par d\u00e9faut est la console.\ \n
+CSLOOK_FileCreation=Ce fichier a \u00e9t\u00e9 cr\u00e9\u00e9 \u00e0 l'aide de l'utilitaire cslook de Cloudscape.
+CSLOOK_OutputLocation=La sortie sera envoy\u00e9e au fichier {0}\n
+CSLOOK_Timestamp=Horodatage : {0}
+CSLOOK_DBName=La base de donn\u00e9es source est : {0}
+CSLOOK_DBUrl=L''URL de connexion est : {0}
+CSLOOK_TargetTables=L'utilitaire cslook prendra en compte uniquement les tables sp\u00e9cifi\u00e9es.
+CSLOOK_TargetSchema=Le sch\u00e9ma sp\u00e9cifi\u00e9 est : {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=Instructions DDL pour tables
+CSLOOK_ChecksHeader=Instructions DDL pour v\u00e9rifications
+CSLOOK_IndexesHeader=Instructions DDL pour index
+CSLOOK_JarsHeader=Instructions DDL pour JAR
+CSLOOK_KeysHeader=Instructions DDL pour cl\u00e9s
+CSLOOK_PrimUniqueHeader=primaire/unique
+CSLOOK_ForeignHeader=externe
+CSLOOK_SchemasHeader=Instructions DDL pour sch\u00e9mas
+CSLOOK_StoredProcHeader=Instructions DDL pour proc\u00e9dures stock\u00e9es
+CSLOOK_TriggersHeader=Instructions DDL pour d\u00e9clencheurs
+CSLOOK_ViewsHeader=Instructions DDL pour vues
+CSLOOK_Jar_Note=**** REMARQUE **** Pour que les fichiers jar soient charg\u00e9s correctement,\n\
+-- vous devez 1) vous assurer que le r\u00e9pertoire CSJARS (cr\u00e9\u00e9\n\
+-- automatiquement par cslook) existe \u00e0 l'emplacement o\u00f9 il a \u00e9t\u00e9 cr\u00e9\u00e9 (ex : dans\n\
+-- le chemin affich\u00e9 dans les instructions ci-dessous) ou 2) modifier le\n\
+-- chemin dans les instructions ci-dessous de sorte qu'il corresponde \u00e0 l'emplacement de\n\
+--  CSJARS.  Si le r\u00e9pertoire CSJARS n'existe pas ou s'il a \u00e9t\u00e9 d\u00e9plac\u00e9 et que le chemin\n\
+-- n'est pas correct, les instructions de DLL suivantes enverront des erreurs et les\n\
+-- fichiers jar ne seront PAS charg\u00e9s\n
+CSLOOK_FailedToLoadJar=Le chargement du fichier jar {0} a \u00e9chou\u00e9
+CSLOOK_DefaultSchema=Retour au sch\u00e9ma 'APP' par d\u00e9faut
+CSLOOK_AtLeastOneDebug=-- Remarque : au moins un message d'erreur/d'avertissement\n\
+-- inattendu a \u00e9t\u00e9 rencontr\u00e9 au cours de la g\u00e9n\u00e9ration de la DDL.  Consultez le fichier cslook.log\n\
+-- pour lire le ou les messages.\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_it.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_it.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (errorCode = {0})
+UT_NoSqlst=(nessun SQLState)
+UT_NoMessa=(nessun messaggio)
+UT_Error012=ERRORE {0}: {1}{2}
+UT_NoSqlst_7=(nessun SQLState)
+UT_NoMessa_8=(nessun messaggio)
+UT_Warni01=AVVERTENZA {0}: {1}
+UT_1RowInserUpdatDelet=1 riga inserita/aggiornata/eliminata
+UT_0RowsInserUpdatDelet={0} righe inserite/aggiornate/eliminate
+UT_StateExecu=Istruzione eseguita.
+UT_0RowsSelec={0} righe selezionate
+UT_1RowSelec=1 riga selezionata
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=Nessuna riga corrente
+UT_NoCurreRow_19=Nessuna riga corrente
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=Carattere escape non valido.
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=ERRORE IJ: risorsa non trovata: {0}
+IJ_IjErroFileNo=ERRORE IJ: file non trovato: {0}
+IJ_IjErroUnabTo=ERRORE IJ: impossibile ripristinare l''output su: {0}
+IJ_IjErroMaxiVa=ERRORE IJ: il valore maximumDisplayWidth {0} non \u00e8 un valore intero.
+# From ij.jj
+IJ_Pass=RIUSCITO
+IJ_Fail=NON RIUSCITO
+IJ_Unx=\ **** UNX
+IJ_NoConneAvail=Nessuna connessione disponibile.
+IJ_CurreConne=* = connessione corrente
+IJ_NoCurreConne=Nessuna connessione corrente
+IJ_TestsRun0Pass12Fail34=Verifiche eseguite: {0}   riuscito: {1} ({2}%)   non riuscito: {3} ({4}%)
+IJ_UnexpResulUnx01=***** RISULTATI IMPREVISTI,   unx: {0} ({1}%) *****
+IJ_HelpText=\ \n\
+\ I comandi supportati includono:\n\
+\ \n\
+\  PROTOCOL 'JDBC protocol' [ AS ident ];\n\
+\                               -- imposta un protocollo predefinito o denominato\n\
+\  DRIVER 'class for driver';   -- carica la classe denominata\n\
+\  CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               -- connette all''URL database\n\
+\                               -- e pu\u00f2 assegnare l''identificatore\n\
+\  SET CONNECTION connectionName; -- consente di passare alla connessione specificata\n\
+\  SHOW CONNECTIONS;            -- elenca tutte le connessioni\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- imposta la modalit\u00e0 autocommit per la connessione\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               -- elimina la connessione corrente, denominata o tutte le connessioni;\n\
+\                               -- il valore predefinito \u00e8 CURRENT\n\
+\ \n\
+\  COMMIT;                      -- esegue l''operazione di commit della transazione corrente\n\
+\  ROLLBACK;                    -- esegue l''operazione di rollback della transazione corrente\n\
+\ \n\
+\  PREPARE name AS 'SQL-J text'; -- prepara il testo SQL-J\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               -- esegue l''istruzione con il parametro\n\
+\                               -- valori dalla riga dei risultati USING\n\
+\  REMOVE name;                 -- elimina l''istruzione preparata precedentemente denominata\n\
+\ \n\
+\  RUN 'filename';              -- esegue i comandi dal file denominato\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- imposta la modalit\u00e0 di tempo trascorso per ij\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               -- imposta la larghezza massima del pannello per\n\
+\                               -- ogni colonna su integerValue\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     -- esegue il comando in un altro thread\n\
+\  WAIT FOR name;               -- attende i risultati del comando ASYNC'd\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               -- richiama un cursore (insieme di risultati JDBC) sulla query\n\
+\                               -- sono disponibili solo i cursori di scorrimento \n\
+\                               -- in JDBC 2.0 e versioni superiori. \n\
+\                               -- (Il tipo di cursore di scorrimento viene ignorato in JDBC 1.X.) \n\
+\  NEXT name;                   -- richiama la riga successiva dal cursore denominato\n\
+\  FIRST name;                  -- richiama la prima riga dal cursore di scorrimento denominato\n\
+\  LAST name;                   -- richiama l''ultima riga dal cursore di scorrimento denominato\n\
+\  PREVIOUS name;               -- richiama la riga precedente dal cursore di scorrimento denominato\n\
+\  ABSOLUTE integer name;       -- posiziona il cursore di scorrimento denominato su un numero di righe assoluto\n\
+\                               -- (Un numero negativo denota la posizione dall''ultima riga.) \n\
+\  RELATIVE integer name;       -- posiziona il cursore di scorrimento denominato relativo alla riga corrente\n\
+\                               -- (il numero di righe \u00e8 un valore intero)\n\
+\  AFTER LAST name;             -- posiziona il cursore di scorrimento denominato dopo l''ultima riga\n\
+\  BEFORE FIRST name;           -- posiziona il cursore di scorrimento denominato davanti alla prima riga\n\
+\  GETCURRENTROWNUMBER name;    -- restituisce il numero di righe per la posizione corrente del cursore di scorrimento denominato\n\
+\                               -- (quando il cursore non \u00e8 posizionato su una riga viene restituito 0.) \n\
+\  CLOSE name;                  -- chiude il cursore denominato\n\
+\  UNICODEESCAPE [ ON | OFF ]; -- imposta la modalit\u00e0 unicode escape per il flusso di input\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- controlla la rappresentazione dei dati sensibile alle impostazioni internazionali\n\
+\ \n\
+\  EXIT;                        -- chiude ij\n\
+\  HELP;                        -- mostra questo messaggio\n\
+\ \n\
+\ Qualsiasi comando non riconosciuto viene considerato come potenziale comando SQL-J ed eseguito direttamente.\n\
+\    \n
+# From ijException.java
+IJ_IllegalStatementName={0} \u00e8 un nome non valido per l''istruzione
+IJ_NotYetImpl=Non ancora implementato
+IJ_AlreHaveACon=Dispone gi\u00e0 di una connessione denominata {0}
+IJ_ExceRunnComm=Eccezione durante l''esecuzione del comando: {0}
+IJ_UnabToGetWar=Impossibile richiamare le avvertenze per la connessione
+IJ_CoulNotLocaC=Impossibile individuare la classe per il protocollo, {0}
+IJ_CoulNotLocaC_5=Impossibile individuare la classe {0}
+IJ_FailToDisc=Disconnessione non riuscita
+IJ_DrivNotClasN=Il driver non \u00e8 un nome classe {0}
+IJ_FileNotFoun=File non trovato
+IJ_CannotCloseInFile=Impossibile chiudere il file di input ij, {0}
+IJ_IsNotAlloOnA={0} non consentito su un cursore abilitato solo all''avanzamento.
+IJ_GetcCallFail=Chiamata getConnection non riuscita
+IJ_Ioex=IOException: {0}
+IJ_NeedToDiscFi=\u00c8 necessario effettuare prima la disconnessione
+IJ_NoAsynStatEx=Nessuna istruzione async esistente con il nome {0}
+IJ_NoConnExisWi=Nessuna connessione esistente con il nome {0}
+IJ_NoProtExisWi=Nessun protocollo esistente con il nome {0}
+IJ_IsOnlySuppIn={0} \u00e8 supportato solo in JDBC 2.0 e versioni superiori.
+IJ_UsinClauHadN=L''uso della clausola non ha fornito alcun risultato
+IJ_UnabToEsta=Impossibile stabilire {0}
+IJ_UnabToGetWar_19=Impossibile richiamare le avvertenze per l''insieme di risultati
+IJ_ResoNotFoun=Risorsa non trovata
+IJ_ScroCursAre1=I cursori di scorrimento sono supportati solo con JDK1.2 e versioni superiori.
+IJ_HoldCursAre4=Impossibile modificare Holdability mediante jdbc3.0 apis in JDK inferiore a JDK1.4.
+IJ_UnabToGetWar_22=Impossibile richiamare le avvertenze per l''istruzione
+IJ_WaitForStatI=Attendere istruzione interrotta: {0}
+IJ_0IsAnInvaVal=0 \u00e8 un valore non valido per ABSOLUTE <numerointero> <nomecursore>
+# From ijFatalException.java
+IJ_FataExceTerm=Eccezione irreversibile; chiusura
+IJ_Fata01=FatalException: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=Utilizzo: java org.apache.derby.tools.ij [-p propertyfile] [-ca connectionAttributePropertyFile] [inputfile]
+IJ_IjWarniAutocMayCloseUsingResulSet=AVVERTENZA IJ: l''autocommit pu\u00f2 eseguire la chiusura utilizzando l''insieme di risultati
+# From utilMain.java
+IJ_IjVers30C199=ij versione {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=TEMPO TRASCORSO = {0} millisecondi
+IJ_IjErro0=ERRORE IJ: {0}
+IJ_JavaErro0=ERRORE JAVA: {0}
+IJ_ElapTime0Mil_4=TEMPO TRASCORSO = {0} millisecondi
+IJ_IjErro0_5=ERRORE IJ: {0}
+IJ_IjErro0_6=ERRORE IJ: {0}
+IJ_JavaErro0_7=ERRORE JAVA: {0}
+IJ_Erro0=\ (errorCode = {0})
+IJ_NoSqls=(nessun SQLState)
+IJ_NoMess=(nessun messaggio)
+IJ_Erro012=ERRORE {0}: {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT=Ripristinato {0} nelle transazioni dubbie
+IJ_Tran01=Transazione {0} : {1}
+IJ_IlleValu=VALORE NON VALIDO
+IJ_01SeeClouLog={0} : {1} (consultare cloudcape.LOG)
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource non presente nel percorso classi, inserire il file cs.jar nel percorso classi
+IJ_XANoI=Impossibile avviare EmbeddedXADataSource, inserire il file cs.jar nel percorso classi
+# From ParseException.java
+IJ_EncoAtLineColu=Riscontrato "{0}" sulla riga {1}, colonna {2}
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=Errore lessicale alla riga {0}, colonna {1}.  Riscontrato: {2}dopo :"{3}"
+TL_incorCase=L''uso delle maiuscole e delle minuscole nell''attributo di Cloudscape non \u00e8 corretto.
+TL_unknownAtt=L''attributo \u00e8 sconosciuto in Cloudscape.
+TL_trueFalse=Il valore deve essere impostato su true/false.
+TL_dupAtt=L''attributo \u00e8 un duplicato.
+TL_urlLabel1=Attributo URL {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=Risorse non trovate per la locale corrente, verr\u00e0 utilizzato {0}.
+CSLOOK_Usage=\ \n\
+\ UTILIZZO:\n\
+\ java org.apache.derby.tools.dblook -d <sourceDBUrl> [OPTIONS]\n\
+\n\
+\ \tdove l'URL di origine \u00e8 completo, includendo il protocollo di connessione\n\
+\ \te gli attributi di connessione che \u00e8 possibile applicare.  Ad esempio, utilizzare\n\
+\ \t'jdbc:cloudscape:myDB' o 'jdbc:cloudscape:net://localhost:1527/myDB:user=usr;'. \n\
+\n\
+\ \tle opzioni includono: \n\
+\n\
+\ \t-z <schemaName> per specificare uno schema in base al quale creare\n\
+\ \t DDL.  Le istruzioni DDL saranno create solo per gli oggetti del database\n\
+\ \t che hanno tale schema.\n\
+\n\
+\ \t-t <tableOne> <tableTwo> ... per specificare un elenco di tabelle per le quali\n\
+\ \t sar\u00e0 creata la DDL; qualsiasi tabella non presente nell'elenco sar\u00e0 ignorata.\n\
+\n\
+\ \t-td <value> per specificare eventuali allegati alla fine\n\
+\ \t di ciascuna istruzione DDL.\n\
+\t\tIl valore predefinito \u00e8 ';'.\n\
+\n\
+\ \t-noview per evitare la creazione di DDL per le viste.\n\
+\n\
+\ \t-append per non sovrascrivere i file di output.\n\
+\n\
+\ \t-verbose per visualizzare i messaggi di errore sulla console (oltre\n\
+\ \t al file di log).  Se non viene specificato, gli errori vengono stampati solo sul\n\
+\ \t file di log.\n\
+\n\
+\ \t-o <filename> per specificare il nome file in cui l'istruzione DDL\n\
+\ \t generata sar\u00e0 scritta.\n\
+\ \t\tSe non viene specificato, il valore predefinito \u00e8 la console.\ \n
+CSLOOK_FileCreation=Questo file \u00e8 stato creato mediante il programma di utilit\u00e0 cslook di Cloudscape.
+CSLOOK_OutputLocation=L''output sar\u00e0 inviato al file {0}\n
+CSLOOK_Timestamp=Data/Ora: {0}
+CSLOOK_DBName=Database di origine: {0}
+CSLOOK_DBUrl=URL di connessione: {0}
+CSLOOK_TargetTables=Il programma di utilit\u00e0 cslook prender\u00e0 in analisi solo specifiche tabelle.
+CSLOOK_TargetSchema=Schema specificato: {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=Istruzioni DDL per le tabelle
+CSLOOK_ChecksHeader=Istruzioni DDL per le verifiche
+CSLOOK_IndexesHeader=Istruzioni DDL per gli indici
+CSLOOK_JarsHeader=Istruzioni DDL per file jar
+CSLOOK_KeysHeader=Istruzioni DDL per le chiavi
+CSLOOK_PrimUniqueHeader=primario/univoco
+CSLOOK_ForeignHeader=esterno
+CSLOOK_SchemasHeader=Istruzioni DDL per gli schemi
+CSLOOK_StoredProcHeader=Istruzioni DDL per le procedure memorizzate
+CSLOOK_TriggersHeader=Istruzioni DDL per trigger
+CSLOOK_ViewsHeader=Istruzioni DDL per le viste
+CSLOOK_Jar_Note=**** NOTA **** Per caricare i file jar correttamente,\n\
+-- \u00e8 necessario 1) verificare che la directory CSJARS (creata\n\
+-- automaticamente da cslook) sia presente nel percorso in cui \u00e8 stata creata (ad esempio, nel\n\
+-- percorso mostrato nelle seguenti istruzioni) oppure 2) modificare il\n\
+-- percorso nelle seguenti istruzioni per riflettere il percorso corrente di\n\
+-- CSJARS.  Se la directory CSJARS non esiste o se \u00e8 stata\n\
+-- spostata ed il percorso non \u00e8 corretto, le seguenti istruzioni DDL\n\
+-- generano errori ed i file jar NON saranno\n\
+-- caricati.
+CSLOOK_FailedToLoadJar=Errore in fase di caricamento del file jar {0}
+CSLOOK_DefaultSchema=Ripristino dello schema predefinito 'APP'
+CSLOOK_AtLeastOneDebug=-- Nota: E' stato rilevato almeno un messaggio di errore/avvertenza\n\
+-- durante la creazione di DDL.  Consultare il file cslook.log\n\
+-- per consultare il(i) messaggio(i).\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_ja_JP.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_ja_JP.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (errorCode = {0})
+UT_NoSqlst=(SQLState \u306a\u3057)
+UT_NoMessa=(\u30e1\u30c3\u30bb\u30fc\u30b8\u306a\u3057)
+UT_Error012=\u30a8\u30e9\u30fc {0}: {1}{2}
+UT_NoSqlst_7=(SQLState \u306a\u3057)
+UT_NoMessa_8=(\u30e1\u30c3\u30bb\u30fc\u30b8\u306a\u3057)
+UT_Warni01=\u8b66\u544a {0}: {1}
+UT_1RowInserUpdatDelet=1 \u884c\u304c\u633f\u5165/\u66f4\u65b0/\u524a\u9664\u3055\u308c\u307e\u3057\u305f
+UT_0RowsInserUpdatDelet={0} \u884c\u304c\u633f\u5165/\u66f4\u65b0/\u524a\u9664\u3055\u308c\u307e\u3057\u305f
+UT_StateExecu=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\u3002
+UT_0RowsSelec={0} \u884c\u304c\u9078\u629e\u3055\u308c\u307e\u3057\u305f
+UT_1RowSelec=1 \u884c\u304c\u9078\u629e\u3055\u308c\u307e\u3057\u305f
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=\u73fe\u5728\u884c\u3067\u306f\u3042\u308a\u307e\u305b\u3093
+UT_NoCurreRow_19=\u73fe\u5728\u884c\u3067\u306f\u3042\u308a\u307e\u305b\u3093
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=\u7121\u52b9\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u6587\u5b57\u3002
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=IJ \u30a8\u30e9\u30fc: \u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}
+IJ_IjErroFileNo=IJ \u30a8\u30e9\u30fc: \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}
+IJ_IjErroUnabTo=IJ \u30a8\u30e9\u30fc: \u51fa\u529b\u3092\u30ea\u30bb\u30c3\u30c8\u3067\u304d\u307e\u305b\u3093: {0}
+IJ_IjErroMaxiVa=IJ \u30a8\u30e9\u30fc: maximumDisplayWidth \u5024 {0} \u306f\u6709\u52b9\u306a\u6574\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002
+# From ij.jj
+IJ_Pass=\u30d1\u30b9
+IJ_Fail=\u5931\u6557
+IJ_Unx=\ **** UNX
+IJ_NoConneAvail=\u4f7f\u7528\u3067\u304d\u308b\u63a5\u7d9a\u304c\u3042\u308a\u307e\u305b\u3093\u3002
+IJ_CurreConne=* = \u73fe\u884c\u63a5\u7d9a
+IJ_NoCurreConne=\u73fe\u884c\u63a5\u7d9a\u3067\u306f\u3042\u308a\u307e\u305b\u3093
+IJ_TestsRun0Pass12Fail34=\u30c6\u30b9\u30c8\u5b9f\u884c: {0}   \u30d1\u30b9: {1} ({2}%)   \u5931\u6557: {3} ({4}%)
+IJ_UnexpResulUnx01=***** \u4e88\u671f\u3057\u306a\u3044\u7d50\u679c\u3001  unx: {0} ({1}%) *****
+IJ_HelpText=\ \n\
+\ \u30b5\u30dd\u30fc\u30c8\u3055\u308c\u308b\u30b3\u30de\u30f3\u30c9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\n\
+\ \n\
+\  PROTOCOL 'JDBC protocol' [ AS ident ];\n\
+\                               -- \u30c7\u30d5\u30a9\u30eb\u30c8\u307e\u305f\u306f\u540d\u524d\u4ed8\u304d\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u8a2d\u5b9a\u3059\u308b\n\
+\  DRIVER 'class for driver';   -- \u540d\u524d\u4ed8\u304d\u30af\u30e9\u30b9\u3092\u30ed\u30fc\u30c9\u3059\u308b\n\
+\  CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               -- \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 URL \u306b\u63a5\u7d9a\u3057\u3001\n\
+\                               -- \u5834\u5408\u306b\u3088\u308a ID \u3092\u5272\u308a\u632f\u308b\n\
+\  SET CONNECTION connectionName; -- \u6307\u5b9a\u3055\u308c\u305f\u63a5\u7d9a\u306b\u5207\u308a\u66ff\u3048\u308b\n\
+\  SHOW CONNECTIONS;            -- \u3059\u3079\u3066\u306e\u63a5\u7d9a\u3092\u30ea\u30b9\u30c8\u3059\u308b\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- \u63a5\u7d9a\u306b\u5bfe\u3057\u3066\u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u3092\u8a2d\u5b9a\u3059\u308b\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               -- \u73fe\u884c\u3001\u540d\u524d\u4ed8\u304d\u3001\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u63a5\u7d9a\u3092\u30c9\u30ed\u30c3\u30d7\u3059\u308b\n\
+\                               -- \u30c7\u30d5\u30a9\u30eb\u30c8\u306f CURRENT\n\
+\ \n\
+\  COMMIT;                      -- \u73fe\u884c\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30b3\u30df\u30c3\u30c8\u3059\u308b\n\
+\  ROLLBACK;                    -- \u73fe\u884c\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3092\u30ed\u30fc\u30eb\u30d0\u30c3\u30af\u3059\u308b\n\
+\ \n\
+\  PREPARE name AS 'SQL-J text'; -- SQL-J \u30c6\u30ad\u30b9\u30c8\u3092\u6e96\u5099\u3059\u308b\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               -- USING \u7d50\u679c\u30bb\u30c3\u30c8\u884c\u304b\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5024\n\
+\                               -- \u3092\u4f7f\u3063\u3066\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u5b9f\u884c\u3059\u308b\n\
+\  REMOVE name;                 -- \u6307\u5b9a\u3055\u308c\u305f\u6e96\u5099\u6e08\u307f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3092\u9664\u53bb\u3059\u308b\n\
+\ \n\
+\  RUN 'filename';              -- \u6307\u5b9a\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- ij \u306b\u5bfe\u3059\u308b\u7d4c\u904e\u6642\u9593\u30e2\u30fc\u30c9\u3092\u8a2d\u5b9a\u3059\u308b\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               -- \u5404\u5217\u306e\u6700\u5927\u8868\u793a\u5e45\u3092\n\
+\                               -- integerValue \u306b\u8a2d\u5b9a\u3059\u308b\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     -- \u5225\u306e\u30b9\u30ec\u30c3\u30c9\u3067\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\n\
+\  WAIT FOR name;               -- ASYNC'd \u30b3\u30de\u30f3\u30c9\u306e\u7d50\u679c\u3092\u5f85\u3064\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               -- \u7167\u4f1a\u306b\u30ab\u30fc\u30bd\u30eb (JDBC \u7d50\u679c\u30bb\u30c3\u30c8) \u3092\u7f6e\u304f\n\
+\                               -- SCROLL \u30ab\u30fc\u30bd\u30eb\u306f\u3001JDBC 2.0 \u4ee5\u4e0a\u3067\u306e\u307f\n\
+\                               -- \u4f7f\u7528\u53ef\u80fd\u3067\u3059\u3002\n\
+\                               -- (\u30ab\u30fc\u30bd\u30eb\u30fb\u30b9\u30af\u30ed\u30fc\u30eb\u578b\u306f JDBC 1.X \u3067\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002) \n\
+\  NEXT name;                   -- \u6307\u5b9a\u3057\u305f\u30ab\u30fc\u30bd\u30eb\u304b\u3089\u6b21\u306e\u884c\u3092\u53d6\u5f97\u3059\u308b\n\
+\  FIRST name;                  -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u304b\u3089\u6700\u521d\u306e\u884c\u3092\u53d6\u5f97\u3059\u308b\n\
+\  LAST name;                   -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u304b\u3089\u6700\u5f8c\u306e\u884c\u3092\u53d6\u5f97\u3059\u308b\n\
+\  PREVIOUS name;               -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u304b\u3089\u76f4\u524d\u306e\u884c\u3092\u53d6\u5f97\u3059\u308b\n\
+\  ABSOLUTE integer name;       -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u3092\u7d76\u5bfe\u884c\u756a\u53f7\u306b\u4f4d\u7f6e\u4ed8\u3051\u308b\n\
+\                               -- (\u8ca0\u306e\u6570\u5b57\u306f\u3001\u6700\u5f8c\u306e\u884c\u304b\u3089\u4f4d\u7f6e\u3092\u793a\u3057\u307e\u3059\u3002) \n\
+\  RELATIVE integer name;       -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u3092\u73fe\u884c\u884c\u306b\u76f8\u5bfe\u3067\u4f4d\u7f6e\u4ed8\u3051\u308b\n\
+\                               -- (\u6574\u6570\u306f\u884c\u306e\u6570)\n\
+\  AFTER LAST name;             -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u3092\u6700\u7d42\u884c\u306e\u5f8c\u306b\u4f4d\u7f6e\u4ed8\u3051\u308b\n\
+\  BEFORE FIRST name;           -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u3092\u5148\u982d\u884c\u306e\u524d\u306b\u4f4d\u7f6e\u4ed8\u3051\u308b\n\
+\  GETCURRENTROWNUMBER name;    -- \u6307\u5b9a\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u306e\u73fe\u884c\u4f4d\u7f6e\u306e\u884c\u756a\u53f7\u3092\u623b\u3059\n\
+\                               -- (\u30ab\u30fc\u30bd\u30eb\u304c\u884c\u306b\u4f4d\u7f6e\u4ed8\u3051\u3089\u308c\u3066\u3044\u306a\u3044\u3068\u30010 \u304c\u623b\u3055\u308c\u307e\u3059\u3002) \n\
+\  CLOSE name;                  -- \u6307\u5b9a\u3057\u305f\u30ab\u30fc\u30bd\u30eb\u3092\u30af\u30ed\u30fc\u30ba\u3059\u308b\n\
+\  UNICODEESCAPE [ ON | OFF ];  -- \u5165\u529b\u30b9\u30c8\u30ea\u30fc\u30e0\u306b\u5bfe\u3057\u3066\u30e6\u30cb\u30b3\u30fc\u30c9\u30fb\u30a8\u30b9\u30b1\u30fc\u30d7\u30fb\u30e2\u30fc\u30c9\u3092\u8a2d\u5b9a\u3059\u308b\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- \u30ed\u30b1\u30fc\u30eb\u4f9d\u5b58\u30c7\u30fc\u30bf\u306e\u8868\u8a18\u3092\u5236\u5fa1\u3059\u308b\n\
+\ \n\
+\  EXIT;                        -- ij \u3092\u7d42\u4e86\u3059\u308b\n\
+\  HELP;                        -- \u3053\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3059\u308b\n\
+\ \n\
+\ \u8a8d\u8b58\u3055\u308c\u306a\u3044\u30b3\u30de\u30f3\u30c9\u306f\u3059\u3079\u3066\u3001\u6f5c\u5728\u7684\u306a SQL-J \u30b3\u30de\u30f3\u30c9\u3068\u3057\u3066\u6271\u308f\u308c\u3001\u76f4\u63a5\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\n\
+\ \n
+# From ijException.java
+IJ_IllegalStatementName={0} \u306f\u3001\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u3068\u3063\u3066\u6b63\u3057\u3044\u540d\u524d\u3067\u306f\u3042\u308a\u307e\u305b\u3093
+IJ_NotYetImpl=\u307e\u3060\u30a4\u30f3\u30d7\u30ea\u30e1\u30f3\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
+IJ_AlreHaveACon=\u3059\u3067\u306b {0} \u3068\u3044\u3046\u540d\u524d\u306e\u63a5\u7d9a\u304c\u3042\u308a\u307e\u3059
+IJ_ExceRunnComm=\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u306e\u5b9f\u884c\u4e2d\u306b\u4f8b\u5916: {0}
+IJ_UnabToGetWar=\u63a5\u7d9a\u306b\u5bfe\u3059\u308b\u8b66\u544a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
+IJ_CoulNotLocaC=\u30d7\u30ed\u30c8\u30b3\u30eb {0} \u306e\u30af\u30e9\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
+IJ_CoulNotLocaC_5=\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f
+IJ_FailToDisc=\u5207\u65ad\u306b\u5931\u6557\u3057\u307e\u3057\u305f
+IJ_DrivNotClasN=\u30c9\u30e9\u30a4\u30d0\u30fc\u304c\u30af\u30e9\u30b9\u540d {0} \u3067\u306f\u3042\u308a\u307e\u305b\u3093
+IJ_FileNotFoun=\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
+IJ_CannotCloseInFile=ij \u5165\u529b\u30d5\u30a1\u30a4\u30eb {0} \u3092\u30af\u30ed\u30fc\u30ba\u3067\u304d\u307e\u305b\u3093
+IJ_IsNotAlloOnA={0} \u306f\u3001\u6b63\u65b9\u5411\u5c02\u7528\u30ab\u30fc\u30bd\u30eb\u3067\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002
+IJ_GetcCallFail=getConnection \u547c\u3073\u51fa\u3057\u304c\u5931\u6557\u3057\u307e\u3057\u305f
+IJ_Ioex=IOException: {0}
+IJ_NeedToDiscFi=\u307e\u305a\u5207\u65ad\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
+IJ_NoAsynStatEx={0} \u3068\u3044\u3046\u540d\u524d\u306e\u975e\u540c\u671f\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\u5b58\u5728\u3057\u307e\u305b\u3093
+IJ_NoConnExisWi={0} \u3068\u3044\u3046\u540d\u524d\u306e\u63a5\u7d9a\u306f\u5b58\u5728\u3057\u307e\u305b\u3093
+IJ_NoProtExisWi={0} \u3068\u3044\u3046\u540d\u524d\u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u306f\u5b58\u5728\u3057\u307e\u305b\u3093
+IJ_IsOnlySuppIn={0} \u306f\u3001JDBC 2.0 \u307e\u305f\u306f\u305d\u308c\u4ee5\u964d\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+IJ_UsinClauHadN=USING \u6587\u7bc0\u306b\u7d50\u679c\u304c\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f
+IJ_UnabToEsta={0} \u3092\u78ba\u7acb\u3067\u304d\u307e\u305b\u3093
+IJ_UnabToGetWar_19=\u7d50\u679c\u30bb\u30c3\u30c8\u306b\u5bfe\u3059\u308b\u8b66\u544a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
+IJ_ResoNotFoun=\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093
+IJ_ScroCursAre1=\u30b9\u30af\u30ed\u30fc\u30eb\u30fb\u30ab\u30fc\u30bd\u30eb\u306f\u3001JDK1.2 \u4ee5\u4e0a\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002
+IJ_HoldCursAre4=JDK1.4 \u4ee5\u4e0b\u306e JDK \u3067\u306f jdbc3.0 API \u3092\u4f7f\u7528\u3057\u3066\u3082\u30db\u30fc\u30eb\u30c9\u53ef\u80fd\u5316\u306e\u5909\u66f4\u306f\u3067\u304d\u307e\u305b\u3093\u3002
+IJ_UnabToGetWar_22=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u5bfe\u3059\u308b\u8b66\u544a\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093
+IJ_WaitForStatI=\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u5272\u308a\u8fbc\u307f\u3092\u5f85\u6a5f\u3057\u307e\u3059: {0}
+IJ_0IsAnInvaVal=0 \u306f\u3001ABSOLUTE <integer> <cursorname> \u306b\u306f\u7121\u52b9\u306a\u5024\u3067\u3059
+# From ijFatalException.java
+IJ_FataExceTerm=\u81f4\u547d\u7684\u4f8b\u5916\u3002\u7d42\u4e86\u3057\u307e\u3059
+IJ_Fata01=FatalException: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=\u4f7f\u7528\u6cd5: java org.apache.derby.tools.ij [-p propertyfile] [-ca connectionAttributePropertyFile] [inputfile]
+IJ_IjWarniAutocMayCloseUsingResulSet=IJ \u8b66\u544a: \u81ea\u52d5\u30b3\u30df\u30c3\u30c8\u306f\u7d50\u679c\u30bb\u30c3\u30c8\u3092\u4f7f\u3063\u3066\u30af\u30ed\u30fc\u30ba\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059
+# From utilMain.java
+IJ_IjVers30C199=ij \u30d0\u30fc\u30b8\u30e7\u30f3 {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=\u7d4c\u904e\u6642\u9593 = {0} \u30df\u30ea\u79d2
+IJ_IjErro0=IJ \u30a8\u30e9\u30fc: {0}
+IJ_JavaErro0=JAVA \u30a8\u30e9\u30fc: {0}
+IJ_ElapTime0Mil_4=\u7d4c\u904e\u6642\u9593 = {0} \u30df\u30ea\u79d2
+IJ_IjErro0_5=IJ \u30a8\u30e9\u30fc: {0}
+IJ_IjErro0_6=IJ \u30a8\u30e9\u30fc: {0}
+IJ_JavaErro0_7=JAVA \u30a8\u30e9\u30fc: {0}
+IJ_Erro0=\ (errorCode = {0})
+IJ_NoSqls=(SQLState \u306a\u3057)
+IJ_NoMess=(\u30e1\u30c3\u30bb\u30fc\u30b8\u306a\u3057)
+IJ_Erro012=\u30a8\u30e9\u30fc {0}: {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT=\u672a\u78ba\u5b9a\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3067 {0} \u3092\u30ea\u30ab\u30d0\u30ea\u30fc\u3057\u307e\u3057\u305f
+IJ_Tran01=\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3 {0} : {1}
+IJ_IlleValu=\u6b63\u3057\u304f\u306a\u3044\u5024
+IJ_01SeeClouLog={0} : {1} (cloudcape.LOG \u3092\u53c2\u7167)
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource \u304c\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u3042\u308a\u307e\u305b\u3093\u3002cs.jar \u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u5165\u308c\u3066\u304f\u3060\u3055\u3044\u3002
+IJ_XANoI=EmbeddedXADataSource \u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093\u3002cs.jar \u30d5\u30a1\u30a4\u30eb\u3092\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u5165\u308c\u3066\u304f\u3060\u3055\u3044\u3002
+# From ParseException.java
+IJ_EncoAtLineColu="{0}" \u3092\u691c\u51fa\u3057\u307e\u3057\u305f\u3002\u884c {1}\u3001\u5217 {2}\u3002
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=\u5b57\u53e5\u30a8\u30e9\u30fc\u3002\u884c {0}\u3001\u5217 {1}\u3002  \u691c\u51fa: "{3}" \u306e\u5f8c\u306e {2}
+TL_incorCase=Cloudscape \u5c5e\u6027\u306e\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u306b\u8aa4\u308a\u304c\u3042\u308a\u307e\u3059\u3002
+TL_unknownAtt=\u5c5e\u6027\u306f Cloudscape \u306b\u8a8d\u8b58\u3055\u308c\u307e\u305b\u3093\u3002
+TL_trueFalse=\u5024\u306f\u3001true/false \u306b\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+TL_dupAtt=\u5c5e\u6027\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002
+TL_urlLabel1=URL \u5c5e\u6027 {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=\u73fe\u884c\u30ed\u30b1\u30fc\u30eb\u306e\u30ea\u30bd\u30fc\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002{0} \u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u3002
+CSLOOK_Usage=\ \n\
+\ \u4f7f\u7528\u6cd5:\n\
+\ java org.apache.derby.tools.dblook -d <sourceDBUrl> [OPTIONS]\n\
+\n\
+\ \t\u3053\u3053\u3067\u3001\u30bd\u30fc\u30b9 URL \u306f\u5b8c\u5168\u306a URL \u3067\u3001\u63a5\u7d9a\u30d7\u30ed\u30c8\u30b3\u30eb\u3068\u9069\u7528\u3059\u308b\u4efb\u610f\u306e\n\
+\ \t\u63a5\u7d9a\u5c5e\u6027\u3092\u542b\u307f\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001'jdbc:cloudscape:myDB'\u3001\u307e\u305f\u306f \n\
+\ \t'jdbc:cloudscape:net://localhost:1527/myDB:user=usr;' \u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\n\
+\n\
+\ \t\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002\n\
+\n\
+\ \t-z <schemaName>: DDL \u751f\u6210\u304c\u9650\u5b9a\u3055\u308c\u308b\u30b9\u30ad\u30fc\u30de\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n\
+\ \t \u6307\u5b9a\u306e\u30b9\u30ad\u30fc\u30de\u3092\u4f7f\u7528\u3059\u308b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u307f\u3001\u305d\u306e DDL \u3092\n\
+\ \t \u751f\u6210\u3067\u304d\u307e\u3059\u3002\n\
+\n\
+\ \t-t <tableOne> <tableTwo> ... DDL \u304c\u751f\u6210\u3055\u308c\u308b\u8868\u306e\u30ea\u30b9\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\n\
+\ \t \u305d\u306e\u30ea\u30b9\u30c8\u306b\u306a\u3044\u8868\u306f\u3059\u3079\u3066\u7121\u8996\u3055\u308c\u307e\u3059\u3002\n\
+\n\
+\ \t-td <value>: \u5404 DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u672b\u5c3e\u306b\u4f55\u3092\u4ed8\u52a0\u3059\u308b\u304b\u3092\n\
+\ \t \u6307\u5b9a\u3057\u307e\u3059\u3002\n\
+\t\t\u3053\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u3001';' \u3067\u3059\u3002\n\
+\n\
+\ \t-noview: \u30d3\u30e5\u30fc\u7528\u306e DDL \u306e\u751f\u6210\u3092\u6291\u6b62\u3057\u307e\u3059\u3002\n\
+\n\
+\ \t-append: \u51fa\u529b\u30d5\u30a1\u30a4\u30eb\u306e\u4e0a\u66f8\u304d\u3092\u9632\u304e\u307e\u3059\u3002\n\
+\n\
+\ \t-verbose: \u30a8\u30e9\u30fc\u30fb\u30e1\u30c3\u30bb\u30fc\u30b8\u3092 (\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u306e\u4ed6\u306b) \u30b3\u30f3\u30bd\u30fc\u30eb\u306b\n\
+\ \t \u51fa\u529b\u3057\u307e\u3059\u3002\u3053\u308c\u3092\u6307\u5b9a\u3057\u306a\u3044\u3068\u3001\u30a8\u30e9\u30fc\u306f\u3001\u30ed\u30b0\u30fb\u30d5\u30a1\u30a4\u30eb\u306b\u306e\u307f\n\
+\ \t \u51fa\u529b\u3055\u308c\u307e\u3059\u3002\n\
+\n\
+\ \t-o <filename>: \u751f\u6210\u3055\u308c\u305f DDL \u3092\u66f8\u304d\u8fbc\u3080\u30d5\u30a1\u30a4\u30eb\u540d\u3092\n\
+\ \t \u6307\u5b9a\u3057\u307e\u3059\u3002\n\
+\ \t\t\u3053\u308c\u3092\u6307\u5b9a\u3057\u306a\u3044\u5834\u5408\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u3059\u3002\ \n
+CSLOOK_FileCreation=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001Cloudscape \u306e cslook \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002
+CSLOOK_OutputLocation=\u51fa\u529b\u306f\u3001\u30d5\u30a1\u30a4\u30eb {0} \u306b\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002\n
+CSLOOK_Timestamp=\u30bf\u30a4\u30e0\u30fb\u30b9\u30bf\u30f3\u30d7: {0}
+CSLOOK_DBName=\u30bd\u30fc\u30b9\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9: {0}
+CSLOOK_DBUrl=\u63a5\u7d9a URL: {0}
+CSLOOK_TargetTables=cslook \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u306f\u3001\u6307\u5b9a\u3055\u308c\u305f\u8868\u306e\u307f\u3092\u5bfe\u8c61\u3068\u3057\u307e\u3059\u3002
+CSLOOK_TargetSchema=\u6307\u5b9a\u3055\u308c\u305f\u30b9\u30ad\u30fc\u30de: {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=\u8868\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_ChecksHeader=\u30c1\u30a7\u30c3\u30af\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_IndexesHeader=\u7d22\u5f15\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_JarsHeader=jar \u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_KeysHeader=\u30ad\u30fc\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_PrimUniqueHeader=primary/unique
+CSLOOK_ForeignHeader=foreign
+CSLOOK_SchemasHeader=\u30b9\u30ad\u30fc\u30de\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_StoredProcHeader=\u30b9\u30c8\u30a2\u30fc\u30c9\u30fb\u30d7\u30ed\u30b7\u30fc\u30b8\u30e3\u30fc\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_TriggersHeader=\u30c8\u30ea\u30ac\u30fc\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_ViewsHeader=\u30d3\u30e5\u30fc\u7528\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8
+CSLOOK_Jar_Note=**** \u6ce8 **** jar \u30d5\u30a1\u30a4\u30eb\u3092\u6b63\u3057\u304f\u30ed\u30fc\u30c9\u3059\u308b\u305f\u3081\u306b\u306f\u3001\n\
+-- 1) CSJARS \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc (cslook \u306b\u3088\u3063\u3066\n\
+-- \u81ea\u52d5\u7684\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059) \u304c\u524d\u306b\u4f5c\u6210\u3055\u308c\u3066\u3044\u305f\u5834\u6240 (\u3064\u307e\u308a\u3001\n\
+-- \u4ee5\u4e0b\u306e\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306b\u8868\u793a\u3055\u308c\u308b\u30d1\u30b9) \u306b\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002\u307e\u305f\u306f\u30012) \u4ee5\u4e0b\u306e\n\
+-- \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306e\u30d1\u30b9\u3092\u5909\u66f4\u3057\u3001CSJARS \u304c\u73fe\u5728\u3042\u308b\u5834\u6240\u3092\u53cd\u6620\u3057\u307e\u3059\u3002\n\
+-- CSJARS \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u304c\u7121\u3044\u5834\u5408\u3001\u307e\u305f\u306f\u3001\u305d\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u304c\u79fb\u52d5\u3057\u305f\u305f\u3081\u3001\n\
+-- \u30d1\u30b9\u304c\u6b63\u3057\u304f\u306a\u3044\u5834\u5408\u3001\u6b21\u306e DDL \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u306f\n\
+-- \u30a8\u30e9\u30fc\u3092\u30b9\u30ed\u30fc\u3057\u3001jar \u30d5\u30a1\u30a4\u30eb\u306f\u30ed\u30fc\u30c9\n\
+-- \u3055\u308c\u307e\u305b\u3093\u3002
+CSLOOK_FailedToLoadJar=JAR \u30d5\u30a1\u30a4\u30eb {0} \u306e\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
+CSLOOK_DefaultSchema=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b9\u30ad\u30fc\u30de 'APP' \u306b\u5fa9\u5e30\u3057\u307e\u3059\u3002
+CSLOOK_AtLeastOneDebug=-- \u6ce8: \u5c11\u306a\u304f\u3068\u3082 1 \u3064\u306e\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc/\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\n\
+-- DDL \u306e\u751f\u6210\u4e2d\u306b\u767a\u751f\u3057\u307e\u3057\u305f\u3002  cslook.log \u3067\n\
+-- \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_ko_KR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_ko_KR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+\ufeff# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (errorCode = {0})
+UT_NoSqlst=(SQLState \uc5c6\uc74c)
+UT_NoMessa=(\uba54\uc2dc\uc9c0 \uc5c6\uc74c)
+UT_Error012=\uc624\ub958 {0}: {1}{2}
+UT_NoSqlst_7=(SQLState \uc5c6\uc74c)
+UT_NoMessa_8=(\uba54\uc2dc\uc9c0 \uc5c6\uc74c)
+UT_Warni01=\uacbd\uace0 {0}: {1}
+UT_1RowInserUpdatDelet=1\ud589\uc774 \uc0bd\uc785/\uac31\uc2e0/\uc0ad\uc81c\ub428
+UT_0RowsInserUpdatDelet={0}\ud589\uc774 \uc0bd\uc785/\uac31\uc2e0/\uc0ad\uc81c\ub428
+UT_StateExecu=\uba85\ub839\ubb38\uc774 \uc2e4\ud589\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+UT_0RowsSelec={0}\ud589\uc774 \uc120\ud0dd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+UT_1RowSelec=1\ud589\uc774 \uc120\ud0dd\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=\ud604\uc7ac \ud589 \uc5c6\uc74c
+UT_NoCurreRow_19=\ud604\uc7ac \ud589 \uc5c6\uc74c
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc774\ud0c8 \ubb38\uc790.
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=IJ \uc624\ub958: \uc790\uc6d0\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}
+IJ_IjErroFileNo=IJ \uc624\ub958: \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}
+IJ_IjErroUnabTo=IJ \uc624\ub958: \ucd9c\ub825\uc744 \uc7ac\uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}
+IJ_IjErroMaxiVa=IJ \uc624\ub958: maximumDisplayWidth \uac12 {0}\uc740(\ub294) \uac12 \uc815\uc218\uac00 \uc544\ub2d9\ub2c8\ub2e4.
+# From ij.jj
+IJ_Pass=\ud1b5\uacfc
+IJ_Fail=\uc2e4\ud328
+IJ_Unx=\ **** UNX
+IJ_NoConneAvail=\uc5f0\uacb0\uc774 \uc0ac\uc6a9 \uac00\ub2a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+IJ_CurreConne=* = \ud604\uc7ac \uc5f0\uacb0
+IJ_NoCurreConne=\ud604\uc7ac \uc5f0\uacb0 \uc5c6\uc74c
+IJ_TestsRun0Pass12Fail34=\uc2e4\ud589\ub41c \ud14c\uc2a4\ud2b8: {0}   \ud1b5\uacfc: {1}({2}%)   \uc2e4\ud328: {3}({4}%)
+IJ_UnexpResulUnx01=***** \uc608\uae30\uce58 \uc54a\uc740 \uacb0\uacfc,   unx: {0}({1}%) *****
+IJ_HelpText=\ \n\
+\ \uc9c0\uc6d0\ub418\ub294 \uba85\ub839\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n\
+\ \n\
+\  PROTOCOL 'JDBC protocol' [ AS ident ];\n\
+\                               -- \uae30\ubcf8 \ub610\ub294 \uc774\ub984 \uc9c0\uc815\ub41c \ud504\ub85c\ud1a0\ucf5c\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.\n\
+\  DRIVER 'class for driver';   -- \uc774\ub984 \uc9c0\uc815\ub41c \ud074\ub798\uc2a4\ub97c \ub85c\ub4dc\ud569\ub2c8\ub2e4.\n\
+\  CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               -- \ub370\uc774\ud130\ubca0\uc774\uc2a4 URL\uc5d0 \uc5f0\uacb0\ud569\ub2c8\ub2e4.\n\
+\                               -- \ub610\ud55c ID\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\
+\  SET CONNECTION connectionName; -- \uc9c0\uc815\ub41c \uc5f0\uacb0\ub85c \uc804\ud658\ud569\ub2c8\ub2e4.\n\
+\  SHOW CONNECTIONS;            -- \ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ub098\uc5f4\ud569\ub2c8\ub2e4.\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- \uc5f0\uacb0\uc5d0 \ub300\ud55c \uc790\ub3d9 \ud655\uc57d \ubaa8\ub4dc\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               -- \ud604\uc7ac \uc5f0\uacb0, \uc774\ub984 \uc9c0\uc815\ub41c \uc5f0\uacb0 \ub610\ub294 \ubaa8\ub4e0 \uc5f0\uacb0\uc744 \ud574\uc81c\ud569\ub2c8\ub2e4.\n\
+\                               -- \uae30\ubcf8\uac12\uc740 CURRENT\uc785\ub2c8\ub2e4.\n\
+\ \n\
+\  COMMIT;                      -- \ud604\uc7ac \ud2b8\ub79c\uc7ad\uc158\uc744 \ud655\uc57d\ud569\ub2c8\ub2e4.\n\
+\  ROLLBACK;                    -- \ud604\uc7ac \ud2b8\ub79c\uc7ad\uc158\uc744 \ub864\ubc31\ud569\ub2c8\ub2e4.\n\
+\ \n\
+\  PREPARE name AS 'SQL-J text'; -- SQL-J \ud14d\uc2a4\ud2b8\ub97c \uc900\ube44\ud569\ub2c8\ub2e4.\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               -- USING \uacb0\uacfc \uc138\ud2b8 \ud589\uc758 \ub9e4\uac1c\ubcc0\uc218\n\
+\                               -- \uac12\uc73c\ub85c \uba85\ub839\ubb38\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.\n\
+\  REMOVE name;                 -- \uc774\ub984 \uc9c0\uc815\ub41c \uc0ac\uc804 \uc900\ube44\ub41c \uba85\ub839\ubb38\uc744 \uc81c\uac70\ud569\ub2c8\ub2e4.\n\
+\ \n\
+\  RUN 'filename';              -- \uc774\ub984 \uc9c0\uc815\ub41c \ud30c\uc77c\uc5d0\uc11c \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- ij\uc5d0 \ub300\ud574 \uacbd\uacfc\ud55c \uc2dc\uac04 \ubaa8\ub4dc\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               -- \uac01 \uc5f4\uc5d0 \ub300\ud55c \ucd5c\ub300 \ud45c\uc2dc \ub108\ube44\ub97c\n\
+\                               -- integerValue\ub85c \uc124\uc815\ud569\ub2c8\ub2e4.\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     -- \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc5d0\uc11c \uba85\ub839\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.\n\
+\  WAIT FOR name;               -- ASYNC\ub41c \uba85\ub839\uc758 \uacb0\uacfc\ub97c \uae30\ub2e4\ub9bd\ub2c8\ub2e4.\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               -- \ucee4\uc11c(JDBC) \uacb0\uacfc \uc138\ud2b8)\ub97c \uc870\ud68c\uc5d0 \ub193\uc2b5\ub2c8\ub2e4.\n\
+\                               -- SCROLL \ucee4\uc11c\ub294 JDBC 2.0 \uc774\uc0c1\uc5d0\uc11c\ub9cc \n\
+\                               -- \uc0ac\uc6a9 \uac00\ub2a5\ud569\ub2c8\ub2e4. \n\
+\                               -- (\ucee4\uc11c \ud654\uba74\uc774\ub3d9 \uc720\ud615\uc740 JDBC 1.X\uc5d0\uc11c \ubb34\uc2dc\ub429\ub2c8\ub2e4.) \n\
+\  NEXT name;                   -- \uc774\ub984 \uc9c0\uc815\ub41c \ucee4\uc11c\uc5d0\uc11c \ub2e4\uc74c \ud589\uc73c\ub85c \uac11\ub2c8\ub2e4.\n\
+\  FIRST name;                  -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\uc5d0\uc11c \uccab \ubc88\uc9f8 \ud589\uc73c\ub85c \uac11\ub2c8\ub2e4.\n\
+\  LAST name;                   -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\uc5d0\uc11c \ub9c8\uc9c0\ub9c9 \ud589\uc73c\ub85c \uac11\ub2c8\ub2e4.\n\
+\  PREVIOUS name;               -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\uc5d0\uc11c \uc774\uc804 \ud589\uc73c\ub85c \uac11\ub2c8\ub2e4.\n\
+\  ABSOLUTE integer name;       -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\ub97c \uc808\ub300 \ud589 \ubc88\ud638\uc5d0 \ub193\uc2b5\ub2c8\ub2e4.\n\
+\                               -- (\uc74c\uc218\ub294 \ub9c8\uc9c0\ub9c9 \ud589\uc758 \uc704\uce58\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4.)\n\
+\  RELATIVE integer name;       -- \ud604\uc7ac \ud589\uacfc \uad00\ub828\ud558\uc5ec \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\ub97c \ub193\uc2b5\ub2c8\ub2e4.\n\
+\                               -- (\uc815\uc218\ub294 \ud589 \uc218\uc785\ub2c8\ub2e4.)\n\
+\  AFTER LAST name;             -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\ub97c \ub9c8\uc9c0\ub9c9 \ud589 \ub4a4\uc5d0 \ub193\uc2b5\ub2c8\ub2e4.\n\
+\  BEFORE FIRST name;           -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\ub97c \uccab \ubc88\uc9f8 \ud589 \uc55e\uc5d0 \ub193\uc2b5\ub2c8\ub2e4.\n\
+\  GETCURRENTROWNUMBER name;    -- \uc774\ub984 \uc9c0\uc815\ub41c \ud654\uba74\uc774\ub3d9 \ucee4\uc11c\uc758 \ud604\uc7ac \uc704\uce58\uc5d0 \ub300\ud55c \ud589 \ubc88\ud638\ub97c \ub9ac\ud134\ud569\ub2c8\ub2e4.\n\
+\                               -- (\ucee4\uc11c\uac00 \ud589\uc5d0 \uc788\uc9c0 \uc54a\uc73c\uba74 0\uc774\ub9ac\ud134\ub429\ub2c8\ub2e4.) \n\
+\  CLOSE name;                  -- \uc774\ub984 \uc9c0\uc815\ub41c \ucee4\uc11c\ub97c \ub2eb\uc2b5\ub2c8\ub2e4.\n\
+\  UNICODEESCAPE [ ON | OFF ]; -- \uc785\ub825 \uc2a4\ud2b8\ub9bc\uc5d0 \ub300\ud55c \uc720\ub2c8\ucf54\ub4dc \ud574\uc81c \ubaa8\ub4dc\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- \ub85c\ucf00\uc77c \uad6c\ubd84 \ub370\uc774\ud130 \ud45c\uc2dc\ub97c \uc81c\uc5b4\ud569\ub2c8\ub2e4.\n\
+\ \n\
+\  EXIT;                        -- ij\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4.\n\
+\  HELP;                        -- \uc774 \uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.\n\
+\ \n\
+\ \uc778\uc2dd\ub418\uc9c0 \uc54a\uc740 \ubaa8\ub4e0 \uba85\ub839\uc740 \uc7a0\uc7ac\uc801\uc778 SQL-J \uba85\ub839\uc73c\ub85c \ucde8\uae09\ub418\uba70 \uc9c1\uc811 \uc2e4\ud589\ub429\ub2c8\ub2e4.\n\
+\ \n
+# From ijException.java
+IJ_IllegalStatementName={0}\uc740(\ub294) \uba85\ub839\ubb38\uc5d0 \ub300\ud574 \uc798\ubabb\ub41c \uc774\ub984\uc785\ub2c8\ub2e4.
+IJ_NotYetImpl=\uc544\uc9c1 \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+IJ_AlreHaveACon=\uc774\ub984\uc774 {0}\uc778 \uc5f0\uacb0\uc744 \uc774\ubbf8 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.
+IJ_ExceRunnComm=\uba85\ub839 \uc2e4\ud589 \uc911 \uc608\uc678: {0}
+IJ_UnabToGetWar=\uc5f0\uacb0\uc5d0 \ub300\ud55c \uacbd\uace0\ub97c \ubc1b\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_CoulNotLocaC={0} \ud504\ub85c\ud1a0\ucf5c\uc5d0 \ub300\ud55c \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_CoulNotLocaC_5={0} \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_FailToDisc=\uc5f0\uacb0\ub04a\uae30\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+IJ_DrivNotClasN=\ud074\ub798\uc2a4 \uc774\ub984\uc774 {0}\uc774(\uac00) \uc544\ub2cc \ub4dc\ub77c\uc774\ubc84
+IJ_FileNotFoun=\ud30c\uc77c \uc5c6\uc74c
+IJ_CannotCloseInFile=ij \uc785\ub825 \ud30c\uc77c {0}\uc744(\ub97c) \ub2eb\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_IsNotAlloOnA={0}\uc740(\ub294) \uc55e\uc73c\ub85c\ub9cc \uc9c4\ud589\ub418\ub294 \ucee4\uc11c\uc5d0\uc11c\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+IJ_GetcCallFail=getConnection \ud638\ucd9c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
+IJ_Ioex=IOException: {0}
+IJ_NeedToDiscFi=\uba3c\uc800 \uc5f0\uacb0\uc744 \ub04a\uc5b4\uc57c \ud569\ub2c8\ub2e4.
+IJ_NoAsynStatEx=\uc774\ub984\uc774 {0}\uc778 \ube44\ub3d9\uae30 \uba85\ub839\ubb38\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_NoConnExisWi=\uc774\ub984\uc774 {0}\uc778 \uc5f0\uacb0\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_NoProtExisWi=\uc774\ub984\uc774 {0}\uc778 \ud504\ub85c\ud1a0\ucf5c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_IsOnlySuppIn={0}\uc740(\ub294) JDBC 2.0 \uc774\uc0c1\uc5d0\uc11c\ub9cc \uc9c0\uc6d0\ub429\ub2c8\ub2e4.
+IJ_UsinClauHadN=\uc808\uc744 \uc0ac\uc6a9\ud574\ub3c4 \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_UnabToEsta={0}\uc744(\ub97c) \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_UnabToGetWar_19=\uacb0\uacfc \uc138\ud2b8\uc5d0 \ub300\ud55c \uacbd\uace0\ub97c \ubc1b\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_ResoNotFoun=\uc790\uc6d0\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_ScroCursAre1=\ud654\uba74\uc774\ub3d9 \ucee4\uc11c\ub294 JDK1.2 \uc774\uc0c1\uc5d0\uc11c\ub9cc \uc9c0\uc6d0\ub429\ub2c8\ub2e4.
+IJ_HoldCursAre4=\ubcf4\uc720 \uac00\ub2a5\uc131\uc740 JDK1.4 \uc774\ud558\uc758 JDK\uc758 jdbc3.0 apis\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_UnabToGetWar_22=\uba85\ub839\ubb38\uc5d0 \ub300\ud55c \uacbd\uace0\ub97c \ubc1b\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
+IJ_WaitForStatI=\uba85\ub839\ubb38\uc774 \uc778\ud130\ub7fd\ud2b8\ub420 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9ac\uc2ed\uc2dc\uc624. {0}
+IJ_0IsAnInvaVal=0\uc740 ABSOLUTE <integer> <cursorname>\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uac12\uc785\ub2c8\ub2e4.
+# From ijFatalException.java
+IJ_FataExceTerm=\uce58\uba85\uc801\uc778 \uc608\uc678. \uc885\ub8cc \uc911
+IJ_Fata01=FatalException: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=\uc0ac\uc6a9\ubc95: java org.apache.derby.tools.ij [-p propertyfile] [-ca connectionAttributePropertyFile] [inputfile]
+IJ_IjWarniAutocMayCloseUsingResulSet=IJ \uacbd\uace0: \uc790\ub3d9 \ud655\uc57d\uc740 \uacb0\uacfc \uc138\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub2eb\ud790 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
+# From utilMain.java
+IJ_IjVers30C199=ij \ubc84\uc804 {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=\uacbd\uacfc \uc2dc\uac04 = {0}\ubc00\ub9ac\ucd08
+IJ_IjErro0=IJ \uc624\ub958: {0}
+IJ_JavaErro0=JAVA \uc624\ub958: {0}
+IJ_ElapTime0Mil_4=\uacbd\uacfc \uc2dc\uac04 = {0}\ubc00\ub9ac\ucd08
+IJ_IjErro0_5=IJ \uc624\ub958: {0}
+IJ_IjErro0_6=IJ \uc624\ub958: {0}
+IJ_JavaErro0_7=JAVA \uc624\ub958: {0}
+IJ_Erro0=\ (errorCode = {0})
+IJ_NoSqls=(SQLState \uc5c6\uc74c)
+IJ_NoMess=(\uba54\uc2dc\uc9c0 \uc5c6\uc74c)
+IJ_Erro012=\uc624\ub958 {0}: {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT={0} \uc778\ub2e4\uc6b0\ud2b8(in-doubt) \ud2b8\ub79c\uc7ad\uc158\uc744 \ubcf5\uad6c\ud588\uc2b5\ub2c8\ub2e4.
+IJ_Tran01=\ud2b8\ub79c\uc7ad\uc158 {0} : {1}
+IJ_IlleValu=\uc798\ubabb\ub41c \uac12
+IJ_01SeeClouLog={0} : {1} (cloudcape.LOG \ucc38\uc870)
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource\ub294 \ud074\ub798\uc2a4 \uacbd\ub85c\uac00 \uc544\ub2d9\ub2c8\ub2e4. \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0 cs.jar \ud30c\uc77c\uc744 \ub123\uc73c\uc2ed\uc2dc\uc624.
+IJ_XANoI=EmbeddedXADataSource\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4 \uacbd\ub85c\uc5d0 cs.jar \ud30c\uc77c\uc744 \ub123\uc73c\uc2ed\uc2dc\uc624.
+# From ParseException.java
+IJ_EncoAtLineColu={1}\ud589 {2}\uc5f4\uc5d0\uc11c "{0}"\uc744(\ub97c) \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4.
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1={0}\ud589 {1}\uc5f4\uc5d0 \uc5b4\ud718 \uc624\ub958.  "{3}" \ub4a4\uc5d0\uc11c {2}\uc744(\ub97c) \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4.
+TL_incorCase=Cloudscape \uc18d\uc131\uc758 \ub300\uc18c\ubb38\uc790\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+TL_unknownAtt=Cloudscape\uc5d0 \uc18d\uc131\uc774 \uc54c\ub824\uc9c0\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
+TL_trueFalse=\uac12\uc744 true/false\ub85c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.
+TL_dupAtt=\uc18d\uc131\uc774 \uc911\ubcf5\ub429\ub2c8\ub2e4.
+TL_urlLabel1=URL \uc18d\uc131 {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=\ud604\uc7ac \ub85c\ucf00\uc77c\uc758 \uc790\uc6d0\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. {0}(\uc73c)\ub85c \uc804\ud658\ud569\ub2c8\ub2e4.
+CSLOOK_Usage=\ \n\
+\ \uc0ac\uc6a9\ubc95:\n\
+\ java org.apache.derby.tools.dblook -d <sourceDBUrl> [OPTIONS]\n\
+\n\
+\ \t\uc5ec\uae30\uc11c, \uc18c\uc2a4 URL\uc740 \uc5f0\uacb0 \ud504\ub85c\ud1a0\ucf5c \ubc0f \uc801\uc6a9\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0 \uc5f0\uacb0 \uc18d\uc131\uc744 \ud3ec\ud568\ud558\ub294\n\
+\ \t\uc804\uccb4 URL\uc785\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4,\n\
+\ \t'jdbc:cloudscape:myDB' \ub610\ub294 'jdbc:cloudscape:net://localhost:1527/myDB:user=usr;'\ub97c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. \n\
+\n\
+\ \t\uc635\uc158\uc740 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud569\ub2c8\ub2e4.\n\
+\n\
+\ \t-z <schemaName>\uc744 \uc0ac\uc6a9\ud558\uc5ec DDL \uc0dd\uc131\uc744 \uc81c\ud55c\ud574\uc57c \ud558\ub294 \uc2a4\ud0a4\ub9c8\ub97c\n\
+\ \t \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc774 \uc2a4\ud0a4\ub9c8\ub97c \uac00\uc9c4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc624\ube0c\uc81d\ud2b8\ub9cc\uc774\n\
+\ \t DDL\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.\n\
+\n\
+\ \t-t <tableOne> <tableTwo> ... \ub97c \uc0ac\uc6a9\ud558\uc5ec DDL\uc774 \uc0dd\uc131\ub420 \ud14c\uc774\ube14\uc758\n\
+\ \t \ubaa9\ub85d\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc774 \ubaa9\ub85d\uc5d0 \uc5c6\ub294 \ud14c\uc774\ube14\uc740 \ubb34\uc2dc\ub429\ub2c8\ub2e4.\n\
+\n\
+\ \t-td <value>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac01 DDL\ubb38\uc758 \ub05d\uc5d0 \ucd94\uac00\ub418\uc5b4\uc57c \ud558\ub294\n\
+\ \t \ub0b4\uc6a9\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.\n\
+\t\t';'\uc774 \uae30\ubcf8\uac12\uc785\ub2c8\ub2e4.\n\
+\n\
+\ \t-noview\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubdf0\uc5d0 \ub300\ud55c DDL\uc758 \uc0dd\uc131\uc744 \uc81c\ud55c\ud569\ub2c8\ub2e4.\n\
+\n\
+\ \t-append\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucd9c\ub825 \ud30c\uc77c\uc744 \uacb9\uccd0\uc4f0\uc9c0 \uc54a\ub3c4\ub85d \ud569\ub2c8\ub2e4.\n\
+\n\
+\ \t-verbose\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc624\ub958 \uba54\uc2dc\uc9c0\ub97c \ub85c\uadf8 \ud30c\uc77c\ubfd0\ub9cc \uc544\ub2c8\ub77c \ucf58\uc194\uc5d0\n\
+\ \t \uc778\uc1c4\ud569\ub2c8\ub2e4. \uc9c0\uc815\ub418\uc9c0 \uc54a\uc744 \uacbd\uc6b0, \uc624\ub958\ub294 \ub85c\uadf8 \ud30c\uc77c\uc5d0\ub9cc\n\
+\ \t \uc791\uc131\ub429\ub2c8\ub2e4.\n\
+\n\
+\ \t-o <filename>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0dd\uc131\ub41c DDL\uc774 \uc4f0\uc5ec\uc9c8 \ud30c\uc77c \uc774\ub984\uc744\n\
+\ \t \uc9c0\uc815\ud569\ub2c8\ub2e4.\n\
+\ \t\t\uc9c0\uc815\ub418\uc9c0 \uc54a\uc744 \uacbd\uc6b0, \uae30\ubcf8\uac12\uc740 \ucf58\uc194\uc785\ub2c8\ub2e4.\ \n
+CSLOOK_FileCreation=\uc774 \ud30c\uc77c\uc740 Cloudscape cslook \uc720\ud2f8\ub9ac\ud2f0\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4.
+CSLOOK_OutputLocation=\ucd9c\ub825\uc740 {0} \ud30c\uc77c\ub85c \uc804\uc1a1\ub429\ub2c8\ub2e4.\n
+CSLOOK_Timestamp=\uc2dc\uac04 \uc18c\uc778: {0}
+CSLOOK_DBName=\uc18c\uc2a4 \ub370\uc774\ud130\ubca0\uc774\uc2a4: {0}
+CSLOOK_DBUrl=\uc5f0\uacb0 URL: {0}
+CSLOOK_TargetTables=cslook \uc720\ud2f8\ub9ac\ud2f0\ub294 \uc9c0\uc815\ub41c \ud14c\uc774\ube14\ub9cc\uc744 \uace0\ub824\ud569\ub2c8\ub2e4.
+CSLOOK_TargetSchema=\uc9c0\uc815\ub41c \uc2a4\ud0a4\ub9c8: {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=\ud14c\uc774\ube14\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_ChecksHeader=\uc120\ud0dd\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_IndexesHeader=\uc0c9\uc778\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_JarsHeader=jar\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_KeysHeader=\ud0a4\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_PrimUniqueHeader=1\ucc28/\uace0\uc720
+CSLOOK_ForeignHeader=\uc678\ubd80
+CSLOOK_SchemasHeader=\uc2a4\ud0a4\ub9c8\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_StoredProcHeader=\uc2a4\ud1a0\uc5b4\ub4dc \ud504\ub85c\uc2dc\uc800\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_TriggersHeader=\ud2b8\ub9ac\uac70\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_ViewsHeader=\ubdf0\uc5d0 \ub300\ud55c DDL\ubb38
+CSLOOK_Jar_Note=**** \ucc38\uace0 **** jar \ud30c\uc77c\uc744 \uc62c\ubc14\ub85c \ub85c\ub4dc\ud558\ub824\uba74\n\
+-- 1) CSJARS \ub514\ub809\ud1a0\ub9ac(cslook\uc5d0 \uc758\ud574 \uc790\ub3d9\uc73c\ub85c \uc791\uc131\ub428)\uac00\n\
+-- \uc791\uc131\ub41c \uc704\uce58\uc5d0 \uc874\uc7ac\ud558\ub294\uc9c0 \ud655\uc778\ud558\uac70\ub098,\n\
+-- 2) \uc544\ub798\uc758 \uba85\ub839\ubb38\uc5d0 \uc788\ub294 \uacbd\ub85c\uac00\n\
+-- CSJARS\uc758 \ud604\uc7ac \uc704\uce58\ub97c \ubc18\uc601\ud558\ub3c4\ub85d\n\
+-- \ubcc0\uacbd\ud574\uc57c \ud569\ub2c8\ub2e4. CSJARS \ub514\ub809\ud1a0\ub9ac\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uac70\ub098\n\
+-- \uc774\ub3d9\ub418\uc5b4 \uacbd\ub85c\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc740 \uacbd\uc6b0,\n\
+-- \ub2e4\uc74c DDL\ubb38\uc774 \uc624\ub958\ub97c \ubc1c\uc0dd\uc2dc\ud0a4\uace0\n\
+-- jar \ud30c\uc77c\uc774 \ub85c\ub4dc\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
+CSLOOK_FailedToLoadJar={0}jar \ud30c\uc77c \ub85c\ub4dc \uc2e4\ud328
+CSLOOK_DefaultSchema='APP' \uae30\ubcf8 \uc2a4\ud0a4\ub9c8\ub85c \ub418\ub3cc\ub9ac\uae30
+CSLOOK_AtLeastOneDebug=-- \ucc38\uace0: DDL \uc0dd\uc131 \uc911\uc5d0 \ucd5c\uc18c \ud55c\uac1c\uc758 \uc624\ub958/\uacbd\uace0 \uba54\uc2dc\uc9c0\uac00\n\
+-- \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uba54\uc2dc\uc9c0\ub97c \uac80\ud1a0\ud558\ub824\uba74\n\
+-- cslook.log\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624.\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_pt_BR.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_pt_BR.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,240 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (C\u00f3digo de erro = {0})
+UT_NoSqlst=(nenhum SQLState)
+UT_NoMessa=(nenhuma mensagem)
+UT_Error012=ERRO {0}: {1}{2}
+UT_NoSqlst_7=(nenhum SQLState)
+UT_NoMessa_8=(nenhuma mensagem)
+UT_Warni01=AVISO {0}: {1}
+UT_1RowInserUpdatDelet=1 linha inserida/atualizada/exclu\u00edda
+UT_0RowsInserUpdatDelet={0} linhas inserida/atualizadas/exclu\u00edda
+UT_StateExecu=Instru\u00e7\u00e3o executada.
+UT_0RowsSelec={0} linhas selecionadas
+UT_1RowSelec=1 linha selecionada
+UT_Resul0=+ Conjunto de Resultados #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=Nenhuma linha atual
+UT_NoCurreRow_19=Nenhuma linha atual
+UT_Resul0_20=Conjunto de Resultados #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=Caractere de escape inv\u00e1lido.
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=ERRO IJ: recurso n\u00e3o encontrado: {0}
+IJ_IjErroFileNo=ERRO IJ: arquivo n\u00e3o encontrado: {0}
+IJ_IjErroUnabTo=ERRO IJ: n\u00e3o \u00e9 poss\u00edvel redefinir a sa\u00edda para: {0}
+IJ_IjErroMaxiVa=ERRO IJ: valor {0} de maximumDisplayWidth n\u00e3o \u00e9 um valor inteiro.
+# From ij.jj
+IJ_Pass=TRANSMISS\u00c3O
+IJ_Fail=FALHA
+IJ_Unx=\ **** UNX
+IJ_NoConneAvail=Nenhuma conex\u00e3o dispon\u00edvel.
+IJ_CurreConne=* = conex\u00e3o atual
+IJ_NoCurreConne=Nenhuma conex\u00e3o atual
+IJ_TestsRun0Pass12Fail34=Execu\u00e7\u00e3o de testes: {0}   transmiss\u00e3o: {1} ({2}%)   falha: {3} ({4}%)
+IJ_UnexpResulUnx01=***** RESULTADOS INESPERADOS,   unx: {0} ({1}%) *****
+IJ_HelpText=\ \n\
+\ Comandos suportados incluem:\n\
+\ \n\
+\  PROTOCOL 'JDBC protocol' [ AS ident ];\n\
+\                               -- define um protocolo padr\u00e3o ou nomeado\n\
+\  DRIVER 'class for driver';   -- carrega a classe nomeada\n\
+\  CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               -- conecta-se ao URL do banco de dados\n\
+\                               -- e pode atribuir identificador\n\
+\  SET CONNECTION connectionName; -- alterna para uma conex\u00e3o especificada\n\
+\  SHOW CONNECTIONS;            -- lista todas as conex\u00f5es\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- define o modo de autoconsolida\u00e7\u00e3o para a conex\u00e3o\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               -- abandona a conex\u00e3o atual, nomeada ou todas;\n\
+\                               -- o padr\u00e3o \u00e9 CURRENT\n\
+\ \n\
+\  COMMIT;                      -- consolida a transa\u00e7\u00e3o atual\n\
+\  ROLLBACK;                    -- retorna \u00e0 transa\u00e7\u00e3o atual\n\
+\ \n\
+\  PREPARE name AS 'SQL-J text'; -- prepara o texto SQL-J\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               -- executa a instru\u00e7\u00e3o com par\u00e2metro\n\
+\                               -- valores da linha do conjunto de resultados USING\n         \  REMOVE name;                 -- remove a instru\u00e7\u00e3o nomeada preparada anteriormente\n \ \n\
+\  RUN 'filename';              -- executa comandos a partir do arquivo nomeado\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- define o modo tempo decorrido para ij\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               -- define a largura m\u00e1xima de exibi\u00e7\u00e3o de\n\
+\                               -- cada coluna para integerValue\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     -- executa o comando em outro encadeamento\n\
+\  WAIT FOR name;               -- aguarda o resultado do comando ASYNC\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               -- obt\u00e9m um cursor (conjunto de resultados JDBC) na consulta\n  \                               -- somente os cursores SCROLL est\u00e3o dispon\u00edveis \n\
+\                               -- no JDBC 2.0 e posterior. \n\
+\                               -- (O tipo de rolagem do cursor \u00e9 ignorado no JDBC 1.X.) \n\
+\  NEXT name;                   -- obt\u00e9m a pr\u00f3xima linha do cursor nomeado\n\
+\  FIRST name;                  -- obt\u00e9m a primeira linha do cursor de rolagem nomeado\n\
+\  LAST name;                   -- obt\u00e9m a \u00faltima linha do cursor de rolagem nomeado\n\
+\  PREVIOUS name;               -- obt\u00e9m a linha anterior do cursor de rolagem nomeado\n\
+\  ABSOLUTE integer name;       -- posiciona o cursor de rolagem nomeado no n\u00famero de linhas absoluto\n\
+\                               -- (Um n\u00famero negativo denota posi\u00e7\u00e3o a partir da \u00faltima linha.)\n\
+\  RELAIVE integer name;        -- posiciona o cursor de rolagem nomeado relativo \u00e0 linha atual\n\
+\                               -- (inteiro \u00e9 o n\u00famero de linhas)\n\
+\  AFTER LAST name;             -- posiciona o cursor de rolagem nomeado depois da \u00faltima linha\n\
+\  BEFORE FIRST name;           -- posiciona o cursor de rolagem nomeado antes da primeira linha\n\
+\  GETCURRENTROWNUMBER name;    -- retorna o n\u00famero de linhas \u00e0 posi\u00e7\u00e3o atual do cursor de rolagem nomeado\n\
+\                               -- (0 \u00e9 retornado quando o cursor n\u00e3o est\u00e1 posicionado em uma linha.) \n\
+\  CLOSE name;                  -- fecha o cursor nomeado\n\
+\  UNICODEESCAPE [ ON | OFF ]; -- define o modo de escape unicode para o fluxo de entrada\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- controla a representa\u00e7\u00e3o de dados sens\u00edveis a locale\n\
+\ \n\
+\  EXIT;                        -- sai do ij\n\
+\  HELP;                        -- mostra essa mensagem\n\
+\ \n\
+\ Qualquer comando n\u00e3o reconhecido \u00e9 tratado como um poss\u00edvel comando SQL-J e executado diretamente.\n\
+\    \n
+# From ijException.java
+IJ_IllegalStatementName={0} \u00e9 um nome ilegal para uma instru\u00e7\u00e3o
+IJ_NotYetImpl=Ainda n\u00e3o implementado
+IJ_AlreHaveACon=Ainda possui uma conex\u00e3o nomeada {0}
+IJ_ExceRunnComm=Exce\u00e7\u00e3o executando o comando: {0}
+IJ_UnabToGetWar=N\u00e3o \u00e9 poss\u00edvel obter avisos para a conex\u00e3o
+IJ_CoulNotLocaC=N\u00e3o foi poss\u00edvel localizar classes para o protocolo, {0}
+IJ_CoulNotLocaC_5=N\u00e3o foi poss\u00edvel localizar a classe {0}
+IJ_FailToDisc=Falha ao desconectar
+IJ_DrivNotClasN=O driver n\u00e3o possui o nome da classe {0}
+IJ_FileNotFoun=Arquivo n\u00e3o encontrado
+IJ_CannotCloseInFile=N\u00e3o \u00e9 poss\u00edvel fechar o arquivo de entrada ij, {0}
+IJ_IsNotAlloOnA={0} n\u00e3o \u00e9 permitido em um cursor somente de avan\u00e7o.
+IJ_GetcCallFail=Falha na chamada de getConnection
+IJ_Ioex=IOException: {0}
+IJ_NeedToDiscFi=Primeiro, \u00e9 necess\u00e1rio desconectar
+IJ_NoAsynStatEx=N\u00e3o existe nenhuma instru\u00e7\u00e3o async com o nome {0}
+IJ_NoConnExisWi=N\u00e3o existe nenhuma conex\u00e3o com o nome {0}
+IJ_NoProtExisWi=N\u00e3o existe nenhum protocolo com o nome {0}
+IJ_IsOnlySuppIn={0} \u00e9 suportado apenas no JDBC 2.0 e posterior.
+IJ_UsinClauHadN=A utiliza\u00e7\u00e3o de uma cl\u00e1usula n\u00e3o obteve resultados
+IJ_UnabToEsta=N\u00e3o \u00e9 poss\u00edvel estabelecer {0}
+IJ_UnabToGetWar_19=N\u00e3o \u00e9 poss\u00edvel obter avisos para o conjunto de resultados
+IJ_ResoNotFoun=Recurso n\u00e3o encontrado
+IJ_ScroCursAre1=Os cursores de rolagem s\u00e3o suportados apenas com o JDK1.2 e posterior.
+IJ_HoldCursAre4=A capacidade de reten\u00e7\u00e3o n\u00e3o pode ser alterada utilizando as apis jdbc3.0 em JDKs menores que JDK1.4.
+IJ_UnabToGetWar_22=N\u00e3o \u00e9 poss\u00edvel obter avisos para a instru\u00e7\u00e3o
+IJ_WaitForStatI=Espera por instru\u00e7\u00e3o interrompida: {0}
+IJ_0IsAnInvaVal=0 \u00e9 um valor inv\u00e1lido para ABSOLUTE <integer> <cursorname>
+# From ijFatalException.java
+IJ_FataExceTerm=Exce\u00e7\u00e3o Fatal; encerrando
+IJ_Fata01=Exce\u00e7\u00e3o Fatal: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=Uso: java org.apache.derby.tools.ij [-p propertyfile] [-ca connectionAttributePropertyFile] [inputfile]
+IJ_IjWarniAutocMayCloseUsingResulSet=AVISO IJ: Autocommit pode ser encerrado utilizando o conjunto de resultados
+# From utilMain.java
+IJ_IjVers30C199=ij vers\u00e3o {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=TEMPO DECORRIDO = {0} milissegundos
+IJ_IjErro0=ERRO IJ: {0}
+IJ_JavaErro0=ERRO JAVA: {0}
+IJ_ElapTime0Mil_4=TEMPO DECORRIDO = {0} milissegundos
+IJ_IjErro0_5=ERRO IJ: {0}
+IJ_IjErro0_6=ERRO IJ: {0}
+IJ_JavaErro0_7=ERRO JAVA: {0}
+IJ_Erro0=\ (C\u00f3digo de erro = {0})
+IJ_NoSqls=(nenhum SQLState)
+IJ_NoMess=(nenhuma mensagem)
+IJ_Erro012=ERRO {0}: {1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT={0} recorrido em transa\u00e7\u00f5es incertas
+IJ_Tran01=Transa\u00e7\u00e3o {0} : {1}
+IJ_IlleValu=VALOR ILEGAL
+IJ_01SeeClouLog={0} : {1} (consultar cloudcape.LOG)
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource n\u00e3o est\u00e1 no classpath, coloque o arquivo cs.jar em seu classpath
+IJ_XANoI=EmbeddedXADataSource n\u00e3o pode ser instanciado, coloque o arquivo cs.jar em seu classpath
+# From ParseException.java
+IJ_EncoAtLineColu=Encontrado "{0}" na linha {1}, coluna {2}
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=Erro lexical na linha {0}, coluna {1}.  Encontrado: {2} depois de:"{3}"
+TL_incorCase=O caso do atributo Cloudscape est\u00e1 incorreto.
+TL_unknownAtt=Atributo desconhecido para Cloudscape.
+TL_trueFalse=O valor deve ser definido como true ou false.
+TL_dupAtt=O atributo est\u00e1 duplicado.
+TL_urlLabel1=Atributo da URL {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=Recursos n\u00e3o localizados para o locale atual; alternando para {0}.
+CSLOOK_Usage=\ \n\
+\ UTILIZA\u00c7\u00c3O:\n\
+\ java org.apache.derby.tools.dblook -d <UrlBDorigem> [OPTIONS]\n\
+\n\
+\ \tem que a URL de origem \u00e9 a URL completa, incluindo o protocolo de conex\u00e3o\n\
+\ \te quaisquer atributos de conex\u00e3o que se apliquem.  Por exemplo, utilize\n\
+\ \t'jdbc:cloudscape:myDB', ou 'jdbc:cloudscape:net://localhost:1527/myDB:user=usr;'. \n\
+\n\
+\ \top\u00e7\u00f5es incluem: \n\
+\n\
+\ \t-z <nome_do_esquema> para especificar um esquema para qual a gera\u00e7\u00e3o de DDL\n\
+\ \t deve ser limitada. Apenas os objetos de banco de dados com este esquema ter\u00e3o\n\
+\ \t sua DDL gerada.\n\
+\n\
+\ \t-t <tableOne> <tableTwo> ... para especificar uma lista de tabelas para a qual\n\
+\ \t o DDL ser\u00e1 gerado; quaisquer tabelas que n\u00e3o estejam na lista ser\u00e3o ignoradas.\n\
+\n\
+\ \t-td <valor> para especificar o que deve ser anexado no final de cada\n\
+\ \t instru\u00e7\u00e3o DDL.\n\
+\t\tO padr\u00e3o \u00e9 ';'.\n\
+\n\
+\ \t-noview para impedir a gera\u00e7\u00e3o de DDL para visualiza\u00e7\u00f5es.\n\
+\n\
+\ \t-append para impedir a substitui\u00e7\u00e3o dos arquivos de sa\u00edda.\n\
+\n\
+\ \t-verbose para que as mensagens de erro sejam impressas no console (al\u00e9m\n\
+\ \t do arquivo de log).  Se este valor n\u00e3o for especificado, os erros ser\u00e3o impressos\n\
+\ \t apenas no arquivo de log.\n\
+\n\
+\ \t-o <nome_do_arquivo> para especificar o nome do arquivo para qual o DDL\n\
+\ \t gerado ser\u00e1 gravado.\n\
+\ \t\tSe este valor n\u00e3o for especificado, o padr\u00e3o \u00e9 o console.\ \n
+CSLOOK_FileCreation=Este arquivo foi criado com o utilit\u00e1rio cslook do Cloudscape.
+CSLOOK_OutputLocation=A sa\u00edda ser\u00e1 enviada para o arquivo {0}\n
+CSLOOK_Timestamp=Data e hora:  {0}
+CSLOOK_DBName=O banco de dados de origem \u00e9: {0}
+CSLOOK_DBUrl=O URL de conex\u00e3o \u00e9: {0}
+CSLOOK_TargetTables=O utilit\u00e1rio cslook ir\u00e1 considerar apenas as tabelas especificadas.
+CSLOOK_TargetSchema=O esquema especificado \u00e9: {0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=Instru\u00e7\u00f5es DDL para tabelas
+CSLOOK_ChecksHeader=Instru\u00e7\u00f5es DDL para verifica\u00e7\u00f5es
+CSLOOK_IndexesHeader=Instru\u00e7\u00f5es DDL para \u00edndices
+CSLOOK_JarsHeader=Instru\u00e7\u00f5es DDL para jars
+CSLOOK_KeysHeader=Instru\u00e7\u00f5es DDL para chaves
+CSLOOK_PrimUniqueHeader=principal/exclusivo
+CSLOOK_ForeignHeader=estrangeiro
+CSLOOK_SchemasHeader=Instru\u00e7\u00f5es DDL para esquemas
+CSLOOK_StoredProcHeader=Instru\u00e7\u00f5es DDL para procedimentos armazenados
+CSLOOK_TriggersHeader=Instru\u00e7\u00f5es DDL para disparadores
+CSLOOK_ViewsHeader=Instru\u00e7\u00f5es DDL para visualiza\u00e7\u00f5es
+CSLOOK_Jar_Note=**** NOTA **** para que os arquivos jar sejam carregados corretamente,\n\
+-- voc\u00ea deve 1) assegurar-se de que o diret\u00f3rio CSJARS (criado automaticamente\n\
+-- por cslook) exista onde foi criado (ou seja, no caminho\n\
+-- mostrado nas instru\u00e7\u00f5es abaixo), ou 2) altere o caminho\n\
+-- nas instru\u00e7\u00f5es abaixo para refletir o local correto \n\
+-- de CSJARS.  Se o diret\u00f3rio CSJARS n\u00e3o existir, ou caso ele tenha sido\n\
+-- movido e o caminho n\u00e3o estiver correto, as seguintes instru\u00e7\u00f5es DDL\n\
+-- lan\u00e7ar\u00e3o erros, e os arquivos jar N\u00c3O ser\u00e3o \n\
+-- carregados.
+CSLOOK_FailedToLoadJar=Falha em carregar o arquivo jar {0}
+CSLOOK_DefaultSchema=Revertendo novamente para o esquema 'APP' padr\u00e3o
+CSLOOK_AtLeastOneDebug=-- Nota: Ao menos uma mensagem de erro/aviso inesperada\n\
+-- foi encontrada durante a gera\u00e7\u00e3o da DDL.  Consulte cslook.log\n\
+-- para ler a(s) mensagem(ns) novamente.\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_zh_CN.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_zh_CN.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ \uff08errorCode = {0}\uff09
+UT_NoSqlst=\uff08\u65e0 SQLState\uff09
+UT_NoMessa=\uff08\u65e0\u6d88\u606f\uff09
+UT_Error012=\u9519\u8bef {0}\uff1a{1}{2}
+UT_NoSqlst_7=\uff08\u65e0 SQLState\uff09
+UT_NoMessa_8=\uff08\u65e0\u6d88\u606f\uff09
+UT_Warni01=\u8b66\u544a {0}\uff1a{1}
+UT_1RowInserUpdatDelet=\u5df2\u63d2\u5165\uff0f\u66f4\u65b0\uff0f\u5220\u9664\u4e00\u884c
+UT_0RowsInserUpdatDelet=\u5df2\u63d2\u5165\uff0f\u66f4\u65b0\uff0f\u5220\u9664 {0} \u884c
+UT_StateExecu=\u5df2\u6267\u884c\u8bed\u53e5\u3002
+UT_0RowsSelec=\u5df2\u9009\u62e9 {0} \u884c
+UT_1RowSelec=\u5df2\u9009\u62e9\u4e00\u884c
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=\u65e0\u5f53\u524d\u884c
+UT_NoCurreRow_19=\u65e0\u5f53\u524d\u884c
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=\u8f6c\u4e49\u5b57\u7b26\u65e0\u6548\u3002
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=IJ \u9519\u8bef\uff1a\u672a\u627e\u5230\u8d44\u6e90\uff1a{0}
+IJ_IjErroFileNo=IJ \u9519\u8bef\uff1a\u672a\u627e\u5230\u6587\u4ef6\uff1a{0}
+IJ_IjErroUnabTo=IJ \u9519\u8bef\uff1a\u65e0\u6cd5\u590d\u4f4d\u8f93\u51fa\u5230\uff1a{0}
+IJ_IjErroMaxiVa=IJ \u9519\u8bef\uff1amaximumDisplayWidth \u503c {0} \u4e0d\u662f\u6574\u6570\u503c\u3002
+# From ij.jj
+IJ_Pass=\u901a\u8fc7
+IJ_Fail=\u5931\u8d25
+IJ_Unx=\ **** UNX
+IJ_NoConneAvail=\u65e0\u53ef\u7528\u7684\u8fde\u63a5\u3002
+IJ_CurreConne=* = \u5f53\u524d\u8fde\u63a5
+IJ_NoCurreConne=\u65e0\u5f53\u524d\u8fde\u63a5
+IJ_TestsRun0Pass12Fail34=\u6d4b\u8bd5\u8fd0\u884c\uff1a{0} \u901a\u8fc7\uff1a{1}\uff08{2}%\uff09\u5931\u8d25\uff1a{3}\uff08{4}%\uff09
+IJ_UnexpResulUnx01=***** \u610f\u5916\u7ed3\u679c\uff0cunx\uff1a{0}\uff08{1}%\uff09*****
+IJ_HelpText=\ \n\
+\ \u652f\u6301\u7684\u547d\u4ee4\u5305\u62ec\uff1a\n\
+\ \n\
+\  PROTOCOL 'JDBC protocol' [ AS ident ];\n\
+\                               \uff0d \u8bbe\u7f6e\u7f3a\u7701\u6216\u5df2\u547d\u540d\u7684\u534f\u8bae\n\
+\  DRIVER 'class for driver';   \uff0d \u88c5\u5165\u5df2\u547d\u540d\u7684\u7c7b\n\
+\  CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               \uff0d \u8fde\u63a5\u5230\u6570\u636e\u5e93 URL\n\
+\                               \uff0d \u5e76\u53ef\u5206\u914d\u6807\u8bc6\n\
+\  SET CONNECTION connectionName; \uff0d \u5207\u6362\u5230\u6307\u5b9a\u7684\u8fde\u63a5\n\
+\  SHOW CONNECTIONS;            \uff0d \u5217\u51fa\u6240\u6709\u8fde\u63a5\n\
+\  AUTOCOMMIT [ ON | OFF ];     \uff0d \u8bbe\u7f6e\u8fde\u63a5\u7684\u81ea\u52a8\u843d\u5b9e\u65b9\u5f0f\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               \uff0d \u5220\u9664\u5f53\u524d\u8fde\u63a5\u3001\u5df2\u547d\u540d\u7684\u8fde\u63a5\u6216\u6240\u6709\u8fde\u63a5\uff1b\n\
+\                               \uff0d \u7f3a\u7701\u503c\u4e3a CURRENT\n\
+\ \n\
+\  COMMIT;                      \uff0d \u843d\u5b9e\u5f53\u524d\u4e8b\u52a1\n\
+\  ROLLBACK;                    \uff0d \u56de\u6eda\u5f53\u524d\u4e8b\u52a1\n\
+\ \n\
+\  PREPARE name AS 'SQL-J text'; \uff0d \u51c6\u5907 SQL-J \u6587\u672c\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               \uff0d \u4f7f\u7528\u6765\u81ea USING \u7ed3\u679c\u96c6\u884c\u7684\n\
+\                               \uff0d \u53c2\u6570\u503c\u6267\u884c\u8bed\u53e5\n\
+\  REMOVE name;                 \uff0d \u9664\u53bb\u5df2\u547d\u540d\u7684\u5148\u524d\u9884\u7f16\u8bd1\u8bed\u53e5\n\
+\ \n\
+\  RUN 'filename';              \uff0d \u4ece\u547d\u540d\u6587\u4ef6\u8fd0\u884c\u547d\u4ee4\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    \uff0d \u8bbe\u7f6e ij \u7684\u7ecf\u8fc7\u65f6\u95f4\u65b9\u5f0f\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               \uff0d \u5c06\u6bcf\u5217\u7684\u6700\u5927\u663e\u793a\u5bbd\u5ea6\u8bbe\u7f6e\u4e3a\n\
+\                               \uff0d \u6574\u6570\u503c\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     \uff0d \u5728\u53e6\u4e00\u4e2a\u7ebf\u7a0b\u4e2d\u8fd0\u884c\u547d\u4ee4\n\
+\  WAIT FOR name;               \uff0d \u7b49\u5f85 ASYNC'd \u547d\u4ee4\u7684\u7ed3\u679c\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               \uff0d \u5728\u67e5\u8be2\u4e0a\u83b7\u53d6\u6e38\u6807\uff08JDBC \u7ed3\u679c\u96c6\uff09\n\
+\                               \uff0d SCROLL \u6e38\u6807\u4ec5\u9002\u7528\u4e8e\n\
+\                               \uff0d JDBC 2.0 \u548c\u66f4\u9ad8\u7248\u672c\u3002\n\
+\                               \uff0d\uff08\u5728 JDBC 1.X. \u4e2d\u5ffd\u7565\u6e38\u6807\u6eda\u52a8\u7c7b\u578b\uff09\n\
+\  NEXT name;                   \uff0d \u4ece\u547d\u540d\u6e38\u6807\u83b7\u53d6\u4e0b\u4e00\u884c\n\
+\  FIRST name;                  \uff0d \u4ece\u547d\u540d\u6eda\u52a8\u6e38\u6807\u83b7\u53d6\u7b2c\u4e00\u884c\n\
+\  LAST name;                   \uff0d \u4ece\u547d\u540d\u6eda\u52a8\u6e38\u6807\u83b7\u53d6\u6700\u540e\u4e00\u884c\n\
+\  PREVIOUS name;               \uff0d \u4ece\u547d\u540d\u6eda\u52a8\u6e38\u6807\u83b7\u53d6\u524d\u4e00\u884c\n\
+\  ABSOLUTE integer name;       \uff0d \u5728\u7edd\u5bf9\u884c\u53f7\u4e0a\u5b9a\u4f4d\u547d\u540d\u6eda\u52a8\u6e38\u6807\n\
+\                               \uff0d\uff08\u8d1f\u6570\u8868\u793a\u4ece\u6700\u540e\u4e00\u884c\u8d77\u7b97\u7684\u4f4d\u7f6e\u3002\uff09\n\
+\  RELATIVE integer name;       \uff0d \u76f8\u5bf9\u4e0e\u5f53\u524d\u884c\u5b9a\u4f4d\u547d\u540d\u6eda\u52a8\u6e38\u6807\n\
+\                               \uff0d\uff08\u6574\u6570\u662f\u884c\u53f7\uff09\n\
+\  AFTER LAST name;             \uff0d \u5c06\u547d\u540d\u6eda\u52a8\u6e38\u6807\u5b9a\u4f4d\u4e8e\u6700\u540e\u4e00\u884c\u7684\u540e\u9762\n\
+\  BEFORE FIRST name;           \uff0d \u5c06\u547d\u540d\u6eda\u52a8\u6e38\u6807\u5b9a\u4f4d\u4e8e\u7b2c\u4e00\u884c\u7684\u524d\u9762\n\
+\  GETCURRENTROWNUMBER name;    \uff0d \u8fd4\u56de\u547d\u540d\u6eda\u52a8\u6e38\u6807\u5f53\u524d\u4f4d\u7f6e\u7684\u884c\u53f7\n\
+\                               \uff0d\uff08\u5f53\u6e38\u6807\u7684\u4f4d\u7f6e\u4e0d\u5728\u4e00\u4e2a\u884c\u4e0a\u65f6\u8fd4\u56de 0\u3002\uff09\n\
+\  CLOSE name;                  \uff0d \u5173\u95ed\u5df2\u547d\u540d\u7684\u6e38\u6807\n\
+\  UNICODEESCAPE [ ON | OFF ];  \uff0d \u5bf9\u8f93\u5165\u6d41\u8bbe\u7f6e unicode \u8f6c\u4e49\u65b9\u5f0f\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               \uff0d \u63a7\u5236\u8bed\u8a00\u73af\u5883\u654f\u611f\u6570\u636e\u8868\u793a\u6cd5\n\
+\ \n\
+\  EXIT;                        \uff0d \u9000\u51fa ij\n\
+\  HELP;                        \uff0d \u663e\u793a\u6b64\u6d88\u606f\n\
+\ \n\
+\ \u4efb\u4f55\u65e0\u6cd5\u8bc6\u522b\u7684\u547d\u4ee4\u90fd\u5c06\u88ab\u89c6\u4e3a\u53ef\u80fd\u7684 SQL-J \u547d\u4ee4\u5e76\u76f4\u63a5\u6267\u884c\u3002\n\
+\ \n
+# From ijException.java
+IJ_IllegalStatementName={0} \u662f\u8bed\u53e5\u7684\u975e\u6cd5\u540d\u79f0
+IJ_NotYetImpl=\u8fd8\u672a\u5b9e\u73b0
+IJ_AlreHaveACon=\u5df2\u5177\u6709\u540d\u4e3a {0} \u7684\u8fde\u63a5
+IJ_ExceRunnComm=\u8fd0\u884c\u547d\u4ee4\u65f6 {0} \u53d1\u751f\u5f02\u5e38
+IJ_UnabToGetWar=\u65e0\u6cd5\u83b7\u53d6\u5bf9\u8fde\u63a5\u53d1\u51fa\u7684\u8b66\u544a
+IJ_CoulNotLocaC=\u627e\u4e0d\u5230\u534f\u8bae\u7684\u7c7b {0}
+IJ_CoulNotLocaC_5=\u627e\u4e0d\u5230\u7c7b {0}
+IJ_FailToDisc=\u65e0\u6cd5\u65ad\u5f00\u8fde\u63a5
+IJ_DrivNotClasN=\u9a71\u52a8\u7a0b\u5e8f\u65e0\u7c7b\u540d {0}
+IJ_FileNotFoun=\u672a\u627e\u5230\u6587\u4ef6
+IJ_CannotCloseInFile=\u65e0\u6cd5\u5173\u95ed ij \u8f93\u5165\u6587\u4ef6 {0}
+IJ_IsNotAlloOnA=\u4ec5\u5411\u524d\u6e38\u6807\u4e0a\u4e0d\u5141\u8bb8 {0}\u3002
+IJ_GetcCallFail=getConnection \u8c03\u7528\u5931\u8d25
+IJ_Ioex=IOException\uff1a{0}
+IJ_NeedToDiscFi=\u9996\u5148\u9700\u8981\u65ad\u5f00\u8fde\u63a5
+IJ_NoAsynStatEx=\u4e0d\u5b58\u5728\u540d\u79f0\u4e3a {0} \u7684\u5f02\u6b65\u8bed\u53e5
+IJ_NoConnExisWi=\u4e0d\u5b58\u5728\u540d\u79f0\u4e3a {0} \u7684\u8fde\u63a5
+IJ_NoProtExisWi=\u4e0d\u5b58\u5728\u540d\u79f0\u4e3a {0} \u7684\u534f\u8bae
+IJ_IsOnlySuppIn={0} \u4ec5\u5728 JDBC 2.0 \u548c\u66f4\u9ad8\u7248\u672c\u4e2d\u53d7\u652f\u6301\u3002
+IJ_UsinClauHadN=Using \u5b50\u53e5\u6ca1\u6709\u7ed3\u679c
+IJ_UnabToEsta=\u65e0\u6cd5\u5efa\u7acb {0}
+IJ_UnabToGetWar_19=\u65e0\u6cd5\u83b7\u53d6\u7ed3\u679c\u96c6\u7684\u8b66\u544a
+IJ_ResoNotFoun=\u672a\u627e\u5230\u8d44\u6e90
+IJ_ScroCursAre1=\u53ea\u6709 JDK1.2 \u53ca\u66f4\u9ad8\u7248\u672c\u624d\u652f\u6301\u6eda\u52a8\u6e38\u6807\u3002
+IJ_HoldCursAre4=\u53ef\u6301\u6709\u6027\u4e0d\u80fd\u4f7f\u7528\u4f4e\u4e8e JDK1.4 \u7684 JDK \u4e2d\u7684 jdbc3.0 api \u6765\u66f4\u6539\u3002
+IJ_UnabToGetWar_22=\u65e0\u6cd5\u83b7\u53d6\u5bf9\u8bed\u53e5\u53d1\u51fa\u7684\u8b66\u544a
+IJ_WaitForStatI=\u7b49\u5f85\u8bed\u53e5\u4e2d\u65ad\uff1a{0}
+IJ_0IsAnInvaVal=\u5bf9\u4e8e ABSOLUTE <integer> <cursorname> 0 \u662f\u65e0\u6548\u503c
+# From ijFatalException.java
+IJ_FataExceTerm=\u81f4\u547d\u5f02\u5e38\uff1b\u6b63\u5728\u7ec8\u6b62
+IJ_Fata01=FatalException\uff1a{0}\uff1a{1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=\u7528\u6cd5\uff1ajava org.apache.derby.tools.ij [-p propertyfile] [-ca connectionAttributePropertyFile] [inputfile]
+IJ_IjWarniAutocMayCloseUsingResulSet=IJ \u8b66\u544a\uff1a\u81ea\u52a8\u843d\u5b9e\u53ef\u80fd\u5173\u95ed\u4f7f\u7528\u7ed3\u679c\u96c6
+# From utilMain.java
+IJ_IjVers30C199=ij v{0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=\u7ecf\u8fc7\u65f6\u95f4 = {0} \u6beb\u79d2
+IJ_IjErro0=IJ \u9519\u8bef\uff1a{0}
+IJ_JavaErro0=JAVA \u9519\u8bef\uff1a{0}
+IJ_ElapTime0Mil_4=\u7ecf\u8fc7\u65f6\u95f4 = {0} \u6beb\u79d2
+IJ_IjErro0_5=IJ \u9519\u8bef\uff1a{0}
+IJ_IjErro0_6=IJ \u9519\u8bef\uff1a{0}
+IJ_JavaErro0_7=JAVA \u9519\u8bef\uff1a{0}
+IJ_Erro0=\ \uff08errorCode = {0}\uff09
+IJ_NoSqls=\uff08\u65e0 SQLState\uff09
+IJ_NoMess=\uff08\u65e0\u6d88\u606f\uff09
+IJ_Erro012=\u9519\u8bef {0}\uff1a{1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT=\u5728\u672a\u786e\u5b9a\u4e8b\u52a1\u4e2d\u6062\u590d {0}
+IJ_Tran01=\u4e8b\u52a1 {0} : {1}
+IJ_IlleValu=\u975e\u6cd5\u503c
+IJ_01SeeClouLog={0} : {1}\uff08\u8bf7\u53c2\u9605 cloudcape.LOG\uff09
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource \u4e0d\u5728\u7c7b\u8def\u5f84\u4e2d\uff0c\u8bf7\u5c06 cs.jar \u6587\u4ef6\u653e\u5165\u60a8\u7684\u7c7b\u8def\u5f84
+IJ_XANoI=\u65e0\u6cd5\u5b9e\u4f8b\u5316 EmbeddedXADataSource\uff0c\u8bf7\u5c06 cs.jar \u6587\u4ef6\u653e\u5165\u60a8\u7684\u7c7b\u8def\u5f84
+# From ParseException.java
+IJ_EncoAtLineColu=\u7b2c {1} \u884c\uff0c\u7b2c {2} \u5217\u4e0a\u9047\u5230\u201c{0}\u201d
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=\u7b2c {0} \u884c\uff0c\u7b2c {1} \u5217\u4e0a\u6709\u8bcd\u6cd5\u9519\u8bef\u3002\u5728\u201c{3}\u201d\u540e\u9047\u5230\uff1a{2}
+TL_incorCase=Cloudscape \u5c5e\u6027\u7684\u5927\u5c0f\u5199\u4e0d\u6b63\u786e\u3002
+TL_unknownAtt=\u5c5e\u6027\u662f Cloudscape \u672a\u77e5\u7684\u3002
+TL_trueFalse=\u503c\u5e94\u8be5\u8bbe\u7f6e\u4e3a true/false\u3002
+TL_dupAtt=\u5c5e\u6027\u662f\u91cd\u590d\u7684\u3002
+TL_urlLabel1=URL \u5c5e\u6027 {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=\u672a\u627e\u5230\u5f53\u524d\u8bed\u8a00\u73af\u5883\u7684\u8d44\u6e90\uff1b\u5207\u6362\u5230 {0}\u3002
+CSLOOK_Usage=\ \n\
+\ \u7528\u6cd5\uff1a\n\
+\ java org.apache.derby.tools.dblook -d <sourceDBUrl> [OPTIONS]\n\
+\n\
+\ \t\u5176\u4e2d\u6e90 URL \u662f\u5b8c\u6574\u7684 URL\uff0c\u5305\u62ec\u8fde\u63a5\u534f\u8bae\n\
+\ \t\u548c\u53ef\u4ee5\u5e94\u7528\u7684\u4efb\u4f55\u8fde\u63a5\u5c5e\u6027\u3002\u4f8b\u5982\uff0c\u4f7f\u7528\n\
+\ \t\u201cjdbc:cloudscape:myDB\u201d\u6216\u201cjdbc:cloudscape:net://localhost:1527/myDB:user=usr;\u201d\u3002\n\
+\n\
+\ \t\u9009\u9879\u5305\u62ec\uff1a\n\
+\n\
+\ \t-z <schemaName> \u4ee5\u6307\u5b9a\u751f\u6210 DDL \u5e94\u8be5\u53d7\u9650\u5236\u7684\n\
+\ \t\u6a21\u5f0f\u3002\u53ea\u6709\u5177\u6709\u8be5\u6a21\u5f0f\u7684\u6570\u636e\u5e93\u5bf9\u8c61\u624d\u80fd\u751f\u6210\u5176\n\
+\ \t DDL\u3002\n\
+\n\
+\ \t-t <tableOne> <tableTwo> ... \u4ee5\u6307\u5b9a\u51e0\u4e2a\u5c06\u751f\u6210 DDL \u7684\u8868\uff1b\n\
+\ \t\u5c06\u5ffd\u7565\u4efb\u4f55\u6ca1\u6709\u5217\u51fa\u6765\u7684\u8868\u3002\n\
+\n\
+\ \t-td <value> \u4ee5\u6307\u5b9a\u5e94\u8be5\u5c06\u4ec0\u4e48\u5185\u5bb9\u8ffd\u52a0\u5230\n\
+\ \t\u6bcf\u4e2a DDL \u8bed\u53e5\u7684\u672b\u5c3e\u3002\n\
+\t\t\u7f3a\u7701\u4e3a\u201c;\u201d\u3002\n\
+\n\
+\ \t-noview \u4ee5\u9632\u6b62\u6709\u5173 DDL \u751f\u6210\u7684\u89c6\u56fe\u3002\n\
+\n\
+\ \t-append \u4ee5\u9632\u6b62\u8986\u76d6\u8f93\u51fa\u6587\u4ef6\u3002\n\
+\n\
+\ \t-verbose \u5c06\u9519\u8bef\u6d88\u606f\u9664\u6253\u5370\u5230\u65e5\u5fd7\u6587\u4ef6\u5916\uff0c\n\
+\ \t\u8fd8\u6253\u5370\u5230\u63a7\u5236\u53f0\u3002\u5982\u679c\u6ca1\u6709\u6307\u5b9a\uff0c\u9519\u8bef\u5c06\u53ea\u6253\u5370\u5230\n\
+\ \t\u65e5\u5fd7\u6587\u4ef6\u3002\n\
+\n\
+\ \t-o <filename> \u6307\u5b9a\u5c06\u751f\u6210\u7684 DDL \u5199\u5165\u5176\u4e2d\u7684\n\
+\ \t \u6587\u4ef6\u540d\u3002\n\
+\ \t\t\u5982\u679c\u6ca1\u6709\u6307\u5b9a\uff0c\u7f3a\u7701\u503c\u662f\u63a7\u5236\u53f0\u3002\ \n
+CSLOOK_FileCreation=\u6b64\u6587\u4ef6\u662f\u4f7f\u7528 Cloudscape \u7684 cslook \u5b9e\u7528\u7a0b\u5e8f\u521b\u5efa\u7684\u3002
+CSLOOK_OutputLocation=\u8f93\u51fa\u5c06\u53d1\u9001\u5230\u6587\u4ef6 {0}\n
+CSLOOK_Timestamp=\u65f6\u95f4\u6233\u8bb0\uff1a{0}
+CSLOOK_DBName=\u6e90\u6570\u636e\u5e93\u4e3a\uff1a{0}
+CSLOOK_DBUrl=\u8fde\u63a5 URL \u4e3a\uff1a{0}
+CSLOOK_TargetTables=cslook \u5b9e\u7528\u7a0b\u5e8f\u5c06\u4ec5\u8003\u8651\u6307\u5b9a\u7684\u8868\u3002
+CSLOOK_TargetSchema=\u6307\u5b9a\u7684\u6a21\u5f0f\u4e3a\uff1a{0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=\u8868\u7684 DDL \u8bed\u53e5
+CSLOOK_ChecksHeader=\u68c0\u67e5\u7684 DDL \u8bed\u53e5
+CSLOOK_IndexesHeader=\u7d22\u5f15\u7684 DDL \u8bed\u53e5
+CSLOOK_JarsHeader=jar \u7684 DDL \u8bed\u53e5
+CSLOOK_KeysHeader=\u952e\u7684 DDL \u8bed\u53e5
+CSLOOK_PrimUniqueHeader=\u4e3b\u952e\uff0f\u552f\u4e00\u952e
+CSLOOK_ForeignHeader=\u5916
+CSLOOK_SchemasHeader=\u6a21\u5f0f\u7684 DDL \u8bed\u53e5
+CSLOOK_StoredProcHeader=\u5b58\u50a8\u8fc7\u7a0b\u7684 DDL \u8bed\u53e5
+CSLOOK_TriggersHeader=\u89e6\u53d1\u5668\u7684 DDL \u8bed\u53e5
+CSLOOK_ViewsHeader=\u89c6\u56fe\u7684 DDL \u8bed\u53e5
+CSLOOK_Jar_Note=**** \u6ce8\u610f **** \u4e3a\u4e86\u6b63\u786e\u88c5\u5165 jar \u6587\u4ef6\uff0c\n\
+-- \u60a8\u5fc5\u987b 1) \u786e\u4fdd CSJARS \u76ee\u5f55\n\
+-- \uff08\u7531 cslook \u81ea\u52a8\u521b\u5efa\uff09\u5b58\u5728\u4e8e\u521b\u5efa\u5b83\u7684\u5730\u65b9\uff08\u4f8b\u5982\uff0c\u5728 \n\
+-- \u4e0b\u9762\u8bed\u53e5\u4e2d\u6240\u663e\u793a\u7684\u8def\u5f84\u4e2d\uff09\uff0c\u6216\u8005 2) \u66f4\u6539\u4e0b\u9762\u8bed\u53e5\u4e2d\u7684\n\
+-- \u8def\u5f84\uff0c\u4ee5\u53cd\u6620 CSJARS \u7684\u5f53\u524d\n\
+-- \u4f4d\u7f6e\u3002\u5982\u679c CSJARS \u76ee\u5f55\u4e0d\u5b58\u5728\uff0c\u6216\u8005\u5982\u679c\u5b83\n\
+-- \u5df2\u7ecf\u88ab\u79fb\u52a8\u4e14\u8def\u5f84\u4e0d\u6b63\u786e\uff0c\u5219\u4e0b\u5217 DDL\n\
+-- \u8bed\u53e5\u5c06\u629b\u51fa\u9519\u8bef\uff0c\u800c\u4e14 jar \u6587\u4ef6\n\
+-- \u5c06\u4e0d\u4f1a\u88ab\u88c5\u5165\u3002
+CSLOOK_FailedToLoadJar=\u88c5\u5165 JAR \u6587\u4ef6 {0} \u5931\u8d25
+CSLOOK_DefaultSchema=\u8fd8\u539f\u5230\u7f3a\u7701\u6a21\u5f0f\u201cAPP\u201d
+CSLOOK_AtLeastOneDebug=-- \u6ce8\uff1a\u5728 DDL \u751f\u6210\u671f\u95f4\u81f3\u5c11\u9047\u5230\u4e00\u4e2a\n\
+-- \u610f\u5916\u7684\u9519\u8bef\uff0f\u8b66\u544a\u6d88\u606f\u3002\u8bf7\u53c2\u9605 cslook.log\n\
+-- \u67e5\u770b\u8be5\u6d88\u606f\u3002\n\
+\n

Added: incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_zh_TW.properties
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/loc/toolsmessages_zh_TW.properties	Thu Nov 11 23:39:22 2004
@@ -0,0 +1,243 @@
+# Directory com/ibm/db2j/tools
+# Directory com/ibm/db2j/util
+# From JDBCDisplayUtil.java
+UT_Error0=\ (errorCode = {0})
+UT_NoSqlst=\uff08\u7121 SQLState\uff09
+UT_NoMessa=\uff08\u7121\u8a0a\u606f\uff09
+UT_Error012=\u932f\u8aa4 {0}\uff1a{1}{2}
+UT_NoSqlst_7=\uff08\u7121 SQLState\uff09
+UT_NoMessa_8=\uff08\u7121\u8a0a\u606f\uff09
+UT_Warni01=\u8b66\u544a {0}\uff1a{1}
+UT_1RowInserUpdatDelet=\u5df2\u63d2\u5165/\u66f4\u65b0/\u522a\u9664 1 \u5217
+UT_0RowsInserUpdatDelet=\u5df2\u63d2\u5165/\u66f4\u65b0/\u522a\u9664 {0} \u5217
+UT_StateExecu=\u5df2\u57f7\u884c\u9673\u8ff0\u5f0f\u3002
+UT_0RowsSelec=\u5df2\u9078\u53d6 {0} \u5217
+UT_1RowSelec=\u5df2\u9078\u53d6 1 \u5217
+UT_Resul0=+ ResultSet #{0} +
+UT_JDBCDisplayUtil_16=++++++++++++++++
+UT_JDBCDisplayUtil_17=+
+UT_NoCurreRow=\u6c92\u6709\u73fe\u884c\u5217
+UT_NoCurreRow_19=\u6c92\u6709\u73fe\u884c\u5217
+UT_Resul0_20=ResultSet #{0}
+# Directory com/ibm/db2j/internalUtil
+# From AppStreamReader.java
+UT_InvaEscaChar=\u7121\u6548\u7684\u8df3\u96e2\u5b57\u5143\u3002
+# Directory com/ibm/db2j/tools/ijImpl
+# From Main.java
+IJ_IjErroResoNo=IJ \u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u8cc7\u6e90\uff1a{0}
+IJ_IjErroFileNo=IJ \u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u6a94\u6848\uff1a{0}
+IJ_IjErroUnabTo=IJ \u932f\u8aa4\uff1a\u7121\u6cd5\u5c07\u8f38\u51fa\u91cd\u8a2d\u70ba\uff1a{0}
+IJ_IjErroMaxiVa=IJ \u932f\u8aa4\uff1amaximumDisplayWidth \u503c {0} \u4e0d\u662f\u6574\u6578\u503c\u3002
+# From ij.jj
+IJ_Pass=PASS
+IJ_Fail=FAIL
+IJ_Unx=\ **** UNX
+IJ_NoConneAvail=\u6c92\u6709\u53ef\u7528\u7684\u9023\u7dda\u3002
+IJ_CurreConne=* = \u73fe\u884c\u9023\u7dda
+IJ_NoCurreConne=\u6c92\u6709\u73fe\u884c\u9023\u7dda
+IJ_TestsRun0Pass12Fail34=\u6e2c\u8a66\u57f7\u884c\uff1a{0}    \u4f5c\u696d\uff1a{1} ({2}%)   \u5931\u6557\uff1a{3} ({4}%)
+IJ_UnexpResulUnx01=*****     \u975e\u9810\u671f\u7684\u7d50\u679c\uff0cunx: {0} ({1}%)     *****
+IJ_HelpText=\ \n\
+\ \u652f\u63f4\u7684\u6307\u4ee4\u5305\u62ec\uff1a\n\
+\ \n\
+\  PROTOCOL 'JDBC protocol' [ AS ident ];\n\
+\                               -- \u8a2d\u5b9a\u9810\u8a2d\u6216\u5177\u540d\u901a\u8a0a\u5354\u5b9a\n\
+\  DRIVER 'class for driver';   -- \u8f09\u5165\u5177\u540d\u985e\u5225\n\
+\  CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];\n\
+\                               -- \u9023\u63a5\u81f3\u8cc7\u6599\u5eab URL\n\
+\                               -- \u4e14\u53ef\u4ee5\u6307\u6d3e\u8b58\u5225\u78bc\n\
+\  SET CONNECTION connectionName; -- \u5207\u63db\u81f3\u6307\u5b9a\u7684\u9023\u7dda\n\
+\  SHOW CONNECTIONS;            -- \u5217\u51fa\u6240\u6709\u9023\u7dda\n\
+\  AUTOCOMMIT [ ON | OFF ];     -- \u8a2d\u5b9a\u9023\u7dda\u7684\u81ea\u52d5\u78ba\u5b9a\u6a21\u5f0f\n\
+\  DISCONNECT [ CURRENT | connectionName | ALL ];\n\
+\                               -- \u9664\u53bb\u73fe\u884c\u5177\u540d\u9023\u7dda\uff0c\u6216\u6240\u6709\u9023\u7dda\uff1b\n\
+\                               -- \u9810\u8a2d\u503c\u662f CURRENT\n\
+\ \n\
+\  COMMIT;                      -- \u78ba\u5b9a\u73fe\u884c\u4ea4\u6613\n\
+\  ROLLBACK;                    -- \u53d6\u6d88\u73fe\u884c\u4ea4\u6613\n\
+\ \n\
+\  PREPARE name AS 'SQL-J text'; -- \u6e96\u5099 SQL-J \u6587\u5b57\n\
+\  EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;\n\
+\                               -- \u4ee5 USING \u7d50\u679c\u96c6\u5217\u4e2d\u7684\n\
+\                               -- \u53c3\u6578\u503c\u57f7\u884c\u9673\u8ff0\u5f0f\n\
+\  REMOVE name;                 -- \u79fb\u9664\u5177\u540d\u7684\u5148\u524d\u7684\u5099\u59a5\u9673\u8ff0\u5f0f\n\
+\ \n\
+\  RUN 'filename';              -- \u5f9e\u5177\u540d\u6a94\u6848\u57f7\u884c\u6307\u4ee4\n\
+\ \n\
+\  ELAPSEDTIME [ ON | OFF ];    -- \u8a2d\u5b9a ij \u7684\u7d93\u6b77\u6642\u9593\u6a21\u5f0f\n\
+\  MAXIMUMDISPLAYWIDTH integerValue;\n\
+\                               -- \u5c07\u6bcf\u500b\u76f4\u6b04\u7684\u986f\u793a\u5bec\u5ea6\n\
+\                               -- \u4e0a\u9650\u8a2d\u70ba integerValue\n\
+\ \n\
+\  ASYNC name 'SQL-J text';     -- \u5728\u53e6\u4e00\u500b\u57f7\u884c\u7dd2\u4e2d\u57f7\u884c\u6307\u4ee4\n\
+\  WAIT FOR name;               -- \u7b49\u5f85 ASYNC'd \u6307\u4ee4\u7684\u7d50\u679c\n\
+\ \n\
+\  GET [SCROLL INSENSITIVE] CURSOR name AS 'SQL-J query';\n\
+\                               -- \u53d6\u5f97\u67e5\u8a62\u6e38\u6a19\uff08JDBC \u7d50\u679c\u96c6\uff09\n\
+\                               -- \u53ea\u6709\u5728 JDBC 2.0 \u6216\u66f4\u65b0\u7684\u7248\u672c\u4e2d\n\
+\                               -- \u53ef\u4ee5\u4f7f\u7528 SCROLL \u6e38\u6a19\u3002\n\
+\                               --\uff08JDBC 1.X \u6703\u5ffd\u7565\u6372\u52d5\u6e38\u6a19\u985e\u578b\u3002\uff09\n\
+\  NEXT name;                   -- \u5f9e\u5177\u540d\u6e38\u6a19\u53d6\u5f97\u4e0b\u4e00\u5217\n\
+\  FIRST name;                  -- \u5f9e\u5177\u540d\u6372\u52d5\u6e38\u6a19\u53d6\u5f97\u7b2c\u4e00\u5217\n\
+\  LAST name;                   -- \u5f9e\u5177\u540d\u6372\u52d5\u6e38\u6a19\u53d6\u5f97\u6700\u5f8c\u4e00\u5217\n\
+\  PREVIOUS name;               -- \u5f9e\u5177\u540d\u6372\u52d5\u6e38\u6a19\u53d6\u5f97\u4e0a\u4e00\u5217\n\
+\  ABSOLUTE integer name;       -- \u5c07\u5177\u540d\u6372\u52d5\u6e38\u6a19\u653e\u5728\u7d55\u5c0d\u5217\u865f\n\
+\                               --\uff08\u8ca0\u865f\u8868\u793a\u5f9e\u6700\u5f8c\u4e00\u5217\u7b97\u8d77\u7684\u4f4d\u7f6e\u3002\uff09\n\
+\  RELATIVE integer name;       -- \u76f8\u5c0d\u65bc\u76ee\u524d\u9019\u4e00\u5217\u4f86\u653e\u7f6e\u5177\u540d\u6372\u52d5\u6e38\u6a19\n\
+\                               --\uff08\u6574\u6578\u662f\u5217\u6578\uff09\n\
+\  AFTER LAST name;             -- \u5c07\u5177\u540d\u6372\u52d5\u6e38\u6a19\u653e\u5728\u6700\u5f8c\u4e00\u5217\u4e4b\u5f8c\n\
+\  BEFORE FIRST name;           -- \u5c07\u5177\u540d\u6372\u52d5\u6e38\u6a19\u653e\u5728\u7b2c\u4e00\u5217\u4e4b\u524d\n\
+\  GETCURRENTROWNUMBER name;    -- \u50b3\u56de\u5177\u540d\u6372\u52d5\u6e38\u6a19\u76ee\u524d\u4f4d\u7f6e\u7684\u5217\u865f\n\
+\                               --\uff08\u7576\u6e38\u6a19\u4e0d\u5728\u5217\u4e0a\uff0c\u6703\u50b3\u56de 0\u3002\uff09\n\
+\  CLOSE name;                  -- \u95dc\u9589\u5177\u540d\u6e38\u6a19\n\
+\  UNICODEESCAPE [ ON | OFF ]; -- \u8a2d\u5b9a\u8f38\u5165\u4e32\u6d41\u7684 Unicode \u8df3\u51fa\u6a21\u5f0f\n\
+\  LOCALIZEDDISPLAY [ ON | OFF ];\n\
+\                               -- \u63a7\u5236\u80fd\u5340\u5206\u8a9e\u8a00\u74b0\u5883\u7684\u8cc7\u6599\u8868\u793a\u6cd5\n\
+\ \n\
+\  EXIT;                        -- \u7d50\u675f ij\n\
+\  HELP;                        -- \u986f\u793a\u9019\u500b\u8a0a\u606f\n\
+\ \n\
+\ \u4efb\u4f55\u7121\u6cd5\u8fa8\u8b58\u7684\u6307\u4ee4\u90fd\u6703\u7576\u4f5c\u53ef\u80fd\u7684 SQL-J \u6307\u4ee4\u4f86\u8655\u7406\uff0c\u4e26\u76f4\u63a5\u57f7\u884c\u3002\n\
+\    \n
+# From ijException.java
+IJ_IllegalStatementName={0} \u662f\u4e0d\u5408\u6cd5\u7684\u9673\u8ff0\u5f0f\u540d\u7a31
+IJ_NotYetImpl=\u5c1a\u672a\u5be6\u4f5c
+IJ_AlreHaveACon=\u5df2\u6709\u540d\u7a31\u70ba {0} \u7684\u9023\u7dda
+IJ_ExceRunnComm=\u57f7\u884c {0} \u6307\u4ee4\u6642\uff0c\u767c\u751f\u7570\u5e38\u72c0\u6cc1
+IJ_UnabToGetWar=\u7121\u6cd5\u53d6\u5f97\u9023\u7dda\u7684\u8b66\u544a
+IJ_CoulNotLocaC=\u627e\u4e0d\u5230\u901a\u8a0a\u5354\u5b9a {0} \u7684\u985e\u5225
+IJ_CoulNotLocaC_5=\u627e\u4e0d\u5230 {0} \u985e\u5225
+IJ_FailToDisc=\u7121\u6cd5\u5207\u65b7\u9023\u7dda
+IJ_DrivNotClasN=\u9a45\u52d5\u7a0b\u5f0f\u4e0d\u662f\u985e\u5225\u540d\u7a31 {0}
+IJ_FileNotFoun=\u627e\u4e0d\u5230\u6a94\u6848
+IJ_CannotCloseInFile=\u7121\u6cd5\u95dc\u9589 ij \u8f38\u5165\u6a94 {0}
+IJ_IsNotAlloOnA=\u4e0d\u5141\u8a31\u53ea\u80fd\u5411\u524d\u7684\u6e38\u6a19\u4f7f\u7528 {0}
+IJ_GetcCallFail=getConnection \u547c\u53eb\u5931\u6557
+IJ_Ioex=IOException\uff1a{0}
+IJ_NeedToDiscFi=\u5fc5\u9808\u5148\u5207\u65b7\u9023\u7dda
+IJ_NoAsynStatEx=\u6c92\u6709\u540d\u7a31\u70ba {0} \u7684\u975e\u540c\u6b65\u9673\u8ff0\u5f0f
+IJ_NoConnExisWi=\u6c92\u6709\u540d\u7a31\u70ba {0} \u7684\u9023\u7dda
+IJ_NoProtExisWi=\u6c92\u6709\u540d\u7a31\u70ba {0} \u7684\u901a\u8a0a\u5354\u5b9a
+IJ_IsOnlySuppIn=\u53ea\u6709 JDBC 2.0 \u548c\u66f4\u65b0\u7684\u7248\u672c\u652f\u63f4 {0}\u3002
+IJ_UsinClauHadN=Using \u5b50\u53e5\u6c92\u6709\u7d50\u679c
+IJ_UnabToEsta=\u7121\u6cd5\u5efa\u7acb {0}
+IJ_UnabToGetWar_19=\u7121\u6cd5\u53d6\u5f97\u7d50\u679c\u96c6\u7684\u8b66\u544a
+IJ_ResoNotFoun=\u627e\u4e0d\u5230\u8cc7\u6e90
+IJ_ScroCursAre1=\u53ea\u6709 JDK 1.2 \u548c\u66f4\u65b0\u7684\u7248\u672c\u652f\u63f4\u6372\u52d5\u6e38\u6a19\u3002
+IJ_HoldCursAre4=\u7121\u6cd5\u4f7f\u7528\u6bd4 JDK1.4 \u66f4\u820a\u7248\u4e4b JDK \u4e2d\u7684 jdbc3.0 apis \u4f86\u8b8a\u66f4\u4fdd\u7279\u80fd\u529b\u3002
+IJ_UnabToGetWar_22=\u7121\u6cd5\u53d6\u5f97\u9673\u8ff0\u5f0f\u7684\u8b66\u544a
+IJ_WaitForStatI=\u7b49\u5f85\u5c94\u65b7\u9673\u8ff0\u5f0f\uff1a{0}
+IJ_0IsAnInvaVal=0 \u662f ABSOLUTE <integer> <cursorname> \u7684\u7121\u6548\u503c
+# From ijFatalException.java
+IJ_FataExceTerm=\u56b4\u91cd\u7570\u5e38\u72c0\u6cc1\uff1b\u7d42\u6b62\u4e2d
+IJ_Fata01=FatalException: {0}: {1}
+# From ijResultImpl.java
+IJ_Con0=CON::{0}
+IJ_Stm0=STM::{0}
+IJ_Row0=ROW::{0}
+IJ_Vec0=VEC::{0}
+IJ_Mul0=MUL::{0}
+IJ_Exc0=EXC::{0}
+IJ_Unkn0=UNKNOWN::{0}
+# From util.java
+IJ_UsageJavaComCloudToolsIjPPropeInput=\u7528\u6cd5\uff1ajava org.apache.derby.tools.ij [-p propertyfile] [-ca connectionAttributePropertyFile] [inputfile]
+IJ_IjWarniAutocMayCloseUsingResulSet=IJ \u8b66\u544a\uff1a\u81ea\u52d5\u78ba\u5b9a\u53ef\u80fd\u6703\u5229\u7528\u7d50\u679c\u96c6\u95dc\u9589
+# From utilMain.java
+IJ_IjVers30C199=ij version {0} (C) Copyright IBM Corp. 1997, 2004.
+IJ_ElapTime0Mil=ELAPSED TIME = {0} \u6beb\u79d2
+IJ_IjErro0=IJ \u932f\u8aa4\uff1a{0}
+IJ_JavaErro0=JAVA \u932f\u8aa4\uff1a{0}
+IJ_ElapTime0Mil_4=ELAPSED TIME = {0} \u6beb\u79d2
+IJ_IjErro0_5=IJ \u932f\u8aa4\uff1a{0}
+IJ_IjErro0_6=IJ \u932f\u8aa4\uff1a{0}
+IJ_JavaErro0_7=JAVA \u932f\u8aa4\uff1a{0}
+IJ_Erro0=\ (errorCode = {0})
+IJ_NoSqls=\uff08\u7121 SQLState\uff09
+IJ_NoMess=\uff08\u7121\u8a0a\u606f\uff09
+IJ_Erro012=\u932f\u8aa4 {0}\uff1a{1}{2}
+# From xaHelper.java
+IJ_Reco0InDoubT=\u5728\u4e0d\u78ba\u5b9a\u7684\u4ea4\u6613\u4e2d\u56de\u5fa9 {0}
+IJ_Tran01=\u4ea4\u6613 {0}\uff1a{1}
+IJ_IlleValu=\u503c\u4e0d\u5408\u6cd5
+IJ_01SeeClouLog={0}\uff1a{1}\uff08\u8acb\u53c3\u95b1 cloudcape.LOG\uff09
+IJ_Pool=PooledConnection
+IJ_XAClass=EmbeddedXADataSource \u4e0d\u5728\u985e\u5225\u8def\u5f91\u4e2d\uff0c\u8acb\u5c07 cs.jar \u6a94\u6848\u653e\u5230\u985e\u5225\u8def\u5f91\u4e2d
+IJ_XANoI=\u7121\u6cd5\u5be6\u4f8b\u5316 EmbeddedXADataSource\uff0c\u8acb\u5c07 cs.jar \u6a94\u6848\u653e\u5230\u985e\u5225\u8def\u5f91\u4e2d
+# From ParseException.java
+IJ_EncoAtLineColu=\u5728\u7b2c {1} \u884c\u7b2c {2} \u6b04\u4e2d\uff0c\u767c\u73fe "{0}"
+# From TokenMgrError.java
+IJ_LexiErroAtLine0Colu1=\u5728\u7b2c {0} \u884c\u7b2c {1} \u6b04\u4e2d\uff0c\u767c\u751f\u8a9e\u5f59\u932f\u8aa4\u3002\u5728 {3} \u4e4b\u5f8c\uff0c\u9047\u5230 {2}
+TL_incorCase=Cloudscape \u5c6c\u6027\u7684\u5927\u5c0f\u5beb\u4e0d\u6b63\u78ba\u3002
+TL_unknownAtt=Cloudscape \u7121\u6cd5\u8b58\u5225\u5c6c\u6027\u3002
+TL_trueFalse=\u503c\u61c9\u8a72\u8a2d\u70ba true/false\u3002
+TL_dupAtt=\u5c6c\u6027\u91cd\u8907\u3002
+TL_urlLabel1=URL \u5c6c\u6027 {0}{1}{2}
+# Directory com/ibm/db2j/tools
+# From cslook.java
+CSLOOK_MissingLocale=\u627e\u4e0d\u5230\u73fe\u884c\u8a9e\u8a00\u74b0\u5883\u7684\u8cc7\u6e90\uff1b\u5207\u63db\u70ba {0}\u3002
+CSLOOK_Usage=\ \n\
+\ \u7528\u6cd5\uff1a\n\
+\ java org.apache.derby.tools.dblook -d <sourceDBUrl> [OPTIONS]\n\
+\n\
+\ \t\u5176\u4e2d\uff0c\u4f86\u6e90 URL \u662f\u5b8c\u6574\u7684 URL\uff0c\u5305\u542b\u9023\u7dda\u901a\u8a0a\u5354\u5b9a\n\
+\ \t\u4ee5\u53ca\u4efb\u4f55\u53ef\u80fd\u5957\u7528\u7684\u9023\u7dda\u5c6c\u6027\u3002\u4f8b\u5982\uff0c\u4f7f\u7528\n\
+\ \t'jdbc:cloudscape:myDB' \u6216 'jdbc:cloudscape:net://localhost:1527/myDB:user=usr;'\u3002\n\
+\n\
+\ \t\u9078\u9805\u5305\u62ec\uff1a\n\
+\n\
+\ \t-z <schemaName>\uff0c\u53ef\u6307\u5b9a\u9650\u5236 DDL \u7522\u751f\n\
+\ \t\u7684\u7db1\u76ee\u3002\u53ea\u6709\u542b\u6b64\u7db1\u76ee\u7684\u8cc7\u6599\u5eab\u7269\u4ef6\u624d\u80fd\n\
+\ \t\u7522\u751f\u5176 DDL\u3002\n\
+\n\
+\ \t-t <tableOne> <tableTwo> ...\uff0c\u53ef\u6307\u5b9a\u7522\u751f DDL \n\
+\ \t\u7684\u8868\u683c\u6e05\u55ae\uff1b\u5c07\u5ffd\u7565\u6240\u6709\u4e0d\u5728\u6e05\u55ae\u5167\u7684\u8868\u683c\u3002\n\
+\n\
+\ \t-td <value>\uff0c\u53ef\u6307\u5b9a\u61c9\u9644\u52a0\u5728\n\
+\ \t\u6bcf\u4e00\u500b DDL \u9673\u8ff0\u5f0f\u5c3e\u7aef\u7684\u503c\u3002\n\
+\t\t\u6b64\u9810\u8a2d\u70ba ';'\u3002\n\
+\n\
+\ \t-noview\uff0c\u53ef\u9632\u6b62\u7522\u751f DDL \u4ee5\u9032\u884c\u6aa2\u8996\u3002\n\
+\n\
+\ \t-append\uff0c\u53ef\u907f\u514d\u6539\u5beb\u8f38\u51fa\u6a94\u3002\n\
+\n\
+\ \t-verbose\uff0c\u53ef\u5c07\u932f\u8aa4\u8a0a\u606f\u5217\u5370\u81f3\u4e3b\u63a7\u53f0\uff08\u4ea6\u6703\n\
+\ \t\u5217\u5370\u81f3\u65e5\u8a8c\u6a94\uff09\u3002\u82e5\u6c92\u6709\u6307\u5b9a\uff0c\u53ea\u6703\u628a\u932f\u8aa4\u5217\u5370\u81f3\n\
+\ \t\u65e5\u8a8c\u6a94\u3002\n\
+\n\
+\ \t-o <filename>\uff0c\u53ef\u6307\u5b9a\u6703\u5beb\u5165\u6240\u7522\u751f DDL \u7684\n\
+\ \t\u6a94\u6848\u540d\u7a31\u3002\n\
+\ \t\t\u82e5\u6c92\u6709\u6307\u5b9a\uff0c\u9810\u8a2d\u70ba\u4e3b\u63a7\u53f0\u3002\ \n
+CSLOOK_FileCreation=\u6b64\u6a94\u6848\u4ee5 Cloudscape \u7684 cslook \u516c\u7528\u7a0b\u5f0f\u5efa\u7acb\u3002
+CSLOOK_OutputLocation=\u6703\u628a\u8f38\u51fa\u9001\u81f3 {0}\n \u6a94\u6848
+CSLOOK_Timestamp=\u6642\u9593\u6233\u8a18\uff1a{0}
+CSLOOK_DBName=\u539f\u59cb\u6a94\u8cc7\u6599\u5eab\u70ba\uff1a{0}
+CSLOOK_DBUrl=\u9023\u7dda URL \u70ba\uff1a{0}
+CSLOOK_TargetTables=cslook \u516c\u7528\u7a0b\u5f0f\u50c5\u8003\u91cf\u6307\u5b9a\u7684\u8868\u683c\u3002
+CSLOOK_TargetSchema=\u6307\u5b9a\u7684\u7db1\u76ee\u70ba\uff1a{0}
+# Directory com/ibm/db2j/tools/cslookImpl/...
+CSLOOK_TablesHeader=DDL \u8868\u683c\u9673\u8ff0\u5f0f
+CSLOOK_ChecksHeader=DDL \u6aa2\u67e5\u9673\u8ff0\u5f0f
+CSLOOK_IndexesHeader=DDL \u7d22\u5f15\u9673\u8ff0\u5f0f
+CSLOOK_JarsHeader=DDL jar \u9673\u8ff0\u5f0f
+CSLOOK_KeysHeader=DDL \u9375\u503c\u9673\u8ff0\u5f0f
+CSLOOK_PrimUniqueHeader=\u4e3b\u8981/\u552f\u4e00
+CSLOOK_ForeignHeader=\u5916\u90e8
+CSLOOK_SchemasHeader=DDL \u7db1\u76ee\u9673\u8ff0\u5f0f
+CSLOOK_StoredProcHeader=DDL \u5132\u5b58\u7a0b\u5e8f\u9673\u8ff0\u5f0f
+CSLOOK_TriggersHeader=DDL \u89f8\u767c\u9673\u8ff0\u5f0f
+CSLOOK_ViewsHeader=DDL \u6982\u7565\u8868\u9673\u8ff0\u5f0f
+CSLOOK_Jar_Note=**** \u9644\u8a3b **** \u70ba\u4e86\u6b63\u78ba\u8f09\u5165 JAR \u6a94\uff0c\n\
+-- \u60a8\u5fc5\u9808 1) \u78ba\u5b9a CSJARS \u76ee\u9304\uff08\u7531 cslook \u6240\u81ea\u52d5\n\
+-- \u5efa\u7acb\uff09\u5b58\u5728\u65bc\u5176\u539f\u5148\u5efa\u7acb\u7684\u4f4d\u7f6e\uff08\u4ea6\u5373\uff0c\n\
+-- \u5728\u4ee5\u4e0b\u7684\u9673\u8ff0\u5f0f\u4e2d\u986f\u793a\u7684\u8def\u5f91\u4e0a\uff09\uff0c\u6216\u662f 2) \u8b8a\u66f4\n\
+-- \u4ee5\u4e0b\u9673\u8ff0\u5f0f\u4e2d\u7684\u8def\u5f91\u4f86\n\
+-- \u53cd\u6620 CSJARS \u7684\u73fe\u884c\u4f4d\u7f6e\u3002\u5982\u679c CSJARS \u76ee\u9304\u4e0d\u5b58\u5728\uff0c\n\
+-- \u6216\u662f\u5b83\u5df2\u88ab\u79fb\u52d5\uff0c\u8def\u5f91\u4e0d\u6b63\u78ba\uff0c\u5247\u4e0b\u5217 DDL\n\
+-- \u9673\u8ff0\u5f0f\u5c07\u6703\u64f2\u51fa\u932f\u8aa4\uff0c\u800c\u4e14\u5c07\u4e0d\u6703\n\
+-- \u8f09\u5165 JAR \u6a94\u3002
+CSLOOK_FailedToLoadJar=\u7121\u6cd5\u8f09\u5165 Jar \u6a94 {0}
+CSLOOK_DefaultSchema=\u56de\u5fa9\u5230\u9810\u8a2d\u7684\u7db1\u76ee 'APP'
+CSLOOK_AtLeastOneDebug=-- \u9644\u8a3b\uff1a\u7522\u751f DDL \u7684\u6642\u5019\uff0c\n\
+-- \u81f3\u5c11\u767c\u73fe\u4e86\u4e00\u500b\u975e\u9810\u671f\u7684\u932f\u8aa4/\u8b66\u544a\u3002\u8acb\u53c3\u95b1 cslook.log\n\
+-- \u4ee5\u6aa2\u8996\u8a0a\u606f\u3002\n\
+\n

Modified: incubator/derby/code/trunk/java/tools/org/apache/derby/tools/build.xml
==============================================================================
--- incubator/derby/code/trunk/java/tools/org/apache/derby/tools/build.xml	(original)
+++ incubator/derby/code/trunk/java/tools/org/apache/derby/tools/build.xml	Thu Nov 11 23:39:22 2004
@@ -29,7 +29,7 @@
       optimize="${optimize}"
       proceed="${proceed}"
       verbose="${verbose}"
-      srcdir="${ostoolsrc.dir}"
+      srcdir="${derby.tools.src.dir}"
       destdir="${out.dir}">
       <classpath>
         <pathelement path="${compile.classpath}"/>

Modified: incubator/derby/code/trunk/tools/ant/properties/dirs.properties
==============================================================================
--- incubator/derby/code/trunk/tools/ant/properties/dirs.properties	(original)
+++ incubator/derby/code/trunk/tools/ant/properties/dirs.properties	Thu Nov 11 23:39:22 2004
@@ -31,13 +31,12 @@
 derby.dir=org/apache/derby
 derbysrc.dir=${basedir}/java
 
-oscom.dir=com/ihost/cs
-ossrc.dir=${basedir}/java
-
 derby.engine.src.dir=${derbysrc.dir}/engine
 derby.drda.src.dir=${derbysrc.dir}/drda
 derby.tools.src.dir=${derbysrc.dir}/tools
 derby.build.src.dir=${derbysrc.dir}/build
+derby.demo.src.dir=${derbysrc.dir}/demo
+derby.testing.src.dir=${derbysrc.dir}/testing
 
 derby.engine.dir=${derby.engine.src.dir}/${derby.dir}
 derby.drda.dir=${derby.drda.src.dir}/${derby.dir}
@@ -47,14 +46,10 @@
 derby.drda.locales.dir=${derby.drda.dir}/loc/drda
 derby.tools.locales.dir=${derby.tools.dir}/loc
 
-osengsrc.dir=${ossrc.dir}/engine/
-osengcom.dir=${osengsrc.dir}/${oscom.dir}
-
-ostoolsrc.dir=${ossrc.dir}/tools/
-ostoolcom.dir=${ostoolsrc.dir}/${oscom.dir}
-
-osdrdasrc.dir=${ossrc.dir}/drda/
-osdrdacom.dir=${osdrdasrc.dir}/${oscom.dir}
-
 sanity.dir=${derby.engine.dir}/iapi/services/sanity
 sanity.out.dir=${out.dir}/${derby.dir}/iapi/services/sanity
+
+derby.testing.dir=org/apache/derbyTesting
+derby.testing.out.dir=${out.dir}/${derby.testing.dir}
+derby.testing.functest.dir=${derby.testing.dir}/functionTests
+derby.testing.suites.dir=${derby.testing.functest.dir}/suites

Modified: incubator/derby/code/trunk/tools/ant/properties/extrapath.properties
==============================================================================
--- incubator/derby/code/trunk/tools/ant/properties/extrapath.properties	(original)
+++ incubator/derby/code/trunk/tools/ant/properties/extrapath.properties	Thu Nov 11 23:39:22 2004
@@ -1,18 +1,16 @@
 #
 # Extra jars/zips/classes
 #
-jdbctests=${javatools.dir}/tools/java/jdbctests.zip
-jgl3=${javatools.dir}/tools/java/jgl3.1.0.jar
-jndi=${javatools.dir}/tools/java/jndi/jndi.jar;${javatools.dir}/tools/java/jndi/providerutil.jar;${javatools.dir}/tools/java/jndi/ldap.jar
-jnl1=${javatools.dir}/tools/java/jnl1.0F.zip
-oro=${javatools.dir}/tools/java/jakarta-oro-2.0.8.jar
+jndi=${javatools.dir}/jndi/jndi.jar;${javatools.dir}/jndi/providerutil.jar;${javatools.dir}/jndi/ldap.jar
+oro=${javatools.dir}/jakarta-oro-2.0.8.jar
 servlet22=${javatools.dir}/servlet.jar
-jcc=${javatools.dir}/drda/jcc/2.2/db2jcc.jar
+jcc=${javatools.dir}/db2jcc.jar
+jcc_l=${javatools.dir}/db2jcc_license_c.jar
 osgi=${javatools.dir}/osgi.jar
-xercesImpl=${javatools.dir}/tools/java/xslt4j-2_5_0/xercesImpl.jar
-xml-apis=${javatools.dir}/tools/java/xslt4j-2_5_0/xml-apis.jar
-xalan=${javatools.dir}/tools/java/xslt4j-2_5_0/xalan.jar
-jjpath=${basedir}/tools/java/javacc.jar
+xercesImpl=${javatools.dir}/xslt4j-2_5_0/xercesImpl.jar
+xml-apis=${javatools.dir}/xslt4j-2_5_0/xml-apis.jar
+xalan=${javatools.dir}/xslt4j-2_5_0/xalan.jar
+javacc=${javatools.dir}/javacc.jar
 
 #
 # Compile-time extras
@@ -21,4 +19,4 @@
 #
 # Run-time extras
 #
-jars.extras=${jdbctests};${jgl3};${jndi};${jnl1};${oro};${servlet22};${jcc}
+jars.extras=${jndi};${oro};${servlet22};${jcc};${jcc_l}